web-dev-qa-db-fra.com

Pourquoi le référentiel du noyau Linux n'a-t-il qu'une seule branche?

Je suis un débutant Linux, alors pardonnez-moi si c'est la question la plus évidente que vous ayez jamais entendue.

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

22
Robin

Noyau principal

Tout d'abord: n'utilisez pas ce lien github (c'est juste un miroir). Les référentiels réels sont situés à kernel.org . Vous voudrez probablement utiliser l'arborescence de Linus Torvalds, qui est torvalds/linux.git .

Il s'appelle noyau principal , ce qui signifie que cet arbre est celui où se déroule le développement réel de la prochaine version du noyau. Bien qu'il n'ait que branche principale , vous pouvez passer à n'importe quelle version du noyau à l'aide de balises. Cette commande vous montrera toutes les balises de version:

$ git tag

Vous pouvez commander à la balise souhaitée comme ça:

$ git checkout v4.0

Il n'y a pas besoin dans un tas de branches pour le noyau de la ligne principale, car le processus de développement dans cet arbre ne s'arrête jamais, et une fois la nouvelle version publiée, il n'y aura plus de portage arrière vers cette version (à l'intérieur de l'arbre de la ligne principale). Donc, Linus s'en tient aux balises (au lieu des branches) dans ce cas.

Noyau stable

Il y a aussi linux-stable arbre. "Stable" signifie qu'après la sortie, certaines corrections de bogues y seraient rétroportées. Dans cet arbre, vous devez rechercher des branches (plutôt que des balises):

$ git branch -a

Vous pouvez voir des branches comme:

linux-4.9.y

y suffixe est juste un espace réservé pour une version de correction de bogue (car le schéma de dénomination est linux-4.x.y). Chaque fois que vous voyez le suffixe y - c'est une branche stable du noyau. Certaines de ces branches sont des noyaux LTS (lire this pour plus de détails).

Dans ce cas, les branches sont nécessaires car les développeurs doivent rétroporter certaines corrections de bogues dans les versions publiées. Donc, les balises ne suffisent pas ici.

Noyau suivant

Il convient également de mentionner qu'il existe linux-next arbre. Voici la description de documentation du processus noya :

Avant que les mises à jour des arborescences de sous-système ne soient fusionnées dans l'arborescence principale 4.x, elles doivent être testées pour l'intégration. À cette fin, il existe un référentiel de test spécial dans lequel pratiquement toutes les arborescences de sous-système sont extraites presque quotidiennement:

https://git.kernel.org/?p=linux/kernel/git/next/linux-next.git

De cette façon, le -next kernel donne un aperçu de Outlook sur ce qui devrait entrer dans le noyau principal lors de la prochaine période de fusion. Les testeurs aventureux sont les bienvenus pour tester le runtime -next noyau.

Arbres mainteneurs

Retour aux arbres. En fait il y en a beaucoup, ils s'appellent arbres de mainteneurs. Vous pouvez tous les voir ici .

Vous devez comprendre la politique de fusion: seul Linus peut réellement fusionner le code avec l'arborescence de la ligne principale. Vous pouvez voir beaucoup de merge commits de lui dans git log. Donc, si vous voulez que votre correctif soit appliqué au noyau principal, vous devez l'envoyer à listes de diffusion du noya pour révision en premier. Voir Documentation/SubmittingPatches . Une fois votre correctif examiné et reconnu par le responsable du sous-système correspondant, il l'appliquera à sa propre arborescence. À partir de là, ce patch sera fusionné avec le noyau principal lors de la prochaine fenêtre de fusion . Le modèle de développement du noyau Linux est décrit ici .

Si vous êtes intéressé par la mise en amont de vos correctifs - vous pouvez également consulter les matériaux kernelnewbies.org .

53
Sam Protsenko

Ce dépôt ne reflète que le résultat du travail de Linus qui a fusionné des centaines d'autres succursales en un seul dépôt principal.

Il ne garde pas ces succursales car il y en aurait trop: le rôle de ce repo est d'être une référence.

4
VonC