|
|
#!/bin/sh
|
|
|
|
|
|
hg init t
|
|
|
cd t
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
echo commit should succeed
|
|
|
hg ci -m 1
|
|
|
echo
|
|
|
|
|
|
hg clone . ../zoz
|
|
|
cp .hg/hgrc ../zoz/.hg
|
|
|
|
|
|
python unix2dos.py f
|
|
|
echo commit should fail
|
|
|
hg ci -m 2.1
|
|
|
echo
|
|
|
|
|
|
mv .hg/hgrc .hg/hgrc.bak
|
|
|
echo commits should succeed
|
|
|
hg ci -m 2
|
|
|
hg cp f g
|
|
|
hg ci -m 2.2
|
|
|
echo
|
|
|
|
|
|
echo push should fail
|
|
|
hg push ../zoz
|
|
|
echo
|
|
|
|
|
|
mv .hg/hgrc.bak .hg/hgrc
|
|
|
echo hello > f
|
|
|
hg rm g
|
|
|
echo commit should succeed
|
|
|
hg ci -m 2.3
|
|
|
echo
|
|
|
|
|
|
echo push should succeed
|
|
|
hg push ../zoz
|
|
|
echo
|
|
|
|
|
|
echo and now for something completely different
|
|
|
mkdir d
|
|
|
echo hello > d/f2
|
|
|
python unix2dos.py d/f2
|
|
|
hg add d/f2
|
|
|
hg ci -m 3
|
|
|
hg revert -a
|
|
|
rm d/f2
|
|
|
echo
|
|
|
|
|
|
hg rem f
|
|
|
hg ci -m 4
|
|
|
echo
|
|
|
|
|
|
python -c 'file("bin", "wb").write("hello\x00\x0D\x0A")'
|
|
|
hg add bin
|
|
|
hg ci -m 5
|
|
|
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 dupe/a
|
|
|
hg -R dupe ci -m b/c dupe/[bc]
|
|
|
hg -R dupe ci -m d 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
|
|
|
|
|
|
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 -C 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
|
|
|
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 -C 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
|
|
|
|
|
|
|