debugrebuildstate: wrap the operation in a `changing_parents` context
authorPierre-Yves David <pierre-yves.david@octobus.net>
Mon, 20 Feb 2023 14:05:19 +0100
changeset 50113 dae8dda6f582
parent 50112 62158471d038
child 50114 c175b4857498
debugrebuildstate: wrap the operation in a `changing_parents` context This ismaybe a "changing_files" case? However this would be the only usage of `rebuild` outside a `changing_parents` context and this is a debug command, so lets not make the code base more complex because of that one command.
mercurial/debugcommands.py
--- a/mercurial/debugcommands.py	Sun Feb 19 02:50:46 2023 +0100
+++ b/mercurial/debugcommands.py	Mon Feb 20 14:05:19 2023 +0100
@@ -3142,8 +3142,8 @@
             dsnotadded = {f for f in dsonly if not dirstate.get_entry(f).added}
             changedfiles = manifestonly | dsnotadded
 
-        dirstate.rebuild(ctx.node(), ctx.manifest(), changedfiles)
-        dirstate.write(repo.currenttransaction())
+        with dirstate.changing_parents(repo):
+            dirstate.rebuild(ctx.node(), ctx.manifest(), changedfiles)
 
 
 @command(