Serverseitige Aktionsskripte

Ein Aktionsskript (Hook-Script) ist ein Programm, welches durch bestimmte Ereignisse im Projektarchiv gestartet wird, z.B. wenn eine neue Revision erzeugt oder eine Revisions-Eigenschaft verändert wird. Jedem Skript werden Information übergeben über das Ereignis selbst, die Ziele des Ereignisses und der Benutzername der Person welche das Ereignis ausgelöst hat. Abhängig vom Rückgabewert des Aktionsskripts wird die Operation fortgesetzt, angehalten oder unterbrochen. Bitte lesen Sie dazu das Kapitel Hook Scripts im Subversion Buch.

Diese Aktionsskripte werden auf dem Server ausgeführt, der das Projektarchiv beherbergt. TortoiseSVN bietet Ihnen obendrein die Möglichkeit, lokale Aktionsskripte bei bestimmten Ereignissen auszuführen. Lesen Sie in „Clientseitige Aktionsskripte“ nach, wie das geht.

Beispiele für Aktionsskripte findet man im hooks Ordner des Projektarchivs. Diese Beispiele sind für Unix/Linux-Server erstellt worden und müssen ein wenig angepasst werden wenn Ihr Server unter Windows läuft. Das Aktionsskript kann eine einfache Batch-Datei oder ein ausführbares Programm sein. Das unten stehende Beispiel zeigt eine Batch-Datei welche als pre-revprop-change Aktion eingesetzt werden kann.

rem Nur Änderungen an Logmeldungen zulassen.
if "%4" == "svn:log" exit 0
echo Eigenschaft '%4' kann nicht geändert werden >&2
exit 1

Beachten Sie dass alle Ausgaben via stdout verworfen werden. Wenn Sie möchten, dass eine Fehlermeldung auch in TortoiseSVN angezeigt wird, müssen Sie diese Fehlermeldung via stderr ausgeben. In einer Batchdatei erreichen Sie dies über >&2.

Aktionen überschreiben

Falls ein Aktionsskript ihr Übertragung verwirft, handelt es sich um eine entgültige Entscheidung. Sie können jedoch in das Skript selbst mit Hilfe der Zauberwort-Technik eine Ausnahmebehandlung einbauen. Falls das Skript eine Übertragung verwerfen will, durchsucht es zunächst die Logmeldung nach der Passphrase, einem bestimmten Wort oder auch einem Präfix eines Dateinamens. Wenn es das Zauberwort findet, akzeptiert es die Übertragung trotzdem. Andernfalls kann es die Übertragung, z.B. mit einer Meldung wie „Du hast das Zauberwort nicht gesagt“, blockieren.