Chapters ▾ 2nd Edition

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

GitWeb

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

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

Αν θέλουμε να δούμε πώς θα μοιάζει το GitWeb για το έργο μας, το Git παρέχει με μια εντολή που ενεργοποιεί ένα προσωρινό στιγμιότυπο (instance) αν έχουμε έναν ελαφρύ διακομιστή στο σύστημά μας όπως τον 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 να προσφέρεται από τον συνηθισμένο web server μας. Ορισμένες διανομές Linux έχουν ένα πακέτο gitweb που μπορούμε να εγκαταστήσουμε με apt ή dnf, επομένως ίσως είναι καλό να δοκιμάσουμε αυτό πρώτα. Θα δείξουμε τη χειροκίνητη εγκατάσταση του GitWeb πολύ συνοπτικά. Πρώτα πρέπει να πάρουμε τον πηγαίο κώδικα του Git, με τον οποίο έρχεται το GitWeb, και να δημιουργήσουμε το προσαρμοσμένο script CGI:

$ git clone https://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/

Παρατηρούμε ότι πρέπει να πούμε στην εντολή πού να βρει τα αποθετήρια 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 μπορεί να εξυπηρετηθεί από οποιονδήποτε web server, CGI ή Perl· αν προτιμάμε να χρησιμοποιήσουμε κάτι άλλο, δεν θα είναι δύσκολο να το εγκαταστήσουμε. Σε αυτό το σημείο, θα πρέπει να μπορούμε να επισκεφτούμε την http://gitserver/ για να δούμε τα αποθετήριά μας online.