1

我的一个项目是在一个 subversion 存储库(我们称之为 svn://oldserver/)中,它将被合并到一个新的存储库中(比如说 svn://newserver/)。

本项目大量使用 svn:externals 链接一些库的源代码。所有外部都包含一个修订号,因此我目前可以查看旧版本的代码,包括库。

“oldserver”将被转储并导入“newserver”。然后外部将更改为指向新服务器,但这仅适用于 HEAD 修订版。旧版本的两个问题:

  • 导入将移动所有修订,但不会移动 svn:externals 中的相应数字。
  • 导入还将保留原始存储库名称(svn://oldserver/),而不是使用新的。

我想知道是否有类似 subversion 的网关服务器之类的东西,我可以在 svn://oldserver/ 名称下运行它,它会简单地从 svn://newserver 获取数据,但在重新编号修订号之后。有谁知道这样的事情?

备选方案 1:在将“oldserver”导入“ newserver ”之前,使用 svndumptool 等工具重新编号外部。但是如果我犯了错误,我以后就无法纠正了。这就是我拒绝这个解决方案的原因。

备选方案2:让旧服务器运行,只需配置为只读即可。它只是在服务器硬盘上占据更多位置,但如果我找不到更好的解决方案,我可能会使用此解决方案。

4

1 回答 1

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

然后这些标签将稳定并在转储和导入后指向新存储库中的相应修订,您可以将它们从批发切换oldservernewserver.

于 2012-11-08T15:44:44.053 回答