2008-08-11 19 views
51

Ich habe immer Checkin (Commit) Mails gefunden, die sehr nützlich sind, um zu verfolgen, welche Arbeit andere Leute in der Codebasis/dem Repository machen. Wie richte ich SVN ein, um bei jedem Commit eine Verteilerliste per E-Mail zu versenden?Wie kann ich Subversion (SVN) E-Mails auf Checkins senden?

Ich verwende Clients unter Windows und den Apache Subversion Server unter Linux. Die folgenden Antworten für verschiedene Plattformen werden jedoch wahrscheinlich für andere hilfreich sein.

Antwort

1

Welche Plattform?

Unter Mac OS X habe ich msmtp installiert und ein Post-Commit-Skript unter Hooks im Repository erstellt. Eine .msmtprc-Datei muss für den Benutzer svn (oder www) eingerichtet werden.

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} und {list of recipients} für Ihre Bedürfnisse spezifisch. Hinweis Ich habe UTF-8 verwendet, weil wir hier in Schweden einige Sonderzeichen haben (åäö).

0

Es gibt ein (großes) Beispiel in Perl geschrieben, das in der Subversion-Quelle enthalten ist (es kann viewed here sein).

+0

Die Verbindung (effektiv) gebrochen ist (es leitet auf eine generische Seite). –

19

Werfen Sie einen Blick auf dem Standalone-Tool Subversion Notify(nur Windows!) Es tut auf kann eine E-Mail begehen und auch viel mehr!

+1

SubVersionNotify ist wirklich ein brillantes kleines Werkzeug. Arbeitete perfekt für mich. Vielen Dank. – NLV

1

Es gibt eine verwandte Frage here auf Post-Commit Hooks. Persönlich bevorzuge ich es, eine Nachricht an etwas zu senden, von dem ich einen RSS-Feed erhalten kann, da eine E-Mail pro Commit meinen Posteingang ziemlich schnell überladen würde.

1

Absenden @Matt Miller auf RSS-Feeds.

Es gibt ein nützliches Tool namens WebSVN, das RSS-Feeds für jedes Repository und einzelne Zweige/Tags/Ordner mit vollständigen Commit-Nachrichten bietet. Es ist auch ein großartiges Web-Interface für das schnelle Betrachten von Datei-Historien und Commits/Diffs, ohne ein Update ausführen zu müssen und den Editor Ihrer Wahl zu öffnen.

1

Wie jemand anderes sagte, "welche Plattform". Unter Windows habe ich 'blat' benutzt, das ist ein Freebie-Kommandozeilen-SMTP-Mailer, um dies zu tun, zusammen mit einem Post-Commit und einer anderen Batch-Datei.

Der Beitrag begehen sieht wie folgt aus: (ruft einfach eine andere Batch-Datei)

call d:\subversion\repos\rts\hooks\mail %1 %2 

Und mail.bat sah wie folgt aus:

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 

Die größte Gotcha Haken in schriftlicher Form SVN, dass Sie ist könnte im Grunde keine Umgebung Einstellung - keine Exe-Pfad, keine Temp-Pfad, etc. Obwohl vielleicht das ist in neueren SVN-Builds verbessert.

1

Ich benutze ein Post-Commit-Skript ähnlich zu diesem one.

Es sendet eine nette HTML-E-Mail. Ich habe es an einigen Stellen aktualisiert, in denen Code hervorgehoben wird, der rot entfernt wurde, und markiert Code, der blau hinzugefügt wurde.

+0

Hi Marke können Sie bitte beraten, wie Sie dieses Skript hinzufügen, da ich genau das gleiche Skript, über das ich detaillierte Mail jetzt bekomme ich SVN und ich kann Zugriff auf mein Repository durch Tortoise SVN-Browser erhalten bitte beraten, wie dieses Skript so implementieren Ich kann auch beginnen, die E-Mails zu empfangen – user1633823

+0

@ user1633823 Sie müssen nur die Installationsanweisungen auf der Website folgen. Aber im Grunde kopieren Sie das Skript einfach in das Hooks/Post-Commit-Verzeichnis, in dem Ihr Svn-Server läuft, und machen es ausführbar. –

1

Sie könnten buildbot verwenden. Es handelt sich um ein Tool, das bei jedem Check-In beliebige Aktionen ausführen kann. Es ist ein voll funktionsfähiges System für die kontinuierliche Integration, aber wenn Sie nur E-Mails wollen, kann es sicherlich damit umgehen. Es hat Plug-Ins für eine Vielzahl von SCMs einschließlich SVN.

1

Im "hooks" -Verzeichnis Ihres spezifischen Subversion-Zweigs befinden sich 9 Vorlagendateien, mit denen Sie beginnen können.

Wichtiger Punkt: Subversion wird keine der Dateien ausführen, bis sie umbenannt werden. Um post-commit.tmpl zur Ausführung unter Unix zu erhalten, benennen Sie es um "post-commit". Benennen Sie es unter Windows in "post-commit.bat" oder "post-commit.exe" um. Subversion wird nicht die Datei ausführen, wenn es "post-commit.tmpl" oder "post-commit.sh" oder dergleichen genannt wird.

Stellen Sie außerdem sicher, dass die Datei von demselben Benutzer ausführbar ist, der Subversion ausführt.

0

Überprüfen Sie die svn-mod-email Paket beschrieben here. Die svn-mod-email ist ein leistungsfähiges Werkzeug für SVN Email Notifications Management, das als Debian-Archiv geliefert wird. Es ist leicht zu installieren, zu konfigurieren und zu verwenden.

1

VisualSVN-Server verfügt über nützliche E-Mail-Benachrichtigungs-Hook VisualSVNServerHooks.exe. Es unterstützt farbige Diffs und kann nur dann Commit-Benachrichtigungen senden, wenn das Commit einen bestimmten Repository-Pfad beeinflusst.

Siehe "Configuring Email Notifications in VisualSVN Server".

2

1) Installieren svnnotify auf einem SVN-Server mit sudo apt-get

2) Verwenden Sie Haken des Repo-post-commit (auf lesen post-commit Haken auf svn Website)

3) Offene Posten -commit Hook-Datei und fügen Sie folgenden Code ein, um eine E-Mail mit dem SMTP-Server zu senden. Die Verwendung von SMTP ist einfach, da Sie sendmail nicht konfigurieren müssen.

4) Stellen Sie sicher, dass Sie nach \ (Zeilenumbruch) kein zusätzliches Leerzeichen haben.

#!/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

Ich habe es auf Linux-Server in 3 Schritten:

  1. Erstellen einer Mailing-Liste ([email protected]) und fügen Sie die Menschen in die Liste.

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

    • to_addr = [email protected]
    • from_addr =% (Autor) s @ xy.com
    • commit_subject_prefix = [XY-SVN]
  3. diese Zeile in /path_to_your_svn/svn/hooks/post-commit Datei hinzufügen:
    /path_to_your_svn/svn/hooks/svn-notify/mailer.py commit "$REPOS" "$REV" /path_to_your_svn/svn/hooks/svn-notify/mailer.conf
Verwandte Themen