prune: update to the successor of wdir also with --pair/--biject (issue6142)
When prune is used with --pair flag, we can also update to the successor of
working directory parent.
No need to check len(sucs) or len(precs) here because there's a check for that
earlier in the code (it's a requirement of biject).
The tests are now demonstrate the correct behavior: when rev 14 was pruned with
12 as its successor, the bookmark that was on 14 was moved to 12. That bookmark
was also activated (even before this patch).
** Test for the `--patch` flag for `hg amend` command **
Setup
$ cat >> $HGRCPATH << EOF
> [alias]
> glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}"
> [diff]
> git = 1
> [extensions]
> EOF
$ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
Reposetup
$ hg init repo
$ cd repo
$ echo foo > a
$ hg ci -Aqm "added a"
$ hg exp
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID f7ad4196431346de3c33c52e75374fba45e04313
# Parent 0000000000000000000000000000000000000000
added a
diff --git a/a b/a
new file mode 100644
--- /dev/null
+++ b/a
@@ -0,0 +1,1 @@
+foo
Testing of just changing the diff, not the patch metadata
==========================================================
Testing the normal case
-----------------------
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User test
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID f7ad4196431346de3c33c52e75374fba45e04313
> # Parent 0000000000000000000000000000000000000000
> added a
> diff --git a/a b/a
> new file mode 100644
> --- /dev/null
> +++ b/a
> @@ -0,0 +1,1 @@
> +Gello
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
Making sure the amended commit is correct
$ hg exp
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID af624b221c0c0bec5d74e2650180dd3eddcb7c42
# Parent 0000000000000000000000000000000000000000
added a
diff --git a/a b/a
new file mode 100644
--- /dev/null
+++ b/a
@@ -0,0 +1,1 @@
+Gello
$ hg glog
@ 1:af624b221c0c added a
() draft
Obsolsence history is fine
$ hg obslog -p -r .
@ af624b221c0c (1) added a
|
x f7ad41964313 (0) added a
rewritten(content) as af624b221c0c using amend by test (Thu Jan 01 00:00:00 1970 +0000)
diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,1 @@
-foo
+Gello
Diff and status are good too
$ hg diff
$ hg status
? editor.sh
$ cat a
Gello
Dirstate parents should be correctly set
$ hg parents
changeset: 1:af624b221c0c
tag: tip
parent: -1:000000000000
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: added a
Trying to amend with a wrong patch
----------------------------------
Having context which was is not present
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User test
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID c6ba250efbf73e671f2ca24b79db2c178ccbfff9
> # Parent 0000000000000000000000000000000000000000
> added a
> diff --git a/a b/a
> new file mode 100644
> --- /dev/null
> +++ b/a
> @@ -0,0 +1,1 @@
> I was not there before!
> +Gello
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
failed to apply edited patch: bad hunk #1 @@ -0,0 +1,1 @@
(1 0 1 1)
try to fix the patch (yn)? y
abort: patch unchanged
[255]
Having deletions which dont exists
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User test
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID af624b221c0c0bec5d74e2650180dd3eddcb7c42
> # Parent 0000000000000000000000000000000000000000
> added a
> diff --git a/a b/a
> new file mode 100644
> --- /dev/null
> +++ b/a
> @@ -0,0 +1,1 @@
> -I was not deleted before!
> +Gello
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
failed to apply edited patch: bad hunk #1 @@ -0,0 +1,1 @@
(1 0 1 1)
try to fix the patch (yn)? y
abort: patch unchanged
[255]
Changing the file mode using amend --patch
------------------------------------------
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User test
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID af624b221c0c0bec5d74e2650180dd3eddcb7c42
> # Parent 0000000000000000000000000000000000000000
> added a
> diff --git a/a b/a
> new file mode 100755
> --- /dev/null
> +++ b/a
> @@ -0,0 +1,1 @@
> +Gello
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
$ hg exp --git
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID 3a99e4b7ac73da799e20ae56914e3dd5b1a22d4d
# Parent 0000000000000000000000000000000000000000
added a
diff --git a/a b/a
new file mode 100755
--- /dev/null
+++ b/a
@@ -0,0 +1,1 @@
+Gello
Changing the file using amend --patch
-------------------------------------
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User test
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID 3a99e4b7ac73da799e20ae56914e3dd5b1a22d4d
> # Parent 0000000000000000000000000000000000000000
> added a
> diff --git a/changedfile b/changedfile
> new file mode 100755
> --- /dev/null
> +++ b/changedfile
> @@ -0,0 +1,1 @@
> +Gello
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
$ hg exp
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID fc57c20be380f2878f4db139dad66d6cfb42ec62
# Parent 0000000000000000000000000000000000000000
added a
diff --git a/changedfile b/changedfile
new file mode 100755
--- /dev/null
+++ b/changedfile
@@ -0,0 +1,1 @@
+Gello
$ hg status
? editor.sh
$ ls
changedfile
editor.sh
Handling both deletions and additions
-------------------------------------
$ echo foobar > changedfile
$ hg ci -m "foobar to changedfile"
$ hg exp
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID 7969f70ffb81c3a6eee2d4f2f7032b694ce05349
# Parent fc57c20be380f2878f4db139dad66d6cfb42ec62
foobar to changedfile
diff --git a/changedfile b/changedfile
--- a/changedfile
+++ b/changedfile
@@ -1,1 +1,1 @@
-Gello
+foobar
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User test
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID 7969f70ffb81c3a6eee2d4f2f7032b694ce05349
> # Parent fc57c20be380f2878f4db139dad66d6cfb42ec62
> foobar to changedfile
> diff --git a/changedfile b/changedfile
> --- a/changedfile
> +++ b/changedfile
> @@ -1,1 +1,1 @@
> -Gello
> +foobar
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
abort: nothing changed
[255]
Cannot change lines which are deleted
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User test
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID 7969f70ffb81c3a6eee2d4f2f7032b694ce05349
> # Parent fc57c20be380f2878f4db139dad66d6cfb42ec62
> foobar to changedfile
> diff --git a/changedfile b/changedfile
> --- a/changedfile
> +++ b/changedfile
> @@ -1,1 +1,1 @@
> -Hello
> +foobar
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
patching file changedfile
Hunk #1 FAILED at 0
failed to apply edited patch: patch failed to apply
try to fix the patch (yn)? y
abort: patch unchanged
[255]
Add more addition to the patch
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User test
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID 7969f70ffb81c3a6eee2d4f2f7032b694ce05349
> # Parent fc57c20be380f2878f4db139dad66d6cfb42ec62
> foobar to changedfile
> diff --git a/changedfile b/changedfile
> --- a/changedfile
> +++ b/changedfile
> @@ -1,1 +1,2 @@
> -Gello
> +foobar
> +babar
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
$ hg exp
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID 5d54400acb70b88f07128a1df497ed794b0b177b
# Parent fc57c20be380f2878f4db139dad66d6cfb42ec62
foobar to changedfile
diff --git a/changedfile b/changedfile
--- a/changedfile
+++ b/changedfile
@@ -1,1 +1,2 @@
-Gello
+foobar
+babar
$ cat changedfile
foobar
babar
Introduce files which were not there
------------------------------------
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User test
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID 5d54400acb70b88f07128a1df497ed794b0b177b
> # Parent fc57c20be380f2878f4db139dad66d6cfb42ec62
> foobar to changedfile
> diff --git a/changedfile b/changedfile
> --- a/changedfile
> +++ b/changedfile
> @@ -1,1 +1,2 @@
> -Gello
> +foobar
> +babar
> diff --git a/a b/a
> new file mode 100755
> --- /dev/null
> +++ b/a
> @@ -0,0 +1,1 @@
> +Gello
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
$ hg exp
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID c3e29c061982c94418ce141d521434d6da76cd46
# Parent fc57c20be380f2878f4db139dad66d6cfb42ec62
foobar to changedfile
diff --git a/a b/a
new file mode 100755
--- /dev/null
+++ b/a
@@ -0,0 +1,1 @@
+Gello
diff --git a/changedfile b/changedfile
--- a/changedfile
+++ b/changedfile
@@ -1,1 +1,2 @@
-Gello
+foobar
+babar
Delete files which were not deleted in the first place
------------------------------------------------------
$ echo Hello >> a
$ hg ci -m "hello to a"
$ hg glog
@ 7:3d62c45a1699 hello to a
| () draft
o 6:c3e29c061982 foobar to changedfile
| () draft
o 3:fc57c20be380 added a
() draft
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User test
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID 3d62c45a1699b11c7ecae573f013601712f2cc5f
> # Parent c3e29c061982c94418ce141d521434d6da76cd46
> hello to a
> diff --git a/a b/a
> --- a/a
> +++ b/a
> @@ -1,1 +1,2 @@
> Gello
> +Hello
> diff --git a/changedfile b/changedfile
> deleted file mode 100755
> --- a/changedfile
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -foobar
> -babar
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
$ hg exp
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID c9875799c53fb862c0dbaf01500459c9397373a4
# Parent c3e29c061982c94418ce141d521434d6da76cd46
hello to a
diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,2 @@
Gello
+Hello
diff --git a/changedfile b/changedfile
deleted file mode 100755
--- a/changedfile
+++ /dev/null
@@ -1,2 +0,0 @@
-foobar
-babar
$ hg status
? editor.sh
$ cat changedfile
cat: changedfile: No such file or directory
[1]
Testing sercret phase preservation during `hg amend --patch`
------------------------------------------------------------
$ hg phase -r . --secret --force
$ hg phase -r .
8: secret
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User test
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID c9875799c53fb862c0dbaf01500459c9397373a4
> # Parent c3e29c061982c94418ce141d521434d6da76cd46
> hello to a
> diff --git a/a b/a
> --- a/a
> +++ b/a
> @@ -1,1 +1,3 @@
> Gello
> +Hello
> +mello
> diff --git a/changedfile b/changedfile
> deleted file mode 100755
> --- a/changedfile
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -foobar
> -babar
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
$ hg exp
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID 4414485658e719a1f3d5e58bc8b2412385aa1592
# Parent c3e29c061982c94418ce141d521434d6da76cd46
hello to a
diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,3 @@
Gello
+Hello
+mello
diff --git a/changedfile b/changedfile
deleted file mode 100755
--- a/changedfile
+++ /dev/null
@@ -1,2 +0,0 @@
-foobar
-babar
$ hg phase -r .
9: secret
Testing bookmark movement on amend --patch
------------------------------------------
$ hg bookmark foo
$ hg glog
@ 9:4414485658e7 hello to a
| (foo) secret
o 6:c3e29c061982 foobar to changedfile
| () draft
o 3:fc57c20be380 added a
() draft
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User test
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID 4414485658e719a1f3d5e58bc8b2412385aa1592
> # Parent c3e29c061982c94418ce141d521434d6da76cd46
> hello to a
> diff --git a/a b/a
> --- a/a
> +++ b/a
> @@ -1,1 +1,3 @@
> Gello
> +Hello
> +bello
> diff --git a/changedfile b/changedfile
> deleted file mode 100755
> --- a/changedfile
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -foobar
> -babar
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
$ hg exp
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID 36454bda1fdb8e2e4fe07bb084eef378e29cba74
# Parent c3e29c061982c94418ce141d521434d6da76cd46
hello to a
diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,3 @@
Gello
+Hello
+bello
diff --git a/changedfile b/changedfile
deleted file mode 100755
--- a/changedfile
+++ /dev/null
@@ -1,2 +0,0 @@
-foobar
-babar
$ hg glog
@ 10:36454bda1fdb hello to a
| (foo) secret
o 6:c3e29c061982 foobar to changedfile
| () draft
o 3:fc57c20be380 added a
() draft
Trying to amend --patch a public changeset
------------------------------------------
$ hg phase -r . --public
$ hg glog
@ 10:36454bda1fdb hello to a
| (foo) public
o 6:c3e29c061982 foobar to changedfile
| () public
o 3:fc57c20be380 added a
() public
$ HGEDITOR=cat hg amend --patch
abort: cannot amend public changesets: 36454bda1fdb
(see 'hg help phases' for details)
[255]
$ hg phase -r . --draft --force
Trying on a dirty working directory
-------------------------------------
$ echo bar > bar
$ hg add bar
$ HGEDITOR=cat hg amend --patch
abort: uncommitted changes
[255]
$ hg revert --all
forgetting bar
Trying to pass filenames, only mentioned file names should be popped up in
editor and rest should stay in the commit as they were
--------------------------------------------------------------------------
Checking the we pop-up with the files which were mentioned
$ HGEDITOR=cat hg amend --patch changedfile
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID 36454bda1fdb8e2e4fe07bb084eef378e29cba74
# Parent c3e29c061982c94418ce141d521434d6da76cd46
hello to a
diff --git a/changedfile b/changedfile
deleted file mode 100755
--- a/changedfile
+++ /dev/null
@@ -1,2 +0,0 @@
-foobar
-babar
abort: nothing changed
[255]
$ HGEDITOR=cat hg amend --patch a
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID 36454bda1fdb8e2e4fe07bb084eef378e29cba74
# Parent c3e29c061982c94418ce141d521434d6da76cd46
hello to a
diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,3 @@
Gello
+Hello
+bello
abort: nothing changed
[255]
$ HGEDITOR=cat hg amend --patch changedfile a
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID 36454bda1fdb8e2e4fe07bb084eef378e29cba74
# Parent c3e29c061982c94418ce141d521434d6da76cd46
hello to a
diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,3 @@
Gello
+Hello
+bello
diff --git a/changedfile b/changedfile
deleted file mode 100755
--- a/changedfile
+++ /dev/null
@@ -1,2 +0,0 @@
-foobar
-babar
abort: patch unchanged
[255]
$ HGEDITOR=cat hg amend --patch doesnotexists
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID 36454bda1fdb8e2e4fe07bb084eef378e29cba74
# Parent c3e29c061982c94418ce141d521434d6da76cd46
hello to a
abort: nothing changed
[255]
Changing only one file
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User test
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID 36454bda1fdb8e2e4fe07bb084eef378e29cba74
> # Parent c3e29c061982c94418ce141d521434d6da76cd46
> hello to a
> diff --git a/a b/a
> --- a/a
> +++ b/a
> @@ -1,1 +1,3 @@
> Gello
> +Hello
> +betto
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch a
file 'a' should be amended, rest of them should remain unchanged
$ hg exp
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID ea175dcc4ee38c106db157975e006b4092444c65
# Parent c3e29c061982c94418ce141d521434d6da76cd46
hello to a
diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,3 @@
Gello
+Hello
+betto
diff --git a/changedfile b/changedfile
deleted file mode 100755
--- a/changedfile
+++ /dev/null
@@ -1,2 +0,0 @@
-foobar
-babar
$ hg status
? bar
? editor.sh
$ hg diff
Testing again with file 'changedfile'
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User test
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID ea175dcc4ee38c106db157975e006b4092444c65
> # Parent c3e29c061982c94418ce141d521434d6da76cd46
> hello to a
> diff --git a/changedfile b/changedfile
> --- a/changedfile
> +++ b/changedfile
> @@ -1,2 +1,1 @@
> foobar
> -babar
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch changedfile
$ hg exp
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID 0e64d76c3519308c398a28192cb095d48b29aede
# Parent c3e29c061982c94418ce141d521434d6da76cd46
hello to a
diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,3 @@
Gello
+Hello
+betto
diff --git a/changedfile b/changedfile
--- a/changedfile
+++ b/changedfile
@@ -1,2 +1,1 @@
foobar
-babar
$ hg diff
$ hg status
? bar
? editor.sh
Dropping a file from commit by removing related hunks
------------------------------------------------------
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User test
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID 0e64d76c3519308c398a28192cb095d48b29aede
> # Parent c3e29c061982c94418ce141d521434d6da76cd46
> hello to a
> diff --git a/a b/a
> --- a/a
> +++ b/a
> @@ -1,1 +1,3 @@
> Gello
> +Kello
> +betto
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
$ hg exp
# HG changeset patch
# User test
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID 944e9f65fa55fdb2de98577c9d8ab30de0927d8e
# Parent c3e29c061982c94418ce141d521434d6da76cd46
hello to a
diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,3 @@
Gello
+Kello
+betto
The part which was dropped from the patch will not be there in working directory
too
$ hg diff
$ hg status
? bar
? editor.sh
Changing metadata of a patch by editing patch content
======================================================
Changing user
-------------
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User RandomUser
> # Date 0 0
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID 944e9f65fa55fdb2de98577c9d8ab30de0927d8e
> # Parent c3e29c061982c94418ce141d521434d6da76cd46
> hello to a
> diff --git a/a b/a
> --- a/a
> +++ b/a
> @@ -1,1 +1,3 @@
> Gello
> +Kello
> +betto
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
$ hg exp
# HG changeset patch
# User RandomUser
# Date 0 0
# Thu Jan 01 00:00:00 1970 +0000
# Node ID 5ded18a8c333a55da4b0e051162457cfe5d85558
# Parent c3e29c061982c94418ce141d521434d6da76cd46
hello to a
diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,3 @@
Gello
+Kello
+betto
Changing Date
-------------
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User RandomUser
> # Date 123456 1200
> # Thu Jan 01 00:00:00 1970 +0000
> # Node ID 944e9f65fa55fdb2de98577c9d8ab30de0927d8e
> # Parent c3e29c061982c94418ce141d521434d6da76cd46
> hello to a
> diff --git a/a b/a
> --- a/a
> +++ b/a
> @@ -1,1 +1,3 @@
> Gello
> +Kello
> +betto
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
$ hg exp
# HG changeset patch
# User RandomUser
# Date 123456 1200
# Fri Jan 02 09:57:36 1970 -0020
# Node ID e2312ddcd8756665075a60bd05431ddca3c45050
# Parent c3e29c061982c94418ce141d521434d6da76cd46
hello to a
diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,3 @@
Gello
+Kello
+betto
Changing branch
---------------
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User RandomUser
> # Date 123456 1200
> # Thu Jan 01 00:00:00 1970 +0000
> # Branch stable
> # Node ID 944e9f65fa55fdb2de98577c9d8ab30de0927d8e
> # Parent c3e29c061982c94418ce141d521434d6da76cd46
> hello to a
> diff --git a/a b/a
> --- a/a
> +++ b/a
> @@ -1,1 +1,3 @@
> Gello
> +Kello
> +betto
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
$ hg exp
# HG changeset patch
# User RandomUser
# Date 123456 1200
# Fri Jan 02 09:57:36 1970 -0020
# Branch stable
# Node ID ddc61a4058687b2dd4a316f4b5fe7d52a35b702a
# Parent c3e29c061982c94418ce141d521434d6da76cd46
hello to a
diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,1 +1,3 @@
Gello
+Kello
+betto
Changing parent (this should be fun)
------------------------------------
$ hg glog
@ 16:ddc61a405868 hello to a
| (foo) draft
o 6:c3e29c061982 foobar to changedfile
| () public
o 3:fc57c20be380 added a
() public
$ hg log -r .^^ -T '{node}'
fc57c20be380f2878f4db139dad66d6cfb42ec62 (no-eol)
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User RandomUser
> # Date 123456 1200
> # Thu Jan 01 00:00:00 1970 +0000
> # Branch stable
> # Node ID 944e9f65fa55fdb2de98577c9d8ab30de0927d8e
> # Parent fc57c20be380f2878f4db139dad66d6cfb42ec62
> hello to a
> diff --git a/a b/a
> --- a/a
> +++ b/a
> @@ -1,1 +1,3 @@
> Gello
> +Kello
> +betto
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
$ hg exp
# HG changeset patch
# User RandomUser
# Date 123456 1200
# Fri Jan 02 09:57:36 1970 -0020
# Branch stable
# Node ID b763f7cb2302f2efa1275e2a9202655872c9567f
# Parent fc57c20be380f2878f4db139dad66d6cfb42ec62
hello to a
diff --git a/a b/a
new file mode 100755
--- /dev/null
+++ b/a
@@ -0,0 +1,3 @@
+Gello
+Kello
+betto
$ hg glog
@ 17:b763f7cb2302 hello to a
| (foo) draft
| o 6:c3e29c061982 foobar to changedfile
|/ () public
o 3:fc57c20be380 added a
() public
Changing the commit desciption
-------------------------------
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> # HG changeset patch
> # User RandomUser
> # Date 123456 1200
> # Thu Jan 01 00:00:00 1970 +0000
> # Branch stable
> # Node ID 944e9f65fa55fdb2de98577c9d8ab30de0927d8e
> # Parent fc57c20be380f2878f4db139dad66d6cfb42ec62
> I am a message which is testing change of message
> diff --git a/a b/a
> new file mode 100755
> --- /dev/null
> +++ b/a
> @@ -0,0 +1,3 @@
> +Gello
> +Kello
> +betto
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
$ hg exp
# HG changeset patch
# User RandomUser
# Date 123456 1200
# Fri Jan 02 09:57:36 1970 -0020
# Branch stable
# Node ID f14ecd7121e63915ac93edbad7f60f605e62dd52
# Parent fc57c20be380f2878f4db139dad66d6cfb42ec62
I am a message which is testing change of message
diff --git a/a b/a
new file mode 100755
--- /dev/null
+++ b/a
@@ -0,0 +1,3 @@
+Gello
+Kello
+betto
Changing the Node ID of the patch
---------------------------------
Nothing happens in that case we dont care about the node ID. Look the above 3-4
tests to realize I was testing that too.
Aborting by passing an empty patch file (issue5925)
---------------------------------------------------
$ cat > editor.sh <<EOF
> #!/bin/sh
> cat > \$1 <<ENDOF
> ENDOF
> EOF
$ HGEDITOR="sh ./editor.sh" hg amend --patch
abort: empty patch file, amend aborted
[255]
$ hg exp
# HG changeset patch
# User RandomUser
# Date 123456 1200
# Fri Jan 02 09:57:36 1970 -0020
# Branch stable
# Node ID f14ecd7121e63915ac93edbad7f60f605e62dd52
# Parent fc57c20be380f2878f4db139dad66d6cfb42ec62
I am a message which is testing change of message
diff --git a/a b/a
new file mode 100755
--- /dev/null
+++ b/a
@@ -0,0 +1,3 @@
+Gello
+Kello
+betto
$ hg parents
changeset: 18:f14ecd7121e6
branch: stable
bookmark: foo
tag: tip
parent: 3:fc57c20be380
user: RandomUser
date: Fri Jan 02 09:57:36 1970 -0020
summary: I am a message which is testing change of message