写点什么

【游戏研发必看】3 步配置 P4IGNORE + 精彩问答解析(用户文章转载)

  • 2022 年 2 月 22 日
  • 本文字数:1417 字

    阅读完需:约 5 分钟

【游戏研发必看】3 步配置 P4IGNORE + 精彩问答解析(用户文章转载)

在软件开发过程中,总会有构建生成的文件不希望进入版本管理中。

例如 Nodejs 工程中的 node_modules 目录。

还有 Unity 工程中的 Library 目录。

这些目录中的内容,总是会随着工程源代码的编译,或者资源的变动而频繁变动。

而对于 VCS,都会有个机制叫 ignore 机制。

P4 作为专业的商业 VCS,也支持 ignore。

与其他 VCS 一样,P4 的 ignore 机制支持用户设定一系列的路径匹配规则,在新增文件(Mark for Add)和 Reconcile 目录时,那些命中规则的文件和目录会被忽略。

IGNORE vs 构建变慢

就在本周,项目工程构建突然变慢,排查许久才发现是工程中的 Library 目录在每次构建初期都会被 p4 clean 清理掉。

如何正确且稳妥地配置 P4IGNORE 呢?

配置 P4IGNORE


不论是 Windows 平台还是 Mac,需要三步走。

第一步,配置 p4ignore.txt。

例如:

*.rubbish/hungryandfoolish/!hungryandfoolish/
复制代码

如你所见,这三条规则将会 ignore 文件后缀为 .rubbish 的文件,并 ignore 根目录下第一层为 hungryandfoolish 的目录下的所有文件,但是第二层、第 N 层打的 hungryandfoolish 目录就不会被 ignored。

有了配置文件之后,还不算完。

第二步,需要设置 P4 的环境变量 P4IGNORE。

# Windows 上的配置p4 set P4IGNORE=C:\Users\jasonxiang\depot\p4ignore.txt# Mac 上的配置p4 set P4IGNORE=/home/jasonxiang/depot/.p4ignore
复制代码

第三步,重启 P4V,才能让配置文件在 P4V 中生效。

这个特别像一个 terminal,配置了环境变量之后,需要重开才能加载到位。

从用户体验角度,笔者认为 P4 可以开发一个环境变量热加载功能,实现即改即用,这样在使用上会更加顺畅一些。


自问自答


如何验证生效?

除了直接对被忽略文件进行 mark for add 或 reconcile 外,我们还可以通过 p4 ignores 命令来进行「忽略性」验证,非常方便。

# -i 后面可以接多个路径作为参数p4 ignores -i -v file1 file2 file3 path4/file4
复制代码

是否可以在多层不同的目录下都配置一个 p4ignore 文件呢?

上文在设置 P4IGNORE 环境变量时,用的是绝对路径。

如果在很多层都有一个 p4ignore.txt 配置,就不建议用绝对路径了。

比如在 Windows 平台,可以是

p4 set P4IGNORE=p4ignore.txt
复制代码

追问一下,能否配置不同名字的 ignore 配置文件呢?比如 res_ignore, code_ignore。

完全可以。

p4 set P4IGNORE='p4ignore.txt;.p4ignore'
复制代码

那么,这会采用哪一层目录的 p4ignore 配置呢?

实践证明,各个有效的 p4ignore.txt 会求并集,只要有一条规则命中 ignore,就会将路径中的文件 ignore。

举个例子:

> p4 ignores -i -v d:\tools\backup\abc.jasond:\tools\backup\abc.jason ignoredby d:\depot\tools\backup\.p4ignore:1:*.jason> p4 ignores -i -v d:\depot\client\Library\d:\depot\client\Library\ ignoredby d:\depot\.p4ignore:24:/client/Library/
复制代码

可以看到,仓库中 tools/ 下 backup 目录中的 .p4ignore 同样起到了应该有的效果,它把后缀为 .jason 的文件给忽略了。

如果本地没有设置 P4IGNORE,又不想让人误提交,怎么办?

有保底措施。

P4 Admin 可以配置 p4 protection(即权限表),把需要的目录设置为不可 Write,这样能从服务器级别防止有人错误提交了无需版本控制的文件。

像这样:

Library 目录就全员禁止操作了。

关于 P4IGNORE,今天就说这些。

小知识汇集大智慧。

感谢阅读,祝你新年虎虎生威,大展宏图!

-end-

你好,我是向华。

前原神项目 P4 Admin,持续集成开发者,8 年游戏测试开发工程师。

用户头像

还未添加个人签名 2021.05.18 加入

还未添加个人简介

评论

发布
暂无评论
【游戏研发必看】3 步配置 P4IGNORE + 精彩问答解析(用户文章转载)