-
1. Ξεκινώντας με το Git
-
2. Τα θεμελιώδη στοιχεία του Git
-
3. Διακλαδώσεις στο Git
-
4. Το Git στον διακομιστή
- 4.1 Τα πρωτόκολλα
- 4.2 Εγκατάσταση του Git σε διακομιστή
- 4.3 Δημιουργία δημόσιου κλειδιού SSH
- 4.4 Στήσιμο του διακομιστή
- 4.5 Δαίμονες του Git
- 4.6 Έξυπνο HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Επιλογές φιλοξενίας από τρίτους
- 4.10 Ανακεφαλαίωση
-
5. Κατανεμημένο Git
-
6. GitHub
-
7. Εργαλεία του Git
- 7.1 Επιλογή αναθεώρησης
- 7.2 Διαδραστική εργασία με το στάδιο καταχώρισης
- 7.3 stash και clean
- 7.4 Υπογραφή της δουλειάς μας
- 7.5 Αναζήτηση
- 7.6 Η ιστορία ξαναγράφεται
- 7.7 Απομυθοποίηση της reset
- 7.8 Συγχωνεύσεις για προχωρημένους
- 7.9 Rerere
- 7.10 Αποσφαλμάτωση με το Git
- 7.11 Λειτουργικές υπομονάδες
- 7.12 Δεμάτιασμα δεδομένων
- 7.13 Replace
- 7.14 Αποθήκευση διαπιστευτηρίων
- 7.15 Ανακεφαλαίωση
-
8. Εξατομίκευση του Git
-
9. Το Git και άλλα συστήματα
- 9.1 Το Git ως πελάτης
- 9.2 Μετανάστευση στο Git
- 9.3 Ανακεφαλαίωση
-
10. Εσωτερική λειτουργία του Git
- 10.1 Διοχετεύσεις και πορσελάνες
- 10.2 Αντικείμενα του Git
- 10.3 Αναφορές του Git
- 10.4 Πακετάρισμα αρχείων
- 10.5 Τα refspec
- 10.6 Πρωτόκολλα μεταφοράς
- 10.7 Διατήρηση και ανάκτηση δεδομένων
- 10.8 Μεταβλητές περιβάλλοντος
- 10.9 Ανακεφαλαίωση
-
A1. Appendix A: Το Git σε άλλα περιβάλλοντα
- A1.1 Γραφικές διεπαφές
- A1.2 Το Git στο Visual Studio
- A1.3 Git στο Eclipse
- A1.4 Το Git στο Bash
- A1.5 Το Git στο Zsh
- A1.6 Το Git στο Powershell
- A1.7 Ανακεφαλαίωση
-
A2. Appendix B: Ενσωμάτωση του Git στις εφαρμογές μας
- A2.1 Γραμμή εντολών Git
- A2.2 Libgit2
- A2.3 JGit
-
A3. Appendix C: Εντολές Git
- A3.1 Ρύθμιση και διαμόρφωση
- A3.2 Λήψη και δημιουργία έργων
- A3.3 Βασική λήψη στιγμιοτύπων
- A3.4 Διακλάδωση και συγχώνευση
- A3.5 Κοινή χρήση και ενημέρωση έργων
- A3.6 Επιθεώρηση και σύγκριση
- A3.7 Αποσφαλμάτωση
- A3.8 Επιθέματα
- A3.9 Ηλεκτρονικό ταχυδρομείο
- A3.10 Εξωτερικά Συστήματα
- A3.11 Διοίκηση
- A3.12 Εντολές διοχέτευσης
4.7 Το Git στον διακομιστή - GitWeb
GitWeb
Τώρα που έχουμε βασική πρόσβαση ανάγνωσης/εγγραφής και μόνο-για-ανάγνωση στο έργο μας, ίσως θελήσουμε να δημιουργήσουμε ένα απλό οπτιοκοποιητή (visualizer) ιστού. Το Git συνοδεύεται από ένα script CGI που ονομάζεται 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.