##// END OF EJS Templates
hook: fix full path imports on Windows (issue1779)...
Steve Borho -
r9332:872d49dd default
parent child Browse files
Show More
@@ -27,6 +27,13 def _pythonhook(ui, repo, name, hname, f
27 27 raise util.Abort(_('%s hook is invalid ("%s" not in '
28 28 'a module)') % (hname, funcname))
29 29 modname = funcname[:d]
30 oldpaths = sys.path[:]
31 if hasattr(sys, "frozen"):
32 # binary installs require sys.path manipulation
33 path, name = os.path.split(modname)
34 if path and name:
35 sys.path.append(path)
36 modname = name
30 37 try:
31 38 obj = __import__(modname)
32 39 except ImportError:
@@ -37,6 +44,7 def _pythonhook(ui, repo, name, hname, f
37 44 raise util.Abort(_('%s hook is invalid '
38 45 '(import of "%s" failed)') %
39 46 (hname, modname))
47 sys.path = oldpaths
40 48 try:
41 49 for p in funcname.split('.')[1:]:
42 50 obj = getattr(obj, p)
@@ -110,9 +118,9 def hook(ui, repo, name, throw=False, **
110 118 if hasattr(cmd, '__call__'):
111 119 r = _pythonhook(ui, repo, name, hname, cmd, args, throw) or r
112 120 elif cmd.startswith('python:'):
113 if cmd.count(':') == 2:
114 path, cmd = cmd[7:].split(':')
115 mod = extensions.loadpath(path, 'hgkook.%s' % hname)
121 if cmd.count(':') >= 2:
122 path, cmd = cmd[7:].rsplit(':', 1)
123 mod = extensions.loadpath(path, 'hghook.%s' % hname)
116 124 hookfn = getattr(mod, cmd)
117 125 else:
118 126 hookfn = cmd[7:].strip()
General Comments 0
You need to be logged in to leave comments. Login now