extdiff: preserve execute-bit across copies (
issue1562)
Bug report and test by Mads Kiilerich <mads@kiilerich.com>
#!/bin/sh
echo "[extensions]" >> $HGRCPATH
echo "extdiff=" >> $HGRCPATH
hg init a
cd a
echo a > a
echo b > b
hg add
# should diff cloned directories
hg extdiff -o -r $opt
echo "[extdiff]" >> $HGRCPATH
echo "cmd.falabala=echo" >> $HGRCPATH
echo "opts.falabala=diffing" >> $HGRCPATH
hg falabala
hg help falabala
hg ci -d '0 0' -mtest1
echo b >> a
hg ci -d '1 0' -mtest2
# should diff cloned files directly
hg falabala -r 0:1
# test diff during merge
hg update -C 0
echo c >> c
hg add c
hg ci -m "new branch" -d '1 0'
hg merge 1
# should diff cloned file against wc file
hg falabala > out
# cleanup the output since the wc is a tmp directory
sed 's:\(.* \).*\(\/test-extdiff\):\1[tmp]\2:' out
# test --change option
hg ci -d '2 0' -mtest3
hg falabala -c 1
# check diff are made from the first parent
hg falabala -c 3 || echo "diff-like tools yield a non-zero exit code"
#hg log
echo
echo '% test extdiff of multiple files in tmp dir:'
hg update -C 0 > /dev/null
echo changed > a
echo changed > b
chmod +x b
echo '% diff in working directory, before'
hg diff --git
echo '% edit with extdiff -p'
# prepare custom diff/edit tool
cat > differ.sh << EOT
#!/bin/sh
sleep 1 # avoid unchanged-timestamp problems
echo edited >> a/a
echo edited >> a/b
EOT
chmod +x differ.sh
hg extdiff -p `pwd`/differ.sh # will change to /tmp/extdiff.TMP and populate directories a.TMP and a and start tool
echo '% diff in working directory, after'
hg diff --git