Merge with main
authorMartin Geisler <mg@lazybytes.net>
Mon, 09 Nov 2009 20:43:06 +0100
changeset 9805 a40ec11795c3
parent 9804 fe0fb1cca911 (current diff)
parent 9802 4ce13d7c6b88 (diff)
child 9806 dafbe321fc1a
child 9844 02f8b5230de7
Merge with main
--- a/doc/gendoc.py	Mon Nov 09 20:39:58 2009 +0100
+++ b/doc/gendoc.py	Mon Nov 09 20:43:06 2009 +0100
@@ -61,12 +61,12 @@
         ui.write("%s\n%s\n\n" % (s, '"' * encoding.colwidth(s)))
 
     # print options
-    section(_("OPTIONS"))
+    section(_("Options"))
     for optstr, desc in get_opts(globalopts):
         ui.write("%s\n    %s\n\n" % (optstr, desc))
 
     # print cmds
-    section(_("COMMANDS"))
+    section(_("Commands"))
     h = {}
     for c, attr in table.items():
         f = c.split("|")[0]
@@ -104,7 +104,7 @@
         for name in names:
             ui.write(".. _%s:\n" % name)
         ui.write("\n")
-        section(sec.upper())
+        section(sec)
         if callable(doc):
             doc = doc()
         ui.write(doc)
--- a/doc/hg.1.txt	Mon Nov 09 20:39:58 2009 +0100
+++ b/doc/hg.1.txt	Mon Nov 09 20:43:06 2009 +0100
@@ -16,16 +16,16 @@
    :class: htmlonly
 
 
-SYNOPSIS
+Synopsis
 --------
 **hg** *command* [*option*]... [*argument*]...
 
-DESCRIPTION
+Description
 -----------
 The **hg** command provides a command line interface to the Mercurial
 system.
 
-COMMAND ELEMENTS
+Command Elements
 ----------------
 
 files...
@@ -46,7 +46,7 @@
 
 .. include:: hg.1.gendoc.txt
 
-FILES
+Files
 -----
 
 ``.hgignore``
@@ -70,20 +70,20 @@
 if the ``.orig`` file already exists and is not tracked by Mercurial,
 it will be overwritten.
 
-BUGS
+Bugs
 ----
 Probably lots, please post them to the mailing list (see Resources_
 below) when you find them.
 
-SEE ALSO
+See Also
 --------
 |hgignore(5)|_, |hgrc(5)|_
 
-AUTHOR
+Author
 ------
 Written by Matt Mackall <mpm@selenic.com>
 
-RESOURCES
+Resources
 ---------
 Main Web Site: http://mercurial.selenic.com/
 
@@ -91,7 +91,7 @@
 
 Mailing list: http://selenic.com/mailman/listinfo/mercurial
 
-COPYING
+Copying
 -------
 Copyright (C) 2005-2009 Matt Mackall.
 Free use of this software is granted under the terms of the GNU General
--- a/doc/hgignore.5.txt	Mon Nov 09 20:39:58 2009 +0100
+++ b/doc/hgignore.5.txt	Mon Nov 09 20:43:06 2009 +0100
@@ -11,14 +11,14 @@
 :Manual section: 5
 :Manual group:   Mercurial Manual
 
-SYNOPSIS
+Synopsis
 --------
 
 The Mercurial system uses a file called ``.hgignore`` in the root
 directory of a repository to control its behavior when it searches
 for files that it is not currently tracking.
 
-DESCRIPTION
+Description
 -----------
 
 The working directory of a Mercurial repository will often contain
@@ -45,7 +45,7 @@
 To control Mercurial's handling of files that it manages, see the
 |hg(1)|_ man page. Look for the ``-I`` and ``-X`` options.
 
-SYNTAX
+Syntax
 ------
 
 An ignore file is a plain text file consisting of a list of patterns,
@@ -75,7 +75,7 @@
 and a regexp pattern of the form ``\.c$`` will do the same. To root a
 regexp pattern, start it with ``^``.
 
-EXAMPLE
+Example
 -------
 
 Here is an example ignore file. ::
@@ -91,17 +91,17 @@
   syntax: regexp
   ^\.pc/
 
-AUTHOR
+Author
 ------
 Vadim Gelfer <vadim.gelfer@gmail.com>
 
 Mercurial was written by Matt Mackall <mpm@selenic.com>.
 
-SEE ALSO
+See Also
 --------
 |hg(1)|_, |hgrc(5)|_
 
-COPYING
+Copying
 -------
 This manual page is copyright 2006 Vadim Gelfer.
 Mercurial is copyright 2005-2009 Matt Mackall.
--- a/doc/hgrc.5.txt	Mon Nov 09 20:39:58 2009 +0100
+++ b/doc/hgrc.5.txt	Mon Nov 09 20:43:06 2009 +0100
@@ -16,13 +16,13 @@
    :class: htmlonly
 
 
-SYNOPSIS
+Synopsis
 --------
 
 The Mercurial system uses a set of configuration files to control
 aspects of its behavior.
 
-FILES
+Files
 -----
 
 Mercurial reads configuration data from several files, if they exist.
@@ -83,13 +83,11 @@
     a ``Mercurial.ini`` file or be a directory where ``*.rc`` files will
     be read.
 
-SYNTAX
+Syntax
 ------
 
 A configuration file consists of sections, led by a ``[section]`` header
-and followed by ``name: value`` entries; ``name=value`` is also accepted.
-
-::
+and followed by ``name = value`` entries::
 
     [spam]
     eggs=ham
@@ -110,7 +108,7 @@
 section, if it has been set previously.
 
 
-SECTIONS
+Sections
 --------
 
 This section describes the different sections that may appear in a
@@ -935,17 +933,17 @@
     Where to find the HTML templates. Default is install path.
 
 
-AUTHOR
+Author
 ------
 Bryan O'Sullivan <bos@serpentine.com>.
 
 Mercurial was written by Matt Mackall <mpm@selenic.com>.
 
-SEE ALSO
+See Also
 --------
 |hg(1)|_, |hgignore(5)|_
 
-COPYING
+Copying
 -------
 This manual page is copyright 2005 Bryan O'Sullivan.
 Mercurial is copyright 2005-2009 Matt Mackall.
--- a/doc/rst2man.py	Mon Nov 09 20:39:58 2009 +0100
+++ b/doc/rst2man.py	Mon Nov 09 20:43:06 2009 +0100
@@ -1048,6 +1048,8 @@
             raise nodes.SkipNode
         elif self.section_level == 1:
             self.body.append('.SH ')
+            for n in node.traverse(nodes.Text):
+                n.parent.replace(n, nodes.Text(n.astext().upper()))
         else:
             self.body.append('.SS ')
 
--- a/doc/style.css	Mon Nov 09 20:39:58 2009 +0100
+++ b/doc/style.css	Mon Nov 09 20:43:06 2009 +0100
@@ -1,32 +1,94 @@
+/*
+ * Styles for man pages, which suit with http://mercurial.selenic.com/
+ *
+ * Color scheme & layout are borrowed from
+ * http://mercurial.selenic.com/css/styles.css
+ *
+ * Some styles are from html4css1.css from Docutils, which is in the
+ * public domain.
+ */
 
 body {
+    margin: 0;
+    padding: 0;
     font-family: sans-serif;
-    /* adjustment for tt padding */
-    line-height: 140%;
+    color: #111;
 }
 
-tt, pre {
-    background-color: #EEE;
-    border: thin solid #CCC;
-    padding: 1px;
+.document {
+    position: relative;  /* be a top of absolute positioning */
+    margin: 1.5em 1.8em;
+    padding: 0;
+    line-height: 1.3;
+}
+
+/* layout: toc to right */
+#contents {
+    position: absolute;
+    right: 0;
+    top: 0;
+    width: 26%;
 }
 
-pre {
-    padding: 0.25em;
+/* layout: others to left */
+h1.title, h2.subtitle, .section { width: 72%; }
+.section .section { width: auto; }
+table.docinfo { max-width: 72%; }
+
+/* headings */
+h1, h2, .topic-title, .admonition-title {
+    font-family: "MgOpen Cosmetica", "Lucida Sans Unicode", sans-serif;
+    font-weight: normal;
+}
+h1, h2, .topic-title, .admonition-title {
+    margin: 1em 0 0.5em;
+}
+h1.title { font-size: 300%; }
+h2.subtitle, h1 { font-size: 200%; }
+h2, .topic-title, .admonition-title { font-size: 140%; }
+
+/* subtitle starts with lowercase in man pages, but not in HTML */
+h2.subtitle:first-letter { text-transform: uppercase; }
+
+/* override first/last margin */
+.first, h1.title, h2.subtitle { margin-top: 0 !important; }
+.last, .with-subtitle { margin-bottom: 0 !important; }
+
+blockquote, pre, dd .option-list, .field-list {
+    margin: 0.2em 0 1em 2em;
 }
 
-#contents tt, h2 tt {
-    background-color: inherit;
-    border: inherit;
+kbd, tt, pre { font-family: monospace; }
+
+dt { font-weight: bold; }
+dd { margin-bottom: 0.5em; }
+
+th, td { padding: 0.1em 0.2em; border: 0 none; }
+th { font-weight: bold; text-align: left; }
+
+a:link, a:visited { text-decoration: underline; }
+a:hover, a:focus { text-decoration: none; }
+a:link { color: #00b5f1; }
+a:visited { color: #5c9caf; }
+a:link.toc-backref, a:visited.toc-backref {
+    text-decoration: none;
+    color: #111;  /* `inherit' not supported by IE6 */
 }
 
-/* styles taken from html4css1.css from Docutils, which is in the
-   public domain */
+div.admonition, div.attention, div.caution,
+div.danger, div.error, div.hint, div.important,
+div.note, div.tip, div.warning {
+    border-top: 1px #ccc solid;
+    border-bottom: 1px #ccc solid;
+    padding: 0.3em 1em;
+    margin: 1em;
+}
 
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
-    border: 0;
-}
+
+/*
+ * The following styles are from docutils'.
+ * Please refine if necessary.
+ */
 
 table.borderless td, table.borderless th {
     /* Override padding for "table.docutils td" with "! important".
@@ -34,91 +96,24 @@
     padding: 0 0.5em 0 0 ! important;
 }
 
-.first {
-    /* Override more specific margin styles with "! important". */
-    margin-top: 0 ! important;
-}
-
-.last, .with-subtitle {
-    margin-bottom: 0 ! important;
-}
-
 .hidden {
     display: none;
 }
 
-a.toc-backref {
-    text-decoration: none;
-    color: black;
-}
-
 blockquote.epigraph {
-    margin: 2em 5em;;
+    margin: 2em 5em;
 }
 
-dl.docutils dd {
-    margin-bottom: 0.5em;
-}
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
-    font-weight: bold;
-}
-*/
-
 div.abstract {
     margin: 2em 5em;
 }
 
-div.abstract p.topic-title {
-    font-weight: bold;
-    text-align: center;
-}
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
-    margin: 2em;
-    border: medium outset;
-    padding: 1em;
-}
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
-    font-weight: bold;
-    font-family: sans-serif;
-}
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title {
-    color: red;
-    font-weight: bold;
-    font-family: sans-serif;
-}
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
-   compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
-    margin-bottom: 0.5em;
-}
-
-div.compound .compound-last, div.compound .compound-middle {
-    margin-top: 0.5em;
-}
-*/
-
 div.dedication {
     margin: 2em 5em;
     text-align: center;
     font-style: italic;
 }
 
-div.dedication p.topic-title {
-    font-weight: bold;
-    font-style: normal;
-}
-
 div.figure {
     margin-left: 2em;
     margin-right: 2em;
@@ -174,23 +169,11 @@
     font-weight: bold;
 }
 
-div.topic {
-    margin: 2em;
-}
-
 h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
 h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
     margin-top: 0.4em;
 }
 
-h1.title {
-    text-align: center;
-}
-
-h2.subtitle {
-    text-align: center;
-}
-
 hr.docutils {
     width: 75%;
 }
@@ -252,21 +235,6 @@
     text-align: center;
 }
 
-p.sidebar-title {
-    font-family: sans-serif;
-    font-weight: bold;
-    font-size: larger;
-}
-
-p.sidebar-subtitle {
-    font-family: sans-serif;
-    font-weight: bold;
-}
-
-p.topic-title {
-    font-weight: bold;
-}
-
 pre.address {
     margin-bottom: 0;
     margin-top: 0;
@@ -315,34 +283,11 @@
     margin-left: 1px;
 }
 
-table.docinfo {
-    margin: 2em 4em;
-}
-
-table.docutils {
-    margin-top: 0.5em;
-    margin-bottom: 0.5em;
-}
-
 table.footnote {
     border-left: solid 1px black;
     margin-left: 1px;
 }
 
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
-    padding-left: 0.5em;
-    padding-right: 0.5em;
-    vertical-align: top;
-}
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
-    font-weight: bold;
-    text-align: left;
-    white-space: nowrap;
-    padding-left: 0;
-}
-
 h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
 h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
     font-size: 100%;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/help/config.txt	Mon Nov 09 20:43:06 2009 +0100
@@ -0,0 +1,37 @@
+Mercurial reads configuration data from several files, if they exist.
+Below we list the most specific file first.
+
+On Windows, these configuration files are read:
+
+- ``<repo>\.hg\hgrc``
+- ``%USERPROFILE%\.hgrc``
+- ``%USERPROFILE%\Mercurial.ini``
+- ``%HOME%\.hgrc``
+- ``%HOME%\Mercurial.ini``
+- ``C:\Mercurial\Mercurial.ini``
+- ``HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial``
+- ``<install-dir>\Mercurial.ini``
+
+On Unix, these files are read:
+
+- ``<repo>/.hg/hgrc``
+- ``$HOME/.hgrc``
+- ``/etc/mercurial/hgrc``
+- ``/etc/mercurial/hgrc.d/*.rc``
+- ``<install-root>/etc/mercurial/hgrc``
+- ``<install-root>/etc/mercurial/hgrc.d/*.rc``
+
+The configuration files for Mercurial use a simple ini-file format. A
+configuration file consists of sections, led by a ``[section]`` header
+and followed by ``name = value`` entries::
+
+  [ui]
+  username = Firstname Lastname <firstname.lastname@example.net>
+  verbose = True
+
+This above entries will be referred to as ``ui.username`` and
+``ui.verbose``, respectively. Please see the hgrc man page for a full
+description of the possible configuration values:
+
+- on Unix-like systems: ``man hgrc``
+- online: http://www.selenic.com/mercurial/hgrc.5.html
--- a/hgext/relink.py	Mon Nov 09 20:39:58 2009 +0100
+++ b/hgext/relink.py	Mon Nov 09 20:43:06 2009 +0100
@@ -135,7 +135,7 @@
             relinked += 1
             savedbytes += sz
         except OSError, inst:
-            ui.warn(_('%s: %s\n') % (tgt, str(inst)))
+            ui.warn('%s: %s\n' % (tgt, str(inst)))
 
     ui.status(_('relinked %d files (%d bytes reclaimed)\n') %
               (relinked, savedbytes))
--- a/mercurial/help.py	Mon Nov 09 20:39:58 2009 +0100
+++ b/mercurial/help.py	Mon Nov 09 20:43:06 2009 +0100
@@ -80,6 +80,7 @@
     return loader
 
 helptable = (
+    (["config"], _("Configuration Files"), loaddoc('config')),
     (["dates"], _("Date Formats"), loaddoc('dates')),
     (["patterns"], _("File Name Patterns"), loaddoc('patterns')),
     (['environment', 'env'], _('Environment Variables'), loaddoc('environment')),
--- a/mercurial/hg.py	Mon Nov 09 20:39:58 2009 +0100
+++ b/mercurial/hg.py	Mon Nov 09 20:43:06 2009 +0100
@@ -9,7 +9,7 @@
 from i18n import _
 from lock import release
 import localrepo, bundlerepo, httprepo, sshrepo, statichttprepo
-import lock, util, extensions, error
+import lock, util, extensions, error, encoding
 import merge as _merge
 import verify as _verify
 import errno, os, shutil
@@ -320,7 +320,8 @@
                     except error.RepoLookupError:
                         continue
                 bn = dest_repo[uprev].branch()
-                dest_repo.ui.status(_("updating to branch %s\n") % bn)
+                dest_repo.ui.status(_("updating to branch %s\n")
+                                    % encoding.tolocal(bn))
                 _update(dest_repo, uprev)
 
         return src_repo, dest_repo
--- a/mercurial/merge.py	Mon Nov 09 20:39:58 2009 +0100
+++ b/mercurial/merge.py	Mon Nov 09 20:43:06 2009 +0100
@@ -167,6 +167,13 @@
     m1, m2, ma = p1.manifest(), p2.manifest(), pa.manifest()
     copied = set(copy.values())
 
+    if not overwrite and '.hgsubstate' in m1:
+        # check whether sub state is modified
+        for s in p1.substate:
+            if p1.sub(s).dirty():
+                m1['.hgsubstate'] += "+"
+                break
+
     # Compare manifests
     for f, n in m1.iteritems():
         if partial and not partial(f):
--- a/mercurial/subrepo.py	Mon Nov 09 20:39:58 2009 +0100
+++ b/mercurial/subrepo.py	Mon Nov 09 20:43:06 2009 +0100
@@ -52,7 +52,16 @@
     sa = actx.substate
     sm = {}
 
+    repo.ui.debug("subrepo merge %s %s %s\n" % (wctx, mctx, actx))
+
+    def debug(s, msg, r=""):
+        if r:
+            r = "%s:%s" % r
+        repo.ui.debug("  subrepo %s: %s %s\n" % (s, msg, r))
+
     for s, l in s1.items():
+        if wctx != actx and wctx.sub(s).dirty():
+            l = (l[0], l[1] + "+")
         a = sa.get(s, nullstate)
         if s in s2:
             r = s2[s]
@@ -60,6 +69,7 @@
                 sm[s] = l
                 continue
             elif l == a: # other side changed
+                debug(s, "other changed, get", r)
                 wctx.sub(s).get(r)
                 sm[s] = r
             elif l[0] != r[0]: # sources differ
@@ -68,27 +78,33 @@
                       'use (l)ocal source (%s) or (r)emote source (%s)?')
                       % (s, l[0], r[0]),
                       (_('&Local'), _('&Remote')), 0):
+                    debug(s, "prompt changed, get", r)
                     wctx.sub(s).get(r)
                     sm[s] = r
             elif l[1] == a[1]: # local side is unchanged
+                debug(s, "other side changed, get", r)
                 wctx.sub(s).get(r)
                 sm[s] = r
             else:
+                debug(s, "both sides changed, merge with", r)
                 wctx.sub(s).merge(r)
                 sm[s] = l
         elif l == a: # remote removed, local unchanged
+            debug(s, "remote removed, remove")
             wctx.sub(s).remove()
         else:
             if repo.ui.promptchoice(
                 _(' local changed subrepository %s which remote removed\n'
                   'use (c)hanged version or (d)elete?') % s,
                 (_('&Changed'), _('&Delete')), 0):
+                debug(s, "prompt remove")
                 wctx.sub(s).remove()
 
     for s, r in s2.items():
         if s in s1:
             continue
         elif s not in sa:
+            debug(s, "remote added, get", r)
             wctx.sub(s).get(r)
             sm[s] = r
         elif r != sa[s]:
@@ -96,6 +112,7 @@
                 _(' remote changed subrepository %s which local removed\n'
                   'use (c)hanged version or (d)elete?') % s,
                 (_('&Changed'), _('&Delete')), 0) == 0:
+                debug(s, "prompt recreate", r)
                 wctx.sub(s).get(r)
                 sm[s] = r
 
@@ -156,6 +173,7 @@
         return w.dirty() # working directory changed
 
     def commit(self, text, user, date):
+        self._repo.ui.debug("committing subrepo %s\n" % self._path)
         n = self._repo.commit(text, user, date)
         if not n:
             return self._repo['.'].hex() # different version checked out
@@ -181,11 +199,19 @@
     def get(self, state):
         self._get(state)
         source, revision = state
+        self._repo.ui.debug("getting subrepo %s\n" % self._path)
         hg.clean(self._repo, revision, False)
 
     def merge(self, state):
         self._get(state)
-        hg.merge(self._repo, state[1], remind=False)
+        cur = self._repo['.']
+        dst = self._repo[state[1]]
+        if dst.ancestor(cur) == cur:
+            self._repo.ui.debug("updating subrepo %s\n" % self._path)
+            hg.update(self._repo, state[1])
+        else:
+            self._repo.ui.debug("merging subrepo %s\n" % self._path)
+            hg.merge(self._repo, state[1], remind=False)
 
     def push(self, force):
         # push subrepos depth-first for coherent ordering
@@ -198,4 +224,3 @@
         dsturl = _abssource(self._repo, True)
         other = hg.repository(self._repo.ui, dsturl)
         self._repo.push(other, force)
-
--- a/mercurial/ui.py	Mon Nov 09 20:39:58 2009 +0100
+++ b/mercurial/ui.py	Mon Nov 09 20:43:06 2009 +0100
@@ -186,7 +186,7 @@
             except KeyError:
                 pass
         if not user:
-            raise util.Abort(_("Please specify a username."))
+            raise util.Abort(_('no username supplied (see "hg help config")'))
         if "\n" in user:
             raise util.Abort(_("username %s contains a newline\n") % repr(user))
         return user
--- a/tests/test-branchmap	Mon Nov 09 20:39:58 2009 +0100
+++ b/tests/test-branchmap	Mon Nov 09 20:43:06 2009 +0100
@@ -13,7 +13,7 @@
 hg -R a ci -Am foo
 
 hgserve -R a --config web.push_ssl=False --config web.allow_push=* --encoding latin1
-hg clone http://localhost:$HGPORT1 b
+hg --encoding utf-8 clone http://localhost:$HGPORT1 b
 hg --encoding utf-8 -R b log
 echo bar >> b/foo
 hg -R b ci -m bar
--- a/tests/test-branchmap.out	Mon Nov 09 20:39:58 2009 +0100
+++ b/tests/test-branchmap.out	Mon Nov 09 20:43:06 2009 +0100
@@ -6,7 +6,7 @@
 adding manifests
 adding file changes
 added 1 changesets with 1 changes to 1 files
-updating working directory
+updating to branch æ
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 changeset:   0:867c11ce77b8
 branch:      æ
--- a/tests/test-committer.out	Mon Nov 09 20:39:58 2009 +0100
+++ b/tests/test-committer.out	Mon Nov 09 20:43:06 2009 +0100
@@ -22,7 +22,7 @@
 date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     commit-1
 
-abort: Please specify a username.
+abort: no username supplied (see "hg help config")
 No username found, using user@host instead
 transaction abort!
 rollback completed
--- a/tests/test-diffstat	Mon Nov 09 20:39:58 2009 +0100
+++ b/tests/test-diffstat	Mon Nov 09 20:43:06 2009 +0100
@@ -2,7 +2,7 @@
 
 hg init repo
 cd repo
-i=0; while [ "$i" -lt 213 ]; do echo a >> a; i=$(($i + 1)); done
+i=0; while [ "$i" -lt 213 ]; do echo a >> a; i=`expr $i + 1`; done
 hg add a
 
 echo '% wide diffstat'
--- a/tests/test-extension	Mon Nov 09 20:39:58 2009 +0100
+++ b/tests/test-extension	Mon Nov 09 20:43:06 2009 +0100
@@ -87,7 +87,7 @@
 wsgicgi.launch(application)
 EOF
 SCRIPT_NAME='/' SERVER_PORT='80' SERVER_NAME='localhost' python hgweb.cgi \
-    | grep '^[[:digit:]]) [[:alnum:] ]*$'  # ignores HTML output
+    | grep '^[0-9]) ' # ignores HTML output
 
 echo 'foo = !' >> $HGRCPATH
 echo 'bar = !' >> $HGRCPATH
--- a/tests/test-globalopts.out	Mon Nov 09 20:39:58 2009 +0100
+++ b/tests/test-globalopts.out	Mon Nov 09 20:43:06 2009 +0100
@@ -202,6 +202,7 @@
 
 additional help topics:
 
+ config       Configuration Files
  dates        Date Formats
  patterns     File Name Patterns
  environment  Environment Variables
@@ -270,6 +271,7 @@
 
 additional help topics:
 
+ config       Configuration Files
  dates        Date Formats
  patterns     File Name Patterns
  environment  Environment Variables
--- a/tests/test-help.out	Mon Nov 09 20:39:58 2009 +0100
+++ b/tests/test-help.out	Mon Nov 09 20:43:06 2009 +0100
@@ -95,6 +95,7 @@
 
 additional help topics:
 
+ config       Configuration Files
  dates        Date Formats
  patterns     File Name Patterns
  environment  Environment Variables
@@ -159,6 +160,7 @@
 
 additional help topics:
 
+ config       Configuration Files
  dates        Date Formats
  patterns     File Name Patterns
  environment  Environment Variables
--- a/tests/test-install.out	Mon Nov 09 20:39:58 2009 +0100
+++ b/tests/test-install.out	Mon Nov 09 20:43:06 2009 +0100
@@ -13,6 +13,6 @@
 Checking patch...
 Checking commit editor...
 Checking username...
- Please specify a username.
+ no username supplied (see "hg help config")
  (specify a username in your .hgrc file)
 1 problems detected, please check your install!
--- a/tests/test-patchbomb	Mon Nov 09 20:39:58 2009 +0100
+++ b/tests/test-patchbomb	Mon Nov 09 20:43:06 2009 +0100
@@ -173,7 +173,8 @@
 
 echo "% test multi-byte domain parsing"
 UUML=`printf '\374'`
-export HGENCODING=iso-8859-1
+HGENCODING=iso-8859-1
+export HGENCODING
 hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t "bar@${UUML}nicode.com" \
   -s test -r 0
 cat tmp.mbox | fixheaders
--- a/tests/test-subrepo.out	Mon Nov 09 20:39:58 2009 +0100
+++ b/tests/test-subrepo.out	Mon Nov 09 20:43:06 2009 +0100
@@ -56,6 +56,9 @@
  overwrite None partial False
  ancestor 1f14a2e2d3ec local f0d2028bf86d+ remote 1831e14459c4
  .hgsubstate: versions differ -> m
+subrepo merge f0d2028bf86d+ 1831e14459c4 1f14a2e2d3ec
+  subrepo t: other changed, get t:6747d179aa9a688023c4b0cad32e4c92bb7f34ad
+getting subrepo t
 resolving manifests
  overwrite True partial False
  ancestor 60ca1237c194+ local 60ca1237c194+ remote 6747d179aa9a
@@ -75,6 +78,9 @@
  overwrite None partial False
  ancestor 1831e14459c4 local e45c8b14af55+ remote f94576341bcf
  .hgsubstate: versions differ -> m
+subrepo merge e45c8b14af55+ f94576341bcf 1831e14459c4
+  subrepo t: both sides changed, merge with t:7af322bc1198a32402fe903e0b7ebcfc5c9bf8f4
+merging subrepo t
   searching for copies back to rev 2
 resolving manifests
  overwrite None partial False