【问题标题】:Bazaar: Merge bubble in mainline after pull - merge - commitBazaar:拉-合并-提交后在主线中合并气泡
【发布时间】:2011-12-05 19:55:19
【问题描述】:

我是 Bazaar 的新手,来自 Subversion 和 git 的背景。我以为我已经掌握了一些基本概念,但在我的第一次重大提交中已经遇到了绊脚石。

该项目托管在 Launchpad 上。我用bzr branch 创建了一个本地分支(“工作”)。我进行了更改,添加了新文件,重命名了其他文件。在此期间,团队中的另一个人提交并推动了他们的更改。此时提交历史看起来像这样:

3. Team Member A
2. Me (trivial commit of .bzrignore)
1. Original commit

今天早上我bzr commit我在本地更改。提交号报告为 3,我假设(错误地)在我与服务器同步时会进行协调。当我执行bzr pull 时,我收到了这条消息:

Using saved parent location: bzr+ssh://bazaar.launchpad.net/...
bzr: ERROR: These branches have diverged. Use the missing command to see how.
Use the merge command to reconcile them.

我做了bzr merge。没有发现冲突,但在我的本地分支中留下了三个文件作为修改。我检查并提交了带有评论的那些,报告给我作为提交 4。然后我做了一个bzr push,它没有报告任何错误。

现在提交历史记录 (bzr log --include-merges) 如下所示:

4.    My merge commit
2.1.1 Team Member A
3.    My commit this morning
2.    My .bzrignore commit
1.    Original commit

这里非常希望保持主干线序列化并避免这些合并气泡。 (令人讨厌的是,Launchpad 没有显示 2.1.1 提交,看起来像是我重写了它。)在这种情况下,避免这些气泡的最佳工作流程是什么?我应该先拉吗?我担心必须将其他人的代码合并到我本地未提交的更改中。

此外,虽然 rebase 在 git 中很常用,但它似乎在 Bazaar 世界中并未得到普遍认可。如果我们可以避免使用 bzr-rebase 插件,那就太好了。

【问题讨论】:

  • 除了下面的答案之外,您还可以通过在您的分支的配置中设置 append_revisions_only 选项来防止将来出现此问题。使用该设置,当它像您的示例一样重新安排修订顺序时,它将不允许提交继续进行。
  • 是的,我在发布我的帖子后看到了一个建议这个答案:stackoverflow.com/questions/5413602/… 但是,我们对 Bazaar 最佳实践更感兴趣,而不是调整以适应我们自己对“正确”的想法。
  • 对于是否应该默认打开 append_revisions_only 实际上存在一些争论,因为关闭行为几乎总是让用户感到惊讶。因此,不要将其视为黑客或非标准行为。这更像是一种安全性,您以后不会再对此感到惊讶。

标签: merge bazaar launchpad


【解决方案1】:

拥有更清晰的主线历史记录的一种方法是在单独的功能分支中完成工作,同时维护主线分支的镜像。我假设这里有工作树的分支,但您可以使用无树分支和结帐来节省磁盘空间。

// setup the mirror branch
cd <mirror directory>
bzr pull <mainline>

// setup a feature branch
cd <feature directory>
bzr branch <mirror directory> .

// work on your feature branch
bzr commit -m "Did some work"
...
bzr commit -m "Did some more work"

// ready to commit your feature
cd <mirror directory>
bzr pull
bzr merge <feature directory>

// your integration testing is done
bzr commit -m "My shiny feature"
bzr push

【讨论】:

  • 一个简单的方法是使用 bzr-colo 插件,它可以让你在同一个工作树中“并置”分支。
  • 感谢您的简洁回答。你已经验证了我的怀疑,我们只需要接受 Bazaar 的做事方式。另外,我被指向这个网页,它提出了与您的答案类似的内容,并提供了一些这样做的理由:doc.bazaar.canonical.com/bzr.2.4/en/user-guide/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
  • 2021-10-12
  • 1970-01-01
  • 2021-07-28
  • 2018-11-29
相关资源
最近更新 更多