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在这种情况下做 a 是否安全?没有更优雅的解决方案吗?

做了之后bzr rmbranch --forcebzr info仍然显示../foo/bar为 的父分支trunk,我该如何改变呢?

4

2 回答 2

4

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

在本地磁盘上,如果要删除某些分支和树,只需使用rm或命令(取决于您的操作系统/shell)就可以了。del

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

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

于 2012-05-07T07:43:56.157 回答
0

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

使用的有趣的 bzr 命令:bzr init-repo, bzr init, bzr branch, bzr info, bzr add, bzr commit, bzr remove-tree, bzr 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/

然后我们进入共享 repo 目录并获取共享 repo 的信息:

$ cd test-shared-repo
$ bzr info 

这会产生以下内容,重申我们创建它时给出的内容:

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

让我们也检查一下我们创建的“第一个”事物的信息:

$ bzr info 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)“第二个”目录。

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

于 2014-04-22T23:29:06.847 回答