Verteilte Versionskontrolle mit Git

2,789 views

Published on

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.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,789
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
15
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Verteilte Versionskontrolle mit Git

  1. 1. GoBack
  2. 2. Seite 1
  3. 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
  4. 4. Verteilte Versionsverwaltung Historie Vorteile Nachteile Git Git praktisch Diskussion/Fragen Verteilte Versionsverwaltung ⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de c Seite 3
  5. 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. 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. 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. 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. 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
  10. 10. Verteilte Versionsverwaltung Git Herkunft und Verbreitung Warum Git? Verfügbarkeit Toolunterstützung Git praktisch Git Diskussion/Fragen ⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de c Seite 9
  11. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×