diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -2985,12 +2985,13 @@ def amend(ui, repo, old, extra, pats, op matcher = scmutil.match(wctx, pats, opts) relative = scmutil.anypats(pats, opts) uipathfn = scmutil.getuipathfn(repo, legacyrelativevalue=relative) - if opts.get(b'addremove') and scmutil.addremove( - repo, matcher, b"", uipathfn, opts - ): - raise error.Abort( - _(b"failed to mark all new/missing files as added/removed") - ) + if opts.get(b'addremove'): + with repo.dirstate.changing_files(repo): + if scmutil.addremove(repo, matcher, b"", uipathfn, opts) != 0: + m = _( + b"failed to mark all new/missing files as added/removed" + ) + raise error.Abort(m) # Check subrepos. This depends on in-place wctx._status update in # subrepo.precommit(). To minimize the risk of this hack, we do