Patchwork [5,of,5] changegroup: move message about added changes to transaction summary

login
register
mail settings
Submitter Pierre-Yves David
Date Sept. 8, 2019, 7:46 a.m.
Message ID <275367f9cadd11d65128.1567928763@nodosa.octopoid.net>
Download mbox | patch
Permalink /patch/41565/
State Accepted
Headers show

Comments

Pierre-Yves David - Sept. 8, 2019, 7:46 a.m.
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david@octobus.net>
# Date 1567928573 -7200
#      Sun Sep 08 09:42:53 2019 +0200
# Node ID 275367f9cadd11d65128051d920414f4b76f5de6
# Parent  426a83641e1b9a94775bd2c3db0033d141432608
# EXP-Topic check-summary
# Available At https://bitbucket.org/octobus/mercurial-devel/
#              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 275367f9cadd
changegroup: move message about added changes to transaction summary

Before that, applying multiple changegroups in the same transaction issued the
message multiple time. This result in a confusing output:

    adding changesets
    adding manifests
    adding file changes
    added 32768 changesets with 60829 changes to 2668 files
    adding changesets
    adding manifests
    adding file changes
    added 8192 changesets with 16885 changes to 1553 files
    adding changesets
    adding manifests
    adding file changes
    added 1020 changesets with 1799 changes to 536 files
    adding changesets
    adding manifests
    ...

Instead, we now only issue the message once at the end of the transaction,
summing up all added changesets, changes and files. The line is identical, but
happens sightly later in the output.

There are other suboptimal behavior around issue multiple changegroup (eg:
progress bar). We'll cover them later.

This impact of lot of test as one would expect, but a two pass check show they
are just the order change we expected.

To deal with "under the hood" bundle application by internal code, we had to
take a slightly hacky move. We could clean that up with a more official way to
enter "under the hood" section, however I want to keep this series simple to get
it landed. This kind of change have a very high bit rot rate since it impact a
lot of test output.
Augie Fackler - Sept. 9, 2019, 3:17 p.m.
On Sun, Sep 08, 2019 at 09:46:03AM +0200, Pierre-Yves David wrote:
> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david@octobus.net>
> # Date 1567928573 -7200
> #      Sun Sep 08 09:42:53 2019 +0200
> # Node ID 275367f9cadd11d65128051d920414f4b76f5de6
> # Parent  426a83641e1b9a94775bd2c3db0033d141432608
> # EXP-Topic check-summary
> # Available At https://bitbucket.org/octobus/mercurial-devel/
> #              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 275367f9cadd
> changegroup: move message about added changes to transaction summary

queued, thanks, this has bugged me for a long time

(also I bet that ssh flushing thing has some lurking race condition
bugs fixed _somewhere_)
via Mercurial-devel - Sept. 10, 2019, 4:01 a.m.
On Sun, Sep 8, 2019 at 1:09 AM Pierre-Yves David <
pierre-yves.david@ens-lyon.org> wrote:

> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david@octobus.net>
> # Date 1567928573 -7200
> #      Sun Sep 08 09:42:53 2019 +0200
> # Node ID 275367f9cadd11d65128051d920414f4b76f5de6
> # Parent  426a83641e1b9a94775bd2c3db0033d141432608
> # EXP-Topic check-summary
> # Available At https://bitbucket.org/octobus/mercurial-devel/
> #              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r
> 275367f9cadd
> changegroup: move message about added changes to transaction summary
>
> diff --git a/tests/test-bookflow.t b/tests/test-bookflow.t
> --- a/tests/test-bookflow.t
> +++ b/tests/test-bookflow.t
> @@ -242,8 +242,8 @@ make the bookmark move by updating it on
>    $ echo "more" >> test
>    $ hg pull -u 2>&1 | fgrep -v TESTTMP| fgrep -v "searching for changes"
> | fgrep -v adding
>    pulling from $TESTTMP/a
> +  updating bookmark X
>    added 1 changesets with 0 changes to 0 files (+1 heads)
> -  updating bookmark X
>

This is now slightly weird in that it seems like the bookmark is updated
before the changesets are added...
Pierre-Yves David - Sept. 10, 2019, 5:27 a.m.
On 9/10/19 6:01 AM, Martin von Zweigbergk wrote:
> 
> 
> On Sun, Sep 8, 2019 at 1:09 AM Pierre-Yves David 
> <pierre-yves.david@ens-lyon.org <mailto:pierre-yves.david@ens-lyon.org>> 
> wrote:
> 
>     # HG changeset patch
>     # User Pierre-Yves David <pierre-yves.david@octobus.net
>     <mailto:pierre-yves.david@octobus.net>>
>     # Date 1567928573 -7200
>     #      Sun Sep 08 09:42:53 2019 +0200
>     # Node ID 275367f9cadd11d65128051d920414f4b76f5de6
>     # Parent  426a83641e1b9a94775bd2c3db0033d141432608
>     # EXP-Topic check-summary
>     # Available At https://bitbucket.org/octobus/mercurial-devel/
>     #              hg pull
>     https://bitbucket.org/octobus/mercurial-devel/ -r 275367f9cadd
>     changegroup: move message about added changes to transaction summary
> 
>     diff --git a/tests/test-bookflow.t b/tests/test-bookflow.t
>     --- a/tests/test-bookflow.t
>     +++ b/tests/test-bookflow.t
>     @@ -242,8 +242,8 @@ make the bookmark move by updating it on
>         $ echo "more" >> test
>         $ hg pull -u 2>&1 | fgrep -v TESTTMP| fgrep -v "searching for
>     changes" | fgrep -v adding
>         pulling from $TESTTMP/a
>     +  updating bookmark X
>         added 1 changesets with 0 changes to 0 files (+1 heads)
>     -  updating bookmark X
> 
> 
> This is now slightly weird in that it seems like the bookmark is updated 
> before the changesets are added...

This is actually correct since the bookmark are updating while the 
transaction is going while the changesets are added once the transaction 
is completed ;-)
via Mercurial-devel - Sept. 10, 2019, 5:29 a.m.
On Mon, Sep 9, 2019 at 10:27 PM Pierre-Yves David <
pierre-yves.david@ens-lyon.org> wrote:

> On 9/10/19 6:01 AM, Martin von Zweigbergk wrote:
> >
> >
> > On Sun, Sep 8, 2019 at 1:09 AM Pierre-Yves David
> > <pierre-yves.david@ens-lyon.org <mailto:pierre-yves.david@ens-lyon.org>>
>
> > wrote:
> >
> >     # HG changeset patch
> >     # User Pierre-Yves David <pierre-yves.david@octobus.net
> >     <mailto:pierre-yves.david@octobus.net>>
> >     # Date 1567928573 -7200
> >     #      Sun Sep 08 09:42:53 2019 +0200
> >     # Node ID 275367f9cadd11d65128051d920414f4b76f5de6
> >     # Parent  426a83641e1b9a94775bd2c3db0033d141432608
> >     # EXP-Topic check-summary
> >     # Available At https://bitbucket.org/octobus/mercurial-devel/
> >     #              hg pull
> >     https://bitbucket.org/octobus/mercurial-devel/ -r 275367f9cadd
> >     changegroup: move message about added changes to transaction summary
> >
> >     diff --git a/tests/test-bookflow.t b/tests/test-bookflow.t
> >     --- a/tests/test-bookflow.t
> >     +++ b/tests/test-bookflow.t
> >     @@ -242,8 +242,8 @@ make the bookmark move by updating it on
> >         $ echo "more" >> test
> >         $ hg pull -u 2>&1 | fgrep -v TESTTMP| fgrep -v "searching for
> >     changes" | fgrep -v adding
> >         pulling from $TESTTMP/a
> >     +  updating bookmark X
> >         added 1 changesets with 0 changes to 0 files (+1 heads)
> >     -  updating bookmark X
> >
> >
> > This is now slightly weird in that it seems like the bookmark is updated
> > before the changesets are added...
>
> This is actually correct since the bookmark are updating while the
> transaction is going while the changesets are added once the transaction
> is completed ;-)
>

Sure, I know why it's happening; I just mean that it may seem weird to
regular users (although I also think that very few actually read these
messages).


> --
> Pierre-Yves David
>

Patch

diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py
--- a/mercurial/changegroup.py
+++ b/mercurial/changegroup.py
@@ -270,7 +270,7 @@  class cg1unpacker(object):
         def revmap(x):
             return cl.rev(x)
 
-        changesets = files = revisions = 0
+        changesets = 0
 
         try:
             # The transaction may already carry source information. In this
@@ -337,23 +337,38 @@  class cg1unpacker(object):
             repo.ui.status(_("adding file changes\n"))
             newrevs, newfiles = _addchangegroupfiles(
                 repo, self, revmap, trp, efiles, needfiles)
-            revisions += newrevs
-            files += newfiles
+
+            # making sure the value exists
+            tr.changes.setdefault('changegroup-count-changesets', 0)
+            tr.changes.setdefault('changegroup-count-revisions', 0)
+            tr.changes.setdefault('changegroup-count-files', 0)
+            tr.changes.setdefault('changegroup-count-heads', 0)
+
+            # some code use bundle operation for internal purpose. They usually
+            # set `ui.quiet` to do this outside of user sight. Size the report
+            # of such operation now happens at the end of the transaction, that
+            # ui.quiet has not direct effect on the output.
+            #
+            # To preserve this intend use an inelegant hack, we fail to report
+            # the change if `quiet` is set. We should probably move to
+            # something better, but this is a good first step to allow the "end
+            # of transaction report" to pass tests.
+            if not repo.ui.quiet:
+                tr.changes['changegroup-count-changesets'] += changesets
+                tr.changes['changegroup-count-revisions'] += newrevs
+                tr.changes['changegroup-count-files'] += newfiles
 
             deltaheads = 0
             if oldheads:
                 heads = cl.heads()
-                deltaheads = len(heads) - len(oldheads)
+                deltaheads += len(heads) - len(oldheads)
                 for h in heads:
                     if h not in oldheads and repo[h].closesbranch():
                         deltaheads -= 1
-            htext = ""
-            if deltaheads:
-                htext = _(" (%+d heads)") % deltaheads
 
-            repo.ui.status(_("added %d changesets"
-                             " with %d changes to %d files%s\n")
-                             % (changesets, revisions, files, htext))
+            # see previous comment about checking ui.quiet
+            if not repo.ui.quiet:
+                tr.changes['changegroup-count-heads'] += deltaheads
             repo.invalidatevolatilesets()
 
             if changesets > 0:
diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -1762,6 +1762,20 @@  def registersummarycallback(repo, otr, t
         categories.append(newcat)
         return wrapped
 
+
+    @reportsummary
+    def reportchangegroup(repo, tr):
+        cgchangesets = tr.changes.get('changegroup-count-changesets', 0)
+        cgrevisions = tr.changes.get('changegroup-count-revisions', 0)
+        cgfiles = tr.changes.get('changegroup-count-files', 0)
+        cgheads = tr.changes.get('changegroup-count-heads', 0)
+        if cgchangesets or cgrevisions or cgfiles:
+            htext = ""
+            if cgheads:
+                htext = _(" (%+d heads)") % cgheads
+            msg = _("added %d changesets with %d changes to %d files%s\n")
+            repo.ui.status(msg % (cgchangesets, cgrevisions, cgfiles, htext))
+
     if txmatch(_reportobsoletedsource):
         @reportsummary
         def reportobsoleted(repo, tr):
diff --git a/tests/test-acl.t b/tests/test-acl.t
--- a/tests/test-acl.t
+++ b/tests/test-acl.t
@@ -131,12 +131,12 @@  Extension disabled for lack of a hook
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   bundle2-input-part: total payload size 1553
   bundle2-input-part: "phase-heads" supported
   bundle2-input-part: total payload size 24
   bundle2-input-bundle: 4 parts total
   updating the branch cache
+  added 3 changesets with 3 changes to 3 files
   bundle2-output-bundle: "HG20", 1 parts total
   bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
   bundle2-input-bundle: no-transaction
@@ -196,7 +196,6 @@  Extension disabled for lack of acl.sourc
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: changes have source "push" - skipping
   bundle2-input-part: total payload size 1553
@@ -204,6 +203,7 @@  Extension disabled for lack of acl.sourc
   bundle2-input-part: total payload size 24
   bundle2-input-bundle: 4 parts total
   updating the branch cache
+  added 3 changesets with 3 changes to 3 files
   bundle2-output-bundle: "HG20", 1 parts total
   bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
   bundle2-input-bundle: no-transaction
@@ -263,7 +263,6 @@  No [acl.allow]/[acl.deny]
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "fred"
   acl: acl.allow.branches not enabled
@@ -281,6 +280,7 @@  No [acl.allow]/[acl.deny]
   bundle2-input-part: total payload size 24
   bundle2-input-bundle: 4 parts total
   updating the branch cache
+  added 3 changesets with 3 changes to 3 files
   bundle2-output-bundle: "HG20", 1 parts total
   bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
   bundle2-input-bundle: no-transaction
@@ -340,7 +340,6 @@  Empty [acl.allow]
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "fred"
   acl: acl.allow.branches not enabled
@@ -409,7 +408,6 @@  fred is allowed inside foo/
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "fred"
   acl: acl.allow.branches not enabled
@@ -483,7 +481,6 @@  Empty [acl.deny]
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "barney"
   acl: acl.allow.branches not enabled
@@ -554,7 +551,6 @@  fred is allowed inside foo/, but not foo
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "fred"
   acl: acl.allow.branches not enabled
@@ -630,7 +626,6 @@  fred is allowed inside foo/, but not foo
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "fred"
   acl: acl.allow.branches not enabled
@@ -703,7 +698,6 @@  fred is allowed inside foo/, but not foo
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "barney"
   acl: acl.allow.branches not enabled
@@ -775,7 +769,6 @@  fred is not blocked from moving bookmark
   adding manifests
   adding file changes
   adding foo/file.txt revisions
-  added 1 changesets with 1 changes to 1 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "fred"
   acl: acl.allow.branches not enabled
@@ -796,6 +789,7 @@  fred is not blocked from moving bookmark
   acl: bookmark access granted: "ef1ea85a6374b77d6da9dcda9541f498f2d17df7" on bookmark "moving-bookmark"
   bundle2-input-bundle: 6 parts total
   updating the branch cache
+  added 1 changesets with 1 changes to 1 files
   bundle2-output-bundle: "HG20", 1 parts total
   bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
   bundle2-input-bundle: no-transaction
@@ -861,7 +855,6 @@  fred is not allowed to move bookmarks
   adding manifests
   adding file changes
   adding foo/file.txt revisions
-  added 1 changesets with 1 changes to 1 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "fred"
   acl: acl.allow.branches not enabled
@@ -950,7 +943,6 @@  barney is allowed everywhere
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "barney"
   acl: acl.allow.branches not enabled
@@ -968,6 +960,7 @@  barney is allowed everywhere
   bundle2-input-part: total payload size 24
   bundle2-input-bundle: 4 parts total
   updating the branch cache
+  added 3 changesets with 3 changes to 3 files
   bundle2-output-bundle: "HG20", 1 parts total
   bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
   bundle2-input-bundle: no-transaction
@@ -1034,7 +1027,6 @@  wilma can change files with a .txt exten
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "wilma"
   acl: acl.allow.branches not enabled
@@ -1116,7 +1108,6 @@  file specified by acl.config does not ex
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "barney"
   error: pretxnchangegroup.acl hook raised an exception: [Errno *] * (glob)
@@ -1193,7 +1184,6 @@  betty is allowed inside foo/ by a acl.co
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "betty"
   acl: acl.allow.branches not enabled
@@ -1281,7 +1271,6 @@  acl.config can set only [acl.allow]/[acl
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "barney"
   acl: acl.allow.branches not enabled
@@ -1299,6 +1288,7 @@  acl.config can set only [acl.allow]/[acl
   bundle2-input-part: total payload size 24
   bundle2-input-bundle: 4 parts total
   updating the branch cache
+  added 3 changesets with 3 changes to 3 files
   bundle2-output-bundle: "HG20", 1 parts total
   bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
   bundle2-input-bundle: no-transaction
@@ -1369,7 +1359,6 @@  fred is always allowed
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "fred"
   acl: acl.allow.branches not enabled
@@ -1387,6 +1376,7 @@  fred is always allowed
   bundle2-input-part: total payload size 24
   bundle2-input-bundle: 4 parts total
   updating the branch cache
+  added 3 changesets with 3 changes to 3 files
   bundle2-output-bundle: "HG20", 1 parts total
   bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
   bundle2-input-bundle: no-transaction
@@ -1453,7 +1443,6 @@  no one is allowed inside foo/Bar/
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "fred"
   acl: acl.allow.branches not enabled
@@ -1534,7 +1523,6 @@  OS-level groups
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "fred"
   acl: acl.allow.branches not enabled
@@ -1553,6 +1541,7 @@  OS-level groups
   bundle2-input-part: total payload size 24
   bundle2-input-bundle: 4 parts total
   updating the branch cache
+  added 3 changesets with 3 changes to 3 files
   bundle2-output-bundle: "HG20", 1 parts total
   bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
   bundle2-input-bundle: no-transaction
@@ -1619,7 +1608,6 @@  OS-level groups
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "fred"
   acl: acl.allow.branches not enabled
@@ -1743,7 +1731,6 @@  No branch acls specified
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 4 changesets with 4 changes to 4 files (+1 heads)
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "astro"
   acl: acl.allow.branches not enabled
@@ -1763,6 +1750,7 @@  No branch acls specified
   bundle2-input-part: total payload size 48
   bundle2-input-bundle: 4 parts total
   updating the branch cache
+  added 4 changesets with 4 changes to 4 files (+1 heads)
   bundle2-output-bundle: "HG20", 1 parts total
   bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
   bundle2-input-bundle: no-transaction
@@ -1829,7 +1817,6 @@  Branch acl deny test
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 4 changesets with 4 changes to 4 files (+1 heads)
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "astro"
   acl: acl.allow.branches not enabled
@@ -1908,7 +1895,6 @@  Branch acl empty allow test
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 4 changesets with 4 changes to 4 files (+1 heads)
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "astro"
   acl: acl.allow.branches enabled, 0 entries for user astro
@@ -1983,7 +1969,6 @@  Branch acl allow other
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 4 changesets with 4 changes to 4 files (+1 heads)
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "astro"
   acl: acl.allow.branches enabled, 0 entries for user astro
@@ -2052,7 +2037,6 @@  Branch acl allow other
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 4 changesets with 4 changes to 4 files (+1 heads)
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "george"
   acl: acl.allow.branches enabled, 1 entries for user george
@@ -2072,6 +2056,7 @@  Branch acl allow other
   bundle2-input-part: total payload size 48
   bundle2-input-bundle: 4 parts total
   updating the branch cache
+  added 4 changesets with 4 changes to 4 files (+1 heads)
   bundle2-output-bundle: "HG20", 1 parts total
   bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
   bundle2-input-bundle: no-transaction
@@ -2143,7 +2128,6 @@  push foobar into the remote
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 4 changesets with 4 changes to 4 files (+1 heads)
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "george"
   acl: acl.allow.branches enabled, 1 entries for user george
@@ -2163,6 +2147,7 @@  push foobar into the remote
   bundle2-input-part: total payload size 48
   bundle2-input-bundle: 4 parts total
   updating the branch cache
+  added 4 changesets with 4 changes to 4 files (+1 heads)
   bundle2-output-bundle: "HG20", 1 parts total
   bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
   bundle2-input-bundle: no-transaction
@@ -2233,7 +2218,6 @@  Branch acl conflicting deny
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 4 changesets with 4 changes to 4 files (+1 heads)
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "george"
   acl: acl.allow.branches not enabled
@@ -2307,7 +2291,6 @@  User 'astro' must not be denied
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 4 changesets with 4 changes to 4 files (+1 heads)
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "astro"
   acl: acl.allow.branches not enabled
@@ -2327,6 +2310,7 @@  User 'astro' must not be denied
   bundle2-input-part: total payload size 48
   bundle2-input-bundle: 4 parts total
   updating the branch cache
+  added 4 changesets with 4 changes to 4 files (+1 heads)
   bundle2-output-bundle: "HG20", 1 parts total
   bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
   bundle2-input-bundle: no-transaction
@@ -2391,7 +2375,6 @@  Non-astro users must be denied
   adding foo/Bar/file.txt revisions
   adding foo/file.txt revisions
   adding quux/file.py revisions
-  added 4 changesets with 4 changes to 4 files (+1 heads)
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "george"
   acl: acl.allow.branches not enabled
diff --git a/tests/test-bookflow.t b/tests/test-bookflow.t
--- a/tests/test-bookflow.t
+++ b/tests/test-bookflow.t
@@ -242,8 +242,8 @@  make the bookmark move by updating it on
   $ echo "more" >> test
   $ hg pull -u 2>&1 | fgrep -v TESTTMP| fgrep -v "searching for changes" | fgrep -v adding
   pulling from $TESTTMP/a
+  updating bookmark X
   added 1 changesets with 0 changes to 0 files (+1 heads)
-  updating bookmark X
   new changesets * (glob)
   updating to active bookmark X
   merging test
diff --git a/tests/test-bookmarks-pushpull.t b/tests/test-bookmarks-pushpull.t
--- a/tests/test-bookmarks-pushpull.t
+++ b/tests/test-bookmarks-pushpull.t
@@ -51,10 +51,10 @@  import bookmark by name
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   adding remote bookmark X
   updating bookmark Y
   adding remote bookmark Z
+  added 1 changesets with 1 changes to 1 files
   new changesets 4e3505fd9583 (1 drafts)
   test-hook-bookmark: X:   -> 4e3505fd95835d721066b76e75dbb8cc554d7f77
   test-hook-bookmark: Y:  0000000000000000000000000000000000000000 -> 4e3505fd95835d721066b76e75dbb8cc554d7f77
@@ -414,10 +414,10 @@  divergent bookmarks
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files (+1 heads)
   divergent bookmark @ stored as @foo
   divergent bookmark X stored as X@foo
   updating bookmark Z
+  added 1 changesets with 1 changes to 1 files (+1 heads)
   new changesets 0d2164f0ce0d (1 drafts)
   test-hook-bookmark: @foo:   -> 0d2164f0ce0d8f1d6f94351eba04b794909be66c
   test-hook-bookmark: X@foo:   -> 0d2164f0ce0d8f1d6f94351eba04b794909be66c
@@ -580,8 +580,8 @@  race conditions
   adding changesets
   adding manifests
   adding file changes
+  updating bookmark Y
   added 1 changesets with 1 changes to 1 files
-  updating bookmark Y
   new changesets b0a5eff05604 (1 drafts)
   (run 'hg update' to get a working copy)
   $ hg book
@@ -629,8 +629,8 @@  Update a bookmark right after the initia
   adding changesets
   adding manifests
   adding file changes
+  updating bookmark Y
   added 1 changesets with 1 changes to 1 files
-  updating bookmark Y
   new changesets 35d1ef0a8d1b (1 drafts)
   (run 'hg update' to get a working copy)
   $ hg book
@@ -672,8 +672,8 @@  Update a bookmark right after the initia
   adding changesets
   adding manifests
   adding file changes
+  updating bookmark Y
   added 1 changesets with 1 changes to 1 files
-  updating bookmark Y
   new changesets 0d60821d2197 (1 drafts)
   (run 'hg update' to get a working copy)
   $ hg book
diff --git a/tests/test-bookmarks.t b/tests/test-bookmarks.t
--- a/tests/test-bookmarks.t
+++ b/tests/test-bookmarks.t
@@ -762,9 +762,9 @@  pull --update works the same as pull && 
   adding changesets
   adding manifests
   adding file changes
-  added 2 changesets with 2 changes to 2 files (+1 heads)
   updating bookmark Y
   updating bookmark Z
+  added 2 changesets with 2 changes to 2 files (+1 heads)
   new changesets 125c9a1d6df6:9ba5f110a0b3
   (run 'hg heads' to see heads, 'hg merge' to merge)
 
@@ -788,9 +788,9 @@  pull --update works the same as pull && 
   adding changesets
   adding manifests
   adding file changes
-  added 2 changesets with 2 changes to 2 files (+1 heads)
   updating bookmark Y
   updating bookmark Z
+  added 2 changesets with 2 changes to 2 files (+1 heads)
   new changesets 125c9a1d6df6:9ba5f110a0b3
   updating to active bookmark Y
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -813,9 +813,9 @@  We warn about divergent during bare upda
   adding changesets
   adding manifests
   adding file changes
-  added 2 changesets with 2 changes to 2 files (+1 heads)
   updating bookmark Y
   updating bookmark Z
+  added 2 changesets with 2 changes to 2 files (+1 heads)
   new changesets 125c9a1d6df6:9ba5f110a0b3
   (run 'hg heads' to see heads, 'hg merge' to merge)
   $ hg -R ../cloned-bookmarks-manual-update-with-divergence update
@@ -996,11 +996,11 @@  case)
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   divergent bookmark Z stored as Z@default
   adding remote bookmark foo
   adding remote bookmark four
   adding remote bookmark should-end-on-two
+  added 1 changesets with 1 changes to 1 files
   new changesets 5fb12f0f2d51
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg -R ../cloned-bookmarks-update parents -T "{rev}:{node|short}\n"
@@ -1023,8 +1023,8 @@  updates the working directory and curren
   adding changesets
   adding manifests
   adding file changes
+  divergent bookmark Z stored as Z@default
   added 1 changesets with 1 changes to 1 files
-  divergent bookmark Z stored as Z@default
   new changesets 81dcce76aa0b
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   updating bookmark Y
diff --git a/tests/test-bundle2-exchange.t b/tests/test-bundle2-exchange.t
--- a/tests/test-bundle2-exchange.t
+++ b/tests/test-bundle2-exchange.t
@@ -58,8 +58,8 @@  The extension requires a repo (currently
   adding changesets
   adding manifests
   adding file changes
+  pre-close-tip:02de42196ebe draft 
   added 8 changesets with 7 changes to 7 files (+3 heads)
-  pre-close-tip:02de42196ebe draft 
   new changesets cd010b8cd998:02de42196ebe (8 drafts)
   postclose-tip:02de42196ebe draft 
   txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NODE=cd010b8cd998f3981a5a8115f94f8da4ab506089 HG_NODE_LAST=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_PHASES_MOVED=1 HG_SOURCE=unbundle HG_TXNID=TXN:$ID$ HG_TXNNAME=unbundle
@@ -94,8 +94,8 @@  clone --pull
   adding changesets
   adding manifests
   adding file changes
+  pre-close-tip:9520eea781bc draft 
   added 2 changesets with 2 changes to 2 files
-  pre-close-tip:9520eea781bc draft 
   1 new obsolescence markers
   new changesets cd010b8cd998:9520eea781bc (1 drafts)
   postclose-tip:9520eea781bc draft 
@@ -123,8 +123,8 @@  pull
   adding changesets
   adding manifests
   adding file changes
+  pre-close-tip:24b6387c8c8c draft 
   added 1 changesets with 1 changes to 1 files (+1 heads)
-  pre-close-tip:24b6387c8c8c draft 
   1 new obsolescence markers
   new changesets 24b6387c8c8c (1 drafts)
   postclose-tip:24b6387c8c8c draft 
@@ -268,8 +268,8 @@  push
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
+  remote: pre-close-tip:eea13746799a public book_eea1
   remote: added 1 changesets with 0 changes to 0 files (-1 heads)
-  remote: pre-close-tip:eea13746799a public book_eea1
   remote: 1 new obsolescence markers
   remote: pushkey: lock state after "bookmarks"
   remote: lock:  free
@@ -303,9 +303,9 @@  pull over ssh
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files (+1 heads)
   updating bookmark book_02de
   pre-close-tip:02de42196ebe draft book_02de
+  added 1 changesets with 1 changes to 1 files (+1 heads)
   1 new obsolescence markers
   new changesets 02de42196ebe (1 drafts)
   postclose-tip:02de42196ebe draft book_02de
@@ -329,9 +329,9 @@  pull over http
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files (+1 heads)
   updating bookmark book_42cc
   pre-close-tip:42ccdea3bb16 draft book_42cc
+  added 1 changesets with 1 changes to 1 files (+1 heads)
   1 new obsolescence markers
   new changesets 42ccdea3bb16 (1 drafts)
   postclose-tip:42ccdea3bb16 draft book_42cc
@@ -354,8 +354,8 @@  push over ssh
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
+  remote: pre-close-tip:5fddd98957c8 draft book_5fdd
   remote: added 1 changesets with 1 changes to 1 files
-  remote: pre-close-tip:5fddd98957c8 draft book_5fdd
   remote: 1 new obsolescence markers
   remote: pushkey: lock state after "bookmarks"
   remote: lock:  free
@@ -405,8 +405,8 @@  push over http
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
+  remote: pre-close-tip:32af7686d403 public book_32af
   remote: added 1 changesets with 1 changes to 1 files
-  remote: pre-close-tip:32af7686d403 public book_32af
   remote: 1 new obsolescence markers
   remote: pushkey: lock state after "bookmarks"
   remote: lock:  free
@@ -631,7 +631,6 @@  Doing the actual push: hook abort
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: pre-close-tip:e7ec4e813ba6 draft 
   remote: You shall not pass!
   remote: transaction abort!
@@ -646,7 +645,6 @@  Doing the actual push: hook abort
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: pre-close-tip:e7ec4e813ba6 draft 
   remote: You shall not pass!
   remote: transaction abort!
@@ -662,7 +660,6 @@  Doing the actual push: hook abort
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: pre-close-tip:e7ec4e813ba6 draft 
   remote: You shall not pass!
   remote: transaction abort!
@@ -696,7 +693,6 @@  Check error from hook during the unbundl
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: Fail early!
   remote: transaction abort!
   remote: Cleaning up the mess...
@@ -709,7 +705,6 @@  Check error from hook during the unbundl
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: Fail early!
   remote: transaction abort!
   remote: Cleaning up the mess...
@@ -723,7 +718,6 @@  Check error from hook during the unbundl
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: Fail early!
   remote: transaction abort!
   remote: Cleaning up the mess...
@@ -747,7 +741,6 @@  Check output capture control.
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   Fail early!
   transaction abort!
   Cleaning up the mess...
@@ -760,7 +753,6 @@  Check output capture control.
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: Fail early!
   remote: transaction abort!
   remote: Cleaning up the mess...
@@ -774,7 +766,6 @@  Check output capture control.
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: Fail early!
   remote: transaction abort!
   remote: Cleaning up the mess...
@@ -822,7 +813,6 @@  Check abort from mandatory pushkey
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   do not push the key !
   pushkey-abort: prepushkey.failpush hook exited with status 1
   transaction abort!
@@ -836,7 +826,6 @@  Check abort from mandatory pushkey
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: do not push the key !
   remote: pushkey-abort: prepushkey.failpush hook exited with status 1
   remote: transaction abort!
@@ -850,7 +839,6 @@  Check abort from mandatory pushkey
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: do not push the key !
   remote: pushkey-abort: prepushkey.failpush hook exited with status 1
   remote: transaction abort!
@@ -892,7 +880,6 @@  Check abort from mandatory pushkey
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   transaction abort!
   Cleaning up the mess...
   rollback completed
@@ -907,7 +894,6 @@  Check abort from mandatory pushkey
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: transaction abort!
   remote: Cleaning up the mess...
   remote: rollback completed
@@ -922,7 +908,6 @@  Check abort from mandatory pushkey
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: transaction abort!
   remote: Cleaning up the mess...
   remote: rollback completed
diff --git a/tests/test-bundle2-format.t b/tests/test-bundle2-format.t
--- a/tests/test-bundle2-format.t
+++ b/tests/test-bundle2-format.t
@@ -1010,6 +1010,7 @@  with reply
 
   $ hg bundle2 --rev '8+7+5+4' --reply ../rev-rr.hg2
   $ hg unbundle2 ../rev-reply.hg2 < ../rev-rr.hg2
+  added 0 changesets with 0 changes to 3 files
   0 unread bytes
   addchangegroup return: 1
 
@@ -1021,13 +1022,11 @@  with reply
   0030: 2d 74 6f 31 72 65 74 75 72 6e 31 00 00 00 00 00 |-to1return1.....|
   0040: 00 00 1b 06 6f 75 74 70 75 74 00 00 00 01 00 01 |....output......|
   0050: 0b 01 69 6e 2d 72 65 70 6c 79 2d 74 6f 31 00 00 |..in-reply-to1..|
-  0060: 00 64 61 64 64 69 6e 67 20 63 68 61 6e 67 65 73 |.dadding changes|
+  0060: 00 37 61 64 64 69 6e 67 20 63 68 61 6e 67 65 73 |.7adding changes|
   0070: 65 74 73 0a 61 64 64 69 6e 67 20 6d 61 6e 69 66 |ets.adding manif|
   0080: 65 73 74 73 0a 61 64 64 69 6e 67 20 66 69 6c 65 |ests.adding file|
-  0090: 20 63 68 61 6e 67 65 73 0a 61 64 64 65 64 20 30 | changes.added 0|
-  00a0: 20 63 68 61 6e 67 65 73 65 74 73 20 77 69 74 68 | changesets with|
-  00b0: 20 30 20 63 68 61 6e 67 65 73 20 74 6f 20 33 20 | 0 changes to 3 |
-  00c0: 66 69 6c 65 73 0a 00 00 00 00 00 00 00 00       |files.........|
+  0090: 20 63 68 61 6e 67 65 73 0a 00 00 00 00 00 00 00 | changes........|
+  00a0: 00                                              |.|
 
 Check handling of exception during generation.
 ----------------------------------------------
diff --git a/tests/test-bundle2-multiple-changegroups.t b/tests/test-bundle2-multiple-changegroups.t
--- a/tests/test-bundle2-multiple-changegroups.t
+++ b/tests/test-bundle2-multiple-changegroups.t
@@ -80,7 +80,6 @@  Pull the new commits in the clone
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   pretxnchangegroup hook: HG_HOOKNAME=pretxnchangegroup
   HG_HOOKTYPE=pretxnchangegroup
   HG_NODE=27547f69f25460a52fff66ad004e58da7ad3fb56
@@ -96,7 +95,6 @@  Pull the new commits in the clone
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   pretxnchangegroup hook: HG_HOOKNAME=pretxnchangegroup
   HG_HOOKTYPE=pretxnchangegroup
   HG_NODE=f838bfaca5c7226600ebcfd84f3c3c13a28d3757
@@ -109,6 +107,7 @@  Pull the new commits in the clone
   file:/*/$TESTTMP/repo (glob)
   HG_URL=file:$TESTTMP/repo
   
+  added 2 changesets with 2 changes to 2 files
   new changesets 27547f69f254:f838bfaca5c7
   changegroup hook: HG_HOOKNAME=changegroup
   HG_HOOKTYPE=changegroup
@@ -208,7 +207,6 @@  pullop.cgresult
   adding changesets
   adding manifests
   adding file changes
-  added 2 changesets with 2 changes to 2 files (+1 heads)
   pretxnchangegroup hook: HG_HOOKNAME=pretxnchangegroup
   HG_HOOKTYPE=pretxnchangegroup
   HG_NODE=b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e
@@ -224,7 +222,6 @@  pullop.cgresult
   adding changesets
   adding manifests
   adding file changes
-  added 3 changesets with 3 changes to 3 files (+1 heads)
   pretxnchangegroup hook: HG_HOOKNAME=pretxnchangegroup
   HG_HOOKTYPE=pretxnchangegroup
   HG_NODE=7f219660301fe4c8a116f714df5e769695cc2b46
@@ -237,6 +234,7 @@  pullop.cgresult
   file:/*/$TESTTMP/repo (glob)
   HG_URL=file:$TESTTMP/repo
   
+  added 5 changesets with 5 changes to 5 files (+2 heads)
   new changesets b3325c91a4d9:5cd59d311f65
   changegroup hook: HG_HOOKNAME=changegroup
   HG_HOOKTYPE=changegroup
@@ -365,7 +363,6 @@  pullop.cgresult
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 0 changes to 0 files (-1 heads)
   pretxnchangegroup hook: HG_HOOKNAME=pretxnchangegroup
   HG_HOOKTYPE=pretxnchangegroup
   HG_NODE=71bd7b46de72e69a32455bf88d04757d542e6cf4
@@ -381,7 +378,6 @@  pullop.cgresult
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   pretxnchangegroup hook: HG_HOOKNAME=pretxnchangegroup
   HG_HOOKTYPE=pretxnchangegroup
   HG_NODE=9d18e5bd9ab09337802595d49f1dad0c98df4d84
@@ -394,6 +390,7 @@  pullop.cgresult
   file:/*/$TESTTMP/repo (glob)
   HG_URL=file:$TESTTMP/repo
   
+  added 2 changesets with 1 changes to 1 files (-1 heads)
   new changesets 71bd7b46de72:9d18e5bd9ab0
   changegroup hook: HG_HOOKNAME=changegroup
   HG_HOOKTYPE=changegroup
diff --git a/tests/test-bundle2-remote-changegroup.t b/tests/test-bundle2-remote-changegroup.t
--- a/tests/test-bundle2-remote-changegroup.t
+++ b/tests/test-bundle2-remote-changegroup.t
@@ -202,12 +202,11 @@  Test a pull with an remote-changegroup a
   adding changesets
   adding manifests
   adding file changes
-  added 2 changesets with 2 changes to 2 files (+1 heads)
   remote: changegroup
   adding changesets
   adding manifests
   adding file changes
-  added 3 changesets with 2 changes to 2 files (+1 heads)
+  added 5 changesets with 4 changes to 4 files (+2 heads)
   new changesets 32af7686d403:02de42196ebe
   (run 'hg heads' to see heads, 'hg merge' to merge)
   $ hg -R clone log -G
@@ -252,12 +251,11 @@  Test a pull with a changegroup followed 
   adding changesets
   adding manifests
   adding file changes
-  added 2 changesets with 2 changes to 2 files (+1 heads)
   remote: remote-changegroup
   adding changesets
   adding manifests
   adding file changes
-  added 3 changesets with 2 changes to 2 files (+1 heads)
+  added 5 changesets with 4 changes to 4 files (+2 heads)
   new changesets 32af7686d403:02de42196ebe
   (run 'hg heads' to see heads, 'hg merge' to merge)
   $ hg -R clone log -G
@@ -305,17 +303,15 @@  Test a pull with two remote-changegroups
   adding changesets
   adding manifests
   adding file changes
-  added 2 changesets with 2 changes to 2 files (+1 heads)
   remote: remote-changegroup
   adding changesets
   adding manifests
   adding file changes
-  added 2 changesets with 1 changes to 1 files
   remote: changegroup
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files (+1 heads)
+  added 5 changesets with 4 changes to 4 files (+2 heads)
   new changesets 32af7686d403:02de42196ebe
   (run 'hg heads' to see heads, 'hg merge' to merge)
   $ hg -R clone log -G
@@ -383,7 +379,6 @@  Hash digest mismatch throws an error
   adding changesets
   adding manifests
   adding file changes
-  added 8 changesets with 7 changes to 7 files (+2 heads)
   transaction abort!
   rollback completed
   abort: bundle at http://localhost:$HGPORT/bundle6.hg is corrupted:
@@ -418,7 +413,6 @@  If either of the multiple hash digests m
   adding changesets
   adding manifests
   adding file changes
-  added 8 changesets with 7 changes to 7 files (+2 heads)
   transaction abort!
   rollback completed
   abort: bundle at http://localhost:$HGPORT/bundle6.hg is corrupted:
@@ -434,7 +428,6 @@  If either of the multiple hash digests m
   adding changesets
   adding manifests
   adding file changes
-  added 8 changesets with 7 changes to 7 files (+2 heads)
   transaction abort!
   rollback completed
   abort: bundle at http://localhost:$HGPORT/bundle6.hg is corrupted:
@@ -464,12 +457,10 @@  Corruption tests
   adding changesets
   adding manifests
   adding file changes
-  added 2 changesets with 2 changes to 2 files (+1 heads)
   remote: remote-changegroup
   adding changesets
   adding manifests
   adding file changes
-  added 2 changesets with 1 changes to 1 files
   transaction abort!
   rollback completed
   abort: bundle at http://localhost:$HGPORT/bundle5.hg is corrupted:
@@ -534,7 +525,6 @@  Size mismatch
   adding changesets
   adding manifests
   adding file changes
-  added 2 changesets with 2 changes to 2 files (+1 heads)
   transaction abort!
   rollback completed
   abort: bundle at http://localhost:$HGPORT/bundle4.hg is corrupted:
diff --git a/tests/test-clone.t b/tests/test-clone.t
--- a/tests/test-clone.t
+++ b/tests/test-clone.t
@@ -868,9 +868,9 @@  Clone with existing share dir should res
   adding changesets
   adding manifests
   adding file changes
-  added 4 changesets with 4 changes to 1 files (+4 heads)
   adding remote bookmark head1
   adding remote bookmark head2
+  added 4 changesets with 4 changes to 1 files (+4 heads)
   new changesets 4a8dc1ab4c13:6bacf4683960
   updating working directory
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -996,9 +996,9 @@  making another clone should only pull do
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files (+1 heads)
   adding remote bookmark head1
   adding remote bookmark head2
+  added 1 changesets with 1 changes to 1 files (+1 heads)
   new changesets 99f71071f117
   updating working directory
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
diff --git a/tests/test-eol-hook.t b/tests/test-eol-hook.t
--- a/tests/test-eol-hook.t
+++ b/tests/test-eol-hook.t
@@ -39,7 +39,6 @@  Create repo
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   error: pretxnchangegroup hook failed: end-of-line check failed:
     a.txt in a8ee6548cd86 should not have CRLF line endings
   transaction abort!
@@ -67,7 +66,6 @@  Create repo
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   error: pretxnchangegroup hook failed: end-of-line check failed:
     crlf.txt in 004ba2132725 should not have LF line endings
   transaction abort!
@@ -95,7 +93,6 @@  Create repo
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   error: pretxnchangegroup hook failed: end-of-line check failed:
     b.txt in fbcf9b1025f5 should not have CRLF line endings
   transaction abort!
@@ -116,7 +113,6 @@  Create repo
   adding changesets
   adding manifests
   adding file changes
-  added 2 changesets with 2 changes to 2 files (+1 heads)
   error: pretxnchangegroup hook failed: end-of-line check failed:
     b.txt in fbcf9b1025f5 should not have CRLF line endings
   transaction abort!
@@ -137,7 +133,6 @@  Test checkheadshook alias
   adding changesets
   adding manifests
   adding file changes
-  added 2 changesets with 2 changes to 2 files (+1 heads)
   error: pretxnchangegroup hook failed: end-of-line check failed:
     b.txt in fbcf9b1025f5 should not have CRLF line endings
   transaction abort!
@@ -174,7 +169,6 @@  Test it still fails with checkallhook
   adding changesets
   adding manifests
   adding file changes
-  added 3 changesets with 3 changes to 2 files (+1 heads)
   error: pretxnchangegroup hook failed: end-of-line check failed:
     b.txt in fbcf9b1025f5 should not have CRLF line endings
   transaction abort!
@@ -204,7 +198,6 @@  Test multiple files/revisions output
   adding changesets
   adding manifests
   adding file changes
-  added 3 changesets with 3 changes to 2 files (+1 heads)
   error: pretxnchangegroup hook failed: end-of-line check failed:
     b.txt in fbcf9b1025f5 should not have CRLF line endings
     d.txt in a7040e68714f should not have CRLF line endings
diff --git a/tests/test-hook.t b/tests/test-hook.t
--- a/tests/test-hook.t
+++ b/tests/test-hook.t
@@ -720,7 +720,6 @@  incoming changes no longer there after
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   4:539e4b31b6dc
   pretxnchangegroup.forbid hook: HG_HOOKNAME=pretxnchangegroup.forbid1
   HG_HOOKTYPE=pretxnchangegroup
@@ -763,8 +762,8 @@  outgoing hooks can see env vars
   adding changesets
   adding manifests
   adding file changes
+  adding remote bookmark quux
   added 1 changesets with 1 changes to 1 files
-  adding remote bookmark quux
   new changesets 539e4b31b6dc
   (run 'hg update' to get a working copy)
   $ hg rollback
@@ -995,8 +994,8 @@  different between Python 2.6 and Python 
   adding changesets
   adding manifests
   adding file changes
+  adding remote bookmark quux
   added 1 changesets with 1 changes to 1 files
-  adding remote bookmark quux
   new changesets 539e4b31b6dc
   (run 'hg update' to get a working copy)
 
@@ -1235,13 +1234,13 @@  new commits must be visible in pretxncha
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   changeset:   1:9836a07b9b9d
   tag:         tip
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     b
   
+  added 1 changesets with 1 changes to 1 files
 
 pretxnclose hook failure should abort the transaction
 
diff --git a/tests/test-http-bad-server.t b/tests/test-http-bad-server.t
--- a/tests/test-http-bad-server.t
+++ b/tests/test-http-bad-server.t
@@ -1092,7 +1092,6 @@  Server stops sending after 0 length payl
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   transaction abort!
   rollback completed
   abort: HTTP request error (incomplete response) (py3 !)
diff --git a/tests/test-http.t b/tests/test-http.t
--- a/tests/test-http.t
+++ b/tests/test-http.t
@@ -338,12 +338,13 @@  test http authentication
   bundle2-input-bundle: no-transaction
   bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
   bundle2-input-part: "output" (advisory) (params: 0 advisory) supported
-  bundle2-input-part: total payload size 100
+  bundle2-input-part: total payload size 55
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
+  bundle2-input-part: "output" (advisory) supported
+  bundle2-input-part: total payload size 45
   remote: added 1 changesets with 1 changes to 1 files
-  bundle2-input-part: "output" (advisory) supported
   bundle2-input-bundle: 2 parts total
   preparing listkeys for "phases"
   sending listkeys command
diff --git a/tests/test-infinitepush-bundlestore.t b/tests/test-infinitepush-bundlestore.t
--- a/tests/test-infinitepush-bundlestore.t
+++ b/tests/test-infinitepush-bundlestore.t
@@ -168,8 +168,8 @@  Pull scratch and non-scratch bookmark at
   adding changesets
   adding manifests
   adding file changes
+  adding remote bookmark newbook
   added 1 changesets with 1 changes to 2 files
-  adding remote bookmark newbook
   new changesets 1de1d7d92f89 (1 drafts)
   (run 'hg update' to get a working copy)
   $ hg log -G -T '{desc} {phase} {bookmarks}'
diff --git a/tests/test-infinitepush.t b/tests/test-infinitepush.t
--- a/tests/test-infinitepush.t
+++ b/tests/test-infinitepush.t
@@ -78,11 +78,10 @@  Pull two bookmarks from the second clien
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files (+1 heads)
+  added 2 changesets with 2 changes to 2 files (+1 heads)
   new changesets * (glob)
   (run 'hg heads' to see heads, 'hg merge' to merge)
   $ hg log -r scratch/secondpart -T '{node}'
@@ -158,11 +157,10 @@  Make sure phase on the client is public.
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files (+1 heads)
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
+  added 2 changesets with 2 changes to 2 files (+1 heads)
   new changesets a79b6597f322:c70aee6da07d (1 drafts)
   (run 'hg heads .' to see heads, 'hg merge' to merge)
   $ hg log -r scratch/scratchontopofpublic -T '{phase}'
diff --git a/tests/test-lfs-serve-access.t b/tests/test-lfs-serve-access.t
--- a/tests/test-lfs-serve-access.t
+++ b/tests/test-lfs-serve-access.t
@@ -105,7 +105,6 @@  Blob URIs are correct when --prefix is u
   adding manifests
   adding file changes
   adding lfs.bin revisions
-  added 1 changesets with 1 changes to 1 files
   bundle2-input-part: total payload size 648
   bundle2-input-part: "listkeys" (params: 1 mandatory) supported
   bundle2-input-part: "phase-heads" supported
@@ -115,6 +114,7 @@  Blob URIs are correct when --prefix is u
   bundle2-input-bundle: 3 parts total
   checking for updated bookmarks
   updating the branch cache
+  added 1 changesets with 1 changes to 1 files
   new changesets 525251863cad
   updating to branch default
   resolving manifests
diff --git a/tests/test-lfs-serve.t b/tests/test-lfs-serve.t
--- a/tests/test-lfs-serve.t
+++ b/tests/test-lfs-serve.t
@@ -499,8 +499,8 @@  lfs content, and the extension enabled.
   adding changesets
   adding manifests
   adding file changes
+  calling hook pretxnchangegroup.lfs: hgext.lfs.checkrequireslfs
   added 6 changesets with 5 changes to 5 files (+1 heads)
-  calling hook pretxnchangegroup.lfs: hgext.lfs.checkrequireslfs
   new changesets d437e1d24fbd:d3b84d50eacb
   resolving manifests
   lfs: assuming remote store: http://localhost:$HGPORT/.git/info/lfs
diff --git a/tests/test-lfs-test-server.t b/tests/test-lfs-test-server.t
--- a/tests/test-lfs-test-server.t
+++ b/tests/test-lfs-test-server.t
@@ -135,13 +135,13 @@  store.
   adding manifests
   adding file changes
   adding a revisions
-  added 1 changesets with 1 changes to 1 files
   calling hook pretxnchangegroup.lfs: hgext.lfs.checkrequireslfs
   bundle2-input-part: total payload size 617
   bundle2-input-part: "phase-heads" supported
   bundle2-input-part: total payload size 24
   bundle2-input-bundle: 3 parts total
   updating the branch cache
+  added 1 changesets with 1 changes to 1 files
   bundle2-output-bundle: "HG20", 1 parts total
   bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
   bundle2-input-bundle: no-transaction
@@ -312,12 +312,12 @@  actions property completely.
   adding b revisions
   adding c revisions
   adding d revisions
-  added 1 changesets with 3 changes to 3 files
   bundle2-input-part: total payload size 1315
   bundle2-input-part: "phase-heads" supported
   bundle2-input-part: total payload size 24
   bundle2-input-bundle: 4 parts total
   updating the branch cache
+  added 1 changesets with 3 changes to 3 files
   bundle2-output-bundle: "HG20", 1 parts total
   bundle2-output-part: "reply:changegroup" (advisory) (params: 0 advisory) empty payload
   bundle2-input-bundle: no-transaction
diff --git a/tests/test-lfs.t b/tests/test-lfs.t
--- a/tests/test-lfs.t
+++ b/tests/test-lfs.t
@@ -124,8 +124,8 @@  lfs requirement
   adding changesets
   adding manifests
   adding file changes
+  calling hook pretxnchangegroup.lfs: hgext.lfs.checkrequireslfs
   added 2 changesets with 3 changes to 3 files
-  calling hook pretxnchangegroup.lfs: hgext.lfs.checkrequireslfs
   $ grep lfs $TESTTMP/server/.hg/requires
   lfs
 
diff --git a/tests/test-logexchange.t b/tests/test-logexchange.t
--- a/tests/test-logexchange.t
+++ b/tests/test-logexchange.t
@@ -98,9 +98,9 @@  Making a new server
   adding changesets
   adding manifests
   adding file changes
-  added 9 changesets with 9 changes to 9 files (+1 heads)
   adding remote bookmark bar
   adding remote bookmark foo
+  added 9 changesets with 9 changes to 9 files (+1 heads)
   new changesets 18d04c59bb5d:3e1487808078
   (run 'hg heads' to see heads)
 
diff --git a/tests/test-narrow-exchange.t b/tests/test-narrow-exchange.t
--- a/tests/test-narrow-exchange.t
+++ b/tests/test-narrow-exchange.t
@@ -217,7 +217,7 @@  TODO: lfs shouldn't abort like this
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 0 changes to 0 files
+  remote: added 1 changesets with 0 changes to 0 files (no-lfs-on !)
   remote: error: pretxnchangegroup.lfs hook raised an exception: data/inside2/f.i@f59b4e021835: no match found (lfs-on !)
   remote: transaction abort! (lfs-on !)
   remote: rollback completed (lfs-on !)
diff --git a/tests/test-narrow-widen-no-ellipsis.t b/tests/test-narrow-widen-no-ellipsis.t
--- a/tests/test-narrow-widen-no-ellipsis.t
+++ b/tests/test-narrow-widen-no-ellipsis.t
@@ -125,9 +125,9 @@  added upstream revisions.
   adding widest/ revisions (tree !)
   adding file changes
   adding widest/f revisions
-  added 0 changesets with 1 changes to 1 files
   bundle2-input-part: total payload size * (glob)
   bundle2-input-bundle: 0 parts total
+  added 0 changesets with 1 changes to 1 files
    widest/f: narrowspec updated -> g
   getting widest/f
   $ hg tracked
diff --git a/tests/test-narrow-widen.t b/tests/test-narrow-widen.t
--- a/tests/test-narrow-widen.t
+++ b/tests/test-narrow-widen.t
@@ -340,7 +340,6 @@  Widening that fails can be recovered fro
   adding changesets
   adding manifests
   adding file changes
-  added 3 changesets with 2 changes to 2 files
   transaction abort!
   rollback completed
   abort: pretxnchangegroup.bad hook exited with status 1
diff --git a/tests/test-obsolete-changeset-exchange.t b/tests/test-obsolete-changeset-exchange.t
--- a/tests/test-obsolete-changeset-exchange.t
+++ b/tests/test-obsolete-changeset-exchange.t
@@ -170,7 +170,6 @@  client only pulls down 1 changeset
   adding manifests
   adding file changes
   adding foo revisions
-  added 1 changesets with 1 changes to 1 files (+1 heads)
   bundle2-input-part: total payload size 476
   bundle2-input-part: "listkeys" (params: 1 mandatory) supported
   bundle2-input-part: "phase-heads" supported
@@ -180,5 +179,6 @@  client only pulls down 1 changeset
   bundle2-input-bundle: 3 parts total
   checking for updated bookmarks
   updating the branch cache
+  added 1 changesets with 1 changes to 1 files (+1 heads)
   new changesets bec0734cd68e
   (run 'hg heads' to see heads, 'hg merge' to merge)
diff --git a/tests/test-pull-bundle.t b/tests/test-pull-bundle.t
--- a/tests/test-pull-bundle.t
+++ b/tests/test-pull-bundle.t
@@ -101,15 +101,13 @@  Test pullbundle functionality for increm
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files (+1 heads)
+  added 3 changesets with 3 changes to 3 files (+1 heads)
   new changesets bbd179dfa0a7:ed1b79f46b9a (3 drafts)
   updating to branch default
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
diff --git a/tests/test-pull-update.t b/tests/test-pull-update.t
--- a/tests/test-pull-update.t
+++ b/tests/test-pull-update.t
@@ -108,8 +108,8 @@  explicit destination of the update.
   adding changesets
   adding manifests
   adding file changes
+  adding remote bookmark active-after-pull
   added 1 changesets with 1 changes to 1 files
-  adding remote bookmark active-after-pull
   new changesets f815b3da6163
   1 local changesets published
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -138,8 +138,8 @@  explicit destination of the update.
   adding changesets
   adding manifests
   adding file changes
+  adding remote bookmark active-after-pull
   added 1 changesets with 1 changes to 1 files
-  adding remote bookmark active-after-pull
   new changesets f815b3da6163
   1 local changesets published
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
diff --git a/tests/test-push-http.t b/tests/test-push-http.t
--- a/tests/test-push-http.t
+++ b/tests/test-push-http.t
@@ -88,8 +88,8 @@  expect success
   remote: adding manifests
   remote: adding file changes
   remote: adding a revisions
+  remote: updating the branch cache
   remote: added 1 changesets with 1 changes to 1 files
-  remote: updating the branch cache
   remote: running hook txnclose-phase.test: sh $TESTTMP/hook.sh
   remote: phase-move: cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b:  draft -> public
   remote: running hook txnclose-phase.test: sh $TESTTMP/hook.sh
@@ -117,8 +117,8 @@  expect success
   remote: adding manifests
   remote: adding file changes
   remote: adding a revisions
+  remote: updating the branch cache
   remote: added 1 changesets with 1 changes to 1 files
-  remote: updating the branch cache
   remote: running hook txnclose-phase.test: sh $TESTTMP/hook.sh
   remote: phase-move: cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b:  draft -> public
   remote: running hook txnclose-phase.test: sh $TESTTMP/hook.sh
@@ -309,7 +309,6 @@  and fails the entire push.
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: prepushkey hook: HG_BUNDLE2=1
   remote: HG_HOOKNAME=prepushkey
   remote: HG_HOOKTYPE=prepushkey
@@ -351,7 +350,6 @@  We don't need to test bundle1 because it
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: prepushkey hook: HG_BUNDLE2=1
   remote: HG_HOOKNAME=prepushkey
   remote: HG_HOOKTYPE=prepushkey
@@ -368,6 +366,7 @@  We don't need to test bundle1 because it
   remote: HG_TXNNAME=serve
   remote: HG_URL=remote:http:$LOCALIP: (glob)
   remote: 
+  remote: added 1 changesets with 1 changes to 1 files
   % serve errors
 #endif
 
@@ -410,7 +409,6 @@  Now do a variant of the above, except on
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: prepushkey hook: HG_BUNDLE2=1
   remote: HG_HOOKNAME=prepushkey
   remote: HG_HOOKTYPE=prepushkey
@@ -465,7 +463,6 @@  Make phases updates work
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: prepushkey hook: HG_BUNDLE2=1
   remote: HG_HOOKNAME=prepushkey
   remote: HG_HOOKTYPE=prepushkey
@@ -482,6 +479,7 @@  Make phases updates work
   remote: HG_TXNNAME=serve
   remote: HG_URL=remote:http:$LOCALIP: (glob)
   remote: 
+  remote: added 1 changesets with 1 changes to 1 files
   % serve errors
 #endif
 
diff --git a/tests/test-push.t b/tests/test-push.t
--- a/tests/test-push.t
+++ b/tests/test-push.t
@@ -287,9 +287,9 @@  Test push hook locking
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   lock:  user *, process * (*s) (glob)
   wlock: free
+  added 1 changesets with 1 changes to 1 files
 
   $ hg --cwd 1 --config extensions.strip= strip tip -q
   $ hg --cwd 2 --config extensions.strip= strip tip -q
@@ -299,9 +299,9 @@  Test push hook locking
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   lock:  user *, process * (*s) (glob)
   wlock: user *, process * (*s) (glob)
+  added 1 changesets with 1 changes to 1 files
 
 Test bare push with multiple race checking options
 --------------------------------------------------
diff --git a/tests/test-pushvars.t b/tests/test-pushvars.t
--- a/tests/test-pushvars.t
+++ b/tests/test-pushvars.t
@@ -41,9 +41,9 @@  Setting pushvars.sever = true and then p
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   HG_USERVAR_BYPASS_REVIEW=true
   HG_USERVAR_DEBUG=1
+  added 1 changesets with 1 changes to 1 files
 
 Test pushing var with empty right-hand side
 
@@ -55,8 +55,8 @@  Test pushing var with empty right-hand s
   adding changesets
   adding manifests
   adding file changes
+  HG_USERVAR_DEBUG=
   added 1 changesets with 1 changes to 1 files
-  HG_USERVAR_DEBUG=
 
 Test pushing bad vars
 
diff --git a/tests/test-rebase-conflicts.t b/tests/test-rebase-conflicts.t
--- a/tests/test-rebase-conflicts.t
+++ b/tests/test-rebase-conflicts.t
@@ -315,7 +315,6 @@  Check that the right ancestors is used w
   adding manifests
   adding file changes
   adding f1.txt revisions
-  added 2 changesets with 2 changes to 1 files
   bundle2-input-part: total payload size 1686
   bundle2-input-part: "cache:rev-branch-cache" (advisory) supported
   bundle2-input-part: total payload size 74
@@ -323,6 +322,7 @@  Check that the right ancestors is used w
   bundle2-input-part: "phase-heads" supported
   bundle2-input-part: total payload size 24
   bundle2-input-bundle: 2 parts total
+  added 2 changesets with 2 changes to 1 files
   updating the branch cache
   invalid branch cache (served): tip differs
   invalid branch cache (served.hidden): tip differs
diff --git a/tests/test-remotefilelog-bgprefetch.t b/tests/test-remotefilelog-bgprefetch.t
--- a/tests/test-remotefilelog-bgprefetch.t
+++ b/tests/test-remotefilelog-bgprefetch.t
@@ -73,8 +73,8 @@ 
   adding changesets
   adding manifests
   adding file changes
+  updating bookmark foo
   added 1 changesets with 0 changes to 0 files
-  updating bookmark foo
   new changesets 6b4b6f66ef8c
   (run 'hg update' to get a working copy)
   prefetching file contents
@@ -102,8 +102,8 @@ 
   adding changesets
   adding manifests
   adding file changes
+  updating bookmark foo
   added 1 changesets with 0 changes to 0 files
-  updating bookmark foo
   new changesets 6b4b6f66ef8c
   (run 'hg update' to get a working copy)
   prefetching file contents
diff --git a/tests/test-remotefilelog-prefetch.t b/tests/test-remotefilelog-prefetch.t
--- a/tests/test-remotefilelog-prefetch.t
+++ b/tests/test-remotefilelog-prefetch.t
@@ -94,8 +94,8 @@ 
   adding changesets
   adding manifests
   adding file changes
+  updating bookmark foo
   added 1 changesets with 0 changes to 0 files
-  updating bookmark foo
   new changesets 109c3a557a73
   (run 'hg update' to get a working copy)
   prefetching file contents
@@ -118,8 +118,8 @@ 
   adding changesets
   adding manifests
   adding file changes
+  updating bookmark foo
   added 1 changesets with 0 changes to 0 files
-  updating bookmark foo
   new changesets 109c3a557a73
   (run 'hg update' to get a working copy)
   prefetching file contents
@@ -149,8 +149,8 @@ 
   adding changesets
   adding manifests
   adding file changes
+  updating bookmark foo
   added 1 changesets with 0 changes to 0 files
-  updating bookmark foo
   new changesets 109c3a557a73
   1 local changesets published (?)
   (run 'hg update' to get a working copy)
diff --git a/tests/test-remotefilelog-sparse.t b/tests/test-remotefilelog-sparse.t
--- a/tests/test-remotefilelog-sparse.t
+++ b/tests/test-remotefilelog-sparse.t
@@ -58,8 +58,8 @@ 
   adding changesets
   adding manifests
   adding file changes
+  updating bookmark foo
   added 1 changesets with 0 changes to 0 files
-  updating bookmark foo
   new changesets 876b1317060d
   (run 'hg update' to get a working copy)
   prefetching file contents
diff --git a/tests/test-single-head.t b/tests/test-single-head.t
--- a/tests/test-single-head.t
+++ b/tests/test-single-head.t
@@ -71,7 +71,6 @@  Create a new head on the default branch
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files (+1 heads)
   transaction abort!
   rollback completed
   abort: rejecting multiple heads on branch "default"
diff --git a/tests/test-ssh-bundle1.t b/tests/test-ssh-bundle1.t
--- a/tests/test-ssh-bundle1.t
+++ b/tests/test-ssh-bundle1.t
@@ -583,7 +583,6 @@  remote hook failure is attributed to rem
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: hook failure!
   remote: transaction abort!
   remote: rollback completed
diff --git a/tests/test-ssh-proto-unbundle.t b/tests/test-ssh-proto-unbundle.t
--- a/tests/test-ssh-proto-unbundle.t
+++ b/tests/test-ssh-proto-unbundle.t
@@ -272,11 +272,10 @@  ui.write() in hook is redirected to stde
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 196:
+  e> read(-1) -> 151:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     ui.write 1 line\n
   e>     transaction abort!\n
   e>     rollback completed\n
@@ -328,11 +327,10 @@  ui.write() in hook is redirected to stde
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 196:
+  e> read(-1) -> 151:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     ui.write 1 line\n
   e>     transaction abort!\n
   e>     rollback completed\n
@@ -398,11 +396,10 @@  And a variation that writes multiple lin
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 218:
+  e> read(-1) -> 173:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     ui.write 2 lines 1\n
   e>     ui.write 2 lines 2\n
   e>     transaction abort!\n
@@ -455,11 +452,10 @@  And a variation that writes multiple lin
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 218:
+  e> read(-1) -> 173:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     ui.write 2 lines 1\n
   e>     ui.write 2 lines 2\n
   e>     transaction abort!\n
@@ -526,11 +522,10 @@  And a variation that does a ui.flush() a
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 202:
+  e> read(-1) -> 157:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     ui.write 1 line flush\n
   e>     transaction abort!\n
   e>     rollback completed\n
@@ -582,11 +577,10 @@  And a variation that does a ui.flush() a
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 202:
+  e> read(-1) -> 157:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     ui.write 1 line flush\n
   e>     transaction abort!\n
   e>     rollback completed\n
@@ -652,11 +646,10 @@  Multiple writes + flush
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 206:
+  e> read(-1) -> 161:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     ui.write 1st\n
   e>     ui.write 2nd\n
   e>     transaction abort!\n
@@ -709,11 +702,10 @@  Multiple writes + flush
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 206:
+  e> read(-1) -> 161:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     ui.write 1st\n
   e>     ui.write 2nd\n
   e>     transaction abort!\n
@@ -780,11 +772,10 @@  ui.write() + ui.write_err() output is ca
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 232:
+  e> read(-1) -> 187:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     ui.write 1\n
   e>     ui.write_err 1\n
   e>     ui.write 2\n
@@ -839,11 +830,10 @@  ui.write() + ui.write_err() output is ca
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 232:
+  e> read(-1) -> 187:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     ui.write 1\n
   e>     ui.write_err 1\n
   e>     ui.write 2\n
@@ -912,11 +902,10 @@  print() output is captured
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 193:
+  e> read(-1) -> 148:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     printed line\n
   e>     transaction abort!\n
   e>     rollback completed\n
@@ -968,11 +957,10 @@  print() output is captured
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 193:
+  e> read(-1) -> 148:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     printed line\n
   e>     transaction abort!\n
   e>     rollback completed\n
@@ -1038,11 +1026,10 @@  Mixed print() and ui.write() are both ca
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 218:
+  e> read(-1) -> 173:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     print 1\n
   e>     ui.write 1\n
   e>     print 2\n
@@ -1097,11 +1084,10 @@  Mixed print() and ui.write() are both ca
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 218:
+  e> read(-1) -> 173:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     print 1\n
   e>     ui.write 1\n
   e>     print 2\n
@@ -1170,11 +1156,10 @@  print() to stdout and stderr both get ca
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 216:
+  e> read(-1) -> 171:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     stdout 1\n
   e>     stderr 1\n
   e>     stdout 2\n
@@ -1229,11 +1214,10 @@  print() to stdout and stderr both get ca
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 216:
+  e> read(-1) -> 171:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     stdout 1\n
   e>     stderr 1\n
   e>     stdout 2\n
@@ -1308,11 +1292,10 @@  Shell hook writing to stdout has output 
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 212:
+  e> read(-1) -> 167:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     stdout 1\n
   e>     stdout 2\n
   e>     transaction abort!\n
@@ -1365,11 +1348,10 @@  Shell hook writing to stdout has output 
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 212:
+  e> read(-1) -> 167:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     stdout 1\n
   e>     stdout 2\n
   e>     transaction abort!\n
@@ -1437,11 +1419,10 @@  Shell hook writing to stderr has output 
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 212:
+  e> read(-1) -> 167:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     stderr 1\n
   e>     stderr 2\n
   e>     transaction abort!\n
@@ -1494,11 +1475,10 @@  Shell hook writing to stderr has output 
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 212:
+  e> read(-1) -> 167:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     stderr 1\n
   e>     stderr 2\n
   e>     transaction abort!\n
@@ -1568,11 +1548,10 @@  Shell hook writing to stdout and stderr 
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 230:
+  e> read(-1) -> 185:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     stdout 1\n
   e>     stderr 1\n
   e>     stdout 2\n
@@ -1627,11 +1606,10 @@  Shell hook writing to stdout and stderr 
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 230:
+  e> read(-1) -> 185:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     stdout 1\n
   e>     stderr 1\n
   e>     stdout 2\n
@@ -1709,11 +1687,10 @@  Shell and Python hooks writing to stdout
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 273:
+  e> read(-1) -> 228:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     shell stdout 1\n
   e>     shell stderr 1\n
   e>     shell stdout 2\n
@@ -1772,11 +1749,10 @@  Shell and Python hooks writing to stdout
   o> read(1) -> 1: 0
   result: 0
   remote output: 
-  e> read(-1) -> 273:
+  e> read(-1) -> 228:
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     shell stdout 1\n
   e>     shell stderr 1\n
   e>     shell stdout 2\n
@@ -1983,11 +1959,11 @@  Pushing a bundle1 with ui.write() and ui
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     ui.write 1\n
   e>     ui.write_err 1\n
   e>     ui.write 2\n
   e>     ui.write_err 2\n
+  e>     added 1 changesets with 1 changes to 1 files\n
   
   testing ssh2
   creating ssh peer from handshake results
@@ -2039,8 +2015,8 @@  Pushing a bundle1 with ui.write() and ui
   e>     adding changesets\n
   e>     adding manifests\n
   e>     adding file changes\n
-  e>     added 1 changesets with 1 changes to 1 files\n
   e>     ui.write 1\n
   e>     ui.write_err 1\n
   e>     ui.write 2\n
   e>     ui.write_err 2\n
+  e>     added 1 changesets with 1 changes to 1 files\n
diff --git a/tests/test-ssh.t b/tests/test-ssh.t
--- a/tests/test-ssh.t
+++ b/tests/test-ssh.t
@@ -644,7 +644,6 @@  remote hook failure is attributed to rem
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
-  remote: added 1 changesets with 1 changes to 1 files
   remote: hook failure!
   remote: transaction abort!
   remote: rollback completed
diff --git a/tests/test-transplant.t b/tests/test-transplant.t
--- a/tests/test-transplant.t
+++ b/tests/test-transplant.t
@@ -362,9 +362,9 @@  remote transplant with pull
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
   applying a53251cdf717
   a53251cdf717 transplanted to 8d9279348abb
+  added 1 changesets with 1 changes to 1 files
   $ hg log --template '{rev} {parents} {desc}\n'
   2  b3
   1  b1
@@ -654,9 +654,9 @@  test "--merge" causing pull from source 
   adding changesets
   adding manifests
   adding file changes
-  added 2 changesets with 2 changes to 2 files
   applying a53251cdf717
   4:a53251cdf717 merged at 4831f4dc831a
+  added 2 changesets with 2 changes to 2 files
 
 test interactive transplant
 
diff --git a/tests/test-win32text.t b/tests/test-win32text.t
--- a/tests/test-win32text.t
+++ b/tests/test-win32text.t
@@ -56,7 +56,6 @@  push should fail
   adding changesets
   adding manifests
   adding file changes
-  added 2 changesets with 2 changes to 2 files
   attempt to commit or push text file(s) using CRLF line endings
   in bc2d09796734: g
   in b1aa5cde7ff4: f
@@ -265,7 +264,6 @@  and now for something completely differe
   adding changesets
   adding manifests
   adding file changes
-  added 3 changesets with 4 changes to 4 files
   attempt to commit or push text file(s) using CRLF line endings
   in 67ac5962ab43: d
   in 68c127d1834e: b