# HG changeset patch # User Manuel Jacob # Date 2020-07-11 01:10:23 # Node ID 0ecb3b11fcadf4849ee1f4fcc151e26e311b0773 # Parent d085fcb11c56d1070035a467a763d356b18c61d0 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 diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -1427,12 +1427,6 @@ def externalparent(repo, state, destance 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 @@ def commitmemorynode(repo, wctx, editor, 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 diff --git a/tests/test-rebase-inmemory.t b/tests/test-rebase-inmemory.t --- a/tests/test-rebase-inmemory.t +++ b/tests/test-rebase-inmemory.t @@ -949,14 +949,11 @@ definition. |/ o 0: d20a80d4def3 'base' -FIXME: It's broken for inmemory merges. $ hg rebase -s 2 -d 3 rebasing 2:0194f1db184a "b" note: not rebasing 2:0194f1db184a "b", its destination already has all its changes rebasing 4:59c8292117b1 "merge" (tip) - note: not rebasing 4:59c8292117b1 "merge" (tip), its destination already has all its changes (true !) saved backup bundle to $TESTTMP/keep_merge/.hg/strip-backup/0194f1db184a-aee31d03-rebase.hg -#if false $ hg tglog o 3: 506e2454484b 'merge' |\ @@ -966,4 +963,3 @@ FIXME: It's broken for inmemory merges. |/ o 0: d20a80d4def3 'base' -#endif