bookmarks: Add -B option to incoming/outgoing to compare bookmarks
We add a -B/--bookmarks option to hg incmoing and hg outgoing. If the option
is passed we compare bookmarks instead of changesets. This can be used
to see which bookmarks do not exists on the remote site.
#!/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