Git: почтовый хук после получения, включая патчи различий? - PullRequest
22 голосов
/ 30 апреля 2009

Я обнаружил ловушку Git после получения после некоторого поиска в Google, который я использую для отправки всех коммитов по электронной почте в удаленный репозиторий.

Проблема с этим перехватом после получения заключается в том, что он имеет возможность только указать, кто совершил фиксацию, какое сообщение журнала, дату, какие файлы были затронуты. Я также хочу увидеть исправленные файлы, сгенерированные патчи в электронном письме, чтобы увидеть, какие изменения были внесены в код. Subversion делает это довольно хорошо.

Есть ли у кого-нибудь решение для, возможно, env-переменной, которая может быть передана хуку post-receive, который делает это? Или даже лучше, пример, который уже приготовлен?

Спасибо всем!

Ответы [ 6 ]

21 голосов
/ 30 апреля 2009

В последней версии Git должен быть установлен скрипт post-receive-email. В нем говорится:

hooks.showrev

Команда оболочки, используемая для форматирования каждой ревизии в письме, с "% s" заменен на идентификатор фиксации. По умолчанию "git rev-list -1" --pretty% s ", отображающий идентификатор коммита, автора, дату и журнал сообщение. Чтобы отобразить полные патчи, разделенные пустой строкой, вы можно установить для этого параметра "git show -C% s; echo".

Так что просто установите hooks.showrev в «git show -C% s; echo ”в хранилище с перехватом электронной почты, и все готово.

2 голосов
/ 24 ноября 2009

У меня были похожие проблемы здесь:

Git hook для отправки электронного уведомления об изменениях репо

На самом деле существуют разные версии скрипта post-receive-email - та, которая доступна на git.kernel.org, информирует и уважает hooks.showrev, а та, которую я не сделал.

Но это обсуждение классное, спасибо, обязательно посмотрю! Другой скрипт, связанный выше, также имеет функцию ссылок на gitweb и прочее, как вы, другие, делаете это?

1 голос
/ 28 сентября 2012

Здесь у вас есть другой вариант, если вас интересуют цвета и т. Д. https://github.com/nacho/email-hook

1 голос
/ 07 августа 2010

Несмотря на то, что на этот вопрос уже есть принятый ответ, я подумал, что это был один из самых приятных приемов почтовой рассылки после получения:

http://github.com/brasse/post_receive_email.py

Обнаружено в блоге автора:

http://copypasteprogrammer.blogspot.com/2010/03/git-post-receive-hook-in-python.html

1 голос
/ 30 апреля 2009

См. Этот раздел.

echo ""
echo "Summary of changes:"
git diff-tree --stat --summary --find-copies-harder $oldrev..$newrev

Здесь git запрашивается для сравнения, но затем его также просят обобщить. Удалите флаги --stat и --summary, и вы увидите diff.

git diff-tree --find-copies-harder $oldrev..$newrev

Вот еще один способ, который показывает все ревизии, включая различия от $ oldrev до $ newrev

git --no-pager log --find-copies-harder $oldrev..$newrev
1 голос
/ 30 апреля 2009

Я не запускал его некоторое время, но (я считаю) тот , который я использовал для , подключен к сети. Я взял то, что раньше поставлял с мерзавцем, и перестроил его по своему вкусу. Я давно не пробовал запускать что-либо подобное.

У меня есть несколько скриншотов того, что он сделал:

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