inotify: raise correct error if server is already started in a deep repository
When path is too long to be an Unix socket address, we create a socket in a
temporary directory and link from the long path to the shorter one.
But checks in server code at startup were insufficient in this case, and used
to raise an unclear "tried linking .hg/inotify.sock to a temporary socket but
.hg/inotify.sock already exists"
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'
adding a
$ mkdir webdir
$ cd webdir
$ hg init b
$ echo b > b/b
$ hg --cwd b ci -Amb -d'2 0'
adding b
$ hg init c
$ echo c > c/c
$ hg --cwd c ci -Amc -d'3 0'
adding c
$ 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
should succeed
$ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?style=raw'
200 Script output follows
/al/
/b/
/c/
$ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/al/file/tip/a?style=raw'
200 Script output follows
a
$ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/b/file/tip/b?style=raw'
200 Script output follows
b
$ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/c/file/tip/c?style=raw'
200 Script output follows
c
should fail
$ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/circle/al/file/tip/a?style=raw'
404 Not Found
error: repository circle not found
[1]
$ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/circle/b/file/tip/a?style=raw'
404 Not Found
error: repository circle not found
[1]
$ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/circle/c/file/tip/a?style=raw'
404 Not Found
error: repository circle not found
[1]
collections errors
$ cat error-collections.log