4 # |
4 # |
5 # This software may be used and distributed according to the terms |
5 # This software may be used and distributed according to the terms |
6 # of the GNU General Public License, incorporated herein by reference. |
6 # of the GNU General Public License, incorporated herein by reference. |
7 |
7 |
8 from i18n import _ |
8 from i18n import _ |
|
9 from repo import RepoError |
9 import os, sys, atexit, signal, pdb, traceback, socket, errno, shlex, time |
10 import os, sys, atexit, signal, pdb, traceback, socket, errno, shlex, time |
10 import util, commands, hg, lock, fancyopts, revlog, version, extensions, hook |
11 import util, commands, hg, lock, fancyopts, revlog, version, extensions, hook |
11 import cmdutil |
12 import cmdutil |
12 import ui as _ui |
13 import ui as _ui |
13 |
14 |
62 ui.warn(_("hg: command '%s' is ambiguous:\n %s\n") % |
63 ui.warn(_("hg: command '%s' is ambiguous:\n %s\n") % |
63 (inst.args[0], " ".join(inst.args[1]))) |
64 (inst.args[0], " ".join(inst.args[1]))) |
64 except cmdutil.UnknownCommand, inst: |
65 except cmdutil.UnknownCommand, inst: |
65 ui.warn(_("hg: unknown command '%s'\n") % inst.args[0]) |
66 ui.warn(_("hg: unknown command '%s'\n") % inst.args[0]) |
66 commands.help_(ui, 'shortlist') |
67 commands.help_(ui, 'shortlist') |
67 except hg.RepoError, inst: |
68 except RepoError, inst: |
68 ui.warn(_("abort: %s!\n") % inst) |
69 ui.warn(_("abort: %s!\n") % inst) |
69 except lock.LockHeld, inst: |
70 except lock.LockHeld, inst: |
70 if inst.errno == errno.ETIMEDOUT: |
71 if inst.errno == errno.ETIMEDOUT: |
71 reason = _('timed out waiting for lock held by %s') % inst.locker |
72 reason = _('timed out waiting for lock held by %s') % inst.locker |
72 else: |
73 else: |
339 repo = hg.repository(ui, path=path) |
340 repo = hg.repository(ui, path=path) |
340 ui = repo.ui |
341 ui = repo.ui |
341 if not repo.local(): |
342 if not repo.local(): |
342 raise util.Abort(_("repository '%s' is not local") % path) |
343 raise util.Abort(_("repository '%s' is not local") % path) |
343 ui.setconfig("bundle", "mainreporoot", repo.root) |
344 ui.setconfig("bundle", "mainreporoot", repo.root) |
344 except hg.RepoError: |
345 except RepoError: |
345 if cmd not in commands.optionalrepo.split(): |
346 if cmd not in commands.optionalrepo.split(): |
346 if args and not path: # try to infer -R from command args |
347 if args and not path: # try to infer -R from command args |
347 repos = map(_findrepo, args) |
348 repos = map(_findrepo, args) |
348 guess = repos[0] |
349 guess = repos[0] |
349 if guess and repos.count(guess) == len(repos): |
350 if guess and repos.count(guess) == len(repos): |
350 return _dispatch(ui, ['--repository', guess] + fullargs) |
351 return _dispatch(ui, ['--repository', guess] + fullargs) |
351 if not path: |
352 if not path: |
352 raise hg.RepoError(_("There is no Mercurial repository here" |
353 raise RepoError(_("There is no Mercurial repository here" |
353 " (.hg not found)")) |
354 " (.hg not found)")) |
354 raise |
355 raise |
355 d = lambda: func(ui, repo, *args, **cmdoptions) |
356 d = lambda: func(ui, repo, *args, **cmdoptions) |
356 else: |
357 else: |
357 d = lambda: func(ui, *args, **cmdoptions) |
358 d = lambda: func(ui, *args, **cmdoptions) |
358 |
359 |