view tests/test-git-import @ 11715:4f9dfb54c8b5 stable

qpush --move: move the right patch even with comment lines 88fc876a4833 caused that we find the index of the moving patch in self.series but look it up in self.full_series. The difference between these is that full_series also contains comment lines, and we thus moved the wrong patch. Use back self.full_series to find the moving patch, but take care of striping the patch guard markers before comparing the patch name. Test cases have been added for comments and empty lines in self.full_series, and for the case of guarded patches. Original patch contributed by Mads Kiilerich <mads@kiilerich.com>
author Gilles Moris <gilles.moris@free.fr>
date Sat, 10 Jul 2010 21:23:00 +0200
parents 377d879e9d1b
children 77600d697d0e
line wrap: on
line source

#!/bin/sh

hg init a
cd a

echo % new file
hg import -d "1000000 0" -mnew - <<EOF
diff --git a/new b/new
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/new
@@ -0,0 +1 @@
+a
EOF
hg tip -q

echo % new empty file
hg import -d "1000000 0" -mempty - <<EOF
diff --git a/empty b/empty
new file mode 100644
EOF
hg tip -q
hg locate empty

echo % chmod +x
hg import -d "1000000 0" -msetx - <<EOF
diff --git a/new b/new
old mode 100644
new mode 100755
EOF
hg tip -q

test -x new || echo failed

echo % copy
hg import -d "1000000 0" -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
hg tip -q

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
cat copy
hg cat copy

echo % rename
hg import -d "1000000 0" -mrename - <<EOF
diff --git a/copy b/rename
similarity index 100%
rename from copy
rename to rename
EOF
hg tip -q

hg locate

echo % delete
hg import -d "1000000 0" -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 tip -q

hg locate
test -f copyx && echo failed || true

echo % regular diff
hg import -d "1000000 0" -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
hg tip -q

echo % copy and modify
hg import -d "1000000 0" -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 tip -q

hg cat copy2

echo % rename and modify
hg import -d "1000000 0" -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 tip -q

hg locate copy2
hg cat rename2

echo % one file renamed multiple times
hg import -d "1000000 0" -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 tip -q
hg log -vr. --template '{rev} {files} / {file_copies}\n'

hg locate rename2 rename3 rename3-2
hg cat rename3
echo
hg cat rename3-2

echo foo > foo
hg add foo
hg ci -m 'add foo'
echo % binary files and regular patch hunks
hg import -d "1000000 0" -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
hg tip -q
cat foo2
hg manifest --debug | grep binary

echo % many binary files
hg import -d "1000000 0" -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
hg tip -q
hg manifest --debug | grep mbinary

echo % filenames with spaces
hg import -d "1000000 0" -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
hg tip -q
cat "foo bar"

echo % copy then modify the original file
hg import -d "1000000 0" -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
hg tip -q

cat foo3