-
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 Αποθέματα και Καθαρισμός
- 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 στο Visual Studio Code
- A1.4 Git στο IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git στο Sublime Text
- A1.6 Το Git στο Bash
- A1.7 Το Git στο Zsh
- A1.8 Το Git στο Powershell
- A1.9 Ανακεφαλαίωση
-
A2. Appendix B: Ενσωμάτωση του Git στις εφαρμογές μας
- A2.1 Γραμμή εντολών Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
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 παρέχει με μια εντολή που ενεργοποιεί ένα προσωρινό στιγμιότυπο (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.