mdiff: fix diff -b/B/w on mixed whitespace hunks (issue127)
Previous code was computing hunks then checking if these hunks could be ignored
when taking whitespace/blank-lines options in accounts. This approach is simple
but fails with hunks containing both whitespace and non-whitespace changes, the
whole hunk is emitted while it can be mostly made of whitespace. The new
version normalize the whitespaces before hunk generation, and test for
blank-lines afterwards.
#!/bin/sh
hg init
echo a > a
hg ci -Amadd # 0
chmod +x a
hg ci -mexecutable # 1
hg up 0
rm a
ln -s symlink a
hg ci -msymlink # 2
hg merge --debug
echo % symlink is local parent, executable is other
if [ -h a ]; then
echo a is a symlink
$TESTDIR/readlink.py a
elif [ -x a ]; then
echo a is executable
else
echo "a has no flags (default for conflicts)"
fi
hg update -C 1
hg merge --debug
echo % symlink is other parent, executable is local
if [ -h a ]; then
echo a is a symlink
$TESTDIR/readlink.py a
elif [ -x a ]; then
echo a is executable
else
echo "a has no flags (default for conflicts)"
fi