Sam*_*nko 52
首先:不要使用那个github链接(它只是一面镜子).实际的存储库位于kernel.org.你可能想要使用Linus Torvalds的树,它是torvalds/linux.git.
它被称为主线内核,这意味着这棵树正在发生下一个内核版本的实际开发.虽然它只有主分支,但您可以使用标签签出任何内核版本.此命令将显示所有版本标记:
$ git tag
Run Code Online (Sandbox Code Playgroud)
您可以签出所需的标签:
$ git checkout v4.0
Run Code Online (Sandbox Code Playgroud)
主线内核中不需要一堆分支,因为此树中的开发过程永远不会停止,并且一旦发布新版本,就不会有任何后端移植到该版本(在主线树内).所以Linus在这种情况下坚持使用标签(而不是分支).
还有linux稳定的树."稳定"意味着在发布后,一些错误修复将被反向移植到它.在这棵树中你应该寻找分支(而不是标签):
$ git branch -a
Run Code Online (Sandbox Code Playgroud)
你可以看到像这样的分支:
linux-4.9.y
Run Code Online (Sandbox Code Playgroud)
其中y后缀只是一个bugfix版本的占位符(因为命名方案是linux-4.x.y).每当你看到y后缀时 - 它都是一个稳定的内核分支.其中一些分支是LTS内核(有关详细信息,请阅读此内容).
在这种情况下,需要分支,因为开发人员必须将一些错误修复反向移植到已发布的版本中.所以这里的标签还不够.
还应该提到有linux-next树.以下是内核流程文档的描述:
在将子系统树的更新合并到主线4.x树之前,需要对它们进行集成测试.为此,存在一个特殊的测试存储库,几乎每天都会将所有子系统树拉到其中:
https://git.kernel.org/?p=linux/kernel/git/next/linux-next.git
通过这种方式,
-next内核提供了在下一个合并期间将进入主线内核的概要.非常欢迎冒险测试人员对-next内核进行运行时测试.
回到树上.实际上有很多,他们被称为维护者树.你可以在这里看到所有这些.
您需要了解合并策略:只有Linus才能将代码合并到主线树.你可以在git log中看到很多来自他的合并提交.因此,如果您希望将补丁应用于主线内核,则需要先将其发送到内核邮件列表进行审核.请参阅Documentation/SubmittingPatches.一旦您的补丁被相应的子系统维护者审核并确认,他就会将其应用到他自己的树中.从那里,此补丁将在下一个合并窗口期间合并到主线内核.这里描述了 Linux内核开发模型.
如果您对上传补丁感兴趣 - 您可能还想查看kernelnewbies.org材料.