Commit 1875a026 authored by Manuel Jacob's avatar Manuel Jacob
Browse files

branch: make --force work even when specifying revs

The `hg branch` command accepts a `--force` parameter that allows to
"set branch name even if it shadows an existing branch". However, before this
patch, that didn’t work when specifying revs with `-r`.

--HG--
branch : stable
parent bb58931d0c4f
......@@ -961,7 +961,7 @@ def findcmd(cmd, table, strict=True):
raise error.UnknownCommand(cmd, allcmds)
def changebranch(ui, repo, revs, label):
def changebranch(ui, repo, revs, label, opts):
""" Change the branch name of given revs to label """
with repo.wlock(), repo.lock(), repo.transaction(b'branches'):
......@@ -979,7 +979,11 @@ def changebranch(ui, repo, revs, label):
root = repo[roots.first()]
rpb = {parent.branch() for parent in root.parents()}
if label not in rpb and label in repo.branchmap():
if (
not opts.get(b'force')
and label not in rpb
and label in repo.branchmap()
):
raise error.Abort(_(b"a branch of the same name already exists"))
if repo.revs(b'obsolete() and %ld', revs):
......
......@@ -1338,7 +1338,7 @@ def branch(ui, repo, label=None, **opts):
scmutil.checknewlabel(repo, label, b'branch')
if revs:
return cmdutil.changebranch(ui, repo, revs, label)
return cmdutil.changebranch(ui, repo, revs, label, opts)
if not opts.get(b'force') and label in repo.branchmap():
if label not in [p.branch() for p in repo[None].parents()]:
......
......@@ -355,6 +355,13 @@ Changing branch of a merge commit
abort: a branch of the same name already exists
[255]
$ hg branch -r . stable --force
changed branch on 1 changesets
$ hg branches
stable 34:d1c2addda4a2
jkl 29:6bc1c6c2c9da (inactive)
ghi 28:2f1019bd29d2 (inactive)
Changing branch on public changeset
$ hg phase -r . -p
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment