附录 A. Git 的历史
如今,任何谨慎、有创造力的人在开始 项目时都不会没有备份策略。因为数据是短暂的,很容易丢失--比如说,由于错误的代码修改或灾难性的磁盘崩溃--所以,明智的做法是为所有工作保存一份活档案。
对于文本和代码项目,备份策略通常包括版本控制,或跟踪和管理修订。每个开发人员每天都可能进行数次修订,不断增加的语料库可同时充当存储库、项目说明、沟通媒介以及团队和产品管理工具。鉴于版本控制的关键作用,只有根据项目团队的工作习惯和目标量身定制的版本控制才是最有效的。
管理和跟踪软件或其他内容的不同版本的工具一般被称为版本控制系统(VCS)、源代码管理器(SCM)、修订控制系统(RCS)以及修订、版本、代码、内容、控制、管理和系统等词的其他排列组合。尽管每种工具的作者和用户可能会争论深奥的问题,但每种系统解决的问题都是一样的:开发和维护一个内容库,提供对每个数据的历史版本的访问,并在日志中记录所有更改。在本书中,版本控制系统一词泛指任何形式的修订控制系统。
Git,一个特别强大、灵活、低成本的版本控制工具,让协作开发成为一种乐趣, 由 Linus Torvalds 发明,用于支持 Linux 的开发。1内核的开发而发明的,但后来证明它对许多项目都很有价值。
Git 的诞生
通常情况下,当工具和项目之间出现矛盾时, ,开发人员就会简单地创建一个新工具。事实上,在软件世界中,创建新工具的诱惑可能很容易,也很诱人。面对现有的众多版本控制系统,开发人员不应该轻易做出创建另一个版本控制系统的决定。不过,如果有迫切的需求、一点洞察力和健康的动力,创建一个新工具可能正是正确的方向。
Git 就是这样一个工具,它被 的创造者亲切地称为 "来自地狱的信息管理员"(Linus 以暴躁和干练著称)。尽管 Linux 内核社区内部的政治纷争掩盖了 Git 诞生的确切环境和时间,但毫无疑问,从那场大火中诞生的是一个精心设计的版本控制系统,它能够支持全球范围内的大规模软件开发。
在 Git 出现之前,Linux 内核的开发 使用商业 BitKeeper VCS,它提供了当时的自由软件 VCS(如 RCS 和并行版本系统(CVS))所不具备的复杂操作。然而,2005 年春,当拥有 BitKeeper 的公司对其 "像啤酒一样免费 "的版本设置了额外限制时,Linux 社区意识到 BitKeeper 不再是一个可行的解决方案。
莱纳斯寻找替代方案。他摒弃了商业解决方案,转而研究自由软件包,但却发现了同样的局限性和缺陷,而这些正是他之前摒弃自由软件包的原因。现有的 VCS 有什么问题?Linus 想要却找不到的那些难以捉摸的缺失功能或特性是什么?
- 促进分布式开发
-
分布式开发 "有很多方面,莱纳斯希望新的 VCS 能够涵盖其中的大部分。它必须允许在私有资源库中进行并行、独立和同步开发,而不需要与中央资源库持续同步,否则就会形成开发瓶颈。它必须允许多个开发人员在多个地点进行开发,即使其中一些人暂时处于离线状态。
- 可扩展至处理数千名开发人员
-
仅有分布式开发模式是不够的。Linus 知道,每个 Linux 版本的发布都会有成千上万的开发人员做出贡献。因此,任何新的 VCS 都必须能够处理大量的开发人员,无论他们是在同一个项目中从事相同的工作,还是在同一个项目中从事不同的工作。而且新的 VCS 必须能够可靠地集成他们的所有工作。
- 快速高效地执行任务
-
Linus 决心确保新的 VCS 既快速又高效。为了支持仅在 Linux 内核上进行的大量更新操作,他知道单个更新操作和网络传输操作都必须非常快速。为了节省空间和传输时间,需要使用压缩和 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access