15 янв. 2010 г.

Git: рассылка уведомлений о коммитах по e-mail

Как настроить рассылку уведомлений о коммитах в центральном гитовом репозитории, в который все пользователи сливают свои изменения?

В гите есть готовый пример хука для этого, post-receive-email.

Документация — в начале файла.

Как устанавливать:

1. Подключаем файл

В документации рекомендуют вызывать этот файл из post-receive хука. Если вы можете найти у себя в системе нужный post-receive-email от гита, и удовлетворены его расположением, так и поступите (не забудьте, что файл должен иметь права на исполнения от имени пользователя, который делает push в репозиторий).

Иначе — тупо замените .git/hooks/post-receive в своём репозитории на post-receive-email. Не забываем про chmod +x и про то, что имя файла должно быть строго post-receive.

2. Настраиваем рассылку

Находясь внутри вашего репозитория выполните команды:

$ git config hooks.mailinglist "<адреса@куда.отправлять.почту, через@запятую>"
$ git config hooks.emailprefix "[Префикс к теме письма] "
$ git config hooks.envelopesender "от@кого.письмо"

Также рекомендую прописать описание проекта в .git/description (обратите внимание, что этот файл — не расшарен между репозиториями).

3. Проверяем

$ ./post-receive refs/heads/master OLD_SHA NEW_SHA

Вместо OLD_SHA и NEW_SHA вставляем два SHA1-хеша коммитов в репозитории ("голова" до имитируемого нами push и после него). Любуемся на текст письма.

Если всё работает, то тестируем отправку (на сервере должен быть настроен sendmail):

$ ./post-receive refs/heads/master OLD_SHA NEW_SHA | sendmail -t -f "$(git config hooks.envelopesender)"

Если письмо пришло, хук настроен.

Комментариев нет: