GoBack
Seite 1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Verteilte Versionskontrolle mit Git

  • 1.
  • 2.
  • 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.
    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.
    Historie - lokaleVersionkontrolle 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 - zentraleSysteme 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 - dezentraleSysteme 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
  • 10.
    Verteilte Versionsverwaltung Git Herkunft und Verbreitung Warum Git? Verfügbarkeit Toolunterstützung Gitpraktisch Git Diskussion/Fragen ⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ info@communardo.de ⋅ www.communardo.de c Seite 9
  • 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 mitGit 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 einesRepositories 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