diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -14,9 +14,6 @@ demandload(globals(), "errno socket vers class UnknownCommand(Exception): """Exception raised if command is not in the command table.""" -class Abort(Exception): - """Raised if a command needs to print an error and exit.""" - def filterfiles(filters, files): l = [x for x in files if x in filters] @@ -39,8 +36,8 @@ def relpath(repo, args): for x in args] return args -def matchpats(cwd, pats = [], opts = {}, head = ''): - return util.matcher(cwd, pats or ['.'], opts.get('include'), +def matchpats(repo, cwd, pats = [], opts = {}, head = ''): + return util.matcher(repo, cwd, pats or ['.'], opts.get('include'), opts.get('exclude'), head) def pathto(n1, n2): @@ -55,7 +52,7 @@ def pathto(n1, n2): def makewalk(repo, pats, opts, head = ''): cwd = repo.getcwd() - files, matchfn = matchpats(cwd, pats, opts, head) + files, matchfn = matchpats(repo, cwd, pats, opts, head) def walk(): for src, fn in repo.walk(files = files, match = matchfn): yield src, fn, pathto(cwd, fn) @@ -89,7 +86,7 @@ def revrange(ui, repo, revs, revlog=None try: num = revlog.rev(revlog.lookup(val)) except KeyError: - raise Abort('invalid revision identifier %s', val) + raise util.Abort('invalid revision identifier %s', val) return num for spec in revs: if spec.find(revrangesep) >= 0: @@ -144,7 +141,7 @@ def make_filename(repo, r, pat, node=Non i += 1 return ''.join(newname) except KeyError, inst: - raise Abort("invalid format spec '%%%s' in output file name", + raise util.Abort("invalid format spec '%%%s' in output file name", inst.args[0]) def make_file(repo, r, pat, node=None, @@ -387,7 +384,7 @@ def annotate(ui, repo, *pats, **opts): return name if not pats: - raise Abort('at least one file name or pattern required') + raise util.Abort('at least one file name or pattern required') bcache = {} opmap = [['user', getname], ['number', str], ['changeset', getnode]] @@ -501,7 +498,7 @@ def commit(ui, repo, *pats, **opts): if not pats and cwd: opts['include'] = [os.path.join(cwd, i) for i in opts['include']] opts['exclude'] = [os.path.join(cwd, x) for x in opts['exclude']] - fns, match = matchpats((pats and repo.getcwd()) or '', pats, opts) + fns, match = matchpats(repo, (pats and repo.getcwd()) or '', pats, opts) if pats: c, a, d, u = repo.changes(files = fns, match = match) files = c + a + [fn for fn in d if repo.dirstate.state(fn) == 'r'] @@ -543,7 +540,7 @@ def debugcheckstate(ui, repo): ui.warn("%s in manifest1, but listed as state %s" % (f, state)) errors += 1 if errors: - raise Abort(".hg/dirstate inconsistent with current parent's manifest") + raise util.Abort(".hg/dirstate inconsistent with current parent's manifest") def debugstate(ui, repo): """show the contents of the current dirstate""" @@ -592,7 +589,7 @@ def diff(ui, repo, *pats, **opts): revs = map(lambda x: repo.lookup(x), opts['rev']) if len(revs) > 2: - raise Abort("too many revisions to diff") + raise util.Abort("too many revisions to diff") files = [] roots, match, results = makewalk(repo, pats, opts) @@ -626,7 +623,7 @@ def doexport(ui, repo, changeset, seqno, def export(ui, repo, *changesets, **opts): """dump the header and diffs for one or more changesets""" if not changesets: - raise Abort("export requires at least one changeset") + raise util.Abort("export requires at least one changeset") seqno = 0 revs = list(revrange(ui, repo, changesets)) total = len(revs) @@ -722,7 +719,7 @@ def import_(ui, repo, patch1, *patches, files.append(pf) patcherr = f.close() if patcherr: - raise Abort("patch failed") + raise util.Abort("patch failed") if len(files) > 0: addremove(ui, repo, *files) @@ -732,7 +729,7 @@ def init(ui, source=None): """create a new repository in the current directory""" if source: - raise Abort("no longer supported: use \"hg clone\" instead") + raise util.Abort("no longer supported: use \"hg clone\" instead") hg.repository(ui, ".", create=1) def locate(ui, repo, *pats, **opts): @@ -1037,7 +1034,7 @@ def status(ui, repo, *pats, **opts): ? = not tracked''' cwd = repo.getcwd() - files, matchfn = matchpats(cwd, pats, opts) + files, matchfn = matchpats(repo, cwd, pats, opts) (c, a, d, u) = [[pathto(cwd, x) for x in n] for n in repo.changes(files=files, match=matchfn)] @@ -1420,8 +1417,6 @@ def dispatch(args): if options['traceback']: traceback.print_exc() raise - except util.CommandError, inst: - u.warn("abort: %s\n" % inst.args) except hg.RepoError, inst: u.warn("abort: ", inst, "!\n") except SignalInterrupt: @@ -1449,7 +1444,7 @@ def dispatch(args): u.warn("abort: %s: %s\n" % (inst.strerror, inst.filename)) else: u.warn("abort: %s\n" % inst.strerror) - except Abort, inst: + except util.Abort, inst: u.warn('abort: ', inst.args[0] % inst.args[1:], '\n') sys.exit(1) except TypeError, inst: