2008-08-11 10 views
51

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

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

ответ

1

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

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

0

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

+0

Ссылка (эффективно) сломан (перенаправляет на общую страницу). – 2016-09-17 15:36:58

19

Посмотрите на автономный Subversion Notify инструмент (Windows только!) Это можно сделать по электронной почте на его совершение, а также многое другое!

+1

SubVersionNotify - действительно отличный инструмент. Отлично работал для меня. Благодарю. – NLV 2010-11-22 10:25:29

1

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

1

Seconding @Matt Miller RSS каналы.

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

1

Как кто-то сказал, «какая платформа». В 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 <[email protected]> -sf %temp%\subject.txt -server ServerName -f "SVN Admin <[email protected]>" -noh2 

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

1

Я использую сценарий пост-фиксации, подобный этому one.

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

+0

Привет, вы можете посоветовать, как добавить этот скрипт, поскольку мне нужен именно тот же скрипт, через который я могу получить подробную почту, теперь я использую SVN, и я могу получить доступ к моему репозиторию через браузер SVN черепахи, пожалуйста, сообщите, как реализовать этот скрипт так, чтобы Я также могу начать получать почту – user1633823 2014-01-26 17:43:08

1

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

1

В каталоге «hooks» вашей конкретной ветви subversion есть 9 файлов шаблонов, чтобы вы начали.

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

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

0

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

1

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

См. "Configuring Email Notifications in VisualSVN Server".

2

1) Установите svnnotify на сервере SVN, используя Sudo APT-получить

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

3) Открыть сообщение -commit hook file и вставить следующий код для отправки электронной почты с использованием 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 
1

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

  1. Создание списка рассылки ([email protected]) и добавлять людей в список.

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

    • to_addr = [email protected]
    • from_addr =% (автор) s @ ху.ком
    • 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