写点什么

软件企业从 Subversion 迁移到 Git ,真的准备好了吗?

  • 2012-09-03
  • 本文字数:2025 字

    阅读完需:约 7 分钟

除了人,软件公司最宝贵的就是代码了,这些代码大多储存在 Subversion(以下简称”SVN”) 这样开源的版本控制系统(VCS)中。代码是容易修改和变更的,因此,代码的备份、历史追踪、协同编辑等任务同样需要版本控制系统完成。从最早本地 VCS 系统 RCS、1990 年 CVS、2000 年 SVN,到如今开源世界风头正健的 Git,同语言编辑工具一样,SVN、Git 都是程序员的必备利器。随着 GitHub 的流行,很多软件企业开始计划转向 Git,但是企业真的准备好了吗?

从 SVN 到 Git,不仅仅是工具的替换,还有基于其上的工具和一些管理流程的变化。笔者建议:软件企业需要评估自己当前的状态和企业文化,认真考虑商业目标,谨慎迁移。我们不妨从以下几点来探讨一下。

陡峭的学习曲线

对于采用 SVN 进行管理的企业,Git 相对复杂,开发工程师的学习曲线并不平缓。

Git 的命令分为高层和底层,常用的高层命令约有 30 多个,与 SVN 近似。这些操作不能继承 SVN 的经验,因此工程师需要重新学习 branch、merge、reset、rebase、revert、pull、fetch 等操作命令,需要重新了解哈希值格式的版本号,并用它来进行检出、比较等。

对于较多使用 word、ppt、excel、图片、IDE 等工具的人员来说,从类似 FTP 的 SVN 转向 Git ,学习过程会比较痛苦。

缺少角色授权和文件级访问控制

Git 作为开源自由原教旨主义项目,它没有对版本库的浏览和修改做任何的权限限制。Git 的创始人 Linus Torvalds 也曾说:“不要让权限成为政治的理由,Git 没有权限控制。”

由于缺少角色授权,因此在组织结构管理上比较困难。实际操作中,一个 Git 仓库用来实现一个项目,大型项目可能需要许多 Git 仓库配合实现。在 SVN 中不同项目在不同目录中,通过角色授权完成组织结构的规划。

实现商业目标的软件企业显然需要文档或代码的访问授权和控制,目前 Git 本身是不支持的,需要集成第三方工具实现访问控制。

有限的目录检出功能

SVN 是一个中心仓库和众多客户端目录的关系,因此,SVN 用户都熟悉工作在某个目录上,在不同的工作计算机上,检出目录就可以编辑。然而,Git 是一个中心仓库和众多客户端仓库的关系,你必须工作在整个仓库上,虽然在 Git1.7 版本后支持了类似目录检出的功能,但仍要先检出整个仓库。软件企业的工程师常同时在多个项目中工作,如果修改一点东西就需要克隆仓库,对故障响应将有影响。

浪费已投入的开发成本

软件开发生命周期管理工具的基础是版本控制系统,各商业软件开发管理平台都是基于自主研发的版本控制系统,在此基础上扩展到项目管理、文档管理、代码评审、发布部署、缺陷管理等。基于 SVN 的开源或自主研发的管理工具非常成熟多样。迁移到 Git,则完全浪费了投入到 SVN 管理工具的开发成本。

图形化工具及接口不够强

虽然 Git 的图形工具正在增多,但在 Windows 下还需要等待这些开源工具增强功能。同时,Git 的接口待加强,与众多工具集成待完善,这些都是需要时间来解决。

目前很多人倡导的 Git 的优点并非不可替代

Git 速度快,但是 SVN 使用用廉价的高性能主机同样可以提升速度;Git 无需网路也可以工作,但当前稳固的网络基础环境和多样的接入方式,让 SVN 并不担心网络问题。另外 Git 方便地处理分支的特性,如果通过控制开发节奏,增加评审,减少分支数量,就可以让分支合并更简单快键,开发会更有效率,SVN 也可以更好地管理分支。 SVN 的 1.7 版本以不兼容旧版客户端的代价新增和改进了很多功能,开始向 Git 靠拢,这也使 SVN 具备 Git 的特性。

鉴于以上分享的几个基本点,建议企业谨慎迁移。

笔者对某些场景的命令进行了比较,下表是在 Git-1.7 和 SVN-1.6 上测试的,目的是为了说明 SVN 的操作经验在 Git 上不能直接套用,当然 Git 也有许多独特的优秀功能。

场景 SVN Git 操作动作追踪 所有的操作均作为一次提交,并分配版本号,可追踪 可以撤销某次提交、合并的动作,好像没有发生一样 引用公共库 用链接目录实现
$svn propset svn:externals < module name> < repository_url> Git 先克隆仓库,再用子模块方式实现
$git clone < repository_url> < directory>
$git submodule add < repository_url> 在本地检出目录 用检出功能实现
$ svn co < repository_url> < directory> 需要先克隆仓库,激活目录检出功能, 通过配置需要保留的目录实现
$git clone < repository_url> < directory>
$cd < directory>
$git config core.sparsecheckout true
$echo < directory> >> .git/info/sparse-checkout
$git read-tree -m -u HEAD 新增文件到中心仓库 用提交功能实现
$svn add < file>
$svn commit –m “new file” 提交后,需要推送到中心仓库
$git add < file>
$git commit –m “new file”
$git push origin## 作者简介

李新,新浪产品部高级配置管理工程师,有丰富的软件流程方面的经验。


感谢黄玲艳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012-09-03 00:007690

评论

发布
暂无评论
发现更多内容

干啥啥都行,这次又拿了第一名!

青藤云安全

网络安全 主机安全 青藤云安全

解读Vue3模板编译优化

yyds2026

Vue

手写一个webpack插件

Geek_02d948

webpack

LED显示屏有色差要怎么处理?

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

喜讯!麦聪DaaS平台荣获“2022行业信息化优秀产品”奖

雨果

数字化转型 DaaS数据即服务 麦聪软件

GPU服务器到底有什么作用?

Finovy Cloud

云渲染 GPU渲染 云渲染平台

聊聊Vuex原理

yyds2026

Vue

深度解读Webpack中的loader原理

Geek_02d948

webpack

企业内部即时通讯工具WorkPlus,支持内网私有化部署

WorkPlus

SQL 碎碎念,你可能用不到但不能不知道的数据库技巧(1)

百里丶落云

数据库 后端 11月月更

「百幄」之办公平台:进一道门,办所有事

融云 RongCloud

数字化 办公

Vue.nextTick核心原理

yyds2026

Vue

Spring Boot「24」DAO 模式与 Repository 模式

Samson

Java spring Spring Boot 学习笔记 11月月更

阿里云ODPS升级为一体化大数据平台 满足用户多元化数据计算需求

阿里云大数据AI技术

大数据 阿里云

设计模式学习-基础知识

肥晨

设计模式 11月月更 设计模式基础

看直播,领报告 |《勒索软件的认识与防御指南》最新发布!

青藤云安全

网络安全 勒索病毒 主机安全 勒索 青藤云安全

文盘Rust -- 把程序作为守护进程启动

TiDB 社区干货传送门

开发语言

贯彻二十大报告精神,政企如何提前布局信创国产化移动数字化平台?

WorkPlus

马蜂窝毕博:分析完这9点工作原理,我们最终选择了 Apache SeaTunnel!

Apache SeaTunnel

开源 技术选型 数据集成 Seatunnel 数据集成平台

集群并发下的数据覆盖问题

苏格拉格拉

缓存 分布式 并发 一致性

从演进的视角理解微服务架构

苏格拉格拉

架构 微服务 微服务架构 架构演进

大咖说·我和我的伙伴们|云原生携手禾连健康助力医疗行业发展

大咖说

阿里云 微服务 云原生

TiDB上云之TiDB Operator

TiDB 社区干货传送门

集群管理 TiDB 底层架构 管理与运维 数据库架构设计

BI系统打包Docker镜像及部署的技术难度和实现

葡萄城技术团队

Docker 容器 BI

量子编程实践:Bell Pair电路及Deutsch算法

启科量子开发者官方号

#python #量子计算 #人工智能 #AI框架

【10.28-11.04】写作社区优秀技术博文一览

InfoQ写作社区官方

优质创作周报

稳定性治理方法论

苏格拉格拉

方法论 稳定性

嘉兴市等保测评公司有几家?叫什么名字?

行云管家

等保 等级保护 等保测评 安全等级保护 行云管家堡垒机

阿里云 ODPS-Hologres刷新世界纪录,领先第二名23%

阿里云大数据AI技术

大数据 交互式 ODPS 离线计算

开发工具安装

青柚1943

企业上云四大优势简单聊聊-行云管家

行云管家

云计算 企业上云 云服务器

软件企业从Subversion迁移到Git ,真的准备好了吗?_架构_李新_InfoQ精选文章