版本控制之我见——版本控制心得(二)

原创 2002年11月04日 12:49:00

   对于一个采用版本控制进行软件开发的多人开发团队而言,其一般的开发方式是:采用服务器/客户端的形式,在上面分别安装版本控制工具的服务器和客户端版本,软件放在服务器上为大家所共享,开发人员在客户端从服务器上将软件的相关部分下载到本地,进行修改,改动结果最终提交到服务器上。

1 软件版本控制的主要功能和主要特点

   版本控制的功能:跟踪记录整个软件的开发过程,包括软件本身和相关文档(所带来的结果是:可标识不同阶段的软件及相关文档,进行差别分析;对软件进行可撤消的修改;便于汇总不同人员所做的修改),辅助协调和管理软件开发团队。

   我认为,对于软件的版本控制而言,其主要特点包括如下:

1.1 空间上集中统一管理

   由于采用服务器/客户端方式,尽管开发人员可以在自己的本地留有备份,但最终唯一有效的只有服务器端的那个原始拷贝。一定程度可以解决一致性问题、冗余问题。[1]

1.2 时间上全程跟踪记录

   工具将会自动记录每个更改细节,和不同时期的不同版本。一定程度可以解决冗余问题、事务性问题、并发性问题。[1]

1.3 操作权限控制

   对于不同开发人员,对软件的不同部分可以定义不同的访问权限。一定程度可以解决安全性问题。[1]

1.4 自动或半自动

   由于有工具辅助控制,可以减轻开发人员的负担,节省时间,同时降低人为错误。像软件整合这样的工作,其工作量可以相对减轻。[1]

2 软件版本控制评价标准

   我认为,对软件进行版本控制,衡量其效果的标准,归根结底有两点:效率和质量。如果版本控制最终使软件开发效率得到提高、使软件质量得到提升,那就是成功的,反之则是失败的。效率的提高比较容易理解,质量的提升则体现在:软件的一致性、冗余程度等。需要指出的是,单就版本控制工具本身并不能保证这两点。对工具不熟悉或错误的使用,以及开发人员的不良习惯等都将导致失败。有时可能反而降低效率。

3 几个重要观点

  

3.1 版本控制包括代码和文档

   我认为,广义的版本控制也应该包括和代码相关的其他内容,主要指文档。虽然文档的一致性问题并不像代码那么突出,多人同时修改一个文档的情况一般较为少见,但将文档只留一个服务器拷贝,会便于集中管理,减少冗余,加上工具的全程跟踪记录,可以随时查看不同时期文档的内容,相互比对。

3.2 版本控制管理应该包括工具软件的使用和人为规范的遵循

   在版本控制中,人的因素更为重要,规范的行为可以避免很多意想不到的后果,和错误使用工具所引起的问题。单纯依赖工具,并不能取得良好效果。没有版本控制的意识、对工具的使用不熟悉(一些功能不知道怎么用,一些功能使用错误)、人为的不良习惯,都可能导致错误。因此需要使用版本控制工具的开发人员具有自觉良好的意识和习惯,也需要一些相关的规范和制度的保证。

3.3 不能忽略版本控制管理员这一角色的重要性

   可以不必单独划定一人来担任这个角色,但如果没有这一角色的存在,任何人都可以任意操作服务器上已纳入版本控制的软件以及版本控制工具的配置信息(比如用户权限信息),或者说任何人都可以做管理员,则又会出现安全性问题。从某种程度上讲,这和没有版本控制下每台机器上都有若干软件版本的情况是等效的。

3.4 向版本控制过渡是一个循序渐进的、持久的过程

   对于一个团队而言,向版本控制过渡,需要有一个逐步转变的过程。这包括:制订一系列合理的循序渐进的措施,使版本控制的意识逐步得到大家的认可,使人员逐渐养成良好习惯(习惯于这种开发方式)。这是一个持久的过程,需要坚持。

   [1] 参见 没有使用版本控制的黑暗时代——版本控制心得(一)》一文

版本控制系统的一些使用心得

主要介绍svn和git这两个当前主流的版本控制系统,这也是大家使用的比较广泛的。...
  • skylin19840101
  • skylin19840101
  • 2014年12月19日 17:15
  • 1076

SVN解除项目的版本控制

一个项目如果提交到SVN之后,就会在文件夹左下方出现绿色或红色的圆形图标,如果想把该项目引入到另一个项目中去,会发现不能被识别出来,这时候要解除版本控制,解除方法挺诡异的: 在要解除版本控制的文件夹...
  • ithouse
  • ithouse
  • 2015年07月13日 17:10
  • 15991

API开发的版本控制技巧

《API开发的版本控制技巧》作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs在设计和构建API时,API的版本控制是非常重要的。必须确保新API对于现有的A...
  • chszs
  • chszs
  • 2015年01月16日 16:45
  • 8483

数据库的版本控制与代码版本控制的区别

数据库的版本控制与代码版本控制的区别在于数据库中的生产数据是现场创造的,当我们的表结构发生改变时,不能直接用drop  table然后再create  table,因为这样会导致生产数据丢失。而代码则...
  • demonson
  • demonson
  • 2013年11月03日 10:02
  • 2114

有效便捷的版本控制方法探讨

问题的提出: 在从事软件产品开发的过程中,我们常常会遇到这样的问题:假设某产品开发过程中出现了三个发布版本,每个版本存在部分功能差异,其余主干部分完全一致。后来发现主干部分存在1个bug需要修正,但...
  • zbp_uestc
  • zbp_uestc
  • 2014年04月11日 13:35
  • 854

SVN取消版本控制

第一种方法: 直接、逐级地删除目标目录中的隐藏属性的.svn目录   第二种方法: 如果用的是TortoiseSVN客户端,则先在另外一处建立一个新目录A,右键点住svn目录并...
  • jurken
  • jurken
  • 2015年01月19日 16:32
  • 2611

SVN版本控制服务搭建、配置和使用详细步骤!!!

SVN是版本管理工具,譬如团队进行项目开发,项目代码都储存在服务器上,成员可用SVN在本地获得并更新代码,在企业 开发团队项目时发挥一定的作用,现在的主流版本控制是Git,SVN,所以对版本控制的学习...
  • xxf159797
  • xxf159797
  • 2016年12月15日 20:38
  • 1272

C#如何实现方法的版本控制?

具体内容可以参见《C#与.Net技术平台演练》一书中的11-7章节 版本控制。下面是事例代码:using System;class A{    public void F1()    {       ...
  • tanliyoung
  • tanliyoung
  • 2006年10月26日 14:26
  • 1573

web前端开发之版本控制(缓存处理)

公司项目每次发布或者更新迭代后,会有缓存问题,除了其他一些比较常见的方法,发现gulp能给js,css自动化添加版本号,可解决缓存的问题,所以自动化实现静态资源的版本更新才是正道...
  • AnterWang
  • AnterWang
  • 2017年01月19日 15:23
  • 4268

Web API 版本控制的几种方式

http://www.troyhunt.com/2014/02/your-api-versioning-is-wrong-which-is.html 这篇文章写得很好,介绍了三种实现web api版...
  • hengyunabc
  • hengyunabc
  • 2014年03月05日 20:28
  • 27745
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:版本控制之我见——版本控制心得(二)
举报原因:
原因补充:

(最多只允许输入30个字)