最近想要将自己本地的svn迁移到git。因为迁移的是本地库,期间遇到一些问题,如果有遇到相同问题的同学可以参考一下。
假设目标svn库为file:///e:/svn/reps/dir/ 查看git手册,按照上面的说明进行操作:
- 首先新建一个user.txt文件用来做用户名对应。比如:
svnzhangsan = gitzhangsan <gitzhangsan@gmail.com>
- 迁移
git svn clone file:///e:/svn/reps/dir/ --authors-file=users.txt --no-metadata -s new_git_rep
在我本地第2步操作会失败,提示
Can’t create session: Unable to connect to a repository at URL
‘file:///e:/svn/pres/dir’…
似乎是无法连接到指定的svn地址。地址是没有写错的。
尝试了下地址使用file:///e/svn/reps/dir/ 后没有报错但是迁移后的git库是空的。说明这样写址应该是对的(去掉e后边的冒号),但是不知道为什么还是不成功。
然后google了一下,有个说好像要使用svn://localhost/reps/dir/的方式才可以。也就是要使用svnserve服务去启动svn服务并使用对应的地址。按照这个方式尝试之后没有再报错,但是也没有得到正常的导入结果。导出的git库还是一个空的库。
尝试将迁移命令的命令去掉之后发现是-s这个参数导致了迁移不成功。去掉之后就成功了。
再次使用本地路径file:///e/svn/reps/dir/ 也成功了。
最后要导出本地svn最简单的方法就是(不需要使用svnserve启):
git svn clone file:///e/svn/reps/dir/ --authors-file=users.txt --no-metadata
new_git_rep