##// END OF EJS Templates
Always copy the necessary files before applying a git patch...
Always copy the necessary files before applying a git patch This patch removes the "copymod" attribute from the gitpatch class. AFAICS, that attribute was only used to delay the copying of renamed/copied files if there are no other changes to the target, but in this case, if there are changes to the source, we'll end up copying the wrong version. This should fix issue762.

File last commit:

r5403:477136fa default
r5403:477136fa default
Show More
test-git-import
216 lines | 3.5 KiB | text/plain | TextLexer
Brendan Cully
Tests for git import
r2864 #!/bin/sh
hg init a
cd a
echo % new file
hg import -mnew - <<EOF
diff --git a/new b/new
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/new
@@ -0,0 +1 @@
+a
EOF
Brendan Cully
test for git empty new files
r3589 echo % new empty file
hg import -mempty - <<EOF
diff --git a/empty b/empty
new file mode 100644
EOF
hg locate empty
Brendan Cully
Tests for git import
r2864 echo % chmod +x
hg import -msetx - <<EOF
diff --git a/new b/new
old mode 100644
new mode 100755
EOF
test -x new || echo failed
echo % copy
hg import -mcopy - <<EOF
diff --git a/new b/copy
old mode 100755
new mode 100644
similarity index 100%
copy from new
copy to copy
diff --git a/new b/copyx
similarity index 100%
copy from new
copy to copyx
EOF
Patrick Mezard
test-git-import: fake executable permissions.
r5073 if "$TESTDIR/hghave" -q execbit; then
test -f copy -a ! -x copy || echo failed
test -x copyx || echo failed
else
test -f copy || echo failed
fi
Brendan Cully
Tests for git import
r2864 cat copy
hg cat copy
echo % rename
hg import -mrename - <<EOF
diff --git a/copy b/rename
similarity index 100%
rename from copy
rename to rename
EOF
hg locate
echo % delete
hg import -mdelete - <<EOF
diff --git a/copyx b/copyx
deleted file mode 100755
index 7898192..0000000
--- a/copyx
+++ /dev/null
@@ -1 +0,0 @@
-a
EOF
hg locate
test -f copyx && echo failed || true
echo % regular diff
hg import -mregular - <<EOF
diff --git a/rename b/rename
index 7898192..72e1fe3 100644
--- a/rename
+++ b/rename
@@ -1 +1,5 @@
a
+a
+a
+a
+a
EOF
echo % copy and modify
hg import -mcopymod - <<EOF
diff --git a/rename b/copy2
similarity index 80%
copy from rename
copy to copy2
index 72e1fe3..b53c148 100644
--- a/rename
+++ b/copy2
@@ -1,5 +1,5 @@
a
a
-a
+b
a
a
EOF
hg cat copy2
echo % rename and modify
hg import -mrenamemod - <<EOF
diff --git a/copy2 b/rename2
similarity index 80%
rename from copy2
rename to rename2
index b53c148..8f81e29 100644
--- a/copy2
+++ b/rename2
@@ -1,5 +1,5 @@
a
a
b
-a
+c
a
EOF
hg locate copy2
hg cat rename2
Alexis S. L. Carvalho
handle git patches that rename a file to more than one destination
r3701
echo % one file renamed multiple times
hg import -mmultirenames - <<EOF
diff --git a/rename2 b/rename3
rename from rename2
rename to rename3
diff --git a/rename2 b/rename3-2
rename from rename2
rename to rename3-2
EOF
hg log -vCr. --template '{rev} {files} / {file_copies%filecopy}\n'
hg locate rename2 rename3 rename3-2
hg cat rename3
echo
hg cat rename3-2
Alexis S. L. Carvalho
handle files with both git binary patches and copy/rename ops
r3716
echo foo > foo
hg add foo
hg ci -m 'add foo'
echo % binary files and regular patch hunks
hg import -m binaryregular - <<EOF
diff --git a/binary b/binary
new file mode 100644
index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4
GIT binary patch
literal 4
Lc\${NkU|;|M00aO5
diff --git a/foo b/foo2
rename from foo
rename to foo2
EOF
cat foo2
Matt Mackall
make manifest friendlier...
r3736 hg manifest --debug | grep binary
Alexis S. L. Carvalho
handle files with more than one git binary patch
r3717
echo % many binary files
hg import -m multibinary - <<EOF
diff --git a/mbinary1 b/mbinary1
new file mode 100644
index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4
GIT binary patch
literal 4
Lc\${NkU|;|M00aO5
diff --git a/mbinary2 b/mbinary2
new file mode 100644
index 0000000000000000000000000000000000000000..112363ac1917b417ffbd7f376ca786a1e5fa7490
GIT binary patch
literal 5
Mc\${NkU|\`?^000jF3jhEB
EOF
Matt Mackall
make manifest friendlier...
r3736 hg manifest --debug | grep mbinary
Alexis S. L. Carvalho
git patches: correct handling of filenames with spaces...
r4679
echo % filenames with spaces
hg import -m spaces - <<EOF
diff --git a/foo bar b/foo bar
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/foo bar
@@ -0,0 +1 @@
+foo
EOF
cat "foo bar"
Alexis S. L. Carvalho
Always copy the necessary files before applying a git patch...
r5403 echo % copy then modify the original file
hg import -m copy-mod-orig - <<EOF
diff --git a/foo2 b/foo2
index 257cc56..fe08ec6 100644
--- a/foo2
+++ b/foo2
@@ -1 +1,2 @@
foo
+new line
diff --git a/foo2 b/foo3
similarity index 100%
copy from foo2
copy to foo3
EOF
cat foo3