Reputation: 10093
When it comes to the Kernel.org kernel repos, there are a couple that stand out as the most current:
These appear to be mostly non-intersecting in terms of their respective tags. It appears likely that unless I'm working on the bleeding edge I should just stick with cloning "stable" (my current tests are based on existing stable kernels). Is this a correct assumption?
Is the torvalds tree actually a full superset of stable (though it doesn't seem so, looking at the tags)? If not, as seems likely, how do changes propagate back and forth between the two?
Upvotes: 9
Views: 1270
Reputation:
[...] mostly non-intersecting in terms of their respective tags
They better not intersect or otherwise misbehave! These tags represent THE official Linux versioning, with a prefixed v
. A two-part version like v4.19
is one of torvalds' commits. Linus also tags/publishes the -rc
candidates. (So people can test and fix and he only has to merge ;)
kernel.org
calls it "mainline" on the start page, and lists "stable" and "longterm" below. These have three-part versions, now from v4.4.228
- v5.14.11
.
The evolutionary tree looks like this, with holes:
LONGTERM
5.4.1 -- 5.4.152 - ...
/
... - 4.4 -- 4.19 - 4.20-rc1 - 4.20 - 4.21 -- 5.4 -- 5.10 -- 5.14 - 5.15-rc5 - ... MAINLINE
\ \
4.4.1 - 4.4.2 -- 4.4.228 - ... \
LONGTERM 5.14.1 - 5.14.11 - ...
STABLE
There are now 2 stable and 6 longterm versions. These are managed by the stable group in a separate repo with a lot of branches:
The two "rolling" branches are for practical purposes: on that branch either a new v5.14.5
or v5.13.18
can appear. The tags in these branches are maintained by S. Levin, while G. Kroah-H. does the main "linux-....y" branch commits.
Here is how git log --oneline --graph
looks with 4 versions in 3 branches:
* 3cbd3f978 (tag: v5.10.72, Stable-510.y) 5.10.72 (archive)
| * 4c33b80bc (HEAD -> Stable-514.y, tag: v5.14.11) 5.14.11 (archive)
| * 3bb9b4940 (tag: v5.14, Mainline) 5.14 (archive)
|/
* ecfd56a3c (tag: v5.10) 5.10 (archive)
* 8a877cbd4 (tag: v5.4) Init with tar archive 5.4
5.10 has a Mainline to 5.14 and a Stable to 5.10.72. The ancestral relationships should become more visible after the next commit on Mainline (v5.15).
This takes 400MB in .git/objects/pack
. There are no commits (except what is shown), but the git diff
works.
--> you probably don't need to clone to have the new "monthly" kernel of interest. You probably want to work on v5.10.72, 73, 74 and not make v5.14 compile and run and then soon start again for 5.15.
Distros also take stable kernels and half-secretly modify them: e.g. 5.11.2-arch1-1
.
Upvotes: 0
Reputation: 526493
Yes, you'd mostly want to build off stable unless you're working on bleeding-edge stuff.
Tags are merely pointers to commits - just because one repo has a tag and the other doesn't doesn't mean that the commit isn't present in both repos. (For instance, 'stable' could have a tag 'Foo' that points to commit 'A' - torvalds might also have that commit A as part of some branches, but doesn't have the named tag.)
Upvotes: 3