##// END OF EJS Templates
mq: use dirstateguard instead of dirstate.invalidate (qpush)...
mq: use dirstateguard instead of dirstate.invalidate (qpush) Before this patch, "mq.queue.apply()" uses "dirstate.invalidate()" as a kind of "restore .hg/dirstate to the original status" during afailure. But it just discards changes in memory, and doesn't actually restore ".hg/dirstate". Then, it can't work as expected, if "dirstate.write()" is executed while processing. This patch uses "dirstateguard" instead of "dirstate.invalidate()" to restore ".hg/dirstate" at failure even if "dirstate.write()" is executed before failure. This is a part of preparations to fix the issue that the recent (in memory) dirstate isn't visible to external processes (e.g. "precommit" hook).

File last commit:

r23615:7cfe5898 default
r24996:58308dde default
Show More
test-backout.t
585 lines | 11.9 KiB | text/troff | Tads3Lexer
Martin Geisler
tests: unify test-backout
r11856 $ hg init basic
$ cd basic
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 should complain
Martin Geisler
tests: unify test-backout
r11856
$ hg backout
abort: please specify a revision to backout
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-backout
r11856 $ hg backout -r 0 0
abort: please specify just one revision
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-backout
r11856
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 basic operation
FUJIWARA Katsunori
backout: use "getcommiteditor()" instead of explicit editor choice...
r21413 (this also tests that editor is invoked if the commit message is not
specified explicitly)
Martin Geisler
tests: unify test-backout
r11856
$ echo a > a
$ hg commit -d '0 0' -A -m a
adding a
$ echo b >> a
$ hg commit -d '1 0' -m b
FUJIWARA Katsunori
backout: use "getcommiteditor()" instead of explicit editor choice...
r21413 $ hg status --rev tip --rev "tip^1"
M a
$ HGEDITOR=cat hg backout -d '2 0' tip --tool=true
Martin Geisler
tests: unify test-backout
r11856 reverting a
FUJIWARA Katsunori
backout: use "getcommiteditor()" instead of explicit editor choice...
r21413 Backed out changeset a820f4f40a57
HG: Enter commit message. Lines beginning with 'HG:' are removed.
HG: Leave message empty to abort commit.
HG: --
HG: user: test
HG: branch 'default'
HG: changed a
Martin Geisler
tests: unify test-backout
r11856 changeset 2:2929462c3dff backs out changeset 1:a820f4f40a57
$ cat a
a
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 2:2929462c3dff tip
Backed out changeset a820f4f40a57
branch: default
commit: (clean)
update: (current)
Martin Geisler
tests: unify test-backout
r11856
Mateusz Kwapich
backout: add --commit option...
r23615 commit option
$ cd ..
$ hg init commit
$ cd commit
$ echo tomatoes > a
$ hg add a
$ hg commit -d '0 0' -m tomatoes
$ echo chair > b
$ hg add b
$ hg commit -d '1 0' -m chair
$ echo grapes >> a
$ hg commit -d '2 0' -m grapes
$ hg backout --commit -d '4 0' 1 --tool=:fail
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
changeset 3:1c2161e97c0a backs out changeset 1:22cb4f70d813
$ hg summary
parent: 3:1c2161e97c0a tip
Backed out changeset 22cb4f70d813
branch: default
commit: (clean)
update: (current)
$ echo ypples > a
$ hg commit -d '5 0' -m ypples
$ hg backout --commit -d '6 0' 2 --tool=:fail
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges
[1]
$ hg summary
parent: 4:ed99997b793d tip
ypples
branch: default
commit: 1 unresolved (clean)
update: (current)
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 file that was removed is recreated
FUJIWARA Katsunori
backout: use "getcommiteditor()" instead of explicit editor choice...
r21413 (this also tests that editor is not invoked if the commit message is
specified explicitly)
Martin Geisler
tests: unify test-backout
r11856
$ cd ..
$ hg init remove
$ cd remove
$ echo content > a
$ hg commit -d '0 0' -A -m a
adding a
$ hg rm a
$ hg commit -d '1 0' -m b
FUJIWARA Katsunori
backout: use "getcommiteditor()" instead of explicit editor choice...
r21413 $ HGEDITOR=cat hg backout -d '2 0' tip --tool=true -m "Backed out changeset 76862dcce372"
Martin Geisler
tests: unify test-backout
r11856 adding a
changeset 2:de31bdc76c0d backs out changeset 1:76862dcce372
$ cat a
content
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 2:de31bdc76c0d tip
Backed out changeset 76862dcce372
branch: default
commit: (clean)
update: (current)
Martin Geisler
tests: unify test-backout
r11856
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 backout of backout is as if nothing happened
Martin Geisler
tests: unify test-backout
r11856
Steve Borho
backout: add --tool argument for specifying merge tool
r12810 $ hg backout -d '3 0' --merge tip --tool=true
Martin Geisler
tests: unify test-backout
r11856 removing a
changeset 3:7f6d0f120113 backs out changeset 2:de31bdc76c0d
Mads Kiilerich
tests: remove hacks for testing if file or directory exists
r15515 $ test -f a
[1]
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 3:7f6d0f120113 tip
Backed out changeset de31bdc76c0d
branch: default
commit: (clean)
update: (current)
Martin Geisler
tests: unify test-backout
r11856
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 across branch
Martin Geisler
tests: unify test-backout
r11856
$ cd ..
$ hg init branch
$ cd branch
$ echo a > a
$ hg ci -Am0
adding a
$ echo b > b
$ hg ci -Am1
adding b
$ hg co -C 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 0:f7b1eb17ad24
0
branch: default
commit: (clean)
update: 1 new changesets (update)
Martin Geisler
tests: unify test-backout
r11856
should fail
$ hg backout 1
Mads Kiilerich
backout: improve confusing 'cannot backout change on a different branch' abort...
r20791 abort: cannot backout change that is not an ancestor
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-backout
r11856 $ echo c > c
$ hg ci -Am2
adding c
created new head
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 2:db815d6d32e6 tip
2
branch: default
commit: (clean)
update: 1 new changesets, 2 branch heads (merge)
Martin Geisler
tests: unify test-backout
r11856
should fail
$ hg backout 1
Mads Kiilerich
backout: improve confusing 'cannot backout change on a different branch' abort...
r20791 abort: cannot backout change that is not an ancestor
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 2:db815d6d32e6 tip
2
branch: default
commit: (clean)
update: 1 new changesets, 2 branch heads (merge)
Martin Geisler
tests: unify test-backout
r11856
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 backout with merge
Martin Geisler
tests: unify test-backout
r11856
$ cd ..
$ hg init merge
$ cd merge
$ echo line 1 > a
$ echo line 2 >> a
$ hg commit -d '0 0' -A -m a
adding a
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 0:59395513a13a tip
a
branch: default
commit: (clean)
update: (current)
Martin Geisler
tests: unify test-backout
r11856
remove line 1
$ echo line 2 > a
$ hg commit -d '1 0' -m b
$ echo line 3 >> a
$ hg commit -d '2 0' -m c
Steve Borho
backout: add --tool argument for specifying merge tool
r12810 $ hg backout --merge -d '3 0' 1 --tool=true
Martin Geisler
tests: unify test-backout
r11856 reverting a
created new head
changeset 3:26b8ccb9ad91 backs out changeset 1:5a50a024c182
merging with changeset 3:26b8ccb9ad91
merging a
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg commit -d '4 0' -m d
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 4:c7df5e0b9c09 tip
d
branch: default
commit: (clean)
update: (current)
Martin Geisler
tests: unify test-backout
r11856
check line 1 is back
$ cat a
line 1
line 2
line 3
Mads Kiilerich
tests: cleanup of tests that got lost in their own nested directories...
r16912 $ cd ..
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 backout should not back out subsequent changesets
Martin Geisler
tests: unify test-backout
r11856
$ hg init onecs
$ cd onecs
$ echo 1 > a
$ hg commit -d '0 0' -A -m a
adding a
$ echo 2 >> a
$ hg commit -d '1 0' -m b
$ echo 1 > b
$ hg commit -d '2 0' -A -m c
adding b
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 2:882396649954 tip
c
branch: default
commit: (clean)
update: (current)
Gilles Moris
backout: provide linear backout as a default (without --merge option)...
r12727
without --merge
Steve Borho
backout: add --tool argument for specifying merge tool
r12810 $ hg backout -d '3 0' 1 --tool=true
Gilles Moris
backout: provide linear backout as a default (without --merge option)...
r12727 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Pierre-Yves David
backout: add a message after backout that need manual commit...
r20276 changeset 22bca4c721e5 backed out, don't forget to commit.
Gilles Moris
backout: provide linear backout as a default (without --merge option)...
r12727 $ hg locate b
b
$ hg update -C tip
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg locate b
b
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 2:882396649954 tip
c
branch: default
commit: (clean)
update: (current)
Gilles Moris
backout: provide linear backout as a default (without --merge option)...
r12727
with --merge
Steve Borho
backout: add --tool argument for specifying merge tool
r12810 $ hg backout --merge -d '3 0' 1 --tool=true
Gilles Moris
backout: provide linear backout as a default (without --merge option)...
r12727 reverting a
Martin Geisler
tests: unify test-backout
r11856 created new head
changeset 3:3202beb76721 backs out changeset 1:22bca4c721e5
Gilles Moris
backout: provide linear backout as a default (without --merge option)...
r12727 merging with changeset 3:3202beb76721
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Martin Geisler
tests: unify test-backout
r11856 $ hg locate b
b
$ hg update -C tip
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg locate b
Matt Mackall
tests: add exit codes to unified tests
r12316 [1]
Martin Geisler
tests: unify test-backout
r11856
$ cd ..
$ hg init m
$ cd m
$ echo a > a
$ hg commit -d '0 0' -A -m a
adding a
$ echo b > b
$ hg commit -d '1 0' -A -m b
adding b
$ echo c > c
$ hg commit -d '2 0' -A -m b
adding c
$ hg update 1
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo d > d
$ hg commit -d '3 0' -A -m c
adding d
created new head
$ hg merge 2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg commit -d '4 0' -A -m d
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 4:b2f3bb92043e tip
d
branch: default
commit: (clean)
update: (current)
Martin Geisler
tests: unify test-backout
r11856
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 backout of merge should fail
Martin Geisler
tests: unify test-backout
r11856
$ hg backout 4
Matt Mackall
backout: deprecate/hide support for backing out merges...
r15211 abort: cannot backout a merge changeset
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-backout
r11856
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 backout of merge with bad parent should fail
Martin Geisler
tests: unify test-backout
r11856
$ hg backout --parent 0 4
abort: cb9a9f314b8b is not a parent of b2f3bb92043e
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-backout
r11856
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 backout of non-merge with parent should fail
Martin Geisler
tests: unify test-backout
r11856
$ hg backout --parent 0 3
abort: cannot use --parent on non-merge changeset
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-backout
r11856
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 backout with valid parent should be ok
Martin Geisler
tests: unify test-backout
r11856
Steve Borho
backout: add --tool argument for specifying merge tool
r12810 $ hg backout -d '5 0' --parent 2 4 --tool=true
Martin Geisler
tests: unify test-backout
r11856 removing d
changeset 5:10e5328c8435 backs out changeset 4:b2f3bb92043e
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 5:10e5328c8435 tip
Backed out changeset b2f3bb92043e
branch: default
commit: (clean)
update: (current)
Martin Geisler
tests: unify test-backout
r11856
$ hg rollback
Gilles Moris
rollback: clarifies the message about the reverted state (issue2628)...
r13446 repository tip rolled back to revision 4 (undo commit)
working directory now based on revision 4
Martin Geisler
tests: unify test-backout
r11856 $ hg update -C
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 4:b2f3bb92043e tip
d
branch: default
commit: (clean)
update: (current)
Martin Geisler
tests: unify test-backout
r11856
Steve Borho
backout: add --tool argument for specifying merge tool
r12810 $ hg backout -d '6 0' --parent 3 4 --tool=true
Martin Geisler
tests: unify test-backout
r11856 removing c
changeset 5:033590168430 backs out changeset 4:b2f3bb92043e
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 5:033590168430 tip
Backed out changeset b2f3bb92043e
branch: default
commit: (clean)
update: (current)
Martin Geisler
tests: unify test-backout
r11856
$ cd ..
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 named branches
Martin Geisler
tests: unify test-backout
r11856
$ hg init named_branches
$ cd named_branches
$ echo default > default
$ hg ci -d '0 0' -Am default
adding default
$ hg branch branch1
marked working directory as branch branch1
Matt Mackall
branch: warn on branching
r15615 (branches are permanent and global, did you want a bookmark?)
Martin Geisler
tests: unify test-backout
r11856 $ echo branch1 > file1
$ hg ci -d '1 0' -Am file1
adding file1
$ hg branch branch2
marked working directory as branch branch2
Matt Mackall
branch: warn on branching
r15615 (branches are permanent and global, did you want a bookmark?)
Martin Geisler
tests: unify test-backout
r11856 $ echo branch2 > file2
$ hg ci -d '2 0' -Am file2
adding file2
Gilles Moris
backout: provide linear backout as a default (without --merge option)...
r12727
without --merge
Steve Borho
backout: add --tool argument for specifying merge tool
r12810 $ hg backout -r 1 --tool=true
Pierre-Yves David
backout: avoid update on simple case....
r20275 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
Pierre-Yves David
backout: add a message after backout that need manual commit...
r20276 changeset bf1602f437f3 backed out, don't forget to commit.
Gilles Moris
backout: provide linear backout as a default (without --merge option)...
r12727 $ hg branch
branch2
$ hg status -A
R file1
C default
C file2
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 2:45bbcd363bf0 tip
file2
branch: branch2
commit: 1 removed
update: (current)
Gilles Moris
backout: provide linear backout as a default (without --merge option)...
r12727
with --merge
FUJIWARA Katsunori
backout: accept '--edit' like other commands creating new changeset...
r21712 (this also tests that editor is invoked if '--edit' is specified
explicitly regardless of '--message')
Gilles Moris
backout: provide linear backout as a default (without --merge option)...
r12727 $ hg update -qC
FUJIWARA Katsunori
backout: accept '--edit' like other commands creating new changeset...
r21712 $ HGEDITOR=cat hg backout --merge -d '3 0' -r 1 -m 'backout on branch1' --tool=true --edit
Martin Geisler
tests: unify test-backout
r11856 removing file1
FUJIWARA Katsunori
backout: accept '--edit' like other commands creating new changeset...
r21712 backout on branch1
HG: Enter commit message. Lines beginning with 'HG:' are removed.
HG: Leave message empty to abort commit.
HG: --
HG: user: test
HG: branch 'branch2'
HG: removed file1
Martin Geisler
tests: unify test-backout
r11856 created new head
changeset 3:d4e8f6db59fb backs out changeset 1:bf1602f437f3
Gilles Moris
backout: provide linear backout as a default (without --merge option)...
r12727 merging with changeset 3:d4e8f6db59fb
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 2:45bbcd363bf0
file2
parent: 3:d4e8f6db59fb tip
backout on branch1
branch: branch2
commit: 1 removed (merge)
update: (current)
Gilles Moris
backout: provide linear backout as a default (without --merge option)...
r12727 $ hg update -q -C 2
Martin Geisler
tests: unify test-backout
r11856
on branch2 with branch1 not merged, so file1 should still exist:
$ hg id
45bbcd363bf0 (branch2)
$ hg st -A
C default
C file1
C file2
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 2:45bbcd363bf0
file2
branch: branch2
commit: (clean)
update: 1 new changesets, 2 branch heads (merge)
Martin Geisler
tests: unify test-backout
r11856
on branch2 with branch1 merged, so file1 should be gone:
$ hg merge
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci -d '4 0' -m 'merge backout of branch1'
$ hg id
22149cdde76d (branch2) tip
$ hg st -A
C default
C file2
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 4:22149cdde76d tip
merge backout of branch1
branch: branch2
commit: (clean)
update: (current)
Martin Geisler
tests: unify test-backout
r11856
on branch1, so no file1 and file2:
$ hg co -C branch1
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg id
bf1602f437f3 (branch1)
$ hg st -A
C default
C file1
Pierre-Yves David
test-backout: add multiple summary calls to monitor result wc...
r20270 $ hg summary
parent: 1:bf1602f437f3
file1
branch: branch1
commit: (clean)
update: (current)
Mads Kiilerich
tests: cleanup of tests that got lost in their own nested directories...
r16912
$ cd ..
Pierre-Yves David
resolve: use "other" changeset from merge state (issue4163)...
r20594
Yuya Nishihara
backout: correct commit status of no changes made (BC) (issue4190)...
r20872 backout of empty changeset (issue4190)
$ hg init emptycommit
$ cd emptycommit
$ touch file1
$ hg ci -Aqm file1
$ hg branch -q branch1
$ hg ci -qm branch1
$ hg backout -v 1
resolving manifests
nothing changed
[1]
$ cd ..
Pierre-Yves David
resolve: use "other" changeset from merge state (issue4163)...
r20594
Test usage of `hg resolve` in case of conflict
(issue4163)
$ hg init issue4163
$ cd issue4163
$ touch foo
$ hg add foo
$ cat > foo << EOF
> one
> two
> three
> four
> five
> six
> seven
> height
> nine
> ten
> EOF
$ hg ci -m 'initial'
$ cat > foo << EOF
> one
> two
> THREE
> four
> five
> six
> seven
> height
> nine
> ten
> EOF
$ hg ci -m 'capital three'
$ cat > foo << EOF
> one
> two
> THREE
> four
> five
> six
> seven
> height
> nine
> TEN
> EOF
$ hg ci -m 'capital ten'
$ hg backout -r 'desc("capital three")' --tool internal:fail
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges
[1]
$ hg status
$ hg resolve -l # still unresolved
U foo
$ hg summary
parent: 2:b71750c4b0fd tip
capital ten
branch: default
commit: 1 unresolved (clean)
update: (current)
$ hg resolve --all --debug
picked tool 'internal:merge' for foo (binary False symlink False)
merging foo
my foo@b71750c4b0fd+ other foo@a30dd8addae3 ancestor foo@913609522437
premerge successful
Pierre-Yves David
resolve: add parenthesis around "no more unresolved files" message...
r21947 (no more unresolved files)
Pierre-Yves David
resolve: use "other" changeset from merge state (issue4163)...
r20594 $ hg status
M foo
? foo.orig
$ hg resolve -l
R foo
$ hg summary
parent: 2:b71750c4b0fd tip
capital ten
branch: default
commit: 1 modified, 1 unknown
update: (current)
$ cat foo
one
two
three
four
five
six
seven
height
nine
TEN