Bzr推送错误:合并到主线后分散的存储库

时间:2011-12-14 23:00:14

标签: merge repository bazaar merge-conflict-resolution

very最近开始使用Bzr共享存储库来管理我的项目。我通过从独立的存储库分支来实现这一点,我现在已经进行了增量提交。这个新的共享存储库有一个'/ trunk,/ branches'布局:

--xxxx_shared
  --trunk
    --src
    --lib
    --doc
  --branches

所以我将这个存储库的主干中的一些更改合并到主线,但是当我后来尝试从主干中推进一些进一步的更改时,我得到一个错误,指出两个分支已经发散。我已将合并纳入主线,因此存在分歧。但是,如果必须提交任何合并,那么如何避免这种情况呢?还是我严重误解了事情?

为了解决这个冲突,我从主线BACK合并到共享主干分支。我怀疑这是一个错误,因为我现在有/ xxxx_shared / trunk的修订历史,如下所示:

    ------------------------------------------------------------
    revno: 74 [merge]
    committer: Chris <xxxxxxxx@yahoo.com>
    branch nick: trunk
    timestamp: Wed 2011-12-14 03:47:49 +0000
    message:
      Committing merge from parent branch.
        ------------------------------------------------------------
        revno: 71.1.1 [merge]
        committer: Chris <xxxxxxxx@yahoo.com>
        branch nick: mainline
        timestamp: Tue 2011-12-13 21:13:06 +0000
        message:
          Merged WinAPI toolbar updates from /projects/xxxx_shared/trunk.
    ------------------------------------------------------------
    revno: 73
    committer: Chris <xxxxxxxx@yahoo.com>
    branch nick: trunk
    timestamp: Wed 2011-12-14 03:33:35 +0000
    message:
      Updated the WinAPI toolbar button code...

所以上面的71.1.1已经从主线合并,并且引用合并FROM / projects / xxxx_shared / trunk(共享仓库)到主线。

我希望这一切都清楚。但是,如何解决这个问题以恢复线性发展?与Bzr保守的“最佳实践”是什么,以避免将来出现这种情况?我仍然拥有原始独立存储库的未经修改的副本,因此如果需要,我可以随时返回并重新开始。

1 个答案:

答案 0 :(得分:1)

如果你想让“主线”作为“后备箱”的精确镜像,你应该只从主干推到主线,或者更好地从主干拉到主线:

cd mainline
bzr pull /path/to/repo/trunk

如果你有分支分支的情况,那么你需要使用命令bzr missing来理解为什么在合并到trunk之后发生分歧,并执行上面的pull命令。因此,您的主线将是主干的精确副本。