D8118: mergestate: determine if active without looking for state files on disk
martinvonz created this revision.
Herald added subscribers: mercurial-devel, mjpieters.
Herald added a reviewer: hg-reviewers.
I couldn't think of a reason that we need to check state files on disk
to determine if a merge is active. I could imagine them being for
there for detecting broken state files that would then be cleaned up
by some later command, but we always delete the entire `.hg/merge/`
tree, so that doesn't seem to be it.
The reason I want to delete the checks is that I think `ms =
mergestate.read(repo); ms.active() and ms.local` should be a valid
pattern, but it crashes when the merge state file is an empty file if
we consider mere presence of the file as "active".
diff --git a/mercurial/merge.py b/mercurial/merge.py
@@ -413,14 +413,7 @@
Returns True if there appears to be mergestate. This is a rough proxy
for "is a merge in progress."
- # Check local variables before looking at filesystem for performance
- # reasons.
- return (
- or bool(self._state)
- or self._repo.vfs.exists(self.statepathv1)
- or self._repo.vfs.exists(self.statepathv2)
+ return bool(self._local) or bool(self._state)
"""Write current state on disk (if necessary)"""