[PATCH evolve-ext v2] obscache: use _readmarkers() from core with correct signature

Boris Feld boris.feld at octobus.net
Thu Aug 24 11:53:46 EDT 2017


Queue thanks.

On Wed, 2017-08-23 at 06:19 -0700, Martin von Zweigbergk via Mercurial-
devel wrote:
> # HG changeset patch
> # User Martin von Zweigbergk <martinvonz at google.com>
> # Date 1503424759 25200
> #      Tue Aug 22 10:59:19 2017 -0700
> # Node ID 59ad0904a77f4fe8398b10a9c05a46bf79d900c5
> # Parent  95470e817c00b03fcf99e486412cc7d7f0116681
> obscache: use _readmarkers() from core with correct signature
> 
> The copied _readmarkers() went stale with Mercurial core commit
> 5d3ba4395288 (obsstore: let read marker API take a range of offsets,
> 2017-06-04). At the same time, the Mercurial core version of the
> function gained the desired offset argument, so we can now use that
> function.
> 
> diff --git a/hgext3rd/evolve/obscache.py
> b/hgext3rd/evolve/obscache.py
> --- a/hgext3rd/evolve/obscache.py
> +++ b/hgext3rd/evolve/obscache.py
> @@ -111,21 +111,26 @@
>  
>      return obsstore
>  
> -# XXX copied as is from Mercurial 4.2 and added the "offset"
> parameters
> - at util.nogc
> -def _readmarkers(data, offset=None):
> -    """Read and enumerate markers from raw data"""
> -    off = 0
> -    diskversion = struct.unpack('>B', data[off:off + 1])[0]
> -    if offset is None:
> -        off += 1
> -    else:
> -        assert 1 <= offset
> -        off = offset
> -    if diskversion not in obsolete.formats:
> -        raise error.Abort(_('parsing obsolete marker: unknown
> version %r')
> -                          % diskversion)
> -    return diskversion, obsolete.formats[diskversion][0](data, off)
> +if obsolete._readmarkers.__code__.co_argcount > 1:
> +    # hg-4.3+ has the "offset" parameter, and _fm?readmarkers also
> have an
> +    # extra "stop" parameter
> +    _readmarkers = obsolete._readmarkers
> +else:
> +    # XXX copied as is from Mercurial 4.2 and added the "offset"
> parameters
> +    @util.nogc
> +    def _readmarkers(data, offset=None):
> +        """Read and enumerate markers from raw data"""
> +        off = 0
> +        diskversion = struct.unpack('>B', data[off:off + 1])[0]
> +        if offset is None:
> +            off += 1
> +        else:
> +            assert 1 <= offset
> +            off = offset
> +        if diskversion not in obsolete.formats:
> +            raise error.Abort(_('parsing obsolete marker: unknown
> version %r')
> +                            % diskversion)
> +        return diskversion, obsolete.formats[diskversion][0](data,
> off)
>  
>  def markersfrom(obsstore, byteoffset, firstmarker):
>      if not firstmarker:
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list