Re: [PATCH 6/7] Make branch merging aware of underlying case-insensitive filsystems
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 23, 2008, 06:13 UTC
- Message-ID
- <7v7ifueznu.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <alpine.LFD.1.00.0803221033430.3020@woody.linux-foundation.org>
Linus Torvalds <torvalds@linux-foundation.org> writes:
Show 14 quoted lines
> @@ -540,6 +556,16 @@ static int verify_absent(struct cache_entry *ce, const char *action, > int dtype = ce_to_dtype(ce); > struct cache_entry *result; > > + /* > + * It may be that the 'lstat()' succeeded even though > + * target 'ce' was absent, because there is an old > + * entry that is different only in case.. > + * > + * Ignore that lstat() if it matches. > + */ > + if (ignore_case && icase_exists(o, ce, &st)) > + return 0; > +
It may well be the case that this lstat() returning success was caused by a ghost match with a file with different case, and I think it is the right thing to say "no, it does not exist" if that is the case.
I wonder what happens when the file with the same case does exist that we are trying to make sure is missing?
As far as I can tell, icase_exists() does not ask "does a file with this name in different case exist, and a file with this exact case doesn't?" but asks "does a file with this name, or another name that is different only in case, exist?".