Mercurial > public > mercurial-scm > hg
comparison mercurial/cmdutil.py @ 35746:e5b6ba786d83
branch: allow changing branch name to existing name if possible
With the functionality added in previous patch we can change branches of a
revision but not everytime even if it's possible to do so. For example cosider
the following case:
o 3 added a (foo)
o 2 added b (foo)
o 1 added c (bar)
o 0 added d (bar)
Here if I want to change the branch of rev 2,3 to bar, it was not possible and
it will say, "a branch with same name exists".
This patch allows us to change branch of 2,3 to bar. The underlying logic for
changing branch finds the changesets from the revs passed which have no parents
in revs. We only support revsets which have only one such root, so to support
this we check whether the parent of the root has the same name as that of the
new name and if so, we can use the new name to change branches.
Differential Revision: https://phab.mercurial-scm.org/D1913
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Fri, 19 Jan 2018 18:45:20 +0530 |
parents | 3bd8ab4c80a5 |
children | 1bee7762fd46 eeb87b24aea7 |
comparison
equal
deleted
inserted
replaced
35745:3bd8ab4c80a5 | 35746:e5b6ba786d83 |
---|---|
725 raise error.Abort("empty revision set") | 725 raise error.Abort("empty revision set") |
726 roots = repo.revs('roots(%ld)', revs) | 726 roots = repo.revs('roots(%ld)', revs) |
727 if len(roots) > 1: | 727 if len(roots) > 1: |
728 raise error.Abort(_("cannot change branch of non-linear revisions")) | 728 raise error.Abort(_("cannot change branch of non-linear revisions")) |
729 rewriteutil.precheck(repo, revs, 'change branch of') | 729 rewriteutil.precheck(repo, revs, 'change branch of') |
730 | |
731 root = repo[roots.first()] | |
732 if not root.p1().branch() == label and label in repo.branchmap(): | |
733 raise error.Abort(_("a branch of the same name already exists")) | |
734 | |
730 if repo.revs('merge() and %ld', revs): | 735 if repo.revs('merge() and %ld', revs): |
731 raise error.Abort(_("cannot change branch of a merge commit")) | 736 raise error.Abort(_("cannot change branch of a merge commit")) |
732 if repo.revs('obsolete() and %ld', revs): | 737 if repo.revs('obsolete() and %ld', revs): |
733 raise error.Abort(_("cannot change branch of a obsolete changeset")) | 738 raise error.Abort(_("cannot change branch of a obsolete changeset")) |
734 | 739 |