test-backout.t
255 lines
| 5.4 KiB
| text/troff
|
Tads3Lexer
/ tests / test-backout.t
Martin Geisler
|
r11856 | $ HGMERGE=true; export HGMERGE | ||
$ hg init basic | ||||
$ cd basic | ||||
# should complain | ||||
$ hg backout | ||||
abort: please specify a revision to backout | ||||
$ hg backout -r 0 0 | ||||
abort: please specify just one revision | ||||
# basic operation | ||||
$ echo a > a | ||||
$ hg commit -d '0 0' -A -m a | ||||
adding a | ||||
$ echo b >> a | ||||
$ hg commit -d '1 0' -m b | ||||
$ hg backout -d '2 0' tip | ||||
reverting a | ||||
changeset 2:2929462c3dff backs out changeset 1:a820f4f40a57 | ||||
$ cat a | ||||
a | ||||
# file that was removed is recreated | ||||
$ 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 | ||||
$ hg backout -d '2 0' --merge tip | ||||
adding a | ||||
changeset 2:de31bdc76c0d backs out changeset 1:76862dcce372 | ||||
$ cat a | ||||
content | ||||
# backout of backout is as if nothing happened | ||||
$ hg backout -d '3 0' --merge tip | ||||
removing a | ||||
changeset 3:7f6d0f120113 backs out changeset 2:de31bdc76c0d | ||||
$ cat a 2>/dev/null || echo cat: a: No such file or directory | ||||
cat: a: No such file or directory | ||||
# across branch | ||||
$ 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 | ||||
should fail | ||||
$ hg backout 1 | ||||
abort: cannot backout change on a different branch | ||||
$ echo c > c | ||||
$ hg ci -Am2 | ||||
adding c | ||||
created new head | ||||
should fail | ||||
$ hg backout 1 | ||||
abort: cannot backout change on a different branch | ||||
# backout with merge | ||||
$ cd .. | ||||
$ hg init merge | ||||
$ cd merge | ||||
$ echo line 1 > a | ||||
$ echo line 2 >> a | ||||
$ hg commit -d '0 0' -A -m a | ||||
adding a | ||||
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 | ||||
$ hg backout --merge -d '3 0' 1 | ||||
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 | ||||
check line 1 is back | ||||
$ cat a | ||||
line 1 | ||||
line 2 | ||||
line 3 | ||||
# backout should not back out subsequent changesets | ||||
$ 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 | ||||
$ hg backout -d '3 0' 1 | ||||
reverting a | ||||
created new head | ||||
changeset 3:3202beb76721 backs out changeset 1:22bca4c721e5 | ||||
the backout changeset is a new head - do not forget to merge | ||||
(use "backout --merge" if you want to auto-merge) | ||||
$ hg locate b | ||||
b | ||||
$ hg update -C tip | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg locate b | ||||
$ 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 | ||||
# backout of merge should fail | ||||
$ hg backout 4 | ||||
abort: cannot backout a merge changeset without --parent | ||||
# backout of merge with bad parent should fail | ||||
$ hg backout --parent 0 4 | ||||
abort: cb9a9f314b8b is not a parent of b2f3bb92043e | ||||
# backout of non-merge with parent should fail | ||||
$ hg backout --parent 0 3 | ||||
abort: cannot use --parent on non-merge changeset | ||||
# backout with valid parent should be ok | ||||
$ hg backout -d '5 0' --parent 2 4 | ||||
removing d | ||||
changeset 5:10e5328c8435 backs out changeset 4:b2f3bb92043e | ||||
$ hg rollback | ||||
rolling back to revision 4 (undo commit) | ||||
$ hg update -C | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg backout -d '6 0' --parent 3 4 | ||||
removing c | ||||
changeset 5:033590168430 backs out changeset 4:b2f3bb92043e | ||||
$ cd .. | ||||
# named branches | ||||
$ 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 | ||||
$ echo branch1 > file1 | ||||
$ hg ci -d '1 0' -Am file1 | ||||
adding file1 | ||||
$ hg branch branch2 | ||||
marked working directory as branch branch2 | ||||
$ echo branch2 > file2 | ||||
$ hg ci -d '2 0' -Am file2 | ||||
adding file2 | ||||
$ hg backout -d '3 0' -r 1 -m 'backout on branch1' | ||||
removing file1 | ||||
created new head | ||||
changeset 3:d4e8f6db59fb backs out changeset 1:bf1602f437f3 | ||||
the backout changeset is a new head - do not forget to merge | ||||
(use "backout --merge" if you want to auto-merge) | ||||
XXX maybe backout shouldn't suggest a merge here as it is a different branch? | ||||
on branch2 with branch1 not merged, so file1 should still exist: | ||||
$ hg id | ||||
45bbcd363bf0 (branch2) | ||||
$ hg st -A | ||||
C default | ||||
C file1 | ||||
C file2 | ||||
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 | ||||
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 | ||||
$ exit 0 | ||||