Never exit directly from commands.dispatch(), but pass return code to caller.
Usually the caller is commands.run().
Some extensions still use sys.exit(), this is catched, too.
Fixed wrong return statement in commands.recover() yielding a zero exit code.
#!/usr/bin/env python
#
# An example CGI script to use hgweb, edit as necessary
import cgitb, os, sys
cgitb.enable()
# sys.path.insert(0, "/path/to/python/lib") # if not a system-wide install
from mercurial import hgweb
h = hgweb.hgweb("/path/to/repo", "repository name")
h.run()