view tests/test-win32text @ 8048:d22432bdcba1

convert/cvs: delay CVS log parsing after initialization (issue1581/2) Source and destination constructors should be fast so configurations issues are hit quickly, including authentication and filemap/authormap/splicemap issues. Delaying might be a problem if the remove side disconnects idle connections while the log is being read. It did not happen when converting openafs repository, where log retrieval took at least 10mn.
author Patrick Mezard <pmezard@gmail.com>
date Sat, 11 Apr 2009 21:17:11 +0200
parents b71a52f101dc
children 441dc7becd43
line wrap: on
line source

#!/bin/sh

cat > unix2dos.py <<EOF
import sys

for path in sys.argv[1:]:
    data = file(path, 'rb').read()
    data = data.replace('\n', '\r\n')
    file(path, 'wb').write(data)
EOF

cat > print.py <<EOF
import sys
print(sys.stdin.read().replace('\n', '<LF>').replace('\r', '<CR>').replace('\0', '<NUL>'))
EOF

hg init
echo '[hooks]' >> .hg/hgrc
echo 'pretxncommit.crlf = python:hgext.win32text.forbidcrlf' >> .hg/hgrc
echo 'pretxnchangegroup.crlf = python:hgext.win32text.forbidcrlf' >> .hg/hgrc
cat .hg/hgrc
echo

echo hello > f
hg add f
hg ci -m 1 -d'0 0'
echo

python unix2dos.py f
hg ci -m 2 -d'0 0'
hg revert -a
echo

mkdir d
echo hello > d/f2
python unix2dos.py d/f2
hg add d/f2
hg ci -m 3 -d'0 0'
hg revert -a
rm d/f2
echo

hg rem f
hg ci -m 4 -d'0 0'
echo

python -c 'file("bin", "wb").write("hello\x00\x0D\x0A")'
hg add bin
hg ci -m 5 -d'0 0'
hg log -v
echo

hg clone . dupe
echo
for x in a b c d; do echo content > dupe/$x; done
hg -R dupe add
python unix2dos.py dupe/b dupe/c dupe/d
hg -R dupe ci -m a -d'0 0' dupe/a
hg -R dupe ci -m b/c -d'0 0' dupe/[bc]
hg -R dupe ci -m d -d'0 0' dupe/d
hg -R dupe log -v
echo

hg pull dupe
echo

hg log -v
echo

rm .hg/hgrc
(echo some; echo text) > f3
python -c 'file("f4.bat", "wb").write("rem empty\x0D\x0A")'
hg add f3 f4.bat
hg ci -m 6 -d'0 0'

python print.py < bin
python print.py < f3
python print.py < f4.bat
echo

echo '[extensions]' >> .hg/hgrc
echo 'win32text = ' >> .hg/hgrc
echo '[decode]' >> .hg/hgrc
echo '** = cleverdecode:' >> .hg/hgrc
echo '[encode]' >> .hg/hgrc
echo '** = cleverencode:' >> .hg/hgrc
cat .hg/hgrc
echo

rm f3 f4.bat bin
hg co 2>&1 | python -c 'import sys, os; sys.stdout.write(sys.stdin.read().replace(os.getcwd(), "...."))'
python print.py < bin
python print.py < f3
python print.py < f4.bat
echo

python -c 'file("f5.sh", "wb").write("# empty\x0D\x0A")'
hg add f5.sh
hg ci -m 7 -d'0 0'
python print.py < f5.sh
hg cat f5.sh | python print.py

echo '% just linefeed' > linefeed
hg ci -qAm 8 linefeed
python print.py < linefeed
hg cat linefeed | python print.py
hg st -q
hg revert -a linefeed
python print.py < linefeed
hg st -q
echo modified >> linefeed
hg st -q
hg revert -a
hg st -q
python print.py < linefeed

echo "# disable extension again"
echo '[decode]' >> .hg/hgrc
echo '** = !' >> .hg/hgrc
echo '[encode]' >> .hg/hgrc
echo '** = !' >> .hg/hgrc
cat .hg/hgrc
echo

rm f3 f4.bat bin
hg co 2>&1 | python -c 'import sys, os; sys.stdout.write(sys.stdin.read().replace(os.getcwd(), "...."))'
python print.py < bin
python print.py < f3
python print.py < f4.bat
echo