# HG changeset patch # User Matt Harbison # Date 2018-02-23 04:33:52 # Node ID 56c7cd067477149d937e6d031ea9082f06eaabd8 # Parent 004ecdbe96ec932a73499eaa9cd5f25742681cc2 lfs: add a blob verification method to the local store A corrupt blob can be signaled through the Batch API response, without actually transferring the file. A true/false indicator is slightly easier than immediately catching an exception. diff --git a/hgext/lfs/blobstore.py b/hgext/lfs/blobstore.py --- a/hgext/lfs/blobstore.py +++ b/hgext/lfs/blobstore.py @@ -175,6 +175,17 @@ class local(object): _verify(oid, blob) return blob + def verify(self, oid): + """Indicate whether or not the hash of the underlying file matches its + name.""" + sha256 = hashlib.sha256() + + with self.open(oid) as fp: + for chunk in util.filechunkiter(fp, size=1048576): + sha256.update(chunk) + + return oid == sha256.hexdigest() + def has(self, oid): """Returns True if the local blobstore contains the requested blob, False otherwise."""