[Request] [+ ] D8732: rebase: correctly check for empty commit in in-memory mode
mjacob (Manuel Jacob)
phabricator at mercurial-scm.org
Sat Jul 11 21:12:48 UTC 2020
mjacob created this revision.
Herald added a reviewer: martinvonz.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
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.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D8732
AFFECTED FILES
hgext/rebase.py
tests/test-rebase-inmemory.t
CHANGE DETAILS
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 @@
|/
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
diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -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
To: mjacob, martinvonz, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mercurial-scm.org/pipermail/mercurial-patches/attachments/20200711/2233eecb/attachment.html>
More information about the Mercurial-patches
mailing list