diff hgext3rd/topic/discovery.py @ 2558:65cf338258d2

fix: fix _headssummary api _headssummary now takes directly the pushop, update the topic extension wrapping to fix the API.
author Boris Feld <boris.feld@octobus.net>
date Wed, 14 Jun 2017 13:56:40 +0200
parents 0421772a9c30
children 6eb87513024b
line wrap: on
line diff
--- a/hgext3rd/topic/discovery.py	Thu Jun 08 20:52:40 2017 +0100
+++ b/hgext3rd/topic/discovery.py	Wed Jun 14 13:56:40 2017 +0200
@@ -15,11 +15,24 @@
 
 from . import topicmap
 
-def _headssummary(orig, repo, remote, outgoing):
+def _headssummary(orig, *args):
+    # In mercurial < 4.2, we receive repo, remote and outgoing as arguments
+    if len(args) == 3:
+        repo, remote, outgoing = args
+
+    # In mercurial > 4.3, we receive the pushop as arguments
+    elif len(args) == 1:
+        pushop = args[0]
+        repo = pushop.repo.unfiltered()
+        remote = pushop.remote
+    else:
+        msg = 'topic-ext _headssummary() takes 1 or 3 arguments (%d given)'
+        raise TypeError(msg % len(args))
+
     publishing = ('phases' not in remote.listkeys('namespaces')
                   or bool(remote.listkeys('phases').get('publishing', False)))
     if publishing or not remote.capable('topics'):
-        return orig(repo, remote, outgoing)
+        return orig(pushop)
     oldrepo = repo.__class__
     oldbranchcache = branchmap.branchcache
     oldfilename = branchmap._filename
@@ -42,7 +55,7 @@
         repo.__class__ = repocls
         branchmap.branchcache = topicmap.topiccache
         branchmap._filename = topicmap._filename
-        summary = orig(repo, remote, outgoing)
+        summary = orig(*args)
         for key, value in summary.iteritems():
             if ':' in key: # This is a topic
                 if value[0] is None and value[1]: