hg diff seems to traverse unnecessary dirs

Matt Mackall mpm at selenic.com
Wed Jul 23 11:14:58 CDT 2008


On Wed, 2008-07-23 at 08:23 -0400, Jeff Squyres wrote:
> I can guess what happened: configure runs lots of tests in short-lived  
> subdirectories.  It creates a subdir, runs a test, and then whacks the  
> subdir.  So if hg scans a directory, it might see a subdirectory but  
> by the time it tries to traverse into that subdirectory, it could be  
> gone.

Our diff generation function calls into a status utility function to
figure out what the modified/added/removed files are. Up until very
recently, that function also returned a list of unknown files by
default. That's now fixed in tip.

> Open MPI is a goodly-sized code base (Mercurial tracks around 4500  
> files); several Mercurial operations take a few seconds, even on a  
> local/fast file system.  I always wondered why that was, especially  
> when you run what should be a small operation (e.g., "hg diff" on ompi/ 
> mca/io/romio is a pretty small subtree out of the overall code base;  
> "svn diff" on the same tree is nearly instantaneous).  Could this  
> "traversing unneeded directories" behavior be contributing to the  
> "slow" operations?

Yes.

-- 
Mathematics is the supreme nostalgia of our time.



More information about the Mercurial mailing list