diff hgext3rd/topic/__init__.py @ 6298:b4f9b7e468ee stable

topic: invalidate the topic cache when branchcache is invalidated The branchmap is cleared in the superclass function, but I didn't see any sign that this is ever cleared. This fixes an issue in TortoiseHg where stale topic labels appear in certain cases, such as if a commit has a topic and is stripped, and an unrelated commit is pulled in from a remote repo. Additionally, it fixes an issue with the topic display in TortoiseHg and cmdserver when using `hg rollback`. In the new test, the result of the command that applies `topic2` without this fix was: 6 d (topic2) 5 c (topic2) 4 b (topic1) 0 a () The tie in was that rev 4 used to be `topic1` before the rollback. Also note that without the fix, the final log command printed the following, even though it showed no signs of `topic1`, and nothing should have changed: active topic 'topic1' grew its first changeset (see 'hg help topics' for more information)
author Matt Harbison <matt_harbison@yahoo.com>
date Tue, 04 Oct 2022 16:52:23 -0400
parents 2b30ff6c8e82
children b4df25613811
line wrap: on
line diff
--- a/hgext3rd/topic/__init__.py	Thu Jul 14 16:39:49 2022 +0400
+++ b/hgext3rd/topic/__init__.py	Tue Oct 04 16:52:23 2022 -0400
@@ -541,6 +541,10 @@
                                                       start=start,
                                                       closed=closed)
 
+        def invalidatecaches(self):
+            self._topiccache.clear()
+            super(topicrepo, self).invalidatecaches()
+
         def invalidatevolatilesets(self):
             # XXX we might be able to move this to something invalidated less often
             super(topicrepo, self).invalidatevolatilesets()