3 Stimmen

Entfernen Sie einen übergeordneten Zweig im Bazaar

Angesichts des folgenden Szenarios:

$ bzr init-repo foo
$ bzr init foo/bar
$ cd foo/bar
$ echo 'some text' > a_file
$ bzr add a_file 
$ bzr commit -m 'eine Commit-Nachricht' 
$ cd ..
$ bzr branch bar trunk
$ bzr rmbranch bar
bzr: FEHLER: Der Zweig ist aktiv. Verwenden Sie --force, um ihn zu entfernen.

Ist es sicher, in dieser Situation bzr rmbranch --force auszuführen? Gibt es keine elegantere Lösung?

Nach einem bzr rmbranch --force zeigt bzr info immer noch ../foo/bar als übergeordneten Zweig von trunk an. Wie kann ich das ändern?

4voto

bialix Punkte 17460

bzr rmbranch entfernt einfach den Zweig am angegebenen Speicherort. Es ist sehr praktisch, wenn Sie einen Zweig auf Ihrem Server löschen müssen.

Auf Ihrer lokalen Festplatte ist es in Ordnung, einfach den Befehl rm oder del (je nach Betriebssystem/Shell) zu verwenden, wenn Sie einen Zweig und Baum löschen möchten.

HINWEIS: rmbranch löscht nicht den Baum, falls einer vorhanden ist, sondern nur den Zweigobjekt. (Und in Ihrem Beispiel ist tatsächlich ein Arbeitsbaum vorhanden). Für den lokalen Arbeitsbereich ist es viel einfacher, rm zu verwenden.

Der übergeordnete Zweig ist in .bzr/branch/branch.conf aufgezeichnet. Sie können diese Konfigurationsdatei bearbeiten. Das Löschen des Zweigs wird dadurch nicht beeinflusst.

0voto

Kalin Punkte 1581

(Angenommen lokale, "standalone" bzr freigegebene Repository.)

Interessante bzr-Befehle verwendet: bzr init-repo, bzr init, bzr branch, bzr info, bzr add, bzr commit, bzr remove-tree, bzr remove-branch.

Einzelbranch in einem freigegebenen Repository einrichten

Richten Sie ein freigegebenes Repository in Ihrem /tmp-Verzeichnis ein, um damit zu experimentieren.

$ cd /tmp/
$ bzr init-repo test-shared-repo
$ bzr info test-shared-repo/

ergibt:

Freigegebenes Repository mit Bäumen (Format: 2a)
Ort:
  freigegebenes Repository: test-shared-repo

Dann erstellen wir einen Ort, um einige Codes in diesem freigegebenen Repository zu speichern:

$ bzr init test-shared-repo/first

ergibt das Folgende, was bedeutet, dass "first" das freigegebene Repository verwendet, das wir oben erstellt haben (und es wird auch dort gespeichert):

Verwenden des freigegebenen Repository: /tmp/test-shared-repo/

Und wir gehen in das Verzeichnis mit dem freigegebenen Repository und erhalten Informationen darüber:

$ cd test-shared-repo
$ bzr info 

Was die folgenden Informationen ergibt, die das wiedergeben, was angegeben wurde, als wir es erstellt haben:

Freigegebenes Repository mit Bäumen (Format: 2a)
Ort:
  freigegebenes Repository: .

Lassen Sie uns auch die Informationen über das "first" überprüfen, das wir erstellt haben:

$ bzr info first/

Ergibt das Folgende, was zeigt, dass "first" ein Repository-Zweig ist, der ein freigegebenes Repository verwendet, das sich unter . befindet:

Repository-Baum (Format: 2a)
Ort:
  freigegebenes Repository: .
  Repository-Zweig: first

Code zum ersten hinzufügen und einen zweiten Zweig davon abzweigen

Lassen Sie uns etwas "Code" zu unserem "first" Zweig erstellen, hinzufügen und commiten, dann zurück zum freigegebenen Repository gehen:

$ cd first/
$ echo "einige Texte" > a_file.txt
$ bzr add a_file.txt
$ bzr commit -m 'eine Commit-Nachricht' 
$ cd ..

Jetzt zweigen wir von "first" zu "second" ab:

$ bzr branch first second

Ergibt das Folgende, was zeigt, dass "second" eine Referenz zu "first" hat:

Repository-Baum (Format: 2a)
Ort:
  freigegebenes Repository: .
  Repository-Zweig: second

Verwandte Zweige:
  übergeordneter Zweig: first

Wenn Sie bzr info first überprüfen, können Sie bestätigen, dass es keine Referenz zu "second" gibt. Überprüfen Sie, ob in "second" etwas vorhanden ist:

$ ls second
a_file.txt

Einen der Zweige löschen

Angenommen, wir sind mit entweder "first" oder "second" fertig, weil wir einen Fehler behoben haben usw. Das Problem ist, dass wir im Moment "bzr remove-branch" nicht auf beide anwenden können:

$ bzr remove-branch first
bzr: FEHLER: Zweig ist aktiv. Verwenden Sie --force, um ihn zu entfernen.
$ bzr remove-branch second
bzr: FEHLER: Zweig ist aktiv. Verwenden Sie --force, um ihn zu entfernen.

Ich habe jedoch etwas namens bzr remove-tree entdeckt, das zu funktionieren scheint. Es wird den Inhalt auslöschen (ich denke, wenn keine unbestätigten Änderungen vorhanden sind), also seien Sie vorsichtig!

$ bzr remove-tree second
$ ls -a second
.  ..  .bzr

Dateien sind in "second" verschwunden. Aber es gibt immer noch eine Referenz zum "first":

$ bzr info second
Repository-Baum (Format: 2a)
Ort:
  freigegebenes Repository: .
  Repository-Zweig: second

Verwandte Zweige:
  übergeordneter Zweig: first

Also, lassen Sie uns jetzt bzr remove-branch auf "second" ausprobieren:

$ bzr remove-branch second
$ bzr info second
Leeres Kontrollverzeichnis (Format: 2a oder pack-0.92)
Ort:
  Kontrollverzeichnis: second

Es scheint, als ob alles in "second" verschwunden ist und ich könnte dann sicherlich das Verzeichnis "second" löschen (rm / del).

(Andere können dies bearbeiten, um mehr Informationen zur richtigen Methode zum Entfernen eines Zweigs in einem freigegebenen Repository bereitzustellen.)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X