Mercurial > hg
diff tests/test-backout.t @ 11856:db969ebdebd9
tests: unify test-backout
author | Martin Geisler <mg@lazybytes.net> |
---|---|
date | Sat, 14 Aug 2010 02:28:53 +0200 |
parents | tests/test-backout@6c82beaaa11a |
children | 4134686b83e1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-backout.t Sat Aug 14 02:28:53 2010 +0200 @@ -0,0 +1,255 @@ + $ 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