Git十周岁之际,Linus Torvalds大谈Git开发故事

 

关注凡凡Python笔记的小伙伴们,你们也来谈谈你们在使用Git的时候从中获取的便利之处吧 ^_^!!!...

点击上方“蓝字”关注本公众号
Linux & Git 创始人


凡凡 | 整稿 & 编辑




Linus Torvalds

林纳斯·托瓦兹(Linus Torvalds, 1969年~ ),著名的电脑程序员、黑客。Linux内核的发明人及该计划的合作者。托瓦兹利用个人时间及器材创造出了这套当今全球最流行的操作系统(作业系统)内核之一。现受聘于开放源代码开发实验室(OSDL:Open Source Development Labs, Inc),全力开发Linux内核。

Git十周岁之际

Linus Torvalds大谈 Git 开发故事

Q


1.为何你创造了Git?

Linus Torvalds:我一直很不喜欢做源代码管理,我觉得那是计算机领域中最无趣的一件事情(也许数据库管理跟它有的比),我非常讨厌源代码管理。不过BitKeeper (简称BK) 出现后,改变我对源代码控制的想法。BK 做对了大部分的事,它在本机端有一份完整的储存库,而且采取分布式做法非常了不起。分布式源代码控制解决了源代码控制常碰到的问题一谁有资格改变源代码。借着提供储存库给每个使用者,BK 解决了这个问题。不过BK 也有些缺陷,比方说某些技术决策引起了些问题(像是让人头痛的重新命名),但最大的缺点在于BK 不是开放源代码,所以很多人不愿意使用。有几位我们重要维护人员因为BK 可以免费用在开源项目上而使用它,但BK 始终没有普遍的被使用,尽管它帮助了Linux 核心的开发,BK 仍有不足之处。Andrew Tridgell 违反BK 的使用原则,对BK 开始进行逆向工程。我花了几个礼拜或是(或是几个月),居中协调Tridgell 跟Larry McVoy,不过显然没有多大的帮助。从那一刻起我决定放弃使用BK,但是我也不想回到以前没有BK的日子。在那时虽然也有一些源代码控制软件想采用分布式的做法,但都不成气候,它们离我效能表现的要求还差一大截,同时我担心源代码完整性及作业流程上的问题,索性决定自己写一个源代码控制系统。
Q
2.Git有满足你的期待吗?它有哪些地方不足?
 
Linus Torvalds


我很喜欢Git,它运作的非常好而且满足所有我的需求。它掌管了许多计划并且已超乎想象的速度在成长。不过看看CVS 跟RCS 还存在着,可见在使用者在转用其他源代码控式系统上还是有些惰性在,不过迟早有一天Git 都会取代它
Q
3.你是怎么做到这件事情的? 花了整个周末熬夜还是在一般时间内把 Git 搞定?

Linus Torvalds:呵呵,其实你可以去Git 源代码的储存库看它如何逐渐成形。我大概花一天让Git 能达到自己管理自己的程度(self-hosting),之后我就开始用Git 跟Git 提交程序代码了。我大部分的工作都在白天完成,不过也有几天工作到深夜。我觉得最有趣的地方在看到Git 如何快速地成形。在Git 树中的第一次提交并没有写很多程序,但是已经实作出提交程序代码的基本功能。写Git 并不会很难,比较难的是思考如何Git 组织档案的方式。我想强调,Git 从无到有大概花了我十天(包含我第一次用Git 提交核心程序代码),而且我也不是焚育继晷的完成Git。这都取决对Git 的基本概念是否很清楚,早在着手写Git 前,我已经看到其他源代码控制系统的缺陷。我只是不想重蹈要辙罢了。
Q
4.你认为Git被广为接受原因何在?
 
Linus Torvalds


我想很多人使用其他源代码控制软件都碰到跟我类似的问题,而这些问题让我十分火光,在使用上要修正的几个小问题就让人抓狂。在Git 未问世前,没有比较好的解决方法。许多人还不清楚分布式版本控制的好处,甚至还为此争吵不休。不过只要用过Git ,一定无法回头用其他东西。因为用Git 备份源代码简单又可靠,而且也不必担心测试储存库是否会影响到中间储存库。
Q
5.很多人说Git 是给聪明人用的,Andrew Morton (Linux 核心开发者)甚至说:“Git 的设计让使用者觉得自己比想象中的笨。”,对此你有什么样的回应?

Linus Torvalds:这种说法在过去说得通,不过现在不再是了。大家会这样想会有一些原因,但是只有一个原因站得住脚:“同一件事情,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。
Q
6.Git会一直存在吗?在未来十年内会有其他版本控制系统出现吗?你会不会是那个系统的开发者?
 
Linus Torvalds


我不会是那个系统的开发者,也许在十年内我们会看到类似的新东西出现,不过我敢保证,它一定会长的很像Git。Git并非十全十美,但是Git 的基本设计做得非常完整,这是其他源代码管理做不到的,我没有在装客气。
Q
7.为什么Git在Linux上运作的很顺?

Linus Torvalds:一部分原因在于Git 是为我们的工作流程量身打造,另一部分是我提了很多次Git 的分布式设计,再重复几次都不为过。Git 是为有效处理庞大的项目如而生,像是Linux。它可以处理大家以前觉得很“困难”的事,不过那些对我来说像是家常便饭。举个例子,使用其他源代码控制系统要执行合并是非常麻烦的事情,你得精心策画,因为合并兹事体大。这我没办法接受,因为我每天都要执行一堆合并。使用Git 合并只消几秒钟,反而是写批注花掉我比较多的时间。所以基本上Git 是为了满足我的需求而写出 来的。
如果没有Git,Linux核心的发展会跟现在一样好吗?



凡凡
Linus Torvalds

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

你对GitHub有什么样的想法?



凡凡
Linus Torvalds

GitHub 提供很棒的程序代码托管服务,这方面我对它没有什么抱怨,不过我对GitHub 比较有意见的地方是,GitHub作为一个开发平台,它的提交、拉取要求、议题追踪等功能运作的不是很好。GitHub 有太多限制,跟核心比还差得远。一部分的原因是在核心如何被建立,另一部分原因是GitHub 的接口会养成用户的坏习惯。因为GitHub 接口的设

计,在GitHub 上提交会有质量不好的提交讯息等。在这方面他们做了些改善,不过永远不会适用于像Linux 核心的东西。

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



凡凡
Linus Torvalds

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

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



凡凡
Linus Torvalds

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




长按识别二维码关注

凡凡Python笔记


    关注 凡凡Python笔记


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册