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

    参考:GIt - 迁移到Git 构建user.txt 关联svn用户和git用户。 用git svn导入svn库 ...

  • 如何解除git和svn对本地工程的版本控制

    在平日的工作中,随着自己折腾的越来越多,时不时会有从这个svn库迁移到那个svn库,从这个git仓迁移到那个git...

  • svn迁移到git

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

  • svn迁移到git

    本文参考自:Git-与其他系统-迁移到-Git。 也建议阅读之前,先看看此文章,本文主要是对里面方法的一个补充和完...

  • SVN迁移到GIT

    生成svn用户 转换为git用户 svn2git.py checkout svn的数据: 如果你的svn结构是标准...

  • svn迁移到git

    项目需要把代码从svn迁移到git,只迁移一个分支不迁移其他。参考https://stackoverflow.co...

  • git上传报错总结

    背景:公司要把项目都从svn迁移到git上 遇到的问题: POST git-receive-pack (chunk...

  • Git-flow 一个简单高效的Git工作流

    背景 由于Git的分支比SVN更好管理且更易使用,最近团队从SVN迁移到Git,需要重新规划开发流程,最终确定使用...

  • Author: ** not defined in users.

    最近在做svn迁移到git,遇到问题:"Author: ** not defined in users.txt f...

  • Git常用命令

    最近项目从SVN迁移到Git上了,学习了使用Git命令进行了整理我 Git 图形化工具Sourcetree用的还不...

网友评论

    本文标题:svn迁移到git

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