Issue146

Title provide backout command
Priority feature Status resolved
Superseder Nosy List ThomasAH, bos, junkblocker, kupfer, tonfa, vadim
Assigned To vadim Topics

Created on 2006-02-28.22:43:18 by bos, last changed 2006-05-02.16:27:15 by ThomasAH.

Files
File name Uploaded Type Edit Remove
backout.patch vadim, 2006-04-26.16:21:17 text/x-patch
Messages
msg1118 (view) Author: ThomasAH Date: 2006-05-02.16:27:15
via crew in main now.
msg1078 (view) Author: vadim Date: 2006-04-26.16:21:17
here is patch i sent to mailing list.
msg1075 (view) Author: ThomasAH Date: 2006-04-26.16:10:47
mpm mentioned 'hg negate' which I like, too.
msg1074 (view) Author: movement Date: 2006-04-26.16:01:19
"backout" is my preference. It's commonly used (not just within Sun).

hg 'exclude' implies that history is modified to me. 'revoke' I could live with,
but seems odd.
msg946 (view) Author: ThomasAH Date: 2006-04-04.10:03:52
Backing out a range of changesets should be possible, too, but using a simple
range (x:y) wouldn't do the right thing here, but instead two nodes and all
nodes topographically between them are meant.
The problem is how to specify this on the command line?
hg backout -r foo -r bar  (like with diff) might be confusing whether one wants
to exclude two revisions or all between them.
-r foo:bar  would be different from what e.g. hg log -r foo:bar will do (and
probably we want to have a feature to display nodes between two nodes in hg log,
too, so we can see which nodes gets excluded)
Maybe -r foo..bar or foo::bar?


Different topic: The name 'hg backout' doesn't look very intuitive for me, maybe
it is because I'm no native speaker.
Maybe one of:
hg reverse
hg cancel
hg override
hg suspend
hg repeal
But my favourites are:
hg exclude
hg revoke
hg zap
msg942 (view) Author: tonfa Date: 2006-04-04.05:47:28
We first need the revert code in localrepo.py
msg578 (view) Author: bos Date: 2006-03-01.00:12:57
Turns out, from talking on IRC, that Matt misunderstood what I was talking about.

I want to undo an earlier commit without losing the changes that have happened
since to any of the affected files.  By updating to the earlier rev, committing
an undo immediately after it, and doing a merge back to where I was, hg's
machinery will handle the merging for me.
msg577 (view) Author: bos Date: 2006-02-28.23:49:01
I'll write this as an extension, then.  Manually doing a three-way merge is just
stupid, especially when doing a backout in the way I described makes the
revision history reflect what actually occurred.
msg576 (view) Author: mpm Date: 2006-02-28.23:43:29
NAK. I'll accept a change to revert that saves .orig files.
msg575 (view) Author: bos Date: 2006-02-28.22:43:11
If you want to undo an earlier change, the revert command is often not a safe
way to do this.  The reason is that it restores a file in the working directory
to an earlier revision, but of course it does nothing with any changes to the
file that have happened between that revision and whatever revision the working
directory is currently at.

It would be good to add a backout command that undoes a change in a safer way. 
Here is how it sort of, kind of, ought to work:

hg backout -r77

If I were writing this as a shell script, this is what I'd do:

    remember current rev
    hg up -C $(rev to undo)
    hg revert -r $(parent of rev to undo)
    hg commit
    hg up -m $(previous rev)

If any changes happened since the rev to be undone, the hgmerge machinery should
either merge them properly, or drop us into a conflict resolution GUI.
History
Date User Action Args
2006-05-02 16:27:15ThomasAHsetstatus: in-progress -> resolved
nosy: bos, vadim, ThomasAH, tonfa, junkblocker, kupfer
messages: + msg1118
2006-04-26 16:21:25vadimsetstatus: chatting -> in-progress
nosy: bos, vadim, ThomasAH, tonfa, junkblocker, kupfer
2006-04-26 16:21:17vadimsetfiles: + backout.patch
assignedto: vadim
messages: + msg1078
nosy: + vadim
2006-04-26 16:10:48ThomasAHsetnosy: bos, ThomasAH, tonfa, junkblocker, kupfer
messages: + msg1075
2006-04-26 16:01:29movementsetnosy: bos, ThomasAH, tonfa, junkblocker, kupfer
messages: + msg1074
2006-04-15 02:35:09junkblockersetnosy: + junkblocker
2006-04-04 10:03:52ThomasAHsetnosy: bos, ThomasAH, tonfa, kupfer
messages: + msg946
2006-04-04 05:47:28tonfasetnosy: bos, ThomasAH, tonfa, kupfer
messages: + msg942
2006-04-03 21:22:52kupfersetnosy: + kupfer
2006-03-21 18:10:31tonfasetnosy: + tonfa
2006-03-20 07:12:52ThomasAHsetnosy: + ThomasAH
2006-03-01 00:13:01bossetmessages: + msg578
2006-02-28 23:49:05bossetmessages: + msg577
2006-02-28 23:43:35mpmsetstatus: unread -> chatting
messages: + msg576
2006-02-28 22:43:18boscreate