一个版本控制系统最基本的功能就是记录每次修改的地方,并且可以让使用者方便地存取各个版本、比较版本差异。更进一步的,是建立一个多人开发的环境,可以计录每个人的修改,解决版本冲突的问题。版本冲突问题是指两个人同时对一个档案作修改的动作,举个例子说,现在数据库里的版本是A,甲和乙分别把这两个档案拿出来(这个动作通常叫 checkout),在做了一番修改之后,甲先把改变的数据存回去(这个动作通常叫 checkin),这时问题还没有发生,数据库的板本被更新成B,但是当乙 checkin 的时候,问题就来了,乙的版本也是从 A 修改而来的,到底该用甲的修改版还是乙的呢?如果硬把甲的修改用乙的版本盖过去,那甲所花的工夫就全部白费了。最常用的解决办法是用文件按锁定的功能,就是当甲在修改某个档案的时候,会把档案加个 lock 的 flag 让大家知道,这个档案正在被修改,不要去动它。不过像 CVS等进阶的版本控制系统,就算没有做档案锁定的动作,发生版本冲突时,也提功了方便的功能可以把两个版本 merge起来。
目前有许多商业与开放源码的版本控制系统. 在开放源码界, 最早出现的, 大概就是 SCCS, 其后演变成为 RCS. 这两个都是以个别档案为基础来进行版本控制. 后来就有了 CVS 的出现, 它架构在 RCS 之上, 并且可以处理多个档案的送交 (也就是跟版本控制软件说, 我有这些档案更动过了, 请记住这些更动).
RCS(Revision Control System)
一个相当相当古老的工具了,虽然现在大家都是用 CVS 来做版本控制的工具但是如果