几款版本控制工具SVN、GIT、CVS及Mercurial的比较

几款版本控制工具SVN、GIT、CVS及Mercurial的比较

ID:42660768

大小:21.06 KB

页数:6页

时间:2019-09-19

几款版本控制工具SVN、GIT、CVS及Mercurial的比较_第1页
几款版本控制工具SVN、GIT、CVS及Mercurial的比较_第2页
几款版本控制工具SVN、GIT、CVS及Mercurial的比较_第3页
几款版本控制工具SVN、GIT、CVS及Mercurial的比较_第4页
几款版本控制工具SVN、GIT、CVS及Mercurial的比较_第5页
资源描述:

《几款版本控制工具SVN、GIT、CVS及Mercurial的比较》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、版本管理RCS,cvs,svn,git比较1,RCS(RevisionControlSystem)修订控制系统特点:1),简单 2),使用Lock机制防止多个开发人员对同一个文件同时进行修改.2,CVS(CocurrentVersionSystem)并发版本系统建立在RCS基础上,最流行的开放源代码版本控制系统特点:1),使用单一的主代码树,而不像RCS那样依赖多个目录.2),最大优点在于多名开发人员可以同时对一个文件进行修改.允许合并.这就"并发"开发.3,SVN(SubVersion)1)目录的版本控制CVS只能对文件进行版本控制,不能对目录进行版本

2、控制.CVS只能注意到,一个文件在一个位置被删除了,而在一个新位置创建了另外一个文件。由于它不会连接两个操作,因此也很容易使文件历史轨迹丢失2)SVN可以原子性提交CVS采用线性、串行的批量提交,即依次地,一个接一个地执行提交,每成功提交一个文件,该文件的一个新的版本即被记录到版本库中,提交时用户提供的日志信息被重复地存储到每一个被修改的文件的版本历史中。CVS串行批量提交模式的弊端在于-当任何原因造成批量操作的中断时(典型原因包括:网络中断、客户端死机等),版本库往往处于一个不一致的状态:原本应该全部入库的文件只有一部分入库,很有可能版本库中的最新版本

3、不能顺利编译,更为严重的是,随着其他的用户执行cvsupdate操作,该不一致性将迅速在开发团队中扩散,从而严重影响团队的开发效率,并存在质量隐患。另外,假如该批量提交的中断没有被及时发现,开发团队往往要花更多的时间进行软件调试和排错。4,GitGit是用于Linux内核开发的版本控制工具。与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。Git的速度很快,这对于诸如Linuxkernel这样的大项目来说自然很重要。Git最为出色的是它的合并跟踪(mergetracin

4、g)能力。git更加适合分布式开发项目。而svn(当然全称是subversion)则更适合于集中式大型开发项目。也有在git之上再使用一层svn的做法。表1CVS,Git,Mercurial,Subversion比较特征CVSGitMercurialSubversion是否原子提交CVS:没有.CVS提交不是原子的Git:是的.提交都是原子的Mercurial:是的Subversion:提交都是原子的文件和目录是否可以移动或重命名CVS:不是.重命名不支持.如果手动进行,可能会损坏历史记录Git:支持重命名,这是很实用的目的.git甚至能检测到重命名之后

5、文件的改变.尽管如此,基于特殊的存储结构,重命名不会被显示的记录,git能够推导出来(在实际使用中很容易做到)Mercurial:是的,重命名是支持的Subversion:是的.支持重命名在移动或重命名之后智能合并CVS:不能.重命名都不支持,就不必说智能了Git:不支持.细节在GitFAQ里:“Git有一个重命名的命令gitmv,但是这仅仅是为了便利.效果和移掉某个文件,增加另外一个文件没有任何区别”Mercurial:是的.重命名之后智能合并是支持的.Mercurtial文档说:“如果我修改一个文件,而你重新命名了这个文件,然后我们合并我们的变更,那

6、么我所做的修改就会被更新到根据旧文件名字而产生的新文件里(这可能就是你所期望的‘最简单的动作’,但是不是所有版本控制系统都支持)Subversion:不支持.“svnhelpme“中提到“注意:这个子命令相当于拷贝和删除.“并且可能有个bug文件和目录拷贝CVS:不能.拷贝不支持Git:不能.拷贝不支持Mercurtial:是的.支持拷贝Subversion:是的.并且拷贝非常容易(O(1)).包括产生分支远程存储仓库的备份CVS:间接的.可以使用JohnPolstra写的CVSupGit:是的.是git的内部特征Mercurial:是的Subversi

7、on:间接的.可以使用Chia-liangKao的SVN::Mirror插件(好像是台湾人)或ShlomiFish的SVN-Pusher工具是否传递变更到父仓库CVS:不会Git:是的(Linux内核开发过程经常使用这个特征)Mercurtial:是的Subversion:是的,使用要么是Chia-LingKao的SVN::Mirror脚本或者ShlomiFish的svn-push工具仓库权限CVS:很有限.“pre-commithookscripts“能够被用来实现各种权限控制系统Git:请看和Git一起附带的contrib/hooks/update-

8、paranoid.看和svnperms类似的path_rules的代码Mercu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。