蓝点网
给你感兴趣的内容!

Git 十岁了:Git 之父 Linus Torvalds 谈 Git 起源

Linus Torvalds 在 2002 年起,使用 BitMover 的版本控制软件 BitKeeper 管理 Linux 核心开发,而因为 BitKeeper 除商业付费版本,仅提供可免费使用但不允许修改重新编译的精简版本,引起了开源社区的不满,如自由软件之父 Richard stallman 也敢严厉批评 Linux Torvalds 使用非自由软件开发 Linux 核心。

在 2005 年,Samba 档案服务器开发人 Andrew Tridgell 写了连接 BitKeeper 存储库的简单程序,被 BitMover 创办人 Larry McVoy 指控对 BitKeeper 进行逆向工程,因为决定停止 BitKeeper 对 Linux 的支持。

顿时 Linux 核心开发受到了严峻的挑战,而 Linus Torvalds 秉承自己的版本自己写的精神,整个周末都不见人影,隔周却如变戏法般带着 Git 出现。

在 Git 诞生十周年的近日,Linus Torvalds 接受了 Linux 基金会的访问,谈论他对版本控制系统的想法以及开发 Git 的过程。

为何你创造了 Git?

我一直很不喜欢做原始代码管理,我觉得那是电脑领域中最无聊的一件事情,我非常讨厌原始代码管理。

不过 BitKeeper(简称 BK)出现后,改变了我对原始代码控制的想法。

BK 做对了大部分的事情,它在本机端有一份完整的存储库,而且采用分布式的做法非常了不起。

分布式原始代码控制解决了原始代码控制常碰到的问题—-谁有资格改变原始代码。

借助提供储存库给每个使用者,BK 解决了这个问题。

不过 BK 也有些缺陷,比如说某些技术决策引起了些问题,但最大的缺点在于 BK 不是开发原始代码,所以很多人不愿意使用。

有几位我们重要维护人员因为 BK 可以免费用在开源专案上而使用它,但 BK 始终没有普遍的被使用,尽管它帮助了 Linux 核心的开发,BK 仍有不足之处。

Andrew Tridgell 违反 BK 的使用原则,对 BK 开始进行逆向工程。我花了几个礼拜或是(或是几个月),居中协调 Tridgell 跟 Larry McVoy,不过显然没有多大的帮助。

从那一刻起我决定放弃使用 BK,但是我也不想回到以前没有 BK 的日子。

在那时虽然也有一些原始码控制软体想采用分散式的做法,但都不成气候,它们离我效能表现的要求还差一大截,同时我担心原始码完整性及作业流程上的问题,索性决定自己写一个原始码控制系统。

你是怎么做到这件事情的? 花了整个周末熬夜还是在一般时间内把 Git 搞定?

呵呵,其实你可以去 Git 原始码的储存库看它如何逐渐成形。

我大概花一天让 Git 能达到自己管理自己的程度(self-hosting),之后我就开始用 Git 跟 Git 提交程式码了。

我大部分的工作都在白天完成,不过也有几天工作到深夜。

我觉得最有趣的地方在看到 Git 如何快速地成形。在 Git 树中的第一次提交并没有写很多程式,但是已经实作出提交程式码的基本功能。

写 Git 并不会很难,比较难的是思考如何 Git 组织档案的方式。

我想强调,Git 从无到有大概花了我十天(包含我第一次用 Git 提交核心程式码),而且我也不是焚膏继晷的完成 Git。

这都取决对 Git 的基本概念是否很清楚,早在着手写 Git 前,我已经看到其他原始码控制系统的缺陷。我只是不想重蹈覆辙罢了。

Git 有满足你的期待吗?它有哪些地方不足?

我很喜欢 Git,它运作的非常好而且满足所有我的需求。

它掌管了许多计画并且已超乎想像的速度​​在成长。

不过看看 CVS 跟 RCS 还存在着,可见在使用者在转用其他原始码控式系统上还是有些惰性在,不过迟早有一天 Git 都会取代它们。

你认为 Git 被广为接受的原因在?

我想很多人使用其他原始码控制软体都碰到跟我类似的问题,而这些问题让我十分火光,在使用上要修正的几个小问题就让人抓狂。

在 Git 未问世前,没有比较好的解决方法。许多人还不清楚分散式版本控制的好处,甚至还为此争吵不休。

不过只要用过 Git,一定无法回头用其他东西。因为用 Git 备份原始码简单又可靠,而且也不必担心测试储存库是否会影响到中央储存库。

Git 会一直存在吗?在未来十年内会有其他版本控制系统出现吗?你会不会是那个系统的开发者?

我不会是那个系统的开发者,也许在十年内我们会看到类似的新东西出现,不过我敢保证,它一定会长的很像 Git。

Git 并非十全十美,但是 Git 的基本设计做得非常完整,这是其他原始码管理做不到的,我没有在装客气。

为什么 Git 在 Linux 上运作的很顺?

一部分原因在于 Git 是为我们的工作流程量身打造,另一部分是我提了很多次 Git 的分散式设计,再重复几次都不为过。

Git 是为有效处理庞大的专案如而生,像是 Linux。

它可以处理大家以前觉得很「困难」的事,不过那些对我来说像是家常便饭。

举个例子,使用其他原始码控制系统要执行合并是非常麻烦的事情,你得精心策画,因为合并兹事体大。

这我没办法接受,因为我每天都要执行一堆合并。使用 Git 合并只消几秒钟,反而是写注解花掉我比较多的时间。

所以基本上 Git 是为了满足我的需求而写出来的。

很多人说 Git 是给聪明人用的,Andrew Morton(Linux 核心开发者)甚至说:「Git 的设计让使用者觉得自己比想像中的笨。」对此你有什么样的回应?

这种说法在过去说得通,不过现在不再是了。大家会这样想会有一些原因,但是只有一个原因站得住脚:「同一件事情,Git 提供太多方法去达成。」

你可以用 Git 去做很多事情。 Git 有许多规则,规范你该如何使用 Git,而这些规则跟技术关联没那么强,反而比较着墨在多人协作下如何发挥 Git 的功能。

Git 是个强大的工具,所以很多人一开始会被它吓到,而因为 GIt 的功能是如此强大,每次你都可以用不同的方法完成相同的事情。

但一般来说,学习 Git 的最好方法是从基本开始,熟悉基础后再去摸索不一样的东西。 Git 被认为很复杂是有它的历史因素在。

其中一个原因是一开始它的确很复杂。一开始使用 GIt 做核心方面的工作时,使用者需要配置一些脚本。

当时大部分的工作都花在开发核心,比较没有精力去顾及让 Git 易于使用。诚然,Git 是很复杂,不过那也只是头一年左右的事情。

另外一个大家觉得它复杂的原因是 Git 与众不同。很多人用了 CVS 十几年,但 Git 跟 CVS 可是天差地远,不仅概念上不同,指令也不一样。

Git 从来没有想要模仿 CVS,甚至想要反其道而行。如果你用类似 CVS 系统一段时间了,会觉得 Git 很复杂,甚至特立独行。

比方说,为什么 Git 的版本编号不是「1.3.1」,像 CVS 那样递增的数字不是很好吗?为什么编号是恐怖的 40 字元 HEX 码?

但 Git 并不是特立独行,而是这些改进是必须的。某些人觉得复杂的原因是时代的递嬗,使用 CVS 的时代已经过去了。

现在很多工程师也许会搞不清楚 CVS 的操作方法,只是因为他们先学了 Git。

如果没有 Git,Linux 核心的发展会跟现在一样好吗?

呃,没有 Git,好吧。不过一定会有人写出类似 Git 的分散式原始码控制系统,我们绝对需要像 Git 的东西。

你对 GitHub 有什么样的想法?

GitHub 提供很棒的程式码托管服务,这方面我对它没有什么抱怨,不过我对 GitHub 比较有意见的地方是,GitHub 作为一个开发平台,它的提交、拉取要求、议题追踪等功能运作的不是很好。

GitHub 有太多限制,跟核心比还差得远。一部分的原因是在核心如何被建立,另​​一部分原因是 GitHub 的介面会养成使用者的坏习惯。

因为 GitHub 介面的设计,在 GitHub 上提交会有品质不好的提交讯息等。

在这方面他们做了些改善,不过永​​远不会适用于像 Linux 核心的东西。

你觉得 Git/GitHub 过最有趣的用途是?

使用它们建立一个新专案非常简单。以前要开启一个专案很让人头痛,但使用 Git 或 GitHub 去建立小型专案实在轻而易举。

目前你手边上有没有一些将主宰软体业界未来发展的计画?

目前没有,如果有的话我会告诉你。

(本文由 ITHOME.TW 授权转载 原文标题:Git 十歲了!Git 之父 Linus Torvalds 說古,大談 Git 的起源 ,04-10)

转载请注明来源于蓝点网及本文链接:蓝点网 » Git 十岁了:Git 之父 Linus Torvalds 谈 Git 起源
分享到: (0)
以下评论内容由网友保留所有权,除非特别注明否则所有评论均不代表本站观点!

评论 4

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #3
    Unknown Unknown Unknown Unknown

    鸭子哥,需要 8.1 工业么,如果需要的话。。Windows embedded 8.1 pro Update 32 位系统链接 http://pan.baidu.com/s/1o6v9kSUWindows embedded 8.1 pro Update 64 位系统链接 http://pan.baidu.com/s/1pJiFVGvWindows embedded 8.1 Ent Update 64 位系统 ed2k://|file|cn_windows_embedded_8.1_industry_enterprise_with_update_x64_dvd_6052153.iso|4099381248|CC31C4B6E10951D1C12AAEB51A6DF272|/Windows embedded 8.1 Ent Update 32 位系统链接 http://pan.baidu.com/s/1pJFQhoZ

    spartan2年前 (2015-04-12)回复
    • Unknown Unknown Unknown Unknown

      专业版的密钥:FKXH2-Q3NYB-T9VG8-HWQXG-PDJMH 企业版的:27H9R-N99TJ-9J9B6-VFB8V-DRQ37

      spartan2年前 (2015-04-12)回复
  2. #2
    Unknown Unknown Unknown Unknown

    开源大法好!!!

    木头科学二百五2年前 (2015-04-12)回复
  3. #1
    Unknown Unknown Unknown Unknown

    第一段“也敢严厉批评”,敢多余了。第二段“因为”应该是因此。

    一叶之秋2年前 (2015-04-11)回复