Mercurial > hg
changeset 48382:991e6f728b50
status: adapt largefile to gather stats at lookup time
See the core code for details of why we are doing this.
We don't factor the code in a common function yet, because we will have to adapt
a bit more things in the largefile case at the end of the series.
Differential Revision: https://phab.mercurial-scm.org/D11786
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 18 Nov 2021 22:46:50 +0100 |
parents | 41f40f35278a |
children | 4237be881bb6 |
files | hgext/largefiles/lfutil.py hgext/largefiles/reposetup.py |
diffstat | 2 files changed, 17 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/largefiles/lfutil.py Wed Nov 17 23:37:47 2021 +0100 +++ b/hgext/largefiles/lfutil.py Thu Nov 18 22:46:50 2021 +0100 @@ -32,6 +32,7 @@ vfs as vfsmod, ) from mercurial.utils import hashutil +from mercurial.dirstateutils import timestamp shortname = b'.hglf' shortnameslash = shortname + b'/' @@ -247,6 +248,7 @@ match, subrepos=[], ignored=False, clean=False, unknown=False ) modified, clean = s.modified, s.clean + wctx = repo[None] for lfile in unsure: try: fctx = pctx[standin(lfile)] @@ -256,7 +258,12 @@ modified.append(lfile) else: clean.append(lfile) - lfdirstate.set_clean(lfile) + st = wctx[lfile].lstat() + mode = st.st_mode + size = st.st_size + mtime = timestamp.mtime_of(st) + cache_data = (mode, size, mtime) + lfdirstate.set_clean(lfile, cache_data) return s
--- a/hgext/largefiles/reposetup.py Wed Nov 17 23:37:47 2021 +0100 +++ b/hgext/largefiles/reposetup.py Thu Nov 18 22:46:50 2021 +0100 @@ -22,6 +22,8 @@ util, ) +from mercurial.dirstateutils import timestamp + from . import ( lfcommands, lfutil, @@ -210,6 +212,7 @@ s.clean, ) if parentworking: + wctx = repo[None] for lfile in unsure: standin = lfutil.standin(lfile) if standin not in ctx1: @@ -222,7 +225,12 @@ else: if listclean: clean.append(lfile) - lfdirstate.set_clean(lfile) + s = wctx[lfile].lstat() + mode = s.st_mode + size = s.st_size + mtime = timestamp.mtime_of(s) + cache_data = (mode, size, mtime) + lfdirstate.set_clean(lfile, cache_data) else: tocheck = unsure + modified + added + clean modified, added, clean = [], [], []