移动嵌套的SVN存储库

时间:2012-05-16 14:32:56

标签: svn batch-file visualsvn visualsvn-server

我需要在Windows中将SVN存储库从一台服务器移动到另一台服务器。诀窍是我想从嵌套存储库中的项目中排除除了主干,分支和标签之外的所有内容。

我目前有一个大型存储库,所有项目都在其中(MyBigRepo)。目前的结构是:

/Repositories/MyBigRepo/MyProject1/trunk
/Repositories/MyBigRepo/MyProject1/branches
/Repositories/MyBigRepo/MyProject1/tags

/Repositories/MyBigRepo/MyProject2/trunk
/Repositories/MyBigRepo/MyProject2/branches
/Repositories/MyBigRepo/MyProject2/tags

/Repositories/MyBigRepo/MyProject3/trunk
/Repositories/MyBigRepo/MyProject3/branches
/Repositories/MyBigRepo/MyProject3/tags

我只想移动MyProject1,但我想排除主文件夹MyProject1,只需移动MyProject1中的主干,分支和标签库。我想要移动MyProject2MyProject3。换句话说,我的目标是形成类似于下面的新存储库。

/Repositories/NewRepo/trunk
/Repositories/NewRepo/branches
/Repositories/NewRepo/tags

这是我为完成工作而创建的批处理文件:

:: Create a dump of the old repo
svnadmin dump %OldRepoPath% > %MyBigRepoDumpFile%

:: Remove the other projects
svndumpfilter include "MyProject1" < %MyBigRepoDumpFile% > %MyProject1DumpFile%

:: Create a new repo
svnadmin create %NewRepoPath%

:: Load the dump into the new repo
svnadmin load %NewRepoPath% < %MyProject1DumpFile%

我的问题是批处理仍在%NewRepoPath%下创建MyProject1目录,如下所示:

/Repositories/NewRepo/MyProject1/trunk
/Repositories/NewRepo/MyProject1/branches
/Repositories/NewRepo/MyProject1/tags

有没有办法从我的转储文件中排除额外级别(MyProject1)或将其向上移动一级,仍保留历史记录?

2 个答案:

答案 0 :(得分:1)

我认为你最好的选择是“按原样”移动它(带有额外的级别),然后通过新存储库中的svn copy重做结构。

还可以选择调整dumpfile as described here

答案 1 :(得分:0)

您可以运行两次svndumpfilter:

  1. 过滤掉“/ Repositories / NewRepo / MyProject1 /”路径(就像您已经完成的那样),
  2. 过滤掉“主干”,“分支”和“代码”。