Upload
sven-s-porst
View
171
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Vorstellung von git in der Großen Entwicklerrunde der SUB Göttingen am 29.3.2011.
Citation preview
Verteilte Versionsverwaltungssysteme
Sven-S. Porst • [email protected]
Wir lieben Versionsverwaltung
• Dokumentation:
• Commits: Was? Wann? Wer?
• Commit Messages: Warum?
• Referenzierbarkeit
• Blame
• Branching
• für einzelne: gut – für Kooperationen: notwendig
Versionsverwaltungssysteme
• Dateien & Ordner
• 1990er: CVS
• 2000er: SVN
• 2010er: verteilte Versionsverwaltungssysteme
• bzr (Bazaar) – 2007, Launchpad [Ubuntu, MySQL, GNU]
• git – 2005, github [Linux-Kernel, Android, Rails]
• hg (Mercurial) – 2005, bitbucket [Mozilla, NetBeans, Java…]
Probleme zentraler Versionsverwaltungssysteme
• ohne Kontakt zum Repository geht nichts:
• kein checkout
• kein commit
• keine neuen Branches
• speziell bei SVN:
• den Baum locken ist meist unpraktisch oder wird vergessen
• beim Mergen fluchen dann alle
Der verteilte Ansatz
• keine Abhängigkeit von zentralem Server:
• jeder hat seine eigene Version des Repositories
• Commits können zwischen Versionen des Repositories ausgetauscht werden
• keine fortlaufenden Revisionsnummern möglich
• Fokus auf Änderungen statt Dateien
git
• Arbeitsablauf:
• Repository einrichten: init
• Repositoryzustand laden: checkout
• Coden
• Ergebnisse zusammenstellen »stagen«: add
• Commiten: commit
• Repositoryzustand senden: push
git
• Versionen:
• Commit-IDs sind Hashes aus Commit-Inhalt und Metadaten
➡ keine Manipulation möglich
➡ Versionsfolge nicht aus den IDs ersichtlich
• Die Metadaten enthalten die ID der Vorgängerversion(en)
Beispiel: Clonen (init + remote + fetch + checkout)
ssp% git clone https://github.com/laullon/gitx.gitCloning into gitx...remote: Counting objects: 8404, done.remote: Compressing objects: 100% (3000/3000), done.remote: Total 8404 (delta 5598), reused 7768 (delta 5142)Receiving objects: 100% (8404/8404), 8.90 MiB | 594 KiB/s, done.Resolving deltas: 100% (5598/5598), done.
Beispiel: Änderungen committen
• Code Bearbeiten
• Code Committen, auch ohne Kontakt zum Server
% git add .% git commit -m "Commit Message"[master 67c5136] Commit Message 1 files changed, 700 insertions(+), 826 deletions(-)
• Wenn gewünscht, Code Bereitstellen mit git push … (benötigt Kontakt zum Server)
git Tools: git gui
git Tools: gitk
git Tools: github.com
git Tools: GitX auf dem Mac
Zusammenfassung
• Verteilte Versionsverwaltungssysteme bieten:
• einfacheres dezentrales Arbeiten (Büro, Home, Laptop)
• Funktionalität auch ohne Verbindung zum Server
• Branchen und Mergen als natürliche Handlung
• Mehr Freiheiten und weniger Schmerz bei der Entwicklung
➡ Mehr Experimentierfreude
Propaganda
• Download & Dokumentation: http://git-scm.com/
• gut lesbare Anleitungen: http://progit.org
• Torvalds Talk bei Google: Googlen nach »Torvalds git«
• erstaunlich gut: die man-Pages (mit Bindestrich: z.B. man git-pull)
• Ausprobieren!