Merge with mpm
authorMartin Geisler <mg@lazybytes.net>
Tue, 30 Jun 2009 23:17:57 +0200
changeset 9000 59bb11a97fe5
parent 8999 159283d79e69 (current diff)
parent 8979 09c6735e3880 (diff)
child 9001 7d39c76be4ee
Merge with mpm
--- a/README	Tue Jun 30 23:16:38 2009 +0200
+++ b/README	Tue Jun 30 23:17:57 2009 +0200
@@ -5,6 +5,6 @@
  $ hg debuginstall # sanity-check setup
  $ hg              # see help
 
-See http://www.selenic.com/mercurial/ for detailed installation
+See http://mercurial.selenic.com/ for detailed installation
 instructions, platform-specific notes, and Mercurial user information.
 
--- a/contrib/macosx/Readme.html	Tue Jun 30 23:16:38 2009 +0200
+++ b/contrib/macosx/Readme.html	Tue Jun 30 23:17:57 2009 +0200
@@ -25,13 +25,13 @@
 <p class="p2"><br></p>
 <p class="p1"><b>Documentation</b></p>
 <p class="p2"><br></p>
-<p class="p3">Visit the <a href="http://www.selenic.com/mercurial">Mercurial web site and wiki</a></p>
+<p class="p3">Visit the <a href="http://mercurial.selenic.com/">Mercurial web site and wiki</a></p>
 <p class="p2"><br></p>
 <p class="p3">There's also a free book, <a href="http://hgbook.red-bean.com/">Distributed revision control with Mercurial</a></p>
 <p class="p2"><br></p>
 <p class="p1"><b>Reporting problems</b></p>
 <p class="p2"><br></p>
 <p class="p3">If you run into any problems, please file a bug online:</p>
-<p class="p3"><a href="http://www.selenic.com/mercurial/bts">http://www.selenic.com/mercurial/bts</a></p>
+<p class="p3"><a href="http://mercurial.selenic.com/bts/">http://mercurial.selenic.com/bts/</a></p>
 </body>
 </html>
--- a/contrib/macosx/Welcome.html	Tue Jun 30 23:16:38 2009 +0200
+++ b/contrib/macosx/Welcome.html	Tue Jun 30 23:17:57 2009 +0200
@@ -11,10 +11,10 @@
   </style>
 </head>
 <body>
-<p class="p1">This is a prepackaged release of <a href="http://www.selenic.com/mercurial">Mercurial</a> for Mac OS X.</p>
+<p class="p1">This is a prepackaged release of <a href="http://mercurial.selenic.com/">Mercurial</a> for Mac OS X.</p>
 <p class="p2"><br></p>
 <br>
 <p>
-Please be sure to read the latest <a href="http://www.selenic.com/mercurial/wiki/index.cgi/WhatsNew">release notes</a>.</p>
+Please be sure to read the latest <a href="http://mercurial.selenic.com/wiki/WhatsNew">release notes</a>.</p>
 </body>
 </html>
--- a/contrib/mercurial.spec	Tue Jun 30 23:16:38 2009 +0200
+++ b/contrib/mercurial.spec	Tue Jun 30 23:17:57 2009 +0200
@@ -2,10 +2,10 @@
 Name: mercurial
 Version: snapshot
 Release: 0
-License: GPL
+License: GPLv2
 Group: Development/Tools
-Source: http://www.selenic.com/mercurial/release/%{name}-%{version}.tar.gz
-URL: http://www.selenic.com/mercurial
+URL: http://mercurial.selenic.com/
+Source0: http://mercurial.selenic.com/release/%{name}-%{version}.tar.gz
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
 
 # From the README:
@@ -18,10 +18,10 @@
 # run-time dependency.
 #
 BuildRequires: python >= 2.4, python-devel, make, gcc, asciidoc, xmlto
+Provides: hg = %{version}-%{release}
 
 %define pythonver %(python -c 'import sys;print ".".join(map(str, sys.version_info[:2]))')
-%define pythonlib %{_libdir}/python%{pythonver}/site-packages/%{name}
-%define hgext %{_libdir}/python%{pythonver}/site-packages/hgext
+%define emacs_lispdir %{_datadir}/emacs/site-lisp
 
 %description
 Mercurial is a fast, lightweight source control management system designed
@@ -45,23 +45,26 @@
 
 bash_completion_dir=$RPM_BUILD_ROOT%{_sysconfdir}/bash_completion.d
 mkdir -p $bash_completion_dir
-install contrib/bash_completion $bash_completion_dir/mercurial.sh
+install -m 644 contrib/bash_completion $bash_completion_dir/mercurial.sh
 
 zsh_completion_dir=$RPM_BUILD_ROOT%{_datadir}/zsh/site-functions
 mkdir -p $zsh_completion_dir
-install contrib/zsh_completion $zsh_completion_dir/_mercurial
+install -m 644 contrib/zsh_completion $zsh_completion_dir/_mercurial
 
-lisp_dir=$RPM_BUILD_ROOT%{_datadir}/emacs/site-lisp
-mkdir -p $lisp_dir
-install contrib/mercurial.el $lisp_dir
+mkdir -p $RPM_BUILD_ROOT%{emacs_lispdir}
+install contrib/mercurial.el $RPM_BUILD_ROOT%{emacs_lispdir}
+
+mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/mercurial/hgrc.d
+install contrib/mergetools.hgrc $RPM_BUILD_ROOT%{_sysconfdir}/mercurial/hgrc.d/mergetools.rc
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 %files
 %defattr(-,root,root,-)
-%doc CONTRIBUTORS COPYING doc/README doc/hg*.txt doc/hg*.html doc/ja *.cgi
-%{_mandir}/man?/hg*.gz
+%doc CONTRIBUTORS COPYING doc/README doc/hg*.txt doc/hg*.html doc/ja *.cgi contrib/*.fcgi
+%doc %attr(644,root,root) %{_mandir}/man?/hg*.gz
+%doc %attr(644,root,root) contrib/*.svg contrib/sample.hgrc
 %{_sysconfdir}/bash_completion.d/mercurial.sh
 %{_datadir}/zsh/site-functions/_mercurial
 %{_datadir}/emacs/site-lisp/mercurial.el
@@ -71,8 +74,13 @@
 %{_bindir}/hg-viz
 %{_bindir}/git-rev-tree
 %{_bindir}/mercurial-convert-repo
+%dir %{_sysconfdir}/bash_completion.d/
+%dir %{_datadir}/zsh/site-functions/
+%dir %{_sysconfdir}/mercurial
+%dir %{_sysconfdir}/mercurial/hgrc.d
+%config(noreplace) %{_sysconfdir}/mercurial/hgrc.d/mergetools.rc
 %if "%{?pythonver}" != "2.4"
 %{_libdir}/python%{pythonver}/site-packages/%{name}-*-py%{pythonver}.egg-info
 %endif
-%{pythonlib}
-%{hgext}
+%{_libdir}/python%{pythonver}/site-packages/%{name}
+%{_libdir}/python%{pythonver}/site-packages/hgext
--- a/contrib/vim/hgcommand.vim	Tue Jun 30 23:16:38 2009 +0200
+++ b/contrib/vim/hgcommand.vim	Tue Jun 30 23:17:57 2009 +0200
@@ -1226,7 +1226,7 @@
 
 Author:  Mathieu Clabaut <mathieu.clabaut@gmail.com>
 Credits:  Bob Hiestand <bob.hiestand@gmail.com>
-Mercurial: http://www.selenic.com/mercurial
+Mercurial: http://mercurial.selenic.com/
    Mercurial (noted Hg) is a fast, lightweight Source Control Management
    system designed for efficient handling of very large distributed projects.
 
--- a/contrib/win32/ReadMe.html	Tue Jun 30 23:16:38 2009 +0200
+++ b/contrib/win32/ReadMe.html	Tue Jun 30 23:17:57 2009 +0200
@@ -49,7 +49,7 @@
 
     <p>
       For documentation, please visit the <a
-      href="http://www.selenic.com/mercurial">Mercurial web site</a>.
+      href="http://mercurial.selenic.com/">Mercurial web site</a>.
       You can also download a free book, <a
       href="http://hgbook.red-bean.com/">Mercurial: The Definitive
       Guide</a>.
@@ -100,7 +100,7 @@
       By default, Mercurial will use the merge program defined by the
       <tt>HGMERGE</tt> environment variable, or uses the one defined
       in the <tt>mercurial.ini</tt> file. (see <a
-      href="http://www.selenic.com/mercurial/wiki/index.cgi/MergeProgram">MergeProgram</a>
+      href="http://mercurial.selenic.com/wiki/MergeProgram">MergeProgram</a>
       on the Mercurial Wiki for more information)
     </p>
 
@@ -108,9 +108,9 @@
 
     <p>
       Before you report any problems, please consult the <a
-      href="http://www.selenic.com/mercurial">Mercurial web site</a>
+      href="http://mercurial.selenic.com/">Mercurial web site</a>
       and see if your question is already in our list of <a
-      href="http://www.selenic.com/mercurial/wiki/index.cgi/FAQ">Frequently
+      href="http://mercurial.selenic.com/wiki/FAQ">Frequently
       Answered Questions</a> (the "FAQ").
     </p>
 
--- a/contrib/win32/mercurial.iss	Tue Jun 30 23:16:38 2009 +0200
+++ b/contrib/win32/mercurial.iss	Tue Jun 30 23:17:57 2009 +0200
@@ -8,9 +8,9 @@
 LicenseFile=COPYING
 ShowLanguageDialog=yes
 AppPublisher=Matt Mackall and others
-AppPublisherURL=http://www.selenic.com/mercurial
-AppSupportURL=http://www.selenic.com/mercurial
-AppUpdatesURL=http://www.selenic.com/mercurial
+AppPublisherURL=http://mercurial.selenic.com/
+AppSupportURL=http://mercurial.selenic.com/
+AppUpdatesURL=http://mercurial.selenic.com/
 AppID={{4B95A5F1-EF59-4B08-BED8-C891C46121B3}
 AppContact=mercurial@selenic.com
 OutputBaseFilename=Mercurial-snapshot
@@ -51,7 +51,7 @@
 Source: COPYING; DestDir: {app}; DestName: Copying.txt
 
 [INI]
-Filename: {app}\Mercurial.url; Section: InternetShortcut; Key: URL; String: http://www.selenic.com/mercurial/
+Filename: {app}\Mercurial.url; Section: InternetShortcut; Key: URL; String: http://mercurial.selenic.com/
 
 [UninstallDelete]
 Type: files; Name: {app}\Mercurial.url
--- a/contrib/win32/postinstall.txt	Tue Jun 30 23:16:38 2009 +0200
+++ b/contrib/win32/postinstall.txt	Tue Jun 30 23:17:57 2009 +0200
@@ -6,4 +6,4 @@
 
 Also check the release notes at:
 
- http://www.selenic.com/mercurial/wiki/index.cgi/WhatsNew
+ http://mercurial.selenic.com/wiki/WhatsNew
--- a/contrib/zsh_completion	Tue Jun 30 23:16:38 2009 +0200
+++ b/contrib/zsh_completion	Tue Jun 30 23:17:57 2009 +0200
@@ -13,13 +13,25 @@
 # autoload -U compinit
 # compinit
 #
-# Copyright (C) 2005-6 Steve Borho
-# Copyright (C) 2006-8 Brendan Cully <brendan@kublai.com>
+# Copyright (C) 2005, 2006 Steve Borho <steve@borho.org>
+# Copyright (C) 2006, 2007, 2008 Brendan Cully <brendan@kublai.com>
+#
+# Permission is hereby granted, without written agreement and without
+# licence or royalty fees, to use, copy, modify, and distribute this
+# software and to distribute modified versions of this software for any
+# purpose, provided that the above copyright notice and the following
+# two paragraphs appear in all copies of this software.
 #
-# This is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation; either version 2 of the License, or (at your
-# option) any later version.
+# In no event shall the authors be liable to any party for direct,
+# indirect, special, incidental, or consequential damages arising out of
+# the use of this software and its documentation, even if the authors
+# have been advised of the possibility of such damage.
+#
+# The authors specifically disclaim any warranties, including, but not
+# limited to, the implied warranties of merchantability and fitness for
+# a particular purpose.  The software provided hereunder is on an "as
+# is" basis, and the authors have no obligation to provide maintenance,
+# support, updates, enhancements, or modifications.
 
 emulate -LR zsh
 setopt extendedglob
--- a/doc/hg.1.txt	Tue Jun 30 23:16:38 2009 +0200
+++ b/doc/hg.1.txt	Tue Jun 30 23:17:57 2009 +0200
@@ -75,7 +75,7 @@
 
 RESOURCES
 ---------
-http://selenic.com/mercurial[Main Web Site]
+http://mercurial.selenic.com/[Main Web Site]
 
 http://selenic.com/hg[Source code repository]
 
--- a/doc/ja/hg.1.ja.txt	Tue Jun 30 23:16:38 2009 +0200
+++ b/doc/ja/hg.1.ja.txt	Tue Jun 30 23:17:57 2009 +0200
@@ -852,7 +852,7 @@
 
 情報源
 ---
-http://selenic.com/mercurial[主なウェブサイト]
+http://mercurial.selenic.com/[主なウェブサイト]
 
 http://www.serpentine.com/mercurial[Wiki サイト]
 
--- a/hgext/acl.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/acl.py	Tue Jun 30 23:17:57 2009 +0200
@@ -6,7 +6,7 @@
 # GNU General Public License version 2, incorporated herein by reference.
 #
 
-'''control access to a repository using simple hooks
+'''hooks for controlling repository access
 
 This hook makes it possible to allow or deny write access to portions
 of a repository when receiving incoming changesets.
--- a/hgext/bookmarks.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/bookmarks.py	Tue Jun 30 23:17:57 2009 +0200
@@ -257,14 +257,14 @@
                 node  = super(bookmark_repo, self).commit(*k, **kw)
                 if node is None:
                     return None
-                parents = repo.changelog.parents(node)
+                parents = self.changelog.parents(node)
                 if parents[1] == nullid:
                     parents = (parents[0],)
-                marks = parse(repo)
+                marks = parse(self)
                 update = False
                 for mark, n in marks.items():
                     if ui.configbool('bookmarks', 'track.current'):
-                        if mark == current(repo) and n in parents:
+                        if mark == current(self) and n in parents:
                             marks[mark] = node
                             update = True
                     else:
@@ -272,28 +272,28 @@
                             marks[mark] = node
                             update = True
                 if update:
-                    write(repo, marks)
+                    write(self, marks)
                 return node
             finally:
                 wlock.release()
 
         def addchangegroup(self, source, srctype, url, emptyok=False):
-            parents = repo.dirstate.parents()
+            parents = self.dirstate.parents()
 
             result = super(bookmark_repo, self).addchangegroup(
                 source, srctype, url, emptyok)
             if result > 1:
                 # We have more heads than before
                 return result
-            node = repo.changelog.tip()
-            marks = parse(repo)
+            node = self.changelog.tip()
+            marks = parse(self)
             update = False
             for mark, n in marks.items():
                 if n in parents:
                     marks[mark] = node
                     update = True
             if update:
-                write(repo, marks)
+                write(self, marks)
             return result
 
         def tags(self):
@@ -302,7 +302,7 @@
                 return self.tagscache
 
             tagscache = super(bookmark_repo, self).tags()
-            tagscache.update(parse(repo))
+            tagscache.update(parse(self))
             return tagscache
 
     repo.__class__ = bookmark_repo
--- a/hgext/bugzilla.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/bugzilla.py	Tue Jun 30 23:17:57 2009 +0200
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2, incorporated herein by reference.
 
-'''integrate Mercurial with a Bugzilla bug tracker
+'''hooks for integrating with the Bugzilla bug tracker
 
 This hook extension adds comments on bugs in Bugzilla when changesets
 that refer to bugs by Bugzilla ID are seen. The hook does not change
--- a/hgext/children.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/children.py	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2, incorporated herein by reference.
 
-'''display children changesets'''
+'''command to display child changesets'''
 
 from mercurial import cmdutil
 from mercurial.commands import templateopts
--- a/hgext/churn.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/churn.py	Tue Jun 30 23:17:57 2009 +0200
@@ -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.
 
-'''display statistics about repository history'''
+'''command to display statistics about repository history'''
 
 from mercurial.i18n import _
 from mercurial import patch, cmdutil, util, templater
--- a/hgext/color.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/color.py	Tue Jun 30 23:17:57 2009 +0200
@@ -60,7 +60,7 @@
 
 import os, sys
 
-from mercurial import cmdutil, commands, extensions
+from mercurial import cmdutil, commands, extensions, error
 from mercurial.i18n import _
 
 # start and stop parameters for effects
@@ -220,18 +220,30 @@
                  'changed': ['white'],
                  'trailingwhitespace': ['bold', 'red_background']}
 
+_ui = None
+
 def uisetup(ui):
     '''Initialize the extension.'''
+    global _ui
+    _ui = ui
     _setupcmd(ui, 'diff', commands.table, colordiff, _diff_effects)
     _setupcmd(ui, 'incoming', commands.table, None, _diff_effects)
     _setupcmd(ui, 'log', commands.table, None, _diff_effects)
     _setupcmd(ui, 'outgoing', commands.table, None, _diff_effects)
     _setupcmd(ui, 'tip', commands.table, None, _diff_effects)
     _setupcmd(ui, 'status', commands.table, colorstatus, _status_effects)
+
+def extsetup():
     try:
         mq = extensions.find('mq')
-        _setupcmd(ui, 'qdiff', mq.cmdtable, colordiff, _diff_effects)
-        _setupcmd(ui, 'qseries', mq.cmdtable, colorqseries, _patch_effects)
+        try:
+            # If we are loaded after mq, we must wrap commands.table
+            _setupcmd(_ui, 'qdiff', commands.table, colordiff, _diff_effects)
+            _setupcmd(_ui, 'qseries', commands.table, colorqseries, _patch_effects)
+        except error.UnknownCommand:
+            # Otherwise we wrap mq.cmdtable
+            _setupcmd(_ui, 'qdiff', mq.cmdtable, colordiff, _diff_effects)
+            _setupcmd(_ui, 'qseries', mq.cmdtable, colorqseries, _patch_effects)
     except KeyError:
         # The mq extension is not enabled
         pass
@@ -261,6 +273,15 @@
     ])
 
     for status in effectsmap:
-        effects = ui.configlist('color', cmd + '.' + status)
+        configkey = cmd + '.' + status
+        effects = ui.configlist('color', configkey)
         if effects:
-            effectsmap[status] = effects
+            good = []
+            for e in effects:
+                if e in _effect_params:
+                    good.append(e)
+                else:
+                    ui.warn(_("ignoring unknown color/effect %r "
+                              "(configured in color.%s)\n")
+                            % (e, configkey))
+            effectsmap[status] = good
--- a/hgext/convert/__init__.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/convert/__init__.py	Tue Jun 30 23:17:57 2009 +0200
@@ -5,7 +5,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 from foreign VCS repositories into Mercurial'''
+'''import revisions from foreign VCS repositories into Mercurial'''
 
 import convcmd
 import cvsps
--- a/hgext/extdiff.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/extdiff.py	Tue Jun 30 23:17:57 2009 +0200
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2, incorporated herein by reference.
 
-'''allow external programs to compare revisions
+'''command to allow external programs to compare revisions
 
 The `extdiff' Mercurial extension allows you to use external programs
 to compare revisions, or revision with working directory. The external diff
--- a/hgext/gpg.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/gpg.py	Tue Jun 30 23:17:57 2009 +0200
@@ -3,7 +3,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2, incorporated herein by reference.
 
-'''sign and verify changesets'''
+'''commands to sign and verify changesets'''
 
 import os, tempfile, binascii
 from mercurial import util, commands, match
--- a/hgext/graphlog.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/graphlog.py	Tue Jun 30 23:17:57 2009 +0200
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2, incorporated herein by reference.
 
-'''show revision graphs in terminals
+'''command to view revision graphs from a shell
 
 This extension adds a --graph option to the incoming, outgoing and log
 commands. When this options is given, an ASCII representation of the
--- a/hgext/hgcia.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/hgcia.py	Tue Jun 30 23:17:57 2009 +0200
@@ -1,7 +1,7 @@
 # Copyright (C) 2007-8 Brendan Cully <brendan@kublai.com>
 # Published under the GNU GPL
 
-"""integrate Mercurial with a CIA notification service
+"""hooks for integrating with the CIA.vc notification service
 
 This is meant to be run as a changegroup or incoming hook.
 To configure it, set the following options in your hgrc:
--- a/hgext/hgk.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/hgk.py	Tue Jun 30 23:17:57 2009 +0200
@@ -331,7 +331,7 @@
     "debug-config":
         (config, [], _('hg debug-config')),
     "debug-merge-base":
-        (base, [], _('hg debug-merge-base node node')),
+        (base, [], _('hg debug-merge-base REV REV')),
     "debug-rev-parse":
         (revparse,
          [('', 'default', '', _('ignored'))],
@@ -342,5 +342,5 @@
           ('t', 'topo-order', None, _('topo-order')),
           ('p', 'parents', None, _('parents')),
           ('n', 'max-count', 0, _('max-count'))],
-         _('hg debug-rev-list [options] revs')),
+         _('hg debug-rev-list [OPTION]... REV...')),
 }
--- a/hgext/highlight/__init__.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/highlight/__init__.py	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 # The original module was split in an interface and an implementation
 # file to defer pygments loading and speedup extension setup.
 
-"""syntax highlighting for hgweb
+"""syntax highlighting for hgweb (requires Pygments)
 
 It depends on the Pygments syntax highlighting library:
 http://pygments.org/
@@ -19,8 +19,6 @@
 pygments_style = <style>
 
 The default is 'colorful'.
-
--- Adam Hupp <adam@hupp.org>
 """
 
 import highlight
--- a/hgext/inotify/__init__.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/inotify/__init__.py	Tue Jun 30 23:17:57 2009 +0200
@@ -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.
 
-'''accelerate status report using system level services'''
+'''accelerate status report using Linux's inotify service'''
 
 # todo: socket permissions
 
@@ -107,5 +107,5 @@
           ('', 'daemon-pipefds', '', _('used internally by daemon mode')),
           ('t', 'idle-timeout', '', _('minutes to sit idle before exiting')),
           ('', 'pid-file', '', _('name of file to write process ID to'))],
-         _('hg inserve [OPT]...')),
+         _('hg inserve [OPTION]...')),
     }
--- a/hgext/inotify/server.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/inotify/server.py	Tue Jun 30 23:17:57 2009 +0200
@@ -288,14 +288,6 @@
         self.add_watch(self.repo.path, inotify.IN_DELETE)
         self.check_dirstate()
 
-    def wpath(self, evt):
-        path = evt.fullpath
-        if path == self.repo.root:
-            return ''
-        if path.startswith(self.wprefix):
-            return path[len(self.wprefix):]
-        raise 'wtf? ' + path
-
     def dir(self, tree, path):
         if path:
             for name in path.split('/'):
@@ -585,7 +577,9 @@
             self.ui.note(_('%s reading %d events\n') %
                          (self.event_time(), len(events)))
         for evt in events:
-            wpath = self.wpath(evt)
+            assert evt.fullpath.startswith(self.wprefix)
+            wpath = evt.fullpath[len(self.wprefix):]
+
             if evt.mask & inotify.IN_UNMOUNT:
                 self.process_unmount(wpath, evt)
             elif evt.mask & (inotify.IN_MODIFY | inotify.IN_ATTRIB):
@@ -717,6 +711,12 @@
         if version != common.version:
             self.ui.warn(_('received query from incompatible client '
                            'version %d\n') % version)
+            try:
+                # try to send back our version to the client
+                # this way, the client too is informed of the mismatch
+                sock.sendall(chr(common.version))
+            except:
+                pass
             return
 
         type = cs.read(4)
--- a/hgext/keyword.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/keyword.py	Tue Jun 30 23:17:57 2009 +0200
@@ -15,7 +15,7 @@
 # audience not running a version control system.
 #
 # For in-depth discussion refer to
-# <http://www.selenic.com/mercurial/wiki/index.cgi/KeywordPlan>.
+# <http://mercurial.selenic.com/wiki/KeywordPlan>.
 #
 # Keyword expansion is based on Mercurial's changeset template mappings.
 #
@@ -281,9 +281,6 @@
 
     Override current keyword template maps with "default" option.
     '''
-    def demostatus(stat):
-        ui.status(_('\n\t%s\n') % stat)
-
     def demoitems(section, items):
         ui.write('[%s]\n' % section)
         for k, v in items:
@@ -323,7 +320,7 @@
         if k.endswith('keyword'):
             extension = '%s = %s' % (k, v)
             break
-    demostatus('config using %s keyword template maps' % kwstatus)
+    ui.status(_('\n\tconfig using %s keyword template maps\n') % kwstatus)
     ui.write('[extensions]\n%s\n' % extension)
     demoitems('keyword', ui.configitems('keyword'))
     demoitems('keywordmaps', kwmaps.iteritems())
@@ -346,7 +343,7 @@
     ui.note('hg -R "%s" ci -m "%s"\n' % (tmpdir, msg))
     repo.commit(text=msg)
     fmt = ui.verbose and ' in %s' % path or ''
-    demostatus('%s keywords expanded%s' % (kwstatus, fmt))
+    ui.status(_('\n\t%s keywords expanded%s\n') % (kwstatus, fmt))
     ui.write(repo.wread(fn))
     ui.debug(_('\nremoving temporary repository %s\n') % tmpdir)
     shutil.rmtree(tmpdir, ignore_errors=True)
@@ -362,22 +359,40 @@
     _kwfwrite(ui, repo, True, *pats, **opts)
 
 def files(ui, repo, *pats, **opts):
-    '''print files currently configured for keyword expansion
+    '''show files configured for keyword expansion
+
+    List which files in the working directory are matched by the
+    [keyword] configuration patterns.
+
+    Useful to prevent inadvertent keyword expansion and to speed up
+    execution by including only files that are actual candidates
+    for expansion.
 
-    Crosscheck which files in working directory are potential targets
-    for keyword expansion. That is, files matched by [keyword] config
-    patterns but not symlinks.
+    See "hg help keyword" on how to construct patterns both for
+    inclusion and exclusion of files.
+
+    Use -u/--untracked to list untracked files as well.
+
+    With -a/--all and -v/--verbose the codes used to show the status
+    of files are:
+    K = keyword expansion candidate
+    k = keyword expansion candidate (untracked)
+    I = ignored
+    i = ignored (untracked)
     '''
     kwt = kwtools['templater']
     status = _status(ui, repo, kwt, opts.get('untracked'), *pats, **opts)
     modified, added, removed, deleted, unknown, ignored, clean = status
-    files = sorted(modified + added + clean + unknown)
+    files = sorted(modified + added + clean)
     wctx = repo[None]
     kwfiles = [f for f in files if kwt.iskwfile(f, wctx.flags)]
+    kwuntracked = [f for f in unknown if kwt.iskwfile(f, wctx.flags)]
     cwd = pats and repo.getcwd() or ''
-    kwfstats = not opts.get('ignore') and (('K', kwfiles),) or ()
+    kwfstats = (not opts.get('ignore') and
+                (('K', kwfiles), ('k', kwuntracked),) or ())
     if opts.get('all') or opts.get('ignore'):
-        kwfstats += (('I', [f for f in files if f not in kwfiles]),)
+        kwfstats += (('I', [f for f in files if f not in kwfiles]),
+                     ('i', [f for f in unknown if f not in kwuntracked]),)
     for char, filenames in kwfstats:
         fmt = (opts.get('all') or ui.verbose) and '%s %%s\n' % char or '%s\n'
         for f in filenames:
--- a/hgext/mq.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/mq.py	Tue Jun 30 23:17:57 2009 +0200
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2, incorporated herein by reference.
 
-'''work with a stack of patches
+'''manage a stack of patches
 
 This extension lets you work with a stack of patches in a Mercurial
 repository. It manages two stacks of patches - all known patches, and
@@ -1641,11 +1641,8 @@
 def delete(ui, repo, *patches, **opts):
     """remove patches from queue
 
-    The patches must not be applied, and at least one patch is
-    required.
-
-    With -k/--keep, the patch files are preserved in the patch
-    directory.
+    The patches must not be applied, and at least one patch is required. With
+    -k/--keep, the patch files are preserved in the patch directory.
 
     To stop managing a patch and move it into permanent history,
     use the qfinish command."""
@@ -2624,5 +2621,5 @@
     "qfinish":
         (finish,
          [('a', 'applied', None, _('finish all applied changesets'))],
-         _('hg qfinish [-a] [REV...]')),
+         _('hg qfinish [-a] [REV]...')),
 }
--- a/hgext/notify.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/notify.py	Tue Jun 30 23:17:57 2009 +0200
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2, incorporated herein by reference.
 
-'''send e-mail notifications for commits/pushes
+'''hooks for sending email notifications at commit/push time
 
 Subscriptions can be managed through hgrc. Default mode is to print
 messages to stdout, for testing and configuring.
--- a/hgext/patchbomb.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/patchbomb.py	Tue Jun 30 23:17:57 2009 +0200
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2, incorporated herein by reference.
 
-'''send Mercurial changesets as a series of patch e-mails
+'''command to send changesets as (a series of) patch emails
 
 The series is started off with a "[PATCH 0 of N]" introduction, which
 describes the series as a whole.
--- a/hgext/purge.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/purge.py	Tue Jun 30 23:17:57 2009 +0200
@@ -1,6 +1,6 @@
 # Copyright (C) 2006 - Marco Barisione <marco@barisione.org>
 #
-# This is a small extension for Mercurial (http://www.selenic.com/mercurial)
+# This is a small extension for Mercurial (http://mercurial.selenic.com/)
 # that removes files not known to mercurial
 #
 # This program was inspired by the "cvspurge" script contained in CVS utilities
@@ -23,7 +23,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-'''delete files not tracked from the working directory'''
+'''command to delete untracked files from the working directory'''
 
 from mercurial import util, commands, cmdutil
 from mercurial.i18n import _
--- a/hgext/rebase.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/rebase.py	Tue Jun 30 23:17:57 2009 +0200
@@ -5,13 +5,13 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2, incorporated herein by reference.
 
-'''move sets of revisions to a different ancestor
+'''command to move sets of revisions to a different ancestor
 
 This extension lets you rebase changesets in an existing Mercurial
 repository.
 
 For more information:
-http://www.selenic.com/mercurial/wiki/index.cgi/RebaseProject
+http://mercurial.selenic.com/wiki/RebaseProject
 '''
 
 from mercurial import util, repair, merge, cmdutil, commands, error
--- a/hgext/record.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/record.py	Tue Jun 30 23:17:57 2009 +0200
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2, incorporated herein by reference.
 
-'''interactively select which sets of changes to commit/qrefresh'''
+'''commands to interactively select changes for commit/qrefresh'''
 
 from mercurial.i18n import gettext, _
 from mercurial import cmdutil, commands, extensions, hg, mdiff, patch
--- a/hgext/transplant.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/transplant.py	Tue Jun 30 23:17:57 2009 +0200
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2, incorporated herein by reference.
 
-'''transplant changesets from another branch
+'''command to transplant changesets from another branch
 
 This extension allows you to transplant patches from another branch.
 
--- a/hgext/win32mbcs.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/win32mbcs.py	Tue Jun 30 23:17:57 2009 +0200
@@ -9,7 +9,7 @@
 # GNU General Public License version 2, incorporated herein by reference.
 #
 
-'''allow the use of MBCS paths with problematic encoding
+'''allow the use of MBCS paths with problematic encodings
 
 Some MBCS encodings are not good for some path operations (i.e.
 splitting path, case conversion, etc.) with its encoded bytes. We call
--- a/hgext/win32text.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/hgext/win32text.py	Tue Jun 30 23:17:57 2009 +0200
@@ -48,7 +48,7 @@
     # warn if already has 'newline' in repository.
     # it might cause unexpected eol conversion.
     # see issue 302:
-    #   http://www.selenic.com/mercurial/bts/issue302
+    #   http://mercurial.selenic.com/bts/issue302
     if newline in s and ui and filename and repo:
         ui.warn(_('WARNING: %s already has %s line endings\n'
                   'and does not need EOL conversion by the win32text plugin.\n'
--- a/mercurial/cmdutil.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/mercurial/cmdutil.py	Tue Jun 30 23:17:57 2009 +0200
@@ -323,12 +323,10 @@
         repo.add(add)
     if similarity > 0:
         for old, new, score in findrenames(repo, m, similarity):
-            oldexact, newexact = m.exact(old), m.exact(new)
-            if repo.ui.verbose or not oldexact or not newexact:
-                oldrel, newrel = m.rel(old), m.rel(new)
+            if repo.ui.verbose or not m.exact(old) or not m.exact(new):
                 repo.ui.status(_('recording removal of %s as rename to %s '
                                  '(%d%% similar)\n') %
-                               (oldrel, newrel, score * 100))
+                               (m.rel(old), m.rel(new), score * 100))
             if not dry_run:
                 repo.copy(old, new)
 
--- a/mercurial/commands.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/mercurial/commands.py	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 from node import hex, nullid, nullrev, short
 from lock import release
 from i18n import _, gettext
-import os, re, sys, textwrap, subprocess, difflib, time
+import os, re, sys, subprocess, difflib, time
 import hg, util, revlog, bundlerepo, extensions, copies, context, error
 import patch, help, mdiff, tempfile, url, encoding
 import archival, changegroup, cmdutil, sshserver, hbisect
@@ -440,7 +440,7 @@
     """list repository named branches
 
     List the repository's named branches, indicating which ones are
-    inactive. If active is specified, only show active branches.
+    inactive. If -a/--active is specified, only show active branches.
 
     A branch is considered active if it contains repository heads.
 
@@ -484,8 +484,8 @@
     parameters. To create a bundle containing all changesets, use
     -a/--all (or --base null).
 
-    To change the compression method applied, use the -t/--type
-    option. The available compression methods are: none, bzip2, and
+    You can change compression method with the -t/--type option.
+    The available compression methods are: none, bzip2, and
     gzip (by default, bundles are compressed using bzip2).
 
     The bundle file can then be transferred using conventional means
@@ -987,7 +987,7 @@
                        " or misconfigured. Please check your .hgrc file)\n"))
         else:
             ui.write(_(" Internal patcher failure, please report this error"
-                       " to http://www.selenic.com/mercurial/bts\n"))
+                       " to http://mercurial.selenic.com/bts/\n"))
     problems += patchproblems
 
     os.unlink(fa)
@@ -1368,7 +1368,7 @@
     branch is called the revision's branch tag.
 
     Branch heads are revisions on a given named branch that do not have
-    any children on the same branch. A branch head could be a true head
+    any descendants on the same branch. A branch head could be a true head
     or it could be the last changeset on a branch before a new branch
     was created. If none of the branch heads are true heads, the branch
     is considered inactive.
@@ -1514,7 +1514,7 @@
                 commands = cmds[f].replace("|",", ")
                 ui.write(" %s:\n      %s\n"%(commands, h[f]))
             else:
-                ui.write(' %-*s   %s\n' % (m, f, h[f]))
+                ui.write(' %-*s   %s\n' % (m, f, util.wrap(h[f], m + 4)))
 
         if name != 'shortlist':
             exts, maxlength = extensions.enabled()
@@ -1617,11 +1617,8 @@
         opts_len = max([len(line[0]) for line in opt_output if line[1]] or [0])
         for first, second in opt_output:
             if second:
-                # wrap descriptions at 70 characters, just like the
-                # main help texts
-                second = textwrap.wrap(second, width=70 - opts_len - 3)
-                pad = '\n' + ' ' * (opts_len + 3)
-                ui.write(" %-*s  %s\n" % (opts_len, first, pad.join(second)))
+                second = util.wrap(second, opts_len + 3)
+                ui.write(" %-*s  %s\n" % (opts_len, first, second))
             else:
                 ui.write("%s\n" % first)
 
@@ -1729,7 +1726,8 @@
     With -s/--similarity, hg will attempt to discover renames and
     copies in the patch in the same way as 'addremove'.
 
-    To read a patch from standard input, use "-" as the patch name.
+    To read a patch from standard input, use "-" as the patch name. If
+    a URL is specified, the patch will be downloaded from it.
     See 'hg help dates' for a list of formats valid for -d/--date.
     """
     patches = (patch1,) + patches
--- a/mercurial/dispatch.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/mercurial/dispatch.py	Tue Jun 30 23:17:57 2009 +0200
@@ -143,7 +143,7 @@
     except:
         ui.warn(_("** unknown exception encountered, details follow\n"))
         ui.warn(_("** report bug details to "
-                 "http://www.selenic.com/mercurial/bts\n"))
+                 "http://mercurial.selenic.com/bts/\n"))
         ui.warn(_("** or mercurial@selenic.com\n"))
         ui.warn(_("** Mercurial Distributed SCM (version %s)\n")
                % util.version())
--- a/mercurial/extensions.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/mercurial/extensions.py	Tue Jun 30 23:17:57 2009 +0200
@@ -125,9 +125,14 @@
     import hgext
     extpath = os.path.dirname(os.path.abspath(hgext.__file__))
 
+    try: # might not be a filesystem path
+        files = os.listdir(extpath)
+    except OSError:
+        return None, 0
+
     exts = {}
     maxlength = 0
-    for e in os.listdir(extpath):
+    for e in files:
 
         if e.endswith('.py'):
             name = e.rsplit('.', 1)[0]
--- a/mercurial/help.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/mercurial/help.py	Tue Jun 30 23:17:57 2009 +0200
@@ -5,9 +5,8 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2, incorporated herein by reference.
 
-import textwrap
 from i18n import _
-import extensions
+import extensions, util
 
 
 def moduledoc(file):
@@ -46,11 +45,8 @@
         return ''
     result = '\n%s\n\n' % header
     for name, desc in sorted(exts.iteritems()):
-        # wrap desc at 70 characters, just like the main help texts
-        desc = textwrap.wrap(desc, width=70 - maxlength - 4)
-        pad = '\n' + ' ' * (maxlength + 4)
-        result += ' %s   %s\n' % (name.ljust(maxlength),
-                                  pad.join(desc))
+        desc = util.wrap(desc, maxlength + 4)
+        result += ' %s   %s\n' % (name.ljust(maxlength), desc)
     return result
 
 def extshelp():
--- a/mercurial/localrepo.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/mercurial/localrepo.py	Tue Jun 30 23:17:57 2009 +0200
@@ -454,15 +454,30 @@
             pass
 
     def _updatebranchcache(self, partial, start, end):
+        # collect new branch entries
+        newbranches = {}
         for r in xrange(start, end):
             c = self[r]
-            b = c.branch()
-            bheads = partial.setdefault(b, [])
-            bheads.append(c.node())
-            for p in c.parents():
-                pn = p.node()
-                if pn in bheads:
-                    bheads.remove(pn)
+            newbranches.setdefault(c.branch(), []).append(c.node())
+        # if older branchheads are reachable from new ones, they aren't
+        # really branchheads. Note checking parents is insufficient:
+        # 1 (branch a) -> 2 (branch b) -> 3 (branch a)
+        for branch, newnodes in newbranches.iteritems():
+            bheads = partial.setdefault(branch, [])
+            bheads.extend(newnodes)
+            if len(bheads) < 2:
+                continue
+            newbheads = []
+            # starting from tip means fewer passes over reachable
+            while newnodes:
+                latest = newnodes.pop()
+                if latest not in bheads:
+                    continue
+                reachable = self.changelog.reachable(latest, bheads[0])
+                bheads = [b for b in bheads if b not in reachable]
+                newbheads.insert(0, latest)
+            bheads.extend(newbheads)
+            partial[branch] = bheads
 
     def lookup(self, key):
         if isinstance(key, int):
--- a/mercurial/ui.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/mercurial/ui.py	Tue Jun 30 23:17:57 2009 +0200
@@ -277,7 +277,7 @@
         insensitive. If ui is not interactive, the default is returned.
         """
         if not self.interactive():
-            self.note(msg, ' ', default, "\n")
+            self.write(msg, ' ', default, "\n")
             return default
         while True:
             try:
--- a/mercurial/util.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/mercurial/util.py	Tue Jun 30 23:17:57 2009 +0200
@@ -16,7 +16,7 @@
 from i18n import _
 import error, osutil
 import cStringIO, errno, re, shutil, sys, tempfile, traceback
-import os, stat, time, calendar, random
+import os, stat, time, calendar, random, textwrap
 import imp
 
 # Python compatibility
@@ -1242,6 +1242,10 @@
         pass
     return 80
 
+def wrap(line, hangindent, width=78):
+    padding = '\n' + ' ' * hangindent
+    return padding.join(textwrap.wrap(line, width=width - hangindent))
+
 def iterlines(iterator):
     for chunk in iterator:
         for line in chunk.splitlines():
--- a/mercurial/win32.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/mercurial/win32.py	Tue Jun 30 23:17:57 2009 +0200
@@ -20,139 +20,6 @@
 import osutil, encoding
 from win32com.shell import shell,shellcon
 
-class WinError(Exception):
-    winerror_map = {
-        winerror.ERROR_ACCESS_DENIED: errno.EACCES,
-        winerror.ERROR_ACCOUNT_DISABLED: errno.EACCES,
-        winerror.ERROR_ACCOUNT_RESTRICTION: errno.EACCES,
-        winerror.ERROR_ALREADY_ASSIGNED: errno.EBUSY,
-        winerror.ERROR_ALREADY_EXISTS: errno.EEXIST,
-        winerror.ERROR_ARITHMETIC_OVERFLOW: errno.ERANGE,
-        winerror.ERROR_BAD_COMMAND: errno.EIO,
-        winerror.ERROR_BAD_DEVICE: errno.ENODEV,
-        winerror.ERROR_BAD_DRIVER_LEVEL: errno.ENXIO,
-        winerror.ERROR_BAD_EXE_FORMAT: errno.ENOEXEC,
-        winerror.ERROR_BAD_FORMAT: errno.ENOEXEC,
-        winerror.ERROR_BAD_LENGTH: errno.EINVAL,
-        winerror.ERROR_BAD_PATHNAME: errno.ENOENT,
-        winerror.ERROR_BAD_PIPE: errno.EPIPE,
-        winerror.ERROR_BAD_UNIT: errno.ENODEV,
-        winerror.ERROR_BAD_USERNAME: errno.EINVAL,
-        winerror.ERROR_BROKEN_PIPE: errno.EPIPE,
-        winerror.ERROR_BUFFER_OVERFLOW: errno.ENAMETOOLONG,
-        winerror.ERROR_BUSY: errno.EBUSY,
-        winerror.ERROR_BUSY_DRIVE: errno.EBUSY,
-        winerror.ERROR_CALL_NOT_IMPLEMENTED: errno.ENOSYS,
-        winerror.ERROR_CANNOT_MAKE: errno.EACCES,
-        winerror.ERROR_CANTOPEN: errno.EIO,
-        winerror.ERROR_CANTREAD: errno.EIO,
-        winerror.ERROR_CANTWRITE: errno.EIO,
-        winerror.ERROR_CRC: errno.EIO,
-        winerror.ERROR_CURRENT_DIRECTORY: errno.EACCES,
-        winerror.ERROR_DEVICE_IN_USE: errno.EBUSY,
-        winerror.ERROR_DEV_NOT_EXIST: errno.ENODEV,
-        winerror.ERROR_DIRECTORY: errno.EINVAL,
-        winerror.ERROR_DIR_NOT_EMPTY: errno.ENOTEMPTY,
-        winerror.ERROR_DISK_CHANGE: errno.EIO,
-        winerror.ERROR_DISK_FULL: errno.ENOSPC,
-        winerror.ERROR_DRIVE_LOCKED: errno.EBUSY,
-        winerror.ERROR_ENVVAR_NOT_FOUND: errno.EINVAL,
-        winerror.ERROR_EXE_MARKED_INVALID: errno.ENOEXEC,
-        winerror.ERROR_FILENAME_EXCED_RANGE: errno.ENAMETOOLONG,
-        winerror.ERROR_FILE_EXISTS: errno.EEXIST,
-        winerror.ERROR_FILE_INVALID: errno.ENODEV,
-        winerror.ERROR_FILE_NOT_FOUND: errno.ENOENT,
-        winerror.ERROR_GEN_FAILURE: errno.EIO,
-        winerror.ERROR_HANDLE_DISK_FULL: errno.ENOSPC,
-        winerror.ERROR_INSUFFICIENT_BUFFER: errno.ENOMEM,
-        winerror.ERROR_INVALID_ACCESS: errno.EACCES,
-        winerror.ERROR_INVALID_ADDRESS: errno.EFAULT,
-        winerror.ERROR_INVALID_BLOCK: errno.EFAULT,
-        winerror.ERROR_INVALID_DATA: errno.EINVAL,
-        winerror.ERROR_INVALID_DRIVE: errno.ENODEV,
-        winerror.ERROR_INVALID_EXE_SIGNATURE: errno.ENOEXEC,
-        winerror.ERROR_INVALID_FLAGS: errno.EINVAL,
-        winerror.ERROR_INVALID_FUNCTION: errno.ENOSYS,
-        winerror.ERROR_INVALID_HANDLE: errno.EBADF,
-        winerror.ERROR_INVALID_LOGON_HOURS: errno.EACCES,
-        winerror.ERROR_INVALID_NAME: errno.EINVAL,
-        winerror.ERROR_INVALID_OWNER: errno.EINVAL,
-        winerror.ERROR_INVALID_PARAMETER: errno.EINVAL,
-        winerror.ERROR_INVALID_PASSWORD: errno.EPERM,
-        winerror.ERROR_INVALID_PRIMARY_GROUP: errno.EINVAL,
-        winerror.ERROR_INVALID_SIGNAL_NUMBER: errno.EINVAL,
-        winerror.ERROR_INVALID_TARGET_HANDLE: errno.EIO,
-        winerror.ERROR_INVALID_WORKSTATION: errno.EACCES,
-        winerror.ERROR_IO_DEVICE: errno.EIO,
-        winerror.ERROR_IO_INCOMPLETE: errno.EINTR,
-        winerror.ERROR_LOCKED: errno.EBUSY,
-        winerror.ERROR_LOCK_VIOLATION: errno.EACCES,
-        winerror.ERROR_LOGON_FAILURE: errno.EACCES,
-        winerror.ERROR_MAPPED_ALIGNMENT: errno.EINVAL,
-        winerror.ERROR_META_EXPANSION_TOO_LONG: errno.E2BIG,
-        winerror.ERROR_MORE_DATA: errno.EPIPE,
-        winerror.ERROR_NEGATIVE_SEEK: errno.ESPIPE,
-        winerror.ERROR_NOACCESS: errno.EFAULT,
-        winerror.ERROR_NONE_MAPPED: errno.EINVAL,
-        winerror.ERROR_NOT_ENOUGH_MEMORY: errno.ENOMEM,
-        winerror.ERROR_NOT_READY: errno.EAGAIN,
-        winerror.ERROR_NOT_SAME_DEVICE: errno.EXDEV,
-        winerror.ERROR_NO_DATA: errno.EPIPE,
-        winerror.ERROR_NO_MORE_SEARCH_HANDLES: errno.EIO,
-        winerror.ERROR_NO_PROC_SLOTS: errno.EAGAIN,
-        winerror.ERROR_NO_SUCH_PRIVILEGE: errno.EACCES,
-        winerror.ERROR_OPEN_FAILED: errno.EIO,
-        winerror.ERROR_OPEN_FILES: errno.EBUSY,
-        winerror.ERROR_OPERATION_ABORTED: errno.EINTR,
-        winerror.ERROR_OUTOFMEMORY: errno.ENOMEM,
-        winerror.ERROR_PASSWORD_EXPIRED: errno.EACCES,
-        winerror.ERROR_PATH_BUSY: errno.EBUSY,
-        winerror.ERROR_PATH_NOT_FOUND: errno.ENOENT,
-        winerror.ERROR_PIPE_BUSY: errno.EBUSY,
-        winerror.ERROR_PIPE_CONNECTED: errno.EPIPE,
-        winerror.ERROR_PIPE_LISTENING: errno.EPIPE,
-        winerror.ERROR_PIPE_NOT_CONNECTED: errno.EPIPE,
-        winerror.ERROR_PRIVILEGE_NOT_HELD: errno.EACCES,
-        winerror.ERROR_READ_FAULT: errno.EIO,
-        winerror.ERROR_SEEK: errno.EIO,
-        winerror.ERROR_SEEK_ON_DEVICE: errno.ESPIPE,
-        winerror.ERROR_SHARING_BUFFER_EXCEEDED: errno.ENFILE,
-        winerror.ERROR_SHARING_VIOLATION: errno.EACCES,
-        winerror.ERROR_STACK_OVERFLOW: errno.ENOMEM,
-        winerror.ERROR_SWAPERROR: errno.ENOENT,
-        winerror.ERROR_TOO_MANY_MODULES: errno.EMFILE,
-        winerror.ERROR_TOO_MANY_OPEN_FILES: errno.EMFILE,
-        winerror.ERROR_UNRECOGNIZED_MEDIA: errno.ENXIO,
-        winerror.ERROR_UNRECOGNIZED_VOLUME: errno.ENODEV,
-        winerror.ERROR_WAIT_NO_CHILDREN: errno.ECHILD,
-        winerror.ERROR_WRITE_FAULT: errno.EIO,
-        winerror.ERROR_WRITE_PROTECT: errno.EROFS,
-        }
-
-    def __init__(self, err):
-        try:
-            # unpack a pywintypes.error tuple
-            self.win_errno, self.win_function, self.win_strerror = err
-        except ValueError:
-            # get attributes from a WindowsError
-            self.win_errno = err.winerror
-            self.win_function = None
-            self.win_strerror = err.strerror
-        self.win_strerror = self.win_strerror.rstrip('.')
-
-class WinIOError(WinError, IOError):
-    def __init__(self, err, filename=None):
-        WinError.__init__(self, err)
-        IOError.__init__(self, self.winerror_map.get(self.win_errno, 0),
-                         self.win_strerror)
-        self.filename = filename
-
-class WinOSError(WinError, OSError):
-    def __init__(self, err):
-        WinError.__init__(self, err)
-        OSError.__init__(self, self.winerror_map.get(self.win_errno, 0),
-                         self.win_strerror)
-
 def os_link(src, dst):
     try:
         win32file.CreateHardLink(dst, src)
@@ -164,12 +31,11 @@
             except:
                 pass
             # Fake hardlinking error
-            raise WinOSError((18, 'CreateHardLink', 'The system cannot '
-                              'move the file to a different disk drive'))
+            raise OSError(errno.EINVAL, 'Hardlinking not supported')
     except pywintypes.error, details:
-        raise WinOSError(details)
+        raise OSError(errno.EINVAL, 'target implements hardlinks improperly')
     except NotImplementedError: # Another fake error win Win98
-        raise WinOSError((18, 'CreateHardLink', 'Hardlinking not supported'))
+        raise OSError(errno.EINVAL, 'Hardlinking not supported')
 
 def nlinks(pathname):
     """Return number of hardlinks for the given file."""
--- a/mercurial/windows.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/mercurial/windows.py	Tue Jun 30 23:17:57 2009 +0200
@@ -17,7 +17,7 @@
     try:
         return osutil.posixfile(name, mode, buffering)
     except WindowsError, err:
-        raise WinIOError(err)
+        raise IOError(err.errno, err.strerror)
 posixfile.__doc__ = osutil.posixfile.__doc__
 
 class winstdout(object):
--- a/setup.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/setup.py	Tue Jun 30 23:17:57 2009 +0200
@@ -255,7 +255,7 @@
       version=version,
       author='Matt Mackall',
       author_email='mpm@selenic.com',
-      url='http://selenic.com/mercurial',
+      url='http://mercurial.selenic.com/',
       description='Scalable distributed SCM',
       license='GNU GPL',
       scripts=scripts,
--- a/templates/atom/error.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/atom/error.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -7,7 +7,7 @@
  <updated>1970-01-01T00:00:00+00:00</updated>
  <entry>
   <title>Error</title>
-  <id>http://www.selenic.com/mercurial/#error</id>
+  <id>http://mercurial.selenic.com/#error</id>
   <author>
     <name>mercurial</name>
   </author>
--- a/templates/atom/filelog.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/atom/filelog.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -1,6 +1,6 @@
 {header}
  <id>{urlbase}{url}atom-log/tip/{file|escape}</id>
- <link rel="self" href="{urlbase}{url}atom-log/tip/{file|escape}"/>
+ <link rel="self" href="{urlbase}{url}atom-log/tip/{file|urlescape}"/>
  <title>{repo|escape}: {file|escape} history</title>
  {latestentry%feedupdated}
 
--- a/templates/gitweb/branches.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/branches.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / branches
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / branches
 </div>
 
 <div class="page_nav">
--- a/templates/gitweb/changelog.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/changelog.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changelog
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changelog
 </div>
 
 <form action="{url}log">
--- a/templates/gitweb/changeset.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/changeset.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changeset
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changeset
 </div>
 
 <div class="page_nav">
--- a/templates/gitweb/error.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/error.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / error
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / error
 </div>
 
 <div class="page_nav">
--- a/templates/gitweb/fileannotate.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/fileannotate.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate
 </div>
 
 <div class="page_nav">
--- a/templates/gitweb/filediff.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/filediff.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / diff
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / diff
 </div>
 
 <div class="page_nav">
--- a/templates/gitweb/filelog.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/filelog.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revisions
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revisions
 </div>
 
 <div class="page_nav">
--- a/templates/gitweb/filerevision.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/filerevision.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision
 </div>
 
 <div class="page_nav">
--- a/templates/gitweb/graph.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/graph.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -9,7 +9,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / graph
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / graph
 </div>
 
 <form action="{url}log">
--- a/templates/gitweb/index.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/index.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -4,7 +4,7 @@
 <body>
 
 <div class="page_header">
-    <a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a>
+    <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a>
     Repositories list
 </div>
 
--- a/templates/gitweb/manifest.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/manifest.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files
 </div>
 
 <div class="page_nav">
--- a/templates/gitweb/notfound.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/notfound.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -5,7 +5,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a> Not found: {repo|escape}
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a> Not found: {repo|escape}
 </div>
 
 <div class="page_body">
--- a/templates/gitweb/search.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/search.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / search
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / search
 
 <form action="{url}log">
 {sessionvars%hiddenformentry}
--- a/templates/gitweb/shortlog.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/shortlog.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / shortlog
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / shortlog
 </div>
 
 <form action="{url}log">
--- a/templates/gitweb/summary.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/summary.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / summary
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / summary
 
 <form action="{url}log">
 {sessionvars%hiddenformentry}
--- a/templates/gitweb/tags.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/gitweb/tags.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / tags
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / tags
 </div>
 
 <div class="page_nav">
--- a/templates/monoblue/footer.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/monoblue/footer.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -8,7 +8,7 @@
     </div>
 
     <div id="powered-by">
-        <p><a href="http://www.selenic.com/mercurial/" title="Mercurial"><img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a></p>
+        <p><a href="http://mercurial.selenic.com/" title="Mercurial"><img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a></p>
     </div>
 
     <div id="corner-top-left"></div>
--- a/templates/monoblue/index.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/monoblue/index.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -26,7 +26,7 @@
     </div>
 
     <div id="powered-by">
-        <p><a href="http://www.selenic.com/mercurial/" title="Mercurial"><img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a></p>
+        <p><a href="http://mercurial.selenic.com/" title="Mercurial"><img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a></p>
     </div>
 
     <div id="corner-top-left"></div>
--- a/templates/paper/branches.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/paper/branches.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -10,7 +10,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
--- a/templates/paper/changeset.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/paper/changeset.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -5,7 +5,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
--- a/templates/paper/error.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/paper/error.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -6,7 +6,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <ul>
--- a/templates/paper/fileannotate.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/paper/fileannotate.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -6,7 +6,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
--- a/templates/paper/filediff.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/paper/filediff.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -6,7 +6,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
--- a/templates/paper/filelog.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/paper/filelog.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -10,7 +10,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
--- a/templates/paper/filerevision.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/paper/filerevision.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -6,7 +6,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
--- a/templates/paper/graph.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/paper/graph.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -11,7 +11,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
--- a/templates/paper/index.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/paper/index.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -5,7 +5,7 @@
 
 <div class="container">
 <div class="menu">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <div class="main">
--- a/templates/paper/manifest.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/paper/manifest.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -6,7 +6,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
--- a/templates/paper/search.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/paper/search.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -6,7 +6,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
 </div>
 <ul>
--- a/templates/paper/shortlog.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/paper/shortlog.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -10,7 +10,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
--- a/templates/paper/tags.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/paper/tags.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -10,7 +10,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="{staticurl}hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
--- a/templates/rss/error.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/rss/error.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -4,7 +4,7 @@
     <item>
       <title>Error</title>
       <description>{error|escape}</description>
-      <guid>http://www.selenic.com/mercurial/#error</guid>
+      <guid>http://mercurial.selenic.com/#error</guid>
     </item>
   </channel>
 </rss>
--- a/templates/spartan/footer.tmpl	Tue Jun 30 23:16:38 2009 +0200
+++ b/templates/spartan/footer.tmpl	Tue Jun 30 23:17:57 2009 +0200
@@ -1,6 +1,6 @@
 {motd}
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
 </div>
 
--- a/tests/README	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/README	Tue Jun 30 23:17:57 2009 +0200
@@ -3,5 +3,5 @@
 cd tests/
 python run-tests.py
 
-See http://www.selenic.com/mercurial/wiki/index.cgi/WritingTests for
+See http://mercurial.selenic.com/wiki/WritingTests for
 more information on writing tests.
--- a/tests/run-tests.py	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/run-tests.py	Tue Jun 30 23:17:57 2009 +0200
@@ -266,7 +266,9 @@
     pure = options.pure and "--pure" or ""
 
     # Run installer in hg root
-    os.chdir(os.path.join(os.path.dirname(sys.argv[0]), '..'))
+    script = os.path.realpath(sys.argv[0])
+    hgroot = os.path.dirname(os.path.dirname(script))
+    os.chdir(hgroot)
     cmd = ('%s setup.py %s clean --all'
            ' install --force --prefix="%s" --install-lib="%s"'
            ' --install-scripts="%s" >%s 2>&1'
--- a/tests/test-bundle	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-bundle	Tue Jun 30 23:17:57 2009 +0200
@@ -103,7 +103,7 @@
 hg -R full-clone heads
 rm -r full-clone
 
-# test for http://www.selenic.com/mercurial/bts/issue216
+# test for http://mercurial.selenic.com/bts/issue216
 echo "====== Unbundle incremental bundles into fresh empty in one go"
 rm -r empty
 hg init empty
@@ -131,7 +131,7 @@
 hg incoming ../bundle.hg
 cd ..
 
-# test for http://www.selenic.com/mercurial/bts/issue1144
+# test for http://mercurial.selenic.com/bts/issue1144
 echo "===== test that verify bundle does not traceback"
 # partial history bundle, fails w/ unkown parent
 hg -R bundle.hg verify
--- a/tests/test-convert-cvs-branch	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-convert-cvs-branch	Tue Jun 30 23:17:57 2009 +0200
@@ -1,7 +1,7 @@
 #!/bin/sh
 
-# This is http://www.selenic.com/mercurial/bts/issue1148
-#     and http://www.selenic.com/mercurial/bts/issue1447
+# This is http://mercurial.selenic.com/bts/issue1148
+#     and http://mercurial.selenic.com/bts/issue1447
 
 "$TESTDIR/hghave" cvs || exit 80
 
--- a/tests/test-extension.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-extension.out	Tue Jun 30 23:17:57 2009 +0200
@@ -36,8 +36,7 @@
 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
+ -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
--- a/tests/test-globalopts.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-globalopts.out	Tue Jun 30 23:17:57 2009 +0200
@@ -58,10 +58,10 @@
 %% earlygetopt with illegal abbreviations
 abort: Option --config may not be abbreviated!
 abort: Option --cwd may not be abbreviated!
-abort: Option -R has to be separated from other options (i.e. not -qR) and --repository may only be abbreviated as --repo!
-abort: Option -R has to be separated from other options (i.e. not -qR) and --repository may only be abbreviated as --repo!
-abort: Option -R has to be separated from other options (i.e. not -qR) and --repository may only be abbreviated as --repo!
-abort: Option -R has to be separated from other options (i.e. not -qR) and --repository may only be abbreviated as --repo!
+abort: Option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
+abort: Option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
+abort: Option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
+abort: Option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
 %% --cwd
 changeset:   0:8580ff50825a
 tag:         tip
--- a/tests/test-hgweb-commands.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-hgweb-commands.out	Tue Jun 30 23:17:57 2009 +0200
@@ -172,7 +172,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -251,7 +251,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -378,7 +378,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -502,7 +502,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://127.0.0.1/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / branches
+<a href="http://127.0.0.1/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / branches
 </div>
 
 <div class="page_nav">
@@ -573,7 +573,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / summary
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / summary
 
 <form action="/log">
 <input type="hidden" name="style" value="gitweb" />
@@ -724,7 +724,7 @@
 <body>
 
 <div class="page_header">
-<a href="http://www.selenic.com/mercurial/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / graph
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / graph
 </div>
 
 <form action="/log">
--- a/tests/test-hgweb-descend-empties.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-hgweb-descend-empties.out	Tue Jun 30 23:17:57 2009 +0200
@@ -21,7 +21,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
--- a/tests/test-hgweb-diffs.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-hgweb-diffs.out	Tue Jun 30 23:17:57 2009 +0200
@@ -19,7 +19,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -112,7 +112,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -201,7 +201,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -296,7 +296,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
--- a/tests/test-hgweb-empty.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-hgweb-empty.out	Tue Jun 30 23:17:57 2009 +0200
@@ -18,7 +18,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -87,7 +87,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -157,7 +157,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -296,7 +296,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
--- a/tests/test-hgweb-filelog.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-hgweb-filelog.out	Tue Jun 30 23:17:57 2009 +0200
@@ -106,7 +106,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -189,7 +189,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -272,7 +272,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -350,7 +350,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -424,7 +424,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <ul>
@@ -559,7 +559,7 @@
 
 
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
 </div>
 
--- a/tests/test-hgweb-removed.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-hgweb-removed.out	Tue Jun 30 23:17:57 2009 +0200
@@ -17,7 +17,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -106,7 +106,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
--- a/tests/test-hgweb.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-hgweb.out	Tue Jun 30 23:17:57 2009 +0200
@@ -35,7 +35,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <ul>
@@ -105,7 +105,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <ul>
--- a/tests/test-hgwebdir.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-hgwebdir.out	Tue Jun 30 23:17:57 2009 +0200
@@ -56,7 +56,7 @@
 
 <div class="container">
 <div class="menu">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <div class="main">
@@ -192,7 +192,7 @@
 
 <div class="container">
 <div class="menu">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <div class="main">
--- a/tests/test-highlight.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-highlight.out	Tue Jun 30 23:17:57 2009 +0200
@@ -19,7 +19,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -137,7 +137,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
@@ -224,7 +224,7 @@
 <div class="container">
 <div class="menu">
 <div class="logo">
-<a href="http://www.selenic.com/mercurial/">
+<a href="http://mercurial.selenic.com/">
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
--- a/tests/test-issue322	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-issue322	Tue Jun 30 23:17:57 2009 +0200
@@ -1,5 +1,5 @@
 #!/bin/sh
-# http://www.selenic.com/mercurial/bts/issue322
+# http://mercurial.selenic.com/bts/issue322
 
 echo % file replaced with directory
 
--- a/tests/test-issue352	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-issue352	Tue Jun 30 23:17:57 2009 +0200
@@ -1,5 +1,5 @@
 #!/bin/sh
-# http://www.selenic.com/mercurial/bts/issue352
+# http://mercurial.selenic.com/bts/issue352
 
 "$TESTDIR/hghave" eol-in-paths || exit 80
 
--- a/tests/test-issue433	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-issue433	Tue Jun 30 23:17:57 2009 +0200
@@ -1,5 +1,5 @@
 #!/bin/sh
-# http://www.selenic.com/mercurial/bts/issue433
+# http://mercurial.selenic.com/bts/issue433
 
 hg init a
 cd a
--- a/tests/test-issue660	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-issue660	Tue Jun 30 23:17:57 2009 +0200
@@ -1,5 +1,5 @@
 #!/bin/sh
-# http://www.selenic.com/mercurial/bts/issue660
+# http://mercurial.selenic.com/bts/issue660
 
 
 hg init a
--- a/tests/test-keyword.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-keyword.out	Tue Jun 30 23:17:57 2009 +0200
@@ -50,14 +50,14 @@
 
  kwdemo     print [keywordmaps] configuration and an expansion example
  kwexpand   expand keywords in the working directory
- kwfiles    print files currently configured for keyword expansion
+ kwfiles    show files configured for keyword expansion
  kwshrink   revert expanded keywords in the working directory
 
 enabled extensions:
 
  keyword   expand keywords in tracked files
- mq        work with a stack of patches
- notify    send e-mail notifications for commits/pushes
+ mq        manage a stack of patches
+ notify    hooks for sending email notifications at commit/push time
 
 use "hg -v help keyword" to show aliases and global options
 % hg kwdemo
--- a/tests/test-merge-prompt.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-merge-prompt.out	Tue Jun 30 23:17:57 2009 +0200
@@ -4,6 +4,10 @@
 created new head
 
 # non-interactive merge
+ local changed file1 which remote deleted
+use (c)hanged version or (d)elete? c
+remote changed file2 which local deleted
+use (c)hanged version or leave (d)eleted? c
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
 status:
--- a/tests/test-merge-tools.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-merge-tools.out	Tue Jun 30 23:17:57 2009 +0200
@@ -304,6 +304,8 @@
 true.executable=cat
 # hg update -C 1
 # hg merge -r 2 --config ui.merge=internal:prompt
+ no tool found to merge f
+keep (l)ocal or take (o)ther? l
 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
 # cat f
@@ -512,6 +514,8 @@
 revision 2
 space
 merging f
+ output file f appears unchanged
+was merge successful (yn)? n
 merging f failed!
 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
 use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon
--- a/tests/test-mq.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-mq.out	Tue Jun 30 23:17:57 2009 +0200
@@ -1,5 +1,5 @@
 % help
-mq extension - work with a stack of patches
+mq extension - manage a stack of patches
 
 This extension lets you work with a stack of patches in a Mercurial
 repository. It manages two stacks of patches - all known patches, and
@@ -53,7 +53,7 @@
 
 enabled extensions:
 
- mq   work with a stack of patches
+ mq   manage a stack of patches
 
 use "hg -v help mq" to show aliases and global options
 adding a
--- a/tests/test-newbranch	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-newbranch	Tue Jun 30 23:17:57 2009 +0200
@@ -19,6 +19,9 @@
 hg branch -f default
 hg ci -m "clear branch name" -d "1000000 0"
 
+echo % there should be only one default branch head
+hg heads .
+
 hg co foo
 hg branch
 echo bleah > a
--- a/tests/test-newbranch.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-newbranch.out	Tue Jun 30 23:17:57 2009 +0200
@@ -4,6 +4,13 @@
 % branch shadowing
 abort: a branch of the same name already exists (use --force to override)
 marked working directory as branch default
+% there should be only one default branch head
+changeset:   3:bf1bc2f45e83
+tag:         tip
+user:        test
+date:        Mon Jan 12 13:46:40 1970 +0000
+summary:     clear branch name
+
 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 foo
 created new head
@@ -81,7 +88,6 @@
 
 4:4909a3732169
 4909a3732169c0c20011c4f4b8fdff4e3d89b23f 4
-be8523e69bf892e25817fc97187516b3c0804ae4 default
 bf1bc2f45e834c75404d0ddab57d53beab56e2f8 default
 4909a3732169c0c20011c4f4b8fdff4e3d89b23f foo
 67ec16bde7f1575d523313b9bca000f6a6f12dca bar
@@ -91,7 +97,6 @@
 be8523e69bf892e25817fc97187516b3c0804ae4 default
 % pushing everything
 4909a3732169c0c20011c4f4b8fdff4e3d89b23f 4
-be8523e69bf892e25817fc97187516b3c0804ae4 default
 bf1bc2f45e834c75404d0ddab57d53beab56e2f8 default
 4909a3732169c0c20011c4f4b8fdff4e3d89b23f foo
 67ec16bde7f1575d523313b9bca000f6a6f12dca bar
--- a/tests/test-notify.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-notify.out	Tue Jun 30 23:17:57 2009 +0200
@@ -1,4 +1,4 @@
-notify extension - send e-mail notifications for commits/pushes
+notify extension - hooks for sending email notifications at commit/push time
 
 Subscriptions can be managed through hgrc. Default mode is to print
 messages to stdout, for testing and configuring.
--- a/tests/test-record.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-record.out	Tue Jun 30 23:17:57 2009 +0200
@@ -27,10 +27,8 @@
 
 options:
 
- -A --addremove     mark new/missing files as added/removed before
-                    committing
-    --close-branch  mark a branch as closed, hiding it from the branch
-                    list
+ -A --addremove     mark new/missing files as added/removed before committing
+    --close-branch  mark a branch as closed, hiding it from the branch list
  -I --include       include names matching the given patterns
  -X --exclude       exclude names matching the given patterns
  -m --message       use <text> as commit message
--- a/tests/test-status-color	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-status-color	Tue Jun 30 23:17:57 2009 +0200
@@ -61,6 +61,9 @@
 rm deleted
 hg copy modified copied
 
+echo "% test unknown color"
+hg --config color.status.modified=periwinkle status --color=always
+
 # Run status with 2 different flags.
 # Check if result is the same or different.
 # If result is not as expected, raise error
--- a/tests/test-status-color.out	Tue Jun 30 23:16:38 2009 +0200
+++ b/tests/test-status-color.out	Tue Jun 30 23:17:57 2009 +0200
@@ -124,3 +124,11 @@
 adding deleted
 adding modified
 adding removed
+% test unknown color
+ignoring unknown color/effect 'periwinkle' (configured in color.status.modified)
+M modified
+A added
+A copied
+R removed
+! deleted
+? unknown