D7712: lfs: don't skip locally available blobs when verifying

mharbison72 (Matt Harbison) phabricator at mercurial-scm.org
Tue Jan 14 11:14:13 EST 2020


Closed by commit rHG1dff147554b1: lfs: don't skip locally available blobs when verifying (authored by mharbison72).
This revision was automatically updated to reflect the committed changes.
This revision was not accepted when it landed; it landed in state "Needs Revision".

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D7712?vs=18908&id=19213

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D7712/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D7712

AFFECTED FILES
  hgext/lfs/__init__.py
  hgext/lfs/wrapper.py
  tests/test-lfs.t

CHANGE DETAILS

diff --git a/tests/test-lfs.t b/tests/test-lfs.t
--- a/tests/test-lfs.t
+++ b/tests/test-lfs.t
@@ -804,6 +804,7 @@
   checking manifests
   crosschecking files in changesets and manifests
   checking files
+  lfs: found 22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b in the local lfs store
   checked 5 changesets with 10 changes to 4 files
 
 Verify will not try to download lfs blobs, if told not to by the config option
@@ -815,6 +816,7 @@
   checking manifests
   crosschecking files in changesets and manifests
   checking files
+  lfs: found 22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b in the local lfs store
   checked 5 changesets with 10 changes to 4 files
 
 Verify will copy/link all lfs objects into the local store that aren't already
diff --git a/hgext/lfs/wrapper.py b/hgext/lfs/wrapper.py
--- a/hgext/lfs/wrapper.py
+++ b/hgext/lfs/wrapper.py
@@ -225,6 +225,21 @@
     return orig(self, rev)
 
 
+ at eh.wrapfunction(revlog, b'_verify_revision')
+def _verify_revision(orig, rl, skipflags, state, node):
+    if _islfs(rl, node=node):
+        rawtext = rl.rawdata(node)
+        metadata = pointer.deserialize(rawtext)
+
+        # Don't skip blobs that are stored locally, as local verification is
+        # relatively cheap and there's no other way to verify the raw data in
+        # the revlog.
+        if rl.opener.lfslocalblobstore.has(metadata.oid()):
+            skipflags &= ~revlog.REVIDX_EXTSTORED
+
+    orig(rl, skipflags, state, node)
+
+
 @eh.wrapfunction(context.basefilectx, b'cmp')
 def filectxcmp(orig, self, fctx):
     """returns True if text is different than fctx"""
diff --git a/hgext/lfs/__init__.py b/hgext/lfs/__init__.py
--- a/hgext/lfs/__init__.py
+++ b/hgext/lfs/__init__.py
@@ -405,7 +405,8 @@
 
 
 @eh.wrapcommand(
-    b'verify', opts=[(b'', b'no-lfs', None, _(b'skip all lfs blob content'))]
+    b'verify',
+    opts=[(b'', b'no-lfs', None, _(b'skip missing lfs blob content'))],
 )
 def verify(orig, ui, repo, **opts):
     skipflags = repo.ui.configint(b'verify', b'skipflags')



To: mharbison72, #hg-reviewers, durin42, pulkit
Cc: durin42, indygreg, mercurial-devel


More information about the Mercurial-devel mailing list