在上一期杂志中,我们曾指出,英语在我们的行业中已经无处不在,甚至没有人再质疑它的使用。Git 也是如此。很难想象,仅仅在二十年前,源码控制工具的种类比现在更加繁多,选择其中一种工具也比现在复杂得多。事实上,Git 甚至还没有出现在地图上。在讨论 Git 的霸权是好是坏之前,让我们先回到过去。

在一首最著名的探戈中,卡洛斯-加德尔唱道

感受到......生命是新鲜的空气、

二十年不算什么

狂热的目光

在阴影中徘徊

寻找并命名你。

二十年前

史蒂夫-麦康奈尔(Steve McConnell)的《代码大全》第二版于 2004 年出版。在这本长达 900 页的巨著的第 668 页,我们发现了全书中唯一一处关于源代码控制的内容:大约四分之三页。除此之外,别无其他。ChatGPT 可以轻松地用一句话概括所有内容:"版本控制软件是好东西,能带来几大好处"。没有太多可圈可点之处。在这一点上,我们离 GitOps 真的很远。

就在同一年,也就是本文发表的 20 年前,Subversion 1.0 正式面世。Subversion 是什么?可能是计算机史上最短命的好点子。Subversion(或

svn)本应是更好的 CVS(不,不是药店,而是另一个东西)。在当时,"比 CVS 更好 "的意思是指具有事务性(数据库,有人知道吗?孩子们,那时我们还没有更高的抱负。

然而,莱纳斯-托瓦尔兹(Linus Torvalds)却有更大的野心。2004 年,Linux 内核开发者在使用 BitKeeper(用于管理内核源代码的专有分布式版本控制系统)的问题上产生了越来越大的分歧。那么,开发者该怎么办呢?莱纳斯有一个传统,那就是编写每个人都需要但没人愿意开始的软件。他还有一个以自己名字命名的传统。传说第一版 Git 是在几周内编写完成的。

CVS

没听说过 CVS?它是乔尔-斯波斯基(Joel Spolsky)在 2000 年 9 月发表的《乔尔测试更好的软件》(Joel Test for better software)一文的第一条中称其为 "很好 "的源码控制系统:

我用过商业源码控制包,也用过免费的 CVS,让我告诉你,CVS 很好。

是的,更好软件的第一步就是(令人震惊!)使用源代码控制软件。(顺便提一句,我是 1997 年开始从事软件开发的,当时我们没有使用源代码控制,甚至连 CVS 都没有。是的,你猜对了:我们只是将 VBScript 文件保存在本地,然后通过 FTP 上传。如果我们互相覆盖修改,那就太糟糕了:生命只有一次。我直到 2002 年才第一次使用源代码控制系统,对于好奇的人来说,那是 Rational ClearCase)。

没听说过乔尔-斯波斯基(Joel Spolsky)?他是 Stack Overflow 的联合创始人,我猜你们在职业生涯中也曾使用过 Stack Overflow。24 年前,乔尔是新兴软件工程领域的首批影响者之一。想想凯尔西-海塔尔(Kelsey Hightower),但他的观点更具争议性。或者是史蒂夫-耶格(Steve Yegge),但他的观点争议性较小。

说到 Stack Overflow,这里有一个 2008 年源代码控制最先进的例子。2008 年 9 月 8 日,Stack Overflow 网站上首次出现了这样一个问题:对于单个开发人员的工作流程,应该使用哪种版本控制系统?(有趣的是,提出这个问题的同时,2008 年的金融危机正在现实世界中大肆肆虐。毫无疑问,我们的行业生活在泡沫之中。但我又一次跑题了)。

我正试图为自己寻找一款尽可能简单的源代码控制软件。我需要的主要功能是能够读取/提取我的代码的过去版本。我是唯一的开发人员。

对这个问题的回答包括了人类目前已知的几乎所有版本控制系统的冗长目录。