Upload
jan-dittberner
View
2.312
Download
0
Embed Size (px)
DESCRIPTION
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.
Citation preview
GoBack
Seite 1
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Seite 2
Verteilte Versionsverwaltungmit git
als Ergänzung oder Ersatz für klassische Systeme wie Subver sion
Jan Dittberner <[email protected]>
29.09.2009
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Verteilte Versionsverwaltung
VerteilteVersionsverwaltung
Historie
Vorteile
Nachteile
Git
Git praktisch
Diskussion/Fragen
Seite 3
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Historie - lokale Versionkontrolle
VerteilteVersionsverwaltung
Historie
Vorteile
Nachteile
Git
Git praktisch
Diskussion/Fragen
Seite 4
■ Verzeichniskopien
■ RCS, SCCS
■ Microsoft VSS (über Fileshares netzfähig)
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Historie - zentrale Systeme
VerteilteVersionsverwaltung
Historie
Vorteile
Nachteile
Git
Git praktisch
Diskussion/Fragen
Seite 5
■ CVS (basiert auf RCS)
■ Subversion (SVN)
■ diverse andere (Perforce, CM-Synergy)
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Historie - dezentrale Systeme
VerteilteVersionsverwaltung
Historie
Vorteile
Nachteile
Git
Git praktisch
Diskussion/Fragen
Seite 6
■ BitKeeper
■ Mercurial (hg)
■ Bazaar (bzr)
■ Git
■ Darcs
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Vorteile dezentraler SCM-Systeme
VerteilteVersionsverwaltung
Historie
Vorteile
Nachteile
Git
Git praktisch
Diskussion/Fragen
Seite 7
■ komplette lokale Historie
■ Möglichkeit zur Offline-Arbeit
■ sehr schnell (Diff, Log, etc.)
■ verschiedene Workflows möglich
■ lokale Tests (z.B. für Featurebranches) beeinflussenandere Entwickler nicht
■ durch hohe Geschwindigkeit häufig kleinere Commits(bessere Nachvollziehbarkeit von Änderungen)
■ robustere Merging-Mechanismen
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Nachteile dezentraler SCM-Systeme
VerteilteVersionsverwaltung
Historie
Vorteile
Nachteile
Git
Git praktisch
Diskussion/Fragen
Seite 8
■ keine zentrale Kontrolle
■ Umgang muss erlernt werden (Nachteil?)
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Git
VerteilteVersionsverwaltung
GitHerkunft undVerbreitung
Warum Git?
Verfügbarkeit
Toolunterstützung
Git praktisch
Diskussion/Fragen
Seite 9
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Herkunft und Verbreitung
VerteilteVersionsverwaltung
GitHerkunft undVerbreitung
Warum Git?
Verfügbarkeit
Toolunterstützung
Git praktisch
Diskussion/Fragen
Seite 10
■ Ursprünglich von Linus Torvalds für die Entwicklung desLinux-Kernels als Ersatz für das kommerzielle Bitkeeperentwickelt.
■ Einsatz inzwischen in vielen kleineren und auch extremgroßen Projekten: Linux Kernel, Wine, Perl, GNOME,Qt, Ruby on Rails, Android, Fedora, Debian, X.org, VLC
■ wird inzwischen von einigen OpenSource-Hosternangeboten. SourceForge [3] und Github [4] sind diebekanntesten.
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Warum Git?
VerteilteVersionsverwaltung
GitHerkunft undVerbreitung
Warum Git?
Verfügbarkeit
Toolunterstützung
Git praktisch
Diskussion/Fragen
Seite 11
■ Umfangreiche Projektseite [1] und Dokumentation [2].
■ vollständige Dokumentation aller Unterbefehlegit help <subcommand >■ leichtgewichtige lokale Branches
■ sehr schnell
■ sehr kompakte lokale Repositories (teilweise kleiner alsSVN-Checkout einer einzelnen Version)
■ erlaubt lokales Staging von Änderungen
■ unterstützt praktisch beliebige Workflows
■ siehe auch http://de.whygitisbetterthanx.com/
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Verfügbarkeit
VerteilteVersionsverwaltung
GitHerkunft undVerbreitung
Warum Git?
Verfügbarkeit
Toolunterstützung
Git praktisch
Diskussion/Fragen
Seite 12
Verfügbarkeit:
■ Download von der Git Projektseite [1]
■ Debianaptitude install git -core■ Windows
◆ Cygwin http://www.cygwin.com/
◆ msysGit http://code.google.com/p/msysgit/
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Toolunterstützung
VerteilteVersionsverwaltung
GitHerkunft undVerbreitung
Warum Git?
Verfügbarkeit
Toolunterstützung
Git praktisch
Diskussion/Fragen
Seite 13
■ TortoiseGit – Explorer-Erweiterung ähnlich TortoiseSVNhttp://code.google.com/p/tortoisegit/■ eGit – Eclipse Git Team Providerhttp://git.or.cz/gitwiki/EclipsePlugin■ ggit (Gnome), gitk (Tcl/Tk), gitx (MacOS X) als
Repository-Browser
■ viele weitere:http://git.or.cz/gitwiki/InterfacesFrontendsAndTools
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Git praktisch
VerteilteVersionsverwaltung
Git
Git praktisch
Start mit Git
Repositories klonen
Branches
Merge
Tags
Umgang mit History
Patches
SVN-Integration
Trac-IntegrationweitereIntegrationen
Referenzen
Diskussion/Fragen
Seite 14
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Einrichtung, Erzeugen eines Repositories
VerteilteVersionsverwaltung
Git
Git praktisch
Start mit Git
Repositories klonen
Branches
Merge
Tags
Umgang mit History
Patches
SVN-Integration
Trac-IntegrationweitereIntegrationen
Referenzen
Diskussion/Fragen
Seite 15
Git für lokale Entwicklung einrichten:git config --global user.name "Jan Dittberner "git config --global user.email \"jan.dittberner@communardo .de"git config --global user.signingkey "0 x4f5ba649 "
Repository anlegen in einem beliebigen Verzeichnis:git init
Dateien hinzufügen und eincheckengit add .git commit -m "mein erster Commit "
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Repositories klonen
VerteilteVersionsverwaltung
Git
Git praktisch
Start mit Git
Repositories klonen
Branches
Merge
Tags
Umgang mit History
Patches
SVN-Integration
Trac-IntegrationweitereIntegrationen
Referenzen
Diskussion/Fragen
Seite 16
Repository über SSH klonen, damit wird die Verbindung zumRemote-Repository als Quelle vermerkt.git clone ssh :// user@host :/ repodir/project.gitZum Klonen erlaubt git verschiedene Mechanismen: ssh,git-eigenes Protokoll, rsync, http, https, Dateipfade. Bei httpund https ist nur ein lesender Zugriff möglichFolgendes Kommando holt neue Änderungen vomRemote-Repository in ein lokales Repository:git pull
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Arbeiten mit Branches
VerteilteVersionsverwaltung
Git
Git praktisch
Start mit Git
Repositories klonen
Branches
Merge
Tags
Umgang mit History
Patches
SVN-Integration
Trac-IntegrationweitereIntegrationen
Referenzen
Diskussion/Fragen
Seite 17
Branches und Tags sind bei git anders als z.B. bei Subversionnicht einfach Kopien eines Arbeitsstandes.Branch erstellen:git branch <branchname >Branch erstellen und auschecken:git checkout -b <branchname >Branches auflisten:git branch
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Mergen von Änderungen, Aktualisierungen vonBranches
VerteilteVersionsverwaltung
Git
Git praktisch
Start mit Git
Repositories klonen
Branches
Merge
Tags
Umgang mit History
Patches
SVN-Integration
Trac-IntegrationweitereIntegrationen
Referenzen
Diskussion/Fragen
Seite 18
Änderungen aus einem Branch in den Hauptzweig master(entspricht trunk bei SVN) übernehmen:git checkout mastergit merge <branch >
Um einen Branch, der z.B. für ein Feature angelegt wurde aufden aktuellen Stand des master-Branches zu bringen:git checkout <branch >git rebase masterBei vielen lokalen Commits kann es sinnvoll sein, diesezusammenzuführen. Die letzten 3 Commits können z.B. sozusammengeführt werden:git rebase -i HEAD ~3
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Tags
VerteilteVersionsverwaltung
Git
Git praktisch
Start mit Git
Repositories klonen
Branches
Merge
Tags
Umgang mit History
Patches
SVN-Integration
Trac-IntegrationweitereIntegrationen
Referenzen
Diskussion/Fragen
Seite 19
Ein Tag ist ein symbolischer Name für einen bestimmtenZustand eines Branches, also einen Commit. Tags könnenmit einer PGP-Signatur versehen werden.Tag erstellen mit Signatur:git tag -s release_1 .1
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Umgang mit History
VerteilteVersionsverwaltung
Git
Git praktisch
Start mit Git
Repositories klonen
Branches
Merge
Tags
Umgang mit History
Patches
SVN-Integration
Trac-IntegrationweitereIntegrationen
Referenzen
Diskussion/Fragen
Seite 20
Letzte Versionen anzeigen lassen:git log
Unterschiede zum letzten commiteten Stand anzeigenlassen:git diff
Besonders gut lässt sich die Versionshistorie z.B. mitgitk/gitg/gitx visualisieren.
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Patches
VerteilteVersionsverwaltung
Git
Git praktisch
Start mit Git
Repositories klonen
Branches
Merge
Tags
Umgang mit History
Patches
SVN-Integration
Trac-IntegrationweitereIntegrationen
Referenzen
Diskussion/Fragen
Seite 21
■ bei vielen OpenSource-Projekten werden Bugfixes inForm von Patches weitergegeben und ggf. in dasHauptrepository übernommen
■ Git unterstützt dies mit den format-patch und amUnterkommandos
Patches für die letzten 3 Änderungen erzeugen:git format -patch HEAD ~3.. HEAD
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
SVN-Integration
VerteilteVersionsverwaltung
Git
Git praktisch
Start mit Git
Repositories klonen
Branches
Merge
Tags
Umgang mit History
Patches
SVN-Integration
Trac-IntegrationweitereIntegrationen
Referenzen
Diskussion/Fragen
Seite 22
■ SVN-Repositories lassen sich über das Subkommandosvn von Git nutzen1
■ Vorteile: lokale Version der kompletten Historie, offlinearbeiten möglich, schnelle Diffs
SVN-Repository klonen:git svn clone -s <repourl > <pfad >Updates von SVN-Repository holen:git svn fetchÄnderungen ins SVN übertragen:git svn dcommit
1funktioniert unter Windows noch eher schlecht
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Trac-Integration
VerteilteVersionsverwaltung
Git
Git praktisch
Start mit Git
Repositories klonen
Branches
Merge
Tags
Umgang mit History
Patches
SVN-Integration
Trac-IntegrationweitereIntegrationen
Referenzen
Diskussion/Fragen
Seite 23
■ das GitPlugin [5] für Trac erlaubt Git- stattSVN-Repositories
■ über pre-receive und post-receive-Hooks [6] kann einGit-Repository mit einer Trac-Installation interagierenund z.B. Tickets schließen oder Kommentare zu diesenhinzufügen
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
weitere Integrationen
VerteilteVersionsverwaltung
Git
Git praktisch
Start mit Git
Repositories klonen
Branches
Merge
Tags
Umgang mit History
Patches
SVN-Integration
Trac-IntegrationweitereIntegrationen
Referenzen
Diskussion/Fragen
Seite 24
■ Maven http://maven.apache.org/scm/git.html■ JIRAhttp://confluence.atlassian.com/display/JIRAEXT/Jira+Git+Plugin
■ Hudsonhttp://wiki.hudson-ci.org/display/HUDSON/Git+Plugin
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Referenzen
VerteilteVersionsverwaltung
Git
Git praktisch
Start mit Git
Repositories klonen
Branches
Merge
Tags
Umgang mit History
Patches
SVN-Integration
Trac-IntegrationweitereIntegrationen
Referenzen
Diskussion/Fragen
Seite 25
[1] http://www.git-scm.com/
[2] http://www.git-scm.com/documentation[3] SourceForge Git Hosting
[4] http://github.com/[5] http://trac-hacks.org/wiki/GitPlugin
[6] Commithooks von John Goerzen
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
VerteilteVersionsverwaltung
Git
Git praktisch
Diskussion/Fragen
Seite 26
Vielen Dank für Eure Aufmerksamkeit.Gibt es Fragen?
c⃝ Communardo Software GmbH ⋅ Fon +49 (0) 351 833820 ⋅ [email protected] ⋅ www.communardo.de
Kontakt
VerteilteVersionsverwaltung
Git
Git praktisch
Diskussion/Fragen
Seite 27
Jan DittbernerSoftware Architekt und Debian Developer
Communardo Software GmbHKleistraße 10aD-01129 [email protected]