我的一个项目是在一个subversion存储库(我们称之为svn:// oldserver /),它将bald合并到一个新的存储库中(比方说svn:// newserver /)。
这个项目大量使用svn:externals来链接一些库的源代码。所有外部都包含修订号,因此我目前可以查看旧版本的代码,包括库。
“oldserver”将被转储并导入“newserver”。然后将外部更改为指向新服务器,但这仅适用于HEAD修订版。旧版本的两个问题:
我想知道是否有像subversion的网关服务器这样的东西,我可以在名称svn:// oldserver /下运行,它只是从svn:// newserver获取数据但是在重新编号后修改了数字。有谁知道这样的事情?
备选方案1:在将“oldserver”导入“newserver”之前,使用svndumptool之类的工具重新编号外部。但如果我犯了错误,我将无法在之后纠正它。这就是我拒绝这个解决方案的原因。
备选方案2:让旧服务器运行,只需配置为只读。它只占用服务器硬盘上的更多位置,但如果我找不到更好的解决方案,我可能会使用此解决方案。
答案 0 :(得分:2)
最安全的方法是运行某种脚本在旧存储库中为每个外部目标所针对的特定版本创建标记,然后将实际外部定义指向该标记的HEAD修订版,例如:给出
的外部定义-r1234 svn://oldserver/libraries/lib1 lib1
制作像
这样的标签svn cp -r 1234 svn://oldserver/libraries/lib1 svn://oldserver/libraries/tags/lib1-r1234
并更改外部
svn://oldserver/libraries/tags/lib1-r1234 lib1
这些标记将在转储和导入后稳定并指向新存储库中的相应修订,您可以将它们从批量从oldserver
切换到newserver
。