Subject: Re: git on MacOSX and files with decomposed utf-8 file names

From: Johan Herland <[email-masked]>
Date: Thu, 17 Jan 2008 19:22:47 +0100

On Thursday 17 January 2008, Junio C Hamano wrote:
> Wincent Colaiuta <[email-masked]> writes:
> 
> > If this is really just a platform-specific hack, can we use platform- 
> > specific code to do the normalization?
> 
> Unfortunately, I do not think this can be a platform-specific
> hack.
> 
> If a project wants to be usable on both sane and insane
> filesystems, people on platforms whose filesystems treat "foo"
> and "Foo" as two distinct pathnames (and "Ma<UMLAUT>rchen" and
> "M<A-with-UMLAUT>rchen" as two distinct ones) need to be
> prevented from creating both in their tree objects at the same
> time.  Once you create two pathnames xt_connmark.c and
> xt_CONNMARK.c in the same tree object in your project, people on
> case insensitive filesystems cannot work with your project (you
> cannot check out the kernel source tree and work on it on vfat).

IMHO, support for insane filesystems should be split into two parts:

1. A git config setting (probably in .gitattributes) that is enabled
   by the project to prevent anyone from committing files that would
   cause problems on insane filesystems. This setting must be enabled
   for everybody in the project (which is why it cannot easily be
   solved by the current hooks infrastructure which is per-repo only).

2. A platform-specific hack that detects whenever you're about to
   check out a problematic filename on an insane filesystem.
   The hack should either warn or (probably better) FAIL to check out
   the problematic file(s) (with an appropriate error message
   pointing at the setting in (1)).

AFAICS, _both_ are needed in order to solve this problem properly.

Have fun!

...Johan

-- 
Johan Herland, <[email-masked]>
www.herland.net