Vortrag downloaden

Werbung
Torsten Flatter | inovex GmbH
"Git.NET" gibt's nicht?
Vorstellung
•
•
•
•
Torsten Flatter
inovex GmbH
.NET / C# seit 2004
VSS, CVS, SVN,
TFS, hq, git
• Enterprise-Umfeld
Agenda
•
•
•
•
Überblick
Grundlagen
Einsatzbereiche
Tools
Fragen und Antworten
• Fragen bitte gleich stellen!
• Grundsatz-Diskussionen am Ende
Überblick
DVCS: Großer
Durchbruch in den
letzten Jahren
• Git
• Mercurial
• (Bazaar)
Erfolg von DVCS
• Aus der Praxis geboren (Linux Kernel)
– „Eat your own dogfood!“
– Offline(fähig)
– schnell und effizient
• Katalysator Github
– Leichter Zugang für jeden
• Es macht einfach Spaß!
• Zahllose Anwendungsmöglichkeiten
Next
• Was bedeutet „verteilt“ eigentlich
genau?
• Welche Vorteile habe ich?
• Wie kann das ohne Server
funktionieren?
• Quellenangabe: Bilder aus progit.org
Klassisches Setup
• Historie aller Commits
auf dem Server
• Jeder Client hat genau
seine Arbeitsdaten
• Commits gehen gegen
den Server
• Wie sonst? ;-)
Verteiltes Setup (ein Client)
• Die vollständige(!)
Historie ist auf
jedem Client
• Commits gegen den
Client
• Ebenso Rollbacks,
Branches, Diffs, …
Verteiltes Setup (2 Clients)
• Volle Historie auf
allen Clients
• Jeder Client hat alle
Daten im Repo
(Verzeichnis .git)
• Clients holen sich
Updates (pull)
Verteiltes Setup (viele Clients)
• Bei Teams ≥ 2 ist
Server sinnvoll
• Server-Stand „führt“
(per Konvention)
• Austausch zum
Server mit
push und pull
• Direkter Austausch
zwischen Clients
weiterhin möglich!
Wie funktioniert das?
• Versions-IDs sind GUIDs
– Keine formalen Konflikte der Commits
– Inhaltliche Konflikte natürlich weiterhin
möglich ;-)
• History auf dem „Client“ wird bestimmt
durch commits
• History auf dem „Server“ (besser:
baseless Repo) wird bestimmt durch
pushes
Anwendungsmöglichkeiten
• Versionierung nicht nur von Code …
– Skripte (SQL, cmd, …)  Diff!
– Dokumente (Office, UML, Specs!)  History!
– Bilder (Logos, Icons, …)
• Backup einfach per git push auf …
– Netzlaufwerk
– anderen Rechner
– USB-Stick  „Aktenkoffer“
• Einfach starten, einfach skalieren! … 
Zukunft von DVCS
• IMHO: Zukunft aller VCS
– VCS sind Subset von DVCS
Konkret im MS-Umfeld
• Team Foundation Server (langfristig)
Brian Harry (blogs.msdn.com)
„people are asking ‘but, did you implement
DVCS?’. The answer is no, not yet.“
• Git-tf (kurzfristig)
Brian Harry (blogs.msdn.com)
„you can create a local Git repo from a TFS
server with git tf clone”
Next
• Typischer Workflow eines neuen
Projekts
Neues Projekt erzeugen
> git init
• Erzeugt ein neues
.git-Verzeichnis
• Das Repository
enthält alle Daten
–
–
–
–
Dateien
Historie
Branches
…
An Projekt teilhaben
> git clone <origin>
• Klont ein existierendes
Repository
• Das Repository
enthält alle Daten
–
–
–
–
Dateien
Historie
Branches
…
Dateien hinzufügen
> git add Program.cs
• Fügt Dateien dem
index hinzu.
• Notwendig für
– Neue Dateien
– Geänderte Dateien
Dateien versionieren
> git commit -a
-m "erste Version“
• Fügt Dateien der
Historie hinzu
• -a: add (wichtig!)
• -m: Kommentar
• Ab jetzt für andere
Clients über pull
oder push verfügbar
Neuen Stand holen
> git pull origin master
• Holt den letzten
Stand
• „origin“ ist Quelle
von clone
„guten“ Stand sichern
> git push origin master • Veröffentlicht den
aktuellen Stand
• „origin“ ist Quelle
von clone
Hier ist der große
Vorteil von DVCS:
Nur validierte Stände
werden veröffentlicht
Tools
• Kommandozeile ist OK, aber
es geht auch bequemer:
• TortoiseGit fürs Filesystem
• Msysgit als Unterbau
• Git Source Control Provider
für Visual Studio
Workflows von DVCS
•
•
•
•
Viele kleine lokale Commits
Push erst dann, wenn alles läuft (ggf. rebased)
Branches möglich, aber nicht immer nötig
Wenn nötig, dann lokal oder remote möglich
• Lokale Branches sind wirklich nur lokal ;-)
Erste Schritte
• Ausprobieren mit Skripten
• Wenn was nicht klappt
• .git-Verzeichnis einfach wieder löschen
• von vorne anfangen
• Nichts zu verlieren ;-)
Weitere Doku
• Im Netz gibt es unheimlich viel Doku zu git
• Die Quelle: http://git-scm.com/
• Das Buch „Pro Git“: http://git-scm.com/book/de
• Die Referenz
• Selbst in git versioniert
Herunterladen