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

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

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

11.08.2008 16:27:55
16 ОТВЕТОВ
РЕШЕНИЕ

Вы используете хуки post-commit . Вот руководство .

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

31
17.08.2012 15:35:56

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

3
17.08.2012 15:42:16

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

В Mac OS XI установили msmtp и создали сценарий пост-фиксации под хуками в хранилище. Файл .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, потому что у нас есть некоторые специальные символы здесь, в Швеции (åäö).

1
17.09.2016 15:35:48

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

0
11.08.2008 16:39:47
Ссылка (эффективно) не работает (она перенаправляет на общую страницу).
Peter Mortensen 17.09.2016 15:36:58

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

19
17.08.2012 15:36:55
SubVersionNotify - действительно блестящий маленький инструмент. Работал отлично для меня. Спасибо.
NLV 22.11.2010 10:25:29

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

1
23.05.2017 12:02:48

Seconding @ Matt Miller в RSS-каналах.

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

1
23.05.2017 12:18:28

Как сказал кто-то еще, «какая платформа». В 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.

1
11.08.2008 22:31:32

Я использую пост-скрипт совершить подобное этому одному .

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

1
9.10.2013 11:20:13
Привет, Марк, пожалуйста, посоветуй мне, пожалуйста, как добавить этот скрипт, так как мне нужен точно такой же скрипт, с помощью которого я могу получать подробные письма сейчас, когда я использую SVN, и я могу получить доступ к своему хранилищу через браузер SVN черепах, пожалуйста, посоветуй, как реализовать этот скрипт, чтобы я также можно начать получать письма
user1633823 26.01.2014 17:43:08
@ user1633823 вам просто нужно следовать инструкциям по установке на сайте. Но в основном вы просто копируете скрипт в каталог hooks / post-commit, где работает ваш svn-сервер, и делаете его исполняемым.
Mark Spangler 27.01.2014 18:51:36

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

1
17.09.2008 04:59:25

В каталоге «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.08.2010 20:26:34

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

0
27.01.2013 03:26:04

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

0
19.06.2013 06:01:11

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

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

1
9.10.2013 11:26:59

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

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

3) Откройте файл перехвата post-commit и вставьте следующий код, чтобы отправить электронное письмо с использованием сервера 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
2
13.12.2013 22:04:50

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