Sektionen
Benutzerspezifische Werkzeuge
Sie sind hier: Startseite Support Dokumentation docs Bazaar als VCS verwenden

Bazaar als VCS verwenden

Bazaar ist ein dezentrales Versions Verwaltungs System (VCS) und ist daher sehr flexibel einsetzbar.

Vorteile von Bazaar

Man kann Bazaar sowohl wie ein zentrales VCS als auch wie ein dezentrales VCS verwenden. Z.B. läßt sich ein lokaler Bazaar Branch mit bzr bind fest an einen remote Branch binden. Macht man dies, so werden Änderungen bei einem commit zu erst in den remote Branch übertragen und dann in den lokalen Branch eingecheckt. Man spart sich also den separaten bzr push.

Die eigene Identität in Bazaar einstellen

Mit bzr whoami kann man die eigene Identität prüfen und gegebenen falls einstellen.
Die Identität kann wie folgt eingestellt werden:

bzr whoami "Max Mustermann <Max.Mustermann@example.de>"

Ein vorhandenes Projekt unter die Kontrolle von Bazaar stellen

Mit bzr init wird Bazaar initialisiert.

~/meinprojekt$ bzr init

Um jetzt alle Dateien und Verzeichnisse in diesem Ordner zu Bazaar hinzu zu fügen, verwendet man bzr add.

~/meinprojekt$ bzr add *

Änderungen Committen

~/meinprojekt$ bzr commit -m "initial import"

Wird der Parameter -m weg gelassen, öffnet sich ein Editor und man kann die Log Nachricht dann eingeben

Einen Branch veröffentlichen

~/meinprojekt$ bzr push sftp://bzruser@example.com/opt/bzr/meinprojekt --remember

Die Option --remember sorgt dafür, dass Bazaar die url merkt und man beim nächsten push noch bzr push machen muss.

Branch mit öffentlicher Kopie abgleichen

~/meinprojekt$ bzr pull sftp://bzruser@example.com/opt/bzr/meinprojekt --remember
All changes applied successfully.
2 revision(s) pulled.

Bazaar holt nun die aktuellen Daten aus dem öffentlichen Branch. Sofern der lokale Branch keine aktuellen Änderungen enthält.

Lokale Änderungen mit öffentlicher Kopie zusammen führen

~/meinprojekt$ bzr merge sftp://bzruser@example.com/opt/bzr/meinprojekt --remember

Bazaar holt sich jetzt die aktuellen Änderungen aus dem öffentlichen Branch und versicht sie selbst mit den lokalen Änderungen zusammen zu führen. Das funktioniert auch in den meisten Fällen ganz gut. An den Stellen wo Bazaar die Konflikte nicht selbst auslösen kann, muss man selbst nach helfen.

Konflikte manuell auflösen

Mit bzr status bekommt man eine Übersicht der geänderten Dateien angezeigt. Diese kann man sich dann mit bzr diff genauer untersuchen. Hier werden beide Dateien verglichen und die Unterschiede angezeigt. Alle Konflikte kann man sich auch mit bzr conflicts anzeigen lassen. Um einen Konflikt aufzulösen, muss die betreffende Datei mit einem Editor geöffnet werden. Hier ist der entsprechende Abschnitt wie folgt gekennzeichnet.

<<<<<<< TREE
print 'Ein Beispielsatz aus dem lokalen Branch.'
=======
print 'Ein Beispielsatz aus dem öffentlichem Branch.'
>>>>>>> MERGE-SOURCE

Jetzt muss entschieden werden, wie diese Zeile weiterhin aussehen soll. Die Zeile wird abgeändert und die Makierungen entfernt.

Nun teilen wir Bazaar mit, dass der Konflikt behoben wurde.

~/meinprojekt$ bzr resolve datei.py


Projekt mit lokalen Änderungen überschreiben

~/meinprojekt$ bzr push --overwrite --verbose sftp://bzruser@example.com/opt/bzr/meinprojekt
2 revision(s) pushed.
Added Revisions:
------------------------------------------------------------
revno: 1
committer: Volker <volker@demo>
branch nick: bazaar_test
timestamp: Tue 2008-04-15 15:25:01 +0100
message:
  Dies ist ein Test
added:
  master.py
------------------------------------------------------------
revno: 2
committer: volker <volker@test>
branch nick: 192.168.2.233%3A3000
timestamp: Tue 2008-04-15 15:35:51 +0200
message:
  Patricks erste Aenderung in Martins Code
modified:
  master.py

Lokalen Branch an öffentlichen Branch binden

Da Bazaar ein dezentrales vcs ist, werden bei einem bzr commit die Änderungen nur in den lokalen Branch eingecheckt. Um sie auch im öffentlichen Branch zu haben muss ein bzr push in diesen Branch gemacht werden. Da dies bei Rechnunern die eine dauerhafte Internetanbindung haben nervig sein kann, ist es möglich den lokalen Branch mittels bzr bind an den öffentlichen Branch zu binden. Jeder commit wird dann zuerst in den öffentlichen Branch übertragen und dann in den lokalen. Das kommt dem zentralen Ansatz eines vcs wie z.B. SVN sehr nah. Falls man mal keine aktive Internetverbindung hat, kann entweder mit dem Parameter --local für diesen commit der Abgleich mit dem öffentlichen Branch unterbunden werden. Oder bei längerem offline Arbeiten, lößt man am besten die Bindung mit bzr unbind.

~/meinprojekt$ bzr bind sftp://bzruser@example.com/opt/bzr/meinprojekt

Die Bindung wieder lösen:

~/meinprojekt$ bzr unbind

Wenn die Bindung wieder hergestellt werden soll, reicht ein einfaches:

~/meinprojekt$ bzr bind

Bazaar merkt sich die letzte Bindung und stellt diese wieder her.

Links: