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

Posted

技术标签:

【中文标题】有人可以解释 perforce 集成选项吗?【英文标题】:Can someone explain the perforce integration options? 【发布时间】:2010-10-29 23:10:21 【问题描述】:

具体来说:

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

什么是“启用集成 删除的目标”是什么意思?不应该 默认情况下这样做?如果文件 不存在,你整合到 带有文件的那个分支,它应该 创建文件,对吗?

什么是“不获取最新版本 选定的文件”与 整合?我应该选择一个 源版本和目标(到 创建一个新的目标修订版)。

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

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

【问题讨论】:

【参考方案1】:

为什么我需要显式启用 一直“启用无根据的合并”? 我正在从我的分支整合到 后备箱。

在这里帮不了你。有点不对劲。

什么是“Enable integration over 删除的目标”是什么意思?

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

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

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

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

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

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

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

什么是“不获取最新版本 选定的文件”与 整合?

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

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

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

【讨论】:

您还可以检查您正在运行的 Perforce 版本。您的服务器版本可能远远落后。我从未见过“忽略间接集成历史” - 也许您正在运行较旧的服务器版本?我正在查看 2008.2 文档,但没有看到对此的参考。 我正在使用 P4V,Perforce Visual Client,截至 2009 年 3 月 25 日。这对我来说是一个全新的界面,因为我也习惯了 2008.2 P4Win 客户端。 @raven:谢谢你的例子。【参考方案2】:
    1234563见Knowledge Base Article。在不知道你的 perforce 设置的情况下,我不能说出了什么问题,但是,p4win 有一些很好的图形工具来可视化分支,你也许能够确定为什么 perforce 无法为你找到一个基础。这也是“忽略间接集成历史”所做的:阻止它寻找基础。

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

【讨论】:

感谢您澄清 p4 的基本含义!我想这意味着如果我签出了我的分支文件,但我试图从另一个分支集成它...... P4 将使用我签出/编辑的文件作为差异中的“你的”版本,与头部修订相比?【参考方案3】:

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

【讨论】:

虽然您的警告很好,但 P4 不应该只是显示需要解决重新添加的文件,而不是向我抛出错误消息吗?

以上是关于有人可以解释 perforce 集成选项吗?的主要内容,如果未能解决你的问题,请参考以下文章

有人可以像我五岁那样向我解释 chmod 权限吗? [关闭]

Perforce挂起的更改列表差异脚本

什么是 perforce 流?

我可以在 perforce 中安全地编辑重命名的文件吗

如何在 Perforce 树中查找未跟踪的文件? (模拟svn状态)

虚幻引擎5改变了游戏,并与Perforce原生集成