5

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

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

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

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

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

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

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

我该如何解决这个问题?

编辑 我后来意识到有以下类似的问题: 如何在 Perforce 中撤消集成,并且仍然能够重做它?

4

1 回答 1

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

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

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

与其他版本控制系统(git例如)不同,不幸的是,无法强制重写历史以使其忘记集成历史并重新开始。

这是我公司的原因之一,所有架构师和 SCM 都非常挑剔并重申他们的工作流程建议,即在使用perforce.

于 2013-04-30T22:44:34.357 回答