Skip to content

Commit d03e14b

Browse files
authored
Chapter05 de (#8)
* Translated book/05-distributed-git/sections/distributed-workflows.asc to german
1 parent d5135ee commit d03e14b

1 file changed

Lines changed: 60 additions & 32 deletions

File tree

Lines changed: 60 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,91 @@
1-
=== Verteilte Workflows
1+
=== Verteilter Arbeitsablauf
22

33
(((workflows)))
4-
Im Gegensatz zu CVCSs (Centralized Version Control Systems - Zentrale Versionsverwaltungs Systeme) können Sie dank der verteilten Struktur von Git die Zusammenarbeit von Entwicklern in Projekten wesentlich flexibler gestalten. In zentralisierten Systemen ist jeder Entwickler ein Knoten, der mehr oder weniger gleichermaßen mit einem zentralen System arbeitet.
5-
In Git ist jedoch jeder Entwickler möglicherweise sowohl ein Knoten als auch ein zentrales System. Das heißt, jeder Entwickler kann sowohl Code für andere Repositorys bereitstellen als auch ein öffentliches Repository verwalten, auf dem andere ihre Arbeit aufbauen und zu dem sie beitragen können. Dies bietet eine Vielzahl von Workflow Möglichkeiten für Ihr Projekt und/oder Ihrem Team, sodass wir einige gängige Paradigmen behandeln, welche die Vorteile dieser Flexibilität nutzen. Wir werden die Stärken und möglichen Schwächen der einzelnen Designs untersuchen. Sie können ein einzelnes Design auswählen oder Eigenschaften aus diesen kombinieren.
4+
Im Gegensatz zu CVCSs (Centralized Version Control Systems - Zentrale Versionsverwaltungs Systeme) können Sie dank der verteilten Struktur von Git die Zusammenarbeit von Entwicklern in Projekten wesentlich flexibler gestalten.
5+
In zentralisierten Systemen ist jeder Entwickler ein gleichwertiger Netzknoten, der mehr oder weniger gleichermaßen mit einem zentralen System arbeitet.
6+
In Git ist jedoch jeder Entwickler potentiell beides - sowohl Netzknoten als auch zentrales System. Das heißt, jeder Entwickler kann sowohl Code für andere Repositorys bereitstellen als auch ein öffentliches Repository verwalten, auf dem andere ihre Arbeit aufbauen und zu dem sie beitragen können.
7+
Dies bietet eine Fülle von möglichen Arbeitsabläufen (engl. Workflows) für Ihr Projekt und/oder Ihrem Team, sodass wir einige gängige Paradigmen behandeln, welche die Vorteile dieser Flexibilität nutzen.
8+
Wir werden die Stärken und möglichen Schwächen der einzelnen Entwürfe eingehen. Sie können einen einzelnen davon auswählen, um ihn zu nutzen, oder Sie können die Funktionalitäten von allen miteinander kombinieren.
69

7-
==== Zentralisierter Workflow
10+
==== Zentralisierter Arbeitsablauf
811

912
(((workflows, centralized)))
10-
In zentralisierten Systemen gibt es im Allgemeinen ein einziges Kollaborationsmodell - den zentralisierten Workflow. Ein zentraler Hub oder _Repository_ kann Code akzeptieren und jeder synchronisiert seine Arbeit mit ihm. Eine Reihe von Entwicklern sind Knoten - Nutzer dieses Hubs - und synchronisieren ihre Arbeit mit diesem zentralisierten Standort.
13+
In zentralisierten Systemen gibt es im Allgemeinen ein einziges Modell für die Zusammenarbeit - den zentralisierten Arbeitsablauf.
14+
Ein zentraler Hub oder _Repository_ kann Quelltext akzeptieren und alle Beteiligten synchronisieren ihre Arbeit damit.
15+
Eine Reihe von Entwicklern sind Netznoten - Nutzer dieses Hubs - und synchronisieren ihre Arbeit mit diesem einen, zentralen Punkt.
1116

12-
.Zentralisierter Workflow.
13-
image::images/centralized_workflow.png[Zentralisierter Workflow.]
17+
.Zentralisierter Arbeitsablauf.
18+
image::images/centralized_workflow.png[Zentralisierter Arbeitsablauf.]
1419

15-
Dies bedeutet, wenn zwei Entwickler vom Hub klonen und beide Änderungen vornehmen, der erste Entwickler, der die Änderungen zurückgespielt hat, dies problemlos tun kann. Der zweite Entwickler muss die Arbeit des ersten Entwicklers zusammenführen (mergen), bevor seine Änderungen aufgenommen werden können, damit die Änderungen des ersten Entwicklers nicht überschrieben werden. Dieses Konzept ist in Git genauso wahr wie in Subversion(((Subversion))) (oder ein anderes beliebiges CVCS), und dieses Modell funktioniert in Git wunderbar.
20+
Dies bedeutet, wenn zwei Entwickler ein Repository vom Hub klonen und beide Änderungen vornehmen, der erste Entwickler, der die Änderungen zurückgespielt hat, dies problemlos tun kann.
21+
Der zweite Entwickler muss jedoch die Arbeit des ersten Entwicklers bei sich einfließen lassen (mergen), bevor seine Änderungen aufgenommen werden können, damit die Änderungen des ersten Entwicklers nicht überschrieben werden.
22+
Dieses Konzept ist in Git genauso wahr wie in Subversion(((Subversion))) (oder ein anderes beliebiges CVCS), und dieses Konzept funktioniert in Git wunderbar.
1623

17-
Wenn Sie bereits mit einem zentralisierten Workflow in Ihrem Unternehmen oder Team vertraut sind, können Sie diesen Workflow problemlos mit Git weiterverwenden. Richten Sie einfach ein einziges Repository ein und gewähren Sie allen Mitgliedern Ihres Teams Schreib-Zugriff (push). Git lässt nicht zu, dass Benutzer sich gegenseitig überschreiben.
24+
Wenn Sie bereits mit einem zentralisierten Arbeitsablauf in Ihrem Unternehmen oder Team vertraut sind, können Sie diesen Ablauf problemlos mit Git weiterverwenden.
25+
Richten Sie einfach ein einziges Repository ein und gewähren Sie allen Mitgliedern Ihres Teams Schreib-Zugriff (push). Git lässt nicht zu, dass Benutzer sich gegenseitig überschreiben.
1826

19-
Sagen wir, John und Jessica fangen beide zur gleichen Zeit an zu arbeiten. John beendet seine Änderung und pusht sie zum Server. Dann versucht Jessica, ihre Änderungen zu pushen, aber der Server lehnt sie ab. Ihr wird gesagt, dass sie versucht, Änderungen 'non-fast-forward' zu pushen, und dass sie dies erst tun kann, wenn sie sie bestehende Änderungen abgeholt (gefetched) und mit ihrer lokalen Kopie vereint (gemergt) hat. Dieser Workflow ist für viele Menschen sehr ansprechend, weil er ein Paradigma ist, mit dem viele bereits bekannt und vertraut sind.
27+
Sagen wir, John und Jessica fangen beide zur gleichen Zeit mit ihrer Arbeit an.
28+
John beendet seine Änderung und lädt diese zum Server hoch.
29+
Dann versucht Jessica, ihre Änderungen hochzuladen, aber der Server lehnt sie ab.
30+
Ihr wird gesagt, dass sie versucht, Änderungen „non-fast-forward“ zu pushen, und dass sie dies erst tun kann, wenn sie sie bestehende Änderungen abgeholt und mit ihrer lokalen Kopie zusammengeführt hat.
31+
Dieser Workflow ist für viele Menschen sehr ansprechend, weil er ein bewährtes Modell ist, mit dem viele bereits bekannt und vertraut sind.
2032

21-
Diese Vorgehensweise ist nicht auf kleine Teams beschränkt. Mit dem Branching Model von Git ist es Hunderten von Entwicklern möglich, ein einzelnes Projekt über Dutzende von Branches gleichzeitig erfolgreich zu bearbeiten.
33+
Diese Vorgehensweise ist nicht auf kleine Teams beschränkt.
34+
Mit dem Verzweigungs-Modell (Branching-Modell) von Git ist es Hunderten von Entwicklern möglich, ein einzelnes Projekt über Dutzende von Branches gleichzeitig erfolgreich zu bearbeiten.
2235

2336
[[_integration_manager]]
24-
==== Integration-Manager Workflow
37+
==== Arbeitsablauf mit Integrationsmanager
2538

2639
(((workflows, integration manager)))
2740

28-
Da Sie in Git über mehrere Remote-Repositorys verfügen können, ist ein Workflow möglich, bei dem jeder Entwickler Schreibzugriff auf sein eigenes, öffentliches Repository und Lesezugriff auf die Repositorys aller anderen Entwickler hat. Dieses Szenario enthält häufig ein anerkanntes Repository, das das "offizielle" Projekt darstellt. Um zu diesem Projekt beizutragen, erstellen Sie Ihren eigenen öffentlichen Klon des Projekts und pushen Ihre Änderungen darauf. Anschließend können Sie eine Anforderung an den Betreuer des Hauptprojekts senden, um Ihre Änderungen zu übernehmen (Pull Request). Der Betreuer kann dann Ihr Repository als Remote hinzufügen, Ihre Änderungen lokal testen, sie in ihrem Branch mergen und in ihr Repository zurück pushen.
41+
Da Sie in Git über mehrere Remote-Repositorys verfügen können, ist ein Workflow möglich, bei dem jeder Entwickler Schreibzugriff auf sein eigenes, öffentliches Repository und Lesezugriff auf die Repositorys aller anderen Entwickler hat.
42+
Dieses Szenario enthält häufig ein zentrales Repository, das das „offizielle“ Projekt darstellt.
43+
Um zu diesem Projekt beizutragen, erstellen Sie Ihren eigenen öffentlichen Klon des Projekts und laden Ihre Änderungen dort hoch.
44+
Anschließend können Sie eine Anforderung an den Betreuer des Hauptprojekts senden, um Ihre Änderungen zu übernehmen (Pull Request).
45+
Der Betreuer kann dann Ihr Repository als Remote hinzufügen, Ihre Änderungen lokal testen, diese in seinem Branch einfließen und in sein öffentliches Repository hochladen.
2946
Der Prozess funktioniert wie folgt (siehe <<wfdiag_b>>):
3047

31-
1. Die Projekt Betreuer pushen zu ihrem eigenen, öffentlichen Repository.
48+
1. Die Projekt Betreuer laden Arbeit ihr eigenes, öffentlichen Repository hoch.
3249
2. Ein Mitwirkender klont dieses Repository und nimmt Änderungen vor.
33-
3. Der Mitwirkende pusht auf seine eigene öffentliche Kopie.
34-
4. Der Mitwirkende sendet dem Betreuer eine E-Mail mit der Aufforderung, Änderungen zu übernehmen (Pull Request).
35-
5. Der Betreuer fügt das Repository des Mitwirkenden als Remote hinzu und merged es lokal zusammen.
36-
6. Der Betreuer pusht die zusammengeführten Änderungen an das Hauptrepository.
50+
3. Der Mitwirkende lädt diese in sein eigenes öffentliches Repository hoch.
51+
4. Der Mitwirkende sendet dem Betreuer eine E-Mail mit der Aufforderung, die Änderungen zu übernehmen (Pull Request).
52+
5. Der Betreuer fügt das Repository des Mitwirkenden als Remote hinzu und führt die Änderungen lokal zusammen.
53+
6. Der Betreuer lädt die zusammengeführten Änderungen in das Haupt-Repository hoch.
3754

3855
[[wfdiag_b]]
39-
.Integration-Manager Workflow.
40-
image::images/integration-manager.png[Integration-Manager Workflow.]
56+
.Arbeitsablauf mit Integrationsmanager.
57+
image::images/integration-manager.png[Arbeitsablauf mit Integrationsmanager.]
4158

4259
(((forking)))
43-
Dies ist ein sehr häufiger Workflow mit Hub-basierten Tools wie GitHub oder GitLab, bei dem es einfach ist, ein Projekt zu forken und Ihre Änderungen in Ihren fork zu pushen, damit jeder sie sehen kann. Einer der Hauptvorteile dieses Ansatzes besteht darin, dass Sie weiterarbeiten können und der Verwalter des Haupt-Repositorys Ihre Änderungen jederzeit übernehmen kann. Die Mitwirkenden müssen nicht warten, bis das Projekt ihre Änderungen übernommen hat - jede Partei kann in ihrem eigenen Tempo arbeiten.
60+
Dies ist ein sehr häufiger Workflow mit Hub-basierten Tools wie GitHub oder GitLab, bei dem es einfach ist, ein Projekt zu „forken“ und Ihre Änderungen in Ihren Fork hochzuladen, damit jeder sie sehen kann.
61+
Einer der Hauptvorteile dieses Ansatzes besteht darin, dass Sie weiterarbeiten können und der Verwalter des Haupt-Repositorys Ihre Änderungen jederzeit übernehmen kann.
62+
Die Mitwirkenden müssen nicht warten, bis das Projekt ihre Änderungen übernommen hat - jede Partei kann in ihrem eigenen Tempo arbeiten.
4463

45-
==== Diktator und Leutnants Workflow
64+
==== Arbeitsablauf mit Diktator und Leutnante
4665

4766
(((workflows, dictator and lieutenants)))
48-
Dies ist eine Variante eines Workflows mit mehreren Repositorys. Er wird im Allgemeinen von großen Projekten mit Hunderten von Mitarbeitern verwendet. Ein berühmtes Beispiel ist der Linux-Kernel. Verschiedene Integrationsmanager sind für bestimmte Teile des Repositorys verantwortlich. Sie heißen _Leutnante_. Alle Leutnante haben einen Integrationsmanager, den wohlwollenden Diktator. Der wohlwollende Diktator pusht von seinem Verzeichnis in ein Referenz-Repository, aus dem alle Mitarbeiter pullen müssen. Der Prozess funktioniert wie folgt (siehe <<wfdiag_c>>):
49-
50-
1. Entwickler arbeiten regelmäßig an ihrem Topic Branch und reorganisieren (rebasen) ihre Arbeit auf `master`. Der `Master`-Branch ist der des Referenz-Repositorys, in das der Diktator pusht.
51-
2. Die Leutnants fassen die Topic Branches der Entwickler zu ihrem `Master`-Branch zusammen.
52-
3. Der Diktator merged die `Master`-Branch der Leutnants in den `Master`-Branch des Diktators zusammen.
53-
4. Schließlich pusht der Diktator diesen `Master` -Branch in das Referenz-Repository, damit die anderen Entwickler darauf rebasen können.
67+
Dies ist eine Variante eines Workflows mit vielen Repositorys.
68+
Sie wird im Allgemeinen von großen Projekten mit Hunderten von Mitarbeitern verwendet. Ein berühmtes Beispiel ist der Linux-Kernel.
69+
Verschiedene Integrationsmanager sind für bestimmte Teile des Repositorys verantwortlich. Sie heißen _Leutnante_.
70+
Alle Leutnante haben einen Integrationsmanager, der als der wohlwollende Diktator (benevolent dictator) bezeichnet wird.
71+
Der wohlwollende Diktator pusht von seinem Verzeichnis in ein Referenz-Repository, aus dem alle Beteiligten ihre eigenen Repositorys aktualisieren müssen.
72+
Dieser Prozess funktioniert wie folgt (siehe <<wfdiag_c>>):
73+
74+
1. Entwickler arbeiten regelmäßig an ihrem Themen Branch und reorganisieren (rebasen) ihre Arbeit auf `master`.
75+
Der `master`-Branch ist der des Referenz-Repositorys, in das der Diktator pusht.
76+
2. Die Leutnante fassen die Themen Branches der Entwickler mit ihrem `master`-Branch zusammen.
77+
3. Der Diktator führt die `master`-Branches der Leutnante in den `master`-Branch des Diktators zusammen.
78+
4. Schließlich pusht der Diktator diesen `master` -Branch in das Referenz-Repository, damit die anderen Entwickler darauf einen Rebase durchführen können.
5479

5580
[[wfdiag_c]]
56-
.Wohlwollender Diktator Workflow.
57-
image::images/benevolent-dictator.png[Wohlwollender Diktator Workflow.]
81+
.Arbeitsablauf mit wohlwollendem Diktator.
82+
image::images/benevolent-dictator.png[Arbeitsablauf mit wohlwollendem Diktator.]
5883

59-
Diese Art von Workflow ist nicht üblich, kann jedoch in sehr großen Projekten oder in sehr hierarchischen Umgebungen hilfreich sein. Es ermöglicht dem Projektleiter (dem Diktator), einen Großteil der Arbeit zu delegieren und große Teilmengen von Code an mehreren Stellen zu sammeln, bevor sie integriert werden.
84+
Diese Art von Arbeitsablauf ist nicht weit verbreitet, kann jedoch in sehr großen Projekten oder in sehr hierarchischen Umgebungen hilfreich sein.
85+
Dies ermöglicht dem Projektleiter (dem Diktator), einen Großteil der Arbeit zu delegieren und große Teilbereiche von Quelltext an mehreren Stellen zu sammeln, bevor diese integriert werden.
6086

6187
==== Zusammenfassung
6288

63-
Dies sind einige häufig verwendete Workflows, die mit einem verteilten System wie Git möglich sind. Allerdings sind auch viele Variationen möglich, um Ihren eigenen Arbeitsabläufen gerecht zu werden. Nachdem Sie (hoffentlich) bestimmen können, welche Workflow-Kombination für Sie geeignet ist, werden wir einige spezifischere Beispiele für die Ausführung der Hauptfunktionen behandeln, aus denen die verschiedenen Abläufe bestehen. Im nächsten Abschnitt erfahren Sie mehr über einige gängige Muster, um zu einem Projekt etwas beizutragen.
89+
Dies sind einige häufig verwendete Workflows, die mit einem verteilten System wie Git möglich sind. Allerdings sind auch viele Variationen möglich, um Ihren eigenen Arbeitsabläufen gerecht zu werden.
90+
Jetzt, da Sie (hoffentlich) bestimmen können, welche Kombination von Arbeitsabläufen bei Ihnen funktionieren würde, werden wir einige spezifischere Beispiele davon betrachten, wie man die Hauptaufgaben durchführen kann, welche die unterschiedliche Abläufe ausmachen.
91+
Im nächsten Abschnitt erfahren Sie etwas über gängige Formen der Mitarbeit an einem Projekt.

0 commit comments

Comments
 (0)