changeset 12565:52f93dc2980b

merge with i18n
author Wagner Bruna <wbruna@softwareexpress.com.br>
date Fri, 24 Sep 2010 19:47:50 -0300
parents 4cdaf1adafc8 (diff) 12f58fa94a31 (current diff)
children 27e014189d3b
files
diffstat 131 files changed, 2423 insertions(+), 1790 deletions(-) [+]
line wrap: on
line diff
--- a/contrib/check-code.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/contrib/check-code.py	Fri Sep 24 19:47:50 2010 -0300
@@ -63,6 +63,7 @@
     (r'export.*=', "don't export and assign at once"),
     ('^([^"\']|("[^"]*")|(\'[^\']*\'))*\\^', "^ must be quoted"),
     (r'^source\b', "don't use 'source', use '.'"),
+    (r'touch -d', "don't use 'touch -d', use 'touch -t' instead"),
 ]
 
 testfilters = [
@@ -70,6 +71,27 @@
     (r"<<(\S+)((.|\n)*?\n\1)", rephere),
 ]
 
+uprefix = r"^  \$ "
+utestpats = [
+    (uprefix + r'.*\|\s*sed', "use regex test output patterns instead of sed"),
+    (uprefix + r'(true|exit 0)', "explicit zero exit unnecessary"),
+    (uprefix + r'.*\$\?', "explicit exit code checks unnecessary"),
+    (uprefix + r'.*\|\| echo.*(fail|error)',
+     "explicit exit code checks unnecessary"),
+    (uprefix + r'set -e', "don't use set -e"),
+]
+
+for p, m in testpats:
+    if p.startswith('^'):
+        p = uprefix + p[1:]
+    else:
+        p = uprefix + p
+    utestpats.append((p, m))
+
+utestfilters = [
+    (r"( *)(#([^\n]*\S)?)", repcomment),
+]
+
 pypats = [
     (r'^\s*def\s*\w+\s*\(.*,\s*\(',
      "tuple parameter unpacking not available in Python 3+"),
@@ -157,6 +179,7 @@
     ('python', r'.*\.(py|cgi)$', pyfilters, pypats),
     ('test script', r'(.*/)?test-[^.~]*$', testfilters, testpats),
     ('c', r'.*\.c$', cfilters, cpats),
+    ('unified test', r'.*\.t$', utestfilters, utestpats),
 ]
 
 class norepeatlogger(object):
--- a/doc/hgrc.5.txt	Fri Sep 24 02:17:54 2010 +0200
+++ b/doc/hgrc.5.txt	Fri Sep 24 19:47:50 2010 -0300
@@ -699,13 +699,12 @@
     Optional. Whether to connect to mail server using TLS. True or
     False. Default: False.
 ``username``
-    Optional. User name to authenticate to SMTP server with. If
-    username is specified, password must also be specified.
+    Optional. User name for authenticating with the SMTP server.
     Default: none.
 ``password``
-    Optional. Password to authenticate to SMTP server with. If
-    username is specified, password must also be specified.
-    Default: none.
+    Optional. Password for authenticating with the SMTP server. If not
+    specified, interactive sessions will prompt the user for a
+    password; non-interactive sessions will fail. Default: none.
 ``local_hostname``
     Optional. It's the hostname that the sender can use to identify
     itself to the MTA.
--- a/hgext/bookmarks.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/hgext/bookmarks.py	Fri Sep 24 19:47:50 2010 -0300
@@ -224,6 +224,7 @@
             in the .hg/bookmarks file.
             Read the file and return a (name=>nodeid) dictionary
             '''
+            self._loadingbookmarks = True
             try:
                 bookmarks = {}
                 for line in self.opener('bookmarks'):
@@ -231,6 +232,7 @@
                     bookmarks[refspec] = super(bookmark_repo, self).lookup(sha)
             except:
                 pass
+            self._loadingbookmarks = False
             return bookmarks
 
         @util.propertycache
@@ -257,8 +259,9 @@
             return super(bookmark_repo, self).rollback(*args)
 
         def lookup(self, key):
-            if key in self._bookmarks:
-                key = self._bookmarks[key]
+            if not getattr(self, '_loadingbookmarks', False):
+                if key in self._bookmarks:
+                    key = self._bookmarks[key]
             return super(bookmark_repo, self).lookup(key)
 
         def _bookmarksupdate(self, parents, node):
@@ -357,7 +360,8 @@
         def _findtags(self):
             """Merge bookmarks with normal tags"""
             (tags, tagtypes) = super(bookmark_repo, self)._findtags()
-            tags.update(self._bookmarks)
+            if not getattr(self, '_loadingbookmarks', False):
+                tags.update(self._bookmarks)
             return (tags, tagtypes)
 
         if hasattr(repo, 'invalidate'):
--- a/hgext/convert/darcs.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/hgext/convert/darcs.py	Fri Sep 24 19:47:50 2010 -0300
@@ -8,7 +8,7 @@
 from common import NoRepo, checktool, commandline, commit, converter_source
 from mercurial.i18n import _
 from mercurial import util
-import os, shutil, tempfile
+import os, shutil, tempfile, re
 
 # The naming drift of ElementTree is fun!
 
@@ -31,11 +31,8 @@
         converter_source.__init__(self, ui, path, rev=rev)
         commandline.__init__(self, ui, 'darcs')
 
-        # check for _darcs, ElementTree, _darcs/inventory so that we can
-        # easily skip test-convert-darcs if ElementTree is not around
-        if not os.path.exists(os.path.join(path, '_darcs', 'inventories')):
-            raise NoRepo(_("%s does not look like a darcs repository") % path)
-
+        # check for _darcs, ElementTree so that we can easily skip
+        # test-convert-darcs if ElementTree is not around
         if not os.path.exists(os.path.join(path, '_darcs')):
             raise NoRepo(_("%s does not look like a darcs repository") % path)
 
@@ -55,6 +52,15 @@
         self.parents = {}
         self.tags = {}
 
+        # Check darcs repository format
+        format = self.format()
+        if format:
+            if format in ('darcs-1.0', 'hashed'):
+                raise NoRepo(_("%s repository format is unsupported, "
+                               "please upgrade") % format)
+        else:
+            self.ui.warn(_('failed to detect repository format!'))
+
     def before(self):
         self.tmppath = tempfile.mkdtemp(
             prefix='convert-' + os.path.basename(self.path) + '-')
@@ -91,6 +97,15 @@
         self.checkexit(fp.close())
         return etree.getroot()
 
+    def format(self):
+        output, status = self.run('show', 'repo', no_files=True,
+                                  repodir=self.path)
+        self.checkexit(status)
+        m = re.search(r'^\s*Format:\s*(.*)$', output, re.MULTILINE)
+        if not m:
+            return None
+        return ','.join(sorted(f.strip() for f in m.group(1).split(',')))
+
     def manifest(self):
         man = []
         output, status = self.run('show', 'files', no_directories=True,
--- a/hgext/keyword.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/hgext/keyword.py	Fri Sep 24 19:47:50 2010 -0300
@@ -52,8 +52,9 @@
     # prefer svn- over cvs-like default keywordmaps
     svn = True
 
-NOTE: the more specific you are in your filename patterns the less you
-lose speed in huge repositories.
+.. note::
+   The more specific you are in your filename patterns the less you
+   lose speed in huge repositories.
 
 For [keywordmaps] template mapping and expansion demonstration and
 control run :hg:`kwdemo`. See :hg:`help templates` for a list of
--- a/hgext/mq.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/hgext/mq.py	Fri Sep 24 19:47:50 2010 -0300
@@ -2174,7 +2174,9 @@
 
     With no arguments, print the currently active guards.
     With arguments, set guards for the named patch.
-    NOTE: Specifying negative guards now requires '--'.
+
+    .. note::
+       Specifying negative guards now requires '--'.
 
     To set guards on another patch::
 
@@ -2797,8 +2799,16 @@
                                               editor, extra)
 
         def push(self, remote, force=False, revs=None, newbranch=False):
-            if self.mq.applied and not force and not revs:
-                raise util.Abort(_('source has mq patches applied'))
+            if self.mq.applied and not force:
+                haspatches = True
+                if revs:
+                    # Assume applied patches have no non-patch descendants
+                    # and are not on remote already. If they appear in the
+                    # set of resolved 'revs', bail out.
+                    applied = set(e.node for e in self.mq.applied)
+                    haspatches = bool([n for n in revs if n in applied])
+                if haspatches:
+                    raise util.Abort(_('source has mq patches applied'))
             return super(mqrepo, self).push(remote, force, revs, newbranch)
 
         def _findtags(self):
--- a/hgext/share.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/hgext/share.py	Fri Sep 24 19:47:50 2010 -0300
@@ -14,15 +14,16 @@
     Initialize a new repository and working directory that shares its
     history with another repository.
 
-    NOTE: using rollback or extensions that destroy/modify history
-    (mq, rebase, etc.) can cause considerable confusion with shared
-    clones. In particular, if two shared clones are both updated to
-    the same changeset, and one of them destroys that changeset with
-    rollback, the other clone will suddenly stop working: all
-    operations will fail with "abort: working directory has unknown
-    parent". The only known workaround is to use debugsetparents on
-    the broken clone to reset it to a changeset that still exists
-    (e.g. tip).
+    .. note::
+       using rollback or extensions that destroy/modify history (mq,
+       rebase, etc.) can cause considerable confusion with shared
+       clones. In particular, if two shared clones are both updated to
+       the same changeset, and one of them destroys that changeset
+       with rollback, the other clone will suddenly stop working: all
+       operations will fail with "abort: working directory has unknown
+       parent". The only known workaround is to use debugsetparents on
+       the broken clone to reset it to a changeset that still exists
+       (e.g. tip).
     """
 
     return hg.share(ui, source, dest, not noupdate)
--- a/mercurial/cmdutil.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/mercurial/cmdutil.py	Fri Sep 24 19:47:50 2010 -0300
@@ -363,7 +363,7 @@
             islink, isexec = gp.mode
             dst = repo.wjoin(gp.path)
             # patch won't create empty files
-            if gp.op == 'ADD' and not os.path.exists(dst):
+            if gp.op == 'ADD' and not os.path.lexists(dst):
                 flags = (isexec and 'x' or '') + (islink and 'l' or '')
                 repo.wwrite(gp.path, '', flags)
             util.set_flags(dst, islink, isexec)
@@ -521,7 +521,7 @@
                     score = 0
                     for s in srcs:
                         t = os.path.join(dest, util.localpath(s[0])[striplen:])
-                        if os.path.exists(t):
+                        if os.path.lexists(t):
                             score += 1
                     return score
 
--- a/mercurial/commands.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/mercurial/commands.py	Fri Sep 24 19:47:50 2010 -0300
@@ -1432,9 +1432,10 @@
 
     Differences between files are shown using the unified diff format.
 
-    NOTE: diff may generate unexpected results for merges, as it will
-    default to comparing against the working directory's first parent
-    changeset if no revisions are specified.
+    .. note::
+       diff may generate unexpected results for merges, as it will
+       default to comparing against the working directory's first
+       parent changeset if no revisions are specified.
 
     When two revision arguments are given, then changes are shown
     between those revisions. If only one revision is specified then
@@ -1486,9 +1487,10 @@
     branch name (if non-default), changeset hash, parent(s) and commit
     comment.
 
-    NOTE: export may generate unexpected diff output for merge
-    changesets, as it will compare the merge changeset against its
-    first parent only.
+    .. note::
+       export may generate unexpected diff output for merge
+       changesets, as it will compare the merge changeset against its
+       first parent only.
 
     Output may be to a file, in which case the name of the file is
     given using a format string. The formatting rules are as follows:
@@ -1585,7 +1587,7 @@
         reflags |= re.I
     try:
         regexp = re.compile(pattern, reflags)
-    except Exception, inst:
+    except re.error, inst:
         ui.warn(_("grep: invalid match pattern: %s\n") % inst)
         return 1
     sep, eol = ':', '\n'
@@ -2361,11 +2363,6 @@
         raise util.Abort(_('cannot combine --bundle and --subrepos'))
 
     ret = hg.incoming(ui, repo, source, opts)
-    if opts.get('subrepos'):
-        ctx = repo[None]
-        for subpath in sorted(ctx.substate):
-            sub = ctx.sub(subpath)
-            ret = min(ret, sub.incoming(ui, source, opts))
     return ret
 
 def init(ui, dest=".", **opts):
@@ -2444,10 +2441,11 @@
     each commit. When the -v/--verbose switch is used, the list of
     changed files and full commit message are shown.
 
-    NOTE: log -p/--patch may generate unexpected diff output for merge
-    changesets, as it will only compare the merge changeset against
-    its first parent. Also, only files different from BOTH parents
-    will appear in files:.
+    .. note::
+       log -p/--patch may generate unexpected diff output for merge
+       changesets, as it will only compare the merge changeset against
+       its first parent. Also, only files different from BOTH parents
+       will appear in files:.
 
     Returns 0 on success.
     """
@@ -2502,7 +2500,11 @@
 
         revmatchfn = None
         if opts.get('patch') or opts.get('stat'):
-            revmatchfn = cmdutil.match(repo, fns, default='path')
+            if opts.get('follow') or opts.get('follow_first'):
+                # note: this might be wrong when following through merges
+                revmatchfn = cmdutil.match(repo, fns, default='path')
+            else:
+                revmatchfn = matchfn
 
         displayer.show(ctx, copies=copies, matchfn=revmatchfn)
 
@@ -2623,11 +2625,6 @@
     Returns 0 if there are outgoing changes, 1 otherwise.
     """
     ret = hg.outgoing(ui, repo, dest, opts)
-    if opts.get('subrepos'):
-        ctx = repo[None]
-        for subpath in sorted(ctx.substate):
-            sub = ctx.sub(subpath)
-            ret = min(ret, sub.outgoing(ui, dest, opts))
     return ret
 
 def parents(ui, repo, file_=None, **opts):
@@ -2990,16 +2987,20 @@
 
                 # replace filemerge's .orig file with our resolve file
                 util.rename(a + ".resolve", a + ".orig")
+
+    ms.commit()
     return ret
 
 def revert(ui, repo, *pats, **opts):
     """restore individual files or directories to an earlier state
 
-    NOTE: This command is most likely not what you are looking for. revert
-    will partially overwrite content in the working directory without changing
-    the working directory parents. Use :hg:`update -r rev` to check out earlier
-    revisions, or :hg:`update --clean .` to undo a merge which has added
-    another parent.
+    .. note::
+       This command is most likely not what you are looking for.
+       revert will partially overwrite content in the working
+       directory without changing the working directory parents. Use
+       :hg:`update -r rev` to check out earlier revisions, or
+       :hg:`update --clean .` to undo a merge which has added another
+       parent.
 
     With no revision specified, revert the named files or directories
     to the contents they had in the parent of the working directory.
@@ -3365,10 +3366,11 @@
     Option -q/--quiet hides untracked (unknown and ignored) files
     unless explicitly requested with -u/--unknown or -i/--ignored.
 
-    NOTE: status may appear to disagree with diff if permissions have
-    changed or a merge has occurred. The standard diff format does not
-    report permission changes and diff only reports changes relative
-    to one merge parent.
+    .. note::
+       status may appear to disagree with diff if permissions have
+       changed or a merge has occurred. The standard diff format does
+       not report permission changes and diff only reports changes
+       relative to one merge parent.
 
     If one revision is given, it is used as the base revision.
     If two revisions are given, the differences between them are
--- a/mercurial/context.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/mercurial/context.py	Fri Sep 24 19:47:50 2010 -0300
@@ -844,7 +844,7 @@
                 if self._repo.dirstate[f] != 'r':
                     self._repo.ui.warn(_("%s not removed!\n") % f)
                 else:
-                    fctx = f in pctxs[0] and pctxs[0] or pctxs[1]
+                    fctx = f in pctxs[0] and pctxs[0][f] or pctxs[1][f]
                     t = fctx.data()
                     self._repo.wwrite(f, t, fctx.flags())
                     self._repo.dirstate.normal(f)
--- a/mercurial/dagparser.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/mercurial/dagparser.py	Fri Sep 24 19:47:50 2010 -0300
@@ -219,7 +219,7 @@
                 yield 'n', (r, [p1])
                 p1 = r
                 r += 1
-        elif c == '*' or c == '/':
+        elif c in '*/':
             if c == '*':
                 c = nextch()
             c, pref = nextstring(c)
--- a/mercurial/help/templates.txt	Fri Sep 24 02:17:54 2010 +0200
+++ b/mercurial/help/templates.txt	Fri Sep 24 19:47:50 2010 -0300
@@ -106,6 +106,9 @@
 :escape: Any text. Replaces the special XML/XHTML characters "&", "<"
     and ">" with XML entities.
 
+:hex: Any text. Convert a binary Mercurial node identifier into
+    its long hexadecimal representation.
+
 :fill68: Any text. Wraps the text to fit in 68 columns.
 
 :fill76: Any text. Wraps the text to fit in 76 columns.
--- a/mercurial/hg.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/mercurial/hg.py	Fri Sep 24 19:47:50 2010 -0300
@@ -409,6 +409,15 @@
     return stats[3] > 0
 
 def incoming(ui, repo, source, opts):
+    def recurse():
+        ret = 1
+        if opts.get('subrepos'):
+            ctx = repo[None]
+            for subpath in sorted(ctx.substate):
+                sub = ctx.sub(subpath)
+                ret = min(ret, sub.incoming(ui, source, opts))
+        return ret
+
     limit = cmdutil.loglimit(opts)
     source, branches = parseurl(ui.expandpath(source), opts.get('branch'))
     other = repository(remoteui(repo, opts), source)
@@ -426,7 +435,7 @@
         except:
             pass
         ui.status(_("no changes found\n"))
-        return 1
+        return recurse()
 
     cleanup = None
     try:
@@ -469,8 +478,19 @@
             other.close()
         if cleanup:
             os.unlink(cleanup)
+    recurse()
+    return 0 # exit code is zero since we found incoming changes
 
 def outgoing(ui, repo, dest, opts):
+    def recurse():
+        ret = 1
+        if opts.get('subrepos'):
+            ctx = repo[None]
+            for subpath in sorted(ctx.substate):
+                sub = ctx.sub(subpath)
+                ret = min(ret, sub.outgoing(ui, dest, opts))
+        return ret
+
     limit = cmdutil.loglimit(opts)
     dest = ui.expandpath(dest or 'default-push', dest or 'default')
     dest, branches = parseurl(dest, opts.get('branch'))
@@ -483,7 +503,8 @@
     o = discovery.findoutgoing(repo, other, force=opts.get('force'))
     if not o:
         ui.status(_("no changes found\n"))
-        return 1
+        return recurse()
+
     o = repo.changelog.nodesbetween(o, revs)[0]
     if opts.get('newest_first'):
         o.reverse()
@@ -498,6 +519,8 @@
         count += 1
         displayer.show(repo[n])
     displayer.close()
+    recurse()
+    return 0 # exit code is zero since we found outgoing changes
 
 def revert(repo, node, choose):
     """revert changes to revision in node without updating dirstate"""
--- a/mercurial/merge.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/mercurial/merge.py	Fri Sep 24 19:47:50 2010 -0300
@@ -14,12 +14,14 @@
     '''track 3-way merge state of individual files'''
     def __init__(self, repo):
         self._repo = repo
+        self._dirty = False
         self._read()
     def reset(self, node=None):
         self._state = {}
         if node:
             self._local = node
         shutil.rmtree(self._repo.join("merge"), True)
+        self._dirty = False
     def _read(self):
         self._state = {}
         try:
@@ -33,17 +35,20 @@
         except IOError, err:
             if err.errno != errno.ENOENT:
                 raise
-    def _write(self):
-        f = self._repo.opener("merge/state", "w")
-        f.write(hex(self._local) + "\n")
-        for d, v in self._state.iteritems():
-            f.write("\0".join([d] + v) + "\n")
+        self._dirty = False
+    def commit(self):
+        if self._dirty:
+            f = self._repo.opener("merge/state", "w")
+            f.write(hex(self._local) + "\n")
+            for d, v in self._state.iteritems():
+                f.write("\0".join([d] + v) + "\n")
+            self._dirty = False
     def add(self, fcl, fco, fca, fd, flags):
         hash = util.sha1(fcl.path()).hexdigest()
         self._repo.opener("merge/" + hash, "w").write(fcl.data())
         self._state[fd] = ['u', hash, fcl.path(), fca.path(),
                            hex(fca.filenode()), fco.path(), flags]
-        self._write()
+        self._dirty = True
     def __contains__(self, dfile):
         return dfile in self._state
     def __getitem__(self, dfile):
@@ -55,7 +60,7 @@
             yield f
     def mark(self, dfile, state):
         self._state[dfile][0] = state
-        self._write()
+        self._dirty = True
     def resolve(self, dfile, wctx, octx):
         if self[dfile] == 'r':
             return 0
@@ -352,6 +357,7 @@
         elif m == "e": # exec
             flags = a[2]
             util.set_flags(repo.wjoin(f), 'l' in flags, 'x' in flags)
+    ms.commit()
     u.progress(_('updating'), None, total=numupdates, unit='files')
 
     return updated, merged, removed, unresolved
--- a/mercurial/minirst.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/mercurial/minirst.py	Fri Sep 24 19:47:50 2010 -0300
@@ -24,6 +24,8 @@
 
 - definition lists
 
+- specific admonitions
+
 - bullet lists (items must start with '-')
 
 - enumerated lists (no autonumbering)
@@ -37,6 +39,8 @@
 
 import re, sys
 import util, encoding
+from i18n import _
+
 
 def replace(text, substs):
     utext = text.decode(encoding.encoding)
@@ -292,12 +296,58 @@
             i += 2
     return blocks
 
+def findadmonitions(blocks):
+    """
+    Makes the type of the block an admonition block if
+    the first line is an admonition directive
+    """
+
+    i = 0
+
+    pattern = (r"\.\. (admonition|attention|caution|danger|error|hint|"
+               r"important|note|tip|warning)::")
+
+    prog = re.compile(pattern, flags=re.IGNORECASE)
+    while i < len(blocks):
+        m = prog.match(blocks[i]['lines'][0])
+        if m:
+            blocks[i]['type'] = 'admonition'
+            admonitiontitle = blocks[i]['lines'][0][3:m.end() - 2].lower()
+
+            firstline = blocks[i]['lines'][0][m.end() + 1:]
+            if firstline != '':
+                blocks[i]['lines'].insert(1, '   ' + firstline + '')
+
+
+            blocks[i]['admonitiontitle'] = admonitiontitle
+            del blocks[i]['lines'][0]
+        i = i + 1
+    return blocks
 
 def formatblock(block, width):
     """Format a block according to width."""
     if width <= 0:
         width = 78
     indent = ' ' * block['indent']
+    if block['type'] == 'admonition':
+        titles = {'attention': _('Attention:'),
+                  'caution': _('Caution:'),
+                  'danger': _('!Danger!')  ,
+                  'error': _('Error:'),
+                  'hint': _('Hint:'),
+                  'important': _('Important:'),
+                  'note': _('Note:'),
+                  'tip': _('Tip:'),
+                  'warning': _('Warning!')}
+
+        admonition = titles[block['admonitiontitle']]
+        hang = len(block['lines'][-1]) - len(block['lines'][-1].lstrip())
+
+        defindent = indent + hang * ' '
+        text = ' '.join(map(str.strip, block['lines']))
+        return '%s\n%s' % (indent + admonition, util.wrap(text, width=width,
+                                           initindent=defindent,
+                                           hangindent=defindent))
     if block['type'] == 'margin':
         return ''
     if block['type'] == 'literal':
@@ -363,6 +413,7 @@
     blocks = splitparagraphs(blocks)
     blocks = updatefieldlists(blocks)
     blocks = addmargins(blocks)
+    blocks = findadmonitions(blocks)
     text = '\n'.join(formatblock(b, width) for b in blocks)
     if keep is None:
         return text
@@ -389,4 +440,5 @@
     blocks = debug(updatefieldlists, blocks)
     blocks = debug(findsections, blocks)
     blocks = debug(addmargins, blocks)
+    blocks = debug(findadmonitions, blocks)
     print '\n'.join(formatblock(b, 30) for b in blocks)
--- a/mercurial/pure/diffhelpers.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/mercurial/pure/diffhelpers.py	Fri Sep 24 19:47:50 2010 -0300
@@ -41,9 +41,9 @@
         hline = l[:-1]
     c = hline[0]
 
-    if c == " " or c == "+":
+    if c in " +":
         b[-1] = hline[1:]
-    if c == " " or c == "-":
+    if c in " -":
         a[-1] = hline
     hunk[-1] = hline
     return 0
--- a/mercurial/templatefilters.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/mercurial/templatefilters.py	Fri Sep 24 19:47:50 2010 -0300
@@ -6,7 +6,7 @@
 # GNU General Public License version 2 or any later version.
 
 import cgi, re, os, time, urllib
-import util, encoding
+import encoding, node, util
 
 def stringify(thing):
     '''turn nested template iterator into string.'''
@@ -216,6 +216,7 @@
     "person": person,
     "rfc822date": lambda x: util.datestr(x, "%a, %d %b %Y %H:%M:%S %1%2"),
     "rfc3339date": lambda x: util.datestr(x, "%Y-%m-%dT%H:%M:%S%1:%2"),
+    "hex": node.hex,
     "short": lambda x: x[:12],
     "shortdate": util.shortdate,
     "stringify": stringify,
--- a/mercurial/url.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/mercurial/url.py	Fri Sep 24 19:47:50 2010 -0300
@@ -486,9 +486,6 @@
         _generic_start_transaction(self, h, req)
         return keepalive.HTTPHandler._start_transaction(self, h, req)
 
-    def __del__(self):
-        self.close_all()
-
 if has_https:
     class BetterHTTPS(httplib.HTTPSConnection):
         send = keepalive.safesend
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/darcs/darcs1/_darcs/inventory	Fri Sep 24 19:47:50 2010 -0300
@@ -0,0 +1,2 @@
+[adda
+test@test.com**20100923184058] 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/darcs/darcs1/_darcs/prefs/author	Fri Sep 24 19:47:50 2010 -0300
@@ -0,0 +1,1 @@
+test@test.com
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/darcs/darcs1/_darcs/prefs/binaries	Fri Sep 24 19:47:50 2010 -0300
@@ -0,0 +1,59 @@
+# Binary file regexps:
+\.png$
+\.PNG$
+\.gz$
+\.GZ$
+\.pdf$
+\.PDF$
+\.jpg$
+\.JPG$
+\.jpeg$
+\.JPEG$
+\.gif$
+\.GIF$
+\.tif$
+\.TIF$
+\.tiff$
+\.TIFF$
+\.pnm$
+\.PNM$
+\.pbm$
+\.PBM$
+\.pgm$
+\.PGM$
+\.ppm$
+\.PPM$
+\.bmp$
+\.BMP$
+\.mng$
+\.MNG$
+\.tar$
+\.TAR$
+\.bz2$
+\.BZ2$
+\.z$
+\.Z$
+\.zip$
+\.ZIP$
+\.jar$
+\.JAR$
+\.so$
+\.SO$
+\.a$
+\.A$
+\.tgz$
+\.TGZ$
+\.mpg$
+\.MPG$
+\.mpeg$
+\.MPEG$
+\.iso$
+\.ISO$
+\.exe$
+\.EXE$
+\.doc$
+\.DOC$
+\.elc$
+\.ELC$
+\.pyc$
+\.PYC$
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/darcs/darcs1/_darcs/prefs/boring	Fri Sep 24 19:47:50 2010 -0300
@@ -0,0 +1,49 @@
+# Boring file regexps:
+\.hi$
+\.hi-boot$
+\.o-boot$
+\.o$
+\.o\.cmd$
+# *.ko files aren't boring by default because they might
+# be Korean translations rather than kernel modules.
+# \.ko$
+\.ko\.cmd$
+\.mod\.c$
+(^|/)\.tmp_versions($|/)
+(^|/)CVS($|/)
+\.cvsignore$
+^\.#
+(^|/)RCS($|/)
+,v$
+(^|/)\.svn($|/)
+\.bzr$
+(^|/)SCCS($|/)
+~$
+(^|/)_darcs($|/)
+\.bak$
+\.BAK$
+\.orig$
+\.rej$
+(^|/)vssver\.scc$
+\.swp$
+(^|/)MT($|/)
+(^|/)\{arch\}($|/)
+(^|/).arch-ids($|/)
+(^|/),
+\.prof$
+(^|/)\.DS_Store$
+(^|/)BitKeeper($|/)
+(^|/)ChangeSet($|/)
+\.py[co]$
+\.elc$
+\.class$
+\#
+(^|/)Thumbs\.db$
+(^|/)autom4te\.cache($|/)
+(^|/)config\.(log|status)$
+^\.depend$
+(^|/)(tags|TAGS)$
+#(^|/)\.[^/]
+(^|/|\.)core$
+\.(obj|a|exe|so|lo|la)$
+^\.darcs-temp-mail$
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/darcs/darcs1/_darcs/pristine/a	Fri Sep 24 19:47:50 2010 -0300
@@ -0,0 +1,1 @@
+a 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/darcs/darcs1/a	Fri Sep 24 19:47:50 2010 -0300
@@ -0,0 +1,1 @@
+a 
--- a/tests/run-tests.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/run-tests.py	Fri Sep 24 19:47:50 2010 -0300
@@ -503,14 +503,31 @@
 
     def rematch(el, l):
         try:
-            # hack to deal with graphlog, which looks like bogus regexes
-            if el.startswith('|'):
-                el = '\\' + el
-            return re.match(el, l)
+            # ensure that the regex matches to the end of the string
+            return re.match(el + r'\Z', l)
         except re.error:
             # el is an invalid regex
             return False
 
+    def globmatch(el, l):
+        # The only supported special characters are * and ?. Escaping is
+        # supported.
+        i, n = 0, len(el)
+        res = ''
+        while i < n:
+            c = el[i]
+            i += 1
+            if c == '\\' and el[i] in '*?\\':
+                res += el[i - 1:i + 1]
+                i += 1
+            elif c == '*':
+                res += '.*'
+            elif c == '?':
+                res += '.'
+            else:
+                res += re.escape(c)
+        return rematch(res, l)
+
     pos = -1
     postout = []
     ret = 0
@@ -530,10 +547,12 @@
 
             if el == l: # perfect match (fast)
                 postout.append("  " + l)
-            elif el and rematch(el, l): # fallback regex match
-                postout.append("  " + el)
-            else: # mismatch - let diff deal with it
-                postout.append("  " + l)
+            elif (el and
+                  (el.endswith(" (re)\n") and rematch(el[:-6] + '\n', l) or
+                   el.endswith(" (glob)\n") and globmatch(el[:-8] + '\n', l))):
+                postout.append("  " + el) # fallback regex/glob match
+            else:
+                postout.append("  " + l) # let diff deal with it
 
     if pos in after:
         postout += after.pop(pos)
--- a/tests/test-586.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-586.t	Fri Sep 24 19:47:50 2010 -0300
@@ -1,4 +1,5 @@
-a test for issue586
+Issue586: removing remote files after merge appears to corrupt the
+dirstate
 
   $ hg init a
   $ cd a
@@ -31,7 +32,8 @@
   C b
   $ cd ..
 
-a test for issue 1433, related to issue586
+Issue1433: Traceback after two unrelated pull, two move, a merge and
+a commit (related to issue586)
 
 create test repos
 
--- a/tests/test-add.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-add.t	Fri Sep 24 19:47:50 2010 -0300
@@ -20,7 +20,7 @@
   $ hg st
   A a
   ? b
-  $ hg add b || echo "failed to add b"
+  $ hg add b
   $ hg st
   A a
   A b
@@ -69,7 +69,7 @@
   $ hg resolve -m a
   $ hg ci -m merge
 
-issue683
+Issue683: peculiarity with hg revert of an removed then added file
 
   $ hg forget a
   $ hg add a
--- a/tests/test-addremove-similar.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-addremove-similar.t	Fri Sep 24 19:47:50 2010 -0300
@@ -69,7 +69,7 @@
 
   $ cd ..
 
-issue 1527
+Issue1527: repeated addremove causes util.Abort
 
   $ hg init rep3; cd rep3
   $ mkdir d
--- a/tests/test-annotate.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-annotate.t	Fri Sep 24 19:47:50 2010 -0300
@@ -207,7 +207,7 @@
   1:2: a
   1:3: a
 
-test issue 589
+Issue589: "undelete" sequence leads to crash
 
 annotate was crashing when trying to --follow something
 
--- a/tests/test-archive.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-archive.t	Fri Sep 24 19:47:50 2010 -0300
@@ -74,23 +74,23 @@
   >                     % (os.environ['HGPORT'], node, archive))
   > sys.stdout.write(f.read())
   > EOF
-  $ python getarchive.py "$TIP" gz | gunzip | tar tf - 2>/dev/null | sed "s/$QTIP/TIP/"
-  test-archive-TIP/.hg_archival.txt
-  test-archive-TIP/bar
-  test-archive-TIP/baz/bletch
-  test-archive-TIP/foo
-  $ python getarchive.py "$TIP" bz2 | bunzip2 | tar tf - 2>/dev/null | sed "s/$QTIP/TIP/"
-  test-archive-TIP/.hg_archival.txt
-  test-archive-TIP/bar
-  test-archive-TIP/baz/bletch
-  test-archive-TIP/foo
+  $ python getarchive.py "$TIP" gz | gunzip | tar tf - 2>/dev/null
+  test-archive-2c0277f05ed4/.hg_archival.txt
+  test-archive-2c0277f05ed4/bar
+  test-archive-2c0277f05ed4/baz/bletch
+  test-archive-2c0277f05ed4/foo
+  $ python getarchive.py "$TIP" bz2 | bunzip2 | tar tf - 2>/dev/null
+  test-archive-2c0277f05ed4/.hg_archival.txt
+  test-archive-2c0277f05ed4/bar
+  test-archive-2c0277f05ed4/baz/bletch
+  test-archive-2c0277f05ed4/foo
   $ python getarchive.py "$TIP" zip > archive.zip
-  $ unzip -t archive.zip | sed "s/$QTIP/TIP/"
+  $ unzip -t archive.zip
   Archive:  archive.zip
-      testing: test-archive-TIP/.hg_archival.txt   OK
-      testing: test-archive-TIP/bar   OK
-      testing: test-archive-TIP/baz/bletch   OK
-      testing: test-archive-TIP/foo   OK
+      testing: test-archive-2c0277f05ed4/.hg_archival.txt   OK
+      testing: test-archive-2c0277f05ed4/bar   OK
+      testing: test-archive-2c0277f05ed4/baz/bletch   OK
+      testing: test-archive-2c0277f05ed4/foo   OK
   No errors detected in compressed data of archive.zip.
 
   $ "$TESTDIR/killdaemons.py"
@@ -109,11 +109,11 @@
   test/foo
 
   $ hg archive -t tgz -p %b-%h test-%h.tar.gz
-  $ gzip -dc test-$QTIP.tar.gz | tar tf - 2>/dev/null | sed "s/$QTIP/TIP/"
-  test-TIP/.hg_archival.txt
-  test-TIP/bar
-  test-TIP/baz/bletch
-  test-TIP/foo
+  $ gzip -dc test-$QTIP.tar.gz | tar tf - 2>/dev/null
+  test-2c0277f05ed4/.hg_archival.txt
+  test-2c0277f05ed4/bar
+  test-2c0277f05ed4/baz/bletch
+  test-2c0277f05ed4/foo
 
   $ hg archive autodetected_test.tar
   $ tar tf autodetected_test.tar
@@ -175,11 +175,11 @@
       testing: test/foo                 OK
   No errors detected in compressed data of test.zip.
 
-  $ hg archive -t tar - | tar tf - 2>/dev/null | sed "s/$QTIP/TIP/"
-  test-TIP/.hg_archival.txt
-  test-TIP/bar
-  test-TIP/baz/bletch
-  test-TIP/foo
+  $ hg archive -t tar - | tar tf - 2>/dev/null
+  test-2c0277f05ed4/.hg_archival.txt
+  test-2c0277f05ed4/bar
+  test-2c0277f05ed4/baz/bletch
+  test-2c0277f05ed4/foo
 
   $ hg archive -r 0 -t tar rev-%r.tar
   $ if [ -f rev-0.tar ]; then
@@ -221,15 +221,15 @@
   [255]
 old file -- date clamped to 1980
 
-  $ touch -d 1975-01-01 old
+  $ touch -t 197501010000 old
   $ hg add old
   $ hg commit -m old
   $ hg archive ../old.zip
   $ unzip -l ../old.zip
   Archive:  ../old.zip
-  \s*Length.*
-  .*-----.*
-  .*147.*80.*00:00.*old/.hg_archival.txt
-  .*0.*80.*00:00.*old/old
-  .*-----.*
-  \s*147\s+2 files
+  \s*Length.* (re)
+  *-----* (glob)
+  *147*80*00:00*old/.hg_archival.txt (glob)
+  *0*80*00:00*old/old (glob)
+  *-----* (glob)
+  \s*147\s+2 files (re)
--- a/tests/test-audit-path.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-audit-path.t	Fri Sep 24 19:47:50 2010 -0300
@@ -78,5 +78,5 @@
   $ hg manifest -r4
   /tmp/test
   $ hg update -Cr4
-  abort: No such file or directory: .*/test-audit-path.t/target//tmp/test
+  abort: No such file or directory: */test-audit-path.t/target//tmp/test (glob)
   [255]
--- a/tests/test-bad-extension.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-bad-extension.t	Fri Sep 24 19:47:50 2010 -0300
@@ -8,8 +8,8 @@
   $ echo "badext2 =" >> $HGRCPATH
 
   $ hg -q help help
-  \*\*\* failed to import extension badext from .*/badext.py: bit bucket overflow
-  \*\*\* failed to import extension badext2: No module named badext2
+  \*\*\* failed to import extension badext from */badext.py: bit bucket overflow (glob)
+  *** failed to import extension badext2: No module named badext2
   hg help [TOPIC]
   
   show help for a given topic or a help overview
--- a/tests/test-bad-pull.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-bad-pull.t	Fri Sep 24 19:47:50 2010 -0300
@@ -2,9 +2,6 @@
   abort: error: Connection refused
   [255]
 
-  $ echo $?
-  0
-
   $ test -d copy || echo copy: No such file or directory
   copy: No such file or directory
 
@@ -27,10 +24,7 @@
   $ sleep 1
 
   $ hg clone http://localhost:$HGPORT/foo copy2 2>&1
-  abort: HTTP Error 404: .*
+  abort: HTTP Error 404: * (glob)
   [255]
 
-  $ echo $?
-  0
-
   $ kill $!
--- a/tests/test-bheads.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-bheads.t	Fri Sep 24 19:47:50 2010 -0300
@@ -133,34 +133,22 @@
   $ heads -r 3 .
   no open branch heads found on branches c (started at 3)
   [1]
-  $ echo $?
-  0
   $ heads -r 2 .
   7: Adding c branch (c)
-  $ echo $?
-  0
 -------
   $ hg update -C 4
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
-  $ echo $?
-  0
 -------
   $ heads -r 3 .
   3: Adding b branch head 1 (b)
-  $ echo $?
-  0
 -------
   $ heads -r 2 .
   6: Merging b branch head 2 and b branch head 3 (b)
   3: Adding b branch head 1 (b)
-  $ echo $?
-  0
 -------
   $ heads -r 7 .
   no open branch heads found on branches b (started at 7)
   [1]
-  $ echo $?
-  0
 
 =======
 
--- a/tests/test-bisect.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-bisect.t	Fri Sep 24 19:47:50 2010 -0300
@@ -1,4 +1,3 @@
-  $ set -e
   $ hg init
 
 
@@ -270,12 +269,15 @@
   date:        Thu Jan 01 00:00:01 1970 +0000
   summary:     msg 1
   
+  $ false
+  [1]
+
 
   $ hg bisect -r
   $ hg bisect -g tip
-  $ hg bisect -b tip || echo error
+  $ hg bisect -b tip
   abort: starting revisions are not directly related
-  error
+  [255]
 
   $ hg bisect -r
   $ hg bisect -g null
@@ -285,7 +287,8 @@
   5cd978ea5149
 
 
-reproduce AssertionError, issue1228 and issue1182
+Issue1228: hg bisect crashes when you skip the last rev in bisection
+Issue1182: hg bisect exception
 
   $ hg bisect -r
   $ hg bisect -b 4
@@ -346,9 +349,9 @@
 test no action
 
   $ hg bisect -r
-  $ hg bisect || echo failure
+  $ hg bisect
   abort: cannot bisect (no known good revisions)
-  failure
+  [255]
 
 
 reproduce AssertionError, issue1445
--- a/tests/test-bookmarks-rebase.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-bookmarks-rebase.t	Fri Sep 24 19:47:50 2010 -0300
@@ -37,7 +37,7 @@
 rebase
 
   $ hg rebase -s two -d one
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
 
   $ hg log
   changeset:   3:9163974d1cb5
--- a/tests/test-bookmarks-strip.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-bookmarks-strip.t	Fri Sep 24 19:47:50 2010 -0300
@@ -50,7 +50,7 @@
 strip to revision 1
 
   $ hg strip 1
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
 
 list bookmarks
 
@@ -58,3 +58,30 @@
    * test                      1:8cf31af87a2b
    * test2                     1:8cf31af87a2b
 
+immediate rollback and reentrancy issue
+
+  $ echo "mq=!" >> $HGRCPATH
+  $ hg init repo
+  $ cd repo
+  $ echo a > a
+  $ hg ci -Am adda
+  adding a
+  $ echo b > b
+  $ hg ci -Am addb
+  adding b
+  $ hg bookmarks markb
+  $ hg rollback
+  rolling back to revision 0 (undo commit)
+
+are you there?
+
+  $ hg bookmarks
+  no bookmarks set
+
+can you be added again?
+
+  $ hg bookmarks markb
+  $ hg bookmarks
+   * markb                     0:07f494440405
+  $ cd ..
+
--- a/tests/test-bundle-r.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-bundle-r.t	Fri Sep 24 19:47:50 2010 -0300
@@ -232,7 +232,8 @@
   $ hg -R test bundle --base 3 -r 3 -r 3 test-bundle-cset-3.hg
   1 changesets found
 
-issue1910
+Issue1910: 'hg bundle --base $head' does not exclude $head from
+result
 
   $ hg -R test bundle --base 7 test-bundle-cset-7.hg
   4 changesets found
--- a/tests/test-bundle-vs-outgoing.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-bundle-vs-outgoing.t	Fri Sep 24 19:47:50 2010 -0300
@@ -27,8 +27,6 @@
   >     hg -q ci -m"rev $revno"
   > }
 
-  $ set -e
-
 setup test repo1
 
   $ hg init repo1
--- a/tests/test-churn.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-churn.t	Fri Sep 24 19:47:50 2010 -0300
@@ -126,7 +126,7 @@
   $ cd ..
 
 
-issue 833: ZeroDivisionError
+Issue833: ZeroDivisionError
 
   $ hg init issue-833
   $ cd issue-833
--- a/tests/test-clone.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-clone.t	Fri Sep 24 19:47:50 2010 -0300
@@ -80,7 +80,7 @@
 
   $ hg clone -q -U --config 'paths.foobar=a#0' foobar f
   $ hg -R f showconfig paths.default
-  .*/a#0
+  */a#0 (glob)
 
 Use --pull:
 
@@ -418,7 +418,8 @@
   $ rm -r ua
 
 
-Testing issue2267:
+Issue2267: Error in 1.6 hg.py: TypeError: 'NoneType' object is not
+iterable in addbranchrevs()
 
   $ cat <<EOF > simpleclone.py
   > from mercurial import ui, hg
--- a/tests/test-command-template.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-command-template.t	Fri Sep 24 19:47:50 2010 -0300
@@ -548,7 +548,7 @@
   	[1e4e1b8f71e0]
   
 
-Issue 2130:
+Issue2130: xml output for 'hg heads' is malformed
 
   $ hg heads --style changelog
   2020-01-01  test  <test>
@@ -1298,7 +1298,8 @@
   $ cd ..
 
 
-Style path expansion (issue1948):
+Style path expansion: issue1948 - ui.style option doesn't work on OSX
+if it is a relative path
 
   $ mkdir -p home/styles
 
--- a/tests/test-commit.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-commit.t	Fri Sep 24 19:47:50 2010 -0300
@@ -204,6 +204,8 @@
   $ cd ..
   $ cd ..
 
+Issue1049: Hg permits partial commit of merge without warning
+
   $ cd ..
   $ hg init issue1049
   $ cd issue1049
--- a/tests/test-committer.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-committer.t	Fri Sep 24 19:47:50 2010 -0300
@@ -53,7 +53,7 @@
   [255]
   $ rm .hg/hgrc
   $ hg commit -m commit-1 2>&1
-  No username found, using '[^']*' instead
+  No username found, using '[^']*' instead (re)
 
   $ echo space > asdf
   $ hg commit -u ' ' -m commit-1
--- a/tests/test-convert-darcs	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-convert-darcs	Fri Sep 24 19:47:50 2010 -0300
@@ -17,6 +17,9 @@
     exit 80
 fi
 
+echo '% try converting darcs1 repository'
+hg convert -s darcs "$TESTDIR/darcs/darcs1" 2>&1 | grep darcs-1.0
+
 echo % initialize darcs repo
 mkdir darcs-repo
 cd darcs-repo
--- a/tests/test-convert-darcs.out	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-convert-darcs.out	Fri Sep 24 19:47:50 2010 -0300
@@ -1,3 +1,5 @@
+% try converting darcs1 repository
+darcs-1.0 repository format is unsupported, please upgrade
 % initialize darcs repo
 Finished recording patch 'p0'
 % branch and update
--- a/tests/test-convert-svn-branches	Fri Sep 24 02:17:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-#!/bin/sh
-
-"$TESTDIR/hghave" svn svn-bindings || exit 80
-
-echo "[extensions]" >> $HGRCPATH
-echo "convert = " >> $HGRCPATH
-echo "graphlog =" >> $HGRCPATH
-
-svnadmin create svn-repo
-cat "$TESTDIR/svn/branches.svndump" | svnadmin load svn-repo > /dev/null
-
-echo % convert trunk and branches
-cat >branchmap <<EOF
-old3 newbranch
-EOF
-hg convert --branchmap=branchmap --datesort -r 10 svn-repo A-hg
-
-echo % convert again
-hg convert --branchmap=branchmap --datesort svn-repo A-hg
-
-cd A-hg
-hg glog --template 'branch={branches} {rev} {desc|firstline} files: {files}\n'
-hg branches | sed 's/:.*/:/'
-hg tags -q
-cd ..
-
-echo '% test hg failing to call itself'
-HG=foobar hg convert svn-repo B-hg 2>&1 | grep itself
-
--- a/tests/test-convert-svn-branches.out	Fri Sep 24 02:17:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-% convert trunk and branches
-initializing destination A-hg repository
-scanning source...
-sorting...
-converting...
-10 init projA
-9 hello
-8 branch trunk, remove c and dir
-7 change a
-6 change b
-5 move and update c
-4 move and update c
-3 change b again
-2 move to old2
-1 move back to old
-0 last change to a
-% convert again
-scanning source...
-sorting...
-converting...
-0 branch trunk@1 into old3
-o  branch=newbranch 11 branch trunk@1 into old3 files:
-|
-| o  branch= 10 last change to a files: a
-| |
-| | o  branch=old 9 move back to old files:
-| | |
-| | o  branch=old2 8 move to old2 files:
-| | |
-| | o  branch=old 7 change b again files: b
-| | |
-| o |  branch= 6 move and update c files: b
-| | |
-| | o  branch=old 5 move and update c files: c
-| | |
-| | o  branch=old 4 change b files: b
-| | |
-| o |  branch= 3 change a files: a
-| | |
-| | o  branch=old 2 branch trunk, remove c and dir files: c
-| |/
-| o  branch= 1 hello files: a b c dir/e
-|/
-o  branch= 0 init projA files:
-
-newbranch                     11:
-default                       10:
-old                            9:
-old2                           8:
-tip
-% test hg failing to call itself
-abort: Mercurial failed to run itself, check hg executable is in PATH
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-svn-branches.t	Fri Sep 24 19:47:50 2010 -0300
@@ -0,0 +1,86 @@
+
+  $ "$TESTDIR/hghave" svn svn-bindings || exit 80
+
+  $ cat > $HGRCPATH <<EOF
+  > [extensions]
+  > convert = 
+  > graphlog =
+  > EOF
+
+  $ svnadmin create svn-repo
+  $ svnadmin load -q svn-repo < "$TESTDIR/svn/branches.svndump"
+
+Convert trunk and branches
+
+  $ cat > branchmap <<EOF
+  > old3 newbranch
+  > EOF
+  $ hg convert --branchmap=branchmap --datesort -r 10 svn-repo A-hg
+  initializing destination A-hg repository
+  scanning source...
+  sorting...
+  converting...
+  10 init projA
+  9 hello
+  8 branch trunk, remove c and dir
+  7 change a
+  6 change b
+  5 move and update c
+  4 move and update c
+  3 change b again
+  2 move to old2
+  1 move back to old
+  0 last change to a
+
+Convert again
+
+  $ hg convert --branchmap=branchmap --datesort svn-repo A-hg
+  scanning source...
+  sorting...
+  converting...
+  0 branch trunk@1 into old3
+
+  $ cd A-hg
+  $ hg glog --template 'branch={branches} {rev} {desc|firstline} files: {files}\n'
+  o  branch=newbranch 11 branch trunk@1 into old3 files:
+  |
+  | o  branch= 10 last change to a files: a
+  | |
+  | | o  branch=old 9 move back to old files:
+  | | |
+  | | o  branch=old2 8 move to old2 files:
+  | | |
+  | | o  branch=old 7 change b again files: b
+  | | |
+  | o |  branch= 6 move and update c files: b
+  | | |
+  | | o  branch=old 5 move and update c files: c
+  | | |
+  | | o  branch=old 4 change b files: b
+  | | |
+  | o |  branch= 3 change a files: a
+  | | |
+  | | o  branch=old 2 branch trunk, remove c and dir files: c
+  | |/
+  | o  branch= 1 hello files: a b c dir/e
+  |/
+  o  branch= 0 init projA files:
+  
+
+  $ hg branches
+  newbranch                     11:08fca3ff8634
+  default                       10:098988aa63ba
+  old                            9:b308f345079b
+  old2                           8:49f2336c7b8b (inactive)
+  $ hg tags -q
+  tip
+  $ cd ..
+
+Test hg failing to call itself
+
+  $ HG=foobar hg convert svn-repo B-hg
+  * (glob)
+  initializing destination B-hg repository
+  abort: Mercurial failed to run itself, check hg executable is in PATH
+  [255]
+
--- a/tests/test-convert-svn-encoding	Fri Sep 24 02:17:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-"$TESTDIR/hghave" svn svn-bindings || exit 80
-
-echo "[extensions]" >> $HGRCPATH
-echo "convert = " >> $HGRCPATH
-
-svnadmin create svn-repo
-cat "$TESTDIR/svn/encoding.svndump" | svnadmin load svn-repo > /dev/null
-
-echo '% convert while testing all possible outputs'
-hg --debug convert svn-repo A-hg > /dev/null
-cd A-hg
-hg up
-echo '% check tags are in UTF-8'
-python -c "print '\n'.join([('%r' % l) for l in file('.hgtags', 'rb').readlines()])"
-cd ..
--- a/tests/test-convert-svn-encoding.out	Fri Sep 24 02:17:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-% convert while testing all possible outputs
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-% check tags are in UTF-8
-'221c3fdaf24df5f14c0a64c597581e2eacfb47bb branch\xc3\xa9e\n'
-'7a40952c2db29cf00d9e31df3749e98d8a4bdcbf branch\xc3\xa9\n'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-svn-encoding.t	Fri Sep 24 19:47:50 2010 -0300
@@ -0,0 +1,135 @@
+
+  $ "$TESTDIR/hghave" svn svn-bindings || exit 80
+
+  $ cat > $HGRCPATH <<EOF
+  > [extensions]
+  > convert = 
+  > graphlog =
+  > EOF
+
+  $ svnadmin create svn-repo
+  $ svnadmin load -q svn-repo < "$TESTDIR/svn/encoding.svndump"
+
+Convert while testing all possible outputs
+
+  $ hg --debug convert svn-repo A-hg
+  initializing destination A-hg repository
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo (glob)
+  run hg sink pre-conversion action
+  scanning source...
+  found trunk at 'trunk'
+  found tags at 'tags'
+  found branches at 'branches'
+  found branch branché at 5
+  found branch branchée at 6
+  scanning: 1 revisions
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo/trunk (glob)
+  fetching revision log for "/trunk" from 4 to 0
+  parsing revision 4 (2 changes)
+  parsing revision 3 (4 changes)
+  parsing revision 2 (3 changes)
+  parsing revision 1 (3 changes)
+  no copyfrom path, don't know what to do.
+  '/branches' is not under '/trunk', ignoring
+  '/tags' is not under '/trunk', ignoring
+  scanning: 2 revisions
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo/branches/branch%C3%A9 (glob)
+  fetching revision log for "/branches/branché" from 5 to 0
+  parsing revision 5 (1 changes)
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo (glob)
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo/branches/branch%C3%A9 (glob)
+  found parent of branch /branches/branché at 4: /trunk
+  scanning: 3 revisions
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo/branches/branch%C3%A9e (glob)
+  fetching revision log for "/branches/branchée" from 6 to 0
+  parsing revision 6 (1 changes)
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo (glob)
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo/branches/branch%C3%A9e (glob)
+  found parent of branch /branches/branchée at 5: /branches/branché
+  scanning: 4 revisions
+  scanning: 5 revisions
+  scanning: 6 revisions
+  sorting...
+  converting...
+  5 init projA
+  source: svn:afeb9c47-92ff-4c0c-9f72-e1f6eb8ac9af/trunk@1
+  converting: 0/6 revisions (0.00%)
+  4 hello
+  source: svn:afeb9c47-92ff-4c0c-9f72-e1f6eb8ac9af/trunk@2
+  converting: 1/6 revisions (16.67%)
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo/trunk (glob)
+  scanning paths: /trunk/à 0/3 (0.00%)
+  scanning paths: /trunk/à/é 1/3 (33.33%)
+  scanning paths: /trunk/é 2/3 (66.67%)
+  à/é
+  getting files: à/é 1/2 (50.00%)
+  é
+  getting files: é 2/2 (100.00%)
+  3 copy files
+  source: svn:afeb9c47-92ff-4c0c-9f72-e1f6eb8ac9af/trunk@3
+  converting: 2/6 revisions (33.33%)
+  scanning paths: /trunk/à 0/4 (0.00%)
+  gone from -1
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo (glob)
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo/trunk (glob)
+  scanning paths: /trunk/è 1/4 (25.00%)
+  copied to è from é@2
+  scanning paths: /trunk/é 2/4 (50.00%)
+  gone from -1
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo (glob)
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo/trunk (glob)
+  scanning paths: /trunk/ù 3/4 (75.00%)
+  mark /trunk/ù came from à:2
+  à/é
+  getting files: à/é 1/4 (25.00%)
+  è
+  getting files: è 2/4 (50.00%)
+   è: copy é:6b67ccefd5ce6de77e7ead4f5292843a0255329f
+  é
+  getting files: é 3/4 (75.00%)
+  ù/é
+  getting files: ù/é 4/4 (100.00%)
+   ù/é: copy à/é:a9092a3d84a37b9993b5c73576f6de29b7ea50f6
+  2 remove files
+  source: svn:afeb9c47-92ff-4c0c-9f72-e1f6eb8ac9af/trunk@4
+  converting: 3/6 revisions (50.00%)
+  scanning paths: /trunk/è 0/2 (0.00%)
+  gone from -1
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo (glob)
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo/trunk (glob)
+  scanning paths: /trunk/ù 1/2 (50.00%)
+  gone from -1
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo (glob)
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo/trunk (glob)
+  è
+  getting files: è 1/2 (50.00%)
+  ù/é
+  getting files: ù/é 2/2 (100.00%)
+  1 branch to branch?
+  source: svn:afeb9c47-92ff-4c0c-9f72-e1f6eb8ac9af/branches/branch?@5
+  converting: 4/6 revisions (66.67%)
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo/branches/branch%C3%A9 (glob)
+  scanning paths: /branches/branché 0/1 (0.00%)
+  0 branch to branch?e
+  source: svn:afeb9c47-92ff-4c0c-9f72-e1f6eb8ac9af/branches/branch?e@6
+  converting: 5/6 revisions (83.33%)
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo/branches/branch%C3%A9e (glob)
+  scanning paths: /branches/branchée 0/1 (0.00%)
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo (glob)
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo/branches/branch%C3%A9e (glob)
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo (glob)
+  reparent to file://*/test-convert-svn-encoding.t/svn-repo/branches/branch%C3%A9e (glob)
+  updating tags
+  .hgtags
+  run hg sink post-conversion action
+  $ cd A-hg
+  $ hg up
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+Check tags are in UTF-8
+
+  $ python -c "print '\n'.join([('%r' % l) for l in file('.hgtags', 'rb').readlines()])"
+  '221c3fdaf24df5f14c0a64c597581e2eacfb47bb branch\xc3\xa9e\n'
+  '7a40952c2db29cf00d9e31df3749e98d8a4bdcbf branch\xc3\xa9\n'
+
+  $ cd ..
--- a/tests/test-convert-svn-move	Fri Sep 24 02:17:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-#!/bin/sh
-
-"$TESTDIR/hghave" svn svn-bindings || exit 80
-
-fix_path()
-{
-    tr '\\' /
-}
-
-echo "[extensions]" >> $HGRCPATH
-echo "convert = " >> $HGRCPATH
-echo "hgext.graphlog =" >> $HGRCPATH
-
-svnadmin create svn-repo
-cat "$TESTDIR/svn/move.svndump" | svnadmin load svn-repo > /dev/null
-
-svnpath=`pwd | fix_path`
-# SVN wants all paths to start with a slash. Unfortunately,
-# Windows ones don't. Handle that.
-expr "$svnpath" : "\/" > /dev/null
-if [ $? -ne 0 ]; then
-    svnpath="/$svnpath"
-fi
-svnurl="file://$svnpath/svn-repo"
-
-echo % convert trunk and branches
-hg convert --datesort "$svnurl"/subproject A-hg
-
-cd A-hg
-hg glog --template '{rev} {desc|firstline} files: {files}\n'
-echo '% check move copy records'
-hg st --rev 12:13 --copies
-echo '% check branches'
-hg branches | sed 's/:.*/:/'
-cd ..
-
-mkdir test-replace
-cd test-replace
-svnadmin create svn-repo
-cat "$TESTDIR/svn/replace.svndump" | svnadmin load svn-repo > /dev/null
-
-echo '% convert files being replaced by directories'
-hg convert svn-repo hg-repo
-cd hg-repo
-echo '% manifest before'
-hg -v manifest -r 1
-echo '% manifest after clobber1'
-hg -v manifest -r 2
-echo '% manifest after clobber2'
-hg -v manifest -r 3
-echo '% try updating'
-hg up -qC default
-cd ..
-
-echo '% test convert progress bar'
-
-echo "progress=" >> $HGRCPATH
-echo "[progress]" >> $HGRCPATH
-echo "assume-tty=1" >> $HGRCPATH
-echo "delay=0" >> $HGRCPATH
-echo "refresh=0" >> $HGRCPATH
-
-cat > filtercr.py <<EOF
-import sys, re
-for line in sys.stdin:
-    line = re.sub(r'\r+[^\n]', lambda m: '\n' + m.group()[-1:], line)
-    sys.stdout.write(line)
-EOF
-
-hg convert svn-repo hg-progress 2>&1 | python filtercr.py
--- a/tests/test-convert-svn-move.out	Fri Sep 24 02:17:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-% convert trunk and branches
-initializing destination A-hg repository
-scanning source...
-sorting...
-converting...
-13 createtrunk
-12 moved1
-11 moved1
-10 moved2
-9 changeb and rm d2
-8 changeb and rm d2
-7 moved1again
-6 moved1again
-5 copyfilefrompast
-4 copydirfrompast
-3 add d3
-2 copy dir and remove subdir
-1 add d4old
-0 rename d4old into d4new
-o  13 rename d4old into d4new files: d4new/g d4old/g
-|
-o  12 add d4old files: d4old/g
-|
-o  11 copy dir and remove subdir files: d3/d31/e d4/d31/e d4/f
-|
-o  10 add d3 files: d3/d31/e d3/f
-|
-o  9 copydirfrompast files: d2/d
-|
-o  8 copyfilefrompast files: d
-|
-o  7 moved1again files: d1/b d1/c
-|
-| o  6 moved1again files:
-| |
-o |  5 changeb and rm d2 files: d1/b d2/d
-| |
-| o  4 changeb and rm d2 files: b
-| |
-o |  3 moved2 files: d2/d
-| |
-o |  2 moved1 files: d1/b d1/c
-| |
-| o  1 moved1 files: b c
-|
-o  0 createtrunk files:
-
-% check move copy records
-A d4new/g
-  d4old/g
-R d4old/g
-% check branches
-default                       13:
-d1                             6:
-% convert files being replaced by directories
-initializing destination hg-repo repository
-scanning source...
-sorting...
-converting...
-3 initial
-2 clobber symlink
-1 clobber1
-0 clobber2
-% manifest before
-644   a
-644   d/b
-644 @ dlink
-644 @ dlink2
-644   dlink3
-% manifest after clobber1
-644   a/b
-644   d/b
-644   dlink/b
-644 @ dlink2
-644   dlink3
-% manifest after clobber2
-644   a/b
-644   d/b
-644   dlink/b
-644 @ dlink2
-644 @ dlink3
-% try updating
-% test convert progress bar
-
-scanning [ <=>                                                              ] 1
-scanning [  <=>                                                             ] 2
-scanning [   <=>                                                            ] 3
-scanning [    <=>                                                           ] 4
-                                                                                
-converting [                                                              ] 0/4
-getting files [==========>                                                ] 1/5
-getting files [======================>                                    ] 2/5
-getting files [==================================>                        ] 3/5
-getting files [==============================================>            ] 4/5
-getting files [==========================================================>] 5/5
-                                                                                
-converting [==============>                                               ] 1/4
-scanning paths [                                                          ] 0/1
-                                                                                
-getting files [==========================================================>] 1/1
-                                                                                
-converting [==============================>                               ] 2/4
-scanning paths [                                                          ] 0/2
-scanning paths [============================>                             ] 1/2
-                                                                                
-getting files [=============>                                             ] 1/4
-getting files [============================>                              ] 2/4
-getting files [===========================================>               ] 3/4
-getting files [==========================================================>] 4/4
-                                                                                
-converting [=============================================>                ] 3/4
-scanning paths [                                                          ] 0/1
-                                                                                
-getting files [==========================================================>] 1/1
-                                                                                
-initializing destination hg-progress repository
-scanning source...
-sorting...
-converting...
-3 initial
-2 clobber symlink
-1 clobber1
-0 clobber2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-svn-move.t	Fri Sep 24 19:47:50 2010 -0300
@@ -0,0 +1,202 @@
+
+  $ "$TESTDIR/hghave" svn svn-bindings || exit 80
+
+  $ fixpath()
+  > {
+  >     tr '\\' /
+  > }
+  $ cat > $HGRCPATH <<EOF
+  > [extensions]
+  > convert = 
+  > graphlog =
+  > EOF
+
+  $ svnadmin create svn-repo
+  $ svnadmin load -q svn-repo < "$TESTDIR/svn/move.svndump"
+  $ svnpath=`pwd | fixpath`
+
+SVN wants all paths to start with a slash. Unfortunately,
+Windows ones don't. Handle that.
+
+  $ expr "$svnpath" : "\/" > /dev/null
+  > if [ $? -ne 0 ]; then
+  >   svnpath="/$svnpath"
+  > fi
+  > svnurl="file://$svnpath/svn-repo"
+
+Convert trunk and branches
+
+  $ hg convert --datesort "$svnurl"/subproject A-hg
+  initializing destination A-hg repository
+  scanning source...
+  sorting...
+  converting...
+  13 createtrunk
+  12 moved1
+  11 moved1
+  10 moved2
+  9 changeb and rm d2
+  8 changeb and rm d2
+  7 moved1again
+  6 moved1again
+  5 copyfilefrompast
+  4 copydirfrompast
+  3 add d3
+  2 copy dir and remove subdir
+  1 add d4old
+  0 rename d4old into d4new
+
+  $ cd A-hg
+  $ hg glog --template '{rev} {desc|firstline} files: {files}\n'
+  o  13 rename d4old into d4new files: d4new/g d4old/g
+  |
+  o  12 add d4old files: d4old/g
+  |
+  o  11 copy dir and remove subdir files: d3/d31/e d4/d31/e d4/f
+  |
+  o  10 add d3 files: d3/d31/e d3/f
+  |
+  o  9 copydirfrompast files: d2/d
+  |
+  o  8 copyfilefrompast files: d
+  |
+  o  7 moved1again files: d1/b d1/c
+  |
+  | o  6 moved1again files:
+  | |
+  o |  5 changeb and rm d2 files: d1/b d2/d
+  | |
+  | o  4 changeb and rm d2 files: b
+  | |
+  o |  3 moved2 files: d2/d
+  | |
+  o |  2 moved1 files: d1/b d1/c
+  | |
+  | o  1 moved1 files: b c
+  |
+  o  0 createtrunk files:
+  
+
+Check move copy records
+
+  $ hg st --rev 12:13 --copies
+  A d4new/g
+    d4old/g
+  R d4old/g
+
+Check branches
+
+  $ hg branches
+  default                       13:* (glob)
+  d1                             6:* (glob)
+  $ cd ..
+
+  $ mkdir test-replace
+  $ cd test-replace
+  $ svnadmin create svn-repo
+  $ svnadmin load -q svn-repo < "$TESTDIR/svn/replace.svndump"
+
+Convert files being replaced by directories
+
+  $ hg convert svn-repo hg-repo
+  initializing destination hg-repo repository
+  scanning source...
+  sorting...
+  converting...
+  3 initial
+  2 clobber symlink
+  1 clobber1
+  0 clobber2
+
+  $ cd hg-repo
+
+Manifest before
+
+  $ hg -v manifest -r 1
+  644   a
+  644   d/b
+  644 @ dlink
+  644 @ dlink2
+  644   dlink3
+
+Manifest after clobber1
+
+  $ hg -v manifest -r 2
+  644   a/b
+  644   d/b
+  644   dlink/b
+  644 @ dlink2
+  644   dlink3
+
+Manifest after clobber2
+
+  $ hg -v manifest -r 3
+  644   a/b
+  644   d/b
+  644   dlink/b
+  644 @ dlink2
+  644 @ dlink3
+
+Try updating
+
+  $ hg up -qC default
+  $ cd ..
+
+Test convert progress bar'
+
+  $ cat >> $HGRCPATH <<EOF
+  > [extensions]
+  > progress = 
+  > [progress]
+  > assume-tty = 1
+  > delay = 0
+  > refresh = 0
+  > EOF
+  $ cat > filtercr.py <<EOF
+  > import sys, re
+  > for line in sys.stdin:
+  >     line = re.sub(r'\r+[^\n]', lambda m: '\n' + m.group()[-1:], line)
+  >     sys.stdout.write(line)
+  > EOF
+
+  $ hg convert svn-repo hg-progress 2>&1 | python filtercr.py
+  
+  scanning [ <=>                                                              ] 1
+  scanning [  <=>                                                             ] 2
+  scanning [   <=>                                                            ] 3
+  scanning [    <=>                                                           ] 4
+                                                                                  
+  converting [                                                              ] 0/4
+  getting files [==========>                                                ] 1/5
+  getting files [======================>                                    ] 2/5
+  getting files [==================================>                        ] 3/5
+  getting files [==============================================>            ] 4/5
+  getting files [==========================================================>] 5/5
+                                                                                  
+  converting [==============>                                               ] 1/4
+  scanning paths [                                                          ] 0/1
+                                                                                  
+  getting files [==========================================================>] 1/1
+                                                                                  
+  converting [==============================>                               ] 2/4
+  scanning paths [                                                          ] 0/2
+  scanning paths [============================>                             ] 1/2
+                                                                                  
+  getting files [=============>                                             ] 1/4
+  getting files [============================>                              ] 2/4
+  getting files [===========================================>               ] 3/4
+  getting files [==========================================================>] 4/4
+                                                                                  
+  converting [=============================================>                ] 3/4
+  scanning paths [                                                          ] 0/1
+                                                                                  
+  getting files [==========================================================>] 1/1
+                                                                                  
+  initializing destination hg-progress repository
+  scanning source...
+  sorting...
+  converting...
+  3 initial
+  2 clobber symlink
+  1 clobber1
+  0 clobber2
--- a/tests/test-convert-svn-sink	Fri Sep 24 02:17:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-#!/bin/sh
-
-"$TESTDIR/hghave" svn svn-bindings no-outer-repo || exit 80
-
-fixpath()
-{
-    tr '\\' /
-}
-
-svnupanddisplay()
-{
-    (
-       cd $1;
-       svn up;
-       svn st -v | fixpath | sed 's/  */ /g'
-       limit=''
-       if [ $2 -gt 0 ]; then
-           limit="--limit=$2"
-       fi
-       svn log --xml -v $limit | fixpath | sed 's,<date>.*,<date/>,' | grep -v 'kind="'
-    )
-}
-
-echo "[extensions]" >> $HGRCPATH
-echo "convert = " >> $HGRCPATH
-
-hg init a
-
-echo a > a/a
-mkdir -p a/d1/d2
-echo b > a/d1/d2/b
-ln -s a/missing a/link
-echo % add
-hg --cwd a ci -d '0 0' -A -m 'add a file'
-
-"$TESTDIR/svn-safe-append.py" a a/a
-echo % modify
-hg --cwd a ci -d '1 0' -m 'modify a file'
-hg --cwd a tip -q
-
-hg convert -d svn a
-svnupanddisplay a-hg-wc 2
-ls a a-hg-wc
-cmp a/a a-hg-wc/a && echo same || echo different
-
-hg --cwd a mv a b
-hg --cwd a mv link newlink
-echo % rename
-hg --cwd a ci -d '2 0' -m 'rename a file'
-hg --cwd a tip -q
-
-hg convert -d svn a
-svnupanddisplay a-hg-wc 1
-ls a a-hg-wc
-
-hg --cwd a cp b c
-echo % copy
-hg --cwd a ci -d '3 0' -m 'copy a file'
-hg --cwd a tip -q
-
-hg convert -d svn a
-svnupanddisplay a-hg-wc 1
-ls a a-hg-wc
-
-hg --cwd a rm b
-echo % remove
-hg --cwd a ci -d '4 0' -m 'remove a file'
-hg --cwd a tip -q
-
-hg convert -d svn a
-svnupanddisplay a-hg-wc 1
-ls a a-hg-wc
-
-chmod +x a/c
-echo % executable
-hg --cwd a ci -d '5 0' -m 'make a file executable'
-hg --cwd a tip -q
-
-hg convert -d svn a
-svnupanddisplay a-hg-wc 1
-test -x a-hg-wc/c && echo executable || echo not executable
-
-echo % executable in new directory
-
-rm -rf a a-hg a-hg-wc
-hg init a
-
-mkdir a/d1
-echo a > a/d1/a
-chmod +x a/d1/a
-hg --cwd a ci -d '0 0' -A -m 'add executable file in new directory'
-
-hg convert -d svn a
-svnupanddisplay a-hg-wc 1
-test -x a-hg-wc/d1/a && echo executable || echo not executable
-
-echo % copy to new directory
-
-mkdir a/d2
-hg --cwd a cp d1/a d2/a
-hg --cwd a ci -d '1 0' -A -m 'copy file to new directory'
-
-hg convert -d svn a
-svnupanddisplay a-hg-wc 1
-
-echo % branchy history
-
-hg init b
-echo base > b/b
-hg --cwd b ci -d '0 0' -Ambase
-
-"$TESTDIR/svn-safe-append.py" left-1 b/b
-echo left-1 > b/left-1
-hg --cwd b ci -d '1 0' -Amleft-1
-
-"$TESTDIR/svn-safe-append.py" left-2 b/b
-echo left-2 > b/left-2
-hg --cwd b ci -d '2 0' -Amleft-2
-
-hg --cwd b up 0
-
-"$TESTDIR/svn-safe-append.py" right-1 b/b
-echo right-1 > b/right-1
-hg --cwd b ci -d '3 0' -Amright-1
-
-"$TESTDIR/svn-safe-append.py" right-2 b/b
-echo right-2 > b/right-2
-hg --cwd b ci -d '4 0' -Amright-2
-
-hg --cwd b up -C 2
-hg --cwd b merge
-hg --cwd b revert -r 2 b
-hg resolve -m b
-hg --cwd b ci -d '5 0' -m 'merge'
-
-hg convert -d svn b
-echo % expect 4 changes
-svnupanddisplay b-hg-wc 0
-
-echo % tags are not supported, but must not break conversion
-
-rm -rf a a-hg a-hg-wc
-hg init a
-echo a > a/a
-hg --cwd a ci -d '0 0' -A -m 'Add file a'
-hg --cwd a tag -d '1 0' -m 'Tagged as v1.0' v1.0
-
-hg convert -d svn a
-svnupanddisplay a-hg-wc 2
-rm -rf a a-hg a-hg-wc
--- a/tests/test-convert-svn-sink.out	Fri Sep 24 02:17:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,397 +0,0 @@
-% add
-adding a
-adding d1/d2/b
-adding link
-% modify
-1:8231f652da37
-assuming destination a-hg
-initializing svn repository 'a-hg'
-initializing svn working copy 'a-hg-wc'
-scanning source...
-sorting...
-converting...
-1 add a file
-0 modify a file
-At revision 2.
- 2 2 test .
- 2 2 test a
- 2 1 test d1
- 2 1 test d1/d2
- 2 1 test d1/d2/b
- 2 1 test link
-<?xml version="1.0"?>
-<log>
-<logentry
-   revision="2">
-<author>test</author>
-<date/>
-<paths>
-<path
-   action="M">/a</path>
-</paths>
-<msg>modify a file</msg>
-</logentry>
-<logentry
-   revision="1">
-<author>test</author>
-<date/>
-<paths>
-<path
-   action="A">/a</path>
-<path
-   action="A">/d1</path>
-<path
-   action="A">/d1/d2</path>
-<path
-   action="A">/d1/d2/b</path>
-<path
-   action="A">/link</path>
-</paths>
-<msg>add a file</msg>
-</logentry>
-</log>
-a:
-a
-d1
-link
-
-a-hg-wc:
-a
-d1
-link
-same
-% rename
-2:a67e26ccec09
-assuming destination a-hg
-initializing svn working copy 'a-hg-wc'
-scanning source...
-sorting...
-converting...
-0 rename a file
-At revision 3.
- 3 3 test .
- 3 3 test b
- 3 1 test d1
- 3 1 test d1/d2
- 3 1 test d1/d2/b
- 3 3 test newlink
-<?xml version="1.0"?>
-<log>
-<logentry
-   revision="3">
-<author>test</author>
-<date/>
-<paths>
-<path
-   action="D">/a</path>
-<path
-   copyfrom-path="/a"
-   copyfrom-rev="2"
-   action="A">/b</path>
-<path
-   copyfrom-path="/link"
-   copyfrom-rev="2"
-   action="A">/newlink</path>
-<path
-   action="D">/link</path>
-</paths>
-<msg>rename a file</msg>
-</logentry>
-</log>
-a:
-b
-d1
-newlink
-
-a-hg-wc:
-b
-d1
-newlink
-% copy
-3:0cf087b9ab02
-assuming destination a-hg
-initializing svn working copy 'a-hg-wc'
-scanning source...
-sorting...
-converting...
-0 copy a file
-At revision 4.
- 4 4 test .
- 4 3 test b
- 4 4 test c
- 4 1 test d1
- 4 1 test d1/d2
- 4 1 test d1/d2/b
- 4 3 test newlink
-<?xml version="1.0"?>
-<log>
-<logentry
-   revision="4">
-<author>test</author>
-<date/>
-<paths>
-<path
-   copyfrom-path="/b"
-   copyfrom-rev="3"
-   action="A">/c</path>
-</paths>
-<msg>copy a file</msg>
-</logentry>
-</log>
-a:
-b
-c
-d1
-newlink
-
-a-hg-wc:
-b
-c
-d1
-newlink
-% remove
-4:07b2e34a5b17
-assuming destination a-hg
-initializing svn working copy 'a-hg-wc'
-scanning source...
-sorting...
-converting...
-0 remove a file
-At revision 5.
- 5 5 test .
- 5 4 test c
- 5 1 test d1
- 5 1 test d1/d2
- 5 1 test d1/d2/b
- 5 3 test newlink
-<?xml version="1.0"?>
-<log>
-<logentry
-   revision="5">
-<author>test</author>
-<date/>
-<paths>
-<path
-   action="D">/b</path>
-</paths>
-<msg>remove a file</msg>
-</logentry>
-</log>
-a:
-c
-d1
-newlink
-
-a-hg-wc:
-c
-d1
-newlink
-% executable
-5:31093672760b
-assuming destination a-hg
-initializing svn working copy 'a-hg-wc'
-scanning source...
-sorting...
-converting...
-0 make a file executable
-At revision 6.
- 6 6 test .
- 6 6 test c
- 6 1 test d1
- 6 1 test d1/d2
- 6 1 test d1/d2/b
- 6 3 test newlink
-<?xml version="1.0"?>
-<log>
-<logentry
-   revision="6">
-<author>test</author>
-<date/>
-<paths>
-<path
-   action="M">/c</path>
-</paths>
-<msg>make a file executable</msg>
-</logentry>
-</log>
-executable
-% executable in new directory
-adding d1/a
-assuming destination a-hg
-initializing svn repository 'a-hg'
-initializing svn working copy 'a-hg-wc'
-scanning source...
-sorting...
-converting...
-0 add executable file in new directory
-At revision 1.
- 1 1 test .
- 1 1 test d1
- 1 1 test d1/a
-<?xml version="1.0"?>
-<log>
-<logentry
-   revision="1">
-<author>test</author>
-<date/>
-<paths>
-<path
-   action="A">/d1</path>
-<path
-   action="A">/d1/a</path>
-</paths>
-<msg>add executable file in new directory</msg>
-</logentry>
-</log>
-executable
-% copy to new directory
-assuming destination a-hg
-initializing svn working copy 'a-hg-wc'
-scanning source...
-sorting...
-converting...
-0 copy file to new directory
-At revision 2.
- 2 2 test .
- 2 1 test d1
- 2 1 test d1/a
- 2 2 test d2
- 2 2 test d2/a
-<?xml version="1.0"?>
-<log>
-<logentry
-   revision="2">
-<author>test</author>
-<date/>
-<paths>
-<path
-   action="A">/d2</path>
-<path
-   copyfrom-path="/d1/a"
-   copyfrom-rev="1"
-   action="A">/d2/a</path>
-</paths>
-<msg>copy file to new directory</msg>
-</logentry>
-</log>
-% branchy history
-adding b
-adding left-1
-adding left-2
-1 files updated, 0 files merged, 2 files removed, 0 files unresolved
-adding right-1
-created new head
-adding right-2
-3 files updated, 0 files merged, 2 files removed, 0 files unresolved
-merging b
-warning: conflicts during merge.
-merging b failed!
-2 files updated, 0 files merged, 0 files removed, 1 files unresolved
-use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
-assuming destination b-hg
-initializing svn repository 'b-hg'
-initializing svn working copy 'b-hg-wc'
-scanning source...
-sorting...
-converting...
-5 base
-4 left-1
-3 left-2
-2 right-1
-1 right-2
-0 merge
-% expect 4 changes
-At revision 4.
- 4 4 test .
- 4 3 test b
- 4 2 test left-1
- 4 3 test left-2
- 4 4 test right-1
- 4 4 test right-2
-<?xml version="1.0"?>
-<log>
-<logentry
-   revision="4">
-<author>test</author>
-<date/>
-<paths>
-<path
-   action="A">/right-1</path>
-<path
-   action="A">/right-2</path>
-</paths>
-<msg>merge</msg>
-</logentry>
-<logentry
-   revision="3">
-<author>test</author>
-<date/>
-<paths>
-<path
-   action="M">/b</path>
-<path
-   action="A">/left-2</path>
-</paths>
-<msg>left-2</msg>
-</logentry>
-<logentry
-   revision="2">
-<author>test</author>
-<date/>
-<paths>
-<path
-   action="M">/b</path>
-<path
-   action="A">/left-1</path>
-</paths>
-<msg>left-1</msg>
-</logentry>
-<logentry
-   revision="1">
-<author>test</author>
-<date/>
-<paths>
-<path
-   action="A">/b</path>
-</paths>
-<msg>base</msg>
-</logentry>
-</log>
-% tags are not supported, but must not break conversion
-adding a
-assuming destination a-hg
-initializing svn repository 'a-hg'
-initializing svn working copy 'a-hg-wc'
-scanning source...
-sorting...
-converting...
-1 Add file a
-0 Tagged as v1.0
-writing Subversion tags is not yet implemented
-At revision 2.
- 2 2 test .
- 2 1 test a
- 2 2 test .hgtags
-<?xml version="1.0"?>
-<log>
-<logentry
-   revision="2">
-<author>test</author>
-<date/>
-<paths>
-<path
-   action="A">/.hgtags</path>
-</paths>
-<msg>Tagged as v1.0</msg>
-</logentry>
-<logentry
-   revision="1">
-<author>test</author>
-<date/>
-<paths>
-<path
-   action="A">/a</path>
-</paths>
-<msg>Add file a</msg>
-</logentry>
-</log>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-svn-sink.t	Fri Sep 24 19:47:50 2010 -0300
@@ -0,0 +1,548 @@
+
+  $ "$TESTDIR/hghave" svn svn-bindings no-outer-repo || exit 80
+
+  $ fixpath()
+  > {
+  >     tr '\\' /
+  > }
+  $ svnupanddisplay()
+  > {
+  >     (
+  >        cd $1;
+  >        svn up;
+  >        svn st -v | fixpath | sed 's/  */ /g'
+  >        limit=''
+  >        if [ $2 -gt 0 ]; then
+  >            limit="--limit=$2"
+  >        fi
+  >        svn log --xml -v $limit \
+  >            | fixpath \
+  >            | sed 's,<date>.*,<date/>,' \
+  >            | grep -v 'kind="'
+  >     )
+  > }
+
+  $ cat > $HGRCPATH <<EOF
+  > [extensions]
+  > convert = 
+  > graphlog =
+  > EOF
+
+  $ hg init a
+
+Add
+
+  $ echo a > a/a
+  $ mkdir -p a/d1/d2
+  $ echo b > a/d1/d2/b
+  $ ln -s a/missing a/link
+  $ hg --cwd a ci -d '0 0' -A -m 'add a file'
+  adding a
+  adding d1/d2/b
+  adding link
+
+Modify
+
+  $ "$TESTDIR/svn-safe-append.py" a a/a
+  $ hg --cwd a ci -d '1 0' -m 'modify a file'
+  $ hg --cwd a tip -q
+  1:8231f652da37
+
+  $ hg convert -d svn a
+  assuming destination a-hg
+  initializing svn repository 'a-hg'
+  initializing svn working copy 'a-hg-wc'
+  scanning source...
+  sorting...
+  converting...
+  1 add a file
+  0 modify a file
+  $ svnupanddisplay a-hg-wc 2
+  At revision 2.
+   2 2 test .
+   2 2 test a
+   2 1 test d1
+   2 1 test d1/d2
+   2 1 test d1/d2/b
+   2 1 test link
+  <?xml version="1.0"?>
+  <log>
+  <logentry
+     revision="2">
+  <author>test</author>
+  <date/>
+  <paths>
+  <path
+     action="M">/a</path>
+  </paths>
+  <msg>modify a file</msg>
+  </logentry>
+  <logentry
+     revision="1">
+  <author>test</author>
+  <date/>
+  <paths>
+  <path
+     action="A">/a</path>
+  <path
+     action="A">/d1</path>
+  <path
+     action="A">/d1/d2</path>
+  <path
+     action="A">/d1/d2/b</path>
+  <path
+     action="A">/link</path>
+  </paths>
+  <msg>add a file</msg>
+  </logentry>
+  </log>
+  $ ls a a-hg-wc
+  a:
+  a
+  d1
+  link
+  
+  a-hg-wc:
+  a
+  d1
+  link
+  $ cmp a/a a-hg-wc/a
+
+Rename
+
+  $ hg --cwd a mv a b
+  $ hg --cwd a mv link newlink
+
+  $ hg --cwd a ci -d '2 0' -m 'rename a file'
+  $ hg --cwd a tip -q
+  2:a67e26ccec09
+
+  $ hg convert -d svn a
+  assuming destination a-hg
+  initializing svn working copy 'a-hg-wc'
+  scanning source...
+  sorting...
+  converting...
+  0 rename a file
+  $ svnupanddisplay a-hg-wc 1
+  At revision 3.
+   3 3 test .
+   3 3 test b
+   3 1 test d1
+   3 1 test d1/d2
+   3 1 test d1/d2/b
+   3 3 test newlink
+  <?xml version="1.0"?>
+  <log>
+  <logentry
+     revision="3">
+  <author>test</author>
+  <date/>
+  <paths>
+  <path
+     action="D">/a</path>
+  <path
+     copyfrom-path="/a"
+     copyfrom-rev="2"
+     action="A">/b</path>
+  <path
+     copyfrom-path="/link"
+     copyfrom-rev="2"
+     action="A">/newlink</path>
+  <path
+     action="D">/link</path>
+  </paths>
+  <msg>rename a file</msg>
+  </logentry>
+  </log>
+  $ ls a a-hg-wc
+  a:
+  b
+  d1
+  newlink
+  
+  a-hg-wc:
+  b
+  d1
+  newlink
+
+Copy
+
+  $ hg --cwd a cp b c
+
+  $ hg --cwd a ci -d '3 0' -m 'copy a file'
+  $ hg --cwd a tip -q
+  3:0cf087b9ab02
+
+  $ hg convert -d svn a
+  assuming destination a-hg
+  initializing svn working copy 'a-hg-wc'
+  scanning source...
+  sorting...
+  converting...
+  0 copy a file
+  $ svnupanddisplay a-hg-wc 1
+  At revision 4.
+   4 4 test .
+   4 3 test b
+   4 4 test c
+   4 1 test d1
+   4 1 test d1/d2
+   4 1 test d1/d2/b
+   4 3 test newlink
+  <?xml version="1.0"?>
+  <log>
+  <logentry
+     revision="4">
+  <author>test</author>
+  <date/>
+  <paths>
+  <path
+     copyfrom-path="/b"
+     copyfrom-rev="3"
+     action="A">/c</path>
+  </paths>
+  <msg>copy a file</msg>
+  </logentry>
+  </log>
+  $ ls a a-hg-wc
+  a:
+  b
+  c
+  d1
+  newlink
+  
+  a-hg-wc:
+  b
+  c
+  d1
+  newlink
+
+  $ hg --cwd a rm b
+  $ echo % remove
+  % remove
+  $ hg --cwd a ci -d '4 0' -m 'remove a file'
+  $ hg --cwd a tip -q
+  4:07b2e34a5b17
+
+  $ hg convert -d svn a
+  assuming destination a-hg
+  initializing svn working copy 'a-hg-wc'
+  scanning source...
+  sorting...
+  converting...
+  0 remove a file
+  $ svnupanddisplay a-hg-wc 1
+  At revision 5.
+   5 5 test .
+   5 4 test c
+   5 1 test d1
+   5 1 test d1/d2
+   5 1 test d1/d2/b
+   5 3 test newlink
+  <?xml version="1.0"?>
+  <log>
+  <logentry
+     revision="5">
+  <author>test</author>
+  <date/>
+  <paths>
+  <path
+     action="D">/b</path>
+  </paths>
+  <msg>remove a file</msg>
+  </logentry>
+  </log>
+  $ ls a a-hg-wc
+  a:
+  c
+  d1
+  newlink
+  
+  a-hg-wc:
+  c
+  d1
+  newlink
+
+Exectutable
+
+  $ chmod +x a/c
+  $ hg --cwd a ci -d '5 0' -m 'make a file executable'
+  $ hg --cwd a tip -q
+  5:31093672760b
+
+  $ hg convert -d svn a
+  assuming destination a-hg
+  initializing svn working copy 'a-hg-wc'
+  scanning source...
+  sorting...
+  converting...
+  0 make a file executable
+  $ svnupanddisplay a-hg-wc 1
+  At revision 6.
+   6 6 test .
+   6 6 test c
+   6 1 test d1
+   6 1 test d1/d2
+   6 1 test d1/d2/b
+   6 3 test newlink
+  <?xml version="1.0"?>
+  <log>
+  <logentry
+     revision="6">
+  <author>test</author>
+  <date/>
+  <paths>
+  <path
+     action="M">/c</path>
+  </paths>
+  <msg>make a file executable</msg>
+  </logentry>
+  </log>
+  $ test -x a-hg-wc/c
+
+Executable in new directory
+
+  $ rm -rf a a-hg a-hg-wc
+  $ hg init a
+
+  $ mkdir a/d1
+  $ echo a > a/d1/a
+  $ chmod +x a/d1/a
+  $ hg --cwd a ci -d '0 0' -A -m 'add executable file in new directory'
+  adding d1/a
+
+  $ hg convert -d svn a
+  assuming destination a-hg
+  initializing svn repository 'a-hg'
+  initializing svn working copy 'a-hg-wc'
+  scanning source...
+  sorting...
+  converting...
+  0 add executable file in new directory
+  $ svnupanddisplay a-hg-wc 1
+  At revision 1.
+   1 1 test .
+   1 1 test d1
+   1 1 test d1/a
+  <?xml version="1.0"?>
+  <log>
+  <logentry
+     revision="1">
+  <author>test</author>
+  <date/>
+  <paths>
+  <path
+     action="A">/d1</path>
+  <path
+     action="A">/d1/a</path>
+  </paths>
+  <msg>add executable file in new directory</msg>
+  </logentry>
+  </log>
+  $ test -x a-hg-wc/d1/a
+
+Copy to new directory
+
+  $ mkdir a/d2
+  $ hg --cwd a cp d1/a d2/a
+  $ hg --cwd a ci -d '1 0' -A -m 'copy file to new directory'
+
+  $ hg convert -d svn a
+  assuming destination a-hg
+  initializing svn working copy 'a-hg-wc'
+  scanning source...
+  sorting...
+  converting...
+  0 copy file to new directory
+  $ svnupanddisplay a-hg-wc 1
+  At revision 2.
+   2 2 test .
+   2 1 test d1
+   2 1 test d1/a
+   2 2 test d2
+   2 2 test d2/a
+  <?xml version="1.0"?>
+  <log>
+  <logentry
+     revision="2">
+  <author>test</author>
+  <date/>
+  <paths>
+  <path
+     action="A">/d2</path>
+  <path
+     copyfrom-path="/d1/a"
+     copyfrom-rev="1"
+     action="A">/d2/a</path>
+  </paths>
+  <msg>copy file to new directory</msg>
+  </logentry>
+  </log>
+
+Branchy history
+
+  $ hg init b
+  $ echo base > b/b
+  $ hg --cwd b ci -d '0 0' -Ambase
+  adding b
+
+  $ "$TESTDIR/svn-safe-append.py" left-1 b/b
+  $ echo left-1 > b/left-1
+  $ hg --cwd b ci -d '1 0' -Amleft-1
+  adding left-1
+
+  $ "$TESTDIR/svn-safe-append.py" left-2 b/b
+  $ echo left-2 > b/left-2
+  $ hg --cwd b ci -d '2 0' -Amleft-2
+  adding left-2
+
+  $ hg --cwd b up 0
+  1 files updated, 0 files merged, 2 files removed, 0 files unresolved
+
+  $ "$TESTDIR/svn-safe-append.py" right-1 b/b
+  $ echo right-1 > b/right-1
+  $ hg --cwd b ci -d '3 0' -Amright-1
+  adding right-1
+  created new head
+
+  $ "$TESTDIR/svn-safe-append.py" right-2 b/b
+  $ echo right-2 > b/right-2
+  $ hg --cwd b ci -d '4 0' -Amright-2
+  adding right-2
+
+  $ hg --cwd b up -C 2
+  3 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ hg --cwd b merge
+  merging b
+  warning: conflicts during merge.
+  merging b failed!
+  2 files updated, 0 files merged, 0 files removed, 1 files unresolved
+  use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
+  [1]
+  $ hg --cwd b revert -r 2 b
+  $ hg resolve -m b
+  $ hg --cwd b ci -d '5 0' -m 'merge'
+
+Expect 4 changes
+
+  $ hg convert -d svn b
+  assuming destination b-hg
+  initializing svn repository 'b-hg'
+  initializing svn working copy 'b-hg-wc'
+  scanning source...
+  sorting...
+  converting...
+  5 base
+  4 left-1
+  3 left-2
+  2 right-1
+  1 right-2
+  0 merge
+
+  $ svnupanddisplay b-hg-wc 0
+  At revision 4.
+   4 4 test .
+   4 3 test b
+   4 2 test left-1
+   4 3 test left-2
+   4 4 test right-1
+   4 4 test right-2
+  <?xml version="1.0"?>
+  <log>
+  <logentry
+     revision="4">
+  <author>test</author>
+  <date/>
+  <paths>
+  <path
+     action="A">/right-1</path>
+  <path
+     action="A">/right-2</path>
+  </paths>
+  <msg>merge</msg>
+  </logentry>
+  <logentry
+     revision="3">
+  <author>test</author>
+  <date/>
+  <paths>
+  <path
+     action="M">/b</path>
+  <path
+     action="A">/left-2</path>
+  </paths>
+  <msg>left-2</msg>
+  </logentry>
+  <logentry
+     revision="2">
+  <author>test</author>
+  <date/>
+  <paths>
+  <path
+     action="M">/b</path>
+  <path
+     action="A">/left-1</path>
+  </paths>
+  <msg>left-1</msg>
+  </logentry>
+  <logentry
+     revision="1">
+  <author>test</author>
+  <date/>
+  <paths>
+  <path
+     action="A">/b</path>
+  </paths>
+  <msg>base</msg>
+  </logentry>
+  </log>
+
+Tags are not supported, but must not break conversion
+
+  $ rm -rf a a-hg a-hg-wc
+  $ hg init a
+  $ echo a > a/a
+  $ hg --cwd a ci -d '0 0' -A -m 'Add file a'
+  adding a
+  $ hg --cwd a tag -d '1 0' -m 'Tagged as v1.0' v1.0
+
+  $ hg convert -d svn a
+  assuming destination a-hg
+  initializing svn repository 'a-hg'
+  initializing svn working copy 'a-hg-wc'
+  scanning source...
+  sorting...
+  converting...
+  1 Add file a
+  0 Tagged as v1.0
+  writing Subversion tags is not yet implemented
+  $ svnupanddisplay a-hg-wc 2
+  At revision 2.
+   2 2 test .
+   2 1 test a
+   2 2 test .hgtags
+  <?xml version="1.0"?>
+  <log>
+  <logentry
+     revision="2">
+  <author>test</author>
+  <date/>
+  <paths>
+  <path
+     action="A">/.hgtags</path>
+  </paths>
+  <msg>Tagged as v1.0</msg>
+  </logentry>
+  <logentry
+     revision="1">
+  <author>test</author>
+  <date/>
+  <paths>
+  <path
+     action="A">/a</path>
+  </paths>
+  <msg>Add file a</msg>
+  </logentry>
+  </log>
+  $ rm -rf a a-hg a-hg-wc
--- a/tests/test-convert-svn-source	Fri Sep 24 02:17:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-#!/bin/sh
-
-"$TESTDIR/hghave" svn svn-bindings || exit 80
-
-fix_path()
-{
-    tr '\\' /
-}
-
-echo "[extensions]" >> $HGRCPATH
-echo "convert = " >> $HGRCPATH
-echo 'graphlog =' >> $HGRCPATH
-
-svnadmin create svn-repo
-
-svnpath=`pwd | fix_path`
-# SVN wants all paths to start with a slash. Unfortunately,
-# Windows ones don't. Handle that.
-expr "$svnpath" : "\/" > /dev/null
-if [ $? -ne 0 ]; then
-    svnpath="/$svnpath"
-fi
-
-echo "# now tests that it works with trunk/tags layout, but no branches yet"
-echo
-echo % initial svn import
-mkdir projB
-cd projB
-mkdir trunk
-mkdir tags
-cd ..
-
-svnurl="file://$svnpath/svn-repo/proj%20B"
-svn import -m "init projB" projB "$svnurl" | fix_path
-
-
-echo % update svn repository
-svn co "$svnurl"/trunk B | fix_path
-cd B
-echo hello > 'letter .txt'
-svn add 'letter .txt'
-svn ci -m hello
-
-"$TESTDIR/svn-safe-append.py" world 'letter .txt'
-svn ci -m world
-
-svn copy -m "tag v0.1" "$svnurl"/trunk "$svnurl"/tags/v0.1
-
-"$TESTDIR/svn-safe-append.py" 'nice day today!' 'letter .txt'
-svn ci -m "nice day"
-cd ..
-
-echo % convert to hg once
-hg convert "$svnurl" B-hg
-
-echo % update svn repository again
-cd B
-"$TESTDIR/svn-safe-append.py" "see second letter" 'letter .txt'
-echo "nice to meet you" > letter2.txt
-svn add letter2.txt
-svn ci -m "second letter"
-
-svn copy -m "tag v0.2" "$svnurl"/trunk "$svnurl"/tags/v0.2
-
-"$TESTDIR/svn-safe-append.py" "blah-blah-blah" letter2.txt
-svn ci -m "work in progress"
-cd ..
-
-########################################
-
-echo % test incremental conversion
-hg convert "$svnurl" B-hg
-
-cd B-hg
-hg glog --template '{rev} {desc|firstline} files: {files}\n'
-hg tags -q
-cd ..
-
-echo % test filemap
-echo 'include letter2.txt' > filemap
-hg convert --filemap filemap "$svnurl"/trunk fmap
-hg glog -R fmap --template '{rev} {desc|firstline} files: {files}\n'
-
-echo % test stop revision
-hg convert --rev 1 "$svnurl"/trunk stoprev
-# Check convert_revision extra-records.
-# This is also the only place testing more than one extra field
-# in a revision.
-hg --cwd stoprev tip --debug | grep extra | sed 's/=.*/=/'
--- a/tests/test-convert-svn-source.out	Fri Sep 24 02:17:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-# now tests that it works with trunk/tags layout, but no branches yet
-
-% initial svn import
-Adding         projB/trunk
-Adding         projB/tags
-
-Committed revision 1.
-% update svn repository
-Checked out revision 1.
-A         letter .txt
-Adding         letter .txt
-Transmitting file data .
-Committed revision 2.
-Sending        letter .txt
-Transmitting file data .
-Committed revision 3.
-
-Committed revision 4.
-Sending        letter .txt
-Transmitting file data .
-Committed revision 5.
-% convert to hg once
-initializing destination B-hg repository
-scanning source...
-sorting...
-converting...
-3 init projB
-2 hello
-1 world
-0 nice day
-updating tags
-% update svn repository again
-A         letter2.txt
-Sending        letter .txt
-Adding         letter2.txt
-Transmitting file data ..
-Committed revision 6.
-
-Committed revision 7.
-Sending        letter2.txt
-Transmitting file data .
-Committed revision 8.
-% test incremental conversion
-scanning source...
-sorting...
-converting...
-1 second letter
-0 work in progress
-updating tags
-o  7 update tags files: .hgtags
-|
-o  6 work in progress files: letter2.txt
-|
-o  5 second letter files: letter .txt letter2.txt
-|
-o  4 update tags files: .hgtags
-|
-o  3 nice day files: letter .txt
-|
-o  2 world files: letter .txt
-|
-o  1 hello files: letter .txt
-|
-o  0 init projB files:
-
-tip
-v0.2
-v0.1
-% test filemap
-initializing destination fmap repository
-scanning source...
-sorting...
-converting...
-5 init projB
-4 hello
-3 world
-2 nice day
-1 second letter
-0 work in progress
-o  1 work in progress files: letter2.txt
-|
-o  0 second letter files: letter2.txt
-
-% test stop revision
-initializing destination stoprev repository
-scanning source...
-sorting...
-converting...
-0 init projB
-extra:       branch=
-extra:       convert_revision=
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-svn-source.t	Fri Sep 24 19:47:50 2010 -0300
@@ -0,0 +1,178 @@
+
+  $ "$TESTDIR/hghave" svn svn-bindings || exit 80
+
+  $ fixpath()
+  > {
+  >     tr '\\' /
+  > }
+  $ cat > $HGRCPATH <<EOF
+  > [extensions]
+  > convert = 
+  > graphlog =
+  > EOF
+
+  $ svnadmin create svn-repo
+  $ svnpath=`pwd | fixpath`
+
+
+  $ expr "$svnpath" : "\/" > /dev/null
+  > if [ $? -ne 0 ]; then
+  >   svnpath="/$svnpath"
+  > fi
+  > svnurl="file://$svnpath/svn-repo"
+
+Now test that it works with trunk/tags layout, but no branches yet.
+
+Initial svn import
+
+  $ mkdir projB
+  $ cd projB
+  $ mkdir trunk
+  $ mkdir tags
+  $ cd ..
+
+  $ svnurl="file://$svnpath/svn-repo/proj%20B"
+  $ svn import -m "init projB" projB "$svnurl" | fixpath
+  Adding         projB/trunk
+  Adding         projB/tags
+  
+  Committed revision 1.
+
+Update svn repository
+
+  $ svn co "$svnurl"/trunk B | fixpath
+  Checked out revision 1.
+  $ cd B
+  $ echo hello > 'letter .txt'
+  $ svn add 'letter .txt'
+  A         letter .txt
+  $ svn ci -m hello
+  Adding         letter .txt
+  Transmitting file data .
+  Committed revision 2.
+
+  $ "$TESTDIR/svn-safe-append.py" world 'letter .txt'
+  $ svn ci -m world
+  Sending        letter .txt
+  Transmitting file data .
+  Committed revision 3.
+
+  $ svn copy -m "tag v0.1" "$svnurl"/trunk "$svnurl"/tags/v0.1
+  
+  Committed revision 4.
+
+  $ "$TESTDIR/svn-safe-append.py" 'nice day today!' 'letter .txt'
+  $ svn ci -m "nice day"
+  Sending        letter .txt
+  Transmitting file data .
+  Committed revision 5.
+  $ cd ..
+
+Convert to hg once
+
+  $ hg convert "$svnurl" B-hg
+  initializing destination B-hg repository
+  scanning source...
+  sorting...
+  converting...
+  3 init projB
+  2 hello
+  1 world
+  0 nice day
+  updating tags
+
+Update svn repository again
+
+  $ cd B
+  $ "$TESTDIR/svn-safe-append.py" "see second letter" 'letter .txt'
+  $ echo "nice to meet you" > letter2.txt
+  $ svn add letter2.txt
+  A         letter2.txt
+  $ svn ci -m "second letter"
+  Sending        letter .txt
+  Adding         letter2.txt
+  Transmitting file data ..
+  Committed revision 6.
+
+  $ svn copy -m "tag v0.2" "$svnurl"/trunk "$svnurl"/tags/v0.2
+  
+  Committed revision 7.
+
+  $ "$TESTDIR/svn-safe-append.py" "blah-blah-blah" letter2.txt
+  $ svn ci -m "work in progress"
+  Sending        letter2.txt
+  Transmitting file data .
+  Committed revision 8.
+  $ cd ..
+
+########################################
+
+Test incremental conversion
+
+  $ hg convert "$svnurl" B-hg
+  scanning source...
+  sorting...
+  converting...
+  1 second letter
+  0 work in progress
+  updating tags
+
+  $ cd B-hg
+  $ hg glog --template '{rev} {desc|firstline} files: {files}\n'
+  o  7 update tags files: .hgtags
+  |
+  o  6 work in progress files: letter2.txt
+  |
+  o  5 second letter files: letter .txt letter2.txt
+  |
+  o  4 update tags files: .hgtags
+  |
+  o  3 nice day files: letter .txt
+  |
+  o  2 world files: letter .txt
+  |
+  o  1 hello files: letter .txt
+  |
+  o  0 init projB files:
+  
+  $ hg tags -q
+  tip
+  v0.2
+  v0.1
+  $ cd ..
+
+Test filemap
+  $ echo 'include letter2.txt' > filemap
+  $ hg convert --filemap filemap "$svnurl"/trunk fmap
+  initializing destination fmap repository
+  scanning source...
+  sorting...
+  converting...
+  5 init projB
+  4 hello
+  3 world
+  2 nice day
+  1 second letter
+  0 work in progress
+  $ hg glog -R fmap --template '{rev} {desc|firstline} files: {files}\n'
+  o  1 work in progress files: letter2.txt
+  |
+  o  0 second letter files: letter2.txt
+  
+
+Test stop revision
+  $ hg convert --rev 1 "$svnurl"/trunk stoprev
+  initializing destination stoprev repository
+  scanning source...
+  sorting...
+  converting...
+  0 init projB
+
+Check convert_revision extra-records.
+This is also the only place testing more than one extra field in a revision.
+
+  $ cd stoprev
+  $ hg tip --debug | grep extra
+  extra:       branch=default
+  extra:       convert_revision=svn:........-....-....-....-............/proj B/trunk@1 (re)
+  $ cd ..
--- a/tests/test-convert-svn-startrev	Fri Sep 24 02:17:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-#!/bin/sh
-
-"$TESTDIR/hghave" svn svn-bindings || exit 80
-
-echo "[extensions]" >> $HGRCPATH
-echo "convert = " >> $HGRCPATH
-echo "graphlog =" >> $HGRCPATH
-
-svnadmin create svn-repo
-cat "$TESTDIR/svn/startrev.svndump" | svnadmin load svn-repo > /dev/null
-
-convert()
-{
-    startrev=$1
-    repopath=A-r$startrev-hg
-    hg convert --config convert.svn.startrev=$startrev \
-        --config convert.svn.trunk=branches/branch1 \
-        --config convert.svn.branches="  " \
-        --config convert.svn.tags= \
-        --datesort svn-repo $repopath
-    hg -R $repopath glog --template '{rev} {desc|firstline} files: {files}\n'
-    echo
-}
-
-echo % convert before branching point
-convert 3
-echo % convert before branching point
-convert 4
-echo % convert at branching point
-convert 5
-echo % convert last revision only
-convert 6
--- a/tests/test-convert-svn-startrev.out	Fri Sep 24 02:17:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-% convert before branching point
-initializing destination A-r3-hg repository
-scanning source...
-sorting...
-converting...
-3 removeb
-2 changeaa
-1 branch, changeaaa
-0 addc,changeaaaa
-o  3 addc,changeaaaa files: a c
-|
-o  2 branch, changeaaa files: a
-|
-o  1 changeaa files: a
-|
-o  0 removeb files: a
-
-
-% convert before branching point
-initializing destination A-r4-hg repository
-scanning source...
-sorting...
-converting...
-2 changeaa
-1 branch, changeaaa
-0 addc,changeaaaa
-o  2 addc,changeaaaa files: a c
-|
-o  1 branch, changeaaa files: a
-|
-o  0 changeaa files: a
-
-
-% convert at branching point
-initializing destination A-r5-hg repository
-scanning source...
-sorting...
-converting...
-1 branch, changeaaa
-0 addc,changeaaaa
-o  1 addc,changeaaaa files: a c
-|
-o  0 branch, changeaaa files: a
-
-
-% convert last revision only
-initializing destination A-r6-hg repository
-scanning source...
-sorting...
-converting...
-0 addc,changeaaaa
-o  0 addc,changeaaaa files: a c
-
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-svn-startrev.t	Fri Sep 24 19:47:50 2010 -0300
@@ -0,0 +1,90 @@
+
+  $ "$TESTDIR/hghave" svn svn-bindings || exit 80
+
+  $ cat > $HGRCPATH <<EOF
+  > [extensions]
+  > convert = 
+  > graphlog =
+  > EOF
+  $ convert()
+  > {
+  >     startrev=$1
+  >     repopath=A-r$startrev-hg
+  >     hg convert --config convert.svn.startrev=$startrev \
+  >         --config convert.svn.trunk=branches/branch1 \
+  >         --config convert.svn.branches="  " \
+  >         --config convert.svn.tags= \
+  >         --datesort svn-repo $repopath
+  >     hg -R $repopath glog \
+  >         --template '{rev} {desc|firstline} files: {files}\n'
+  >     echo
+  > }
+
+  $ svnadmin create svn-repo
+  $ svnadmin load -q svn-repo < "$TESTDIR/svn/startrev.svndump"
+
+Convert before branching point
+
+  $ convert 3
+  initializing destination A-r3-hg repository
+  scanning source...
+  sorting...
+  converting...
+  3 removeb
+  2 changeaa
+  1 branch, changeaaa
+  0 addc,changeaaaa
+  o  3 addc,changeaaaa files: a c
+  |
+  o  2 branch, changeaaa files: a
+  |
+  o  1 changeaa files: a
+  |
+  o  0 removeb files: a
+  
+  
+
+Convert before branching point
+
+  $ convert 4
+  initializing destination A-r4-hg repository
+  scanning source...
+  sorting...
+  converting...
+  2 changeaa
+  1 branch, changeaaa
+  0 addc,changeaaaa
+  o  2 addc,changeaaaa files: a c
+  |
+  o  1 branch, changeaaa files: a
+  |
+  o  0 changeaa files: a
+  
+  
+
+Convert at branching point
+
+  $ convert 5
+  initializing destination A-r5-hg repository
+  scanning source...
+  sorting...
+  converting...
+  1 branch, changeaaa
+  0 addc,changeaaaa
+  o  1 addc,changeaaaa files: a c
+  |
+  o  0 branch, changeaaa files: a
+  
+  
+
+Convert last revision only
+
+  $ convert 6
+  initializing destination A-r6-hg repository
+  scanning source...
+  sorting...
+  converting...
+  0 addc,changeaaaa
+  o  0 addc,changeaaaa files: a c
+  
+  
--- a/tests/test-convert-svn-tags	Fri Sep 24 02:17:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-"$TESTDIR/hghave" svn svn-bindings || exit 80
-
-echo "[extensions]" >> $HGRCPATH
-echo "convert = " >> $HGRCPATH
-echo "graphlog =" >> $HGRCPATH
-
-svnadmin create svn-repo
-cat "$TESTDIR/svn/tags.svndump" | svnadmin load svn-repo > /dev/null
-
-echo % convert
-hg convert --datesort svn-repo A-hg
-
-cd A-hg
-hg glog --template '{rev} {desc|firstline} tags: {tags}\n'
-hg tags | sed 's/:.*/:/'
-cd ..
-
-echo % convert without tags
-hg convert --datesort --config convert.svn.tags= svn-repo A-notags-hg
-hg -R A-notags-hg tags -q
-
--- a/tests/test-convert-svn-tags.out	Fri Sep 24 02:17:54 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-% convert
-initializing destination A-hg repository
-scanning source...
-sorting...
-converting...
-5 init projA
-4 adda
-3 changea
-2 changea2
-1 changea3
-0 changea
-updating tags
-o  6 update tags tags: tip
-|
-o  5 changea tags: trunk.goodtag
-|
-o  4 changea3 tags:
-|
-o  3 changea2 tags: trunk.v1
-|
-o  2 changea tags:
-|
-o  1 adda tags:
-|
-o  0 init projA tags:
-
-tip                                6:
-trunk.goodtag                      5:
-trunk.v1                           3:
-% convert without tags
-initializing destination A-notags-hg repository
-scanning source...
-sorting...
-converting...
-5 init projA
-4 adda
-3 changea
-2 changea2
-1 changea3
-0 changea
-tip
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-svn-tags.t	Fri Sep 24 19:47:50 2010 -0300
@@ -0,0 +1,67 @@
+
+  $ "$TESTDIR/hghave" svn svn-bindings || exit 80
+
+  $ cat > $HGRCPATH <<EOF
+  > [extensions]
+  > convert = 
+  > graphlog =
+  > EOF
+
+  $ svnadmin create svn-repo
+  $ svnadmin load -q svn-repo < "$TESTDIR/svn/tags.svndump"
+
+Convert
+  $ hg convert --datesort svn-repo A-hg
+  initializing destination A-hg repository
+  scanning source...
+  sorting...
+  converting...
+  5 init projA
+  4 adda
+  3 changea
+  2 changea2
+  1 changea3
+  0 changea
+  updating tags
+
+  $ cd A-hg
+  $ hg glog --template '{rev} {desc|firstline} tags: {tags}\n'
+  o  6 update tags tags: tip
+  |
+  o  5 changea tags: trunk.goodtag
+  |
+  o  4 changea3 tags:
+  |
+  o  3 changea2 tags: trunk.v1
+  |
+  o  2 changea tags:
+  |
+  o  1 adda tags:
+  |
+  o  0 init projA tags:
+  
+
+  $ hg tags -q
+  tip
+  trunk.goodtag
+  trunk.v1
+
+  $ cd ..
+
+Convert without tags
+
+  $ hg convert --datesort --config convert.svn.tags= svn-repo A-notags-hg
+  initializing destination A-notags-hg repository
+  scanning source...
+  sorting...
+  converting...
+  5 init projA
+  4 adda
+  3 changea
+  2 changea2
+  1 changea3
+  0 changea
+
+  $ hg -R A-notags-hg tags -q
+  tip
+
--- a/tests/test-default-push.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-default-push.t	Fri Sep 24 19:47:50 2010 -0300
@@ -18,7 +18,7 @@
 Push should push to 'default' when 'default-push' not set:
 
   $ hg --cwd b push
-  pushing to .*/a
+  pushing to */a (glob)
   searching for changes
   adding changesets
   adding manifests
@@ -29,7 +29,7 @@
 
   $ echo 'default-push = ../c' >> b/.hg/hgrc
   $ hg --cwd b push
-  pushing to .*/c
+  pushing to */c (glob)
   searching for changes
   adding changesets
   adding manifests
--- a/tests/test-dirstate.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-dirstate.t	Fri Sep 24 19:47:50 2010 -0300
@@ -16,7 +16,8 @@
   moving a/b/c/d/z to z/b/c/d/z
   $ cd ..
 
------- issue1790
+Issue1790: dirstate entry locked into unset if file mtime is set into
+the future
 
 Prepare test repo:
 
--- a/tests/test-export.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-export.t	Fri Sep 24 19:47:50 2010 -0300
@@ -81,13 +81,13 @@
 Exporting 4 changesets to a file:
 
   $ hg export -o export_internal 1 2 3 4
-  $ grep HG export_internal | wc -l | sed -e 's/^ *//'
-  4
+  $ grep HG export_internal | wc -l
+  \s*4 (re)
 
 Exporting 4 changesets to a file:
 
-  $ hg export 1 2 3 4 | grep HG | wc -l | sed -e 's/^ *//'
-  4
+  $ hg export 1 2 3 4 | grep HG | wc -l
+  \s*4 (re)
 
 Exporting revision -2 to a file:
 
--- a/tests/test-extension.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-extension.t	Fri Sep 24 19:47:50 2010 -0300
@@ -232,7 +232,7 @@
   [+] marked option can be specified multiple times
   $ echo 'debugextension = !' >> $HGRCPATH
 
-Issue811:
+Issue811: Problem loading extensions twice (by site and by user)
 
   $ debugpath=`pwd`/debugissue811.py
   $ cat > debugissue811.py <<EOF
--- a/tests/test-extra-filelog-entry.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-extra-filelog-entry.t	Fri Sep 24 19:47:50 2010 -0300
@@ -1,4 +1,4 @@
-test for issue351
+Issue351: mq: qrefresh can create extra revlog entry
 
   $ echo "[extensions]" >> $HGRCPATH
   $ echo "mq=" >> $HGRCPATH
--- a/tests/test-gendoc	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-gendoc	Fri Sep 24 19:47:50 2010 -0300
@@ -11,7 +11,7 @@
     echo "% extracting documentation from $LOCALE"
     echo ".. -*- coding: utf-8 -*-" > gendoc-$LOCALE.txt
     echo "" >> gendoc-$LOCALE.txt
-    LC_ALL=$LOCALE python $TESTDIR/../doc/gendoc.py >> gendoc-$LOCALE.txt || exit
+    LC_ALL=$LOCALE python $TESTDIR/../doc/gendoc.py >> gendoc-$LOCALE.txt 2> /dev/null || exit
 
     # We call runrst without adding "--halt warning" to make it report
     # all errors instead of stopping on the first one.
--- a/tests/test-git-import.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-git-import.t	Fri Sep 24 19:47:50 2010 -0300
@@ -43,7 +43,7 @@
   $ hg tip -q
   2:3a34410f282e
 
-  $ test -x new || echo failed
+  $ test -x new
 
 Copy:
 
@@ -65,10 +65,10 @@
   3:37bacb7ca14d
 
   $ if "$TESTDIR/hghave" -q execbit; then
-  >     test -f copy -a ! -x copy || echo failed
-  >     test -x copyx || echo failed
+  >     test -f copy -a ! -x copy || echo bad
+  >     test -x copyx || echo bad
   > else
-  >     test -f copy || echo failed
+  >     test -f copy || echo bad
   > fi
 
   $ cat copy
@@ -117,7 +117,8 @@
   new
   rename
 
-  $ test -f copyx && echo failed || true
+  $ test -f copyx
+  [1]
 
 Regular diff:
 
--- a/tests/test-globalopts.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-globalopts.t	Fri Sep 24 19:47:50 2010 -0300
@@ -240,12 +240,12 @@
 
   $ hg --cwd a --time id
   8580ff50825a tip
-  Time: real .*
+  Time: real * (glob)
 
 Testing --version:
 
   $ hg --version -q
-  Mercurial Distributed SCM .*
+  Mercurial Distributed SCM * (glob)
 
 Testing -h/--help:
 
--- a/tests/test-glog.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-glog.t	Fri Sep 24 19:47:50 2010 -0300
@@ -71,8 +71,6 @@
 
   $ "$TESTDIR/hghave" no-outer-repo || exit 80
 
-  $ set -e
-
   $ commit()
   > {
   >   rev=$1
@@ -681,12 +679,12 @@
   
 
 Unused arguments:
-  $ hg glog -q foo bar || echo failed
+  $ hg glog -q foo bar
   hg glog: invalid arguments
   hg glog [OPTION]... [FILE]
   
   show revision history alongside an ASCII revision graph
-  failed
+  [255]
 
 Empty revision range - display nothing:
   $ hg glog -r 1..0
@@ -735,7 +733,7 @@
      summary:     two
   
 
-File log with explicit style (issue 1896):
+Issue1896: File log with explicit style
   $ hg glog --style=default one
   o  changeset:   0:3d578b4a1f53
      user:        test
--- a/tests/test-grep.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-grep.t	Fri Sep 24 19:47:50 2010 -0300
@@ -116,9 +116,10 @@
 
   $ cd ..
 
+Issue685: trackback in grep -r after rename
+
 Got a traceback when using grep on a single
 revision with renamed files.
-issue 685
 
   $ hg init issue685
   $ cd issue685
--- a/tests/test-help.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-help.t	Fri Sep 24 19:47:50 2010 -0300
@@ -189,7 +189,7 @@
 Test short command list with verbose option
 
   $ hg -v help shortlist
-  Mercurial Distributed SCM \(version .*?\)
+  Mercurial Distributed SCM (version *) (glob)
   
   Copyright (C) 2005-2010 Matt Mackall <mpm@selenic.com> and others
   This is free software; see the source for copying conditions. There is NO
@@ -341,7 +341,7 @@
 Test help option with version option
 
   $ hg add -h --version
-  Mercurial Distributed SCM \(version .+?\)
+  Mercurial Distributed SCM (version *) (glob)
   
   Copyright (C) 2005-2010 Matt Mackall <mpm@selenic.com> and others
   This is free software; see the source for copying conditions. There is NO
@@ -439,9 +439,10 @@
   
       Differences between files are shown using the unified diff format.
   
-      NOTE: diff may generate unexpected results for merges, as it will default
-      to comparing against the working directory's first parent changeset if no
-      revisions are specified.
+      Note:
+         diff may generate unexpected results for merges, as it will default to
+         comparing against the working directory's first parent changeset if no
+         revisions are specified.
   
       When two revision arguments are given, then changes are shown between
       those revisions. If only one revision is specified then that revision is
@@ -498,10 +499,11 @@
       Option -q/--quiet hides untracked (unknown and ignored) files unless
       explicitly requested with -u/--unknown or -i/--ignored.
   
-      NOTE: status may appear to disagree with diff if permissions have changed
-      or a merge has occurred. The standard diff format does not report
-      permission changes and diff only reports changes relative to one merge
-      parent.
+      Note:
+         status may appear to disagree with diff if permissions have changed or
+         a merge has occurred. The standard diff format does not report
+         permission changes and diff only reports changes relative to one merge
+         parent.
   
       If one revision is given, it is used as the base revision. If two
       revisions are given, the differences between them are shown. The --change
--- a/tests/test-hgignore.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-hgignore.t	Fri Sep 24 19:47:50 2010 -0300
@@ -1,6 +1,6 @@
   $ hg init
 
-Test issue 562: .hgignore requires newline at end:
+Issue562: .hgignore requires newline at end:
 
   $ touch foo
   $ touch bar
@@ -43,8 +43,9 @@
   ? syntax
 
   $ echo "*.o" > .hgignore
-  $ hg status 2>&1 | sed -e 's/abort: .*\.hgignore:/abort: .hgignore:/'
-  abort: .hgignore: invalid pattern (relre): *.o
+  $ hg status
+  abort: */.hgignore: invalid pattern (relre): \*.o (glob)
+  [255]
 
   $ echo ".*\.o" > .hgignore
   $  hg status
@@ -86,8 +87,8 @@
   ? syntax
 
   $ echo "syntax: invalid" > .hgignore
-  $ hg status 2>&1 | sed -e 's/.*\.hgignore:/.hgignore:/'
-  .hgignore: ignoring invalid syntax 'invalid'
+  $ hg status
+  */.hgignore: ignoring invalid syntax 'invalid' (glob)
   A dir/b.o
   ? .hgignore
   ? a.c
--- a/tests/test-hgrc.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-hgrc.t	Fri Sep 24 19:47:50 2010 -0300
@@ -1,9 +1,10 @@
   $ echo "invalid" > $HGRCPATH
-  $ hg version 2>&1 | sed -e "s|$HGRCPATH|\$HGRCPATH|"
-  hg: parse error at $HGRCPATH:1: invalid
+  $ hg version
+  hg: parse error at */.hgrc:1: invalid (glob)
+  [255]
   $ echo "" > $HGRCPATH
 
-issue1199: escaping
+Issue1199: Can't use '%' in hgrc (eg url encoded username)
 
   $ hg init "foo%bar"
   $ hg clone "foo%bar" foobar
@@ -11,22 +12,23 @@
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ p=`pwd`
   $ cd foobar
-  $ cat .hg/hgrc | sed -e "s:$p:...:"
+  $ cat .hg/hgrc
   [paths]
-  default = .../foo%bar
-  $ hg paths | sed -e "s:$p:...:"
-  default = .../foo%bar
-  $ hg showconfig | sed -e "s:$p:...:"
-  bundle.mainreporoot=.../foobar
-  paths.default=.../foo%bar
+  default = */foo%bar (glob)
+  $ hg paths
+  default = */foo%bar (glob)
+  $ hg showconfig
+  bundle.mainreporoot=*/foobar (glob)
+  paths.default=*/foo%bar (glob)
   $ cd ..
 
 issue1829: wrong indentation
 
   $ echo '[foo]' > $HGRCPATH
   $ echo '  x = y' >> $HGRCPATH
-  $ hg version 2>&1 | sed -e "s|$HGRCPATH|\$HGRCPATH|"
-  hg: parse error at $HGRCPATH:2:   x = y
+  $ hg version
+  hg: parse error at */.hgrc:2:   x = y (glob)
+  [255]
 
   $ python -c "print '[foo]\nbar = a\n b\n c \n  de\n fg \nbaz = bif cb \n'" \
   > > $HGRCPATH
@@ -37,8 +39,9 @@
   $ FAKEPATH=/path/to/nowhere
   $ export FAKEPATH
   $ echo '%include $FAKEPATH/no-such-file' > $HGRCPATH
-  $ hg version 2>&1 | sed -e "s|$HGRCPATH|\$HGRCPATH|"
-  hg: parse error at $HGRCPATH:1: cannot include /path/to/nowhere/no-such-file (No such file or directory)
+  $ hg version
+  hg: parse error at */.hgrc:1: cannot include /path/to/nowhere/no-such-file (No such file or directory) (glob)
+  [255]
   $ unset FAKEPATH
 
 username expansion
@@ -86,24 +89,24 @@
 
 customized hgrc
 
-  $ hg showconfig | sed -e "s:$p:...:"
-  read config from: .../.hgrc
-  .../.hgrc:13: alias.log=log -g
-  .../.hgrc:11: defaults.identify=-n
-  .../.hgrc:2: ui.debug=true
-  .../.hgrc:3: ui.fallbackencoding=ASCII
-  .../.hgrc:4: ui.quiet=true
-  .../.hgrc:5: ui.slash=true
-  .../.hgrc:6: ui.traceback=true
-  .../.hgrc:7: ui.verbose=true
-  .../.hgrc:8: ui.style=~/.hgstyle
-  .../.hgrc:9: ui.logtemplate={node}
+  $ hg showconfig
+  read config from: */.hgrc (glob)
+  */.hgrc:13: alias.log=log -g (glob)
+  */.hgrc:11: defaults.identify=-n (glob)
+  */.hgrc:2: ui.debug=true (glob)
+  */.hgrc:3: ui.fallbackencoding=ASCII (glob)
+  */.hgrc:4: ui.quiet=true (glob)
+  */.hgrc:5: ui.slash=true (glob)
+  */.hgrc:6: ui.traceback=true (glob)
+  */.hgrc:7: ui.verbose=true (glob)
+  */.hgrc:8: ui.style=~/.hgstyle (glob)
+  */.hgrc:9: ui.logtemplate={node} (glob)
 
 plain hgrc
 
   $ HGPLAIN=; export HGPLAIN
-  $ hg showconfig --config ui.traceback=True --debug | sed -e "s:$p:...:"
-  read config from: .../.hgrc
+  $ hg showconfig --config ui.traceback=True --debug
+  read config from: */.hgrc (glob)
   none: ui.traceback=True
   none: ui.verbose=False
   none: ui.debug=True
--- a/tests/test-hook.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-hook.t	Fri Sep 24 19:47:50 2010 -0300
@@ -415,12 +415,12 @@
   $ echo >> foo
   $ hg ci --debug -d '0 0' -m 'change foo'
   foo
-  calling hook commit.auto: <function autohook at .*>
+  calling hook commit.auto: <function autohook at *> (glob)
   Automatically installed hook
   committed changeset 1:52998019f6252a2b893452765fcb0a47351a5708
 
   $ hg showconfig hooks
-  hooks.commit.auto=<function autohook at .*>
+  hooks.commit.auto=<function autohook at *> (glob)
 
 test python hook configured with python:[file]:[hook] syntax
 
@@ -467,7 +467,9 @@
   ImportError: No module named hgext_importfail
   Traceback (most recent call last):
 
-commit and update hooks should run after command completion (issue 1827)
+Issue1827: Hooks Update & Commit not completely post operation
+
+commit and update hooks should run after command completion
 
   $ echo '[hooks]' > .hg/hgrc
   $ echo 'commit = hg id' >> .hg/hgrc
--- a/tests/test-import.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-import.t	Fri Sep 24 19:47:50 2010 -0300
@@ -344,9 +344,11 @@
   $ rm -r b
 
 
-We weren't backing up the correct dirstate file when importing many patches
-(issue963)
-import patch1 patch2; rollback
+Issue963: Parent of working dir incorrect after import of multiple
+patches and rollback
+
+We weren't backing up the correct dirstate file when importing many
+patches: import patch1 patch2; rollback
 
   $ echo line 3 >> a/a
   $ hg --cwd a ci -m'third change'
@@ -380,7 +382,8 @@
   added 1 changesets with 2 changes to 2 files
   updating to branch default
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg --cwd a export tip | sed -e 's/d1\/d2\///' > tip.patch
+  $ hg --cwd a export tip > tmp
+  $ sed -e 's/d1\/d2\///' < tmp > tip.patch
   $ dir=`pwd`
   $ cd b/d1/d2 2>&1 > /dev/null
   $ hg import  ../../../tip.patch
@@ -541,7 +544,7 @@
   $ cd ..
 
 
-test update+rename with common name (issue 927)
+Issue927: test update+rename with common name
 
   $ hg init t
   $ cd t
@@ -660,7 +663,7 @@
   $ cd ..
 
 
-add empty file from the end of patch (issue 1495)
+Issue1495: add empty file from the end of patch
 
   $ hg init addemptyend
   $ cd addemptyend
@@ -715,7 +718,7 @@
   a
 
 
-first line mistaken for email headers (issue 1859)
+Issue1859: first line mistaken for email headers
 
   $ hg init emailconfusion
   $ cd emailconfusion
@@ -824,7 +827,7 @@
   $ cd ..
 
 
-issue2102
+Issue2102: hg export and hg import speak different languages
 
   $ hg init issue2102
   $ cd issue2102
--- a/tests/test-incoming-outgoing.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-incoming-outgoing.t	Fri Sep 24 19:47:50 2010 -0300
@@ -20,8 +20,8 @@
 
 http incoming
 
-  $ hg -R new incoming http://localhost:$HGPORT/ | sed -e "s,:$HGPORT/,:\$HGPORT/,"
-  comparing with http://localhost:$HGPORT/
+  $ hg -R new incoming http://localhost:$HGPORT/
+  comparing with http://localhost:\d+/ (re)
   changeset:   0:00a43fa82f62
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
@@ -68,8 +68,8 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     8
   
-  $ hg -R new incoming -r 4 http://localhost:$HGPORT/ | sed -e "s,:$HGPORT/,:\$HGPORT/,"
-  comparing with http://localhost:$HGPORT/
+  $ hg -R new incoming -r 4 http://localhost:$HGPORT/
+  comparing with http://localhost:\d+/ (re)
   changeset:   0:00a43fa82f62
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
@@ -221,8 +221,8 @@
 
 test with --bundle
 
-  $ hg -R new incoming --bundle test.hg http://localhost:$HGPORT/ | sed -e "s,:$HGPORT/,:\$HGPORT/,"
-  comparing with http://localhost:$HGPORT/
+  $ hg -R new incoming --bundle test.hg http://localhost:$HGPORT/
+  comparing with http://localhost:*/ (glob)
   changeset:   0:00a43fa82f62
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
@@ -419,8 +419,8 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     11
   
-  $ hg -R test-dev outgoing http://localhost:$HGPORT/ | sed -e "s,:$HGPORT/,:\$HGPORT/,"
-  comparing with http://localhost:$HGPORT/
+  $ hg -R test-dev outgoing http://localhost:$HGPORT/
+  comparing with http://localhost:*/ (glob)
   searching for changes
   changeset:   9:d89d4abea5bc
   user:        test
@@ -448,8 +448,8 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     13
   
-  $ hg -R test-dev outgoing -r 11 http://localhost:$HGPORT/ | sed -e "s,:$HGPORT/,:\$HGPORT/,"
-  comparing with http://localhost:$HGPORT/
+  $ hg -R test-dev outgoing -r 11 http://localhost:$HGPORT/
+  comparing with http://localhost:*/ (glob)
   searching for changes
   changeset:   9:d89d4abea5bc
   user:        test
--- a/tests/test-install.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-install.t	Fri Sep 24 19:47:50 2010 -0300
@@ -1,7 +1,7 @@
 hg debuginstall
   $ hg debuginstall
   Checking encoding (ascii)...
-  Checking installed modules \(.*/mercurial\)...
+  Checking installed modules (*/mercurial)... (glob)
   Checking templates...
   Checking patch...
   Checking commit editor...
@@ -11,7 +11,7 @@
 hg debuginstall with no username
   $ HGUSER= hg debuginstall
   Checking encoding (ascii)...
-  Checking installed modules \(.*/mercurial\)...
+  Checking installed modules (*/mercurial)... (glob)
   Checking templates...
   Checking patch...
   Checking commit editor...
--- a/tests/test-journal-exists.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-journal-exists.t	Fri Sep 24 19:47:50 2010 -0300
@@ -27,7 +27,7 @@
 
   $ hg -R foo unbundle repo.hg
   adding changesets
-  abort: Permission denied: .*
+  abort: Permission denied: * (glob)
   [255]
 
   $ if test -f foo/.hg/store/journal; then echo 'journal exists :-('; fi
--- a/tests/test-keyword.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-keyword.t	Fri Sep 24 19:47:50 2010 -0300
@@ -26,14 +26,14 @@
   RCSfile = {file|basename},v
   Revision = {node|short}
   Source = {root}/{file},v
-  \$Author: test \$
-  \$Date: ..../../.. ..:..:.. \$
-  \$Header: .*/demo.txt,v ............ ..../../.. ..:..:.. test \$
-  \$Id: demo.txt,v ............ ..../../.. ..:..:.. test \$
-  \$RCSFile: demo.txt,v \$
-  \$RCSfile: demo.txt,v \$
-  \$Revision: ............ \$
-  \$Source: .*/demo.txt,v \$
+  $Author: test $
+  $Date: ????/??/?? ??:??:?? $ (glob)
+  $Header: */demo.txt,v ???????????? ????/??/?? ??:??:?? test $ (glob)
+  $Id: demo.txt,v ???????????? ????/??/?? ??:??:?? test $ (glob)
+  $RCSFile: demo.txt,v $
+  $RCSfile: demo.txt,v $
+  $Revision: ???????????? $ (glob)
+  $Source: */demo.txt,v $ (glob)
 
   $ hg --quiet kwdemo "Branch = {branches}"
   [extensions]
@@ -71,7 +71,7 @@
  hg bundle --base null ../test-keyword.hg
 
   $ hg pull -u "$TESTDIR"/test-keyword.hg
-  pulling from .*test-keyword.hg
+  pulling from *test-keyword.hg (glob)
   requesting all changes
   adding changesets
   adding manifests
@@ -150,7 +150,7 @@
   do not process $Id:
   xxx $
   ignore $Id$
-  a.*
+  a* (glob)
 
 Test hook execution
 
@@ -195,15 +195,15 @@
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
-  Date: .*
-  Subject: changeset in .*
+  Date: * (glob)
+  Subject: changeset in * (glob)
   From: mercurial
   X-Hg-Notification: changeset a2392c293916
-  Message-Id: <hg.a2392c293916.*>
+  Message-Id: <hg.a2392c293916*> (glob)
   To: Test
   
-  changeset a2392c293916 in .*
-  details: .*?cmd=changeset;node=a2392c293916
+  changeset a2392c293916 in * (glob)
+  details: *cmd=changeset;node=a2392c293916 (glob)
   description:
   	addsym
   
@@ -218,15 +218,15 @@
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
-  Date:.*
-  Subject: changeset in.*
+  Date:* (glob)
+  Subject: changeset in* (glob)
   From: User Name <user@example.com>
   X-Hg-Notification: changeset ef63ca68695b
-  Message-Id: <hg.ef63ca68695b.*>
+  Message-Id: <hg.ef63ca68695b*> (glob)
   To: Test
   
-  changeset ef63ca68695b in .*
-  details: .*?cmd=changeset;node=ef63ca68695b
+  changeset ef63ca68695b in * (glob)
+  details: *cmd=changeset;node=ef63ca68695b (glob)
   description:
   	absym
   
@@ -335,7 +335,7 @@
   $ hg diff
   diff -r d17e03c92c97 a
   --- a/a	Wed Dec 31 23:59:51 1969 -0000
-  \+\+\+ b/a	.*
+  +++ b/a	* (glob)
   @@ -2,3 +2,4 @@
    foo
    do not process $Id:
@@ -479,7 +479,7 @@
   $ hg diff --rev 1
   diff -r ef63ca68695b c
   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  \+\+\+ b/c	.*
+  +++ b/c	* (glob)
   @@ -0,0 +1,3 @@
   +expand $Id$
   +do not process $Id:
@@ -527,7 +527,7 @@
   do not process $Id:
   xxx $
   ignore $Id$
-  a.*
+  a* (glob)
 
 Write custom keyword and prepare multiline commit message
 
@@ -577,7 +577,7 @@
   xxx $
   $Xinfo: User Name <user@example.com>: firstline $
   ignore $Id$
-  a.*
+  a* (glob)
 
 annotate
 
@@ -648,7 +648,7 @@
   > default = ../Test
   > EOF
   $ hg incoming
-  comparing with .*test-keyword.t/Test
+  comparing with *test-keyword.t/Test (glob)
   searching for changes
   changeset:   2:bb948857c743
   tag:         tip
@@ -718,7 +718,7 @@
 kwexpand nonexistent
 
   $ hg kwexpand nonexistent
-  nonexistent:.*
+  nonexistent:* (glob)
 
 
 hg serve
@@ -907,7 +907,7 @@
   xxx $
   $Xinfo: User Name <user@example.com>: firstline $
   ignore $Id$
-  a.*
+  a* (glob)
 
 Now disable keyword expansion
 
@@ -924,4 +924,4 @@
   xxx $
   $Xinfo$
   ignore $Id$
-  a.*
+  a* (glob)
--- a/tests/test-locate.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-locate.t	Fri Sep 24 19:47:50 2010 -0300
@@ -22,12 +22,11 @@
 
   $ touch nottracked
 
-  $ hg locate a && echo locate succeeded || echo locate failed
+  $ hg locate a
   a
-  locate succeeded
 
-  $ hg locate NONEXISTENT && echo locate succeeded || echo locate failed
-  locate failed
+  $ hg locate NONEXISTENT
+  [1]
 
   $ hg locate
   a
@@ -84,7 +83,7 @@
   t/e.h
   t/x
 
-Test issue294:
+Issue294: hg remove --after dir fails when dir.* also exists
 
   $ cd ..
   $ rm -r t
--- a/tests/test-log.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-log.t	Fri Sep 24 19:47:50 2010 -0300
@@ -1019,3 +1019,76 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     add foo, related
   
+
+Issue2383: hg log showing _less_ differences than hg diff
+
+  $ hg init issue2383
+  $ cd issue2383
+
+Create a test repo:
+
+  $ echo a > a
+  $ hg ci -Am0
+  adding a
+  $ echo b > b
+  $ hg ci -Am1
+  adding b
+  $ hg co 0
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo b > a
+  $ hg ci -m2
+  created new head
+
+Merge:
+
+  $ hg merge
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+
+Make sure there's a file listed in the merge to trigger the bug:
+
+  $ echo c > a
+  $ hg ci -m3
+
+Two files shown here in diff:
+
+  $ hg diff --rev 2:3
+  diff -r b09be438c43a -r 8e07aafe1edc a
+  --- a/a	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a	Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,1 +1,1 @@
+  -b
+  +c
+  diff -r b09be438c43a -r 8e07aafe1edc b
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
+  @@ -0,0 +1,1 @@
+  +b
+
+Diff here should be the same:
+
+  $ hg log -vpr 3
+  changeset:   3:8e07aafe1edc
+  tag:         tip
+  parent:      2:b09be438c43a
+  parent:      1:925d80f479bb
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  files:       a
+  description:
+  3
+  
+  
+  diff -r b09be438c43a -r 8e07aafe1edc a
+  --- a/a	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a	Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,1 +1,1 @@
+  -b
+  +c
+  diff -r b09be438c43a -r 8e07aafe1edc b
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
+  @@ -0,0 +1,1 @@
+  +b
+  
+  $ cd ..
--- a/tests/test-merge-prompt.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-merge-prompt.t	Fri Sep 24 19:47:50 2010 -0300
@@ -6,7 +6,6 @@
  (issue556)
 
   $ status() {
-  >     [ $? -ne 0 ] && echo "failed."
   >     echo "--- status ---"
   >     hg st -A file1 file2
   >     for file in file1 file2; do
@@ -42,7 +41,7 @@
 
 Non-interactive merge:
 
-  $ hg merge -y || echo "failed"
+  $ hg merge -y
    local changed file1 which remote deleted
   use (c)hanged version or (d)elete? c
   remote changed file2 which local deleted
@@ -67,7 +66,7 @@
   $ hg co -C
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
 
-  $ hg merge --config ui.interactive=true <<EOF || echo "failed"
+  $ hg merge --config ui.interactive=true <<EOF
   > c
   > d
   > EOF
@@ -91,7 +90,7 @@
   $ hg co -C
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
-  $ hg merge --config ui.interactive=true <<EOF || echo "failed"
+  $ hg merge --config ui.interactive=true <<EOF
   > foo
   > bar
   > d
@@ -124,13 +123,13 @@
   $ hg co -C
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
 
-  $ hg merge --config ui.interactive=true <<EOF || echo "failed"
+  $ hg merge --config ui.interactive=true <<EOF
   > d
   > EOF
    local changed file1 which remote deleted
   use (c)hanged version or (d)elete? remote changed file2 which local deleted
   use (c)hanged version or leave (d)eleted? abort: response expected
-  failed
+  [255]
 
   $ status
   --- status ---
--- a/tests/test-minirst.py	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-minirst.py	Fri Sep 24 19:47:50 2010 -0300
@@ -197,3 +197,20 @@
 ------------------------------
 """
 debugformat('sections', sections, 20)
+
+
+admonitions = """
+.. note::
+   This is a note
+
+   - Bullet 1
+   - Bullet 2
+
+   .. warning:: This is a warning Second
+      input line of warning
+
+.. danger::
+   This is danger
+"""
+
+debugformat('admonitions', admonitions, 30)
--- a/tests/test-minirst.py.out	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-minirst.py.out	Fri Sep 24 19:47:50 2010 -0300
@@ -318,3 +318,19 @@
 ---------------------------
 ----------------------------------------------------------------------
 
+admonitions formatted to fit within 30 characters:
+----------------------------------------------------------------------
+Note:
+   This is a note
+
+   - Bullet 1
+   - Bullet 2
+
+   Warning!
+      This is a warning Second
+      input line of warning
+
+!Danger!
+   This is danger
+----------------------------------------------------------------------
+
--- a/tests/test-mq-merge.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-mq-merge.t	Fri Sep 24 19:47:50 2010 -0300
@@ -1,4 +1,4 @@
-# Test issue 529 - mq aborts when merging patch deleting files
+Issue529: mq aborts when merging patch deleting files
 
   $ checkundo()
   > {
@@ -32,7 +32,7 @@
 Save the patch queue so we can merge it later:
 
   $ hg qsave -c -e
-  copy .*/t/.hg/patches to .*/t/.hg/patches.1
+  copy */t/.hg/patches to */t/.hg/patches.1 (glob)
   $ checkundo
 
 Update b and commit in an "update" changeset:
@@ -52,7 +52,7 @@
   b
 
   $ hg qpush -a -m
-  merging with queue at: .*/t/.hg/patches.1
+  merging with queue at: */t/.hg/patches.1 (glob)
   applying rm_a
   now at: rm_a
 
@@ -91,14 +91,14 @@
 Create the reference queue:
 
   $ hg qsave -c -e -n refqueue
-  copy .*/t2/.hg/patches to .*/t2/.hg/refqueue
+  copy */t2/.hg/patches to */t2/.hg/refqueue (glob)
   $ hg up -C 1
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
 
 Merge:
 
   $ HGMERGE=internal:other hg qpush -a -m -n refqueue
-  merging with queue at: .*/t2/.hg/refqueue
+  merging with queue at: */t2/.hg/refqueue (glob)
   applying patcha
   patching file a
   Hunk #1 FAILED at 0
@@ -138,10 +138,10 @@
 
   $ cat .hg/patches/patcha2
   # HG changeset patch
-  # Parent ........................................
+  # Parent ???????????????????????????????????????? (glob)
   # Date 0 0
   
-  diff -r ............ -r ............ a
+  diff -r ???????????? -r ???????????? a (glob)
   --- a/a
   +++ b/a
   @@ -1,2 +1,3 @@
--- a/tests/test-mq-missingfiles.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-mq-missingfiles.t	Fri Sep 24 19:47:50 2010 -0300
@@ -1,8 +1,7 @@
 
-# Test issue835:
-# qpush fails immediately when patching a missing file, but
-# remaining added files are still created empty which will
-# trick a future qrefresh.
+Issue835: qpush fails immediately when patching a missing file, but
+remaining added files are still created empty which will trick a
+future qrefresh.
 
   $ cat > writelines.py <<EOF
   > import sys
--- a/tests/test-mq-qdiff.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-mq-qdiff.t	Fri Sep 24 19:47:50 2010 -0300
@@ -17,10 +17,10 @@
 
 qdiff:
 
-  $ hg qdiff | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/"
+  $ hg qdiff
   diff -r d20a80d4def3 base
   --- a/base	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/base
+  +++ b/base* (glob)
   @@ -1,1 +1,1 @@
   -base
   +patched
--- a/tests/test-mq-qfold.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-mq-qfold.t	Fri Sep 24 19:47:50 2010 -0300
@@ -59,7 +59,7 @@
   [255]
 
   $ hg diff -c .
-  diff -r 07f494440405 -r ............ a
+  diff -r 07f494440405 -r ???????????? a (glob)
   --- a/a
   +++ b/a
   @@ -1,1 +1,3 @@
@@ -85,7 +85,7 @@
 
   $ cat .hg/patches/regular
   # HG changeset patch
-  # Parent ........................................
+  # Parent ???????????????????????????????????????? (glob)
   
   diff --git a/a b/a
   --- a/a
@@ -127,7 +127,7 @@
 
   $ cat .hg/patches/git
   # HG changeset patch
-  # Parent ........................................
+  # Parent ???????????????????????????????????????? (glob)
   
   diff --git a/a b/aa
   copy from a
--- a/tests/test-mq-qrefresh.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-mq-qrefresh.t	Fri Sep 24 19:47:50 2010 -0300
@@ -255,7 +255,7 @@
 diff shows what is not in patch:
 
   $ hg diff
-  diff -r ............ orphanchild
+  diff -r ???????????? orphanchild (glob)
   --- /dev/null
   +++ b/orphanchild
   @@ -0,0 +1,1 @@
@@ -402,7 +402,7 @@
   $ cd ..
 
 
-Test issue 1441: qrefresh confused after hg rename:
+Issue1441: qrefresh confused after hg rename:
 
   $ hg init repo-1441
   $ cd repo-1441
@@ -422,7 +422,8 @@
   $ cd ..
 
 
-Issue2025: qrefresh does not honor filtering options when tip != qtip:
+Issue2025: qrefresh does not honor filtering options when tip !=
+qtip:
 
   $ hg init repo-2025
   $ cd repo-2025
--- a/tests/test-mq-qrename.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-mq-qrename.t	Fri Sep 24 19:47:50 2010 -0300
@@ -59,4 +59,25 @@
 
   $ cd ..
 
+Test overlapping renames (issue2388)
 
+  $ hg init c
+  $ cd c
+  $ hg qinit -c
+  $ echo a > a
+  $ hg add
+  adding a
+  $ hg qnew patcha
+  $ echo b > b
+  $ hg add
+  adding b
+  $ hg qnew patchb
+  $ hg ci --mq -m c1
+  $ hg qrename patchb patchc
+  $ hg qrename patcha patchb
+  $ hg st --mq
+  M patchb
+  M series
+  A patchc
+  R patcha
+  $ cd ..
--- a/tests/test-mq-safety.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-mq-safety.t	Fri Sep 24 19:47:50 2010 -0300
@@ -39,7 +39,7 @@
   abort: popping would remove a revision not managed by this patch queue
   [255]
   $ hg qpop -n patches
-  using patch queue: .*/repo/.hg/patches
+  using patch queue: */repo/.hg/patches (glob)
   abort: popping would remove a revision not managed by this patch queue
   [255]
   $ hg qrefresh
@@ -110,3 +110,67 @@
   $ hg qpush
   applying qp
   now at: qp
+
+Testing applied patches, push and --force
+
+  $ cd ..
+  $ hg init forcepush
+  $ cd forcepush
+  $ echo a > a
+  $ hg ci -Am adda
+  adding a
+  $ echo a >> a
+  $ hg ci -m changea
+  $ hg up 0
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg branch branch
+  marked working directory as branch branch
+  $ echo b > b
+  $ hg ci -Am addb
+  adding b
+  $ hg up 0
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ hg --cwd .. clone -r 0 forcepush forcepush2
+  requesting all changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  updating to branch default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ echo a >> a
+  $ hg qnew patch
+
+Pushing applied patch with --rev without --force
+
+  $ hg push -r default ../forcepush2
+  pushing to ../forcepush2
+  abort: source has mq patches applied
+  [255]
+
+Pushing applied patch with branchhash, without --force
+
+  $ hg push ../forcepush2#default
+  pushing to ../forcepush2
+  abort: source has mq patches applied
+  [255]
+
+Pushing revs excluding applied patch
+
+  $ hg push --new-branch -r branch -r 2 ../forcepush2
+  pushing to ../forcepush2
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+
+Pushing applied patch with --force
+
+  $ hg push --force -r default ../forcepush2
+  pushing to ../forcepush2
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files (+1 heads)
--- a/tests/test-mq-strip.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-mq-strip.t	Fri Sep 24 19:47:50 2010 -0300
@@ -77,7 +77,7 @@
   summary:     e
   
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
   % after update 4, strip 4
   changeset:   3:65bd5f99a4a3
   tag:         tip
@@ -96,7 +96,7 @@
   summary:     e
   
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
   % after update 4, strip 3
   changeset:   1:ef3a871183d7
   user:        test
@@ -111,7 +111,7 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     b
   
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
   % after update 1, strip 4
   changeset:   1:ef3a871183d7
   user:        test
@@ -127,7 +127,7 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     e
   
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
   % after update 4, strip 2
   changeset:   3:443431ffac4f
   tag:         tip
@@ -146,7 +146,7 @@
   summary:     c
   
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
   % after update 4, strip 1
   changeset:   0:9ab35a2d17cb
   tag:         tip
@@ -157,7 +157,7 @@
   $ teststrip null 4
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   % before update null, strip 4
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
   % after update null, strip 4
 
   $ hg log
@@ -212,7 +212,7 @@
   
   $ hg strip 4
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
 
 after strip of merge parent
 
@@ -258,7 +258,7 @@
 2 is parent of 3, only one strip should happen
 
   $ hg strip 2 3
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
   $ hg glog
   @  changeset:   2:264128213d29
   |  tag:         tip
@@ -310,8 +310,8 @@
 
   $ hg strip 2 4
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
+  saved backup bundle to * (glob)
   $ hg glog
   @  changeset:   2:65bd5f99a4a3
   |  tag:         tip
@@ -335,14 +335,14 @@
 
   $ hg strip 1 2 4
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
   $ restore
 
 
 remove branchy history for qimport tests
 
   $ hg strip 3
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
 
 
 strip of applied mq should cleanup status file
@@ -364,7 +364,7 @@
 
   $ hg strip 3
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
 
 applied patches after stripping rev in queue
 
@@ -375,7 +375,7 @@
 
   $ hg strip 1
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
 
 applied patches after stripping ancestor of queue
 
--- a/tests/test-mq-symlinks.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-mq-symlinks.t	Fri Sep 24 19:47:50 2010 -0300
@@ -95,7 +95,8 @@
   $ hg add linka
   $ hg qnew link
   $ hg mv linka linkb
-  $ ln -sf linkb linkb
+  $ rm linkb
+  $ ln -s linkb linkb
   $ hg qnew movelink
   $ hg qpop
   popping movelink
--- a/tests/test-mq.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-mq.t	Fri Sep 24 19:47:50 2010 -0300
@@ -135,7 +135,7 @@
   guards
   $ cat .hg/patches/series
   $ hg qinit -c
-  abort: repository .* already exists!
+  abort: repository * already exists! (glob)
   [255]
   $ cd ..
 
@@ -204,8 +204,7 @@
 
   $ hg init g
   $ hg init --mq g
-  $ test -d g/.hg/patches/.hg && echo "ok" || echo "failed"
-  ok
+  $ test -d g/.hg/patches/.hg
 
 init --mq with nonexistent directory
 
@@ -238,9 +237,9 @@
   $ cat .hg/patches/test.patch
   foo bar
   
-  diff -r [a-f0-9]* a
-  --- a/a\t(?P<date>.*)
-  \+\+\+ b/a\t(?P<date2>.*)
+  diff -r [a-f0-9]* a (re)
+  --- a/a\t(?P<date>.*) (re)
+  \+\+\+ b/a\t(?P<date2>.*) (re)
   @@ -1,1 +1,2 @@
    a
   +a
@@ -291,7 +290,7 @@
 .hg/tags.cache (pre qpush):
 
   $ cat .hg/tags.cache
-  1 [\da-f]{40}
+  1 [\da-f]{40} (re)
   
   $ hg qpush
   applying test.patch
@@ -301,7 +300,7 @@
 .hg/tags.cache (post qpush):
 
   $ cat .hg/tags.cache
-  2 [\da-f]{40}
+  2 [\da-f]{40} (re)
   
   $ checkundo qpush
   $ cd ..
@@ -633,14 +632,6 @@
   added 1 changesets with 1 changes to 1 files
 
 
-qpush/qpop error codes
-
-  $ errorcode()
-  > {
-  >     hg "$@" && echo "  $@ succeeds" || echo "  $@ fails"
-  > }
-
-
 we want to start with some patches applied
 
   $ hg qpush -a
@@ -651,105 +642,92 @@
 
 % pops all patches and succeeds
 
-  $ errorcode qpop -a
+  $ hg qpop -a
   popping test2.patch
   popping test1b.patch
   popping test.patch
   patch queue now empty
-    qpop -a succeeds
 
 % does nothing and succeeds
 
-  $ errorcode qpop -a
+  $ hg qpop -a
   no patches applied
-    qpop -a succeeds
 
 % fails - nothing else to pop
 
-  $ errorcode qpop
+  $ hg qpop
   no patches applied
-    qpop fails
+  [1]
 
 % pushes a patch and succeeds
 
-  $ errorcode qpush
+  $ hg qpush
   applying test.patch
   now at: test.patch
-    qpush succeeds
 
 % pops a patch and succeeds
 
-  $ errorcode qpop
+  $ hg qpop
   popping test.patch
   patch queue now empty
-    qpop succeeds
 
 % pushes up to test1b.patch and succeeds
 
-  $ errorcode qpush test1b.patch
+  $ hg qpush test1b.patch
   applying test.patch
   applying test1b.patch
   now at: test1b.patch
-    qpush test1b.patch succeeds
 
 % does nothing and succeeds
 
-  $ errorcode qpush test1b.patch
+  $ hg qpush test1b.patch
   qpush: test1b.patch is already at the top
-    qpush test1b.patch succeeds
 
 % does nothing and succeeds
 
-  $ errorcode qpop test1b.patch
+  $ hg qpop test1b.patch
   qpop: test1b.patch is already at the top
-    qpop test1b.patch succeeds
 
 % fails - can't push to this patch
 
-  $ errorcode qpush test.patch
+  $ hg qpush test.patch
   abort: cannot push to a previous patch: test.patch
-    qpush test.patch fails
+  [255]
 
 % fails - can't pop to this patch
 
-  $ errorcode qpop test2.patch
+  $ hg qpop test2.patch
   abort: patch test2.patch is not applied
-    qpop test2.patch fails
+  [255]
 
 % pops up to test.patch and succeeds
 
-  $ errorcode qpop test.patch
+  $ hg qpop test.patch
   popping test1b.patch
   now at: test.patch
-    qpop test.patch succeeds
 
 % pushes all patches and succeeds
 
-  $ errorcode qpush -a
+  $ hg qpush -a
   applying test1b.patch
   applying test2.patch
   now at: test2.patch
-    qpush -a succeeds
 
 % does nothing and succeeds
 
-  $ errorcode qpush -a
+  $ hg qpush -a
   all patches are currently applied
-    qpush -a succeeds
 
 % fails - nothing else to push
 
-  $ errorcode qpush
+  $ hg qpush
   patch series already fully applied
-    qpush fails
+  [1]
 
 % does nothing and succeeds
 
-  $ errorcode qpush test2.patch
+  $ hg qpush test2.patch
   qpush: test2.patch is already at the top
-    qpush test2.patch succeeds
-
-
 
 strip
 
@@ -759,7 +737,7 @@
   adding x
   $ hg strip tip
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
   $ hg unbundle .hg/strip-backup/*
   adding changesets
   adding manifests
@@ -782,7 +760,7 @@
 
   $ hg strip -f tip
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
 
 
 cd b; hg qrefresh
@@ -804,14 +782,14 @@
   foo
   
   diff -r cb9a9f314b8b a
-  --- a/a\t(?P<date>.*)
-  \+\+\+ b/a\t(?P<date>.*)
+  --- a/a\t(?P<date>.*) (re)
+  \+\+\+ b/a\t(?P<date>.*) (re)
   @@ -1,1 +1,2 @@
    a
   +a
   diff -r cb9a9f314b8b b/f
-  --- /dev/null\t(?P<date>.*)
-  \+\+\+ b/b/f\t(?P<date>.*)
+  --- /dev/null\t(?P<date>.*) (re)
+  \+\+\+ b/b/f\t(?P<date>.*) (re)
   @@ -0,0 +1,1 @@
   +f
 
@@ -822,8 +800,8 @@
   foo
   
   diff -r cb9a9f314b8b b/f
-  --- /dev/null\t(?P<date>.*)
-  \+\+\+ b/b/f\t(?P<date>.*)
+  --- /dev/null\t(?P<date>.*) (re)
+  \+\+\+ b/b/f\t(?P<date>.*) (re)
   @@ -0,0 +1,1 @@
   +f
   $ hg status
@@ -1087,7 +1065,7 @@
   $ hg qpush
   applying addbucephalus
   now at: addbucephalus
-  $ test -f bucephalus || echo % bucephalus should be there
+  $ test -f bucephalus
   $ python "$TESTDIR/md5sum.py" bucephalus
   8ba2a2f3e77b55d03051ff9c24ad65e7  bucephalus
 
@@ -1140,7 +1118,7 @@
   
   $ hg strip 1
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
   $ checkundo strip
   $ hg log
   changeset:   1:20cbbe65cff7
@@ -1237,7 +1215,7 @@
   $ cd ..
 
 
-test applying on an empty file (issue 1033)
+Issue1033: test applying on an empty file
 
   $ hg init empty
   $ cd empty
--- a/tests/test-parse-date.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-parse-date.t	Fri Sep 24 19:47:50 2010 -0300
@@ -91,7 +91,7 @@
   $ hg debugdate "2006-02-01 1:00:30PM +0000"
   internal: 1138798830 0
   standard: Wed Feb 01 13:00:30 2006 +0000
-  $ hg debugdate "1:00:30PM" > /dev/null || echo 'failed'
+  $ hg debugdate "1:00:30PM" > /dev/null
 
 Test date formats with '>' or '<' accompanied by space characters
 
--- a/tests/test-patchbomb.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-patchbomb.t	Fri Sep 24 19:47:50 2010 -0300
@@ -25,8 +25,8 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716.60@.*
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <8580ff50825a50c8f716.60@* (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -80,8 +80,8 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2] test
-  Message-Id: <patchbomb.120@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <patchbomb\.120@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:02:00 +0000
   From: quux
   To: foo
@@ -94,10 +94,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 1 of 2] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716.121@[^>]*>
-  In-Reply-To: <patchbomb.120@[^>]*>
-  References: <patchbomb.120@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <8580ff50825a50c8f716\.121@[^>]*> (re)
+  In-Reply-To: <patchbomb\.120@[^>]*> (re)
+  References: <patchbomb\.120@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:02:01 +0000
   From: quux
   To: foo
@@ -122,10 +122,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 2 of 2] b
   X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
-  Message-Id: <97d72e5f12c7e84f8506.122@[^>]*>
-  In-Reply-To: <patchbomb.120@[^>]*>
-  References: <patchbomb.120@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <97d72e5f12c7e84f8506\.122@[^>]*> (re)
+  In-Reply-To: <patchbomb\.120@[^>]*> (re)
+  References: <patchbomb\.120@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:02:02 +0000
   From: quux
   To: foo
@@ -241,8 +241,8 @@
   Content-Transfer-Encoding: base64
   Subject: [PATCH] charset=utf-8; content-transfer-encoding: base64
   X-Mercurial-Node: c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
-  Message-Id: <c3c9e37db9f4fe4882cd.240@.*
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <c3c9e37db9f4fe4882cd.240@* (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:04:00 +0000
   From: quux
   To: foo
@@ -1810,8 +1810,8 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH] test
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716.315532860@.*
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <8580ff50825a50c8f716.315532860@* (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:00 +0000
   From: quux
   To: bar@xn--nicode-2ya.com
@@ -1857,8 +1857,8 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 8] test
-  Message-Id: <patchbomb.315532860@.*
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <patchbomb.315532860@* (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:00 +0000
   From: test
   To: foo
@@ -1870,10 +1870,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 1 of 8] c
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
-  Message-Id: <ff2c9fa2018b15fa74b3.315532861@.*
-  In-Reply-To: <patchbomb.315532860@[^>]*>
-  References: <patchbomb.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <ff2c9fa2018b15fa74b3.315532861@* (glob)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:01 +0000
   From: test
   To: foo
@@ -1897,10 +1897,10 @@
   Content-Transfer-Encoding: 8bit
   Subject: [PATCH 2 of 8] charset=utf-8; content-transfer-encoding: base64
   X-Mercurial-Node: c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
-  Message-Id: <c3c9e37db9f4fe4882cd.315532862@.*
-  In-Reply-To: <patchbomb.315532860@[^>]*>
-  References: <patchbomb.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <c3c9e37db9f4fe4882cd.315532862@* (glob)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:02 +0000
   From: test
   To: foo
@@ -1932,10 +1932,10 @@
   Subject: [PATCH 3 of 8] charset=utf-8;
    content-transfer-encoding: quoted-printable
   X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
-  Message-Id: <c655633f8c87700bb38c.315532863@.*
-  In-Reply-To: <patchbomb.315532860@[^>]*>
-  References: <patchbomb.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <c655633f8c87700bb38c.315532863@* (glob)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:03 +0000
   From: test
   To: foo
@@ -1975,10 +1975,10 @@
   Content-Transfer-Encoding: 8bit
   Subject: [PATCH 4 of 8] charset=us-ascii; content-transfer-encoding: 8bit
   X-Mercurial-Node: 22d0f96be12f5945fd67d101af58f7bc8263c835
-  Message-Id: <22d0f96be12f5945fd67.315532864@.*
-  In-Reply-To: <patchbomb.315532860@[^>]*>
-  References: <patchbomb.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <22d0f96be12f5945fd67.315532864@* (glob)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:04 +0000
   From: test
   To: foo
@@ -2002,10 +2002,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 5 of 8] Added tag zero, zero.foo for changeset 8580ff50825a
   X-Mercurial-Node: dd9c2b4b8a8a0934d5523c15f2c119b362360903
-  Message-Id: <dd9c2b4b8a8a0934d552.315532865@.*
-  In-Reply-To: <patchbomb.315532860@[^>]*>
-  References: <patchbomb.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <dd9c2b4b8a8a0934d552.315532865@* (glob)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:05 +0000
   From: test
   To: foo
@@ -2030,10 +2030,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 6 of 8] Added tag one, one.patch for changeset 97d72e5f12c7
   X-Mercurial-Node: eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
-  Message-Id: <eae5fcf795eee29d0e45.315532866@.*
-  In-Reply-To: <patchbomb.315532860@[^>]*>
-  References: <patchbomb.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <eae5fcf795eee29d0e45.315532866@* (glob)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:06 +0000
   From: test
   To: foo
@@ -2060,10 +2060,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 7 of 8] Added tag two, two.diff for changeset ff2c9fa2018b
   X-Mercurial-Node: e317db6a6f288748d1f6cb064f3810fcba66b1b6
-  Message-Id: <e317db6a6f288748d1f6.315532867@.*
-  In-Reply-To: <patchbomb.315532860@[^>]*>
-  References: <patchbomb.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <e317db6a6f288748d1f6.315532867@* (glob)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:07 +0000
   From: test
   To: foo
@@ -2091,10 +2091,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 8 of 8] d
   X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
-  Message-Id: <2f9fa9b998c5fe3ac2bd.315532868[^>]*>
-  In-Reply-To: <patchbomb.315532860@[^>]*>
-  References: <patchbomb.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <2f9fa9b998c5fe3ac2bd\.315532868[^>]*> (re)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:08 +0000
   From: test
   To: foo
@@ -2129,8 +2129,8 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH] test
   X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
-  Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@.*
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@* (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:00 +0000
   From: test
   To: foo
--- a/tests/test-paths.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-paths.t	Fri Sep 24 19:47:50 2010 -0300
@@ -6,11 +6,11 @@
   $ echo '[paths]' >> .hg/hgrc
   $ echo 'dupe = ../b' >> .hg/hgrc
   $ hg in dupe
-  comparing with .*/test-paths.t/b
+  comparing with */test-paths.t/b (glob)
   no changes found
   [1]
   $ cd ..
   $ hg -R a in dupe
-  comparing with .*/test-paths.t/b
+  comparing with */test-paths.t/b (glob)
   no changes found
   [1]
--- a/tests/test-permissions.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-permissions.t	Fri Sep 24 19:47:50 2010 -0300
@@ -15,17 +15,17 @@
 
   $ chmod -r .hg/store/data/a.i
 
-  $ hg verify || echo %%% verify failed
+  $ hg verify
   checking changesets
   checking manifests
   crosschecking files in changesets and manifests
   checking files
-  abort: Permission denied: .*
-  %%% verify failed
+  abort: Permission denied: * (glob)
+  [255]
 
   $ chmod +r .hg/store/data/a.i
 
-  $ hg verify || echo %%% verify failed
+  $ hg verify
   checking changesets
   checking manifests
   crosschecking files in changesets and manifests
@@ -35,10 +35,10 @@
   $ chmod -w .hg/store/data/a.i
 
   $ echo barber > a
-  $ hg commit -m "2" || echo %%% commit failed
+  $ hg commit -m "2"
   trouble committing a!
-  abort: Permission denied: .*
-  %%% commit failed
+  abort: Permission denied: * (glob)
+  [255]
 
   $ chmod -w .
 
--- a/tests/test-pull.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-pull.t	Fri Sep 24 19:47:50 2010 -0300
@@ -18,7 +18,7 @@
   $ cat hg.pid >> $DAEMON_PIDS
   $ cd ..
 
-  $ hg clone --pull http://foo:bar@localhost:$HGPORT/ copy | sed -e "s,:$HGPORT/,:\$HGPORT/,"
+  $ hg clone --pull http://foo:bar@localhost:$HGPORT/ copy
   requesting all changes
   adding changesets
   adding manifests
@@ -43,15 +43,15 @@
   $ hg manifest --debug
   2ed2a3912a0b24502043eae84ee4b279c18b90dd 644   foo
 
-  $ hg pull | sed -e "s,:$HGPORT/,:\$HGPORT/,"
-  pulling from http://foo:***@localhost:$HGPORT/
+  $ hg pull
+  pulling from http://foo:\*\*\*@localhost:.*/ (re)
   searching for changes
   no changes found
 
-  $ hg rollback --dry-run --verbose | sed -e "s,:$HGPORT/,:\$HGPORT/,"
-  rolling back to revision -1 (undo pull: http://foo:***@localhost:$HGPORT/)
+  $ hg rollback --dry-run --verbose
+  rolling back to revision -1 \(undo pull: http://foo:\*\*\*@localhost:.*/\) (re)
 
-Issue 622:
+Issue622: hg init && hg pull -u URL doesn't checkout default branch
 
   $ cd ..
   $ hg init empty
--- a/tests/test-push-validation.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-push-validation.t	Fri Sep 24 19:47:50 2010 -0300
@@ -40,7 +40,7 @@
 Expected to fail:
 
   $ hg push
-  pushing to .*
+  pushing to * (glob)
   searching for changes
   adding changesets
   adding manifests
--- a/tests/test-push-warn.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-push-warn.t	Fri Sep 24 19:47:50 2010 -0300
@@ -92,50 +92,47 @@
 
   $ hg ci -m c-d
 
-  $ hg push ../c; echo $?
+  $ hg push ../c
   pushing to ../c
   searching for changes
   abort: push creates new remote heads on branch 'default'!
   (did you forget to merge? use push -f to force)
-  255
+  [255]
 
-  $ hg push -r 2 ../c; echo $?
+  $ hg push -r 2 ../c
   pushing to ../c
   searching for changes
   no changes found
-  0
 
-  $ hg push -r 3 ../c; echo $?
+  $ hg push -r 3 ../c
   pushing to ../c
   searching for changes
   abort: push creates new remote heads on branch 'default'!
   (did you forget to merge? use push -f to force)
-  255
+  [255]
 
-  $ hg push -r 3 -r 4 ../c; echo $?
+  $ hg push -r 3 -r 4 ../c
   pushing to ../c
   searching for changes
   abort: push creates new remote heads on branch 'default'!
   (did you forget to merge? use push -f to force)
-  255
+  [255]
 
-  $ hg push -f -r 3 -r 4 ../c; echo $?
+  $ hg push -f -r 3 -r 4 ../c
   pushing to ../c
   searching for changes
   adding changesets
   adding manifests
   adding file changes
   added 2 changesets with 2 changes to 1 files (+2 heads)
-  0
 
-  $ hg push -r 5 ../c; echo $?
+  $ hg push -r 5 ../c
   pushing to ../c
   searching for changes
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (-1 heads)
-  0
 
   $ hg in ../c
   comparing with ../c
@@ -144,31 +141,31 @@
   [1]
 
 
-Issue 450:
+Issue450: push -r warns about remote head creation even if no heads
+will be created
 
   $ hg init ../e
-  $ hg push -r 0 ../e ; echo $?
+  $ hg push -r 0 ../e
   pushing to ../e
   searching for changes
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files
-  0
 
-  $ hg push -r 1 ../e ; echo $?
+  $ hg push -r 1 ../e
   pushing to ../e
   searching for changes
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files
-  0
 
   $ cd ..
 
 
-Issue 736:
+Issue736: named branches are not considered for detection of
+unmerged heads in "hg push"
 
   $ hg init f
   $ cd f
@@ -199,19 +196,19 @@
   $ hg -q branch c
   $ hg -q ci -m 5
 
-  $ hg push ../f; echo $?
+  $ hg push ../f
   pushing to ../f
   searching for changes
   abort: push creates new remote branches: c!
   (use 'hg push --new-branch' to create new remote branches)
-  255
+  [255]
 
-  $ hg push -r 4 -r 5 ../f; echo $?
+  $ hg push -r 4 -r 5 ../f
   pushing to ../f
   searching for changes
   abort: push creates new remote branches: c!
   (use 'hg push --new-branch' to create new remote branches)
-  255
+  [255]
 
 
 Multiple new branches:
@@ -220,19 +217,19 @@
   $ echo 6 > foo
   $ hg -q ci -m 6
 
-  $ hg push ../f; echo $?
+  $ hg push ../f
   pushing to ../f
   searching for changes
   abort: push creates new remote branches: c, d!
   (use 'hg push --new-branch' to create new remote branches)
-  255
+  [255]
 
-  $ hg push -r 4 -r 6 ../f; echo $?
+  $ hg push -r 4 -r 6 ../f
   pushing to ../f
   searching for changes
   abort: push creates new remote branches: c, d!
   (use 'hg push --new-branch' to create new remote branches)
-  255
+  [255]
 
   $ cd ../g
 
@@ -243,12 +240,12 @@
   $ echo 7 > foo
   $ hg -q ci -m 7
 
-  $ hg push -r 4 -r 7 ../f; echo $?
+  $ hg push -r 4 -r 7 ../f
   pushing to ../f
   searching for changes
   abort: push creates new remote heads on branch 'a'!
   (did you forget to merge? use push -f to force)
-  255
+  [255]
 
 Push replacement head on existing branches:
 
@@ -256,14 +253,13 @@
   $ echo 8 > foo
   $ hg -q ci -m 8
 
-  $ hg push -r 7 -r 8 ../f; echo $?
+  $ hg push -r 7 -r 8 ../f
   pushing to ../f
   searching for changes
   adding changesets
   adding manifests
   adding file changes
   added 2 changesets with 2 changes to 1 files
-  0
 
 
 Merge of branch a to other branch b followed by unrelated push
@@ -276,23 +272,21 @@
   $ echo 10 > foo
   $ hg -q ci -m 10
 
-  $ hg push -r 9 ../f; echo $?
+  $ hg push -r 9 ../f
   pushing to ../f
   searching for changes
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (-1 heads)
-  0
 
-  $ hg push -r 10 ../f; echo $?
+  $ hg push -r 10 ../f
   pushing to ../f
   searching for changes
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
-  0
 
 
 Cheating the counting algorithm:
@@ -304,14 +298,13 @@
   $ echo 12 > foo
   $ hg -q ci -m 12
 
-  $ hg push -r 11 -r 12 ../f; echo $?
+  $ hg push -r 11 -r 12 ../f
   pushing to ../f
   searching for changes
   adding changesets
   adding manifests
   adding file changes
   added 2 changesets with 2 changes to 1 files
-  0
 
 
 Failed push of new named branch:
@@ -324,24 +317,23 @@
   $ hg -q branch e
   $ hg -q ci -m 13d
 
-  $ hg push -r 12 -r 13 ../f; echo $?
+  $ hg push -r 12 -r 13 ../f
   pushing to ../f
   searching for changes
   abort: push creates new remote branches: e!
   (use 'hg push --new-branch' to create new remote branches)
-  255
+  [255]
 
 
 Using --new-branch to push new named branch:
 
-  $ hg push --new-branch -r 12 -r 13 ../f; echo $?
+  $ hg push --new-branch -r 12 -r 13 ../f
   pushing to ../f
   searching for changes
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files
-  0
 
 
 Checking prepush logic does not allow silently pushing 
--- a/tests/test-relink.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-relink.t	Fri Sep 24 19:47:50 2010 -0300
@@ -60,7 +60,7 @@
 relink
 
   $ hg relink --debug | fix_path
-  relinking .*/.hg/store
+  relinking */.hg/store (glob)
   tip has 2 files, estimated total number of files: 3
   collecting: 00changelog.i 1/3 files (33.33%)
   collecting: 00manifest.i 2/3 files (66.67%)
--- a/tests/test-remove.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-remove.t	Fri Sep 24 19:47:50 2010 -0300
@@ -1,6 +1,6 @@
   $ remove() {
   >     hg rm $@
-  >     echo "exit code: $?"
+  >     echo "exit code: $?" # no-check-code
   >     hg st
   >     # do not use ls -R, which recurses in .hg subdirs on Mac OS X 10.5
   >     find . -name .hg -prune -o -type f -print | sort
--- a/tests/test-rename-after-merge.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-rename-after-merge.t	Fri Sep 24 19:47:50 2010 -0300
@@ -1,5 +1,5 @@
-Test issue 746: renaming files brought by the second parent of a merge
-was broken.
+Issue746: renaming files brought by the second parent of a merge was
+broken.
 
 Create source repository:
 
@@ -59,8 +59,8 @@
 
   $ cd ..
 
-Test issue 1476: renaming a first parent file into another first
-parent file while none of them belong to the second parent was broken
+Issue 1476: renaming a first parent file into another first parent
+file while none of them belong to the second parent was broken
 
   $ hg init repo1476
   $ cd repo1476
--- a/tests/test-rename.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-rename.t	Fri Sep 24 19:47:50 2010 -0300
@@ -263,8 +263,8 @@
   R d1/ba
   R d1/d11/a1
   $ diff -u d1/b d2/b
-  --- d1/b	.*
-  \+\+\+ d2/b	.*
+  --- d1/b	* (glob)
+  +++ d2/b	* (glob)
   @@ -1 +1 @@
   -d1/b
   +d2/b
--- a/tests/test-revert.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-revert.t	Fri Sep 24 19:47:50 2010 -0300
@@ -168,7 +168,7 @@
   $ cd ..
 
 
-issue 241
+Issue241: update and revert produces inconsistent repositories
 
   $ hg init a
   $ cd a
@@ -194,7 +194,7 @@
   reverting a
 
 
-issue332
+Issue332: confusing message when reverting directory
 
   $ hg ci -A -m b
   adding b/b
--- a/tests/test-revlog-group-emptyiter.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-revlog-group-emptyiter.t	Fri Sep 24 19:47:50 2010 -0300
@@ -1,4 +1,4 @@
-issue 1678
+Issue1678: IndexError when pushing
 
 setting up base repo
   $ hg init a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-run-tests.t	Fri Sep 24 19:47:50 2010 -0300
@@ -0,0 +1,37 @@
+Simple commands:
+
+  $ echo foo
+  foo
+  $ printf 'bar\nbaz\n' | cat
+  bar
+  baz
+
+Multi-line command:
+
+  $ foo() {
+  >     echo bar
+  > }
+  $ foo
+  bar
+
+Regular expressions:
+
+  $ echo foobarbaz
+  foobar.* (re)
+  $ echo barbazquux
+  .*quux.* (re)
+
+Globs:
+
+  $ printf '* \\foobarbaz {10}\n'
+  \* \\fo?bar* {10} (glob)
+
+Literal match ending in " (re)":
+
+  $ echo 'foo (re)'
+  foo (re)
+
+Exit code:
+
+  $ false
+  [1]
--- a/tests/test-simple-update.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-simple-update.t	Fri Sep 24 19:47:50 2010 -0300
@@ -1,5 +1,3 @@
-  $ set -e
-
   $ mkdir test
   $ cd test
   $ echo foo>foo
--- a/tests/test-status-color.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-status-color.t	Fri Sep 24 19:47:50 2010 -0300
@@ -214,11 +214,10 @@
   $ assert() {
   >     hg status --color=always $1 > ../a
   >     hg status --color=always $2 > ../b
-  >     out=`diff ../a ../b`
-  >     if [ $? -ne 0 ]; then
+  >     if diff ../a ../b > /dev/null; then
+  >         out=0
+  >     else
   >         out=1
-  >     else
-  >         out=0
   >     fi
   >     if [ $3 -eq 0 ]; then
   >         df="same"
--- a/tests/test-status.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-status.t	Fri Sep 24 19:47:50 2010 -0300
@@ -196,13 +196,12 @@
 If result is not as expected, raise error
 
   $ assert() {
-  >    hg status $1 > ../a
-  >    hg status $2 > ../b
-  >     out=`diff ../a ../b`
-  >     if [ $? -ne 0 ]; then
+  >     hg status $1 > ../a
+  >     hg status $2 > ../b
+  >     if diff ../a ../b > /dev/null; then
+  >         out=0
+  >     else
   >         out=1
-  >     else
-  >         out=0
   >     fi
   >     if [ $3 -eq 0 ]; then
   >         df="same"
--- a/tests/test-subrepo-deep-nested-change.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-subrepo-deep-nested-change.t	Fri Sep 24 19:47:50 2010 -0300
@@ -27,7 +27,7 @@
   $ echo "sub1 = ../sub1" > main/.hgsub
   $ hg clone sub1 main/sub1
   updating to branch default
-  pulling subrepo sub2 from .*/sub2
+  pulling subrepo sub2 from */sub2 (glob)
   requesting all changes
   adding changesets
   adding manifests
@@ -55,13 +55,13 @@
 
   $ hg clone main cloned
   updating to branch default
-  pulling subrepo sub1 from .*/sub1
+  pulling subrepo sub1 from */sub1 (glob)
   requesting all changes
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 3 changes to 3 files
-  pulling subrepo sub1/sub2 from .*/sub2
+  pulling subrepo sub1/sub2 from */sub2 (glob)
   requesting all changes
   adding changesets
   adding manifests
--- a/tests/test-subrepo-paths.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-subrepo-paths.t	Fri Sep 24 19:47:50 2010 -0300
@@ -28,5 +28,5 @@
   > .* = \1
   > EOF
   $ hg debugsub
-  abort: bad subrepository pattern in .*/test-subrepo-paths.t/outer/.hg/hgrc:2: invalid group reference
+  abort: bad subrepository pattern in */test-subrepo-paths.t/outer/.hg/hgrc:2: invalid group reference (glob)
   [255]
--- a/tests/test-subrepo-recursion.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-subrepo-recursion.t	Fri Sep 24 19:47:50 2010 -0300
@@ -230,18 +230,18 @@
 Test archiving to a directory tree:
 
   $ hg archive --subrepos ../archive
-  $ find ../archive
+  $ find ../archive | sort
   ../archive
+  ../archive/.hg_archival.txt
+  ../archive/.hgsub
+  ../archive/.hgsubstate
   ../archive/foo
+  ../archive/foo/.hgsub
+  ../archive/foo/.hgsubstate
   ../archive/foo/bar
   ../archive/foo/bar/z.txt
-  ../archive/foo/.hgsubstate
-  ../archive/foo/.hgsub
   ../archive/foo/y.txt
   ../archive/x.txt
-  ../archive/.hgsubstate
-  ../archive/.hgsub
-  ../archive/.hg_archival.txt
 
 Test archiving to zip file (unzip output is unstable):
 
@@ -252,13 +252,13 @@
   $ cd ..
   $ hg clone repo repo2
   updating to branch default
-  pulling subrepo foo from .*/test-subrepo-recursion.t/repo/foo
+  pulling subrepo foo from */test-subrepo-recursion.t/repo/foo (glob)
   requesting all changes
   adding changesets
   adding manifests
   adding file changes
   added 4 changesets with 7 changes to 3 files
-  pulling subrepo foo/bar from .*/test-subrepo-recursion.t/repo/foo/bar
+  pulling subrepo foo/bar from */test-subrepo-recursion.t/repo/foo/bar (glob)
   requesting all changes
   adding changesets
   adding manifests
@@ -267,15 +267,16 @@
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ cd repo2
   $ hg outgoing -S
-  comparing with .*/test-subrepo-recursion.t/repo
+  comparing with */test-subrepo-recursion.t/repo (glob)
   searching for changes
   no changes found
-  comparing with .*/test-subrepo-recursion.t/repo/foo
+  comparing with */test-subrepo-recursion.t/repo/foo (glob)
+  searching for changes
+  no changes found
+  comparing with */test-subrepo-recursion.t/repo/foo/bar (glob)
   searching for changes
   no changes found
   [1]
-  $ echo $?
-  0
 
 Make nested change:
 
@@ -292,7 +293,7 @@
   $ hg commit -m 3-4-2
   committing subrepository foo
   $ hg outgoing -S
-  comparing with .*/test-subrepo-recursion.t/repo
+  comparing with */test-subrepo-recursion.t/repo (glob)
   searching for changes
   changeset:   3:2655b8ecc4ee
   tag:         tip
@@ -300,7 +301,7 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     3-4-2
   
-  comparing with .*/test-subrepo-recursion.t/repo/foo
+  comparing with */test-subrepo-recursion.t/repo/foo (glob)
   searching for changes
   changeset:   4:e96193d6cb36
   tag:         tip
@@ -308,6 +309,9 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     3-4-2
   
+  comparing with */test-subrepo-recursion.t/repo/foo/bar (glob)
+  searching for changes
+  no changes found
 
 Switch to original repo and setup default path:
 
@@ -318,7 +322,7 @@
 Test incoming:
 
   $ hg incoming -S
-  comparing with .*/test-subrepo-recursion.t/repo2
+  comparing with */test-subrepo-recursion.t/repo2 (glob)
   searching for changes
   changeset:   3:2655b8ecc4ee
   tag:         tip
@@ -326,7 +330,7 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     3-4-2
   
-  comparing with .*/test-subrepo-recursion.t/repo2/foo
+  comparing with */test-subrepo-recursion.t/repo2/foo (glob)
   searching for changes
   changeset:   4:e96193d6cb36
   tag:         tip
@@ -334,6 +338,10 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     3-4-2
   
+  comparing with */test-subrepo-recursion.t/repo2/foo/bar (glob)
+  searching for changes
+  no changes found
+
   $ hg incoming -S --bundle incoming.hg
   abort: cannot combine --bundle and --subrepos
   [255]
--- a/tests/test-subrepo-relative-path.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-subrepo-relative-path.t	Fri Sep 24 19:47:50 2010 -0300
@@ -44,7 +44,7 @@
   adding file changes
   added 1 changesets with 3 changes to 3 files
   updating to branch default
-  pulling subrepo sub from http://localhost:[0-9]+/sub
+  pulling subrepo sub from http://localhost:[0-9]+/sub (re)
   requesting all changes
   adding changesets
   adding manifests
--- a/tests/test-subrepo-svn.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-subrepo-svn.t	Fri Sep 24 19:47:50 2010 -0300
@@ -5,18 +5,12 @@
   >     tr '\\' /
   > }
 
-  $ escapedwd=`pwd | fix_path`
-
 SVN wants all paths to start with a slash. Unfortunately, Windows ones
 don't. Handle that.
 
-  $ expr "$escapedwd" : "\/" > /dev/null
-  $ if [ $? -ne 0 ]; then
-  >     escapedwd="/$escapedwd"
-  > fi
+  $ escapedwd=`pwd | fix_path`
+  $ expr "$escapedwd" : / > /dev/null || escapedwd="/$escapedwd"
   $ escapedwd=`python -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$escapedwd"`
-  $ filterpath="s|$escapedwd|/root|"
-  $ filteroutofdate='s/ in transaction.*/ is out of date/;s/Out of date: /File /'
 
 create subversion repo
 
@@ -77,29 +71,28 @@
 
 debugsub
 
-  $ hg debugsub | sed "$filterpath"
+  $ hg debugsub
   path s
-   source   file:///root/svn-repo/src
+   source   file:///*/svn-repo/src (glob)
    revision 2
 
 change file in svn and hg, commit
 
   $ echo a >> a
   $ echo alpha >> s/alpha
-  $ hg commit -m 'Message!' \
-  >     | sed 's:Sending.*s/alpha:Sending        s/alpha:g'
+  $ hg commit -m 'Message!'
   committing subrepository s
-  Sending        s/alpha
+  Sending*s/alpha (glob)
   Transmitting file data .
   Committed revision 3.
   
-  Fetching external item into '.*/s/externals'
+  Fetching external item into '*/s/externals' (glob)
   External at revision 1.
   
   At revision 3.
-  $ hg debugsub | sed "$filterpath"
+  $ hg debugsub
   path s
-   source   file:///root/svn-repo/src
+   source   file:///*/svn-repo/src (glob)
    revision 3
 
   $ echo a > s/a
@@ -131,20 +124,22 @@
 this commit from hg will fail
 
   $ echo zzz >> s/alpha
-  $ hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate"
+  $ hg ci -m 'amend alpha from hg'
   committing subrepository s
   abort: svn: Commit failed (details follow):
-  svn: File '/src/alpha' is out of date
+  svn: (Out of date)?.*/src/alpha.*(is out of date)? (re)
+  [255]
   $ svn revert -q s/alpha
 
 this commit fails because of meta changes
 
   $ svn propset svn:mime-type 'text/html' s/alpha
   property 'svn:mime-type' set on 's/alpha'
-  $ hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate"
+  $ hg ci -m 'amend alpha from hg'
   committing subrepository s
   abort: svn: Commit failed (details follow):
-  svn: File '/src/alpha' is out of date
+  svn: (Out of date)?.*/src/alpha.*(is out of date)? (re)
+  [255]
   $ svn revert -q s/alpha
 
 this commit fails because of externals changes
@@ -195,9 +190,9 @@
 
 debugsub in clone
 
-  $ hg debugsub | sed "$filterpath"
+  $ hg debugsub
   path s
-   source   file:///root/svn-repo/src
+   source   file:///*/svn-repo/src (glob)
    revision 3
 
 verify subrepo is contained within the repo directory
--- a/tests/test-subrepo.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-subrepo.t	Fri Sep 24 19:47:50 2010 -0300
@@ -17,7 +17,7 @@
   $ hg init s
   $ echo a > s/a
 
-issue2232 - committing a subrepo without .hgsub
+Issue2232: committing a subrepo without .hgsub
 
   $ hg ci -mbad s
   abort: can't commit subrepos without .hgsub
@@ -34,7 +34,7 @@
   $ hg ci -m1
   committing subrepository s
 
-issue 2022 - update -C
+Issue2022: update -C
 
   $ echo b > s/a
   $ hg sum
@@ -236,19 +236,19 @@
   $ cd ..
   $ hg clone t tc
   updating to branch default
-  pulling subrepo s from .*/sub/t/s
+  pulling subrepo s from */sub/t/s (glob)
   requesting all changes
   adding changesets
   adding manifests
   adding file changes
   added 4 changesets with 5 changes to 3 files
-  pulling subrepo s/ss from .*/sub/t/s/ss
+  pulling subrepo s/ss from */sub/t/s/ss (glob)
   requesting all changes
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files
-  pulling subrepo t from .*/sub/t/t
+  pulling subrepo t from */sub/t/t (glob)
   requesting all changes
   adding changesets
   adding manifests
@@ -270,14 +270,14 @@
   $ hg ci -m11
   committing subrepository t
   $ hg push
-  pushing .*sub/t
-  pushing .*sub/t/s/ss
+  pushing *sub/t (glob)
+  pushing *sub/t/s/ss (glob)
   searching for changes
   no changes found
-  pushing .*sub/t/s
+  pushing *sub/t/s (glob)
   searching for changes
   no changes found
-  pushing .*sub/t/t
+  pushing *sub/t/t (glob)
   searching for changes
   adding changesets
   adding manifests
@@ -295,27 +295,27 @@
   $ hg ci -m12
   committing subrepository s
   $ hg push
-  pushing .*sub/t
-  pushing .*sub/t/s/ss
+  pushing *sub/t (glob)
+  pushing *sub/t/s/ss (glob)
   searching for changes
   no changes found
-  pushing .*sub/t/s
+  pushing *sub/t/s (glob)
   searching for changes
   abort: push creates new remote heads on branch 'default'!
   (did you forget to merge? use push -f to force)
   [255]
   $ hg push -f
-  pushing .*sub/t
-  pushing .*sub/t/s/ss
+  pushing *sub/t (glob)
+  pushing *sub/t/s/ss (glob)
   searching for changes
   no changes found
-  pushing .*sub/t/s
+  pushing *sub/t/s (glob)
   searching for changes
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
-  pushing .*sub/t/t
+  pushing *sub/t/t (glob)
   searching for changes
   no changes found
   searching for changes
@@ -337,7 +337,7 @@
 
   $ cd ../tc
   $ hg pull
-  pulling .*sub/t
+  pulling *sub/t (glob)
   searching for changes
   adding changesets
   adding manifests
@@ -348,7 +348,7 @@
 should pull t
 
   $ hg up
-  pulling subrepo t from .*/sub/t/t
+  pulling subrepo t from */sub/t/t (glob)
   searching for changes
   adding changesets
   adding manifests
@@ -365,7 +365,8 @@
   abort: missing ] in subrepo source
   [255]
 
-issue 1986
+Issue1986: merge aborts when trying to merge a subrepo that
+shouldn't need merging
 
 # subrepo layout
 #
@@ -541,12 +542,12 @@
   $ cat mercurial2/main/nested_absolute/.hg/hgrc \
   >     mercurial2/main/nested_relative/.hg/hgrc
   [paths]
-  default = .*/test-subrepo.t/sub/mercurial/nested_absolute
+  default = */test-subrepo.t/sub/mercurial/nested_absolute (glob)
   [paths]
-  default = .*/test-subrepo.t/sub/mercurial/nested_relative
+  default = */test-subrepo.t/sub/mercurial/nested_relative (glob)
   $ rm -rf mercurial mercurial2
 
-issue 1977
+Issue1977: multirepo push should fail if subrepo push fails
 
   $ hg init repo
   $ hg init repo/s
@@ -559,7 +560,7 @@
   committing subrepository s
   $ hg clone repo repo2
   updating to branch default
-  pulling subrepo s from .*/sub/repo/s
+  pulling subrepo s from */sub/repo/s (glob)
   requesting all changes
   adding changesets
   adding manifests
--- a/tests/test-symlinks.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-symlinks.t	Fri Sep 24 19:47:50 2010 -0300
@@ -240,7 +240,7 @@
   dangling2 -> void
 
 
-issue995
+Issue995: hg copy -A incorrectly handles symbolic links
 
   $ hg up -C
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
--- a/tests/test-tag.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-tag.t	Fri Sep 24 19:47:50 2010 -0300
@@ -32,30 +32,30 @@
   
 
   $ echo foo >> .hgtags
-  $ hg tag "bleah2" || echo "failed"
+  $ hg tag "bleah2"
   abort: working copy of .hgtags is changed (please commit .hgtags manually)
-  failed
+  [255]
 
   $ hg revert .hgtags
-  $ hg tag -r 0 x y z y y z || echo "failed"
+  $ hg tag -r 0 x y z y y z
   abort: tag names must be unique
-  failed
-  $ hg tag tap nada dot tip null . || echo "failed"
+  [255]
+  $ hg tag tap nada dot tip null .
   abort: the name 'tip' is reserved
-  failed
-  $ hg tag "bleah" || echo "failed"
+  [255]
+  $ hg tag "bleah"
   abort: tag 'bleah' already exists (use -f to force)
-  failed
-  $ hg tag "blecch" "bleah" || echo "failed"
+  [255]
+  $ hg tag "blecch" "bleah"
   abort: tag 'bleah' already exists (use -f to force)
-  failed
+  [255]
 
-  $ hg tag --remove "blecch" || echo "failed"
+  $ hg tag --remove "blecch"
   abort: tag 'blecch' does not exist
-  failed
-  $ hg tag --remove "bleah" "blecch" "blough" || echo "failed"
+  [255]
+  $ hg tag --remove "bleah" "blecch" "blough"
   abort: tag 'blecch' does not exist
-  failed
+  [255]
 
   $ hg tag -r 0 "bleah0"
   $ hg tag -l -r 1 "bleah1"
@@ -148,7 +148,8 @@
 
   $ cd test
 
-issue 601
+Issue601: hg tag doesn't do the right thing if .hgtags or localtags
+doesn't end with EOL
 
   $ python << EOF
   > f = file('.hg/localtags'); last = f.readlines()[-1][:-1]; f.close()
--- a/tests/test-tags.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-tags.t	Fri Sep 24 19:47:50 2010 -0300
@@ -123,7 +123,7 @@
   $ echo "spam" >> .hgtags
   $ echo >> .hgtags
   $ echo "foo bar" >> .hgtags
-  $ echo "$T invalid" | sed "s/..../a5a5/" >> .hg/localtags
+  $ echo "a5a5 invalid" >> .hg/localtags
   $ echo "committing .hgtags:"
   committing .hgtags:
   $ cat .hgtags 
@@ -299,7 +299,7 @@
 Strip 1: expose an old head:
 
   $ hg --config extensions.mq= strip 5
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
   $ hg tags                  # partly stale cache
   tip                                5:735c3ca72986
   bar                                1:78391a272241
@@ -310,7 +310,7 @@
 Strip 2: destroy whole branch, no old head exposed
 
   $ hg --config extensions.mq= strip 4
-  saved backup bundle to .*
+  saved backup bundle to * (glob)
   $ hg tags                  # partly stale
   tip                                4:735c3ca72986
   bar                                0:bbd179dfa0a7
--- a/tests/test-transplant.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-transplant.t	Fri Sep 24 19:47:50 2010 -0300
@@ -236,8 +236,7 @@
   foo
   $ cd ..
 
-Test transplant --merge (issue 1111)
-test transplant merge
+Issue1111: Test transplant --merge
 
   $ hg init t1111
   $ cd t1111
@@ -285,16 +284,16 @@
   > EOF
   $ chmod +x test-filter
   $ hg transplant -s ../t -b tip -a --filter ./test-filter
-  filtering .*
+  filtering * (glob)
   applying 17ab29e464c6
   17ab29e464c6 transplanted to e9ffc54ea104
-  filtering .*
+  filtering * (glob)
   applying 37a1297eb21b
   37a1297eb21b transplanted to 348b36d0b6a5
-  filtering .*
+  filtering * (glob)
   applying 722f4667af76
   722f4667af76 transplanted to 0aa6979afb95
-  filtering .*
+  filtering * (glob)
   applying a53251cdf717
   a53251cdf717 transplanted to 14f8512272b5
   $ hg log --template '{rev} {parents} {desc}\n'
@@ -316,7 +315,7 @@
   adding test-filter
   created new head
   $ hg transplant 1 --filter ./test-filter
-  filtering .*
+  filtering * (glob)
   applying 348b36d0b6a5
   file b1 already exists
   1 out of 1 hunks FAILED -- saving rejects to file b1.rej
--- a/tests/test-up-local-change.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-up-local-change.t	Fri Sep 24 19:47:50 2010 -0300
@@ -84,9 +84,9 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     1
   
-  $ hg --debug merge || echo failed
+  $ hg --debug merge
   abort: there is nothing to merge - use "hg update" instead
-  failed
+  [255]
   $ hg parents
   changeset:   0:c19d34741b0a
   user:        test
@@ -166,12 +166,12 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     2
   
-  $ hg --debug up || echo failed
+  $ hg --debug up
   abort: crosses branches (use 'hg merge' to merge or use 'hg update -C' to discard changes)
-  failed
-  $ hg --debug merge || echo failed
+  [255]
+  $ hg --debug merge
   abort: outstanding uncommitted changes (use 'hg status' to list changes)
-  failed
+  [255]
   $ hg --debug merge -f
     searching for copies back to rev 1
   resolving manifests
--- a/tests/test-url-rev.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-url-rev.t	Fri Sep 24 19:47:50 2010 -0300
@@ -42,7 +42,7 @@
   
   $ cat clone/.hg/hgrc
   [paths]
-  default = .*/repo#foo
+  default = */repo#foo (glob)
 
 Changing original repo:
 
--- a/tests/test-walk.t	Fri Sep 24 02:17:54 2010 +0200
+++ b/tests/test-walk.t	Fri Sep 24 19:47:50 2010 -0300
@@ -216,7 +216,7 @@
   f  beans/pinto     beans/pinto
   f  beans/turtle    beans/turtle
   $ hg debugwalk `pwd`/..
-  abort: .*/.. not under root
+  abort: */.. not under root (glob)
   [255]
 
 Test patterns: