für BitKeeper zur Entwicklung des Linux-Kernels • Design-Ziele: Unterstützung verteilter Workflows, sehr guter Schutz gegen Datenkorruption, sehr gute Performance Vorträge von Studenten für Studenten 2013-01-28 | Patrick Lehner [3]
bunch of bytes) • tree: Verzeichnis (Einträge) • commit: Snapshot aller Dateien • tag: konstanter Pointer auf commit Vorträge von Studenten für Studenten 2013-01-28 | Patrick Lehner [4]
einer Datei (kann aber beliebig sein) • Datei- & Unterordnernamen im tree gespeichert Vorträge von Studenten für Studenten 2013-01-28 | Patrick Lehner [5] blob tree file [filename, mode] subdir [filename]
• History ≈ DAG von Commits Vorträge von Studenten für Studenten 2013-01-28 | Patrick Lehner [8] blob tree file [filename, mode] subdir [filename] commit [message] parent 1 2 4 3 issue master HEAD
je genau ein Commit-Objekt • dienen zur Benennung • bewegen sich beim Erstellen von Commits mit Vorträge von Studenten für Studenten 2013-01-28 | Patrick Lehner [9] A B master
aktuell ausgecheckten Commit • meist eine sym-ref auf einen head • attached HEAD: zeigt auf head detached HEAD: zeigt auf Tag oder Commit Vorträge von Studenten für Studenten 2013-01-28 | Patrick Lehner [10] A B master HEAD
• Branches & Tags: Etiketten für Commits • Branches bewegen sich • Tags sind fest Vorträge von Studenten für Studenten 2013-01-28 | Patrick Lehner [11] A B master v1.0 origin/master
merge Y • fast-forward: wenn Y Nachfahre von X (X und Y als Commits aufgefasst) • non-fast-forward: wenn X und Y divergiert sind (X und Y als Branches aufgefasst) Vorträge von Studenten für Studenten 2013-01-28 | Patrick Lehner [14]
2013-01-28 | Patrick Lehner [15] A B master HEAD git merge devel C devel master HEAD D D Merge-Commit non-fast-forward merge A B C devel git checkout devel git merge master master HEAD D A B C devel fast-forward merge
rebase Y • transplantiert Änderungen von X nach Y • erzeugt lineare History • erzeugt neue Commits! (anderer Hash) Vorträge von Studenten für Studenten 2013-01-28 | Patrick Lehner [16]
immer auslieferbar • next (develop): finale Tests ausstehend • pu (proposed): neue Features, die noch nicht in master gehören • maintenance: Bugfixes alter Releases • geeignet für große & komplexe Projekte und starre Release-Prozesse Vorträge von Studenten für Studenten 2013-01-28 | Patrick Lehner [19] Langlebige Branches
Fall: fast-forward merge Vorträge von Studenten für Studenten 2013-01-28 | Patrick Lehner [21] Langlebige Branches A master devel B C D E pu A master devel B C D E pu [master] git merge devel
Studenten 2013-01-28 | Patrick Lehner [22] Langlebige Branches A master devel B C D E pu F G [devel] git merge pu A master devel B C D E pu F G G H Merge-Commits immer nur im weiter oben liegenden Branch!
[24] Topic/Feature Branches A master B C D1 D2 add-db-support E1 E2 E3 E4 F1 F2 F3 fix-sound fix-sound-v2 A master B C D1 D2 add-db-support E1 E2 E3 E4 F1 F2 F3 fix-sound fix-sound-v2 G git merge add-db-support git merge fix-sound-v2
Lehner [25] Zentralisierter Workflow gemeinsames Repo Entwickler [Arbeitskopie] Entwickler [Arbeitskopie] Entwickler [Arbeitskopie] Wo ist das „distributed“ in diesem Workflow?
• Seth Robertson: Git best practices, Abschnitt workflows; http://sethrobertson.github.com/GitBestPractices/#workflow Vorträge von Studenten für Studenten 2013-01-28 | Patrick Lehner [30] • Git live probieren – ohne Installation: http://try.github.com/ • Fragen finden und stellen: http://stackoverflow.com/questions/tagged/git • Direkte Hilfe von (meistens) erfahrenen Git-usern: #[email protected] • Bei Github-spezifischen Fragen: #[email protected] und [email protected] Ressourcen – Interaktiv
Geschichte und Konzepte von Git; http://goo.gl/z72s [YouTube] • Scott Chacon, Praktische Einführung in Git mit Live-Beispielen: http://goo.gl/R9H2q [YouTube] • Randal Schwartz, Einführung in Git (Konzepte & Workflows); http://vimeo.com/35778382 • Jessica Kerr, Git happens: Einführung in Git (Konzepte, aber ohne PowerPoint); http://vimeo.com/46010208 Vorträge von Studenten für Studenten 2013-01-28 | Patrick Lehner [31]
Sitaram Chamarty: Git concepts simplified; http://sitaramc.github.com/gcs/ • Tommi Virtanen: Git for Computer Scientists; http://eagain.net/articles/git-for-computer-scientists/ • Seth Robertson: Git best practices; http://sethrobertson.github.com/GitBestPractices/ • Wikipedia: en http://en.wikipedia.org/wiki/Git_%28software%29 und de http://de.wikipedia.org/wiki/Git Vorträge von Studenten für Studenten 2013-01-28 | Patrick Lehner [32]