obsdiscovery: adopt to calling convention change stable
authorGregory Szorc <gregory.szorc@gmail.com>
Mon, 17 Sep 2018 09:25:28 -0700
branchstable
changeset 4119 c4b891fe44c3
parent 4117 870c31f85c90
child 4120 eea339cf4d30
child 4121 7f18c7e1e744
obsdiscovery: adopt to calling convention change Upstream commits 71d83b315778 and abce899c985f changed the calling convention of setdiscovery._takefullsample(). We inspect the signature of the function before calling it so we can pass the proper arguments.
hgext3rd/evolve/obsdiscovery.py
--- a/hgext3rd/evolve/obsdiscovery.py	Fri Sep 14 12:18:22 2018 +0200
+++ b/hgext3rd/evolve/obsdiscovery.py	Mon Sep 17 09:25:28 2018 -0700
@@ -24,6 +24,7 @@
 
 import hashlib
 import heapq
+import inspect
 import sqlite3
 import struct
 import weakref
@@ -110,7 +111,13 @@
         if len(undecided) < fullsamplesize:
             sample = set(undecided)
         else:
-            sample = _takefullsample(dag, undecided, size=fullsamplesize)
+            # Mercurial 4.8 changed calling convention.
+            if len(inspect.getargspec(_takefullsample)[0]) == 4:
+                sample = _takefullsample(local, None, undecided,
+                                         size=fullsamplesize)
+            else:
+                # hg <= 4.7 version
+                sample = _takefullsample(dag, undecided, size=fullsamplesize)
 
         roundtrips += 1
         ui.progress(_("comparing with other"), totalnb - len(undecided),