# HG changeset patch # User Matt Harbison # Date 1668796983 18000 # Node ID 3adca6eb6659f7721d78d3795b3e72931afd099f # Parent 7ddbb3623a07dbe88d16511ce711dca45636d0b4 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. diff -r 7ddbb3623a07 -r 3adca6eb6659 mercurial/commands.py --- 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) diff -r 7ddbb3623a07 -r 3adca6eb6659 tests/test-branches.t --- 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