HOWTO: Git-Integration in MantisBT

Die letzten Wochen habe ich euch Git näher gebracht und euch gezeigt wie ihr euch einen eigenen Git-Server aufsetzen könnt. Jetzt wollen wir noch Kapital daraus schlagen und Git mit einem Bugtracker verbinden. Ich nutze nun schon seit längerem MantisBT http://www.mantisbt.org welcher mithilfe von ein paar Plugins an Git angebunden werden kann. Dies ermöglicht es einem anhand von Commit Messages Tickets in MantisBT zu steuern und zB ein offenes Ticket zu schließen.

Die letzten Wochen habe ich euch Git näher gebracht und euch gezeigt wie ihr euch einen eigenen Git-Server aufsetzen könnt. Jetzt wollen wir noch Kapital daraus schlagen und Git mit einem Bugtracker verbinden. Ich nutze nun schon seit längerem MantisBT http://www.mantisbt.org welcher mithilfe von ein paar Plugins an Git angebunden werden kann. Dies ermöglicht es einem anhand von Commit Messages Tickets in MantisBT zu steuern und zB ein offenes Ticket zu schließen.

Das Plugin trägt den klingenden Namen Source Control Integration und wurde von John Reese geschrieben. MantisBT selbst setzt das Plugin ein und vermutlich nutzen sie dort auch die Git Variante seit dem Umstieg des Bugtrackers auf Github. Das Plugin selbst besteht aus einem Framework und verschiedene Module für diverse Web-SourceControl Derivate wie z.B. Gitweb, Github, WebSVN. Eine Anleitung wie man dieses Plugin installiert findet sich ebenfalls im Blog von John Reese.

Ich will meine Schritte bei der Installation hier auf Deutsch zur Ergänzung meiner Git Artikel ebenfalls erfassen.

Als erstes galt es das Plugin und seine Abhängigkeiten zu organisieren: Meta Programming und Source Control Integration die entprechenden Repos wurden natürlich per Git geladen und jeweils ins Mantis Plugin Verzeichnis geladen. Im Backend von Mantis konnten diese dann aktiviert werden. Die richtige Reihenfolge konnte ob entsprechend optisch hervorgehobener Abhängigkeiten nicht versemmelt werden.

Nun hat man einen neuen Hauptmenüpunkt: Repositories

In diesem gilt es nun einen Verweis auf sein GitRepository zu erstellen. Name und Typ ausgewählt und schon gehts über den Create Repository Button weiter

MantisBT Sourceintegration Create Repository
MantisBT Sourceintegration Create Repository

Auf der zweiten Seite muss man nun die Daten zum zu überwachenden Repository eintragen

MantisBT Sourceintegration Repository Details
MantisBT Sourceintegration Repository Details

Hierbei wird die URL die auf das Gitwebverzeichnis verweist erst als ganzes eingetragen und dann in Root und Projektteil aufgesplittet. Noch den Master Branch als zu überwachender Branch definiert und schon kanns losgehen. Mit einem klick auf das Repository und dann den Button „Import Latest Data“ kann die erfolgreiche Verbindung auch gleich ausgetestet werden.

Der Author empfielt nun einen Cronjob zB per curl einzurichten damit dieser Prozess automatisiert wird. Die ID ist über Mantisbt rauszufinden (Einfach die URL die Mantis nutzt anschaun)

curl http://example.com/mantisbt/plugin.php?page=Source/repo_import_latest&id=XX > /dev/null

Dabei bekomme ich leider eine Fehlermeldung die auf einen ungültigen Sicherheitstoken verweist. In einem Blog Eintrag von Chris Dornfeld habe ich jedoch einen angepassten URL Aufruf dazu gefunden, der nicht auf ein Repository eingeschränkt ist und den Import per Cronjob ermöglicht:

curl http://example.com/mantisbt/plugin.php?page=Source/import&id=all > /dev/null

Fertig aufgesetzt habe ich nun doch etwas Zeit gewonnen, die ich nun ins Projekt statt ins Projektmanagement stecken kann.

Sollten bei euch noch andere Probleme auftreten, möchte ich noch auf eine kleine Hilfestellung im Blog des Authors verweisen, vielleicht werdet ihr ja dort fündig.

Greets

Ähnliche Artikel:

HOWTO: Gitweb für Gitosis, oder wie der Git Server sichtbar wird

Nachdem ich hier erst letztens aufgezeigt habe wie man seinen eigenen Git Server mithilfe von Gitosis aufsetzt, möchte ich heute noch etwas tiefer in die Materie vordingen. Heute soll der Git Server visualisiert werden mithilfe von Gitweb.

Nachdem ich hier erst letztens aufgezeigt habe wie man seinen eigenen Git Server mithilfe von Gitosis aufsetzt, möchte ich heute noch etwas tiefer in die Materie vordingen. Heute soll der Git Server visualisiert werden mithilfe von Gitweb.

Gitweb

Im Prinzip ist Gitweb recht flott installiert wenn man auf die Paketverwaltung der Distribution seines Vertrauens setzt. In meinem Beispielfall ist das Debian und mittels

$ aptitude install gitweb

wird die Software installiert. Damit Gitweb auf die eigenen Repositories zugreifen kann muss natürlich die Konfiguration /etc/gitweb.conf angepasst werden:

# path to git projects (.git) - hier auf das bei der installation von gitosis eventuell angepasste Verzeichnis linken
$projectroot = “/home/git/repositories/”;

# directory to use for temp files
$git_temp = “/tmp”;

# target of the home link on top of all pages
#$home_link = $my_uri || “/”;

# html text to include at home page
$home_text = “indextext.html”;

# file with project list; by default, simply scan the projectroot dir.
# $projects_list = $projectroot;

# Point to projects.list file generated by gitosis. - Hier ist wieder ein anpassung erforderlich wenn das homeverzeichnis wie bei unserem Beispiel angepasst wurde
$projects_list = “/home/git/gitosis/projects.list”;

# stylesheet to use
$stylesheet = “/gitweb.css”;

# javascrip code for gitweb
$javascript = "gitweb.js";

# logo to use
$logo = “/git-logo.png”;

# the ‘favicon’
$favicon = “/git-favicon.png”;

# A list of base urls where all the repositories can be cloned from.
# Easier than having per-repository cloneurl files.
@git_base_url_list = (’git://git.host.example’);

#$strict_export = “true”;

$projectroot – der Pfad zu den von gitosis erzeugten Repositories, in unserem fall /home/git/repositories;
$projects_list – damit wird gitweb gezeigt welche Repos vorhanden sind, entweder indem man auf das root Verzeichnis verweist oder auf eine Datei die eine Liste der Repositories beinhaltet. Verweist man auf die von gitosis erzeugte Projektliste “/home/git/gitosis/projects.list”; kann man über die Konfiguration von gitosis gezielt steuern, welche Repos angezeigt werden sollen.
Projekte die nicht angezeigt werden können mit obiger Konfiguration trotzdem noch durch direkten Aufruf über die Adressliste des Browsers erreicht werden. Soll auch dieser Aufruf unterbunden werden muss man den strict_export parameter auf true setzen, einfach dazu das Kommentarzeichen entfernen.

Nun muss noch im Webserver, in meinem Falle Apache2, richtig konfiguriert werden. Dazu habe ich eine eigene virtuelle Domain eingepflegt in folgender Datei /etc/apache2/sites-available/gitweb:

<VirtualHost *:80>
    ServerAdmin john@example.com
    DocumentRoot /var/cache/git
    ServerName git.example.com
    Alias /gitweb.css /usr/share/gitweb/gitweb.css
    Alias /git-favicon.png /usr/share/gitweb/git-favicon.png
    Alias /git-logo.png /usr/share/gitweb/git-logo.png
    ScriptAlias / /usr/lib/cgi-bin/gitweb.cgi
</VirtualHost>

Abschließend muss noch der Benutzer des Webservers www-data der gitosis gruppe hinzugefügt werden, damit der lesende Zugriff erfolgen kann. Danach wird die neu erstellte Subdomain noch aktiviert

$ a2ensite gitweb

Und Apache neu gestartet

$ /etc/init.d/apache2 reload

Wer cgi noch enabeln muss sollte danach nicht vergessen Apache ganz neu zu starten

$ /etc/init.d/apache2 restart

Und schon sollte der eigene Gitweb Zugriff fertig aufgesetzt sein.

Gitweb in der Gitosisconf

Fehlt natürlich noch die Konfiguration der Repositories um einzelne Projekte in Gitweb auszublenden

Im allgemeinen Bereich definiert hier der vorsichtige User folgendes:

[gitosis]
daemon = no
gitweb = no

Damit schließt man prinzipiell alle Projekte von der Ansicht in Gitweb aus. So wechselt man von einem Opt-Out Verfahren bei dem bei jedem Repo angegeben hätte werden müssen dass es nicht angezeigt werden soll, zu einem Opt-In, bei dem man sich bewusst für das anzeigen in Gitweb entscheiden muss.

Will man nun zB das Repository test in Github angeboten bekommen ist folgender Eintrag notwendig:

[repo test]
description = A repository where tests can take place
owner = testuser
daemon = no
gitweb = yes

Viel Spaß mit Git im Web!

Ähnliche Artikel:

HOWTO: Gitdaemon für den eigenen Gitserver

Will man seinen Gitosis – Gitserver etwas öffentlicher gestalten und der Allgemeinheit lesenden Zugriff auf seine Repositories gewähren will, dem steht das git Protokoll zur Auswahl. Der entsprechende Daemon ist unter Debian denkbar leicht zu installieren

Will man seinen Gitosis – Gitserver etwas öffentlicher gestalten und der Allgemeinheit lesenden Zugriff auf seine Repositories gewähren will, dem steht das git Protokoll zur Auswahl. Der entsprechende Daemon ist unter Debian denkbar leicht zu installieren

$ aptitude install git-daemon-run

Der Git Daemon verwendet jedoch nicht die üblichen /etc/init.de/ Runscripte sondern nutzt runit/runsv. Ein entsprechender Symlink hilft da alten Gewohnheiten schnell mal auf die Sprünge:

$ ln -s /usr/bin/sv /etc/init.d/git-daemon

Abschließend noch die Konfiguration /etc/sv/git-daemon/run an die Pfade von Gitosis angepasst (Hier als Beispiel mit dem angepassten Home Verzeichnis aus dem dazugehörigen Gitosis Tutorial):

#!/bin/sh
exec 2>&1
echo ‘git-daemon starting.’
exec chpst -ugitdaemon "$(git --exec-path)"/git-daemon --verbose --reuseaddr --base-path=/home/git/repositories /home/git/repositories

–reuseaddr ermöglicht es dem gitserver neu zustarten ohne auf bestehende Verbindungen rücksicht nehmen zu müssen und auf ein Timeout warten zu müssen.

Und schon steht dem giten über das eigene Protokoll nichts mehr im Wege. Außer vielleicht die Firewall, da brauchts ein extra Löcherl auf Port 9418.

Gitosis

In Gitosis gilt es nun noch den Git Daemon zu konfigurieren:
Der allgemeine Teil erhält ein generelles Opt-Out:

[gitosis]
daemon = no

Einzelne Repositories werden dann aktiv geschalten:

[repo test]
description = A repository where tests can take place
owner = testuser
daemon = yes

git://git.example.org/gutes_gelingen.git

Ähnliche Artikel:

SCM: CVS, SVN, Git hilfreich auch für den einzelnen Entwickler

SCM – Source Control Management wie SVN oder Git können sich auch für einzelne Entwickler bezahlt machen. Ein paar Alternativen werden hier vorgestellt.

Wie das Leben so spielt

Vor kurzem konnte ich wieder am eigenen Leib verspüren, wie wertvoll Source Controll Management sein kann. Bei der Auftrennung eines Softwareprojekts habe ich Klassen eines Maven Moduls, in ein anderes neues Modul verschoben, oder besser verschieben lassen. Eclipse bietet dafür eine “Move…” Funktion. Beim Test der Auftrennung fand das Hauptprojekt jedoch das neue Modul nicht mehr. Wie immer zuerst auf der falschen Fährte, habe ich erst den Build Prozess in Zweifel gezogen und Maven des Missmanagements verdächtigt. Als sich dort keine Unstimmigkeit finden lies, habe ich doch tatsächlich in die Verzeichnisse des neuen Modul gesehen. Die Lehr aus der Geschicht, traue Automatismen nicht. Die Klassen waren zwar erfolgreich aus dem ursprünglichen Modul entfernt worden, scheinen aber nie im neuen Modul angelegt worden zu sein. Die Arbeit der letzten Woche im Kübel!

Wäre da nicht mein SCM! So war der Missstand in ein paar Klicks erledigt, indem ich die fehlenden Klassen aus dem Projekt-SVN wieder herstellte. Als hätte ich eine Vorahnung gehabt, sicherte ich den gesamten veränderten Code über das Versionierungstool, bevor ich die Klassen von Eclipse verschieben lies.

Ob good old CVS, weitverbreitetes SVN, das aktuelle iSCM: Git oder sonstige Alternativen wie zB Mercurial oder Perforce, sie alle hätten mir in dieser Situation den Hals gerettet. Neben dem kollaborativen Nutzen, der sich ist vor allem bei größeren Projekten bemerkbar macht, ist vor allem die Sicherung der Arbeitsleistung ein wesentlicher Aspekt von Versionsverwaltungs Software, solange man einen wichtigen Punkt nicht vergisst: Man muss Änderungen auch einchecken, und das regelmäßig!

Versionsverwaltung für alle

Es gibt zahlreiche Dienstleister die Versionsverwaltungssoftware gegen mehr oder weniger Geld zur Verfügung stellen. Hier möchte ich drei der bekanntesten vorstellen.

Sourceforge

In meinem Fall konnte ich auf die Strukturen des auf Open Source Projekte spezialisierten Sourceforge bauen und meinen Code dort ins SVN committen, aber auch die alternativen Versionsverwaltungstools bietet Sourceforge zur Auswahl an. Für Open Source Projekte findet man hier neben einer oder mehreren Versionsverwaltungen alles was ein Projekt sich wünschen kann, und das umsonst.

http://www.sourceforge.net

Google Code

Etwas abgespeckt im Funktionsumfang, im Vergleich zu Sourceforge, ist Google Code, welches jedoch immer noch ein solides Rundumpaket zum Projekthosting anbietet.

http://code.google.com

Github

Der Renner aktuell, vorallem unter Ruby und Javascript Entwicklern, ist Github, welches sich, wie der Name aufzeigt, auf Git spezialisert hat. Auch Github bietet für Open Source Projekte seine Dienste gratis an. Der Code ist dann jederzeit für alle zugänglich und kann für alle geforked werden. Für einen monatlich zu entrichtenden Aufpreis sind hier jedoch private Repositories zu erhalten.

http://www.github.com

Host it yourself

Subversion, Git und Co können meist kostenlos bezogen werden und auch selbst gehostet werden. Hat man einen eigenen Server muss man seinen Sourcecode nicht mehr in die Hände dritter geben. Ohne Server rentiert es sich immernoch die Versionsverwaltung lokal auf dem Entwicklungsrechner abzuhandeln. Wenn auch meist mit ein paar Einschränkungen in der Handhabung.

http://subversion.tigris.org/

http://git-scm.com/

Happy coding!

Ähnliche Artikel: