dirstate: use `dirstate.change_files` to scope the change in `amend`
authorPierre-Yves David <pierre-yves.david@octobus.net>
Wed, 14 Dec 2022 00:47:22 +0100
changeset 50042 237e9d2e1c71
parent 50041 1346db77e14d
child 50043 5cfc48354d0f
dirstate: use `dirstate.change_files` to scope the change in `amend` This is the way.
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