Allgemeine Arten von Subversion-Hooks

  • Welche Arten von Hook-Skripts verwenden die Leute für Subversion? Nur allgemeine Ideen, aber Code wäre auch toll!

    18 October 2012
    Andy Ross
16 answers
  • Ich verwende den pre-revprop-change -Haken, mit dem Kommentare und Informationen nach dem Festschreiben tatsächlich bearbeitet werden können. Dies ist sehr nützlich, wenn in den Festschreibungskommentaren fehlende / fehlerhafte Informationen enthalten sind.

    Hier gebe ich eine Batchdatei pre-revprop-change.bat für Windows NT oder höher ... Sie kann es sicherlich mit mehr Modifikationen verbessern. Sie können auch ein post-revprop-change.cmd daraus ableiten, um das alte snv:log irgendwo zu sichern oder einfach an das neue Protokoll anzuhängen ...

    Der einzige knifflige Teil war eigentlich in der Lage, das stdin aus der Batchdatei zu analysieren ... Dies geschieht hier mit dem Befehl FIND.EXE.

    Das ist das, was ich habe hatte von anderen Benutzern Berichte über Probleme mit der Verwendung von /b mit dem Befehl exit erhalten. Sie müssen möglicherweise nur das /b in Ihrer spezifischen Anwendung entfernen, wenn sich Fehlerfälle nicht gut verhalten.

     @ECHO OFF
    
    set repos=%1
    set rev=%2
    set user=%3
    set propname=%4
    set action=%5
    
    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    :: Only allow changes to svn:log. The author, date and other revision
    :: properties cannot be changed
    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    if /I not '%propname%'=='svn:log' goto ERROR_PROPNAME
    
    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    :: Only allow modifications to svn:log (no addition/overwrite or deletion)
    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    if /I not '%action%'=='M' goto ERROR_ACTION
    
    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    :: Make sure that the new svn:log message contains some text.
    ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    set bIsEmpty=true
    for /f "tokens=*" %%g in ('find /V ""') do (
     set bIsEmpty=false
    )
    if '%bIsEmpty%'=='true' goto ERROR_EMPTY
    
    goto :eof
    
    
    
    :ERROR_EMPTY
    echo Empty svn:log properties are not allowed. >&2
    goto ERROR_EXIT
    
    :ERROR_PROPNAME
    echo Only changes to svn:log revision properties are allowed. >&2
    goto ERROR_EXIT
    
    :ERROR_ACTION
    echo Only modifications to svn:log revision properties are allowed. >&2
    goto ERROR_EXIT
    
    :ERROR_EXIT
    exit /b 1 
     
    16 February 2011
    Craig McQueen
  • Wenn Sie eine Mischung aus Unix - und Windows - Benutzern haben, die mit dem Repository arbeiten, sollten Sie den case-insensitive.py als Vorsichtsmaßnahme ein Pre-Commit-Hook-Script. Es verhindert schwer zu sortierende Situationen, in denen svn Updates für Windows-Benutzer aufgrund eines Fehlers fehlschlagen Umbenennen der Datei, wodurch nur der Dateiname geändert wurde . Glauben Sie mir, es besteht eine gute Chance, dass es Ihnen Ärger erspart.

    30 July 2011
    Troels Arvin
  • Wir verwenden FogBugz für die Fehlerverfolgung. Es bietet Subversion-Commit-Skripts, die Sie zulassen Um eine Fallnummer in Ihre Check-in-Kommentare aufzunehmen, wird der Fehler dann mit dem Check-in verknüpft, das ihn behoben hat. Dazu muss eine WebSVN -Instanz eingerichtet sein, damit Sie über einen webbasierten Viewer für Ihr Repository verfügen.

    10 October 2008
    Nathan Black
  • verschiedene Dinge, für die wir sie verwenden:

    • Integration in den Bug-Tracker ( Trac in unserem Fall - eine Festschreibungsnachricht mit der Meldung 'Closes # 514' markiert diesen Fehler automatisch als geschlossen
    • und integriert sich in den Build Integration (in unserem Fall buildbot ) - Ein Commit für einen überwachten Zweig löst einen Build aus
    • pre-commit-Hook zur Validierung des Commits - wir verwenden svnchecker und validiert unseren Python-Code für PEP8-Korrektheit
    • Senden von Check-Mails an ein Mailing Liste
    • Ausführen von Einrückungsskripten
    27 August 2008
    Thomas Vander Stichele
  • An meinem Arbeitsplatz haben wir einen Post-Commit-Hook eingerichtet, der RSS-Feeds generiert, die in verschiedenen Dashboards angezeigt werden und von Codeüberprüfern verwendet werden, um zu wissen, wann es an der Zeit ist, sie zu überprüfen dass neue Mitarbeiter genug verpflichten.

    08 August 2008
    abyx
  • Für diejenigen, die eine pre-revprop-change.bat für eine snvsync -Operation suchen:

    https://gist.github.com/1679659

     @ECHO OFF
    
    set user=%3
    
    if /I '%user%'=='syncuser' goto ERROR_REV
    
    exit 0
    
    :ERROR_REV echo "Only the syncuser user may change revision properties" >&2
    exit 1
     

    Es kommt gerade von hier: http://chestofbooks.com/computers/revision-control/subversion-svn/Repository-Replication-Reposadmin-Maint-Replication.html und wurde für Windows angepasst.

    26 January 2012
    2 revsnicobo
  • Dies wurde vor einiger Zeit in der Mailingliste der Subversion-Benutzer beschrieben. Dieser Beitrag hat insbesondere einige nützliche Ideen >

    10 September 2008
    clawrence
  • Post-Commit-Hook zum Senden einer E-Mail-Benachrichtigung, dass sich etwas im Repository geändert hat, an eine Liste von E-Mails. Sie benötigen sendmail.exe in demselben Ordner wie Ihre Hook-Datei zusammen mit sendmail.ini.

    Sie benötigen auch eine Datei post-commit.tos.txt neben Ihrer post-commit.cmd, um die E-Mail-Empfänger aufzulisten. Die Datei sollte enthalten:

     user1@example.com,user2@example.com,user3@example.com
     

    Hier ist der Hook-Code:

     @ECHO OFF
    setlocal
    
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    :: Get subversion arguments
    set repos=%~1
    set rev=%2
    
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    :: Set some variables
    set tos=%repos%\hooks\%~n0.tos.txt
    set reposname=%~nx1
    set svnlookparam="%repos%" --revision %rev%
    
    if not exist "%tos%" goto :END
    
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    :: Prepare sendmail email file
    set author=
    for /f "tokens=* usebackq" %%g in (`svnlook author %svnlookparam%`) do (
      set author=%%g
    )
    
    for /f "tokens=* usebackq delims=" %%g in ("%tos%") do (
      set EmailNotificationTo=%%g
    )
    set SendMailFile=%~n0_%reposname%_%rev%.sm
    
    echo To: %EmailNotificationTo% >> "%SendMailFile%"
    echo From: %reposname%.svn.technologie@gsmprjct.com >> "%SendMailFile%"
    echo Subject: [%reposname%] Revision %rev% - Subversion Commit Notification  >> "%SendMailFile%"
    
    echo --- log [%author%] --- >> "%SendMailFile%"
    svnlook log %svnlookparam% >> "%SendMailFile%" 2>&1
    echo --- changed --- >> "%SendMailFile%"
    svnlook changed %svnlookparam% --copy-info >> "%SendMailFile%" 2>&1
    
    echo .>> "%SendMailFile%"
    
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    :: Send email
    type "%SendMailFile%" | "%~dp0sendmail.exe" -t
    
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    :: Clean-up
    if exist "%SendMailFile%" del "%SendMailFile%"
    
    
    :END
    endlocal
     
    02 September 2010
    Philibert Perusse
  • Ich verwende Post-Commit-Hooks () Ich denke, es ist das hier ), für jedes Commit eine Nachricht in einem Basecamp-Forum zu posten. Zwei Vorteile:

    1. Als leitender Entwickler bekomme ich jeden Morgen ein Roll-up von Commits (über den RSS-Feed dieses Basecamp-Forums). und können sehen, was mein Team ziemlich schnell gemacht hat.

    2. Unsere Trac / SVN-Installation befindet sich hinter unserer Firewall, daher sind meine höheren Positionen an anderen Standorten vorhanden ein Fenster in das, was wir tun. Sie verstehen es vielleicht nicht, aber für einen Manager sieht eine Menge Aktivität aus, na ja, eine Menge Aktivität;)

    I Ich schätze, das Endergebnis ist ähnlich wie bei @Aviv.

    Ich suche nach Lösungen für das Erstellen des neuesten Commits auf einem separaten Server für die kontinuierliche Integration, aber ich ' Ich werde die Art und Weise, wie wir Änderungen an unserem Datenbankschema vornehmen, ändern müssen, bevor es funktioniert.

    13 August 2008
    Matt Miller
  • Ich habe eine Einrichtung mit der Ruby Tinder-Bibliothek, die ich an einen Lagerfeuerraum schicke. Wenn jemand das Skript haben möchte, kann ich Ihnen den Code senden oder senden.

    Andere, die ich häufig gesehen habe, sind Beiträge zu Fehlerverfolgungssystemen und E-Mail-Benachrichtigungen.

    05 September 2008
    jonezy