Mercurial > public > mercurial-scm > hg
comparison mercurial/util.py @ 5113:d5126a0172ba
merge with crew-stable
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Sat, 04 Aug 2007 22:27:52 +0200 |
parents | 02b127749dc0 3d35c8cb5eb4 |
children | a2c11f49e989 |
comparison
equal
deleted
inserted
replaced
5112:568bb3b4b815 | 5113:d5126a0172ba |
---|---|
538 else: | 538 else: |
539 match = lambda fn: incmatch(fn) and not excmatch(fn) and patmatch(fn) | 539 match = lambda fn: incmatch(fn) and not excmatch(fn) and patmatch(fn) |
540 | 540 |
541 return (roots, match, (inc or exc or anypats) and True) | 541 return (roots, match, (inc or exc or anypats) and True) |
542 | 542 |
543 _hgexecutable = 'hg' | 543 _hgexecutable = None |
544 | |
545 def hgexecutable(): | |
546 """return location of the 'hg' executable. | |
547 | |
548 Defaults to $HG or 'hg' in the search path. | |
549 """ | |
550 if _hgexecutable is None: | |
551 set_hgexecutable(os.environ.get('HG') or find_exe('hg', 'hg')) | |
552 return _hgexecutable | |
544 | 553 |
545 def set_hgexecutable(path): | 554 def set_hgexecutable(path): |
546 """remember location of the 'hg' executable if easily possible | 555 """set location of the 'hg' executable""" |
547 | |
548 path might be None or empty if hg was loaded as a module, | |
549 fall back to 'hg' in this case. | |
550 """ | |
551 global _hgexecutable | 556 global _hgexecutable |
552 if path: | 557 _hgexecutable = path |
553 _hgexecutable = os.path.abspath(path) | |
554 | 558 |
555 def system(cmd, environ={}, cwd=None, onerr=None, errprefix=None): | 559 def system(cmd, environ={}, cwd=None, onerr=None, errprefix=None): |
556 '''enhanced shell command execution. | 560 '''enhanced shell command execution. |
557 run with environment maybe modified, maybe in different dir. | 561 run with environment maybe modified, maybe in different dir. |
558 | 562 |
575 if os.name == 'nt': | 579 if os.name == 'nt': |
576 cmd = '"%s"' % cmd | 580 cmd = '"%s"' % cmd |
577 try: | 581 try: |
578 for k, v in environ.iteritems(): | 582 for k, v in environ.iteritems(): |
579 os.environ[k] = py2shell(v) | 583 os.environ[k] = py2shell(v) |
580 if 'HG' not in os.environ: | 584 os.environ['HG'] = hgexecutable() |
581 os.environ['HG'] = _hgexecutable | |
582 if cwd is not None and oldcwd != cwd: | 585 if cwd is not None and oldcwd != cwd: |
583 os.chdir(cwd) | 586 os.chdir(cwd) |
584 rc = os.system(cmd) | 587 rc = os.system(cmd) |
585 if sys.platform == 'OpenVMS' and rc & 1: | 588 if sys.platform == 'OpenVMS' and rc & 1: |
586 rc = 0 | 589 rc = 0 |