当前位置: 首页 > news >正文

不写注释就是垃圾

最近Linux6.2出来了

增加了很多新的东西,有看点的是,Linux确实要可以在Apple M1上面运行了,这应该是一个很大的新闻,如果有这么稳定的硬件支持,那对于Linux来说相当于又打下了一大片的江山。

其中关于Linux6.2的特性罗列如下

  • Nouveau 中早期的 NVIDIA RTX 30/Ampere GPU 支持

  • 更新了 Zstd 压缩代码

  • 其他 Btrfs 性能增强

  • Squashfs 文件系统的新挂载选项

  • 支持 Wi-Fi 7 和 800Gbps 网络的基础工作

  • 在 exFAT 驱动程序中更快地创建文件/文件夹

  • RISC-V 对持久性内存设备的支持 

  • 英特尔 IFS 驱动程序现已稳定

  • Intel Alder Lake N/Raptor Lake P 适度节能

  • USB 4 连接唤醒/断开支持

  • 支持 ChromeOS 人体存在传感器 (HPS)

  • Raspberry Pi 4K @ 60Hz 显示支持

6.2结束后,也代表着6.3开始了,在6.3版本的合并中,Linus发针对一次提交发飙了,发飙的原因是因为有人提交代码竟然没有好好写commit

关于如何写好一个commit,之前有文章

你确定你会使用git commit?

如下链接:

https://lore.kernel.org/lkml/CAHk-=wgw++ccN-Pd1npZsBSDD3z6EGUSKsWuAEh5YC-TmfJAug@mail.gmail.com/

提交者是这样写的:

大意是说

——Linus,请把这些更新用在Linux v6.3-rc1上,涉及一些什么什么的特性,有一些围绕着虚拟子系统的其他补丁,但是这些补丁已经被其他人reviewed了。

97b3ea1ff87840e29e90118924022d6c.png

看Linus是如何回复的:

6edf7a6feea6a0c5e7be486868f3ca93.png

Linus说,我不得不再强调一次,如果你不能清楚的说明一个提交的原因,那么这次提交就显得很粗暴。

之后提交者回复如下

37e6c569936b7de07efe0980cc937c5a.png

之后,Linus还详细的解释了自己的观点

所以说,真正的大佬是超级耐心并且讲道理的,如果没有Linus,不吹,Linus被取代迟早的事。

> >I've said this before, and apparently I need to say this again: if you
> >cannot be bothered to explain *WHY* a merge exists, then that merge is
> >buggy garbage by definition.
>
> Okay, understood. This was a merge of the fixes for v6.2. I'll explain that more clearly in the log from now on. :)So I really want people to document their merges, not just so that I
(and others) can see "oh, that's why it exists at all", but also
because I want to make people think about their merges more in
general.For example, one reason why people do these kinds of merges is because
they are starting to do some new development for the next release, and
that new development then depends on fixes or infrastructure that they
had in another branch (like a "for-linus" branch in case of fixes).So then they - mindlessly - just do a "git merge that-branch" and the
end result looks very much like what you sent me.In a slightly better world, they then actually write an explanatory
commit message for that merge, knowing that I ask for them, and the
merge commit message ends up being exactly that kind of slightly odd"Now I'm starting a new thing that depends on the fixesI already sent upstream, so I'm merging that branch"Which while certainly better than no explanation at all sounds a bit
odd, doesn't it? Yeah, add a few details on just what you depend on
and why, and it gets much better, but it's all going to be a bit
hand-wavy about future work that you haven't even written yet.And *that* will them maybe make you then go "Ahh, I'm doing things wrong".Because the "nice git way" to do that kind of thing is to actually
realize "oh, I'm starting new work that depends on the fixes I already
sent upstram, so I should just make a new topic branch and start at
that point that I needed".And then - once you've done all the "new work" that depended on that
state, only at *THAT* point do you merge the topic branch.And look - you have exactly the same commits: you have one (or more)
normal commits that implement the new feature, and you have one merge
commit, but notice how much easier it is to write the explanation for
the merge when you do it *after* the work.Instead of having to waffle about "future work depends on this feature
that was in another branch, so I'm merging this branch", your merge
commit now makes *sense*. You're not merging some old state in order
to create new features, you are literally just merging the completed
new feature.So *this* is one reason I want people to really think about, and
explain, their merges. Because it may be that having to explain it
makes you go "Oh, I'm doing this wrong".Now, in your case, I don't actually think you needed that merge for
any "future new work" at all. I think you just randomly did a merge to
just get the same warning fixes that you had already sent me. So in
this case, it smells like the merge was just entirely superfluous.Those kinds of superfluous merges can be ok - it's just annoying to
have a development branch that still shows some artifact that you
already fixed elsewhere.But they still need the explanation. And for that case, I want the
explanation partly to make it clear that you really *thought* about
it, and partly just so that I can see why you did it.Because we have a very real history where people did mindless daily
back-merges like this "just because" with absolutely no rhyme or
reason, just because they wanted to start each day with the most
recent base, and it really gets very ugly. The development history can
go from a DAG that actually visualizes the different development
streams nicely to a spider-net maze of inexplicable merges very
quickly.Linus

5cc557ff59860d35f2cf84a74400ed42.jpeg

ea71da8f79b551fdad29050553a12978.jpeg

2f3f213ba2461296dee87e117a4ff99f.jpeg

相关文章:

不写注释就是垃圾

最近Linux6.2出来了增加了很多新的东西,有看点的是,Linux确实要可以在Apple M1上面运行了,这应该是一个很大的新闻,如果有这么稳定的硬件支持,那对于Linux来说相当于又打下了一大片的江山。其中关于Linux6.2的特性罗列…...

深信服一面

1.C变量存储在哪里,生命周期是怎样的 2.静态成员变量和成员函数的特性,在哪里用过吗 3.new和delete是什么,和malloc和free对比有啥优势 4.new能不能重载,重载new有什么用 5.多态是怎么实现的,有什么优势和目的 6.…...

【C语言】深度理解指针(中)

前言✈上回说到,我们学习了一些与指针相关的数据类型,如指针数组,数组指针,函数指针等等,我们还学习了转移表的基本概念,学会了如何利用转移表来实现一个简易计算器。详情请点击传送门:【C语言】…...

步进电机运动八大算法

引导一种模块化(Module)设计思想,将传统步进电机的控制器(controller)、驱动器(Driver)、运动算法(Arithmetic)三合一。 对比国内外步进电机驱动原理和已有工作,结合各种硬件特性,改进或实现了可实际移植并用于步进电机控制八大算法。本产品…...

如果你持续大量的教坏ChatGPT,它确实会变坏

你输出的很多数据是经过人工标注吗,以确保可以正常对外展示出来,而不是有性别歧视、种族歧视或者其它意识形态为多数人所不认同的内容产生? 作为AI语言模型,我并不直接处理或输出任何数据,我的任务是通过对输入的自然语…...

opencv学习(二)图像阈值和平滑处理

图像阈值ret, dst cv2.threshold(src, thresh, maxval, type)src: 输入图,只能输入单通道图像,通常来说为灰度图dst: 输出图thresh: 阈值maxval: 当像素值超过了阈值(或者小于阈值,…...

【含源码】用python做游戏有多简单好玩

有很多同学问我还有其他什么小游戏吗,游戏是怎么做的,难不难。我就用两篇文章来介绍一下,如何使用Python做游戏。 兔子与灌 俄罗斯方块 休闲五子棋 走迷宫 推箱子 消消乐 超多小游戏玩转不停↓ 更多小游戏可以评论区讨论哦,喜欢…...

C++常用函数

std::sort std::sort 函数用于对数组或容器进行排序&#xff0c;可以按照默认的升序排序或指定比较函数进行排序。 语法如下&#xff1a; template <class RandomAccessIterator> void sort(RandomAccessIterator first, RandomAccessIterator last);template <clas…...

Android Framework基础到深入篇

Android Framework基础到深入篇 KernelSU Android上基于内核的Root方案 Android系统源码下载/编译篇...

【Go进阶训练营】聊一下go的gc原理

背景 正好周末时间&#xff0c;就打算梳理以下自己对go gc的理解。跳出语言层面来说&#xff0c;gc分为两种&#xff0c;一种是手动创建&#xff0c;手动销毁。另一种就是由自动分配自动销毁&#xff0c;前者就是c,c的代表&#xff0c;后者就是java&#xff0c;go。 而整个流程…...

英飞凌Tricore原理及应用介绍05_中断处理之中断路由(IR)模块详解

目录 1.概述1.1相关缩写2 TC3xx中IR特性介绍3.SRN(中断服务请求优先级)3.1 寄存器中的各Bit位讲解3.2 如何改变SRN配置4. 实际应用介绍4.1 如何利用SRC寄存器检查OS中断配置是否正确?1.概述 在Tricore架构中允许有多个中断源包括片上外设及外部中断世间产生的中断请求,以打…...

微搭问答002-移动端上传的文件如何在PC端下载

遇到一个问题&#xff0c;就是上传的图片&#xff0c;在手机上可以下载了&#xff0c;但在电脑上怎么下载到电脑 里&#xff0c;包括上传的文件 点击查看页面就可以吧&#xff0c;在企业工作台里 我做了查看页面&#xff0c;小程序可以&#xff0c;但H5和电脑页面不行 你创建一…...

初识JVM

目录 引言 JVM是什么&#xff1f; JVM和java有什么联系&#xff1f; JDK、JRE、JVM有什么区别 为什么学习JVM&#xff1f; JVM——从内存管理开始 运行时数据区域 分区讲解 堆 方法区 程序计数器 本地技术栈 虚拟机栈 对象的创建 指针碰撞&#xff1a; 空闲列表…...

实践分享:Vue 项目如何迁移小程序

最近我们小组刚经历了将成熟的 HTML5 项目转换成小程序&#xff0c;并在app中运行的操作&#xff01;记录下来分享给各位。 项目&#xff1a;将已有的 Vue 项目转为小程序&#xff0c; 在集成了FinClip SDK 的 App 中运行。 技术&#xff1a;uni-app、FinClip 两个注意事项&…...

JavaScript学习笔记(6.0)

JavaScript类 使用关键字class创建类。 始终添加constructor()方法 class ClassName{constructor(){...} } calss Car{constructor(name,year){this.namename;this.yearyear; } } 创建了一个名为Car的类&#xff0c;并且拥有两个初始属性name和year。 JavaScript类不是对…...

某小公司面试记录

记录一次面试过程&#xff0c;还有一些笔试题&#xff0c;挺简单的&#xff0c;排序&#xff0c;去重&#xff0c;this指向&#xff0c;深浅拷贝&#xff0c;微任务的执行顺序&#xff0c;变量提升等。 ES6数组新增的方法 Array.from&#xff1a; 将两类对象转为真正的数组&am…...

SPI读写SD卡速度有多快?

SD卡是一个嵌入式中非常常用的外设&#xff0c;可以用于存储一些大容量的数据。但用单片机读写SD卡速度一般都有限&#xff08;对于高速SD卡&#xff0c;主要是受限于单片机本身的接口速度&#xff09;&#xff0c;在高速、实时数据存储时可能会有影响。但具体速度可以达到多少…...

MySQL:索引与事物

目录 简单了解索引的底层数据结构 索引的概念&#xff1a; 索引存在的意义&#xff1a; 索引的使用&#xff1a; 索引实现的数据结构 B树 B 树 B 树的特点 B 树的优势 事物 事物的概念 事物的使用 事物的四大特性 并发可能引起的问题 脏读问题 不可重复读 幻读…...

mybatis实战

目录配置自动下划线驼峰MyBatis解析的SQL和实际传参不符的问题传参是整型&#xff0c;结果是false日期比较入参是字符串入参是Date父子递归查询上下级查询方法一方法二传参数组inmapper中接口注解映射配置 自动下划线驼峰 使用mybatis的自动下划线驼峰转换 mybatis有一个选项…...

【UEFI实战】BIOS与IPMI

KCS KCS全称是Keyboard Controller Style&#xff0c;关于这个名称不用过多的追究&#xff0c;只需要知道它是系统&#xff08;BIOS和OS&#xff09;和BMC通信的一种基本方式即可。本文将介绍BIOS下的KCS接口&#xff0c;包括接口使用方式和数据。内容参考自《ipmi-second-gen…...

90%的人都不算会网络安全,这才是真正的白帽子技术【红队】

我敢说&#xff0c;现在网上90%的文章都没有把网络安全该学的东西讲清楚。 为什么&#xff1f;因为全网更多的都是在讲如何去渗透和公鸡&#xff0c;却没有把网安最注重的防御讲明白。 老话说得好&#xff1a;“攻击&#xff0c;是为了更好的防御。”如果连初衷都忘了&#x…...

关于vuex的使用

1.首先安装vuex npm install vuex --save 这时如果直接安装vuex&#xff0c;不指定版本的话&#xff0c;就会直接安装最新的vuex的版本。所以会出现报错。 报错就安装这个 npm install --save vuex3 2.创建文件夹&#xff0c; 有的时候安装好会自动创建vuex的文件夹 &#xf…...

第53篇-某商城sign参数分析-webpack【2023-03-07】

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖! 文章目录 一、前言二、网站分析三、完整代码一、前言 今天再来试一个webpack的例子吧,网址: aHR0cHM6Ly9tLnlxYi5jb20vYmFuay9…...

探秘MySQL——排查与调优

文章目录一、问题排查一&#xff1a;SQL执行出错二、问题排查二&#xff1a;慢查询0.几个重要参数1.配置慢查询日志命令行配置&#xff08;重启失效&#xff09;修改配置文件&#xff08;永久生效&#xff09;2.查看慢查询日志3.问题排查1&#xff1a;Look_time耗时4.问题排查2…...

【9.数据页结构】

概述 InnoDB 的数据是按「数据页」为单位来读写的&#xff0c;也就是说&#xff0c;当需要读一条记录的时候&#xff0c;并不是将这个记录本身从磁盘读出来&#xff0c;而是以页为单位&#xff0c;将其整体读入内存。数据库的 I/O 操作的最小单位是页&#xff0c;InnoDB 数据页…...

演唱会总是抢不到票?教你用Python制作一个自动抢票脚本

人生苦短 我用python 这个大家应该都知道吧&#xff1f; 是中国综合类现场娱乐票务营销平台&#xff0c; 业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域。 如何快速抢票&#xff1f; 那么&#xff0c; 今天带大家用Python来制作一个自动抢票的脚本小程序 本文源码python安…...

【系统开发】WebSocket + SpringBoot + Vue 搭建简易网页聊天室

文章目录一、数据库搭建二、后端搭建2.1 引入关键依赖2.2 WebSocket配置类2.3 配置跨域2.4 发送消息的控制类三、前端搭建3.1 自定义文件websocket.js3.2 main.js中全局引入websocket3.3 App.vue中声明websocket对象3.4 聊天室界面.vue3.5 最终效果一、数据库搭建 很简单的一个…...

Learning C++ No.14【STL No.4】

引言&#xff1a; 北京时间&#xff1a;2023/3/9/12:58&#xff0c;下午两点有课&#xff0c;现在先把引言给搞定&#xff0c;这样就能激励我更早的把这篇博客给写完了&#xff0c;万事开头难这句话还是很有道理的&#xff0c;刚好利用现在昏昏欲睡的时候&#xff0c;把这个没…...

高速PCB设计指南(八)

七、产品内部的电磁兼容性设计 1 印刷电路板设计中的电磁兼容性 1.1 印刷线路板中的公共阻抗耦合问题 数字地与模拟地分开&#xff0c;地线加宽。 1.2 印刷线路板的布局 ※对高速、中速和低速混用时&#xff0c;注意不同的布局区域。 ※对低模拟电路和数字逻辑要分离。…...

什么是腾讯云关系型数据库(MySQL/SQL Server/MariaDB/PostgreSQL详解)

什么是腾讯云关系型数据库&#xff1f;腾讯云关系型数据库提供 MySQL、SQL Server、MariaDB、PostgreSQL详细介绍。腾讯云关系型数据库让您在云中轻松部署、管理和扩展的关系型数据库&#xff0c;提供安全可靠、伸缩灵活的按需云数据库服务。腾讯云关系型数据库提供 MySQL、SQL…...

个人免费建网站/百度秒收录蜘蛛池

使用Action、Func和Lambda表达式 在.NET在,我们经常使用委托,委托的作用不必多说&#xff0c;在.NET 2.0之前,我们在使用委托之前,得自定义一个委托类型&#xff0c;再使用这个自定义的委托类型定义一个委托字段或变量。.NET 2.0给我们带来了Action、Func两个泛型委托&#xff…...

章丘建网站/广州网站营销优化qq

一、SGI 标准的空间配置器&#xff0c;std::allocator SGI也定义了一个符合部分标准&#xff0c;名为allocator的配置器&#xff0c;但是它自己不使用&#xff0c;也不建议我们使用&#xff0c;主要原因是效率不佳。 它只是把C的操作符::operator new和::operator delete做了一…...

外贸企业 访问国外网站/百度一下就知道了官网楯

Full GC 问题之前在一些文章里面已经讲过它的来龙去脉&#xff0c;主要的解决方案目前 主要有两方面需要注意&#xff0c;一方面需要查看 GC 日志确认是哪种 Full GC&#xff0c;根据 Full GC 类型对 JVM 参数进行调优&#xff0c;另一方面需要确认是否开启了 BucketCache 的 o…...

昆明手机网站建设/软文营销

&#xff08;一&#xff09;图像采集 首先我们要取得待识别的图像。这项工作可以通过数码相机、DV机、工业摄像机、电脑数字摄像头、手机摄像头等设备采集&#xff0c;并从中取得我们要分析的图像信息。 &#xff08;二&#xff09;版面分析 取得图像信息后&#xff0c;要对图像…...

湖州城市投资建设集团网站/网络项目发布网

坑&#xff01;&#xff01; 前端有哪些项目&#xff1f;这些项目有什么区别和共同点&#xff1f; 1、Angular CLI 2、AngularJS 3、Boostrap 4、Cordova 5、Express 6、HTML5 Boilerplate 7、Meteor 8、Node.js 9、React 10、React Native 11、Vue.js...

购物类网站开发/百度推广售后

上周的帖子专门针对OOP 。 尽管有普遍的看法&#xff0c;但该练习并未使用访问器&#xff08; 即获取器和设置器&#xff09;或共享的可变状态来解决。 该解决方案的实现基于Kotlin语言提供的传统OOP构造&#xff1a;类&#xff0c;继承和重写。 其他语言可能会提供不同的OOP方…...