Как заставить Subversion (SVN) отправлять электронную почту при регистрации?

StackOverflow https://stackoverflow.com/questions/7913

Вопрос

Я всегда считал, что сообщения о проверке (фиксации) очень полезны для отслеживания того, какую работу выполняют другие люди в базе кода/репозитории.Как настроить SVN для отправки списка рассылки по электронной почте при каждом коммите?

Я использую клиенты в Windows и сервер Apache Subversion в Linux.Однако ответы ниже для различных платформ, вероятно, будут полезны другим людям.

Это было полезно?

Решение

Вы используете хуки после фиксации.Вот гид.

Вот пример скрипта Ruby, который отправляет электронное письмо после каждого коммита: commit-email.rb

Другие советы

Посмотрите на автономный вариант Уведомление о подрывной деятельности инструмент (Только для Windows!)Он может отправлять электронную почту при фиксации, а также многое другое!

Вы захотите ознакомиться с перехватчики репозитория, особенно хук после фиксации.

1) Установите svnnotify на svn-сервер, используя sudo apt-get.

2) Используйте крючок после фиксации вашего репо (читайте о крючках после фиксации на веб-сайте svn)

3) Откройте файл ловушки после фиксации и вставьте следующий код, чтобы отправить электронное письмо с помощью smtp-сервера.Использовать smtp очень просто, поскольку вам не нужно настраивать sendmail.

4) Убедитесь, что после \ (переноса строки) нет лишнего пробела.

#!/bin/sh

REPOS="$1"
REV="$2"
TO="xyz@yah.com" # who will receive the notifications
FROM="hello@goog.com" # 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

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

Командирование @Мэтт Миллер в RSS-каналах.

Есть полезный инструмент под названием ВебСВН который предлагает RSS-каналы каждого репозитория и отдельных веток/тегов/папок с полными сообщениями о фиксации.Это также отличный веб-интерфейс для быстрого просмотра истории файлов и коммитов/разниц без необходимости запускать обновление и открывать выбранный вами редактор.

Как сказал кто-то другой: «какая платформа».В 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 <me@my.email.com> -sf %temp%\subject.txt -server ServerName -f "SVN Admin <svn@my.email.com>" -noh2

Самая большая ошибка при написании перехватчиков SVN заключается в том, что у вас может вообще НЕТ настройки среды - ни пути exe, ни временного пути и т. д.Хотя, возможно, в более поздних сборках SVN это улучшилось.

Вы могли бы использовать билдбот.Это инструмент, который может выполнять произвольные действия при каждой проверке.Это полнофункциональная система непрерывной интеграции, но если вам просто нужны электронные письма, она, безусловно, справится с этим.Он имеет плагины для различных SCM, включая SVN.

В каталоге «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.

Я использую скрипт после фиксации, похожий на этот один.

Он отправляет красивое электронное письмо в формате HTML.Я обновил его, где он выделяет код, который был удален, красным, а код, который был добавлен, — синим.

Сервер VisualSVN имеет полезный механизм уведомления о фиксации по электронной почте. VisualSVNServerHooks.exe.Он поддерживает цветные различия и может отправлять уведомления о фиксации только тогда, когда фиксация влияет на определенный путь к репозиторию.

Видеть «Настройка уведомлений по электронной почте на сервере VisualSVN».

Я сделал это на Linux-сервере в 3 этапа:

  1. Создайте список рассылки (svn-notify@xy.com) и добавьте людей в список.

  2. Редактировать /path_to_your_svn/svn/hooks/svn-notify/mailer.conf

    • to_addr = svn-notify@xy.com
    • from_addr = %(автор)s@xy.com
    • commit_subject_prefix =[XY-SVN]
  3. Добавьте эту строку в свой /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

Какая платформа?

В Mac OS X я установил мсмтп и создал скрипт после фиксации под хуками в репозитории.Файл .msmtprc необходимо настроить для svn (или www) пользователь.

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 (его можно просмотрено здесь).

Также SVNMailer, который работает в Linux.

Проверить SVN-мод-электронная почта описан пакет здесьSVN-мод-электронная почта — это мощный инструмент для управления уведомлениями по электронной почте SVN, который поставляется в виде архива Debian.Его легко установить, настроить и использовать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top