diff mercurial/exchange.py @ 23208:f606e07fa148

bundle2: handle empty 'b2x:changegroup' value in push and pull Changeset e4dc2b0be056 added advertising of supported changegroup version through the new 'b2x:changegroup' capability. However, this capability is not new and has been around since 3.1 with an empty value. This makes new clients unable to push to 3.2 servers 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.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Thu, 06 Nov 2014 09:52:57 +0000
parents 3872d563e01a
children 2f12ac53b528
line wrap: on
line diff
--- a/mercurial/exchange.py	Thu Nov 06 10:05:43 2014 +0000
+++ b/mercurial/exchange.py	Thu Nov 06 09:52:57 2014 +0000
@@ -448,7 +448,7 @@
     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:
@@ -1200,7 +1200,7 @@
         # 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)