changeset 5070:5023af9fcba4

Merge with crew
author Brendan Cully <brendan@kublai.com>
date Sat, 04 Aug 2007 18:04:35 -0700
parents 35f67dd712d0 (current diff) d5126a0172ba (diff)
children 35d47b06d4e3
files
diffstat 5 files changed, 22 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/convert/common.py
+++ b/hgext/convert/common.py
@@ -5,8 +5,6 @@ class NoRepo(Exception): pass
 class commit(object):
     def __init__(self, author, date, desc, parents, branch=None, rev=None,
                  copies={}):
-        self.rev = None
-        self.branch = None
         self.author = author
         self.date = date
         self.desc = desc
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -21,7 +21,7 @@ class AmbiguousCommand(Exception):
 class ParseError(Exception):
     """Exception raised on errors in parsing the command line."""
 
-def runcatch(ui, args, argv0=None):
+def runcatch(ui, args):
     def catchterm(*args):
         raise util.SignalInterrupt
 
@@ -35,7 +35,7 @@ def runcatch(ui, args, argv0=None):
             if '--debugger' in args:
                 pdb.set_trace()
             try:
-                return dispatch(ui, args, argv0=argv0)
+                return dispatch(ui, args)
             finally:
                 ui.flush()
         except:
@@ -277,10 +277,7 @@ def earlygetopt(aliases, args):
             pos += 1
     return values
 
-def dispatch(ui, args, argv0=None):
-    # remember how to call 'hg' before changing the working dir
-    util.set_hgexecutable(argv0)
-
+def dispatch(ui, args):
     # read --config before doing anything else
     # (e.g. to change trust settings for reading .hg/hgrc)
     config = earlygetopt(['--config'], args)
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -3129,13 +3129,13 @@ norepo = ("clone init version help debug
           " debugindex debugindexdot debugdate debuginstall")
 optionalrepo = ("paths serve showconfig")
 
-def dispatch(args, argv0=None):
+def dispatch(args):
     try:
         u = ui.ui(traceback='--traceback' in args)
     except util.Abort, inst:
         sys.stderr.write(_("abort: %s\n") % inst)
         return -1
-    return cmdutil.runcatch(u, args, argv0=argv0)
+    return cmdutil.runcatch(u, args)
 
 def run():
-    sys.exit(dispatch(sys.argv[1:], argv0=sys.argv[0]))
+    sys.exit(dispatch(sys.argv[1:]))
--- a/mercurial/help.py
+++ b/mercurial/help.py
@@ -38,9 +38,9 @@ helptable = {
     'environment|env|Environment Variables':
     r'''
 HG::
-    Path to the 'hg' executable, automatically passed when running hooks
-    or external tools. Falls back to 'hg' if unset and the value can't be
-    autodetected, e.g. when Mercurial is run as a Python module.
+    Path to the 'hg' executable, automatically passed when running hooks,
+    extensions or external tools. If unset or empty, an executable named
+    'hg' (with com/exe/bat/cmd extension on Windows) is searched.
 
 HGEDITOR::
     This is the name of the editor to use when committing. Defaults to the
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -540,17 +540,21 @@ def _matcher(canonroot, cwd, names, inc,
 
     return (roots, match, (inc or exc or anypats) and True)
 
-_hgexecutable = 'hg'
+_hgexecutable = None
+
+def hgexecutable():
+    """return location of the 'hg' executable.
+
+    Defaults to $HG or 'hg' in the search path.
+    """
+    if _hgexecutable is None:
+        set_hgexecutable(os.environ.get('HG') or find_exe('hg', 'hg'))
+    return _hgexecutable
 
 def set_hgexecutable(path):
-    """remember location of the 'hg' executable if easily possible
-
-    path might be None or empty if hg was loaded as a module,
-    fall back to 'hg' in this case.
-    """
+    """set location of the 'hg' executable"""
     global _hgexecutable
-    if path:
-        _hgexecutable = os.path.abspath(path)
+    _hgexecutable = path
 
 def system(cmd, environ={}, cwd=None, onerr=None, errprefix=None):
     '''enhanced shell command execution.
@@ -577,8 +581,7 @@ def system(cmd, environ={}, cwd=None, on
     try:
         for k, v in environ.iteritems():
             os.environ[k] = py2shell(v)
-        if 'HG' not in os.environ:
-            os.environ['HG'] = _hgexecutable
+        os.environ['HG'] = hgexecutable()
         if cwd is not None and oldcwd != cwd:
             os.chdir(cwd)
         rc = os.system(cmd)