Mercurial > hg
view tests/test-git-import @ 8810:ac92775b3b80
Add patch.eol to ignore EOLs when patching (issue1019)
The intent is to fix many issues involving patching when win32ext is enabled.
With win32ext, the working directory and repository files EOLs are not the same
which means that patches made on a non-win32ext host do not apply cleanly
because of EOLs discrepancies. A theorically correct approach would be
transform either the patched file or the patch content with the
encoding/decoding filters used by win32ext. This solution is tricky to
implement and invasive, instead we prefer to address the win32ext case, by
offering a way to ignore input EOLs when patching and rewriting them when
saving the patched result.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Mon, 15 Jun 2009 00:03:26 +0200 |
parents | 477136fa6571 |
children | f780b1098efc |
line wrap: on
line source
#!/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 echo % new empty file hg import -mempty - <<EOF diff --git a/empty b/empty new file mode 100644 EOF hg locate empty 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 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 -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 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 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 hg manifest --debug | grep binary 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 hg manifest --debug | grep mbinary 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" 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