Mercurial > hg
comparison tests/fakedirstatewritetime.py @ 48260:269ff8978086
dirstate: store mtimes with nanosecond precision in memory
Keep integer seconds since the Unix epoch,
together with integer nanoseconds in the `0 <= n < 1e9` range.
For now, nanoseconds are still always zero.
This commit is about data structure changes.
Differential Revision: https://phab.mercurial-scm.org/D11684
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Mon, 18 Oct 2021 11:23:07 +0200 |
parents | 1194394510ba |
children | 08b060abd658 |
comparison
equal
deleted
inserted
replaced
48259:84f6b0c41b90 | 48260:269ff8978086 |
---|---|
13 dirstatemap as dirstatemapmod, | 13 dirstatemap as dirstatemapmod, |
14 extensions, | 14 extensions, |
15 policy, | 15 policy, |
16 registrar, | 16 registrar, |
17 ) | 17 ) |
18 from mercurial.dirstateutils import timestamp | |
18 from mercurial.utils import dateutil | 19 from mercurial.utils import dateutil |
19 | 20 |
20 try: | 21 try: |
21 from mercurial import rustext | 22 from mercurial import rustext |
22 | 23 |
38 | 39 |
39 | 40 |
40 def pack_dirstate(fakenow, orig, dmap, copymap, pl, now): | 41 def pack_dirstate(fakenow, orig, dmap, copymap, pl, now): |
41 # execute what original parsers.pack_dirstate should do actually | 42 # execute what original parsers.pack_dirstate should do actually |
42 # for consistency | 43 # for consistency |
43 actualnow = int(now) | |
44 for f, e in dmap.items(): | 44 for f, e in dmap.items(): |
45 if e.need_delay(actualnow): | 45 if e.need_delay(now): |
46 e.set_possibly_dirty() | 46 e.set_possibly_dirty() |
47 | 47 |
48 return orig(dmap, copymap, pl, fakenow) | 48 return orig(dmap, copymap, pl, fakenow) |
49 | 49 |
50 | 50 |
60 return func() | 60 return func() |
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 fakenow = timestamp.timestamp((fakenow, 0)) | |
65 | 66 |
66 if has_rust_dirstate: | 67 if has_rust_dirstate: |
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 = dirstatemapmod.dirstatemap.write | 70 orig_dirstatemap_write = dirstatemapmod.dirstatemap.write |