目的
将原有存在Subversion(SVN)中代码导入到git,并且最好保留历史记录
解决方案
我的开发环境为MacOS,所以以下操作出现的命令均在终端中执行
这里,我们只针对于主线进行导入,分支不予考虑
1.创建一个本地文件夹,用于存放项目,然后先不进入文件夹
1 | //创建一个文件夹 |
2.获取历史信息的关键在于历史提交相关信息,提交时间和提交备注都没问题,唯独作者信息需要和即将导入到的git做对应
1
2
3//获得 SVN 使用的作者名字列表。这会将日志输出为 XML 格式,然后保留作者信息行、去除重复、去除 XML 标记。
$ svn log --xml | grep author | sort -u | \
perl -pe 's/.*>(.*?)<.*/$1 = /'
3.创建一个 users.txt 的文件包含像如下这种格式的映射
1 | zhangweiguang = 张伟光<halo-chn@outlook.com> |
1 | //创建users.txt文件 |
4.接下来就可以从SVN拉取项目到刚创建好的文件夹中了,但是千万别忘了使用users.txt文件中用户建立映射,如果历史记录过多可能会话费较长时间,请耐心等待
1 | //可以将此文件提供给 git svn 来帮助它更加精确地映射作者数据。 |
5.进入folder,执行 $ git log查看历史记录是否完整,去人没问题就可以提交到git远程仓库了
1 | //建立远程仓库链接 |