想象一下以下的情况:我们有两个perforce管理的目录:trunk和branch。
在这种情况下,从分支到trunk的默认集成将不包含File1,直到提交集成,然后第二个集成将接收更改。
通过与-Di选项集成可以避免此问题。我的问题是:为什么这个选项不是默认选项?它会导致其他地方出现问题吗?
答案 0 :(得分:4)
是。 -Di如何成为问题的一个很好的例子是在主干和/或分支上编辑了File1的情况。
假设旧的File1包含" A",trunk / File1是" AB&#34 ;, branch / File2是" AC"。假设新的File1是" D"。
branch/File1: D
branch/File2: AC
trunk/File1: AB
如果执行默认集成,则首先将branch / File2与trunk / File1合并,后者合并内容(生成" ABC")然后将trunk / File1移动到trunk / File2。后续工作将分支/ File1分支到主干上现在空置的位置,因此trunk / File1变为" D"。这是理想的结果。
如果你与-Di集成,你将分支/ File2分支到trunk / File2,给你一个内容" AC"的trunk / File2,你在branch / File1和trunk / File1," AB"在一边和" D"另一方面。
总而言之,默认情况下(两步整合)你会得到:
trunk/File1: D (branch)
trunk/File2: AB+AC=ABC (clean merge)
使用-Di(一步无基础集成),您将得到:
trunk/File1: D+AB=??? (baseless merge)
trunk/File2: AC (branch)
理论上,您可以通过解决冲突,手动选择历史记录,注意B更改应该在另一个文件中,然后手动将其编辑到File2中来对此进行排序。在集成到其他分支时,您可能最终不得不重复此性能(现在由于File2和File1之间的连接不那么明显而变得复杂)。