test-backout.t
585 lines
| 11.9 KiB
| text/troff
|
Tads3Lexer
/ tests / test-backout.t
Martin Geisler
|
r11856 | $ hg init basic | ||
$ cd basic | ||||
Matt Mackall
|
r12328 | should complain | ||
Martin Geisler
|
r11856 | |||
$ hg backout | ||||
abort: please specify a revision to backout | ||||
Matt Mackall
|
r12316 | [255] | ||
Martin Geisler
|
r11856 | $ hg backout -r 0 0 | ||
abort: please specify just one revision | ||||
Matt Mackall
|
r12316 | [255] | ||
Martin Geisler
|
r11856 | |||
Matt Mackall
|
r12328 | basic operation | ||
FUJIWARA Katsunori
|
r21413 | (this also tests that editor is invoked if the commit message is not | ||
specified explicitly) | ||||
Martin Geisler
|
r11856 | |||
$ echo a > a | ||||
$ hg commit -d '0 0' -A -m a | ||||
adding a | ||||
$ echo b >> a | ||||
$ hg commit -d '1 0' -m b | ||||
FUJIWARA Katsunori
|
r21413 | $ hg status --rev tip --rev "tip^1" | ||
M a | ||||
$ HGEDITOR=cat hg backout -d '2 0' tip --tool=true | ||||
Martin Geisler
|
r11856 | reverting a | ||
FUJIWARA Katsunori
|
r21413 | Backed out changeset a820f4f40a57 | ||
HG: Enter commit message. Lines beginning with 'HG:' are removed. | ||||
HG: Leave message empty to abort commit. | ||||
HG: -- | ||||
HG: user: test | ||||
HG: branch 'default' | ||||
HG: changed a | ||||
Martin Geisler
|
r11856 | changeset 2:2929462c3dff backs out changeset 1:a820f4f40a57 | ||
$ cat a | ||||
a | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 2:2929462c3dff tip | ||||
Backed out changeset a820f4f40a57 | ||||
branch: default | ||||
commit: (clean) | ||||
update: (current) | ||||
Martin Geisler
|
r11856 | |||
Mateusz Kwapich
|
r23615 | commit option | ||
$ cd .. | ||||
$ hg init commit | ||||
$ cd commit | ||||
$ echo tomatoes > a | ||||
$ hg add a | ||||
$ hg commit -d '0 0' -m tomatoes | ||||
$ echo chair > b | ||||
$ hg add b | ||||
$ hg commit -d '1 0' -m chair | ||||
$ echo grapes >> a | ||||
$ hg commit -d '2 0' -m grapes | ||||
$ hg backout --commit -d '4 0' 1 --tool=:fail | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
changeset 3:1c2161e97c0a backs out changeset 1:22cb4f70d813 | ||||
$ hg summary | ||||
parent: 3:1c2161e97c0a tip | ||||
Backed out changeset 22cb4f70d813 | ||||
branch: default | ||||
commit: (clean) | ||||
update: (current) | ||||
$ echo ypples > a | ||||
$ hg commit -d '5 0' -m ypples | ||||
$ hg backout --commit -d '6 0' 2 --tool=:fail | ||||
0 files updated, 0 files merged, 0 files removed, 1 files unresolved | ||||
use 'hg resolve' to retry unresolved file merges | ||||
[1] | ||||
$ hg summary | ||||
parent: 4:ed99997b793d tip | ||||
ypples | ||||
branch: default | ||||
commit: 1 unresolved (clean) | ||||
update: (current) | ||||
Matt Mackall
|
r12328 | file that was removed is recreated | ||
FUJIWARA Katsunori
|
r21413 | (this also tests that editor is not invoked if the commit message is | ||
specified explicitly) | ||||
Martin Geisler
|
r11856 | |||
$ cd .. | ||||
$ hg init remove | ||||
$ cd remove | ||||
$ echo content > a | ||||
$ hg commit -d '0 0' -A -m a | ||||
adding a | ||||
$ hg rm a | ||||
$ hg commit -d '1 0' -m b | ||||
FUJIWARA Katsunori
|
r21413 | $ HGEDITOR=cat hg backout -d '2 0' tip --tool=true -m "Backed out changeset 76862dcce372" | ||
Martin Geisler
|
r11856 | adding a | ||
changeset 2:de31bdc76c0d backs out changeset 1:76862dcce372 | ||||
$ cat a | ||||
content | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 2:de31bdc76c0d tip | ||||
Backed out changeset 76862dcce372 | ||||
branch: default | ||||
commit: (clean) | ||||
update: (current) | ||||
Martin Geisler
|
r11856 | |||
Matt Mackall
|
r12328 | backout of backout is as if nothing happened | ||
Martin Geisler
|
r11856 | |||
Steve Borho
|
r12810 | $ hg backout -d '3 0' --merge tip --tool=true | ||
Martin Geisler
|
r11856 | removing a | ||
changeset 3:7f6d0f120113 backs out changeset 2:de31bdc76c0d | ||||
Mads Kiilerich
|
r15515 | $ test -f a | ||
[1] | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 3:7f6d0f120113 tip | ||||
Backed out changeset de31bdc76c0d | ||||
branch: default | ||||
commit: (clean) | ||||
update: (current) | ||||
Martin Geisler
|
r11856 | |||
Matt Mackall
|
r12328 | across branch | ||
Martin Geisler
|
r11856 | |||
$ cd .. | ||||
$ hg init branch | ||||
$ cd branch | ||||
$ echo a > a | ||||
$ hg ci -Am0 | ||||
adding a | ||||
$ echo b > b | ||||
$ hg ci -Am1 | ||||
adding b | ||||
$ hg co -C 0 | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 0:f7b1eb17ad24 | ||||
0 | ||||
branch: default | ||||
commit: (clean) | ||||
update: 1 new changesets (update) | ||||
Martin Geisler
|
r11856 | |||
should fail | ||||
$ hg backout 1 | ||||
Mads Kiilerich
|
r20791 | abort: cannot backout change that is not an ancestor | ||
Matt Mackall
|
r12316 | [255] | ||
Martin Geisler
|
r11856 | $ echo c > c | ||
$ hg ci -Am2 | ||||
adding c | ||||
created new head | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 2:db815d6d32e6 tip | ||||
2 | ||||
branch: default | ||||
commit: (clean) | ||||
update: 1 new changesets, 2 branch heads (merge) | ||||
Martin Geisler
|
r11856 | |||
should fail | ||||
$ hg backout 1 | ||||
Mads Kiilerich
|
r20791 | abort: cannot backout change that is not an ancestor | ||
Matt Mackall
|
r12316 | [255] | ||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 2:db815d6d32e6 tip | ||||
2 | ||||
branch: default | ||||
commit: (clean) | ||||
update: 1 new changesets, 2 branch heads (merge) | ||||
Martin Geisler
|
r11856 | |||
Matt Mackall
|
r12328 | backout with merge | ||
Martin Geisler
|
r11856 | |||
$ cd .. | ||||
$ hg init merge | ||||
$ cd merge | ||||
$ echo line 1 > a | ||||
$ echo line 2 >> a | ||||
$ hg commit -d '0 0' -A -m a | ||||
adding a | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 0:59395513a13a tip | ||||
a | ||||
branch: default | ||||
commit: (clean) | ||||
update: (current) | ||||
Martin Geisler
|
r11856 | |||
remove line 1 | ||||
$ echo line 2 > a | ||||
$ hg commit -d '1 0' -m b | ||||
$ echo line 3 >> a | ||||
$ hg commit -d '2 0' -m c | ||||
Steve Borho
|
r12810 | $ hg backout --merge -d '3 0' 1 --tool=true | ||
Martin Geisler
|
r11856 | reverting a | ||
created new head | ||||
changeset 3:26b8ccb9ad91 backs out changeset 1:5a50a024c182 | ||||
merging with changeset 3:26b8ccb9ad91 | ||||
merging a | ||||
0 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg commit -d '4 0' -m d | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 4:c7df5e0b9c09 tip | ||||
d | ||||
branch: default | ||||
commit: (clean) | ||||
update: (current) | ||||
Martin Geisler
|
r11856 | |||
check line 1 is back | ||||
$ cat a | ||||
line 1 | ||||
line 2 | ||||
line 3 | ||||
Mads Kiilerich
|
r16912 | $ cd .. | ||
Matt Mackall
|
r12328 | backout should not back out subsequent changesets | ||
Martin Geisler
|
r11856 | |||
$ hg init onecs | ||||
$ cd onecs | ||||
$ echo 1 > a | ||||
$ hg commit -d '0 0' -A -m a | ||||
adding a | ||||
$ echo 2 >> a | ||||
$ hg commit -d '1 0' -m b | ||||
$ echo 1 > b | ||||
$ hg commit -d '2 0' -A -m c | ||||
adding b | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 2:882396649954 tip | ||||
c | ||||
branch: default | ||||
commit: (clean) | ||||
update: (current) | ||||
Gilles Moris
|
r12727 | |||
without --merge | ||||
Steve Borho
|
r12810 | $ hg backout -d '3 0' 1 --tool=true | ||
Gilles Moris
|
r12727 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
Pierre-Yves David
|
r20276 | changeset 22bca4c721e5 backed out, don't forget to commit. | ||
Gilles Moris
|
r12727 | $ hg locate b | ||
b | ||||
$ hg update -C tip | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg locate b | ||||
b | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 2:882396649954 tip | ||||
c | ||||
branch: default | ||||
commit: (clean) | ||||
update: (current) | ||||
Gilles Moris
|
r12727 | |||
with --merge | ||||
Steve Borho
|
r12810 | $ hg backout --merge -d '3 0' 1 --tool=true | ||
Gilles Moris
|
r12727 | reverting a | ||
Martin Geisler
|
r11856 | created new head | ||
changeset 3:3202beb76721 backs out changeset 1:22bca4c721e5 | ||||
Gilles Moris
|
r12727 | merging with changeset 3:3202beb76721 | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
Martin Geisler
|
r11856 | $ hg locate b | ||
b | ||||
$ hg update -C tip | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg locate b | ||||
Matt Mackall
|
r12316 | [1] | ||
Martin Geisler
|
r11856 | |||
$ cd .. | ||||
$ hg init m | ||||
$ cd m | ||||
$ echo a > a | ||||
$ hg commit -d '0 0' -A -m a | ||||
adding a | ||||
$ echo b > b | ||||
$ hg commit -d '1 0' -A -m b | ||||
adding b | ||||
$ echo c > c | ||||
$ hg commit -d '2 0' -A -m b | ||||
adding c | ||||
$ hg update 1 | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ echo d > d | ||||
$ hg commit -d '3 0' -A -m c | ||||
adding d | ||||
created new head | ||||
$ hg merge 2 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg commit -d '4 0' -A -m d | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 4:b2f3bb92043e tip | ||||
d | ||||
branch: default | ||||
commit: (clean) | ||||
update: (current) | ||||
Martin Geisler
|
r11856 | |||
Matt Mackall
|
r12328 | backout of merge should fail | ||
Martin Geisler
|
r11856 | |||
$ hg backout 4 | ||||
Matt Mackall
|
r15211 | abort: cannot backout a merge changeset | ||
Matt Mackall
|
r12316 | [255] | ||
Martin Geisler
|
r11856 | |||
Matt Mackall
|
r12328 | backout of merge with bad parent should fail | ||
Martin Geisler
|
r11856 | |||
$ hg backout --parent 0 4 | ||||
abort: cb9a9f314b8b is not a parent of b2f3bb92043e | ||||
Matt Mackall
|
r12316 | [255] | ||
Martin Geisler
|
r11856 | |||
Matt Mackall
|
r12328 | backout of non-merge with parent should fail | ||
Martin Geisler
|
r11856 | |||
$ hg backout --parent 0 3 | ||||
abort: cannot use --parent on non-merge changeset | ||||
Matt Mackall
|
r12316 | [255] | ||
Martin Geisler
|
r11856 | |||
Matt Mackall
|
r12328 | backout with valid parent should be ok | ||
Martin Geisler
|
r11856 | |||
Steve Borho
|
r12810 | $ hg backout -d '5 0' --parent 2 4 --tool=true | ||
Martin Geisler
|
r11856 | removing d | ||
changeset 5:10e5328c8435 backs out changeset 4:b2f3bb92043e | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 5:10e5328c8435 tip | ||||
Backed out changeset b2f3bb92043e | ||||
branch: default | ||||
commit: (clean) | ||||
update: (current) | ||||
Martin Geisler
|
r11856 | |||
$ hg rollback | ||||
Gilles Moris
|
r13446 | repository tip rolled back to revision 4 (undo commit) | ||
working directory now based on revision 4 | ||||
Martin Geisler
|
r11856 | $ hg update -C | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 4:b2f3bb92043e tip | ||||
d | ||||
branch: default | ||||
commit: (clean) | ||||
update: (current) | ||||
Martin Geisler
|
r11856 | |||
Steve Borho
|
r12810 | $ hg backout -d '6 0' --parent 3 4 --tool=true | ||
Martin Geisler
|
r11856 | removing c | ||
changeset 5:033590168430 backs out changeset 4:b2f3bb92043e | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 5:033590168430 tip | ||||
Backed out changeset b2f3bb92043e | ||||
branch: default | ||||
commit: (clean) | ||||
update: (current) | ||||
Martin Geisler
|
r11856 | |||
$ cd .. | ||||
Matt Mackall
|
r12328 | named branches | ||
Martin Geisler
|
r11856 | |||
$ hg init named_branches | ||||
$ cd named_branches | ||||
$ echo default > default | ||||
$ hg ci -d '0 0' -Am default | ||||
adding default | ||||
$ hg branch branch1 | ||||
marked working directory as branch branch1 | ||||
Matt Mackall
|
r15615 | (branches are permanent and global, did you want a bookmark?) | ||
Martin Geisler
|
r11856 | $ echo branch1 > file1 | ||
$ hg ci -d '1 0' -Am file1 | ||||
adding file1 | ||||
$ hg branch branch2 | ||||
marked working directory as branch branch2 | ||||
Matt Mackall
|
r15615 | (branches are permanent and global, did you want a bookmark?) | ||
Martin Geisler
|
r11856 | $ echo branch2 > file2 | ||
$ hg ci -d '2 0' -Am file2 | ||||
adding file2 | ||||
Gilles Moris
|
r12727 | |||
without --merge | ||||
Steve Borho
|
r12810 | $ hg backout -r 1 --tool=true | ||
Pierre-Yves David
|
r20275 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||
Pierre-Yves David
|
r20276 | changeset bf1602f437f3 backed out, don't forget to commit. | ||
Gilles Moris
|
r12727 | $ hg branch | ||
branch2 | ||||
$ hg status -A | ||||
R file1 | ||||
C default | ||||
C file2 | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 2:45bbcd363bf0 tip | ||||
file2 | ||||
branch: branch2 | ||||
commit: 1 removed | ||||
update: (current) | ||||
Gilles Moris
|
r12727 | |||
with --merge | ||||
FUJIWARA Katsunori
|
r21712 | (this also tests that editor is invoked if '--edit' is specified | ||
explicitly regardless of '--message') | ||||
Gilles Moris
|
r12727 | $ hg update -qC | ||
FUJIWARA Katsunori
|
r21712 | $ HGEDITOR=cat hg backout --merge -d '3 0' -r 1 -m 'backout on branch1' --tool=true --edit | ||
Martin Geisler
|
r11856 | removing file1 | ||
FUJIWARA Katsunori
|
r21712 | backout on branch1 | ||
HG: Enter commit message. Lines beginning with 'HG:' are removed. | ||||
HG: Leave message empty to abort commit. | ||||
HG: -- | ||||
HG: user: test | ||||
HG: branch 'branch2' | ||||
HG: removed file1 | ||||
Martin Geisler
|
r11856 | created new head | ||
changeset 3:d4e8f6db59fb backs out changeset 1:bf1602f437f3 | ||||
Gilles Moris
|
r12727 | merging with changeset 3:d4e8f6db59fb | ||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 2:45bbcd363bf0 | ||||
file2 | ||||
parent: 3:d4e8f6db59fb tip | ||||
backout on branch1 | ||||
branch: branch2 | ||||
commit: 1 removed (merge) | ||||
update: (current) | ||||
Gilles Moris
|
r12727 | $ hg update -q -C 2 | ||
Martin Geisler
|
r11856 | |||
on branch2 with branch1 not merged, so file1 should still exist: | ||||
$ hg id | ||||
45bbcd363bf0 (branch2) | ||||
$ hg st -A | ||||
C default | ||||
C file1 | ||||
C file2 | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 2:45bbcd363bf0 | ||||
file2 | ||||
branch: branch2 | ||||
commit: (clean) | ||||
update: 1 new changesets, 2 branch heads (merge) | ||||
Martin Geisler
|
r11856 | |||
on branch2 with branch1 merged, so file1 should be gone: | ||||
$ hg merge | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg ci -d '4 0' -m 'merge backout of branch1' | ||||
$ hg id | ||||
22149cdde76d (branch2) tip | ||||
$ hg st -A | ||||
C default | ||||
C file2 | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 4:22149cdde76d tip | ||||
merge backout of branch1 | ||||
branch: branch2 | ||||
commit: (clean) | ||||
update: (current) | ||||
Martin Geisler
|
r11856 | |||
on branch1, so no file1 and file2: | ||||
$ hg co -C branch1 | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg id | ||||
bf1602f437f3 (branch1) | ||||
$ hg st -A | ||||
C default | ||||
C file1 | ||||
Pierre-Yves David
|
r20270 | $ hg summary | ||
parent: 1:bf1602f437f3 | ||||
file1 | ||||
branch: branch1 | ||||
commit: (clean) | ||||
update: (current) | ||||
Mads Kiilerich
|
r16912 | |||
$ cd .. | ||||
Pierre-Yves David
|
r20594 | |||
Yuya Nishihara
|
r20872 | backout of empty changeset (issue4190) | ||
$ hg init emptycommit | ||||
$ cd emptycommit | ||||
$ touch file1 | ||||
$ hg ci -Aqm file1 | ||||
$ hg branch -q branch1 | ||||
$ hg ci -qm branch1 | ||||
$ hg backout -v 1 | ||||
resolving manifests | ||||
nothing changed | ||||
[1] | ||||
$ cd .. | ||||
Pierre-Yves David
|
r20594 | |||
Test usage of `hg resolve` in case of conflict | ||||
(issue4163) | ||||
$ hg init issue4163 | ||||
$ cd issue4163 | ||||
$ touch foo | ||||
$ hg add foo | ||||
$ cat > foo << EOF | ||||
> one | ||||
> two | ||||
> three | ||||
> four | ||||
> five | ||||
> six | ||||
> seven | ||||
> height | ||||
> nine | ||||
> ten | ||||
> EOF | ||||
$ hg ci -m 'initial' | ||||
$ cat > foo << EOF | ||||
> one | ||||
> two | ||||
> THREE | ||||
> four | ||||
> five | ||||
> six | ||||
> seven | ||||
> height | ||||
> nine | ||||
> ten | ||||
> EOF | ||||
$ hg ci -m 'capital three' | ||||
$ cat > foo << EOF | ||||
> one | ||||
> two | ||||
> THREE | ||||
> four | ||||
> five | ||||
> six | ||||
> seven | ||||
> height | ||||
> nine | ||||
> TEN | ||||
> EOF | ||||
$ hg ci -m 'capital ten' | ||||
$ hg backout -r 'desc("capital three")' --tool internal:fail | ||||
0 files updated, 0 files merged, 0 files removed, 1 files unresolved | ||||
use 'hg resolve' to retry unresolved file merges | ||||
[1] | ||||
$ hg status | ||||
$ hg resolve -l # still unresolved | ||||
U foo | ||||
$ hg summary | ||||
parent: 2:b71750c4b0fd tip | ||||
capital ten | ||||
branch: default | ||||
commit: 1 unresolved (clean) | ||||
update: (current) | ||||
$ hg resolve --all --debug | ||||
picked tool 'internal:merge' for foo (binary False symlink False) | ||||
merging foo | ||||
my foo@b71750c4b0fd+ other foo@a30dd8addae3 ancestor foo@913609522437 | ||||
premerge successful | ||||
Pierre-Yves David
|
r21947 | (no more unresolved files) | ||
Pierre-Yves David
|
r20594 | $ hg status | ||
M foo | ||||
? foo.orig | ||||
$ hg resolve -l | ||||
R foo | ||||
$ hg summary | ||||
parent: 2:b71750c4b0fd tip | ||||
capital ten | ||||
branch: default | ||||
commit: 1 modified, 1 unknown | ||||
update: (current) | ||||
$ cat foo | ||||
one | ||||
two | ||||
three | ||||
four | ||||
five | ||||
six | ||||
seven | ||||
height | ||||
nine | ||||
TEN | ||||