SVN合并svn:externals属性时遇E200007错误求助
解决SVN合并时因externals仓库URL协议不同导致的UUID冲突问题
这个错误我之前处理过类似场景,核心原因是你在分支调整externals时,把Common仓库的访问协议从https改成了svn+ssh(或者反过来)——虽然两个URL指向的是同一个UUID的仓库,但SVN会将不同协议的URL视为不同的仓库上下文,因此不允许在同一个工作副本下混合关联这两种来源的内容,直接触发了E200007错误。
下面给你两种可行的解决思路,按顺序尝试即可:
一、统一所有环境的externals仓库URL协议
这是最根本的解决方法,确保分支和主干中svn:externals指向的Common仓库URL完全一致:
- 先检查当前分支中externals的配置:
你会发现当前分支用的是svn propget svn:externals /rootfolder/buildfoldersvn+ssh://repo/Common,而主干原本使用的是https://repo/Common(或者相反)。 - 在分支工作副本中,将externals的URL修正为和主干一致的协议:
# 假设主干用的是https协议,替换成你实际的外部路径和URL svn propset svn:externals "lib https://repo/Common" /rootfolder/buildfolder - 提交这个修正到分支:
svn commit -m "统一externals的Common仓库访问协议为https" - 现在重新尝试将分支合并到主干,SVN会识别到两个环境的externals指向同一个仓库,冲突自然就消失了。
二、清理工作副本缓存并重置externals
如果第一种方法没生效,可能是工作副本中残留了旧的仓库关联缓存,需要彻底清理后重新设置:
- 先将主干工作副本更新到最新状态:
svn update /rootfolder - 清理工作副本的缓存和未版本化文件:
svn cleanup /rootfolder --remove-unversioned --remove-ignored - 先删除主干中buildfolder的externals配置:
svn propdel svn:externals /rootfolder/buildfolder svn commit -m "临时移除buildfolder的externals配置" - 再将分支中修正后的externals配置合并过来,或者直接在主干中重新添加统一URL的externals:
svn propset svn:externals "lib https://repo/Common" /rootfolder/buildfolder svn commit -m "重新设置buildfolder的externals,统一使用https协议"
后续预防建议
- 和团队成员约定统一的仓库访问协议(比如优先使用https,除非有特殊场景需要svn+ssh),避免不同环境使用不同协议导致冲突。
- 修改externals配置后,一定要先在本地测试合并流程,确认没有问题再提交到远程分支。
内容的提问来源于stack exchange,提问作者Philip
相关产品推荐
相关产品推荐

