TortoiseSVN不支持跨版本库合并,因其依赖同一仓库内可追溯的公共祖先版本;不同URL仓库无版本血缘关系,无法识别分支点与变更集,强行操作将失败或导致不可预测覆盖。
不能直接合并不同版本库的代码段。
这是 TortoiseSVN 的根本限制——它只支持同一 SVN 仓库(repository)内部的合并操作。所谓“不同版本库”,指的是 URL 完全不同、彼此独立的两个 svn:// 或 http:// 地址(例如 svn://server/repo-a 和 svn://server/repo-b),它们没有共享的版本历史,SVN 无法识别分支点、合并基点或变更集,因此合并向导会拒绝执行,命令行也会报错“no common ancestry”。
SVN 合并依赖版本树的血缘关系:
若确需将 repo-B 中某段代码引入 repo-A,应绕过“合并”机制,改用受控的手动方式:
svn:externals 属性,指向 repo-B 的某个固定标签(tag)路径——这样不复制代码,而是动态引用,适合共用工具库或配置模块以下情况仍属同一仓库,可以正常合并:
svn://host/project/trunk 和 svn://host/project/branches/feat-x
https://svn.example.com/repos/app/trunk 和 https://svn.example.com/repos/app/tags/v2.1
只要域名、端口、路径前缀完全一致,后面只是子目录差异,就属于一个 repository,TortoiseSVN 能自动识别祖先关系。
真正跨库时,没有捷径。强行用“Merge two different trees”填两个不同仓库的 URL,只会失败或产生不可预测的覆盖结果。