Ein Vortrag zum Thema verteilte Versionskontrolle mit Git. Der Vortrag geht auf die Historie von Versionskontrollsystemen ein, stellt Vorteile von Git dar und bietet einige Beispiele und viele Links zu Git-Themen.
3. Verteilte Versionsverwaltung
mit git
als Ergänzung oder Ersatz für klassische Systeme wie Subversion
Jan Dittberner <jan.dittberner@communardo.de>
29.09.2009
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 2
5. Historie - lokale Versionkontrolle
Verteilte
Versionsverwaltung s Verzeichniskopien
Historie
Vorteile
Nachteile
s RCS, SCCS
Git
s Microsoft VSS (über Fileshares netzfähig)
Git praktisch
Diskussion/Fragen
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 4
6. Historie - zentrale Systeme
Verteilte
Versionsverwaltung s CVS (basiert auf RCS)
Historie
Vorteile
Nachteile s Subversion (SVN)
Git
s diverse andere (Perforce, CM-Synergy)
Git praktisch
Diskussion/Fragen
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 5
7. Historie - dezentrale Systeme
Verteilte
Versionsverwaltung s BitKeeper
Historie
Vorteile
Nachteile
s Mercurial (hg)
Git
s Bazaar (bzr)
Git praktisch
Diskussion/Fragen s Git
s Darcs
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 6
8. Vorteile dezentraler SCM-Systeme
Verteilte
Versionsverwaltung s komplette lokale Historie
Historie
Vorteile
Nachteile
s Möglichkeit zur Offline-Arbeit
Git
s sehr schnell (Diff, Log, etc.)
Git praktisch
Diskussion/Fragen s verschiedene Workflows möglich
s lokale Tests (z.B. für Featurebranches) beeinflussen
andere Entwickler nicht
s durch hohe Geschwindigkeit häufig kleinere Commits
(bessere Nachvollziehbarkeit von Änderungen)
s robustere Merging-Mechanismen
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 7
9. Nachteile dezentraler SCM-Systeme
Verteilte
Versionsverwaltung s keine zentrale Kontrolle
Historie
Vorteile
Nachteile
s Umgang muss erlernt werden (Nachteil?)
Git
Git praktisch
Diskussion/Fragen
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 8
11. Herkunft und Verbreitung
Verteilte
Versionsverwaltung s Ursprünglich von Linus Torvalds für die Entwicklung des
Git Linux-Kernels als Ersatz für das kommerzielle Bitkeeper
Herkunft und
Verbreitung entwickelt.
Warum Git?
Verfügbarkeit
Toolunterstützung
s Einsatz inzwischen in vielen kleineren und auch extrem
Git praktisch großen Projekten: Linux Kernel, Wine, Perl, GNOME,
Diskussion/Fragen Qt, Ruby on Rails, Android, Fedora, Debian, X.org, VLC
s wird inzwischen von einigen OpenSource-Hostern
angeboten. SourceForge [3] und Github [4] sind die
bekanntesten.
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 10
12. Warum Git?
Verteilte
Versionsverwaltung
s Umfangreiche Projektseite [1] und Dokumentation [2].
Git
Herkunft und s vollständige Dokumentation aller Unterbefehle
Verbreitung
Warum Git? Ø ÐÔ ×Ù ÓÑÑ Ò
Verfügbarkeit
Toolunterstützung
Git praktisch s leichtgewichtige lokale Branches
Diskussion/Fragen
s sehr schnell
s sehr kompakte lokale Repositories (teilweise kleiner als
SVN-Checkout einer einzelnen Version)
s erlaubt lokales Staging von Änderungen
s unterstützt praktisch beliebige Workflows
s siehe auch ØØÔ »» ºÛ Ý Ø × ØØ ÖØ Òܺ ÓÑ»
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 11
13. Verfügbarkeit
Verteilte
Versionsverwaltung
Verfügbarkeit:
Git
Herkunft und s Download von der Git Projektseite [1]
Verbreitung
Warum Git?
Verfügbarkeit
s Debian
Toolunterstützung
ÔØ ØÙ Ò×Ø ÐÐ Ø ¹ ÓÖ
Git praktisch
Diskussion/Fragen
s Windows
x Cygwin ØØÔ »»ÛÛÛº Ý Û Òº ÓÑ»
x msysGit ØØÔ »» Ó º ÓÓ Ð º ÓѻԻÑ×Ý× Ø»
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 12
14. Toolunterstützung
Verteilte
Versionsverwaltung
s TortoiseGit – Explorer-Erweiterung ähnlich TortoiseSVN
Git ØØÔ »» Ó º ÓÓ Ð º ÓѻԻØÓÖØÓ × Ø»
Herkunft und
Verbreitung
Warum Git?
s eGit – Eclipse Git Team Provider
Verfügbarkeit ØØÔ »» غÓÖº Þ» ØÛ » Ð Ô× ÈÐÙ Ò
Toolunterstützung
Git praktisch s ggit (Gnome), gitk (Tcl/Tk), gitx (MacOS X) als
Diskussion/Fragen Repository-Browser
s viele weitere:
ØØÔ »» غÓÖº Þ» ØÛ »ÁÒØ Ö × ÖÓÒØ Ò × Ò ÌÓÓÐ×
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 13
15. Verteilte
Versionsverwaltung
Git
Git praktisch
Start mit Git
Repositories klonen
Branches
Merge
Tags
Git praktisch
Umgang mit History
Patches
SVN-Integration
Trac-Integration
weitere
Integrationen
Referenzen
Diskussion/Fragen
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 14
16. Einrichtung, Erzeugen eines Repositories
Verteilte
Versionsverwaltung
Git für lokale Entwicklung einrichten:
Git Ø ÓÒ ¹¹ ÐÓ Ð Ù× Ö º Ò Ñ Â Ò ØØ ÖÒ Ö
Git praktisch Ø ÓÒ ¹¹ ÐÓ Ð Ù× Ö º Ñ Ð
Start mit Git Òº ØØ ÖÒ Ö ÓÑÑÙÒ Ö Ó º
Repositories klonen Ø ÓÒ ¹¹ ÐÓ Ð Ù× Ö º × Ò Ò Ý ¼Ü
Branches
Merge
Tags
Repository anlegen in einem beliebigen Verzeichnis:
Umgang mit History
Ø Ò Ø
Patches
SVN-Integration
Trac-Integration
Dateien hinzufügen und einchecken
weitere
Integrationen Ø º
Referenzen Ø ÓÑÑ Ø ¹Ñ Ñ Ò Ö×Ø Ö ÓÑÑ Ø
Diskussion/Fragen
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 15
17. Repositories klonen
Verteilte
Versionsverwaltung
Repository über SSH klonen, damit wird die Verbindung zum
Git Remote-Repository als Quelle vermerkt.
Git praktisch Ø ÐÓÒ ×× »» Ù× Ö Ó×Ø » Ö ÔÓ Ö » ÔÖÓ Øº Ø
Start mit Git
Repositories klonen Zum Klonen erlaubt git verschiedene Mechanismen: ssh,
Branches
Merge git-eigenes Protokoll, rsync, http, https, Dateipfade. Bei http
Tags
und https ist nur ein lesender Zugriff möglich
Umgang mit History
Patches Folgendes Kommando holt neue Änderungen vom
SVN-Integration
Trac-Integration
Remote-Repository in ein lokales Repository:
weitere
Integrationen
Ø ÔÙÐÐ
Referenzen
Diskussion/Fragen
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 16
18. Arbeiten mit Branches
Verteilte
Versionsverwaltung
Branches und Tags sind bei git anders als z.B. bei Subversion
Git nicht einfach Kopien eines Arbeitsstandes.
Git praktisch Branch erstellen:
Start mit Git
Repositories klonen
Ø Ö Ò Ö Ò Ò Ñ
Branches
Merge Branch erstellen und auschecken:
Tags
Umgang mit History Ø ÓÙØ ¹ Ö Ò Ò Ñ
Patches
SVN-Integration Branches auflisten:
Trac-Integration
weitere Ø Ö Ò
Integrationen
Referenzen
Diskussion/Fragen
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 17
19. Mergen von Änderungen, Aktualisierungen von
Branches
Änderungen aus einem Branch in den Hauptzweig Ñ ×Ø Ö
Verteilte
Versionsverwaltung
Git (entspricht ØÖÙÒ bei SVN) übernehmen:
Git praktisch Ø ÓÙØ Ñ ×Ø Ö
Start mit Git
Repositories klonen
Ø Ñ Ö Ö Ò
Branches
Merge Um einen Branch, der z.B. für ein Feature angelegt wurde auf
Tags den aktuellen Stand des Ñ ×Ø Ö-Branches zu bringen:
Umgang mit History
Patches Ø ÓÙØ Ö Ò
SVN-Integration
Ø Ö × Ñ ×Ø Ö
Trac-Integration
weitere
Integrationen Bei vielen lokalen Commits kann es sinnvoll sein, diese
Referenzen
zusammenzuführen. Die letzten 3 Commits können z.B. so
Diskussion/Fragen
zusammengeführt werden:
Ø Ö × ¹ À ¿
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 18
20. Tags
Verteilte
Versionsverwaltung
Ein Tag ist ein symbolischer Name für einen bestimmten
Git Zustand eines Branches, also einen Commit. Tags können
Git praktisch mit einer PGP-Signatur versehen werden.
Start mit Git Tag erstellen mit Signatur:
Repositories klonen
Branches Ø Ø ¹× Ö Ð × ½ º½
Merge
Tags
Umgang mit History
Patches
SVN-Integration
Trac-Integration
weitere
Integrationen
Referenzen
Diskussion/Fragen
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 19
21. Umgang mit History
Verteilte
Versionsverwaltung
Letzte Versionen anzeigen lassen:
Git Ø ÐÓ
Git praktisch
Start mit Git Unterschiede zum letzten commiteten Stand anzeigen
Repositories klonen lassen:
Branches
Merge Ø
Tags
Umgang mit History
Patches
Besonders gut lässt sich die Versionshistorie z.B. mit
SVN-Integration gitk/gitg/gitx visualisieren.
Trac-Integration
weitere
Integrationen
Referenzen
Diskussion/Fragen
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 20
22. Patches
Verteilte
Versionsverwaltung
s bei vielen OpenSource-Projekten werden Bugfixes in
Git Form von Patches weitergegeben und ggf. in das
Git praktisch Hauptrepository übernommen
Start mit Git
Repositories klonen s Git unterstützt dies mit den ÓÖÑ Ø¹Ô Ø und Ñ
Branches
Merge Unterkommandos
Tags
Umgang mit History
Patches Patches für die letzten 3 Änderungen erzeugen:
SVN-Integration
Trac-Integration
Ø ÓÖÑ Ø ¹ Ô Ø À ¿ºº À
weitere
Integrationen
Referenzen
Diskussion/Fragen
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 21
23. SVN-Integration
Verteilte
Versionsverwaltung
s SVN-Repositories lassen sich über das Subkommando
Git ×ÚÒ von Git nutzen1
Git praktisch
Start mit Git s Vorteile: lokale Version der kompletten Historie, offline
Repositories klonen arbeiten möglich, schnelle Diffs
Branches
Merge
Tags SVN-Repository klonen:
Umgang mit History
Patches Ø ×ÚÒ ÐÓÒ ¹× Ö ÔÓÙÖÐ Ô
SVN-Integration
Trac-Integration Updates von SVN-Repository holen:
weitere
Integrationen
Ø ×ÚÒ Ø
Referenzen
Diskussion/Fragen Änderungen ins SVN übertragen:
Ø ×ÚÒ ÓÑÑ Ø
1
funktioniert unter Windows noch eher schlecht
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 22
24. Trac-Integration
Verteilte
Versionsverwaltung s das GitPlugin [5] für Trac erlaubt Git- statt
Git SVN-Repositories
Git praktisch
Start mit Git s über pre-receive und post-receive-Hooks [6] kann ein
Repositories klonen
Branches Git-Repository mit einer Trac-Installation interagieren
Merge und z.B. Tickets schließen oder Kommentare zu diesen
Tags
Umgang mit History hinzufügen
Patches
SVN-Integration
Trac-Integration
weitere
Integrationen
Referenzen
Diskussion/Fragen
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 23
25. weitere Integrationen
Verteilte
Versionsverwaltung s Maven ØØÔ »»Ñ Ú Òº Ô ºÓÖ »× Ñ» غ ØÑÐ
Git
Git praktisch s JIRA
Start mit Git ØØÔ »» ÓÒ ÐÙ Ò º ØÐ ×× Òº ÓÑ» ×ÔÐ Ý»ÂÁÊ Ì»Â Ö
Repositories klonen
Branches
Merge s Hudson
Tags ØØÔ »»Û º Ù ×ÓÒ¹ ºÓÖ » ×ÔÐ Ý»ÀÍ ËÇÆ» Ø·ÈÐÙ Ò
Umgang mit History
Patches
SVN-Integration
Trac-Integration
weitere
Integrationen
Referenzen
Diskussion/Fragen
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 24
26. Referenzen
Verteilte
Versionsverwaltung [1] ØØÔ »»ÛÛÛº Ø¹× Ñº ÓÑ»
Git
Git praktisch [2] ØØÔ »»ÛÛÛº Ø¹× Ñº ÓÑ» Ó ÙÑ ÒØ Ø ÓÒ
Start mit Git
Repositories klonen [3] SourceForge Git Hosting
Branches
Merge
Tags [4] ØØÔ »» Ø Ù º ÓÑ»
Umgang mit History
Patches [5] ØØÔ »»ØÖ ¹ ׺ÓÖ »Û » ØÈÐÙ Ò
SVN-Integration
Trac-Integration
weitere [6] Commithooks von John Goerzen
Integrationen
Referenzen
Diskussion/Fragen
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 25
27. Verteilte
Versionsverwaltung
Vielen Dank für Eure Aufmerksamkeit.
Git Gibt es Fragen?
Git praktisch
Diskussion/Fragen
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 26
28. Kontakt
Verteilte
Versionsverwaltung
Jan Dittberner
Git
Software Architekt und Debian Developer
Git praktisch
Communardo Software GmbH
Diskussion/Fragen
Kleistraße 10a
D-01129 Dresden
jan.dittberner@communardo.de
⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de
c
Seite 27