Git
Chapters ▾ 2nd Edition

4.7 Το Git στον διακομιστή - GitWeb

GitWeb

Τώρα που έχουμε βασική πρόσβαση ανάγνωσης/εγγραφής και μόνο-για-ανάγνωση στο έργο μας, ίσως θελήσουμε να δημιουργήσουμε ένα απλό οπτιοκοποιητή (visualizer) ιστού. Το Git συνοδεύεται από ένα script CGI που ονομάζεται GitWeb και χρησιμοποιείται μερικές φορές για αυτόν τον σκοπό.

Η διεπαφή ιστού του GitWeb.
Figure 49. Η διεπαφή ιστού του GitWeb.

Αν θέλουμε να δούμε πώς θα μοιάζει το GitWeb για το έργο μας, το Git έρχεται με μια εντολή που ενεργοποιεί ένα προσωρινό στιγμιότυπο αν έχουμε έναν ελαφρύ διακομιστή στο σύστημά μας όπως τα lighttpd ή webrick. Στα μηχανήματα Linux, το lighttpd είναι συχνά εγκατεστημένο, οπότε ίσως μπορούμε να το τρέξουμε πληκτρολογώντας git instaweb στον κατάλογο του έργου. Εάν τρέχουμε Mac, το Leopard έρχεται προεγκατεστημένο με Ruby, έτσι το webrick είναι πιο πιθανό να είναι διαθέσιμο. Για να ξεκινήσυμε το instaweb με χειριστή (handler) που δεν είναι lighttpd, μπορούμε να το εκτελέσουμε με την επιλογή --httpd.

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

Αυτό εκκινεί έναν διακομιστή HTTPD στη θύρα 1234 και στη συνέχεια ξεκινά αυτόματα ένα πρόγραμμα περιήγησης που ανοίγει σε αυτήν τη σελίδα. Είναι πολύ εύκολο από την πλευρά μας. Όταν τελειώσουμε και θέλουμε να τερματίσουμε τη λειτουργία του διακομιστή, μπορούμε να εκτελέσουμε την ίδια εντολή με την επιλογή --stop:

$ git instaweb --httpd=webrick --stop

Εάν θέλουμε να τρέχουμε συνεχώς τη διεπαφή ιστού σε έναν διακομιστή για την ομάδα μας ή για ένα έργο ανοιχτού κώδικα που φιλοξενούμε, θα πρέπει να ρυθμίσουμε το script CGI που θα προσφέρεται από τον συνηθισμένο διακομιστή ιστού μας. Ορισμένες διανομές Linux έχουν ένα πακέτο gitweb που μπορούμε να εγκαταστήσουμε με apt ή yum, επομένως ίσως είναι καλό να δοκιμάσουμε αυτό πρώτα. Θα δούμε τη χειροκίνητη εγκατάσταση του GitWeb πολύ συνοπτικά. Πρώτα πρέπει να πάρουμε τον πηγαίο κώδικα Git, με τον οποίο έρχεται το GitWeb, και να δημιουργήσουμε ένα προσαρμοσμένο script CGI:

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

Παρατηρήστε ότι πρέπει να πούμε στην εντολή πού να βρει τα αποθετήρια Git με τη μεταβλητή GITWEB_PROJECTROOT. Τώρα, πρέπει να κάνουμε το Apache να χρησιμοποιεί CGI για αυτό το script και για αυτόν τον σκοπό μπορούμε να να προσθέσουμε ένα VirtualHost:

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

Επαναλαμβάνουμε ότι το GitWeb μπορεί να εξυπηρετηθεί από οποιονδήποτε διακομιστή ιστού CGI ή Perl· εάν προτιμούμε να χρησιμοποιήσουμε κάτι άλλο, δεν θα είναι δύσκολο να το εγκαταστήσουμε. Σε αυτό το σημείο, θα πρέπει να μπορούμε να επισκεφτούμε την http://gitserver/ για να δούμε τα αποθετήριά μας online.