第一个关键因素是 Git
首先让我们从 Linux 项目的历史来看。在该项目的早期(1991-2002年),人们只能直接将补丁发送给 Linus Torvalds。准确地说,Linus 从项目的子维护者那里获取补丁,而这些子维护者从其他代码贡献者那里获取补丁。随着 Linux 内核变得越来越大,代码越来越复杂,很快他们就发现,一切都变得很难扩展和跟踪,并且项目将始终面临合并不兼容代码的风险。
这导致 Linus 开始探索包括 BitKeeper 在内的各种版本管理工具。BitKeeper 是一种最早的分布式版本管理的方法,其他的版本管理系统通常使用签出/修改/签入协议,而 BitKeeper 则向所有人提供整个仓库的副本,并允许开发人员将其变更发送出去以进行合并。Linux 在 2002 年开始短暂地采用了 BitKeeper,但是由于其本身是一个专有软件,被认为不符合社区对开源工作的信念,于是该工具在 2005 年停止使用。为了寻找替代品,Linus 消失了一段时间,并带着 git 回来了,后者成为了更强大的分布式版本管理系统,并且是管理流程的第一个重要实例化。Git 的出现使 Linux 开发在今天依然运转良好。
Rostedt 为我们列出了 Linux 内核工作流程中,围绕 Git 展开的七个重要基本原则。
七大基本原则
每次commit只能做一件事
Linux 的中心原则是,所有更改都必须分解为小步骤进行 —— 您的每个commit都只能做一件事。这并不意味着每个 commit 都必须很小,比如对在数千个文件中使用的函数的API进行简单更改,可以使更改量很大,但仍然可以接受,因为它是针对某一项单一任务的更改。通过始终遵循此原则,项目维护者可以更轻松地识别和隔离任何有问题的更改,而不影响其他的功能。