Mercurial > hg
changeset 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 | d085fcb11c56 |
children | 6a5dcd754842 |
files | hgext/rebase.py tests/test-rebase-inmemory.t |
diffstat | 2 files changed, 2 insertions(+), 10 deletions(-) [+] |
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
--- a/tests/test-rebase-inmemory.t Sat Jul 11 02:13:19 2020 +0200 +++ b/tests/test-rebase-inmemory.t Sat Jul 11 03:10:23 2020 +0200 @@ -949,14 +949,11 @@ |/ 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 @@ |/ o 0: d20a80d4def3 'base' -#endif