noqqe » blog | sammelsurium | photos | projects | about

Die letzten beiden Tage habe ich mich etwas mit Redmine beschäftigt. Das Webinterface für Versionskontrollsysteme hat allerdings eine kleine Macke. Zumindest ist das mein Verständnis des Umstands.

Git-Repositories sind in Redmine nur über Working Copies einzulesen. Der gute Stil (und gitolite) stellt serverseitige Git-Repositories als Bare Repos dar. Bare Repos sind im Grunde nur das, was das .git/ Verzeichnis in jeder Working Copy darstellt. Es befinden sich also keine Klartext Files darin.

Creative Commons by Impact Tarmac

Diese Bare Repos lassen sich in Redmine aber nicht hinzufügen. Ob es einfach technisch nicht machbar ist, oder eine Macke seitens Redmine kann ich nicht ausmachen. Fakt ist allerdings, dass ich momentan dazu gezwungen bin Working-Copies für Redmine vorzuhalten.

Ein bisschen Dokumentation zu lesen hat mich da schon um einiges weiter gebracht. Es gibt unter der Redmine Community anscheinend zwei verbreitete Lösungsansätze.

  • Cronjob der alle heilige Zeit auf Änderungen prüft
  • Hook in Bare Repos einfügen, welcher auslöst wenn gepushte Änderungen vorliegen

Kurz: Ich entschied mir für die zweite Lösung. Um Ressourcen zu sparen. Oder weniger Cronjobs laufen zu haben. Erschien mir effizienter.

Hook für Bare Repo

In Hook-verzeichnis wechseln. Beispielsweise: /home/git/repositories/repo1.git/hooks/. Richtigen Hook auswählen. post-recieve führt Skripte aus, welche nach dem erhalt von Commits ausgeführt werden.  Das Skript sieht vor, das ServerRepo an einen zentralen Sammelpunkt auszuchecken, Rechte anzupassen und für Redmine schreibbar zu machen.

Werden jetzt neue Commits gepushed, wird automatisch ein neues Repo gecloned und die Änderungen sind sofort in Redmine ersichtlich.

Comments (3)

git spasti on 2011-12-22T23:01:26
Das ganze läuft effizienter wenn nicht geklont sondern lediglich gepulled wird. Mir fällt momentan kein Grund ein warum man an dieser Stelle auf die Vorzüge von Git (als SCM) verzichten sollte. Es ist nicht nötig jedes mal einen Full-Clone zu machen.

noqqe on 2011-12-27T14:12:49
Da hast du Recht. Das war auch mein erster Ansatz. Aber ich hätte mir da einen Check überlegen müssen obs das Repo schon gibt oder ob es erst angelegt wurde und ich deshalb clonen müsste. Darauf hatte ich damals keine Lust und habs dann einfach alles wie es ist erschlagen.

chris on 2012-11-28T18:59:21
Eigentlich nur Rechte Webserver auf die Dirs prüfen und ggf. bare repo richtig chmoden! Geht bei mir..!