运行p4 copy命令时如何避免目标文件夹文件被标记为删除
问题原因
直接对文件夹路径执行无参数的p4 copy时,Perforce默认触发全目录镜像逻辑:会将目标文件夹的文件状态和源文件夹做完全对齐,除了拷贝源文件夹内的文件到目标外,所有存在于目标、但源文件夹中不存在的文件,都会被自动标记为待删除状态,这是Perforce做分支全量镜像的默认设计,不是操作异常。
解决方法
根据你的场景选对应方案即可:
- 最通用的兼容方案:给路径加递归通配符,显式指定仅复制源路径下的所有文件,不触发全目录镜像对齐
把原命令替换为:
加上p4 copy c:\source\... c:\target\......递归通配符后,Perforce只会为源路径下匹配到的文件生成拷贝/覆盖动作,不会扫描目标路径下的其他独有文件,自然不会产生删除标记。 - 高版本客户端(2021.1及以上)直接加
--no-delete参数关闭自动删除逻辑
命令写法:
该参数会显式禁止copy命令为目标独有文件生成删除记录,保留目标文件夹内所有原有文件。p4 copy --no-delete c:\source c:\target - 已经执行完原命令、生成了多余删除标记的场景:直接还原所有待删除记录即可,不会影响已经生成的拷贝记录
执行命令:
该命令只会回退待提交列表里标记为delete的文件操作,已经生成的copy类操作会完整保留。p4 revert c:\target\...#delete
小提示:执行所有p4写操作前,可以加
-n参数先预览操作列表,比如p4 copy -n c:\source\... c:\target\...,确认没有多余的删除/覆盖动作后,再去掉-n实际执行,避免生成多余的待提交记录。
内容的提问来源于stack exchange,提问作者Orinara
相关产品推荐
相关产品推荐

