设为首页 收藏本站
查看: 952|回复: 0

[经验分享] Linux创始人Linus Torvalds访谈,Git的十年之旅

[复制链接]

尚未签到

发表于 2015-12-9 09:22:48 | 显示全部楼层 |阅读模式
十年前的这周,Linux kernel 社区面临着艰巨的挑战。十年后的今天,Git 用于成千上万个项目。在这十周年之际,Linux 创始人 Linus Torvalds 为我们分享了 Git 幕后的故事,并且告诉我们这个工程队软件开发的影响。你会发现他在这个故事背后的评论。我们跟随Q&A追寻 Git 的轨迹。  

为什么要创建 Git?

Torvalds:我真的从来没有想过要做资源控制管理,并觉得它在计算机世界里拥有最少的乐趣(可能是除了数据库之外),而且我讨厌所有的 SCM。但是随着 BitKeeper 的出现,我的想法发生了改变。

BK (BitKeeper)大多数都是正确的,但有本地副本的存储库与分布式合并是一个大问题。分布式源码管理的一个主要问题是源码管理的分离——谁才可以提交改变。BK 让你可以避免这个问题,方法就是给每个人自己的源代码存储库。但是 BK 有自己的问题,有几个技术选择导致了问题(重命名是痛苦的),而最大的缺陷是它不是开源的事实。有很多人不想使用它,所以当我们最终让几个核心维护人员使用 BK 时,它对开源项目是免费的,无处不在,所以它帮助了内核开发,即便仍有痛点。

当 Tridge(Andrew Tridgell)开始对 BK 协议实施逆向工程时,这是违反 BK 的使用规则的。我花了几周的时间(几个月?感觉是这样)试图在 Tridge 和 Larry McVoy 之间调解,但是最终它显然无法工作了。所以在某种程度上我确定了我无法再继续使用 BK,但是我真的不想再回到那个旧的 BK 的日子。同时,虽然有些 SCM 试图获得整个分布式事情,遗憾的是离目标是遥远的。最终我选择自己去写。

你是怎么着手的?时间上是整周都在熬夜编写还是只在常规时间里?

Torvalds:你可以实际的在 Git 源代码存储库中去看看它是如何成型的。它花费我大约一天的时间来让其“自托管”,这样我就可以使用 Git 本身来将东西整合到 Git 中。白天的工作是主要的,但也有一些事在半夜或凌晨两点。最有趣的部分是它如何成型的,第一次提交到 Git 树种的东西是没有太多代码的,但是它已经做了基础——足以支撑它。编码的诀窍并不是真的那么多,但是需要思考数据如何去组织。

所以我想强调的是当它真的只在大约十天左右的时间里出来,这也并不表示它像某种疯狂的编码。早期代码的实际数量是非常小的,它取决于基础的观念。我在整个项目开始之前考虑了一段时间,包括其他人已经遇到过的问题,我看到我想要避免去做什么。

它辜负了你的期望了吗?你如何评价它如今的工作?对它有哪些限制呢?

Torvalds:它工作的非常好,并且到目前为止仍满足我所有的期望。不过在转换源控制系统中有许多惰性。

为什么会认为其已被广泛采用?

Torvalds:我想很多人也遇到过相同的问题,以致我恨 SCM。虽然目前有很多试图解决一两个“小角落”的项目,但是实在没有哪个想 Git,可以最终承担大的问题。即使人们没有意思到“分布式”部分有多重要(并且有很多人反对这个部分),然而一旦他们弄清楚它允许简单可靠的备份,并允许人们创建自己的测试库,而不必担心去写访问中心存储库的政纲,他们会离不开它。

Git 会永远持续下去吗,或者你预见另一个版本控制系统会出现在另一个十年里?你会是其中的编写者之一吗?

Torvalds:我不会是编写者之一。也许在未来十年里我们会看一些新的东西,不过我相信它会是类似 Git 的东西。它不是像 Git 那样让所有事物正确,而是以某种方式解决所有真正的基本问题(其他 SCM 不曾解决的)。

为什么 Git 可以很好的工作于 Linux?

Torvalds:它显然是被设计用于我们的工作流的,因此这是它的一部分。我已经提过跟多次整个“分布式”部分,但值得重复。不过它也被设计成高效、足够用于一些大的项目,比如 Linux,并且它也被设计用于做一些人们认为困难的事情。

举个例子来说,在大多数 SCM 中,合并的概念被普遍认为是非常痛苦和困难的,你不得不计划合并,因为处理量是巨大的。这是我不能接受的,而且最大的开销不应该在合并上,而是在测试结果上。合并的“git”部分只需几秒结合,它带给我更多的时间。

所以 Git 基本上是以我的需求来设计和编写的,并且它的表现也是这样。

有人说 Git 是针对超级聪明的人,甚至连 Andrew Morton 都曾说 Git 是“清楚的被设计于让你感觉不那么聪明的东西”。对此你的反应是?

Torvalds:有几个原因让人们有这样的感觉,而我想只有一个,这个原因很简单:“你做事情的方法可以有如此多”。

你可以使用 Git 做很多事情,而且很多关于你应该做什么的规则当中并没有太多的技术限制,更多的是关于当于其他人一起工作时,什么是可以正常进行的。所以 Git 是一个非常强大的工具集,不仅仅具有压倒性的那种,它也意味着你可以经常以不同的方式做着相同或相似的事情,而且它们都可以工作。一般情况下,学习 Git 的最好方法是先做非常基础的东西,甚至就是看一些东西,直到你有熟悉、自信的基础。

这里还有一些历史原因导致 Git 被认为是复杂的。其中之一就是它是复杂的。很早一批为了工作于内核而使用 Git 的人们真的不得不为了让一切运行起来去学习非常粗暴的脚本集,所有的努力都用于核心技术工作,只有很少的精力用于简化它,或使它显而易见。所以 Git 的名誉是当之无愧的,要求你正确的指导你在早期该做些什么,不过这主要适用于 6 个月或一年。

另一个让人们认为 Git 困难的原因是 Git 有很大的不同。有些人使用诸如 CVS 等事物十年到二十年,Git 不是 CVS。概念是不同的,命令是不同的,从一开始 Git 就没试图去像 CVS。

但是 Git 没有不必要的不同,差异是必须的。只是这些让有些人真的认为它比想象中更为复杂,因为来自不同的背景。“CVS 背景”的事物已经远去,现在可能有很多程序员从不使用 CVS,并且会觉得 CVS 的方式非常混乱。为什么呢?因为他们先学的 Git。

如果不用 Git,你认为 Linux 内核开发速度能够跟上目前的速度吗?原因是?

Torvalds:当然可以,但是这也要求有人去写某些 Git 等价物,一个可以像 Git 这般效率的分布式 SCM,我们肯定需要些类似 Git 的事物。

你对 GitHub 最新的意见是什么?

Torvalds:GitHub 是一个优秀的托管服务,我没有任何需要针对它的地方。我要抱怨的是 GitHub 作为一个开发平台,提交、请求、跟踪问题等不能工作的很好。

请说一说在 Git 或 GitHub 上您最感兴趣的用法?

Torvalds:很高兴看到采用 git 可以很轻松的创建一个项目。以前的代码托管是很难用,有了 git 和 GitHub,创建一些小项目变得非常简单。项目具体是做什么并不重要,重要的是你可以做到了。

您最近还有其它项目吗?有其它可以在未来若干年主导软件开发的项目吗?

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-148617-1-1.html 上篇帖子: 使用Shell创建GitHub仓库 下篇帖子: [linux,git]在 linux 下面使用 github(3)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表