Merge with stable stable
authorWagner Bruna <wbruna@yahoo.com>
Sun, 01 Aug 2010 01:51:21 -0300
branchstable
changeset 11721 0b8d17bb8b2d
parent 11720 281a812297cc (current diff)
parent 11716 db426935fa94 (diff)
child 11722 bf1774d95bde
Merge with stable
--- a/doc/runrst	Sun Aug 01 01:46:58 2010 -0300
+++ b/doc/runrst	Sun Aug 01 01:51:21 2010 -0300
@@ -13,9 +13,14 @@
 """
 
 import sys
-from docutils.parsers.rst import roles
-from docutils.core import publish_cmdline
-from docutils import nodes, utils
+try:
+    from docutils.parsers.rst import roles
+    from docutils.core import publish_cmdline
+    from docutils import nodes, utils
+except ImportError:
+    sys.stderr.write("abort: couldn't generate documentation: docutils "
+                     "module is missing\n")
+    sys.exit(-1)
 
 def role_hg(name, rawtext, text, lineno, inliner,
             options={}, content=[]):
--- a/hgext/bookmarks.py	Sun Aug 01 01:46:58 2010 -0300
+++ b/hgext/bookmarks.py	Sun Aug 01 01:51:21 2010 -0300
@@ -136,6 +136,9 @@
         if "\n" in mark:
             raise util.Abort(_("bookmark name cannot contain newlines"))
         mark = mark.strip()
+        if not mark:
+            raise util.Abort(_("bookmark names cannot consist entirely of "
+                               "whitespace"))
         if mark in marks and not force:
             raise util.Abort(_("a bookmark of the same name already exists"))
         if ((mark in repo.branchtags() or mark == repo.dirstate.branch())
--- a/hgext/keyword.py	Sun Aug 01 01:46:58 2010 -0300
+++ b/hgext/keyword.py	Sun Aug 01 01:51:21 2010 -0300
@@ -108,7 +108,7 @@
 svnutcdate = lambda x: util.datestr((x[0], 0), '%Y-%m-%d %H:%M:%SZ')
 
 # make keyword tools accessible
-kwtools = {'templater': None, 'hgcmd': '', 'inc': [], 'exc': ['.hg*']}
+kwtools = {'templater': None, 'hgcmd': ''}
 
 
 def _defaultkwmaps(ui):
@@ -141,11 +141,10 @@
     provides keyword substitution functions.
     '''
 
-    def __init__(self, ui, repo):
+    def __init__(self, ui, repo, inc, exc):
         self.ui = ui
         self.repo = repo
-        self.match = match.match(repo.root, '', [],
-                                 kwtools['inc'], kwtools['exc'])
+        self.match = match.match(repo.root, '', [], inc, exc)
         self.restrict = kwtools['hgcmd'] in restricted.split()
         self.record = kwtools['hgcmd'] in recordcommands.split()
 
@@ -438,23 +437,15 @@
 
 
 def uisetup(ui):
-    '''Collects [keyword] config in kwtools.
-    Monkeypatches dispatch._parse if needed.'''
-
-    for pat, opt in ui.configitems('keyword'):
-        if opt != 'ignore':
-            kwtools['inc'].append(pat)
-        else:
-            kwtools['exc'].append(pat)
+    ''' Monkeypatches dispatch._parse to retrieve user command.'''
 
-    if kwtools['inc']:
-        def kwdispatch_parse(orig, ui, args):
-            '''Monkeypatch dispatch._parse to obtain running hg command.'''
-            cmd, func, args, options, cmdoptions = orig(ui, args)
-            kwtools['hgcmd'] = cmd
-            return cmd, func, args, options, cmdoptions
+    def kwdispatch_parse(orig, ui, args):
+        '''Monkeypatch dispatch._parse to obtain running hg command.'''
+        cmd, func, args, options, cmdoptions = orig(ui, args)
+        kwtools['hgcmd'] = cmd
+        return cmd, func, args, options, cmdoptions
 
-        extensions.wrapfunction(dispatch, '_parse', kwdispatch_parse)
+    extensions.wrapfunction(dispatch, '_parse', kwdispatch_parse)
 
 def reposetup(ui, repo):
     '''Sets up repo as kwrepo for keyword substitution.
@@ -465,15 +456,23 @@
     Monkeypatches patch and webcommands.'''
 
     try:
-        if (not repo.local() or not kwtools['inc']
-            or kwtools['hgcmd'] in nokwcommands.split()
+        if (not repo.local() or kwtools['hgcmd'] in nokwcommands.split()
             or '.hg' in util.splitpath(repo.root)
             or repo._url.startswith('bundle:')):
             return
     except AttributeError:
         pass
 
-    kwtools['templater'] = kwt = kwtemplater(ui, repo)
+    inc, exc = [], ['.hg*']
+    for pat, opt in ui.configitems('keyword'):
+        if opt != 'ignore':
+            inc.append(pat)
+        else:
+            exc.append(pat)
+    if not inc:
+        return
+
+    kwtools['templater'] = kwt = kwtemplater(ui, repo, inc, exc)
 
     class kwrepo(repo.__class__):
         def file(self, f):
--- a/hgext/mq.py	Sun Aug 01 01:46:58 2010 -0300
+++ b/hgext/mq.py	Sun Aug 01 01:51:21 2010 -0300
@@ -1051,12 +1051,16 @@
                 self.check_localchanges(repo)
 
             if move:
-                try:
-                    index = self.series.index(patch, start)
-                    fullpatch = self.full_series[index]
-                    del self.full_series[index]
-                except ValueError:
-                    raise util.Abort(_("patch '%s' not found") % patch)
+                if not patch:
+                    raise  util.Abort(_("please specify the patch to move"))
+                for i, rpn in enumerate(self.full_series[start:]):
+                    # strip markers for patch guards
+                    if self.guard_re.split(rpn, 1)[0] == patch:
+                        break
+                index = start + i
+                assert index < len(self.full_series)
+                fullpatch = self.full_series[index]
+                del self.full_series[index]
                 self.full_series.insert(start, fullpatch)
                 self.parse_series()
                 self.series_dirty = 1
@@ -1702,7 +1706,7 @@
                     else:
                         text = url.open(self.ui, filename).read()
                 except (OSError, IOError):
-                    raise util.Abort(_("unable to read %s") % filename)
+                    raise util.Abort(_("unable to read file %s") % filename)
                 if not patchname:
                     patchname = normname(os.path.basename(filename))
                 self.check_reserved_name(patchname)
--- a/mercurial/commands.py	Sun Aug 01 01:46:58 2010 -0300
+++ b/mercurial/commands.py	Sun Aug 01 01:51:21 2010 -0300
@@ -3660,6 +3660,8 @@
     for n in names:
         if n in ['tip', '.', 'null']:
             raise util.Abort(_('the name \'%s\' is reserved') % n)
+        if not n:
+            raise util.Abort(_('tag names cannot consist entirely of whitespace'))
     if opts.get('rev') and opts.get('remove'):
         raise util.Abort(_("--rev and --remove are incompatible"))
     if opts.get('rev'):
--- a/mercurial/dispatch.py	Sun Aug 01 01:46:58 2010 -0300
+++ b/mercurial/dispatch.py	Sun Aug 01 01:51:21 2010 -0300
@@ -248,7 +248,7 @@
         if self.shadows:
             ui.debug("alias '%s' shadows command\n" % self.name)
 
-        return self.fn(ui, *args, **opts)
+        return util.checksignature(self.fn)(ui, *args, **opts)
 
 def addaliases(ui, cmdtable):
     # aliases are processed after extensions have been loaded, so they
@@ -366,7 +366,12 @@
         os.chdir(cwd[-1])
 
     # read the local repository .hgrc into a local ui object
-    path = cmdutil.findrepo(os.getcwd()) or ""
+    try:
+        wd = os.getcwd()
+    except OSError, e:
+        raise util.Abort(_("error getting current working directory: %s") %
+                         e.strerror)
+    path = cmdutil.findrepo(wd) or ""
     if not path:
         lui = ui
     else:
--- a/mercurial/hgweb/hgwebdir_mod.py	Sun Aug 01 01:46:58 2010 -0300
+++ b/mercurial/hgweb/hgwebdir_mod.py	Sun Aug 01 01:51:21 2010 -0300
@@ -32,7 +32,7 @@
         except KeyError:
             repos.append((prefix, root))
             continue
-        roothead = os.path.normpath(roothead)
+        roothead = os.path.normpath(os.path.abspath(roothead))
         for path in util.walkrepos(roothead, followsym=True, recurse=recurse):
             path = os.path.normpath(path)
             name = util.pconvert(path[len(roothead):]).strip('/')
--- a/mercurial/merge.py	Sun Aug 01 01:46:58 2010 -0300
+++ b/mercurial/merge.py	Sun Aug 01 01:51:21 2010 -0300
@@ -286,7 +286,7 @@
     numupdates = len(action)
     for i, a in enumerate(action):
         f, m = a[:2]
-        u.progress('update', i + 1, item=f, total=numupdates, unit='files')
+        u.progress(_('updating'), i + 1, item=f, total=numupdates, unit='files')
         if f and f[0] == "/":
             continue
         if m == "r": # remove
@@ -346,7 +346,7 @@
         elif m == "e": # exec
             flags = a[2]
             util.set_flags(repo.wjoin(f), 'l' in flags, 'x' in flags)
-    u.progress('update', None, total=numupdates, unit='files')
+    u.progress(_('updating'), None, total=numupdates, unit='files')
 
     return updated, merged, removed, unresolved
 
--- a/tests/test-alias	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-alias	Sun Aug 01 01:51:21 2010 -0300
@@ -14,6 +14,7 @@
 dln = lognull --debug
 nousage = rollback
 put = export -r 0 -o "\$FOO/%R.diff"
+rt = root
 
 [defaults]
 mylog = -q
@@ -64,3 +65,8 @@
 echo '% path expanding'
 FOO=`pwd` hg put
 cat 0.diff
+
+echo '% invalid arguments'
+hg rt foo
+
+exit 0
--- a/tests/test-alias.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-alias.out	Sun Aug 01 01:51:21 2010 -0300
@@ -43,3 +43,16 @@
 +++ b/foo	Thu Jan 01 00:00:00 1970 +0000
 @@ -0,0 +1,1 @@
 +foo
+% invalid arguments
+hg rt: invalid arguments
+hg rt 
+
+alias for: hg root
+
+print the root (top) of the current working directory
+
+    Print the root directory of the current repository.
+
+    Returns 0 on success.
+
+use "hg -v help rt" to show global options
--- a/tests/test-bookmarks	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-bookmarks	Sun Aug 01 01:51:21 2010 -0300
@@ -100,4 +100,7 @@
 echo % revision but no bookmark name
 hg bookmark -r .
 
+echo % bookmark name with whitespace only
+hg bookmark ' '
+
 true
--- a/tests/test-bookmarks.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-bookmarks.out	Sun Aug 01 01:51:21 2010 -0300
@@ -74,3 +74,5 @@
  * x  y                      2:0316ce92851d
 % revision but no bookmark name
 abort: bookmark name required
+% bookmark name with whitespace only
+abort: bookmark names cannot consist entirely of whitespace
--- a/tests/test-copy-move-merge.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-copy-move-merge.out	Sun Aug 01 01:51:21 2010 -0300
@@ -15,12 +15,12 @@
 preserving a for resolve of b
 preserving a for resolve of c
 removing a
-update: a 1/2 files (50.00%)
+updating: a 1/2 files (50.00%)
 picked tool 'internal:merge' for b (binary False symlink False)
 merging a and b to b
 my b@fb3948d97f07+ other b@7f1309517659 ancestor a@583c7b748052
  premerge successful
-update: a 2/2 files (100.00%)
+updating: a 2/2 files (100.00%)
 picked tool 'internal:merge' for c (binary False symlink False)
 merging a and c to c
 my c@fb3948d97f07+ other c@7f1309517659 ancestor a@583c7b748052
--- a/tests/test-dispatch	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-dispatch	Sun Aug 01 01:51:21 2010 -0300
@@ -3,6 +3,8 @@
 
 "$TESTDIR/hghave" no-outer-repo || exit 80
 
+dir=`pwd`
+
 hg init a
 cd a
 echo a > a
@@ -19,8 +21,12 @@
 EOF
 hg cat a
 
+echo '% working directory removed'
+rm -rf $dir/a
+hg --version
+
 echo '% no repo'
-cd ..
+cd $dir
 hg cat
 
 exit 0
--- a/tests/test-dispatch.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-dispatch.out	Sun Aug 01 01:51:21 2010 -0300
@@ -33,5 +33,7 @@
 % [defaults]
 a
 a: No such file in rev 000000000000
+% working directory removed
+abort: error getting current working directory: No such file or directory
 % no repo
 abort: There is no Mercurial repository here (.hg not found)!
--- a/tests/test-double-merge.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-double-merge.out	Sun Aug 01 01:51:21 2010 -0300
@@ -17,12 +17,12 @@
  foo: remote copied to bar -> m
 preserving foo for resolve of bar
 preserving foo for resolve of foo
-update: foo 1/2 files (50.00%)
+updating: foo 1/2 files (50.00%)
 picked tool 'internal:merge' for bar (binary False symlink False)
 merging foo and bar to bar
 my bar@2092631ce82b+ other bar@d9da848d0adf ancestor foo@310fd17130da
  premerge successful
-update: foo 2/2 files (100.00%)
+updating: foo 2/2 files (100.00%)
 picked tool 'internal:merge' for foo (binary False symlink False)
 merging foo
 my foo@2092631ce82b+ other foo@d9da848d0adf ancestor foo@310fd17130da
--- a/tests/test-encoding-align	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-encoding-align	Sun Aug 01 01:51:21 2010 -0300
@@ -60,34 +60,38 @@
 ####     - user names in annotate
 ####     - file names in diffstat
 
+rm -f s; touch s
+rm -f m; touch m
+rm -f l; touch l
+
 #### add files
 
-touch $S
+cp s $S
 hg add $S
-touch $M
+cp m $M
 hg add $M
-touch $L
+cp l $L
 hg add $L
 
 #### commit(1)
 
-echo 'first line(1)' >> $S
-echo 'first line(2)' >> $M
-echo 'first line(3)' >> $L
+echo 'first line(1)' >> s; cp s $S
+echo 'first line(2)' >> m; cp m $M
+echo 'first line(3)' >> l; cp l $L
 hg commit -m 'first commit' -u $S -d "1000000 0"
 
 #### commit(2)
 
-echo 'second line(1)' >> $S
-echo 'second line(2)' >> $M
-echo 'second line(3)' >> $L
+echo 'second line(1)' >> s; cp s $S
+echo 'second line(2)' >> m; cp m $M
+echo 'second line(3)' >> l; cp l $L
 hg commit -m 'second commit' -u $M -d "1000000 0"
 
 #### commit(3)
 
-echo 'third line(1)' >> $S
-echo 'third line(2)' >> $M
-echo 'third line(3)' >> $L
+echo 'third line(1)' >> s; cp s $S
+echo 'third line(2)' >> m; cp m $M
+echo 'third line(3)' >> l; cp l $L
 hg commit -m 'third commit' -u $L -d "1000000 0"
 
 #### check
--- a/tests/test-hgwebdir	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-hgwebdir	Sun Aug 01 01:51:21 2010 -0300
@@ -65,6 +65,8 @@
 b=$root/b
 coll=$root/*
 rcoll=$root/**
+star=*
+starstar=**
 EOF
 
 hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \
--- a/tests/test-hgwebdir.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-hgwebdir.out	Sun Aug 01 01:51:21 2010 -0300
@@ -46,6 +46,15 @@
 /rcoll/b/
 /rcoll/b/d/
 /rcoll/c/
+/star/webdir/a/
+/star/webdir/a/.hg/patches/
+/star/webdir/b/
+/star/webdir/c/
+/starstar/webdir/a/
+/starstar/webdir/a/.hg/patches/
+/starstar/webdir/b/
+/starstar/webdir/b/d/
+/starstar/webdir/c/
 
 200 Script output follows
 
@@ -165,6 +174,78 @@
 <td class="indexlinks"></td>
 </tr>
 
+<tr class="parity1">
+<td><a href="/star/webdir/a/?style=paper">star/webdir/a</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity0">
+<td><a href="/star/webdir/a/.hg/patches/?style=paper">star/webdir/a/.hg/patches</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity1">
+<td><a href="/star/webdir/b/?style=paper">star/webdir/b</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity0">
+<td><a href="/star/webdir/c/?style=paper">star/webdir/c</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity1">
+<td><a href="/starstar/webdir/a/?style=paper">starstar/webdir/a</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity0">
+<td><a href="/starstar/webdir/a/.hg/patches/?style=paper">starstar/webdir/a/.hg/patches</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity1">
+<td><a href="/starstar/webdir/b/?style=paper">starstar/webdir/b</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity0">
+<td><a href="/starstar/webdir/b/d/?style=paper">starstar/webdir/b/d</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
+<tr class="parity1">
+<td><a href="/starstar/webdir/c/?style=paper">starstar/webdir/c</a></td>
+<td>unknown</td>
+<td>&#70;&#111;&#111;&#32;&#66;&#97;&#114;&#32;&#60;&#102;&#111;&#111;&#46;&#98;&#97;&#114;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;&#62;</td>
+<td class="age">seconds ago</td>
+<td class="indexlinks"></td>
+</tr>
+
 </table>
 </div>
 </div>
--- a/tests/test-issue522.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-issue522.out	Sun Aug 01 01:51:21 2010 -0300
@@ -8,7 +8,7 @@
  overwrite None partial False
  ancestor bbd179dfa0a7 local 71766447bdbb+ remote 4d9e78aaceee
  foo: remote is newer -> g
-update: foo 1/1 files (100.00%)
+updating: foo 1/1 files (100.00%)
 getting foo
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
--- a/tests/test-issue672.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-issue672.out	Sun Aug 01 01:51:21 2010 -0300
@@ -13,9 +13,9 @@
  ancestor 81f4b099af3d local c64f439569a9+ remote c12dcd37c90a
  1: other deleted -> r
  1a: remote created -> g
-update: 1 1/2 files (50.00%)
+updating: 1 1/2 files (50.00%)
 removing 1
-update: 1a 2/2 files (100.00%)
+updating: 1a 2/2 files (100.00%)
 getting 1a
 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
@@ -33,7 +33,7 @@
  ancestor c64f439569a9 local e327dca35ac8+ remote 746e9549ea96
  1a: local copied/moved to 1 -> m
 preserving 1a for resolve of 1a
-update: 1a 1/1 files (100.00%)
+updating: 1a 1/1 files (100.00%)
 picked tool 'internal:merge' for 1a (binary False symlink False)
 merging 1a and 1 to 1a
 my 1a@e327dca35ac8+ other 1@746e9549ea96 ancestor 1@81f4b099af3d
@@ -53,7 +53,7 @@
  1: remote moved to 1a -> m
 preserving 1 for resolve of 1a
 removing 1
-update: 1 1/1 files (100.00%)
+updating: 1 1/1 files (100.00%)
 picked tool 'internal:merge' for 1a (binary False symlink False)
 merging 1 and 1a to 1a
 my 1a@746e9549ea96+ other 1a@e327dca35ac8 ancestor 1@81f4b099af3d
--- a/tests/test-keyword	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-keyword	Sun Aug 01 01:51:21 2010 -0300
@@ -283,8 +283,17 @@
 echo % cat a
 cat a
 
+echo % clone
+cd ..
+
+echo % expansion in dest
+hg --quiet clone Test globalconf
+cat globalconf/a
+echo % no expansion in dest
+hg --quiet --config 'keyword.**=ignore' clone Test localconf
+cat localconf/a
+
 echo % clone to test incoming
-cd ..
 hg clone -r1 Test Test-a
 cd Test-a
 cat <<EOF >> .hg/hgrc
--- a/tests/test-keyword.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-keyword.out	Sun Aug 01 01:51:21 2010 -0300
@@ -333,6 +333,17 @@
 do not process $Id:
 xxx $
 $Xinfo: User Name <user@example.com>: firstline $
+% clone
+% expansion in dest
+expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $
+do not process $Id:
+xxx $
+$Xinfo: User Name <user@example.com>: firstline $
+% no expansion in dest
+expand $Id$
+do not process $Id:
+xxx $
+$Xinfo$
 % clone to test incoming
 requesting all changes
 adding changesets
--- a/tests/test-merge-commit.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-merge-commit.out	Sun Aug 01 01:51:21 2010 -0300
@@ -28,7 +28,7 @@
  ancestor 0f2ff26688b9 local 2263c1be0967+ remote 0555950ead28
  bar: versions differ -> m
 preserving bar for resolve of bar
-update: bar 1/1 files (100.00%)
+updating: bar 1/1 files (100.00%)
 picked tool 'internal:merge' for bar (binary False symlink False)
 merging bar
 my bar@2263c1be0967+ other bar@0555950ead28 ancestor bar@0f2ff26688b9
@@ -79,7 +79,7 @@
  ancestor 0f2ff26688b9 local 2263c1be0967+ remote 3ffa6b9e35f0
  bar: versions differ -> m
 preserving bar for resolve of bar
-update: bar 1/1 files (100.00%)
+updating: bar 1/1 files (100.00%)
 picked tool 'internal:merge' for bar (binary False symlink False)
 merging bar
 my bar@2263c1be0967+ other bar@3ffa6b9e35f0 ancestor bar@0f2ff26688b9
--- a/tests/test-merge-types.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-merge-types.out	Sun Aug 01 01:51:21 2010 -0300
@@ -8,7 +8,7 @@
  conflicting flags for a
 (n)one, e(x)ec or sym(l)ink? n
  a: update permissions -> e
-update: a 1/1 files (100.00%)
+updating: a 1/1 files (100.00%)
 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
 % symlink is local parent, executable is other
@@ -21,7 +21,7 @@
  conflicting flags for a
 (n)one, e(x)ec or sym(l)ink? n
  a: remote is newer -> g
-update: a 1/1 files (100.00%)
+updating: a 1/1 files (100.00%)
 getting a
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
--- a/tests/test-merge7.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-merge7.out	Sun Aug 01 01:51:21 2010 -0300
@@ -25,7 +25,7 @@
  ancestor faaea63e63a9 local 451c744aabcc+ remote a070d41e8360
  test.txt: versions differ -> m
 preserving test.txt for resolve of test.txt
-update: test.txt 1/1 files (100.00%)
+updating: test.txt 1/1 files (100.00%)
 picked tool 'internal:merge' for test.txt (binary False symlink False)
 merging test.txt
 my test.txt@451c744aabcc+ other test.txt@a070d41e8360 ancestor test.txt@faaea63e63a9
--- a/tests/test-mq	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-mq	Sun Aug 01 01:51:21 2010 -0300
@@ -107,6 +107,11 @@
 
 hg qnew -m 'foo bar' test.patch
 
+echo '# comment' > .hg/patches/series.tmp
+echo >> .hg/patches/series.tmp # empty line
+cat .hg/patches/series >> .hg/patches/series.tmp
+mv .hg/patches/series.tmp .hg/patches/series
+
 echo % qrefresh
 
 echo a >> a
@@ -228,17 +233,29 @@
 
 echo % qpush --move
 hg qpop -a
+hg qguard test1b.patch -- -negguard
+hg qguard test2.patch -- +posguard
+hg qpush --move test2.patch # can't move guarded patch
+hg qselect posguard
 hg qpush --move test2.patch # move to front
-hg qpush --move test1b.patch
+hg qpush --move test1b.patch # negative guard unselected
 hg qpush --move test.patch # noop move
 hg qseries -v
 hg qpop -a
-hg qpush --move test.patch # cleaning up
+# cleaning up
+hg qselect --none
+hg qguard --none test1b.patch
+hg qguard --none test2.patch
+hg qpush --move test.patch
 hg qpush --move test1b.patch
 hg qpush --move bogus # nonexistent patch
+hg qpush --move # no patch
 hg qpush --move test.patch # already applied
 hg qpush
 
+echo % series after move
+cat `hg root`/.hg/patches/series
+
 echo % pop, qapplied, qunapplied
 hg qseries -v
 echo % qapplied -1 test.patch
--- a/tests/test-mq-qimport-fail-cleanup.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-mq-qimport-fail-cleanup.out	Sun Aug 01 01:51:21 2010 -0300
@@ -4,7 +4,7 @@
 
 #qimport valid patch followed by invalid patch
 adding b.patch to series file
-abort: unable to read fakepatch
+abort: unable to read file fakepatch
 
 #valid patches before fail added to series
 b.patch
--- a/tests/test-mq-qimport.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-mq-qimport.out	Sun Aug 01 01:51:21 2010 -0300
@@ -1,5 +1,5 @@
 % qimport non-existing-file
-abort: unable to read non-existing-file
+abort: unable to read file non-existing-file
 % import email
 adding email to series file
 applying email
--- a/tests/test-mq.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-mq.out	Sun Aug 01 01:51:21 2010 -0300
@@ -209,6 +209,8 @@
 popping test1b.patch
 popping test.patch
 patch queue now empty
+cannot push 'test2.patch' - guarded by ['+posguard']
+number of unguarded, unapplied patches has changed from 2 to 3
 applying test2.patch
 now at: test2.patch
 applying test1b.patch
@@ -222,14 +224,23 @@
 popping test1b.patch
 popping test2.patch
 patch queue now empty
+guards deactivated
+number of unguarded, unapplied patches has changed from 3 to 2
 applying test.patch
 now at: test.patch
 applying test1b.patch
 now at: test1b.patch
 abort: patch bogus not in series
+abort: please specify the patch to move
 abort: cannot push to a previous patch: test.patch
 applying test2.patch
 now at: test2.patch
+% series after move
+test.patch
+test1b.patch
+test2.patch
+# comment
+
 % pop, qapplied, qunapplied
 0 A test.patch
 1 A test1b.patch
--- a/tests/test-rename-dir-merge.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-rename-dir-merge.out	Sun Aug 01 01:51:21 2010 -0300
@@ -28,17 +28,17 @@
  a/a: other deleted -> r
  b/a: remote created -> g
  b/b: remote created -> g
-update: a/a 1/6 files (16.67%)
+updating: a/a 1/6 files (16.67%)
 removing a/a
-update: a/b 2/6 files (33.33%)
+updating: a/b 2/6 files (33.33%)
 removing a/b
-update: a/c 3/6 files (50.00%)
+updating: a/c 3/6 files (50.00%)
 moving a/c to b/c
-update: a/d 4/6 files (66.67%)
+updating: a/d 4/6 files (66.67%)
 moving a/d to b/d
-update: b/a 5/6 files (83.33%)
+updating: b/a 5/6 files (83.33%)
 getting b/a
-update: b/b 6/6 files (100.00%)
+updating: b/b 6/6 files (100.00%)
 getting b/b
 4 files updated, 0 files merged, 2 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
@@ -70,7 +70,7 @@
  overwrite None partial False
  ancestor f9b20c0d4c51 local 397f8b00a740+ remote ce36d17b18fb
  None: local renamed directory to b/c -> d
-update:None 1/1 files (100.00%)
+updating:None 1/1 files (100.00%)
 getting a/c to b/c
 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
--- a/tests/test-rename-merge1.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-rename-merge1.out	Sun Aug 01 01:51:21 2010 -0300
@@ -21,16 +21,16 @@
  b2: remote created -> g
 preserving a for resolve of b
 removing a
-update: a 1/3 files (33.33%)
+updating: a 1/3 files (33.33%)
 picked tool 'internal:merge' for b (binary False symlink False)
 merging a and b to b
 my b@044f8520aeeb+ other b@85c198ef2f6c ancestor a@af1939970a1c
  premerge successful
-update: a2 2/3 files (66.67%)
+updating: a2 2/3 files (66.67%)
 warning: detected divergent renames of a2 to:
  c2
  b2
-update: b2 3/3 files (100.00%)
+updating: b2 3/3 files (100.00%)
 getting b2
 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
--- a/tests/test-rename-merge2.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-rename-merge2.out	Sun Aug 01 01:51:21 2010 -0300
@@ -15,12 +15,12 @@
  a: remote copied to b -> m
 preserving a for resolve of b
 preserving rev for resolve of rev
-update: a 1/2 files (50.00%)
+updating: a 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging a and b to b
 my b@e300d1c794ec+ other b@4ce40f5aca24 ancestor a@924404dff337
  premerge successful
-update: rev 2/2 files (100.00%)
+updating: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@e300d1c794ec+ other rev@4ce40f5aca24 ancestor rev@924404dff337
@@ -50,14 +50,14 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
-update: a 1/3 files (33.33%)
+updating: a 1/3 files (33.33%)
 getting a
-update: b 2/3 files (66.67%)
+updating: b 2/3 files (66.67%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b and a to b
 my b@86a2aa42fc76+ other a@f4db7e329e71 ancestor a@924404dff337
  premerge successful
-update: rev 3/3 files (100.00%)
+updating: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@86a2aa42fc76+ other rev@f4db7e329e71 ancestor rev@924404dff337
@@ -87,12 +87,12 @@
 preserving a for resolve of b
 preserving rev for resolve of rev
 removing a
-update: a 1/2 files (50.00%)
+updating: a 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging a and b to b
 my b@e300d1c794ec+ other b@bdb19105162a ancestor a@924404dff337
  premerge successful
-update: rev 2/2 files (100.00%)
+updating: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@e300d1c794ec+ other rev@bdb19105162a ancestor rev@924404dff337
@@ -120,12 +120,12 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
-update: b 1/2 files (50.00%)
+updating: b 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b and a to b
 my b@02963e448370+ other a@f4db7e329e71 ancestor a@924404dff337
  premerge successful
-update: rev 2/2 files (100.00%)
+updating: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@02963e448370+ other rev@f4db7e329e71 ancestor rev@924404dff337
@@ -152,9 +152,9 @@
  rev: versions differ -> m
  b: remote created -> g
 preserving rev for resolve of rev
-update: b 1/2 files (50.00%)
+updating: b 1/2 files (50.00%)
 getting b
-update: rev 2/2 files (100.00%)
+updating: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@94b33a1b7f2d+ other rev@4ce40f5aca24 ancestor rev@924404dff337
@@ -180,7 +180,7 @@
  ancestor 924404dff337 local 86a2aa42fc76+ remote 97c705ade336
  rev: versions differ -> m
 preserving rev for resolve of rev
-update: rev 1/1 files (100.00%)
+updating: rev 1/1 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@86a2aa42fc76+ other rev@97c705ade336 ancestor rev@924404dff337
@@ -208,11 +208,11 @@
  rev: versions differ -> m
  b: remote created -> g
 preserving rev for resolve of rev
-update: a 1/3 files (33.33%)
+updating: a 1/3 files (33.33%)
 removing a
-update: b 2/3 files (66.67%)
+updating: b 2/3 files (66.67%)
 getting b
-update: rev 3/3 files (100.00%)
+updating: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@94b33a1b7f2d+ other rev@bdb19105162a ancestor rev@924404dff337
@@ -237,7 +237,7 @@
  ancestor 924404dff337 local 02963e448370+ remote 97c705ade336
  rev: versions differ -> m
 preserving rev for resolve of rev
-update: rev 1/1 files (100.00%)
+updating: rev 1/1 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@02963e448370+ other rev@97c705ade336 ancestor rev@924404dff337
@@ -259,11 +259,11 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
-update: b 1/2 files (50.00%)
+updating: b 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337
-update: rev 2/2 files (100.00%)
+updating: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@62e7bf090eba+ other rev@49b6d8032493 ancestor rev@924404dff337
@@ -293,13 +293,13 @@
  rev: versions differ -> m
  c: remote created -> g
 preserving rev for resolve of rev
-update: a 1/3 files (33.33%)
+updating: a 1/3 files (33.33%)
 warning: detected divergent renames of a to:
  b
  c
-update: c 2/3 files (66.67%)
+updating: c 2/3 files (66.67%)
 getting c
-update: rev 3/3 files (100.00%)
+updating: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337
@@ -322,11 +322,11 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
-update: b 1/2 files (50.00%)
+updating: b 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@86a2aa42fc76+ other b@af30c7647fc7 ancestor b@000000000000
-update: rev 2/2 files (100.00%)
+updating: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@86a2aa42fc76+ other rev@af30c7647fc7 ancestor rev@924404dff337
@@ -350,13 +350,13 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
-update: a 1/3 files (33.33%)
+updating: a 1/3 files (33.33%)
 removing a
-update: b 2/3 files (66.67%)
+updating: b 2/3 files (66.67%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000
-update: rev 3/3 files (100.00%)
+updating: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337
@@ -379,13 +379,13 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
-update: a 1/3 files (33.33%)
+updating: a 1/3 files (33.33%)
 getting a
-update: b 2/3 files (66.67%)
+updating: b 2/3 files (66.67%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000
-update: rev 3/3 files (100.00%)
+updating: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
@@ -409,13 +409,13 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
-update: a 1/3 files (33.33%)
+updating: a 1/3 files (33.33%)
 removing a
-update: b 2/3 files (66.67%)
+updating: b 2/3 files (66.67%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000
-update: rev 3/3 files (100.00%)
+updating: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337
@@ -438,13 +438,13 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
-update: a 1/3 files (33.33%)
+updating: a 1/3 files (33.33%)
 getting a
-update: b 2/3 files (66.67%)
+updating: b 2/3 files (66.67%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000
-update: rev 3/3 files (100.00%)
+updating: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
@@ -467,11 +467,11 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
-update: b 1/2 files (50.00%)
+updating: b 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor b@000000000000
-update: rev 2/2 files (100.00%)
+updating: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337
@@ -497,13 +497,13 @@
  a: prompt recreating -> g
 preserving b for resolve of b
 preserving rev for resolve of rev
-update: a 1/3 files (33.33%)
+updating: a 1/3 files (33.33%)
 getting a
-update: b 2/3 files (66.67%)
+updating: b 2/3 files (66.67%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@02963e448370+ other b@8dbce441892a ancestor b@000000000000
-update: rev 3/3 files (100.00%)
+updating: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337
@@ -529,12 +529,12 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
-update: a 1/3 files (33.33%)
-update: b 2/3 files (66.67%)
+updating: a 1/3 files (33.33%)
+updating: b 2/3 files (66.67%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b
 my b@0b76e65c8289+ other b@bdb19105162a ancestor b@000000000000
-update: rev 3/3 files (100.00%)
+updating: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337
@@ -563,11 +563,11 @@
 preserving a for resolve of b
 preserving rev for resolve of rev
 removing a
-update: a 1/2 files (50.00%)
+updating: a 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging a and b to b
 my b@e300d1c794ec+ other b@49b6d8032493 ancestor a@924404dff337
-update: rev 2/2 files (100.00%)
+updating: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@e300d1c794ec+ other rev@49b6d8032493 ancestor rev@924404dff337
@@ -595,11 +595,11 @@
  rev: versions differ -> m
 preserving b for resolve of b
 preserving rev for resolve of rev
-update: b 1/2 files (50.00%)
+updating: b 1/2 files (50.00%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b and a to b
 my b@62e7bf090eba+ other a@f4db7e329e71 ancestor a@924404dff337
-update: rev 2/2 files (100.00%)
+updating: rev 2/2 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@62e7bf090eba+ other rev@f4db7e329e71 ancestor rev@924404dff337
@@ -630,14 +630,14 @@
  c: remote created -> g
 preserving b for resolve of b
 preserving rev for resolve of rev
-update: b 1/3 files (33.33%)
+updating: b 1/3 files (33.33%)
 picked tool 'python ../merge' for b (binary False symlink False)
 merging b and a to b
 my b@02963e448370+ other a@2b958612230f ancestor a@924404dff337
  premerge successful
-update: c 2/3 files (66.67%)
+updating: c 2/3 files (66.67%)
 getting c
-update: rev 3/3 files (100.00%)
+updating: rev 3/3 files (100.00%)
 picked tool 'python ../merge' for rev (binary False symlink False)
 merging rev
 my rev@02963e448370+ other rev@2b958612230f ancestor rev@924404dff337
--- a/tests/test-subrepo.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-subrepo.out	Sun Aug 01 01:51:21 2010 -0300
@@ -83,7 +83,7 @@
  overwrite None partial False
  ancestor 1f14a2e2d3ec local f0d2028bf86d+ remote 1831e14459c4
  .hgsubstate: versions differ -> m
-update: .hgsubstate 1/1 files (100.00%)
+updating: .hgsubstate 1/1 files (100.00%)
 subrepo merge f0d2028bf86d+ 1831e14459c4 1f14a2e2d3ec
   subrepo t: other changed, get t:6747d179aa9a688023c4b0cad32e4c92bb7f34ad:hg
 getting subrepo t
@@ -91,7 +91,7 @@
  overwrite True partial False
  ancestor 60ca1237c194+ local 60ca1237c194+ remote 6747d179aa9a
  t: remote is newer -> g
-update: t 1/1 files (100.00%)
+updating: t 1/1 files (100.00%)
 getting t
 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 (branch merge, don't forget to commit)
@@ -107,7 +107,7 @@
  overwrite None partial False
  ancestor 1831e14459c4 local e45c8b14af55+ remote f94576341bcf
  .hgsubstate: versions differ -> m
-update: .hgsubstate 1/1 files (100.00%)
+updating: .hgsubstate 1/1 files (100.00%)
 subrepo merge e45c8b14af55+ f94576341bcf 1831e14459c4
   subrepo t: both sides changed, merge with t:7af322bc1198a32402fe903e0b7ebcfc5c9bf8f4:hg
 merging subrepo t
@@ -117,7 +117,7 @@
  ancestor 6747d179aa9a local 20a0db6fbf6c+ remote 7af322bc1198
  t: versions differ -> m
 preserving t for resolve of t
-update: t 1/1 files (100.00%)
+updating: t 1/1 files (100.00%)
 picked tool 'internal:merge' for t (binary False symlink False)
 merging t
 my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a
--- a/tests/test-tag	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-tag	Sun Aug 01 01:51:21 2010 -0300
@@ -7,6 +7,9 @@
 hg add a
 hg commit -m "test" -d "1000000 0"
 hg history
+
+hg tag ' '
+
 hg tag -d "1000000 0" "bleah"
 hg history
 
--- a/tests/test-tag.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-tag.out	Sun Aug 01 01:51:21 2010 -0300
@@ -4,6 +4,7 @@
 date:        Mon Jan 12 13:46:40 1970 +0000
 summary:     test
 
+abort: tag names cannot consist entirely of whitespace
 changeset:   1:3ecf002a1c57
 tag:         tip
 user:        test
--- a/tests/test-up-local-change.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-up-local-change.out	Sun Aug 01 01:51:21 2010 -0300
@@ -24,11 +24,11 @@
  a: versions differ -> m
  b: remote created -> g
 preserving a for resolve of a
-update: a 1/2 files (50.00%)
+updating: a 1/2 files (50.00%)
 picked tool 'true' for a (binary False symlink False)
 merging a
 my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b
-update: b 2/2 files (100.00%)
+updating: b 2/2 files (100.00%)
 getting b
 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
 changeset:   1:802f095af299
@@ -43,9 +43,9 @@
  a: versions differ -> m
  b: other deleted -> r
 preserving a for resolve of a
-update: b 1/2 files (50.00%)
+updating: b 1/2 files (50.00%)
 removing b
-update: a 2/2 files (100.00%)
+updating: a 2/2 files (100.00%)
 picked tool 'true' for a (binary False symlink False)
 merging a
 my a@802f095af299+ other a@33aaa84a386b ancestor a@802f095af299
@@ -71,11 +71,11 @@
  a: versions differ -> m
  b: remote created -> g
 preserving a for resolve of a
-update: a 1/2 files (50.00%)
+updating: a 1/2 files (50.00%)
 picked tool 'true' for a (binary False symlink False)
 merging a
 my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b
-update: b 2/2 files (100.00%)
+updating: b 2/2 files (100.00%)
 getting b
 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
 changeset:   1:802f095af299
@@ -128,11 +128,11 @@
  b: versions differ -> m
 preserving a for resolve of a
 preserving b for resolve of b
-update: a 1/2 files (50.00%)
+updating: a 1/2 files (50.00%)
 picked tool 'true' for a (binary False symlink False)
 merging a
 my a@802f095af299+ other a@030602aee63d ancestor a@33aaa84a386b
-update: b 2/2 files (100.00%)
+updating: b 2/2 files (100.00%)
 picked tool 'true' for b (binary False symlink False)
 merging b
 my b@802f095af299+ other b@030602aee63d ancestor b@000000000000
--- a/tests/test-update-reverse.out	Sun Aug 01 01:46:58 2010 -0300
+++ b/tests/test-update-reverse.out	Sun Aug 01 01:51:21 2010 -0300
@@ -46,11 +46,11 @@
  side2: other deleted -> r
  side1: other deleted -> r
  main: remote created -> g
-update: side1 1/3 files (33.33%)
+updating: side1 1/3 files (33.33%)
 removing side1
-update: side2 2/3 files (66.67%)
+updating: side2 2/3 files (66.67%)
 removing side2
-update: main 3/3 files (100.00%)
+updating: main 3/3 files (100.00%)
 getting main
 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
 Should only show a main