# HG changeset patch # User Manuel Jacob # Date 2020-07-09 22:44:18 # Node ID 07b3166e94ca72d66b8af2e8d36d707892582d07 # Parent 3a6ec080b5210c8f219a1b6d517a56f5b8b7e986 commit: check branch change on to-be-committed changeset This makes a difference when a branch name is passed via the `extra` argument, which will be used as the branch name for the created changeset. The empty commit check should use that branch name instead of whatever was set on the working directory. Besides fixing the bug for which a test case was extended, it enables to remove a workaround in the rebase extension, which will be done in a follow-up patch (D8725). Differential Revision: https://phab.mercurial-scm.org/D8724 diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -2996,7 +2996,7 @@ class localrepository(object): # internal config: ui.allowemptycommit allowemptycommit = ( - wctx.branch() != wctx.p1().branch() + cctx.branch() != cctx.p1().branch() or extra.get(b'close') or merge or cctx.files() diff --git a/tests/test-rebase-emptycommit.t b/tests/test-rebase-emptycommit.t --- a/tests/test-rebase-emptycommit.t +++ b/tests/test-rebase-emptycommit.t @@ -129,7 +129,16 @@ Merge and its ancestors all become empty > B > EOS - $ hg rebase -r '(A::)-(B::)-A' -d H +Previously, there was a bug where the empty commit check compared the parent +branch name with the wdir branch name instead of the actual branch name (which +should stay unchanged if --keepbranches is passed), and erroneously assumed +that an otherwise empty changeset should be created because of the incorrectly +assumed branch name change. + + $ hg update H -q + $ hg branch foo -q + + $ hg rebase -r '(A::)-(B::)-A' -d H --keepbranches rebasing 2:dc0947a82db8 "C" (BOOK-C) note: not rebasing 2:dc0947a82db8 "C" (BOOK-C), its destination already has all its changes rebasing 3:b18e25de2cf5 "D" (BOOK-D) @@ -137,6 +146,7 @@ Merge and its ancestors all become empty rebasing 4:86a1f6686812 "E" (BOOK-E E) note: not rebasing 4:86a1f6686812 "E" (BOOK-E E), its destination already has all its changes saved backup bundle to $TESTTMP/merge1/.hg/strip-backup/b18e25de2cf5-1fd0a4ba-rebase.hg + $ hg update null -q $ hg log -G -T '{rev} {desc} {bookmarks}' o 4 H BOOK-C BOOK-D BOOK-E