在退出之前的混乱集成后,无法从主分支完全集成到功能分支

时间:2013-04-30 22:28:54

标签: perforce

我正在使用Perforce P4V客户端(版本2013.1 / 611291,日期为2013年3月20日)。

我尝试从主分支合并/集成到我的功能分支。自从我这么做以来已经很长时间了,因此大量的文件被添加到更改列表中。然后我解决了无法自动合并的冲突文件。然后我提交了变更清单。在这之后,我发现一些文件仍处于混乱的冲突状态。究竟为什么对我来说是一个谜,但不是试图解决它们,而是更容易完全撤消Merge / Integrate并重新开始。

要撤消合并/整合,我使用了“退出”选项。所有受影响的文件都被添加到“退出”更改列表中,然后我提交了它。我的功能分支现在又回到了它的开始状态,除了显然现在所有受影响的文件都将其修订版号增加了两倍,受影响文件的历史记录显示了集成,然后是后续“退出”。

问题在于,如果我再次尝试Merge / Integrate选项,那么Perforce想要放入集成更改列表的文件数量现在只是它最初尝试集成的文件数量的一小部分。换句话说,它并没有添加大量我知道在主分支开发方面肯定会更进一步的文件。

我似乎能够解决这个问题的唯一方法是使用高级选项Force integration on all revisions, disregarding revision history (-f)。设置此选项后,它将为分支中的合并所有文件添加。

我怀疑问题与文件现在在其历史记录中标记了集成这一事实有关,因此Perforce使用该点作为基础。混乱的整合被“退出”的事实对此没有任何影响。

我也尝试过回滚,但同样的问题仍然存在。

我该如何解决这个问题?

修改 我后来意识到有以下类似的问题: How can I undo an Integration in Perforce, and still be able to redo it?

1 个答案:

答案 0 :(得分:5)

  • 您尝试从主分支集成到功能分支的文件在首次集成签入后会有一个集成历史记录。
  • 当您撤消更改时,您将功能分支的文件置于集成之前的状态,但是为上一个更改列表中的每个文件创建了新版本的文件。
  • 下一次整合因此试图引入 ONLY 自上次以来整合路径的差异。

正如您已经提到的,摆脱这种情况的唯一方法是使用-i运行强制集成。您仍然可以像上次一样使用p4 resolve -as ...p4 resolve -am ...解决更改,然后手动解决剩余的冲突以执行合并。除了历史记录将显示在先前的合并提交中更改的2个额外版本的文件以及用于将其备份的提交。

  • 如果您可以在其他位置创建功能分支并丢弃当前位置的功能分支,则可以在执行有问题的集成之前将新功能分支的起点设置为提交/更改列表
  • 从您的主分支集成到新功能分支,这次您应该有一个更清晰的历史记录,并且您应该在原始功能分支中进行所有文件更改(包括历史记录)。

与其他版本控制系统(例如git)不同,遗憾的是不可能在perforce中重写历史记录,使其忘记整合历史记录并重新开始。

这是我公司的原因之一,所有架构师和SCM都非常挑剔并重申他们的工作流程建议,即在使用perforce执行集成时严格遵循分支机构之间的集成路径。