# HG changeset patch # User Pierre-Yves David # Date 1670975242 -3600 # Node ID 237e9d2e1c719bf392aab4dd63973ccadb98546b # Parent 1346db77e14da5783e2353c91403713542fbde55 dirstate: use `dirstate.change_files` to scope the change in `amend` This is the way. diff -r 1346db77e14d -r 237e9d2e1c71 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Wed Jan 25 12:46:46 2023 +0100 +++ b/mercurial/cmdutil.py Wed Dec 14 00:47:22 2022 +0100 @@ -2985,12 +2985,13 @@ 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