新增80万行新代码 Linux内核不会崩第一个关键因素是Git
8 月初,当 Linux 5.8 RC 版本开放测试时,大多数的新闻都聚焦于它的大小,称其为 “史上最大的内核版本”。正如 Linus Torvalds 本人指出的那样,“尽管没有任何一件事情能脱颖而出…… 但 5.8 似乎是我们有史以来最大的发行版之一。”
确实,刚刚发布的 Linux 内核 5.8 RC 具有超过 14,000 个 commit,约 80 万行新代码以及大约 100 名新贡献者。要知道,距离 5.7 正式版发布才仅仅过去了约 2 个月的时间。Linux 内核维护者 Steven Rostedt 认为,5.8 之所以变得如此之大,很有可能是因为 COVID-19 疫情让很多人难以出门旅行,所有人都因此能够在这期间完成比平时更多的工作。
Rostedt 表示,从一个经验丰富的 Linux 内核贡献者和维护者的角度来看,5.8 RC 发行版特别令人震惊的并不是它的大小,而是它的空前规模对于那些正在维护它的人来说却没有造成困扰,“我认为这是因为 Linux 具有比世界上任何软件项目都好的工作流程。”
拥有最佳的工作流程意味着什么?对 Rostedt 而言,这归结为 Linux 内核开发人员随着时间的推移建立的一系列基本规则,以使他们能够持续不断地大规模、可靠地发展 Linux 内核项目。Rostedt 站在一个 Linux 内核资深维护者的角度,为我们分享了庞大的 Linux 内核项目 30 年来是如何有条不紊地运转的。
第一个关键因素是 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 进行简单更改,可以使更改量很大,但仍然可以接受,因为它是针对某一项单一任务的更改。通过始终遵循此原则,项目维护者可以更轻松地识别和隔离任何有问题的更改,而不影响其他的功能。
commit 不能破坏构建
不仅应该将所有更改分解为尽可能小的变量,而且还不能破坏内核。即每个步骤都必须完全起作用,并且不引起退化。这就是为什么对函数原型的更改还必须更新调用它的每个文件,以防止构建中断的原因。因此,每个步骤都必须作为一个独立的更改来工作,这将我们带到了下一点:
所有代码都是二等分的
如果在某个时候发现了错误,则需要知道是哪个更改导致了问题。从本质上讲,二等分是一种操作,它使开发者可以找到所有发生错误的确切时间点。
为此,请转到最后一个已知的工作 commit 所在的节点,并且已知第一个 commit 已损坏,然后在该点测试代码。如果可行,则前进到下一个节点;如果不是,则返回更上层的节点。这样一来,开发者就可以在十几次编译 / 测试中,从成千上万的可能 commit 中分离出导致问题出现的 commit 。Git 甚至可以通过git bisect功能帮助自动化该过程。
重要的是,这只有在开发者遵守以前的规则的情况下才能很好地起作用:每个 commit 仅做一件事。否则,您将不知道是 commit 的许多更改中的哪一个导致了问题;如果 commit 破坏了构建让整个项目无法正常启动,同时等分线又恰好落在了该 commit 上,则您将不知道接下来是该往上一个节点测试还是往下一个节点测试,因为它们都有问题。这意味着您永远都不应编写依赖于将来 commit 的 commit ,例如:调用尚不存在的函数,或更改全局函数的参数而不更改同一 commit 中的所有调用者。
永远不要 rebase 公共分支
Linux 项目工作流程不允许 rebase 他人使用的任何公共分支。因为 rebase 这些公共分支后,已重新基准化的 commit 将不再与基于原存储库中的相同 commit 匹配。在树的层次结构中,不是叶子的公共主干部分不能重新设置基准,否则将会破坏层次结构中的下游分支。
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 )。
Rostedt 指出,Linux 项目取得空前成功的另一个因素是他们社区的文化。Linux 内核社区内部存在一种持续改进的文化,这使他们能够首先采用这些实践。同时他们还有一种信任的文化,“我们有一条清晰的途径,人们可以通过该途径做出贡献,并随着时间的推移证明他们愿意且有能力推进该项目的发展。这将建立一个相互信任的关系网,这些关系对于项目的长期成功至关重要。”
Rostedt 认为,内核开发者的肩上承担着比其他任何项目都要重的责任。“在内核层,我们别无选择,只能遵循这些做法。因为所有其他应用程序都在内核之上运行,内核中的任何性能问题或错误都将导致上层的应用程序出现性能问题或错误。我们必须完美处理内核中的错误,否则,整个计算机系统都将受到损害。我们非常关心每个错误,因为内核中的错误带来的风险很高,这种思维方式也能让我们很好地服务于任何软件项目。”
上层的应用程序会因为错误而崩溃,造成的后果可能是惹恼用户,但风险不高。而内核的错误可能导致的后果是让计算机上的一切都出现问题,承担着巨大的风险。
这就是Linux 内核开发工作流程被视为软件开发行业黄金标准的原因。
标签: Linux内核
相关阅读
-
api-ms-win-core-bicltapi-l1-1-0.dll文件丢失如何修复?|热点在线
api-ms-win-core-bicltapi-l1-1-0 dll通常存储在Windows操作系统的系统
2023-06-08 -
-
报道:双星新材董秘回复:短期波动受到多种因素影响,因坚定自身而努力发展,公司持续深耕新材料发展,积极调整产品结构
双星新材(002585)06月08日在投资者关系平台上答复了投资者关心的问题。
2023-06-08 -
海泰新光董秘回复: 公司第一代产品没有在市场上进行大量推广,这是与公司的产品和市场定位有关|热点在线
海泰新光(688677)06月08日在投资者关系平台上答复了投资者关心的问题。
2023-06-08 -
csgo能不花钱开箱子吗?csgo一周可以掉落几个箱子?
csgo新手怎么获得箱子?csgo开箱网站,这两年可以说火遍全球,每一个csgo玩家都着迷与其中不能自拔,csgo...
2023-06-08
精彩推荐
阅读排行
相关词
- 每日热文:通讯:“中国为我打开机遇之门”——一个洪都拉斯青年的中国情缘
- csgo开箱多少钱一个?csgo开箱模拟器推荐
- 日本民众举行抗议活动 反对政府排放核污染水入海_环球时快讯
- 离婚协议书的格式 离婚协议书的格式怎样写图片
- 潘功胜:中国坚持稳健的货币政策是金融周期相对稳健的原因-短讯
- 全球要闻:普通话手抄报内容大全_普通话手抄报内容精选
- CPU蓝屏一进系统就重启该如何解决
- 热点评!公安部交管局公布近期三轮车肇事肇祸典型交通事故案例
- 海南司机 今日高考英语听力考试期间途经考点禁止鸣笛-世界视点
- 长三角铁路端午小长假预计发送旅客1500万人次
- 妄想山海营地怎么升级(妄想山海营地如何升级) 环球即时看
- 什么是新零售的前端表象(新零售的表现形式)
- 怎样快速去黑眼圈_怎么去除黑眼圈|世界聚看点
- api-ms-win-core-bicltapi-l1-1-0.dll文件丢失如何修复?|热点在线
- xmllite.dll文件被破坏怎么办|天天微动态
- 一公顷等于多少平方千米_等于0.01平方分米
- 星球神偷官网在哪下载 最新官方下载安装地址
- 今日热搜:和平精英第十周任务怎么完成 任务完成技巧方法详解
- “国企领导牵手门”最新进展:牵手门涉事女子已被停职并接受调查
- 如何解决msprivs.dll报错丢失问题 环球热头条
- 前沿资讯!英语四级多少分及格_英语四级简介
- 灵显第一季_关于灵显第一季介绍 焦点日报
- 国服csgo如何开箱?csgo国服开箱方法介绍
- 河南省开封市龙亭区市场监管部门就定量包装茶叶过度包装问题开展专项检查和行政指导
- 天天速读:安徽省市场监管局推进法治政府建设结硕果
- 7b蓝屏怎么解决
- 新知青_关于新知青简介
- 深圳思莉医疗美容门诊部怎么样 真实情况在线获取-全球播报
- 新石器_关于新石器简介 环球热点
- csgo去哪开箱?csgo新人玩家开箱攻略
- 端午假期火车票6月8日开售,年轻人寻找下一个“淄博”
- 视焦点讯!童年好词好句好段_童年好词好句好段总结
- 老火靓汤的做法_教你做五种最简单的广东老火靓汤
- 遗憾!河南一考生因迟到未能进入考场 老师考场外安慰
- 当前动态:元宵节吃汤圆和元宵是一样的吗_元宵节吃汤圆和元宵介绍
- 老六爱找茬什么时候出 公测上线时间预告
- 中国石油大学辟谣!|全球新动态
- 小房子简笔画涂色(小房子简笔画) 天天看热讯
- 万宁市气象台发布雷电黄色预警【Ⅲ级/较重】【2023-06-08】 最新资讯
- 重庆璧山区扎实开展政府质量管理奖培育、评选、管理工作
- 世界讯息:小女巫奥莉维亚的魔法商店官网在哪下载 最新官方下载安装地址
- 比亚迪推出10万元内新SUV车型 焦点热议
- 世界速看:公共 | 河北省石家庄市井陉县文旅局关爱未成年由“送文化”到“种文化”传承优秀文化
- 环球短讯!剑影寻光官网在哪下载 最新官方下载安装地址
- 河南省渑池县持续优化营商环境激发经营主体活力_今日快看
- 四川省市场监管局全力助推个体私营经济高质量发展 聚看点
- 旅游 | 河东文旅精品“引燃”美丽深圳 环球热文
- 国家金融监督管理总局:要真正实现金融监管“全覆盖 无例外”-焦点播报
- “第一生育大省”广东作部署:支持有条件地区发放育儿补贴 全球信息
- 坐竹筏被筏工索要红包?广西阳朔:景区公司暂停涉事人工作2个月
- 天天速读:两部门印发通知:举办全国和美乡村篮球大赛
- 向海图强!海洋经济“扬帆远航”_环球讯息
- csgo国服不能开箱子吗?csgo国服开箱子详细介绍
- wmvdspa.dll损坏修复方法
- 如何解决出现olepro32.dll加载错误的问题
- Win7运行Wegame蓝屏出现该怎么应对
- 天天要闻:实控人被列入失信被执行人名单,加加食品的股价持续下跌
- storport.sys蓝屏无限重启应该如何应对
- 潘功胜回应汇率波动:我国外汇市场将有条件保持较为平稳运行状态
- 德阳市旌阳区人大常委会调研区农村集体经济发展情况
- 新疆皮山机场新建工程选址报告获中国民航局批复 环球速看料
- 每日观点:政府当“红娘”,企业来“相亲” 这场产销对接会为四川纺织服装产业送福音
- 德阳市旌阳区双东镇“三强化”提升基层人才能力|世界快消息
- 浙江空管分局首次建设完成国产化导航台设备
- 顶烈日 战高温 什邡公安交警为高考保驾护航
- 世界微资讯!线上线下齐发力 全民共享“四川非遗购物节”
- 世界快讯:移动廊道亮相广州白云机场 为远机位乘机旅客撑“伞”
- 天天快看点丨海南海洋乐园大盘点~别收藏,我怕你玩不过来
- 山东机场:强化“四心宣讲”奏响“空港乐章”|每日动态
- 天津航空:为旅客提供安心的出行保障
- 【环球播资讯】南充蓬安:护航高考 交警同行
- 南充顺庆:爱心助考 “电”亮未来
- 环球热资讯!emulator64.dll丢失如何修复
- PEX启动蓝屏出现应该如何应对 世界简讯
- 践行“绿水青山就是金山银山”通过设立巡逻队来禁止渔民非法采集珊瑚 并吸纳渔民进入景区就业|环球微头条
- 2023年6月大学生村官考试公告汇总
- 环球快报:生存冒险游戏《血清》新预告 支持简体中文
- 天天最资讯丨应急管理部:今年以来生产安全事故起数和死亡人数持续下降 但重特大事故有所反弹
- 微动态丨威高骨科:脊柱、创伤、关节三大领域全部集采并落地执行
- 康泰医学:暂无脑机接口相关产品
- 士兰微:65亿定增获证监会批文 IDM龙头加速汽车芯片产品升级
- 李云泽:下好风险前瞻防控先手棋 以更加主动态度应对风险隐患-全球今亮点
- 全球热讯:中级经济师《金融》每日一练(2023.06.08)
- 腾讯《无畏契约》国服今日终测 20名英雄爽玩 天天报资讯
- 永远杀不完 任天堂发布《塞尔达》历代总BOSS加农集锦_焦点速读
- 世界新资讯:君禾股份:未来预期随着海外库存消耗及消费市场逐步复苏 水泵主业会呈现复苏反弹
- 2023山西太原市古交市招聘社区专职社工体检和考察公告_天天时快讯
- 易纲:坚决把绿色金融工作摆在突出位置,实现“3060”目标需要胡萝卜加大棒
- 2023年山东泰安肥城市城市社区专职工作者招录进入面试范围人员递补名单(第三批)_时讯
- 每日看点!隔夜SHIBOR报1.3390% 下降6.50个基点 7天SHIBOR报1.8500%
- 世界快播:华菱钢铁:目前废钢资源相对稀缺成本较高,长流程炼钢更具经济性
- 全球消息!易会满:进一步打通痛点堵点,为机构投资者入市创造更加有利环境
- 《神秘岛》开发商新作《苍穹乾坤》使用AI辅助开发 引众筹者不满
- 天天头条:五大行再次下调存款利率
- 客人去哪了?五一后各地餐饮生意直线下滑,突然就没人了
- 当前快看:理想汽车在青岛成立销售公司
- 潘功胜:中国稳健金融周期为经济和金融市场运行提供适宜环境
- 美国社交电商再起波澜:TikTok商城开张,Meta却要闭门做生|今日快看
- 世界快资讯:上海再保险“国际板”正式启动
- 特别好评RPG游戏《恐怖的世界》 完整版10月19日上线|环球精选
- 易会满:持续加大对伪私募、地方交易场所等重点领域风险的整治
- 十元店重回巅峰:新穷人与日本1990s
- 每日快报!教育股震荡走低 国新文化跌超8% 荣信文化跌逾7%
- 全球快讯:央行潘功胜:人民币债券具有良好的投资组合分散化价值
- 国产大飞机开启常态化商业运行:C919带动产业链一起飞 市场规模有望达万亿元量级
- U盘安装系统时蓝屏怎么解决 全球头条
- ROG蓝屏后该采取什么解决方法来重启 世界快报
- 中国地震局:国家地震烈度速报与预警工程已完成主体建设任务 焦点讯息
- win10启动就蓝屏是怎么回事 全球热点
- 环球头条:华硕笔记本acpi蓝屏该如何解决
- 世界最资讯丨打击违规销售作弊器材行为 海南省市场监管部门多措并举为高考中考保驾护航
- 每日热议!永劫无间蓝屏死机应该如何处理
- KMODE蓝屏出现应该如何处理 全球观热点
- 携程集团发布2023年第一季度财报
- 甘肃省华亭市东华镇市场监管所开展农村夏季食品安全专项检查_环球热资讯
- 深圳市市场监管局总部经济审批服务“全市通办”正式落地
- 解码开化(一) 文旅产业:从“高看一眼”“棋高一招”到“焕然一新”
- 第五届京津冀石墨烯大会在北京房山举办,加速三地产业链深度融合
- 高考期间海南天气如何?未来两天多云有雷阵雨 焦点速读
- 别被“蚊蝇通杀”迷了眼
- 啥是海洋?直播带你一起看 天天快看点
- 内罗毕:低碳和电动交通载具展 天天观速讯
- 环球播报:斯诺克新星赵心童为涉赌遭禁赛道歉
- 《沙石镇时光》:1.0版本发售日期公布!通过“塑造你的未来”预告片为前方的秘密和危险做好准备 世界独家
- 关注眼健康亟须全社会行动起来
- 哈利波特魔法觉醒怎么尊享眉色 尊享眉色方法攻略 环球速看
- 甘肃省华亭市市场监管局多举措保障中高考期间食品安全 环球新动态
- 第19届深圳文博会人气旺 每日快报
- 甘肃省嘉峪关市市场监管局镜铁分局全力保障高考期间食品和特种设备安全
- 河北沙河:太行古村落焕发新活力_天天快播
- 世界百事通!晋陕峡谷遇奇石
- “共建首都跨境电商新生态”系列活动在京启动 每日热门
- 环球看热讯:汉字工坊上班不带饭怎么过 找出9个公司吃的答案分享
- 甘肃省张掖市新墩市场监管所“三力齐发”加强中高考期间特种设备安全保障_环球热推荐
- 快消息!小心,这种眼疾易盯上上班族
- 眼药水怎样使用才正确
- 当前讯息:机器人:公司基本实现了35kg以下新款机器人减速器的国产化替代
- 华菱钢铁:钢材产品在新能源新材料领域需求前景将持续向好-天天通讯
- 今早发布!雷雨!_天天即时
- 全球快报:云顶之弈s9暗影岛格温阵容攻略 s9赛季暗影岛格温阵容搭配
- 江苏“智造”夯牢实体经济“家底”
- 加拿大野火烟尘飘至美国 部分地区被烟尘笼罩
- 【环球时快讯】文字玩出花无法原谅怎么过 无法原谅十二处细思极恐在哪
- 环球快播:百亿授信!民生银行与协鑫集团达成全面战略合作
- 前5月外贸保持稳定增长 制造业转型升级塑造出口新动能
- 简讯:江苏油田页岩油累产突破4万吨
- 让城市成为“开放的艺术馆”(金台随笔) 视点
- 易会满:适时出台资本市场进一步支持高水平自立自强的政策措施 全球报道
- 【全球聚看点】河南麦收进度过八成 夏播已完成近五成
- 今起,在锡启幕!