D7060: rust-dirstate-status: add call to rust-fast path for `dirstate.status`
Alphare (Raphaël Gomès)
phabricator at mercurial-scm.org
Wed Oct 16 18:56:32 UTC 2019
Alphare updated this revision to Diff 17253.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D7060?vs=17067&id=17253
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D7060/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D7060
AFFECTED FILES
mercurial/dirstate.py
CHANGE DETAILS
diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py
--- a/mercurial/dirstate.py
+++ b/mercurial/dirstate.py
@@ -27,6 +27,7 @@
policy,
pycompat,
scmutil,
+ sparse,
txnutil,
util,
)
@@ -1097,6 +1098,45 @@
dmap = self._map
dmap.preload()
+
+ use_rust = True
+ if rustmod is None:
+ use_rust = False
+ elif subrepos:
+ use_rust = False
+ if bool(listunknown):
+ # Pathauditor does not exist yet in Rust, unknown files
+ # can't be trusted.
+ use_rust = False
+ elif self._ignorefiles() and listignored:
+ # Rust has no ignore mechanism yet, so don't use Rust for
+ # commands that need ignore.
+ use_rust = False
+ elif not match.always():
+ # Matchers have yet to be implemented
+ use_rust = False
+ # We don't yet have a mechanism for extensions
+ elif sparse.enabled:
+ use_rust = False
+ elif not getattr(self, "_fsmonitordisable", True):
+ use_rust = False
+
+ if use_rust:
+ lookup, modified, added, removed, deleted, unknown, clean = rustmod.status(
+ dmap._rustmap,
+ self._rootdir,
+ match.files(),
+ bool(listclean),
+ self._lastnormaltime,
+ self._checkexec,
+ )
+
+ status = scmutil.status(modified=modified, added=added,
+ removed=removed, deleted=deleted,
+ unknown=unknown, ignored=ignored,
+ clean=clean)
+ return (lookup, status)
+
dcontains = dmap.__contains__
dget = dmap.__getitem__
ladd = lookup.append # aka "unsure"
To: Alphare, #hg-reviewers
Cc: mjpieters, mercurial-devel
More information about the Mercurial-devel
mailing list