我正在使用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?
答案 0 :(得分:5)
正如您已经提到的,摆脱这种情况的唯一方法是使用-i
运行强制集成。您仍然可以像上次一样使用p4 resolve -as ...
和p4 resolve -am ...
解决更改,然后手动解决剩余的冲突以执行合并。除了历史记录将显示在先前的合并提交中更改的2个额外版本的文件以及用于将其备份的提交。
与其他版本控制系统(例如git
)不同,遗憾的是不可能在perforce中重写历史记录,使其忘记整合历史记录并重新开始。
这是我公司的原因之一,所有架构师和SCM都非常挑剔并重申他们的工作流程建议,即在使用perforce
执行集成时严格遵循分支机构之间的集成路径。