mason@suse.com [Thu, 01 Sep 2005 07:34:53 -0700] rev 1183
Optimize dirstate walking
This generally cuts the time for hg status/diff in half, from 2s down to 1s.
The main parts I'm trying to optimize are:
1) os.walk stats every file. dirstate.changes then stats every file again.
2) os.walk yields every file and subdir to dirstate.traverse who yields every
file and everything in the dirstate map. dirstate.walk then
filters this mass and yields every file to the caller. There should be
fewer steps in here, and fewer duplicate strings yielded.
3) dirstate.walk runs util.unique on the results from dirstate.traverse,
even though it is also passing things through dirstate.seen to look for
duplicates.
I've turned os.walk into something hg specific that takes all the dirstate
ignore and matching rules into account. The new function also takes an
function arg (statmatch()) the caller supplies to help filter out
files it doesn't care about. dirstate.changes uses this to update state
for each file, avoiding the second stat call.
dirstate.walk is changed to turn the match function it is passed into
a statmatch function. The only real difference is that a statmatch
function takes the stat data as a second parameter. It now calls
dirstate.walkhelper, who requires a statmatch function to be passed.
This fails test-walk, but right now I think this is from a sorting error
fixed by this patch.
Index: crew/mercurial/dirstate.py
===================================================================
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 31 Aug 2005 21:07:36 +0200] rev 1182
Merge with http://hannibal.lr-s.tudelft.nl/~vincent/fcgi/mercurial/fcgi/
Vincent Wagelaar <vincent@ricardis.tudelft.nl> [Tue, 30 Aug 2005 21:58:44 +0200] rev 1181
Make sure the repository names don't have slashes at the at or else in some
cases env[path_info] will not find an defined repository.
REQUEST_URI can contain a query_string appending the repository name would
lead to corrupt urls.
Vincent Wagelaar <vincent@ricardis.tudelft.nl> [Tue, 30 Aug 2005 18:23:39 +0200] rev 1180
Saving sys.argv and sys.stderr is not needed anymore
jdc@uwo.ca [Wed, 31 Aug 2005 11:58:15 -0700] rev 1179
Fix mercurial.el help.
jdc@uwo.ca [Wed, 31 Aug 2005 11:56:58 -0700] rev 1178
Adjust hg-strip and hg-chomp regexps.
Bryan O'Sullivan <bos@serpentine.com> [Wed, 31 Aug 2005 11:19:20 -0700] rev 1177
hg serve: print a more useful error message if server can't start.