Trac: Tickets per Commit schließen

Trac und Git spielen echt hervorragend zusammen.

Vorausgesetzt, dass bereits eine Trac-Installation vorhanden ist und ein Git-Repository in das Trac-Projekt eingebunden ist, ist hier der Weg beschrieben, um Tickets durch Commits zu schließen oder Referenzen zu setzen.

Beispiel-Workflow

Ein einfaches Beispiel des Workflows: Im Trac-Projekt „Webshop“ werden zwei Tickets aufgemacht: #10 beschreibt, dass der Login mit einem beliebigen Passwort möglich ist und #13 ist ein Verbesserungsvorschlag, dass Artikel auch mit einem Bild angezeigt werden.

Programmierer Jonas überträgt sich das Ticket #10, erstellt eine neue Login-Routine, commited und pushed die Änderungen zum Trac-Server. In die Commit-Message trägt er „Änderung des Logins, Sicherheitslücke beseitigt, fixed #10“ ein. Trac schließt daraufhin das Ticket.
Webdesigner Franz sieht das Ticket #13 und beginnt die View für das Bild vorzubereiten. Da Jonas aber noch die Routine für das Auslesen aus der Datenbank schreiben muss, möchte er das Ticket nur aktualisieren, aber nicht schließen. Seine Commit-Message lautet daher „View für Vorschau vorbereitet, Model muss noch Bild bereitstellen (see #13)“. In das Ticket #13 wird nun ein Eintrag mit einem Verweis auf den Commit gesetzt.

Trac-Konfiguration

Annahmen (der kursive Teil muss durch den jeweiligen Projektnamen ersetzt werden):
Verzeichnis für Trac: /var/lib/trac/Webshop
Verzeichnis für Git: /var/lib/git/Webshop.git

Als erstes muss das bereits mitgelieferte (aber optionale) Modul CommitTicketUpdater aktiviert werden. Dazu entweder unter /var/lib/trac/Webshop/conf/trac.ini oder im Adminbereich (Admin –> Plugins –> Trac 1.x.x) aktivieren.

trac_commit_updaterDas Verhalten des Moduls kann in der /var/lib/trac/Webshop/conf/trac.ini konfiguriert werden:

Der erste Eintrag konfiguriert, ob das „fixes #13“ noch gesondert eingerahmt werden muss, um false positives („Jonas says, he fixes #10 this month“) zu verhindern, beispielsweise „%fixes #13%“. Die zweite Zeile konfiguriert die Close-Signalwörter. Hier könnte man also auch „schliesst“ oder „erledigt“ hinzufügen, die dritte Zeile bezieht das auf die Referenz-Signalwörter, „<ALL>“ erzeugt unabhängig vom Signalwort immer eine Referenz.
Mit der vierten Zeile kann man bestimmen, ob Trac überprüfen soll, ob der Commiter auch in Trac das Recht „TICKET_MODIFY“ hat. Über die fünfte Zeile können Update-Benachrichtigungen versendet werden.

Als nächstes muss im Git-Repository ein Hook konfiguriert werden. Ein Hook ist ein Script, das bei bestimmten Ereignissen ausgeführt wird und damit benutzerdefinierte Aktionen ausführen kann, die so von den Programmierern nicht vorgesehen waren. In diesem Fall wird Trac darüber informiert, falls im Git-Repo ein Commit stattfindet:

Datei /var/lib/git/Webshop.git/hooks/post-commit (ggf neu anlegen, muss ausführbar sein):

Der Parameter „(default)“ ist das Repo des Trac-Projekts, hier kann sowohl das default-Repo als auch ein x-beliebiges anderes Repo des Projekts genutzt werden.

Nun sollten Tickets automatisch geschlossen werden, sobald man in die Git-Commit-Messages ein „fixes #xx“ erwähnt. Weitere Informationen finden sich im Wiki vom Trac.

Verwandte Posts:

Schreibe einen Kommentar