debugrebuilddirstate: double check that no transaction is open
authorPierre-Yves David <pierre-yves.david@octobus.net>
Tue, 14 Feb 2023 22:27:24 +0100
changeset 50000 1f28172cfce9
parent 49999 637d46c5b1fa
child 50001 9313d8666a0f
debugrebuilddirstate: double check that no transaction is open Since transaction impact dirstate write, we make sure nobody is trying anything strange with this internal command.
mercurial/debugcommands.py
--- a/mercurial/debugcommands.py	Tue Feb 14 22:26:23 2023 +0100
+++ b/mercurial/debugcommands.py	Tue Feb 14 22:27:24 2023 +0100
@@ -3128,6 +3128,9 @@
     """
     ctx = scmutil.revsingle(repo, rev)
     with repo.wlock():
+        if repo.currenttransaction() is not None:
+            msg = b'rebuild the dirstate outside of a transaction'
+            raise error.ProgrammingError(msg)
         dirstate = repo.dirstate
         changedfiles = None
         # See command doc for what minimal does.