svn迁移到gitlab(保留提交记录)

svn多简单,打死我也不用git

...

嗯,gitlab真香


  1. 进入svn服务器,安装git-svn

    yum install -y git-svn

  2. 在windows SVN工程目录上提取出svn提交者(这一步是为了后面SVN提交记录映射到gitlab)

    svn log > log.txt

    注意要把log.txt改成utf8格式,不然传到linux上无法解析

  3. 把log.txt上传到svn服务器进行处理

    grep "^r[0-9]" log.txt | awk -F "|" '{print $2}' | sort -n | uniq > users.txt
    while read line;do echo "$line = $line <$line@gmail.com>" >> user;done < users.txt

    最终形成的文件user如下:
    微信截图_20191117230741.png

  4. 在svn服务器,使用git-svn拉取代码

    git svn clone <svn_address> --no-metadata --authors-file=user <local_dir> --username=x1024
    其中,

    svn_address 即为待迁移svn的工程地址,可以用127.0.0.1提高拉取速度;
    –no-metadata 防止git拉取无用的SVN附加信息;
    –authors-file 指定用户映射文件,即上一步里生成的文件user;
    local_dir为本地存放该svn工程目录,若不存在,git会自行创建;
    –username 即为使用指定用户拉取代码,因此该用户必须要有拉取代码的权限。

    举例:
    git svn clone svn://127.0.0.1/movie --no-metadata --authors-file=user movie --username=x1024
    执行后,./movie目录下即为拉取后的代码,ls -la可以看到.git目录

  5. 在gitlab上创建对应的项目
  6. 进入刚刚拉取的目录,添加远程git库
    接上例:

    cd movie
    git remote add origin <gitlab项目地址>
    git push -u origin master

gitlabsvnsvn转gitlab