Verteilte Versionskontrolle mit Git
-
Upload
jan-dittberner -
Category
Technology
-
view
2.312 -
download
0
description
Transcript of Verteilte Versionskontrolle mit Git
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]