changeset 45084:07b3166e94ca

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
author Manuel Jacob <me@manueljacob.de>
date Fri, 10 Jul 2020 00:44:18 +0200
parents 3a6ec080b521
children a0192a03216d
files mercurial/localrepo.py tests/test-rebase-emptycommit.t
diffstat 2 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/localrepo.py	Mon Jul 13 13:06:12 2020 -0400
+++ b/mercurial/localrepo.py	Fri Jul 10 00:44:18 2020 +0200
@@ -2996,7 +2996,7 @@
 
             # 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()
--- a/tests/test-rebase-emptycommit.t	Mon Jul 13 13:06:12 2020 -0400
+++ b/tests/test-rebase-emptycommit.t	Fri Jul 10 00:44:18 2020 +0200
@@ -129,7 +129,16 @@
   > 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 @@
   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