comparison hgext/lfs/wrapper.py @ 44073:b9e174d4ed11

verify: allow the storage to signal when renames can be tested on `skipread` This applies the new marker in the lfs handler to show it in action, and adds the test mentioned at the beginning of the series to show that fulltext isn't necessary in the LFS case. The existing `skipread` isn't enough, because it is also set if an error occurs reading the revlog data, or the data is censored. It could probably be cleared, but then it technically violates the interface contract. That wouldn't matter for the existing verify algorithm, but it isn't clear how that will change as alternate storage support is added. The flag is probably pretty revlog specific, given the comments in verify.py. But there's already filelog specific stuff in there and I'm not sure what future storage will bring, so I don't want to over-engineer this. Likewise, I'm not sure that we want the verify method for each storage type to completely drive the bus when it comes to detecting renames, so I don't want to go down the rabbithole of having verifyintegrity() return metadata hints at this point. Differential Revision: https://phab.mercurial-scm.org/D7713
author Matt Harbison <matt_harbison@yahoo.com>
date Mon, 23 Dec 2019 01:12:20 -0500
parents 1a6dd50cd0db
children a56ba57c837d
comparison
equal deleted inserted replaced
44072:1a6dd50cd0db 44073:b9e174d4ed11
234 # Don't skip blobs that are stored locally, as local verification is 234 # Don't skip blobs that are stored locally, as local verification is
235 # relatively cheap and there's no other way to verify the raw data in 235 # relatively cheap and there's no other way to verify the raw data in
236 # the revlog. 236 # the revlog.
237 if rl.opener.lfslocalblobstore.has(metadata.oid()): 237 if rl.opener.lfslocalblobstore.has(metadata.oid()):
238 skipflags &= ~revlog.REVIDX_EXTSTORED 238 skipflags &= ~revlog.REVIDX_EXTSTORED
239 elif skipflags & revlog.REVIDX_EXTSTORED:
240 # The wrapped method will set `skipread`, but there's enough local
241 # info to check renames.
242 state[b'safe_renamed'].add(node)
239 243
240 orig(rl, skipflags, state, node) 244 orig(rl, skipflags, state, node)
241 245
242 246
243 @eh.wrapfunction(context.basefilectx, b'cmp') 247 @eh.wrapfunction(context.basefilectx, b'cmp')