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.
--- 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.