Home / Linux / Meine Programme / gitolite-cgit

Notation

Der Bezeichner $key muss immer durch den Namen der Projektliste ersetzt werden. Also z.B. public, private, etc. Mit /home/git/ ist das Home-Verzeichnis des gitolite-Benutzers gemeint, falls dieses bei Ihnen anders ist, müssen Sie die Anleitung entsprechend anpassen.

Installation des Programms

Nach der Installation von gitolite sollte man in /home/git/.gitolite.rc die Variable $REPO_UMASK auf mindestens 0027 setzen, damit CGit auf die Repositories zugreifen kann.

Desweitern muss in dieser Konfigurationsdatei die Variable $GL_GITCONFIG_KEYS auf "cgit\..*" gesetzt werden.

Danach müssen Sie die Datei /home/git/repositories/gitolite-admin.git/hooks/post-update.secondary erstellen (mit den entsprechenden Rechten!) und diese Zeilen einfügen:

#!/bin/bash
python /home/git/cgit-update.py /home/git/repositories /home/git

Zuletzt wird cgit-update.py aus gitolite-cgit nach /home/git kopiert.

Einrichten von CGit

In der Datei /etc/cgitrc muss neben den üblichen Einstellungen

include=$REPOLIST

gesetzt werden, um die Liste mit den Repositories entsprechend der Umgebungsvariable zu laden.

Einrichten von Lighttpd

Irgendwo muss via

server.modules += ( "mod_setenv" )

dieses Model eingebunden worden sein.

Unter conf-available/50-$key.conf kann man nun dies eintragen:

url.redirect += ( "^/git$" => "/git/" )
$HTTP["url"] =~ "^/git/" {
	url.redirect += ( "^/git/$" => "/git/cgit.cgi" )
	alias.url += (
				"/git/cgit.cgi" => "/usr/lib/cgi-bin/cgit.cgi",
				"/git/" => "/usr/share/cgit/"
			)
	cgi.assign = (".cgi" => "")
	setenv.add-environment = ("REPOLIST" => "/home/git/cgit.$key.list")
	index-file.names = ("/git/cgit.cgi")
}

Dabei ist setenv.add-environment = ("REPOLIST" => "/home/git/cgit.$key.list") die zentrale Komponente, die dieses diesem Setup ausmacht.

Repositories zum Anzeigen spezifizieren

Man kann ein Repository nun via einem solchen Konfigurationseintrag anzeigen lassen:

gitolite-cgit "Yasin Zähringer" = "Gitolite cgit helper"
repo gitolite-cgit
	RW+     = yasin
	config cgit.listname = "public"
	config cgit.section  = "Dev"