【游戏研发必看】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。
例如:
如你所见,这三条规则将会 ignore 文件后缀为 .rubbish 的文件,并 ignore 根目录下第一层为 hungryandfoolish 的目录下的所有文件,但是第二层、第 N 层打的 hungryandfoolish 目录就不会被 ignored。
有了配置文件之后,还不算完。
第二步,需要设置 P4 的环境变量 P4IGNORE。
第三步,重启 P4V,才能让配置文件在 P4V 中生效。
这个特别像一个 terminal,配置了环境变量之后,需要重开才能加载到位。
从用户体验角度,笔者认为 P4 可以开发一个环境变量热加载功能,实现即改即用,这样在使用上会更加顺畅一些。
自问自答
如何验证生效?
除了直接对被忽略文件进行 mark for add 或 reconcile 外,我们还可以通过 p4 ignores 命令来进行「忽略性」验证,非常方便。
是否可以在多层不同的目录下都配置一个 p4ignore 文件呢?
上文在设置 P4IGNORE 环境变量时,用的是绝对路径。
如果在很多层都有一个 p4ignore.txt 配置,就不建议用绝对路径了。
比如在 Windows 平台,可以是
追问一下,能否配置不同名字的 ignore 配置文件呢?比如 res_ignore, code_ignore。
完全可以。
那么,这会采用哪一层目录的 p4ignore 配置呢?
实践证明,各个有效的 p4ignore.txt 会求并集,只要有一条规则命中 ignore,就会将路径中的文件 ignore。
举个例子:
可以看到,仓库中 tools/ 下 backup 目录中的 .p4ignore 同样起到了应该有的效果,它把后缀为 .jason 的文件给忽略了。
如果本地没有设置 P4IGNORE,又不想让人误提交,怎么办?
有保底措施。
P4 Admin 可以配置 p4 protection(即权限表),把需要的目录设置为不可 Write,这样能从服务器级别防止有人错误提交了无需版本控制的文件。
像这样:
Library 目录就全员禁止操作了。
关于 P4IGNORE,今天就说这些。
小知识汇集大智慧。
感谢阅读,祝你新年虎虎生威,大展宏图!
-end-
你好,我是向华。
前原神项目 P4 Admin,持续集成开发者,8 年游戏测试开发工程师。
评论