`
阿尔萨斯
  • 浏览: 4205263 次
社区版块
存档分类
最新评论

开源点评:源代码版本控制系统介绍

 
阅读更多

  本文是“每日构建[4]:相关工具介绍”的第一部分。
  由于源代码版本控制系统(Revision Control System,以下简称RCS)属于“每日构建流程”的头一个环节,所以俺在介绍每日构建的相关工具时,先来聊一聊RCS类的软件。

<!--program-think-->



  ★老派的RCS
  在整个软件开发的生命周期中,RCS处于一个很基础的位置。很多软件工程的环节都会依赖于它。所以,RCS对于整个软件开发过程而言,是非常重要的。但是却有很多软件公司仍然在使用一些比较陈旧落后的RCS。因此,有必要先抨击一下这些老古董的弊端。
  ◇VSS
  要说老派的RCS,首推微软的Visual Source Safe(简称VSS)。VSS的设计是相当的老土,对源代码库的访问是基于局域网的共享文件夹方式。共享文件夹的方式那是要多土有多土:不光效率低下,而且容易产生安全隐患。
  光是设计老土也就算了,毕竟人家是九十年代早期设计的,那会儿TCP/IP还没流行呢!VSS还有更严重的问题,就是:误导了开发人员的对于源代码管理的观念(比如它对文件的锁定模式)。估计有很多开发的新手就是这样被带到沟里去的,以至于长期以来,一直有人在为VSS的锁定模式辩护。
  当然,VSS还是有少量优点的,比如:捆绑在Visual Studio中,和VS的其它套件整合得比较好。但是这少数优点远远不能抵消它那些严重的缺点。因此俺强烈建议:那些还在用VSS的同学,赶紧换掉吧!万一让别人知道你还在用VSS,以后上街都没脸跟人打招呼。如果大伙儿觉得俺说得太夸张,可以去看看牛人Coding Horror写的帖子(在“这里”)。

  ◇CVS
  骂完VSS,再稍微说一下曾经广为流行的CVS,(官方站点在“这里”)。
  显然,CVS的优点比VSS多多了。想当年,CVS几乎成了源代码版本管理的代名词。那会儿,大部分的开源项目都使用CVS进行代码管理。不过,用的人多了之后,大家开始发现CVS的一些弊端(比如不能改名文件/目录、比如不支持对目录的版本控制、比如Unicode/UTF8支持不够好、比如版本提交的原子性、比如......)。
  有些人受不了CVS的某些缺点,开发了一个改良版的CVSNT。这玩意儿俺曾经用过几年,比CVS好些,不过几个致命的缺点还在(比如上述提到的改名问题);还有些人更加激进,干脆另起炉灶,搞出全新的RCS(比如后面提到的SVN,就是为了取代CVS而设计的)。
  据俺的观察,目前RCS市场的趋势已经比较明显了:很多后来居上的RCS正在逐步侵占CVS的市场份额。长此以往,CVS的人气和份额将会逐年下降。不过它暂时还不会消亡,毕竟还有很多老用户还在用它。
  所以,俺对CVS的观点是:还在用CVS的同学也可以考虑换一换了。不过捏,假如你暂时不想换,问题也不算太大(至少CVS的问题没VSS那么严重:-)。

  ★新潮的集中式RCS
  批完老派的RCS,接着来说说新潮的RCS。先从集中式的RCS说起。
  在新潮的集中式RCS软件中,SVN(全名叫subversion)是比较有代表性的(官方站点在"这里")。俺就重点来说说它。
  ◇SVN的优点
  其实SVN相对于CVS的优点很多,限于篇幅,俺只挑主要的优点介绍。
  1、能够导入多种RCS的代码库
  稍微懂行的人都知道,RCS迁移是一项很严肃的事情,不可等闲视之。如果新的RCS不能很好地导入原有RCS的代码库,那你肯定会死得很难看滴。
  SVN在这点上是比较成功的:由于它的影响力比较大,自然会有一些第三方的工具提供代码库的导入功能。比如SVN Importer,可以把其它很多种RCS(比如CVS、PVCS、MKS、ClearCase、SourceSafe)的代码库迁移到SVN。另外还有cvs2svn,专门用来导入CVS代码库。通过这些工具,你可以完整地保留原有代码库的所有历史版本。
  2、和CVS的使用类似
  另外,SVN的一些常用命令、概念、操作习惯都比较类似于CVS(当然,差别还是有的)。比如俺在CVS下经常使用的TortoiseCVS,也有对应的SVN版本(TortoiseSVN)。两者就像双胞胎,连界面风格都很像。所以,开发人员从CVS切换到SVN的学习周期会很短,阻力也会很小。
  3、支持文件/目录改名
  这个问题一直是CVS的致命伤,SVN没理由不搞定。
  有了这个功能之后,就可以直接在客户端进行文件的改名操作。拥有新名称的文件,会继承原有文件的版本历史。
  4、和Web密切整合
  这年头,Web越来越成为主流、B/S的操作方式也开始深入人心。SVN迎合了这种趋势,和Apache绑定在一起。由于深度整合了Web,很多版本管理的操作都可以直接在浏览器上搞定,巨简单的说。另外,Apache作为头号Web Server,功能、性能、安全性自然无可挑剔。
  5、能很好地整合其它的开发工具
  得益于SVN的设计理念和开源社区的人气,有越来越多的开发工具都可以和SVN无缝整合。比如在Bug管理方面,有:TracBugzillaMantis;至于各种编辑器/IDE的SVN插件,那就更多啦,俺就不再一一列举了。

  ◇SVN有些啥缺点
  1、不支持分布式
  这是比较明显的缺点。俺后面会提到,集中式相对于分布式具体有哪些缺点。
  2、性能
  感觉SVN在性能方面不咋滴,包括操作速度和存储空间,都不太理想。如果和后面提到的分布式RCS相比,这个缺点会更加明显(尤其是在代码commit的时候)。
  3、到处散落.svn目录
  其实这个问题倒不是什么大问题(CVS也有此毛病)。或许某些有洁癖的人看着那么多.svn会很不爽。俺自己倒是无所谓。

  ★新潮的分布式RCS
  ◇集中式和分布式的区别
  分布式RCS和集中式的主要区别在于:
  对于集中式RCS,只有一个中央代码仓库,每个开发人员自己机器上维护一个工作拷贝(working copy)。开发人员本地的代码在没有提交之前,是无法被RCS管理的,因此就无法进行各种操作(比如创建分支)。一旦你的开发机器和中央代码仓库的网络连接断掉(比如你把笔记本带回家写代码),你就只好干瞪眼,无法进行后续工作。
  对于分布式RCS,每一个开发人员的机器上都有一个代码仓库。你随时都可以提交到本地的代码仓库中。分布式RCS可以在网络连通的时候,再进行各个代码仓库之间的数据同步。
  为啥这几年,分布式的RCS多起来捏?一个主要的推动力来自于开源社区。大部分开源项目的开发人员都分布在世界各地,有些人受限于网络因素,不能很流畅地和代码仓库交换数据。在这种情况下,分布式RCS的优点就体现出来了。
  ◇哪些公司适合分布式的RCS
  俺个人认为,一般的软件公司,使用分布式RCS的优点不如开源团队那么明显。但是在如下几种情况,你可以考虑采用分布式RCS。
  1、开发团队的地域性分隔
  比如公司的开发团队分散在不同的城市,而且互相之间的网络连接不稳定。这有点类似于开源项目的团队,因此可以考虑采用分布式RCS。
  2、在公司之外开发
  所谓的“在公司之外开发”,主要有如下几种情况:比如开发人员喜欢在回家之后干活、比如开发人员经常去客户现场干活、比如公司雇佣兼职人员在家干活。
  不过这些情况都有一个前提条件,那就是:公司既没有搭建VPN,而RCS又无法从公网上访问。在这种情况下,才值得用分布式RCS。

  ◇几个常见的分布式RCS
  分布式的RCS,名气比较大的有:Git、Mercurial、Monotone、Bazaar。下面俺大致说一下头两个。
  1、Git(官方站点在“这里”)
  俺个人感觉,Git的最大亮点和卖点就是:它的创始人是Linus。单凭Linus这个金字招牌,Git就吸引到很多人气。而且Git在各方面的功能还是比较齐全的。
  它的主要缺点就是对Windows系统支持不太好(想想也是,Linus本人是Linux它爹,对Windows支持不好也在情理之中啊)。不过现在情况略有好转:Windows下的GUI客户端TortoiseGit才刚出来不久,将来如果能做到像TortoiseSVN那么成功,那Git在Windows下就前途光明了。
  Git的成功应用案例,俺不说大伙儿应该猜得到是:Linux Kernel。光这一个就足够说明问题了。
  2、Mercurial(官方站点在“这里”)
  Mercurial是另一个比较牛的分布式RCS。它还有一个绰号叫Hg,因为Hg是化学元素周期表中“水银”的缩写。
  Mercurial的特色是基于Python开发,所以它在跨平台方面,会比较有优势。另外,它在Windows上的GUI客户端TortoiseHg也比TortoiseGit要成熟一些。
  Mercurial相对于Git的缺点是性能不够好。没准不过和基于Python开发有关,不过也有可能是Git的性能太过优秀。
  Mercurial的成功应用案例有:Mozilla、OpenSolaris、NetBeans。这几个也都是重量级的项目。

分享到:
评论

相关推荐

    java开发oa办公系统源码-awcp:自动控制系统

    上开发大量企业信息化基础稳定版本,免费推给企业使用,使用过程中再提出个性化需求,然后再发包到awcp社区,大量懂平台的开发人员都会进行抢单实施,同时平台又搭建整套软件生态管理云,确保系统交付质量和进度,并...

    WCP知识管理系统源代码

    WCP 是一套BS架构的开源知识管理系统、知识库系统。它能提供团队知识库建设的一整套功能,从知识创建、知识更新、知识推送到知识评价、知识激励、知识统计以及基于以上功能权限控制等功能。 WCP开源版本采用...

    Eye-of-Horus:开源眼动追踪系统

    荷鲁斯之眼Eye of Horus是一个开放源代码平台,可以控制仅看着它们的任何设备。 该项目(硬件和软件)是在萨拉戈萨太空应用程序期间从头开始构建的,旨在解决太空可穿戴设备的挑战。 该设备可以帮助NASA和宇航员的...

    weixin122无中介租房系统+ssm(源码+部署说明+演示视频+源码介绍+lw).rar

    用户评价系统:租户可以对租住的房源进行评价,为其他用户提供参考。 后台管理:系统管理员可以管理用户信息、房源信息,以及对系统的数据进行维护。 演示视频和源码介绍可能包含在压缩包中,演示视频会展示系统的...

    CMS 网站管理系统 源码

    是一款完全开源的程序,都毫无保留的完全开放源代码,用户不需额外安装其他DLL组件,其最大的特点是易用,js调用方法,简单直观。 系统介绍 : 系统功能完善,覆盖面广、扩展性强、负载能力好、模板调用非常灵活、...

    基于Java+Springboot+Vue的教务管理系统.zip

    (源代码+数据库)1、学生: 登录、首页统计、学生选课、成绩查询、个人课表、学生评价、教学计划、培养方案、个人中心、密码修改2、教师: 成绩录入、课程评价查询、选课申请、个人信息、个人课表、成绩统计3、教务...

    基于ssm框架实现的java手机销售网站jsp项目.zip

    MySQL遵循GPL开源协议,这意味着任何人都可以免费下载、使用和修改其源代码。这种开放性促进了广泛的社区支持和第三方插件、工具的发展。此外,MySQL支持多种操作系统,包括Windows、Linux、macOS、Solaris等,确保...

    网上美容护肤品商城建站工具 v1.0.1.zip

    第三种方法:下载我们提供的源代码版本,并上传到你的网站空间,然后自动安装即可! 服务器套件所包含的软件:nginx-0.7.65 (Win32) PHP/5.2.6 mysql5.0 帮助右击程序图标 点击帮助 或者 右击程序图标 开启所有...

    在Eclipse中使用SVN与CVS代码管理工具管理项目

    二、 SVN(Subversion) - CVS(Concurrent Version System)的替代和升级版本先说说CVS,CVS是开源代码的配置管理工具,其源代码和安装文件都可以免费下载。记得在学校读研的时候,学校实验室的代码全部都用CVS管理,为...

    基于SpringBoot+Redis+Mybatis+MySQL+RabbitMQ技术的仿大众点评项目.zip

    MySQL遵循GPL开源协议,这意味着任何人都可以免费下载、使用和修改其源代码。这种开放性促进了广泛的社区支持和第三方插件、工具的发展。此外,MySQL支持多种操作系统,包括Windows、Linux、macOS、Solaris等,确保...

    asp.net知识库

    2分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高) 分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 ...

    画残差图的matlab代码-pidtool:pidtool

    其中,控制算法仿真部分可实现任意输入源(文本文件输入);算法变量及结果曲线绘制;实现控制参数的设置功能;提供激励数据输入接口;仿真噪声生成;仿真结果导入导出;提供一般控制效果评价;提供仿真噪声生成 ...

    新版Android开发教程.rar

    放源代码的移动系统。开放手机联盟包括手机制造商、手机芯片厂商和移动运营商几类。目前,联盟成员 数 量已经达到了 43 家。 移动手机联盟创始成员: Aplix 、 Ascender 、 Audience 、 Broadcom 、中国移动、 eBay ...

    建筑设计行业绿色风格整站源码-PHP

    操作系统:Linux/Unix/Windows 软件环境:Apache/Nginx/IIS + PHP 5.5~7.1 + MySQL 5.1 及以上 本地电脑推荐使用PHPstudy安装,及安装在合适的网站空间、虚拟主机上。 默认后台 域名/login.php 建筑设计行业绿色风格...

    Art2008 CMS 网站管理系统 v3.1.rar

    Art2008 CMS是一款完全开源的程序,都毫无保留的完全开放源代码,用户不需额外安装其他DLL组件,其最大的特点是易用,js调用方法,简单直观。 系统介绍 : Art2008 CMS系统功能完善,覆盖面广、扩展性强、负载能力...

    最好的asp CMS系统科讯CMSV7.0全功能SQL商业版,KesionCMS V7.0最新商业全能版-免费下载

    本系统是一款由文章、图片、下载、分类信息、商城、求职招聘、影视、动漫(flash)、音乐、广告系统、个人/企业空间、小型互动论坛、友情链接、公告、调查等20多个功能模块,并集成自定义模型、自定义字段等功能组合而...

Global site tag (gtag.js) - Google Analytics