hgext/lfs/blobstore.py
changeset 35552 fd610befc37f
parent 35551 fa9dd53eb23e
child 35553 a77418095530
--- a/hgext/lfs/blobstore.py	Thu Dec 21 18:56:04 2017 -0500
+++ b/hgext/lfs/blobstore.py	Thu Dec 21 21:20:00 2017 -0500
@@ -299,19 +299,21 @@
         response = b''
         try:
             req = self.urlopener.open(request)
-            while True:
-                data = req.read(1048576)
-                if not data:
-                    break
-                response += data
+            if action == 'download':
+                # If downloading blobs, store downloaded data to local blobstore
+                localstore.download(oid, req)
+            else:
+                while True:
+                    data = req.read(1048576)
+                    if not data:
+                        break
+                    response += data
+                if response:
+                    self.ui.debug('lfs %s response: %s' % (action, response))
         except util.urlerr.httperror as ex:
             raise LfsRemoteError(_('HTTP error: %s (oid=%s, action=%s)')
                                  % (ex, oid, action))
 
-        if action == 'download':
-            # If downloading blobs, store downloaded data to local blobstore
-            localstore.write(oid, response, verify=True)
-
     def _batch(self, pointers, localstore, action):
         if action not in ['upload', 'download']:
             raise error.ProgrammingError('invalid Git-LFS action: %s' % action)
@@ -385,8 +387,8 @@
 
     def readbatch(self, pointers, tostore):
         for p in pointers:
-            content = self.vfs.read(p.oid())
-            tostore.write(p.oid(), content, verify=True)
+            with self.vfs(p.oid(), 'rb') as fp:
+                tostore.download(p.oid(), fp)
 
 class _nullremote(object):
     """Null store storing blobs to /dev/null."""