2009-07-28 7 views
0

Ich habe die Post-Commit-E-Mail-Benachrichtigung für den Post-Commit-Hook erfolgreich implementiert. Jetzt schaue ich auf ein größeres Problem, ich möchte nicht, dass der Hook E-Mail für jedes Commit sendet. Gibt es eine Möglichkeit, den Hook zu verwenden, um vielleicht den Inhalt der E-Mail in eine Textdatei zu schreiben und vielleicht einen anderen Hook oder etwas zu verwenden, um die Textdatei zu senden?Wie füge ich mehrere Commits in SVN in einen Post-Commit HOOK ein?

Ich möchte grundsätzlich eine E-Mail mit Informationen zu mehreren Commits senden.

danke, Oded.

Antwort

3

Zuerst müssen Sie entscheiden, wann Sie tatsächlich die E-Mail senden wollen:

  1. Jeder zehnte begehen?
  2. Um Mitternacht?
  3. Beim Taggen?

Dann sollten Sie in der Lage sein, leicht ein System zu implementieren arbeiten, wie Sie es brauchen:

  1. im Haken post-commit: nur eine E-Mail senden, wenn revision number % 10 == 0
  2. einen Job cron erstellen
  3. in der post-commit Haken: erkennen, wenn ein Tag

erstellen, können Sie verwenden svn log und svn diff mit der -r FROM:TO Option, um die benötigten Informationen nach Datum oder Revisionsnummern zu sammeln. Weitere Informationen finden Sie unter the svnbook.

+0

Die E-Mail, die ich senden möchte, müssen alle Informationen aller Commits enthalten ... nicht die 5. oder die 10. .... – Oded

+0

Also schreibe den Inhalt bei jedem Commit in eine Datei und sende die Datei beim 10. Commit. –

+1

Oder verwenden Sie "svn log" und "svn diff", um zu den Informationen zu gelangen, die Sie benötigen. –

1

Sie können den post-commit ändern E-Mail-Absender-Skript eine E-Mail nach einigen Commits senden (zB die Revisionsnummer ein Vielfach von 5)

das Skript schreiben zu helfen, Sie svnlook verwenden vorherige Revision holen Protokolle.

Hier ist Teil eines Python-Skript schrieb ich SMS an den Entwickler zu senden:

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

import sys, urllib, os 
from subprocess import * 

repo = sys.argv[2] 
rev = sys.argv[3] 

cmdlog = 'svnlook log -r %s %s'%(rev, repo) 
cmdauthor = 'svnlook author -r %s %s'%(rev, repo) 
log = Popen(cmdlog, stdout=PIPE, shell=True).stdout.read().strip() 
author = Popen(cmdauthor, stdout=PIPE, shell=True).stdout.read().strip() 

Und in der post-commit-Datei

#!/bin/bash 

export LANG=en_US.utf8 
REPOS="$1" 
REV="$2" 

./sms.py commit $REPOS $REV 

Sie auf dieses Beispiel beziehen zu holen Protokollinformationen aus svn repository durch den Befehl svnlook