为什么Linux内核存储库只有一个分支?

时间:2015-05-15 20:37:36

标签: linux git linux-kernel workflow

我是Linux初学者,请原谅我,如果这是你听过的最明显的问题。

https://github.com/torvalds/linux/branches/all

2 个答案:

答案 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将数百个其他分支合并为一个主要回购的结果。

它没有保留这些分支,因为它们太多了:该回购的作用是作为参考。