changeset 351:dd90394cd13b

findoutgoing: update wrapper for hg change 98c874a929f1
author Augie Fackler <durin42@gmail.com>
date Fri, 30 Jul 2010 17:24:28 -0500
parents 4d8072162035
children 7a9d1cc30d61 428c819f3135
files hggit/__init__.py
diffstat 1 files changed, 15 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/hggit/__init__.py
+++ b/hggit/__init__.py
@@ -15,6 +15,7 @@
 Try hg clone git:// or hg clone git+ssh://
 '''
 
+import inspect
 import os
 
 from mercurial import commands
@@ -105,14 +106,23 @@
 
 try:
     from mercurial import discovery
-    def findoutgoing(orig, local, remote, base=None, heads=None, force=False):
+    kwname = 'heads'
+    if 'remoteheads' in inspect.getargspec(discovery.findoutgoing)[0]:
+        kwname = 'remoteheads'
+    def findoutgoing(orig, local, remote, base=None, remoteheads=None, force=False, heads=None):
+        kw = {'force': force, 'base': base, kwname: locals()[kwname]}
         if isinstance(remote, gitrepo.gitrepo):
+            # clean up this cruft when we're 1.7-only, remoteheads and
+            # the return value change happened between 1.6 and 1.7.
             git = GitHandler(local, local.ui)
             base, heads = git.get_refs(remote.path)
-            r = orig(local, remote, base=base, heads=heads,
-                        force=force)
-            return [x[0] for x in r]
-        return orig(local, remote, base=base, heads=heads, force=force)
+            newkw = {'base': base, kwname: heads}
+            newkw.update(kw)
+            kw = newkw
+            if kwname == 'heads':
+                r = orig(local, remote, **kw)
+                return [x[0] for x in r]
+        return orig(local, remote, **kw)
     extensions.wrapfunction(discovery, 'findoutgoing', findoutgoing)
 except ImportError:
     pass