2

要在集市上创建一个分支,我可以做两件事:

  • 签出主干,进行修改,本地提交,然后我的版本推送到 MyProject/MyBranch

或者

  • 创建 MyProject/MyBranch 并将我的结帐切换到新分支,然后进行修改和提交。

我的问题:

  • 这两个操作是否产生相同的结果?
  • 关于分支的最佳实践是什么?
4

3 回答 3

3

我不确定当推送带有本地提交的结帐时会发生什么,所以我试了一下。

事实证明,在这两种情况下,您最终都会得到以下历史记录:

树干:

  1. 旧提交
  2. 等等

分支:

  1. 新提交
  2. 旧提交
  3. 等等

但是,首先分支并使用分支结帐是一种更好的方法。如果您有一个带有本地提交的结帐并且在提交之前bzr update您将无法做到这一点。bzr push

其次,如果你有一个带有本地提交的主干结帐,“bzr push”创建分支,然后尝试“bzr switch”到分支,你首先必须提交或恢复以避免“不能切换为本地提交”在结帐时发现”错误。

于 2011-09-21T13:30:04.033 回答
2

编辑:此答案假设与问题描述的设置不同,因为问题的初始表述尚不清楚。

您描述的两个操作不会产生相同的结果。差异是否有意义在很大程度上取决于您的环境。例如,无论您是与其他开发人员合作还是独自工作。

在第一种情况下,您有一个带有工作树的分支。当您送到一个还不是分支的位置时,您将创建一个与初始分支具有相同历史记录的新分支。

在您的第二个示例中,您似乎正在使用现有的结帐。我不确定您对创建分支文件夹的意思。

您是决定使用带有工作树的分支还是使用结帐,这实际上取决于您想要做什么。如果您希望将同一项目的许多功能彼此隔离,那么使用结帐似乎很有意义。在这种情况下,工作树只在磁盘上存储一次,分支只跟踪每个特性的修改。在某些时候,您可能希望将这些分支中的一个或多个合并在一起,以将这些功能组合回一个分支。

另一方面,如果你有两个不同的项目,那么有两个分支可能是有意义的,每个分支都有自己的工作树。

阅读Bazaar Workflows 文档,可能bzr help checkoutsbzr help branches帮助您确定哪种方法最适合您的情况。

于 2011-09-20T13:11:30.337 回答
0

要回答您的第一个问题,我认为它不会产生相同的结果。

您的第一个选项将产生此历史记录:

树干:

  1. 新提交
  2. 旧提交
  3. 等等

分支:

  1. 新提交
  2. 旧提交
  3. 等等

即主干和分支将具有相同的历史。

您的第二个选项将产生此历史记录:

树干:

  1. 旧提交
  2. 等等

分支:

  1. 新提交
  2. 旧提交
  3. 等等

即你的新提交只会出现在分支上。要使用这种方法将其放在主干上,您必须将分支合并到主干中。

最佳实践将取决于您想要完成的任务。如果您正在创建一个分支以提交一些您不希望在主干上进行的更改,那么首先分支。

于 2011-09-20T13:59:07.693 回答