Mercurial case-folding BIG BUG

Guo Tang tangguo77 at gmail.com
Sun Feb 3 12:10:58 CST 2008


I am using Windows at work. So I had tried to figure out a solution for 
hg. The idea I had was using os.walk() to get the case sensitive file 
names from NTFS. Then before hg asking the status of a file, it first 
check against os.walk() result to make sure the file is really there. 
But when I checked the performance of os.walk(), it is not good. For my 
clearcase source codes, I have 53,000 files. It took os.walk() 53 seconds 
to finish. The performance hit is just too big to make the fix useful.
I would say if we can find a way to do this faster (like less than 1 
second for 50k files), it might be useful to add a flag to turn it on.

It might be interesting for TortoiseHg to solve this problem. I know 
TortoiseSVN has some way of "caching" file status (maybe also case 
sensitive file name?). Or any notification hook from OS to user land 
application that something has changed inside this folder? Then we once 
pay this price once.

regards,
Guo

On Sat, 2 Feb 2008, Dustin Sallings wrote:

> 
> On Feb 2, 2008, at 12:35, Filippo Pedron wrote:
> 
> > To solve my problem and update my working directory, I disabled the  
> > case-folding collision check in the source code.
> 
> 
> 	If you disable the check, then what happens when the collision occurs?
> 
> 	If your filesystem can't tell the difference between FOO.TXT and  
> foo.txt, how should mercurial (or any revision control system) apply  
> changes to one or the other (or Foo.Txt)?
> 
> -- 
> Dustin Sallings
> 
> 
> 
> _______________________________________________
> Mercurial mailing list
> Mercurial at selenic.com
> http://selenic.com/mailman/listinfo/mercurial
> 


More information about the Mercurial mailing list