# HG changeset patch # User Martin Geisler # Date 1281745733 -7200 # Node ID db969ebdebd92bd9eab223cd8be48085d4b7d5fb # Parent 054b0d9c3f0ca3ae48980887e4283530721a78f4 tests: unify test-backout diff -r 054b0d9c3f0c -r db969ebdebd9 tests/test-backout --- a/tests/test-backout Sat Aug 14 02:26:58 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,159 +0,0 @@ -#!/bin/sh - -HGMERGE=true; export HGMERGE - -hg init basic -cd basic - -echo '# should complain' -hg backout -hg backout -r 0 0 - -echo '# basic operation' -echo a > a -hg commit -d '0 0' -A -m a -echo b >> a -hg commit -d '1 0' -m b - -hg backout -d '2 0' tip -cat a - -echo '# file that was removed is recreated' -cd .. -hg init remove -cd remove - -echo content > a -hg commit -d '0 0' -A -m a - -hg rm a -hg commit -d '1 0' -m b - -hg backout -d '2 0' --merge tip -cat a - -echo '# backout of backout is as if nothing happened' - -hg backout -d '3 0' --merge tip -cat a 2>/dev/null || echo cat: a: No such file or directory - -echo '# across branch' -cd .. -hg init branch -cd branch -echo a > a -hg ci -Am0 -echo b > b -hg ci -Am1 -hg co -C 0 -# should fail -hg backout 1 -echo c > c -hg ci -Am2 -# should fail -hg backout 1 - -echo '# 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 -# 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 -hg commit -d '4 0' -m d -# check line 1 is back -cat a - -echo '# backout should not back out subsequent changesets' -hg init onecs -cd onecs -echo 1 > a -hg commit -d '0 0' -A -m a -echo 2 >> a -hg commit -d '1 0' -m b -echo 1 > b -hg commit -d '2 0' -A -m c -hg backout -d '3 0' 1 -hg locate b -hg update -C tip -hg locate b - -cd .. -hg init m -cd m -echo a > a -hg commit -d '0 0' -A -m a -echo b > b -hg commit -d '1 0' -A -m b -echo c > c -hg commit -d '2 0' -A -m b -hg update 1 -echo d > d -hg commit -d '3 0' -A -m c -hg merge 2 -hg commit -d '4 0' -A -m d - -echo '# backout of merge should fail' - -hg backout 4 - -echo '# backout of merge with bad parent should fail' - -hg backout --parent 0 4 - -echo '# backout of non-merge with parent should fail' - -hg backout --parent 0 3 - -echo '# backout with valid parent should be ok' - -hg backout -d '5 0' --parent 2 4 - -hg rollback -hg update -C - -hg backout -d '6 0' --parent 3 4 - -cd .. - -echo '# named branches' - -hg init named_branches -cd named_branches - -echo default > default -hg ci -d '0 0' -Am default -hg branch branch1 -echo branch1 > file1 -hg ci -d '1 0' -Am file1 -hg branch branch2 -echo branch2 > file2 -hg ci -d '2 0' -Am file2 -hg backout -d '3 0' -r 1 -m 'backout on branch1' -# XXX maybe backout shouldn't suggest a merge here as it is a different branch? - -echo '% on branch2 with branch1 not merged, so file1 should still exist:' -hg id -hg st -A - -echo '% on branch2 with branch1 merged, so file1 should be gone:' -hg merge -hg ci -d '4 0' -m 'merge backout of branch1' -hg id -hg st -A - -echo '% on branch1, so no file1 and file2:' -hg co -C branch1 -hg id -hg st -A - -exit 0 diff -r 054b0d9c3f0c -r db969ebdebd9 tests/test-backout.out --- a/tests/test-backout.out Sat Aug 14 02:26:58 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -# should complain -abort: please specify a revision to backout -abort: please specify just one revision -# basic operation -adding a -reverting a -changeset 2:2929462c3dff backs out changeset 1:a820f4f40a57 -a -# file that was removed is recreated -adding a -adding a -changeset 2:de31bdc76c0d backs out changeset 1:76862dcce372 -content -# backout of backout is as if nothing happened -removing a -changeset 3:7f6d0f120113 backs out changeset 2:de31bdc76c0d -cat: a: No such file or directory -# across branch -adding a -adding b -0 files updated, 0 files merged, 1 files removed, 0 files unresolved -abort: cannot backout change on a different branch -adding c -created new head -abort: cannot backout change on a different branch -# backout with merge -adding a -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) -line 1 -line 2 -line 3 -# backout should not back out subsequent changesets -adding a -adding b -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) -b -1 files updated, 0 files merged, 1 files removed, 0 files unresolved -adding a -adding b -adding c -0 files updated, 0 files merged, 1 files removed, 0 files unresolved -adding d -created new head -1 files updated, 0 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) -# backout of merge should fail -abort: cannot backout a merge changeset without --parent -# backout of merge with bad parent should fail -abort: cb9a9f314b8b is not a parent of b2f3bb92043e -# backout of non-merge with parent should fail -abort: cannot use --parent on non-merge changeset -# backout with valid parent should be ok -removing d -changeset 5:10e5328c8435 backs out changeset 4:b2f3bb92043e -rolling back to revision 4 (undo commit) -1 files updated, 0 files merged, 0 files removed, 0 files unresolved -removing c -changeset 5:033590168430 backs out changeset 4:b2f3bb92043e -# named branches -adding default -marked working directory as branch branch1 -adding file1 -marked working directory as branch branch2 -adding file2 -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) -% on branch2 with branch1 not merged, so file1 should still exist: -45bbcd363bf0 (branch2) -C default -C file1 -C file2 -% on branch2 with branch1 merged, so file1 should be gone: -0 files updated, 0 files merged, 1 files removed, 0 files unresolved -(branch merge, don't forget to commit) -22149cdde76d (branch2) tip -C default -C file2 -% on branch1, so no file1 and file2: -1 files updated, 0 files merged, 1 files removed, 0 files unresolved -bf1602f437f3 (branch1) -C default -C file1 diff -r 054b0d9c3f0c -r db969ebdebd9 tests/test-backout.t --- /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