2. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Agenda
Vorstellung
Grober Überblick über Git
Vor- und Nachteile
Migration
Best Practices
Überblick IDE-Plugins und GUI-Clients
3. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
ITSD Consulting GmbH
IT Systemhaus aus OWL
Standorte in Minden und Bünde
ca. 20 IT-Experten
bundesweit tätig
Schwerpunkte:
Softwareentwicklung mit Java
Beratung im Bereich Enterprise-Technologien
Umsetzung von IT-Projekten im
Unternehmensumfeld
4. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Was ist Git?
System zur Verwaltung von Versionsständen von Dateien
Im Unterschied zu CVS oder Subversion (SVN) ein verteiltes,
dezentrales System
es ist kein zentraler Server nötig
jeder Benutzer arbeitet mit einem kompletten Klon
eines remote Repositories
entwickelt zur Verwaltung des Quellcodes des Linux-Kernels
2005 wurde Bitkeeper kostenpflichtig
Linus Torvalds entwickelt daher Git
Parallel Entwicklung von Mercurial von anderen Entwicklern
Seit 2008: Github beschleunigt als Hoster für OpenSource-Projekte
die Verbreitung
5. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Zentrales Versionskontrollsystem
Arbeitsverzeichnis
Test.pdf
Hallo.java
Entwickler A
Arbeitsverzeichnis
Test.pdf
Hallo.java
Entwickler B
Repository
6. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Dezentrales Versionskontrollsystem
Arbeitsverzeichnis
Test.pdf
Hallo.java
Entwickler A
Repository
Fetch/Push
Checkout/
Commit
Arbeitsverzeichnis
Test.pdf
Hallo.java
Entwickler B Repository
Checkout/
Commit
Repository
7. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Repository Strategien
Zentral
Normalerweise in Unternehmen
Zentrales
Repository
Entwickler Entwickler Entwickler
8. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Repository Strategien
Integrationsmanager
Wird oft von Open Source Projekten genutzt (z.B. bei GitHub)
Verwendung von Pull Requests
Entwickler
öffentlich
Entwickler
öffentlich
Entwickler
öffentlich
Integrations
manager
Entwickler
privat
Entwickler
privat
Entwickler
privat
Blessed
Repository
9. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Repository Strategien
Diktator und Leutnant
z.B. beim Linux-Kernel verwendet
Verwendung von Pull-Requests
Blessed
Repository
Entwickler
öffentlich
Entwickler
öffentlich
Entwickler
öffentlich
Diktator
Leutnant Leutnant
10. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Weiteres zu Git
Es werden Snapshots des gesamten Projekts versioniert
Pro Commit werden nur Dateien gespeichert, die sich tatsächlich
geändert haben
Commits kann man sich als Knoten eines Graphen vorstellen, die auf
ihre Vorgänger zeigen
Daten werden komprimiert
Manipulationen fallen sofort auf, da die Commit ID ein Hash-Wert
basierend auf Metainformationen, Inhalt und Eltern-Commits ist
automatische Konvertierung von Zeilenenden
Branches werden zum zentralen Konzept
11. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Workflow mit Branches "Gitflow"
Git ermöglicht verschiedene Workflows
Dieser Workflow hat sich durchgesetzt
Veröffentlicht von Vincent Driessen
Es ist keine Erweiterung für Git - Alles ist mit Bordmitteln umsetzbar
master
hotfix
release
development
feature
12. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Noch mehr zu Git
Staging area zum Zusammenstellen von Änderungen, die committed
werden sollen
"commit" Befehl schreibt nur in lokales Repository
analog liest "checkout" nur aus dem lokalen Repository
Zum Übermitteln der Änderungen an ein remote Repository ist ein
weiterer Befehl nötig: "push"
Zum Aktualisieren des lokalen Repositories dient "fetch"
"pull" ist ein "fetch" mit anschließendem Merge der Änderungen in
den lokalen Workspace
13. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Daten in das (lokale) Repository schreiben
Arbeitsverzeichnis Staging Area Git Repository
Dateien in die Staging Area
hinzufügen
Commit erzeugen
Stand auschecken
git commitgit add
git checkout
Dateien zur Staging Area hinzufügen und Commit erzeugen
git commit -a
14. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Der Weg vom/zum remote Repository
Arbeitsverzeichnis
Lokales
Repository
Zentrales
Repository
Push
Pull
FetchMerge / Rebase
Commit
Clone
15. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Vorteile
Geschwindigkeit von fast allen Operationen
Einfaches und sicheres Mergen
Einfaches und schnelles Branching
Branches/Tags erzeugen im Ggs. zu SVN keine Kopien
lokale Branches zum Wechsel zwischen Aufgaben
Gute Erkennung von umbenannten oder verschobenen Dateien
Dezentrales Arbeiten
Einbindung von Code-Review möglich
Flexibilität
16. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Nachteile
Binäre Dateien (jeweils alle Versionen im lokalen Repository)
Speicherplatzverbrauch
Dauer des Klonvorgangs
SHA1-Hash nicht gut als Versions- oder Build-Nummer geeignet
(im Gegensatz zur Revisions-Nummer bei SVN)
Flexibilität erkauft mit Komplexität
Git betrachtet nur Dateien, leere Verzeichnisse werden ignoriert
Berechtigungen nur für das gesamte Repository
17. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Migration von SVN/CVS
Unterstützung durch Skripte
Nutzung von SVN als "remote Repository" möglich
Wichtig:
Migration gründlich planen
vorhandene Daten analysieren
Anpassung bzw. Erstellung eines Workflows
Richtige Einteilung der Repositories
Bei langer Historie evtl. Kürzung der Historie
18. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Best Practices
Beim Einstieg nicht sofort alle Möglichkeiten nutzen
aussagekräftige Commit Kommentare schreiben
Änderungen thematisch in Commits zusammenfassen
Im Team auf einen Workflow einigen
Änderungen aus Basis eines Branches häufig in den Branch übernehmen
Keine Angst vor Rebase ("Umhängen" von Commits an einen anderen
Eltern-Commit)
Nie bereits per "push" veröffentlichte Historie ändern, etwa Commits
verschieben (Rebase), Branches umbenennen
20. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
SourceTree
Von Atlassian
Kostenlos unter http://www.sourcetreeapp.com/
Nutzt natives Git
21. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Git Gui/Gitk
Ist in der MsysGit Installation enthalten
Git Gui vollwertiges Programm zur Arbeit mit einem Git Repository
Gitk stellt Log dar
Kann über Kommandozeile aufgerufen werden
Probleme mit Übersetzungen
Deutsche Sprachdatei entfernen für englische Sprache
Kostenlos
22. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Github Client
Eigenes natives Git
Funktioniert auch mit eigenen Repositories
Kostenlos unter https://windows.github.com/
23. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
TortoiseGit
Nutzt natives Git
Angelehnt an TortoiseSVN
Kostenlos, siehe
https://tortoisegit.org/
24. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Egit/JGit
JGit ist eine Java Implementierung von Git
EGit als Eclipse Plugin
JGit auch verwendet von Netbeans und IntelliJ IDEA
Kostenlos
25. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
GitX (L)
grafischer Git Client für MacOS X
Kostenlos
Download unter http://gitx.laullon.com/
26. Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Die Serverseite
Nutzung über Netzwerk-Shares ohne Server möglich
einfacher Server in Git enthalten
gitolite ist ein kostenloser Server mit Rechteverwaltung
http://gitolite.com/
Attlasian bietet kostenpflichtig "Stash" an:
https://www.atlassian.com/software/stash
klare Empfehlung eines Vortragsteilnehmers:
GitLab – weitere Infos unter https://gitlab.com/