##// END OF EJS Templates
partial-merge: add support for `.args` config (`$local` etc.)...
partial-merge: add support for `.args` config (`$local` etc.) It will be useful to be able to define custom command-line arguments per partial merge tool just like we have for regular merge tools. In particular, I expect the same binary to handle multiple languages, so it will be useful to be able to pass some argument indicating the language, or perhaps simply an argument defining a regex that's used for finding lines to merge as a sorted set. Differential Revision: https://phab.mercurial-scm.org/D12383

File last commit:

r49836:9120c0cd stable
r49839:9dfbea54 default
Show More
test-unamend.t
447 lines | 8.3 KiB | text/troff | Tads3Lexer
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 Test for command `hg unamend` which lives in uncommit extension
===============================================================
$ cat >> $HGRCPATH << EOF
> [alias]
> glog = log -G -T '{rev}:{node|short} {desc}'
> [experimental]
> evolution = createmarkers, allowunstable
Martin von Zweigbergk
rewriteutil: check for divergence...
r47784 > evolution.allowdivergence = true
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 > [extensions]
> rebase =
> amend =
> uncommit =
> EOF
Repo Setup
$ hg init repo
$ cd repo
Pulkit Goyal
tests: removes bashism from test-unamend.t...
r35196 $ for ch in a b c d e f g h; do touch $ch; echo "foo" >> $ch; hg ci -Aqm "Added "$ch; done
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177
$ hg glog
@ 7:ec2426147f0e Added h
|
o 6:87d6d6676308 Added g
|
o 5:825660c69f0c Added f
|
o 4:aa98ab95a928 Added e
|
o 3:62615734edd5 Added d
|
o 2:28ad74487de9 Added c
|
o 1:29becc82797a Added b
|
o 0:18d04c59bb5d Added a
Trying to unamend when there was no amend done
$ hg unamend
abort: changeset must have one predecessor, found 0 predecessors
Martin von Zweigbergk
errors: use InputError in uncommit extension...
r47192 [10]
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177
Unamend on clean wdir and tip
$ echo "bar" >> h
$ hg amend
$ hg exp
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID c9fa1a715c1b7661c0fafb362a9f30bd75878d7d
# Parent 87d6d66763085b629e6d7ed56778c79827273022
Added h
diff -r 87d6d6676308 -r c9fa1a715c1b h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/h Thu Jan 01 00:00:00 1970 +0000
@@ -0,0 +1,2 @@
+foo
+bar
$ hg glog --hidden
@ 8:c9fa1a715c1b Added h
|
| x 7:ec2426147f0e Added h
|/
o 6:87d6d6676308 Added g
|
o 5:825660c69f0c Added f
|
o 4:aa98ab95a928 Added e
|
o 3:62615734edd5 Added d
|
o 2:28ad74487de9 Added c
|
o 1:29becc82797a Added b
|
o 0:18d04c59bb5d Added a
$ hg unamend
$ hg glog --hidden
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 @ 9:46d02d47eec6 Added h
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 |
| x 8:c9fa1a715c1b Added h
|/
| x 7:ec2426147f0e Added h
|/
o 6:87d6d6676308 Added g
|
o 5:825660c69f0c Added f
|
o 4:aa98ab95a928 Added e
|
o 3:62615734edd5 Added d
|
o 2:28ad74487de9 Added c
|
o 1:29becc82797a Added b
|
o 0:18d04c59bb5d Added a
$ hg diff
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 diff -r 46d02d47eec6 h
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 --- a/h Thu Jan 01 00:00:00 1970 +0000
+++ b/h Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +1,2 @@
foo
+bar
$ hg exp
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 # Node ID 46d02d47eec6ca096b8dcab3f8f5579c40c3dd9a
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 # Parent 87d6d66763085b629e6d7ed56778c79827273022
Added h
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 diff -r 87d6d6676308 -r 46d02d47eec6 h
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/h Thu Jan 01 00:00:00 1970 +0000
@@ -0,0 +1,1 @@
+foo
$ hg status
M h
$ hg log -r . -T '{extras % "{extra}\n"}' --config alias.log=log
branch=default
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 unamend_source=c9fa1a715c1b7661c0fafb362a9f30bd75878d7d
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177
Using unamend to undo an unamed (intentional)
$ hg unamend
$ hg exp
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 # Node ID 850ddfc1bc662997ec6094ada958f01f0cc8070a
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 # Parent 87d6d66763085b629e6d7ed56778c79827273022
Added h
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 diff -r 87d6d6676308 -r 850ddfc1bc66 h
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/h Thu Jan 01 00:00:00 1970 +0000
@@ -0,0 +1,2 @@
+foo
+bar
$ hg diff
Unamend on a dirty working directory
$ echo "bar" >> a
$ hg amend
$ echo "foobar" >> a
$ echo "bar" >> b
$ hg status
M a
M b
$ hg unamend
$ hg status
M a
M b
$ hg diff
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 diff -r ec338db45d51 a
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 --- a/a Thu Jan 01 00:00:00 1970 +0000
+++ b/a Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +1,3 @@
foo
+bar
+foobar
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 diff -r ec338db45d51 b
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 --- a/b Thu Jan 01 00:00:00 1970 +0000
+++ b/b Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +1,2 @@
foo
+bar
Unamending an added file
$ hg ci -m "Added things to a and b"
$ echo foo > bar
$ hg add bar
$ hg amend
$ hg unamend
$ hg status
A bar
$ hg revert --all
forgetting bar
Unamending a removed file
$ hg remove a
$ hg amend
$ hg unamend
$ hg status
R a
? bar
$ hg revert --all
undeleting a
Unamending an added file with dirty wdir status
$ hg add bar
$ hg amend
$ echo bar >> bar
$ hg status
M bar
$ hg unamend
$ hg status
A bar
$ hg diff
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 diff -r 7f79409af972 bar
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bar Thu Jan 01 00:00:00 1970 +0000
@@ -0,0 +1,2 @@
+foo
+bar
$ hg revert --all
forgetting bar
Martin von Zweigbergk
tests: clean up after each test in test-unamend.t...
r41368 $ rm bar
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177
Unamending in middle of a stack
$ hg glog
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 @ 19:7f79409af972 Added things to a and b
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 |
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 o 12:ec338db45d51 Added h
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 |
o 6:87d6d6676308 Added g
|
o 5:825660c69f0c Added f
|
o 4:aa98ab95a928 Added e
|
o 3:62615734edd5 Added d
|
o 2:28ad74487de9 Added c
|
o 1:29becc82797a Added b
|
o 0:18d04c59bb5d Added a
$ hg up 5
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ echo bar >> f
$ hg amend
Martin von Zweigbergk
evolution: report new unstable changesets...
r35727 3 new orphan changesets
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 $ hg rebase -s 6 -d . -q
$ hg glog
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 o 23:03ddd6fc5af1 Added things to a and b
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 |
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 o 22:3e7b64ee157b Added h
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 |
o 21:49635b68477e Added g
|
@ 20:93f0e8ffab32 Added f
|
o 4:aa98ab95a928 Added e
|
o 3:62615734edd5 Added d
|
o 2:28ad74487de9 Added c
|
o 1:29becc82797a Added b
|
o 0:18d04c59bb5d Added a
Martin von Zweigbergk
unamend: allow unamending if allowunstable is set...
r35451 $ hg --config experimental.evolution=createmarkers unamend
Martin von Zweigbergk
rewriteutil: say how many commits would become orphan if commit is rewritten...
r47836 abort: cannot unamend changeset, as that will orphan 3 descendants
Martin von Zweigbergk
rewriteutil: point to help about instability when rewriting creates orphan...
r47782 (see 'hg help evolution.instability')
Martin von Zweigbergk
errors: raise more specific errors from rewriteutil...
r46457 [10]
Martin von Zweigbergk
unamend: allow unamending if allowunstable is set...
r35451
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 $ hg unamend
Martin von Zweigbergk
evolution: report new unstable changesets...
r35727 3 new orphan changesets
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177
Trying to unamend a public changeset
Martin von Zweigbergk
unamend: allow unamending if allowunstable is set...
r35451 $ hg up -C 23
5 files updated, 0 files merged, 0 files removed, 0 files unresolved
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 $ hg phase -r . -p
Martin von Zweigbergk
evolution: report new unstable changesets...
r35727 1 new phase-divergent changesets
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 $ hg unamend
Martin von Zweigbergk
rewriteutil: give examples of public changesets that can't be rewritten...
r47835 abort: cannot unamend public changesets: 03ddd6fc5af1
Martin von Zweigbergk
unamend: allow unamending if allowunstable is set...
r35451 (see 'hg help phases' for details)
Martin von Zweigbergk
errors: raise more specific errors from rewriteutil...
r46457 [10]
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177
Testing whether unamend retains copies or not
$ hg status
$ hg mv a foo
$ hg ci -m "Moved a to foo"
$ hg exp --git
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 # Node ID cfef290346fbee5126313d7e1aab51d877679b09
# Parent 03ddd6fc5af19e028c44a2fd6d790dd22712f231
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 Moved a to foo
diff --git a/a b/foo
rename from a
rename to foo
$ hg mv b foobar
$ hg diff --git
diff --git a/b b/foobar
rename from b
rename to foobar
$ hg amend
$ hg exp --git
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 # Node ID eca050985275bb271ce3092b54e56ea5c85d29a3
# Parent 03ddd6fc5af19e028c44a2fd6d790dd22712f231
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 Moved a to foo
diff --git a/a b/foo
rename from a
rename to foo
diff --git a/b b/foobar
rename from b
rename to foobar
$ hg mv c wat
$ hg unamend
Matt Harbison
verify: avoid spurious integrity warnings in verbose mode (issue6172)...
r44572 $ hg verify -v
repository uses revlog format 1
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
checked 28 changesets with 16 changes to 11 files
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 Retained copies in new prdecessor commit
$ hg exp --git
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
Pulkit Goyal
unamend: drop unused vars, query after taking lock, use ctx.hex() for extras...
r35201 # Node ID 552e3af4f01f620f88ca27be1f898316235b736a
# Parent 03ddd6fc5af19e028c44a2fd6d790dd22712f231
Pulkit Goyal
unamend: move fb extension unamend to core...
r35177 Moved a to foo
diff --git a/a b/foo
rename from a
rename to foo
Retained copies in working directoy
$ hg diff --git
diff --git a/b b/foobar
rename from b
rename to foobar
diff --git a/c b/wat
rename from c
rename to wat
Martin von Zweigbergk
tests: clean up after each test in test-unamend.t...
r41368 $ hg revert -qa
$ rm foobar wat
Martin von Zweigbergk
tests: add more tests of uncommit/unamend with copies...
r41369
Rename a->b, then amend b->c. After unamend, should look like b->c.
$ hg co -q 0
$ hg mv a b
$ hg ci -qm 'move to a b'
$ hg mv b c
$ hg amend
$ hg unamend
$ hg st --copies --change .
A b
a
R a
$ hg st --copies
A c
Martin von Zweigbergk
unamend: fix unamending of renamed rename...
r41372 b
Martin von Zweigbergk
tests: add more tests of uncommit/unamend with copies...
r41369 R b
$ hg revert -qa
$ rm c
Rename a->b, then amend b->c, and working copy change c->d. After unamend, should look like b->d
$ hg co -q 0
$ hg mv a b
$ hg ci -qm 'move to a b'
Dan Villiom Podlaski Christiansen
commit: warn the user when a commit already exists...
r46414 warning: commit already existed in the repository!
Martin von Zweigbergk
tests: add more tests of uncommit/unamend with copies...
r41369 $ hg mv b c
$ hg amend
Dan Villiom Podlaski Christiansen
commit: warn the user when a commit already exists...
r46414 warning: commit already existed in the repository!
Martin von Zweigbergk
tests: add more tests of uncommit/unamend with copies...
r41369 $ hg mv c d
$ hg unamend
$ hg st --copies --change .
A b
a
R a
$ hg st --copies
A d
Martin von Zweigbergk
unamend: fix unamending of renamed rename...
r41372 b
Martin von Zweigbergk
tests: add more tests of uncommit/unamend with copies...
r41369 R b
Martin von Zweigbergk
tests: demonstrate how `hg unamend` fails on merge commits...
r49516
Try to unamend a merge
$ cd ..
$ hg init merge
$ cd merge
$ echo initial > initial
$ hg ci -Aqm initial
$ echo left > left
$ hg ci -Aqm left
$ hg co -q 0
$ echo right > right
$ hg ci -Aqm right
$ hg merge -q 1
$ hg ci -m merge
$ echo accidental > initial
$ hg st --rev 1 --rev .
A right
$ hg st --rev 2 --rev .
A left
$ hg amend
$ hg unamend
Martin von Zweigbergk
unamend: error out when running on merge commit...
r49517 abort: cannot unamend merge changeset
[10]