版本控制系统(VCS,Version Control System)可以划分为集中式和分布式两大类。集中式顾名思义,是用单一的服务器来集中管理保存项目的所有文件。项目团队的成员通过客户端连接到这台服务器,下载或提交文件。客户端一旦无法连接服务器,那么版本控制功能将无法使用(例如比较历史版本差异;查看某个历史版本内容等)。集中式的VCS杰出代表是SVN。
分布式的特点是每个客户端除了可以连接到一个集中的服务器外,客户端本身可以是一个完整的版本控制仓库,项目团队成员可以在自己的电脑上对文件进行版本管理。分布式的VCS杰出代表是git。
集中式
最早出现的版本控制系统CVS
CVS的全称是Concurrent Version System,诞生于1985年,荷兰一所大学的一个教授为了方便自己和学生的协作开发而实现的。
CVS中确立的版本控制概念诸如commit、checkin、checkout、tag、branch等已经成为版本控制系统的标准。
虽然现在仍然有项目在使用CVS,但是新项目基本上不会再考虑它了。
最流行的集中式版本控制系统SVN
SVN的全称为Subversion,是在2000年由CollabNet公司发起开发的版本控制系统,2009年左右,成为Apache的一个子项目。SVN是集中式版本控制管理的集大成者,目前仍有比较多的用户项目在使用,不过近些年的市场占有率在大幅度下降了。
来自微软公司的VSS及其替代者TFS
VSS的全称是Visual Source Safe。早些年使用微软技术开发的人应该对VSS不会感到陌生。在2005年以后,VSS逐步被同样是来自于微软公司的TFS(Team Foundation Server)取代。VSS/TFS同微软的开发工具集成的非常紧密,使用起来也十分便捷。TFS除了支持集中式的版本控制服务器管理外,也支持git托管服务器。TFS目前仍是微软开发工具Visual Studio搭配的首选VCS。
分布式
江湖霸主Git
Git的作者是传奇人物Linus,著名的开源操作系统Linux作者。开发Git也和Linux有着直接关系。在2002年之前,Linux的源码都是Linus人工进行管理的,后来Linus选择了BitMover公司的一款分布式的商业版本控制系统BitKeeper,BitMover给与Linux社区免费的使用授权。在2005年的时候BitMover公司和Linux社区决裂了,于是Linus决定自己开发一款分布式版本控制系统以替代BitKeeper。2005年Linus用了两周的时间完成了Git的核心开发m( _ _ )m。Git诞生后,使用Git的开源项目迅速增加。尤其是著名的基于git的托管开源网站GitHub的流行更加促成Git在版本控制系统市场的江湖霸主地位。