-
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.5 Το Git στον διακομιστή - Δαίμονες του Git
Δαίμονες του Git
Στη συνέχεια θα εγκαταστήσουμε έναν δαίμονα που θα εξυπηρετεί αποθετήρια μέσω του πρωτοκόλλου “Git”. Αυτή είναι μια συνήθης επιλογή για γρήγορη, χωρίς ταυτοποίηση πρόσβαση στα δεδομένα μας στο Git. Καλό είναι να θυμόμαστε πως δεδομένου ότι πρόκειται για μια υπηρεσία χωρίς ταυτοποίηση, ο,τιδήποτε παρέχεται πάνω από αυτό το πρωτόκολλο είναι δημόσιο μέσα στο δίκτυό του.
Εάν τρέχουμε τον δαίμονα σε έναν διακομιστή εκτός τείχους προστασίας, θα πρέπει να χρησιμοποιείται μόνο για έργα που είναι ορατά σε όλον τον κόσμο. Αν ο διακομιστής στον οποίο τον τρέχουμε είναι εντός τείχους προστασίας, μπορούμε να το χρησιμοποιήσουμε για έργα στα οποία ένας μεγάλος αριθμός ανθρώπων ή υπολογιστών (συνεχής ολοκλήρωση ή δημιουργία διακομιστών) έχουν πρόσβαση μόνο για ανάγνωση, όταν δεν θέλουμε να προσθέσουμε κλειδί SSH για τον καθένα.
Σε κάθε περίπτωση, το πρωτόκολλο Git είναι σχετικά εύκολο στη ρύθμιση. Βασικά, θα πρέπει να εκτελέσουμε αυτήν την εντολή με “δαιμονικό” τρόπο:
git daemon --reuseaddr --base-path=/opt/git/ /opt/git/
Ο διακόπτης --reuseaddr
επιτρέπει στον διακομιστή να επανεκκινήσει χωρίς να αναμένει αποσύνδεση των παλαιών συνδέσεων, ο διακόπτης --base-path
επιτρέπει την κλωνοποίηση έργων χωρίς να καθορίζουν ολόκληρη τη διαδρομή και η διαδρομή στο τέλος λέει στον δαίμονα Git πού να να αναζητήσει αποθετήρια προς εξαγωγή.
Εάν τρέχουμε ένα τείχος προστασίας, θα χρειαστεί επίσης να ανοίξουμε μία τρύπα σε αυτό στη θύρα 9418 στο κουτί που τον εγκαθιστάται.
Μπορούμε να “διαμονίσουμε” αυτήν τη διαδικασία με διάφορους τρόπους, ανάλογα με το λειτουργικό σύστημα που εκτελούμε. Σε ένα μηχάνημα Ubuntu μπορούμε να χρησιμοποιήσουμε ένα script εκκίνησης. Έτσι, στο ακόλουθο αρχείο
/etc/event.d/local-git-daemon
βάζουμε αυτό το script:
start on startup
stop on shutdown
exec /usr/bin/git daemon \
--user=git --group=git \
--reuseaddr \
--base-path=/opt/git/ \
/opt/git/
respawn
Για λόγους ασφάλειας, συνιστάσται θερμά να εκτελείται αυτός ο δαίμονας ως χρήστης με δικαιίωμα μόνο-για-ανάγνωση στα αποθετήρια —μπορούμε εύκολα να το κάνουμε αυτό δημιουργώντας ένα νέο χρήστη git-ro
και τρέχοντας τον δαίμονα ως αυτός ο χρήστης.
Για λόγους απλότητας, θα το τρέξουμε απλά ως ο ίδιος χρήστης git που τρέχει και το git-shell.
Όταν επανεκκινήσουμε το μηχάνημά μας, ο δαίμονας Git θα ξεκινήσει κι αυτός αυτόματα και θα ξαναξεκινήσει αν κρασάρει. Για να τον τρέξουμε χωρίς να χρειάζεται να κάνουμε επανεκκίνηση, μπορούμε να εκτελέσουμε:
initctl start local-git-daemon
Σε άλλα συστήματα, ίσως θελήσουμε να χρησιμοποιήσουμε το xinetd
, ένα script στο σύστημά μας sysvinit
ή κάτι άλλο —εφόσον μπορούμε να δαιμονίσουμε αυτήν την εντολή και να την παρακολουθούμε.
Στη συνέχεια, πρέπει να ενημερώσουμε το Git σχετικά με το ποια αποθετήρια επιτρέπουν την πρόσβαση σε διακομιστές Git χωρίς έλεγχο ταυτότητας.
Μπορούμε να το κάνουμε σε κάθε αποθετήριο δημιουργώντας ένα αρχείο που ονομάζεται git-daemon-export-ok
.
$ cd /path/to/project.git
$ touch git-daemon-export-ok
Η παρουσία αυτού του αρχείου λέει στο Git ότι είναι εντάξει να εξυπηρετήσει αυτό το έργο χωρίς έλεγχο ταυτότητας.