Perforce父分支删重文件引发合并冲突及交互缺失的解决方案咨询
Perforce父分支删后重加文件的自动合并解决方案
当父分支对文件执行删除后重新添加操作时,Perforce在合并和变更交互(interchanges)处理中会出现异常:子分支未做任何修改,合并时仍产生冲突,且p4 interchanges会忽略删除对应的变更列表。以下是问题复现的操作日志:
PS C:\....\temporary_development_ws> p4 changes -r Change 1 on 2024/12/18 by none@temporary_ws 'Stream //testing/mainline saved' Change 2 on 2024/12/18 by none@temporary_ws 'Adding placeholder.txt' Change 3 on 2024/12/18 by none@temporary_development_ws 'Stream //testing/development sa' Change 4 on 2024/12/18 by none@temporary_development_ws 'Populate -S //testing/developme' Change 5 on 2024/12/18 by none@temporary_ws 'Deleting placeholder.txt' Change 6 on 2024/12/18 by none@temporary_ws 'Adding placeholder.txt again' PS C:\....\temporary_development_ws> p4 interchanges //testing/mainline/... //testing/development/... Change 6 on 2024/12/18 by none@temporary_ws 'Adding placeholder.txt again' PS C:\....\temporary_development_ws> p4 integrate //testing/mainline/...@6 //testing/development/... //testing/development/placeholder.txt#1 - integrate from //testing/mainline/placeholder.txt#3 PS C:\....\temporary_development_ws> p4 resolve -am C:\....\temporary_development_ws\placeholder.txt - merging //testing/mainline/placeholder.txt#3 Diff chunks: 0 yours + 0 theirs + 0 both + 1 conflicting //temporary_development_ws/placeholder.txt - resolve skipped.
无需手动解决冲突的简易方案
1. 分步骤整合删除与重加操作
先同步父分支的删除变更,再处理重新添加的操作,让Perforce按顺序处理状态变化:
# 整合父分支的删除变更(变更5)到开发分支 p4 integrate //testing/mainline/...@5 //testing/development/... # 提交该删除同步操作 p4 submit -d "Sync deletion of placeholder.txt from mainline" # 整合父分支重新添加的变更(变更6) p4 integrate //testing/mainline/...@6 //testing/development/... # 自动完成合并(此时无冲突) p4 resolve -am
2. 强制接受父分支最新版本
如果确认完全采用父分支删后重加的文件版本,直接跳过冲突检查,强制覆盖子分支文件:
# 执行基础整合操作 p4 integrate //testing/mainline/...@6 //testing/development/... # 强制接受父分支的当前版本 p4 resolve -at //testing/development/placeholder.txt # 提交最终合并结果 p4 submit -d "Integrate re-added placeholder.txt from mainline"
3. 一次性整合完整变更范围
直接指定从删除到重加的连续变更范围,让Perforce自动处理状态流转:
# 整合变更5到6的所有操作(删除+重加) p4 integrate //testing/mainline/...@5,@6 //testing/development/... # 自动解决合并 p4 resolve -am # 提交合并后的变更 p4 submit -d "Integrate deletion and re-addition of placeholder.txt from mainline"
内容的提问来源于stack exchange,提问作者foips
相关产品推荐
相关产品推荐

