我是Linux初学者,请原谅我,如果这是你听过的最明显的问题。
答案 0 :(得分:46)
首先:不要使用那个github链接(它只是一面镜子)。实际存储库位于kernel.org。你可能想要使用Linus Torvalds'树,torvalds/linux.git。
它被称为 mainline 内核,这意味着这棵树正在发生下一个内核版本的实际开发。虽然它只有主分支,但您可以使用标签签出任何内核版本。此命令将显示所有版本标记:
$ git tag
您可以结帐到所需的标签:
$ git checkout v4.0
主线内核的一堆分支没有必要,因为这个树中的开发过程永远不会停止,并且一旦发布新版本,就不会有任何后端移植到该版本(在主线树内部) )。因此,在这种情况下,Linus坚持使用标签(而不是分支)。
还有linux-stable树。 "稳定"意味着在发布后,一些错误修复将被反向移植到它。在这棵树中你应该寻找分支(而不是标签):
$ git branch -a
您可以看到以下分支:
linux-4.9.y
其中y
后缀只是错误修正版本的占位符(因为命名方案是linux-4.x.y
)。每当你看到y
后缀时 - 它就是一个稳定的内核分支。其中一些分支是LTS内核(有关详细信息,请阅读this。)
在这种情况下需要分支,因为开发人员必须将一些错误修复移植到已发布的版本中。所以这里的标签还不够。
还应该提到的是linux-next树。以下是kernel process documentation的说明:
在子系统树的更新合并到主线4.x树之前,需要对它们进行集成测试。为此目的,存在一个特殊的测试存储库,几乎每天都会在其中提取所有子系统树:
https://git.kernel.org/?p=linux/kernel/git/next/linux-next.git
这样,
-next
内核给出了在下一个合并期间预计将进入主线内核的概要。非常欢迎冒险测试人员对-next
内核进行运行时测试。
回到树上。实际上有很多,它们被称为维护者树。你可以看到所有这些here。
您需要了解合并策略:只有Linus才能将代码合并到主线树。你可以在git log中看到很多来自他的 merge commits 。因此,如果您希望将补丁应用于主线内核,则需要先将其发送到kernel mailing lists进行审核。见Documentation/SubmittingPatches。一旦您的补丁被相应的子系统维护者审核并确认,他就会将其应用到他自己的树中。从那里开始,此补丁将在下一个merge window期间合并到主线内核。 Linux内核开发模型描述为here。
如果您对上传修补程序感兴趣 - 您可能还需要查看kernelnewbies.org材料。
答案 1 :(得分:4)
这个回购仅反映了Linus将数百个其他分支合并为一个主要回购的结果。
它没有保留这些分支,因为它们太多了:该回购的作用是作为参考。