test-uncommit.t
465 lines
| 11.6 KiB
| text/troff
|
Tads3Lexer
/ tests / test-uncommit.t
Pulkit Goyal
|
r34193 | Test uncommit - set up the config | ||
$ cat >> $HGRCPATH <<EOF | ||||
> [experimental] | ||||
Boris Feld
|
r34867 | > evolution.createmarkers=True | ||
Boris Feld
|
r34868 | > evolution.allowunstable=True | ||
Pulkit Goyal
|
r34193 | > [extensions] | ||
> uncommit = | ||||
> drawdag=$TESTDIR/drawdag.py | ||||
> EOF | ||||
Build up a repo | ||||
$ hg init repo | ||||
$ cd repo | ||||
$ hg bookmark foo | ||||
Help for uncommit | ||||
$ hg help uncommit | ||||
hg uncommit [OPTION]... [FILE]... | ||||
uncommit part or all of a local changeset | ||||
This command undoes the effect of a local commit, returning the affected | ||||
files to their uncommitted state. This means that files modified or | ||||
deleted in the changeset will be left unchanged, and so will remain | ||||
modified in the working directory. | ||||
Martin von Zweigbergk
|
r36991 | If no files are specified, the commit will be pruned, unless --keep is | ||
given. | ||||
Pulkit Goyal
|
r34193 | (use 'hg help -e uncommit' to show help for the uncommit extension) | ||
options ([+] can be repeated): | ||||
Martin von Zweigbergk
|
r41046 | --keep allow an empty commit after uncommiting | ||
Pulkit Goyal
|
r34193 | -I --include PATTERN [+] include names matching the given patterns | ||
-X --exclude PATTERN [+] exclude names matching the given patterns | ||||
(some details hidden, use --verbose to show complete help) | ||||
Uncommit with no commits should fail | ||||
$ hg uncommit | ||||
abort: cannot uncommit null changeset | ||||
Pulkit Goyal
|
r35244 | (no changeset checked out) | ||
Pulkit Goyal
|
r34193 | [255] | ||
Create some commits | ||||
$ touch files | ||||
$ hg add files | ||||
$ for i in a ab abc abcd abcde; do echo $i > files; echo $i > file-$i; hg add file-$i; hg commit -m "added file-$i"; done | ||||
$ ls | ||||
file-a | ||||
file-ab | ||||
file-abc | ||||
file-abcd | ||||
file-abcde | ||||
files | ||||
$ hg log -G -T '{rev}:{node} {desc}' --hidden | ||||
@ 4:6c4fd43ed714e7fcd8adbaa7b16c953c2e985b60 added file-abcde | ||||
| | ||||
o 3:6db330d65db434145c0b59d291853e9a84719b24 added file-abcd | ||||
| | ||||
o 2:abf2df566fc193b3ac34d946e63c1583e4d4732b added file-abc | ||||
| | ||||
o 1:69a232e754b08d568c4899475faf2eb44b857802 added file-ab | ||||
| | ||||
o 0:3004d2d9b50883c1538fc754a3aeb55f1b4084f6 added file-a | ||||
Simple uncommit off the top, also moves bookmark | ||||
$ hg bookmark | ||||
* foo 4:6c4fd43ed714 | ||||
$ hg uncommit | ||||
$ hg status | ||||
M files | ||||
A file-abcde | ||||
$ hg bookmark | ||||
* foo 3:6db330d65db4 | ||||
$ hg log -G -T '{rev}:{node} {desc}' --hidden | ||||
x 4:6c4fd43ed714e7fcd8adbaa7b16c953c2e985b60 added file-abcde | ||||
| | ||||
@ 3:6db330d65db434145c0b59d291853e9a84719b24 added file-abcd | ||||
| | ||||
o 2:abf2df566fc193b3ac34d946e63c1583e4d4732b added file-abc | ||||
| | ||||
o 1:69a232e754b08d568c4899475faf2eb44b857802 added file-ab | ||||
| | ||||
o 0:3004d2d9b50883c1538fc754a3aeb55f1b4084f6 added file-a | ||||
Recommit | ||||
$ hg commit -m 'new change abcde' | ||||
$ hg status | ||||
$ hg heads -T '{rev}:{node} {desc}' | ||||
5:0c07a3ccda771b25f1cb1edbd02e683723344ef1 new change abcde (no-eol) | ||||
Uncommit of non-existent and unchanged files has no effect | ||||
$ hg uncommit nothinghere | ||||
nothing to uncommit | ||||
[1] | ||||
$ hg status | ||||
$ hg uncommit file-abc | ||||
nothing to uncommit | ||||
[1] | ||||
$ hg status | ||||
Try partial uncommit, also moves bookmark | ||||
$ hg bookmark | ||||
* foo 5:0c07a3ccda77 | ||||
$ hg uncommit files | ||||
$ hg status | ||||
M files | ||||
$ hg bookmark | ||||
* foo 6:3727deee06f7 | ||||
$ hg heads -T '{rev}:{node} {desc}' | ||||
6:3727deee06f72f5ffa8db792ee299cf39e3e190b new change abcde (no-eol) | ||||
$ hg log -r . -p -T '{rev}:{node} {desc}' | ||||
6:3727deee06f72f5ffa8db792ee299cf39e3e190b new change abcdediff -r 6db330d65db4 -r 3727deee06f7 file-abcde | ||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/file-abcde Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -0,0 +1,1 @@ | ||||
+abcde | ||||
$ hg log -G -T '{rev}:{node} {desc}' --hidden | ||||
@ 6:3727deee06f72f5ffa8db792ee299cf39e3e190b new change abcde | ||||
| | ||||
| x 5:0c07a3ccda771b25f1cb1edbd02e683723344ef1 new change abcde | ||||
|/ | ||||
| x 4:6c4fd43ed714e7fcd8adbaa7b16c953c2e985b60 added file-abcde | ||||
|/ | ||||
o 3:6db330d65db434145c0b59d291853e9a84719b24 added file-abcd | ||||
| | ||||
o 2:abf2df566fc193b3ac34d946e63c1583e4d4732b added file-abc | ||||
| | ||||
o 1:69a232e754b08d568c4899475faf2eb44b857802 added file-ab | ||||
| | ||||
o 0:3004d2d9b50883c1538fc754a3aeb55f1b4084f6 added file-a | ||||
$ hg commit -m 'update files for abcde' | ||||
Uncommit with dirty state | ||||
$ echo "foo" >> files | ||||
$ cat files | ||||
abcde | ||||
foo | ||||
$ hg status | ||||
M files | ||||
Pulkit Goyal
|
r34285 | $ hg uncommit | ||
abort: uncommitted changes | ||||
[255] | ||||
Pulkit Goyal
|
r34193 | $ hg uncommit files | ||
Martin von Zweigbergk
|
r41911 | note: keeping empty commit | ||
Pulkit Goyal
|
r34193 | $ cat files | ||
abcde | ||||
foo | ||||
Martin von Zweigbergk
|
r36990 | $ hg commit --amend -m "files abcde + foo" | ||
Pulkit Goyal
|
r34193 | |||
Pulkit Goyal
|
r34286 | Testing the 'experimental.uncommitondirtywdir' config | ||
$ echo "bar" >> files | ||||
$ hg uncommit | ||||
abort: uncommitted changes | ||||
[255] | ||||
$ hg uncommit --config experimental.uncommitondirtywdir=True | ||||
$ hg commit -m "files abcde + foo" | ||||
Pulkit Goyal
|
r34193 | Uncommit in the middle of a stack, does not move bookmark | ||
$ hg checkout '.^^^' | ||||
1 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
(leaving bookmark foo) | ||||
$ hg log -r . -p -T '{rev}:{node} {desc}' | ||||
2:abf2df566fc193b3ac34d946e63c1583e4d4732b added file-abcdiff -r 69a232e754b0 -r abf2df566fc1 file-abc | ||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/file-abc Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -0,0 +1,1 @@ | ||||
+abc | ||||
diff -r 69a232e754b0 -r abf2df566fc1 files | ||||
--- a/files Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/files Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -1,1 +1,1 @@ | ||||
-ab | ||||
+abc | ||||
$ hg bookmark | ||||
Martin von Zweigbergk
|
r36990 | foo 10:48e5bd7cd583 | ||
Pulkit Goyal
|
r34193 | $ hg uncommit | ||
Martin von Zweigbergk
|
r35727 | 3 new orphan changesets | ||
Pulkit Goyal
|
r34193 | $ hg status | ||
M files | ||||
A file-abc | ||||
$ hg heads -T '{rev}:{node} {desc}' | ||||
Martin von Zweigbergk
|
r36990 | 10:48e5bd7cd583eb24164ef8b89185819c84c96ed7 files abcde + foo (no-eol) | ||
Pulkit Goyal
|
r34193 | $ hg bookmark | ||
Martin von Zweigbergk
|
r36990 | foo 10:48e5bd7cd583 | ||
Pulkit Goyal
|
r34193 | $ hg commit -m 'new abc' | ||
created new head | ||||
Partial uncommit in the middle, does not move bookmark | ||||
$ hg checkout '.^' | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg log -r . -p -T '{rev}:{node} {desc}' | ||||
1:69a232e754b08d568c4899475faf2eb44b857802 added file-abdiff -r 3004d2d9b508 -r 69a232e754b0 file-ab | ||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/file-ab Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -0,0 +1,1 @@ | ||||
+ab | ||||
diff -r 3004d2d9b508 -r 69a232e754b0 files | ||||
--- a/files Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/files Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -1,1 +1,1 @@ | ||||
-a | ||||
+ab | ||||
$ hg bookmark | ||||
Martin von Zweigbergk
|
r36990 | foo 10:48e5bd7cd583 | ||
Pulkit Goyal
|
r34193 | $ hg uncommit file-ab | ||
Martin von Zweigbergk
|
r35727 | 1 new orphan changesets | ||
Pulkit Goyal
|
r34193 | $ hg status | ||
A file-ab | ||||
$ hg heads -T '{rev}:{node} {desc}\n' | ||||
Martin von Zweigbergk
|
r36990 | 12:8eb87968f2edb7f27f27fe676316e179de65fff6 added file-ab | ||
11:5dc89ca4486f8a88716c5797fa9f498d13d7c2e1 new abc | ||||
10:48e5bd7cd583eb24164ef8b89185819c84c96ed7 files abcde + foo | ||||
Pulkit Goyal
|
r34193 | |||
$ hg bookmark | ||||
Martin von Zweigbergk
|
r36990 | foo 10:48e5bd7cd583 | ||
Pulkit Goyal
|
r34193 | $ hg commit -m 'update ab' | ||
$ hg status | ||||
$ hg heads -T '{rev}:{node} {desc}\n' | ||||
Martin von Zweigbergk
|
r36990 | 13:f21039c59242b085491bb58f591afc4ed1c04c09 update ab | ||
11:5dc89ca4486f8a88716c5797fa9f498d13d7c2e1 new abc | ||||
10:48e5bd7cd583eb24164ef8b89185819c84c96ed7 files abcde + foo | ||||
Pulkit Goyal
|
r34193 | |||
$ hg log -G -T '{rev}:{node} {desc}' --hidden | ||||
Martin von Zweigbergk
|
r36990 | @ 13:f21039c59242b085491bb58f591afc4ed1c04c09 update ab | ||
Pulkit Goyal
|
r34193 | | | ||
Martin von Zweigbergk
|
r36990 | o 12:8eb87968f2edb7f27f27fe676316e179de65fff6 added file-ab | ||
Pulkit Goyal
|
r34193 | | | ||
Martin von Zweigbergk
|
r36990 | | * 11:5dc89ca4486f8a88716c5797fa9f498d13d7c2e1 new abc | ||
Pulkit Goyal
|
r34193 | | | | ||
Martin von Zweigbergk
|
r36990 | | | * 10:48e5bd7cd583eb24164ef8b89185819c84c96ed7 files abcde + foo | ||
Pulkit Goyal
|
r34193 | | | | | ||
Martin von Zweigbergk
|
r36990 | | | | x 9:8a6b58c173ca6a2e3745d8bd86698718d664bc6c files abcde + foo | ||
| | |/ | ||||
| | | x 8:39ad452c7f684a55d161c574340c5766c4569278 update files for abcde | ||||
Pulkit Goyal
|
r34286 | | | |/ | ||
Pulkit Goyal
|
r34193 | | | | x 7:0977fa602c2fd7d8427ed4e7ee15ea13b84c9173 update files for abcde | ||
| | |/ | ||||
r35524 | | | * 6:3727deee06f72f5ffa8db792ee299cf39e3e190b new change abcde | |||
Pulkit Goyal
|
r34193 | | | | | ||
| | | x 5:0c07a3ccda771b25f1cb1edbd02e683723344ef1 new change abcde | ||||
| | |/ | ||||
| | | x 4:6c4fd43ed714e7fcd8adbaa7b16c953c2e985b60 added file-abcde | ||||
| | |/ | ||||
r35524 | | | * 3:6db330d65db434145c0b59d291853e9a84719b24 added file-abcd | |||
Pulkit Goyal
|
r34193 | | | | | ||
| | x 2:abf2df566fc193b3ac34d946e63c1583e4d4732b added file-abc | ||||
| |/ | ||||
| x 1:69a232e754b08d568c4899475faf2eb44b857802 added file-ab | ||||
|/ | ||||
o 0:3004d2d9b50883c1538fc754a3aeb55f1b4084f6 added file-a | ||||
Uncommit with draft parent | ||||
$ hg uncommit | ||||
$ hg phase -r . | ||||
Martin von Zweigbergk
|
r36990 | 12: draft | ||
Pulkit Goyal
|
r34193 | $ hg commit -m 'update ab again' | ||
Martin von Zweigbergk
|
r38441 | Phase is preserved | ||
$ hg uncommit --keep --config phases.new-commit=secret | ||||
Martin von Zweigbergk
|
r41911 | note: keeping empty commit | ||
Martin von Zweigbergk
|
r38441 | $ hg phase -r . | ||
15: draft | ||||
$ hg commit --amend -m 'update ab again' | ||||
Pulkit Goyal
|
r34193 | Uncommit with public parent | ||
$ hg phase -p "::.^" | ||||
$ hg uncommit | ||||
$ hg phase -r . | ||||
Martin von Zweigbergk
|
r36990 | 12: public | ||
Pulkit Goyal
|
r34193 | |||
Partial uncommit with public parent | ||||
$ echo xyz > xyz | ||||
$ hg add xyz | ||||
$ hg commit -m "update ab and add xyz" | ||||
$ hg uncommit xyz | ||||
$ hg status | ||||
A xyz | ||||
$ hg phase -r . | ||||
Martin von Zweigbergk
|
r38441 | 18: draft | ||
Pulkit Goyal
|
r34193 | $ hg phase -r ".^" | ||
Martin von Zweigbergk
|
r36990 | 12: public | ||
Pulkit Goyal
|
r34193 | |||
Martin von Zweigbergk
|
r41916 | Uncommit with --keep or experimental.uncommit.keep leaves an empty changeset | ||
Pulkit Goyal
|
r34193 | |||
$ cd $TESTTMP | ||||
$ hg init repo1 | ||||
$ cd repo1 | ||||
$ hg debugdrawdag <<'EOS' | ||||
> Q | ||||
> | | ||||
> P | ||||
> EOS | ||||
$ hg up Q -q | ||||
Pulkit Goyal
|
r34284 | $ hg uncommit --keep | ||
Martin von Zweigbergk
|
r41911 | note: keeping empty commit | ||
Pulkit Goyal
|
r34193 | $ hg log -G -T '{desc} FILES: {files}' | ||
@ Q FILES: | ||||
| | ||||
| x Q FILES: Q | ||||
|/ | ||||
o P FILES: P | ||||
Martin von Zweigbergk
|
r41916 | $ cat >> .hg/hgrc <<EOF | ||
> [experimental] | ||||
> uncommit.keep=True | ||||
> EOF | ||||
$ hg ci --amend | ||||
$ hg uncommit | ||||
note: keeping empty commit | ||||
$ hg log -G -T '{desc} FILES: {files}' | ||||
@ Q FILES: | ||||
| | ||||
| x Q FILES: Q | ||||
|/ | ||||
o P FILES: P | ||||
Pulkit Goyal
|
r34193 | $ hg status | ||
A Q | ||||
Martin von Zweigbergk
|
r41916 | $ hg ci --amend | ||
$ hg uncommit --no-keep | ||||
$ hg log -G -T '{desc} FILES: {files}' | ||||
x Q FILES: Q | ||||
| | ||||
@ P FILES: P | ||||
$ hg status | ||||
A Q | ||||
Pulkit Goyal
|
r34193 | $ cd .. | ||
$ rm -rf repo1 | ||||
Testing uncommit while merge | ||||
$ hg init repo2 | ||||
$ cd repo2 | ||||
Create some history | ||||
$ touch a | ||||
$ hg add a | ||||
$ for i in 1 2 3; do echo $i > a; hg commit -m "a $i"; done | ||||
$ hg checkout 0 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ touch b | ||||
$ hg add b | ||||
$ for i in 1 2 3; do echo $i > b; hg commit -m "b $i"; done | ||||
created new head | ||||
$ hg log -G -T '{rev}:{node} {desc}' --hidden | ||||
@ 5:2cd56cdde163ded2fbb16ba2f918c96046ab0bf2 b 3 | ||||
| | ||||
o 4:c3a0d5bb3b15834ffd2ef9ef603e93ec65cf2037 b 2 | ||||
| | ||||
o 3:49bb009ca26078726b8870f1edb29fae8f7618f5 b 1 | ||||
| | ||||
| o 2:990982b7384266e691f1bc08ca36177adcd1c8a9 a 3 | ||||
| | | ||||
| o 1:24d38e3cf160c7b6f5ffe82179332229886a6d34 a 2 | ||||
|/ | ||||
o 0:ea4e33293d4d274a2ba73150733c2612231f398c a 1 | ||||
Add and expect uncommit to fail on both merge working dir and merge changeset | ||||
$ hg merge 2 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg uncommit | ||||
Pulkit Goyal
|
r34285 | abort: outstanding uncommitted merge | ||
Pulkit Goyal
|
r34193 | [255] | ||
Pulkit Goyal
|
r34305 | $ hg uncommit --config experimental.uncommitondirtywdir=True | ||
abort: cannot uncommit while merging | ||||
[255] | ||||
Pulkit Goyal
|
r34193 | $ hg status | ||
M a | ||||
$ hg commit -m 'merge a and b' | ||||
$ hg uncommit | ||||
abort: cannot uncommit merge changeset | ||||
[255] | ||||
$ hg status | ||||
$ hg log -G -T '{rev}:{node} {desc}' --hidden | ||||
@ 6:c03b9c37bc67bf504d4912061cfb527b47a63c6e merge a and b | ||||
|\ | ||||
| o 5:2cd56cdde163ded2fbb16ba2f918c96046ab0bf2 b 3 | ||||
| | | ||||
| o 4:c3a0d5bb3b15834ffd2ef9ef603e93ec65cf2037 b 2 | ||||
| | | ||||
| o 3:49bb009ca26078726b8870f1edb29fae8f7618f5 b 1 | ||||
| | | ||||
o | 2:990982b7384266e691f1bc08ca36177adcd1c8a9 a 3 | ||||
| | | ||||
o | 1:24d38e3cf160c7b6f5ffe82179332229886a6d34 a 2 | ||||
|/ | ||||
o 0:ea4e33293d4d274a2ba73150733c2612231f398c a 1 | ||||
Martin von Zweigbergk
|
r41369 | |||
Rename a->b, then remove b in working copy. Result should remove a. | ||||
$ hg co -q 0 | ||||
$ hg mv a b | ||||
$ hg ci -qm 'move a to b' | ||||
$ hg rm b | ||||
$ hg uncommit --config experimental.uncommitondirtywdir=True | ||||
$ hg st --copies | ||||
R a | ||||
$ hg revert a | ||||
Rename a->b, then rename b->c in working copy. Result should rename a->c. | ||||
$ hg co -q 0 | ||||
$ hg mv a b | ||||
$ hg ci -qm 'move a to b' | ||||
$ hg mv b c | ||||
$ hg uncommit --config experimental.uncommitondirtywdir=True | ||||
$ hg st --copies | ||||
A c | ||||
a | ||||
R a | ||||
$ hg revert a | ||||
$ hg forget c | ||||
$ rm c | ||||
Copy a->b1 and a->b2, then rename b1->c in working copy. Result should copy a->b2 and a->c. | ||||
$ hg co -q 0 | ||||
$ hg cp a b1 | ||||
$ hg cp a b2 | ||||
$ hg ci -qm 'move a to b1 and b2' | ||||
$ hg mv b1 c | ||||
$ hg uncommit --config experimental.uncommitondirtywdir=True | ||||
$ hg st --copies | ||||
A b2 | ||||
a | ||||
A c | ||||
a | ||||