test-rollback.t
198 lines
| 5.3 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 | ||||
Matt Mackall
|
r15615 | (branches are permanent and global, did you want a bookmark?) | ||
Matt Mackall
|
r12485 | $ 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 | ||||
Matt Mackall
|
r15615 | (branches are permanent and global, did you want a bookmark?) | ||
Matt Mackall
|
r12485 | $ 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 | ||||
Pierre-Yves David
|
r25744 | $ hg bookmark bar -r default #making bar active, before the transaction | ||
Greg Ward
|
r15131 | $ 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 | ||||
Pierre-Yves David
|
r25744 | $ hg update bar | ||
Greg Ward
|
r15131 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||
Pierre-Yves David
|
r25744 | (activating bookmark bar) | ||
Greg Ward
|
r15131 | $ 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 | ||||
Pierre-Yves David
|
r25744 | $ hg bookmark --delete foo bar | ||
Greg Ward
|
r15131 | |||
Matt Mackall
|
r22183 | rollback by pretxncommit saves commit message (issue1635) | ||
Matt Mackall
|
r12485 | |||
$ 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
|
r16901 | $ cat > editor.sh << '__EOF__' | ||
Matt Mackall
|
r12485 | > echo "another precious commit message" > "$1" | ||
> __EOF__ | ||||
Mads Kiilerich
|
r16901 | $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" 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 | ||
Adrian Buehlmann
|
r16916 | #if serve | ||
Martin Geisler
|
r13958 | $ 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 | ||
Adrian Buehlmann
|
r16916 | #endif | ||
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 | ||||
Mads Kiilerich
|
r16913 | |||
Matt Mackall
|
r20524 | corrupt journal test | ||
$ echo "foo" > .hg/store/journal | ||||
$ hg recover | ||||
rolling back interrupted transaction | ||||
couldn't read journal entry 'foo\n'! | ||||
checking changesets | ||||
checking manifests | ||||
crosschecking files in changesets and manifests | ||||
checking files | ||||
1 files, 2 changesets, 2 total revisions | ||||