Git
Chapters ▾ 2nd Edition

4.7 Git auf dem Server - GitWeb

GitWeb

Nun, da Sie über einen einfachen Lese-/Schreibzugriff und Lesezugriff auf Ihr Projekt verfügen, können Sie einen einfachen webbasierten Visualizer einrichten. Git wird mit einem CGI-Skript namens GitWeb geliefert, das manchmal dafür verwendet wird.

Die webbasierte Benutzeroberfläche von GitWeb
Figure 49. Die webbasierte Benutzeroberfläche von GitWeb

Wenn Sie herausfinden möchten, wie GitWeb für Ihr Projekt aussehen würde, gibt Git einen Befehl zum Starten einer temporären Instanz, wenn Sie einen leichten Webserver auf Ihrem System wie lighttpd oder webrick haben. Auf Linux-Maschinen wird lighttpd oft installiert, so dass Sie es möglicherweise zum Laufen bringen können, indem Sie git instaweb in Ihr Projektverzeichnis eingeben. Wenn Sie einen Mac verwenden, wird Leopard mit Rubin vorinstalliert geliefert, so dass webrick Ihre beste Wahl sein kann. Um instaweb mit einem nicht-lighttpd Handler zu starten, können Sie es mit der Option --httpd ausführen.

$ git instaweb --httpd=webrick
[2009-02-21 10:02:21] INFO  WEBrick 1.3.1
[2009-02-21 10:02:21] INFO  ruby 1.8.6 (2008-03-03) [universal-darwin9.0]

Das startet einen HTTPD-Server auf Port 1234 und startet dann automatisch einen Webbrowser, der sich auf dieser Seite öffnet. Es ist ziemlich einfach von deiner Seite. Wenn Sie fertig sind und den Server herunterfahren möchten, können Sie den gleichen Befehl mit der Option --stop ausführen:

$ git instaweb --httpd=webrick --stop

Wenn Sie das Web-Interface die ganze Zeit auf einem Server für Ihr Team oder für ein Open-Source-Projekt, das Sie hosten, ausführen möchten, müssen Sie das CGI-Skript so einrichten, dass es von Ihrem normalen Webserver bedient wird. Einige Linux-Distributionen haben ein gitweb Paket, das Sie möglicherweise über apt oder dnf installieren können, so dass Sie das zuerst ausprobieren sollten. Wir werden die manuelle Installation von GitWeb nur sehr kurz abhandeln. Zuerst müssen Sie den Git-Quellcode, der im Lieferumfang von GitWeb enthalten ist, herunterladen und das benutzerdefinierte CGI-Skript generieren:

$ git clone git://git.kernel.org/pub/scm/git/git.git
$ cd git/
$ make GITWEB_PROJECTROOT="/srv/git" prefix=/usr gitweb
    SUBDIR gitweb
    SUBDIR ../
make[2]: `GIT-VERSION-FILE' is up to date.
    GEN gitweb.cgi
    GEN static/gitweb.js
$ sudo cp -Rf gitweb /var/www/

Beachten Sie, dass Sie dem Befehl mitteilen müssen, wo Sie Ihre Git-Repositories mit der Variablen GITWEB_PROJECTROOT finden können. Nun müssen Sie den Apache dazu bringen, CGI für dieses Skript zu verwenden, zu dem Sie einen VirtualHost hinzufügen können:

<VirtualHost *:80>
    ServerName gitserver
    DocumentRoot /var/www/gitweb
    <Directory /var/www/gitweb>
        Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
        AllowOverride All
        order allow,deny
        Allow from all
        AddHandler cgi-script cgi
        DirectoryIndex gitweb.cgi
    </Directory>
</VirtualHost>

Auch hier kann GitWeb mit jedem CGI- oder Perl-fähigen Webserver bedient werden; wenn Sie etwas anderes bevorzugen, sollte es nicht schwierig sein, es einzurichten. An dieser Stelle sollten Sie in der Lage sein, http://gitserver/ zu besuchen, um Ihre Repositorien online zu betrachten.