Mercurial > hg
changeset 44840:4ba2a6ffcf24
status: also support for `traversedir` callback in the Rust fast-path
Repeating the performance numbers from the `hg-core` change:
Running `hg clean/purge` on Netbeans' repo (100k files):
```
| No-op | 30% unknown
--------------------------
Rust | 1.0s | 1.67s
C | 2.0s | 2.87s
```
Differential Revision: https://phab.mercurial-scm.org/D8520
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Tue, 12 May 2020 11:39:50 +0200 |
parents | 01afda7e7d6c |
children | 526d69eeea31 |
files | mercurial/dirstate.py |
diffstat | 1 files changed, 7 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/dirstate.py Tue May 12 11:37:55 2020 +0200 +++ b/mercurial/dirstate.py Tue May 12 11:39:50 2020 +0200 @@ -1107,6 +1107,7 @@ unknown, warnings, bad, + traversed, ) = rustmod.status( self._map._rustmap, matcher, @@ -1117,7 +1118,13 @@ bool(list_clean), bool(list_ignored), bool(list_unknown), + bool(matcher.traversedir), ) + + if matcher.traversedir: + for dir in traversed: + matcher.traversedir(dir) + if self._ui.warn: for item in warnings: if isinstance(item, tuple): @@ -1193,8 +1200,6 @@ use_rust = False elif sparse.enabled: use_rust = False - elif match.traversedir is not None: - use_rust = False elif not isinstance(match, allowed_matchers): # Some matchers have yet to be implemented use_rust = False