Comments
Patch
@@ -16,6 +16,12 @@
)
from mercurial.utils import dateutil
+try:
+ from mercurial import rustext
+ rustext.__name__ # force actual import (see hgdemandimport)
+except ImportError:
+ rustext = None
+
configtable = {}
configitem = registrar.configitem(configtable)
@@ -51,16 +57,22 @@
# 'fakenow' value and 'touch -t YYYYmmddHHMM' argument easy
fakenow = dateutil.parsedate(fakenow, [b'%Y%m%d%H%M'])[0]
- orig_pack_dirstate = parsers.pack_dirstate
+ if rustext is not None:
+ orig_module = rustext.dirstate
+ orig_pack_dirstate = rustext.dirstate.pack_dirstate
+ else:
+ orig_module = parsers
+ orig_pack_dirstate = parsers.pack_dirstate
+
orig_dirstate_getfsnow = dirstate._getfsnow
wrapper = lambda *args: pack_dirstate(fakenow, orig_pack_dirstate, *args)
- parsers.pack_dirstate = wrapper
+ orig_module.pack_dirstate = wrapper
dirstate._getfsnow = lambda *args: fakenow
try:
return func()
finally:
- parsers.pack_dirstate = orig_pack_dirstate
+ orig_module.pack_dirstate = orig_pack_dirstate
dirstate._getfsnow = orig_dirstate_getfsnow
def _poststatusfixup(orig, workingctx, status, fixup):
@@ -27,6 +27,12 @@
util,
)
+try:
+ from . import rustext
+ rustext.__name__ # force actual import (see hgdemandimport)
+except ImportError:
+ rustext = None
+
parsers = policy.importmod(r'parsers')
propertycache = util.propertycache
@@ -1465,7 +1471,12 @@
# parsing the dirstate.
#
# (we cannot decorate the function directly since it is in a C module)
- parse_dirstate = util.nogc(parsers.parse_dirstate)
+ if rustext is not None:
+ parse_dirstate = rustext.dirstate.parse_dirstate
+ else:
+ parse_dirstate = parsers.parse_dirstate
+
+ parse_dirstate = util.nogc(parse_dirstate)
p = parse_dirstate(self._map, self.copymap, st)
if not self._dirtyparents:
self.setparents(*p)
@@ -1476,7 +1487,12 @@
self.get = self._map.get
def write(self, st, now):
- st.write(parsers.pack_dirstate(self._map, self.copymap,
+ if rustext is not None:
+ pack_dirstate = rustext.dirstate.pack_dirstate
+ else:
+ pack_dirstate = parsers.pack_dirstate
+
+ st.write(pack_dirstate(self._map, self.copymap,
self.parents(), now))
st.close()
self._dirtyparents = False