Bug 5686 - evolve should move onto tipmost non-obsolete commit among successors of split parent
Summary: evolve should move onto tipmost non-obsolete commit among successors of split...
Status: RESOLVED FIXED
Alias: None
Product: Mercurial
Classification: Unclassified
Component: evolution (show other bugs)
Version: default branch
Hardware: PC Mac OS
: wish feature
Assignee: Bugzilla
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-09-21 00:52 UTC by Martin von Zweigbergk
Modified: 2019-01-19 00:00 UTC (History)
4 users (show)

See Also:
Python Version: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Martin von Zweigbergk 2017-09-21 00:52 UTC
Let's say we start with this history:

o c
|
o a+b
|
o p

Then split a+b into two commit and prune b, so we have this:

x b
|
o a
|
| o c
| |
| x a+b
|/
o p

If we now evolve c, it will be moved on top of p. I would expect it to land on a.
Comment 1 Bugzilla 2018-03-12 00:00 UTC
Bug was inactive for 150 days, archiving
Comment 2 Bugzilla 2018-08-10 00:00 UTC
Bug was inactive for 150 days, archiving
Comment 3 Martin von Zweigbergk 2018-08-10 00:06 UTC
I haven't checked if this has been fixed. I'll let the evolve developers mark it as fixed if it has been.
Comment 4 Bugzilla 2019-01-07 00:01 UTC
Bug was inactive for 150 days, archiving
Comment 5 Pierre-Yves David 2019-01-07 05:16 UTC
I'm not sure this is fully fixed, we'll have to check.
Comment 6 HG Bot 2019-01-11 22:06 UTC
Fixed by https://mercurial-scm.org/repo/hg/rev/191fac9ff9d3
Sushil khanchi <sushilkhanchi97@gmail.com>
obsutil: fix the issue5686

While traversing the obsolescence graph to find the successors sets
of csets:
    In its 4th case (read comments of obsutil.successorssets to see
    all 4 cases) where we know successors sets of all direct successors
    of CURRENT, we were just missing a condition to filter out the case
    when a cset is pruned.
    And without this condition (that this patch added) it was making a whole
    successor set to [] just because of one pruned marker.

For e.g:if following is the successors set of a cset A:
           A -> [a, b, c]

        if we prune c, we expect A's successors set to be [a, b] but
        you would get:
           A -> []
So this patch make sure that we calculate the right successorsset of csets
considering the pruned cset (in split case).

Differential Revision: https://phab.mercurial-scm.org/D5474

(please test the fix)
Comment 7 Bugzilla 2019-01-19 00:00 UTC
Bug was set to TESTING for 7 days, resolving