diff hgext3rd/topic/topicmap.py @ 4459:d46360b8c0dc stable

topic: make topics compatible with branchmap refactor See https://phab.mercurial-scm.org/D5290
author Martijn Pieters <mj@octobus.net>
date Wed, 21 Nov 2018 12:00:46 +0000
parents 9b0cde5efbc9
children 05f8908df4ce
line wrap: on
line diff
--- a/hgext3rd/topic/topicmap.py	Wed Mar 27 20:52:30 2019 +0800
+++ b/hgext3rd/topic/topicmap.py	Wed Nov 21 12:00:46 2018 +0000
@@ -118,7 +118,21 @@
     class topiccache(_topiccache, branchmap.branchcache):
         pass
     branchmap.branchcache = topiccache
-    extensions.wrapfunction(branchmap, 'updatecache', _wrapupdatebmcache)
+
+    try:
+        # Mercurial 4.9
+        class remotetopiccache(_topiccache, branchmap.remotebranchcache):
+            pass
+        branchmap.remotebranchcache = remotetopiccache
+
+        def _wrapupdatebmcachemethod(orig, self, repo):
+            # pass in the bound method as the original
+            return _wrapupdatebmcache(orig.__get__(self), repo)
+        extensions.wrapfunction(branchmap.BranchMapCache, 'updatecache', _wrapupdatebmcachemethod)
+    except AttributeError:
+        # Mercurial 4.8 and before
+        extensions.wrapfunction(branchmap, 'updatecache', _wrapupdatebmcache)
+
 
 def _wrapupdatebmcache(orig, repo):
     previous = getattr(repo, '_autobranchmaptopic', False)