Svn 将Subversion存储库的一部分迁移到新服务器并重新安装

Svn 将Subversion存储库的一部分迁移到新服务器并重新安装,svn,svnadmin,svndump,svndumpfilter,Svn,Svnadmin,Svndump,Svndumpfilter,我正在尝试将Subversion存储库的一部分迁移到新的Subversion服务器 http://server1/svn/repo1/path1/path2/path3->http://server2/svn/repo2/path3 我通过以下方式创建了一个完整的转储: svnadmin dump repo1 > repo1.dump svndumpfilter include /path1/path2 --drop-empty-revs < repo1.dump > rep

我正在尝试将Subversion存储库的一部分迁移到新的Subversion服务器

http://server1/svn/repo1/path1/path2/path3
->
http://server2/svn/repo2/path3

我通过以下方式创建了一个完整的转储:

svnadmin dump repo1 > repo1.dump
svndumpfilter include /path1/path2 --drop-empty-revs < repo1.dump > repo1_filtered.dump
通过以下方式过滤转储:

svnadmin dump repo1 > repo1.dump
svndumpfilter include /path1/path2 --drop-empty-revs < repo1.dump > repo1_filtered.dump
我的猜测是,空节点路径是问题的真正原因


关于我该怎么做,有什么建议吗?

我很容易就把你的问题重现出来,你的分析是对的。问题是创建基本文件夹的版本

如果从转储中删除此事务,它将正确导入

 sed -e "s,^Node-path: rep1/rep3,Node-path: ," < temp_filtered.dump > temp_hacke.txt
sed-e“s,^节点路径:rep1/rep3,节点路径:,”temp\u hake.txt
我是手动完成的,非常简单:只需查找节点路径为空的行,然后从上一个“修订号:”删除到下一个“PROPS-END”。一些python/awk/perl可以做到这一点(我没有尝试)

如果此文件夹中没有特殊的内容(如随时间变化的属性),则应该只出现一次

另一种解决方案是将存储库导入到单个文件夹中,而不是子树中(在这种情况下,只需将sed行更改为,节点路径:newPath)

请注意,我不知道有什么工具可以为您做到这一点

 sed -e "s,^Node-path: rep1/rep3,Node-path: ," < temp_filtered.dump > temp_hacke.txt