用户文章转载:一图看懂 | 我用这张图,看懂了 P4 Reconcile
本篇作者向华是一名游戏行业从业者,也是 Perforce 用户。
你好,我是向华。
前原神项目 P4 Admin,持续集成开发者,8 年游戏测试开发工程师。
最近在工作中,发现有不少同事对 P4 Reconcile 理解不深。
何为 Reconcile?
何时用,有啥效果?
需要注意什么?
今天的话题讨论一下,帮助大家一图看懂 P4 Reconcile。(文末有《一图看懂 P4 Reconcile.png》)
何为 Rwconcile?
Reconcile,英文意思是 「使协调一致」。
P4 用户都知道,就算是 Checkout 了一个文件,在 P4 服务器上都会有状态记录,并把状态广播给其他在线的 P4 用户。
而 P4 Reconcile 是将没有记录在 P4 服务器上的本地改动打开在 Pending Changelist 中。
然而,在某些特殊的情况下,我们需要用文件管理软件(Windows 的资源管理器,Mac 的 Finder 等),强制作出一些文件的修改、删除或添加。
而这些本地改动状态不会同步到 P4 服务器上。
怎样才能让服务器「知道」状态,并同步给其他 P4 协作者呢?
答案是 P4 Reconcile。
它能使「本地改动」与「P4 仓库」协调一致。
达到 Reconcile 的「协调」目的。
何时用,啥效果?
通常有 2 种场景会用到。
01 回家没网我改了一通
举个例子。
昨天,程序同学小张回到家,发现网断了,但又得赶需求,只好打开笔记本上的 P4 Workspace,强行去掉了部分代码文件的只读权限,并完成了需求开发。
▲ 本地强行设置可写权限,修改并保存文件
可以看到上图中强行设置可写的两个 C# 文件并没有进入 Pending Changelist。
P4 服务器没有记录到这两个修改状态,其他 P4 协作者更不可能「知道」。
除以上两个文件以外,小张在 Scripts 目录中,修改了若干其他代码文件。
问题来了,今天他想要提交这些被改动的文件,该怎么做?
用 P4 Reconcile!
02 我不清楚我改了哪些文件
说来也怪,开发者怎么能不清楚自己修改了哪些文件呢?
实际开发时确实容易发生。某些美术工具在保存源文件时,会同时悄摸摸地改动相关的其他文件。
举个例子。
美术同学阿兰本月产出了 20 组不同尺寸的美术素材文件,交稿之际,准备提交 P4。
但她发现新增和修改的素材文件,及美术工具引发的内容修改分散在项目文件夹各处,东一个西一个,毛估一下,竟然在十几个子文件夹中都有改动。
为了防止漏提交素材文件,该怎么做?
还是用 P4 Reconcile!
怎么操作,有啥效果?
P4 Reconcile 做得足够智能,它能将新增、修改和删除的文件统统列出来,并帮助开发者放在 Pending Changelist 中。
来看下图。
▲ 在文件变更的最小顶级目录,执行 Reconcile
▲ 新增、删除、修改的文件被 P4 Reconcile 一网打尽
当一个文件被放在 Pending Changelist 后,称之为 Opened Files,中文理解就是,文件被打开了。
而在 P4 中,只有状态为 Opened 的文件,用户才能提交至仓库。
温馨建议
虽然在 Workspace 中的每级目录都可以执行 P4 Reconcile,但从工程实践的角度,仍然给出 2 条温馨建议。
01 在顶层目录不执行 Reconcile
因为顶层目录执行 Reconcile 会很慢。
顶层目录包含了整个项目的大量文件,Reconcile 会去比对该范围内所有文件与 Depot 仓库中对应文件之间的差异,当文件越多,执行速度会越慢。
另外,P4V 的 GUI 需要渲染出执行结果的文件列表,文件列表过长,会直接导致 P4V 假死,影响你的办公效率。
所以,建议在顶层目录不执行 Reconcile,在包含文件较多的文件夹也不适宜执行 Reconcile。
反过来,这就要求开发者对工程路径有清晰的规划,并对修改的范围有明确的掌控力。
稀里糊涂的修改最终会导致 Reconcile 的滥用。
02 谨慎使用 Reconcile -w
这会清理所有本地变更,是真正意义上的与仓库文件「协调一致」。
执行结果将本地的修改一举清除,建议谨慎使用。
它还有个别名叫 p4 clean。该命令是 Workspace 清理专用命令。
一图看懂
P4 Reconcile 为本地不清晰的文件修改,提供了一套重新「协调」本地与仓库的解决方案。
一图胜千言,方便理解和收藏。
上硬菜↓
结语
今天的干货就到这里,希望对你有帮助。
如果你有任何 P4 的 最佳实践经验 或 疑难问题,请扫码加友与我交流,共同成长。
更多精彩,下期再会!
龙智集成全球主流工具及自研插件产品,为您量身定制 DevSecOps 解决方案。立刻联系我们(电话:400-7755-506 邮箱: marketing@shdsd.com),了解如何更好、更快地交付软件。
评论