Mercurial > hg
view tests/test-confused-revert.t @ 43962:eebdd6709868
fix: fix handling of merge commits by using overlayworkingctx
Most of this code was conceptually copied from what rebase does, with one small
difference: hgext.rebaserev.rebase uses branchmerge=True, while I had to use
branchmerge=False, or else it got really confused about updating to the same
revision in some situations. I believe that the difference is that rebase is
always dealing with *some* form of update - it never gets to mergemod.update if
the source and destination are the same, while we can encounter that situation
with fix. This may imply that this code has some issues with named branches that
should be investigated.
Differential Revision: https://phab.mercurial-scm.org/D7703
author | Kyle Lippincott <spectral@google.com> |
---|---|
date | Wed, 18 Dec 2019 14:07:58 -0800 |
parents | cb70501d8b71 |
children | 8d72e29ad1e0 |
line wrap: on
line source
$ hg init $ echo foo > a $ hg add a $ hg commit -m "1" $ echo bar > b $ hg add b $ hg remove a Should show a removed and b added: $ hg status A b R a $ hg revert --all forgetting b undeleting a Should show b unknown and a back to normal: $ hg status ? b $ rm b $ hg co -C 0 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ echo foo-a > a $ hg commit -m "2a" $ hg co -C 0 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ echo foo-b > a $ hg commit -m "2b" created new head $ HGMERGE=true hg merge 1 merging a 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) Should show foo-b: $ cat a foo-b $ echo bar > b $ hg add b $ rm a $ hg remove a Should show a removed and b added: $ hg status A b R a Revert should fail: $ hg revert abort: uncommitted merge with no revision specified (use 'hg update' or see 'hg help revert') [255] Revert should be ok now: $ hg revert -r2 --all forgetting b undeleting a Should show b unknown and a marked modified (merged): $ hg status M a ? b Should show foo-b: $ cat a foo-b