[PATCH 1 of 6] changegroup: use a different compression key for BZ in HG10
Simon King
simon at simonking.org.uk
Thu Sep 24 03:43:05 CDT 2015
On Thu, Sep 24, 2015 at 2:21 AM, Pierre-Yves David
<pierre-yves.david at ens-lyon.org> wrote:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david at fb.com>
> # Date 1443033210 25200
> # Wed Sep 23 11:33:30 2015 -0700
> # Node ID 0e8207361f5a0eb27fd92288c34c5bb3d1d3eb53
> # Parent f946c1260035f96aa30052c28e6c68c559677059
> changegroup: use a different compression key for BZ in HG10
>
> For "space saving", bundle1 "strip" the first two bytes of the BZ stream since
> they always are 'BZ'. So the current code boostrap the uncompressor with 'BZ'.
> This hack is impractical in more generic case so we move it in a dedicated
> "decompression".
>
> diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py
> --- a/mercurial/changegroup.py
> +++ b/mercurial/changegroup.py
> @@ -161,10 +161,12 @@ class cg1unpacker(object):
> if alg == 'UN':
> alg = None # get more modern without breaking too much
> if not alg in util.decompressors:
> raise util.Abort(_('unknown stream compression type: %s')
> % alg)
> + if alg == 'BZ':
> + alg = '_truncatedBZ'
> self._stream = util.decompressors[alg](fh)
> self._type = alg
> self.callback = None
> def compressed(self):
> return self._type is not None
> diff --git a/mercurial/util.py b/mercurial/util.py
> --- a/mercurial/util.py
> +++ b/mercurial/util.py
> @@ -2373,10 +2373,12 @@ def _bz2():
> d.decompress('BZ')
> return d
>
> decompressors = {None: lambda fh: fh,
> 'BZ': _makedecompressor(_bz2),
> + '_truncatedBZ': _makedecompressor(_bz2),
> + 'BZ': _makedecompressor(lambda: bz2.BZ2Decompressor()),
> 'GZ': _makedecompressor(lambda: zlib.decompressobj()),
> }
This looks wrong - the 'BZ' key appears twice. Should the first one
have been removed?
Simon
More information about the Mercurial-devel
mailing list