merged two branches, and pushed, how to backout/strip?

Uwe Brauer oub at mat.ucm.es
Tue Jan 10 15:06:51 UTC 2017


   > Uwe Brauer <oub at mat.ucm.es> writes:


   > The merge and revert are necessary, because if you only revert the
   > default branch, this branch then contains a commit which undoes all the
   > work in vs-11.89. If you were to do some changes and then merge it into
   > the vs-11.89 branch to get that branch up to date, it would undo all the
   > work done in the vs-11.89 branch up until you first merged it into
   > default.

   > Reason: Default contains a change which undoes the changes in vs-11.89.

   > To fix that, vs-11.89 needs a change which undoes the undoing of its
   > changes.

This drives me crazy I understand your argument, but why isn't it
sufficient to revert the merge in both branches. Like this

Bad merge repo (now with 2 files)


hg init
echo Main1 > main.txt
hg add main.txt
hg commit -m "Main1"
echo Main2 >> main.txt
hg commit -m "Main1"
hg branch vs-11.89
echo branch1 > branch.txt
hg add branch.txt
hg commit -m "Good Commit1"
echo branch2 >> branch.txt
hg commit -m "Good Commit2"
echo badvariable >> branch.txt
hg commit -m "Bad Commit"
hg up default
hg merge vs-11.89
hg commit -m "Bad merge"


Your recipe

# revert to last good commit in default
hg revert --all -r 1
hg commit -m "backout bad merge"
# go to branch
hg up vs-11.89
hg merge default
hg ci -m "merge default with the backout"
hg log -G
# revert the last bad commit to branch vs-11.89
hg revert --all -r 4
hg ci -m "backout the backout"

But mine

hg revert --all -r 1
hg commit -m "backout bad merge from default"
hg revert --all -r 4
hg ci -m "backout bad merge from vs-11.89"


Seems to result in the same files, but not the same graph.

What do I miss?




More information about the Mercurial mailing list