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:

Autor: Thomas Pummer

Thomas Pummer ist Softwareentwickler an der Universität Wien. In seiner Freizeit betreut er das Open Source Projekt TrayRSS und werkt an diversen anderen kleinen Projekten. Er ist sehr interessiert an Open Source und Webentwicklung und testet gern neue Programmiersprachen.

2 Gedanken zu „HOWTO: Gitweb für Gitosis, oder wie der Git Server sichtbar wird“

  1. Hallo Thomas,
    da ich mich erst seit kurzem mit git u.a. beschäftige und gerne ein Webinterface suche, dass mit MantisBT oder ggf. einem anderen Bugtracker gut zusammenarbeitet, bin ich auf deine Seite gestoßen. Ich habe mal eine Frage warum wird oft die Installation von Gitweb, wie bei dir z.B. mit Gitosis oder anderswo mit Gitolite verbunden. Kann man Gitweb nicht einfach mit dem ich nenne es mal „konsole git“ direkt verknüpfen? Welche Vor- oder Nachteile hat das ganze?
    Gruß
    Jassir

    1. Hallo Jassir!

      Sorry für die späte Antwort. Also warum immer mit Gitosis und Gitolite lässt sich recht einfach erklären: Es ist bequem! Diese beiden Tools eignen sich hervorragend zum Repository Management. Auch haben sie eine einfach Anbindung zur Konfiguration von Sichtbarkeiten in Gitweb. Nachteile liegen natürlich auch auf der Hand: Wenn drei Systeme interagieren (zB Git, Gitosis, Gitweb) müssen auch diese drei Komponenten miteinander können. Wenn eines Updated und die anderen nicht kann sowas zu Problemen führen. Auch wird eine manuelle Konfiguration fein granularer sein, ich habe das aber zugegebenermaßen noch nicht ohne Gito* eingesetzt.
      Hoffe geholfen zu haben
      Schöne Grüße
      Thomas

      PS: Details zur Konfiguration ohne Gito* findest du auf der GitWeb Seite: https://git.wiki.kernel.org/index.php/Gitweb

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*