Mercurial > hg
view tests/test-import-eol @ 10127:d8214e944b84
patch: fix eolmode=auto with new files
If target file does not exist or has no eol, current code was normalizing eols
to LF. Preserve patch file eols instead.
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Wed, 23 Dec 2009 19:31:47 +0100 |
parents | 1720d70cd6d4 |
children | 7936cd261dc9 |
line wrap: on
line source
#!/bin/sh cat > makepatch.py <<EOF f = file('eol.diff', 'wb') w = f.write w('test message\n') w('diff --git a/a b/a\n') w('--- a/a\n') w('+++ b/a\n') w('@@ -1,5 +1,5 @@\n') w(' a\n') w('-bbb\r\n') w('+yyyy\r\n') w(' cc\r\n') w(' \n') w(' d\n') w('-e\n') w('\ No newline at end of file\n') w('+z\r\n') w('\ No newline at end of file\r\n') EOF hg init repo cd repo echo '\.diff' > .hgignore # Test different --eol values python -c 'file("a", "wb").write("a\nbbb\ncc\n\nd\ne")' hg ci -Am adda python ../makepatch.py echo % invalid eol hg --config patch.eol='LFCR' import eol.diff hg revert -a echo % force LF hg --traceback --config patch.eol='LF' import eol.diff python -c 'print repr(file("a","rb").read())' hg st echo % force CRLF hg up -C 0 hg --traceback --config patch.eol='CRLF' import eol.diff python -c 'print repr(file("a","rb").read())' hg st echo % auto EOL on LF file hg up -C 0 hg --traceback --config patch.eol='auto' import eol.diff python -c 'print repr(file("a","rb").read())' hg st echo % auto EOL on CRLF file python -c 'file("a", "wb").write("a\r\nbbb\r\ncc\r\n\r\nd\r\ne")' hg commit -m 'switch EOLs in a' hg --traceback --config patch.eol='auto' import eol.diff python -c 'print repr(file("a","rb").read())' hg st echo % auto EOL on new file or source without any EOL python -c 'file("noeol", "wb").write("noeol")' hg add noeol hg commit -m 'add noeol' python -c 'file("noeol", "wb").write("noeol\r\nnoeol\n")' python -c 'file("neweol", "wb").write("neweol\nneweol\r\n")' hg add neweol hg diff --git > noeol.diff hg revert --no-backup noeol neweol rm neweol hg --traceback --config patch.eol='auto' import -m noeol noeol.diff python -c 'print repr(file("noeol","rb").read())' python -c 'print repr(file("neweol","rb").read())' hg st # Test --eol and binary patches python -c 'file("b", "wb").write("a\x00\nb")' hg ci -Am addb python -c 'file("b", "wb").write("a\x00\nc")' hg diff --git > bin.diff hg revert --no-backup b echo % binary patch with --eol hg import --config patch.eol='CRLF' -m changeb bin.diff python -c 'print repr(file("b","rb").read())' hg st cd ..