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/10-git-internals/sections/environment.asc
+31-32Lines changed: 31 additions & 32 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,6 @@
4
4
Περιστασιακά, είναι χρήσιμο να μάθουμε ποιες είναι αυτές και πώς μπορούν να χρησιμοποιηθούν για να κάνουν το Git να συμπεριφέρεται όπως θέλουμε.
5
5
Δεν πρόκειται για μια εξαντλητική λίστα με όλες τις μεταβλητές περιβάλλοντος στις οποίες το Git δίνει σημασία, αλλά θα καλύψουμε τις πιο χρήσιμες.
6
6
7
-
8
7
==== Καθολική συμπεριφορά
9
8
10
9
Μέρος της συμπεριφοράς του Git ως πρόγραμμα υπολογιστή εξαρτάται από τις μεταβλητές περιβάλλοντος.
@@ -13,7 +12,7 @@
13
12
Μπορούμε να ελέγξουμε την τρέχουσα ρύθμιση εκτελώντας το `git --exec-path`.
14
13
15
14
Η *`HOME`* δεν θεωρείται συνήθως εξατομικεύσιμη (πάρα πολλά πράγματα εξαρτώνται από αυτήν), αλλά είναι όπου το Git ψάχνει για το καθολικό αρχείο διαμόρφωσης.
16
-
Εάν θέλουμε μια πραγματικά φορητή εγκατάσταση Git, πλήρη με καθολική διαμόρφωση, μπορούμε να αντικαταστήσουμε την `HOME` στο προφίλ κελύφους του φορητού Git.
15
+
Εάν θέλουμε μια πραγματικά φορητή εγκατάσταση Git, πλήρης με καθολική διαμόρφωση, μπορούμε να αντικαταστήσουμε την `HOME` στο προφίλ κελύφους του φορητού Git.
17
16
18
17
Η *`PREFIX`* είναι παρόμοια, αλλά για διαμόρφωση σε όλο το σύστημα.
19
18
Το Git αναζητά αυτό το αρχείο στο `$PREFIX/etc/gitconfig`.
@@ -24,7 +23,7 @@
24
23
Η *`GIT_PAGER`* ελέγχει το πρόγραμμα που χρησιμοποιείται για την εμφάνιση εξόδου πολλών σελίδων στη γραμμή εντολών.
25
24
Αν είναι απενεργοποιημένη, θα χρησιμοποιηθεί ως εναλλακτική λύση η `PAGER` .
26
25
27
-
Η *`GIT_EDITOR`* είναι ο επεξεργαστής τον οποίο θα ξεκινήσει το Git όταν ο χρήστης χρειάζεται να επεξεργαστεί κάποιο κείμενο (για παράδειγμα ένα μήνυμα αποστολής).
26
+
Η *`GIT_EDITOR`* είναι ο επεξεργαστής τον οποίο θα ξεκινήσει το Git όταν ο χρήστης χρειάζεται να επεξεργαστεί κάποιο κείμενο (για παράδειγμα ένα μήνυμα υποβολής).
28
27
Εάν είναι απενεργοποιημένη, θα χρησιμοποιηθεί η `EDITOR`.
29
28
30
29
==== Τοποθεσίες αποθετηρίων
@@ -38,7 +37,7 @@
38
37
Εάν έχουμε πρόσβαση σε καταλόγους που φορτώνουν αργά (όπως σε μονάδες μαγνητοταινίας ή σε αργή σύνδεση δικτύου), ίσως θέλουμε να κάνουμε το Git να σταματήσει να δοκιμάζει νωρίτερα από ότι θα σταματούσε αλλιώς, ειδικά αν το Git καλείται όταν δημιουργείται η προτροπή του κελύφους μας.
39
38
40
39
Η *`GIT_WORK_TREE`* είναι η θέση της ρίζας του καταλόγου εργασίας για ένα μη γυμνό αποθετήριο.
41
-
Εάν δεν έχει καθοριστεί, χρησιμοποιείται ο γονικός κατάλογος του `$GIT_DIR`.
40
+
Εάν `--git-dir` ή `GIT_DIR` έχουν καθοριστεί αλλά καμία από τις `--work-tree`, `GIT_WORK_TREE` ή `core.worktree` δεν έχει καθοριστεί, ο τρέχον κατάλογος θεωρείται το αρχικό επίπεδο του δέντρου εργασίας.
42
41
43
42
Η *`GIT_INDEX_FILE`* είναι η διαδρομή στο αρχείο του ευρετηρίου (για μη γυμνά αποθετήρια μονον).
44
43
@@ -49,37 +48,35 @@
49
48
50
49
==== Pathspecs
51
50
52
-
Ένα ``pathspec'' αναφέρεται στον τρόπο με τον οποίο καθορίζουμε διαδρομές στο Git, συμπεριλαμβανομένης της χρήσης μπαλαντέρ.
51
+
Ένα "`pathspec`" αναφέρεται στον τρόπο με τον οποίο καθορίζουμε διαδρομές (paths) στο Git, συμπεριλαμβανομένης της χρήσης μπαλαντέρ.
53
52
Αυτά χρησιμοποιούνται στο αρχείο `.gitignore`, αλλά και στη γραμμή εντολών (`git add *.c`).
54
53
55
-
Οι *`GIT_GLOB_PATHSPECS` και `GIT_NOGLOB_PATHSPECS`* ελέγχουν την προεπιλεγμένη συμπεριφορά των μπαλαντέρ στα pathspecs.
56
-
Αν η `GIT_GLOB_PATHSPECS` έχει τιμή 1, οι χαρακτήρες μπαλαντέρ δρουν ως μπαλαντέρ (αυτή είναι και η προεπιλεγμένη συμπεριφορά)· αν η `GIT_NOGLOB_PATHSPECS` έχει τιμή 1, οι χαρακτήρες μπαλαντέρ αντιμετωπίζονται ως απλοί χαρακτήρες, κάτι που σημαίνει ότι κάτι σαν `*.c` θα αντιστοιχούσε μόνο σε ένα αρχείο _με όνομα_ `*.c`, αντί σε οποιοδήποτε αρχείο του οποίου το όνομα τελειώνει σε `.c`
57
-
Μπορούμε να παρακάμψουμε αυτήν τη συμπεριφορά σε μεμονωμένες περιπτώσεις ξεκινώντας το pathspec με `:(glob)` ή `:(literal)`, όπως στο `:(glob)*.c`.
54
+
Οι *`GIT_GLOB_PATHSPECS`* και *`GIT_NOGLOB_PATHSPECS`* ελέγχουν την προεπιλεγμένη συμπεριφορά των μπαλαντέρ στα pathspecs.
55
+
Αν η `GIT_GLOB_PATHSPECS` έχει τιμή 1, οι χαρακτήρες μπαλαντέρ δρουν ως μπαλαντέρ (αυτή είναι και η προεπιλεγμένη συμπεριφορά)· αν η `GIT_NOGLOB_PATHSPECS` έχει τιμή 1, οι χαρακτήρες μπαλαντέρ αναζητούν μόνο τον εαυτό τους, κάτι που σημαίνει πως κάτι σαν `\*.c` θα αντιστοιχούσε μόνο σε ένα αρχείο _με όνομα_ "`\*.c`", αντί σε οποιοδήποτε αρχείο του οποίου το όνομα τελειώνει σε `.c`
56
+
Μπορούμε να παρακάμψουμε αυτήν τη συμπεριφορά σε μεμονωμένες περιπτώσεις ξεκινώντας το pathspec με `:(glob)` ή `:(literal)`, όπως στο `:(glob)\*.c`.
58
57
59
58
Η *`GIT_LITERAL_PATHSPECS`* απενεργοποιεί και τις δύο παραπάνω συμπεριφορές· δεν θα λειτουργούν χαρακτήρες μπαλαντέρ και τα προθέματα παράκαμψης απενεργοποιούνται επίσης.
60
59
61
60
Η *`GIT_ICASE_PATHSPECS`* ορίζει όλα τα pathspecs να λειτουργούν χωρίς διάκριση πεζών/κεφαλαίων.
62
61
63
-
64
62
==== Υποβολές
65
63
66
64
Η τελική δημιουργία ενός αντικειμένου υποβολής Git γίνεται συνήθως με την `git-commit-tree`, η οποία χρησιμοποιεί αυτές τις μεταβλητές περιβάλλοντος ως την κύρια πηγή πληροφόρησης, και χρησιμοποιεί τις τιμές διαμόρφωσης μόνο αν οι τιμές των μεταβλητών περιβάλλοντος δεν έχουν οριστεί.
67
65
68
-
Η *`GIT_AUTHOR_NAME`* είναι το ανθρωπανάγνωστο όνομα στο πεδίο `author`.
66
+
Η *`GIT_AUTHOR_NAME`* είναι το ανθρωπανάγνωστο όνομα στο πεδίο "`author`".
69
67
70
-
H *`GIT_AUTHOR_EMAIL`* είναι η διεύθυνση e-mail για το πεδίο `author`.
68
+
H *`GIT_AUTHOR_EMAIL`* είναι η διεύθυνση e-mail για το πεδίο "`author`".
71
69
72
-
H *`GIT_AUTHOR_DATE`* είναι η χρονοσήμανση που χρησιμοποιείται για το πεδίο `author`.
70
+
H *`GIT_AUTHOR_DATE`* είναι η χρονοσήμανση που χρησιμοποιείται για το πεδίο "`author`".
73
71
74
-
H *`GIT_COMMITTER_NAME`* ορίζει το ανθρώπινο όνομα για το πεδίο `committer`.
72
+
H *`GIT_COMMITTER_NAME`* ορίζει το ανθρώπινο όνομα για το πεδίο "`committer`".
75
73
76
-
H *`GIT_COMMITTER_EMAIL`* είναι η διεύθυνση e-mail για το πεδίο `committer`.
74
+
H *`GIT_COMMITTER_EMAIL`* είναι η διεύθυνση e-mail για το πεδίο "`committer`".
77
75
78
-
H *`GIT_COMMITTER_DATE`* χρησιμοποιείται για τη χρονοσήμανση στο πεδίο `committer`.
76
+
H *`GIT_COMMITTER_DATE`* χρησιμοποιείται για τη χρονοσήμανση στο πεδίο "`committer`".
79
77
80
78
H *`EMAIL`* είναι η εναλλακτική διεύθυνση e-mail για την περίπτωση που δεν έχει οριστεί η τιμή διαμόρφωσης `user.email`.
81
-
Εάν το _αυτή_ δεν έχει οριστεί, το Git χρησιμοποιεί το όνομα του χρήστη και του υπολογιστή.
82
-
79
+
Εάν _αυτή_ δεν έχει οριστεί, το Git χρησιμοποιεί το όνομα του χρήστη και του υπολογιστή.
83
80
84
81
==== Δικτύωση
85
82
@@ -95,7 +92,6 @@ H *`GIT_SSL_NO_VERIFY`* λέει στο Git να μην επαληθεύει τ
95
92
H *`GIT_HTTP_USER_AGENT`* ορίζει τη συμβολοσειρά χρήστη-πράκτορα που χρησιμοποιείται από το Git κατά την επικοινωνία μέσω HTTP.
96
93
Η προεπιλογή είναι μια τιμή όπως η `git/2.0.0`.
97
94
98
-
99
95
==== Diff και συγχώνευση
100
96
101
97
H *`GIT_DIFF_OPTS`* έχει λίγο παραπλανητικό όνομα.
@@ -104,7 +100,7 @@ H *`GIT_DIFF_OPTS`* έχει λίγο παραπλανητικό όνομα.
104
100
H *`GIT_EXTERNAL_DIFF`* χρησιμοποιείται για να παρακάμψει την τιμή διαμόρφωσης `diff.external`.
105
101
Εάν έχει οριστεί, το Git θα καλέσει αυτό το πρόγραμμα όταν καλείται η `git diff`.
106
102
107
-
Οι *`GIT_DIFF_PATH_COUNTER`* και *`GIT_DIFF_PATH_TOTAL`* είναι χρήσιμες από μέσα από το πρόγραμμα που καθορίζεται από την `GIT_EXTERNAL_DIFF` ή την `diff.external`.
103
+
Οι *`GIT_DIFF_PATH_COUNTER`* και *`GIT_DIFF_PATH_TOTAL`* είναι χρήσιμες μέσα από το πρόγραμμα που καθορίζεται, από την `GIT_EXTERNAL_DIFF` ή την `diff.external`.
108
104
Η πρώτη αντιπροσωπεύει ποιο αρχείο είναι η αναφορά σε μια ακολουθία αρχείων diff (ξεκινώντας από το 1), και το τελευταίο είναι ο συνολικός αριθμός αρχείων της παρτίδας.
109
105
110
106
H *`GIT_MERGE_VERBOSITY`* ελέγχει την έξοδο για τη στρατηγική αναδρομικής συγχώνευσης.
@@ -121,11 +117,12 @@ H *`GIT_MERGE_VERBOSITY`* ελέγχει την έξοδο για τη στρα
121
117
122
118
==== Αποσφαλμάτωση
123
119
124
-
Αυτό που κάνει _πραγματικά_ το Git είναι ότι έχει μια αρκετά ολοκληρωμένη σειρά ενσωματωμένων ιχνών και το μόνο που χρειάζεται να κάνουμε είναι να τα ενεργοποιήσουμε.
120
+
Θέλουμε _πραγματικά_ να μάθουμε τι κάνεις το Git;
121
+
Το Git έχει μια αρκετά ολοκληρωμένη σειρά ενσωματωμένων ιχνών και το μόνο που χρειάζεται να κάνουμε είναι να τα ενεργοποιήσουμε.
125
122
Οι δυνατές τιμές αυτών των μεταβλητών είναι οι εξής:
126
123
127
-
*`true`, `1` ή `2` —η κατηγορία του ίχνους που γράφεται στην stderr.
128
-
* Μια απόλυτη διαδρομή που αρχίζει με `/` —η έξοδος του ίχνους θα γραφτεί σε αυτό το αρχείο.
124
+
* "`true`", "`1`", ή "`2`" —η κατηγορία του ίχνους που γράφεται στην stderr.
125
+
* Μια απόλυτη διαδρομή (path) που αρχίζει με `/` —η έξοδος του ίχνους θα γραφτεί σε αυτό το αρχείο.
129
126
130
127
H *`GIT_TRACE`* ελέγχει γενικά τα ίχνη, τα οποία δεν ταιριάζουν σε κάποια συγκεκριμένη κατηγορία.
131
128
Αυτό περιλαμβάνει την επέκταση των ψευδώνυμων (aliases) και την ανάθεση σε άλλα υποπρογράμματα.
H *`GIT_TRACE_PERFORMANCE`* ελέγχει την καταγραφή δεδομένων απόδοσης.
175
-
Η έξοδος δείχνει πόση ώρα παίρνη η κάθε κλήση σε εντολή του git.
172
+
Η έξοδος δείχνει πόση ώρα παίρνει η κάθε κλήση σε εντολή του `git`.
176
173
177
174
[source,console]
178
175
----
@@ -211,16 +208,18 @@ nothing to commit, working directory clean
211
208
==== Διάφορα
212
209
213
210
H *`GIT_SSH`*, εφόσον ορίζεται, είναι ένα πρόγραμμα που καλείται αντί του `ssh` όταν το Git προσπαθεί να συνδεθεί με έναν κεντρικό υπολογιστή SSH.
214
-
Καλείται ως `$GIT_SSH [username @] host [-p <θύρα>] <εντολή>`.
215
-
Ας σημειωθεί ότι αυτός δεν είναι ο ευκολότερος τρόπος για να εξατομικεύσουμε τον τρόπο με τον οποίο καλείται η `ssh`· δεν υποστηρίζει επιπλέον παραμέτρους γραμμής εντολών, οπότε θα πρέπει να γράψουμε ένα wrapper script και να ορίσουμε την `GIT_SSH` να δείχνει σε αυτό.
216
-
Είναι μάλλον ευκολότερο να χρησιμοποιήσουμε το αρχείο `~/.ssh/config` για αυτό.
211
+
Καλείται ως `$GIT_SSH [username@]host [-p <port>] <command>`.
212
+
Ας σημειωθεί ότι αυτός δεν είναι ο ευκολότερος τρόπος για να εξατομικεύσουμε τον τρόπο με τον οποίο καλείται η `ssh`· δεν θα υποστηρίζει επιπλέον παραμέτρους γραμμής εντολών.
213
+
Για να μπορέσουμε να έχουμε επιπλέον παραμέτρους γραμμής εντολών, μπορούμε να χρησιμοποιήσουμε την *`GIT_SSH_COMMAND`*, να γράψουμε ένα wrapper script και να ορίσουμε την `GIT_SSH` να δείχνει σε αυτό ή να χρησιμοποιήσουμε το αρχείο `~/.ssh/config`.
214
+
215
+
*`GIT_SSH_COMMAND`* ορίζει την εντολή SSH που χρησιμοποιείται όταν το Git προσπαθεί να συνδεθεί σε έναν SSH διακομιστή.
216
+
Η εντολή μεταγλωρίζεται από το κέλυφος, και επιπλεόν παράμετροι γραμμής εντολών μπορούν να χρησιμοποιηθούν με `ssh`, δηλαδή κάτι σαν `GIT_SSH_COMMAND="ssh -i ~/.ssh/my_key" git clone [email protected]:my/repo`.
217
217
218
218
H *`GIT_ASKPASS`* παρακάμπτει την τιμή διαμόρφωσης `core.askpass`.
219
-
Αυτό είναι το πρόγραμμα που καλείται κάθε φορά που το Git χρειάζεται να ζητήσει διαπιστευτήρια από τον χρήστη, και παίρνει ένα κείμενο για προτροπή ως όρισμα γραμμής εντολών και επιστρέφει την απάντηση στη `stdout`.
220
-
(Περισσότερα σχετικά με αυτό το υποσύστημα στην ενότητα <<ch07-git-tools#r_credential_caching>>.)
219
+
Αυτό είναι το πρόγραμμα που καλείται κάθε φορά που το Git χρειάζεται να ζητήσει διαπιστευτήρια από τον χρήστη, και παίρνει ένα κείμενο για προτροπή ως όρισμα γραμμής εντολών και επιστρέφει την απάντηση στη `stdout` (βλ. <<ch07-git-tools#r_credential_caching>> για περισσότερα σχετικά με αυτό το υποσύστημα).
221
220
222
221
H *`GIT_NAMESPACE`* ελέγχει την πρόσβαση στις αναφορές του ονοματοχώρου και είναι ισοδύναμη με τη σημαία `--namespace`.
223
-
Αυτό είναι χρήσιμο κυρίως από την πλευρά του διακομιστή, όπου μπορεί να θέλουμε να αποθηκεύσουμε πολλαπλές αποσχίσεις ενός αποθετηρίου σε ένα αποθετήριο, διατηρώντας μόνο τα ref ξεχωριστά.
222
+
Αυτό είναι χρήσιμο κυρίως από την πλευρά του διακομιστή, όπου μπορεί να θέλουμε να αποθηκεύσουμε πολλαπλές αποσχίσεις (forks) ενός αποθετηρίου σε ένα αποθετήριο, διατηρώντας μόνο τα refs ξεχωριστά.
224
223
225
224
H *`GIT_FLUSH`* μπορεί να χρησιμοποιηθεί για να αναγκάσει το Git να χρησιμοποιήσει I/O χωρίς βαθμίδες απομόνωσης (buffers) όταν γράφει σταδιακά στη stdout.
226
225
Η τιμή 1 προκαλεί την εκκαθάριση του Git συχνότερα, η τιμή 0 προκαλεί την προσωρινή τοποθέτηση όλων των εξόδων στη βαθμίδα απομόνωσης.
@@ -231,8 +230,8 @@ H *`GIT_REFLOG_ACTION`* μας επιτρέπει να καθορίσουμε τ
0 commit comments