- 论坛徽章:
- 0
|
作为硬件出生的工程师来说,参与大型软件开发的机会比较少。一直都是自己独自完成一些项目的代码编写,对linux下的软件开发版本管理工具所知甚少。目前接触了些开源项目,也想参与进去。于是想熟悉一下linux下的软件开发版本管理工具,这样可以有效的进行合作开发,对自己的代码也可做很好的管理。现了解一下linux下的几种软件版本管理工具:RCS,SVN,CVS,Git等;
以下内容为转载:
1,RCS(Revision Control System) 修订控制系统
特点:1),简单
2),使用Lock机制防止多个开发人员对同一个文件同时进行修改.
2,CVS(Cocurrent Version System)并发版本系统
建立在RCS基础上,最流行的开放源代码版本控制系统
特点:
1),使用单一的主代码树,而不像RCS那样依赖多个目录.
2),最大优点在于多名开发人员可以同时对一个文件进行修改.允许合并.也就是"并发"开发.
3,SVN(SubVersion)
1)目录的版本控制
CVS 只能对文件进行版本控制,不能对目录进行版本控制.CVS 只能注意到,一个文件在一个位置被删除了,而在一个新位置创建了另外一个文件。由于它不会连接两个操作,因此也很容易使文件历史轨迹丢失
SVN可以
2)原子性提交
CVS 采用线性、串行的批量提交,即依次地,一个接一个地执行提交,每成功提交一个文件,该文件的一个新的版本即被记录到版本库中,提交时用户提供的日志信息被重复地存储到每一个被修改的文件的版本历史中。
CVS
串行批量提交模式的弊端在于 -
当任何原因造成批量操作的中断时(典型原因包括:网络中断、客户端死机等),版本库往往处于一个不一致的状态:原本应该全部入库的文件只有一部分入库,很
有可能版本库中的最新版本不能顺利编译,更为严重的是,随着其他的用户执行cvs update
操作,该不一致性将迅速在开发团队中扩散,从而严重影响团队的开发效率,并存在质量隐患。另外,假如该批量提交的中断没有被及时发现,开发团队往往要花更
多的时间进行软件调试和排错。
4,Git
Git 是用于 Linux 内核开发的版本控制工具。与常用的版本控制工具
CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git
的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge
tracing)能力。git更加适合分布式开发项目。而svn(当然全称是subversion)则更适合于集中式大型开发项目。也有在git之上再使用一层svn的做法。
鉴于对kernel很有兴趣,于是想掌握git这个工具。接下来将以笔记的方式每天学习一点git,借些博客的方式来督促自己!
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/65429/showart_1901149.html |
|