diff hgext/rebase.py @ 45090:0ecb3b11fcad

rebase: correctly check for empty commit in in-memory mode The new code has a small overhead in the empty commit case, as a `memctx` object is always created, but I don’t think it’s justified here to duplicate code to optimize a relatively unlikely code path. Differential Revision: https://phab.mercurial-scm.org/D8732
author Manuel Jacob <me@manueljacob.de>
date Sat, 11 Jul 2020 03:10:23 +0200
parents 83f75f1efdcc
children 1efbfa9b36a7
line wrap: on
line diff
--- a/hgext/rebase.py	Sat Jul 11 02:13:19 2020 +0200
+++ b/hgext/rebase.py	Sat Jul 11 03:10:23 2020 +0200
@@ -1427,12 +1427,6 @@
 def commitmemorynode(repo, wctx, editor, extra, user, date, commitmsg):
     '''Commit the memory changes with parents p1 and p2.
     Return node of committed revision.'''
-    # 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
     # ``branch`` (used when passing ``--keepbranches``).
     branch = None
@@ -1447,6 +1441,8 @@
         branch=branch,
         editor=editor,
     )
+    if memctx.isempty() and not repo.ui.configbool(b'ui', b'allowemptycommit'):
+        return None
     commitres = repo.commitctx(memctx)
     wctx.clean()  # Might be reused
     return commitres