diff mercurial/exchange.py @ 21141:d8dd19e09ed4

bundle2: advertise bundle2 caps in server capabilities We can now retrieve them from the server during push. The capabilities are encoded the same way as in `replycaps` part (with an extra layer of urlquoting to escape separators).
author Pierre-Yves David <pierre-yves.david@fb.com>
date Thu, 17 Apr 2014 01:49:20 -0400
parents 1ff06386217f
children 15039ce3e4a3
line wrap: on
line diff
--- a/mercurial/exchange.py	Thu Apr 17 01:50:28 2014 -0400
+++ b/mercurial/exchange.py	Thu Apr 17 01:49:20 2014 -0400
@@ -7,7 +7,7 @@
 
 from i18n import _
 from node import hex, nullid
-import errno
+import errno, urllib
 import util, scmutil, changegroup, base85
 import discovery, phases, obsolete, bookmarks, bundle2
 
@@ -207,7 +207,9 @@
     The only currently supported type of data is changegroup but this will
     evolve in the future."""
     # Send known head to the server for race detection.
-    bundler = bundle2.bundle20(pushop.ui)
+    capsblob = urllib.unquote(pushop.remote.capable('bundle2'))
+    caps = bundle2.decodecaps(capsblob)
+    bundler = bundle2.bundle20(pushop.ui, caps)
     bundler.addpart(bundle2.bundlepart('replycaps'))
     if not pushop.force:
         part = bundle2.bundlepart('CHECK:HEADS', data=iter(pushop.remoteheads))