Jak sprawić, by Subversion (SVN) wysyłał e-mail na checkins?

Zawsze uważałem checkIn (commit) maile za bardzo przydatne do śledzenia pracy innych ludzi w bazie kodu / repozytorium. Jak skonfigurować SVN do wysyłania listy dystrybucyjnej przy każdym zatwierdzeniu?

Uruchamiam klientów na Windows i serwer Apache Subversion na Linuksie. Poniższe odpowiedzi dla różnych platform będą prawdopodobnie przydatne dla innych osób.

Author: Peter Mortensen, 2008-08-11

16 answers

Używasz post-commit hooków . Oto Przewodnik .

Oto przykładowy skrypt Ruby, który wysyła wiadomość e-mail po każdym zatwierdzeniu: commit-email.rb

 31
Author: pix0r,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-17 15:35:56

Spójrz na samodzielne Subversion Notify Narzędzie (Tylko Windows!) Może to zrobić e-mail na commit, a także wiele więcej!

 20
Author: Marius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-17 15:36:55

Będziesz chciał zapoznać się z hookami repozytorium , szczególnie z Hookiem post-commit .

 3
Author: Rytmis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-17 15:42:16

1) Zainstaluj svnnotify na serwerze svn używając sudo apt-get

2) Użyj Post-commit Hooka swojego repo (czytaj na post-commit hooks na stronie svn)

3) Otwórz plik Hooka po zatwierdzeniu i wklej następujący kod, aby wysłać wiadomość e-mail za pomocą serwera smtp. Korzystanie z smtp jest proste, ponieważ nie musisz konfigurować sendmaila.

4) Upewnij się, że po \ (podział linii) nie masz dodatkowej spacji.

#!/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
 2
Author: Sagar Zaveri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-13 22:04:50

Jest powiązane pytanie tutaj na temat hooków po zatwierdzeniu. Osobiście wolę wysłać wiadomość do czegoś, z czego mogę uzyskać kanał RSS, ponieważ e-mail-per-commit dość szybko przeciążyłby moją skrzynkę odbiorczą.

 1
Author: Matt Miller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:48

Seconding @ Matt Miller on RSS feeds.

Istnieje przydatne narzędzie o nazwie WebSVN , które oferuje kanały RSS każdego repozytorium i poszczególnych gałęzi/tagów/folderów z pełnymi komunikatami commit. Jest to również świetny interfejs internetowy do szybkiego przeglądania historii plików i zatwierdzeń/różnic bez konieczności uruchamiania aktualizacji i otwierania wybranego edytora.

 1
Author: Jason Sparks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:28

Jak ktoś inny powiedział, "jaka Platforma". W systemie Windows użyłem 'blat', który jest darmowym mailerem SMTP z linii poleceń, wraz z post-commit i innym plikiem wsadowym.

Commit post wygląda tak: (wywołuje inny plik wsadowy)

 call d:\subversion\repos\rts\hooks\mail %1 %2
I pocztą.nietoperz wyglądał tak:
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

Największą zaletą pisania hooków SVN jest to, że możesz w zasadzie nie mieć żadnej konfiguracji środowiska-żadnej ścieżki exe, żadnej ścieżki temp itp. Choć może to się poprawiło w bardziej Ostatnie Kompilacje SVN.

 1
Author: Will Dean,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-11 22:31:32

Możesz użyć buildbot . Jest to narzędzie, które może podjąć dowolne działania za każdym razem, gdy nastąpi odprawa. Jest to w pełni funkcjonalny system ciągłej integracji, ale jeśli chcesz tylko wiadomości e-mail, z pewnością sobie z tym poradzi. Posiada wtyczki do różnych SCM, w tym SVN.

 1
Author: whitney,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 04:59:25

W katalogu "hooks" Twojej konkretnej gałęzi subversion znajduje się 9 plików szablonów na początek.

Punkt kluczowy: subversion nie uruchomi żadnego z plików, dopóki nie zmieni ich nazwy. Aby uzyskać Post-commit.tmpl aby uruchomić pod Uniksem, zmień jego nazwę na "post-commit". W systemie Windows zmień jego nazwę na " post-commit.bat " lub " post-commit.exe". Subversion wykona , a nie, jeśli zostanie nazwany " Post-commit.tmpl "lub" post-commit.sh " lub tym podobne.

Również upewnij się, że plik jest wykonywalny przez tego samego użytkownika, który uruchamia subversion.

 1
Author: Logan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-17 20:26:34

Używam skryptu post-commit podobnego do tego One .

Wysyła ładny email HTML. Zaktualizowałem go trochę, gdzie podświetla kod, który został usunięty na czerwono i podświetla kod, który został dodany na niebiesko.

 1
Author: Mark Spangler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-09 11:20:13

Serwer VisualSVN posiada przydatne powiadomienie e-mail o zatwierdzeniu VisualSVNServerHooks.exe. Obsługuje kolorowe dyfuzory i może wysyłać powiadomienia o zatwierdzeniu tylko wtedy, gdy zatwierdzenie wpływa na określoną ścieżkę repozytorium.

Zobacz "Konfigurowanie powiadomień e-mail na serwerze VisualSVN".

 1
Author: bahrep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-09 11:26:59

Zrobiłem to na serwerze Linux w 3 krokach:

  1. Utwórz listę mailingową ([email protected]) i dodaj osoby do listy.

  2. Edit /path_to_your_svn/svn/hooks/svn-notify/mailer.conf

  3. Dodaj ten wiersz do pliku {[2] }:
    /path_to_your_svn/svn/hooks/svn-notify/mailer.py commit "$REPOS" "$REV" /path_to_your_svn/svn/hooks/svn-notify/mailer.conf
 1
Author: Danijel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-30 10:04:47

Jaka Platforma?

Na Mac OS X zainstalowałem msmtp i utworzyłem skrypt Post-commit pod hookami w repozytorium. A .plik msmtprc musi być ustawiony dla użytkownika svn (lub 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

Make {root of repository} i {list of recipients} specific for your needs. Uwaga użyłem UTF-8, ponieważ mamy tutaj kilka znaków specjalnych w Szwecji (åäö).

 1
Author: epatel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-17 15:35:48

Istnieje (duży) przykład napisany w Perlu zawarty w źródle Subversion (można go zobaczyć tutaj).

 0
Author: Sean Carpenter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-11 16:39:47

Również SVNMailer, który działa na Linuksie.

 0
Author: kervin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-27 03:26:04

Sprawdź svn-mod-email Pakiet opisany tutaj. svn-mod-email jest potężnym narzędziem do zarządzania powiadomieniami e-mail SVN, które jest dostarczane jako archiwum Debiana. Jest łatwy w instalacji, konfiguracji i obsłudze.

 0
Author: Guardian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-19 06:01:11