Mercurial > hg
diff hgext/largefiles/remotestore.py @ 19004:6614e5e24e66
largefiles: move protocol conversion into getlfile and make it an iterable
Avoid the intermediate limitreader and filechunkiter between getlfile and
copyandhash - return the right protocol and put the complexity where it better
can be managed.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Tue, 16 Apr 2013 01:46:39 +0200 |
parents | ad993cb7bbb1 |
children | 9d33d6e0d442 |
line wrap: on
line diff
--- a/hgext/largefiles/remotestore.py Mon Apr 15 23:47:04 2013 +0200 +++ b/hgext/largefiles/remotestore.py Tue Apr 16 01:46:39 2013 +0200 @@ -58,7 +58,7 @@ 'statlfile (%r)' % stat) try: - length, infile = self._get(hash) + chunks = self._get(hash) except urllib2.HTTPError, e: # 401s get converted to util.Aborts; everything else is fine being # turned into a StoreError @@ -71,14 +71,7 @@ except IOError, e: raise basestore.StoreError(filename, hash, self.url, str(e)) - # Mercurial does not close its SSH connections after writing a stream - if length is not None: - infile = lfutil.limitreader(infile, length) - try: - return lfutil.copyandhash(util.filechunkiter(infile, 128 * 1024), - tmpfile) - finally: - infile.close() + return lfutil.copyandhash(chunks, tmpfile) def _verifyfile(self, cctx, cset, contents, standin, verified): filename = lfutil.splitstandin(standin)