equal
deleted
inserted
replaced
32 b'fakenow', |
32 b'fakenow', |
33 default=None, |
33 default=None, |
34 ) |
34 ) |
35 |
35 |
36 parsers = policy.importmod('parsers') |
36 parsers = policy.importmod('parsers') |
37 rustmod = policy.importrust('parsers') |
37 has_rust_dirstate = policy.importrust('dirstate') is not None |
38 |
38 |
39 |
39 |
40 def pack_dirstate(fakenow, orig, dmap, copymap, pl, now): |
40 def pack_dirstate(fakenow, orig, dmap, copymap, pl, now): |
41 # execute what original parsers.pack_dirstate should do actually |
41 # execute what original parsers.pack_dirstate should do actually |
42 # for consistency |
42 # for consistency |
61 |
61 |
62 # parsing 'fakenow' in YYYYmmddHHMM format makes comparison between |
62 # parsing 'fakenow' in YYYYmmddHHMM format makes comparison between |
63 # 'fakenow' value and 'touch -t YYYYmmddHHMM' argument easy |
63 # 'fakenow' value and 'touch -t YYYYmmddHHMM' argument easy |
64 fakenow = dateutil.parsedate(fakenow, [b'%Y%m%d%H%M'])[0] |
64 fakenow = dateutil.parsedate(fakenow, [b'%Y%m%d%H%M'])[0] |
65 |
65 |
66 if rustmod is not None: |
66 if has_rust_dirstate: |
67 # The Rust implementation does not use public parse/pack dirstate |
67 # The Rust implementation does not use public parse/pack dirstate |
68 # to prevent conversion round-trips |
68 # to prevent conversion round-trips |
69 orig_dirstatemap_write = dirstatemapmod.dirstatemap.write |
69 orig_dirstatemap_write = dirstatemapmod.dirstatemap.write |
70 wrapper = lambda self, tr, st, now: orig_dirstatemap_write( |
70 wrapper = lambda self, tr, st, now: orig_dirstatemap_write( |
71 self, tr, st, fakenow |
71 self, tr, st, fakenow |
83 try: |
83 try: |
84 return func() |
84 return func() |
85 finally: |
85 finally: |
86 orig_module.pack_dirstate = orig_pack_dirstate |
86 orig_module.pack_dirstate = orig_pack_dirstate |
87 dirstate._getfsnow = orig_dirstate_getfsnow |
87 dirstate._getfsnow = orig_dirstate_getfsnow |
88 if rustmod is not None: |
88 if has_rust_dirstate: |
89 dirstatemapmod.dirstatemap.write = orig_dirstatemap_write |
89 dirstatemapmod.dirstatemap.write = orig_dirstatemap_write |
90 |
90 |
91 |
91 |
92 def _poststatusfixup(orig, workingctx, status, fixup): |
92 def _poststatusfixup(orig, workingctx, status, fixup): |
93 ui = workingctx.repo().ui |
93 ui = workingctx.repo().ui |