SVN迁移到GIT且保留提交日志

  1. 首先,去下载一个git for windows
  2. 准备一个空的gitlab仓库
  3. 本地新建一个目录(GIT_CODE)用来装我们的源代码
  4. 在本地的svn目录下,按住shift键,然后空白处右击,选择在此处打开命令窗口(W)
  5. 然后开始进行svn账号与git账号映射,在命令窗口中输入:

    svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > users.txt
    
  6. 这个时候,应该在我们的svn目录内生成了一个users.txt文件,内容大致是这样子的:

    dl.wang01 = dl.wang01 <dl.wang01>
    kw.hou01 = kw.hou01 <kw.hou01>
    liuxia03 = liuxia03 <liuxia03>

    这里我们需要手动把=号右边的内容修改成git的名称以及对应的邮箱;这里只是提交日志的展示信息;=号左边的名称是提交过svn的用户名;
    这里需要注意一下:生成的用户名有可能不全,所以需要自己手动检测一下,如果SVN的提交用户没加全,后边在执行clone的时候,如果检测到该用户没有在users.txt中就会失败;

  7. users.txt拷贝到GIT_CODE目录内,然后使用Git Bash切换到GIT_CODE目录下
  8. 输入以下命令回车:

    git svn clone --stdlayout --no-metadata -A users.txt https://svn.您的svn地址.com/ ./
    // 如果只是想保留指定版本之后的日志,可以再加一个 -r 参数: -r 368594:HEAD
    git svn clone --stdlayout --no-metadata -A users.txt -r 368594:HEAD https://svn.您的svn地址.com/ ./
    // 关于如果查看SVN提交的版本,可以用小乌龟查看,右键-show log,然后 Revision 列就是我们提交的版本号
    // 当然,也可以全部保留日志,只是会从第一个版本,一条条的检索,如果提交记录很多,会花很长时间
  9. 然后就是慢长的等待
  10. 执行完后,再运行下面的命令:

    git remote add origin http://gitlab.您的git空仓库地址.git
    git push -u origin trunk:master
  11. 我自己执行完git remote add origin xxx.git后的操作都是用的Sourcetree(Simplicity and power in a beautiful Git GUI)

参考资料:git-svnSVN迁移到Git的过程

    原文作者:YuanWing
    原文地址: https://segmentfault.com/a/1190000014713162
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞