JSUG - Bazaar by Florian Motlik
- 2. Über Bazaar
Freie Software (GPLv2) In Python geschrieben
von Canonical (Ubuntu)
verteiltes System
für Windows, Mac, Linux
http://bazaar-vcs.org/
- 3. Begriffe
Revision - a snapshot of the files you're working with.
Working tree - the directory containing your version-
controlled files and sub-directories.
Branch - an ordered set of revisions that describe the
history of a set of files.
Repository - a store of revisions.
http://doc.bazaar-vcs.org/bzr.dev/en/user-guide/index.html#core-concepts
- 4. Verteilt vs Zentral
Zentraler Server
Jeder Commit direkt zum Server
Zugriffskontrolle für jeden nötig
Alle haben eigenes Repository
Alle Revisionen bei allen
meistens kein Netz nötig
Viele Merges, nicht Commits
Zugriffskontrolle leichter
- 5. Workflows
Solo
Partner
Zentral
Zentral mit lokalen commits
Dezentral mit geteilter mainline
Dezentral mit menschlichem Gatekeeper
Dezentral mit automatischem Gatekeeper
- 6. Solo & Partner
Init Repo
bzr init-repo um Meta Repo anzulegen (für Performance)
bzr init um Verzeichnis in Repo zu verwandeln
Solo
cd my-stuff
bzr init
bzr add
bzr commit -m quot;Initial importquot;
Partner
A: bzr init -> *hackhack* -> bzr commit
B: bzr branch http://server.com/userA ->*hackhack* -> bzr commit
A: bzr merge http://server.com/userB -> *hackhack* -> bzr commit
B: bzr merge http://server.com/userA
- 7. Zentral
Wie bei SVN/CVS
Checkout statt Branches
Checkout ist Branch der an Server gebunden ist
bzr bind / bzr unbind
Server kann auch gewechselt werden
Howto
bzr checkout http://someserver.com/repo
hackhackhack
bzr commit
bzr update
Ohne Netzwerk funktioniert commit nicht
- 8. Dezentral
Mirror Branch
Haupt Branch nicht zum entwickeln
Spiegelbild von Server
Für Entwicklung davon wegbranchen und mergen
bzr branch http://server.com/trunk
bzr branch trunk feature1 && hackhackhack
bzr branch trunk fix1 && hackhackhack
cd trunk
merge ../fix1
commit(lokal)
push zum server
bzr update (pull) um Mirror Branch zu updaten
- 9. Gatekeeper
Nur wenige commit Recht auf Haupt Branch
Menschlich
Patch per Mail
Repo veröffentlichen und Link schicken
Beurteilung des Codes
Commited in Haupt Branch
Automatisiert
Patch an Software
automatisierte Tests
wenn Test OK commit auf zentralen Branch
IOC bezüglich commits (Programmierer entscheidet nicht)
Skalierbar (Subprojekt mit Main Branch und Lieutenant)
- 10. Tips & Tricks
Review Changes
bzr status : Zeigt Veränderungen seit letztem commit
bzr diff : Gibt diff der Veränderung aus
Browse History
bzr log -r [0-9] : zeigt Zusammenfassung aller
Revisionen
bzr cat -r [0-9] file: zeigt bestimmte Rev von file
Tagging Releases
bzr tag 1.5-release : Tag 1.5-release erstellt
Als Revision verwenden
bzr diff -r tag:1.5-release
bzr tag 1.5-release --force : tag überschreiben
bzr tag 1.5-release --delete: tag löschen
- 11. Tips & Tricks
Resolve Conflicts
bzr conflicts : Listet Konflikte auf
bzr resolve [filename] : Wenn Konflikt gelöst
Annotate
bzr annotate file - zeigt wer was geändert hat
Rückgängig machen
bzr revert -> Änderungen rückwärts auf tree ausgeführt
bzr revert 19 -> zurück auf Rev 19 (neuer Commit)
bzr revert -2 -> um zwei Revisions zurück
bzr uncommit -3 -> löscht 3 Revs (tree unverändert)
- 12. Launchpad & Links
Launchpad
https://launchpad.net/
Projektmanagement wie Sourceforge (nur besser)
von Canonical (Ubuntu)
für FLOSS(Free libre Open Source Software) Projekte
Bazaar Integration (Bug tracking, Feature tracking,
Übersetzung)
Links
http://bazaar-vcs.org/
http://bazaar-vcs.org/Documentation -
http://doc.bazaar-vcs.org/bzr.dev/ - User Doc