view tests/test-import-eol @ 9954:d6a307719ccb stable

fix bug in prepush logic involving merge changesets When creating new branches and merging them into existing ones, you would sometimes be able to push some changesets (the existing branches) without using --force, even when that creates a new head on the remote. A test which triggers the error has been added.
author Sune Foldager <cryo@cyanite.org>
date Mon, 30 Nov 2009 14:58:52 +0100
parents 6c9dce20ed70
children 1720d70cd6d4
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

# 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 ..