将目录迁移到其他svn存储库

将目录迁移到其他svn存储库,svn,migration,Svn,Migration,我有一个svn存储库中的代码,称之为存储库A。现在我说我需要将内容移动到存储库B,但是存储库B已经为其他项目激活了一段时间。是否可以将特定目录从存储库a移动到存储库B,从而保留文件历史记录?通常,要将整个存储库迁移到新服务器,我将执行以下操作: svnadmin dump -r 0:179 rep_a > rep_a.dump svnadmin create rep_b svnadmin load rep_b < rep_a.dump svnadmin dump-r 0:179 r

我有一个svn存储库中的代码,称之为存储库A。现在我说我需要将内容移动到存储库B,但是存储库B已经为其他项目激活了一段时间。是否可以将特定目录从存储库a移动到存储库B,从而保留文件历史记录?通常,要将整个存储库迁移到新服务器,我将执行以下操作:

svnadmin dump -r 0:179 rep_a > rep_a.dump
svnadmin create rep_b
svnadmin load rep_b < rep_a.dump
svnadmin dump-r 0:179 rep_a>rep_a.dump
svnadmin创建代表
svnadmin load rep_b
但是,这将作用于整个存储库,并假设存储库B一开始是空的(我认为)。当然,我可以导出有问题的目录并将其导入到存储库B中,但我会丢失版本历史记录


有没有一种简单的方法可以在不丢失版本历史记录的情况下将特定目录从a移动到B?

查看SVN手册中的内容

假设您要将
rep_a
的目录
trunk/project
复制到
rep_b
,您必须使用以下命令:

svnadmin dump rep_a | svndumpfilter include trunk/project | svnadmin load rep_b
rep_a
相关的修订将添加到
rep_b
的历史记录中


当然,要小心,在那之前做个备份。此外,如果您有公共目录,则可能会很棘手,然后您必须从转储中删除目录创建(以避免两次创建相同的目录)。

谢谢!所以我假设目录的路径是相同的,那么repu_a上的trunk/project会变成repu_b上的trunk/project?以防万一,有没有一种简单的方法可以在迁移过程中更改路径?例如,trunk/project变成trunk\u import/project?有一个选项
svnadmin load--parent dir
。如果您需要更复杂的东西,我建议您看看这个旧的Perl脚本(如果您有Perl解释器):。Python中还有另一个,但我除了做一些简单的测试外,从未使用过它:这是否适用于死掉的存储库?你能在这里检查并回答吗?在你的链接上无法回答,问题已关闭。但在某种程度上是的。
svnadmin
命令不与SVN服务器通信,而是直接作用于存储库文件-它必须在服务器上发出或具有对服务器文件系统的访问权限。因此,如果您的服务器没有运行,但您知道SVN存储库(在磁盘上)的位置并可以访问它们,那么您就没事了。您必须确保svnadmin的版本与服务器的兼容,但不要使用旧版本。