src/topic/__init__.py
changeset 1889 d9b929bcc3ad
parent 1888 dfaf0de6f4d8
child 1890 e846b8f402d0
--- a/src/topic/__init__.py	Mon Mar 14 00:12:22 2016 +0000
+++ b/src/topic/__init__.py	Mon Mar 14 00:15:54 2016 +0000
@@ -16,6 +16,7 @@
 from mercurial.i18n import _
 from mercurial import branchmap
 from mercurial import bundle2
+from mercurial import changegroup
 from mercurial import cmdutil
 from mercurial import commands
 from mercurial import context
@@ -80,6 +81,10 @@
         branchmap.branchcache = oldbranchcache
         branchmap._filename = oldfilename
 
+def cgapply(orig, repo, *args, **kwargs):
+    with usetopicmap(repo):
+        return orig(repo, *args, **kwargs)
+
 def reposetup(ui, repo):
     orig = repo.__class__
     if not isinstance(repo, localrepo.localrepository):
@@ -106,7 +111,8 @@
                 not self.currenttopic):
                 # we are amending and need to remove a topic
                 del ctx.extra()[constants.extrakey]
-            return orig.commitctx(self, ctx, error=error)
+            with usetopicmap(self):
+                return orig.commitctx(self, ctx, error=error)
 
         @property
         def topics(self):
@@ -127,6 +133,10 @@
                 branchmap.updatecache(self)
             return self._topiccaches[self.filtername]
 
+        def destroyed(self, *args, **kwargs):
+            with usetopicmap(self):
+                return super(topicrepo, self).destroyed(*args, **kwargs)
+
         def invalidatecaches(self):
             super(topicrepo, self).invalidatecaches()
             if '_topiccaches' in vars(self.unfiltered()):
@@ -308,6 +318,7 @@
 bundle2.handlecheckheads.params = frozenset() # we need a proper wrape b2 part stuff
 bundle2.parthandlermapping['check:heads'] = bundle2.handlecheckheads
 extensions.wrapfunction(exchange, '_pushb2phases', discovery._pushb2phases)
+extensions.wrapfunction(changegroup.cg1unpacker, 'apply', cgapply)
 exchange.b2partsgenmapping['phase'] = exchange._pushb2phases
 topicrevset.modsetup()
 cmdutil.summaryhooks.add('topic', summaryhook)