##// END OF EJS Templates
rollback: only restore dirstate and branch when appropriate....
rollback: only restore dirstate and branch when appropriate. If the working dir parent was destroyed by rollback, then the old behaviour is perfectly reasonable: restore dirstate, branch, and bookmarks. That way the working dir moves back to an existing changeset rather than becoming an orphan. But if the working dir parent was unaffected -- say, you updated to an older changeset and then did rollback -- then it's silly to restore dirstate and branch. So don't do that. Leave the status of the working dir alone. (But always restore bookmarks, because that file refers to changeset IDs that may have been destroyed.)

File last commit:

r15131:7c26ce9e default
r15131:7c26ce9e default
Show More
test-rollback.t
148 lines | 3.8 KiB | text/troff | Tads3Lexer
Greg Ward
test-rollback: tinker a bit to make it easier to add more tests.
r15108 setup repo
Martin Geisler
tests: remove redundant mkdir...
r13956 $ hg init t
Matt Mackall
tests: unify test-rollback
r12485 $ cd t
$ echo a > a
Greg Ward
test-rollback: tinker a bit to make it easier to add more tests.
r15108 $ hg commit -Am'add a'
adding a
Matt Mackall
tests: unify test-rollback
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
test-rollback: tinker a bit to make it easier to add more tests.
r15108 changeset: 0:1f0dee641bb7
Matt Mackall
tests: unify test-rollback
r12485 tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
Greg Ward
test-rollback: tinker a bit to make it easier to add more tests.
r15108 summary: add a
Matt Mackall
tests: unify test-rollback
r12485
Greg Ward
test-rollback: tinker a bit to make it easier to add more tests.
r15108
rollback to null revision
Matt Mackall
tests: unify test-rollback
r12485 $ hg status
$ hg rollback
Gilles Moris
rollback: clarifies the message about the reverted state (issue2628)...
r13446 repository tip rolled back to revision -1 (undo commit)
working directory now based on revision -1
Matt Mackall
tests: unify test-rollback
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
test-rollback: tinker a bit to make it easier to add more tests.
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
tests: unify test-rollback
r12485
Greg Ward
test-rollback: tinker a bit to make it easier to add more tests.
r15108 Test issue 902 (current branch is preserved)
Matt Mackall
tests: unify test-rollback
r12485 $ hg branch test
marked working directory as branch test
$ hg rollback
Greg Ward
test-rollback: tinker a bit to make it easier to add more tests.
r15108 repository tip rolled back to revision 0 (undo commit)
working directory now based on revision 0
Matt Mackall
tests: unify test-rollback
r12485 $ hg branch
default
Test issue 1635 (commit message saved)
$ cat .hg/last-message.txt ; echo
Greg Ward
test-rollback: tinker a bit to make it easier to add more tests.
r15108 modify a
Matt Mackall
tests: unify test-rollback
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
test-rollback: tinker a bit to make it easier to add more tests.
r15108 repository tip rolled back to revision 0 (undo commit)
Greg Ward
rollback: refactor for readability; cosmetics....
r15130 named branch could not be reset: current branch is still 'test'
Greg Ward
test-rollback: tinker a bit to make it easier to add more tests.
r15108 working directory now based on revision 0
Matt Mackall
tests: unify test-rollback
r12485 $ hg branch
test
Greg Ward
rollback: only restore dirstate and branch when appropriate....
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
$ hg rollback
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
tests: unify test-rollback
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
tests: clean up test-rollback.t...
r13185
same thing, but run $EDITOR
Mads Kiilerich
tests: remove the last traces of $HGTMP...
r12642 $ cat > editor << '__EOF__'
Matt Mackall
tests: unify test-rollback
r12485 > #!/bin/sh
> echo "another precious commit message" > "$1"
> __EOF__
Mads Kiilerich
tests: remove the last traces of $HGTMP...
r12642 $ chmod +x editor
$ HGEDITOR="'`pwd`'"/editor hg --config hooks.pretxncommit=false commit 2>&1
Matt Mackall
tests: unify test-rollback
r12485 transaction abort!
rollback completed
note: commit message saved in .hg/last-message.txt
abort: pretxncommit hook exited with status * (glob)
Mads Kiilerich
tests: remove the last traces of $HGTMP...
r12642 [255]
$ cat .hg/last-message.txt
Matt Mackall
tests: unify test-rollback
r12485 another precious commit message
Martin Geisler
hgweb: detect change based on changelog size too...
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
rollback: only restore dirstate and branch when appropriate....
r15131 added 3 changesets with 2 changes to 1 files (+1 heads)
Greg Ward
test-rollback: tinker a bit to make it easier to add more tests.
r15108 updating to branch default
Martin Geisler
hgweb: detect change based on changelog size too...
r13958 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd u
$ hg id default
Greg Ward
rollback: only restore dirstate and branch when appropriate....
r15131 068774709090
Martin Geisler
hgweb: detect change based on changelog size too...
r13958
now rollback and observe that 'hg serve' reloads the repository and
presents the correct tip changeset:
$ hg -R ../t rollback
Greg Ward
rollback: only restore dirstate and branch when appropriate....
r15131 repository tip rolled back to revision 1 (undo commit)
Greg Ward
test-rollback: tinker a bit to make it easier to add more tests.
r15108 working directory now based on revision 0
Martin Geisler
hgweb: detect change based on changelog size too...
r13958 $ hg id default
Greg Ward
rollback: only restore dirstate and branch when appropriate....
r15131 791dd2169706