Take advantage of fstat calls clustering per directory if OS support it.
util module implements two versions of statfiles function
_statfiles calls lstat per file
_statfiles_clustered takes advantage of optimizations in osutil.c, stats all
files in directory at once when new directory is hit and caches the results
util.statfiles dispatches to appropriate version during module loading
The speedup on directory tree with 2k directories and 63k files is about
factor of 1.8 (1.3s -> 0.8s for hg diff - hg startup overhead about .2s)
At this point only Win32 now benefit from this patch.
Rest of OSes use the non clustered implementation.
#header#
<title>#repo|escape#: files for changeset #node|short#</title>
</head>
<body>
<div class="buttons">
<a href="#url#log/#rev#{sessionvars%urlparameter}">changelog</a>
<a href="#url#shortlog/#rev#{sessionvars%urlparameter}">shortlog</a>
<a href="#url#graph{sessionvars%urlparameter}">graph</a>
<a href="#url#tags{sessionvars%urlparameter}">tags</a>
<a href="#url#rev/#node|short#{sessionvars%urlparameter}">changeset</a>
#archives%archiveentry#
</div>
<h2>files for changeset #node|short#: #path|escape#</h2>
<table cellpadding="0" cellspacing="0">
<tr class="parity#upparity#">
<td><tt>drwxr-xr-x</tt>
<td>
<td>
<td><a href="#url#file/#node|short##up|urlescape#{sessionvars%urlparameter}">[up]</a>
</tr>
#dentries%direntry#
#fentries%fileentry#
</table>
#footer#