Heute hab ich mich auf die Suche nach einem Bugtracker begeben, den man mit vertretbarem Aufwand an Mercurial anschließen kann, sodass man mit Tags in den Commit-Nachrichten dem Bugtracker ein paar Befehle geben kann.

Dabei hab ich mein Mantis wiederentdeckt, das noch auf der Platte des Servers schlummerte — damit war das in fünf Minuten erledigt. Inspiriert von diesem Blog-Post, der das Verfahren mit SVN beschreibt, habe ich das ganze als Mercurial-Hook gebastelt.

Zunächst muss ein Benutzer angelegt werden, unter dessen Namen Mantis die Commit-Nachrichten im Webinterface eintragen soll. Dazu habe ich den Benutzer “hg” angelegt.

Die Config für Mantis habe ich etwas angepasst, damit Mantis die gleichen Befehle erkennt wie BitBucket, einfach weil ich ein Gewohnheitstier bin:

// Der Name des Accounts
$g_source_control_account = 'hg';
$g_source_control_set_status_to = RESOLVED;
$g_source_control_set_resolution_to = FIXED;

// Regex für Nachrichten die einfach auftauchen
$g_source_control_regexp =
        '/\bsee\s*[#]{0,1}(\d+)\b/i';

// Regex für Nachrichten die den Report schließen
$g_source_control_fixed_regexp =
        '/\bfix(?:ed|es)\s*[#]{0,1}(\d+)\b/i';

Damit werden Nachrichten in denen see #1337 vorkommt einfach dem entsprechenden Bugreport hinzugefügt, und solche in denen fixes #1337 vorkommt schließen den Bugreport mit Status resolved und Lösung fixed.

Achtung: Bei den Regexen muss die erste Gruppe die gematcht wird die Bugnummer enthalten, sonst wird die Nachricht nicht erkannt.

Fehlt nur noch ein HG-Hook-Script in dem Repository, in das die Entwickler (also… ich) pushen, und das dann die Commit-Nachricht an Mantis übergibt:

#!/bin/bash

MANTISDIR="/srv/mantis"

if [ -z "${HG_NODE}" ]
then
    exit 1
fi

LANG=en_US.ISO-8859-1 hg log -r "${HG_NODE}" | php5 "${MANTISDIR}/core/checkin.php"

Dieses wird in hgrc noch als Hook installiert:

[extensions]
incoming.update-mantis = hg_hooks/update-mantis.sh

Und das war’s auch schon :)

Add post to: Delicious Reddit Slashdot Digg Technorati Google