dirstate: have `running_status` warn when exiting with a dirty dirstate
If running_status was started without the lock, all changes should have been
explicitly written (with the lock) or invalidated before exiting the context.
--- a/mercurial/dirstate.py Wed Feb 22 02:21:27 2023 +0100
+++ b/mercurial/dirstate.py Mon Feb 20 17:13:29 2023 +0100
@@ -267,6 +267,11 @@
if should_write:
assert repo.currenttransaction() is tr
self.write(tr)
+ elif not has_lock:
+ if self._dirty:
+ msg = b'dirstate dirty while exiting an isolated status context'
+ repo.ui.develwarn(msg)
+ self.invalidate()
@contextlib.contextmanager
@check_invalidated