scmutil: create directories in a race-safe way during update
With the new parallel update code, it is possible for multiple
workers to try to create a hierarchy of directories at the same
time. This is hard to trigger in general, but most likely during
initial checkout.
To deal with these races, we introduce a new ensuredirs function
whose contract is to ensure that a directory hierarchy exists - it
will ignore a failure that implies that the desired directory already
exists.
$ "$TESTDIR/hghave" inotify || exit 80
$ hg init
$ echo "[extensions]" > .hg/hgrc
$ echo "inotify=" >> .hg/hgrc
$ hg inserve -d --pid-file .hg/inotify.pid
$ echo a > a
$ hg ci -Aqm0
$ hg co -q null
$ hg co -q
$ hg st
$ cat a
a
$ "$TESTDIR/killdaemons.py" .hg/inotify.pid