Linux内核项目30年不崩不乱的秘密

Stella981
• 阅读 607

2020年8月,Linux 发布了内核 5.8 RC 版本,该版本大约有100名新贡献者,具有超过14000个 commit,约80万行新代码。并且,距离上一个 5.7 正式版发布,才仅仅过去了约2个月的时间。

Linux内核项目30年不崩不乱的秘密

视频地址:https://www.zentao.net/xp/continuous-integration-80270.html/?f=kyzg

然而真正让大家感到震惊的是,如此庞大的 Linux 内核项目30年来能够一直有条不紊地运转。这归结于在Linux 内核项目中,开发人员始终都严格遵守着一系列基本原则。

1.每次 commit 只能做一件事

项目维护人员的每个commit都必须只能做一件事,不一定要求很小,但它须是针对某一单一任务的更改。从而可以帮助项目维护者更轻松地识别和隔离任何有问题的更改,而不影响其他的功能。

2.commit 不能破坏构建

每个commit都必须作为一个独立的更改来工作,确保每一步完全起作用,且不引起退化。例如,对函数原型更改时,必须更新调用它的每个文件,以防止构建中断。

3.所有代码都是二等分的

二等分是一种操作,类似于二分法查找算法,它使开发者可以快速地找到所有发生 错误的确切时间点。并且,该原则是基于前面提到的两个原则才能实现的。

4.永远不要 rebase 公共分支

Linux 项目工作流程不允许 rebase 他人使用的任何公共分支。如果 rebase 这些公共分支,已重新基准化的 commit ,将不再与基于原存储库中的相同 commit 匹配。

5.Git 正确合并

对于合并分支,Git相比其他版本管理系统,能更加高效地解决代码冲突等问题 ,避免大量的手动工作。

6.保留定义明确的 commit 日志

编写良好的代码更改日志,有助于代码revi ew流 程,也可以帮助之后的维护人员确定是否可以删除该代码,或如何对其进行修改。

7.持续测试和集成

在向上游发送 commit 请求之前,开发者会测试每个 commit 。 持续测试和集成,有助于尽快地发现集成错误。这个过程可以大大减少集成的问题,同时还能保持项目的高质量

正是因为在开发流程中,所有项目维护人员严格遵守并执行这些基本原则,才使得Linux内核项目有条不紊的“健康成长”。同时,我们也希望本节视频能在项目维护流程上给大家一些启发和帮助。

视频内容来源:

https://www.linux.com/news/why-linuxs-biggest-ever-kernel-release-is-really-no-big-deal/

https://juejin.im/post/6844903890295455751

更多精彩视频分享:https://www.zentao.net/page/college.html/?f=kyzg

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这