##// END OF EJS Templates
archive: set date to 1980 for very old zip files...
archive: set date to 1980 for very old zip files The zip file format stores the date using "MS-DOS format" which apparently means that they use 1980 as their epoch. Python's zipfile module emits deprecation warnings of this form /usr/lib/python2.6/zipfile.py:1108: DeprecationWarning: struct integer overflow masking is deprecated self.fp.write(zinfo.FileHeader()) /usr/lib/python2.6/zipfile.py:1108: DeprecationWarning: 'H' format requires 0 <= number <= 65535 self.fp.write(zinfo.FileHeader()) /home/mg/src/mercurial-crew/mercurial/archival.py:169: DeprecationWarning: struct integer overflow masking is deprecated self.z.close() /home/mg/src/mercurial-crew/mercurial/archival.py:169: DeprecationWarning: 'H' format requires 0 <= number <= 65535 self.z.close() when it is given such old timestamps. This fixes this by silently clamping the date to 1980.

File last commit:

r8759:f584d63c default
r12319:381f1312 stable
Show More
test-win32text
144 lines | 2.5 KiB | text/plain | TextLexer
#!/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