Hacker News new | ask | show | jobs
by kazinator 3226 days ago
> while it was created to be used like in Linux kernel development. [ ... ]

> * You have one online repository for every project (or even the entire code in case of a monorepo).

> * Your repository/repositories have one branch that everyone branch from and develop their changes against. (Release branches don’t count.)

The kernel has one main repo that integrates things from the others, the "torvalds/linux.git":

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...

This keeps Linux together as One Thing. This is Linux's CVSROOT, so to speek.

> You have one process that everyone have to follow to review the code; one review system and one place that runs all your tests.

No kidding; also: one payroll from which everyone gets paid and one product that customers understand: not seven versions of the product based on whose cubicle it came from. See the trend?

1 comments

Developers however use Linus's repository only to find a convenient forking point. Most of the development happens either in subsystem trees, or in distribution forks (where "distribution" includes big companies like Google or Facebook); only bug fixes target Linus's tree directly.

And most users use stable trees or distribution forks. So Linus's tree has the distinctive feature that almost no one uses it, unlike a traditional CVSROOT.

That almost no-one uses directly, but pretty much everyone you mentioned definitely pulls from it(or pull from things branched from it). It would be super interesting to see a path map of commits and what trees they came from for the big distributions of the kernel(i.e. android, debian, fedora, etc). But I'd bet that all of them pull from Linus's repo as a descendant.

My understanding of the general flow layout for the kernel is:

developer branch -> patch -> mailing list -> sub maintainers -> large maintainers -> Linus -> Stable branch X.X -> distribution (i.e. Debian/etc).

With some things cherry picked here and there that don't flow through this, but that most code does.

Sure, everyone's tree descends from it. However:

- normal CVSROOT: developers develop on top of the head of the day.

- Linus's tree: developers develop on top of someone else's head of the day, except for some bugfixes.

Linus's tree becomes "similar" to a CVSROOT only after he cuts a release. But at that point, version control is actually not part of the game anymore.