如何设置 Perforce 类型映射(P4 类型映射)
游戏开发和虚拟效果制作工作室利用游戏引擎可以创造出令人难以置信的效果。但是对于像 Unreal Engine 或 Unity 这样的游戏引擎,会以大型二进制文件的形式存储项目资产。为了有效地利用和管理这些资产,版本控制系统需要将其以不同于其他文件类型的方式区别对待。
大多数版本控制公司都不能很好地对这些二进制文件进行有效管理。但是 Perforce Helix Core,作为游戏和媒体的版本控制标准,却以有效管理二进制文件和团队具有快速执行力而闻名于世。重要的是对 Helix Core 进行设置,以此来正确处理二进制文件。请仔细阅读这篇博客,学习如何通过创建一个 Perforce 类型映射来有效管理二进制文件。
关于 Perforce 类型映射(P4 类型映射)
Perforce 类型映射能够准确地将您准备如何处理文件的意愿传递给 Helix Core,即处理具有特定文件扩展名或特定文件夹中的文件的意愿。尽管 Helix Core 将检测文件类型并对其正确存储,但 Perforce 类型映射能够消除任何不确定性,尤其是能够消除因处理修饰符所造成的不确定性(稍后将作详细介绍)。
您需了解 Perforce 类型映射的内容
如果您使用的是 Helix Core 和游戏引擎,那么在开始处理文件之前设置一个类型映射对项目管理至关重要。这是因为类型映射只影响在创建类型映射后提交的文件。一旦创建好类型映射,该类型映射将确定需要将哪些文件存储为二进制文件或文本文件以及启用文件锁定功能等等。
文件类型
有几种特殊类型的文件文件可以存储在 Helix Core 中,但主要分两种类型——文本文件和二进制文件。
注:对于国际用户,请查看 utf-8 和 utf-16 信息的文件类型。
文件格式类型修饰符
对于您的类型图,修饰符发挥的作用才是最大的。它们允许您选择不同的功能。例如,Helix Core 中最重要的特性之一是独占锁定。这允许用户签出文件并防止其他人员覆盖用户的工作处理内容。处理游戏引擎文件时的最佳做法是始终将其签出并锁定。但在默认情况下,此功能处于未启用状态。修饰符是导致这种情况发生的原因。
我们将在此处列出几种类型的修饰符,但您可以在文档中找到更完整的列表。注:在文件类型后,您可以添加带有+字符的标志,然后添加标志。
这些标志内容在文件类型之后,可以相互组合。例如,binary+FlS4 表示会将文件存储为二进制、完整文件(未压缩)、具有独占锁定功能,并且仅存储文件的四个最新版本。
您还可以在类型映射中指定没有文件类型的标志。例如,+w //.../writeable/...表示会将可写文件夹中的所有文件设置为可写。
模式
模式是类型映射匹配的文件的仓库路径。模式以//开头,然后包含软件仓库名称、文件夹、通配符和文件扩展名的路径。
*表示一个通配符,可以匹配任意数量的字符,斜线除外。
...表示一个通配符,可以匹配所有子目录中的任何字符。
模式示例
示例 1:
binary+Fl //.../models/*.obj
例如,将任何名为“models”的文件夹中的所有.obj 文件设置为二进制、未压缩存储并采用独占锁定。这是处理以.obj 格式存储的 3D 模型的好方法。
示例 2:
binary+wS3 //.../bin/....obj
将所有.obj 文件保存在名为“bin”的文件夹下的任何位置,以将其视为二进制文件,始终可写入,并且仅存储最新的 3 个修订版。在编译 C++代码时,将链接文件存储在构建目录中,扩展名为.obj 格式。需要将它们保持为可写入状态,因为用户不会直接将其签出。
Git+不同的文件类型
如果您来自 Git 世界,类型图可能是一个新概念。这是因为在 Git 中,您只是存储源代码。一些团队也确实使用 Git LFS 来存储大容量文件。您可以识别要与 Git 分开存储的文件扩展名,然后使用代码指向二进制文件的存储位置。
对于许多团队来说,很难对其进行大规模管理。即使您只有一个项目,您也必须为每个文件和每个版本执行该操作。这使得构建传递途径变得非常复杂,这就是为什么有如此多的团队选择 Perforce 的原因所在。
不要忽略 P4 文件
设置类型映射的另一个重要部分是确定需要从版本控制中忽略哪类文件。该类文件不仅不会被锁定,而且还会从 Helix Core 中排除。当运行 ReconcileOfflineWork...或 p4 reconcile 时,该类文件不会被拾取。
我们建议所有项目在项目根目录中都存储一个.p4ignore 文件。这应该用于避免提交和同步传输不必要的大容量文件(如中间构建文件或烘焙数据)、频繁更改的临时文件(如日志文件)以及用户进行的特定设置和配置文件。这将使您更快地同步传输文件,避免发生混淆,并避免意外地共享私人用户数据。
与类型映射一样,p4ignore 只会影响创建忽略文件后提交的文件。如果您之前已将文件添加到软件库,则需要手动将其删除并重置文件权限以使其可写入。这是因为如果将某些文件设置为只读格式,则会导致游戏引擎某些设置和使用的配置文件出现问题,并且特定于每个用户。
当出现问题时……
因此,您需要使用 Helix Core 处理游戏引擎,您需要一个类型映射和一个忽略文件。但有时,实情情况可能并没有全部按计划进行。让我们总结一些常见的错误。
无法保存文件
例如,您在 Unreal 中工作,并且您收到一个错误数据,即您的派生数据缓存设置不正确。这可能是因为您在将文件添加到软件库之前没有设置.p4ignore 文件,导致这些文件被设置为只读格式。您需要从软件库中删除这些文件,然后在您的操作系统上手动启用写入权限。
构建因权限错误而失败
如果您正在尝试构建但提示您没有权限,则可能有一些中间文件,需要将其加上+w 修饰符,从而使引擎在构建时覆盖它们。您将需要设置您的类型映射,并手动更改任何之前提交的文件,保持为始终可写入形式。
游戏引擎或 Visual Studio 设置未保存
如果您的游戏引擎或 Visual Studio 设置没有被保存,或者它们正在被其他人员更改,那么某些特定于用户的文件夹和文件不会被忽略。请务必检查 p4ignore 示例,然后从软件库中删除这些文件,并重置您操作系统中对其的权限。
还不是 Perforce Helix Core 客户?
联系 Perforce中国授权合作伙伴——龙智,了解为什么这么多客户使用 Perforce Helix Core 进行版本控制。
评论