# HG changeset patch
# User Pierre-Yves David <pierre-yves.david@octobus.net>
# Date 1513038432 -3600
#      Tue Dec 12 01:27:12 2017 +0100
# Node ID 703e8398ac57ba62bf9179fa9d63f7bfe662f608
# Parent  e642bad8174a6be463b1aa7a017748a72bf6c7b3
topic: move function wrapping from reposetup to uisetup

Having the function un reposetup means they get wrapped over and over again for
long lived process.

diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -25,6 +25,7 @@
 Topic (0.5.2)
 
   * makes code more resilient to partiel initialization
+  * avoid over wrapping inside of long living process
 
 7.0.1 -- 2017-11-14
 -------------------
diff --git a/hgext3rd/topic/__init__.py b/hgext3rd/topic/__init__.py
--- a/hgext3rd/topic/__init__.py
+++ b/hgext3rd/topic/__init__.py
@@ -322,6 +322,10 @@
 
     cmdutil.summaryhooks.add('topic', summaryhook)
 
+    # Wrap workingctx extra to return the topic name
+    extensions.wrapfunction(context.workingctx, '__init__', wrapinit)
+    # Wrap changelog.add to drop empty topic
+    extensions.wrapfunction(changelog.changelog, 'add', wrapadd)
 
 def reposetup(ui, repo):
     if not isinstance(repo, localrepo.localrepository):
@@ -483,10 +487,6 @@
         repo.names.addnamespace(namespaces.namespace(
             'topics', 'topic', namemap=_namemap, nodemap=_nodemap,
             listnames=lambda repo: repo.topics))
-    # Wrap workingctx extra to return the topic name
-    extensions.wrapfunction(context.workingctx, '__init__', wrapinit)
-    # Wrap changelog.add to drop empty topic
-    extensions.wrapfunction(changelog.changelog, 'add', wrapadd)
 
 def wrapinit(orig, self, repo, *args, **kwargs):
     orig(self, repo, *args, **kwargs)