keyword: go into restricted mode when transplanting
Expanded keyword is read into diff with transplant -b otherwise.
Test this scenario.
Thanks to Adam Berkes for providing an example case.
adding a
adding d1/d2/a
% import exported patch
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying ../tip.patch
% message should be same
summary: second change
% committer should be same
user: someone
% import exported patch with external patcher
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying ../tip.patch
line2
% import of plain diff should fail without message
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying ../tip.patch
abort: empty commit message
% import of plain diff should be ok with message
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying ../tip.patch
% import of plain diff with specific date and user
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying ../tip.patch
changeset: 1:ca68f19f3a40
tag: tip
user: user@nowhere.net
date: Thu Jan 01 00:00:01 1970 +0000
files: a
description:
patch
diff -r 80971e65b431 -r ca68f19f3a40 a
--- a/a Thu Jan 01 00:00:00 1970 +0000
+++ b/a Thu Jan 01 00:00:01 1970 +0000
@@ -1,1 +1,2 @@
line 1
+line 2
% import of plain diff should be ok with --no-commit
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying ../tip.patch
diff -r 80971e65b431 a
--- a/a
+++ b/a
@@ -1,1 +1,2 @@
line 1
+line 2
% hg -R repo import
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying tip.patch
% import from stdin
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying patch from stdin
% override commit message
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying patch from stdin
summary: override
% plain diff in email, subject, message body
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying ../msg.patch
user: email patcher
summary: email patch
% plain diff in email, no subject, message body
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying patch from stdin
% plain diff in email, subject, no message body
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying patch from stdin
% plain diff in email, no subject, no message body, should fail
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying patch from stdin
abort: empty commit message
% hg export in email, should use patch header
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying patch from stdin
summary: second change
% plain diff in email, [PATCH] subject, message body with subject
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying patch from stdin
email patch
next line
---
% import patch1 patch2; rollback
parent: 0
applying ../patch1
applying ../patch2
rolling back last transaction
parent: 1
% hg import in a subdirectory
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying ../../../tip.patch
% message should be 'subdir change'
summary: subdir change
% committer should be 'someoneelse'
user: someoneelse
% should be empty
% test fuzziness
adding a
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
created new head
applying tip.patch
patching file a
Hunk #1 succeeded at 1 with fuzz 2 (offset -2 lines).
a
adding a
adding b1
adding c1
adding d
diff --git a/a b/a
--- a/a
+++ b/a
@@ -0,0 +1,1 @@
+a
diff --git a/b1 b/b2
rename from b1
rename to b2
--- a/b1
+++ b/b2
@@ -0,0 +1,1 @@
+b
diff --git a/c1 b/c1
--- a/c1
+++ b/c1
@@ -0,0 +1,1 @@
+c
diff --git a/c1 b/c2
copy from c1
copy to c2
--- a/c1
+++ b/c2
@@ -0,0 +1,1 @@
+c
diff --git a/d b/d
--- a/d
+++ b/d
@@ -1,1 +0,0 @@
-d
4 files updated, 0 files merged, 2 files removed, 0 files unresolved
applying empty.diff
% a file
a
% b1 file
% b2 file
b
% c1 file
c
% c2 file
c
% d file
% test trailing binary removal
adding a
adding b
R a
R b
diff --git a/a b/a
diff --git a/b b/b
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
applying remove.diff
% test update+rename with common name (issue 927)
adding a
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
applying copy.diff
% view a
a
% view a2
a
% test -p0
adding a
applying patch from stdin
bb
% test paths outside repo root
applying patch from stdin
abort: ../outside/foo not under root
% test import with similarity (issue295)
adding a
applying ../rename.diff
patching file a
patching file b
removing a
adding b
recording removal of a as rename to b (88% similar)
A b
a
R a
undeleting a
forgetting b
applying ../rename.diff
patching file a
patching file b
removing a
adding b
A b
R a
% add empty file from the end of patch (issue 1495)
adding a
applying a.patch
% create file when source is not /dev/null
applying ../create.patch
a
% first line mistaken for email headers (issue 1859)
applying a.patch
changeset: 0:5a681217c0ad
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
files: a
description:
module: summary
description