Linux软件开发版本管理工具比较

分类:CentOS运维 阅读:6278 次

1,RCS(RevisionControlSystem)修订控制系统

特点:1),简单

2),使用Lock机制防止多个开发人员对同一个文件同时进行修改.

2,CVS(CocurrentVersionSystem)并发版本系统

建立在RCS基础上,最流行的开放源代码版本控制系统

特点:

1),使用单一的主代码树,而不像RCS那样依赖多个目录.

2),最大优点在于多名开发人员可以同时对一个文件进行修改.允许合并.也就是"并发"开发.

3,SVN(SubVersion)

1)目录的版本控制

CVS只能对文件进行版本控制,不能对目录进行版本控制.CVS只能注意到,一个文件在一个位置 被删除了,而在一个新位置创建了另外一个文件。由于它不会连接两个操作,因此也很容易使文件历史轨迹丢失。

2)原子性提交

CVS采用线性、串行的批量提交,即依次地,一个接一个地执行提交,每成功提交一个文件,该文件的一个新的版本即被记录到版本库中,提交时用户提供的日志信息被重复地存储到每一个被修改的文件的版本历史中。
CVS串行批量提交模式的弊端在于-当任何原因造成批量操作的中断时(典型原因包括:网络中断、客户端死机等),版本库往往处于一个不一致的状态:原本应该全部入库的文件只有一部分入库,很有可能版本库中的最新版本不能顺利编译,更为严重的是,随着其他的用户执行cvsupdate操作,该不一致性将迅速在开发团队中扩散,从而严重影响团队的开发效率,并存在质量隐患。另外,假如该批量提交的中断没有被及时发现,开发团队往往要花更多的时间进行软件调试和排错。

4,Git

Git是用于Linux内核开发的版本控制工具。与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。Git的速度很快,这对于诸如Linuxkernel这样的大项目来说自然很重要。Git最为出色的是它的合并跟踪(mergetracing)能力。git更加适合分布式开发项目。而svn(当然全称是subversion)则更适合于集中式大型开发项目。也有在git之上再使用一层svn的做法。
转帖:http://hi.baidu.com/zjd168/item/f65e475e516e8e3f33e0a9b0