svn迁移到git

作者: 冰火人生 | 来源:发表于2017-06-19 19:40 被阅读88次

    SVN迁移到Git

    svn目录结构

    先来看看svn目录结构,这个会关系到我们如何迁移。以下说的都是单个项目的迁移。

    标准
    /d/proj1
    ├── branches
    │   ├── a
    │   │   └── readme.txt
    │   └── b
    │       ├── 11.txt
    │       └── readme.txt
    ├── tags
    │   └── v1.0
    │       ├── 11.txt
    │       └── readme.txt
    └── trunk
        └── readme.txt
    
    非标准

    目前我们使用的结构

    /d/proj1
    ├── branches
    │   ├── a
    │   │   └── readme.txt
    │   └── b
    │       ├── 11.txt
    │       └── readme.txt
    ├── develop
    └── trunk
        └── readme.txt
    
    git svn

    svn迁移到git的核心命令。该命令包含在git中,需要先安装git。

    使用示例

    git svn clone svn://192.168.1.108:9999/migrator/ --no-metadata --authors-file=userinfo.txt --trunk=trunk --tags=tags --branches=branches migrator
    

    从svn迁移到git的流程就是从svn拉取代码到本地,然后推送到git。当然我们肯定是希望能保留svn中的提交记录,这个完全没有问题。

    签名映射

    某些情况下,svn中的提交署名和要迁入的git系统署名不一致,这个时候可以指定名字映射,通过参数—authors-file指定。具体的文件格式可以Google下。

    如果签名要保持一致,那么可以忽略这个文件

    检出代码

    先看看对于标准的svn目录结构的工程如何迁移。

    对于标准svn目录结构的项目可以使用示例中命令,也可以使用以下简化的命令

    git svn clone svn://192.168.1.108:9999/migrator/ -s
    

    来说说示例中各参数的含义

    • 参数–no-metadata表示阻止git导出SVN包含的一些无用信息
    • 参数–authors-file表示SVN账号映射到git账号文件,所有svn作者都要做映射
    • 参数–trunk表示主开发项目,一般就是trunk
    • 参数–branches表示分支项目,--ignore-refs表示不包含后面的分支项目
    • 参数migrator表示git项目名称

    再来看看非标准svn目录结构的项目如何处理(以我们现在的目录为例)

    git svn clone svn://192.168.1.108:9999/migrator/ --no-metadata --trunk=trunk --tags=tags --branches=branches migrator
    

    先检出不包含develop的代码

    接着往下

    推送代码到git

    使用git命令将各个分支推送到git远端(切换到各个分支并push,不会的自己查询方法)

    到此,标准svn目录的工程就迁移到了git上。非标准svn目录的项目继续往下

    处理非标准svn目录项目

    删除本地检出的代码,重新检出不在svn标准目录中的分支(develop)

    git svn clone http://svn.***.com/svn/***/develop/ migrator
    

    将develop推送到远端

    git push git@git.***.com:***/migrator.git develop:develop
    

    至此,单个项目迁移完毕。而且新的git项目中保留了所有svn的提交记录。

    相关文章

      网友评论

        本文标题:svn迁移到git

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