diff options
Diffstat (limited to 'tests/test-rollback.t')
-rw-r--r-- | tests/test-rollback.t | 124 |
1 files changed, 28 insertions, 96 deletions
diff --git a/tests/test-rollback.t b/tests/test-rollback.t index 305555b..889e350 100644 --- a/tests/test-rollback.t +++ b/tests/test-rollback.t @@ -1,9 +1,9 @@ -setup repo + $ hg init t $ cd t $ echo a > a - $ hg commit -Am'add a' - adding a + $ hg add a + $ hg commit -m "test" $ hg verify checking changesets checking manifests @@ -11,14 +11,12 @@ setup repo checking files 1 files, 1 changesets, 1 total revisions $ hg parents - changeset: 0:1f0dee641bb7 + changeset: 0:acb14030fe0a tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 - summary: add a + summary: test - -rollback to null revision $ hg status $ hg rollback repository tip rolled back to revision -1 (undo commit) @@ -33,68 +31,36 @@ rollback to null revision $ hg status A a -Two changesets this time so we rollback to a real changeset - $ hg commit -m'add a again' - $ echo a >> a - $ hg commit -m'modify a' +Test issue 902 -Test issue 902 (current branch is preserved) + $ hg commit -m "test2" $ hg branch test marked working directory as branch test - (branches are permanent and global, did you want a bookmark?) $ hg rollback - repository tip rolled back to revision 0 (undo commit) - working directory now based on revision 0 + repository tip rolled back to revision -1 (undo commit) + working directory now based on revision -1 $ hg branch default Test issue 1635 (commit message saved) +.hg/last-message.txt: + $ cat .hg/last-message.txt ; echo - modify a + test2 Test rollback of hg before issue 902 was fixed $ hg commit -m "test3" $ hg branch test marked working directory as branch test - (branches are permanent and global, did you want a bookmark?) $ rm .hg/undo.branch $ hg rollback - repository tip rolled back to revision 0 (undo commit) - named branch could not be reset: current branch is still 'test' - working directory now based on revision 0 + repository tip rolled back to revision -1 (undo commit) + named branch could not be reset, current branch is still: test + working directory now based on revision -1 $ hg branch test -working dir unaffected by rollback: do not restore dirstate et. al. - $ hg log --template '{rev} {branch} {desc|firstline}\n' - 0 default add a again - $ hg status - M a - $ hg bookmark foo - $ hg commit -m'modify a again' - $ echo b > b - $ hg commit -Am'add b' - adding b - $ hg log --template '{rev} {branch} {desc|firstline}\n' - 2 test add b - 1 test modify a again - 0 default add a again - $ hg update default - 1 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg bookmark bar - $ cat .hg/undo.branch ; echo - test - $ hg rollback -f - repository tip rolled back to revision 1 (undo commit) - $ hg id -n - 0 - $ hg branch - default - $ cat .hg/bookmarks.current ; echo - bar - $ hg bookmark --delete foo - rollback by pretxncommit saves commit message (issue 1635) $ echo a >> a @@ -103,15 +69,20 @@ rollback by pretxncommit saves commit message (issue 1635) rollback completed abort: pretxncommit hook exited with status * (glob) [255] + +.hg/last-message.txt: + $ cat .hg/last-message.txt ; echo precious commit message same thing, but run $EDITOR - $ cat > editor.sh << '__EOF__' + $ cat > editor << '__EOF__' + > #!/bin/sh > echo "another precious commit message" > "$1" > __EOF__ - $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg --config hooks.pretxncommit=false commit 2>&1 + $ chmod +x editor + $ HGEDITOR="'`pwd`'"/editor hg --config hooks.pretxncommit=false commit 2>&1 transaction abort! rollback completed note: commit message saved in .hg/last-message.txt @@ -122,7 +93,6 @@ same thing, but run $EDITOR test rollback on served repository -#if serve $ hg commit -m "precious commit message" $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log $ cat hg.pid >> $DAEMON_PIDS @@ -132,56 +102,18 @@ test rollback on served repository adding changesets adding manifests adding file changes - added 3 changesets with 2 changes to 1 files (+1 heads) - updating to branch default + added 1 changesets with 1 changes to 1 files + updating to branch test 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd u $ hg id default - 068774709090 + 1df294f7b1a2 now rollback and observe that 'hg serve' reloads the repository and presents the correct tip changeset: $ hg -R ../t rollback - repository tip rolled back to revision 1 (undo commit) - working directory now based on revision 0 + repository tip rolled back to revision -1 (undo commit) + working directory now based on revision -1 $ hg id default - 791dd2169706 -#endif - -update to older changeset and then refuse rollback, because -that would lose data (issue2998) - $ cd ../t - $ hg -q update - $ rm `hg status -un` - $ template='{rev}:{node|short} [{branch}] {desc|firstline}\n' - $ echo 'valuable new file' > b - $ echo 'valuable modification' >> a - $ hg commit -A -m'a valuable change' - adding b - $ hg update 0 - 1 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg rollback - abort: rollback of last commit while not checked out may lose data - (use -f to force) - [255] - $ hg tip -q - 2:4d9cd3795eea - $ hg rollback -f - repository tip rolled back to revision 1 (undo commit) - $ hg status - $ hg log --removed b # yep, it's gone - -same again, but emulate an old client that doesn't write undo.desc - $ hg -q update - $ echo 'valuable modification redux' >> a - $ hg commit -m'a valuable change redux' - $ rm .hg/undo.desc - $ hg update 0 - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg rollback - rolling back unknown transaction - $ cat a - a - - $ cd .. + 000000000000 |