dirstate: introduce a `is_changing_any` property
This will embrace other cases than changing parents.
--- a/hgext/git/dirstate.py Mon Jan 30 19:21:34 2023 +0100
+++ b/hgext/git/dirstate.py Thu Jan 26 15:50:45 2023 +0100
@@ -265,6 +265,11 @@
# correctly stage/revert index edits.
return False
+ def is_changing_any(self):
+ # TODO: we need to implement the context manager bits and
+ # correctly stage/revert index edits.
+ return False
+
def write(self, tr):
# TODO: call parent change callbacks
--- a/mercurial/dirstate.py Mon Jan 30 19:21:34 2023 +0100
+++ b/mercurial/dirstate.py Thu Jan 26 15:50:45 2023 +0100
@@ -202,6 +202,14 @@
)
raise error.ProgrammingError(msg)
+ @property
+ def is_changing_any(self):
+ """Returns true if the dirstate is in the middle of a set of changes.
+
+ This returns True for any kind of change.
+ """
+ return self._changing_level > 0
+
def pendingparentchange(self):
"""Returns true if the dirstate is in the middle of a set of changes
that modify the dirstate parent.
--- a/mercurial/interfaces/dirstate.py Mon Jan 30 19:21:34 2023 +0100
+++ b/mercurial/interfaces/dirstate.py Thu Jan 26 15:50:45 2023 +0100
@@ -24,6 +24,9 @@
# TODO: all these private methods and attributes should be made
# public or removed from the interface.
_ignore = interfaceutil.Attribute("""Matcher for ignored files.""")
+ is_changing_any = interfaceutil.Attribute(
+ """True if any changes in progress."""
+ )
is_changing_parents = interfaceutil.Attribute(
"""True if parents changes in progress."""
)
--- a/mercurial/localrepo.py Mon Jan 30 19:21:34 2023 +0100
+++ b/mercurial/localrepo.py Thu Jan 26 15:50:45 2023 +0100
@@ -3070,7 +3070,7 @@
self.ui.develwarn(b'"wlock" acquired after "lock"')
def unlock():
- if self.dirstate.is_changing_parents:
+ if self.dirstate.is_changing_any:
msg = b"wlock release in the middle of a changing parents"
self.ui.develwarn(msg)
self.dirstate.invalidate()