[PATCH 2 of 2] bundle2: handle empty 'b2x:changegroup' value in push and pull

Augie Fackler raf at durin42.com
Sun Nov 9 08:09:53 CST 2014


On Thu, Nov 06, 2014 at 10:56:07AM +0000, Pierre-Yves David wrote:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david at fb.com>
> # Date 1415267577 0
> #      Thu Nov 06 09:52:57 2014 +0000
> # Node ID 95b64edc965a67696f80d07dd47c48ca7d94e5f4
> # Parent  d5d10a9e09e43ec3f9efe21d33321c698d81bb3d
> bundle2: handle empty 'b2x:changegroup' value in push and pull

Queued these a few days ago, but forgot to include list when I replied. Sigh.

>
> Changeset e4dc2b0be056 added advertising of supported changegroup version
> through the new 'b2x:changegroup' capability. However, this capability is not
> new and have been around since 3.1 with an empty value. This makes new clients
> unable to push to 3.2 server through bundle2 as they cannot find a common
> changegroup version to use from and empty list.
>
> Treating empty 'b2x:changegroup' value as old client fixes it.
>
> diff --git a/mercurial/exchange.py b/mercurial/exchange.py
> --- a/mercurial/exchange.py
> +++ b/mercurial/exchange.py
> @@ -446,11 +446,11 @@ def _pushb2ctx(pushop, bundler):
>      if not pushop.force:
>          bundler.newpart('B2X:CHECK:HEADS', data=iter(pushop.remoteheads))
>      b2caps = bundle2.bundle2caps(pushop.remote)
>      version = None
>      cgversions = b2caps.get('b2x:changegroup')
> -    if cgversions is None:
> +    if not cgversions:  # 3.1 and 3.2 ship with an empty value
>          cg = changegroup.getlocalchangegroupraw(pushop.repo, 'push',
>                                                  pushop.outgoing)
>      else:
>          cgversions = [v for v in cgversions if v in changegroup.packermap]
>          if not cgversions:
> @@ -1198,11 +1198,11 @@ def _getbundlechangegrouppart(bundler, r
>      cg = None
>      if kwargs.get('cg', True):
>          # build changegroup bundle here.
>          version = None
>          cgversions = b2caps.get('b2x:changegroup')
> -        if cgversions is None:
> +        if not cgversions:  # 3.1 and 3.2 ship with an empty value
>              cg = changegroup.getchangegroupraw(repo, source, heads=heads,
>                                                 common=common,
>                                                 bundlecaps=bundlecaps)
>          else:
>              cgversions = [v for v in cgversions if v in changegroup.packermap]
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list