test-rollback.t
183 lines
| 4.8 KiB
| text/troff
|
Tads3Lexer
/ tests / test-rollback.t
Greg Ward
|
r15108 | setup repo | ||
Martin Geisler
|
r13956 | $ hg init t | ||
Matt Mackall
|
r12485 | $ cd t | ||
$ echo a > a | ||||
Greg Ward
|
r15108 | $ hg commit -Am'add a' | ||
adding a | ||||
Matt Mackall
|
r12485 | $ hg verify | ||
checking changesets | ||||
checking manifests | ||||
crosschecking files in changesets and manifests | ||||
checking files | ||||
1 files, 1 changesets, 1 total revisions | ||||
$ hg parents | ||||
Greg Ward
|
r15108 | changeset: 0:1f0dee641bb7 | ||
Matt Mackall
|
r12485 | tag: tip | ||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
Greg Ward
|
r15108 | summary: add a | ||
Matt Mackall
|
r12485 | |||
Greg Ward
|
r15108 | |||
rollback to null revision | ||||
Matt Mackall
|
r12485 | $ hg status | ||
$ hg rollback | ||||
Gilles Moris
|
r13446 | repository tip rolled back to revision -1 (undo commit) | ||
working directory now based on revision -1 | ||||
Matt Mackall
|
r12485 | $ hg verify | ||
checking changesets | ||||
checking manifests | ||||
crosschecking files in changesets and manifests | ||||
checking files | ||||
0 files, 0 changesets, 0 total revisions | ||||
$ hg parents | ||||
$ hg status | ||||
A a | ||||
Greg Ward
|
r15108 | 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' | ||||
Matt Mackall
|
r12485 | |||
Greg Ward
|
r15108 | Test issue 902 (current branch is preserved) | ||
Matt Mackall
|
r12485 | $ hg branch test | ||
marked working directory as branch test | ||||
$ hg rollback | ||||
Greg Ward
|
r15108 | repository tip rolled back to revision 0 (undo commit) | ||
working directory now based on revision 0 | ||||
Matt Mackall
|
r12485 | $ hg branch | ||
default | ||||
Test issue 1635 (commit message saved) | ||||
$ cat .hg/last-message.txt ; echo | ||||
Greg Ward
|
r15108 | modify a | ||
Matt Mackall
|
r12485 | |||
Test rollback of hg before issue 902 was fixed | ||||
$ hg commit -m "test3" | ||||
$ hg branch test | ||||
marked working directory as branch test | ||||
$ rm .hg/undo.branch | ||||
$ hg rollback | ||||
Greg Ward
|
r15108 | repository tip rolled back to revision 0 (undo commit) | ||
Greg Ward
|
r15130 | named branch could not be reset: current branch is still 'test' | ||
Greg Ward
|
r15108 | working directory now based on revision 0 | ||
Matt Mackall
|
r12485 | $ hg branch | ||
test | ||||
Greg Ward
|
r15131 | 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 | ||||
Greg Ward
|
r15183 | $ hg rollback -f | ||
Greg Ward
|
r15131 | 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 | ||||
Matt Mackall
|
r12485 | rollback by pretxncommit saves commit message (issue 1635) | ||
$ echo a >> a | ||||
$ hg --config hooks.pretxncommit=false commit -m"precious commit message" | ||||
transaction abort! | ||||
rollback completed | ||||
abort: pretxncommit hook exited with status * (glob) | ||||
[255] | ||||
$ cat .hg/last-message.txt ; echo | ||||
precious commit message | ||||
Nicolas Dumazet
|
r13185 | |||
same thing, but run $EDITOR | ||||
Mads Kiilerich
|
r12642 | $ cat > editor << '__EOF__' | ||
Matt Mackall
|
r12485 | > #!/bin/sh | ||
> echo "another precious commit message" > "$1" | ||||
> __EOF__ | ||||
Mads Kiilerich
|
r12642 | $ chmod +x editor | ||
$ HGEDITOR="'`pwd`'"/editor hg --config hooks.pretxncommit=false commit 2>&1 | ||||
Matt Mackall
|
r12485 | transaction abort! | ||
rollback completed | ||||
note: commit message saved in .hg/last-message.txt | ||||
abort: pretxncommit hook exited with status * (glob) | ||||
Mads Kiilerich
|
r12642 | [255] | ||
$ cat .hg/last-message.txt | ||||
Matt Mackall
|
r12485 | another precious commit message | ||
Martin Geisler
|
r13958 | test rollback on served repository | ||
$ 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 | ||||
$ cd .. | ||||
$ hg clone http://localhost:$HGPORT u | ||||
requesting all changes | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
Greg Ward
|
r15131 | added 3 changesets with 2 changes to 1 files (+1 heads) | ||
Greg Ward
|
r15108 | updating to branch default | ||
Martin Geisler
|
r13958 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
$ cd u | ||||
$ hg id default | ||||
Greg Ward
|
r15131 | 068774709090 | ||
Martin Geisler
|
r13958 | |||
now rollback and observe that 'hg serve' reloads the repository and | ||||
presents the correct tip changeset: | ||||
$ hg -R ../t rollback | ||||
Greg Ward
|
r15131 | repository tip rolled back to revision 1 (undo commit) | ||
Greg Ward
|
r15108 | working directory now based on revision 0 | ||
Martin Geisler
|
r13958 | $ hg id default | ||
Greg Ward
|
r15131 | 791dd2169706 | ||
Greg Ward
|
r15183 | |||
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 | ||||
Matt Mackall
|
r15187 | abort: rollback of last commit while not checked out may lose data | ||
(use -f to force) | ||||
Greg Ward
|
r15183 | [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 | ||||