Добавление 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 (иначе, затронутые ветви), logs каждый коммит между первым и вторым полем (cut -d' ' -f1, cut -d' ' -f2), а также git showкаждый из этих коммитов.

Сохраните всю эту информацию в переменной и отправьте ее по почте - тогда все готово.

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

Если вы опубликуете свой текущий скрипт хуков, вам будет проще сказать, как его изменить.

Другие вопросы по тегам