# HG changeset patch # User Martijn Pieters # Date 1542801646 0 # Node ID c6d1b0a6babe0990e486ee46b612e7a73769468e # Parent 159a4a6ded0b6e0380c11343e077d031d751a90c topic: make topics compatible with branchmap refactor See https://phab.mercurial-scm.org/D5290 diff -r 159a4a6ded0b -r c6d1b0a6babe hgext3rd/serverminitopic.py --- a/hgext3rd/serverminitopic.py Wed Jan 30 10:03:00 2019 -0800 +++ b/hgext3rd/serverminitopic.py Wed Nov 21 12:00:46 2018 +0000 @@ -146,6 +146,10 @@ return hasminitopic(repo) and repo.filtername not in _publiconly class _topiccache(branchmap.branchcache): # combine me with branchmap.branchcache + @classmethod + def fromfile(cls, repo): + orig = super(_topiccache, cls).fromfile + return wrapread(orig, repo) def __init__(self, *args, **kwargs): # super() call may fail otherwise @@ -226,6 +230,12 @@ def uisetup(ui): wrapclass(branchmap, 'branchcache', _topiccache) - extensions.wrapfunction(branchmap, 'read', wrapread) + try: + # Mercurial 4.8 and older + extensions.wrapfunction(branchmap, 'read', wrapread) + except AttributeError: + # Mercurial 4.9; branchcache.fromfile now takes care of this + # which is alredy defined on _topiccache + pass extensions.wrapfunction(wireproto, '_capabilities', wireprotocaps) extensions.wrapfunction(context.changectx, 'branch', topicbranch) diff -r 159a4a6ded0b -r c6d1b0a6babe hgext3rd/topic/topicmap.py --- a/hgext3rd/topic/topicmap.py Wed Jan 30 10:03:00 2019 -0800 +++ b/hgext3rd/topic/topicmap.py Wed Nov 21 12:00:46 2018 +0000 @@ -117,7 +117,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)