用途
本技能用于指导在 Perforce(P4)版本控制系统中解决文件冲突。当多个用户修改同一文件,或在同步、提交、分支集成过程中出现冲突时,需要按照本技能提供的策略和命令进行解决。
主要能力
- 冲突类型识别:内容冲突(双方修改同一行)、属性冲突(文件类型或权限变更)、删除冲突(一方删除、另一方修改)、移动/删除冲突、二进制冲突(无法合并,只能选择一方)。
- 三方合并:基于共同祖先(Base)、仓库版本(Theirs)和工作区版本(Yours)生成合并结果。
- 自动解决:使用
p4 resolve -am尝试安全合并;p4 resolve -at接受仓库版本;p4 resolve -ay接受工作区版本。 - 交互式解决:运行
p4 resolve进入菜单,可选择接受仓库版本、接受工作区版本、接受合并结果、编辑合并结果、查看差异、跳过文件等。 - 可视化合并工具:通过设置
P4MERGE环境变量,可调用 P4Merge、VS Code、Meld、Vim 等工具进行图形化合并。 - 高级解决:支持部分解决(仅内容或仅属性)、重新解决已解决文件、在分支集成时解决冲突。
- 冲突标记处理:手动编辑合并结果时,识别并移除
<<<<<<<、=======、>>>>>>>标记。 - 工作流与脚本:提供提交前解决脚本、集成工作流、批量解决模式、撤销解决的方法。
- 最佳实践与故障排查:包括频繁同步、提交前解决、预览冲突、测试合并结果、处理二进制冲突等建议。
使用方式
- 预览冲突:
p4 resolve -n查看需要解决的文件。 - 尝试自动合并:
p4 resolve -am自动合并无冲突部分。 - 检查剩余冲突:再次运行
p4 resolve -n。 - 手动解决:对剩余文件运行
p4 resolve进入交互菜单,或使用p4 resolve -t调用可视化工具。 - 选择策略:根据情况使用
-at(接受仓库版本)、-ay(接受工作区版本)或编辑合并结果。 - 验证完成:
p4 resolve -n应无输出。 - 提交:解决完成后执行
p4 submit。
适用场景
- 同步(
p4 sync)后出现冲突。 - 提交(
p4 submit)前需要解决冲突。 - 分支集成(
p4 integrate)时解决冲突。 - 处理二进制文件冲突(如图片、资源文件)。
- 处理删除与编辑冲突。
- 需要批量接受某一方版本或混合解决时。
限制
- 二进制文件无法自动合并,必须选择接受仓库版本或工作区版本。
- 自动合并仅适用于无冲突的内容变更。
- 可视化合并工具需要正确配置
P4MERGE环境变量。 - 解决后需测试合并代码,可能引入缺陷。
- 错误解决后可通过
p4 revert和p4 sync重新开始,但会丢失未提交的更改。 - 本技能未提供关于 Perforce 服务器配置、许可证或价格的信息。