Perforce用户文章转载:一图看懂 | 我用这张图,看懂了 P4 Reconcile

来源:游戏QA   作者:向华        发布时间:2021-12-14 09:50

本篇作者向华是一名游戏行业从业者,也是 Perforce 用户。

你好,我是向华。

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

这是向华的第 5 篇原创内容。

640 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,强行去掉了部分代码文件的只读权限,并完成了需求开发。
640 1 1

 ▲ 本地强行设置可写权限,修改并保存文件

可以看到上图中强行设置可写的两个 C# 文件并没有进入 Pending Changelist。
P4 服务器没有记录到这两个修改状态,其他 P4 协作者更不可能「知道」。
除以上两个文件以外,小张在 Scripts 目录中,修改了若干其他代码文件。
问题来了,今天他想要提交这些被改动的文件,该怎么做?
用 P4 Reconcile

02   我不清楚我改了哪些文件

说来也怪,开发者怎么能不清楚自己修改了哪些文件呢?
实际开发时确实容易发生。某些美术工具在保存源文件时,会同时悄摸摸地改动相关的其他文件。
举个例子。
美术同学阿兰本月产出了 20 组不同尺寸的美术素材文件,交稿之际,准备提交 P4。
但她发现新增和修改的素材文件,及美术工具引发的内容修改分散在项目文件夹各处,东一个西一个,毛估一下,竟然在十几个子文件夹中都有改动。
为了防止漏提交素材文件,该怎么做?
还是用 P4 Reconcile!

怎么操作,有啥效果?

P4 Reconcile 做得足够智能,它能将新增、修改和删除的文件统统列出来,并帮助开发者放在 Pending Changelist 中。

来看下图。

640 2 1
    ▲ 在文件变更的最小顶级目录,执行Reconcile
640 3 1

    ▲ 新增、删除、修改的文件被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 为本地不清晰的文件修改,提供了一套重新「协调」本地与仓库的解决方案。

一图胜千言,方便理解和收藏。

上硬菜↓

640 4 1
结语
今天的干货就到这里,希望对你有帮助。
如果你有任何 P4 的 最佳实践经验 或 疑难问题,请扫码加友与我交流,共同成长。
更多精彩,下期再会!
你好,我是向华。
前原神项目 P4 Admin,持续集成开发者,8 年游戏测试开发工程师。

Helix Core是一款高效的版本控制软件。追踪,管理并保护用户的源代码、二进制文件及其他数字资产。