1

我已经使用 bzr (bazaar vcs) 工作了一段时间,并决定将一些应用程序重新分支为堆叠在核心主干上(以帮助保护历史资源)。

对于已发布的 Web 应用程序,工作流程包括

bzr push bzr-ssh://<server>/var/www/<remote-branch-name>

然后bzr checkout在服务器上获取工作树。

有了这个新的堆叠范例,我当然想将一个堆叠的分支推送到服务器,并且有一个工作树可以提供服务,但这似乎不可能?

bzr push --stacked -d <branch> <remote>

将愉快地在服务器上创建一个新的堆叠分支,但是,从服务器:

  • bzr info显示没有父母
  • bzr checkout导致bzr:错误:不是分支

网络,没有工作树:|

最终,我只是删除了新的远程分支并返回并省略了--stacked.

还在想我是否错过了什么?

4

1 回答 1

1

我将解释堆叠分支,但下面我建议您使用共享存储库。

“bzr info”是否显示父母并不重要。它需要显示一个堆叠的分支。

在下面的示例中,“堆叠”是关键:

bzr info bzr+ssh://teeny/~/bzr
Standalone branch (format: unnamed)                                            
Location:
  branch root: bzr+ssh://teeny/~/bzr/

Related branches:
  parent branch: bzr
     stacked on: http://bazaar.launchpad.net/~abentley/bzr/branches-uncommitted

Bazaar 尝试确定要堆叠在哪个分支上。它应该将其打印为推送输出的一部分。

如果它出错了,您可以使用 --stack-on 覆盖它。请记住,您堆叠的分支必须至少与您要推送的分支一样公开。

但我建议共享存储库,而不是堆叠分支,以节省空间。它更高效,更人性化。如果 Bazaar 找到包含目标位置的共享存储库,它将自动使用共享存储库。例如“bzr init-repo bzr+ssh:///var/www/”将创建一个共享存储库,该存储库将被 /var/www 下的所有分支自动使用。

存在堆叠分支以解决隐私问题。如果 /var/www 的某些分支是私有的,那么共享存储库是有风险的,因为它将包含来自这些私有分支的修订。Launchpad 使用堆叠分支的主要原因是因为 Launchpad 支持私有分支。堆叠在公共分支上的私有分支可以节省空间,而不会将私有修订泄漏到公共分支中。它默认使用堆栈,因为公共分支在初始推送后可能会变为私有。

于 2017-10-26T18:25:50.197 回答