Linux|两个月新增 80 万行代码,Linux 内核为什么不会崩?( 二 )
Git 正确合并
其他的版本管理系统是合并来自不同分支代码的噩梦,它们通常难以弄清代码冲突,并且需要大量的手动工作来解决 。而 Git 的结构可以轻松完成这项工作,因此 Linux 项目也从中直接受益 。这就是为什么 5.8 版本的大小并不重要的重要原因 。在 5.8-RC1 发布周期中,平均每天有 200个 commit,并从 5.7 版本中继承了 880 个合并 。一些维护者注意到了其中增加的工作量,但是对此仍然没有感到什么太大的压力或者导致倦怠 。
保留定义明确的 commit 日志
不幸的是,这可能是许多其他项目忽略的最重要的原则之一 。每个 commit 都必须是独立的,这也应该包括与该 commit 相应的日志 。内核贡献者必须在更改的 commit 日志中做出说明,让所有人了解与正在进行的更改相关的所有内容 。Rostedt 提到,他自己的一些最冗长和最具描述性的变更日志,往往是针对一些单行代码提交的,因为这些单行代码更改是非常细微的错误修复,且代码本身包含的信息极少 。因此更改的代码越少,日志反而应该说明得更详细 。
在一个 commit 过了几年之后,几乎没有人会记得当初为什么进行更改 。Git 的 blame 功能就可以显示这些代码的修改记录 。比如一些 commit 可能非常古老,也许您需要去除一个锁定,或者对某些代码进行更改,而又不确切知道它为什么存在,就可以使用 git blame 来查看 。编写良好的代码更改日志可以帮助确定是否可以删除该代码或如何对其进行修改 。Rostedt 说:“有好几次我很高兴能在代码上看到详细的变更日志,因为我不得不删除这些代码,而变更日志的描述让我知道我这么做是可以的 。”
持续测试和集成
最后一项基本原则是开发过程中进行持续测试和持续集成 。在向上游发送 commit 请求之前,开发者会测试每个 commit。Linux 社区还有一个名为Linux-next 的镜像 ,它提取维护人员在其存储库的特定分支上进行的所有更改,并对其进行测试以确保它们能正确集成 。Linux-next 非常有效地运行着整个内核的可测试分支,该分支将用于下一个发行版 。Linux-next 是一个公共仓库,任何人都可以测试它,这种情况经常发生 —— 人们现在甚至发布有关 Linux-next 中代码的错误报告 。事实上,已经进入 Linux-next 几周的代码基本上可以确定会最终进入主线发行版中 。
软件开发行业的黄金标准
所有的这些原则制度使 Linux 社区能够以如此庞大的规模(常规 9 周为一个版本迭代周期)发布令人难以置信的可靠代码(每个版本平均 10,000 次 commit,最后一个版本超过 14,000 次 commit ) 。
【Linux|两个月新增 80 万行代码,Linux 内核为什么不会崩?】Rostedt 指出,Linux 项目取得空前成功的另一个因素是他们社区的文化 。Linux 内核社区内部存在一种持续改进的文化,这使他们能够首先采用这些实践 。同时他们还有一种信任的文化,“我们有一条清晰的途径,人们可以通过该途径做出贡献,并随着时间的推移证明他们愿意且有能力推进该项目的发展 。这将建立一个相互信任的关系网,这些关系对于项目的长期成功至关重要 。”
Rostedt 认为,内核开发者的肩上承担着比其他任何项目都要重的责任 。“在内核层,我们别无选择,只能遵循这些做法 。因为所有其他应用程序都在内核之上运行,内核中的任何性能问题或错误都将导致上层的应用程序出现性能问题或错误 。我们必须完美处理内核中的错误,否则,整个计算机系统都将受到损害 。我们非常关心每个错误,因为内核中的错误带来的风险很高,这种思维方式也能让我们很好地服务于任何软件项目 。”
上层的应用程序会因为错误而崩溃,造成的后果可能是惹恼用户,但风险不高 。而内核的错误可能导致的后果是让计算机上的一切都出现问题,承担着巨大的风险 。
这就是 Linux 内核开发工作流程被视为软件开发行业黄金标准的原因 。
推荐阅读
- 巴基斯坦新增新冠肺炎确诊病例319例,累计295372例
- 印尼新冠肺炎新增确诊病例3308例再创新高,累计169195例
- 香港新增18例新冠肺炎确诊病例 累计确诊4786例
- 香港新增新冠肺炎确诊病例18例 累计确诊4786例
- 病例|天津新增1例境外输入新冠肺炎确诊病例
- 消息资讯|福州这三所名校新校区正式投用,新增学位约3630个!
- 俄罗斯新增4941例新冠肺炎确诊病例 累计确诊985346例
- 中东多国新增病例数高位增长 严格执行防疫措施
- 天津新增1例境外输入确诊病例,自洛杉矶来津
- 意大利一周新增数百传播链 患者平均年龄降至29岁