Archiv/Bazaar

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Ein Terminal öffnen

  3. Ein Programm starten

Inhaltsverzeichnis
  1. Installation
  2. Einrichtung
  3. Benutzung
    1. Ein neues Projekt erstellen
    2. Arbeitskopien fremder Projekte erstellen...
    3. Dateioperationen
    4. Versionskontrolle
    5. Informationen
    6. Aktualisieren und Veröffentlichen
    7. Zusammenführen
      1. Konflikte
  4. Launchpad und Bazaar
  5. Erweiterungen
    1. Erweiterungen aus den Ubuntuquellen
    2. Manuelle Installation von Erweiterungen
  6. Weitere Befehle
  7. Grafische Benutzeroberflächen
    1. Bazaar Explorer
    2. QBzr
  8. Links

./bazaar.png Bazaar ist ein von Canonical, dem Sponsor von Ubuntu, entwickeltes System zur Versionsverwaltung von Dateien. Damit ist es eine Alternative zu Programmen wie Subversion. Bazaar gehört zum GNU-Projekt. Eingesetzt wird es derzeit vor allem bei Launchpad.

Bazaar gehört zur Klasse der verteilten Versionskontrollsysteme. Jeder kann eine eigene Arbeitskopie (einen Branch, auf englisch etwa Abzweig) auf seinem Computer haben, die er verändern kann, wie er will, und braucht dabei keine Verbindung zu einem zentralen Server. Ist die Arbeit getan, kann man die Änderungen veröffentlichen oder sie mit einem anderen Branch zusammenführen.

Bazaar wird meistens über Befehle in einem Terminal [2] bedient, es existieren aber auch grafische Benutzeroberflächen. Bazaar wird etwa seit 2014 nicht mehr aktiv weiterentwickelt, es gibt nur noch vereinzelte Aktualisierungen. Seit Mai 2017 gibt es von Bazaar ein Fork unter dem Namen Breezy.

Installation

Folgendes Paket muss installiert [1] werden:

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install bzr  

sudo aptitude install bzr  

Einrichtung

Zuerst sollte man Bazaar den eigenen Namen mitteilen. Dazu dient folgendes Kommando:

bzr whoami "Peter Silie <peter.silie@gmail.com>" 

Üblicherweise wird der eigene Name und die eigene E-Mail-Adresse verwendet, aber es kann auch eine beliebige Zeichenkette angegeben werden. Diese Angabe wird beispielsweise beim Erstellen von Revisionen verwendet, um deren Autor zu identifizieren. Mit

bzr whoami 
Peter Silie <peter.silie@gmail.com>

kann man sich den Namen anzeigen lassen.

Benutzung

Alle Bazaar-Aktionen sind durch eine Befehlszeile wie "bzr BEFEHL (PARAMETER)" zu erreichen. Eine Liste aller Befehle kann man mit

bzr help commands 

erhalten. Hilfe zu einzelnen Befehlen erhält man mit:

bzr help BEFEHL 

Ein neues Projekt erstellen

Mit folgenden Befehlen erzeugt man einen neuen Branch:

mkdir MEIN_PROJEKT
cd MEIN_PROJEKT
bzr init 

Im Verzeichnis MEIN_PROJEKT wird dabei ein verstecktes Unterverzeichnis mit dem Namen .bzr erstellt. In diesem Verzeichnis werden von Bazaar die gesamte Versionsgeschichte und Metainformationen gespeichert.

Für ein größeres Projekt wird man wahrscheinlich mehrere Branches des Projektes haben wollen. In diesem Fall empfiehlt es sich, ein Repository zu erstellen, das die Versionsgeschichte aller Branches enthält:

mkdir MEIN_PROJEKT
cd MEIN_PROJEKT
bzr init-repo .
mkdir trunk
cd trunk
bzr init 

"trunk" ist üblicherweise der Name des Hauptentwicklungszweiges eines Projektes. Einen weiteren Branch kann man erstellen, indem man im Verzeichnis MEIN_PROJEKT den folgenden Befehl ausführt:

bzr branch trunk/ NEUER_BRANCH 

Arbeitskopien fremder Projekte erstellen

Um fremde Projekte zu bearbeiten, kann man folgende Vorgehensweise verwenden:

bzr init-repo
bzr branch ORT_DES_PROJEKTES trunk
bzr branch trunk BUGFIX12345 

In dem Verzeichnis trunk behält man den unveränderten Hauptentwicklungszweig des Projektes und im Verzeichnis BUGFIX12345 kann man dann eigene Änderungen vornehmen.

Dateioperationen

Sollen nun einige bereits existierende Dateien dem Branch hinzugefügt werden, tippt man das folgende Kommando:

bzr add DATEI1 DATEI2 VERZEICHNIS1 ... 

Alternativ werden mit einem einfachen

bzr add 

alle Dateien dem Branch hinzugefügt, die bisher noch unbekannt sind.

Umgekehrt kann man Dateien aus dem Branch entfernen mit dem Befehl:

bzr remove DATEI1 DATEI2 

Bazaar wird Änderungen an diesen Dateien nicht mehr verfolgen. Wenn die Datei wiederhergestellt werden kann, wird sie gelöscht, ansonsten wird eine Sicherungskopie der Datei behalten (mit einer Dateierweiterung wie .~1~, .~2~, ...).

Will man eine Datei umbenennen, verwendet man folgenden Befehl:

bzr mv ALTER_DATEINAME NEUER_DATEINAME 

Dadurch wird die Versionsgeschichte unter dem neuen Dateinamen fortgeführt.

Wenn man an einer Datei vorgenommene Änderungen rückgängig machen will, verwendet man:

bzr revert DATEI1 DATEI2 ... 

Wird keine Datei angegeben, werden alle Änderungen zurückgenommen. Dabei werden wie bei "bzr remove" evtl. Sicherungsdateien erstellt.

Versionskontrolle

Hat man, wie im vorigen Abschnitt beschrieben, Änderungen vorgenommen, sollte man diese in einer Revision festhalten. Dazu dient folgender Befehl:

bzr commit 

Nun wird der Standard-Texteditor (im Normalfall Nano oder VIM) geöffnet, damit man einen Kommentar, idealerweise eine Zusammenfassung der Änderungen, die man vorgenommen hat, eingeben kann. Ist dies erledigt, wird der Editor nach dem Speichern der Änderungsnotiz wieder geschlossen. Der Befehl

bzr commit -m "Dies ist die Änderungsnotiz." 

macht das gleiche, ohne einen Editor zu öffnen und fügt "Änderungsnotiz" als Kommentar ein.

Sollte nun in einer Datei ein Fehler sein und man braucht Zugriff auf eine ältere Version, um weiterarbeiten zu können, kann man mit

bzr revert -r 6 DATEI1 DATEI2 ... 

alle Änderungen, die seit Revision 6 durchgeführt wurden, rückgängig machen. Wird keine Datei angegeben, werden alle Dateien und Verzeichnisse auf diese Revision zurückgesetzt.

Informationen

Aktualisieren und Veröffentlichen

Um Änderungen anderen zugänglich zu machen, verwendet man folgenden Befehl:

bzr push ZIELORT 

"ZIELORT" wird danach zu einem Spiegel des aktuellen Branches und wird meistens die URL eines Servers oder einer Code-Hosting-Plattform sein (siehe auch im Abschnitt Launchpad und Bazaar). Beim ersten Aufruf wird sich der Befehl den Zielort merken und man kann bei weiteren Aufrufen den Zielort weglassen.

Die umgekehrte Richtung erfolgt über den Befehl

bzr pull ANDERER_ORT 

der den aktuellen Branch zum Spiegel eines Anderen macht. Da man meistens einen solchen Branch mit "bzr branch ANDERER_ORT" erstellt hat, kann man den Ort auch weglassen.

Beachten sollte man bei den beiden Befehlen, dass sie nur dann funktionieren, wenn die beiden Branches sich nicht auseinander entwickelt haben, d.h. wenn der Spiegel Änderungen enthält, die der Original-Branch nicht hat. In so einem Fall muss man die Branches wie im folgenden Abschnitt beschrieben zusammenführen.

Eine andere Möglichkeit, Änderungen zu veröffentlichen, ist eine Merge-Direktive. Der Befehl

bzr send -o MEINPATCH.patch 

fasst die aktuelle Revision in der Datei MEINPATCH.patch zusammen. Diese Datei kann dann mit einem anderen Branch zusammengeführt werden. Wird der Parameter -o weggelassen, wird das Standardmailprogramm verwendet, um die Merge-Direktive per E-Mail zu versenden.

Hinweis:

Soll z.B. Zielort später gewechselt werden und soll sich Bazaar die Änderungen merken, nutzt man die Option "--remember":

bzr push NEUER_ZIELORT --remember 

Zusammenführen

bzr merge ANDERER_BRANCH 

führt ANDERER_BRANCH und den Branch im aktuellen Verzeichnis zusammen.

Konflikte

Falls Konflikte beim Zusammenführen zweier Branches auftreten, erhält man beim Kommando "bzr merge" eine Ausgabe wie folgende:

 M  hello.py
Text conflict in hello.py
1 conflicts encountered.

Der Befehl

bzr conflicts 

zeigt ebenfalls nochmal eine Liste der Dateien an, in denen Konflikte auftreten. Öffnet man nun eine betroffene Datei, im Beispiel hello.py, sieht diese ähnlich wie folgt aus:

1
2
3
4
5
6
7
<<<<<<< TREE
print 'Hello World!'
=======
print 'Hello Word!'
name = raw_input('Wie heißt du?')
print 'Hello %s!' % name
>>>>>>> MERGE-SOURCE

Diese Datei ist eine Mischung aus den zwei Dateiversionen, die in Konflikt zueinander stehen. Die Datei sollte nun bearbeitet werden, sodass beide Änderungen zusammengeführt werden, wobei die Markierungen <<<<<<<TREE, ======= oder >>>>>>>MERGE-SOURCE natürlich entfernt werden. Dann sollte die Datei etwa so aussehen:

1
2
3
print 'Hello World!'
name = raw_input('Wie heißt du?')
print 'Hello %s!' % name

Nun wird ein abschließendes

bzr resolve hello.py 

durchgeführt, um Bazaar mitzuteilen, dass die Konflikte behoben wurden.

bzr commit 

übernimmt die Änderungen dann.

Hinweis:

Weitere Hinweise und andere Möglichkeiten, um Änderungen zusammenzuführen, findet man im Bazaar User Reference 🇬🇧.

Launchpad und Bazaar

Bazaar besitzt ein paar Vereinfachungen, um auf Launchpad gehosteten Quellcode zuzugreifen. Projekte auf Launchpad erreicht man mit der verkürzten URL lp:projektname. Um beispielsweise auf den Quellcode von Inkscape zuzugreifen, verwendet man den Befehl

bzr branch lp:inkscape 

Im Code-Bereich auf Launchpad sind diese Befehle auch immer angegeben.

Für Quellcode, aus dem Ubuntu-Pakete gebaut werden, gibt es weitere Abkürzungen, z.B.:

Wenn man sich bei Launchpad kostenlos angemeldet hat, hat man damit gleichzeitig die Möglichkeit, eigene Bazaar-Branches zu veröffentlichen. Dazu ist nicht einmal nötig, ein eigenes Projekt zu registrieren, denn man kann auch Benutzern Branches hinzufügen. Diese findet man dann über den Link Code 🇬🇧 oben auf der eigenen Benutzerseite 🇬🇧.

Zuerst sollte man Bazaar den eigenen Launchpad-Benutzernamen mitteilen. Das kann man mit folgendem Befehl machen:

bzr launchpad-login BENUTZERNAME 

Außerdem braucht man einen SSH-Schlüssel, den man auf der Benutzerseite eintragen muss.

Um den eigenen Branch auf Launchpad hochzuladen, verwendet man folgenden Befehl:

bzr push lp:~BENUTZERNAME/PROJEKTNAME/BRANCHNAME 

Man kann zwar auch über die Webseite einen Branch registrieren, aber das ist nicht notwendig, da der Befehl automatisch einen neuen Branch erstellt, wenn er noch nicht existiert. In der Launchpad-Hilfe wird das Hochladen eines Branches 🇬🇧 auch beschrieben.

Erweiterungen

Für Bazaar gibt es zahlreiche Erweiterungen 🇬🇧 (engl. Plugins). Einige Erweiterungen können einfach aus den offiziellen Paketquellen installiert, andere müssen manuell installiert werden. Die folgenden Erweiterungen sind in Bazaar selbst enthalten (kann versionsabhängig sein):

Die Liste der installierten Plugins kann man sich mit

bzr plugins 

anzeigen lassen.

Erweiterungen aus den Ubuntuquellen

Eine unvollständige Liste von installierbaren [1] Erweiterungen:

Manuelle Installation von Erweiterungen

Als Beispiel soll die Erweiterung htmllog 🇬🇧 installiert werden, welche ein zusätzliches Kommando "bzr htmllog" bereitstellt, welches die Ausgabe von "bzr log" als HTML-Datei formatiert abspeichert. Als erstes muss der Quelltext heruntergeladen werden, in diesem Fall aus einem Bazaar-Branch:

bzr branch http://michael.ellerman.id.au/bzr/plugins/htmllog/ 

Es wird ein Verzeichnis namens htmllog erstellt, das den Python-Quelltext der Erweiterung enthält. Dieses Verzeichnis kopiert man nach ~/.bazaar/plugins (wenn dieses Verzeichnis noch nicht existiert, muss man es vorher noch erstellen). Um Erweiterungen systemweit zur Verfügung zu stellen, kann man die Erweiterung auch in das plugins-Unterverzeichnis der Bazaar-Installation kopieren, welches man mit dem Befehl

bzr version | grep bzrlib 

herausfinden kann.

Um die Erweiterung zu deinstallieren, löscht man einfach den angelegten Ordner.

Weitere Befehle

Die folgende Tabelle enthält eine unvollständige Liste von nützlichen Bazaar-Befehlen.

Befehl Beschreibung Erweiterung Paket
branches Durchsuche den angegebenen Ort nach Branches. bzrtools bzrtools
cat Den Inhalt einer Datei in der angegebenen Revision anzeigen.
cdiff Eine farbige Version des diff-Befehls. bzrtools bzrtools
check Den Branch überprüfen.
clean-tree Unbekannte Dateien entfernen.
config Einstellungen anzeigen oder ändern.
deleted Dateien anzeigen, die entfernt wurden.
ignore Dateien von der Versionsverwaltung ignorieren, es können auch Muster angegeben werden wie *.class.
ignored Dateien anzeigen, die von der Versionsverwaltung ignoriert werden.
import Dateien aus einem Verzeichnis oder einem (komprimierten) Archiv importieren.
launchpad-open Die Launchpad-Seite eines Branches im Webbrowser öffnen. launchpad
ls Dateien auflisten.
missing Anzeigen von Revisionen, die im Vergleich zu einem anderen Branch noch nicht vorhanden sind.
nick Den Nicknamen eines Branches anzeigen oder ändern, standardmäßig wird der Verzeichnisname verwendet.
patch Einen Patch anwenden. bzrtools bzrtools
renames Umbenannte Dateien anzeigen.
revno Die aktuelle Revisionsnummer anzeigen.
shell Eine interaktive Bazaar-Shell starten, man spart sich die Eingabe von bzr vor jedem Befehl. bzrtools bzrtools
tag Einen Tag für eine Revision erstellen oder bearbeiten.
tags Tags anzeigen.
uncommit Die letzte Revision entfernen.
version Die Versionsnummer von Bazaar anzeigen lassen.

Grafische Benutzeroberflächen

Bazaar Explorer

Bazaar Explorer 🇬🇧 ist eine grafische Oberfläche, die auf Qt basiert und QBzr verwendet. Sie kann über folgendes Paket installiert [1] werden:

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install bzr-explorer 

sudo aptitude install bzr-explorer 

Das Programm kann über "Anwendungen → Entwicklungswerkzeuge → Bazaar Explorer" oder mit dem Befehl

bzr explorer 

gestartet [3] werden.

QBzr

Auf der anderen Seite gibt es auch noch QBzr 🇬🇧, eine Oberfläche, die auf Qt basiert. QBzr kann über das Paket qbzr installiert werden.

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install qbzr 

sudo aptitude install qbzr 

Einzelne Aktionen können, ähnlich wie bei bzr-gtk, mit einer grafischen Benutzeroberfläche ausgeführt werden. Es wird allerdings das Kommandopräfix q statt g eingesetzt. Die zur Verfügung stehenden Befehle können mit

bzr help commands | grep qbzr 

angezeigt werden.