diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -851,13 +851,13 @@ def dispatch(args): help(u, cmd) sys.exit(-1) - if cmd not in norepo.split(): - repo = hg.repository(ui = u) - d = lambda: i[0](u, repo, *args, **cmdoptions) - else: - d = lambda: i[0](u, *args, **cmdoptions) + try: + if cmd not in norepo.split(): + repo = hg.repository(ui = u) + d = lambda: i[0](u, repo, *args, **cmdoptions) + else: + d = lambda: i[0](u, *args, **cmdoptions) - try: if options['profile']: import hotshot, hotshot.stats prof = hotshot.Profile("hg.prof") @@ -870,6 +870,8 @@ def dispatch(args): return r else: return d() + except hg.RepoError, inst: + u.warn("abort: ", inst, "!\n") except SignalInterrupt: u.warn("killed!\n") except KeyboardInterrupt: