overlayworkingctx: rename misleadingly named `isempty()` method
authorManuel Jacob <me@manueljacob.de>
Sat, 11 Jul 2020 00:53:34 +0200
changeset 45087 83f75f1efdcc
parent 45086 ab33782deb84
child 45088 3e40abe0a170
overlayworkingctx: rename misleadingly named `isempty()` method This method is only about whether there are file changes, not about whether the commit will be empty or not. One user of the method was incorrectly assuming the latter meaning, leading to the bug for which a test case was added in D8727. I’ve added a FIXME to the code. The original motivation for the rename was that I want to add `committablectx.isempty()`, that properly checks if a commit will be empty, using the exact same logic as in `repo.commit()`, and I wanted to avoid a name clash. Differential Revision: https://phab.mercurial-scm.org/D8728
hgext/rebase.py
mercurial/context.py
--- a/hgext/rebase.py	Fri Jul 10 01:36:19 2020 +0200
+++ b/hgext/rebase.py	Sat Jul 11 00:53:34 2020 +0200
@@ -1427,8 +1427,10 @@
 def commitmemorynode(repo, wctx, editor, extra, user, date, commitmsg):
     '''Commit the memory changes with parents p1 and p2.
     Return node of committed revision.'''
-    # Replicates the empty check in ``repo.commit``.
-    if wctx.isempty() and not repo.ui.configbool(b'ui', b'allowemptycommit'):
+    # FIXME: make empty commit check consistent with ``repo.commit``
+    if wctx.nofilechanges() and not repo.ui.configbool(
+        b'ui', b'allowemptycommit'
+    ):
         return None
 
     # By convention, ``extra['branch']`` (set by extrafn) clobbers
--- a/mercurial/context.py	Fri Jul 10 01:36:19 2020 +0200
+++ b/mercurial/context.py	Sat Jul 11 00:53:34 2020 +0200
@@ -2519,7 +2519,7 @@
     def isdirty(self, path):
         return path in self._cache
 
-    def isempty(self):
+    def nofilechanges(self):
         # We need to discard any keys that are actually clean before the empty
         # commit check.
         self._compact()