addremove: correctly handle intermediate symlinks
This fixes problems mentioned in
issue660 comments (unrelated to original
issue) where directory was renamed, and symlink was added instead.
In such situation addremove wasn't able to correctly detect that old files
no longer here, but tried to add symlink (and failed due collision with
old files).
#!/bin/sh
# Tests whether or not hgwebdir properly handles various symlink topologies.
"$TESTDIR/hghave" symlink || exit 80
hg init a
echo a > a/a
hg --cwd a ci -Ama -d'1 0'
mkdir webdir
cd webdir
hg init b
echo b > b/b
hg --cwd b ci -Amb -d'2 0'
hg init c
echo c > c/c
hg --cwd c ci -Amc -d'3 0'
ln -s ../a al
ln -s ../webdir circle
root=`pwd`
cd ..
cat > collections.conf <<EOF
[collections]
$root=$root
EOF
hg serve -p $HGPORT -d --pid-file=hg.pid --webdir-conf collections.conf \
-A access-collections.log -E error-collections.log
cat hg.pid >> $DAEMON_PIDS
echo % should succeed
"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?style=raw'
"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/al/file/tip/a?style=raw'
"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/b/file/tip/b?style=raw'
"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/c/file/tip/c?style=raw'
echo % should fail
"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/circle/al/file/tip/a?style=raw'
"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/circle/b/file/tip/a?style=raw'
"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/circle/c/file/tip/a?style=raw'
echo % collections errors
cat error-collections.log