23

具体来说:

  • 为什么我需要一直显式启用“启用无根据的合并”?我正在从我的分支集成到主干。

  • “启用对已删除目标的集成”是什么意思?默认情况下不应该这样做吗?如果该文件不存在,并且您与该文件集成到该分支,它应该创建该文件,对吧?

  • “不获取所选文件的最新版本”与集成有什么关系?我应该选择一个源版本和一个目标(创建一个新的目标版本)。

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

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

4

3 回答 3

9

为什么我需要一直显式启用“启用无根据的合并”?我正在从我的分支集成到主干。

在这里帮不了你。有什么不对劲。

“启用对已删除目标的集成”是什么意思?

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

默认情况下不应该这样做吗?

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

如果该文件不存在,并且您与该文件集成到该分支,它应该创建该文件,对吗?

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

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

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

“不获取所选文件的最新版本”与集成有什么关系?

这告诉 Perforce 使用目标文件的工作区版本。默认情况下,目标文件的头版本会在集成之前自动检索到工作区中。假设您对分支文件进行了一次修订并将其重新集成到主干中。主干和分支现在有此文件的两个修订版。您提交了对分支文件的更改,因此它现在有 3 个修订版。您将分支文件同步回修订版 2。如果您现在要进行常规集成,Perforce 会假设您想要将所有内容集成到主要修订版,并将分支文件的修订版 3 集成到主干中。如果您要选择此选项,它会显示“所有修订版已集成”,因为您的工作区中有修订版 2。这与试图与“

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

我无法弄清楚,也找不到任何关于它的作用的信息。

于 2009-05-29T20:21:39.120 回答
8
  1. 一般来说,要合并两个文件,perforce 会寻找一个“基础”,即最接近两个文件的修订版,并使用它来提供比直接运行两个文件的差异更好的差异。请参阅知识库文章。在不知道你的 perforce 设置的情况下,我不能说出了什么问题,但是,p4win 有一些很好的图形工具来可视化分支,你也许能够确定为什么 perforce 无法为你找到一个基础。这也是“忽略间接集成历史”所做的:阻止它寻找基础。

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

于 2009-05-29T18:13:32.670 回答
2

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

于 2009-05-29T18:09:52.117 回答