status: adapt the "keyword" extensions to gather stats at lookup time
See main core code for details.
We don't factor the code in a common function yet, because we will have to adapt
a bit more things in the keyword case at the end of the series.
Differential Revision: https://phab.mercurial-scm.org/D11787
--- a/hgext/keyword.py Thu Nov 18 22:46:50 2021 +0100
+++ b/hgext/keyword.py Thu Nov 18 22:49:05 2021 +0100
@@ -116,6 +116,7 @@
dateutil,
stringutil,
)
+from mercurial.dirstateutils import timestamp
cmdtable = {}
command = registrar.command(cmdtable)
@@ -326,6 +327,7 @@
msg = _(b'overwriting %s expanding keywords\n')
else:
msg = _(b'overwriting %s shrinking keywords\n')
+ wctx = self.repo[None]
for f in candidates:
if self.restrict:
data = self.repo.file(f).read(mf[f])
@@ -356,7 +358,12 @@
fp.write(data)
fp.close()
if kwcmd:
- self.repo.dirstate.set_clean(f)
+ s = wctx[f].lstat()
+ mode = s.st_mode
+ size = s.st_size
+ mtime = timestamp.mtime_of(s)
+ cache_data = (mode, size, mtime)
+ self.repo.dirstate.set_clean(f, cache_data)
elif self.postcommit:
self.repo.dirstate.update_file_p1(f, p1_tracked=True)