[Tree, v2] De-clutter the top level directory, move ipc/ => kernel/ipc/, samples/ => Documentation/samples/ and sound/ => drivers/sound/

From: Ingo Molnar
Date: Tue Sep 24 2019 - 07:31:43 EST



* Ingo Molnar <mingo@xxxxxxxxxx> wrote:

> Oh, that's a pleasant surprise, I didn't expect _100%_ support! :-)
>
> So I started working on this today and whipped up three of these
> movements, in a 100% scripted fashion.
>
> You can have a sneak preview at the result in this tree:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git WIP.core/toplevel
>
> ...
>
> 2515 files changed, 42476 insertions(+), 42476 deletions(-)

I have pushed out a -v2 version:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git WIP.core/toplevel

2523 files changed, 41304 insertions(+), 41302 deletions(-)

Changes relative to -v1:

- Fixed a bunch of bugs that light testing and light review missed:
missed rename patterns and some build bugs as well. This tree has
passed much wider testing, including cross-platform build testing, a
distro kernel package build and it also got some light boot testing,
just in case.

- Split it into finer grained steps (3 instead of 2 patches per
movement), for easier review and bisection testing:

toplevel: Move ipc/ to kernel/ipc/: move the files
toplevel: Move ipc/ to kernel/ipc/: adjust the build system
toplevel: Move ipc/ to kernel/ipc/: adjust comments and documentation

toplevel: Move sound/ to drivers/sound/: move the files
toplevel: Move sound/ to drivers/sound/: adjust the build system
toplevel: Move sound/ to drivers/sound/: adjust comments and documentation

toplevel: Move samples/ to Documentation/samples/: move the files
toplevel: Move samples/ to Documentation/samples/: adjust the build system
toplevel: Move samples/ to Documentation/samples/: adjust comments and documentation

- The changes are now bisection safe if the #1 ('move') and #2 ('build
system') patches are squashed. The final #3 'adjust comments and
documentation' patch is non-functional in the normal kernel build.
I still kept the three steps separate, for reviewability: for many of
the changes the build system changes are lost in the noise of the
file movement diff itself. (See patch-splitting notes further below.)

- Made some of the build system changes less ad-hoc - but it's still all
100% scripted and automated. Added a SOB to the changelogs, but the
changelogs are still barebones. It's on top of Linus's latestest.

- The longer term plan outlined in my first mail is still in flux - the
'scripts/' movement is probaly a bad idea due to its widespread use.

I'm still torn about whether to do a 3-part or 2-part approach for each
directory movement:

- The problem with the 2-part approach that merges the 'pure file move'
and 'build system' patches so that the latter gets lost in the first
one in an almost unreviewable fashion. Someone would have to re-do the
git mv step and generate a diff by hand to see the build system
changes in isolation...

- The problem with the 3-part approach is that it breaks bisection
between the first two patches, although 'git bisect next' would always
step to a working commit, because the bisection build-breakage window
is only one commit wide.

So I'm slightly leaning toward the 3-part approach for the documentation
and review value - but no strong feelings either way.

Anyway, I know everyone is super busy with the merge window, will keep
posting new versions every now and then until you or Linus tells me not
to bother :-)

Thanks,

Ingo