Skip to main content

版本控制系统

概述

透过文档控制(documentation control),能记录任何工程项目内各个模块的改动历程,并为每次改动编上序号。

一种简单的版本控制形式如下:赋给图的初版一个版本等级“A”。当做了第一次改变后,版本等级改为“B”,以此类推。最简单的例子是,最初的版本指定为“1”,当做了改变之后,版本编号增加为“2”,以此类推。

借此,版本控制能提供项目的设计者,将设计恢复到之前任一状态的选择权,这种选择权在设计过程进入死胡同时特别重要。

理论上所有的信息记录都可以加上版本控制,在过去的实务中,除了软件开发的流程,其它的领域中很少有使用较复杂的版本控制技巧与工具(虽然可能为其带来许多好处)。目前已有人开始用版本控制软件来管理CAD电子文件,电路板设计,来补足本来由人手工执行的传统版本控制。

软件版本控制

软件设计师常会利用版本控制来追踪、维护源码、文件以及配置文件等等的改动,并且提供控制这些改动控制权的程序。

有时候,一个程序同时存有两个以上的版本也有其必要性,例如:在一个为了部署的版本中程序错误已经被修正、但没有加入新功能;在另一个开发版本则有新的功能正在开发、也有新的错误待解决,这使得同时间需要不同的版本并修改。

此外,为了找出只存在于某一特定版本中(为了修正了某些问题、或新加功能所导致)的程序错误、或找出程序错误出现的版本,软件调试者也必须借由比对不同版本的代码以找出问题的位置。

术语

  • 基线(Baseline) 基线是软件文档或源码(或其它产出物)的一个稳定版本,它是进一步开发的基础。
  • 文件库(Repository) 存储文件的新版本还有历史资料的地方,通常是在服务器上。有时候也叫Depot(像是在SVK、AccuRev还有Perforce中)
  • 工作复本(Working copy) 从文件库中取出一个本地端(客户端)的复制,针对一个特定的时间或是版本。所有在文件库中的文件更动,都是从一个工作版本中修改而来的,这也是这名称的由来。观念上,这是一个沙盒。
  • 提交(Commit) 将本地端的修改送回文件库。(由版本控制软件处理“跟上次更动相比,哪个文件又被更动”的事)
  • 变更(Change) 对一份文件作的特定更动。
  • 变更记录(Change List)
  • 取出(Check-Out) 从文件库取出文件到本地端(客户端)。
  • 更新(Update) 将文件库的修改送到本地端(与提交相反)
  • 合并(Merge / Integration) 合并各个改变。
  • 版次(Revision) 一个revision或version指的是一系列版本变迁的其中之一。
  • 导入(Import)
  • 导出(Export)
  • 冲突(Conflict) 当两方更动同一份文件会发生冲突。

著名的版本控制软件

  • BitKeeper
  • VS(Concurrent Versions System)
  • Micorosoft Visual SourceSafe/Team Foundation Server/Visual Studio Online
  • Perforce
  • Rational ClearCase
  • 修订控制系统(GNU Revision Control System)
  • Serena Dimention
  • Subversion
  • SVK
  • Git
  • Monotone (软件)
  • GNU Bazaar
  • Mercurial
  • SourceGear Vault