SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff...
Transcript of SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff...
![Page 1: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/1.jpg)
Software(technik)praktikum: Vorlesung 3: Versionsmanagement1
Versionsmanagement
![Page 2: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/2.jpg)
Software(technik)praktikum: Vorlesung 3: Versionsmanagement
Versionsmanagement Motivation
Ausgangslage ■ Softwareentwicklung ist Teamarbeit
■ Viel (indirekte) Kommunikation nötig ■ Entwicklungswissen muss dokumentiert werden
■ Software besteht aus vielen Dokumenten ■ Lastenheft ■ Pflichtenheft ■ Analyse- und Designdokument ■ Programmcode ■ Dokumentation ■ Handbuch
2
![Page 3: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/3.jpg)
Software(technik)praktikum: Vorlesung 3: Versionsmanagement
Versionsmanagement Motivation
Konsequenz ■ Verschiedene Personen greifen (gleichzeitig) auf Dokumente zu ■ Oft bearbeiten verschiedene Personen gleichzeitig (unabhängig voneinander) das selbe
Dokument
3
![Page 4: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/4.jpg)
Software(technik)praktikum: Vorlesung 3: Versionsmanagement
Versionsmanagement Motivation
Typische Probleme / Fragen ■ Versionsmanagement
■ Wo ist die aktuelle Version? ■ Was ist die zuletzt lauffähige Version? ■ Wo ist Implementierungsversion vom 01. April 2016?
■ Und welche Dokumente beziehen sich auf diese Version? ■ Welche Version wurde dem Kunden „Bodden“ präsentiert?
■ Änderungsmanagement ■ Was hat sich seit letzter Woche geändert? ■ Wer hat diese Änderung gemacht? ■ Warum wurde diese Änderung gemacht?
4
![Page 5: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/5.jpg)
Software(technik)praktikum: Vorlesung 3: Versionsmanagement
Versionsmanagement Motivation
■ Einfache Lösungen ■ Austausch der Dokumente via
USB-Stick / Festplatte ■ Austausch der Dokumente via
Mail ■ Netzwerkfestplatte
■ Konventionen und Regeln werden im Team definiert
5
![Page 6: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/6.jpg)
Software(technik)praktikum: Vorlesung 3: Versionsmanagement
Versionsmanagement Motivation
■ Einfache „Lösungen“ erzeugen neue Probleme ■ Konventionen und Regeln werden nicht eingehalten ■ Koordination ist aufwendig und führt zu Verzögerungen ■ Varianten und Konfigurationen werden von Hand verwaltet ■ Versions- und Änderungsfragen nicht bzw. nur schwer beantwortbar ■ Geistige Kapazität wird mit „Kleinkram“ verschwendet
■ Fazit: ■ Konventionen müssen technisch erzwungen werden!
6
![Page 7: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/7.jpg)
Software(technik)praktikum: Vorlesung 3: Versionsmanagement
Versionsmanagement Motivation
■ Sinnvolle Lösung ■ Versions- und Konfigurationsmanagementsysteme ■ Lösen (bei vernünftiger Anwendung) alle genannten Probleme (fast) ohne
Zusatzaufwand ■ Bieten sogar Zusatzleistungen (z.B. einfache Datensicherung)
7
![Page 8: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/8.jpg)
Software(technik)praktikum: Vorlesung 3: Versionsmanagement
Versionsmanagement Konzepte
8
Versions-verwaltungs-
system
Dokumente in hierarchischer Struktur
Zugriff und Modifikation von Dokumenten
Koordination der Zugriffe und Modifikationen, insbes. Wahrung der Konsistenz
Nutzer Nutzer
Repository
![Page 9: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/9.jpg)
Software(technik)praktikum: Vorlesung 3: Versionsmanagement
Konsistenzmechanismen
■ Optimistische Mechanismen
■ System erlaubt gleichzeitiges Bearbeiten des Dokuments durch verschiedene Personen
■ System erkennt und integriert die Änderungen (Merging) ■ Evtl. funktioniert das nicht automatisch; dann muss der Konflikt manuell
beseitigt werden
■ Pessimistische Mechanismen
■ System verbietet gleichzeitiges Bearbeiten des Dokuments durch verschiedene Personen (Sperrprotokolle)
■ Beide Mechanismen haben Vor- und Nachteile ■ Sperren serialisiert die Arbeit ■ Mergen kann in seltenen Fällen komplex werden und zu Fehlern führen
9
![Page 10: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/10.jpg)
Zentrale Versionierung (z.B. CVS, SVN)
10
Repository
![Page 11: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/11.jpg)
Zentrale Versionierung - Problem: Konflikte
11
Repository
![Page 12: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/12.jpg)
Zentrale Versionierung - Problem: keine Offline-Nutzung möglich
12
Repository
![Page 13: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/13.jpg)
Dezentrale Versionierung (z.B. Git, Mercurial, …)
13
Haupt-Repository
![Page 14: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/14.jpg)
Vorteil: Kann auch offline Dateien versionieren
14
Außerdem vereinfachen solcheSysteme das Mergen,indem sie Branch- und Merge-Commits explizit merken
![Page 15: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/15.jpg)
In diesem Kurs verwenden wir Git
15
■ Schritt 1: Git repository einrichten ■ Beispielsweise über Web-Frontend wie https://git.cs.upb.de/
■ Schritt 2: Lokale Kopie des Remote-repositories “Klonen”:
git clone <repo-URL> [lokales Verzeichnis]
■ Alternative: Repository direkt lokal anlegen:
git init
![Page 16: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/16.jpg)
Dateien neu Versionieren
16
■ 1. Schritt: Dateien dem Repository hinzufügen
git add <Dateipfade>
■ Dateien landen dann in der sogenannten “Staging Area” ■ Die “Staging Area” (oder Index) hält alle Änderungen, Hinzufügungen und Löschungen von
Dateien, die Teil des nächsten Commits werden sollen
■ 2. Schritt: gestagte Änderungen committen
git ci
■ Dies fügt die Änderungen dem lokalen Repository zu
![Page 17: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/17.jpg)
17
RepoWorking Directory
Add
Index
Commit
Pull
Local Repo
FetchMerge / Checkout
Push
![Page 18: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/18.jpg)
Git verwaltet Versionen des kompletten Repositories mittels Commits, Branches und Tags
18
git add
git rm
git add auch Änderungen muss man stagen!
SStaging Area
![Page 19: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/19.jpg)
Git verwaltet Versionen des kompletten Repositories mittels Commits, Branches und Tags
19
AErste Version
git commit
SStaging Area
![Page 20: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/20.jpg)
Git verwaltet Versionen des kompletten Repositories mittels Commits, Branches und Tags
20
A
master
Initiales Setup:
Branch “master”, ist aktuell auf dieser Version
![Page 21: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/21.jpg)
Git verwaltet Versionen des kompletten Repositories mittels Commits, Branches und Tags
21
A
master
Initiales Setup:
und “master” ist der aktuell ausgecheckte Branch
![Page 22: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/22.jpg)
Branching
22
A
master
develop git branch develop
![Page 23: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/23.jpg)
Branch auschecken
23
A
master
develop git checkout develop
![Page 24: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/24.jpg)
Neuer Commit “B”
24
Bgit commit
A
master
develop
![Page 25: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/25.jpg)
Neuer Commit “B”
25
Bgit commit
A
master
develop
setzt aktuellen Branch automatisch weiter
![Page 26: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/26.jpg)
Tagging
26
BA
master
develop
superversion
git tag superversion
![Page 27: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/27.jpg)
Neuer Commit “C”
27
Bgit commit
A
master
develop
C
superversion
![Page 28: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/28.jpg)
Arbeiten mit Branches
28
B
git checkout -b myFeature
A
master
develop
C
kurz für:git branch myFeature git checkout myFeature
myFeatureein “topic Branch”
![Page 29: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/29.jpg)
Arbeiten mit Branches - Neuer Commit “D”
29
BA
masterdevelop
C
myFeature
D
![Page 30: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/30.jpg)
Arbeiten mit Branches
30
BA
masterdevelop
C
myFeature
D
git checkout develop
![Page 31: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/31.jpg)
Fast-Forward Merge
31
BA
masterdevelop
C
myFeature
D
git merge myFeature
![Page 32: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/32.jpg)
Komplexerer Merge
32
myOtherFeature
myFeature
BSituation vor dem Merge
CA
![Page 33: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/33.jpg)
Komplexerer Merge
33
myOtherFeature
myFeature
Bgit merge myOtherFeature
CA D
![Page 34: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/34.jpg)
Komplexerer Merge
34
myOtherFeature
myFeature
BKann zu Konflikten führen! In dem Fall wird “D” nur gestaged und nicht committed. Entwickler muss dann händischmergen und committen. C
A D
![Page 35: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/35.jpg)
Änderungen an Repository senden
35
BA
masterorigin/develop
C
develop
D
ein remote-Branch
![Page 36: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/36.jpg)
Änderungen an Repository senden
36
BA
masterorigin/develop
C
develop
D
git push develop
![Page 37: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/37.jpg)
Änderungen an Repository senden
37
BA
masterorigin/develop
C
develop
D
Wie weiß git, dass “develop” zu origin/develop gepusht werden muss? “develop” is ein “tracking branch”für origin/develop
tracking
![Page 38: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/38.jpg)
Kann nur konfliktfrei pushen!
38
BA
masterorigin/develop
C
develop
D
“git push” funktioniert hier nicht
![Page 39: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/39.jpg)
Änderungen empfangen
39
BA
master
C
develop
![Page 40: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/40.jpg)
Änderungen empfangen
40
BA
master
origin/develop
C
develop
D git fetch origin
![Page 41: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/41.jpg)
Änderungen empfangen
41
BA
master
origin/develop
C
develop
D merge origin/develop
Kurzversion: git pullentspricht: git fetch origin; git merge origin/develop
![Page 42: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/42.jpg)
Weitere hilfreiche Kommandos
42
■ Aktuelle Änderungen zwischenspeichern und Working Copy resetten:
git stashHilfreich z.B. wenn man vergessen hat, Änderungen von remote zu “pullen”. Ein “pull” könnte lokale Änderungen überschreiben, mit “git stash” werden diese Änderungen aber zunächst sicher beiseite gelegt.
■ Änderungen vom “Stash” in Working Copy zurückspielen:
git stash pop
■ Änderungen in der Working Copy zurücksetzen (z.B. nach einem “Fehlversuch”)
git reset --hardSetzt alle Änderungen in der Working Copy auf den letzten Commit zurück. Andere Varianten des Befehls (z.B. soft) sind ebenfalls verfügbar.
■ Username und Emailadresse als Metadaten für Commits setzen:
git config user.name <name>git config user.email <e-mail>
![Page 43: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/43.jpg)
SSH-Schlüssel
43
■ Github, Bitbucket, andere Hoster und auch GitLab (git.cs.upb.de) unterstützen den Zugriff per HTTPS und SSH
■ SSH bietet den Vorteil, dass man sich ohne die Eingabe eines Passworts mit dem Server verbinden kann ■ die Authentifizierung geschieht in diesem Fall mittels eines geheimen Schlüssels, der
auf dem Client-PC gespeichert wird ■ Nachteil: stiehlt ein Trojaner den Schlüssel, hat der Angreifer Zugriff auf das Repository
■ Schlüsselpaar (private und public key) generieren (Länge 4096 bytes):
ssh-keygen –b 4096■ Öffentlicher Schlüssel liegt dann unter:
~/.ssh/id_rsa.pub■ Privater Schlüssel (geheim halten!) liegt unter:
~/.ssh/id_rsa■ Den öffentlichen Schlüssel kann man mit einem Texteditor einsehen und dann beim Hosting-
Dienst in das entsprechende Formular pasten.
![Page 44: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/44.jpg)
Beispiel: SSH-Schlüssel in GitLab eintragen
44
Tipp: Man kann einen Schlüssel für mehrere Dienste verwenden,allerdings mit dem üblichen Nachteil, falls der Schlüssel kompromittiert wird.
![Page 45: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/45.jpg)
Git-Flow Konventionen
45
■ Git-Flow ist eine Konvention zur Nutzung von Branches in einer sinnvollen Art und Weise ■ Erstmals dokumentiert durch Vincent Driessen
http://nvie.com/posts/a-successful-git-branching-model/
■ Mindestens fünf Arten von Branches: ■ master: enthält stets die zuletzt releaste Version ■ develop: enthält aktuelle Entwicklungsversion ■ feature/topic branches: zur Entwicklung individueller Features ■ hotfix branches: zur Implementierung dringender Bugfixes ■ release branches: zum Vorbereiten eines Releases
![Page 46: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/46.jpg)
Feature branches oder Topic branches
46
■ Herkunft:
■ develop
■ Wird gemerged in:
■ develop
■ Namenskonvention:
■ irgend etwas außer master, develop, release-*, hotfix-*
■ Topic-branch erzeugen mittels:
git checkout developgit checkout -b myTopic
■ Topic-branch mergen:
git checkout developgit merge —no-ff myTopicgit branch -d myTopic # branch löschengit push origin develop # push to remote
![Page 47: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/47.jpg)
-no-ff Flag umgeht fast-forward merge
47
Historie geht verloren!
![Page 48: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/48.jpg)
Release branches
48
■ Herkunft: ■ develop
■ Wird gemerged in: ■ develop und master
■ Namenskonvention: ■ release-*
■ Idee: release-Branch wird gestartet, wenn Software quasi fertig ist für Release ■ Auf dem release-Branch werden dann beispielsweise Versionsnummern in Artefakten usw.
gesetzt, die auf develop-Branch nichts zu suchen haben ■ Beispiel:
git checkout -b release-1.2 develop./bump-version.sh 1.2 # eigenes Skriptgit commit -a -m "Bumped version number to 1.2"
![Page 49: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/49.jpg)
Release branches (2)
49
■ Herkunft: ■ develop
■ Wird gemerged in: ■ develop und master
■ Namenskonvention: ■ release-*
■ Abschließen des release-Branches:
git checkout mastergit merge --no-ff release-1.2 git tag -a 1.2
■ Software ist nun releast. Nun ggf. noch Änderungen nach develop zurückspielen:
git checkout develop git merge --no-ff release-1.2
![Page 50: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/50.jpg)
Hotfix branches
50
■ Herkunft: ■ master
■ Wird gemerged in: ■ develop und master
■ Namenskonvention: ■ hotfix-*
■ Idee: Hotfix wird sofort in master eingespielt, aber zusätzlich in develop eingepflegt
![Page 51: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/51.jpg)
51
http://nvie.com/posts/a-successful-git-branching-model/
![Page 52: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/52.jpg)
Git-Flow-Unterstützung
52
■ Für die Kommandozeile:https://github.com/nvie/gitflow/wiki/Installation
■ Durch GUI… ■ Empfehlung: SourceTree
https://www.sourcetreeapp.com/
![Page 53: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/53.jpg)
53
![Page 54: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/54.jpg)
54
![Page 55: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/55.jpg)
55
![Page 56: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/56.jpg)
EGit
56
■ EGit integriert Git-Unterstützung in Eclipse
■ http://www.eclipse.org/egit/
![Page 57: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/57.jpg)
Ein Repository für alles nutzen?
57
■ Wir empfehlen in der Tat, sämtlichen Code und andere Artefakte in einem einzigen Repository zu versionieren. Warum? ■ Man kann einfacher identifizieren, wann Fehler eingeführt wurden?
■ Beispielsweise operieren Befehle wie git bisect stets auf einem einzigen Repository. Dieser Befehl erlaubt automatisches Delta-Debugging, also das Auffinden des für eine Regression verantwortlichen Commits, mittels Binärsuche.
■ Die Nachverfolgung der Historie eines gegebenen Features wird stark vereinfacht.
■ Man kann Dokumente wie Dokumentationen, (automatisch erstellte?) Testprotokolle usw. direkt zur passenden Code-Version ablegen
■ Das gesamte Management der Versionierung wird vereinfacht und kostet weniger Zeit und Aufwand.
![Page 58: SWTPRA VL3 Versionsmanagement - hni.uni … · system Dokumente in hierarchischer Struktur Zugriff und Modifikation von Dokumenten Koordination der Zugriffe ... master develop C kurz](https://reader031.fdocuments.net/reader031/viewer/2022022614/5b9f46a509d3f26e288c9552/html5/thumbnails/58.jpg)
Zusammenfassung
■ Es gibt Systeme zur Zentralen und Dezentralen Versionierung ■ Die Dezentrale Versionierung ist etwas komplexer, bietet jedoch viele Vorteile
■ Git unterstützt die dezentrale Versionierung
■ Git-Flow gibt hilfreiche Konventionen zum Management von Branches ■ Werkzeuge wie SourceTree unterstützen diese durch Automatisierung
■ Nähere Informationen zum Nachlesen: Pro Git Ebookhttps://git-scm.com/book/en/v2
58
Weiter geht’s morgen 18:00 s.t. (!!!)