美文网首页
SVN 迁移到 Git 实操步骤

SVN 迁移到 Git 实操步骤

作者: custa | 来源:发表于2018-03-15 21:10 被阅读6次
    • 在代码托管系统上创建空白仓库(不进行初始化)
    git@my-git-server:myrepository.git
    
    • 在 workspace 导出 SVN 提交记录的用户列表
    svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /' >users.txt
    

    编辑 users.txt,映射 Git 用户数据,格式为

    username = username <email>
    
    • 从 SVN 服务器克隆仓库
    git svn clone --authors-file=users.txt --no-metadata --stdlayout --prefix="" http://my-project.googlecode.com/svn/ my_project
    
    • 删除 peg-revision 分支(非必须)
    for p in $( git for-each-ref --format='%(refname:short)' | grep "@" ); do
        git branch -D -r $p
    done
    
    • 将 SVN 标签(被 git svn 识别为远程分支)转换为 Git 标签
    for t in $( git for-each-ref --format='%(refname:short)' refs/remotes/tags ); do
        git tag ${t/tags\//} $t
        git branch -D -r $t
    done
    
    • 将剩余远程分支转换为本地分支
    for b in $( git for-each-ref --format='%(refname:short)' refs/remotes ); do
        git branch $b refs/remotes/$b
        git branch -D -r $b
    done
    
    • 删除 trunk 分支(非必须)
    git branch -d trunk
    
    • 添加远程仓库,推送所有分支与标签
    git remote add origin git@my-git-server:myrepository.git
    git push origin --all
    git push origin --tags
    

    参考:
    https://git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git

    相关文章

      网友评论

          本文标题:SVN 迁移到 Git 实操步骤

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