有个一个项目projectA在repoX中(http://server/repoA/turnk/projectA),现在需要把projectA从repoX迁移到repoY中。
1.把projectA从repoX中dump下来
svnrdump dump http://server/repoX/turnk/projectA > projectA.dump
2.过滤dump文件,把空的revision去掉,并且,去掉/trunk目录
cat projectA.dump | svndumpfilter --drop-all-empty-revs --renumber-revs include /trunk/projectA > projectA.dump.new
3.导入到新的repoB中
svnadmin load --bypass-prop-validation http://server/repoY < projectA.dump.new
在迁移过程中碰到的问题,
- 在#2过滤空revision的时候,不知道为什么,svndumpfilter会把一些不是空的rivision也过滤掉,必须使用cat加管道符的方式,才能正确的过滤空的rivision。
- 在#2过滤的时候如果inclde后面的目录指定的是“/”而不是"/trunk/projectA",在#3导入时就会报“/trunk” aleady exist的错。
- 在正式导入先可以用命令svnadmin create testRepo在本地创建一个local的repo,进行测试。比如在/Users/shqu/svn目录执行此命令,那么testRepo的SVN地址为file:///Users/shqu/svn/testRepo