web-dev-qa-db-ja.com

Linuxカーネルリポジトリにブランチが1つしかないのはなぜですか?

私はLinux初心者なので、これが今まで聞いた中で最も明白な質問である場合は許してください。

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

22
Robin

メインラインカーネル

まず、そのgithubリンクを使用しないでください(これは単なるミラーです)。実際のリポジトリは kernel.org にあります。おそらく、Linus Torvaldsのツリー、つまり torvalds/linux.git を使用する必要があります。

これはmainline kernelと呼ばれます。つまり、このツリーは、次のカーネルバージョンの実際の開発が行われているツリーです。 masterブランチしかありませんが、タグを使用して任意のカーネルバージョンにチェックアウトできます。このコマンドは、すべてのバージョンタグを表示します。

$ 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 ツリーがあることにも言及する必要があります。 カーネルプロセスドキュメント の説明は次のとおりです。

サブシステムツリーからの更新をメインライン4.xツリーにマージする前に、統合テストを行う必要があります。この目的のために、ほぼすべてのサブシステムツリーがほぼ毎日プルされる特別なテストリポジトリが存在します。

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

このように、-nextカーネルは、次のマージ期間にメインラインカーネルに入ると予想されるものについての概要の見通しを示します。冒険的なテスターは、ランタイムテストを-nextカーネル。

メンテナーツリー

木に戻る。実際にはたくさんあり、maintainers treesと呼ばれています。あなたはそれらすべてを見ることができます ここ

マージポリシーを理解する必要があります。コードをメインラインツリーに実際にマージできるのはLinusだけです。彼からの多くのマージコミットをgit logで見ることができます。したがって、パッチをメインラインカーネルに適用する場合は、最初にレビューするために、パッチを kernelメーリングリスト に送信する必要があります。 Documentation/SubmittingPatches を参照してください。パッチがレビューされ、対応するサブシステムのメンテナーによって承認されると、彼はそれを自分のツリーに適用します。そこから、このパッチは次の マージウィンドウ 中にメインラインカーネルにマージされます。 Linuxカーネル開発モデルについて説明します ここ

パッチのアップストリームに興味がある場合は、 kernelnewbies.org の資料も参照してください。

53
Sam Protsenko

このリポジトリは、他の何百ものブランチを1つのメインリポジトリにマージしたLinusの作業の結果のみを反映しています。

ブランチが多すぎるため、これらのブランチは保持されません。そのレポの役割は参照になることです。

4
VonC