SVN-Hooks: Automatischer Checkout nach Commits

Projekte mit Subversion zu verwalten macht für größere Projekte durchaus Sinn. In Kombination mit trac erhält man sogar noch ein sehr schickes Werkzeug zum Erstellen und Verwalten von Tickets, Milestones, Tags und Branches und noch ein Wiki dazu. Doch wenn mehrere Entwickler an einem Projekt arbeiten, das in einer einheitlichen Umgebung getestet werden soll, muss ständig nach jedem Commit auf der Testumgebung ein Checkout gemacht werden. Das ist zwar nicht viel Aufwand, aber es kann automatisiert werden. Besonders Webprojekte auf Basis dynamischer Skriptsprachen können davon profitieren, wie etwa ein PHP-Projekt, dass auf dem SVN-Server-eigenen Apache live getestet werden soll.

SVN bietet dazu sogenannte Hooks, die bei verschiedenen Events Skripts ausführen. Templates für Hooks befinden sich bereits im SVN-Repository unter /hooks/ – in diesem Beispiel wird ein Checkout in ein definiertes Verzeichnis ausgeführt, sobald ein Commit / Update erfolgt ist.

Dazu sind folgende Schritte notwendig:

  1. Template “post-commit.tpl” in “post-commit” umbenennen
    cd SVNREPO/hooks/
    mv post-commit.tpl post-commit
  2. post-commit So anpassen, dass das “SVNREPO/hooks/bin/autocheckout.sh” Skript ausgeführt wird
    [...]
    REPOS="$1"
    REV="$2"#commit-email.pl "$REPOS" "$REV" commit-watchers@example.org
    #log-commit.py --repository "$REPOS" --revision "$REV"
    ${REPOS}/hooks/bin/autocheckout.sh "$REPOS" "$REV" trunk/ /WEBROOT/MEINPROJEKT

    Die im Template vorhandenen zwei Befehlsaufrufe werden auskommentiert.

  3. autocheckout.sh erstellen
    mkdir bin/
    wget http://palita.net/wp-content/uploads/2011/08/autocheckout.txt bin/autocheckout.sh

    Anmerkung: Dieses Skript wurde übernommen von http://larve.net/people/hugo/2007/05/svn-auto-look-and-checkout

  4. autocheckout.sh und post-commit anpassen
    chmod a+x post-commit bin/autocheckout.sh
  5. Initiales Ausführen & Testen
    sudo -u apache env - ./post-commit WEBROOT/MEINPROJEKT 234

    (234 durch die aktuelle Revision ersetzen, apache durch den Benutzer ersetzen, der Schreibzugriff auf das Webroot hat.)

  6. Commit & Test!

Unter Plesk 9 funktioniert es einwandfrei, jedoch muss dafür eventuell das Webverzeichnis mit Schreibrechten für den Benutzer “apache” versehen werden.

Weblinks:

Tagged with: , ,
Posted in Tutorials
2 Comments » for SVN-Hooks: Automatischer Checkout nach Commits
  1. JJ sagt:

    Hi!

    Ich hätte eine Frage, wie ist es wenn man ein File löscht und dann committed. Bei mir funktioniert das hier beschriebene gut, jedoch nicht wenn ein File gelöscht wird, es wird sozusagen nicht “mitgelöscht” mit dem autocheckout. Oder liegt das an svn generell dass nicht gelöscht wird?

    Vielen Dank!
    Liebe Grüße J

  2. JJ sagt:

    Hat sich erledigt. Man muss natürlich auch das gelöschte File committen, dann ist es gelöscht.

    Vielen Dank!

1 Pings/Trackbacks for "SVN-Hooks: Automatischer Checkout nach Commits"
  1. […] is present (remove ‘.tmpl’ at the end of a script to activate it). Today, after reading http://palita.net/2011/08/24/svn-hooks-automatischer-checkout-nach-commits/, I was interested in writing a small Python script which notifies me if a commit has taken place. […]

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>