3

次のシナリオを考えます。

$ bzr init-repo foo
$ bzr init foo/bar
$ cd foo/bar
$ echo 'some text' > a_file
$ bzr add a_file 
$ bzr commit -m 'a commit message' 
$ cd ..
$ bzr branch bar trunk
$ bzr rmbranch bar
bzr: ERROR: Branch is active. Use --force to remove it.

bzr rmbranch --forceこの状況で行うのは安全ですか?よりエレガントな解決策はありませんか?

を実行した後bzr rmbranch --forceも、の親ブランチとしてbzr info表示されますが、どうすれば変更できますか?../foo/bartrunk

4

2 に答える 2

4

bzr rmbranch指定された場所のブランチを削除するだけです。サーバー上のブランチを削除する必要がある場合に非常に便利です。

ローカルディスクでは、ブランチとツリーを削除する場合は、(OS /シェルに応じて)コマンドrmまたはコマンドを使用するだけで問題ありません。del

注:rmbranchツリーが存在する場合は削除せず、オブジェクトを分岐するだけです。(そして、あなたの例では、作業ツリーが実際に存在します)。ローカルワークスペースの場合は、を使用する方がはるかに簡単rmです。

親ブランチはに記録され.bzr/branch/branch.confます。その設定ファイルを編集できます。ブランチの削除には影響しません。

于 2012-05-07T07:43:56.157 に答える
0

(ローカルの「スタンドアロン」bzr共有リポジトリを想定しています。)

使用bzr init-repobzr initれる興味深いbzrコマンド:、、、、、、、、、 bzr branchbzr infobzr addbzr commitbzr remove-treebzr remove-branch

共有リポジトリに単一のブランチを設定する

ディレクトリに共有リポジトリを設定し/tmpて遊んでください。

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

収量:

Shared repository with trees (format: 2a)
Location:
  shared repository: test-shared-repo

次に、その共有リポジトリにコードを保存する場所を作成します。

$ bzr init test-shared-repo/first

次のようになります。これは、「最初の」が上記で作成した共有リポジトリを使用していることを意味します(また、たまたまそこに保存されています)。

Using shared repository: /tmp/test-shared-repo/

そして、共有リポジトリディレクトリに移動し、共有リポジトリに関する情報を取得します。

$ cd test-shared-repo
$ bzr info 

これにより、次のようになります。これは、作成時に与えられたものを言い換えたものです。

Shared repository with trees (format: 2a)
Location:
  shared repository: .

また、私たちが作成した「最初の」ものに関する情報も確認しましょう。

$ bzr info first/

次のようになります。これは、「first」が次の場所にある共有リポジトリを使用するリポジトリブランチであることを示しています.

Repository tree (format: 2a)
Location:
  shared repository: .
  repository branch: first

最初のコードにコードを追加し、そこから2番目のコードを分岐します

いくつかの「コード」を作成して追加し、「最初の」ブランチにコミットしてから、共有リポジトリに戻しましょう。

$ cd first/
$ echo "some text" > a_file.txt
$ bzr add a_file.txt
$ bzr commit -m 'a commit message' 
$ cd ..

次に、「最初の」から「2番目の」に分岐します。

$ bzr branch first second

次のようになります。これは、「second」が「first」を参照していることを示しています。

Repository tree (format: 2a)
Location:
  shared repository: .
  repository branch: second

Related branches:
  parent branch: first

ただし、をチェックするbzr info firstと、「秒」への参照がないことを確認できます。「秒」に何かがあることを確認します。

$ ls second
a_file.txt

ブランチの1つを削除する

バグ修正などが完了したため、「最初」または「2番目」のいずれかが終了したとしましょう。問題は、現時点ではどちらにも「bzrremove-branch」を使用できないことです。

$ bzr remove-branch first
bzr: ERROR: Branch is active. Use --force to remove it.
$ bzr remove-branch second
bzr: ERROR: Branch is active. Use --force to remove it.

私はと呼ばれるものを発見しましたbzr remove-tree、しかし、それはトリックをするようです。内容が消えてしまいますので(コミットされていない変更がなければと思います)、気をつけてください!

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

ファイルは「秒」で消えます。しかし、「最初の」への言及はまだあります。

$ bzr info second
Repository branch (format: 2a)
Location:
  shared repository: .
  repository branch: second

Related branches:
  parent branch: first

bzr remove-branchそれでは、 「2番目」を試してみましょう。

$ bzr remove-branch second
$ bzr info second
Empty control directory (format: 2a or pack-0.92)
Location:
  control directory: second

「second」のすべてがなくなったようで、「second」ディレクトリを安全にゴミ箱に移動できます(rm/ )。del

(その他、共有リポジトリ内のブランチを削除する適切な方法の詳細については、これを編集してください。)

于 2014-04-22T23:29:06.847 に答える