Patchwork D8118: mergestate: determine if active without looking for state files on disk

login
register
mail settings
Submitter phabricator
Date Feb. 14, 2020, 6:20 a.m.
Message ID <differential-rev-PHID-DREV-ahmpo4tkoihf5q6a3hcr-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/45228/
State New
Headers show

Comments

phabricator - Feb. 14, 2020, 6:20 a.m.
martinvonz created this revision.
Herald added subscribers: mercurial-devel, mjpieters.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  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 checks were added in 4e932dc5c113 <https://phab.mercurial-scm.org/rHG4e932dc5c113f003eefda05a2dae8cf7da9f2c2b> (resolve: abort when not
  applicable (BC), 2014-04-18). Perhaps there were needed for that and
  then made obsolete by 6062593d8b06 <https://phab.mercurial-scm.org/rHG6062593d8b06aaacd6e5e9eb9e84acff69ba038b> (resolve: don't abort resolve -l
  even when no merge is in progress, 2014-05-23).
  
  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".

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D8118

AFFECTED FILES
  mercurial/merge.py

CHANGE DETAILS




To: martinvonz, #hg-reviewers
Cc: mjpieters, mercurial-devel

Patch

diff --git a/mercurial/merge.py b/mercurial/merge.py
--- 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 (
-            bool(self._local)
-            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)
 
     def commit(self):
         """Write current state on disk (if necessary)"""