changeset 5687:d24669df9a4a

topic: look for topic heads only when necessary Before this patch, if repo.branchheads() were asked to return heads of a branch and if there is any active topic, it would append that topic name to branch name and search heads for it and return wrong results. Because of this behavior we get wrong results for "hg heads" command because, this command make a list of heads of each branch in branchmap. So if wdir parent has an active topic, it would search for "branch:topic" instead of "branch" for each branch. Now we append topic only when branch is not passed to the function. Changes in test-topic.t file reflect the fixed behavior. Changes in test-topic-stack-data.t are obvious but not correct for `hg sum` output, which is because that's what the expected behavior acc. to the current logic in `hg sum` as it looks for the heads of branch of wdir parent and calculate new commits like this: new = ancestor(all branch heads) - ancestor(current parent) So, it doesn't really care if wdir parent has a topic which is why we are getting wrong result for "update:" in `hg sum`. You might be wondering why it was returning the correct output before, but I digged into it and can tell you that it's just a false combination of current cset and code bits which gave the correct results. If we want to correctly fix the issue we probably need to wrap `hg sum` command.
author Sushil khanchi <sushilkhanchi97@gmail.com>
date Tue, 01 Dec 2020 00:56:39 +0530
parents ff84b99569b0
children 4dbbb595b65f
files hgext3rd/topic/__init__.py tests/test-topic.t
diffstat 2 files changed, 16 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/hgext3rd/topic/__init__.py	Tue Dec 01 00:30:45 2020 +0530
+++ b/hgext3rd/topic/__init__.py	Tue Dec 01 00:56:39 2020 +0530
@@ -525,8 +525,8 @@
         def branchheads(self, branch=None, start=None, closed=False):
             if branch is None:
                 branch = self[None].branch()
-            if self.currenttopic:
-                branch = b"%s:%s" % (branch, self.currenttopic)
+                if self.currenttopic:
+                    branch = b"%s:%s" % (branch, self.currenttopic)
             return super(topicrepo, self).branchheads(branch=branch,
                                                       start=start,
                                                       closed=closed)
--- a/tests/test-topic.t	Tue Dec 01 00:30:45 2020 +0530
+++ b/tests/test-topic.t	Tue Dec 01 00:56:39 2020 +0530
@@ -1198,8 +1198,14 @@
   
   $ hg topic foo
   marked working directory as topic: foo
-XXX: it should have returned both the heads; will be fixed in next patch
   $ hg heads
+  changeset:   4:29edef26570b
+  tag:         tip
+  parent:      0:9092f1db7931
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     added c
+  
   changeset:   3:9efc5c3ac635
   topic:       foo
   user:        test
@@ -1209,8 +1215,14 @@
 
   $ hg up foo
   2 files updated, 0 files merged, 1 files removed, 0 files unresolved
-XXX: it should have returned both the heads; will be fixed in next patch
   $ hg heads
+  changeset:   4:29edef26570b
+  tag:         tip
+  parent:      0:9092f1db7931
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     added c
+  
   changeset:   3:9efc5c3ac635
   topic:       foo
   user:        test