Mercurial > public > mercurial-scm > hg-stable
diff mercurial/commands.py @ 48892:3d3d7fc6035a stable
commit: allow to close branch when committing change over a closed head
Otherwise, an explicit other commit become necessary, which seems both silly and
verbose.
This is useful when merging closed heads on the same branches, for example when
merging multiple repositories together.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 14 Jun 2022 04:04:08 +0200 |
parents | 6cfa30681a1d |
children | 288de6f5d724 |
line wrap: on
line diff
--- a/mercurial/commands.py Thu May 12 13:53:50 2022 +0400 +++ b/mercurial/commands.py Tue Jun 14 04:04:08 2022 +0200 @@ -2087,10 +2087,17 @@ extra[b'close'] = b'1' if repo[b'.'].closesbranch(): - raise error.InputError( - _(b'current revision is already a branch closing head') - ) - elif not bheads: + # Not ideal, but let us do an extra status early to prevent early + # bail out. + matcher = scmutil.match(repo[None], pats, opts) + s = repo.status(match=matcher) + if s.modified or s.added or s.removed: + bheads = repo.branchheads(branch, closed=True) + else: + msg = _(b'current revision is already a branch closing head') + raise error.InputError(msg) + + if not bheads: raise error.InputError( _(b'branch "%s" has no heads to close') % branch )