Perforce如何基于指定changelist创建新的stream
指定历史CL版本创建Perforce Stream分支操作步骤
这是Stream类型Depot创建新分支时的默认行为:新开发流初始化populate默认拉取父流最新版本,要拿到mainline在CL#5的快照,按以下步骤操作即可:
- 第一步:创建目标流时跳过初始populate
不管是用P4V可视化界面还是命令行操作,创建//project/side_branch开发流时,取消勾选「创建后自动填充文件」选项,只完成stream元数据的创建,不要触发默认的文件拷贝。
命令行创建流的参考指令:
执行完之后新stream已经注册到depot里,但没有拉取任何版本的文件,不会自动同步到最新的CL#10。p4 stream -t development -P //project/mainline //project/side_branch - 第二步:手动指定CL#5作为源版本执行填充
先把你的本地工作区切换到刚创建的side_branch流,然后执行带版本限定的copy指令:
指令里的p4 copy -v //project/mainline/...@5 //project/side_branch/...@5就是明确指定拉取mainline在CL#5提交节点的完整文件快照,-v参数可以跳过本地文件同步步骤,直接更新服务端的分支元数据,仓库体量较大时能大幅节省操作时间。 - 第三步:提交变更完成分支创建
上一步的copy操作会生成一个待提交的changelist,里面包含了CL#5快照对应的所有文件内容,直接提交这个changelist即可。提交完成后//project/side_branch下的文件状态就和mainline在CL#5时完全一致,不会包含CL#6到CL#10的任何提交内容。
如果你已经误操作触发了默认populate、把CL#10的内容拉到了新分支也不用删流重建。只需要在side_branch对应的工作区执行
p4 sync ...@0清空本地同步记录,重置分支的have列表后,重新执行第二步指定@5的copy指令,提交后就能把分支内容覆盖为目标版本,后续的代码提交、跨分支集成都不会受影响。
内容的提问来源于stack exchange,提问作者CasualCoder
相关产品推荐
相关产品推荐

