Versionierung mit GIT
Transcript of Versionierung mit GIT
GEDOPLAN Expertenkreis JavaMärz 2015
Versionierung mit Git
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
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
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
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
Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Dezentrales Versionskontrollsystem
Arbeitsverzeichnis
Test.pdf Hallo.java
Entwickler A
Rep
osi
tory
Fetch/Push
Checkout/ Commit
Arbeitsverzeichnis
Test.pdf Hallo.java
Entwickler BR
epo
sito
ry
Checkout/Commit
Repository
Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Repository Strategien
Zentral Normalerweise in Unternehmen
ZentralesRepository
Entwickler Entwickler Entwickler
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
Integrationsmanager
Entwicklerprivat
Entwicklerprivat
Entwicklerprivat
BlessedRepository
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
BlessedRepository
Entwickleröffentlich
Entwickleröffentlich
Entwickleröffentlich
Diktator
Leutnant Leutnant
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
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
Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Noch mehr zu Git
Staging area zum Zusammenstellen von Änderungen, die committedwerden 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
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
Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Der Weg vom/zum remote Repository
ArbeitsverzeichnisLokales
RepositoryZentrales
Repository
Push
Pull
FetchMerge / Rebase
Commit
Clone
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
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
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
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 Commitsverschieben (Rebase), Branches umbenennen
Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
Tools
SourceTree Git Gui / Gitk Github Client TortoiseGit EGit / JGit GitX (L)
Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
SourceTree
Von Atlassian Kostenlos unter http://www.sourcetreeapp.com/ Nutzt natives Git
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
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/
Versionierung mit Git GEDOPLAN Expertenkreis Java - 26. März 2015
TortoiseGit
Nutzt natives Git Angelehnt an TortoiseSVN Kostenlos, siehe
https://tortoisegit.org/
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
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/
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 Rechteverwaltunghttp://gitolite.com/
Attlasian bietet kostenpflichtig "Stash" an:https://www.atlassian.com/software/stash
klare Empfehlung eines Vortragsteilnehmers: GitLab – weitere Infos unter https://gitlab.com/
ITSD Consulting GmbHBlankensteinstraße 6232257 Bünde
Telefon: +49 - 5223 - 793 34 00Telefax: +49 - 5223 - 793 34 32Web: www.itsd-consulting.deE-Mail: [email protected]
Ihr Ansprechpartner
Carsten Frewert