Git --distributed-is-the-new-centralized
Chapters ▾ 2nd Edition

4.7 Git op de server - GitWeb

GitWeb

Nu je gewone lees/schrijf en alleen-lezen toegang tot je project hebt, wil je misschien een eenvoudige web-gebaseerde visualisatie instellen. Git levert een CGI script genaamd GitWeb mee, dat soms hiervoor gebruikt wordt.

De GitWeb web-based gebruikers interface.
De GitWeb web-based gebruikers interface.

Als je wilt zien hoe GitWeb eruit ziet voor jouw project, kan je een commando wat met Git geleverd wordt gebruiken om een tijdelijke instantie op te starten als je een lichtgewicht server op je systeem hebt als lighttpd of webrick. Op Linux machines is lighttpd vaak geïnstalleerd, dus je zou in staat moeten zijn om het te laten lopen door git instaweb in te typen in je project directory. Als je een Mac gebruikt, Leopard heeft Ruby voor-geïnstalleerd, zou webrick de beste gok kunnen zijn. Om instaweb te starten met een niet-lighttpd handler, kan je het aanroepen met de --httpd optie.

$ 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]

Daarmee wordt een HTTPD server op poort 1234 opgestart en daarna een webbrowser die opent op die pagina. Daarmee is het meeste werk voor je gedaan. Als je klaar bent en je de server weer wilt afsluiten, kan je hetzelfde commando met de --stop optie aanroepen:

$ git instaweb --httpd=webrick --stop

Als je de web interface permanent op een server wilt hebben draaien voor je team of voor een open source project die je host, moet je je reguliere web server inrichten om het CGI script te serveren. Sommite Linux distributies hebben een gitweb package dat je wellicht met apt of yum kunt installeren, wellicht kan je dat eerst proberen. We zullen spoedig het handmatig installeren van GitWeb bespreken. Eerst zal je de Git broncode, waar GitWeb mee geleverd wordt, moeten verkrijgen, en het volgende maatwerk CGI script genereren:

$ git clone git://git.kernel.org/pub/scm/git/git.git
$ cd git/
$ make GITWEB_PROJECTROOT="/opt/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/

Merk op dat je het commando moet vertellen waar je Git repositories gevonden kunnen worden met de GITWEB_PROJECTROOT variabele. Vervolgens moet je ervoor zorgen dat Apache CGI gebruikt voor dat script, daarvoor kan je een VirtualHost toevoegen:

<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>

Nogmaals: GitWeb kan worden geserveerd met elke web server die CGI of Perl ondersteunt, als je toch iets anders wilt gebruiken zou het niet al te moeilijk moeten zijn dit in te richten. Nu zou je in staat moeten zijn om http://gitserver/ op te zoeken en je repositories online te zien.