dirstate: have `running_status` warn when exiting with a dirty dirstate
authorPierre-Yves David <pierre-yves.david@octobus.net>
Mon, 20 Feb 2023 17:13:29 +0100
changeset 50148 b583988c6c23
parent 50147 0be70c7b609c
child 50149 03decaaf1eff
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.
mercurial/dirstate.py
--- 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