changeset 10437:8a99388f87cc

merge with mpm
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Sat, 13 Feb 2010 10:56:43 +0100
parents 6cebf27287de (current diff) 956498af9812 (diff)
children e6dc44147234
files
diffstat 22 files changed, 958 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hgext/progress.py	Sat Feb 13 10:56:43 2010 +0100
@@ -0,0 +1,182 @@
+# progress.py show progress bars for some actions
+#
+# Copyright (C) 2010 Augie Fackler <durin42@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
+# Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+"""show progress bars for some actions
+
+This extension uses the progress information commands can log with hg
+to draw progres bars that are as informative as possible. Some progress
+bars only offer indeterminate information, while others have a definite
+end point.
+
+The following settings are available::
+
+  [progress]
+  delay = 3 # number of seconds (float) before showing the progress bar
+  refresh = 0.1 # time in seconds between refreshes of the progress bar
+  format = topic bar number # format of the progress bar
+  width = <none> # if set, the maximum width of the progress information
+                 # (that is, min(width, term width) will be used)
+  clear-complete = True # clear the progress bar after it's done
+
+Valid entries for the format field are topic, bar, number, unit, and item.
+item defaults to the last 20 characters of the item, but this can be
+changed by adding either -<num> which would take the last num characters,
+or +<num> for the first num characters.
+"""
+
+import math
+import sys
+import time
+
+from mercurial import extensions
+from mercurial import util
+
+def spacejoin(*args):
+    ret = ''
+    for s in args:
+        if s:
+            if ret:
+                ret += ' '
+            ret += s
+    return ret
+
+class progbar(object):
+    def __init__(self, ui):
+        self.ui = ui
+        self.resetstate()
+
+    def resetstate(self):
+        self.topics = []
+        self.printed = False
+        self.lastprint = time.time() + float(self.ui.config(
+            'progress', 'delay', default=3))
+        self.indetcount = 0
+        self.refresh = float(self.ui.config(
+            'progress', 'refresh', default=0.1))
+        self.order = self.ui.configlist(
+            'progress', 'format',
+            default=['topic', 'bar', 'number'])
+
+    def show(self, topic, pos, item, unit, total):
+        termwidth = self.width()
+        self.printed = True
+        head = ''
+        needprogress = False
+        tail = ''
+        for indicator in self.order:
+            add = ''
+            if indicator == 'topic':
+                add = topic
+            elif indicator == 'number':
+                if total:
+                    add = ('% ' + str(len(str(total))) +
+                           's/%s') % (pos, total)
+                else:
+                    add = str(pos)
+            elif indicator.startswith('item') and item:
+                slice = 'end'
+                if '-' in indicator:
+                    wid = int(indicator.split('-')[1])
+                elif '+' in indicator:
+                    slice = 'beginning'
+                    wid = int(indicator.split('+')[1])
+                else:
+                    wid = 20
+                if slice == 'end':
+                    add = item[-wid:]
+                else:
+                    add = item[:wid]
+                add += (wid - len(add)) * ' '
+            elif indicator == 'bar':
+                add = ''
+                needprogress = True
+            elif indicator == 'unit' and unit:
+                add = unit
+            if not needprogress:
+                head = spacejoin(head, add)
+            else:
+                tail = spacejoin(add, tail)
+        if needprogress:
+            used = 0
+            if head:
+                used += len(head) + 1
+            if tail:
+                used += len(tail) + 1
+            progwidth = termwidth - used - 3
+            if total:
+                amt = pos * progwidth // total
+                bar = '=' * (amt) + ' ' * (progwidth - amt)
+            else:
+                progwidth -= 3
+                self.indetcount += 1
+                # mod the count by twice the width so we can make the
+                # cursor bounce between the right and left sides
+                amt = self.indetcount % (2 * progwidth)
+                amt -= progwidth
+                bar = (' ' * int(progwidth - abs(amt)) + '<=>' +
+                       ' ' * int(abs(amt)))
+            prog = ''.join(('[', bar , ']'))
+            out = spacejoin(head, prog, tail)
+        else:
+            out = spacejoin(head, tail)
+        sys.stdout.write('\r' + out[:termwidth])
+        sys.stdout.flush()
+
+    def clear(self):
+        sys.stdout.write('\r%s\r' % (' ' * self.width()))
+
+    def width(self):
+        tw = util.termwidth()
+        return min(int(self.ui.config('progress', 'width', default=tw)), tw)
+
+    def progress(self, orig, topic, pos, item='', unit='', total=None):
+        now = time.time()
+        if pos is None and self.topics[-1] == topic and self.printed:
+            if self.ui.configbool('progress', 'clear-complete', default=True):
+                self.clear()
+            else:
+                sys.stdout.write('\n')
+            sys.stdout.flush()
+            self.resetstate()
+        elif topic not in self.topics:
+            self.topics.append(topic)
+
+        if now - self.lastprint > 0.1 and topic == self.topics[-1]:
+            self.lastprint = now
+            self.show(topic, pos, item, unit, total)
+        return orig(topic, pos, item=item, unit=unit, total=total)
+
+    def write(self, orig, *args):
+        if self.printed:
+            self.clear()
+        return orig(*args)
+
+sharedprog = None
+
+def uisetup(ui):
+    if ui.interactive() and not ui.debugflag:
+        # we instantiate one globally shared progress bar to avoid
+        # competing progress bars when multiple UI objects get created
+        global sharedprog
+        if not sharedprog:
+            sharedprog = progbar(ui)
+        extensions.wrapfunction(ui, 'progress', sharedprog.progress)
+        extensions.wrapfunction(ui, 'write', sharedprog.write)
+
+def reposetup(ui, repo):
+    uisetup(repo.ui)
--- a/mercurial/changegroup.py	Fri Feb 12 15:17:10 2010 +0100
+++ b/mercurial/changegroup.py	Sat Feb 13 10:56:43 2010 +0100
@@ -24,13 +24,15 @@
                           % (len(d), l - 4))
     return d
 
-def chunkiter(source):
+def chunkiter(source, progress=None):
     """iterate through the chunks in source, yielding a sequence of chunks
     (strings)"""
     while 1:
         c = getchunk(source)
         if not c:
             break
+        elif progress is not None:
+            progress()
         yield c
 
 def chunkheader(length):
--- a/mercurial/localrepo.py	Fri Feb 12 15:17:10 2010 +0100
+++ b/mercurial/localrepo.py	Sat Feb 13 10:56:43 2010 +0100
@@ -899,8 +899,12 @@
                     new[f] = self._filecommit(fctx, m1, m2, linkrev, trp,
                                               changed)
                     m1.set(f, fctx.flags())
-                except (OSError, IOError):
-                    if error:
+                except OSError, inst:
+                    self.ui.warn(_("trouble committing %s!\n") % f)
+                    raise
+                except IOError, inst:
+                    errcode = getattr(inst, 'errno', errno.ENOENT)
+                    if error or errcode and errcode != errno.ENOENT:
                         self.ui.warn(_("trouble committing %s!\n") % f)
                         raise
                     else:
@@ -1338,6 +1342,7 @@
 
             if r:
                 reqcnt += 1
+                self.ui.progress('searching', reqcnt, unit='queries')
                 self.ui.debug("request %d: %s\n" %
                             (reqcnt, " ".join(map(short, r))))
                 for p in xrange(0, len(r), 10):
@@ -1350,6 +1355,7 @@
         while search:
             newsearch = []
             reqcnt += 1
+            self.ui.progress('searching', reqcnt, unit='queries')
             for n, l in zip(search, remote.between(search)):
                 l.append(n[1])
                 p = n[0]
@@ -1385,6 +1391,7 @@
         self.ui.debug("found new changesets starting at " +
                      " ".join([short(f) for f in fetch]) + "\n")
 
+        self.ui.progress('searching', None, unit='queries')
         self.ui.debug("%d total queries\n" % reqcnt)
 
         return base.keys(), list(fetch), heads
@@ -1812,8 +1819,13 @@
             # Create a changenode group generator that will call our functions
             # back to lookup the owning changenode and collect information.
             group = cl.group(msng_cl_lst, identity, collect)
+            cnt = 0
             for chnk in group:
                 yield chnk
+                self.ui.progress('bundle changes', cnt, unit='chunks')
+                cnt += 1
+            self.ui.progress('bundle changes', None, unit='chunks')
+
 
             # Figure out which manifest nodes (of the ones we think might be
             # part of the changegroup) the recipient must know about and
@@ -1835,8 +1847,12 @@
             # and data collection functions back.
             group = mnfst.group(msng_mnfst_lst, lookup_manifest_link,
                                 filenode_collector(changedfiles))
+            cnt = 0
             for chnk in group:
                 yield chnk
+                self.ui.progress('bundle manifests', cnt, unit='chunks')
+                cnt += 1
+            self.ui.progress('bundle manifests', None, unit='chunks')
 
             # These are no longer needed, dereference and toss the memory for
             # them.
@@ -1850,6 +1866,7 @@
                     msng_filenode_set.setdefault(fname, {})
                     changedfiles[fname] = 1
             # Go through all our files in order sorted by name.
+            cnt = 0
             for fname in sorted(changedfiles):
                 filerevlog = self.file(fname)
                 if not len(filerevlog):
@@ -1875,12 +1892,16 @@
                     group = filerevlog.group(msng_filenode_lst,
                                              lookup_filenode_link_func(fname))
                     for chnk in group:
+                        self.ui.progress(
+                            'bundle files', cnt, item=fname, unit='chunks')
+                        cnt += 1
                         yield chnk
                 if fname in msng_filenode_set:
                     # Don't need this anymore, toss it to free memory.
                     del msng_filenode_set[fname]
             # Signal that no more groups are left.
             yield changegroup.closechunk()
+            self.ui.progress('bundle files', None, unit='chunks')
 
             if msng_cl_lst:
                 self.hook('outgoing', node=hex(msng_cl_lst[0]), source=source)
@@ -1927,14 +1948,23 @@
             mmfs = {}
             collect = changegroup.collector(cl, mmfs, changedfiles)
 
+            cnt = 0
             for chnk in cl.group(nodes, identity, collect):
+                self.ui.progress('bundle changes', cnt, unit='chunks')
+                cnt += 1
                 yield chnk
+            self.ui.progress('bundle changes', None, unit='chunks')
 
             mnfst = self.manifest
             nodeiter = gennodelst(mnfst)
+            cnt = 0
             for chnk in mnfst.group(nodeiter, lookuprevlink_func(mnfst)):
+                self.ui.progress('bundle manifests', cnt, unit='chunks')
+                cnt += 1
                 yield chnk
+            self.ui.progress('bundle manifests', None, unit='chunks')
 
+            cnt = 0
             for fname in sorted(changedfiles):
                 filerevlog = self.file(fname)
                 if not len(filerevlog):
@@ -1946,7 +1976,11 @@
                     yield fname
                     lookup = lookuprevlink_func(filerevlog)
                     for chnk in filerevlog.group(nodeiter, lookup):
+                        self.ui.progress(
+                            'bundle files', cnt, item=fname, unit='chunks')
+                        cnt += 1
                         yield chnk
+            self.ui.progress('bundle files', None, unit='chunks')
 
             yield changegroup.closechunk()
 
@@ -1990,20 +2024,32 @@
             # pull off the changeset group
             self.ui.status(_("adding changesets\n"))
             clstart = len(cl)
-            chunkiter = changegroup.chunkiter(source)
+            class prog(object):
+                step = 'changesets'
+                count = 1
+                ui = self.ui
+                def __call__(self):
+                    self.ui.progress(self.step, self.count, unit='chunks')
+                    self.count += 1
+            pr = prog()
+            chunkiter = changegroup.chunkiter(source, progress=pr)
             if cl.addgroup(chunkiter, csmap, trp) is None and not emptyok:
                 raise util.Abort(_("received changelog group is empty"))
             clend = len(cl)
             changesets = clend - clstart
+            self.ui.progress('changesets', None)
 
             # pull off the manifest group
             self.ui.status(_("adding manifests\n"))
-            chunkiter = changegroup.chunkiter(source)
+            pr.step = 'manifests'
+            pr.count = 1
+            chunkiter = changegroup.chunkiter(source, progress=pr)
             # no need to check for empty manifest group here:
             # if the result of the merge of 1 and 2 is the same in 3 and 4,
             # no new manifest will be created and the manifest group will
             # be empty during the pull
             self.manifest.addgroup(chunkiter, revmap, trp)
+            self.ui.progress('manifests', None)
 
             needfiles = {}
             if self.ui.configbool('server', 'validate', default=False):
@@ -2017,6 +2063,8 @@
 
             # process the files
             self.ui.status(_("adding file changes\n"))
+            pr.step = 'files'
+            pr.count = 1
             while 1:
                 f = changegroup.getchunk(source)
                 if not f:
@@ -2024,7 +2072,7 @@
                 self.ui.debug("adding %s revisions\n" % f)
                 fl = self.file(f)
                 o = len(fl)
-                chunkiter = changegroup.chunkiter(source)
+                chunkiter = changegroup.chunkiter(source, progress=pr)
                 if fl.addgroup(chunkiter, revmap, trp) is None:
                     raise util.Abort(_("received file revlog group is empty"))
                 revisions += len(fl) - o
@@ -2037,6 +2085,7 @@
                             needs.remove(n)
                     if not needs:
                         del needfiles[f]
+            self.ui.progress('files', None)
 
             for f, needs in needfiles.iteritems():
                 fl = self.file(f)
--- a/mercurial/merge.py	Fri Feb 12 15:17:10 2010 +0100
+++ b/mercurial/merge.py	Sat Feb 13 10:56:43 2010 +0100
@@ -255,6 +255,7 @@
     substate = wctx.substate # prime
 
     # prescan for merges
+    u = repo.ui
     for a in action:
         f, m = a[:2]
         if m == 'm': # merge
@@ -277,8 +278,10 @@
 
     audit_path = util.path_auditor(repo.root)
 
-    for a in action:
+    numupdates = len(action)
+    for i, a in enumerate(action):
         f, m = a[:2]
+        u.progress('update', i + 1, item=f, total=numupdates, unit='files')
         if f and f[0] == "/":
             continue
         if m == "r": # remove
@@ -338,6 +341,7 @@
         elif m == "e": # exec
             flags = a[2]
             util.set_flags(repo.wjoin(f), 'l' in flags, 'x' in flags)
+    u.progress('update', None, total=numupdates, unit='files')
 
     return updated, merged, removed, unresolved
 
--- a/mercurial/verify.py	Fri Feb 12 15:17:10 2010 +0100
+++ b/mercurial/verify.py	Sat Feb 13 10:56:43 2010 +0100
@@ -120,7 +120,9 @@
     ui.status(_("checking changesets\n"))
     seen = {}
     checklog(cl, "changelog", 0)
+    total = len(repo)
     for i in repo:
+        ui.progress('changelog', i, total=total)
         n = cl.node(i)
         checkentry(cl, i, n, seen, [i], "changelog")
 
@@ -131,11 +133,14 @@
                 filelinkrevs.setdefault(f, []).append(i)
         except Exception, inst:
             exc(i, _("unpacking changeset %s") % short(n), inst)
+    ui.progress('changelog', None)
 
     ui.status(_("checking manifests\n"))
     seen = {}
     checklog(mf, "manifest", 0)
+    total = len(mf)
     for i in mf:
+        ui.progress('manifests', i, total=total)
         n = mf.node(i)
         lr = checkentry(mf, i, n, seen, mflinkrevs.get(n, []), "manifest")
         if n in mflinkrevs:
@@ -151,22 +156,31 @@
                     filenodes.setdefault(f, {}).setdefault(fn, lr)
         except Exception, inst:
             exc(lr, _("reading manifest delta %s") % short(n), inst)
+    ui.progress('manifests', None)
 
     ui.status(_("crosschecking files in changesets and manifests\n"))
 
+    total = len(mflinkrevs) + len(filelinkrevs) + len(filenodes)
+    count = 0
     if havemf:
         for c, m in sorted([(c, m) for m in mflinkrevs
                             for c in mflinkrevs[m]]):
+            count += 1
+            ui.progress('crosscheck', count, total=total)
             err(c, _("changeset refers to unknown manifest %s") % short(m))
         mflinkrevs = None # del is bad here due to scope issues
 
         for f in sorted(filelinkrevs):
+            count += 1
+            ui.progress('crosscheck', count, total=total)
             if f not in filenodes:
                 lr = filelinkrevs[f][0]
                 err(lr, _("in changeset but not in manifest"), f)
 
     if havecl:
         for f in sorted(filenodes):
+            count += 1
+            ui.progress('crosscheck', count, total=total)
             if f not in filelinkrevs:
                 try:
                     fl = repo.file(f)
@@ -175,6 +189,8 @@
                     lr = None
                 err(lr, _("in manifest but not in changeset"), f)
 
+    ui.progress('crosscheck', None)
+
     ui.status(_("checking files\n"))
 
     storefiles = set()
@@ -185,7 +201,9 @@
             storefiles.add(f)
 
     files = sorted(set(filenodes) | set(filelinkrevs))
-    for f in files:
+    total = len(files)
+    for i, f in enumerate(files):
+        ui.progress('files', i, item=f, total=total)
         try:
             linkrevs = filelinkrevs[f]
         except KeyError:
@@ -263,6 +281,7 @@
             fns = [(lr, n) for n, lr in filenodes[f].iteritems()]
             for lr, node in sorted(fns):
                 err(lr, _("%s in manifests not found") % short(node), f)
+    ui.progress('files', None)
 
     for f in storefiles:
         warn(_("warning: orphan revlog '%s'") % f)
--- a/tests/test-acl.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-acl.out	Sat Feb 13 10:56:43 2010 +0100
@@ -20,14 +20,55 @@
 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
 911600dab2ae7a9baff75958b84fe606851ce955
 adding changesets
+bundle changes: 0 chunks
+bundle changes: 1 chunks
+bundle changes: 2 chunks
+bundle changes: 3 chunks
+bundle changes: 4 chunks
+bundle changes: 5 chunks
+bundle changes: 6 chunks
+bundle changes: 7 chunks
+bundle changes: 8 chunks
+bundle changes: 9 chunks
+bundle manifests: 0 chunks
+bundle manifests: 1 chunks
+bundle manifests: 2 chunks
+bundle manifests: 3 chunks
+bundle manifests: 4 chunks
+bundle manifests: 5 chunks
+bundle manifests: 6 chunks
+bundle manifests: 7 chunks
+bundle manifests: 8 chunks
+bundle manifests: 9 chunks
+bundle files: foo/Bar/file.txt 0 chunks
+bundle files: foo/Bar/file.txt 1 chunks
+bundle files: foo/Bar/file.txt 2 chunks
+bundle files: foo/Bar/file.txt 3 chunks
+bundle files: foo/file.txt 4 chunks
+bundle files: foo/file.txt 5 chunks
+bundle files: foo/file.txt 6 chunks
+bundle files: foo/file.txt 7 chunks
+bundle files: quux/file.py 8 chunks
+bundle files: quux/file.py 9 chunks
+bundle files: quux/file.py 10 chunks
+bundle files: quux/file.py 11 chunks
+changesets: 1 chunks
 add changeset ef1ea85a6374
+changesets: 2 chunks
 add changeset f9cafe1212c8
+changesets: 3 chunks
 add changeset 911600dab2ae
 adding manifests
+manifests: 1 chunks
+manifests: 2 chunks
+manifests: 3 chunks
 adding file changes
 adding foo/Bar/file.txt revisions
+files: 1 chunks
 adding foo/file.txt revisions
+files: 2 chunks
 adding quux/file.py revisions
+files: 3 chunks
 added 3 changesets with 3 changes to 3 files
 updating the branch cache
 rolling back last transaction
@@ -49,14 +90,55 @@
 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
 911600dab2ae7a9baff75958b84fe606851ce955
 adding changesets
+bundle changes: 0 chunks
+bundle changes: 1 chunks
+bundle changes: 2 chunks
+bundle changes: 3 chunks
+bundle changes: 4 chunks
+bundle changes: 5 chunks
+bundle changes: 6 chunks
+bundle changes: 7 chunks
+bundle changes: 8 chunks
+bundle changes: 9 chunks
+bundle manifests: 0 chunks
+bundle manifests: 1 chunks
+bundle manifests: 2 chunks
+bundle manifests: 3 chunks
+bundle manifests: 4 chunks
+bundle manifests: 5 chunks
+bundle manifests: 6 chunks
+bundle manifests: 7 chunks
+bundle manifests: 8 chunks
+bundle manifests: 9 chunks
+bundle files: foo/Bar/file.txt 0 chunks
+bundle files: foo/Bar/file.txt 1 chunks
+bundle files: foo/Bar/file.txt 2 chunks
+bundle files: foo/Bar/file.txt 3 chunks
+bundle files: foo/file.txt 4 chunks
+bundle files: foo/file.txt 5 chunks
+bundle files: foo/file.txt 6 chunks
+bundle files: foo/file.txt 7 chunks
+bundle files: quux/file.py 8 chunks
+bundle files: quux/file.py 9 chunks
+bundle files: quux/file.py 10 chunks
+bundle files: quux/file.py 11 chunks
+changesets: 1 chunks
 add changeset ef1ea85a6374
+changesets: 2 chunks
 add changeset f9cafe1212c8
+changesets: 3 chunks
 add changeset 911600dab2ae
 adding manifests
+manifests: 1 chunks
+manifests: 2 chunks
+manifests: 3 chunks
 adding file changes
 adding foo/Bar/file.txt revisions
+files: 1 chunks
 adding foo/file.txt revisions
+files: 2 chunks
 adding quux/file.py revisions
+files: 3 chunks
 added 3 changesets with 3 changes to 3 files
 calling hook pretxnchangegroup.acl: hgext.acl.hook
 acl: changes have source "push" - skipping
@@ -82,14 +164,55 @@
 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
 911600dab2ae7a9baff75958b84fe606851ce955
 adding changesets
+bundle changes: 0 chunks
+bundle changes: 1 chunks
+bundle changes: 2 chunks
+bundle changes: 3 chunks
+bundle changes: 4 chunks
+bundle changes: 5 chunks
+bundle changes: 6 chunks
+bundle changes: 7 chunks
+bundle changes: 8 chunks
+bundle changes: 9 chunks
+bundle manifests: 0 chunks
+bundle manifests: 1 chunks
+bundle manifests: 2 chunks
+bundle manifests: 3 chunks
+bundle manifests: 4 chunks
+bundle manifests: 5 chunks
+bundle manifests: 6 chunks
+bundle manifests: 7 chunks
+bundle manifests: 8 chunks
+bundle manifests: 9 chunks
+bundle files: foo/Bar/file.txt 0 chunks
+bundle files: foo/Bar/file.txt 1 chunks
+bundle files: foo/Bar/file.txt 2 chunks
+bundle files: foo/Bar/file.txt 3 chunks
+bundle files: foo/file.txt 4 chunks
+bundle files: foo/file.txt 5 chunks
+bundle files: foo/file.txt 6 chunks
+bundle files: foo/file.txt 7 chunks
+bundle files: quux/file.py 8 chunks
+bundle files: quux/file.py 9 chunks
+bundle files: quux/file.py 10 chunks
+bundle files: quux/file.py 11 chunks
+changesets: 1 chunks
 add changeset ef1ea85a6374
+changesets: 2 chunks
 add changeset f9cafe1212c8
+changesets: 3 chunks
 add changeset 911600dab2ae
 adding manifests
+manifests: 1 chunks
+manifests: 2 chunks
+manifests: 3 chunks
 adding file changes
 adding foo/Bar/file.txt revisions
+files: 1 chunks
 adding foo/file.txt revisions
+files: 2 chunks
 adding quux/file.py revisions
+files: 3 chunks
 added 3 changesets with 3 changes to 3 files
 calling hook pretxnchangegroup.acl: hgext.acl.hook
 acl: acl.allow not enabled
@@ -120,14 +243,55 @@
 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
 911600dab2ae7a9baff75958b84fe606851ce955
 adding changesets
+bundle changes: 0 chunks
+bundle changes: 1 chunks
+bundle changes: 2 chunks
+bundle changes: 3 chunks
+bundle changes: 4 chunks
+bundle changes: 5 chunks
+bundle changes: 6 chunks
+bundle changes: 7 chunks
+bundle changes: 8 chunks
+bundle changes: 9 chunks
+bundle manifests: 0 chunks
+bundle manifests: 1 chunks
+bundle manifests: 2 chunks
+bundle manifests: 3 chunks
+bundle manifests: 4 chunks
+bundle manifests: 5 chunks
+bundle manifests: 6 chunks
+bundle manifests: 7 chunks
+bundle manifests: 8 chunks
+bundle manifests: 9 chunks
+bundle files: foo/Bar/file.txt 0 chunks
+bundle files: foo/Bar/file.txt 1 chunks
+bundle files: foo/Bar/file.txt 2 chunks
+bundle files: foo/Bar/file.txt 3 chunks
+bundle files: foo/file.txt 4 chunks
+bundle files: foo/file.txt 5 chunks
+bundle files: foo/file.txt 6 chunks
+bundle files: foo/file.txt 7 chunks
+bundle files: quux/file.py 8 chunks
+bundle files: quux/file.py 9 chunks
+bundle files: quux/file.py 10 chunks
+bundle files: quux/file.py 11 chunks
+changesets: 1 chunks
 add changeset ef1ea85a6374
+changesets: 2 chunks
 add changeset f9cafe1212c8
+changesets: 3 chunks
 add changeset 911600dab2ae
 adding manifests
+manifests: 1 chunks
+manifests: 2 chunks
+manifests: 3 chunks
 adding file changes
 adding foo/Bar/file.txt revisions
+files: 1 chunks
 adding foo/file.txt revisions
+files: 2 chunks
 adding quux/file.py revisions
+files: 3 chunks
 added 3 changesets with 3 changes to 3 files
 calling hook pretxnchangegroup.acl: hgext.acl.hook
 acl: acl.allow enabled, 0 entries for user fred
@@ -159,14 +323,55 @@
 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
 911600dab2ae7a9baff75958b84fe606851ce955
 adding changesets
+bundle changes: 0 chunks
+bundle changes: 1 chunks
+bundle changes: 2 chunks
+bundle changes: 3 chunks
+bundle changes: 4 chunks
+bundle changes: 5 chunks
+bundle changes: 6 chunks
+bundle changes: 7 chunks
+bundle changes: 8 chunks
+bundle changes: 9 chunks
+bundle manifests: 0 chunks
+bundle manifests: 1 chunks
+bundle manifests: 2 chunks
+bundle manifests: 3 chunks
+bundle manifests: 4 chunks
+bundle manifests: 5 chunks
+bundle manifests: 6 chunks
+bundle manifests: 7 chunks
+bundle manifests: 8 chunks
+bundle manifests: 9 chunks
+bundle files: foo/Bar/file.txt 0 chunks
+bundle files: foo/Bar/file.txt 1 chunks
+bundle files: foo/Bar/file.txt 2 chunks
+bundle files: foo/Bar/file.txt 3 chunks
+bundle files: foo/file.txt 4 chunks
+bundle files: foo/file.txt 5 chunks
+bundle files: foo/file.txt 6 chunks
+bundle files: foo/file.txt 7 chunks
+bundle files: quux/file.py 8 chunks
+bundle files: quux/file.py 9 chunks
+bundle files: quux/file.py 10 chunks
+bundle files: quux/file.py 11 chunks
+changesets: 1 chunks
 add changeset ef1ea85a6374
+changesets: 2 chunks
 add changeset f9cafe1212c8
+changesets: 3 chunks
 add changeset 911600dab2ae
 adding manifests
+manifests: 1 chunks
+manifests: 2 chunks
+manifests: 3 chunks
 adding file changes
 adding foo/Bar/file.txt revisions
+files: 1 chunks
 adding foo/file.txt revisions
+files: 2 chunks
 adding quux/file.py revisions
+files: 3 chunks
 added 3 changesets with 3 changes to 3 files
 calling hook pretxnchangegroup.acl: hgext.acl.hook
 acl: acl.allow enabled, 1 entries for user fred
@@ -201,14 +406,55 @@
 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
 911600dab2ae7a9baff75958b84fe606851ce955
 adding changesets
+bundle changes: 0 chunks
+bundle changes: 1 chunks
+bundle changes: 2 chunks
+bundle changes: 3 chunks
+bundle changes: 4 chunks
+bundle changes: 5 chunks
+bundle changes: 6 chunks
+bundle changes: 7 chunks
+bundle changes: 8 chunks
+bundle changes: 9 chunks
+bundle manifests: 0 chunks
+bundle manifests: 1 chunks
+bundle manifests: 2 chunks
+bundle manifests: 3 chunks
+bundle manifests: 4 chunks
+bundle manifests: 5 chunks
+bundle manifests: 6 chunks
+bundle manifests: 7 chunks
+bundle manifests: 8 chunks
+bundle manifests: 9 chunks
+bundle files: foo/Bar/file.txt 0 chunks
+bundle files: foo/Bar/file.txt 1 chunks
+bundle files: foo/Bar/file.txt 2 chunks
+bundle files: foo/Bar/file.txt 3 chunks
+bundle files: foo/file.txt 4 chunks
+bundle files: foo/file.txt 5 chunks
+bundle files: foo/file.txt 6 chunks
+bundle files: foo/file.txt 7 chunks
+bundle files: quux/file.py 8 chunks
+bundle files: quux/file.py 9 chunks
+bundle files: quux/file.py 10 chunks
+bundle files: quux/file.py 11 chunks
+changesets: 1 chunks
 add changeset ef1ea85a6374
+changesets: 2 chunks
 add changeset f9cafe1212c8
+changesets: 3 chunks
 add changeset 911600dab2ae
 adding manifests
+manifests: 1 chunks
+manifests: 2 chunks
+manifests: 3 chunks
 adding file changes
 adding foo/Bar/file.txt revisions
+files: 1 chunks
 adding foo/file.txt revisions
+files: 2 chunks
 adding quux/file.py revisions
+files: 3 chunks
 added 3 changesets with 3 changes to 3 files
 calling hook pretxnchangegroup.acl: hgext.acl.hook
 acl: acl.allow enabled, 0 entries for user barney
@@ -242,14 +488,55 @@
 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
 911600dab2ae7a9baff75958b84fe606851ce955
 adding changesets
+bundle changes: 0 chunks
+bundle changes: 1 chunks
+bundle changes: 2 chunks
+bundle changes: 3 chunks
+bundle changes: 4 chunks
+bundle changes: 5 chunks
+bundle changes: 6 chunks
+bundle changes: 7 chunks
+bundle changes: 8 chunks
+bundle changes: 9 chunks
+bundle manifests: 0 chunks
+bundle manifests: 1 chunks
+bundle manifests: 2 chunks
+bundle manifests: 3 chunks
+bundle manifests: 4 chunks
+bundle manifests: 5 chunks
+bundle manifests: 6 chunks
+bundle manifests: 7 chunks
+bundle manifests: 8 chunks
+bundle manifests: 9 chunks
+bundle files: foo/Bar/file.txt 0 chunks
+bundle files: foo/Bar/file.txt 1 chunks
+bundle files: foo/Bar/file.txt 2 chunks
+bundle files: foo/Bar/file.txt 3 chunks
+bundle files: foo/file.txt 4 chunks
+bundle files: foo/file.txt 5 chunks
+bundle files: foo/file.txt 6 chunks
+bundle files: foo/file.txt 7 chunks
+bundle files: quux/file.py 8 chunks
+bundle files: quux/file.py 9 chunks
+bundle files: quux/file.py 10 chunks
+bundle files: quux/file.py 11 chunks
+changesets: 1 chunks
 add changeset ef1ea85a6374
+changesets: 2 chunks
 add changeset f9cafe1212c8
+changesets: 3 chunks
 add changeset 911600dab2ae
 adding manifests
+manifests: 1 chunks
+manifests: 2 chunks
+manifests: 3 chunks
 adding file changes
 adding foo/Bar/file.txt revisions
+files: 1 chunks
 adding foo/file.txt revisions
+files: 2 chunks
 adding quux/file.py revisions
+files: 3 chunks
 added 3 changesets with 3 changes to 3 files
 calling hook pretxnchangegroup.acl: hgext.acl.hook
 acl: acl.allow enabled, 1 entries for user fred
@@ -286,14 +573,55 @@
 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
 911600dab2ae7a9baff75958b84fe606851ce955
 adding changesets
+bundle changes: 0 chunks
+bundle changes: 1 chunks
+bundle changes: 2 chunks
+bundle changes: 3 chunks
+bundle changes: 4 chunks
+bundle changes: 5 chunks
+bundle changes: 6 chunks
+bundle changes: 7 chunks
+bundle changes: 8 chunks
+bundle changes: 9 chunks
+bundle manifests: 0 chunks
+bundle manifests: 1 chunks
+bundle manifests: 2 chunks
+bundle manifests: 3 chunks
+bundle manifests: 4 chunks
+bundle manifests: 5 chunks
+bundle manifests: 6 chunks
+bundle manifests: 7 chunks
+bundle manifests: 8 chunks
+bundle manifests: 9 chunks
+bundle files: foo/Bar/file.txt 0 chunks
+bundle files: foo/Bar/file.txt 1 chunks
+bundle files: foo/Bar/file.txt 2 chunks
+bundle files: foo/Bar/file.txt 3 chunks
+bundle files: foo/file.txt 4 chunks
+bundle files: foo/file.txt 5 chunks
+bundle files: foo/file.txt 6 chunks
+bundle files: foo/file.txt 7 chunks
+bundle files: quux/file.py 8 chunks
+bundle files: quux/file.py 9 chunks
+bundle files: quux/file.py 10 chunks
+bundle files: quux/file.py 11 chunks
+changesets: 1 chunks
 add changeset ef1ea85a6374
+changesets: 2 chunks
 add changeset f9cafe1212c8
+changesets: 3 chunks
 add changeset 911600dab2ae
 adding manifests
+manifests: 1 chunks
+manifests: 2 chunks
+manifests: 3 chunks
 adding file changes
 adding foo/Bar/file.txt revisions
+files: 1 chunks
 adding foo/file.txt revisions
+files: 2 chunks
 adding quux/file.py revisions
+files: 3 chunks
 added 3 changesets with 3 changes to 3 files
 calling hook pretxnchangegroup.acl: hgext.acl.hook
 acl: acl.allow enabled, 1 entries for user fred
@@ -329,14 +657,55 @@
 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
 911600dab2ae7a9baff75958b84fe606851ce955
 adding changesets
+bundle changes: 0 chunks
+bundle changes: 1 chunks
+bundle changes: 2 chunks
+bundle changes: 3 chunks
+bundle changes: 4 chunks
+bundle changes: 5 chunks
+bundle changes: 6 chunks
+bundle changes: 7 chunks
+bundle changes: 8 chunks
+bundle changes: 9 chunks
+bundle manifests: 0 chunks
+bundle manifests: 1 chunks
+bundle manifests: 2 chunks
+bundle manifests: 3 chunks
+bundle manifests: 4 chunks
+bundle manifests: 5 chunks
+bundle manifests: 6 chunks
+bundle manifests: 7 chunks
+bundle manifests: 8 chunks
+bundle manifests: 9 chunks
+bundle files: foo/Bar/file.txt 0 chunks
+bundle files: foo/Bar/file.txt 1 chunks
+bundle files: foo/Bar/file.txt 2 chunks
+bundle files: foo/Bar/file.txt 3 chunks
+bundle files: foo/file.txt 4 chunks
+bundle files: foo/file.txt 5 chunks
+bundle files: foo/file.txt 6 chunks
+bundle files: foo/file.txt 7 chunks
+bundle files: quux/file.py 8 chunks
+bundle files: quux/file.py 9 chunks
+bundle files: quux/file.py 10 chunks
+bundle files: quux/file.py 11 chunks
+changesets: 1 chunks
 add changeset ef1ea85a6374
+changesets: 2 chunks
 add changeset f9cafe1212c8
+changesets: 3 chunks
 add changeset 911600dab2ae
 adding manifests
+manifests: 1 chunks
+manifests: 2 chunks
+manifests: 3 chunks
 adding file changes
 adding foo/Bar/file.txt revisions
+files: 1 chunks
 adding foo/file.txt revisions
+files: 2 chunks
 adding quux/file.py revisions
+files: 3 chunks
 added 3 changesets with 3 changes to 3 files
 calling hook pretxnchangegroup.acl: hgext.acl.hook
 acl: acl.allow enabled, 0 entries for user barney
@@ -373,14 +742,55 @@
 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
 911600dab2ae7a9baff75958b84fe606851ce955
 adding changesets
+bundle changes: 0 chunks
+bundle changes: 1 chunks
+bundle changes: 2 chunks
+bundle changes: 3 chunks
+bundle changes: 4 chunks
+bundle changes: 5 chunks
+bundle changes: 6 chunks
+bundle changes: 7 chunks
+bundle changes: 8 chunks
+bundle changes: 9 chunks
+bundle manifests: 0 chunks
+bundle manifests: 1 chunks
+bundle manifests: 2 chunks
+bundle manifests: 3 chunks
+bundle manifests: 4 chunks
+bundle manifests: 5 chunks
+bundle manifests: 6 chunks
+bundle manifests: 7 chunks
+bundle manifests: 8 chunks
+bundle manifests: 9 chunks
+bundle files: foo/Bar/file.txt 0 chunks
+bundle files: foo/Bar/file.txt 1 chunks
+bundle files: foo/Bar/file.txt 2 chunks
+bundle files: foo/Bar/file.txt 3 chunks
+bundle files: foo/file.txt 4 chunks
+bundle files: foo/file.txt 5 chunks
+bundle files: foo/file.txt 6 chunks
+bundle files: foo/file.txt 7 chunks
+bundle files: quux/file.py 8 chunks
+bundle files: quux/file.py 9 chunks
+bundle files: quux/file.py 10 chunks
+bundle files: quux/file.py 11 chunks
+changesets: 1 chunks
 add changeset ef1ea85a6374
+changesets: 2 chunks
 add changeset f9cafe1212c8
+changesets: 3 chunks
 add changeset 911600dab2ae
 adding manifests
+manifests: 1 chunks
+manifests: 2 chunks
+manifests: 3 chunks
 adding file changes
 adding foo/Bar/file.txt revisions
+files: 1 chunks
 adding foo/file.txt revisions
+files: 2 chunks
 adding quux/file.py revisions
+files: 3 chunks
 added 3 changesets with 3 changes to 3 files
 calling hook pretxnchangegroup.acl: hgext.acl.hook
 acl: acl.allow enabled, 1 entries for user barney
@@ -418,14 +828,55 @@
 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
 911600dab2ae7a9baff75958b84fe606851ce955
 adding changesets
+bundle changes: 0 chunks
+bundle changes: 1 chunks
+bundle changes: 2 chunks
+bundle changes: 3 chunks
+bundle changes: 4 chunks
+bundle changes: 5 chunks
+bundle changes: 6 chunks
+bundle changes: 7 chunks
+bundle changes: 8 chunks
+bundle changes: 9 chunks
+bundle manifests: 0 chunks
+bundle manifests: 1 chunks
+bundle manifests: 2 chunks
+bundle manifests: 3 chunks
+bundle manifests: 4 chunks
+bundle manifests: 5 chunks
+bundle manifests: 6 chunks
+bundle manifests: 7 chunks
+bundle manifests: 8 chunks
+bundle manifests: 9 chunks
+bundle files: foo/Bar/file.txt 0 chunks
+bundle files: foo/Bar/file.txt 1 chunks
+bundle files: foo/Bar/file.txt 2 chunks
+bundle files: foo/Bar/file.txt 3 chunks
+bundle files: foo/file.txt 4 chunks
+bundle files: foo/file.txt 5 chunks
+bundle files: foo/file.txt 6 chunks
+bundle files: foo/file.txt 7 chunks
+bundle files: quux/file.py 8 chunks
+bundle files: quux/file.py 9 chunks
+bundle files: quux/file.py 10 chunks
+bundle files: quux/file.py 11 chunks
+changesets: 1 chunks
 add changeset ef1ea85a6374
+changesets: 2 chunks
 add changeset f9cafe1212c8
+changesets: 3 chunks
 add changeset 911600dab2ae
 adding manifests
+manifests: 1 chunks
+manifests: 2 chunks
+manifests: 3 chunks
 adding file changes
 adding foo/Bar/file.txt revisions
+files: 1 chunks
 adding foo/file.txt revisions
+files: 2 chunks
 adding quux/file.py revisions
+files: 3 chunks
 added 3 changesets with 3 changes to 3 files
 calling hook pretxnchangegroup.acl: hgext.acl.hook
 acl: acl.allow enabled, 1 entries for user wilma
@@ -467,14 +918,55 @@
 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
 911600dab2ae7a9baff75958b84fe606851ce955
 adding changesets
+bundle changes: 0 chunks
+bundle changes: 1 chunks
+bundle changes: 2 chunks
+bundle changes: 3 chunks
+bundle changes: 4 chunks
+bundle changes: 5 chunks
+bundle changes: 6 chunks
+bundle changes: 7 chunks
+bundle changes: 8 chunks
+bundle changes: 9 chunks
+bundle manifests: 0 chunks
+bundle manifests: 1 chunks
+bundle manifests: 2 chunks
+bundle manifests: 3 chunks
+bundle manifests: 4 chunks
+bundle manifests: 5 chunks
+bundle manifests: 6 chunks
+bundle manifests: 7 chunks
+bundle manifests: 8 chunks
+bundle manifests: 9 chunks
+bundle files: foo/Bar/file.txt 0 chunks
+bundle files: foo/Bar/file.txt 1 chunks
+bundle files: foo/Bar/file.txt 2 chunks
+bundle files: foo/Bar/file.txt 3 chunks
+bundle files: foo/file.txt 4 chunks
+bundle files: foo/file.txt 5 chunks
+bundle files: foo/file.txt 6 chunks
+bundle files: foo/file.txt 7 chunks
+bundle files: quux/file.py 8 chunks
+bundle files: quux/file.py 9 chunks
+bundle files: quux/file.py 10 chunks
+bundle files: quux/file.py 11 chunks
+changesets: 1 chunks
 add changeset ef1ea85a6374
+changesets: 2 chunks
 add changeset f9cafe1212c8
+changesets: 3 chunks
 add changeset 911600dab2ae
 adding manifests
+manifests: 1 chunks
+manifests: 2 chunks
+manifests: 3 chunks
 adding file changes
 adding foo/Bar/file.txt revisions
+files: 1 chunks
 adding foo/file.txt revisions
+files: 2 chunks
 adding quux/file.py revisions
+files: 3 chunks
 added 3 changesets with 3 changes to 3 files
 calling hook pretxnchangegroup.acl: hgext.acl.hook
 error: pretxnchangegroup.acl hook raised an exception: [Errno 2] No such file or directory: '../acl.config'
@@ -515,14 +1007,55 @@
 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
 911600dab2ae7a9baff75958b84fe606851ce955
 adding changesets
+bundle changes: 0 chunks
+bundle changes: 1 chunks
+bundle changes: 2 chunks
+bundle changes: 3 chunks
+bundle changes: 4 chunks
+bundle changes: 5 chunks
+bundle changes: 6 chunks
+bundle changes: 7 chunks
+bundle changes: 8 chunks
+bundle changes: 9 chunks
+bundle manifests: 0 chunks
+bundle manifests: 1 chunks
+bundle manifests: 2 chunks
+bundle manifests: 3 chunks
+bundle manifests: 4 chunks
+bundle manifests: 5 chunks
+bundle manifests: 6 chunks
+bundle manifests: 7 chunks
+bundle manifests: 8 chunks
+bundle manifests: 9 chunks
+bundle files: foo/Bar/file.txt 0 chunks
+bundle files: foo/Bar/file.txt 1 chunks
+bundle files: foo/Bar/file.txt 2 chunks
+bundle files: foo/Bar/file.txt 3 chunks
+bundle files: foo/file.txt 4 chunks
+bundle files: foo/file.txt 5 chunks
+bundle files: foo/file.txt 6 chunks
+bundle files: foo/file.txt 7 chunks
+bundle files: quux/file.py 8 chunks
+bundle files: quux/file.py 9 chunks
+bundle files: quux/file.py 10 chunks
+bundle files: quux/file.py 11 chunks
+changesets: 1 chunks
 add changeset ef1ea85a6374
+changesets: 2 chunks
 add changeset f9cafe1212c8
+changesets: 3 chunks
 add changeset 911600dab2ae
 adding manifests
+manifests: 1 chunks
+manifests: 2 chunks
+manifests: 3 chunks
 adding file changes
 adding foo/Bar/file.txt revisions
+files: 1 chunks
 adding foo/file.txt revisions
+files: 2 chunks
 adding quux/file.py revisions
+files: 3 chunks
 added 3 changesets with 3 changes to 3 files
 calling hook pretxnchangegroup.acl: hgext.acl.hook
 acl: acl.allow enabled, 1 entries for user betty
@@ -570,14 +1103,55 @@
 f9cafe1212c8c6fa1120d14a556e18cc44ff8bdd
 911600dab2ae7a9baff75958b84fe606851ce955
 adding changesets
+bundle changes: 0 chunks
+bundle changes: 1 chunks
+bundle changes: 2 chunks
+bundle changes: 3 chunks
+bundle changes: 4 chunks
+bundle changes: 5 chunks
+bundle changes: 6 chunks
+bundle changes: 7 chunks
+bundle changes: 8 chunks
+bundle changes: 9 chunks
+bundle manifests: 0 chunks
+bundle manifests: 1 chunks
+bundle manifests: 2 chunks
+bundle manifests: 3 chunks
+bundle manifests: 4 chunks
+bundle manifests: 5 chunks
+bundle manifests: 6 chunks
+bundle manifests: 7 chunks
+bundle manifests: 8 chunks
+bundle manifests: 9 chunks
+bundle files: foo/Bar/file.txt 0 chunks
+bundle files: foo/Bar/file.txt 1 chunks
+bundle files: foo/Bar/file.txt 2 chunks
+bundle files: foo/Bar/file.txt 3 chunks
+bundle files: foo/file.txt 4 chunks
+bundle files: foo/file.txt 5 chunks
+bundle files: foo/file.txt 6 chunks
+bundle files: foo/file.txt 7 chunks
+bundle files: quux/file.py 8 chunks
+bundle files: quux/file.py 9 chunks
+bundle files: quux/file.py 10 chunks
+bundle files: quux/file.py 11 chunks
+changesets: 1 chunks
 add changeset ef1ea85a6374
+changesets: 2 chunks
 add changeset f9cafe1212c8
+changesets: 3 chunks
 add changeset 911600dab2ae
 adding manifests
+manifests: 1 chunks
+manifests: 2 chunks
+manifests: 3 chunks
 adding file changes
 adding foo/Bar/file.txt revisions
+files: 1 chunks
 adding foo/file.txt revisions
+files: 2 chunks
 adding quux/file.py revisions
+files: 3 chunks
 added 3 changesets with 3 changes to 3 files
 calling hook pretxnchangegroup.acl: hgext.acl.hook
 acl: acl.allow enabled, 1 entries for user barney
--- a/tests/test-bundle.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-bundle.out	Sat Feb 13 10:56:43 2010 +0100
@@ -341,3 +341,25 @@
 list of changesets:
 d2ae7f538514cd87c17547b0de4cea71fe1af9fb
 5ece8e77363e2b5269e27c66828b72da29e4341a
+bundle changes: 0 chunks
+bundle changes: 1 chunks
+bundle changes: 2 chunks
+bundle changes: 3 chunks
+bundle changes: 4 chunks
+bundle changes: 5 chunks
+bundle changes: 6 chunks
+bundle manifests: 0 chunks
+bundle manifests: 1 chunks
+bundle manifests: 2 chunks
+bundle manifests: 3 chunks
+bundle manifests: 4 chunks
+bundle manifests: 5 chunks
+bundle manifests: 6 chunks
+bundle files: b 0 chunks
+bundle files: b 1 chunks
+bundle files: b 2 chunks
+bundle files: b 3 chunks
+bundle files: b1 4 chunks
+bundle files: b1 5 chunks
+bundle files: b1 6 chunks
+bundle files: b1 7 chunks
--- a/tests/test-copy-move-merge.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-copy-move-merge.out	Sat Feb 13 10:56:43 2010 +0100
@@ -15,10 +15,12 @@
 preserving a for resolve of b
 preserving a for resolve of c
 removing a
+update: a 1/2 files (50.00%)
 picked tool 'internal:merge' for b (binary False symlink False)
 merging a and b to b
 my b@fb3948d97f07+ other b@40da226db0f0 ancestor a@583c7b748052
  premerge successful
+update: a 2/2 files (100.00%)
 picked tool 'internal:merge' for c (binary False symlink False)
 merging a and c to c
 my c@fb3948d97f07+ other c@40da226db0f0 ancestor a@583c7b748052
--- a/tests/test-double-merge.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-double-merge.out	Sat Feb 13 10:56:43 2010 +0100
@@ -17,10 +17,12 @@
  foo: remote copied to bar -> m
 preserving foo for resolve of bar
 preserving foo for resolve of foo
+update: foo 1/2 files (50.00%)
 picked tool 'internal:merge' for bar (binary False symlink False)
 merging foo and bar to bar
 my bar@2092631ce82b+ other bar@7731dad1c2b9 ancestor foo@310fd17130da
  premerge successful
+update: foo 2/2 files (100.00%)
 picked tool 'internal:merge' for foo (binary False symlink False)
 merging foo
 my foo@2092631ce82b+ other foo@7731dad1c2b9 ancestor foo@310fd17130da
--- a/tests/test-issue522.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-issue522.out	Sat Feb 13 10:56:43 2010 +0100
@@ -8,6 +8,7 @@
  overwrite None partial False
  ancestor bbd179dfa0a7 local 71766447bdbb+ remote 4d9e78aaceee
  foo: remote is newer -> g
+update: foo 1/1 files (100.00%)
 getting foo
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
--- a/tests/test-issue672.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-issue672.out	Sat Feb 13 10:56:43 2010 +0100
@@ -13,7 +13,9 @@
  ancestor 81f4b099af3d local c64f439569a9+ remote 2f8037f47a5c
  1: other deleted -> r
  1a: remote created -> g
+update: 1 1/2 files (50.00%)
 removing 1
+update: 1a 2/2 files (100.00%)
 getting 1a
 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
@@ -31,6 +33,7 @@
  ancestor c64f439569a9 local ac7575e3c052+ remote 746e9549ea96
  1a: local copied/moved to 1 -> m
 preserving 1a for resolve of 1a
+update: 1a 1/1 files (100.00%)
 picked tool 'internal:merge' for 1a (binary False symlink False)
 merging 1a and 1 to 1a
 my 1a@ac7575e3c052+ other 1@746e9549ea96 ancestor 1@81f4b099af3d
@@ -50,6 +53,7 @@
  1: remote moved to 1a -> m
 preserving 1 for resolve of 1a
 removing 1
+update: 1 1/1 files (100.00%)
 picked tool 'internal:merge' for 1a (binary False symlink False)
 merging 1 and 1a to 1a
 my 1a@746e9549ea96+ other 1a@ac7575e3c052 ancestor 1@81f4b099af3d
--- a/tests/test-merge-commit.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-merge-commit.out	Sat Feb 13 10:56:43 2010 +0100
@@ -28,6 +28,7 @@
  ancestor 0a3ab4856510 local 2d2f9a22c82b+ remote 7d3b554bfdf1
  bar: versions differ -> m
 preserving bar for resolve of bar
+update: bar 1/1 files (100.00%)
 picked tool 'internal:merge' for bar (binary False symlink False)
 merging bar
 my bar@2d2f9a22c82b+ other bar@7d3b554bfdf1 ancestor bar@0a3ab4856510
@@ -78,6 +79,7 @@
  ancestor 0a3ab4856510 local 2d2f9a22c82b+ remote 96ab80c60897
  bar: versions differ -> m
 preserving bar for resolve of bar
+update: bar 1/1 files (100.00%)
 picked tool 'internal:merge' for bar (binary False symlink False)
 merging bar
 my bar@2d2f9a22c82b+ other bar@96ab80c60897 ancestor bar@0a3ab4856510
--- a/tests/test-merge-types.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-merge-types.out	Sat Feb 13 10:56:43 2010 +0100
@@ -8,6 +8,7 @@
  conflicting flags for a
 (n)one, e(x)ec or sym(l)ink? n
  a: update permissions -> e
+update: a 1/1 files (100.00%)
 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
 % symlink is local parent, executable is other
@@ -20,6 +21,7 @@
  conflicting flags for a
 (n)one, e(x)ec or sym(l)ink? n
  a: remote is newer -> g
+update: a 1/1 files (100.00%)
 getting a
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
--- a/tests/test-merge7.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-merge7.out	Sat Feb 13 10:56:43 2010 +0100
@@ -25,6 +25,7 @@
  ancestor faaea63e63a9 local 451c744aabcc+ remote a070d41e8360
  test.txt: versions differ -> m
 preserving test.txt for resolve of test.txt
+update: test.txt 1/1 files (100.00%)
 picked tool 'internal:merge' for test.txt (binary False symlink False)
 merging test.txt
 my test.txt@451c744aabcc+ other test.txt@a070d41e8360 ancestor test.txt@faaea63e63a9
--- a/tests/test-mq-qclone-http	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-mq-qclone-http	Sat Feb 13 10:56:43 2010 +0100
@@ -75,3 +75,7 @@
 hg --cwd d log --template "{desc}\n"
 hg --cwd d qpush -a
 hg --cwd d log --template "{desc}\n"
+
+echo '% test --mq works and uses correct repository config'
+hg --cwd d outgoing --mq
+hg --cwd d log --mq --template '{rev} {desc|firstline}\n'
--- a/tests/test-mq-qclone-http.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-mq-qclone-http.out	Sat Feb 13 10:56:43 2010 +0100
@@ -78,3 +78,8 @@
 now at: b.patch
 imported patch b.patch
 a
+% test --mq works and uses correct repository config
+comparing with http://localhost:20061/a/.hg/patches
+searching for changes
+no changes found
+0 b.patch
--- a/tests/test-rename-dir-merge.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-rename-dir-merge.out	Sat Feb 13 10:56:43 2010 +0100
@@ -28,11 +28,17 @@
  a/a: other deleted -> r
  b/a: remote created -> g
  b/b: remote created -> g
+update: a/a 1/6 files (16.67%)
 removing a/a
+update: a/b 2/6 files (33.33%)
 removing a/b
+update: a/c 3/6 files (50.00%)
 moving a/c to b/c
+update: a/d 4/6 files (66.67%)
 moving a/d to b/d
+update: b/a 5/6 files (83.33%)
 getting b/a
+update: b/b 6/6 files (100.00%)
 getting b/b
 4 files updated, 0 files merged, 2 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
@@ -64,6 +70,7 @@
  overwrite None partial False
  ancestor f9b20c0d4c51 local 55119e611c80+ remote ce36d17b18fb
  None: local renamed directory to b/c -> d
+update:None 1/1 files (100.00%)
 getting a/c to b/c
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
--- a/tests/test-rename-merge1.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-rename-merge1.out	Sat Feb 13 10:56:43 2010 +0100
@@ -21,13 +21,16 @@
  b2: remote created -> g
 preserving a for resolve of b
 removing a
+update: a 1/3 files (33.33%)
 picked tool 'internal:merge' for b (binary False symlink False)
 merging a and b to b
 my b@f26ec4fc3fa3+ other b@8e765a822af2 ancestor a@af1939970a1c
  premerge successful
+update: a2 2/3 files (66.67%)
 warning: detected divergent renames of a2 to:
  c2
  b2
+update: b2 3/3 files (100.00%)
 getting b2
 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
--- a/tests/test-rename-merge2.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-rename-merge2.out	Sat Feb 13 10:56:43 2010 +0100
@@ -15,10 +15,12 @@
  a: remote copied to b -> m
 preserving a for resolve of b
 preserving rev for resolve of rev
+update: a 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging a and b to b
 my b@e300d1c794ec+ other b@735846fee2d7 ancestor a@924404dff337
  premerge successful
+update: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@e300d1c794ec+ other rev@735846fee2d7 ancestor rev@924404dff337
@@ -48,11 +50,14 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
+update: a 1/3 files (33.33%)
 getting a
+update: b 2/3 files (66.67%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b and a to b
 my b@ac809aeed39a+ other a@f4db7e329e71 ancestor a@924404dff337
  premerge successful
+update: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@ac809aeed39a+ other rev@f4db7e329e71 ancestor rev@924404dff337
@@ -82,10 +87,12 @@
 preserving a for resolve of b
 preserving rev for resolve of rev
 removing a
+update: a 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging a and b to b
 my b@e300d1c794ec+ other b@e03727d2d66b ancestor a@924404dff337
  premerge successful
+update: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@e300d1c794ec+ other rev@e03727d2d66b ancestor rev@924404dff337
@@ -113,10 +120,12 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
+update: b 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b and a to b
 my b@ecf3cb2a4219+ other a@f4db7e329e71 ancestor a@924404dff337
  premerge successful
+update: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@ecf3cb2a4219+ other rev@f4db7e329e71 ancestor rev@924404dff337
@@ -143,7 +152,9 @@
  rev: versions differ -> m
  b: remote created -> g
 preserving rev for resolve of rev
+update: b 1/2 files (50.00%)
 getting b
+update: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@94b33a1b7f2d+ other rev@735846fee2d7 ancestor rev@924404dff337
@@ -169,6 +180,7 @@
  ancestor 924404dff337 local ac809aeed39a+ remote 97c705ade336
  rev: versions differ -> m
 preserving rev for resolve of rev
+update: rev 1/1 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@ac809aeed39a+ other rev@97c705ade336 ancestor rev@924404dff337
@@ -196,8 +208,11 @@
  rev: versions differ -> m
  b: remote created -> g
 preserving rev for resolve of rev
+update: a 1/3 files (33.33%)
 removing a
+update: b 2/3 files (66.67%)
 getting b
+update: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@94b33a1b7f2d+ other rev@e03727d2d66b ancestor rev@924404dff337
@@ -222,6 +237,7 @@
  ancestor 924404dff337 local ecf3cb2a4219+ remote 97c705ade336
  rev: versions differ -> m
 preserving rev for resolve of rev
+update: rev 1/1 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@ecf3cb2a4219+ other rev@97c705ade336 ancestor rev@924404dff337
@@ -243,9 +259,11 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
+update: b 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@ec03c2ca8642+ other b@79cc6877a3b7 ancestor a@924404dff337
+update: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@ec03c2ca8642+ other rev@79cc6877a3b7 ancestor rev@924404dff337
@@ -275,10 +293,13 @@
  rev: versions differ -> m
  c: remote created -> g
 preserving rev for resolve of rev
+update: a 1/3 files (33.33%)
 warning: detected divergent renames of a to:
  b
  c
+update: c 2/3 files (66.67%)
 getting c
+update: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@ecf3cb2a4219+ other rev@e6abcc1a30c2 ancestor rev@924404dff337
@@ -301,9 +322,11 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
+update: b 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@ac809aeed39a+ other b@af30c7647fc7 ancestor b@000000000000
+update: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@ac809aeed39a+ other rev@af30c7647fc7 ancestor rev@924404dff337
@@ -327,10 +350,13 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
+update: a 1/3 files (33.33%)
 removing a
+update: b 2/3 files (66.67%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@59318016310c+ other b@e03727d2d66b ancestor b@000000000000
+update: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@59318016310c+ other rev@e03727d2d66b ancestor rev@924404dff337
@@ -353,10 +379,13 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
+update: a 1/3 files (33.33%)
 getting a
+update: b 2/3 files (66.67%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@ac809aeed39a+ other b@8dbce441892a ancestor b@000000000000
+update: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@ac809aeed39a+ other rev@8dbce441892a ancestor rev@924404dff337
@@ -380,10 +409,13 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
+update: a 1/3 files (33.33%)
 removing a
+update: b 2/3 files (66.67%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@59318016310c+ other b@e03727d2d66b ancestor b@000000000000
+update: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@59318016310c+ other rev@e03727d2d66b ancestor rev@924404dff337
@@ -406,10 +438,13 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
+update: a 1/3 files (33.33%)
 getting a
+update: b 2/3 files (66.67%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@ac809aeed39a+ other b@8dbce441892a ancestor b@000000000000
+update: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@ac809aeed39a+ other rev@8dbce441892a ancestor rev@924404dff337
@@ -432,9 +467,11 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
+update: b 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@0b76e65c8289+ other b@735846fee2d7 ancestor b@000000000000
+update: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@0b76e65c8289+ other rev@735846fee2d7 ancestor rev@924404dff337
@@ -460,10 +497,13 @@
  a: prompt recreating -> g
 preserving b for resolve of b
 preserving rev for resolve of rev
+update: a 1/3 files (33.33%)
 getting a
+update: b 2/3 files (66.67%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@ecf3cb2a4219+ other b@8dbce441892a ancestor b@000000000000
+update: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@ecf3cb2a4219+ other rev@8dbce441892a ancestor rev@924404dff337
@@ -489,9 +529,12 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
+update: a 1/3 files (33.33%)
+update: b 2/3 files (66.67%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@0b76e65c8289+ other b@e03727d2d66b ancestor b@000000000000
+update: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@0b76e65c8289+ other rev@e03727d2d66b ancestor rev@924404dff337
@@ -520,9 +563,11 @@
 preserving a for resolve of b
 preserving rev for resolve of rev
 removing a
+update: a 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging a and b to b
 my b@e300d1c794ec+ other b@79cc6877a3b7 ancestor a@924404dff337
+update: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@e300d1c794ec+ other rev@79cc6877a3b7 ancestor rev@924404dff337
@@ -550,9 +595,11 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
+update: b 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b and a to b
 my b@ec03c2ca8642+ other a@f4db7e329e71 ancestor a@924404dff337
+update: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@ec03c2ca8642+ other rev@f4db7e329e71 ancestor rev@924404dff337
@@ -583,11 +630,14 @@
  c: remote created -> g
 preserving b for resolve of b
 preserving rev for resolve of rev
+update: b 1/3 files (33.33%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b and a to b
 my b@ecf3cb2a4219+ other a@2b958612230f ancestor a@924404dff337
  premerge successful
+update: c 2/3 files (66.67%)
 getting c
+update: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@ecf3cb2a4219+ other rev@2b958612230f ancestor rev@924404dff337
--- a/tests/test-subrepo.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-subrepo.out	Sat Feb 13 10:56:43 2010 +0100
@@ -56,6 +56,7 @@
  overwrite None partial False
  ancestor 1f14a2e2d3ec local f0d2028bf86d+ remote 1831e14459c4
  .hgsubstate: versions differ -> m
+update: .hgsubstate 1/1 files (100.00%)
 subrepo merge f0d2028bf86d+ 1831e14459c4 1f14a2e2d3ec
   subrepo t: other changed, get t:6747d179aa9a688023c4b0cad32e4c92bb7f34ad:hg
 getting subrepo t
@@ -63,6 +64,7 @@
  overwrite True partial False
  ancestor 60ca1237c194+ local 60ca1237c194+ remote 6747d179aa9a
  t: remote is newer -> g
+update: t 1/1 files (100.00%)
 getting t
 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
@@ -78,6 +80,7 @@
  overwrite None partial False
  ancestor 1831e14459c4 local e45c8b14af55+ remote f94576341bcf
  .hgsubstate: versions differ -> m
+update: .hgsubstate 1/1 files (100.00%)
 subrepo merge e45c8b14af55+ f94576341bcf 1831e14459c4
   subrepo t: both sides changed, merge with t:7af322bc1198a32402fe903e0b7ebcfc5c9bf8f4:hg
 merging subrepo t
@@ -87,6 +90,7 @@
  ancestor 6747d179aa9a local 20a0db6fbf6c+ remote 7af322bc1198
  t: versions differ -> m
 preserving t for resolve of t
+update: t 1/1 files (100.00%)
 picked tool 'internal:merge' for t (binary False symlink False)
 merging t
 my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a
--- a/tests/test-up-local-change.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-up-local-change.out	Sat Feb 13 10:56:43 2010 +0100
@@ -24,9 +24,11 @@
  a: versions differ -> m
  b: remote created -> g
 preserving a for resolve of a
+update: a 1/2 files (50.00%)
 picked tool 'true' for a (binary False symlink False)
 merging a
 my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b
+update: b 2/2 files (100.00%)
 getting b
 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
 changeset:   1:802f095af299
@@ -41,7 +43,9 @@
  a: versions differ -> m
  b: other deleted -> r
 preserving a for resolve of a
+update: b 1/2 files (50.00%)
 removing b
+update: a 2/2 files (100.00%)
 picked tool 'true' for a (binary False symlink False)
 merging a
 my a@802f095af299+ other a@33aaa84a386b ancestor a@33aaa84a386b
@@ -68,9 +72,11 @@
  a: versions differ -> m
  b: remote created -> g
 preserving a for resolve of a
+update: a 1/2 files (50.00%)
 picked tool 'true' for a (binary False symlink False)
 merging a
 my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b
+update: b 2/2 files (100.00%)
 getting b
 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
 changeset:   1:802f095af299
@@ -123,9 +129,11 @@
  b: versions differ -> m
 preserving a for resolve of a
 preserving b for resolve of b
+update: a 1/2 files (50.00%)
 picked tool 'true' for a (binary False symlink False)
 merging a
 my a@802f095af299+ other a@030602aee63d ancestor a@33aaa84a386b
+update: b 2/2 files (100.00%)
 picked tool 'true' for b (binary False symlink False)
 merging b
 my b@802f095af299+ other b@030602aee63d ancestor b@000000000000
--- a/tests/test-update-reverse.out	Fri Feb 12 15:17:10 2010 +0100
+++ b/tests/test-update-reverse.out	Sat Feb 13 10:56:43 2010 +0100
@@ -46,8 +46,11 @@
  side2: other deleted -> r
  side1: other deleted -> r
  main: remote created -> g
+update: side1 1/3 files (33.33%)
 removing side1
+update: side2 2/3 files (66.67%)
 removing side2
+update: main 3/3 files (100.00%)
 getting main
 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
 Should only show a main