删除Bazaar中的父分支

时间:2012-05-06 21:04:36

标签: bazaar

鉴于以下情况:

$ 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/bar作为trunk的父分支,我该如何更改?{/ p>

2 个答案:

答案 0 :(得分:4)

bzr rmbranch只是删除给定位置的分支。如果您需要删除服务器上的分支,这非常方便。

在本地磁盘上,如果要删除某些分支和树,可以使用rmdel命令(具体取决于您的操作系统/ shell)。

注意:如果存在树,rmbranch不会删除树,只删除分支对象。 (在您的示例中,工作树实际存在)。对于本地工作空间,使用rm要简单得多。

父分支记录在.bzr/branch/branch.conf中。您可以编辑该配置文件。它不会影响分支删除。

答案 1 :(得分:0)

(假设本地“独立”bzr共享存储库。)

使用了有趣的bzr命令:bzr init-repobzr initbzr 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

产生以下内容,这意味着“first”正在使用我们在上面创建的共享仓库(它也恰好存储在那里):

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

我们进入共享的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

将代码添加到第一个并从中分支一秒

让我们为“第一个”分支创建,添加和提交一些“代码”,然后返回到共享仓库:

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

现在从“第一”分支到“第二”:

$ 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

删除其中一个分支

假设我们已经完成了“第一次”或“第二次”,因为我们已经完成了错误修复等问题。问题是我们无法在上使用“bzr remove-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

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

似乎“秒”中的所有内容都已消失,然后我可以安全地将(rm / del)废弃到“第二”目录。

(其他,请编辑此内容以提供有关删除共享存储库中分支的正确方法的更多信息。)