tests/test-merge-types
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
Thu, 15 Apr 2010 18:08:48 +0200
branchstable
changeset 10921 fb89cd21a7a0
parent 5710 026eb80060d8
permissions -rwxr-xr-x
workingctx: correctly compute the flag for noexec filesystems+merge This bug happens if the filesystem doesn't support exec-bit, during merges, for example in 24ed7a541f23 on the hg repo. If f is not in p1, but is in p2 and has the x-bit in p2, since the dirstate is based on p1, and the FS doesn't support the exec-bit, the dirstate can't "guess" the right bit. We instead fix it in workingcontext.flags()/manifest.

#!/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