研讨会回顾|AI驱动的DevOps云端转型:Atlassian Cloud + AI 实战指南

400-666-7732

研讨会回顾

AI驱动的DevOps云端转型:Atlassian Cloud + AI 实战指南

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

来源:游戏QA  作者:向华        发布时间:2022-02-17 09:50

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

例如 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.jason
d:\tools\backup\abc.jason ignored   
    by d:\depot\tools\backup\.p4ignore:1:*.jason
> p4 ignores -i -v d:\depot\client\Library\
d:\depot\client\Library\ ignored   
    by d:\depot\.p4ignore:24:/client/Library/
可以看到,仓库中 tools/ 下 backup 目录中的 .p4ignore 同样起到了应该有的效果,它把后缀为 .jason 的文件给忽略了。
如果本地没有设置 P4IGNORE,又不想让人误提交,怎么办?
有保底措施。
P4 Admin 可以配置 p4 protection(即权限表),把需要的目录设置为不可Write,这样能从服务器级别防止有人错误提交了无需版本控制的文件。
像这样:

-end-

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

最新文章

相关产品

分享到:
关于龙智

龙智DevSecOps解决方案

龙智深耕DevSecOps相关领域近十年,集成DevOps、ITSM、Agile管理思路及该领域的优秀工具,提供软件研发生命周期管理解决方案,以及实施、培训、升级、数据迁移、定制开发、运维等服务。

龙智致力于帮助企业实现软件开发运营一体化,并确保安全防护融入软件研发的整个生命周期中。龙智提供从产品规划与需求管理、开发,到测试、部署以及运维全生命周期的解决方案与管理工具,帮助企业科学、高效、安全地管理软件开发,更快、更好地交付软件产品。

近年来,龙智团队潜心开发,先后帮助金融、通信、互联网、汽车、芯片、游戏、医疗等行业的1000多家企业促进开发安全运营的一体化的实践。 秉承着打造开放式DevSecOps的理念,龙智与国外其他多家DevOps工具顶级厂商如Atlassian、Perforce、Mend(原WhiteSource)、CloudBees、SmartBear等合作,将国际市场上先进的工具引入中国市场,帮助企业打造量身定制的DevSecOps解决方案、ITSM解决方案,助力企业高效开发与运维。

我们的自研产品包括Confluence水印插件,Timewise-Jira计划及实际工时管理插件,Jira服务台企业微信应用插件等;我们还与全球DevOps领域领先的企业建立了合作伙伴关系,我们是:

· Atlassian全球白金合作伙伴

· Perforce中国授权合作伙伴

· Mend (原WhiteSource)中国授权合作伙伴

· CloudBees中国授权合作伙伴

· SmartBear中国授权合作伙伴