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

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

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

Ответы [ 16 ]

31 голосов
/ 11 августа 2008

Вы используете ловушки после фиксации . Вот руководство .

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

19 голосов
/ 11 августа 2008

Взгляните на автономный Subversion Notify инструмент (только для Windows!) Он может отправлять сообщения о коммите и многое другое!

3 голосов
/ 11 августа 2008

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

2 голосов
/ 14 декабря 2013

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
1 голос
/ 30 мая 2014

Я сделал это на сервере 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
1 голос
/ 09 октября 2013

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

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

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

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

1 голос
/ 17 сентября 2008

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

1 голос
/ 26 августа 2008

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

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

1 голос
/ 12 августа 2008

Как сказал кто-то еще, «какая платформа». В Windows я использовал для этого blat, который является почтовым SMTP-модулем командной строки freebie, а также post-commit и другой пакетный файл.

Пост-коммит выглядит так: (просто вызывает другой пакетный файл)

 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.

...