errors: introduce InputError and use it from commands and cmdutil
This patch introduces a `InputError` class and replaces many uses of
`error.Abort` by it in `commands` and `cmdutil`. This is a part of
https://www.mercurial-scm.org/wiki/ErrorCategoriesPlan. There will
later be a different class for state errors (to raise e.g. when
there's an unfinished operation). It's not always clear when one
should report an input error and when it should be a state error. We
can always adjust later if I got something wrong in this patch (but
feel free to point out any you notice now).
Differential Revision: https://phab.mercurial-scm.org/D9167
--- a/mercurial/cmdutil.py Wed Oct 21 19:00:16 2020 -0700
+++ b/mercurial/cmdutil.py Tue Oct 06 22:36:15 2020 -0700
@@ -279,7 +279,7 @@
for x in args:
if opts.get(x):
if previous:
- raise error.Abort(
+ raise error.InputError(
_(b'cannot specify both --%s and --%s')
% (to_display(previous), to_display(x))
)
@@ -332,9 +332,9 @@
return
if len(note) > 255:
- raise error.Abort(_(b"cannot store a note of more than 255 bytes"))
+ raise error.InputError(_(b"cannot store a note of more than 255 bytes"))
if b'\n' in note:
- raise error.Abort(_(b"note cannot contain a newline"))
+ raise error.InputError(_(b"note cannot contain a newline"))
def ishunk(x):
@@ -426,7 +426,7 @@
msg = _(b'running non-interactively, use %s instead') % cmdsuggest
else:
msg = _(b'running non-interactively')
- raise error.Abort(msg)
+ raise error.InputError(msg)
# make sure username is set before going interactive
if not opts.get(b'user'):
@@ -451,7 +451,7 @@
wctx = repo[None]
merge = len(wctx.parents()) > 1
if merge:
- raise error.Abort(
+ raise error.InputError(
_(
b'cannot partially commit a merge '
b'(use "hg commit" instead)'
@@ -510,7 +510,7 @@
try:
chunks, newopts = filterfn(ui, originalchunks, match)
except error.PatchError as err:
- raise error.Abort(_(b'error parsing patch: %s') % err)
+ raise error.InputError(_(b'error parsing patch: %s') % err)
opts.update(newopts)
# We need to keep a backup of files that have been newly added and
@@ -600,7 +600,7 @@
ui.debug(fp.getvalue())
patch.internalpatch(ui, repo, fp, 1, eolmode=None)
except error.PatchError as err:
- raise error.Abort(pycompat.bytestr(err))
+ raise error.InputError(pycompat.bytestr(err))
del fp
# 4. We prepared working directory according to filtered
@@ -762,7 +762,7 @@
# checking the argument validity
for s in pycompat.bytestr(terseargs):
if s not in allst:
- raise error.Abort(_(b"'%s' not recognized") % s)
+ raise error.InputError(_(b"'%s' not recognized") % s)
# creating a dirnode object for the root of the repo
rootobj = dirnode(b'')
@@ -968,10 +968,10 @@
bailifchanged(repo)
revs = scmutil.revrange(repo, revs)
if not revs:
- raise error.Abort(b"empty revision set")
+ raise error.InputError(b"empty revision set")
roots = repo.revs(b'roots(%ld)', revs)
if len(roots) > 1:
- raise error.Abort(
+ raise error.InputError(
_(b"cannot change branch of non-linear revisions")
)
rewriteutil.precheck(repo, revs, b'change branch of')
@@ -983,16 +983,20 @@
and label not in rpb
and label in repo.branchmap()
):
- raise error.Abort(_(b"a branch of the same name already exists"))
+ raise error.InputError(
+ _(b"a branch of the same name already exists")
+ )
if repo.revs(b'obsolete() and %ld', revs):
- raise error.Abort(
+ raise error.InputError(
_(b"cannot change branch of a obsolete changeset")
)
# make sure only topological heads
if repo.revs(b'heads(%ld) - head()', revs):
- raise error.Abort(_(b"cannot change branch in middle of a stack"))
+ raise error.InputError(
+ _(b"cannot change branch in middle of a stack")
+ )
replacements = {}
# avoid import cycle mercurial.cmdutil -> mercurial.context ->
@@ -1373,7 +1377,7 @@
b'without a repository'
)
if msg:
- raise error.Abort(msg)
+ raise error.InputError(msg)
r = None
if repo:
@@ -1381,7 +1385,7 @@
r = repo.unfiltered().changelog
elif dir:
if not scmutil.istreemanifest(repo):
- raise error.Abort(
+ raise error.InputError(
_(
b"--dir can only be used on repos with "
b"treemanifest enabled"
@@ -1407,16 +1411,18 @@
elif util.safehasattr(r, b'_revlog'):
r = r._revlog # pytype: disable=attribute-error
elif r is not None:
- raise error.Abort(_(b'%r does not appear to be a revlog') % r)
+ raise error.InputError(
+ _(b'%r does not appear to be a revlog') % r
+ )
if not r:
if not returnrevlog:
- raise error.Abort(_(b'cannot give path to non-revlog'))
+ raise error.InputError(_(b'cannot give path to non-revlog'))
if not file_:
raise error.CommandError(cmd, _(b'invalid arguments'))
if not os.path.isfile(file_):
- raise error.Abort(_(b"revlog '%s' not found") % file_)
+ raise error.InputError(_(b"revlog '%s' not found") % file_)
r = revlog.revlog(
vfsmod.vfs(encoding.getcwd(), audit=False), file_[:-2] + b".i"
)
@@ -1453,10 +1459,12 @@
if not forget and not after:
# TODO: Remove this restriction and make it also create the copy
# targets (and remove the rename source if rename==True).
- raise error.Abort(_(b'--at-rev requires --after'))
+ raise error.InputError(_(b'--at-rev requires --after'))
ctx = scmutil.revsingle(repo, rev)
if len(ctx.parents()) > 1:
- raise error.Abort(_(b'cannot mark/unmark copy in merge commit'))
+ raise error.InputError(
+ _(b'cannot mark/unmark copy in merge commit')
+ )
else:
ctx = repo[None]
@@ -1469,7 +1477,7 @@
new_ctx = ctx
else:
if len(ctx.parents()) > 1:
- raise error.Abort(_(b'cannot unmark copy in merge commit'))
+ raise error.InputError(_(b'cannot unmark copy in merge commit'))
# avoid cycle context -> subrepo -> cmdutil
from . import context
@@ -1512,9 +1520,9 @@
pats = scmutil.expandpats(pats)
if not pats:
- raise error.Abort(_(b'no source or destination specified'))
+ raise error.InputError(_(b'no source or destination specified'))
if len(pats) == 1:
- raise error.Abort(_(b'no destination specified'))
+ raise error.InputError(_(b'no destination specified'))
dest = pats.pop()
def walkpat(pat):
@@ -1554,12 +1562,12 @@
rewriteutil.precheck(repo, [ctx.rev()], b'uncopy')
absdest = pathutil.canonpath(repo.root, cwd, dest)
if ctx.hasdir(absdest):
- raise error.Abort(
+ raise error.InputError(
_(b'%s: --at-rev does not support a directory as destination')
% uipathfn(absdest)
)
if absdest not in ctx:
- raise error.Abort(
+ raise error.InputError(
_(b'%s: copy destination does not exist in %s')
% (uipathfn(absdest), ctx)
)
@@ -1576,12 +1584,12 @@
copylist.append(abs)
if not copylist:
- raise error.Abort(_(b'no files to copy'))
+ raise error.InputError(_(b'no files to copy'))
# TODO: Add support for `hg cp --at-rev . foo bar dir` and
# `hg cp --at-rev . dir1 dir2`, preferably unifying the code with the
# existing functions below.
if len(copylist) != 1:
- raise error.Abort(_(b'--at-rev requires a single source'))
+ raise error.InputError(_(b'--at-rev requires a single source'))
new_ctx = context.overlayworkingctx(repo)
new_ctx.setbase(ctx.p1())
@@ -1809,14 +1817,16 @@
destdirexists = os.path.isdir(dest) and not os.path.islink(dest)
if not destdirexists:
if len(pats) > 1 or matchmod.patkind(pats[0]):
- raise error.Abort(
+ raise error.InputError(
_(
b'with multiple sources, destination must be an '
b'existing directory'
)
)
if util.endswithsep(dest):
- raise error.Abort(_(b'destination %s is not a directory') % dest)
+ raise error.InputError(
+ _(b'destination %s is not a directory') % dest
+ )
tfn = targetpathfn
if after:
@@ -1828,7 +1838,7 @@
continue
copylist.append((tfn(pat, dest, srcs), srcs))
if not copylist:
- raise error.Abort(_(b'no files to copy'))
+ raise error.InputError(_(b'no files to copy'))
errors = 0
for targetpath, srcs in copylist:
@@ -1919,7 +1929,7 @@
parents.append(repo[nullid])
if opts.get(b'exact'):
if not nodeid or not p1:
- raise error.Abort(_(b'not a Mercurial patch'))
+ raise error.InputError(_(b'not a Mercurial patch'))
p1 = repo[p1]
p2 = repo[p2 or nullid]
elif p2:
@@ -2255,7 +2265,7 @@
try:
rev = mrevs.max()
except ValueError:
- raise error.Abort(_(b"revision matching date not found"))
+ raise error.InputError(_(b"revision matching date not found"))
ui.status(
_(b"found revision %d from %s\n")
@@ -2338,7 +2348,9 @@
ui, repo, match, prefix, uipathfn, explicitonly, dryrun, interactive
):
if dryrun and interactive:
- raise error.Abort(_(b"cannot specify both --dry-run and --interactive"))
+ raise error.InputError(
+ _(b"cannot specify both --dry-run and --interactive")
+ )
bad = []
badfn = lambda x, y: bad.append(x) or match.bad(x, y)
wctx = repo[None]
@@ -3050,9 +3062,9 @@
if finishdesc:
text = finishdesc(text)
if not text.strip():
- raise error.Abort(_(b"empty commit message"))
+ raise error.InputError(_(b"empty commit message"))
if unchangedmessagedetection and editortext == templatetext:
- raise error.Abort(_(b"commit message unchanged"))
+ raise error.InputError(_(b"commit message unchanged"))
return text
--- a/mercurial/commands.py Wed Oct 21 19:00:16 2020 -0700
+++ b/mercurial/commands.py Tue Oct 06 22:36:15 2020 -0700
@@ -189,7 +189,7 @@
if not abortstate:
raise error.Abort(_(b'no operation in progress'))
if not abortstate.abortfunc:
- raise error.Abort(
+ raise error.InputError(
(
_(b"%s in progress but does not support 'hg abort'")
% (abortstate._opname)
@@ -418,7 +418,9 @@
"""
opts = pycompat.byteskwargs(opts)
if not pats:
- raise error.Abort(_(b'at least one filename or pattern is required'))
+ raise error.InputError(
+ _(b'at least one filename or pattern is required')
+ )
if opts.get(b'follow'):
# --follow is deprecated and now just an alias for -f/--file
@@ -439,7 +441,7 @@
and (not opts.get(b'changeset'))
and (not opts.get(b'number'))
):
- raise error.Abort(_(b'at least one of -n/-c is required for -l'))
+ raise error.InputError(_(b'at least one of -n/-c is required for -l'))
rev = opts.get(b'rev')
if rev:
@@ -650,18 +652,20 @@
repo = scmutil.unhidehashlikerevs(repo, [rev], b'nowarn')
ctx = scmutil.revsingle(repo, rev)
if not ctx:
- raise error.Abort(_(b'no working directory: please specify a revision'))
+ raise error.InputError(
+ _(b'no working directory: please specify a revision')
+ )
node = ctx.node()
dest = cmdutil.makefilename(ctx, dest)
if os.path.realpath(dest) == repo.root:
- raise error.Abort(_(b'repository root cannot be destination'))
+ raise error.InputError(_(b'repository root cannot be destination'))
kind = opts.get(b'type') or archival.guesskind(dest) or b'files'
prefix = opts.get(b'prefix')
if dest == b'-':
if kind == b'files':
- raise error.Abort(_(b'cannot archive plain files to stdout'))
+ raise error.InputError(_(b'cannot archive plain files to stdout'))
dest = cmdutil.makefileobj(ctx, dest)
if not prefix:
prefix = os.path.basename(repo.root) + b'-%h'
@@ -774,13 +778,13 @@
opts = pycompat.byteskwargs(opts)
if rev and node:
- raise error.Abort(_(b"please specify just one revision"))
+ raise error.InputError(_(b"please specify just one revision"))
if not rev:
rev = node
if not rev:
- raise error.Abort(_(b"please specify a revision to backout"))
+ raise error.InputError(_(b"please specify a revision to backout"))
date = opts.get(b'date')
if date:
@@ -793,23 +797,27 @@
op1, op2 = repo.dirstate.parents()
if not repo.changelog.isancestor(node, op1):
- raise error.Abort(_(b'cannot backout change that is not an ancestor'))
+ raise error.InputError(
+ _(b'cannot backout change that is not an ancestor')
+ )
p1, p2 = repo.changelog.parents(node)
if p1 == nullid:
- raise error.Abort(_(b'cannot backout a change with no parents'))
+ raise error.InputError(_(b'cannot backout a change with no parents'))
if p2 != nullid:
if not opts.get(b'parent'):
- raise error.Abort(_(b'cannot backout a merge changeset'))
+ raise error.InputError(_(b'cannot backout a merge changeset'))
p = repo.lookup(opts[b'parent'])
if p not in (p1, p2):
- raise error.Abort(
+ raise error.InputError(
_(b'%s is not a parent of %s') % (short(p), short(node))
)
parent = p
else:
if opts.get(b'parent'):
- raise error.Abort(_(b'cannot use --parent on non-merge changeset'))
+ raise error.InputError(
+ _(b'cannot use --parent on non-merge changeset')
+ )
parent = p1
# the backout should appear on the same branch
@@ -1001,7 +1009,7 @@
else:
reset = True
elif extra:
- raise error.Abort(_(b'incompatible arguments'))
+ raise error.InputError(_(b'incompatible arguments'))
incompatibles = {
b'--bad': bad,
@@ -1015,7 +1023,7 @@
enabled = [x for x in incompatibles if incompatibles[x]]
if len(enabled) > 1:
- raise error.Abort(
+ raise error.InputError(
_(b'%s and %s are incompatible') % tuple(sorted(enabled)[0:2])
)
@@ -1236,7 +1244,7 @@
opts, b'inactive', [b'delete', b'list']
)
if not names and action in {b'add', b'delete'}:
- raise error.Abort(_(b"bookmark name required"))
+ raise error.InputError(_(b"bookmark name required"))
if action in {b'add', b'delete', b'rename', b'inactive'}:
with repo.wlock(), repo.lock(), repo.transaction(b'bookmark') as tr:
@@ -1245,9 +1253,11 @@
bookmarks.delete(repo, tr, names)
elif action == b'rename':
if not names:
- raise error.Abort(_(b"new bookmark name required"))
+ raise error.InputError(_(b"new bookmark name required"))
elif len(names) > 1:
- raise error.Abort(_(b"only one new bookmark name allowed"))
+ raise error.InputError(
+ _(b"only one new bookmark name allowed")
+ )
oldname = repo._bookmarks.expandname(opts[b'rename'])
bookmarks.rename(repo, tr, oldname, names[0], force, inactive)
elif action == b'add':
@@ -1323,7 +1333,9 @@
if not opts.get(b'clean') and not label:
if revs:
- raise error.Abort(_(b"no branch name specified for the revisions"))
+ raise error.InputError(
+ _(b"no branch name specified for the revisions")
+ )
ui.write(b"%s\n" % repo.dirstate.branch())
return
@@ -1340,7 +1352,7 @@
if not opts.get(b'force') and label in repo.branchmap():
if label not in [p.branch() for p in repo[None].parents()]:
- raise error.Abort(
+ raise error.InputError(
_(b'a branch of the same name already exists'),
# i18n: "it" refers to an existing branch
hint=_(b"use 'hg update' to switch to it"),
@@ -1542,7 +1554,7 @@
revstrings = opts[b'rev']
revs = scmutil.revrange(repo, revstrings)
if revstrings and not revs:
- raise error.Abort(_(b'no commits to bundle'))
+ raise error.InputError(_(b'no commits to bundle'))
bundletype = opts.get(b'type', b'bzip2').lower()
try:
@@ -1550,7 +1562,7 @@
repo, bundletype, strict=False
)
except error.UnsupportedBundleSpecification as e:
- raise error.Abort(
+ raise error.InputError(
pycompat.bytestr(e),
hint=_(b"see 'hg help bundlespec' for supported values for --type"),
)
@@ -1558,14 +1570,14 @@
# Packed bundles are a pseudo bundle format for now.
if cgversion == b's1':
- raise error.Abort(
+ raise error.InputError(
_(b'packed bundles cannot be produced by "hg bundle"'),
hint=_(b"use 'hg debugcreatestreamclonebundle'"),
)
if opts.get(b'all'):
if dest:
- raise error.Abort(
+ raise error.InputError(
_(b"--all is incompatible with specifying a destination")
)
if opts.get(b'base'):
@@ -1580,7 +1592,7 @@
if base:
if dest:
- raise error.Abort(
+ raise error.InputError(
_(b"--base is incompatible with specifying a destination")
)
common = [repo[rev].node() for rev in base]
@@ -2034,11 +2046,13 @@
extra[b'close'] = b'1'
if repo[b'.'].closesbranch():
- raise error.Abort(
+ raise error.InputError(
_(b'current revision is already a branch closing head')
)
elif not bheads:
- raise error.Abort(_(b'branch "%s" has no heads to close') % branch)
+ raise error.InputError(
+ _(b'branch "%s" has no heads to close') % branch
+ )
elif (
branch == repo[b'.'].branch()
and repo[b'.'].node() not in bheads
@@ -2048,17 +2062,19 @@
b'use --force-close-branch to close branch from a non-head'
b' changeset'
)
- raise error.Abort(_(b'can only close branch heads'), hint=hint)
+ raise error.InputError(_(b'can only close branch heads'), hint=hint)
elif opts.get(b'amend'):
if (
repo[b'.'].p1().branch() != branch
and repo[b'.'].p2().branch() != branch
):
- raise error.Abort(_(b'can only close branch heads'))
+ raise error.InputError(_(b'can only close branch heads'))
if opts.get(b'amend'):
if ui.configbool(b'ui', b'commitsubrepos'):
- raise error.Abort(_(b'cannot amend with ui.commitsubrepos enabled'))
+ raise error.InputError(
+ _(b'cannot amend with ui.commitsubrepos enabled')
+ )
old = repo[b'.']
rewriteutil.precheck(repo, [old.rev()], b'amend')
@@ -2200,17 +2216,19 @@
cmdutil.check_at_most_one_arg(opts, *editopts[1:])
if opts.get(b'local'):
if not repo:
- raise error.Abort(_(b"can't use --local outside a repository"))
+ raise error.InputError(
+ _(b"can't use --local outside a repository")
+ )
paths = [repo.vfs.join(b'hgrc')]
elif opts.get(b'global'):
paths = rcutil.systemrcpath()
elif opts.get(b'shared'):
if not repo.shared():
- raise error.Abort(
+ raise error.InputError(
_(b"repository is not shared; can't use --shared")
)
if requirements.SHARESAFE_REQUIREMENT not in repo.requirements:
- raise error.Abort(
+ raise error.InputError(
_(
b"share safe feature not unabled; "
b"unable to edit shared source repository config"
@@ -2241,7 +2259,7 @@
editor = ui.geteditor()
ui.system(
b"%s \"%s\"" % (editor, f),
- onerr=error.Abort,
+ onerr=error.InputError,
errprefix=_(b"edit failed"),
blockedtag=b'config_edit',
)
@@ -2649,7 +2667,7 @@
if bookmark:
if bookmark not in repo._bookmarks:
- raise error.Abort(_(b"bookmark '%s' not found") % bookmark)
+ raise error.InputError(_(b"bookmark '%s' not found") % bookmark)
revs = scmutil.bookmarkrevs(repo, bookmark)
else:
@@ -2660,7 +2678,7 @@
revs = scmutil.revrange(repo, changesets)
if not revs:
- raise error.Abort(_(b"export requires at least one changeset"))
+ raise error.InputError(_(b"export requires at least one changeset"))
if len(revs) > 1:
ui.note(_(b'exporting patches:\n'))
else:
@@ -2825,7 +2843,7 @@
opts = pycompat.byteskwargs(opts)
if not pats:
- raise error.Abort(_(b'no files specified'))
+ raise error.InputError(_(b'no files specified'))
m = scmutil.match(repo[None], pats, opts)
dryrun, interactive = opts.get(b'dry_run'), opts.get(b'interactive')
@@ -3052,7 +3070,7 @@
elif opts.get(b'continue'):
cont = True
if revs:
- raise error.Abort(_(b"can't specify --continue and revisions"))
+ raise error.InputError(_(b"can't specify --continue and revisions"))
# read in unfinished revisions
if graftstate.exists():
statedata = cmdutil.readgraftstate(repo, graftstate)
@@ -3072,7 +3090,7 @@
cmdutil.wrongtooltocontinue(repo, _(b'graft'))
else:
if not revs:
- raise error.Abort(_(b'no revisions specified'))
+ raise error.InputError(_(b'no revisions specified'))
cmdutil.checkunfinished(repo)
cmdutil.bailifchanged(repo)
revs = scmutil.revrange(repo, revs)
@@ -3090,7 +3108,7 @@
if not revs:
return -1
if basectx is not None and len(revs) != 1:
- raise error.Abort(_(b'only one revision allowed with --base '))
+ raise error.InputError(_(b'only one revision allowed with --base '))
# Don't check in the --continue case, in effect retaining --force across
# --continues. That's because without --force, any revisions we decided to
@@ -3765,7 +3783,7 @@
opts = pycompat.byteskwargs(opts)
if not repo and not source:
- raise error.Abort(
+ raise error.InputError(
_(b"there is no Mercurial repository here (.hg not found)")
)
@@ -3784,7 +3802,7 @@
if not repo:
if num or branch or tags:
- raise error.Abort(
+ raise error.InputError(
_(b"can't query remote revision number, branch, or tags")
)
if not rev and revs:
@@ -4056,7 +4074,7 @@
cmdutil.check_incompatible_arguments(opts, 'exact', ['edit', 'prefix'])
opts = pycompat.byteskwargs(opts)
if not patch1:
- raise error.Abort(_(b'need at least one patch to import'))
+ raise error.InputError(_(b'need at least one patch to import'))
patches = (patch1,) + patches
@@ -4069,11 +4087,11 @@
try:
sim = float(opts.get(b'similarity') or 0)
except ValueError:
- raise error.Abort(_(b'similarity must be a number'))
+ raise error.InputError(_(b'similarity must be a number'))
if sim < 0 or sim > 100:
- raise error.Abort(_(b'similarity must be between 0 and 100'))
+ raise error.InputError(_(b'similarity must be between 0 and 100'))
if sim and not update:
- raise error.Abort(_(b'cannot use --similarity with --bypass'))
+ raise error.InputError(_(b'cannot use --similarity with --bypass'))
base = opts[b"base"]
msgs = []
@@ -4130,7 +4148,7 @@
break
if not haspatch:
- raise error.Abort(_(b'%s: no diffs found') % patchurl)
+ raise error.InputError(_(b'%s: no diffs found') % patchurl)
if msgs:
repo.savecommitmessage(b'\n* * *\n'.join(msgs))
@@ -4586,11 +4604,11 @@
linerange = opts.get(b'line_range')
if linerange and not opts.get(b'follow'):
- raise error.Abort(_(b'--line-range requires --follow'))
+ raise error.InputError(_(b'--line-range requires --follow'))
if linerange and pats:
# TODO: take pats as patterns with no line-range filter
- raise error.Abort(
+ raise error.InputError(
_(b'FILE arguments are not compatible with --line-range option')
)
@@ -4652,7 +4670,7 @@
if opts.get(b'all'):
if rev or node:
- raise error.Abort(_(b"can't specify a revision with --all"))
+ raise error.InputError(_(b"can't specify a revision with --all"))
res = set()
for rev in repo:
@@ -4667,7 +4685,7 @@
return
if rev and node:
- raise error.Abort(_(b"please specify just one revision"))
+ raise error.InputError(_(b"please specify just one revision"))
if not node:
node = rev
@@ -4754,11 +4772,11 @@
hint=state.hint(),
)
if node:
- raise error.Abort(_(b"cannot specify a node with --abort"))
+ raise error.InputError(_(b"cannot specify a node with --abort"))
return hg.abortmerge(repo.ui, repo)
if opts.get(b'rev') and node:
- raise error.Abort(_(b"please specify just one revision"))
+ raise error.InputError(_(b"please specify just one revision"))
if not node:
node = opts.get(b'rev')
@@ -4766,7 +4784,7 @@
ctx = scmutil.revsingle(repo, node)
else:
if ui.configbool(b'commands', b'merge.require-rev'):
- raise error.Abort(
+ raise error.InputError(
_(
b'configuration requires specifying revision to merge '
b'with'
@@ -4775,7 +4793,9 @@
ctx = repo[destutil.destmerge(repo)]
if ctx.node() is None:
- raise error.Abort(_(b'merging with the working copy has no effect'))
+ raise error.InputError(
+ _(b'merging with the working copy has no effect')
+ )
if opts.get(b'preview'):
# find nodes that are ancestors of p2 but not of p1
@@ -4968,7 +4988,7 @@
if file_:
m = scmutil.match(ctx, (file_,), opts)
if m.anypats() or len(m.files()) != 1:
- raise error.Abort(_(b'can only specify an explicit filename'))
+ raise error.InputError(_(b'can only specify an explicit filename'))
file_ = m.files()[0]
filenodes = []
for cp in ctx.parents():
@@ -4979,7 +4999,7 @@
except error.LookupError:
pass
if not filenodes:
- raise error.Abort(_(b"'%s' not found in manifest!") % file_)
+ raise error.InputError(_(b"'%s' not found in manifest!") % file_)
p = []
for fn in filenodes:
fctx = repo.filectx(file_, fileid=fn)
@@ -5121,7 +5141,7 @@
for idx, name in enumerate(phases.cmdphasenames):
if opts[name]:
if targetphase is not None:
- raise error.Abort(_(b'only one phase can be specified'))
+ raise error.InputError(_(b'only one phase can be specified'))
targetphase = idx
# look for specified revision
@@ -5144,7 +5164,7 @@
with repo.lock(), repo.transaction(b"phase") as tr:
# set phase
if not revs:
- raise error.Abort(_(b'empty revision set'))
+ raise error.InputError(_(b'empty revision set'))
nodes = [repo[r].node() for r in revs]
# moving revision from public to draft may hide them
# We have to check result on an unfiltered repository
@@ -5287,7 +5307,7 @@
):
msg = _(b'update destination required by configuration')
hint = _(b'use hg pull followed by hg update DEST')
- raise error.Abort(msg, hint=hint)
+ raise error.InputError(msg, hint=hint)
source, branches = hg.parseurl(ui.expandpath(source), opts.get(b'branch'))
ui.status(_(b'pulling from %s\n') % util.hidepassword(source))
@@ -5326,7 +5346,9 @@
for b in opts.get(b'bookmark', []):
b = repo._bookmarks.expandname(b)
if b not in remotebookmarks:
- raise error.Abort(_(b'remote bookmark %s not found!') % b)
+ raise error.InputError(
+ _(b'remote bookmark %s not found!') % b
+ )
nodes.append(remotebookmarks[b])
for i, rev in enumerate(revs):
node = fnodes[i].result()
@@ -5515,7 +5537,7 @@
if revs:
revs = [repo[r].node() for r in scmutil.revrange(repo, revs)]
if not revs:
- raise error.Abort(
+ raise error.InputError(
_(b"specified revisions evaluate to an empty set"),
hint=_(b"use different revision arguments"),
)
@@ -5526,11 +5548,11 @@
revs = scmutil.revrange(repo, [expr])
revs = [repo[rev].node() for rev in revs]
if not revs:
- raise error.Abort(
+ raise error.InputError(
_(b'default push revset for path evaluates to an empty set')
)
elif ui.configbool(b'commands', b'push.require-revs'):
- raise error.Abort(
+ raise error.InputError(
_(b'no revisions specified to push'),
hint=_(b'did you mean "hg push -r ."?'),
)
@@ -5659,7 +5681,7 @@
after, force = opts.get(b'after'), opts.get(b'force')
dryrun = opts.get(b'dry_run')
if not pats and not after:
- raise error.Abort(_(b'no files specified'))
+ raise error.InputError(_(b'no files specified'))
m = scmutil.match(repo[None], pats, opts)
subrepos = opts.get(b'subrepos')
@@ -5789,16 +5811,16 @@
actioncount = len(list(filter(None, [show, mark, unmark, remerge])))
if actioncount > 1:
- raise error.Abort(_(b"too many actions specified"))
+ raise error.InputError(_(b"too many actions specified"))
elif actioncount == 0 and ui.configbool(
b'commands', b'resolve.explicit-re-merge'
):
hint = _(b'use --mark, --unmark, --list or --re-merge')
- raise error.Abort(_(b'no action specified'), hint=hint)
+ raise error.InputError(_(b'no action specified'), hint=hint)
if pats and all:
- raise error.Abort(_(b"can't specify --all and patterns"))
+ raise error.InputError(_(b"can't specify --all and patterns"))
if not (all or pats or show or mark or unmark):
- raise error.Abort(
+ raise error.InputError(
_(b'no files or directories specified'),
hint=b'use --all to re-merge all unresolved files',
)
@@ -6082,7 +6104,7 @@
parent, p2 = repo.dirstate.parents()
if not opts.get(b'rev') and p2 != nullid:
# revert after merge is a trap for new users (issue2915)
- raise error.Abort(
+ raise error.InputError(
_(b'uncommitted merge with no revision specified'),
hint=_(b"use 'hg update' or see 'hg help revert'"),
)
@@ -6105,7 +6127,7 @@
b"uncommitted merge, use --all to discard all changes,"
b" or 'hg update -C .' to abort the merge"
)
- raise error.Abort(msg, hint=hint)
+ raise error.InputError(msg, hint=hint)
dirty = any(repo.status())
node = ctx.node()
if node != parent:
@@ -6129,7 +6151,7 @@
hint = _(b"uncommitted changes, use --all to discard all changes")
else:
hint = _(b"use --all to revert all files")
- raise error.Abort(msg, hint=hint)
+ raise error.InputError(msg, hint=hint)
return cmdutil.revert(ui, repo, ctx, *pats, **pycompat.strkwargs(opts))
@@ -6339,7 +6361,7 @@
cmdutil.check_incompatible_arguments(opts, 'stdio', ['cmdserver'])
opts = pycompat.byteskwargs(opts)
if opts[b"print_url"] and ui.verbose:
- raise error.Abort(_(b"cannot use --print-url with --verbose"))
+ raise error.InputError(_(b"cannot use --print-url with --verbose"))
if opts[b"stdio"]:
if repo is None:
@@ -6466,7 +6488,7 @@
if opts.get(opt):
for i, allowable in allowables:
if opts[i] and opt not in allowable:
- raise error.Abort(
+ raise error.InputError(
_(
b"options '--%s' and '--%s' may not be "
b"used together"
@@ -6477,7 +6499,9 @@
if checkopt(b'cleanup'):
if pats:
- raise error.Abort(_(b"cannot specify names when using '--cleanup'"))
+ raise error.InputError(
+ _(b"cannot specify names when using '--cleanup'")
+ )
return shelvemod.cleanupcmd(ui, repo)
elif checkopt(b'delete'):
return shelvemod.deletecmd(ui, repo, pats)
@@ -6643,7 +6667,7 @@
if revs and terse:
msg = _(b'cannot use --terse with --rev')
- raise error.Abort(msg)
+ raise error.InputError(msg)
elif change:
repo = scmutil.unhidehashlikerevs(repo, [change], b'nowarn')
ctx2 = scmutil.revsingle(repo, change, None)
@@ -7114,11 +7138,11 @@
rev_ = b"."
names = [t.strip() for t in (name1,) + names]
if len(names) != len(set(names)):
- raise error.Abort(_(b'tag names must be unique'))
+ raise error.InputError(_(b'tag names must be unique'))
for n in names:
scmutil.checknewlabel(repo, n, b'tag')
if not n:
- raise error.Abort(
+ raise error.InputError(
_(b'tag names cannot consist entirely of whitespace')
)
if opts.get(b'rev'):
@@ -7134,16 +7158,20 @@
if repo.tagtype(n) == b'global':
alltags = tagsmod.findglobaltags(ui, repo)
if alltags[n][0] == nullid:
- raise error.Abort(_(b"tag '%s' is already removed") % n)
+ raise error.InputError(
+ _(b"tag '%s' is already removed") % n
+ )
if not repo.tagtype(n):
- raise error.Abort(_(b"tag '%s' does not exist") % n)
+ raise error.InputError(_(b"tag '%s' does not exist") % n)
if repo.tagtype(n) != expectedtype:
if expectedtype == b'global':
- raise error.Abort(
+ raise error.InputError(
_(b"tag '%s' is not a global tag") % n
)
else:
- raise error.Abort(_(b"tag '%s' is not a local tag") % n)
+ raise error.InputError(
+ _(b"tag '%s' is not a local tag") % n
+ )
rev_ = b'null'
if not message:
# we don't translate commit messages
@@ -7151,7 +7179,7 @@
elif not opts.get(b'force'):
for n in names:
if n in repo.tags():
- raise error.Abort(
+ raise error.InputError(
_(b"tag '%s' already exists (use -f to force)") % n
)
if not opts.get(b'local'):
@@ -7160,7 +7188,7 @@
raise error.Abort(_(b'uncommitted merge'))
bheads = repo.branchheads()
if not opts.get(b'force') and bheads and p1 not in bheads:
- raise error.Abort(
+ raise error.InputError(
_(
b'working directory is not at a branch head '
b'(use -f to force)'
@@ -7192,7 +7220,7 @@
not opts.get(b'remove')
and scmutil.revsingle(repo, rev_).rev() == nullrev
):
- raise error.Abort(_(b"cannot tag null revision"))
+ raise error.InputError(_(b"cannot tag null revision"))
tagsmod.tag(
repo,
@@ -7324,7 +7352,7 @@
f = hg.openpath(ui, fname)
gen = exchange.readbundle(ui, f, fname)
if isinstance(gen, streamclone.streamcloneapplier):
- raise error.Abort(
+ raise error.InputError(
_(
b'packed bundles cannot be applied with '
b'"hg unbundle"'
@@ -7519,11 +7547,11 @@
check = opts.get('check')
merge = opts.get('merge')
if rev and node:
- raise error.Abort(_(b"please specify just one revision"))
+ raise error.InputError(_(b"please specify just one revision"))
if ui.configbool(b'commands', b'update.requiredest'):
if not node and not rev and not date:
- raise error.Abort(
+ raise error.InputError(
_(b'you must specify a destination'),
hint=_(b'for example: hg update ".::"'),
)
@@ -7532,7 +7560,7 @@
rev = node
if date and rev is not None:
- raise error.Abort(_(b"you can't specify a revision and a date"))
+ raise error.InputError(_(b"you can't specify a revision and a date"))
updatecheck = None
if check:
--- a/mercurial/error.py Wed Oct 21 19:00:16 2020 -0700
+++ b/mercurial/error.py Tue Oct 06 22:36:15 2020 -0700
@@ -181,6 +181,13 @@
return pycompat.sysstr(self.__bytes__())
+class InputError(Abort):
+ """Indicates that the user made an error in their input.
+
+ Examples: Invalid command, invalid flags, invalid revision.
+ """
+
+
class HookLoadError(Abort):
"""raised when loading a hook fails, aborting an operation
--- a/mercurial/scmutil.py Wed Oct 21 19:00:16 2020 -0700
+++ b/mercurial/scmutil.py Tue Oct 06 22:36:15 2020 -0700
@@ -219,6 +219,8 @@
except error.WdirUnsupported:
ui.error(_(b"abort: working directory revision cannot be specified\n"))
except error.Abort as inst:
+ if isinstance(inst, error.InputError):
+ detailed_exit_code = 10
ui.error(_(b"abort: %s\n") % inst.message)
if inst.hint:
ui.error(_(b"(%s)\n") % inst.hint)
--- a/tests/test-add.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-add.t Tue Oct 06 22:36:15 2020 -0700
@@ -286,7 +286,7 @@
$ hg commit -qAm "bar"
$ hg forget foo --dry-run -i
abort: cannot specify both --dry-run and --interactive
- [255]
+ [10]
$ hg forget foo --config ui.interactive=True -i << EOF
> ?
--- a/tests/test-amend.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-amend.t Tue Oct 06 22:36:15 2020 -0700
@@ -153,7 +153,7 @@
$ echo FOO > $TESTTMP/msg
$ hg amend -l $TESTTMP/msg -m BAR
abort: cannot specify both --message and --logfile
- [255]
+ [10]
$ hg amend -l $TESTTMP/msg
saved backup bundle to $TESTTMP/repo1/.hg/strip-backup/974f07f28537-edb6470a-amend.hg (obsstore-off !)
$ hg log -r . -T '{node|short} {desc}\n'
@@ -226,7 +226,7 @@
$ hg add bar
$ hg amend --note 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
abort: cannot store a note of more than 255 bytes
- [255]
+ [10]
$ hg amend --note "adding bar"
$ hg debugobsolete -r .
112478962961147124edd43549aedd1a335e44bf be169c7e8dbe21cd10b3d79691cbe7f241e3c21c 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '8', 'operation': 'amend', 'user': 'test'}
@@ -471,7 +471,7 @@
$ hg amend -D --date '0 0'
abort: cannot specify both --date and --currentdate
- [255]
+ [10]
Close branch
--- a/tests/test-archive.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-archive.t Tue Oct 06 22:36:15 2020 -0700
@@ -560,7 +560,7 @@
$ cd ../empty
$ hg archive ../test-empty
abort: no working directory: please specify a revision
- [255]
+ [10]
old file -- date clamped to 1980
--- a/tests/test-backout.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-backout.t Tue Oct 06 22:36:15 2020 -0700
@@ -5,10 +5,10 @@
$ hg backout
abort: please specify a revision to backout
- [255]
+ [10]
$ hg backout -r 0 0
abort: please specify just one revision
- [255]
+ [10]
basic operation
(this also tests that editor is invoked if the commit message is not
@@ -210,7 +210,7 @@
$ hg backout 1
abort: cannot backout change that is not an ancestor
- [255]
+ [10]
$ echo c > c
$ hg ci -Am2
adding c
@@ -227,7 +227,7 @@
$ hg backout 1
abort: cannot backout change that is not an ancestor
- [255]
+ [10]
$ hg summary
parent: 2:db815d6d32e6 tip
2
@@ -464,19 +464,19 @@
$ hg backout 4
abort: cannot backout a merge changeset
- [255]
+ [10]
backout of merge with bad parent should fail
$ hg backout --parent 0 4
abort: cb9a9f314b8b is not a parent of b2f3bb92043e
- [255]
+ [10]
backout of non-merge with parent should fail
$ hg backout --parent 0 3
abort: cannot use --parent on non-merge changeset
- [255]
+ [10]
backout with valid parent should be ok
@@ -805,7 +805,7 @@
$ hg backout --merge --no-commit 2
abort: cannot specify both --no-commit and --merge
- [255]
+ [10]
Ensure that backout out the same changeset twice performs correctly:
--- a/tests/test-bisect.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-bisect.t Tue Oct 06 22:36:15 2020 -0700
@@ -751,46 +751,46 @@
$ hg bisect -r
$ hg bisect -b -c false
abort: --bad and --command are incompatible
- [255]
+ [10]
$ hg bisect -b -e
abort: --bad and --extend are incompatible
- [255]
+ [10]
$ hg bisect -b -g
abort: --bad and --good are incompatible
- [255]
+ [10]
$ hg bisect -b -r
abort: --bad and --reset are incompatible
- [255]
+ [10]
$ hg bisect -b -s
abort: --bad and --skip are incompatible
- [255]
+ [10]
$ hg bisect -c false -e
abort: --command and --extend are incompatible
- [255]
+ [10]
$ hg bisect -c false -g
abort: --command and --good are incompatible
- [255]
+ [10]
$ hg bisect -c false -r
abort: --command and --reset are incompatible
- [255]
+ [10]
$ hg bisect -c false -s
abort: --command and --skip are incompatible
- [255]
+ [10]
$ hg bisect -e -g
abort: --extend and --good are incompatible
- [255]
+ [10]
$ hg bisect -e -r
abort: --extend and --reset are incompatible
- [255]
+ [10]
$ hg bisect -e -s
abort: --extend and --skip are incompatible
- [255]
+ [10]
$ hg bisect -g -r
abort: --good and --reset are incompatible
- [255]
+ [10]
$ hg bisect -g -s
abort: --good and --skip are incompatible
- [255]
+ [10]
$ hg bisect -r -s
abort: --reset and --skip are incompatible
- [255]
+ [10]
--- a/tests/test-bookmarks-pushpull.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-bookmarks-pushpull.t Tue Oct 06 22:36:15 2020 -0700
@@ -386,7 +386,7 @@
$ hg pull -B anotherbadname ../a
pulling from ../a
abort: remote bookmark anotherbadname not found!
- [255]
+ [10]
divergent bookmarks
@@ -1382,10 +1382,10 @@
[1]
$ hg push --all-bookmarks -r 1 ../ab2
abort: cannot specify both --all-bookmarks and --rev
- [255]
+ [10]
$ hg push --all-bookmarks -B A ../ab2
abort: cannot specify both --all-bookmarks and --bookmark
- [255]
+ [10]
$ hg push --all-bookmarks ../ab2
pushing to ../ab2
searching for changes
--- a/tests/test-bookmarks.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-bookmarks.t Tue Oct 06 22:36:15 2020 -0700
@@ -82,10 +82,10 @@
[255]
$ hg bookmarks -l -r0
abort: cannot specify both --list and --rev
- [255]
+ [10]
$ hg bookmarks -l --inactive
abort: cannot specify both --inactive and --list
- [255]
+ [10]
$ hg log -T '{bookmarks % "{rev} {bookmark}\n"}'
0 X
@@ -327,16 +327,16 @@
$ hg bookmark -m Y
abort: new bookmark name required
- [255]
+ [10]
$ hg bookmark -m Y Y2 Y3
abort: only one new bookmark name allowed
- [255]
+ [10]
delete without name
$ hg bookmark -d
abort: bookmark name required
- [255]
+ [10]
delete nonexistent bookmark
@@ -348,7 +348,7 @@
$ hg bookmark -d --inactive Y
abort: cannot specify both --inactive and --delete
- [255]
+ [10]
bookmark name with spaces should be stripped
@@ -476,15 +476,15 @@
$ hg bookmark -m Y -d Z
abort: cannot specify both --delete and --rename
- [255]
+ [10]
$ hg bookmark -r 1 -d Z
abort: cannot specify both --delete and --rev
- [255]
+ [10]
$ hg bookmark -r 1 -m Z Y
abort: cannot specify both --rename and --rev
- [255]
+ [10]
force bookmark with existing name
@@ -522,7 +522,7 @@
$ hg bookmark -r .
abort: bookmark name required
- [255]
+ [10]
bookmark name with whitespace only
@@ -793,7 +793,7 @@
$ hg -R ../cloned-bookmarks-manual-update update -d 1986
abort: revision matching date not found
- [255]
+ [10]
$ hg -R ../cloned-bookmarks-manual-update update
updating to active bookmark Y
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
--- a/tests/test-branch-change.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-branch-change.t Tue Oct 06 22:36:15 2020 -0700
@@ -34,7 +34,7 @@
$ hg branch -r .
abort: no branch name specified for the revisions
- [255]
+ [10]
Setting an invalid branch name
@@ -52,7 +52,7 @@
$ hg branch -r 2 -r 4 foo
abort: cannot change branch of non-linear revisions
- [255]
+ [10]
Change in middle of the stack (linear commits)
@@ -74,7 +74,7 @@
$ hg branch -r 'draft() - all()' foo
abort: empty revision set
- [255]
+ [10]
Changing branch on linear set of commits from head
@@ -123,7 +123,7 @@
$ hg branch -r . default
abort: a branch of the same name already exists
- [255]
+ [10]
Changing on a branch head which is not topological head
@@ -149,7 +149,7 @@
$ hg branch -r 4 --hidden foobar
abort: cannot change branch of a obsolete changeset
- [255]
+ [10]
Make sure bookmark movement is correct
@@ -353,7 +353,7 @@
changed branch on 1 changesets
$ hg branch -r . stable
abort: a branch of the same name already exists
- [255]
+ [10]
$ hg branch -r . stable --force
changed branch on 1 changesets
--- a/tests/test-branches.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-branches.t Tue Oct 06 22:36:15 2020 -0700
@@ -75,12 +75,12 @@
$ hg branch 'b '
abort: a branch of the same name already exists
(use 'hg update' to switch to it)
- [255]
+ [10]
$ hg branch ' b'
abort: a branch of the same name already exists
(use 'hg update' to switch to it)
- [255]
+ [10]
verify update will accept invalid legacy branch names
@@ -281,7 +281,7 @@
$ hg commit -d '9 0' --close-branch -m 'close this part branch too'
$ hg commit -d '9 0' --close-branch -m 're-closing this branch'
abort: current revision is already a branch closing head
- [255]
+ [10]
$ hg log -r tip --debug
changeset: 12:e3d49c0575d8fc2cb1cd6859c747c14f5f6d499f
@@ -959,7 +959,7 @@
$ hg ci -m "closing branch" --close-branch
abort: can only close branch heads
(use --force-close-branch to close branch from a non-head changeset)
- [255]
+ [10]
$ hg up 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
@@ -984,7 +984,7 @@
$ hg ci -m "branch closed" --close-branch
abort: can only close branch heads
(use --force-close-branch to close branch from a non-head changeset)
- [255]
+ [10]
$ hg ci -m "branch closed" --force-close-branch
created new head
--- a/tests/test-bundle-r.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-bundle-r.t Tue Oct 06 22:36:15 2020 -0700
@@ -172,10 +172,10 @@
$ hg -R test bundle --base 2 -r tip test-bundle-branch1.hg test-3
abort: --base is incompatible with specifying a destination
- [255]
+ [10]
$ hg -R test bundle -a -r tip test-bundle-branch1.hg test-3
abort: --all is incompatible with specifying a destination
- [255]
+ [10]
$ hg -R test bundle -r tip test-bundle-branch1.hg
abort: repository default-push not found!
[255]
--- a/tests/test-bundle-type.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-bundle-type.t Tue Oct 06 22:36:15 2020 -0700
@@ -34,12 +34,12 @@
$ hg bundle -a -t unknown out.hg
abort: unknown is not a recognized bundle specification
(see 'hg help bundlespec' for supported values for --type)
- [255]
+ [10]
$ hg bundle -a -t unknown-v2 out.hg
abort: unknown compression is not supported
(see 'hg help bundlespec' for supported values for --type)
- [255]
+ [10]
$ cd ..
@@ -199,7 +199,7 @@
$ hg -R tzstd bundle -a -t zstd-v1 zstd-v1
abort: compression engine zstd is not supported on v1 bundles
(see 'hg help bundlespec' for supported values for --type)
- [255]
+ [10]
#else
@@ -228,5 +228,5 @@
$ hg bundle -a -t garbage ../bgarbage
abort: garbage is not a recognized bundle specification
(see 'hg help bundlespec' for supported values for --type)
- [255]
+ [10]
$ cd ..
--- a/tests/test-bundle.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-bundle.t Tue Oct 06 22:36:15 2020 -0700
@@ -288,7 +288,7 @@
$ hg -R test bundle -t packed1 packed.hg
abort: packed bundles cannot be produced by "hg bundle"
(use 'hg debugcreatestreamclonebundle')
- [255]
+ [10]
packed1 is produced properly
@@ -349,7 +349,7 @@
$ hg -R packed unbundle packed.hg
abort: packed bundles cannot be applied with "hg unbundle"
(use "hg debugapplystreamclonebundle")
- [255]
+ [10]
packed1 can be consumed from debug command
@@ -844,7 +844,7 @@
$ hg bundle -r 'public()' no-output.hg
abort: no commits to bundle
- [255]
+ [10]
$ cd ..
--- a/tests/test-clone-update-order.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-clone-update-order.t Tue Oct 06 22:36:15 2020 -0700
@@ -22,7 +22,7 @@
$ hg clone -U -u . .#other ../b -r 0 -r 1 -r 2 -b other
abort: cannot specify both --noupdate and --updaterev
- [255]
+ [10]
$ hg clone -U .#other ../b -r 0 -r 1 -r 2 -b other
adding changesets
--- a/tests/test-clone.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-clone.t Tue Oct 06 22:36:15 2020 -0700
@@ -254,7 +254,7 @@
$ hg clone --noupdate --updaterev 1 a ua
abort: cannot specify both --noupdate and --updaterev
- [255]
+ [10]
Testing clone -u:
--- a/tests/test-commandserver.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-commandserver.t Tue Oct 06 22:36:15 2020 -0700
@@ -714,7 +714,7 @@
o, 'capabilities: getencoding runcommand\nencoding: *\npid: *' (glob)
*** runcommand id
abort: there is no Mercurial repository here (.hg not found)
- [255]
+ [10]
>>> from hgclient import check, readchannel, runcommand
>>> @check
--- a/tests/test-commit-amend.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-commit-amend.t Tue Oct 06 22:36:15 2020 -0700
@@ -83,7 +83,7 @@
phases: 2 draft
$ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg commit --amend
abort: empty commit message
- [255]
+ [10]
$ hg summary
parent: 1:43f1ba15f28a tip
amend base1
@@ -350,7 +350,7 @@
$ echo a >> a
$ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg commit --amend
abort: empty commit message
- [255]
+ [10]
$ hg book
book1 1:a3b65065808c
* book2 1:a3b65065808c
@@ -884,7 +884,7 @@
$ hg ci -m..
$ hg ci --amend --close-branch -m 'closing'
abort: can only close branch heads
- [255]
+ [10]
This silliness fails:
@@ -893,7 +893,7 @@
$ echo b >> b
$ hg ci --close-branch -m'open and close'
abort: branch "silliness" has no heads to close
- [255]
+ [10]
Test that amend with --secret creates new secret changeset forcibly
---------------------------------------------------------------------
--- a/tests/test-commit-interactive.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-commit-interactive.t Tue Oct 06 22:36:15 2020 -0700
@@ -20,14 +20,14 @@
[255]
$ hg commit -i --config ui.interactive=false
abort: running non-interactively
- [255]
+ [10]
$ hg commit -i empty-rw<<EOF
> n
> EOF
diff --git a/empty-rw b/empty-rw
new file mode 100644
abort: empty commit message
- [255]
+ [10]
$ hg tip -p
changeset: -1:000000000000
@@ -46,7 +46,7 @@
diff --git a/empty-rw b/empty-rw
new file mode 100644
abort: empty commit message
- [255]
+ [10]
$ hg tip -p
changeset: -1:000000000000
@@ -1350,7 +1350,7 @@
$ hg commit -i -m'will abort'
abort: cannot partially commit a merge (use "hg commit" instead)
- [255]
+ [10]
$ hg up -C
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
@@ -1494,7 +1494,7 @@
Hunk #1 FAILED at 0
1 out of 1 hunks FAILED -- saving rejects to file editedfile.rej
abort: patch failed to apply
- [255]
+ [10]
$ cat editedfile
This change will not be committed
This is the second line
@@ -1540,7 +1540,7 @@
(enter ? for help) [Ynesfdaq?] e
abort: error parsing patch: unhandled transition: range -> range
- [255]
+ [10]
Exiting editor with status 1, ignores the edit but does not stop the recording
session
@@ -1600,7 +1600,7 @@
(enter ? for help) [Ynesfdaq?] e
abort: error parsing patch: unhandled transition: file -> other
- [255]
+ [10]
$ hg up -C
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
--- a/tests/test-commit-unresolved.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-commit-unresolved.t Tue Oct 06 22:36:15 2020 -0700
@@ -58,10 +58,10 @@
$ hg merge --abort e4501
abort: cannot specify a node with --abort
- [255]
+ [10]
$ hg merge --abort --rev e4501
abort: cannot specify both --abort and --rev
- [255]
+ [10]
#if abortcommand
when in dry-run mode
@@ -145,7 +145,7 @@
$ hg merge --preview --abort
abort: cannot specify both --abort and --preview
- [255]
+ [10]
$ hg abort
aborting the merge, updating back to 68352a18a7c4
--- a/tests/test-commit.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-commit.t Tue Oct 06 22:36:15 2020 -0700
@@ -11,7 +11,7 @@
$ HGEDITOR="sh $TESTTMP/checkeditform.sh" hg commit -m ""
HGEDITFORM=commit.normal.normal
abort: empty commit message
- [255]
+ [10]
$ hg commit -d '0 0' -m commit-1
$ echo foo >> foo
$ hg commit -d '1 4444444' -m commit-3
@@ -370,7 +370,7 @@
HG: changed changed
HG: removed removed
abort: empty commit message
- [255]
+ [10]
test saving last-message.txt
@@ -456,7 +456,7 @@
HG: subrepo 'sub' is changed
HG: subrepo 'sub2' is changed
abort: empty commit message
- [255]
+ [10]
$ cat >> .hg/hgrc <<EOF
> [committemplate]
@@ -471,7 +471,7 @@
HG: Leave message empty to abort commit.
HG: no bookmark is activated
abort: empty commit message
- [255]
+ [10]
$ cat >> .hg/hgrc <<EOF
> [committemplate]
@@ -484,7 +484,7 @@
HG: Leave message empty to abort commit.
HG: no bookmark is activated
abort: empty commit message
- [255]
+ [10]
$ cat >> .hg/hgrc <<EOF
> [committemplate]
@@ -734,7 +734,7 @@
$ hg add foo2
$ HGEDITOR="sh $TESTTMP/notouching.sh" hg commit
abort: commit message unchanged
- [255]
+ [10]
$ cd ..
@@ -762,7 +762,7 @@
$ hg add foo2
$ HGEDITOR="sh $TESTTMP/notouching.sh" hg ci
abort: commit message unchanged
- [255]
+ [10]
$ HGEDITOR="sh $TESTTMP/lowercaseline.sh" hg ci
first line
HG: this is customized commit template
--- a/tests/test-config.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-config.t Tue Oct 06 22:36:15 2020 -0700
@@ -331,7 +331,7 @@
$ HGEDITOR=false hg config --edit
abort: edit failed: false exited with status 1
- [255]
+ [10]
config affected by environment variables
--- a/tests/test-confused-revert.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-confused-revert.t Tue Oct 06 22:36:15 2020 -0700
@@ -61,7 +61,7 @@
$ hg revert
abort: uncommitted merge with no revision specified
(use 'hg update' or see 'hg help revert')
- [255]
+ [10]
Revert should be ok now:
--- a/tests/test-copy.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-copy.t Tue Oct 06 22:36:15 2020 -0700
@@ -115,7 +115,7 @@
$ hg mv foo bar
foo: not copying - file is not managed
abort: no files to copy
- [255]
+ [10]
$ hg st -A
? foo
respects ui.relative-paths
@@ -124,15 +124,15 @@
$ hg mv ../foo ../bar
../foo: not copying - file is not managed
abort: no files to copy
- [255]
+ [10]
$ hg mv ../foo ../bar --config ui.relative-paths=yes
../foo: not copying - file is not managed
abort: no files to copy
- [255]
+ [10]
$ hg mv ../foo ../bar --config ui.relative-paths=no
foo: not copying - file is not managed
abort: no files to copy
- [255]
+ [10]
$ cd ..
$ rmdir dir
$ hg add foo
--- a/tests/test-dirstate-backup.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-dirstate-backup.t Tue Oct 06 22:36:15 2020 -0700
@@ -9,7 +9,7 @@
> EOF
applying patch from stdin
abort: stdin: no diffs found
- [255]
+ [10]
No dirstate backups are left behind
--- a/tests/test-export.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-export.t Tue Oct 06 22:36:15 2020 -0700
@@ -373,7 +373,7 @@
[255]
$ hg export "not all()"
abort: export requires at least one changeset
- [255]
+ [10]
Check for color output
$ cat <<EOF >> $HGRCPATH
--- a/tests/test-fix-topology.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-fix-topology.t Tue Oct 06 22:36:15 2020 -0700
@@ -411,7 +411,7 @@
$ cd fixall
$ hg fix --all --working-dir
abort: cannot specify both --working-dir and --all
- [255]
+ [10]
#if obsstore-on
$ printf "one\n" > foo.whole
--- a/tests/test-graft-interrupted.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-graft-interrupted.t Tue Oct 06 22:36:15 2020 -0700
@@ -250,17 +250,17 @@
$ hg graft --stop --continue
abort: cannot specify both --stop and --continue
- [255]
+ [10]
$ hg graft --stop -U
abort: cannot specify both --stop and --user
- [255]
+ [10]
$ hg graft --stop --rev 4
abort: cannot specify both --stop and --rev
- [255]
+ [10]
$ hg graft --stop --log
abort: cannot specify both --stop and --log
- [255]
+ [10]
$ hg graft --stop
stopped the interrupted graft
@@ -356,19 +356,19 @@
$ hg graft --continue --abort
abort: cannot specify both --abort and --continue
- [255]
+ [10]
$ hg graft --abort --stop
abort: cannot specify both --abort and --stop
- [255]
+ [10]
$ hg graft --abort --currentuser
abort: cannot specify both --abort and --user
- [255]
+ [10]
$ hg graft --abort --edit
abort: cannot specify both --abort and --edit
- [255]
+ [10]
#if abortcommand
when in dry-run mode
@@ -554,15 +554,15 @@
$ hg graft 1 --no-commit -e
abort: cannot specify both --no-commit and --edit
- [255]
+ [10]
$ hg graft 1 --no-commit --log
abort: cannot specify both --no-commit and --log
- [255]
+ [10]
$ hg graft 1 --no-commit -D
abort: cannot specify both --no-commit and --currentdate
- [255]
+ [10]
Test --no-commit is working:
$ hg graft 1 --no-commit
--- a/tests/test-graft.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-graft.t Tue Oct 06 22:36:15 2020 -0700
@@ -92,7 +92,7 @@
$ hg graft
abort: no revisions specified
- [255]
+ [10]
Can't graft ancestor:
@@ -119,10 +119,10 @@
$ hg up -q 0
$ hg graft -U --user foo 2
abort: cannot specify both --user and --currentuser
- [255]
+ [10]
$ hg graft -D --date '0 0' 2
abort: cannot specify both --date and --currentdate
- [255]
+ [10]
Can't graft with dirty wd:
@@ -337,11 +337,11 @@
$ hg graft -c 6
abort: can't specify --continue and revisions
- [255]
+ [10]
$ hg graft -c -r 6
abort: can't specify --continue and revisions
- [255]
+ [10]
Continue for real, clobber usernames
--- a/tests/test-identify.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-identify.t Tue Oct 06 22:36:15 2020 -0700
@@ -6,7 +6,7 @@
$ hg id
abort: there is no Mercurial repository here (.hg not found)
- [255]
+ [10]
#endif
@@ -115,19 +115,19 @@
$ hg id -n http://localhost:$HGPORT1/
abort: can't query remote revision number, branch, or tags
- [255]
+ [10]
remote with tags?
$ hg id -t http://localhost:$HGPORT1/
abort: can't query remote revision number, branch, or tags
- [255]
+ [10]
remote with branch?
$ hg id -b http://localhost:$HGPORT1/
abort: can't query remote revision number, branch, or tags
- [255]
+ [10]
test bookmark support
--- a/tests/test-import-bypass.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-import-bypass.t Tue Oct 06 22:36:15 2020 -0700
@@ -27,7 +27,7 @@
$ hg import --bypass --exact --edit ../test.diff
abort: cannot specify both --exact and --edit
- [255]
+ [10]
$ hg import --bypass --exact ../test.diff
applying ../test.diff
$ shortlog
@@ -189,13 +189,13 @@
$ hg import --bypass --no-commit ../test.diff
abort: cannot specify both --no-commit and --bypass
- [255]
+ [10]
$ hg import --bypass --similarity 50 ../test.diff
abort: cannot use --similarity with --bypass
- [255]
+ [10]
$ hg import --exact --prefix dir/ ../test.diff
abort: cannot specify both --exact and --prefix
- [255]
+ [10]
Test commit editor
(this also tests that editor is invoked, if the patch doesn't contain
@@ -221,7 +221,7 @@
HG: branch 'default'
HG: changed a
abort: empty commit message
- [255]
+ [10]
Test patch.eol is handled
(this also tests that editor is not invoked for '--bypass', if the
--- a/tests/test-import.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-import.t Tue Oct 06 22:36:15 2020 -0700
@@ -14,7 +14,7 @@
$ hg --cwd a import
abort: need at least one patch to import
- [255]
+ [10]
generate patches for the test
@@ -127,7 +127,7 @@
HG: branch 'default'
HG: changed a
abort: empty commit message
- [255]
+ [10]
Test avoiding editor invocation at applying the patch with --exact,
even if commit message is empty
@@ -374,7 +374,7 @@
$ egrep -v '^(Subject|email)' msg.patch | hg --cwd b import -
applying patch from stdin
abort: empty commit message
- [255]
+ [10]
$ rm -r b
@@ -445,7 +445,7 @@
$ hg clone -r0 a b -q
$ hg --cwd b import --no-commit --secret ../exported-tip.patch
abort: cannot specify both --no-commit and --secret
- [255]
+ [10]
$ hg --cwd b import --secret ../exported-tip.patch
applying ../exported-tip.patch
$ hg --cwd b diff -c . --nodates
@@ -1172,7 +1172,7 @@
transaction abort!
rollback completed
abort: empty.patch: no diffs found
- [255]
+ [10]
$ hg tip --template '{rev} {desc|firstline}\n'
0 commit
$ hg -q status
--- a/tests/test-keyword.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-keyword.t Tue Oct 06 22:36:15 2020 -0700
@@ -167,7 +167,7 @@
$ hg --debug commit
abort: empty commit message
- [255]
+ [10]
$ hg status
A a
A b
@@ -816,7 +816,7 @@
$ hg commit
abort: empty commit message
- [255]
+ [10]
$ hg status
M a
? c
--- a/tests/test-largefiles.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-largefiles.t Tue Oct 06 22:36:15 2020 -0700
@@ -1077,7 +1077,7 @@
$ hg clone -U -u 0 a a-clone-failure
abort: cannot specify both --noupdate and --updaterev
- [255]
+ [10]
$ hg clone --all-largefiles a ssh://localhost/a
abort: --all-largefiles is incompatible with non-local destination ssh://localhost/a
--- a/tests/test-log-linerange.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-log-linerange.t Tue Oct 06 22:36:15 2020 -0700
@@ -363,7 +363,7 @@
$ hg log -f -L foo,5:7 -p bar
abort: FILE arguments are not compatible with --line-range option
- [255]
+ [10]
Option --rev acts as a restriction.
@@ -1135,7 +1135,7 @@
$ hg log -L foo,5:7
abort: --line-range requires --follow
- [255]
+ [10]
Non-exact pattern kinds are not allowed.
--- a/tests/test-manifest.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-manifest.t Tue Oct 06 22:36:15 2020 -0700
@@ -92,7 +92,7 @@
$ hg manifest -r tip tip
abort: please specify just one revision
- [255]
+ [10]
Testing the manifest full text cache utility
--------------------------------------------
--- a/tests/test-merge-default.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-merge-default.t Tue Oct 06 22:36:15 2020 -0700
@@ -69,7 +69,7 @@
$ hg merge --config commands.merge.require-rev=True
abort: configuration requires specifying revision to merge with
- [255]
+ [10]
Should succeed - 2 heads:
@@ -101,7 +101,7 @@
$ hg merge --config commands.merge.require-rev=True
abort: configuration requires specifying revision to merge with
- [255]
+ [10]
Should fail because at tip:
--- a/tests/test-merge2.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-merge2.t Tue Oct 06 22:36:15 2020 -0700
@@ -52,6 +52,6 @@
$ hg merge 'wdir()'
abort: merging with the working copy has no effect
- [255]
+ [10]
$ cd ..
--- a/tests/test-merge9.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-merge9.t Tue Oct 06 22:36:15 2020 -0700
@@ -78,7 +78,7 @@
$ hg resolve
abort: no files or directories specified
(use --all to re-merge all unresolved files)
- [255]
+ [10]
resolve all
$ hg resolve -a
--- a/tests/test-missing-capability.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-missing-capability.t Tue Oct 06 22:36:15 2020 -0700
@@ -43,4 +43,4 @@
$ hg pull ssh://user@dummy/repo1 -r tip -B a
pulling from ssh://user@dummy/repo1
abort: remote bookmark a not found!
- [255]
+ [10]
--- a/tests/test-mq-qrefresh-interactive.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-mq-qrefresh-interactive.t Tue Oct 06 22:36:15 2020 -0700
@@ -125,10 +125,10 @@
$ hg commit -m aaa
$ hg qrecord --config ui.interactive=false patch
abort: running non-interactively, use qnew instead
- [255]
+ [10]
$ hg qnew -i --config ui.interactive=false patch
abort: running non-interactively
- [255]
+ [10]
$ hg qnew -d '0 0' patch
Changing files
@@ -179,7 +179,7 @@
$ hg qrefresh -i --config ui.interactive=false
abort: running non-interactively
- [255]
+ [10]
$ hg qrefresh -i -d '0 0' <<EOF
> y
> y
--- a/tests/test-newbranch.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-newbranch.t Tue Oct 06 22:36:15 2020 -0700
@@ -32,7 +32,7 @@
$ hg branch default
abort: a branch of the same name already exists
(use 'hg update' to switch to it)
- [255]
+ [10]
$ hg branch -f default
marked working directory as branch default
@@ -61,7 +61,7 @@
$ hg branch bar
abort: a branch of the same name already exists
(use 'hg update' to switch to it)
- [255]
+ [10]
$ hg branch -f bar
marked working directory as branch bar
@@ -84,7 +84,7 @@
$ hg branch bar
abort: a branch of the same name already exists
(use 'hg update' to switch to it)
- [255]
+ [10]
set (other) parent branch as branch name
--- a/tests/test-parents.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-parents.t Tue Oct 06 22:36:15 2020 -0700
@@ -54,7 +54,7 @@
$ hg parents -r 3 c
abort: 'c' not found in manifest!
- [255]
+ [10]
$ hg parents -r 2
changeset: 1:d786049f033a
@@ -95,7 +95,7 @@
$ hg parents -r 2 glob:a
abort: can only specify an explicit filename
- [255]
+ [10]
merge working dir with 2 parents, hg parents c
--- a/tests/test-push-warn.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-push-warn.t Tue Oct 06 22:36:15 2020 -0700
@@ -25,7 +25,7 @@
pushing to ../a
abort: specified revisions evaluate to an empty set
(use different revision arguments)
- [255]
+ [10]
$ hg push ../a
pushing to ../a
--- a/tests/test-push.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-push.t Tue Oct 06 22:36:15 2020 -0700
@@ -365,7 +365,7 @@
pushing to $TESTTMP/test-require-revs-dest
abort: no revisions specified to push
(did you mean "hg push -r ."?)
- [255]
+ [10]
$ hg push -r 0
pushing to $TESTTMP/test-require-revs-dest
searching for changes
@@ -394,7 +394,7 @@
pushing to $TESTTMP/test-require-revs-dest
abort: no revisions specified to push
(did you mean "hg push -r ."?)
- [255]
+ [10]
$ hg push --config paths.default:pushrev=0
pushing to $TESTTMP/test-require-revs-dest
searching for changes
--- a/tests/test-rebase-inmemory.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-rebase-inmemory.t Tue Oct 06 22:36:15 2020 -0700
@@ -333,10 +333,10 @@
Make sure it throws error while passing --continue or --abort with --dry-run
$ hg rebase -s 2 -d 6 -n --continue
abort: cannot specify both --continue and --dry-run
- [255]
+ [10]
$ hg rebase -s 2 -d 6 -n --abort
abort: cannot specify both --abort and --dry-run
- [255]
+ [10]
Check dryrun gives correct results when there is no conflict in rebasing
$ hg rebase -s 2 -d 6 -n
@@ -539,13 +539,13 @@
Check it gives error when both --dryrun and --confirm is used:
$ hg rebase -s 2 -d . --confirm --dry-run
abort: cannot specify both --confirm and --dry-run
- [255]
+ [10]
$ hg rebase -s 2 -d . --confirm --abort
abort: cannot specify both --abort and --confirm
- [255]
+ [10]
$ hg rebase -s 2 -d . --confirm --continue
abort: cannot specify both --continue and --confirm
- [255]
+ [10]
Test --confirm option when there are no conflicts:
$ hg rebase -s 2 -d . --keep --config ui.interactive=True --confirm << EOF
--- a/tests/test-rebase-obsolete.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-rebase-obsolete.t Tue Oct 06 22:36:15 2020 -0700
@@ -488,7 +488,7 @@
$ cd stabilize
$ hg rebase --auto-orphans '0::' -d 10
abort: cannot specify both --auto-orphans and --dest
- [255]
+ [10]
$ hg rebase --auto-orphans '0::'
rebasing 9:cf44d2f5a9f4 "D"
$ hg log -G
@@ -2053,7 +2053,7 @@
[240]
$ hg rebase --stop --dry-run
abort: cannot specify both --stop and --dry-run
- [255]
+ [10]
$ hg rebase -s 3 -d 5
abort: rebase in progress
@@ -2061,7 +2061,7 @@
[255]
$ hg rebase --stop --continue
abort: cannot specify both --stop and --continue
- [255]
+ [10]
Test --stop moves bookmarks of original revisions to new rebased nodes:
======================================================================
--- a/tests/test-rebase-parameters.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-rebase-parameters.t Tue Oct 06 22:36:15 2020 -0700
@@ -62,7 +62,7 @@
$ hg rebase --continue --abort
abort: cannot specify both --abort and --continue
- [255]
+ [10]
$ hg rebase --continue --collapse
abort: cannot use collapse with continue or abort
@@ -70,18 +70,18 @@
$ hg rebase --continue --dest 4
abort: cannot specify both --continue and --dest
- [255]
+ [10]
$ hg rebase --base 5 --source 4
abort: cannot specify both --source and --base
- [255]
+ [10]
$ hg rebase --rev 5 --source 4
abort: cannot specify both --rev and --source
- [255]
+ [10]
$ hg rebase --base 5 --rev 4
abort: cannot specify both --rev and --base
- [255]
+ [10]
$ hg rebase --base 6
abort: branch 'default' has 3 heads - please rebase to an explicit rev
--- a/tests/test-record.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-record.t Tue Oct 06 22:36:15 2020 -0700
@@ -77,7 +77,7 @@
diff --git a/empty-rw b/empty-rw
new file mode 100644
abort: empty commit message
- [255]
+ [10]
$ hg tip -p
changeset: -1:000000000000
--- a/tests/test-remotefilelog-prefetch.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-remotefilelog-prefetch.t Tue Oct 06 22:36:15 2020 -0700
@@ -232,7 +232,7 @@
$ hg mv z2 z3
z2: not copying - file is not managed
abort: no files to copy
- [255]
+ [10]
$ find $CACHEDIR -type f | sort
.. The following output line about files fetches is globed because it is
.. flaky, the core the test is checked when checking the cache dir, so
--- a/tests/test-rename-after-merge.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-rename-after-merge.t Tue Oct 06 22:36:15 2020 -0700
@@ -124,10 +124,10 @@
$ hg copy --forget --at-rev . b2
abort: cannot mark/unmark copy in merge commit
- [255]
+ [10]
$ hg copy --after --at-rev . b1 b2
abort: cannot mark/unmark copy in merge commit
- [255]
+ [10]
$ cd ..
--- a/tests/test-rename-rev.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-rename-rev.t Tue Oct 06 22:36:15 2020 -0700
@@ -23,16 +23,16 @@
# Errors out without --after for now
$ hg cp --at-rev . d1/b d1/d
abort: --at-rev requires --after
- [255]
+ [10]
# Errors out with non-existent source
$ hg cp -A --at-rev . d1/non-existent d1/d
d1/non-existent: no such file in rev 55d1fd85ef0a
abort: no files to copy
- [255]
+ [10]
# Errors out with non-existent destination
$ hg cp -A --at-rev . d1/b d1/non-existent
abort: d1/non-existent: copy destination does not exist in 8a9d70fa20c9
- [255]
+ [10]
# Successful invocation
$ hg cp -A --at-rev . d1/b d1/d
saved backup bundle to $TESTTMP/.hg/strip-backup/8a9d70fa20c9-973ae357-copy.hg
@@ -103,5 +103,5 @@
created new head
$ hg cp -A --at-rev . d1 d3
abort: d3: --at-rev does not support a directory as destination
- [255]
+ [10]
--- a/tests/test-rename.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-rename.t Tue Oct 06 22:36:15 2020 -0700
@@ -295,7 +295,7 @@
$ hg rename d1/a dx/
abort: destination dx/ is not a directory
- [255]
+ [10]
$ hg status -C
$ hg update -C
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -304,7 +304,7 @@
$ hg rename 'glob:d1/**' dx
abort: with multiple sources, destination must be an existing directory
- [255]
+ [10]
move every file under d1 to d2/d21
--- a/tests/test-resolve.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-resolve.t Tue Oct 06 22:36:15 2020 -0700
@@ -191,7 +191,7 @@
$ hg resolve
abort: no files or directories specified
(use --all to re-merge all unresolved files)
- [255]
+ [10]
resolve --all should re-merge all unresolved files
$ hg resolve --all
@@ -406,7 +406,7 @@
R file2
$ hg resolve --mark --re-merge
abort: too many actions specified
- [255]
+ [10]
$ hg resolve --re-merge --all
merging file1
warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
@@ -416,7 +416,7 @@
$ hg resolve --config commands.resolve.explicit-re-merge=1 --all
abort: no action specified
(use --mark, --unmark, --list or --re-merge)
- [255]
+ [10]
$ hg resolve --config commands.resolve.explicit-re-merge=1 --re-merge --all
merging file1
warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
@@ -489,7 +489,7 @@
$ hg resolve
abort: no files or directories specified
(use --all to re-merge all unresolved files)
- [255]
+ [10]
$ hg resolve --all << EOF
> n
> EOF
--- a/tests/test-revert.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-revert.t Tue Oct 06 22:36:15 2020 -0700
@@ -11,7 +11,7 @@
$ hg revert
abort: no files or directories specified
(use --all to revert all files)
- [255]
+ [10]
$ hg revert --all
Introduce some changes and revert them
@@ -250,7 +250,7 @@
$ hg revert -rtip
abort: no files or directories specified
(use --all to revert all files, or 'hg update 1' to update)
- [255]
+ [10]
call `hg revert` with -I
---------------------------
--- a/tests/test-share-safe.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-share-safe.t Tue Oct 06 22:36:15 2020 -0700
@@ -36,7 +36,7 @@
$ HGEDITOR=cat hg config --shared
abort: repository is not shared; can't use --shared
- [255]
+ [10]
$ cd ..
Create a shared repo and check the requirements are shared and read correctly
--- a/tests/test-shelve.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-shelve.t Tue Oct 06 22:36:15 2020 -0700
@@ -209,7 +209,7 @@
$ hg shelve --list --addremove
abort: options '--list' and '--addremove' may not be used together
- [255]
+ [10]
delete our older shelved change
@@ -648,13 +648,13 @@
$ hg shelve --cleanup --delete
abort: options '--cleanup' and '--delete' may not be used together
- [255]
+ [10]
$ hg shelve --cleanup --patch
abort: options '--cleanup' and '--patch' may not be used together
- [255]
+ [10]
$ hg shelve --cleanup --message MESSAGE
abort: options '--cleanup' and '--message' may not be used together
- [255]
+ [10]
test bookmarks
@@ -737,10 +737,10 @@
$ hg shelve --delete --stat
abort: options '--delete' and '--stat' may not be used together
- [255]
+ [10]
$ hg shelve --delete --name NAME
abort: options '--delete' and '--name' may not be used together
- [255]
+ [10]
Test interactive shelve
$ cat <<EOF >> $HGRCPATH
@@ -767,7 +767,7 @@
a
$ hg shelve --interactive --config ui.interactive=false
abort: running non-interactively
- [255]
+ [10]
$ hg shelve --interactive << EOF
> y
> y
@@ -954,13 +954,13 @@
unshelving change 'default'
$ hg shelve --keep --list
abort: options '--list' and '--keep' may not be used together
- [255]
+ [10]
$ hg shelve --keep --patch
abort: options '--patch' and '--keep' may not be used together
- [255]
+ [10]
$ hg shelve --keep --delete
abort: options '--delete' and '--keep' may not be used together
- [255]
+ [10]
$ hg shelve --keep
shelved as default
$ hg diff
--- a/tests/test-simple-update.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-simple-update.t Tue Oct 06 22:36:15 2020 -0700
@@ -55,7 +55,7 @@
$ hg upd -d foo 0
abort: you can't specify a revision and a date
- [255]
+ [10]
update by date
@@ -71,7 +71,7 @@
$ hg update -d '>1970-01-01 00:00:02 +0000'
abort: revision matching date not found
- [255]
+ [10]
$ hg update -d '>1970-01-01 00:00:01 +0000'
found revision 1 from Thu Jan 01 00:00:01 1970 +0000
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
--- a/tests/test-status-terse.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-status-terse.t Tue Oct 06 22:36:15 2020 -0700
@@ -24,7 +24,7 @@
? x/bb.o
$ hg status --terse f
abort: 'f' not recognized
- [255]
+ [10]
Add a .hgignore so that we can also have ignored files
@@ -224,7 +224,7 @@
$ hg status --terse marduic --rev 0 --rev 1
abort: cannot use --terse with --rev
- [255]
+ [10]
Config item to set the default terseness
$ cat <<EOF >> $HGRCPATH
--- a/tests/test-subrepo-recursion.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-subrepo-recursion.t Tue Oct 06 22:36:15 2020 -0700
@@ -682,7 +682,7 @@
$ hg incoming -S --bundle incoming.hg
abort: cannot specify both --subrepos and --bundle
- [255]
+ [10]
Test missing subrepo:
--- a/tests/test-tag.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-tag.t Tue Oct 06 22:36:15 2020 -0700
@@ -30,7 +30,7 @@
$ hg tag ' '
abort: tag names cannot consist entirely of whitespace
- [255]
+ [10]
(this tests also that editor is not invoked, if '--edit' is not
specified)
@@ -61,7 +61,7 @@
$ hg revert .hgtags
$ hg tag -r 0 x y z y y z
abort: tag names must be unique
- [255]
+ [10]
$ hg tag tap nada dot tip
abort: the name 'tip' is reserved
[255]
@@ -73,17 +73,17 @@
[255]
$ hg tag "bleah"
abort: tag 'bleah' already exists (use -f to force)
- [255]
+ [10]
$ hg tag "blecch" "bleah"
abort: tag 'bleah' already exists (use -f to force)
- [255]
+ [10]
$ hg tag --remove "blecch"
abort: tag 'blecch' does not exist
- [255]
+ [10]
$ hg tag --remove "bleah" "blecch" "blough"
abort: tag 'blecch' does not exist
- [255]
+ [10]
$ hg tag -r 0 "bleah0"
hook: tag changes detected
@@ -105,13 +105,13 @@
$ hg tag "bleah "
abort: tag 'bleah' already exists (use -f to force)
- [255]
+ [10]
$ hg tag " bleah"
abort: tag 'bleah' already exists (use -f to force)
- [255]
+ [10]
$ hg tag " bleah"
abort: tag 'bleah' already exists (use -f to force)
- [255]
+ [10]
$ hg tag -r 0 " bleahbleah "
hook: tag changes detected
hook: +A acb14030fe0a21b60322c440ad2d20cf7685a376 bleahbleah
@@ -144,7 +144,7 @@
$ hg tag -l localblah
$ hg tag "foobar"
abort: working directory is not at a branch head (use -f to force)
- [255]
+ [10]
$ hg tag -f "foobar"
hook: tag changes detected
hook: +A acb14030fe0a21b60322c440ad2d20cf7685a376 foobar
@@ -401,16 +401,16 @@
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg tag nullrev
abort: working directory is not at a branch head (use -f to force)
- [255]
+ [10]
$ hg init empty
$ hg tag -R empty nullrev
abort: cannot tag null revision
- [255]
+ [10]
$ hg tag -R empty -r 00000000000 -f nulltag
abort: cannot tag null revision
- [255]
+ [10]
issue5539: pruned tags do not appear in .hgtags
--- a/tests/test-tags.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-tags.t Tue Oct 06 22:36:15 2020 -0700
@@ -505,7 +505,7 @@
$ hg tag --remove foobar
abort: tag 'foobar' does not exist
- [255]
+ [10]
$ hg tip
changeset: 5:5f6e8655b1c7
tag: tip
@@ -555,7 +555,7 @@
$ hg tag -r 3 bar
abort: tag 'bar' already exists (use -f to force)
- [255]
+ [10]
$ hg tags
tip 6:735c3ca72986
bar 0:bbd179dfa0a7
@@ -622,12 +622,12 @@
$ hg tag -r 0 -l localtag
$ hg tag --remove localtag
abort: tag 'localtag' is not a global tag
- [255]
+ [10]
$
$ hg tag -r 0 globaltag
$ hg tag --remove -l globaltag
abort: tag 'globaltag' is not a local tag
- [255]
+ [10]
$ hg tags -v
tip 1:a0b6fe111088
localtag 0:bbd179dfa0a7 local
@@ -824,7 +824,7 @@
$ hg tag --remove a
abort: tag 'a' is already removed
- [255]
+ [10]
$ hg log
changeset: 2:e7feacc7ec9e
tag: tip
--- a/tests/test-transplant.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-transplant.t Tue Oct 06 22:36:15 2020 -0700
@@ -19,10 +19,10 @@
[255]
$ hg transplant --continue --all
abort: cannot specify both --continue and --all
- [255]
+ [10]
$ hg transplant --stop --all
abort: cannot specify both --stop and --all
- [255]
+ [10]
$ hg transplant --all tip
abort: --all requires a branch revision
[255]
--- a/tests/test-uncommit.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-uncommit.t Tue Oct 06 22:36:15 2020 -0700
@@ -556,10 +556,10 @@
$ hg rollback -q --config ui.rollback=True
$ hg uncommit -U --user 'user'
abort: cannot specify both --user and --currentuser
- [255]
+ [10]
$ hg uncommit -D --date today
abort: cannot specify both --date and --currentdate
- [255]
+ [10]
`uncommit <dir>` and `cd <dir> && uncommit .` behave the same...
--- a/tests/test-update-dest.t Wed Oct 21 19:00:16 2020 -0700
+++ b/tests/test-update-dest.t Tue Oct 06 22:36:15 2020 -0700
@@ -11,7 +11,7 @@
$ hg up
abort: you must specify a destination
(for example: hg update ".::")
- [255]
+ [10]
$ hg up .
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ HGPLAIN=1 hg up
@@ -32,7 +32,7 @@
$ hg pull --update
abort: update destination required by configuration
(use hg pull followed by hg update DEST)
- [255]
+ [10]
$ cd ..