SlideShare ist ein Scribd-Unternehmen logo
Bazaar
Version Control
   Florian Motlik
Über Bazaar

 Freie Software (GPLv2) In Python geschrieben
 von Canonical (Ubuntu)
 verteiltes System
 für Windows, Mac, Linux
 http://bazaar-vcs.org/
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
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
Workflows

 Solo
 Partner
 Zentral
 Zentral mit lokalen commits
 Dezentral mit geteilter mainline
 Dezentral mit menschlichem Gatekeeper
 Dezentral mit automatischem Gatekeeper
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
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
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
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)
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
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)
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

Weitere ähnliche Inhalte

JSUG - Bazaar by Florian Motlik

  • 1. Bazaar Version Control 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