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.
adding foo
adding bar
adding baz/bletch
test-archive-TIP/.hg_archival.txt
test-archive-TIP/bar
test-archive-TIP/baz/bletch
test-archive-TIP/foo
test-archive-TIP/.hg_archival.txt
test-archive-TIP/bar
test-archive-TIP/baz/bletch
test-archive-TIP/foo
Archive: archive.zip
testing: test-archive-TIP/.hg_archival.txt OK
testing: test-archive-TIP/bar OK
testing: test-archive-TIP/baz/bletch OK
testing: test-archive-TIP/foo OK
No errors detected in compressed data of archive.zip.
test/.hg_archival.txt
test/bar
test/baz/bletch
test/foo
test/.hg_archival.txt
test/bar
test/foo
test-TIP/.hg_archival.txt
test-TIP/bar
test-TIP/baz/bletch
test-TIP/foo
True
abort: archive prefix contains illegal components
Archive: test.zip
testing: test/.hg_archival.txt OK
testing: test/bar OK
testing: test/baz/bletch OK
testing: test/foo OK
No errors detected in compressed data of test.zip.
test-TIP/.hg_archival.txt
test-TIP/bar
test-TIP/baz/bletch
test-TIP/foo
rev-0.tar created
% empty repo
abort: repository has no revisions