美文网首页
svn迁移gitlab并保留空文件夹与提交记录

svn迁移gitlab并保留空文件夹与提交记录

作者: 生动形象 | 来源:发表于2020-02-26 10:12 被阅读0次

    获取svn所有user
    填写svn仓库根目录地址,最后输出svn用户与git用户映射关系

    svn log https://xxxx/svn/xxxs -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2"@xxx.com>"}' | sort -u > ./svn2git.txt
    

    clone代码

    git svn clone https://xxx/svn/xxx/ --stdlayout --no-metadata --authors-file=./svn2git.txt <dist_xxx_temp>
    

    --stdlayout是使用svn标准目录结构,即trunk、tags、branches这种结构
    --no-metadata是去除svn元数据信息
    <dist_xxx_temp>处填入本地存储路径
    clone过程中可能会出现用户不存在的报错,这种情况下请检查svn2git.txt中是否包含该用户,且格式是否正确。添加完毕后,执行命令git svn fetch继续即可。
    调整分支
    根据实际情况,将.git/refs/remotes/origin/tags下内容挪到.git/refs/tags/,将.git/refs/remotes挪到.git/refs/heads/
    执行命令

    git branch -r  #远程svn分支
    git branch -l  #本地git分支
    git tag -l  #本地git tag
    

    检查结果是否正确,不正确的话再调整分支也可。
    push到gitlab
    重设远程仓库

    git remote rm origin
    git remote add origin http://xxxx/xxx.git
    

    push到仓库
    注意:push迁请先解决空文件夹的问题

    git push -u origin --all
    git push -u origin --tags
    

    解决空文件夹无法提交到git问题

    find . -type d -empty -and -not -regex ./\.git.∗ -exec touch {}/.gitkeep \;
    

    参考:

    1. Git 与其他系统 - 迁移到 Git
    2. 将代码库从 SVN 迁移至 Git 并保留所有 commit 记录
    3. SVN切换到Git方法及坑点
    4. SVN迁移Gitlab步骤
    5. gitlab上传空文件夹

    相关文章

      网友评论

          本文标题:svn迁移gitlab并保留空文件夹与提交记录

          本文链接:https://www.haomeiwen.com/subject/lwopchtx.html