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!
Schreibe einen Kommentar