summaryrefslogtreecommitdiff
path: root/tests/test-rollback.t
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-rollback.t')
-rw-r--r--tests/test-rollback.t124
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