Perforce自动合并工具

使用Perforce自动执行集成过程的脚本。

Windows
MacOS
Linux

Perforce自动合并脚本的存在是为了在执行集成(又名合并)的过程中自动执行相关繁琐和/或容易出错的步骤。它包含多个最佳合并实践,这些实践在Perforce集成 页面中有介绍,因此推荐使用它来在虚幻引擎Perforce数据库中进行合并。

使用自动合并工具

该脚本在P4V或P4Win中作为一个"自定义工具"运行,允许您在两个分支之间合并单个变更列表。

下面的截图显示它在P4V中的外观:

P4AutoMergeCustomToolMenu.jpg

  • 对于任何分支,您可以选择 安全合并(Safe Merge),也可以选择 NULL合并(NULL Merge) (如下所述)。

  • 有一个通用工具允许您选择任意分支(通过弹出对话框)。

  • 您可以通过匹配P4V或P4Win中的自定义工具编辑器中使用的格式来添加自己的自定义分支。

当该脚本运行时,它会将诊断信息输出到一个单独的窗口(在P4V、P4Win中于状态窗格内显示它们),如下所示:

P4AutoMergeOutput.jpg

该窗口将提供正在执行的操作摘要,并可用于故障排除。

最后,当您准备签入时,描述字段将已经填写了合并策略所需的信息:

P4AutoMergeChangeDescription.jpg

描述包含以下内容:

  • [自动合并]或[安全合并],说明是如何执行合并的。

  • 一份原始变更类别描述。

  • 一个脚注,说明原始分支、变更号、提交用户和日期。

安全合并

安全合并工具合并一个变更列表并执行一个自动安全解析,它只解析在一个分支或另一个分支的变更文件,而不是同时解析两个分支中的文件。这种类型的解析一定会成功。当该过程完成时,您将获得一个新的变更列表,其中已经包含了所需的签入描述。如果还有任何文件需要解析(需要执行合并的文件),则必须在签入之前手动处理它们。

请参阅Perforce集成 页面获取有关手动解析的帮助。

NULL合并

NULL合并工具合并一个变更列表并执行接受您的解析,这意味着文件将进行集成,但不会进行更改。这将清楚地表明,已考虑变更列表进行集成,但决定不对这些变更进行合并。

有关NULL合并的更多信息,请参阅Perforce集成 页面。

用法

  • 安全合并(UT3仅用作示例): 在UT3-PC中 右键单击 一个提交的变更列表。 自动合并 | UT3 PC -> PS3:安全合并: 完成后,将用这些文件创建一个新的变更列表。 将为您完成所有可以安全解析的文件,输出窗口将列出其余的文件。 * 解析所有无法安全解析的文件并签入。

  • NULL合并(UT3仅用作示例): 在UT3-PC中 右键单击 一个提交的变更列表。 合并至 | UT3 PC -> PS3:NULL合并。 完成后,将用这些文件创建一个新的变更列表。 所有文件将进行NULL合并。 * 签入NULL合并。

安装

安装Python

该脚本是一个使用P4Python API的Python脚本,因此您需要首先安装它。

  • 对于Python: 推荐ActiveState ActivePython 发布。 该脚本目前已使用Python 2.5.2版本进行过测试。

  • 对于P4Python: 您可以从Perforce网站的相关软件 页面下载最新的P4Python。 您可以从Perforce网站获取API文档 。 * 该脚本目前已使用P4Python 2008.2版本进行过测试。

安装自定义工具

安装Python和P4Python之后:

  • 下载P4AutoMerge.py.txt python脚本并将其放置在Python路径中。

  • 在P4V的 工具(Tools) 菜单中,选择 管理自定义工具......(Manage custom tools...)

  • 选择 新建(New) > 工具......(Tool...))(可选地创建文件夹来对工具进行分组)。

  • 设置选项,如下图所示。 用分支名称替换指定字符串。 单击 选择......(select...) 了解P4V的自定义工具可用选项的更多信息。

P4AutoMergeSetup.jpg

  • 从这时起,您应该能够 右键单击 提交的变更列表并选择工具。

安装通用分支工具

您还可以设置P4V来显示分支名称的提示。设置方法几乎完全相同,但指定了一个特殊选项,而不是分支名称。

  • "P4AutoMerge.py -p $p -u $u -c $c -b $D -m SAFE %C"

  • 在描述中,键入以下文本:"Enter the branchspec you want to merge from (append -r to reverse it)."

P4AutoMergeSetupGeneral.jpg

一次合并多个变更列表

从技术上讲,该脚本支持一次合并一系列的变更列表。然而,不建议这样做,而且很难在自定义工具GUI中公开。不过,您可以使用命令行选项来自己控制它:

用法:P4AutoMerge.py [选项]

        说明:支持自动合并分支中变更列表的脚本。

选项:
  --version             显示程序的版本号并退出
  -h, --help            显示该帮助消息并退出
  -p PORT, --port=PORT  要使用的P4端口。即p4-server:1666。使用p4
                        环境搜索P4PORT(默认)。
  -u USER, --user=USER  要使用的P4用户。使用p4环境搜索P4USER
                        (默认)。
  -c CLIENT, --client=CLIENT
                        要使用的P4客户端。使用p4环境搜索
                        P4CLIENT(默认)。
  -r, --reverse         反转分支规范(如已指定)。默认值 = False
  -b BRANCHSPEC, --branchspec=BRANCHSPEC
                        <必填项> 要使用的分支规范。
  -m MERGETYPE, --mergetype=MERGETYPE
                        要执行的合并类型,有效选项为安全(SAFE)和
                        NULL。默认值 = 安全(SAFE)

不会对登录做任何调整,因此您必须已经对该客户端上的该用户进行了身份验证,以便该脚本能够成功运行。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback