Mercurial > evolve
comparison hgext3rd/topic/__init__.py @ 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 | 7ee15bf011d6 |
children | 5cbf9c2189fd |
comparison
equal
deleted
inserted
replaced
5686:ff84b99569b0 | 5687:d24669df9a4a |
---|---|
523 return self.filtered(topicfilter).branchmap() | 523 return self.filtered(topicfilter).branchmap() |
524 | 524 |
525 def branchheads(self, branch=None, start=None, closed=False): | 525 def branchheads(self, branch=None, start=None, closed=False): |
526 if branch is None: | 526 if branch is None: |
527 branch = self[None].branch() | 527 branch = self[None].branch() |
528 if self.currenttopic: | 528 if self.currenttopic: |
529 branch = b"%s:%s" % (branch, self.currenttopic) | 529 branch = b"%s:%s" % (branch, self.currenttopic) |
530 return super(topicrepo, self).branchheads(branch=branch, | 530 return super(topicrepo, self).branchheads(branch=branch, |
531 start=start, | 531 start=start, |
532 closed=closed) | 532 closed=closed) |
533 | 533 |
534 def invalidatevolatilesets(self): | 534 def invalidatevolatilesets(self): |