Move cmdtable and reposetup handling out of extensions.py
A new function (extensions.extensions) allows the code that is
interested in those attributes to handle them directly.
This allows some cleanups of extensions.py. Notably, we can
remove the extensions.commandtable hack.
It also makes it easier to add standard extension attributes,
like a "hgwebsetup" function or a "helptable" dict that augments
the data in help.py, etc.
#!/bin/sh
cat > abortcommit.py <<EOF
from mercurial import util
def hook(**args):
raise util.Abort("no commits allowed")
def reposetup(ui, repo):
repo.ui.setconfig("hooks", "pretxncommit.nocommits", hook)
EOF
abspath=`pwd`/abortcommit.py
echo "[extensions]" >> $HGRCPATH
echo "mq=" >> $HGRCPATH
echo "abortcommit = $abspath" >> $HGRCPATH
hg init foo
cd foo
echo foo > foo
hg add foo
# mq may keep a reference to the repository so __del__ will not be called
# and .hg/journal.dirstate will not be deleted:
hg ci -m foo
hg ci -m foo
exit 0