From: Torsten Bögershausen Date: Mon, 09 Jan 2012 16:44:27 GMT Subject: Re: [PATCH][RFC] git on Mac OS and precomposed unicode Message-ID: <4F0B196B.8010904@web.de> In-Reply-To: <7vboqehpxm.fsf@alter.siamese.dyndns.org> On 08.01.12 03:46, Junio C Hamano wrote: > Torsten Bögershausen writes: > >> Implementation: >> Two files are added to the "compat" directory, darwin.h and darwin.c. >> They implement basically 3 new functions: >> darwin_opendir(), darwin_readdir() and darwin_closedir(). > > I haven't looked at the patch yet but that sounds exactly the right way to > go about this. Nice. > >> No decomposed file names in a git repository: >> In order to prevent that ever a file name in decomposed unicode is entering >> the index, a "brute force" attempt is taken: >> all arguments into git (technically argv[1]..argv[n]) are converted into >> precomposed unicode. > > That also sounds sensible, but... > >> This is done in git.c by calling argv_precompose() for all commands >> except "git commit". > > ... I think it generally is a bad idea to say "all except foo". There may > be a reason why "foo" happens to be special in today's code, but who says > there won't be another command "bar" that shares the same reason with > "foo" to be treated specially? Or depending on the options, perhaps some > codepath of "foo" may not want the special casing and want to go through > the argv_precompose(), no? > > After all, "git commit -- pathspec" will have to get the pathspec from the > command line, and match them against the paths in the index, the latter of > which you are keeping in the canonical form, so you would want the argv[] > also be in the same form, and applying your argv_precompose() would be a > sensible way to do so, no? Thanks Junio for catching this. I added a new test case as well as fixed the code. > I would also suspect that the cleanest way to implement it is to replace > the main() entry point (see how compat/mingw.h does this). We only need to that argv conversion in git.c, (and not in daemon.c), so I sticked to the old model for V1. I send a new patch soon /Torsten