equal
deleted
inserted
replaced
8 from __future__ import absolute_import |
8 from __future__ import absolute_import |
9 |
9 |
10 from mercurial import ( |
10 from mercurial import ( |
11 context, |
11 context, |
12 dirstate, |
12 dirstate, |
|
13 dirstatemap as dirstatemapmod, |
13 extensions, |
14 extensions, |
14 policy, |
15 policy, |
15 registrar, |
16 registrar, |
16 ) |
17 ) |
17 from mercurial.utils import dateutil |
18 from mercurial.utils import dateutil |
64 fakenow = dateutil.parsedate(fakenow, [b'%Y%m%d%H%M'])[0] |
65 fakenow = dateutil.parsedate(fakenow, [b'%Y%m%d%H%M'])[0] |
65 |
66 |
66 if rustmod is not None: |
67 if rustmod is not None: |
67 # The Rust implementation does not use public parse/pack dirstate |
68 # The Rust implementation does not use public parse/pack dirstate |
68 # to prevent conversion round-trips |
69 # to prevent conversion round-trips |
69 orig_dirstatemap_write = dirstate.dirstatemap.write |
70 orig_dirstatemap_write = dirstatemapmod.dirstatemap.write |
70 wrapper = lambda self, st, now: orig_dirstatemap_write( |
71 wrapper = lambda self, st, now: orig_dirstatemap_write( |
71 self, st, fakenow |
72 self, st, fakenow |
72 ) |
73 ) |
73 dirstate.dirstatemap.write = wrapper |
74 dirstatemapmod.dirstatemap.write = wrapper |
74 |
75 |
75 orig_dirstate_getfsnow = dirstate._getfsnow |
76 orig_dirstate_getfsnow = dirstate._getfsnow |
76 wrapper = lambda *args: pack_dirstate(fakenow, orig_pack_dirstate, *args) |
77 wrapper = lambda *args: pack_dirstate(fakenow, orig_pack_dirstate, *args) |
77 |
78 |
78 orig_module = parsers |
79 orig_module = parsers |
84 return func() |
85 return func() |
85 finally: |
86 finally: |
86 orig_module.pack_dirstate = orig_pack_dirstate |
87 orig_module.pack_dirstate = orig_pack_dirstate |
87 dirstate._getfsnow = orig_dirstate_getfsnow |
88 dirstate._getfsnow = orig_dirstate_getfsnow |
88 if rustmod is not None: |
89 if rustmod is not None: |
89 dirstate.dirstatemap.write = orig_dirstatemap_write |
90 dirstatemapmod.dirstatemap.write = orig_dirstatemap_write |
90 |
91 |
91 |
92 |
92 def _poststatusfixup(orig, workingctx, status, fixup): |
93 def _poststatusfixup(orig, workingctx, status, fixup): |
93 ui = workingctx.repo().ui |
94 ui = workingctx.repo().ui |
94 return fakewrite(ui, lambda: orig(workingctx, status, fixup)) |
95 return fakewrite(ui, lambda: orig(workingctx, status, fixup)) |