代码之家  ›  专栏  ›  技术社区  ›  Rawling isekaijin

如何应对集市不公

  •  1
  • Rawling isekaijin  · 技术社区  · 15 年前

    今天做了几次如下的练习:

    1. 我和另一个开发人员都有一个存储库的bazaar本地签出。
    2. 我做了些改变。
    3. 另一个开发人员进行并提交一些更改。
    4. 我更新。
    5. 另一个开发人员意识到他们以前的更改已被破坏,并取消对它们的承诺。
    6. 我更新。

    现在,其他开发人员的未提交更改在本地签出中显示为挂起的合并,我找不到将它们与更改分离并从“本地”树中删除它们的方法。

    每次发生这种情况时,我都必须手动确定哪些更改是我的,哪些不是,保存我的更改,还原,然后重新应用我的更改。

    我试过在结帐时在 -r -1..-2 ,以及 -r 0..-1 ,但都没有帮助。( 0..-1 说“没事做”,尽管我可能做得不好。 -1..-2 是一系列错误的改变,从而使事情变得更糟。)

    当这种情况发生时,我该如何解决(除了过去打另一个开发人员的头)?

    3 回复  |  直到 15 年前
        1
  •  1
  •   AmanicA    15 年前

    建议不要在以某种方式发布的分支中取消提交,从而避免此问题。

        2
  •  1
  •   mgiuca    15 年前

    好吧,一旦你更新了(第4步),另一个人的变化将与你的永久合并。因为您的更改未提交,所以它们不会存储在任何地方。因此,一旦步骤6发生了,我真的看不到自动将您的更改从his中分离出来的方法。

    所以假设你手动删除了他的所有更改,这样你就只剩下你的更改了。您仍有此挂起的合并要处理。你可以通过键入

    $ bzr revert --forget-merges
    

    那将会 更改工作树;它只会从“bzr st”中移除挂起的合并,这样当您提交它时,它就不会看起来像合并。这将避免您不得不保存更改、还原和重新应用。

    为了避免这种情况再次发生,你可以 bzr update 就在你承诺之前。一旦合并到 bzr commit 马上,你的更改就锁定了。现在,如果不先更新并查看您的更改,他将无法取消提交,现在,他这样做可能已经太晚了。如果他真的想继续他的未承诺,他是那个必须处理混乱的人,而不是你。

    你能做的最后一件事——如果你真的不想处理它,你也不在乎 很想有一个好的版本历史。在第6步之后,只需提交。也许在你的日志中解释另一个开发人员没有提交这个更改,但是太晚了。

    这就是等待合并的地方。如果您提交,则未提交的修订将转到 后面 作为一个分支进入存储库,就像另一个开发人员通过电子邮件将这些更改发送给您并将其合并一样。它将如下所示:

    ------------------------------------------------------------
    revno: 34 [merge]
    committer: You
    branch nick: trunk
    timestamp: Fri 2010-11-26 15:57:27 +1100
    message:
      Made my changes to the file.
      Note, other guy did some of these changes and uncommitted, but
      I already merged.
        ------------------------------------------------------------
        revno: 33.1.1
        committer: Other Guy
        branch nick: trunk
        timestamp: Fri 2010-11-26 15:39:39 +1100
        message:
          Made some changes to the file.
    ------------------------------------------------------------
    

    当他再次运行update时,他会将旧的更改返回给他,可能会发生冲突。他将不得不清理它,然后承诺他的修复(无论他不得不取消承诺的原因在一开始)。这可能和拍脑袋一样有效,而且可以在网络上工作:)

        3
  •  0
  •   Adam Glauser    15 年前

    looks 喜欢 bzr pull --overwrite :bound 就是你想要的。