##// END OF EJS Templates
Do not use osutil.c with python 2.4 and Windows (issue1364)...
Do not use osutil.c with python 2.4 and Windows (issue1364) Windows python 2.4 os.stat() reports times including DST offset, while osutil.c reports the correct value, which makes status() systematically compare files content. This bug is fixed in python 2.5. Using osutil.py instead of osutil.c is 4x times slower on large repositories but current code is completely unusable. Given few people are likely to use python 2.4 on Windows this solution was considered a good trade-off compared to more invasive solutions trying to address the offset issue.

File last commit:

r10130:7936cd26 default
r10521:bde1bb25 stable
Show More
test-import-eol
85 lines | 2.1 KiB | text/plain | TextLexer
#!/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\r\nd")'
hg ci -Am addb
python -c 'file("b", "wb").write("a\x00\nc\r\nd")'
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 ..