diff mercurial/wireproto.py @ 23848:c5456b64eb07

discovery: run discovery on filtered repository We have been running discovery on unfiltered repository for quite some time. This was aimed at two things: - save some bandwith by prevent the repushing of common but hidden changesets - allow phases changes on secret/hidden changeset on bare push. The cost of this unfiltered discovery combined with evolution is actually really high. Evolution likely create thousand of hidden heads, and the discovery is going to try to discovery if each of them are common or not. For example, pushing from my development mercurial repository implies 17 discovery round-trip. The benefit are rare corner cases while the drawback are massive. So we run the discovery on a filtered repository again. We add some hack to detect remote heads that are known locally and adds them to the common set anyway, so the good behavior of most of the corner case should remains. But this will not work in all cases. This bring my discovery phase back from 17 round-trips to 1 or 2.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Wed, 07 Jan 2015 00:07:29 -0800
parents 414374cfb531
children 37a92908a382
line wrap: on
line diff
--- a/mercurial/wireproto.py	Sat Jan 10 23:18:11 2015 +0900
+++ b/mercurial/wireproto.py	Wed Jan 07 00:07:29 2015 -0800
@@ -172,7 +172,11 @@
     return []
 
 def encodelist(l, sep=' '):
-    return sep.join(map(hex, l))
+    try:
+        return sep.join(map(hex, l))
+    except TypeError:
+        print l
+        raise
 
 # batched call argument encoding