subrepo: correctly handle update -C with modified subrepos (
issue2022)
(based on a patch by Saint Germain)
#!/bin/sh
cat > $HGRCPATH <<EOF
[diff]
git = 1
EOF
seteol () {
if [ $1 = "LF" ]; then
EOL='\n'
else
EOL='\r\n'
fi
}
makerepo () {
seteol $1
echo
echo "# ==== setup $1 repository ===="
echo '% hg init'
hg init repo
cd repo
cat > .hgeol <<EOF
[repository]
native = $1
[patterns]
unix.txt = LF
win.txt = CRLF
**.txt = native
EOF
printf "first\r\nsecond\r\nthird\r\n" > win.txt
printf "first\nsecond\nthird\n" > unix.txt
printf "first${EOL}second${EOL}third${EOL}" > native.txt
hg commit --addremove -m 'checkin'
cd ..
}
dotest () {
seteol $1
echo
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 native.txt'
python $TESTDIR/printrepr.py < native.txt
echo '% printrepr.py unix.txt'
python $TESTDIR/printrepr.py < unix.txt
echo '% printrepr.py win.txt'
python $TESTDIR/printrepr.py < win.txt
printf "first${EOL}third${EOL}" > native.txt
printf "first\r\nthird\r\n" > win.txt
printf "first\nthird\n" > unix.txt
echo '% hg diff'
hg diff > p
python $TESTDIR/printrepr.py < p
echo '% hg revert'
hg revert --all
echo '% hg import'
hg import -m 'patch' p
echo '% printrepr.py native.txt'
python $TESTDIR/printrepr.py < native.txt
echo '% printrepr.py unix.txt'
python $TESTDIR/printrepr.py < unix.txt
echo '% printrepr.py win.txt'
python $TESTDIR/printrepr.py < win.txt
echo '% hg diff -c tip'
hg diff -c tip | python $TESTDIR/printrepr.py
cd ..
rm -r repo-$1
}
makerepo LF
dotest LF
dotest CRLF
rm -r repo
makerepo CRLF
dotest LF
dotest CRLF
rm -r repo