




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VSS、CCVS、SSVN和和CleearCCasee等配置置工具的的评估和和比较 版本 修订历史记记录日期版本说明作者2007-09-061.0新建目 录TOC * MERGEFORMAT1概述 PAGEREF _Toc176868288 h 42主要功功能说明明 PAGEREF _Toc176868289 h 42.1IInteerneet网络络访问和和远程管管理 PAGEREF _Toc176868290 h 52.2并并行开发发支持 PAGEREF _Toc176868291 h 62.3跨跨平台开开发支持持 PAGEREF _Toc176868292 h 62.4开开发操作作使用的的
2、便利性性 PAGEREF _Toc176868293 h 62.5信信息安全全性 PAGEREF _Toc176868294 h 73性能详详述 PAGEREF _Toc176868295 h 73.1VVSS PAGEREF _Toc176868296 h 73.2CCVS PAGEREF _Toc176868297 h 73.3SSVN PAGEREF _Toc176868298 h 83.4CCleaarCaase PAGEREF _Toc176868299 h 163.4.11控制任任何文件件的版本本 PAGEREF _Toc176868300 h 173.4.22在版本本树中组组织元
3、件件发展的的过程 PAGEREF _Toc176868301 h 173.4.33使用常常见的检检出/编辑/检入范范例 PAGEREF _Toc176868302 h 183.4.44通过分分支功能能支持并并行开发发 PAGEREF _Toc176868303 h 193.4.55自动的的比较和和版本间间的归并并 PAGEREF _Toc176868304 h 19概述Visuaal SSourrceSSafee:微软软的版本本控制工工具,仅仅支持WWinddowss操作系系统。虽虽然简单单好用,但但是仅适适用于团团队级开开发,不不能胜任任企业级级的开发发工作。 Cleaarcaase:IBM
4、M旗下RRatiionaal公司司(20003年年被IBBM收购购)的一一款重量量级的软软件配置置管理(SCMM, SSofttwarre CConffiguurattionn Maanaggemeen)工工具。与与CVSS和VSSS不同同,Cllearrcasse涵盖盖的范围围包括版版本控制制、建立立管理、工工作空间间管理和和过程控控制。从从最初的的软件配配置计划划,到配配置项的的确立,从从变更控控制到版版本控制制,Cllearrcasse贯穿穿于整个个软件生生命周期期。 CCleaarcaase支支持现有有的绝大大多数操操作系统统,但它它的安装装、配置置、使用用相对较较复杂,并并且需要要进
5、行团团队培训训。 CVS:Conncurrrennt VVerssionns SSysttem。CCVS 是有着着三十年年以上的的时间的的考验。CCVS是是开放源源代码软软件世界界的一个个伟大杰杰作,由由于CVVS功能能强大,跨跨平台,支支持并发发版本控控制,而而且免费费,所以以它在全全球中小小型软件件企业中中得到了了广泛使使用。CCVS最最大的遗遗憾就是是缺少相相应的技技术支持持,许多多问题的的解决需需要自已已寻找资资料,甚甚至是研研究源代代码。CCVS是是一个典典型的服服务器/客户端端软件,有有UNIIX版本本的CVVS 、LLinuux版本本的CVVS和WWINDDOWSS版本的的CVS
6、S。CVVS支持持远程管管理,项项目组分分布开发发时一般般都采用用CVSS。 SVN:SSubvverssionn。采用了了更先进进的分支支管理系系统,它它的设计计目标就就是取代代CVSS,CVVS纵然然易用,但但也有一一些与生生俱来的的缺点,比比如CVVS不支支持文件件改名,只只对文件件控制版版本而没没有针对对目录的的管理等等。之后后CVSS 的创创始人之之一在其其现任公公司的资资助下开开发了SSVN,用用以针对对CVSS 的一一些弱点点进行改改进。主要功能说说明CVS纵然然是一个个老牌的的工具产产品,并并也对开开源事业业有贡献献,但CCVS的的命令行行操作着着实让一一些使用用者头疼疼。在对
7、对一个特特定版本本的文档档Cheeck in的的时候,需要输入一长串的路径名、文件名。在操作易用性上与CVS形成对比的是微软家族的VSS。作为微软的产品,在图形界面化操作上自不用多言,但VSS只能适用于小团队的开发工作。VSS是很好的入门级工具,但它的一些功能太过于“入门”,在验证密码、保存密码这些基本功能上处理的不尽人意。适用于大型软件开发的有“中坚级”的Clearcase,用它来管理一些小型的项目管理有些“大材小用”。Clearcase支持目录版本管理、异地团队开发、视图、多服务器等强大功能,所以一些大公司把它做为一、二级产品管理用,但同样它的价格也不菲。CVS是开源的,免费的,更何况它还
8、有一个理想的替代者SVN。SVN的设计专门针对CVS的问题作了改进,命令的设计更为合理,对二进制文档和目录这样的数据加强了控制能力,并且吸收了VSS的lock-modify-update(release)的模式和modify-merge模式的优点这两种方式在一定程度都支持并作了优化,没有提高使用的复杂度。由于SVN的设计结构很好,所以很容易为它开发客户端,还有WEB模式的,可以远程管理,支持RSS更改订阅。功能名称Interrnett网络和和远程管管理并行开发跨平台开发发操作的便利利性信息安全性性VSS最新发布版版本VSSS8.0可支支持此功功能最新发布版版本VSSS8.0支持持此功能能仅支持
9、Wiindoows 操作系系统安装、配置置、使用用均较简简单,很很容易上上手使用用安全性不高高,基于于文件系系统共享享实现对对服务器器的访问问,需要要共享存存储目录录,这样样用户可可以对VVSS的的文件夹夹执行删删除操作作。CVS支持,速度度一般支持支持几乎所所有的操操作系统统安装、配置置较复杂杂,但使使用比较较简单,只只需对配配置管理理做简单单培训即即可安全性高,CVVS服务务器有自自己专用用的数据据库,文文件存储储并不采采用 “共享享目录”方方式,所所以不受受限于局局域网。SVN相比CVSS,更加加适合基基于互联联网协作作开发的的团队,速速度也更更快相比CVSS,能够够保证所所有的修修改都
10、入库生生效同上同上同上ClearrCasse速度最快,且不受受网络连连接带宽宽的限制制、防火火墙以及及安全问问题的影影响。支持支持常见的的平台安装、配置置、使用用相对较较复杂,需需要进行行团队培培训安全性不高高,采用用C/SS模式,需需要共享享服务器器上的存存储目录录以供客客户端访访问Interrnett网络访访问和远远程管理理VSS、CCVS和和SVNN都提供供基于WWeb的的界面,用用户可以以通过浏浏览器执执行配置置管理的的相关操操作,即即通过这这样的方方法来实实现对异异地开发发的支持持。但是是相对于于CVSS,SVVN采用用统一的的二进制制差异算算法,所所以消耗耗更少的的网络带带宽,因因
11、此更加加适合基基于互联联网(或或广域网网)进行行协作开开发的地地理上分分布的团团队,即即版本服服务器集集中、单单一;客客户端可可广泛分分布。 其实上述实实现方法法有太多多的局限限性,例例如网络络(Innterrnett)连接接带宽的的限制、防防火墙以以及安全全问题等等。真正正意义上上的异地地开发支支持,是是指在不不同的开开发地点点建立各各自的存存储库,通通过工具具提供同同步功能能自动或或手动同同步。这这样做的的好处是是与网络络无关,即即便各个个开发地地点之间间没有实实时连通通的网络络,也可可以通过过E-MMaill 附件件等其它它方式将将同步包包发给对对方,实实现手动动的同步步。而CCleaa
12、rCaase就能能实现这这样的功功能。值得说明的的是,在在不同开开发点建建立各自自存储库库的方式式,主要要适用于于两个或或两个以以上位于于不同地地点的开开发团队队协作开开发的情情况。如如果仅是是采用虚虚拟团队队合作的的方式,开开发人员员以个体体的形式式散落在在不同地地方,则则更适合合通过IInteerneet 直直接操作作远程的的配置管管理服务务器。并行开发支支持 在团队协作作开发过过程中,有有两种主主要的模模式:集集体代码码权和个个体代码码权。采采用集体体代码权权模式进进行开发发时,一一段代码码可能同同时会被被多个开开发人员员同时修修改;而而采用个个体代码码权模式式进行开开发时,每每一段代代
13、码都始始终被一一个开发发人员独独享,别别人需要要修改时时也要通过该该开发人人员完成成。而配置管理理软件针针对这一一情况,也也采用了了不同的的策略:Coppy-MModiify-Merrge(拷贝、修修改、合合并) 的并行行开发模模式、CChecck uut-MModiify-Cheeck in(签签出、修修改、签签入)的的独占开开发模式式。在并并行开发发模式下下,开发发人员可可以并行行开发、更更改代码码,并能能够自动动检测到到代码冲冲突,并并自动合合并,或或提示开开发人员员手动解解决。VSS最新新发布版版本8.0可支支持并行行开发模模式,其其它三种种工具也也都可支持持。CVS 采采用线性性、串
14、行行的批量量提交,即即依次地地,一个个接一个个地执行行提交,每每成功提提交一个个文件,该该文件的的一个新新的版本本即被记记录到版版本库中中,提交交时用户户提供的的日志信信息被重重复地存存储到每每一个被被修改的的文件的的版本历历史中。但是当任何原因造成批量操作的中断时(典型原因包括:网络中断、客户端死机等),版本库往往处于一个不一致的状态:原本应该全部入库的文件只有一部分入库,很有可能版本库中的最新版本不能顺利编译,更为严重的是,随着其他的用户执行cvs update 操作,该不一致性将迅速在开发团队中扩散,从而严重影响团队的开发效率,并存在质量隐患。另外,假如该批量提交的中断没有被及时发现,开
15、发团队往往要花更多的时间进行软件调试和排错。SVN彻底底消除了了CVSS 的以以上弊端端。无论论批量提提交包含含多少文文件修改改,只有有当全部部文件修修改都成成功入库库,该提提交才变变得有效效,才对对其他用用户可见见;否则则,无论论任何原原因造成成中断,SSVN 都都会自动动执行“回回滚”(rrolllbacck)操操作。换换一个说说法,SSVN保证证所有的的修改要要么全部部入库生生效,要要么一个个也不入入库,即即对版本本库不作作任何的的修改。这这就是SSVN 的的原子性性提交(aatommic commmitt)。ClearrCasse可以以很容易易的产生生分支,也也可以很很容易的的将不同同
16、分支进进行合并并。这样样一来,即即便某一一部分的的工作被被冻结或或加锁,开开发者仍仍然可以以继续自自己的工工作(如如:在软软件集成成期)。在在这种情情况,开开发者可可以在分分支上工工作,CCleaarCaase的的自动化化操作和和图形归归并工具具可以很很容易的的重新集集成新的的工作。跨平台开发发支持 如果企业需需要从事事多个不不同平台台下的开开发工作作,就需需要配置置管理工工具能够够对跨平平台开发发提供支支持,否否则势必必会给开开发、测测试、发发布等各各个环节节带来不不便,将将使大量量的时间间被浪费费于代码码的手工工上传、下下载中。VSS仅支支持Wiindoows 操作系系统。CVS、SSVN
17、和和CleearCCasee支持几几乎所有有的操作作系统和和平台。但是CCVS和和SVNN的服务务器端在在Uniix, Linnux环环境下运运行会更更稳定可可靠。开发操作使使用的便便利性VSS安装装、配置置、使用用均较简简单,很很容易上上手使用用。CVS和SSVN安安装、配配置较复复杂,但但使用比比较简单单,只需需对配置置管理做做简单培培训即可可。ClearrCasse安装装、配置置、使用用相对较较复杂,需需要进行行团队培培训,需投入入成本大大概四万万元。信息安全性性VSS它是是基于文文件系统统共享实实现对服服务器的的访问,需需要共享享存储目目录,这这样用户户可以对对VSSS的文件件夹执行行
18、删除操操作,安安全性不不高。CVS和SSVN服服务器有有自己专专用的数数据库,文文件存储储并不采采用 “共享享目录”方方式,所所以不受受限于局局域网。安全性性较高。ClearrCasse采用用C/SS模式,需需要共享享服务器器上的存存储目录录以供客客户端访访问,安安全性不不高。性能详述VSS优点:操作作简单,容容易掌握握;权限限划分可可到文件件夹级,有有Reaad、CChecckOuut&CheeckIIn、AAdd/Rennamee/Deelette、DDesttroyy四种权权限级别别。 缺缺点:权权限管理理基于文文件共享享形式,只只能从文文件夹共共享的权权限设定定对整个个库文件件夹的权权
19、限,而而且必须须要有可可写权限限;版本本管理和和分支管管理只能能靠人为为的手工工设置;版本发发行时,只只能手工工挑选对对应的版版本文件件进行发发布。最新版本VVSS88.0主要要增加了了以下功功能:支持并行开开发支持基于IInteerneet的远远程访问问模式分布式团队队协作增增强CVSCVS 诞诞生于 19886 年年,当时时作为一一组 sshelll 脚脚本而出出现;119899年3月月,Brriann Beerliinorr用C语语言重新新设计并并编写了了CVSS的代码码;19993年年前后,JJim Kinngdoon最终终将CVVS设计计成基于于网络的的平台,开开发者们们能从IInt
20、eerneet任何何地方获获得程序序源代码码。截至至目前最最新版本本是20004年年12月月13日日发布的的功能介介绍代码统一管管理,保保存所有有代码文文件更改改的历史史记录。对对代码进进行集中中统一管管理,可可以方便便查看新新增或删删除的文文件,能能够跟踪踪所有代代码改动动痕迹。可可以随意意恢复到到以前任任意一个个历史版版本。并并避免了了因为版版本不同同引入的的深层BBUG。完善的冲突突解决方方案,可可以方便便的解决决文件冲冲突问题题,而不不需要借借助其它它的文件件比较工工具和手手工的粘粘贴复制制。代码权限的的管理,可以为为不同的的用户设设置不同同的权限限。可以以设置访访问用户户的密码码、只
21、读读、修改改等权限限,而且且通过CCVS ROOOT目录录下的脚脚本,提提供了相相应功能能扩充的的接口,不不但可以以完成精精细的权权限控制制,还能能完成更更加个性性化的功功能。支持方便的的版本发发布和分分支功能能。CVVS在服服务器端端维护代代码文档档库,不不同的开开发者在在本地机机器上建建立对应应代码树树,并利利用CVVS保持持本地代代码文档档同代码码文档库库的一致致。当由由于多个个开发者者对文件件的同时时修改造造成本地地与库中中的代码码文件冲冲突时,CCVS报报告并协协助解决决冲突代代码的合合并问题题。普通通开发者者(非管管理员)对对CVSS的使用用流程。SVN SSVN 是一个个自由/开
22、源版版本控制制系统,它它管理文文件和目目录可以以超越时时间。一一组文件件存放在在中心版版本库,这这个版本本库很像像一个普普通的文文件服务务器,只只是它可可以记录录每一次次文件和和目录的的修改,这这便使你你可以取取得数据据以前的的版本,从从而可以以检查所所作的更更改。从从这个方方面看,许许多人把把版本控控制系统统当作一一种“时时间机器器”。 SVNN 可以以通过网网络访问问它的版版本库,从从而使用用户可以以在不同同的电脑脑上使用用。一定定程度上上可以说说,允许许用户在在各自的的地方修修改同一一份数据据是促进进协作。由由于所有有的工作作都有历历史版本本, 你你不必担担心由于于失去某某个通道道而影响
23、响质量,如如果存在在不正确确的改变变,只要要取消改改变。SSVN的的历史: 早早在20000 年,CColllabNNet, Innc. ( HYPERLINK / htttp:/wwww.colllabb.neet/) 开始始寻找CCVS 替代产产品的开开发人员员,CoollaabNeet 提提供了一一个协作作软件套套件CEEE (ColllabbNett Ennterrpriise Ediitioon),它它的一个个组件是是版本控控制系统统。尽管管CEEE 在初初始时使使用CVVS 作作为其版版本控制制系统,但但是CVVS 的的局限性性在一开开始就很很明显,CColllabNNet 知道迟
24、迟早要找找到一个个更好的的替代品品。遗憾憾的是,CCVS成成为了开开源世界界事实上上的标准准,因为为没有更更好的产产品,至至少是没没有可以以自由使使用的。所所以CoollaabNeet 决决定写一一个新的的版本控控制系统统,建立立在CVVS 思思想之上上的,但但是修正正其错误误和不合合理的特特性。 20000 年2 月,他他们联系系Opeen SSourrce Devveloopmeent witth CCVS(Corriollis, 19999)的作者者Karrl FFogeel,并并且询问问他是否否希望为为这个新新项目工工作,巧巧合的是是,当时时Karrl 正正在与朋朋友Jiim BBla
25、nndy 讨论设设计一个个新的版版本控制制系统。在在19995 年年,他们们两个曾曾经开办办一个提提供CVVS支持持的公司司Cycclicc Sooftwwaree,尽管管他们最最终卖掉掉了公司司,但还还是天天天使用CCVS 进行日日常工作作,在使使用CVVS 时时的挫折折最终促促使他们们认真地地去考虑虑如何管管理标记记版本的的数据,而而且他们们当时不不仅仅提提出了“SVN”这个名字,并且做出了SVN 版本库的基础设计。所以当CollabNet 提出邀请的时候,Karl 马上同意为这个项目工作,同时Jim 也得到了他的雇主,RedHat 软件赞助他到这个项目并提供了一个宽松的时间。Collab
26、Net 雇佣了Karl 和Ben Collins Sussman,详细的设计从三月开始,在Behlendorf 、CollabNet、Jason Robbins 和 Greg Stein(当时是一个独立开发者,活跃在WebDAV/DeltaV 系统规范阶段)的恰当激励的帮助下,SVN 很快吸引了许多活跃的开发者,结果是许多有CVS 经验的人们很乐于有机会为这个项目做些事情。 最初的设计小组固定在简单的目标上,他们不想在版本控制方法学中开垦处女地,他们只是希望修正CVS,他们决定SVN 匹配CVS 的特性,保留相同的开发模型,但不复制CVS 明显的缺陷。尽管它不需要成为CVS 的继任者,它也应该
27、与CVS 保持足够的相似性,使得CVS 用户可以轻松的做出转换。 经过14 个月的编码,2001 年8 月31 日,SVN 自己能够“成为服务”了,开发者停止使用CVS 保存SVN 的代码,而使用SVN 本身。 当CollabNet 开始这个项目的时候,曾经资助了大量的工作(它为全职的SVN 开发者提供薪水),SVN 像许多开源项目一样,被一些激励知识界精英的宽松透明的规则支配着。CollabNet 的版权许可证完全符合Debian 的自由软件方针,也就是说,任何人可以自由的下载,修改和重新发布,不需要经过CollabNet 或其他人的允许。SVN和CCVS功功能性对对比: 一、SVNN包含绝
28、绝大部分分CVSS功能 SVN 作作为CVVS 的的重写版版和改进进版,其其目标就就是作为为一个更更好的版版本控制制软件,取取代目前前流行的的CVSS。SVVN 的的主要开开发人员员都是业业界知名名的CVVS 专专家。SSVN支持持绝大部部分的CCVS 功能/命令;SVNN 的命命令风格格和界面面也与CCVS 非常接接近。当当然,不不同的地地方正是是对CVVS 的的改进。 二、全局性性的版本本编号 一个新的版版本,并并得到一一个自增增量的版版本号NN+1,该该版本号号并不针针对某个个特定的的文件,而而是全局局性的、针针对整个个版本库库的。因因此,我我们可以以将SVVN 的的版本库库看作是是一个
29、文文件系统统或文件件目录树树的数组组。 从技术术的角度度来说,在在SVNN 中,“文文件fooo.cc 的第第5 版版本”这这个说法法是错误误的;正正确的说说法应该该是:”文文件fooo.cc 在版版本库被被修改了了5 次次,即执执行5 次coommiit 后后是什么么样子?”。显显然,在在SVNN 中,版版本库被被修改55 次后后fooo.c 的内容容,和被被修改了了6 次次后fooo.cc 的内内容很可可能完全全一样,因因为版本本库的第第6 次次修改很很可能只只修改了了版本库库的其他他部分,而而并没有有对fooo.cc 的进进行修改改。相反反,在CCVS 中,文文件fooo.cc 的第第1
30、.11 版本本和第11.2 版本总总是不同同的。 SVVN 的的全局性性版本编编号为SSVN 带来了了诸多的的优势:如对目目录或文文件执行行拷贝,无无论涉及及多少文文件,SSVN 不需要要对单个个文件依依次执行行拷贝命命令,仅仅仅需要要建立一一个指向向相应的的全局版版本号的的一个指指针即可可。 三、目录的的版本控控制 CVS 只只能对文文件进行行版本控控制,不不能对目目录进行行版本控控制,因因此CVVS 没没有任何何关于文文件“移移动”(mmovee) 操操作的概概念。当当人为进进行文件件移动操操作时,CCVS 只能注注意到,一一个文件件在一个个位置被被删除了了,而在在一个新新位置创创建了另另
31、外一个个文件。由由于它不不会连接接两个操操作,因因此也很很容易使使文件历历史轨迹迹丢失。设设置 CCVS 存储库库时,必必须非常常谨慎地地为每个个文件选选择准确确的位置置,因为为在设置置之后,几几乎就要要一直使使用这个个位置了了。 同样由由于CVVS 不不记录目目录的版版本历史史,CVVS 不不支持对对文件的的“重命命名”(rrenaame),人人为的对对文件进进行重命命名会使使得命名名前后的的文件失失去历史史联系,而而记录历历史本来来是版本本管理的的主要目目的。 还有有,CVVS 不不支持对对文件的的“拷贝贝”(ccopyy),人人为的拷拷贝对CCVS 而言,只只能看到到新的文文件的增增加,
32、而而不能记记录拷贝贝源文件件和目标标文件之之间的联联系。 综上上所述,缺缺乏对文文件“移移动”、“重重命名”、“拷拷贝”的的支持的的根源在在于CVVS 不不能记录录目录的的版本历历史,而而这些操操作在当当前的软软件开发发过程中中经常发发生,这这正是SSVN被被开发并并取代CCVS 的主要要原因之之一。 SVVN 将将目录作作为一类类特殊的的文件来来处理(事事实上,从从文件系系统的角角度来看看,目录录确实是是一类特特殊的文文件,当当目录中中的子目目录/文文件被删删除、重重命名、或或新的子子目录/文件被被创建时时,目录录的内容容将发生生改变)。因因此,SSVN 象记录录普通文文件的修修改历史史一样
33、记记录对目目录的修修改历史史,当发发生文件件/目录录的移动动、重命命名或拷拷贝操作作时,SSVN 能够准准确记录录操作前前后的历历史联系系。同样样,象对对文件的的不同历历史版本本进行比比较一样样,SVVN支持持对目录录的不同同历史版版本的比比较,清清晰展现现目录的的变化历历史。 四、原子性性提交 从使用者的的角度来来看,CCVS 和SVVN 都都支持对对多个文文件修改改的批量量提交,但但二者在在实现方方式上存存在本质质的区别别。 CCVS 采用线线性、串串行的批批量提交交,即依依次地,一一个接一一个地执执行提交交,每成成功提交交一个文文件,该该文件的的一个新新的版本本即被记记录到版版本库中中,
34、提交交时用户户提供的的日志信信息被重重复地存存储到每每一个被被修改的的文件的的版本历历史中。 CVVS 串串行批量量提交模模式的弊弊端在于于 当任何何原因造造成批量量操作的的中断时时(典型型原因包包括:网网络中断断、客户户端死机机等),版版本库往往往处于于一个不不一致的的状态:原本应应该全部部入库的的文件只只有一部部分入库库,很有有可能版版本库中中的最新新版本不不能顺利利编译,更更为严重重的是,随随着其他他的用户户执行ccvs upddatee 操作作,该不不一致性性将迅速速在开发发团队中中扩散,从从而严重重影响团团队的开开发效率率,并存存在质量量隐患。另另外,假假如该批批量提交交的中断断没有
35、被被及时发发现,开开发团队队往往要要花更多多的时间间进行软软件调试试和排错错。 CVSS 即使使在批量量提交不不发生中中断时也也会造成成不一致致:假设设用户AA 启动动一个需需要较长长时间才才能完成成的批量量提交;与此同同时,用用户B 执行ccvs upddatee 操作作。此时时,用户户B 很很有可能能得到一一个不一一致的更更新,即即用户BB 通过过“更新新”操作作,得到到用户AA 的部部分修改改文件。 SVVN 彻彻底消除除了CVVS 的的以上弊弊端。无无论批量量提交包包含多少少文件修修改,只只有当全全部文件件修改都都成功入入库,该该提交才才变得有有效,才才对其他他用户可可见;否否则,无无
36、论任何何原因造造成中断断,SVVN 都都会自动动执行“回回滚”(rrolllbacck)操操作。换换一个说说法,SSVN 保证所所有的修修改要么么全部入入库生效效,要么么一个也也不入库库,即对对版本库库不作任任何的修修改。这这就是SSVN 的原子子性提交交(attomiic ccommmit)。 由于于SVNN 的原原子性提提交特性性和全局局版本编编号方式式,当提提交成功功完成时时,一个个唯一的的、新的的全局版版本编号号产生,而而提交时时用户提提供的日日志信息息与该新新的版本本编号关关联,只只进行一一次存储储(区别别于CVVS 的的按文件件重复存存储)。 五、支持持变更集集概念 由于SVNN
37、的所所有提交交是原子子性的,每每次成功功提交形形成的唯唯一的全全局版本本号对应应此次批批量提交交的所有有文件修修改,也也就是说说,一个个SVNN 版本本号其实实对应了了一个逻逻辑上的的变更集集(chhangge sset),该该变更集集可能对对应于对对一个BBUG 的修复复,或者者对应于于对一个个已有功功能的改改进,或或者对应应于一个个新功能能的实现现。可以以说,变变更集是是一个软软件开发发活动的的逻辑结结果,该该变更集集可以通通过其对对应的版版本号在在软件开开发的其其他过程程中(如如软件合合并/集集成过程程,软件件发布管管理,变变更管理理系统,缺缺陷追踪踪系统)被被引用。因因此,SSVN 将
38、版本本管理从从单纯的的、单个个的文件件修改的的层次通通过逻辑辑上的抽抽象,上上升到更更便于理理解和交交流的开开发活动动的层次次。 六、差异化化的二进进制文件件处理 由于历史原原因,CCVS 主要是是为早期期的程序序员设计计的,CCVS 能够有有效处理理文本文文件(或或ASCCII文文件,源源代码文文件),可可以对文文本文件件进行差差异化的的存储、新新旧版本本的比较较,文件件合并等等;但对对于二进进制文件件,CVVS 则则明显力力不从心心。在CCVS 的版本本库中,对对于二进进制文件件的历史史版本,CCVS 唯一能能做的就就是对不不同的版版本进行行独立的的、冗余余的存储储,哪怕怕版本之之间其实实
39、只存在在微小的的差异。举举例而言言,一个个10MM 的二二进制文文件(照照片、图图形文件件、机械械设计文文件、电电子设计计文件)假假如每周周修改一一次,无无论每次次修改的的大小,一一年下来来,仅该该文件就就要消耗耗5000M 以以上的存存储空间间。而且且,客户户端每次次获取该该文件的的新版本本都要消消耗100M 的的网络流流量。 对于目目前的开开发团队队,无论论是软件件开发,WWeb 站点的的开发,手手机等电电子产品品的研发发,需要要进行版版本管理理的不仅仅是源代代码等文文本文件件,还需需要管理理需求文文档、设设计文档档、测试试文档、用用户手册册,图形形图像文文件,机机械/电电子设计计文件等等
40、诸多的的二进制制文件,CCVS 显然不不是一个个好的选选择。 与CCVS 不同,SVN 采用统一的二进制差异算法(binary differencing algorithm),即对文本文件和二进制文件采用相同的差异比较算法,并以相同的方式在版本库中进行存储:每次提交后版本库中只存储相对于先前版本的差异,从而可以节省大量的存储空间。 该二进制差异算法不仅应用在版本的存储上,更为重要的是,SVN 对二进制文件与文本文件一视同仁,当客户端需要获取新的版本时(如执行svn update),在网络上只有版本的差异被传输,从而大大减少对网络带宽的消耗。更多细节参见“七、双向的差异化压缩网络传输”。 七、
41、双向向的差异异化压压缩网络络传输 如上所述,CCVS 对二进进制文件件不能进进行有效效的差异异化处理理。对于于文本文文件,CCVS 仅仅支支持单向向的差异异化传输输:从CCVS 服务器器到客户户端的传传输是差差异化的的,即执执行cvvs uupdaate 时,只只有差异异的部分分从服务务器传输输到客户户端;而而当执行行cvss coommiit 时时,无论论代码变变化多少少,CVVS 都都需要从从客户端端向服务务器完整整传输被被修改文文件的全全部内容容,不能能只传输输差异。 相反反,无论论是文本本文件还还是二进进制文件件,SVVN 都都进行双双向的差差异化传传输,并并且差异异化内容容还要进进行
42、压缩缩/解压压缩的过过程:在在服务器器端获取取差异显显而易见见,与CCVS 类似;SVNN 在客客户端获获取差异异的秘密密在于 SSVN 在客户户端的工工作拷贝贝中隐含含了每个个文件的的一个“只只读的、干干净的”副副本(该该副本隐隐藏在隐隐含目录录.svvn 里里,通常常不可见见,该副副本还有有更多的的妙用,参参见“十十二、更更多的本本地/离离线操作作”),通通过比较较用户在在客户端端的修改改和该隐隐含的副副本,SSVN 获取需需要真正正传送到到服务器器的差异异,并对对差异进进行压缩缩后才进进行网络络传输。 对CCVS 而言,操操作的成成本(网网络带宽宽消耗是是最大的的操作成成本)与与被修改改
43、的文件件的大小小成比例例,而与与修改本本身的大大小无关关;对SSVN 而言,操操作成本本只与修修改本身身的大小小成比例例,而与与被修改改的文件件的大小小无关。因因此,与与CVSS 相比比,SVVN 消消耗更少少的网络络带宽(以以客户端端的存储储空间换换取更少少的带宽宽消耗在在目前的的计算环环境下应应该是个个相当不不错的选选择!)。SVN 更加适合基于互联网(或广域网)进行协作开发的地理上分布的团队 版本服务器集中、单一;客户端广泛分布。 八、高效、快快捷创建建分支和和基线 CVS 和和SVNN 都支支持分支支(brrancch)和和基线(ttag),通通过分支支与合并并,可以以有效支支持大项项
44、目的并并行开发发模式;通过基基线管理理,可以以准确标标识一组组文件的的版本,有有效进行行软件发发布管理理和必要要时的历历史回溯溯。 但但CVSS 和SSVN 在实现现分支和和基线的的方式上上存在很很大的不不同。CCVS 在创建建分支的的时候,需需要对所所有进行行分支的的文件进进行依次次的操作作,因此此分支的的建立成成本(主主要是建建立分支支所需的的时间,或或消耗的的计算资资源)与与参与分分支的文文件数量量成比例例,项目目越大,版版本库越越大,文文件越多多,分支支的建立立成本越越高;基基线(ttag)的的建立与与此类似似。 SVNN 的分分支和基基线是通通过执行行“拷贝贝”来建建立的:回想一一下
45、在没没有引入入版本管管理工具具的时候候我们是是如何进进行所谓谓的“分分支”和和“基线线”管理理的?答答案显然然是“拷拷贝” 我我们通过过“拷贝贝”或“备备份”来来建立基基线;同同样,为为支持多多个开发发人员可可以同时时进行开开发,我我们为每每个开发发人员创创建一份份“拷贝贝”。由由此看来来,SVVN 通通过“拷拷贝”来来建立分分支和基基线显得得非常自自然,有有点“返返朴归真真”的意意思。 由于于SVNN 的全全局版本本号特性性,SVVN 中中分支或或基线的的创建过过程,或或SVNN中的“拷拷贝”过过程,真真正的操操作是在在版本库库中创建建一个到到某一全全局版本本号的指指针(ppoinnterr
46、),不不再需要要针对众众多的单单个文件件依次执执行操作作。因此此,该操操作的成成本为一一个很小小的常数数,与项项目大小小,版本本库大小小,文件件数目的的多少无无关;并并且,分分支或基基线的建建立不需需要进行行版本的的冗余存存储,新新建立的的分支或或基线基基本不占占用版本本库空间间,分支支的后续续存储空空间的开开销也只只与修改改的大小小有关。 九、集成AApacche Webb Seerveer,提提供更多多的特性性 SVN 通通过与AApacche Webb Seerveer 的的集成,可可以提供供基于hhttpp/htttpss 协议议的版本本库访问问机制,从从而支持持SVNN 跨越越防火墙
47、墙的安全全访问。除除此以外外,SVVN 还还可以利利用更多多的Appachhe 特特性,包包括但不不限于:Apaachee 丰富富的用户户认证机机制(包包括通过过LDAAP服务务器如WWinddowss Acctivve DDireectoory 服务器器的用户户认证),基基于目录录路径的的精细粒粒度的访访问控制制,对传传输的网网络流量量进行压压缩/解解压缩,浏浏览版本本库目录录结构等等等。 十、支持WWebDDAV WebDAAV(WWeb-bassed Disstriibutted Autthorringg annd VVerssionningg)是一一种基于于 HTTTP 1.11 协议
48、议的通信信协议.它扩展展了HTTTP 1.11,在GGET、PPOSTT、HEEAD 等几个个HTTTP 标标准方法法以外添添加了一一些新的的方法,使使应用程程序可直直接对WWeb Serrverr 直接接读写,并并支持写写文件锁锁定(LLockkingg)及解解锁(UUnloock),还可可以支持持文件的的版本控控制。 Miicroosofft wwinddowss20000/XXP 及及IE, Offficce 还还有Addobee/MiicrooMeddia 的DWW 等都都支持WWebDDAV,这这又大大大增强了了Webb 应用用的价值值,以及及效能。对对于需要要大量发发布内容容的用户
49、户而言,应应用WeebDAAV 可可以降低低对CMMS 系系统的依依赖,而而且能够够更自由由的进行行创作。上上传、下下载变得得轻松自自如。 SVVN 通通过与AApacche Webb Seerveer 的的集成,支支持WeebDAAV 协协议,使使得业务务用户(bbusiinesss uuserrs)或或非技术术用户在在不安装装任何版版本管理理客户端端的情况况下轻松松访问SSVN 版本库库,不改改变业务务用户已已有使用用习惯,支支持分布布的业务务用户对对文档的的评审、修修改并实实现版本本控制,真真正将软软件开发发的生命命周期从从开发/技术团团队扩展展到项目目的全部部干系人人(sttakeeh
50、ollderr),避避免通过过电子邮邮件传递递文档的的混乱与与无序、通通过Wiindoows 操作系系统共享享造成的的安全漏漏洞、病病毒攻击击、历史史版本被被覆盖或或丢失、审审计困难难等诸多多典型问问题。 十一、更好好的冲突突标识与与处理 CVS 和和SVNN 都支支持通过过分支与与合并进进行并行行开发,并并可以自自动检测测到合并并时的冲冲突(cconffliccts),并并在合并并结果中中以标识识合并的的冲突部部分。 在CCVS 中,经经常会出出现由于于用户的的疏忽(如如,没有有注意到到冲突,或或没有完完全处理理好冲突突)而将将仍然带带有冲突突标识符符号的文文件直接接进行提提交(ccommm
51、it),从从而在版版本库中中产生垃垃圾版本本。 SVNN 有效效解决了了CVSS 的以以上问题题:SVVN 记记录并保保持文件件的冲突突状态,只只有当用用户明确确执行ssvn ressolvved 命令后后,该冲冲突状态态标识才才被复位位,该文文件才能能被提交交,从而而大大减减少了将将仍然带带有冲突突标识符符号的文文件直接接进行提提交的可可能性。 十二、 更更多的本本地/离离线操作作 众所周知,CCVS 客户端端的工作作拷贝中中包含了了一个隐隐含目录录CVSS,该目目录中记记录了客客户端需需要的一一些管理理信息;与此类类似,SSVN 的客户户端工作作拷贝中中也包含含了一个个隐含目目录.ssvn
52、,该该目录中中同样记记录了客客户端需需要的一一些管理理信息,如如版本库库URLL,当前前访问版版本号等等。 与CVVS 不不同的是是,SVVN 的的.svvn 目目录中还还包含了了工作拷拷贝中每每一个文文件的一一个“只只读的、干干净的”副副本。正正是由于于该副本本的存在在,使得得SVNN 与CCVS 相比,可可以执行行更多的的本地/离线操操作,即即某些操操作不需需要访问问版本库库服务器器,因此此不需要要存在从从客户端端到服务务器的网网络链接接,当然然也不消消耗任何何网络带带宽,这这进一步步增强了了SVNN 对广广域网的的友好支支持。 SVN 的的以下命命令可以以进行离离线操作作:svvn ss
53、tattus 显显示工作作拷贝上上的本地地修改概概况;ssvn difff 显示工工作拷贝贝上的本本地修改改细节,比比较修改改前后的的内容;svnn reeverrt 撤销销工作拷拷贝上的的本地修修改; 十三、 对对符号链链接进行行版本管管理 在Unixx 文件件系统中中,符号号链接(ssymbboliic llinkks,包包括硬链链接和软软链接)是是一种重重要的文文件系统统元素。CCVS 不能对对符号链链接进行行版本管管理;SSVN 则可以以对符号号链接进进行版本本管理。 十四、 元元数据管管理 与CVS 相比,SVN 增加了元数据(metadata)管理机制。即可以对版本库中的文件或目录
54、附加任意的“属性”(property),并记录属性的变化历史,也就是对元数据进行版本管理。一个SVN 属性是一个“属性名称/属性值”的二元组,如“BugNumber= 100”就是一个属性,可以将该属性附加到版本N 上,以说明版本N 改正了编号为100的BUG。 SVN 元数据的目的是提供附件的信息以满足流程或过程自动化的需要,以增强SVN 的管理能力和自动化程度。SVN 自身就通过“属性”来存储一些特殊的信息。一个使用SVN 元数据的例子:可以在一些批处理的脚本程序或SVN的钩子程序(hooks)中创建、访问、修改“属性”元数据来满足流程自动化的要求。非功能性对对比:性性能、可可用性、可可扩
55、展性性: 一、层次化化的体系系架构 尽管CVSS 是开开放源代代码的,但但同样由由于历史史的原因因,即使使是CVVS 的的主要开开发和维维护人员员也认为为目前CCVS 的代码码很难进进行后续续的维护护和扩展展,而这这正是SSVN 被重写写的主要要原因之之一。 SVVN 具具备设计计良好的的三层体体系架构构 版本库库层(RRepoosittoryy Laayerr),版版本库访访问层(RRepoosittoryy Acccesss LLayeer),和和客户端端层(CClieent Layyer)。 SVNN 在层层与层之之间定义义了明确确的接口口,使之之具备更更好的扩扩展性。 SVN 的的体系
56、架架构如下下图所示示: 二、可选的的后台版版本库实实现 CVS 的的版本库库以普通通的文件件系统方方式实现现;SVVN 的的版本库库支持两两种实现现方式:以嵌入入式的数数据库BBerkkeleeyDBB 实现现,或,采采用特定定格式的的普通文文件系统统FSFFS 方方式实现现。二者者在可扩扩展性、性性能、备备份/恢恢复等方方面各有有特色,用用户可以以根据自自身的实实际需求求进行灵灵活的选选择。 三、更好的的性能和和可用性性 由于CVSS 主要要针对文文本文件件的版本本处理而而设计,CCVS 在处理理大文件件时存在在性能和和可用性性问题 CCVS 在执行行提交时时需要向向服务器器传输整整个文件件
57、的内容容。一方方面,处处理文件件的大小小受制与与客户端端可用内内存的多多少;另另一方面面,大文文件的处处理将占占用服务务器的绝绝大部分分资源,可可能导致致服务器器性能严严重下降降,使得得其他用用户无法法访问和和工作,甚甚至出现现服务器器宕机。 SVVN 从从设计上上根本杜杜绝了CCVS 的上述述问题。SVN 能够处理任意大小的文件,包括比可用内存还大的文件,并且无论是在客户端还是在服务器端,SVN 始终只需要一个相对小、相对固定的内存开销 SVN 能够进行双向的差异化/压缩的网络传输,而且无论差异的大小,SVN 始终以大小固定的管道方式或流模式(stream)执行网络传输。事实上,由于客户端参
58、与了差异的计算,SVN 让大量的客户端一起分担服务器的处理负荷,从而从整体上提高了SVN 的性能和可用性。 四、可解析析、格式式规范的的输出 从用户的角角度来看看,命令令行方式式下的SSVN 的风格格与CVVS 的的风格非非常类似似,但SSVN 还是做做了重大大的改进进:SVVN 命命令行方方式下的的输出经经过了“认认真、仔仔细”的的设计,使使得其输输出不仅仅便于“人人”的阅阅读和理理解,同同样便于于程序脚脚本的自自动化解解析,或或者说,适适合“机机器”的的阅读和和理解。因因此,在在SVNN 下编编写批量量的自动动化脚本本程序更更加容易易,脚本本工作更更加可靠靠。 五、更好的的本地化化、国际际
59、化支持持SVNN 从一一开始就就充分考考虑到本本地化( Loccaliizattionn , L100N ) 、国际际化(IInteernaatioonallizaatioon, I188N)方方面的需需求,无无论是对对多字节节文件,多多字节文文件名的的版本管管理,还还是客户户端工具具的用户户界面/输出提提示信息息本地化化等,SSVN 都比CCVS 做得更更好。 六、丰富的的可选组组件 SVN 有大量量的客户户端工具具和服务务器工具具可供选选择,主主流的SSVN 客户端端有:SVNN 命令令行客户户端 支持持各种操操作系统统平台TorrtoiiseSSVN WWinddowss 下与与资源管管
60、理器紧紧密集成成的图形形界面客客户端Subbcliipsee SVNN 的EEcliipsee 插件件 七、支持从从CVSS到SVVN的版版本库迁迁移 由于SVNN 与CCVS 的诸多多共性和和历史渊渊源,现现有的CCVS 版本库库可以很很方便地地转换成成(或迁迁移到)SVN 版本库格式,使得在保留原来的CVS 历史版本信息的同时在SVN 下继续使用。现成的转换工具有:cvs2svn,该转换工具由SVN 的核心开发团队开发和维护。ClearrCasse优点:功能能强大,版版本管理理和分支支管理完完全自动动化。缺点点:权限限管理只只能是基基于Wiindoows的的用户安安全权限限管理。随着软件团
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论