RE: Clarifying confusion of our variable placement rules caused by cleanup.h

"Bird, Tim" <[email protected]> Sat, 17 Jan 2026 16:54:43 +0000
Newsgroups dev.linux.lists.ksummit,org.kernel.vger.linux-kernel
Message-ID <PH0PR13MB5639535AC3D1232831FD2380FD8AA@PH0PR13MB5639.namprd13.prod.outlook.com>
> -----Original Message-----
> From: Alexey Dobriyan <[email protected]>
> 
> On Fri, Jan 02, 2026 at 09:50:29AM -0500, Steven Rostedt wrote:
> > On Wed, 31 Dec 2025 13:17:32 +0100
> > Andy Shevchenko <[email protected]> wrote:
> >
> > > > There was variation of this type of nonsense with headers (not only it has
> > > > to be sorted alphabetically but by length too!)
> > >
> > > By length it indeed sounds weird, but alphabetical is the natural language
> > > order everybody learnt from the daycare / school years, so it's properly
> > > programmed in our deep brain. Having that allows to find easily if anything one
> > > is interested in is already being included. Also it allows to avoid dup inclusions
> > > (was there, fixed that for real). So, it's not bad.
> >
> > Actually, I like the "by length" because its aesthetically easier on the eyes.
> >
> > Alphabetically is fine, but either one helps in catching duplicate headers.
> 
> Such rules for headers are mostly harmless -- headers are supposed to be
> idempotent so ordering doesn't matter. But if ordering doesn't matter
> why have a rule at all?
The rule is (or at least was, at one point) helpful to reduce the likelihood
merge conflicts during patch application.  I know patch and quilt still
don't ignore mismatched #include lines in the patch context, even
though #include lines in C are independent of each other.  I'm not sure if git
handles this better or not.

When everyone appends new #include lines at the end of the block of lines,
there is more likelihood of a patch conflict right there.  If the #include lines
are instead sorted in some fashion, it reduces (but obviously does not eliminate)
the possibility of a patch conflict.
 -- Tim