Mercurial > hg
changeset 14036:90d997a812dc
changegroup: do not count closed new heads (issue2697)
If a closed head gets pulled, we currently see (example):
$ hg pull
pulling from $TESTTMP/repo2
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 1 changes to 1 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
A subsequent 'hg heads' doesn't show that head because it is closed.
This patch improves the UI response texts for that same use case to:
$ hg pull
pulling from $TESTTMP/repo2
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
That is, the part "(+1 heads)" is not shown in that case any longer.
author | Adrian Buehlmann <adrian@cadifra.com> |
---|---|
date | Sun, 24 Apr 2011 20:11:05 +0200 |
parents | 865c30d54c30 |
children | 4ab1e987941b |
files | mercurial/localrepo.py tests/test-pull-r.t |
diffstat | 2 files changed, 45 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/localrepo.py Fri Apr 29 20:02:46 2011 +0200 +++ b/mercurial/localrepo.py Sun Apr 24 20:11:05 2011 +0200 @@ -1690,7 +1690,7 @@ # inconsistent view cl = self.changelog cl.delayupdate() - oldheads = len(cl.heads()) + oldheads = cl.heads() tr = self.transaction("\n".join([srctype, urlmod.hidepassword(url)])) try: @@ -1781,14 +1781,20 @@ _('missing file data for %s:%s - run hg verify') % (f, hex(n))) - newheads = len(cl.heads()) - heads = "" - if oldheads and newheads != oldheads: - heads = _(" (%+d heads)") % (newheads - oldheads) + dh = 0 + if oldheads: + heads = cl.heads() + dh = len(heads) - len(oldheads) + for h in heads: + if h not in oldheads and 'close' in self[h].extra(): + dh -= 1 + htext = "" + if dh: + htext = _(" (%+d heads)") % dh self.ui.status(_("added %d changesets" " with %d changes to %d files%s\n") - % (changesets, revisions, files, heads)) + % (changesets, revisions, files, htext)) if changesets > 0: p = lambda: cl.writepending() and self.root or "" @@ -1817,11 +1823,10 @@ source=srctype, url=url) # never return 0 here: - if newheads < oldheads: - return newheads - oldheads - 1 + if dh < 0: + return dh - 1 else: - return newheads - oldheads + 1 - + return dh + 1 def stream_in(self, remote, requirements): lock = self.lock()
--- a/tests/test-pull-r.t Fri Apr 29 20:02:46 2011 +0200 +++ b/tests/test-pull-r.t Sun Apr 24 20:11:05 2011 +0200 @@ -27,6 +27,36 @@ summary: add foo $ cd .. + +don't show "(+1 heads)" message when pulling closed head + + $ hg clone -q repo repo2 + $ hg clone -q repo2 repo3 + $ cd repo2 + $ hg up -q 0 + $ echo hello >> foo + $ hg ci -mx1 + created new head + $ hg ci -mx2 --close-branch + $ cd ../repo3 + $ hg heads -q --closed + 2:effea6de0384 + 1:ed1b79f46b9a + $ hg pull + pulling from $TESTTMP/repo2 + searching for changes + adding changesets + adding manifests + adding file changes + added 2 changesets with 1 changes to 1 files + (run 'hg update' to get a working copy) + $ hg heads -q --closed + 4:996201fa1abf + 2:effea6de0384 + 1:ed1b79f46b9a + + $ cd .. + $ hg init copy $ cd copy