Reverse the way backout is doing the merge
Currently, backout is creating a backout revision as a child node of the
backed out node and will leave you at this new head. This has several
drawbacks:
* this changes the current head
* when there is a long history between the backed out node and the
current head, this will generate a huge number of diffs that are scary
at first sight, and not very natural to review before commit.
The change consists to switch back to the original node as soon as the
backout node (which becomes the new tip) has been created. Then the
--merge option can just merge this new tip in the current node.
* the current head/node is not changed from the user's point of view
* even without using the --merge option, the backout revision is still
easy to locate, as this is the tip
* the merge is much more intuitive as diffs of the merge is right you
are looking to backout
A b
b
b: copy a:b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3
we should see two history entries
changeset: 1:386a3cc01532
tag: tip
user: test
date: Mon Jan 12 13:46:40 1970 +0000
files: b
description:
2
changeset: 0:33aaa84a386b
user: test
date: Mon Jan 12 13:46:40 1970 +0000
files: a
description:
1
we should see one log entry for a
changeset: 0:33aaa84a386b
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 1
this should show a revision linked to changeset 0
rev offset length base linkrev nodeid p1 p2
0 0 3 0 0 b789fdd96dc2 000000000000 000000000000
we should see one log entry for b
changeset: 1:386a3cc01532
tag: tip
user: test
date: Mon Jan 12 13:46:40 1970 +0000
summary: 2
this should show a revision linked to changeset 1
rev offset length base linkrev nodeid p1 p2
0 0 65 0 1 9a263dd772e0 000000000000 000000000000
this should show the rename information in the metadata
copyrev: b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3
copy: a
ed156f22f0a6fde642de0b5eba0cbbb2 .hg/store/data/b.i
60b725f10c9c85c70d97880dfe8191b3 bsum
60b725f10c9c85c70d97880dfe8191b3 asum
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
2 files, 2 changesets, 2 total revisions