Skip to content

Commit f6245be

Browse files
authored
Update client-hg.asc
1 parent d7833f8 commit f6245be

File tree

1 file changed

+25
-27
lines changed

1 file changed

+25
-27
lines changed

book/09-git-and-other-scms/sections/client-hg.asc

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44
(((Mercurial)))
55
Το σύμπαν των DVCS είναι μεγαλύτερο από το Git.
66
Στην πραγματικότητα, υπάρχουν πολλά άλλα συστήματα σε αυτό το σύμπαν, το καθένα με τη δική του οπτική για το πώς γίνεται σωστά ο κατανεμημένος έλεγχος εκδόσεων.
7-
Πέρα από το Git, το πιο δημοφιλές είναι το Mercurial, και μάλιστα και τα δύο είναι πολύ παρόμοια από πολλές απόψεις.
7+
Πέρα από το Git, το πιο δημοφιλές είναι το Mercurial, και μάλιστα και δύο συστήματα είναι πολύ παρόμοια από πολλές απόψεις.
88

9-
Τα καλά νέα, αν προτιμάτε τη συμπεριφορά από την πλευρά του πελάτη του Git αλλά εργαζόμαστε με ένα έργο του οποίου ο πηγαίος κώδικας ελέγχεται με το Mercurial, είναι ότι υπάρχει ένας τρόπος να χρησιμοποιήσουμε το Git ως πελάτη για ένα αποθετήριο που φιλοξενείται από το Mercurial.
10-
Δεδομένου ότι ο τρόπος με τον οποίο ο Git μιλάει με αποθετήρια διακομιστών μέσω απομακρυσμένων αποθετηρίων, δεν πρέπει να αποτελεί έκπληξη ότι αυτή η γέφυρα έχει υλοποιηθεί ως απομακρυσμένος βοηθός.
9+
Τα καλά νέα, εφόσον προτιμάμε τη συμπεριφορά από την πλευρά του πελάτη του Git αλλά εργαζόμαστε με ένα έργο του οποίου ο πηγαίος κώδικας ελέγχεται με το Mercurial, είναι ότι υπάρχει ένας τρόπος να χρησιμοποιήσουμε το Git ως πελάτη για ένα αποθετήριο που φιλοξενείται από Mercurial.
10+
Δεδομένου ότι ο τρόπος με τον οποίο ο Git μιλάει με αποθετήρια διακομιστών μέσω XXX απομακρυσμένων XXX, δεν πρέπει να αποτελεί έκπληξη ότι αυτή η γέφυρα έχει υλοποιηθεί ως απομακρυσμένος βοηθός.
1111
Το όνομα του έργου είναι `git-remote-hg` και μπορεί να βρεθεί στη https://github.com/felipec/git-remote-hg[].
1212

1313
===== `git-remote-hg`
1414

1515
Πρώτα, πρέπει να εγκαταστήσουμε το `git-remote-hg`.
16-
Αυτό ουσιαστικά γίνεται αν απλά αντιγράψουμε το αρχείο κάπου στο μονοπάτι μας, όπως παρακάτω:
16+
Αυτό ουσιαστικά γίνεται αν απλά αντιγράψουμε το αρχείο κάπου στη διαδρομή μας, όπως παρακάτω:
1717

1818
[source,console]
1919
----
@@ -23,21 +23,21 @@ $ chmod +x ~/bin/git-remote-hg
2323
----
2424

2525
… με την προϋπόθεση ότι ο `~/bin` είναι στο `$PATH` μας.
26-
η `git-remote-hg` έχει άλλη μία εξάρτηση: τη βιβλιοθήκη της Python του Mercurial.
26+
η `git-remote-hg` έχει άλλη μία εξάρτηση: τη βιβλιοθήκη Python του Mercurial.
2727
Αν έχουμε εγκατεστημένη την Python, αυτό γίνεται πανεύκολα:
2828

2929
[source,console]
3030
----
3131
$ pip install mercurial
3232
----
3333

34-
(Εάν δεν έχουμε εγκαταστήσει την Python, επισκεφτόμαστε τη διεύθυνση https://www.python.org/[] για να την κατεβάσουμε και εγκαταστήσουμε.)
34+
(Εάν δεν έχουμε εγκαταστήσει την Python, επισκεφτόμαστε τη διεύθυνση https://www.python.org/[] για να την κατεβάσουμε και να την εγκαταστήσουμε.)
3535

3636
Το τελευταίο πράγμα που θα χρειαστούμε είναι ο πελάτης του Mercurial.
3737
Μεταβαίνουμε στη διεύθυνση http://mercurial.selenic.com/[] και τον εγκαταθιστούμε αν δεν το έχουμε ήδη κάνει.
3838

39-
Τώρα είμαστε έτοιμοι να ροκάρουμε.
40-
Το μόνο που χρειαζόμαστε είναι ένα αποθετήριο Mercurial στο οποίο μπορούμε να ωθήσουμε.
39+
Τώρα είμαστε έτοιμοι να παίξουμε μπάλα.
40+
Το μόνο που χρειαζόμαστε είναι ένα αποθετήριο Mercurial στο οποίο να έχουμε δικαίωμα ώθησης.
4141
Ευτυχώς, κάθε αποθετήριο Mercurial μπορεί να ενεργήσει με αυτόν τον τρόπο, οπότε θα χρησιμοποιήσουμε μόνο το αποθετήριο ``hello world'' που χρησιμοποιούν όλοι για να μάθουν το Mercurial:
4242

4343
[source,console]
@@ -48,7 +48,7 @@ $ hg clone http://selenic.com/repo/hello /tmp/hello
4848
===== Ξεκινώντας
4949

5050
Τώρα που έχουμε έναν κατάλληλο αποθετήριο ``από την πλευρά του διακομιστή'', μπορούμε να εξετάσουμε μια τυπική ροή εργασίας.
51-
Όπως θα δούμε, αυτά τα δύο συστήματα είναι αρκετά παρόμοια, συνεπώς δεν υπάρχει μεγάλη τριβή.
51+
Όπως θα δούμε, αυτά τα δύο συστήματα είναι αρκετά παρόμοια, συνεπώς δεν υπάρχουν πολλές προστριβές.
5252

5353
Όπως πάντα στο Git, αρχικά κλωνοποιούμε:
5454

@@ -91,13 +91,13 @@ $ tree .git/refs
9191
9 directories, 5 files
9292
----
9393

94-
Το git-remote-hg προσπαθεί να κάνει το ιδίωμα πιο Git-ίστικο, αλλά εσωτερικά διαχειρίζεται την εννοιολογική απεικόνιση μεταξύ δύο ελαφρώς διαφορετικών συστημάτων.
94+
Το `git-remote-h`g προσπαθεί να κάνει το ιδίωμα πιο Git-οειδές, αλλά εσωτερικά διαχειρίζεται την εννοιολογική απεικόνιση μεταξύ δύο ελαφρώς διαφορετικών συστημάτων.
9595
Ο κατάλογος `refs/hg` είναι εκεί όπου αποθηκεύονται οι πραγματικές απομακρυσμένες αναφορές.
9696
Για παράδειγμα, το αρχείο `refs/hg/origin/branches/default` είναι ένα αρχείο ref του Git που περιέχει τον SHA-1 που αρχίζει με το `ac7955c`.
9797
Έτσι, ο κατάλογος `refs/hg` είναι σαν ένα ψεύτικο `refs/remotes/origin`, αλλά έχει την πρόσθετη διάκριση μεταξύ σελιδοδεικτών και κλάδων.
9898

9999
Το αρχείο `notes/hg` είναι το σημείο εκκίνησης για τον τρόπο με τον οποίο το git-remote-hg απεικονίζει τους αριθμούς SHA-1 των υποβολών Git σε ID συνόλων αλλαγών του Mercurial.
100-
Ας το εξερευνήσουμε λίγο:
100+
Ας το εξερευνήσουμε αυτό λίγο:
101101

102102
[source,console]
103103
----
@@ -120,14 +120,14 @@ $ git cat-file -p ac9117f
120120
----
121121

122122
Επομένως, το `refs/notes/hg` δείχνει σε ένα δέντρο, το οποίο στη βάση δεδομένων αντικειμένων του Git είναι μια λίστα άλλων αντικειμένων με ονόματα.
123-
Το `git ls-tree` εξάγει τη λειτουργία, τον τύπο, το hash αντικειμένου και το όνομα αρχείου για τα στοιχεία μέσα σε ένα δέντρο.
123+
Το `git ls-tree` εξάγει τα δικαιώματα πρόσβασης, τον τύπο, το hash αντικειμένου και το όνομα αρχείου για τα στοιχεία μέσα σε ένα δέντρο.
124124
Μόλις σκάψουμε σε ένα από τα στοιχεία του δέντρου, διαπιστώνουμε ότι μέσα του υπάρχει ένα blob που ονομάζεται `ac9117f` (ο αριθμός SHA-1 της υποβολής στην οποία δείχνει ο 'master`), με τα περιεχόμενα `0a04b98` (που είναι το αναγνωριστικό του συνόλου αλλαγών του Mercurial στην κορυφή του κλάδου `default`.
125125

126126
Τα καλά νέα είναι ότι δεν χρειάζεται να ανησυχούμε για όλα αυτά.
127127
Η τυπική ροή εργασίας δεν θα είναι πολύ διαφορετική από αυτήν με ένα απομακρυσμένο αποθετήριο Git.
128128

129129
Υπάρχει ένα ακόμα πράγμα που πρέπει να εξετάσουμε πριν συνεχίσουμε: τα αγνοεί.
130-
Το Mercurial και το Git χρησιμοποιούν έναν πολύ παρόμοιο μηχανισμό για αυτό, αλλά είναι πιθανό ότι δεν θέλουμε πραγματικά να υποβάλουμε ένα αρχείο .gitignore σε ένα αποθετήριο Mercurial.
130+
Το Mercurial και το Git χρησιμοποιούν έναν πολύ παρόμοιο μηχανισμό για αυτό, αλλά είναι πιθανό ότι δεν θέλουμε πραγματικά να υποβάλουμε ένα αρχείο `.gitignore` σε ένα αποθετήριο Mercurial.
131131
Ευτυχώς, το Git έχει έναν τρόπο να αγνοήσει αρχεία που είναι τοπικά σε ένα αποθετήριο στον δίσκο μας και η μορφή του Mercurial είναι συμβατή με το Git, οπότε απλά πρέπει να το αντιγράψουμε:
132132

133133
[source,console]
@@ -139,8 +139,8 @@ $ cp .hgignore .git/info/exclude
139139

140140
===== Ροή εργασίας
141141

142-
Ας υποθέσουμε ότι έχουμε κάνει κάποια εργασία και κάναμε κάποιες υποβολές στον κλάδο `master` και είμαστε έτοιμοι να τις ωθήσουμε στο απομακρυσμένο αποθετήριο.
143-
Εδώ φαίνεται το αποθετήριο μας:
142+
Ας υποθέσουμε ότι έχουμε κάνει κάποια εργασία και κάποιες υποβολές στον κλάδο `master` και είμαστε έτοιμοι να τις ωθήσουμε στο απομακρυσμένο αποθετήριο.
143+
Εδώ φαίνεται το αποθετήριό μας:
144144

145145
[source,console]
146146
----
@@ -151,7 +151,7 @@ $ git log --oneline --graph --decorate
151151
* 65bb417 Create a standard "hello, world" program
152152
----
153153

154-
Ο κλάδος `master` προηγείται κατά δύο υποβολές από της `origin/master`, αλλά αυτές οι δύο υποβολές υπάρχουν μόνο στο τοπικό μας μηχάνημα.
154+
Ο κλάδος `master` προηγείται κατά δύο υποβολές του `origin/master`, αλλά αυτές οι δύο υποβολές υπάρχουν μόνο στο τοπικό μας μηχάνημα.
155155
Ας δούμε αν κάποιος άλλος έχει κάνει σημαντικό έργο την ίδια στιγμή:
156156

157157
[source,console]
@@ -172,7 +172,7 @@ $ git log --oneline --graph --decorate --all
172172
----
173173

174174
Εφόσον χρησιμοποιήσαμε τη σημαία `--all`, βλέπουμε τις αναφορές ``notes'' που χρησιμοποιούνται εσωτερικά από το `git-remote-hg`, αλλά μπορούμε να τις αγνοήσουμε.
175-
Τα υπόλοιπα είναι όπως τα περιμέναμε. Η αρχή `origin/master` έχει προχωρήσει με μία υποβολή και η ιστορία μας έχει αποκλίνει τώρα.
175+
Τα υπόλοιπα είναι όπως τα αναμέναμε· ο `origin/master` έχει προχωρήσει κατά μία υποβολή και το ιστορικό μας έχει αποκλίνει τώρα.
176176
Σε αντίθεση με τα άλλα συστήματα με τα οποία εργαζόμαστε σε αυτό το κεφάλαιο, το Mercurial είναι ικανό να χειριστεί τις συγχωνεύσεις, οπότε δεν πρόκειται να κάνουμε τίποτα φανταχτερό.
177177

178178
[source,console]
@@ -204,7 +204,7 @@ To hg::/tmp/hello
204204
----
205205

206206
Αυτό ήταν!
207-
Εάν ρίξουμε μια ματιά στο αποθετήριο Mercurial, θα δούμε ότι έκανε αυτό που περιμέναμε:
207+
Εάν ρίξουμε μια ματιά στο αποθετήριο Mercurial, θα δούμε ότι έκανε αυτό που αναμέναμε:
208208

209209
[source,console]
210210
----
@@ -236,7 +236,7 @@ o 0 0a04b987be5a 2005-08-26 01:20 -0700 mpm
236236
Στο Mercurial, αυτό το είδος μίας αναφοράς ονομάζεται ``σελιδοδείκτης'' και συμπεριφέρεται με τον ίδιο τρόπο όπως ένας κλάδος Git.
237237

238238
Η αντίληψη του Mercurial περί ``κλάδου'' είναι πιο βαριά.
239-
Ο κλάδος στο οποίο πραγματοποιείται ένα σύνολο αλλαγών καταγράφεται _με το σύνολο αλλαγών_, που σημαίνει ότι θα βρίσκεται πάντα στο ιστορικό του αποθετηρίου.
239+
Ο κλάδος στο οποίο πραγματοποιείται ένα σύνολο αλλαγών καταγράφεται _με το σύνολο αλλαγών_ (changeset), που σημαίνει ότι θα βρίσκεται πάντα στο ιστορικό του αποθετηρίου.
240240
Ακολουθεί ένα παράδειγμα υποβολής που έγινε στον κλάδο `develop`:
241241

242242
[source,console]
@@ -251,7 +251,7 @@ summary: More documentation
251251
----
252252

253253
Παρατηρούμε τη γραμμή που αρχίζει με ``branch''.
254-
Το Git δεν μπορεί να αναπαράγει αυτό το πράγμα (και ούτε χρειάζεται, αφού και οι δύο τύποι κλάδων μπορούν να αναπαρασταθούν ως ref του Git), αλλά το `git-remote-hg` πρέπει να κατανοήσει τη διαφορά, επειδή το Mercurial ενδιαφέρεται.
254+
Το Git δεν μπορεί να αναπαράγει αυτό το πράγμα (και ούτε χρειάζεται, αφού και οι δύο τύποι κλάδων μπορούν να αναπαρασταθούν ως ref του Git), αλλά το `git-remote-hg` πρέπει να κατανοήσει τη διαφορά, επειδή το Mercurial πρέπει να ξέρει.
255255

256256
Η δημιουργία των σελιδοδεικτών στο Mercurial είναι τόσο εύκολη όσο και η δημιουργία κλάδων στο Git.
257257
Από την πλευρά του Git:
@@ -296,9 +296,9 @@ o 0 0a04b987be5a 2005-08-26 01:20 -0700 mpm
296296
----
297297

298298
Παρατηρούμε τη νέα ετικέτα `[featureA]` στην αναθεώρηση 5.
299-
Αυτά λειτουργούν ακριβώς όπως οι κλάδοι Git στην πλευρά του Git, με μια εξαίρεση: δεν μπορούμε να διαγράψουμε ένα σελιδοδείκτη από την πλευρά του Git (αυτό είναι ένας περιορισμός των απομακρυσμένων βοηθών).
299+
Αυτά λειτουργούν ακριβώς όπως οι κλάδοι Git στην πλευρά του Git, με μια εξαίρεση: δεν μπορούμε να διαγράψουμε έναν σελιδοδείκτη από την πλευρά του Git (αυτός είναι ένας περιορισμός των απομακρυσμένων βοηθών).
300300

301-
Μπορούμε να εργαστούμε σε ένα κλάδο ``βαρέων βαρών'' του Mercurial επίσης: απλά βάζουμε έναν κλάδο στον ονοματοχώρο `branches`:
301+
Επίσης μπορούμε να εργαστούμε σε ένα κλάδο ``βαρέων βαρών'' του Mercurial: απλά βάζουμε έναν κλάδο στον ονοματοχώρο `branches`:
302302

303303
[source,console]
304304
----
@@ -344,13 +344,11 @@ o changeset: 5:bd5ac26f11f9
344344
[...]
345345
----
346346

347-
The branch name ``permanent'' was recorded with the changeset marked _7_.
348-
349347
Το όνομα κλάδου `permanent` καταγράφηκε με το σύνολο αλλαγών _7_.
350348

351349
Από την πλευρά του Git, η συνεργασία με οποιοδήποτε από αυτά τα στυλ κλάδου είναι ίδια: απλώς ελέγχουμε, διεκπεραιώνουμε, ανακτούμε, συγχωνεύουμε, έλκουμε και ωθούμε όπως θα κάναμε κανονικά.
352350
Ένα πράγμα που πρέπει να ξέρουμε είναι ότι το Mercurial δεν υποστηρίζει την επανεγγραφή ιστορικού και μόνο προσθέτει σε αυτό.
353-
Ακολουθεί η εμφάνιση του αποθετηρίου μας Mercurial μετά από μια διαδραστική επανατοποθέτηση και μια επιβεβλιμένη ώθηση:
351+
Ακολουθεί η εμφάνιση του αποθετηρίου μας Mercurial μετά από μια διαδραστική επανατοποθέτηση και μια επιβεβλημένη ώθηση:
354352

355353
[source,console]
356354
----
@@ -390,11 +388,11 @@ o 0 0a04b987be5a 2005-08-26 01:20 -0700 mpm
390388
----
391389

392390
Οι αλλαγές _8_, _9_ και _10_ έχουν δημιουργηθεί και ανήκουν στον κλάδο `permanent`, αλλά τα παλιά σύνολα αλλαγών είναι ακόμα εκεί.
393-
Αυτό μπορεί να επιφέρει *πολλη* σύγχυση στους συνεργάτες μας που χρησιμοποιούν Mercurial, οπότε προσπαθούμε να το αποφύγουμε.
391+
Αυτό μπορεί να επιφέρει *πολλή* σύγχυση στους συνεργάτες μας που χρησιμοποιούν Mercurial, οπότε προσπαθούμε να το αποφύγουμε.
394392

395393

396394
===== Ανακεφαλαίωση Mercurial
397395

398-
Τα Git και Mercurial είναι αρκετά παρόμοια ώστε η εργασία πέρα από το σύνορό τους είναι αρκετά ανώδυνη.
396+
Τα Git και Mercurial είναι αρκετά παρόμοια ώστε η συνεργασία μεταξύ τους είναι αρκετά ανώδυνη.
399397
Εάν αποφύγουμε να αλλάξουμε το ιστορικό που έχει αφήσει το μηχάνημά μας (όπως συνήθως συνιστάται), ίσως να μην γνωρίζουμε καν ότι το άλλο άκρο είναι Mercurial.
400398

0 commit comments

Comments
 (0)