by
Changes to 3 files · Browse files at 5d96c93923ff Showing diff from parent 4d1d90deccb2 d8d38b17809a Diff from another changeset...
@@ -267,15 +267,15 @@ cmdline += ['--config', 'http_proxy.host=']
if remotecmd:
cmdline.append('--remotecmd')
- cmdline.append(remotecmd)
+ cmdline.append(hglib.fromutf(remotecmd))
if rev:
cmdline.append('--rev')
cmdline.append(rev)
cmdline.append('--verbose')
- cmdline.append(src)
+ cmdline.append(hglib.fromutf(src))
if dest:
- cmdline.append(dest)
+ cmdline.append(hglib.fromutf(dest))
dlg = hgcmd.CmdDialog(cmdline)
dlg.run()
|
|
|
@@ -46,6 +46,8 @@ if '--debugger' in args:
pdb.set_trace()
return _runcatch(u, args)
+ except SystemExit:
+ pass
except:
from hggtk.bugreport import run
if '--debugger' in args:
@@ -61,6 +63,22 @@ else:
gtkrun(run(u, **opts))
+def portable_fork(ui):
+ fork = ui.configbool('tortoisehg', 'hgtkfork', True)
+ if not fork or 'THG_HGTK_SPAWN' in os.environ or '--nofork' in sys.argv:
+ return
+ # Spawn background process and exit
+ if hasattr(sys, "frozen"):
+ args = sys.argv
+ else:
+ args = [sys.executable] + sys.argv
+ if os.name == 'nt':
+ args = ['"%s"' % arg for arg in args]
+ env = os.environ.copy()
+ env['THG_HGTK_SPAWN'] = '1'
+ os.spawnve(os.P_NOWAIT, sys.executable, args, env)
+ sys.exit(0)
+
def get_list_from_file(filename):
try:
if filename == '-':
@@ -245,6 +263,7 @@
def clone(ui, *pats, **opts):
"""clone tool"""
+ portable_fork(ui)
from hggtk.clone import run
gtkrun(run(ui, *pats, **opts))
@@ -258,6 +277,7 @@ except SystemExit:
pass
return
+ portable_fork(ui)
# move cwd to repo root if repo is merged, so we can show
# all the changed files
repo = hg.repository(ui, path=paths.find_root())
@@ -269,17 +289,20 @@
def shelve(ui, *pats, **opts):
"""shelve/unshelve tool"""
+ portable_fork(ui)
from hggtk.thgshelve import run
gtkrun(run(ui, *pats, **opts))
def userconfig(ui, *pats, **opts):
"""user configuration editor"""
+ portable_fork(ui)
from hggtk.thgconfig import run
opts['repomode'] = False
gtkrun(run(ui, *pats, **opts))
def repoconfig(ui, *pats, **opts):
"""repository configuration editor"""
+ portable_fork(ui)
from hggtk.thgconfig import run
opts['repomode'] = True
gtkrun(run(ui, *pats, **opts))
@@ -291,66 +314,79 @@ gdialog.Prompt(_('Rename error'),
_('rename takes one or two path arguments'), None).run()
return
+ portable_fork(ui)
from hggtk.rename import run
gtkrun(run(ui, *pats, **opts))
def guess(ui, *pats, **opts):
"""guess previous renames or copies"""
+ portable_fork(ui)
from hggtk.guess import run
gtkrun(run(ui, *pats, **opts))
def datamine(ui, *pats, **opts):
"""repository search and annotate tool"""
+ portable_fork(ui)
from hggtk.datamine import run
gtkrun(run(ui, *pats, **opts))
def hgignore(ui, *pats, **opts):
"""ignore filter editor"""
+ portable_fork(ui)
from hggtk.hgignore import run
gtkrun(run(ui, *pats, **opts))
def hginit(ui, *pats, **opts):
"""repository initialization tool"""
+ portable_fork(ui)
from hggtk.hginit import run
gtkrun(run(ui, *pats, **opts))
def log(ui, *pats, **opts):
"""changelog viewer"""
+ portable_fork(ui)
from hggtk.history import run
gtkrun(run(ui, *pats, **opts))
def merge(ui, *pats, **opts):
"""merge tool"""
+ portable_fork(ui)
from hggtk.merge import run
gtkrun(run(ui, *pats, **opts))
def recovery(ui, *pats, **opts):
"""recover, rollback & verify"""
+ portable_fork(ui)
from hggtk.recovery import run
gtkrun(run(ui, *pats, **opts))
def remove(ui, *pats, **opts):
"""file status viewer in remove mode"""
+ portable_fork(ui)
from hggtk.status import run
gtkrun(run(ui, *pats, **opts))
def revert(ui, *pats, **opts):
"""file status viewer in revert mode"""
+ portable_fork(ui)
from hggtk.status import run
gtkrun(run(ui, *pats, **opts))
def serve(ui, *pats, **opts):
"""web server"""
+ portable_fork(ui)
from hggtk.serve import run
gtkrun(run(ui, *pats, **opts))
def status(ui, *pats, **opts):
"""file status viewer"""
+ portable_fork(ui)
from hggtk.status import run
gtkrun(run(ui, *pats, **opts))
def synch(ui, *pats, **opts):
"""repository synchronization tool"""
+ portable_fork(ui)
from hggtk.synch import run
cmd = sys.argv[1]
if 'push'.startswith(cmd) or 'outgoing'.startswith(cmd):
@@ -361,11 +397,13 @@
def update(ui, *pats, **opts):
"""update/checkout tool"""
+ portable_fork(ui)
from hggtk.update import run
gtkrun(run(ui, *pats, **opts))
def vdiff(ui, *pats, **opts):
"""launch configured visual diff tool"""
+ portable_fork(ui)
from hggtk.visdiff import run
gtkrun(run(ui, *pats, **opts))
@@ -402,7 +440,14 @@ if with_version:
version(ui)
ui.write('\n')
- aliases, i = cmdutil.findcmd(name, table)
+
+ try:
+ aliases, i = cmdutil.findcmd(name, table, False)
+ except hglib.AmbiguousCommand, inst:
+ select = lambda c: c.lstrip('^').startswith(inst.args[0])
+ helplist('list of commands:\n\n', select)
+ return
+
# synopsis
ui.write("%s\n" % i[2])
@@ -462,49 +507,25 @@ addglobalopts(True)
def helptopic(name):
- v = None
- for i in help.helptable:
- l = i.split('|')
- if name in l:
- v = i
- header = l[-1]
- if not v:
+ from mercurial import help
+ for names, header, doc in help.helptable:
+ if name in names:
+ break
+ else:
raise hglib.UnknownCommand(name)
# description
- doc = help.helptable[v]
if not doc:
doc = _("(No help text available)")
- if callable(doc):
+ if hasattr(doc, '__call__'):
doc = doc()
ui.write("%s\n" % header)
ui.write("%s\n" % doc.rstrip())
- def helpext(name):
- try:
- mod = extensions.find(name)
- except KeyError:
- raise hglib.UnknownCommand(name)
-
- doc = (mod.__doc__ or _('No help text available')).splitlines(0)
- ui.write(_('%s extension - %s\n') % (name.split('.')[-1], doc[0]))
- for d in doc[1:]:
- ui.write(d, '\n')
-
- ui.status('\n')
-
- try:
- ct = mod.cmdtable
- except AttributeError:
- ct = {}
-
- modcmds = dict.fromkeys([c.split('|', 1)[0] for c in ct])
- helplist(_('list of commands:\n\n'), modcmds.has_key)
-
if name and name != 'shortlist':
i = None
- for f in (helpcmd, helptopic, helpext):
+ for f in (helpcmd, helptopic):
try:
f(name)
i = None
|
@@ -9,40 +9,6 @@ import os
import sys
-def portable_fork():
- # Spawn background process and exit
- if sys.platform[:3] == 'win':
- if 'THG_HGTK_SPAWN' not in os.environ:
- if hasattr(sys, "frozen"):
- args = sys.argv
- else:
- args = [sys.executable] + sys.argv
- args = ['"%s"' % arg for arg in args]
- env = os.environ.copy()
- env['THG_HGTK_SPAWN'] = '1'
- os.spawnve(os.P_NOWAIT, sys.executable, args, env)
- sys.exit(0)
- else:
- assert hasattr(os, 'fork')
- if os.fork():
- sys.exit(0)
-
-from mercurial import ui
-
-_ui = ui.ui()
-fork = _ui.configbool('tortoisehg', 'hgtkfork', True)
-capt = _ui.configbool('tortoisehg', 'stderrcapt', True)
-
-if fork and '--nofork' not in sys.argv:
- for i, arg in enumerate(sys.argv):
- if 'hgtk' in arg and len(sys.argv) > i+1:
- cmd = sys.argv[i+1]
- break
- else:
- cmd = None
- if cmd not in ('version', 'help'):
- portable_fork()
-
if hasattr(sys, "frozen"):
# Prepend C:\Program Files\TortoiseHg\gtk (equiv) to the path
from thgutil import paths
@@ -60,9 +26,10 @@pygtk.require('2.0')
import gtk
-from mercurial import demandimport;
+from mercurial import demandimport
demandimport.ignore.append('win32com.shell')
demandimport.enable()
+from mercurial import ui
import cStringIO
try:
@@ -73,9 +40,13 @@ sys.stderr.write("(check your install and PYTHONPATH)\n")
sys.exit(-1)
+_ui = ui.ui()
+capt = _ui.configbool('tortoisehg', 'stderrcapt', True)
+
if not capt or 'THGDEBUG' in os.environ:
sys.exit(hggtk.hgtk.dispatch(sys.argv[1:]))
else:
+ import cStringIO
sys.stderr = cStringIO.StringIO()
ret = hggtk.hgtk.dispatch(sys.argv[1:])
sys.stderr.seek(0)
@@ -83,12 +54,11 @@ if l.startswith('Traceback') or l.startswith('TypeError'):
from hggtk.bugreport import run
from hggtk.hgtk import gtkrun
- from mercurial import ui
sys.stderr.seek(0)
error = 'Recoverable runtime error (stderr):\n' + sys.stderr.read()
opts = {}
opts['cmd'] = ' '.join(sys.argv[1:])
opts['error'] = error
- gtkrun(run(ui.ui(), **opts))
+ gtkrun(run(_ui, **opts))
break
sys.exit(ret)
|
Loading...