Почему в репозитории ядра Linux есть только одна ветвь?

Я начинающий Linux, так что простите, если это самый очевидный вопрос, который вы когда-либо слышали.

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

Ответ 1

Ядро mainline

Прежде всего: не используйте эту ссылку github (это просто зеркало). Фактические репозитории расположены на kernel.org. Возможно, вы захотите использовать дерево Linus Torvalds, которое является torvalds/linux.git.

Он называется ядром mainline, что означает, что это дерево является тем, где происходит фактическая разработка следующей версии ядра. Хотя он имеет только ведущую ветвь, вы можете проверить на любую версию ядра, используя теги. Эта команда покажет вам все теги версии:

$ git tag

Вы можете проверить нужный тег следующим образом:

$ git checkout v4.0

Нет необходимости в связке ветвей для ядра mainline, поскольку процесс разработки в этом дереве никогда не останавливается, и как только новая версия будет выпущена, не будет никакого обратного переноса на эту версию (внутри основного дерева). Таким образом, Linus придерживается тегов (вместо ветвей) в этом случае.

Стабильное ядро

Существует также устойчивое к linux дерево. "Стабильный" означает, что после выпуска некоторые исправления ошибок будут возвращены обратно. В этом дереве вы должны искать ветки (а не теги):

$ git branch -a

Вы можете видеть ветки вроде:

linux-4.9.y

где y суффикс является просто заполнителем для версии linux-4.xy (поскольку схема именования - linux-4.xy). Всякий раз, когда вы видите y суффикс - это стабильная ветвь ядра. Некоторые из этих ветвей являются ядрами LTS (читайте это для деталей).

В этом случае необходимы ветки, потому что разработчикам приходится резервировать некоторые исправления ошибок в выпущенных версиях. Так что здесь просто недостаточно тегов.

Следующее ядро

Также следует отметить, что существует дерево linux -next. Вот описание из документации процесса ядра:

Прежде чем обновления из дерева подсистем будут объединены в дерево mainline 4.x, они должны быть протестированы по интеграции. Для этой цели существует специальный тестовый репозиторий, в котором практически все деревья подсистемы вытягиваются почти ежедневно:

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

Таким образом, ядро -next дает -next прогноз на то, что, как ожидается, войдет в ядро mainline в следующий период слияния. Приключенческие тестеры очень приветствуются для тестирования ядра -next.

Сопровождающие деревья

Вернемся к деревьям. На самом деле их много, их называют деревьями-хранителями. Вы можете увидеть их всех здесь.

Вам нужно понять политику слияния: только Linus может фактически объединить код с деревом mainline. Вы можете видеть, как много компромиссов совершает его в git log. Поэтому, если вы хотите, чтобы ваш патч применялся к ядру mainline, вам нужно сначала отправить его в списки рассылки ядра для проверки. См. Раздел Документация/Подача патчей. Как только ваш патч будет рассмотрен и подтвержден соответствующим помощником подсистемы, он применит его к своему собственному дереву. Оттуда этот патч будет объединен с ядром mainline во время следующего окна слияния. Здесь описывается модель разработки ядра Linux.

Если вы заинтересованы в продвижении своих патчей, вы также можете ознакомиться с материалами kernelnewbies.org.

Ответ 2

Это репо отражает только результат работы Линуса, объединяющего сотни других ветвей в одно основное репо.

Он не поддерживает эти ветки, потому что их будет слишком много: роль этого репо должна быть ссылкой.