19年Q2集团整体启动SVN到Git迁移项目,12个事业群目前共迁移了3000+工程、240G代码库。在整个迁移过程中,何如保证平滑、稳定是重要基础工作。通过Git迁移的底层技术栈,解密版本管理工具差异性和迁移原理,能高效的解决日常项目实践中遇到的问题。

版本管理工具理念的差异性

Git目标特性

  • 速度极快,几乎所有操作都可以在本地执行;

  • 简单的设计;

  • 对非线性开发模式的强力支持(允许成千上万个并行开发的分支);

  • 完全分布式;

  • 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)。

直接记录快照,而非差异比较

SVN与Git主要差异在与对待版本数据的方法。

SVN将保存的信息看作是一组基本文件和每个文件随时间逐步积累的差异。

Git对当时的全部文件制作一个快照并保存这个快照的索引,随着时间的变化,它只保留一个链接指向之前存储的文件,更像是一个快照流。并且每当存储数据时都会产生SHA-1散列哈希值。

Git SVN桥接工具介绍

桥接工具命令格式为:git svn [] []。

通过clone命令可以从指定位置的svn目录创建一个新的仓库,并且带有当前地址的完整提交信息。

$ git svn clone SVNURL --authors-file=users.txt--no-metadata -s icode-git

创建users.txt映射关系如下:(此步骤可以跳过)

SVN用户名 = Git邮箱

……

配置远程仓库地址,指定组和工程名称,并推送到远程中央仓库。

$ git remote add origin Git域名:Group/Project.git

$ git push origin --all

桥接工具通过SVN上的文件数据+每次提交的差异文件,产生Git的底层树对象、提交对象、数据对象的时间快照索引。

详见官方源码文件https://github.com/git/git/blob/master/git-svn.perl

自助迁移功能设计

接入层

提供上层用户接入API,完成Git迁移工作。

Git导入线程: 通过分布式锁控制单个SVN工程串行导入,防止多用户重复导入产生多源码地址。

Shell脚本: 重点迁移逻辑,具体执行内容参见Git SVN桥接工具介绍。

轮询调度: 轮询获取SVN工程导入状态,并配置超时自动终止异常情况。

SVN权限模块: 执行指定SVN目录写权限回收,防止用户同时使用SVN和Git,产生部分源码丢失现象。

邮件周知: 通知工程迁移人、工程成员、管理员,迁移后的Git地址以及版本流操作帮助。

基础层

iGit高可用服务是通过Proxy组件路由访问控制,由Sharding服务管理元数据和存活服的多级代码仓库,完成代码库请求的无感知切换功能。

参考链接

1. Git中文手册:

https://git-scm.com/book/zh/v2

2. Git 参考手册:https://git-scm.com/docs/git-svn

3. Git 源码地址:https://github.com/git/git

svn 地址中文_iGit自助迁移SVN工程解密相关推荐

  1. 修改本地项目svn地址

    修改本地项目svn地址 服务器上项目的svn地址变动,怎么修改本地代码svn地址,如图:

  2. 当复制Web浏览器的SVN地址到TorioseSVN上时显示错误,无法解析URL

    查看全文 http://www.taodudu.cc/news/show-2755903.html 相关文章: [SVN异常]svn: E175003: The server at 'https:// ...

  3. linux svn更换数据仓库,Linux环境下SVN数据仓库迁移

    上一篇文章介绍了Windows环境下SVN数据的备份与还原,这篇文章介绍下Linux环境下数据迁移. 一准备工作 1安装环境 1 centOS7 2可上网 2软件需求 1 winSCP 2 PuTTy ...

  4. 迁移SVN注意事项及操作方法

    最近公司要迁移SVN到新服务器,虽说现在GIT貌似更胜一筹,但是相信用svn的公司还是不在少数,就花了点时间把自己迁移的过程整理了一下. 文档中也许还有不足之处,有问题的话,大家可以告诉我,我会在第一 ...

  5. svn update中文报错_svn不能更新也不能提交!为什么?

    下面是报错的整个过程,有点长哈~ Problems reported while synchronizing SVNStatusSubscriber. 0 of 1 resources were sy ...

  6. Android studio:更换SVN地址及错误svn: The repository at ‘svn://xxxxx‘ has uuid ‘XXXX‘, but the WC has ‘XXXX‘

    项目更换服务器后需要修改下svn地址.. 方法一 打开android studio-VCS-->Subversion-->Relocate弹出如下图所示窗口,更改前面的IP地址就行了. 方 ...

  7. SVN地址正确,能在网页打开,但是检出失败解决方法

    SVN地址正确,能在网页打开,但是检出失败解决方法 参考文章: (1)SVN地址正确,能在网页打开,但是检出失败解决方法 (2)https://www.cnblogs.com/zzd0916/p/76 ...

  8. 分享我的学习记录 svn地址

    地址:svn://121.42.160.2/myproject 用户名:scaner 密码:zhinengkan 这个用户只有读权限,没有修改的权限,如果有什么建议或代码中有不对的地方,欢迎再留言中告 ...

  9. 重置SVN用户名与密码,修改SVN的IP地址

    重置SVN用户名与密码,修改SVN的IP地址 重置SVN用户名与密码 ============== 1.通过删除SVN客户端的账号配置文件 (1)找到我们使用的客户端配置文件,在window xp下面 ...

最新文章

  1. python以缩进对齐的方式划分语句块_python以什么划分语句块
  2. c++飞扬的小鸟游戏_通过建立一个飞扬的鸟游戏来学习从头开始
  3. Java8 Stream详解~归约(reduce)
  4. 如何在Ubuntu 14.04上使用Percona XtraBackup创建MySQL数据库的热备份
  5. Unity URP一分钟实现遮挡透视
  6. 第12章类和动态内存分配
  7. 职场人,职场事,八卦一下职场那些有意思的公众号
  8. 教孩子编程python 语言 nostarch 下载_教孩子学编程 Python语言版
  9. 哪些专业软件可以测试cpu,常用的正经CPU测试软件有哪些
  10. android app 嵌入广告,流氓来了!如何拯救手机中嵌入广告的应用
  11. 网易云信发送短信工具类
  12. [文献阅读]Detecting Spacecraft Anomalies Using LSTMs and Nonparametric Dynamic Thresholding
  13. Kotlin-Android世界的一股清流-函数
  14. Mybatis面试合集
  15. 计算机系统中 使用二进制数的优势,大学计算机基础考试题库(含答案)
  16. Android sharesdk 集成Google登陆,报错Success,{isSigin:false}
  17. 在 Flutter 中自定义画笔 Painter
  18. linux通过无线网卡上网,在Ubuntu中使用PHS无线网卡上网
  19. 使用原汁原味的Java 语言
  20. 九号公司——高科技黑马的进击与困境

热门文章

  1. dj鲜生-30-退出用户的登陆
  2. fzyzojP2291 -- 小添添的庄园之道路修复
  3. 一文掌握关于Java数据结构所有知识点(欢迎一起完善) 1
  4. .NET快速信息化系统开发框架 V3.2-amp;gt;WinForm版本新增新的角色授权管理界面效率更高、更规范...
  5. bzoj 1061 志愿者招募 费用流
  6. Cocos2d-x win7 + vs2010 配置图文详解(转)
  7. 713C - 如何进入一个研究领域
  8. JavaScript玩转机器学习:​​​​​​​训练模型
  9. CentOS 7安装TigerVNC Server
  10. Spring JDBC和JdbcTemplate CRUD与DataSource示例