Добавление git diff в почту push-уведомлений
В настоящее время я использую gitolite для управления своим хранилищем и пользователями. Я успешно настроил уведомление по электронной почте после каждого нажатия. Команда
chmod a+x post-receive-email
cd /path/to/your/repository.git
ln -sf /usr/share/doc/git-core/contrib/hooks/post-receive-email hooks/post-receive
Письмо-уведомление содержит только сводку изменений. Я хочу добавить строку изменений каждого измененного файла в этом толчке. Мне известно о редактировании этого файла post-receive-email, и я должен использовать команду git-diff. Мои вопросы
Какую именно команду git-diff я должен использовать..? Где я должен добавить эту команду в этот файл post-receive-email..? Есть ли какие-либо конфигурации доступны в Gitolite..?
2 ответа
Примечание: вас может заинтересовать новый скрипт git-multimail, который будет включен в git1.8.4 (июль 2013 г.)
См. https://github.com/git/git/commit/bc501f69fc6d697968d472afbabe6af97a758b12:
git-multimail
: улучшенная замена для post-receive-email
добавлять
git-multimail
инструмент для генерации уведомлений по электронной почте для отправки в репозиторий Git.
Это в основном плагин совместим сpost-receive-email
и предлагается в конечном итоге заменить этот сценарий.
Преимуществаgit-multimail
относительноpost-receive-email
описаны вREADME.migrate-from-post-receive-email
,
git-multimail
организован в каталогеcontrib/hooks/multimail
,
Смотрите его независимый проект GitHub, где он поддерживается (хотя этот проект будет интегрирован в contrib/hooks/multimail
начиная с git1.8.4)
Вы добавили:
echo ""
echo "Line of changes:"
git diff --diff-filter=M --find-copies-harder --no-prefix --unified=2 $oldrev..$newrev
Вы бы добавили его в git_multimail.py
скрипт Python, сразу после diff-tree
,
Кроме того, вы можете раскошелиться на проект GitHub и предложить multimailhook.diffFilterOpts
новый вариант, для вашего diff --diff-filter
дополнение.
Согласно githooks (5), вы можете сделать post-receive
скрипт, который получает каждую строку stdin (иначе, затронутые ветви), log
s каждый коммит между первым и вторым полем (cut -d' ' -f1
, cut -d' ' -f2
), а также git show
каждый из этих коммитов.
Сохраните всю эту информацию в переменной и отправьте ее по почте - тогда все готово.
Я думаю, что вы можете начать с копирования post-receive-email
подключитесь к каталогу хуков (вместо того, чтобы связать его), а затем измените его, чтобы получить новое тело электронной почты.
Если вы опубликуете свой текущий скрипт хуков, вам будет проще сказать, как его изменить.