patch: support diff data loss detection and upgrade
In worst case, generating diff in upgrade mode can be two times more expensive
than generating it in git mode directly: we may have to regenerate the whole
diff again whenever a git feature is detected. Also, the first diff attempt is
completely buffered instead of being streamed. That said, even without having
profiled it yet, I am convinced we can fast-path the upgrade mode if necessary
were it to be used in regular diff commands, and not only in mq where avoiding
data loss is worth the price.
#!/bin/sh
hgserve()
{
hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid -E errors.log -v $@ \
| sed -e 's/:[0-9][0-9]*//g' -e 's/http:\/\/[^/]*\//http:\/\/localhost\//'
cat hg.pid >> "$DAEMON_PIDS"
echo % errors
cat errors.log
sleep 1
kill `cat hg.pid`
sleep 1
}
hg init test
cd test
echo '[web]' > .hg/hgrc
echo 'accesslog = access.log' >> .hg/hgrc
echo % Without -v
hg serve -a localhost -p $HGPORT -d --pid-file=hg.pid -E errors.log
cat hg.pid >> "$DAEMON_PIDS"
if [ -f access.log ]; then
echo 'access log created - .hg/hgrc respected'
fi
echo % errors
cat errors.log
echo % With -v
hgserve
echo % With --prefix foo
hgserve --prefix foo
echo % With --prefix /foo
hgserve --prefix /foo
echo % With --prefix foo/
hgserve --prefix foo/
echo % With --prefix /foo/
hgserve --prefix /foo/