Ответ 1
Вы используете post-commit hooks. Здесь руководство.
Вот пример Ruby script, который отправляет электронное письмо после каждой фиксации: commit-email.rb
Я всегда считал, что сообщения checkin (commit) очень полезны для отслеживания работы других людей в базе данных/репозитории. Как настроить SVN для отправки списка рассылки по каждой фиксации?
Я запускаю клиентов на Windows и сервер Apache Subversion на Linux. Ответы ниже для разных платформ, скорее всего, будут полезны другим людям.
Вы используете post-commit hooks. Здесь руководство.
Вот пример Ruby script, который отправляет электронное письмо после каждой фиксации: commit-email.rb
Посмотрите автономный инструмент Subversion Notify (только для Windows!) Он может отправлять электронную почту на фиксации, а также гораздо больше!
Вам захочется ознакомиться с крюки репозитория, особенно post-commit hook.
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
Какая платформа?
В Mac OS X я установил msmtp и создал пост-фиксацию script под крючками в репозитории. Файл .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, потому что здесь есть специальные символы в Швеции (åäö).
Здесь есть связанный с этим вопрос на крючках после фиксации. Лично я предпочитаю отправлять сообщение на что-то, что я могу получить из RSS-канала, так как по электронной почте для каждой транзакции будет очень быстро загружаться мой почтовый ящик.
Seconding @Мэтт Миллер в RSS-каналах.
Там есть полезный инструмент WebSVN, который предлагает RSS-каналы каждого репозитория и отдельных ветвей/тегов/папок с полными сообщениями фиксации. Это также отличный веб-интерфейс для быстрого поиска истории файлов и коммит/различий без необходимости запуска обновления и открытия вашего редактора.
Как сказал кто-то другой, "какая платформа". В Windows я использовал "blat", который представляет собой бесплатную почтовую программу SMTP для командной строки, а также пост-фиксацию и другой пакетный файл.
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 <[email protected]> -sf %temp%\subject.txt -server ServerName -f "SVN Admin <[email protected]>" -noh2
Самая большая проблема с написанием SVN-перехватчиков заключается в том, что у вас может быть вообще нет настройки среды - нет пути exe, нет временного пути и т.д. Хотя возможно, это улучшилось в более поздних версиях SVN.
Я использую post-commit script, похожий на этот один.
Он отправляет хорошее письмо HTML. Я обновил его, где он выделяет код, который был удален красным цветом, и выделяет код, который был добавлен в синий цвет.
Вы можете использовать buildbot. Это инструмент, который может принимать произвольные действия всякий раз, когда происходит регистрация. Это полнофункциональная система непрерывной интеграции, но если вы просто хотите получать электронные письма, она, безусловно, может это сделать. В нем есть плагины для различных 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" или тому подобное.
Кроме того, убедитесь, что файл выполним тем же пользователем, который выполняет подрывную операцию.
В VisualSVN Server есть полезный фиксатор уведомлений по электронной почте VisualSVNServerHooks.exe
. Он поддерживает цветные отличия и может отправлять уведомления о фиксации только тогда, когда фиксация влияет на определенный путь репозитория.
См. "Настройка уведомлений по электронной почте на сервере VisualSVN" .
Я сделал это на сервере Linux за 3 шага:
Создайте список рассылки ([email protected]
) и добавьте людей в список.
Изменить /path_to_your_svn/svn/hooks/svn-notify/mailer.conf
/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
Существует пример (большой), написанный на Perl, включенный в источник Subversion (он может быть просмотрен здесь).
Также SVNMailer, который работает в Linux.
Проверьте svn-mod-email пакет, описанный здесь. svn-mod-email - это мощный инструмент для управления уведомлениями по электронной почте SVN, который поставляется в виде архива Debian. Его легко установить, настроить и использовать.