commit: properly consider file include and exclude options when closing branch
It looks like this is meant to prevent adding another commit that does nothing
but close a branch on top of a commit that already closed the branch. The
matcher building functions want `Dict[bytes, Any]`, not `Dict[str, Any]`, which
was found by adding type hints to the matcher related methods in scmutil.
--- a/mercurial/commands.py Fri Nov 18 14:03:56 2022 -0500
+++ b/mercurial/commands.py Fri Nov 18 13:43:03 2022 -0500
@@ -2114,7 +2114,9 @@
if repo[b'.'].closesbranch():
# Not ideal, but let us do an extra status early to prevent early
# bail out.
- matcher = scmutil.match(repo[None], pats, opts)
+ matcher = scmutil.match(
+ repo[None], pats, pycompat.byteskwargs(opts)
+ )
s = repo.status(match=matcher)
if s.modified or s.added or s.removed:
bheads = repo.branchheads(branch, closed=True)
--- a/tests/test-branches.t Fri Nov 18 14:03:56 2022 -0500
+++ b/tests/test-branches.t Fri Nov 18 13:43:03 2022 -0500
@@ -293,23 +293,9 @@
$ hg commit -d '9 0' --close-branch -m 're-closing this branch' b
$ echo baz > b
- $ hg log -r .
- changeset: 14:acc63dd7207f
- branch: b
- tag: tip
- user: test
- date: Thu Jan 01 00:00:09 1970 +0000
- summary: re-closing this branch
-
$ hg commit -d '9 0' --close-branch -m 'empty re-closing this branch' -X b
- $ hg log -r .
- changeset: 15:3c41ebd8ea8b
- branch: b
- tag: tip
- user: test
- date: Thu Jan 01 00:00:09 1970 +0000
- summary: empty re-closing this branch
-
+ abort: current revision is already a branch closing head
+ [10]
$ hg revert b
$ hg debugstrip --rev 13: --no-backup