Mercurial > hg-stable
changeset 42238:5997eabc7b85
push: added clear warning message when pushing closed branches(issue6080)
Differential Revision: https://phab.mercurial-scm.org/D6038
author | Taapas Agrawal <taapas2897@gmail.com> |
---|---|
date | Fri, 01 Mar 2019 05:56:18 +0530 |
parents | 8d14d91584f1 |
children | 3267aca2ec7e |
files | mercurial/discovery.py tests/test-push-warn.t |
diffstat | 2 files changed, 67 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/discovery.py Tue Apr 16 02:06:20 2019 +0530 +++ b/mercurial/discovery.py Fri Mar 01 05:56:18 2019 +0530 @@ -340,13 +340,22 @@ pushop.pushbranchmap = headssum newbranches = [branch for branch, heads in headssum.iteritems() if heads[0] is None] + # Makes a set of closed branches + closedbranches = set() + for tag, heads, tip, isclosed in repo.branchmap().iterbranches(): + if isclosed: + closedbranches.add(tag) + closedbranches = (closedbranches & set(newbranches)) # 1. Check for new branches on the remote. if newbranches and not newbranch: # new branch requires --new-branch branchnames = ', '.join(sorted(newbranches)) - raise error.Abort(_("push creates new remote branches: %s!") - % branchnames, - hint=_("use 'hg push --new-branch' to create" - " new remote branches")) + if closedbranches: + errmsg = (_("push creates new remote branches: %s (%d closed)!") + % (branchnames, len(closedbranches))) + else: + errmsg = (_("push creates new remote branches: %s!")% branchnames) + hint=_("use 'hg push --new-branch' to create new remote branches") + raise error.Abort(errmsg, hint=hint) # 2. Find heads that we need not warn about nowarnheads = _nowarnheads(pushop)
--- a/tests/test-push-warn.t Tue Apr 16 02:06:20 2019 +0530 +++ b/tests/test-push-warn.t Fri Mar 01 05:56:18 2019 +0530 @@ -791,3 +791,57 @@ [255] $ cd .. + +Test regarding pushing of closed branch/branches(Issue6080) + + $ hg init x + $ cd x + $ hg -q branch a + $ echo 0 > foo + $ hg -q ci -Am 0 + $ hg -q up 0 + $ cd .. + + $ hg -q clone x z + $ cd z + +When there is a single closed branch + + $ hg -q branch foo + $ echo 0 > foo + $ hg -q ci -Am 0 + $ hg ci --close-branch -m 'closing branch foo' + $ hg -q up 0 + $ hg push ../x + pushing to ../x + searching for changes + abort: push creates new remote branches: foo (1 closed)! + (use 'hg push --new-branch' to create new remote branches) + [255] + +When there is more than one closed branches + $ hg -q branch bar + $ echo 0 > bar + $ hg -q ci -Am 0 + $ hg ci --close-branch -m 'closing branch bar' + $ hg -q up 0 + $ hg push ../x + pushing to ../x + searching for changes + abort: push creates new remote branches: bar, foo (2 closed)! + (use 'hg push --new-branch' to create new remote branches) + [255] + +When there are more than one new branches and not all are closed + $ hg -q branch bar1 + $ echo 0 > bar1 + $ hg -q ci -Am 0 + $ hg -q up 0 + $ hg push ../x + pushing to ../x + searching for changes + abort: push creates new remote branches: bar, bar1, foo (2 closed)! + (use 'hg push --new-branch' to create new remote branches) + [255] + + $ cd ..