keyword: pass context to kwtemplater.overwrite
Now that we have retrieved the context in every calling function
except commit, pass it as argument to kwtemplater.overwrite to
avoid looking it up twice.
Reorder arguments to kwtemplater.overwrite to reflect their
importance.
Turn node argument into a simple boolean and rename it to iswctx.
#!/bin/sh
cat > $HGRCPATH <<EOF
[diff]
git = True
EOF
cat > switch-eol.py <<EOF
import sys
try:
import os, msvcrt
msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
except ImportError:
pass
(old, new) = sys.argv[1] == 'LF' and ('\n', '\r\n') or ('\r\n', '\n')
print "%% switching encoding from %r to %r" % (old, new)
for path in sys.argv[2:]:
data = file(path, 'rb').read()
data = data.replace(old, new)
file(path, 'wb').write(data)
EOF
seteol () {
if [ $1 = "LF" ]; then
EOL='\n'
else
EOL='\r\n'
fi
}
makerepo () {
seteol $1
echo "% setup $1 repository"
hg init repo
cd repo
cat > .hgeol <<EOF
[repository]
native = $1
[patterns]
mixed.txt = BIN
**.txt = native
EOF
printf "first${EOL}second${EOL}third${EOL}" > a.txt
hg commit --addremove -m 'checkin'
echo
cd ..
}
dotest () {
seteol $1
echo "% hg clone repo repo-$1"
hg clone --noupdate repo repo-$1
cd repo-$1
cat > .hg/hgrc <<EOF
[extensions]
eol =
[eol]
native = $1
EOF
hg update
echo '% printrepr.py a.txt'
python $TESTDIR/printrepr.py < a.txt
echo '% hg cat a.txt'
hg cat a.txt | python $TESTDIR/printrepr.py
printf "fourth${EOL}" >> a.txt
echo '% printrepr.py a.txt'
python $TESTDIR/printrepr.py < a.txt
hg diff | python $TESTDIR/printrepr.py
python ../switch-eol.py $1 a.txt
echo '% hg diff only reports a single changed line:'
hg diff | python $TESTDIR/printrepr.py
echo "% reverting back to $1 format"
hg revert a.txt
python $TESTDIR/printrepr.py < a.txt
printf "first\r\nsecond\n" > mixed.txt
hg add mixed.txt
echo "% hg commit of inconsistent .txt file marked as binary (should work)"
hg commit -m 'binary file'
echo "% hg commit of inconsistent .txt file marked as native (should fail)"
printf "first\nsecond\r\nthird\nfourth\r\n" > a.txt
hg commit -m 'inconsistent file'
echo "% hg commit --config eol.only-consistent=False (should work)"
hg commit --config eol.only-consistent=False -m 'inconsistent file'
echo "% hg commit of binary .txt file marked as native (binary files always okay)"
printf "first${EOL}\0${EOL}third${EOL}" > a.txt
hg commit -m 'binary file'
cd ..
rm -r repo-$1
}
makerepo LF
dotest LF
dotest CRLF
rm -r repo
makerepo CRLF
dotest LF
dotest CRLF
rm -r repo
makemixedrepo () {
echo
echo "# setup $1 repository"
hg init mixed
cd mixed
printf "foo\r\nbar\r\nbaz\r\n" > win.txt
printf "foo\nbar\nbaz\n" > unix.txt
#printf "foo\r\nbar\nbaz\r\n" > mixed.txt
hg commit --addremove -m 'created mixed files'
echo "# setting repository-native EOLs to $1"
cat > .hgeol <<EOF
[repository]
native = $1
[patterns]
**.txt = native
EOF
hg commit --addremove -m 'added .hgeol'
cd ..
}
testmixed () {
echo
echo "% hg clone mixed mixed-$1"
hg clone mixed mixed-$1
cd mixed-$1
echo '% hg status (eol extension not yet activated)'
hg status
cat > .hg/hgrc <<EOF
[extensions]
eol =
[eol]
native = $1
EOF
echo '% hg status (eol activated)'
hg status
echo '% hg commit'
hg commit -m 'synchronized EOLs'
echo '% hg status'
hg status
cd ..
rm -r mixed-$1
}
makemixedrepo LF
testmixed LF
testmixed CRLF
rm -r mixed
makemixedrepo CRLF
testmixed LF
testmixed CRLF
rm -r mixed