Skip to content

Commit 56bf584

Browse files
committed
Merge branch 'master' into chapter-8-3
2 parents 0649682 + cbfa478 commit 56bf584

File tree

4 files changed

+61
-46
lines changed

4 files changed

+61
-46
lines changed

TRANSLATION_NOTES_DE.asc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ Projektbetreuer
122122
betreuen
123123
|to merge|
124124
mergen; er/sie mergt; wir mergen; Vorzugsweise die englische Version nutzen, alternativ kann auch die deutsche Übersetzung "zusammenführen oder verschmelzen" verwendet werden.
125+
|packfile|
126+
packfile; Vorzugsweise die englische Version nutzen, alternativ kann auch die deutsche Übersetzung "Paketdatei" verwendet werden.
125127
|Patch|
126128
Änderung oder auch Patch
127129
|Porcelain commands|

book/09-git-and-other-scms/sections/import-svn.asc

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
(((Subversion)))
44
(((Importing, from Subversion)))
55
Wenn Sie den vorherigen Abschnitt über die Verwendung von `git svn` gelesen haben, können Sie die Anweisungen zu `git svn clone` leicht dazu benutzen, um ein Repository zu klonen. Beenden Sie dann die Verwendung des Subversion-Servers, pushen Sie zu einem neuen Git-Server und starten Sie dessen Nutzung.
6-
Der Verlauf kann in diesem Fall schnellstens aus dem Subversion-Server gezogen werden (was einige Zeit in Anspruch nehmen kann).
6+
Der Verlauf kann in diesem Fall aus dem Subversion-Server gezogen werden (was einige Zeit in Anspruch nehmen kann - abhängig von der Geschwindigkeit, mit der Ihr SVN-Server die Historie ausliefern kann).
77

88
Allerdings ist der Import nicht perfekt. Da er aber so lange dauert, können Sie ihn genauso gut auch richtig machen.
9-
Das erste Problem ist die Autoreninformation.
9+
Das erste Problem sind die Autoreninformationen.
1010
In Subversion hat jede Person, die einen Commit durchführt, auch einen Benutzer-Account auf dem System, der in den Commit-Informationen erfasst wird.
1111
Die Beispiele im vorherigen Abschnitt zeigen an einigen Stellen `schacon`, wie z.B. der `blame` Output und das `git svn log`.
1212
Wenn Sie diese auf bessere Git-Autorendaten abbilden möchten, benötigen Sie eine Zuordnung der Subversion-Benutzer zu den Git-Autoren.
@@ -27,11 +27,24 @@ $ svn log --xml --quiet | grep author | sort -u | \
2727
----
2828

2929
Das erzeugt die Protokollausgabe im XML-Format, behält nur die Zeilen mit Autoreninformationen, verwirft Duplikate und entfernt die XML-Tags.
30-
(Natürlich funktioniert das nur auf einem Computer, auf dem `grep`, `sort` und `perl` installiert sind.)
30+
Natürlich funktioniert das nur auf einem Computer, auf dem `grep`, `sort` und `perl` installiert sind.
3131
Leiten Sie diese Ausgabe dann in Ihre `users.txt` Datei um, damit Sie die entsprechenden Git-Benutzerdaten neben jedem Eintrag hinzufügen können.
3232

33+
[NOTE]
34+
====
35+
Wenn Sie dies auf einem Windows-Computer versuchen, treten an dieser Stelle Probleme auf. Microsoft hat unter https://docs.microsoft.com/en-us/azure/devops/repos/git/perform-migration-from-svn-to-git einige gute Ratschläge und Beispiele bereitgestellt.
36+
====
37+
3338
Sie können diese Datei an `git svn` übergeben, um die Autorendaten genauer abzubilden.
34-
Außerdem können Sie `git svn` anweisen, die Metadaten, die Subversion normalerweise importiert, nicht zu berücksichtigen. Dazu übergeben Sie `--no-metadata` an den `clone` oder `init` Befehl. Wenn Sie die Metadaten der Synchronisation aber behalten möchten, lassen Sie diesen Parameter einfach weg.
39+
Außerdem können Sie `git svn` anweisen, die Metadaten, die Subversion normalerweise importiert, nicht zu berücksichtigen. Dazu übergeben Sie `--no-metadata` an den `clone` oder `init` Befehl.
40+
Die Metadaten enthalten eine `git-svn-id` in jeder Commit-Nachricht, die Git während des Imports generiert.
41+
Dies kann Ihr Git-Log aufblähen und es möglicherweise etwas unübersichtlich machen.
42+
43+
[NOTE]
44+
Sie müssen die Metadaten beibehalten, wenn Sie im Git-Repository vorgenommene Commits wieder in das ursprüngliche SVN-Repository spiegeln möchten.
45+
46+
Wenn Sie die Synchronisierung nicht in Ihrem Commit-Protokoll möchten, können Sie den Parameter `--no-metadata` weglassen.
47+
3548
Dadurch sieht Ihr `import` Befehl so aus:
3649

3750
[source,console]
@@ -56,7 +69,7 @@ Date: Sun May 3 00:12:22 2009 +0000
5669
be05-5f7a86268029
5770
----
5871

59-
sehen sie jetzt so aus:
72+
sehen diese jetzt so aus:
6073

6174
[source]
6275
----
@@ -80,7 +93,7 @@ Damit die Tags zu richtigen Git-Tags werden, starten Sie:
8093
$ for t in $(git for-each-ref --format='%(refname:short)' refs/remotes/tags); do git tag ${t/tags\//} $t && git branch -D -r $t; done
8194
----
8295

83-
Dabei werden die Referenzen, die Remote-Branches waren und mit `refs/remotes/tags/` begonnen haben, genommen und zu richtigen (leichten) Tags gemacht.
96+
Dabei werden die Referenzen, die Remote-Branches waren und mit `refs/remotes/tags/` begonnen haben zu richtigen (leichten) Tags gemacht.
8497

8598
Als nächstes verschieben Sie den Rest der Referenzen unter `refs/remotes` in lokale Branches:
8699

@@ -91,8 +104,8 @@ $ for b in $(git for-each-ref --format='%(refname:short)' refs/remotes); do git
91104

92105
Es kann vorkommen, dass Sie einige zusätzliche Branches sehen, die durch `@xxx` ergänzt sind (wobei xxx eine Zahl ist), während Sie in Subversion nur einen Branch sehen.
93106
Es handelt sich hierbei um eine Subversion-Funktion mit der Bezeichnung „peg-revisions“, für die Git einfach kein syntaktisches Gegenstück hat.
94-
Daher fügt `git svn` einfach die svn-Versionsnummer zum Branch-Namen hinzu, genau so, wie Sie es in svn geschrieben hätten, um die peg-Revision dieses Branchs anzusprechen.
95-
Wenn Sie sich nicht mehr um die peg-Revisionen sorgen wollen, entfernen Sie sie einfach:
107+
Daher fügt `git svn` einfach die SVN-Versionsnummer zum Branch-Namen hinzu, genau so, wie Sie es in SVN geschrieben hätten, um die peg-Revision dieses Branchs anzusprechen.
108+
Wenn Sie sich nicht mehr um die peg-Revisionen sorgen wollen, entfernen Sie diese einfach:
96109

97110
[source,console]
98111
----

book/10-git-internals/sections/packfiles.asc

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
=== Packfiles
1+
=== Packdateien (engl. Packfiles)
22

3-
If you followed all of the instructions in the example from the previous section, you should now have a test Git repository with 11 objects -- four blobs, three trees, three commits, and one tag:
3+
Wenn Sie alle Anweisungen im Beispiel aus dem vorherigen Abschnitt befolgt haben, sollten Sie jetzt ein Test-Git-Repository mit 11 Objekten haben - vier Blobs, drei Bäumen, drei Commits und einem Tag:
44

55
[source,console]
66
----
@@ -18,9 +18,9 @@ $ find .git/objects -type f
1818
.git/objects/fd/f4fc3344e67ab068f836878b6c4951e3b15f3d # commit 1
1919
----
2020

21-
Git compresses the contents of these files with zlib, and you're not storing much, so all these files collectively take up only 925 bytes.
22-
Now you'll add some more sizable content to the repository to demonstrate an interesting feature of Git.
23-
To demonstrate, we'll add the `repo.rb` file from the Grit library -- this is about a 22K source code file:
21+
Git komprimiert den Inhalt dieser Dateien mit zlib. Alle diese Dateien zusammen belegen nur 925 Byte.
22+
Jetzt fügen Sie dem Repository einige größere Inhalte hinzu, um eine interessante Funktion von Git zu demonstrieren.
23+
Zur Veranschaulichung fügen wir die Datei `repo.rb` aus der Grit-Bibliothek hinzu. Hierbei handelt es sich um eine 22-KB-Quellcodedatei:
2424

2525
[source,console]
2626
----
@@ -35,7 +35,7 @@ $ git commit -m 'added repo.rb'
3535
rewrite test.txt (100%)
3636
----
3737

38-
If you look at the resulting tree, you can see the SHA-1 value that was calculated for your new `repo.rb` blob object:
38+
Wenn Sie sich den resultierenden Baum ansehen, sehen Sie den SHA-1-Wert, der für Ihr neues repo.rb-Blob-Objekt berechnet wurde:
3939

4040
[source,console]
4141
----
@@ -45,15 +45,15 @@ $ git cat-file -p master^{tree}
4545
100644 blob e3f094f522629ae358806b17daf78246c27c007b test.txt
4646
----
4747

48-
You can then use `git cat-file` to see how large that object is:
48+
Sie können dann `git cat-file` verwenden, um zu sehen, wie groß das Objekt ist:
4949

5050
[source,console]
5151
----
5252
$ git cat-file -s 033b4468fa6b2a9547a70d88d1bbe8bf3f9ed0d5
5353
22044
5454
----
5555

56-
At this point, modify that file a little, and see what happens:
56+
Ändern Sie nun diese Datei ein wenig und sehen Sie, was passiert:
5757

5858
[source,console]
5959
----
@@ -63,7 +63,7 @@ $ git commit -am 'modified repo.rb a bit'
6363
1 file changed, 1 insertion(+)
6464
----
6565

66-
Check the tree created by that last commit, and you see something interesting:
66+
Überprüfen Sie den von diesem letzten Commit erstellten Baum. Dabei werden Sie etwas Interessantes sehen:
6767

6868
[source,console]
6969
----
@@ -73,22 +73,22 @@ $ git cat-file -p master^{tree}
7373
100644 blob e3f094f522629ae358806b17daf78246c27c007b test.txt
7474
----
7575

76-
The blob is now a different blob, which means that although you added only a single line to the end of a 400-line file, Git stored that new content as a completely new object:
76+
Der Blob ist jetzt ein anderer Blob. Das bedeutet, dass Git, obwohl Sie nur eine einzelne Zeile am Ende einer Datei mit 400 Zeilen hinzugefügt haben, diesen neuen Inhalt als ein komplett neues Objekt gespeichert hat:
7777

7878
[source,console]
7979
----
8080
$ git cat-file -s b042a60ef7dff760008df33cee372b945b6e884e
8181
22054
8282
----
8383

84-
You have two nearly identical 22K objects on your disk (each compressed to approximately 7K).
85-
Wouldn't it be nice if Git could store one of them in full but then the second object only as the delta between it and the first?
84+
Sie haben jetzt zwei nahezu identische 22-KB-Objekte auf Ihrer Festplatte (jedes auf ca. 7 KB komprimiert).
85+
Wäre es nicht schön, wenn Git eines davon vollständig speichern könnte, aber dann das zweite Objekt nur als Delta zwischen dem ersten und dem anderen?
8686

87-
It turns out that it can.
88-
The initial format in which Git saves objects on disk is called a ``loose'' object format.
89-
However, occasionally Git packs up several of these objects into a single binary file called a ``packfile'' in order to save space and be more efficient.
90-
Git does this if you have too many loose objects around, if you run the `git gc` command manually, or if you push to a remote server.
91-
To see what happens, you can manually ask Git to pack up the objects by calling the `git gc` command:
87+
Wie sich herausstellen wird, geht das.
88+
Das ursprüngliche Format, in dem Git Objekte auf der Festplatte speichert, wird als „loses“ Objektformat bezeichnet.
89+
Allerdings packt Git gelegentlich mehrere dieser Objekte in eine einzige Binärdatei namens „packfile“, um Platz zu sparen und effizienter zu sein.
90+
Git tut dies, wenn Sie zu viele lose Objekte haben, wenn Sie den Befehl `git gc` manuell ausführen oder wenn Sie einen Push an einen Remote-Server senden.
91+
Um zu sehen, was passiert, können Sie Git manuell auffordern, die Objekte zu packen, indem Sie den Befehl `git gc` aufrufen:
9292

9393
[source,console]
9494
----
@@ -100,7 +100,7 @@ Writing objects: 100% (18/18), done.
100100
Total 18 (delta 3), reused 0 (delta 0)
101101
----
102102

103-
If you look in your `objects` directory, you'll find that most of your objects are gone, and a new pair of files has appeared:
103+
Wenn Sie in Ihr `objects`-Verzeichnis schauen, werden Sie feststellen, dass die meisten Ihrer Objekte verschwunden sind und ein paar neue Dateien auftauchen:
104104

105105
[source,console]
106106
----
@@ -112,19 +112,19 @@ $ find .git/objects -type f
112112
.git/objects/pack/pack-978e03944f5c581011e6998cd0e9e30000905586.pack
113113
----
114114

115-
The objects that remain are the blobs that aren't pointed to by any commit -- in this case, the ``what is up, doc?'' example and the ``test content'' example blobs you created earlier.
116-
Because you never added them to any commits, they're considered dangling and aren't packed up in your new packfile.
115+
Die verbleibenden Objekte sind die Blobs, auf die von keinem Commit referenziert werden. In diesem Fall die Blobs „what is up, doc?“ Und „test content“, die Sie zuvor erstellt haben.
116+
Da Sie sie nie zu Commits hinzugefügt haben, gelten sie als unreferenziert und sind nicht in Ihrem neuen Packfile gepackt.
117117

118-
The other files are your new packfile and an index.
119-
The packfile is a single file containing the contents of all the objects that were removed from your filesystem.
120-
The index is a file that contains offsets into that packfile so you can quickly seek to a specific object.
121-
What is cool is that although the objects on disk before you ran the `gc` command were collectively about 15K in size, the new packfile is only 7K.
122-
You've cut your disk usage by half by packing your objects.
118+
Die anderen Dateien sind Ihr neues packfile und ein Index.
119+
Das packfile ist eine einzelne Datei, die den Inhalt aller Objekte enthält, die aus Ihrem Dateisystem entfernt wurden.
120+
Der Index ist eine Datei, die Offsets in diesem packfile enthält, sodass Sie schnell nach einem bestimmten Objekt suchen können.
121+
Ein weiterer Vorteil ist, dass, obwohl die Objekte auf der Festplatte vor dem Ausführen des Befehls `gc` insgesamt etwa 15 KB groß waren, die neue Paketdatei nur 7 KB groß ist.
122+
Sie haben die Festplattennutzung halbiert, indem Sie Ihre Objekte gepackt haben.
123123

124-
How does Git do this?
125-
When Git packs objects, it looks for files that are named and sized similarly, and stores just the deltas from one version of the file to the next.
126-
You can look into the packfile and see what Git did to save space.
127-
The `git verify-pack` plumbing command allows you to see what was packed up:
124+
Wie macht Git das?
125+
Wenn Git Objekte packt, sucht es nach Dateien mit ähnlichen Namen und Größen und speichert nur die Deltas von einer Version der Datei zur nächsten.
126+
Sie können im packfile schauen und sehen, was Git getan hat, um Platz zu sparen.
127+
Mit dem Befehl `git verify-pack` können Sie sehen, was gepackt wurde:
128128

129129
[source,console]
130130
----
@@ -155,9 +155,9 @@ chain length = 1: 3 objects
155155
.git/objects/pack/pack-978e03944f5c581011e6998cd0e9e30000905586.pack: ok
156156
----
157157

158-
Here, the `033b4` blob, which if you remember was the first version of your `repo.rb` file, is referencing the `b042a` blob, which was the second version of the file.
159-
The third column in the output is the size of the object in the pack, so you can see that `b042a` takes up 22K of the file, but that `033b4` only takes up 9 bytes.
160-
What is also interesting is that the second version of the file is the one that is stored intact, whereas the original version is stored as a delta -- this is because you're most likely to need faster access to the most recent version of the file.
158+
Hier verweist der `033b4`-Blob, der, wenn Sie sich erinnern, die erste Version Ihrer `repo.rb`-Datei war, auf den `b042a`-Blob, der die zweite Version der Datei war.
159+
Die dritte Spalte in der Ausgabe ist die Größe des Objekts im Paket. Sie können also sehen, dass `b042a` 22 KB der Datei belegt, `033b4` jedoch nur 9 Byte.
160+
Interessant ist auch, dass die zweite Version der Datei als Ganzes gespeichert wird, während die Originalversion als Delta gespeichert wird. Dies liegt daran, dass Sie mit größter Wahrscheinlichkeit einen schnelleren Zugriff auf die neueste Version der Datei benötigen.
161161

162-
The really nice thing about this is that it can be repacked at any time.
163-
Git will occasionally repack your database automatically, always trying to save more space, but you can also manually repack at any time by running `git gc` by hand.
162+
Das Schöne daran ist, dass es jederzeit umgepackt werden kann.
163+
Git packt Ihre Datenbank gelegentlich automatisch neu und versucht dabei immer, mehr Speicherplatz zu sparen. Sie können das Packen jedoch auch jederzeit manuell durchführen, indem Sie `git gc` manuell ausführen.

status.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,10 @@
100100
"1-git-internals.asc": 100,
101101
"sections/environment.asc": 0,
102102
"sections/maintenance.asc": 0,
103-
"sections/objects.asc": 0,
104-
"sections/packfiles.asc": 0,
105-
"sections/plumbing-porcelain.asc": 0,
106-
"sections/refs.asc": 0,
103+
"sections/objects.asc": 100,
104+
"sections/packfiles.asc": 100,
105+
"sections/plumbing-porcelain.asc": 100,
106+
"sections/refs.asc": 100,
107107
"sections/refspec.asc": 0,
108108
"sections/transfer-protocols.asc": 0
109109
},

0 commit comments

Comments
 (0)