vcs:version control system,即版本控制系统,我们常用的svn,cvs,git,bitkeeper都叫做vcs。但是正所谓“党外无党,帝王思想;党内无派,千奇百怪”,svn、cvs自成一派,被称作“集中式版本控制”,而git、bitkeeper则是“分布式版本控制”。
集中式版本控制的示意图:
在这种类型的vcs中,你的修改都有svn服务器来记录着。针对每个版本的每个文件,svn服务器只记录了一个文件a在每个版本中的不同之处,如果再跟现在流行的区块链技术接轨的话,svn这类集中式版本控制软件是“中心化的”,假设你的svn服务器在外部,那么你如果要访问它必须要联网才行(当然,你在你自己电脑上装个svn服务器不算)。
分布式版本控制系统示意图:
拿git来作为分布式版本控制系统软件的例子来举例说明,git对每个版本的文件都保存一个副本(快照),如果文件a 版本3并没有改变,它也保存一个连接,以便减少存储空间的占用,你本地从git服务器上下载下来之后,就包含了所有的版本,也就是说,每一台git的客户端上保存的项目都是完整的项目,跟git服务器上的是完全一样的。
git的作者是Linus,也就是开发linux内核的那位,当初linux的开发是维护在bitkeeper这个版本控制软件上的,后来人家不让用了(据说是linux开发者想破解bitkeeper这个东西),人家bitkeeper当然不乐意了,让你用你就好好用啊,还想黑我?去求吧,linus就说,不让用算了,我自己写一个,几天就写出了git。