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. Ubuntu增加Swap分区大小

    参考:http://blog.csdn.net/mznewfacer/article/details/7334592 以下摘自上述地址内容,并做了点小修改: 1.首先用命令free查看系统内 Swap ...

  2. error MSB6006: “CL.exe”已退出,代码为 -1073741502。

    错误1error MSB6006: “CL.exe”已退出,代码为 -1073741502.C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Plat ...

  3. 配置ADT

    配置ADT环境变量打开PATH,添加变量值:F:\android-sdk-windows\tools

  4. 配置react+webpack+es6中的一些教训

    1.要用es6,因为目前浏览器的支持情况,那么肯定需要插件将e6的代码转换成es5,我用的是babel-loader,事实证明使用6.x版本似乎是不行的,我换成5.3.2之后就成功了. 2.webpa ...

  5. RAM的分类

    转载自:http://wenku.baidu.com/view/b17d73244b35eefdc8d333ab.html RAM(随机存储器)可以分为SRAM(静态随机存储器)和DRAM(动态随机存 ...

  6. SQL.py

    import sqlite3,sys def convert(value): if value.startswith('~'): return value.strip('~') if not valu ...

  7. Linux服务:使用Supervisor管理进程

    一.简介 由于基本每个公司都会用到supervisor这个进程管理工具,这里简单阐述一下. Supervisor (http://supervisord.org) 是一个用Python写Linux下的 ...

  8. Java操作系统硬件的方法Unsafe

    通常Java代码都是运行在JVM中而不能直接访问系统硬件如进行内存分配释放等,但如果有需要跳过JVM直接用Java访问系统硬件,比如像C语言指针一样操作的话就可以调用Unsafe对象相关方法. 1.U ...

  9. webpack 小demo

    1 安装node.js 2 安装cnpm 3 安装webpack cnpm install --save-dev webpack 对于大多数项目,我们建议本地安装.这可以使我们在引入破坏式变更的依赖时 ...

  10. bzoj2159

    树形dp+第二类斯特林数 又是这种形式,只不过这次不用伯努利数了 直接搞肯定不行,我们化简一下式子,考虑x^n的组合意义,是把n个物品放到x个箱子里的方案数.那么就等于这个i=1->n,sigm ...