Как заставить Subversion (SVN) отправлять электронную почту при проверках?
Я всегда считал, что сообщения с проверкой (фиксацией) очень полезны для отслеживания работы других людей в базе кода / репозитории. Как настроить SVN для отправки списка рассылки по электронной почте при каждой фиксации?
Я использую клиенты в Windows и сервер Apache Subversion в Linux. Однако приведенные ниже ответы для различных платформ, скорее всего, будут полезны другим людям.
Ответов (16)16
Вы используете перехватчики после фиксации . Вот инструкция .
Вот пример сценария Ruby, который отправляет электронное письмо после каждой фиксации: commit-email.rb
Взгляните на автономный инструмент Subversion Notify (только для Windows!). Он может отправлять электронную почту при фиксации, а также многое другое!
В каталоге «hooks» вашей конкретной ветки Subversion есть 9 файлов шаблонов, которые помогут вам начать работу.
Ключевой момент: Subversion не будет запускать какие-либо файлы, пока они не будут переименованы. Чтобы post-commit.tmpl запускался под unix, переименуйте его в post-commit. В Windows переименуйте его в post-commit.bat или post-commit.exe. Subversion не выполнит файл, если он называется «post-commit.tmpl», «post-commit.sh» или подобное.
Кроме того, убедитесь, что файл запускается тем же пользователем, который запускает Subversion.
Также SVNMailer , который работает в Linux.
VisualSVN Server имеет полезную функцию уведомления о фиксации по электронной почте VisualSVNServerHooks.exe
. Он поддерживает цветные различия и может отправлять уведомления о фиксации только тогда, когда фиксация затрагивает определенный путь к репозиторию.
См. «Настройка уведомлений по электронной почте на сервере VisualSVN» .
1) Установите svnnotify на svn-сервер с помощью sudo apt-get
2) Используйте ловушку после фиксации вашего репо (читайте о крючках после фиксации на веб-сайте svn)
3) Откройте файл ловушки после фиксации и вставьте следующий код, чтобы отправить электронное письмо с помощью SMTP-сервера. Использовать smtp просто, поскольку вам не нужно настраивать sendmail.
4) Убедитесь, что после \ (разрыва строки) у вас нет лишнего пробела.
#!/bin/sh
REPOS="$1"
REV="$2"
TO="[email protected]" # who will receive the notifications
FROM="[email protected]" # what will be in "FROM" fields
/usr/bin/svnnotify \
--repos-path "$REPOS" \
--revision "$REV" \
--to $TO \
--from $FROM \
--reply-to $FROM \
--smtp "YOUR.SMTP.MAIL.COM" \
--subject-prefix "[svn commit]" \
--attach-diff -a \
--header 'Message generated on Subversion Check-in.' \
--footer 'OpenSource Team. ' \
--svnlook "/usr/local/bin/svnlook" \
--handler HTML::ColorDiff # make diff pretty
Я сделал это на сервере Linux за 3 шага:
Создайте список рассылки (
[email protected]
) и добавьте людей в список.Редактировать
/path_to_your_svn/svn/hooks/svn-notify/mailer.conf
- to_addr = [email protected]
- from_addr =% (автор) [email protected]
- commit_subject_prefix = [XY-SVN]
- Добавьте эту строку в свой
/path_to_your_svn/svn/hooks/post-commit
файл:
/path_to_your_svn/svn/hooks/svn-notify/mailer.py commit "$REPOS" "$REV" /path_to_your_svn/svn/hooks/svn-notify/mailer.conf
Проверьте пакет svn-mod-email , описанный здесь . СВН-мод-почта является мощным инструментом для управления SVN уведомлений по электронной почте, которая поставляется в архиве Debian. Его легко установить, настроить и использовать.
Там есть связанный с этим вопрос здесь на пост фиксации крючки. Лично я предпочитаю отправлять сообщение тому, с чего я могу получить RSS-канал, так как электронная почта за фиксацию довольно быстро перегрузит мой почтовый ящик.
Второй @ Мэтт Миллер в RSS- потоках .
Есть полезный инструмент под названием WebSVN, который предлагает RSS-каналы каждого репозитория и отдельных веток / тегов / папок с полными сообщениями фиксации. Это также отличный веб-интерфейс для быстрого просмотра истории файлов и коммитов / различий без необходимости запускать обновление и открывать выбранный вами редактор.
Какая платформа?
В Mac OS X я установил msmtp и создал сценарий после фиксации под хуками в репозитории. Для пользователя svn
(или www
) необходимо настроить файл .msmtprc .
REPOS="`echo $1 | sed 's/\/{root of repository}//g'` "
REV="$2"
MSG=`/usr/local/bin/svn log -v -r HEAD https://localhost$REPOS`
/usr/local/bin/msmtp {list of recipients} <<EOF
Subject: SVN-Commit $REPOS#$REV
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8Bit
$MSG
EOF
Сделайте {root of repository}
и {list of recipients}
под ваши нужды. Обратите внимание, я использовал UTF-8, потому что у нас есть некоторые специальные символы здесь, в Швеции (åäö).
В исходный код Subversion включен (большой) пример, написанный на Perl (его можно посмотреть здесь ).
Вы захотите ознакомиться с ловушками репозитория , особенно с ловушкой после фиксации .
Как сказал кто-то другой, «какая платформа». В Windows я использовал для этого «blat», бесплатную почтовую программу SMTP из командной строки, а также пост-фиксацию и еще один пакетный файл.
Фиксация сообщения выглядит так: (просто вызывает другой командный файл)
call d:\subversion\repos\rts\hooks\mail %1 %2
И mail.bat выглядел так:
copy d:\subversion\repos\RTS\hooks\Commitmsg.txt %temp%\commit.txt
copy d:\subversion\repos\RTS\hooks\subjbase.txt %temp%\subject.txt
svnlook info -r %2 %1 >> %temp%\commit.txt
echo Revision %2 >> %temp%\commit.txt
svnlook changed -r %2 %1 >> %temp%\commit.txt
svnlook author -r %2 %1 >> %temp%\subject.txt
c:\utils\blat %temp%\commit.txt -t <[email protected]> -sf %temp%\subject.txt -server ServerName -f "SVN Admin <[email protected]>" -noh2
Самая большая проблема при написании ловушек SVN заключается в том, что у вас может быть в основном НЕТ настройки среды - без пути exe, без временного пути и т. Д. Хотя, возможно, это улучшено в более поздних сборках SVN.
Я использую пост-скрипт совершить подобное этому одному .
Он отправляет красивое электронное письмо в формате HTML. Я обновил его, где он выделяет код, который был удален, красным цветом, и код, который был добавлен синим.
Вы можете использовать buildbot . Это инструмент, который может предпринимать произвольные действия всякий раз, когда происходит регистрация. Это полнофункциональная система непрерывной интеграции, но если вам просто нужна электронная почта, она, безусловно, справится с этим. Он имеет плагины для множества SCM, включая SVN.