Mercurial > hg
view tests/test-revert @ 8742:a964ab624385
merge: allow merging going backwards
New behavior is generally superior and more correct, except possibly
with regards to missing files. hg up . is now effectively a no-op,
which is probably the desired behavior for people expecting to move to
tip, but may surprise people who were expecting deleted files to
reappear.
case 1: update to .
a-w -> a-w
classic: ancestor a
missing recreated right?
rmed recreated WRONG
added forgotten WRONG
changed preserved RIGHT
conflicted can't happen
backward merge: ancestor a (NO EFFECT)
missing missing wrong?
rm'ed rm'ed RIGHT
added preserved RIGHT
changed preserved RIGHT
conflicted can't happen
case 2: update to ancestor of .
a-b-w -> b-w
\
a
classic: ancestor a
missing recreated right?
rmed recreated wrong?
added forgotten wrong?
changed preserved RIGHT
conflicted preserved wrong?
backwards merge: ancestor b
missing missing or conflict right?
rm'ed missing or conflict right?
changed preserved RIGHT
conflicted merge RIGHT
added preserved right?
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 08 Jun 2009 18:14:44 -0500 |
parents | 81e20e01d465 |
children |
line wrap: on
line source
#!/bin/sh hg init repo cd repo echo 123 > a echo 123 > c echo 123 > e hg add a c e hg commit -m "first" -d "1000000 0" a c e echo 123 > b echo %% should show b unknown hg status echo 12 > c echo %% should show b unknown and c modified hg status hg add b echo %% should show b added and c modified hg status hg rm a echo %% should show a removed, b added and c modified hg status hg revert a echo %% should show b added, copy saved, and c modified hg status hg revert b echo %% should show b unknown, and c modified hg status hg revert --no-backup c echo %% should show unknown: b hg status hg add b echo %% should show b added hg status b rm b echo %% should show b deleted hg status b hg revert -v b echo %% should not find b hg status b echo %% should show a c e ls echo %% should verbosely save backup to e.orig echo z > e hg revert --all -v echo %% should say no changes needed hg revert a echo %% should say file not managed echo q > q hg revert q rm q echo %% should say file not found hg revert notfound touch d hg add d hg rm a hg commit -m "second" -d "1000000 0" echo z > z hg add z hg st echo %% should add a, remove d, forget z hg revert --all -r0 echo %% should forget a, undelete d hg revert --all -rtip rm a *.orig echo %% should silently add a hg revert -r0 a hg st a hg rm d hg st d echo %% should silently keep d removed hg revert -r0 d hg st d hg update -C chmod +x c hg revert --all echo %% should print non-executable test -x c || echo non-executable chmod +x c hg commit -d '1000001 0' -m exe chmod -x c hg revert --all echo %% should print executable test -x c && echo executable cd .. echo %% issue 241 hg init a cd a echo a >> a hg commit -A -d '1 0' -m a echo a >> a hg commit -d '2 0' -m a hg update 0 mkdir b echo b > b/b echo % should fail - no arguments hg revert -rtip echo % should succeed hg revert --all -rtip echo %% issue332 hg ci -A -m b -d '1000001 0' echo foobar > b/b mkdir newdir echo foo > newdir/newfile hg add newdir/newfile hg revert b newdir echo foobar > b/b hg revert . echo % reverting a rename target should revert the source hg mv a newa hg revert newa hg st a newa cd .. hg init ignored cd ignored echo '^ignored$' > .hgignore echo '^ignoreddir$' >> .hgignore echo '^removed$' >> .hgignore mkdir ignoreddir touch ignoreddir/file touch ignoreddir/removed touch ignored touch removed echo '%% 4 ignored files (we will add/commit everything)' hg st -A -X .hgignore hg ci -qAm 'add files' ignored ignoreddir/file ignoreddir/removed removed echo >> ignored echo >> ignoreddir/file hg rm removed ignoreddir/removed echo '%% should revert ignored* and undelete *removed' hg revert -a --no-backup hg st -mardi hg up -qC echo >> ignored hg rm removed echo %% should silently revert the named files hg revert --no-backup ignored removed hg st -mardi