--- a/mercurial/extensions.py Wed Jun 13 15:02:09 2007 +0300
+++ b/mercurial/extensions.py Wed Jun 13 13:50:29 2007 -0700
@@ -5,7 +5,8 @@
# This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference.
-import imp, commands, hg, util, sys
+import imp, os
+import commands, hg, util, sys
from i18n import _
_extensions = {}
@@ -28,7 +29,12 @@
# choose an unique name so that it doesn't
# conflicts with other modules
module_name = "hgext_%s" % name.replace('.', '_')
- mod = imp.load_source(module_name, path)
+ if os.path.isdir(path):
+ # module/__init__.py style
+ fd, fpath, desc = imp.find_module('', [path])
+ mod = imp.load_module(module_name, fd, fpath, desc)
+ else:
+ mod = imp.load_source(module_name, path)
else:
def importh(name):
mod = __import__(name)
--- a/tests/test-extension Wed Jun 13 15:02:09 2007 +0300
+++ b/tests/test-extension Wed Jun 13 13:50:29 2007 -0700
@@ -29,6 +29,10 @@
EOF
abspath=`pwd`/foobar.py
+mkdir barfoo
+cp foobar.py barfoo/__init__.py
+barfoopath=`pwd`/barfoo
+
hg init a
cd a
echo foo > file
@@ -43,3 +47,9 @@
hg clone a b
hg bar
+
+echo '% module/__init__.py-style'
+echo '[extensions]' > $HGRCPATH
+echo "barfoo = $barfoopath" >> $HGRCPATH
+cd a
+hg foo
--- a/tests/test-extension.out Wed Jun 13 15:02:09 2007 +0300
+++ b/tests/test-extension.out Wed Jun 13 13:50:29 2007 -0700
@@ -13,3 +13,9 @@
uisetup called
ui.parentui is None
Bar
+% module/__init__.py-style
+uisetup called
+ui.parentui is None
+reposetup called for a
+ui == repo.ui
+Foo