将存储库移动到svn中的另一个子目录

时间:2014-08-07 13:58:08

标签: svn repository svnadmin

我将首先说svndumpfilter失败(使用此解决方案:Moving SVN repositories data with history as subfolders into another repository)我收到错误:

At line:1 char:30
+ svndumpfilter include \trunk < E:\tmp\test1.dump > E:\tmp\test1filter.dump
+                              ~
The '<' operator is reserved for future use.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : RedirectionNotSupported

执行后:

svndumpfilter include \trunk < E:\tmp\test1.dump > E:\tmp\test1filter.dump

我的问题:我有几个项目作为单独的存储库:

RootDir -
     project1
     project2
     project3
     project4
     project5
     project6

其中3个项目是针对同一家公司的,所以我想像这样移动它们:

RootDir -
     project1
     project2
     companyX -
         project3
         project5
         project6
     project4

即。我想将多个存储库移动到一个主存储库中作为子文件夹驻留。

存储库位于Windows Server 2012中,我使用远程桌面在其上运行svn命令提示符。

我没有想法

3 个答案:

答案 0 :(得分:1)

  • svnadmin不能仅从存储库转储子树,也不能使用子树的逻辑路径

svnadmin dump path_to_RootDir\project3 > temp_path_in_disk\dump_file.dmp

将转储整个存储库,您必须从中将project(3|5|6) svndumpfilter include解压缩到一个公共转储中。但是您可以使用svnrdump dump URL在一个命令中转储子树,并获得3个没有预过滤的文件

  • 如果您加载转储,则必须使用svnadmin load命令
  • 在加载时,您必须使用到repository-root的物理路径,而不是使用存储库中的逻辑路径:

svnadmin load path_to_RootDir < temp_path_in_disk\dump_file.dmp

  • 如果要更改数据的挂载点,从fump恢复,则必须使用load子命令的--parent-dir选项

svnadmin load --parent-dir companyX path_to_RootDir < temp_path_in_disk\dump_file.dmp

答案 1 :(得分:0)

注意:这解决了问题所不同的问题,实际上是要求将一组存储库移动到不同存储库的子目录中。

看起来您正在同一个存储库中移动项目,而不是在不同的存储库之间移动。如果是这种情况,那么我认为您只想使用两个URL参数使用svn mv命令。例如。 svn mv --parents http://example.com/RootDir/project3 http://example.com/RootDir/companyX/project3 -m "consolidate company X projects"。 &#34; - 父母&#34;如果中间目录不存在,则选项会创建。

答案 2 :(得分:0)

我遇到的问题是Windows Server 2012的Windows PowerShell。

我下载了Console 2并使用它而不是Windows shell。

&#34; Moving SVN repositories data with history as subfolders into another repository&#34;做了伎俩。

根据我的需要,我甚至不需要svndumpfilter部分。