我正在使用 Perforce P4V 客户端(版本 2013.1/611291,日期为 2013 年 3 月 20 日)。
我尝试从主分支合并/集成到我的功能分支。我已经很久没有这样做了,所以大量的文件被添加到变更列表中。然后我解决了无法自动合并的冲突文件。然后我提交了变更列表。这样做之后,我发现一些文件仍然处于混乱冲突的状态。到底为什么对我来说是个谜,但我没有试图解决它们,而是thought完全撤消合并/集成并重新开始会更容易。
为了撤消合并/集成,我使用了“退出”选项。所有受影响的文件都已添加到“退出”更改列表中,并且我提交了它。我的功能分支现在又回到了开始的地方,除了显然现在所有受影响的文件的修订号都增加了两次,并且受影响文件的历史记录显示了集成,然后是随后的“退出”。
问题是,如果我再次尝试合并/集成选项,这一次 Perforce 想要放入集成更改列表的文件数量现在只是它最初尝试集成的文件数量的一小部分。换句话说,它并没有添加大量我知道在主分支的开发方面肯定会进一步推进的文件。
我似乎能够解决这个问题的唯一方法是使用高级选项Force integration on all revisions, disregarding revision history (-f)
。设置此选项后,它将添加合并all来自分支的文件。
我怀疑这个问题与文件现在在其历史记录中标记了集成这一事实有关,因此 Perforce 正在使用该点作为基础。混乱的集成被“取消”这一事实对此没有任何影响。
我也尝试过回滚,但同样的问题仍然存在。
我该如何解决这个问题?
Edit后来我发现还有一个类似的问题:如何在 Perforce 中撤消集成并仍然能够重做它? https://stackoverflow.com/questions/5198180/how-can-i-undo-an-integration-in-perforce-and-still-be-able-to-redo-it
- 您尝试从主分支集成到功能分支的文件在首次集成签入后具有集成历史记录。
- 当您撤消更改时,功能分支的文件会恢复到集成之前的状态,但会为先前更改列表中的每个文件创建新版本的文件。
- 因此,下一个集成尝试引入ONLY与上次相比整合路径的差异。
正如您已经提到的,摆脱这种情况的唯一方法是使用-i
。您仍然可以使用以下方法解决更改p4 resolve -as ...
and p4 resolve -am ...
就像上次一样,然后手动解决剩余的冲突以执行合并。除了历史记录会显示在之前的合并提交和撤销它的提交中更改的文件的 2 个额外版本。
- 如果您同意在不同位置创建功能分支并丢弃当前位置的功能分支,则可以在执行有问题的集成之前将新功能分支的起点设置为提交/更改列表。
- 从主分支集成到新功能分支中,这次您应该拥有更清晰的历史记录,并且还应该拥有在原始功能分支中所做的所有文件更改(带有历史记录)。
与其他版本控制系统不同(例如git
例如),遗憾的是不可能强制重写历史记录以使其忘记集成历史记录并重新开始。
这是我公司的原因之一,所有架构师和 SCM 都非常挑剔,并重申他们的工作流程建议,即在使用以下命令执行集成时严格遵循分支之间的集成路径perforce
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)