You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: book/01-introduction/sections/about-version-control.asc
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,11 @@
1
1
=== Σχετικά με τον έλεγχο εκδόσεων
2
2
3
3
(((έλεγχος εκδόσεων)))
4
-
Τι είναι ο έλεγχος εκδόσεων και γιατί πρέπει να σας απασχολεί;
4
+
Τι είναι ο έλεγχος εκδόσεων και γιατί πρέπει να μας απασχολεί;
5
5
Ο __έλεγχος εκδόσεων__ είναι ένα σύστημα το οποίο καταγράφει αλλαγές σε ένα αρχείο ή σε ένα σύνολο αρχείων έτσι ώστε να μπορούμε να ανακαλέσουμε συγκεκριμένες εκδόσεις.
6
6
Στα παραδείγματα του βιβλίου, τα αρχεία που θα χρησιμοποιήσουμε για έλεγχο εκδόσεων θα είναι αρχεία πηγαίου κώδικα λογισμικού αν και στην πραγματικότητα, θα μπορούσαμε να χρησιμοποιήσουμε αρχεία οποιουδήποτε τύπου.
7
7
8
-
Αν είστε γραφίστας ή σχεδιαστής ιστοσελίδων και θέλετε να κρατήσετε κάθε έκδοση μιας εικόνας ή μιας διάταξης (κάτι το οποίο είναι πολύ πιθανό) τότε ένα Σύστημα Ελέγχου Εκδόσεων (Version Control System -- VCS) είναι μια πολύ σοφή επιλογή. Ένα τέτοιο σύστημα μας επιτρέπει να επαναφέρουμε συγκεκριμένα αρχεία σε κάποια προγενέστερη κατάσταση, να επαναφέρουμε ακόμα και ολόκληρο έργο (project) σε προγενέστερη κατάσταση, να συγκρίνουμε αλλαγές με την πάροδο του χρόνου, να δούμε ποιος τροποποίησε τελευταίος κάτι που ενδεχομένως δημιουργεί κάποιο πρόβλημα, ποιος έθεσε ένα ζήτημα και άλλα πολλά. Η χρήση ενός συστήματος ελέγχου εκδόσεων σημαίνει επίσης ότι αν τα κάνουμε θάλασσα ή χάσουμε αρχεία, είναι εύκολο να τα ανακτήσουμε. Επιπλέον, όλες αυτές οι δυνατότητες προσφέρονται με πολύ μικρή επιβάρυνση.
8
+
Αν είμαστε γραφίστες ή σχεδιαστές ιστοσελίδων και θέλουμε να κρατήσουμε κάθε έκδοση μιας εικόνας ή μιας διάταξης (κάτι το οποίο είναι πολύ πιθανό) τότε ένα Σύστημα Ελέγχου Εκδόσεων (Version Control System -- VCS) είναι μια πολύ σοφή επιλογή. Ένα τέτοιο σύστημα μάς επιτρέπει να επαναφέρουμε συγκεκριμένα αρχεία σε κάποια προγενέστερη κατάσταση, να επαναφέρουμε ακόμα και ολόκληρο έργο (project) σε προγενέστερη κατάσταση, να συγκρίνουμε αλλαγές με την πάροδο του χρόνου, να δούμε ποιος τροποποίησε τελευταίος κάτι που ενδεχομένως δημιουργεί κάποιο πρόβλημα, ποιος έθεσε ένα ζήτημα και άλλα πολλά. Η χρήση ενός συστήματος ελέγχου εκδόσεων σημαίνει επίσης ότι αν τα κάνουμε θάλασσα ή χάσουμε αρχεία, είναι εύκολο να τα ανακτήσουμε. Επιπλέον, όλες αυτές οι δυνατότητες προσφέρονται με πολύ μικρή επιβάρυνση.
Ένα από τα πιο δημοφιλή συστήματα ελέγχου εκδόσεων ήταν το σύστημα RCS το οποίο διανέμεται ακόμα σε πολλούς υπολογιστές. Ακόμα και το δημοφιλές λειτουργικό Mac OS X περιλαμβάνει την εντολή `rcs` όταν εγκαθίστανται τα Developer Tools.
23
-
Το RCS δουλεύει χρησιμοποιώντας συλλογές από επιδιορθώσεις λογισμικού (patches, ή διαφορές μεταξύ αρχείων) σε μια συγκεκριμένη μορφή στον δίσκο. Έπειτα, μπορεί να ξαναδημιουργήσει κάθε αρχείο όπως ήταν σε οποιοδήποτε χρονικό σημείο προσθέτοντας όλα τις επιδιορθώσεις λογισμικού.
23
+
Το RCS δουλεύει χρησιμοποιώντας συλλογές από επιθέματα (patches, ή διαφορές μεταξύ αρχείων) σε μια συγκεκριμένη μορφή στον δίσκο. Έπειτα, μπορεί να ξαναδημιουργήσει κάθε αρχείο όπως ήταν σε οποιοδήποτε χρονικό σημείο προσθέτοντας όλα τα επιθέματα.
Copy file name to clipboardExpand all lines: book/01-introduction/sections/basics.asc
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,7 +31,7 @@ image::images/snapshots.png[Το Git αποθηκεύει τα δεδομένα
31
31
==== Σχεδόν κάθε λειτουργία εκτελείται τοπικά
32
32
33
33
Οι περισσότερες λειτουργίες στο Git χρειάζονται μόνο τοπικά αρχεία και πόρους για να εκτελεστούν. Γενικά, δεν χρειάζεται να μεταφερθεί πληροφορία από κάποιον άλλο υπολογιστή του ίδιου δικτύου.
34
-
Αν είστε συνηθισμένοι σε ένα συγκεντρωτικό σύστημα ελέγχου εκδόσεων όπου οι περισσότερες λειτουργίες έχουν καθυστέρηση εξαιτίας του δικτύου, τότε αυτή η πλευρά του Git θα σας κάνει να νομίζετε ότι οι θεοί της ταχύτητας ευλόγησαν το Git με υπερκόσμιες δυνάμεις.
34
+
Αν είμαστε συνηθισμένοι σε ένα συγκεντρωτικό σύστημα ελέγχου εκδόσεων όπου οι περισσότερες λειτουργίες έχουν καθυστέρηση εξαιτίας του δικτύου, τότε αυτή η πλευρά του Git θα μας κάνει να νομίζουμε ότι οι θεοί της ταχύτητας ευλόγησαν το Git με υπερκόσμιες δυνάμεις.
35
35
Οι περισσότερες λειτουργίες στο Git φαίνονται σχεδόν στιγμιαίες, κυρίως λόγω του γεγονότος ότι το πλήρες ιστορικό του έργου βρίσκεται στον τοπικό δίσκο.
36
36
37
37
Για παράδειγμα, για να περιηγηθούμε στο ιστορικό του έργου μας, το Git δεν χρειάζεται να λάβει το ιστορικό από τον διακομιστή και να το εμφανίσει στον χρήστη -- χρειάζεται απλά να το διαβάσει από την τοπική βάση δεδομένων.
@@ -43,7 +43,7 @@ image::images/snapshots.png[Το Git αποθηκεύει τα δεδομένα
43
43
Αν είμαστε στο σπίτι και δεν μπορούμε να συνδεθούμε μέσω του πελάτη (client) του εικονικού τοπικού μας δικτύου (Virtual Private Network, VPN), μπορούμε ακόμα να εργαστούμε.
44
44
Σε πολλά άλλα συστήματα, οι παραπάνω λειτουργίες είναι είτε αδύνατες είτε επίπονες.
45
45
Στο Perforce, για παράδειγμα, πολλές λειτουργίες δεν είναι δυνατό να πραγματοποιηθούν, αν δεν υπάρχει σύνδεση με τον διακομιστή. Στο Subversion και στο CVS είναι δυνατό να γίνει επεξεργασία των αρχείων, αλλά δεν είναι δυνατό υποβληθούν οι αλλαγές στη βάση δεδομένων εφόσον βρίσκεται εκτός σύνδεσης.
46
-
Τα παραπάνω μπορεί να μην φαίνονται πολύ σημαντικά, αλλά ενδεχομένως θα εντυπωσιαστείτε από το πόσο μεγάλη διαφορά μπορεί να κάνουν.
46
+
Τα παραπάνω μπορεί να μην φαίνονται πολύ σημαντικά, αλλά κάποιος που έχει δουλέψει με το Subversion ή το CVS ενδεχομένως θα εντυπωσιαστεί από το πόσο μεγάλη διαφορά μπορεί να κάνουν.
47
47
48
48
==== To Git έχει ακεραιότητα
49
49
@@ -61,14 +61,14 @@ image::images/snapshots.png[Το Git αποθηκεύει τα δεδομένα
61
61
24b9da6552252987aa493b52f8696cd6d3b00373
62
62
----
63
63
64
-
Ίσως παρατηρήσατε ότι αυτές οι κατακερματισμένες τιμές βρίσκονται παντού στο Git.
65
-
Στην πραγματικότητα, το Git αποθηκεύει τα πάντα στην βάση δεδομένων του με βάση την κατακερματισμένη τιμή των περιεχομένων ενός αρχείου και όχι με βάση το όνομα του αρχείου.
64
+
Παρατηρούμε ότι αυτές οι κατακερματισμένες τιμές βρίσκονται παντού στο Git.
65
+
Στην πραγματικότητα, το Git αποθηκεύει τα πάντα στη βάση δεδομένων του με βάση την κατακερματισμένη τιμή των περιεχομένων ενός αρχείου και όχι με βάση το όνομα του αρχείου.
66
66
67
67
==== Το Git γενικά μόνο προσθέτει δεδομένα
68
68
69
-
Σχεδόν όλες οι ενέργειες που πραγματοποιούνται στο Git μόνο προσθέτουν δεδομένα στην βάση δεδομένων του Git.
69
+
Σχεδόν όλες οι ενέργειες που πραγματοποιούνται στο Git μόνο προσθέτουν δεδομένα στη βάση δεδομένων του Git.
70
70
Το σύστημα είναι δύσκολο να πραγματοποιήσει οποιαδήποτε λειτουργία δεν είναι αναιρέσιμη ή να σβήσει δεδομένα.
71
-
Όπως και σε κάθε σύστημα διαχείρισης ελέγχου εκδόσεων είναι δυνατό να χαθούν ή να μπερδευτούν αλλαγές που δεν έχουν υποβληθεί ακόμα, αλλά από την στιγμή που υποβληθεί ένα στιγμιότυπο στο Git είναι πολύ δύσκολο να χαθεί, ειδικά αν η τοπική βάση δεδομένων ωθείται συχνά σε κάποιο άλλο άλλο αποθετήριο.
71
+
Όπως και σε κάθε σύστημα διαχείρισης ελέγχου εκδόσεων είναι δυνατό να χαθούν ή να μπερδευτούν αλλαγές που δεν έχουν υποβληθεί ακόμα, αλλά από τη στιγμή που υποβληθεί ένα στιγμιότυπο στο Git είναι πολύ δύσκολο να χαθεί, ειδικά αν η τοπική βάση δεδομένων ωθείται συχνά σε κάποιο άλλο άλλο αποθετήριο.
72
72
73
73
Αυτό κάνει τη χρήση του Git πανεύκολη καθώς μπορούμε να πειραματιστούμε χωρίς τον κίνδυνο να τα θαλασσώσουμε.
74
74
Μια πιο διεξοδική ματιά στο πώς αποθηκεύει τα δεδομένα του το Git και πώς μπορούμε να ανακτήσουμε δεδομένα που φαίνονται χαμένα, υπάρχουν στην ενότητα <<_undoing>>.
@@ -80,19 +80,19 @@ image::images/snapshots.png[Το Git αποθηκεύει τα δεδομένα
80
80
Τα αρχεία στο Git μπορούν να βρίσκονται σε τρεις κύριες καταστάσεις: υποβεβλημένο, τροποποιημένο και καταχωρημένο.
81
81
82
82
* _Υποβεβλημένο_ είναι ένα αρχείο όταν τα δεδομένα του είναι αποθηκευμένα με ασφάλεια στην τοπική βάση δεδομένων.
83
-
* _Τροποποιημένο_ είναι ένα αρχείο όταν έχει αλλάξει, αλλά δεν έχει υποβλήθεί στην βάση δεδομένων ακόμα.
83
+
* _Τροποποιημένο_ είναι ένα αρχείο όταν έχει αλλάξει, αλλά δεν έχει υποβλήθεί στη βάση δεδομένων ακόμα.
84
84
* _Καταχωρημένο_ είναι ένα τροποποιημένο αρχείο της τρέχουσας έκδοσης όταν έχει επισημανθεί για βρίσκεται στο επόμενο υποβεβλημένο στιγμιότυπο.
85
85
86
86
Αυτό μας οδηγεί στις τρεις βασικές περιοχές ενός έργου στο Git: τον κατάλογο του Git, τον κατάλογος εργασίας και το ενδιάμεσο στάδιο.
87
87
88
88
.Κατάλογος εργασίας, ενδιάμεσο στάδιο και κατάλογος του Git.
89
89
image::images/areas.png["Κατάλογος εργασίας, ενδιάμεσο στάδιο και κατάλογος του Git."]
90
90
91
-
Ο κατάλογος του Git είναι το μέρος όπου το Git αποθηκεύει τα μεταδεδομένα (metadata) και την βάση δεδομένων του έργου.
91
+
Ο κατάλογος του Git είναι το μέρος όπου το Git αποθηκεύει τα μεταδεδομένα (metadata) και τη βάση δεδομένων του έργου.
92
92
Αυτό είναι το πιο σημαντικό μέρος του Git και είναι αυτό που αντιγράφεται όταν κλωνοποιούμε ένα αποθετήριο από έναν άλλο υπολογιστή.
93
93
94
-
Ο κατάλογος εργασίας είναι ένα και μόνο στιγμιότyπο μίας έκδοσης του έργου.
95
-
Τα αρχεία αυτά ανασύρονται από την συμπιεσμένη βάση δεδομένων του καταλόγου του Git και τοποθετούνται στον τοπικό δίκο ώστε να μπορεί ο χρήστης να τα χρησιμοποιήσει ή να τα τροποποιήσει.
94
+
Ο κατάλογος εργασίας είναι απλά ένα στιγμιότυπο μίας έκδοσης του έργου.
95
+
Τα αρχεία αυτά ανασύρονται από τη συμπιεσμένη βάση δεδομένων του καταλόγου του Git και τοποθετούνται στον τοπικό δίκο ώστε να μπορεί ο χρήστης να τα χρησιμοποιήσει ή να τα τροποποιήσει.
96
96
97
97
Το ενδιάμεση στάδιο είναι ένα αρχείο το οποίο γενικά περιλαμβάνεται στον κατάλογο του Git, στο οποίο είναι αποθηκευμένες πληροφορίες σχετικά με το τι θα περάσει στην επόμενη υποβολή.
98
98
Το τεχνικό όνομα του ενδιάμεσου σταδίου στην ορολογία του Git είναι ``ευρετήριο'', αλλά το όνομα ``ενδιάμεσο στάδιο'' είναι επίσης σύνηθες.
Copy file name to clipboardExpand all lines: book/01-introduction/sections/command-line.asc
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,9 @@
4
4
Υπάρχουν τα αρχικά εργαλεία στην γραμμή εντολών αλλά και διάφορα γραφικά εργαλεία με ποικίλες δυνατότητες.
5
5
Στο βιβλίο αυτό θα χρησιμοποιήσουμε το Git μέσα από την γραμμή εντολών.
6
6
Κατ' αρχάς, η γραμμή εντολών είναι το μόνο εργαλείο στο οποίο μπορεί κανείς να τρέξει *όλες* τις εντολές του Git -- για λόγους απλότητας τα περισσότερα από τα γραφικά εργαλεία υλοποιούν μόνο ένα υποσύνολο των λειτουργιών του Git.
7
-
Αν γνωρίζετε πώς να χρησιμοποιείτε το Git από την γραμμή εντολών, τότε θα μπορέσετε να καταλάβετε και πώς να χρησιμοποιήσετε τα γραφικά εργαλεία. Όμως το αντίστροφο δεν ισχύει πάντα.
7
+
Αν γνωρίζουμε πώς να χρησιμοποιούμε το Git από την γραμμή εντολών, τότε θα μπορέσουμε να καταλάβουμε και πώς να χρησιμοποιήσουμε τα γραφικά εργαλεία. Όμως το αντίστροφο δεν ισχύει πάντα.
8
8
Επίσης, ενώ η επιλογή ενός γραφικού προγράμματος είναι θέμα προσωπικού γούστου, _όλοι_ οι χρήστες θα έχουν τα εργαλεία γραμμής εντολών εγκατεστημένα και διαθέσιμα.
9
9
10
-
Συνεπώς θεωρούμε ότι γνωρίζετε πώς να ανοίξετε την εφαρμογή Terminal στο Mac ή την γραμμή εντολών (command prompt) ή το Powershell στα Windows.
11
-
Αν δεν γνωρίζετε για τι μιλάμε, ίσως χρειαστεί να αναβάλετε για λίγο την εκμάθηση του Git και να ψάξετε τα παραπάνω ώστε να μπορείτε να ακολουθήσετε τα υπόλοιπα παραδείγματα και τις περιγραφές σε αυτό το βιβλίο.
10
+
Συνεπώς θεωρούμε ότι γνωρίζουμε πώς να ανοίξουμε την εφαρμογή Terminal στο Mac ή την γραμμή εντολών (command prompt) ή το Powershell στα Windows.
11
+
Αν δεν γνωρίζουμε για τι μιλάμε, ίσως χρειαστεί να αναβάλουμε για λίγο την εκμάθηση του Git και να ψάξουμε τα παραπάνω ώστε να μπορούμε να ακολουθήσουμε τα υπόλοιπα παραδείγματα και τις περιγραφές σε αυτό το βιβλίο.
0 commit comments