2020-12-26 22:41:13

by Theodore Dubois

[permalink] [raw]
Subject: linux.git is broken on a case-insensitive filesystem

I'm currently hacking on Linux trying to run a sort of UML-style thing on macOS (please don't question my sanity :), and I've run into various issues stemming from macOS having a case-insensitive filesystem.

The one you run into immediately is: there are a number of files (mostly in netfilter) that have different uppercase and lowercase versions. net/netfilter/xt_DSCP.c and net/netfilter/xt_dscp.c are quite different. Last I checked, git would pseudo-randomly pick one of these to check out, and then show the other one as having unstaged changes making it look like the first one. This causes problems when switching branches. I've worked around this with a sparse checkout that excludes these files, but it's not great.

The gitignore also contains the pattern *.s, which excludes *.S as well when git is ignoring case.

Is there any interest in fixing these?

~Theodore


2020-12-26 23:06:19

by Richard Weinberger

[permalink] [raw]
Subject: Re: linux.git is broken on a case-insensitive filesystem

Theodore,

On Sat, Dec 26, 2020 at 11:41 PM Theodore Dubois <[email protected]> wrote:
>
> I'm currently hacking on Linux trying to run a sort of UML-style thing on macOS (please don't question my sanity :), and I've run into various issues stemming from macOS having a case-insensitive filesystem.

Sounds interesting, if you have questions on UML internals, just ask.

> The one you run into immediately is: there are a number of files (mostly in netfilter) that have different uppercase and lowercase versions. net/netfilter/xt_DSCP.c and net/netfilter/xt_dscp.c are quite different. Last I checked, git would pseudo-randomly pick one of these to check out, and then show the other one as having unstaged changes making it look like the first one. This causes problems when switching branches. I've worked around this with a sparse checkout that excludes these files, but it's not great.
>
> The gitignore also contains the pattern *.s, which excludes *.S as well when git is ignoring case.
>
> Is there any interest in fixing these?

I fear it is a little more complicated.
We have different upper and lower case variants in include/uapi/. If
you rename them, existing programs
will fail to build.
...which will make users sad and Linus grumpy.

--
Thanks,
//richard

2020-12-26 23:10:02

by Al Viro

[permalink] [raw]
Subject: Re: linux.git is broken on a case-insensitive filesystem

On Sat, Dec 26, 2020 at 02:30:13PM -0800, Theodore Dubois wrote:
> I'm currently hacking on Linux trying to run a sort of UML-style thing on macOS (please don't question my sanity :), and I've run into various issues stemming from macOS having a case-insensitive filesystem.
>
> The one you run into immediately is: there are a number of files (mostly in netfilter) that have different uppercase and lowercase versions. net/netfilter/xt_DSCP.c and net/netfilter/xt_dscp.c are quite different. Last I checked, git would pseudo-randomly pick one of these to check out, and then show the other one as having unstaged changes making it look like the first one. This causes problems when switching branches. I've worked around this with a sparse checkout that excludes these files, but it's not great.
>
> The gitignore also contains the pattern *.s, which excludes *.S as well when git is ignoring case.
>
> Is there any interest in fixing these?

<wry> Just how could we fix a long-standing design flaw in macOS? </wry>

2020-12-27 10:05:15

by Bernd Petrovitsch

[permalink] [raw]
Subject: Re: linux.git is broken on a case-insensitive filesystem

Hi all!

On Sat, 2020-12-26 at 14:30 -0800, Theodore Dubois wrote:
[...]
> thing on macOS (please don't question my sanity :), and I've run
> into various issues stemming from macOS having a case-insensitive
> filesystem.

Case-insensitive filesystems are broken by design.

Kind regards,
Bernd
--
Bernd Petrovitsch Email : [email protected]
There is no cloud, just other people computers. - FSFE
LUGA : http://www.luga.at