如何应对集市未提交

时间:2010-11-25 16:19:43

标签: bazaar

今天多次点击以下情况:

  1. 我自己和另一个开发者都有集市的本地收银台。
  2. 我做了一些改变。
  3. 另一个开发者做出并做出一些改变。
  4. 我更新。
  5. 另一个开发者意识到他们之前的更改已被破坏并且未提交。
  6. 我更新。
  7. 现在其他开发人员未提交的更改在我的本地结帐中显示为待处理合并,我找不到将它们与我的更改分开的方法,并将其从我的“本地”树中删除。

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

    我尝试在-r -1..-2之间和-r 0..-1之间的结账时进行“挑剔”反向合并,但都没有帮助。 (0..-1说“无事可做”,虽然我可能没有做好。-1..-2是一组错误的改变,因而使事情变得更糟。)

    如果发生这种情况怎么能解决这个问题(除了过去并将其他开发者砸到头上)?

3 个答案:

答案 0 :(得分:1)

一旦你更新了(第4步),其他人的更改将永久地与你合并。由于您的更改未提交,因此它们不会存储在任何位置。因此,一旦第6步发生,我真的没有看到一种方法可以自动将你的更改与他的更改分开。

所以,让我们说你手动删除他所有的更改,所以你只剩下你的。您仍然有待处理的待处理合并。您可以通过键入

来解决此问题
$ 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.
------------------------------------------------------------

当他再次进行更新时,他会将旧的变化抛回给他,并可能会发生冲突。他将不得不清理它,然后提交他的修复(无论出于什么原因,他必须首先取消)。这可能与头部的优势一样有效,并且通过网络工作:)

答案 1 :(得分:1)

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

答案 2 :(得分:0)

bzr pull --overwrite :bound就像你{{1}}那样。