Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 2

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

Ответ 4

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

Ответ 5

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

В 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, потому что здесь есть специальные символы в Швеции (åäö).

Ответ 6

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

Ответ 7

Seconding @Мэтт Миллер в RSS-каналах.

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

Ответ 8

Как сказал кто-то другой, "какая платформа". В 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.

Ответ 9

Я использую post-commit script, похожий на этот один.

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

Ответ 10

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

Ответ 11

В каталоге "hooks" вашего конкретного ветки subversion есть 9 файлов шаблонов, которые вы можете запустить.

Ключевой момент: subversion не будет выполнять какие-либо файлы до их переименования. Чтобы выполнить post-commit.tmpl для выполнения в unix, переименуйте его "post-commit". В Windows переименуйте его в "post-commit.bat" или "post-commit.exe". Subversion будет не выполнять файл, если он назван "post-commit.tmpl" или "post -commit.sh" или тому подобное.

Кроме того, убедитесь, что файл выполним тем же пользователем, который выполняет подрывную операцию.

Ответ 12

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

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

Ответ 13

Я сделал это на сервере 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

Ответ 14

Существует пример (большой), написанный на Perl, включенный в источник Subversion (он может быть просмотрен здесь).

Ответ 15

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

Ответ 16

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