有人可以解释perforce集成选项吗?

时间:2009-05-29 18:05:17

标签: version-control merge integration perforce

具体做法是:

  • 为什么我需要一直显式启用“启用无基础合并”?我正从我的分支机构整合到主干。

  • 什么是“启用整合 删除目标“意味着什么?不应该 默认情况下这样做?如果是文件 不存在,你整合到 那个分支与文件,它应该 创建文件,对吗??

  • 什么是“没有得到最新版本 选定的文件“与...有关 整合?我应该选择一个 源修订和目标(到 创建一个新的目标修订版。)

  • 什么是“忽视间接 整合历史“是什么意思?我从来没有用它,因为它听起来很吓人。

我很高兴知道,因为当我尝试从我们的主干到各个分支执行各种集成任务时,我不太确定要启用哪些选项,反之亦然。 (我不是构建大师,但是,嘿,我想知道他知道什么)。

3 个答案:

答案 0 :(得分:9)

  

为什么我需要明确启用   “始终启用无基础合并”?   我正从我的分支机构整合到   中继线。

在这里帮不了你。有些事情不对。

  

什么是“启用集成   删除目标“意味着什么?

如果目标文件已被删除且源文件已更改,则会将源文件重新分支到目标文件之上。如果没有此选项,分支上已更改并在主干上删除的文件将不允许集成回主干。

  

默认不应该这样做吗?

如果要将文件重新集成到从中继分支的中继中,然后在中继上删除,则不会。通常,“p4集成”可避免将未完成的编辑与已删除的文件混合。您必须使用高级选项告诉它如何处理已删除的文件。

  

如果文件不存在,那么你   用它集成到那个分支   文件,它应该创建文件,   正确?

将以前从未存在过的文件(即,它已添加到分支中)从一个位置集成到另一个位置时,是的,Perforce将只在您要集成的位置创建它。但是,如果文件最初来自主干,已在主干上删除,现在您正尝试将其集成到分支机构的主干中,您必须通过这些集成选项告诉它该做什么。以下是这些选项对应的命令行开关:

  • 启用已删除修订的集成= -d
  • 整合已删除的目标= -Dt
  • 删除来源时删除目标文件= -Ds
  • 尝试在删除和重新添加来源时整合更改= -Di

您可以在集成命令帮助中了解有关它们的更多信息(在命令行中键入“p4 help integrate”)。

  

什么是“不要获得最新版本   选定的文件“与...有关   积分?

这告诉Perforce使用目标文件的工作空间修订版。默认情况下,目标文件的头版本会在集成之前自动检索到工作区中。假设您已对分支文件进行了一次修订,并将其集成回主干。主干和分支现在有两个此文件的修订版。您向分支文件提交更改,因此它现在有3个修订版。您将分支文件同步回修订版2.如果您现在要进行正常的集成,Perforce会假设您希望将所有内容集成到主版本中,并将分支文件的修订版3集成到主干中。如果您选择此选项,它会说“已经集成了所有修订版本”,因为您的工作区中有修订版2。这与尝试集成“限制集成范围:”选项设置为“集成所有修订版本:”修订版2相同。

  

什么是“无视间接   整合历史“意味着什么?我永远不会   使用它,因为它听起来很可怕。

我无法弄清楚,也找不到任何关于这是什么的信息。

答案 1 :(得分:8)

  1. 一般来说,要合并两个文件,perforce会查找“base”,这是对这两个文件最接近的修订,并使用它来提供比直接运行两个文件差异更好的差异。见Knowledge Base Article。在不知道你的perforce设置的情况下,我不知道出了什么问题,但是,p4win有一些很好的图形工具可以看到分支,你可能能够确定为什么perforce找不到你的基础。这也是“忽视间接整合历史”的作用:阻止它寻找基础。

  2. 对于“不要同步到头”:集成时,“目标”是本地客户端中的文件,您没有为其指定修订版本;相反,perforce将同步您的修订头(如果您不使用“-h”),或将使用您当前拥有的那个。您无法指定任意修订,因为您的本地客户端只有特定的版本。

答案 2 :(得分:2)

“启用对已删除目标的集成”如果盲目完成可能会导致问题。下面是一个示例:想象一下,您在下一个版本分支中重构代码,并删除源文件 - 该功能已合并到其他一些源文件中。然后,您可以修复先前版本的维护分支中的原始源文件中的错误。如果默认情况下集成了删除,则会返回死源文件,但不会构建它,并且不会修复错误。最好是警告发生这种情况,以便您可以手动将修复程序合并到其他源文件中。