版本控制的发展历史

说到版本控制,人们首先就能想到随处可见的SVN,Git,HG……但是用的多或者细心的朋友会发现版本控制中的很多方法都超级实用,各个都是直插痛点的那种。所以使用版本控制是很好的习惯,哪怕写个Word都应该用上。曾经在公司做分享的时候写的这篇文章,现在分享出来,帮助大家学Git,SVN等很有帮助。

源代码就是一个文本文件!(20世纪60年代)

如果问一个程序员,源代码就是文本文件吗?新手程序员还是会回答NO。要60年代的人们把代码和文档同等对待,达成共识实属不易,当时的牛人们做了很多努力。当代码被当成文档后,版本管理也开始萌芽。

人们可以手动跟踪代码版本!(20世纪60年代)

代码开始商用之后,就存在大量更新的问题。当时用的方法是手动控制版本,比如A软盘存放的是V1.0 ,B软盘存放的是V2.0;

你可以为单个文件保留多个版本!(1972,1978)

采用奇特的交错编织文件格式,SCCS在版本控制领域称雄了10年之久。SCCS存放文件的“增量”,大大的节省了空间。1982年,RCS格式因为自带反向对比功能,打败了SCCS成为继任者,还记得diff吗!

每个人都可以检出自己的拷贝!(1982)

还是RCS;在那个时候,人们工作时需要登录一台中央大型机并通过它一起工作。采用符号链接,RCS可以让每个人都工作在相同版本的代码上,而且每个人都有自己的工作拷贝。

你可以一次给多个文件进行版本控制!两个人可以同时编辑同一个文件,并将他们的工作合并在一起!(1986)

在CVS出现之前,版本控制系统都只支持单个文件。CVS默认会递归修改所有文件。所以突然之间,软件从单个目录或文件变成了文本文件的递归树。由于CVS不具备“原子性”导致实现的产品不尽如人意。

可以在远程服务器上共享代码仓库!(1994)

得益于1994年TCP/IP协议的引入,这个想法才得以起步。“直到Cygnus软件的Jim Blandy和Karl Fogel(这两位后来成为Subversion项目的主要开发者)为CVS发布了一些补丁,使得CVS客户端软件可以通过远程TCP/IP连接进行访问,CVS才真正变得无处不在。版本控制也站在了TCP/IP协议这个巨人的肩膀上。

免费的开源版本控制主机服务!(1999)

当时,得到一台服务器是很困难而且很土豪的事情,但是进行源码管理和bug追踪又需要服务器。没钱又想用服务的人就想到了能不能弄一个免费的版本管理工具,尽管缺乏商业模式,却让无数项目更早地面世。比如TortoiseCVS,基于免费的规则,在CVS基础上又出现了SVN

没有主代码库,你可以向所有人发布!(2005)

在你本地的机器上存放的是一份完整的代码历史,可以轻易地与任何其他拷贝进行分支和合并。这个特性使得分支和合并变得更加容易,比如Git的问世。

Git是用于Linux内核开发的版本控制工具。与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。Git的速度很快,这对于诸如Linux kernel这样的大项目来说自然很重要。Git最为出色的是它的合并追踪(merge tracing)能力。