SVN有任何胜过git的地方吗?

好的技术问题通常会引出技术专家们依据经验得出的深层次的观点。但对于这样的问题的答案也很容易演变成完全基于个人喜好的情绪倾泄,而不是根据事实、标准和具体的专业知识。就比如本文的这个标题,如果你是一个SVN的坚定支持者,你完全可以把这句话反过来问。

我使用SVN有5年的历史了,而且现在在公司里仍然是使用SVN。但是大概在3年前,我的所有个人项目都已经迁移到了git(gitHub)上。我能想出很多git优于subversion的地方,大部分是体现在分布式优于集中式的特征上,但如果你让我说出任何SVN分过来胜过git的地方,我竟一时想不出来一个。但这就能说明git完胜SVN吗?

事实当然不是这样,就像是Windows和Linux,你不能说这个一定就比那个好。最近在stackexchange的讨论让我学习了不少。先举个简单的例子证明有些地方你只能用SVN而不能用git。谷歌的搜索排名算法,就不能放到分布式开放的代码库了。这种情况下SVN的集中式管理就是不二选择。下面就来条理的看看Subversion在哪些环境下比git更适用。

Subversion是集中式管理的数据仓库

虽然速度快和多副本等git分布式数据仓库显而易见的好处吸引了很多人的喜爱,但在很多情况下,一个集中式的数据仓库却是更合适的。例如,如果你有一些核心代码想只允许部分人能访问,把它放到git里必然是你不希望的。很多的企业都是将它们的代码集中管理的,我猜,所有(重要)政府项目估计都使用的是集中式数据仓库的版本控制系统。

Subversion的理念符合常规思维

这是说,很多人(特别是管理者或老板)对版本号有一种习惯的认识,把开发视作一种按时间的线性发展轨迹,这在他们脑子里根深蒂固。并不是找借口,Git的随意性并不是很容易去理解,你也许注意到了,任何一本关于Git的书都会在第一章第一节告诉你要抛弃脑子里所有的传统观念,重新认识。

Subversion只提供一种途径,没有第二选择

SVN是一个版本控制系统,它只提供一种方式做这些,每个人都使用相同的方法。就是这样。这使得你将代码从SVN迁移到其它集中式管理的VCS或从其它集中式管理的VCS迁进来变得很容易。Git并不仅仅是一个版本控制系统——它实际上是一个文件系统,它里面有很多的拓扑学知识来支持你如何在不同的环境中架设代码仓库——并且没有一个统一的标准。选择一个合适的拓扑结构就成了难题。

其它一些优势:

  • SVN支持空目录
  • SVN有更好的Windows平台支持
  • SVN可以check out/clone一个子树(sub-tree)
  • SVN支持特权访问控制svn lock,在处理很难合并的文件时非常有用
  • SVN支持二进制文件,更容易处理大文件(不需要把老版本拷来拷去)
  • 提交文件相对简单,因为没有pull/push操作,本地修改通过svn update自动的执行了同步代码的功能。

SVN有任何胜过git的地方吗?的更多相关文章

  1. 如何在svn系统中使用git

    如果正在使用svn,打算换到git,又暂时不想放弃已有的svn代码库,可以选择git-svn.说一说我自己从svn到git的经验吧. 开始 安装最新版本的git,从git 1.5.3以后支持git-s ...

  2. SVN仓库迁移到Git的完美解决办法

    参考文章Converting a Subversion repository to Git 1 使用git svn clone 拷贝svn仓库 cd ~/test_repo git svn clone ...

  3. svn版本控制迁移到git

    获得原 SVN 仓库使用的作者名字列表 因为导入到git需要配置原作者(svn提交人)和git账户的映射关系 其格式为: vim authors-transform.txt taoxs = xsTao ...

  4. svn 版本迁移到 git 仓库

    1.拉取 svn代码并转成 git 版本 git svn fetch http://svn.qtz.com/svn/qtz_code/java/qtz_sm/project/qtz_sm -Auser ...

  5. SVN如何迁移到Git?

    最近在使用华为软件开发云进行开发项目管理,目前华为软件开发云支持500M的免费项目空间,而且还可以在线编译和构建,不用担心开发环境和生产环境的不同,很好的体现了DevOps的开发理念. 之前一直是用s ...

  6. SVN仓库迁移到Git遇到的两个问题和解决办法

    OS: CentOS 7.0 准备: git svn git-svn sudo yum install git sudo yum install subversion sudo yum install ...

  7. SVN项目迁移到Git上(并带有完整的提交记录)

    公司需求:早期的一些项目使用的是SVN,现在想要更换为Git,需要代码迁移并且能在Git上看到之前在SVN中的项目的提交记录,公司没有使用gitlab,代码都push在公司的服务器上,用的是Torto ...

  8. SVN项目迁移到GIT

    源项目为SVN项目,  复制一份出来后. 在VS里无法修改 源码管理器的插件为GIT.    解决方法:  删除SVN插件信息 在解决方案文件中. 删除以下SVN信息就可以了   删除后:

  9. SVN如何迁徙到Git

    由于一直都是采用SVN作为源码管理,转到Git不能从头开始吧~~下面就具体说说如何将SVN已有的项目工程迁徙到Git上面 步骤 (1) 安装Git客户端程序(2) 将SVN上面的工程通过Git克隆到本 ...

随机推荐

  1. 8.JS数据类型

    ① 数据类型:字符串,数字,布尔,数组,对象,Null,Undefined ② JavaScript拥有动态类型.这意味着相同的变量可用作不同的类型: 实例 var x:   //x为undefine ...

  2. govendor

    cd  到工程目录. govendor init : 初始化 govendor fetch : 拉取包 go 1.6以后编译go代码会优先从vendor目录先寻找依赖包: controllers\ar ...

  3. 在react里面使用jquery插件

    在react里面使用jquery插件 背景: 虽然现在react,vue等框架开启了前端开发的新篇章, 但对于一些比较复杂的页面,比如想在项目里面生成 组织架构图,人员汇报关系等还是需要用到之前的 j ...

  4. RabbitMQ的安装与客户端的简单实用

    本文主要内容是RabbitMQ的安装步骤[Windows系统与linux上的安装]及客户端的简单使用. 1.下载 下载地址:http://www.rabbitmq.com/download.html ...

  5. haproxy官方配置文档地址

    http://cbonte.github.io/haproxy-dconv/1.6/configuration.html#4-option%20http-keep-alive

  6. 第三篇:python基础之数据类型与变量

    阅读目录 一.变量 二.数据类型 2.1 什么是数据类型及数据类型分类 2.2 标准数据类型: 2.2.1 数字 2.2.1.1 整型: 2.2.1.2 长整型long: 2.2.1.3 布尔bool ...

  7. 004 - 修改Pycharm默认启动打开最近的项目

    随着项目的增多, 可能会使用到不同的项目, 而有的时候我们导入项目到新一个窗口中之后, 下一次打开Pycharm就变成之前导入的那个项目了 那么之前我们的项目怎么找到呢? 修改一下Pycharm启动默 ...

  8. 在KitKat(Android 4.4.2) 推送网址给手机

    弱者才会回避问题. 最近想把网址推送给手机实现后台下载,打算故技重施,用短信传送然后中断广播的方法实现隐蔽传送.试了半天发现怎么现在拦不住短信了.查了一下才发现原来Android4.4增加了一个安全机 ...

  9. kali本機安裝openvas的血淚史復盤

    安裝openvas的血淚史 因爲學習的需要,需要裝openvas,但是在虛擬機裏面,無論怎麼更新跟新源,總是會有問題,一氣之下,便不用虛擬機了,將自己的物理機刷成了kali機,從此便進了一個大坑. 安 ...

  10. Java并发之synchronized

    Java多线程同步关键词是常用的多线程同步手段.它可以修饰静态类方法,实例方法,或代码块.修饰static静态方法时是对整个类加锁. 一.实现原理 在JVM中对象内存分三块区域,对象头.实例数据.对齐 ...