版本控制工具的必要性、作用、分类和发展历程

一、版本控制工具的作用和必要性

所谓版本控制系统(Version Control System),从狭义上来说,它是软件项目开发过程中用于储存我们所写的代码所有修订版本的软件,但事实上我们可以将任何对项目有帮助的文档交付版本控制系统进行管理。

如果在开发团队中没有使用版本控制,多个开发人员共同负责同一个软件文档的开发,每个人在各自的机器上有整个软件文档的备份,并对之实施编程开发,在分别完成各自任务之后,再通过文本比对工具将各自机器上的不同版本的程序整合到一台机器上。没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。

版本控制的目的是实现开发团队并行开发、提高开发效率的基础。其目的在于对软件开发进程中文件或目录的发展过程提供有效的追踪手段,保证在需要时可回到旧的版本,避免文件的丢失、修改的丢失和相互覆盖,通过对版本库的访问控制避免未经授权的访问和修改,达到有效保护企业软件资产和知识产权的目的。

版本控制的功能在于跟踪记录整个软件的开发过程,包括软件本身和相关文档,以便对不同阶段的软件及相关文档进行表示并进行差别分析,对软件代码进行可撤消的修改,便于汇总不同开发人员所做的修改,辅助协调和管理软件开发团队。

版本控制在空间上可以保证完成集中统一管理,解决一致性和冗余问题。在开发工作中,开发人员在提交软件代码的时候一般采用服务器/客户端方式,尽管开发人员可以在自己的本地留有备份,但最终唯一有效的只有服务器端的程序代码;在时间上全程跟踪记录工具将会自动记录开发过程中的每个更改细节,和不同时期的不同版本。这在一定程度上可以解决冗余、事务性处理并发性问题。项目管理人员可以通过版本控制对团队中的不同人员,实施操作权限的控制。对于不同角色的开发人员,对软件的不同部分可以定义不同的访问权限。这在一定程度可以解决软件安全性问题。版本控制工具的使用,可以减轻开发人员的负担,节省时间,同时降低人为错误。

简而言之:

1.版本控制能实现开发团队并行开发、提高开发效率。

2.版本控制可以保证完成集中统一管理,解决一致性和冗余问题。

3.版本控制可以保证解决软件开发过程中的并发性,软件源代码的安全性,以及软件的整合。

4.版本控制能够跟踪记录整个软件的开发过程,辅助协调和管理软件开发。

 

二、版本控制工具的分类

版本控制工具(Version Control System)的分为3类:

1、直接访问式版本控制系统;

2、集中式版本控制工具,比如CVS、SVN;

3、分布式版本控制工具,比如git      

 

集中式版本控制工具和分布式版本控制工具的区别在于:开发人员之间相互同步修改内容的方式不同。

 

三、版本控制工具的发展历程

VCS的发展历程:

(1)、手工阶段,没有版本控制工具或者有但是不用版本控制工具。

(2)、早期VCS阶段:             

这类系统要求系统的用户必须登录到版本库所在的服务器才能访问版本库。            

局限性:存在可扩展性方面的问题。

(3)、集中式VCS阶段:            

CVS和SVN解决上述早期版本控制工具的可扩展性问题。这类版本控制工具允许程序员通过网络来获取版本库中的代码,并且在修改之后提交回来。这类系统解决可扩展性问题是通过客户端来解决的,客户端可以有无数个,但是版本库所在的服务端也还是只有一个,客户端可以随意安装,这样就解决了可扩展性的问题。           

具体的使用方法:每一个程序员在本地有一个工作目录树,其内容是该版本库中最新的代码。当他们在工作目录树中完成代码修改之后,就把改动提交会该代码库。           

局限性:在本地工作目录树中只会看到代码的最新版本,如果想要查询历史修改记录,就必须与服务器上的版本库打交道。这样要和远程的版本库打交道,就必须使用网络,但是即使今天的互联网处于永不断线的状态,有的时候还是不能上网。所以分布式版本控制工具就解决了这个问题,以git为代表的分布式版本控制工具使每个用户在本地都有自己的版本库,而不是连接到公共服务器上的一个公共版本库中去。

(4)、分布式版本控制工具阶段:           

所有的版本控制工具都存储在本地版本库中,向版本库提交代码无需链接远程版本库,所有的历史记录都存储在本地版本库中,向版本库提交代码无须连接远程版本库,而是所有的版本数据都存放在本地版本库中。          

 

分布式版本控制工具程序员之间如何传递各自的修改,如何同步呢?程序员还是将修改上传到项目的主版本库中去。

有两种实现方式:(1)通过git的push操作直接把修改上传到主版本库;(2)生成包含少量修改的补丁包,把补丁包提交给项目维护人员,再由项目维护人员更新主版本库。  

 

四、选择版本控制工具时值得注意的问题

 

首先、版本控制工具它本身是一个工具,工具是比人工先进一些,但是我们依然可以选择使用它,也可以选择不使用它。          

比如在学校的时候一直就没有使用过版本控制工具,写论文、写代码都是在自己电脑上保存,每当自己写的东西有一个新版本产生的时候,就用另存为来再存一份。  

 

其次、不要因为盲目比较版本控制工具的优劣。          

即使使用了版本控制工具,也还有不同的版本控制工具之分,有比较早期的cvs、svn,也有最新的git,我们在选用的时候可以按照自己的想法,熟悉什么就选用什么,没有必要一味线性的看待问题,即不用觉得git一定比svn先进,所以使用git就比使用svn好,同样,不要以为使用git就比使用svn高级之类的,能解决问题就好,理智看待这个问题。

 

作者:Roger_CoderLife

链接:https:blog.youkuaiyun.com/Roger_CoderLife/article/details/84372586

本文为Roger_CoderLife的原创文章,著作权归作者所有,转载请注明原文出处,欢迎转载!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值