Mercurial > hg
changeset 49320: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 | 2f326ea19fbc |
children | 6cd249556e20 |
files | mercurial/commands.py tests/test-branches.t |
diffstat | 2 files changed, 24 insertions(+), 4 deletions(-) [+] |
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 )
--- a/tests/test-branches.t Thu May 12 13:53:50 2022 +0400 +++ b/tests/test-branches.t Tue Jun 14 04:04:08 2022 +0200 @@ -283,6 +283,19 @@ abort: current revision is already a branch closing head [10] + $ echo foo > b + $ hg commit -d '9 0' --close-branch -m 're-closing this branch' + + $ echo bar > b + $ hg commit -d '9 0' --close-branch -m 're-closing this branch' bh1 + abort: current revision is already a branch closing head + [10] + $ hg commit -d '9 0' --close-branch -m 're-closing this branch' b + + $ hg debugstrip --rev 13: --no-backup + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg revert --all --no-backup + $ hg log -r tip --debug changeset: 12:e3d49c0575d8fc2cb1cd6859c747c14f5f6d499f branch: b