##// END OF EJS Templates
bundle2: allow compression options to be passed to compressor...
Gregory Szorc -
r30757:511a4bf5 default
parent child Browse files
Show More
@@ -512,14 +512,16 b' class bundle20(object):'
512 self._parts = []
512 self._parts = []
513 self.capabilities = dict(capabilities)
513 self.capabilities = dict(capabilities)
514 self._compengine = util.compengines.forbundletype('UN')
514 self._compengine = util.compengines.forbundletype('UN')
515 self._compopts = None
515
516
516 def setcompression(self, alg):
517 def setcompression(self, alg, compopts=None):
517 """setup core part compression to <alg>"""
518 """setup core part compression to <alg>"""
518 if alg in (None, 'UN'):
519 if alg in (None, 'UN'):
519 return
520 return
520 assert not any(n.lower() == 'Compression' for n, v in self._params)
521 assert not any(n.lower() == 'Compression' for n, v in self._params)
521 self.addparam('Compression', alg)
522 self.addparam('Compression', alg)
522 self._compengine = util.compengines.forbundletype(alg)
523 self._compengine = util.compengines.forbundletype(alg)
524 self._compopts = compopts
523
525
524 @property
526 @property
525 def nbparts(self):
527 def nbparts(self):
@@ -571,7 +573,8 b' class bundle20(object):'
571 yield _pack(_fstreamparamsize, len(param))
573 yield _pack(_fstreamparamsize, len(param))
572 if param:
574 if param:
573 yield param
575 yield param
574 for chunk in self._compengine.compressstream(self._getcorechunk()):
576 for chunk in self._compengine.compressstream(self._getcorechunk(),
577 self._compopts):
575 yield chunk
578 yield chunk
576
579
577 def _paramchunk(self):
580 def _paramchunk(self):
@@ -1289,7 +1292,8 b' def obsmarkersversion(caps):'
1289 obscaps = caps.get('obsmarkers', ())
1292 obscaps = caps.get('obsmarkers', ())
1290 return [int(c[1:]) for c in obscaps if c.startswith('V')]
1293 return [int(c[1:]) for c in obscaps if c.startswith('V')]
1291
1294
1292 def writebundle(ui, cg, filename, bundletype, vfs=None, compression=None):
1295 def writebundle(ui, cg, filename, bundletype, vfs=None, compression=None,
1296 compopts=None):
1293 """Write a bundle file and return its filename.
1297 """Write a bundle file and return its filename.
1294
1298
1295 Existing files will not be overwritten.
1299 Existing files will not be overwritten.
@@ -1300,7 +1304,7 b' def writebundle(ui, cg, filename, bundle'
1300
1304
1301 if bundletype == "HG20":
1305 if bundletype == "HG20":
1302 bundle = bundle20(ui)
1306 bundle = bundle20(ui)
1303 bundle.setcompression(compression)
1307 bundle.setcompression(compression, compopts)
1304 part = bundle.newpart('changegroup', data=cg.getchunks())
1308 part = bundle.newpart('changegroup', data=cg.getchunks())
1305 part.addparam('version', cg.version)
1309 part.addparam('version', cg.version)
1306 if 'clcount' in cg.extras:
1310 if 'clcount' in cg.extras:
@@ -1320,7 +1324,7 b' def writebundle(ui, cg, filename, bundle'
1320 compengine = util.compengines.forbundletype(comp)
1324 compengine = util.compengines.forbundletype(comp)
1321 def chunkiter():
1325 def chunkiter():
1322 yield header
1326 yield header
1323 for chunk in compengine.compressstream(cg.getchunks()):
1327 for chunk in compengine.compressstream(cg.getchunks(), compopts):
1324 yield chunk
1328 yield chunk
1325 chunkiter = chunkiter()
1329 chunkiter = chunkiter()
1326
1330
General Comments 0
You need to be logged in to leave comments. Login now