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.
--- 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