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