Skip to content

divergence-resolution: use last evolution date to choose p1 when merging

Sushil Khanchi requested to merge topic/default/resolution-order into branch/default

Before this patch, we choose the minimum revision as p1 while merging the two divergent csets which had a drawback that if independent user resolve the same divergence, their final resolved cset would have different hashes (because of 'divergence_source_local' and 'divergence_source_other' extras).

Now, we decide the p1 on the basis of which of the two divergent cset was rewritten more recently. This new logic removes the "different hash" problem.

To save us from big output changes in the tests due to this change, I also added the second factor i.e revision_number while sorting the csets wrt dates (as date is same for all the csets in tests) to fallback to the old way of picking the revision i.e choosing the minimum rev number.

And to demonstrate that now divergence resolution is independent of which side user run the hg evolve --content-div resolved cset id won't change, I have added a separate test file. To make sure new logic really works we turned ON the default behavior i.e recording the current date at the time of a transaction. And to make this new test file output stable, we have prevented hash_id to come in the output (as hashes would always be changing here, because of date).

Merge request reports