Only set mode of new patch if the target file was removed before.
If the file is writable by the user, but owned by a different user, the
chmod will otherwise fail with "Operation not permitted".
Additionally make very sure that the file is only written if either the number
of links is <= 1 or the file was successfully removed.
Maybe this minimal COW code should be replaced by something from util.
#!/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 0
echo c >> c
hg add c
hg ci -m "new branch" -d '1 0'
hg update -C 1
hg merge tip
# should diff cloned file against wc file
hg falabala > out || echo "diff-like tools yield a non-zero exit code"
# cleanup the output since the wc is a tmp directory
sed 's:\(.* \).*\(\/test-extdiff\):\1[tmp]\2:' out