changeset 9233:d8244ebcedc2

Merge with i18n
author Matt Mackall <mpm@selenic.com>
date Thu, 23 Jul 2009 15:25:47 -0500
parents 2250b5f1ab76 (diff) 7ee61afc655f (current diff)
children 65719472bfa2 b6cb3af61582
files
diffstat 33 files changed, 220 insertions(+), 93 deletions(-) [+]
line wrap: on
line diff
--- a/.hgsigs	Tue Jul 21 15:47:13 2009 +0200
+++ b/.hgsigs	Thu Jul 23 15:25:47 2009 -0500
@@ -13,3 +13,4 @@
 11efa41037e280d08cfb07c09ad485df30fb0ea8 0 iEYEABECAAYFAkmvJRQACgkQywK+sNU5EO9XZwCeLMgDgPSMWMm6vgjL4lDs2pEc5+0AnRxfiFbpbBfuEFTqKz9nbzeyoBlx
 02981000012e3adf40c4849bd7b3d5618f9ce82d 0 iEYEABECAAYFAknEH3wACgkQywK+sNU5EO+uXwCeI+LbLMmhjU1lKSfU3UWJHjjUC7oAoIZLvYDGOL/tNZFUuatc3RnZ2eje
 196d40e7c885fa6e95f89134809b3ec7bdbca34b 0 iEYEABECAAYFAkpL2X4ACgkQywK+sNU5EO9FOwCfXJycjyKJXsvQqKkHrglwOQhEKS4An36GfKzptfN8b1qNc3+ya/5c2WOM
+3ef6c14a1e8e83a31226f5881b7fe6095bbfa6f6 0 iEYEABECAAYFAkpopLIACgkQywK+sNU5EO8QSgCfZ0ztsd071rOa2lhmp9Fyue/WoI0AoLTei80/xrhRlB8L/rZEf2KBl8dA
--- a/.hgtags	Tue Jul 21 15:47:13 2009 +0200
+++ b/.hgtags	Thu Jul 23 15:25:47 2009 -0500
@@ -25,3 +25,4 @@
 11efa41037e280d08cfb07c09ad485df30fb0ea8 1.2
 02981000012e3adf40c4849bd7b3d5618f9ce82d 1.2.1
 196d40e7c885fa6e95f89134809b3ec7bdbca34b 1.3
+3ef6c14a1e8e83a31226f5881b7fe6095bbfa6f6 1.3.1
--- a/contrib/win32/win32-build.txt	Tue Jul 21 15:47:13 2009 +0200
+++ b/contrib/win32/win32-build.txt	Thu Jul 23 15:25:47 2009 -0500
@@ -21,6 +21,9 @@
   The py2exe distutils extension
       http://sourceforge.net/projects/py2exe/
 
+  GnuWin32 gettext utility
+      http://gnuwin32.sourceforge.net/packages/gettext.htm
+
   Inno Setup
       http://www.jrsoftware.org/isinfo.php
 
--- a/doc/gendoc.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/doc/gendoc.py	Thu Jul 23 15:25:47 2009 -0500
@@ -1,6 +1,8 @@
-import sys, textwrap
+import os, sys, textwrap
 # import from the live mercurial repo
 sys.path.insert(0, "..")
+# fall back to pure modules if required C extensions are not available
+sys.path.append(os.path.join('..', 'mercurial', 'pure'))
 from mercurial import demandimport; demandimport.enable()
 from mercurial.commands import table, globalopts
 from mercurial.i18n import gettext, _
--- a/doc/hgignore.5.txt	Tue Jul 21 15:47:13 2009 +0200
+++ b/doc/hgignore.5.txt	Thu Jul 23 15:25:47 2009 -0500
@@ -12,22 +12,36 @@
 --------
 
 The Mercurial system uses a file called `.hgignore` in the root
-directory of a repository to control its behavior when it finds files
-that it is not currently managing.
+directory of a repository to control its behavior when it searches
+for files that it is not currently tracking.
 
 DESCRIPTION
 -----------
 
-Mercurial ignores every unmanaged file that matches any pattern in an
-ignore file. The patterns in an ignore file do not apply to files
-managed by Mercurial. To control Mercurial's handling of files that it
-manages, see the hg(1) man page. Look for the "-I" and "-X" options.
+The working directory of a Mercurial repository will often contain
+files that should not be tracked by Mercurial. These include backup
+files created by editors and build products created by compilers.
+These files can be ignored by listing them in a `.hgignore` file in
+the root of the working directory. The `.hgignore` file must be
+created manually. It is typically put under version control, so that
+the settings will propagate to other repositories with push and pull.
 
-In addition, a Mercurial configuration file can point to a set of
+An untracked file is ignored if its path relative to the repository
+root directory, or any prefix path of that path, is matched against
+any pattern in `.hgignore`.
+
+For example, say we have an an untracked file, `file.c`, at 
+`a/b/file.c` inside our repository. Mercurial will ignore `file.c` if
+any pattern in `.hgignore` matches `a/b/file.c`, `a/b` or `a`.
+
+In addition, a Mercurial configuration file can reference a set of
 per-user or global ignore files. See the hgrc(5) man page for details
 of how to configure these files. Look for the "ignore" entry in the
 "ui" section.
 
+To control Mercurial's handling of files that it manages, see the
+hg(1) man page. Look for the "-I" and "-X" options.
+
 SYNTAX
 ------
 
--- a/hgext/convert/subversion.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/hgext/convert/subversion.py	Thu Jul 23 15:25:47 2009 -0500
@@ -455,8 +455,9 @@
                 # Here/tags/tag.1 discarded as well as its children.
                 # It happens with tools like cvs2svn. Such tags cannot
                 # be represented in mercurial.
-                addeds = dict((p, e.copyfrom_path) for p, e
-                              in origpaths.iteritems() if e.action == 'A')
+                addeds = dict((p, e.copyfrom_path) for p, e 
+                              in origpaths.iteritems() 
+                              if e.action == 'A' and e.copyfrom_path)
                 badroots = set()
                 for destroot in addeds:
                     for source, sourcerev, dest in pendings:
--- a/hgext/fetch.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/hgext/fetch.py	Thu Jul 23 15:25:47 2009 -0500
@@ -121,14 +121,14 @@
             err = hg.merge(repo, secondparent, remind=False)
 
         if not err:
+            # we don't translate commit messages
             message = (cmdutil.logmessage(opts) or
-                       (_('Automated merge with %s') %
+                       ('Automated merge with %s' %
                         url.removeauth(other.url())))
             editor = cmdutil.commiteditor
             if opts.get('force_editor') or opts.get('edit'):
                 editor = cmdutil.commitforceeditor
-            n = repo.commit(message, opts['user'], opts['date'],
-                            force=True, editor=editor)
+            n = repo.commit(message, opts['user'], opts['date'], editor=editor)
             ui.status(_('new changeset %d:%s merges remote changes '
                         'with local\n') % (repo.changelog.rev(n),
                                            short(n)))
--- a/hgext/gpg.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/hgext/gpg.py	Thu Jul 23 15:25:47 2009 -0500
@@ -251,7 +251,8 @@
 
     message = opts['message']
     if not message:
-        message = "\n".join([_("Added signature for changeset %s")
+        # we don't translate commit messages
+        message = "\n".join(["Added signature for changeset %s"
                              % hgnode.short(n)
                              for n in nodes])
     try:
--- a/hgext/graphlog.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/hgext/graphlog.py	Thu Jul 23 15:25:47 2009 -0500
@@ -22,9 +22,11 @@
 
 ASCIIDATA = 'ASC'
 
-def asciiformat(ui, repo, revdag, opts):
+def asciiformat(ui, repo, revdag, opts, parentrepo=None):
     """formats a changelog DAG walk for ASCII output"""
-    showparents = [ctx.node() for ctx in repo[None].parents()]
+    if parentrepo is None:
+        parentrepo = repo
+    showparents = [ctx.node() for ctx in parentrepo[None].parents()]
     displayer = show_changeset(ui, repo, opts, buffered=True)
     for (id, type, ctx, parentids) in revdag:
         if type != graphmod.CHANGESET:
@@ -341,7 +343,7 @@
 
         chlist = other.changelog.nodesbetween(incoming, revs)[0]
         revdag = graphrevs(other, chlist, opts)
-        fmtdag = asciiformat(ui, repo, revdag, opts)
+        fmtdag = asciiformat(ui, other, revdag, opts, parentrepo=repo)
         ascii(ui, asciiedges(fmtdag))
 
     finally:
--- a/hgext/keyword.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/hgext/keyword.py	Thu Jul 23 15:25:47 2009 -0500
@@ -529,7 +529,7 @@
     'kwdemo':
         (demo,
          [('d', 'default', None, _('show default keyword template maps')),
-          ('f', 'rcfile', [], _('read maps from rcfile'))],
+          ('f', 'rcfile', '', _('read maps from rcfile'))],
          _('hg kwdemo [-d] [-f RCFILE] [TEMPLATEMAP]...')),
     'kwexpand': (expand, commands.walkopts,
                  _('hg kwexpand [OPTION]... [FILE]...')),
--- a/hgext/rebase.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/hgext/rebase.py	Thu Jul 23 15:25:47 2009 -0500
@@ -163,6 +163,7 @@
     newrev = nullrev
     try:
         if last:
+            # we don't translate commit messages
             commitmsg = 'Collapsed revision'
             for rebased in state:
                 if rebased not in skipped:
--- a/hgext/transplant.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/hgext/transplant.py	Thu Jul 23 15:25:47 2009 -0500
@@ -206,6 +206,7 @@
             (user, date, message) = self.filter(filter, cl, patchfile)
 
         if log:
+            # we don't translate messages inserted into commits
             message += '\n(transplanted from %s)' % revlog.hex(node)
 
         self.ui.status(_('applying %s\n') % revlog.short(node))
--- a/hgext/win32mbcs.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/hgext/win32mbcs.py	Thu Jul 23 15:25:47 2009 -0500
@@ -52,6 +52,9 @@
         return tuple(map(decode, arg))
     elif isinstance(arg, list):
         return map(decode, arg)
+    elif isinstance(arg, dict):
+        for k, v in arg.items():
+            arg[k] = decode(v)
     return arg
 
 def encode(arg):
@@ -61,29 +64,50 @@
         return tuple(map(encode, arg))
     elif isinstance(arg, list):
         return map(encode, arg)
+    elif isinstance(arg, dict):
+        for k, v in arg.items():
+            arg[k] = encode(v)
     return arg
 
-def wrapper(func, args):
+def appendsep(s):
+    # ensure the path ends with os.sep, appending it if necessary.
+    try:
+        us = decode(s)
+    except UnicodeError:
+        us = s
+    if us and us[-1] not in ':/\\':
+        s += os.sep
+    return s
+
+def wrapper(func, args, kwds):
     # check argument is unicode, then call original
     for arg in args:
         if isinstance(arg, unicode):
-            return func(*args)
+            return func(*args, **kwds)
 
     try:
         # convert arguments to unicode, call func, then convert back
-        return encode(func(*decode(args)))
+        return encode(func(*decode(args), **decode(kwds)))
     except UnicodeError:
-        # If not encoded with encoding.encoding, report it then
-        # continue with calling original function.
-        raise util.Abort(_("[win32mbcs] filename conversion fail with"
+        raise util.Abort(_("[win32mbcs] filename conversion failed with"
                          " %s encoding\n") % (encoding.encoding))
 
-def wrapname(name):
+def wrapperforlistdir(func, args, kwds):
+    # Ensure 'path' argument ends with os.sep to avoids
+    # misinterpreting last 0x5c of MBCS 2nd byte as path separator.
+    if args:
+        args = list(args)
+        args[0] = appendsep(args[0])
+    if kwds.has_key('path'):
+        kwds['path'] = appendsep(kwds['path'])
+    return func(*args, **kwds)
+
+def wrapname(name, wrapper):
     module, name = name.rsplit('.', 1)
     module = sys.modules[module]
     func = getattr(module, name)
-    def f(*args):
-        return wrapper(func, args)
+    def f(*args, **kwds):
+        return wrapper(func, args, kwds)
     try:
         f.__name__ = func.__name__                # fail with python23
     except Exception:
@@ -113,7 +137,8 @@
     # fake is only for relevant environment.
     if encoding.encoding.lower() in problematic_encodings.split():
         for f in funcs.split():
-            wrapname(f)
+            wrapname(f, wrapper)
+        wrapname("mercurial.osutil.listdir", wrapperforlistdir)
         ui.debug(_("[win32mbcs] activated with encoding: %s\n")
                  % encoding.encoding)
 
--- a/mercurial/commands.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/mercurial/commands.py	Thu Jul 23 15:25:47 2009 -0500
@@ -246,7 +246,8 @@
     commit_opts = opts.copy()
     commit_opts['addremove'] = False
     if not commit_opts['message'] and not commit_opts['logfile']:
-        commit_opts['message'] = _("Backed out changeset %s") % (short(node))
+        # we don't translate commit messages
+        commit_opts['message'] = "Backed out changeset %s" % (short(node))
         commit_opts['force_editor'] = True
     commit(ui, repo, **commit_opts)
     def nice(node):
@@ -1380,6 +1381,8 @@
     closed = opts.get('closed')
     hideinactive, _heads = opts.get('active'), None
     if not branchrevs:
+        if closed:
+            raise error.Abort(_('you must specify a branch to use --closed'))
         # Assume we're looking repo-wide heads if no revs were specified.
         heads = repo.heads(start)
     else:
@@ -1493,7 +1496,10 @@
             f = f.lstrip("^")
             if not ui.debugflag and f.startswith("debug"):
                 continue
-            doc = gettext(e[0].__doc__)
+            doc = e[0].__doc__
+            if doc and 'DEPRECATED' in doc and not ui.verbose:
+                continue
+            doc = gettext(doc)
             if not doc:
                 doc = _("(no help text available)")
             h[f] = doc.splitlines(0)[0].rstrip()
@@ -2911,7 +2917,8 @@
                     raise util.Abort(_('tag \'%s\' is not a local tag') % n)
         rev_ = nullid
         if not message:
-            message = _('Removed tag %s') % ', '.join(names)
+            # we don't translate commit messages
+            message = 'Removed tag %s' % ', '.join(names)
     elif not opts.get('force'):
         for n in names:
             if n in repo.tags():
@@ -2923,7 +2930,8 @@
     r = repo[rev_].node()
 
     if not message:
-        message = (_('Added tag %s for changeset %s') %
+        # we don't translate commit messages
+        message = ('Added tag %s for changeset %s' %
                    (', '.join(names), short(r)))
 
     date = opts.get('date')
@@ -3042,7 +3050,7 @@
             raise util.Abort(_("you can't specify a revision and a date"))
         rev = cmdutil.finddate(ui, repo, date)
 
-    if clean:
+    if clean or check:
         return hg.clean(repo, rev)
     else:
         return hg.update(repo, rev)
@@ -3204,7 +3212,7 @@
          [('a', 'active', False,
            _('show only branches that have unmerged heads')),
           ('c', 'closed', False,
-           _('show normal and closed heads'))],
+           _('show normal and closed branches'))],
          _('[-a]')),
     "bundle":
         (bundle,
@@ -3321,9 +3329,9 @@
         (heads,
          [('r', 'rev', '', _('show only heads which are descendants of REV')),
           ('a', 'active', False,
-           _('show only the active heads from open branches')),
+           _('show only the active branch heads from open branches')),
           ('c', 'closed', False,
-           _('show normal and closed heads')),
+           _('show normal and closed branch heads')),
          ] + templateopts,
          _('[-r STARTREV] [REV]...')),
     "help": (help_, [], _('[TOPIC]')),
--- a/mercurial/hgweb/hgwebdir_mod.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/mercurial/hgweb/hgwebdir_mod.py	Thu Jul 23 15:25:47 2009 -0500
@@ -6,7 +6,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2, incorporated herein by reference.
 
-import os, time
+import os, re, time
 from mercurial.i18n import _
 from mercurial import ui, hg, util, templater
 from mercurial import error, encoding
@@ -225,7 +225,9 @@
                     parts.insert(0, req.env['PATH_INFO'].rstrip('/'))
                 if req.env['SCRIPT_NAME']:
                     parts.insert(0, req.env['SCRIPT_NAME'])
-                url = ('/'.join(parts).replace("//", "/")) + '/'
+                m = re.match('((?:https?://)?)(.*)', '/'.join(parts))
+                # squish repeated slashes out of the path component
+                url = m.group(1) + re.sub('/+', '/', m.group(2)) + '/'
 
                 # update time with local timezone
                 try:
--- a/mercurial/localrepo.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/mercurial/localrepo.py	Thu Jul 23 15:25:47 2009 -0500
@@ -473,9 +473,8 @@
                 latest = newnodes.pop()
                 if latest not in bheads:
                     continue
-                reachable = set()
-                for bh in bheads:
-                    reachable |= self.changelog.reachable(latest, bh)
+                minbhrev = self[min([self[bh].rev() for bh in bheads])].node()
+                reachable = self.changelog.reachable(latest, minbhrev)
                 bheads = [b for b in bheads if b not in reachable]
                 newbheads.insert(0, latest)
             bheads.extend(newbheads)
--- a/mercurial/patch.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/mercurial/patch.py	Thu Jul 23 15:25:47 2009 -0500
@@ -1246,12 +1246,21 @@
     if not node1:
         node1 = repo.dirstate.parents()[0]
 
-    flcache = {}
-    def getfilectx(f, ctx):
-        flctx = ctx.filectx(f, filelog=flcache.get(f))
-        if f not in flcache:
-            flcache[f] = flctx._filelog
-        return flctx
+    def lrugetfilectx():
+        cache = {}
+        order = []
+        def getfilectx(f, ctx):
+            fctx = ctx.filectx(f, filelog=cache.get(f))
+            if f not in cache:
+                if len(cache) > 20:
+                    del cache[order.pop(0)]
+                cache[f] = fctx._filelog
+            else:
+                order.remove(f)
+            order.append(f)
+            return fctx
+        return getfilectx
+    getfilectx = lrugetfilectx()
 
     ctx1 = repo[node1]
     ctx2 = repo[node2]
--- a/mercurial/repair.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/mercurial/repair.py	Thu Jul 23 15:25:47 2009 -0500
@@ -112,7 +112,6 @@
         chgrpfile = _bundle(repo, savebases, saveheads, node, 'temp',
                             extranodes)
 
-    fs = [repo.file(name) for name in files]
     mfst = repo.manifest
 
     tr = repo.transaction()
@@ -121,8 +120,8 @@
     tr.startgroup()
     cl.strip(striprev, tr)
     mfst.strip(striprev, tr)
-    for f in fs:
-        f.strip(striprev, tr)
+    for fn in files:
+        repo.file(fn).strip(striprev, tr)
     tr.endgroup()
 
     try:
--- a/mercurial/store.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/mercurial/store.py	Thu Jul 23 15:25:47 2009 -0500
@@ -284,16 +284,17 @@
         self.pathjoiner = pathjoiner
         self.path = self.pathjoiner(path, 'store')
         self.createmode = _calcmode(self.path)
-        self._op = opener(self.path)
-        self._op.createmode = self.createmode
-        self.fncache = fncache(self._op)
+        op = opener(self.path)
+        op.createmode = self.createmode
+        fnc = fncache(op)
+        self.fncache = fnc
 
         def fncacheopener(path, mode='r', *args, **kw):
             if (mode not in ('r', 'rb')
                 and path.startswith('data/')
-                and path not in self.fncache):
-                    self.fncache.add(path)
-            return self._op(hybridencode(path), mode, *args, **kw)
+                and path not in fnc):
+                    fnc.add(path)
+            return op(hybridencode(path), mode, *args, **kw)
         self.opener = fncacheopener
 
     def join(self, f):
--- a/mercurial/subrepo.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/mercurial/subrepo.py	Thu Jul 23 15:25:47 2009 -0500
@@ -107,7 +107,12 @@
         source = repo._subsource
         if source.startswith('/') or '://' in source:
             return source
-        return os.path.join(_abssource(repo._subparent), repo._subsource)
+        parent = _abssource(repo._subparent)
+        if '://' in parent:
+            if parent[-1] == '/':
+                parent = parent[:-1]
+            return parent + '/' + source
+        return os.path.join(parent, repo._subsource)
     if push and repo.ui.config('paths', 'default-push'):
         return repo.ui.config('paths', 'default-push', repo.root)
     return repo.ui.config('paths', 'default', repo.root)
--- a/mercurial/url.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/mercurial/url.py	Thu Jul 23 15:25:47 2009 -0500
@@ -388,6 +388,7 @@
             if urlparts[0] == 'https': # only use CONNECT for HTTPS
                 if ':' in urlparts[1]:
                     realhost, realport = urlparts[1].split(':')
+                    realport = int(realport)
                 else:
                     realhost = urlparts[1]
                     realport = 443
--- a/mercurial/windows.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/mercurial/windows.py	Thu Jul 23 15:25:47 2009 -0500
@@ -41,6 +41,7 @@
             limit = 16000
             l = len(s)
             start = 0
+            self.softspace = 0;
             while start < l:
                 end = start + limit
                 self.fp.write(s[start:end])
--- a/setup.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/setup.py	Thu Jul 23 15:25:47 2009 -0500
@@ -62,7 +62,7 @@
             devnull = open('/dev/null', 'w')
             oldstderr = os.dup(sys.stderr.fileno())
             os.dup2(devnull.fileno(), sys.stderr.fileno())
-            objects = cc.compile([fname])
+            objects = cc.compile([fname], output_dir=tmpdir)
             cc.link_executable(objects, os.path.join(tmpdir, "a.out"))
         except:
             return False
@@ -248,6 +248,8 @@
 datafiles = []
 for root in ('templates', 'i18n'):
     for dir, dirs, files in os.walk(root):
+        dirs[:] = [x for x in dirs if not x.startswith('.')]
+        files = [x for x in files if not x.startswith('.')]
         datafiles.append((os.path.join('mercurial', dir),
                           [os.path.join(dir, file_) for file_ in files]))
 
--- a/tests/test-branches.out	Tue Jul 21 15:47:13 2009 +0200
+++ b/tests/test-branches.out	Thu Jul 23 15:25:47 2009 -0500
@@ -63,26 +63,7 @@
 c                              6:589736a22561 (inactive)
 a                              5:d8cbc61dbaa6 (inactive)
 default                        0:19709c5a4e75 (inactive)
-changeset:   10:bfbe841b666e
-branch:      b
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:09 1970 +0000
-summary:     adding another cset to branch b
-
-changeset:   8:eebb944467c9
-branch:      b
-parent:      4:aee39cd168d0
-user:        test
-date:        Thu Jan 01 00:00:07 1970 +0000
-summary:     adding cset to branch b
-
-changeset:   7:10ff5895aa57
-branch:      a branch name much longer than the default justification used by branches
-user:        test
-date:        Thu Jan 01 00:00:06 1970 +0000
-summary:     Adding d branch
-
+abort: you must specify a branch to use --closed
 changeset:   10:bfbe841b666e
 branch:      b
 tag:         tip
--- a/tests/test-demandimport.py	Tue Jul 21 15:47:13 2009 +0200
+++ b/tests/test-demandimport.py	Thu Jul 23 15:25:47 2009 -0500
@@ -36,5 +36,5 @@
 print "fred =", f(fred)
 
 print "re =", f(re)
-print "re.stdout =", f(re.stdout)
+print "re.stderr =", f(re.stderr)
 print "re =", f(re)
--- a/tests/test-demandimport.py.out	Tue Jul 21 15:47:13 2009 +0200
+++ b/tests/test-demandimport.py.out	Thu Jul 23 15:25:47 2009 -0500
@@ -11,5 +11,5 @@
 fred.sub = <function sub at 0x?>
 fred = <proxied module 're'>
 re = <unloaded module 'sys'>
-re.stdout = <open file '<stdout>', mode 'w' at 0x?>
+re.stderr = <open file '<stderr>', mode 'w' at 0x?>
 re = <proxied module 'sys'>
--- a/tests/test-extension	Tue Jul 21 15:47:13 2009 +0200
+++ b/tests/test-extension	Thu Jul 23 15:25:47 2009 -0500
@@ -73,11 +73,25 @@
     "yet another debug command"
     pass
 
-cmdtable = {"debugfoobar": (debugfoobar, (), "hg debugfoobar")}
+def foo(ui, repo, *args, **opts):
+    """yet another foo command
+
+    This command has been DEPRECATED since forever.
+    """
+    pass
+
+cmdtable = {
+    "debugfoobar": (debugfoobar, (), "hg debugfoobar"),
+    "foo": (foo, (), "hg foo")
+}
 EOF
 debugpath=`pwd`/debugextension.py
 echo "debugextension = $debugpath" >> $HGRCPATH
+echo "% hg help"
 hg help debugextension
+echo "% hg help --verbose"
+hg --verbose help debugextension
+echo "% hg help --debug"
 hg --debug help debugextension
 echo 'debugextension = !' >> $HGRCPATH
 
--- a/tests/test-extension.out	Tue Jul 21 15:47:13 2009 +0200
+++ b/tests/test-extension.out	Thu Jul 23 15:25:47 2009 -0500
@@ -19,15 +19,47 @@
 empty extension - empty cmdtable
 
 no commands defined
+% hg help
 debugextension extension - only debugcommands
 
 no commands defined
+% hg help --verbose
+debugextension extension - only debugcommands
+
+list of commands:
+
+ foo:
+      yet another foo command
+
+enabled extensions:
+
+ debugextension   only debugcommands
+
+global options:
+ -R --repository      repository root directory or symbolic path name
+    --cwd             change working directory
+ -y --noninteractive  do not prompt, assume 'yes' for any required answers
+ -q --quiet           suppress output
+ -v --verbose         enable additional output
+    --config          set/override config option
+    --debug           enable debugging output
+    --debugger        start debugger
+    --encoding        set the charset encoding (default: ascii)
+    --encodingmode    set the charset encoding mode (default: strict)
+    --traceback       print traceback on exception
+    --time            time how long the command takes
+    --profile         print command execution profile
+    --version         output version information and exit
+ -h --help            display help and exit
+% hg help --debug
 debugextension extension - only debugcommands
 
 list of commands:
 
  debugfoobar:
       yet another debug command
+ foo:
+      yet another foo command
 
 enabled extensions:
 
--- a/tests/test-fetch	Tue Jul 21 15:47:13 2009 +0200
+++ b/tests/test-fetch	Thu Jul 23 15:25:47 2009 -0500
@@ -194,7 +194,7 @@
 hg --cwd i1726r1 ci -m second
 echo c > i1726r2/a
 hg --cwd i1726r2 ci -m third
-HGMERGE=true hg --cwd i1726r2 fetch ../i1726r1 | sed 's/new changeset 3:[0-9a-zA-Z]\+/new changeset 3/'
+HGMERGE=true hg --cwd i1726r2 fetch ../i1726r1 | sed 's/new changeset 3:[0-9a-zA-Z]* /new changeset 3 /'
 hg --cwd i1726r2 heads default --template '{rev}\n'
 
 "$TESTDIR/killdaemons.py"
--- a/tests/test-glog	Tue Jul 21 15:47:13 2009 +0200
+++ b/tests/test-glog	Thu Jul 23 15:25:47 2009 -0500
@@ -169,6 +169,6 @@
 cd ..
 hg clone -U -r31 repo repo2
 cd repo2
-hg incoming -q --graph
+hg incoming --graph ../repo
 cd ..
 hg -R repo outgoing --graph repo2
--- a/tests/test-glog.out	Tue Jul 21 15:47:13 2009 +0200
+++ b/tests/test-glog.out	Thu Jul 23 15:25:47 2009 -0500
@@ -581,13 +581,33 @@
 adding manifests
 adding file changes
 added 31 changesets with 31 changes to 1 files
-o  34:fea3ac5810e0
-|
-| o  33:68608f5145f9
+comparing with ../repo
+searching for changes
+o  changeset:   34:fea3ac5810e0
+|  tag:         tip
+|  parent:      32:d06dffa21a31
+|  user:        test
+|  date:        Thu Jan 01 00:00:34 1970 +0000
+|  summary:     (34) head
 |
-o  32:d06dffa21a31
+| o  changeset:   33:68608f5145f9
+|    parent:      18:1aa84d96232a
+|    user:        test
+|    date:        Thu Jan 01 00:00:33 1970 +0000
+|    summary:     (33) head
 |
-o  27:886ed638191b
+o  changeset:   32:d06dffa21a31
+|  parent:      27:886ed638191b
+|  parent:      31:621d83e11f67
+|  user:        test
+|  date:        Thu Jan 01 00:00:32 1970 +0000
+|  summary:     (32) expand
+|
+o  changeset:   27:886ed638191b
+   parent:      21:d42a756af44d
+   user:        test
+   date:        Thu Jan 01 00:00:27 1970 +0000
+   summary:     (27) collapse
 
 comparing with repo2
 searching for changes
--- a/tests/test-hgwebdir	Tue Jul 21 15:47:13 2009 +0200
+++ b/tests/test-hgwebdir	Thu Jul 23 15:25:47 2009 -0500
@@ -88,7 +88,8 @@
 $root=$root
 EOF
 
-hg serve -p $HGPORT2 -d --pid-file=hg.pid --webdir-conf collections.conf \
+hg serve --config web.baseurl=http://hg.example.com:8080/ -p $HGPORT2 -d \
+    --pid-file=hg.pid --webdir-conf collections.conf \
     -A access-collections.log -E error-collections.log
 cat hg.pid >> $DAEMON_PIDS
 
--- a/tests/test-hgwebdir.out	Tue Jul 21 15:47:13 2009 +0200
+++ b/tests/test-hgwebdir.out	Thu Jul 23 15:25:47 2009 -0500
@@ -311,10 +311,10 @@
 200 Script output follows
 
 
-/a/
-/a/.hg/patches/
-/b/
-/c/
+http://hg.example.com:8080/a/
+http://hg.example.com:8080/a/.hg/patches/
+http://hg.example.com:8080/b/
+http://hg.example.com:8080/c/
 
 200 Script output follows