Merge with stable
authorPatrick Mezard <patrick@mezard.eu>
Thu, 02 Aug 2012 18:33:40 +0200
changeset 17331 ef8d612bebe7
parent 17330 32e9d63d9ba6 (current diff)
parent 17329 e15765c18ebc (diff)
child 17332 b950b86ac897
Merge with stable
--- a/.hgignore	Thu Aug 02 17:48:58 2012 +0200
+++ b/.hgignore	Thu Aug 02 18:33:40 2012 +0200
@@ -15,6 +15,7 @@
 *$py.class
 *.swp
 *.prof
+*.zip
 \#*\#
 .\#*
 tests/.coverage*
--- a/.hgsigs	Thu Aug 02 17:48:58 2012 +0200
+++ b/.hgsigs	Thu Aug 02 18:33:40 2012 +0200
@@ -56,3 +56,4 @@
 5983de86462c5a9f42a3ad0f5e90ce5b1d221d25 0 iD8DBQBPovNWywK+sNU5EO8RAhgiAJ980T91FdPTRMmVONDhpkMsZwVIMACgg3bKvoWSeuCW28llUhAJtUjrMv0=
 85a358df5bbbe404ca25730c9c459b34263441dc 0 iD8DBQBPyZsWywK+sNU5EO8RAnpLAJ48qrGDJRT+pteS0mSQ11haqHstPwCdG4ccGbk+0JHb7aNy8/NRGAOqn9w=
 b013baa3898e117959984fc64c29d8c784d2f28b 0 iD8DBQBP8QOPywK+sNU5EO8RAqimAKCFRSx0lvG6y8vne2IhNG062Hn0dACeMLI5/zhpWpHBIVeAAquYfx2XFeA=
+7f5094bb3f423fc799e471aac2aee81a7ce57a0b 0 iD8DBQBQGiL8ywK+sNU5EO8RAq5oAJ4rMMCPx6O+OuzNXVOexogedWz/QgCeIiIxLd76I4pXO48tdXhr0hQcBuM=
--- a/.hgtags	Thu Aug 02 17:48:58 2012 +0200
+++ b/.hgtags	Thu Aug 02 18:33:40 2012 +0200
@@ -68,3 +68,5 @@
 5983de86462c5a9f42a3ad0f5e90ce5b1d221d25 2.2.1
 85a358df5bbbe404ca25730c9c459b34263441dc 2.2.2
 b013baa3898e117959984fc64c29d8c784d2f28b 2.2.3
+a06e2681dd1786e2354d84a5fa9c1c88dd4fa3e0 2.3-rc
+7f5094bb3f423fc799e471aac2aee81a7ce57a0b 2.3
--- a/contrib/check-code.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/contrib/check-code.py	Thu Aug 02 18:33:40 2012 +0200
@@ -206,6 +206,7 @@
     (r'\.debug\(\_', "don't mark debug messages for translation"),
     (r'\.strip\(\)\.split\(\)', "no need to strip before splitting"),
     (r'^\s*except\s*:', "warning: naked except clause", r'#.*re-raises'),
+    (r':\n(    )*( ){1,3}[^ ]', "must indent 4 spaces"),
   ],
   # warnings
   [
--- a/contrib/hgfixes/fix_bytes.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/contrib/hgfixes/fix_bytes.py	Thu Aug 02 18:33:40 2012 +0200
@@ -74,7 +74,7 @@
        'setattr' in sggparent or \
        'encode' in sggparent or \
        'decode' in sggparent:
-           return False
+        return False
 
     return True
 
--- a/contrib/win32/mercurial.ini	Thu Aug 02 17:48:58 2012 +0200
+++ b/contrib/win32/mercurial.ini	Thu Aug 02 18:33:40 2012 +0200
@@ -36,7 +36,6 @@
 ;
 [extensions]
 ;acl =
-;alias =
 ;bugzilla =
 ;children =
 ;churn =
@@ -50,7 +49,9 @@
 ;hgcia =
 ;hgk =
 ;highlight = 
+;histedit =
 ;interhg =
+;largefiles =
 ;keyword =
 ;mq =
 ;notify =
@@ -60,6 +61,9 @@
 ;purge =
 ;rebase =
 ;record =
+;relink =
+;schemes =
+;share =
 ;transplant =
 ;win32mbcs =
 ;zeroconf =
--- a/contrib/wix/README.txt	Thu Aug 02 17:48:58 2012 +0200
+++ b/contrib/wix/README.txt	Thu Aug 02 18:33:40 2012 +0200
@@ -7,7 +7,7 @@
 must kept up to date with distribution changes within their branch.  In
 other words, the default branch WXS files are expected to diverge from
 the stable branch WXS files.  Storing them within the same repository is
-the only sane way to keep the the source tree and the installer in sync.
+the only sane way to keep the source tree and the installer in sync.
 
 The MSI installer builder uses only the mercurial.ini file from the
 contrib/win32 folder, the contents of which have been historically used
--- a/doc/gendoc.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/doc/gendoc.py	Thu Aug 02 18:33:40 2012 +0200
@@ -64,16 +64,16 @@
     return d
 
 def section(ui, s):
-    ui.write("%s\n%s\n\n" % (s, "-" * encoding.colwidth(s)))
+    ui.write("%s\n%s\n\n" % (s, "\"" * encoding.colwidth(s)))
 
 def subsection(ui, s):
-    ui.write("%s\n%s\n\n" % (s, '"' * encoding.colwidth(s)))
+    ui.write("%s\n%s\n\n" % (s, '=' * encoding.colwidth(s)))
 
 def subsubsection(ui, s):
-    ui.write("%s\n%s\n\n" % (s, "." * encoding.colwidth(s)))
+    ui.write("%s\n%s\n\n" % (s, "-" * encoding.colwidth(s)))
 
 def subsubsubsection(ui, s):
-    ui.write("%s\n%s\n\n" % (s, "#" * encoding.colwidth(s)))
+    ui.write("%s\n%s\n\n" % (s, "." * encoding.colwidth(s)))
 
 
 def show_doc(ui):
--- a/doc/hg.1.txt	Thu Aug 02 17:48:58 2012 +0200
+++ b/doc/hg.1.txt	Thu Aug 02 18:33:40 2012 +0200
@@ -18,16 +18,16 @@
 
 
 Synopsis
---------
+""""""""
 **hg** *command* [*option*]... [*argument*]...
 
 Description
------------
+"""""""""""
 The **hg** command provides a command line interface to the Mercurial
 system.
 
 Command Elements
-----------------
+""""""""""""""""
 
 files...
     indicates one or more filename or relative path filenames; see
@@ -48,7 +48,7 @@
 .. include:: hg.1.gendoc.txt
 
 Files
------
+"""""
 
 ``/etc/mercurial/hgrc``, ``$HOME/.hgrc``, ``.hg/hgrc``
     This file contains defaults and configuration. Values in
@@ -90,20 +90,20 @@
 it will be overwritten.
 
 Bugs
-----
+""""
 Probably lots, please post them to the mailing list (see Resources_
 below) when you find them.
 
 See Also
---------
+""""""""
 |hgignore(5)|_, |hgrc(5)|_
 
 Author
-------
+""""""
 Written by Matt Mackall <mpm@selenic.com>
 
 Resources
----------
+"""""""""
 Main Web Site: http://mercurial.selenic.com/
 
 Source code repository: http://selenic.com/hg
@@ -111,7 +111,7 @@
 Mailing list: http://selenic.com/mailman/listinfo/mercurial
 
 Copying
--------
+"""""""
 Copyright (C) 2005-2012 Matt Mackall.
 Free use of this software is granted under the terms of the GNU General
 Public License version 2 or any later version.
--- a/doc/hgignore.5.txt	Thu Aug 02 17:48:58 2012 +0200
+++ b/doc/hgignore.5.txt	Thu Aug 02 18:33:40 2012 +0200
@@ -14,17 +14,17 @@
 .. include:: ../mercurial/help/hgignore.txt
 
 Author
-------
+======
 Vadim Gelfer <vadim.gelfer@gmail.com>
 
 Mercurial was written by Matt Mackall <mpm@selenic.com>.
 
 See Also
---------
+========
 |hg(1)|_, |hgrc(5)|_
 
 Copying
--------
+=======
 This manual page is copyright 2006 Vadim Gelfer.
 Mercurial is copyright 2005-2012 Matt Mackall.
 Free use of this software is granted under the terms of the GNU General
--- a/doc/hgrc.5.txt	Thu Aug 02 17:48:58 2012 +0200
+++ b/doc/hgrc.5.txt	Thu Aug 02 18:33:40 2012 +0200
@@ -17,22 +17,22 @@
 
 
 Synopsis
---------
+========
 
 .. include:: ../mercurial/help/config.txt
 
 Author
-------
+======
 Bryan O'Sullivan <bos@serpentine.com>.
 
 Mercurial was written by Matt Mackall <mpm@selenic.com>.
 
 See Also
---------
+========
 |hg(1)|_, |hgignore(5)|_
 
 Copying
--------
+=======
 This manual page is copyright 2005 Bryan O'Sullivan.
 Mercurial is copyright 2005-2012 Matt Mackall.
 Free use of this software is granted under the terms of the GNU General
--- a/hgext/acl.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/hgext/acl.py	Thu Aug 02 18:33:40 2012 +0200
@@ -32,7 +32,7 @@
 The allow and deny sections take key-value pairs.
 
 Branch-based Access Control
-...........................
+---------------------------
 
 Use the ``acl.deny.branches`` and ``acl.allow.branches`` sections to
 have branch-based access control. Keys in these sections can be
@@ -50,7 +50,7 @@
 of the match.
 
 Path-based Access Control
-.........................
+-------------------------
 
 Use the ``acl.deny`` and ``acl.allow`` sections to have path-based
 access control. Keys in these sections accept a subtree pattern (with
@@ -58,7 +58,7 @@
 syntax as the other sections above.
 
 Groups
-......
+------
 
 Group names must be prefixed with an ``@`` symbol. Specifying a group
 name has the same effect as specifying all the users in that group.
@@ -69,7 +69,7 @@
 Otherwise, an exception will be raised.
 
 Example Configuration
-.....................
+---------------------
 
 ::
 
--- a/hgext/convert/__init__.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/hgext/convert/__init__.py	Thu Aug 02 18:33:40 2012 +0200
@@ -138,7 +138,7 @@
     repository from "default" to a named branch.
 
     Mercurial Source
-    ''''''''''''''''
+    ################
 
     The Mercurial source recognizes the following configuration
     options, which you can set on the command line with ``--config``:
@@ -155,7 +155,7 @@
         It takes a hg revision identifier and defaults to 0.
 
     CVS Source
-    ''''''''''
+    ##########
 
     CVS source will use a sandbox (i.e. a checked-out copy) from CVS
     to indicate the starting point of what will be converted. Direct
@@ -197,7 +197,7 @@
         delete them.
 
     :hook.cvschangesets: Specify a Python function to be called after
-        the changesets are calculated from the the CVS log. The
+        the changesets are calculated from the CVS log. The
         function is passed a list with the changeset entries, and can
         modify the changesets in-place, or add or delete them.
 
@@ -207,7 +207,7 @@
     the command help for more details.
 
     Subversion Source
-    '''''''''''''''''
+    #################
 
     Subversion source detects classical trunk/branches/tags layouts.
     By default, the supplied ``svn://repo/path/`` source URL is
@@ -239,7 +239,7 @@
         The default is 0.
 
     Perforce Source
-    '''''''''''''''
+    ###############
 
     The Perforce (P4) importer can be given a p4 depot path or a
     client specification as source. It will convert all files in the
@@ -255,7 +255,7 @@
         Perforce changelist number).
 
     Mercurial Destination
-    '''''''''''''''''''''
+    #####################
 
     The following options are supported:
 
--- a/hgext/convert/subversion.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/hgext/convert/subversion.py	Thu Aug 02 18:33:40 2012 +0200
@@ -1020,26 +1020,25 @@
         self.wc = None
         self.cwd = os.getcwd()
 
-        path = os.path.realpath(path)
-
         created = False
         if os.path.isfile(os.path.join(path, '.svn', 'entries')):
-            self.wc = path
+            self.wc = os.path.realpath(path)
             self.run0('update')
         else:
-            wcpath = os.path.join(os.getcwd(), os.path.basename(path) + '-wc')
+            if not re.search(r'^(file|http|https|svn|svn\+ssh)\://', path):
+                path = os.path.realpath(path)
+                if os.path.isdir(os.path.dirname(path)):
+                    if not os.path.exists(os.path.join(path, 'db', 'fs-type')):
+                        ui.status(_('initializing svn repository %r\n') %
+                                  os.path.basename(path))
+                        commandline(ui, 'svnadmin').run0('create', path)
+                        created = path
+                    path = util.normpath(path)
+                    if not path.startswith('/'):
+                        path = '/' + path
+                    path = 'file://' + path
 
-            if os.path.isdir(os.path.dirname(path)):
-                if not os.path.exists(os.path.join(path, 'db', 'fs-type')):
-                    ui.status(_('initializing svn repository %r\n') %
-                              os.path.basename(path))
-                    commandline(ui, 'svnadmin').run0('create', path)
-                    created = path
-                path = util.normpath(path)
-                if not path.startswith('/'):
-                    path = '/' + path
-                path = 'file://' + path
-
+            wcpath = os.path.join(os.getcwd(), os.path.basename(path) + '-wc')
             ui.status(_('initializing svn working copy %r\n')
                       % os.path.basename(wcpath))
             self.run0('checkout', path, wcpath)
--- a/hgext/histedit.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/hgext/histedit.py	Thu Aug 02 18:33:40 2012 +0200
@@ -37,7 +37,6 @@
  #  d, drop = remove commit from history
  #  m, mess = edit message without changing commit content
  #
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
 In this file, lines beginning with ``#`` are ignored. You must specify a rule
 for each revision in your history. For example, if you had meant to add gamma
@@ -57,7 +56,6 @@
  #  d, drop = remove commit from history
  #  m, mess = edit message without changing commit content
  #
- 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
 At which point you close the editor and ``histedit`` starts working. When you
 specify a ``fold`` operation, ``histedit`` will open an editor when it folds
@@ -152,6 +150,7 @@
 from mercurial import discovery
 from mercurial import error
 from mercurial import hg
+from mercurial import lock as lockmod
 from mercurial import node
 from mercurial import patch
 from mercurial import repair
@@ -164,9 +163,7 @@
 
 testedwith = 'internal'
 
-editcomment = """
-
-# Edit history between %s and %s
+editcomment = _("""# Edit history between %s and %s
 #
 # Commands:
 #  p, pick = use commit
@@ -175,7 +172,7 @@
 #  d, drop = remove commit from history
 #  m, mess = edit message without changing commit content
 #
-"""
+""")
 
 def between(repo, old, new, keep):
     revs = [old]
@@ -310,7 +307,7 @@
     newmessage = '\n***\n'.join(
         [ctx.description()] +
         [repo[r].description() for r in internalchanges] +
-        [oldctx.description()])
+        [oldctx.description()]) + '\n'
     # If the changesets are from the same author, keep it.
     if ctx.user() == oldctx.user():
         username = ctx.user()
@@ -348,7 +345,7 @@
     except Exception:
         raise util.Abort(_('Fix up the change and run '
                            'hg histedit --continue'))
-    message = oldctx.description()
+    message = oldctx.description() + '\n'
     message = ui.edit(message, ui.username())
     new = repo.commit(text=message, user=oldctx.user(), date=oldctx.date(),
                       extra=oldctx.extra())
@@ -430,22 +427,29 @@
          tmpnodes, existing, rules, keep, tip, replacemap) = readstate(repo)
         currentparent, wantnull = repo.dirstate.parents()
         parentctx = repo[parentctxnode]
-        # discover any nodes the user has added in the interim
-        newchildren = [c for c in parentctx.children()
-                       if c.node() not in existing]
+        # existing is the list of revisions initially considered by
+        # histedit. Here we use it to list new changesets, descendants
+        # of parentctx without an 'existing' changeset in-between. We
+        # also have to exclude 'existing' changesets which were
+        # previously dropped.
+        descendants = set(c.node() for c in
+                repo.set('(%n::) - %n', parentctxnode, parentctxnode))
+        existing = set(existing)
+        notdropped = set(n for n in existing if n in descendants and
+                (n not in replacemap or replacemap[n] in descendants))
+        # Discover any nodes the user has added in the interim. We can
+        # miss changesets which were dropped and recreated the same.
+        newchildren = list(c.node() for c in repo.set(
+            'sort(%ln - (%ln or %ln::))', descendants, existing, notdropped))
         action, currentnode = rules.pop(0)
-        while newchildren:
-            if action in ('f', 'fold'):
-                tmpnodes.extend([n.node() for n in newchildren])
-            else:
-                created.extend([n.node() for n in newchildren])
-            filtered = []
-            for r in newchildren:
-                filtered += [c for c in r.children() if c.node not in existing]
-            newchildren = filtered
+        if action in ('f', 'fold'):
+            tmpnodes.extend(newchildren)
+        else:
+            created.extend(newchildren)
+
         m, a, r, d = repo.status()[:4]
         oldctx = repo[currentnode]
-        message = oldctx.description()
+        message = oldctx.description() + '\n'
         if action in ('e', 'edit', 'm', 'mess'):
             message = ui.edit(message, ui.username())
         elif action in ('f', 'fold'):
@@ -489,11 +493,16 @@
         ui.debug('should strip temp nodes %s\n' %
                  ', '.join([node.hex(n)[:12] for n in tmpnodes]))
         for nodes in (created, tmpnodes):
-            for n in reversed(nodes):
-                try:
-                    repair.strip(ui, repo, n)
-                except error.LookupError:
-                    pass
+            lock = None
+            try:
+                lock = repo.lock()
+                for n in reversed(nodes):
+                    try:
+                        repair.strip(ui, repo, n)
+                    except error.LookupError:
+                        pass
+            finally:
+                lockmod.release(lock)
         os.unlink(os.path.join(repo.path, 'histedit-state'))
         return
     else:
@@ -517,6 +526,7 @@
         rules = opts.get('commands', '')
         if not rules:
             rules = '\n'.join([makedesc(c) for c in ctxs])
+            rules += '\n\n'
             rules += editcomment % (node.hex(parent)[:12], node.hex(tip)[:12])
             rules = ui.edit(rules, ui.username())
             # Save edit rules in .hg/histedit-last-edit.txt in case
@@ -632,19 +642,29 @@
 
         ui.debug('should strip replaced nodes %s\n' %
                  ', '.join([node.hex(n)[:12] for n in replaced]))
-        for n in sorted(replaced, key=lambda x: repo[x].rev()):
+        lock = None
+        try:
+            lock = repo.lock()
+            for n in sorted(replaced, key=lambda x: repo[x].rev()):
+                try:
+                    repair.strip(ui, repo, n)
+                except error.LookupError:
+                    pass
+        finally:
+            lockmod.release(lock)
+
+    ui.debug('should strip temp nodes %s\n' %
+             ', '.join([node.hex(n)[:12] for n in tmpnodes]))
+    lock = None
+    try:
+        lock = repo.lock()
+        for n in reversed(tmpnodes):
             try:
                 repair.strip(ui, repo, n)
             except error.LookupError:
                 pass
-
-    ui.debug('should strip temp nodes %s\n' %
-             ', '.join([node.hex(n)[:12] for n in tmpnodes]))
-    for n in reversed(tmpnodes):
-        try:
-            repair.strip(ui, repo, n)
-        except error.LookupError:
-            pass
+    finally:
+        lockmod.release(lock)
     os.unlink(os.path.join(repo.path, 'histedit-state'))
     if os.path.exists(repo.sjoin('undo')):
         os.unlink(repo.sjoin('undo'))
--- a/hgext/largefiles/__init__.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/hgext/largefiles/__init__.py	Thu Aug 02 18:33:40 2012 +0200
@@ -92,6 +92,8 @@
 import reposetup
 import uisetup
 
+testedwith = 'internal'
+
 reposetup = reposetup.reposetup
 uisetup = uisetup.uisetup
 
--- a/hgext/largefiles/lfcommands.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/hgext/largefiles/lfcommands.py	Thu Aug 02 18:33:40 2012 +0200
@@ -121,7 +121,7 @@
             shutil.rmtree(rdst.root)
 
 def _addchangeset(ui, rsrc, rdst, ctx, revmap):
- # Convert src parents to dst parents
+    # Convert src parents to dst parents
     parents = _convertparents(ctx, revmap)
 
     # Generate list of changed files
@@ -506,7 +506,7 @@
         # because otherwise the largefile will get reverted.  But for commit's
         # sake, we have to mark the file as unclean.
         if getattr(repo, "_isrebasing", False):
-           lfdirstate.normallookup(lfile)
+            lfdirstate.normallookup(lfile)
         else:
             lfdirstate.normal(lfile)
     elif state == 'r':
--- a/hgext/largefiles/lfutil.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/hgext/largefiles/lfutil.py	Thu Aug 02 18:33:40 2012 +0200
@@ -53,7 +53,7 @@
 def findoutgoing(repo, remote, force):
     from mercurial import discovery
     common, _anyinc, _heads = discovery.findcommonincoming(repo,
-        remote, force=force)
+        remote.peer(), force=force)
     return repo.changelog.findmissing(common)
 
 # -- Private worker functions ------------------------------------------
--- a/hgext/largefiles/overrides.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/hgext/largefiles/overrides.py	Thu Aug 02 18:33:40 2012 +0200
@@ -81,9 +81,16 @@
                 ui.warn(_('%s already a largefile\n') % f)
             continue
 
-        if exact or not exists:
+        if (exact or not exists) and not lfutil.isstandin(f):
+            wfile = repo.wjoin(f)
+
+            # In case the file was removed previously, but not committed
+            # (issue3507)
+            if not os.path.exists(wfile):
+                continue
+
             abovemin = (lfsize and
-                        os.lstat(repo.wjoin(f)).st_size >= lfsize * 1024 * 1024)
+                        os.lstat(wfile).st_size >= lfsize * 1024 * 1024)
             if large or abovemin or (lfmatcher and lfmatcher(f)):
                 lfnames.append(f)
                 if ui.verbose or not exact:
@@ -432,7 +439,7 @@
             installnormalfilesmatchfn(repo[None].manifest())
             result = orig(ui, repo, pats, opts, rename)
         except util.Abort, e:
-            if str(e) != 'no files to copy':
+            if str(e) != _('no files to copy'):
                 raise e
             else:
                 nonormalfiles = True
@@ -508,18 +515,20 @@
                     dest.startswith(repo.wjoin(lfutil.shortname))):
                     srclfile = src.replace(repo.wjoin(lfutil.standin('')), '')
                     destlfile = dest.replace(repo.wjoin(lfutil.standin('')), '')
-                    destlfiledir = os.path.dirname(destlfile) or '.'
+                    destlfiledir = os.path.dirname(repo.wjoin(destlfile)) or '.'
                     if not os.path.isdir(destlfiledir):
                         os.makedirs(destlfiledir)
                     if rename:
                         os.rename(repo.wjoin(srclfile), repo.wjoin(destlfile))
                         lfdirstate.remove(srclfile)
                     else:
-                        util.copyfile(srclfile, destlfile)
+                        util.copyfile(repo.wjoin(srclfile),
+                                      repo.wjoin(destlfile))
+
                     lfdirstate.add(destlfile)
             lfdirstate.write()
         except util.Abort, e:
-            if str(e) != 'no files to copy':
+            if str(e) != _('no files to copy'):
                 raise e
             else:
                 nolfiles = True
@@ -558,7 +567,7 @@
                 os.unlink(repo.wjoin(lfutil.standin(lfile)))
 
         try:
-            ctx = repo[opts.get('rev')]
+            ctx = scmutil.revsingle(repo, opts.get('rev'))
             oldmatch = None # for the closure
             def overridematch(ctx, pats=[], opts={}, globbed=False,
                     default='relpath'):
@@ -658,9 +667,9 @@
         repo._isrebasing = True
         try:
             if opts.get('update'):
-                 del opts['update']
-                 ui.debug('--update and --rebase are not compatible, ignoring '
-                          'the update flag\n')
+                del opts['update']
+                ui.debug('--update and --rebase are not compatible, ignoring '
+                         'the update flag\n')
             del opts['rebase']
             cmdutil.bailifchanged(repo)
             origpostincoming = commands.postincoming
@@ -923,12 +932,10 @@
     dest, branches = hg.parseurl(dest, opts.get('branch'))
     revs, checkout = hg.addbranchrevs(repo, repo, branches, opts.get('rev'))
     if revs:
-        revs = [repo.lookup(rev) for rev in revs]
-
-    remoteui = hg.remoteui
+        revs = [repo.lookup(rev) for rev in scmutil.revrange(repo, revs)]
 
     try:
-        remote = hg.repository(remoteui(repo, opts), dest)
+        remote = hg.peer(repo, opts, dest)
     except error.RepoError:
         return None
     o = lfutil.findoutgoing(repo, remote, False)
@@ -1001,8 +1008,9 @@
     # we don't remove the standin in the largefiles code, preventing a very
     # confused state later.
     if missing:
+        m = [repo.wjoin(f) for f in missing]
         repo._isaddremove = True
-        removelargefiles(ui, repo, *missing, **opts)
+        removelargefiles(ui, repo, *m, **opts)
         repo._isaddremove = False
     # Call into the normal add code, and any files that *should* be added as
     # largefiles will be
@@ -1065,8 +1073,8 @@
     return result
 
 def overridecat(orig, ui, repo, file1, *pats, **opts):
-    rev = opts.get('rev')
-    if not lfutil.standin(file1) in repo[rev]:
+    ctx = scmutil.revsingle(repo, opts.get('rev'))
+    if not lfutil.standin(file1) in ctx:
         result = orig(ui, repo, file1, *pats, **opts)
         return result
-    return lfcommands.catlfile(repo, file1, opts.get('rev'), opts.get('output'))
+    return lfcommands.catlfile(repo, file1, ctx.rev(), opts.get('output'))
--- a/hgext/largefiles/reposetup.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/hgext/largefiles/reposetup.py	Thu Aug 02 18:33:40 2012 +0200
@@ -338,15 +338,18 @@
                                     lfutil.updatestandin(self,
                                         lfutil.standin(lfile))
                                     lfdirstate.normal(lfile)
-                    for lfile in lfdirstate:
-                        if lfile in modifiedfiles:
-                            if (not os.path.exists(repo.wjoin(
-                               lfutil.standin(lfile)))) or \
-                               (not os.path.exists(repo.wjoin(lfile))):
-                                lfdirstate.drop(lfile)
 
                     result = orig(text=text, user=user, date=date, match=match,
                                     force=force, editor=editor, extra=extra)
+
+                    if result is not None:
+                        for lfile in lfdirstate:
+                            if lfile in modifiedfiles:
+                                if (not os.path.exists(repo.wjoin(
+                                   lfutil.standin(lfile)))) or \
+                                   (not os.path.exists(repo.wjoin(lfile))):
+                                    lfdirstate.drop(lfile)
+
                     # This needs to be after commit; otherwise precommit hooks
                     # get the wrong status
                     lfdirstate.write()
--- a/hgext/pager.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/hgext/pager.py	Thu Aug 02 18:33:40 2012 +0200
@@ -17,7 +17,7 @@
 To set the pager that should be used, set the application variable::
 
   [pager]
-  pager = less -FRSX
+  pager = less -FRX
 
 If no pager is set, the pager extensions uses the environment variable
 $PAGER. If neither pager.pager, nor $PAGER is set, no pager is used.
@@ -53,7 +53,35 @@
 
 testedwith = 'internal'
 
-def _runpager(ui, p):
+def _pagerfork(ui, p):
+    if not util.safehasattr(os, 'fork'):
+        sys.stdout = util.popen(p, 'wb')
+        if ui._isatty(sys.stderr):
+            sys.stderr = sys.stdout
+        return
+    fdin, fdout = os.pipe()
+    pid = os.fork()
+    if pid == 0:
+        os.close(fdin)
+        os.dup2(fdout, sys.stdout.fileno())
+        if ui._isatty(sys.stderr):
+            os.dup2(fdout, sys.stderr.fileno())
+        os.close(fdout)
+        return
+    os.dup2(fdin, sys.stdin.fileno())
+    os.close(fdin)
+    os.close(fdout)
+    try:
+        os.execvp('/bin/sh', ['/bin/sh', '-c', p])
+    except OSError, e:
+        if e.errno == errno.ENOENT:
+            # no /bin/sh, try executing the pager directly
+            args = shlex.split(p)
+            os.execvp(args[0], args)
+        else:
+            raise
+
+def _pagersubprocess(ui, p):
     pager = subprocess.Popen(p, shell=True, bufsize=-1,
                              close_fds=util.closefds, stdin=subprocess.PIPE,
                              stdout=sys.stdout, stderr=sys.stderr)
@@ -71,6 +99,15 @@
         os.dup2(stderr, sys.stderr.fileno())
         pager.wait()
 
+def _runpager(ui, p):
+    # The subprocess module shipped with Python <= 2.4 is buggy (issue3533).
+    # The compat version is buggy on Windows (issue3225), but has been shipping
+    # with hg for a long time.  Preserve existing functionality.
+    if sys.version_info >= (2, 5):
+        _pagersubprocess(ui, p)
+    else:
+        _pagerfork(ui, p)
+
 def uisetup(ui):
     if '--debugger' in sys.argv or not ui.formatted():
         return
--- a/hgext/rebase.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/hgext/rebase.py	Thu Aug 02 18:33:40 2012 +0200
@@ -53,8 +53,7 @@
     ('c', 'continue', False, _('continue an interrupted rebase')),
     ('a', 'abort', False, _('abort an interrupted rebase'))] +
      templateopts,
-    _('hg rebase [-s REV | -b REV] [-d REV] [options]\n'
-      'hg rebase {-a|-c}'))
+    _('[-s REV | -b REV] [-d REV] [OPTION]'))
 def rebase(ui, repo, **opts):
     """move changeset (and descendants) to a different branch
 
--- a/hgext/transplant.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/hgext/transplant.py	Thu Aug 02 18:33:40 2012 +0200
@@ -263,9 +263,6 @@
                 files = set()
                 patch.patch(self.ui, repo, patchfile, files=files, eolmode=None)
                 files = list(files)
-                if not files:
-                    self.ui.warn(_('%s: empty changeset') % revlog.hex(node))
-                    return None
             except Exception, inst:
                 seriespath = os.path.join(self.path, 'series')
                 if os.path.exists(seriespath):
@@ -288,14 +285,8 @@
         n = repo.commit(message, user, date, extra=extra, match=m,
                         editor=self.editor)
         if not n:
-            # Crash here to prevent an unclear crash later, in
-            # transplants.write().  This can happen if patch.patch()
-            # does nothing but claims success or if repo.status() fails
-            # to report changes done by patch.patch().  These both
-            # appear to be bugs in other parts of Mercurial, but dying
-            # here, as soon as we can detect the problem, is preferable
-            # to silently dropping changesets on the floor.
-            raise RuntimeError('nothing committed after transplant')
+            self.ui.warn(_('skipping emptied changeset %s\n') % short(node))
+            return None
         if not merge:
             self.transplants.set(n, node)
 
@@ -666,9 +657,9 @@
     Transplanted changesets in set, or all transplanted changesets.
     """
     if x:
-      s = revset.getset(repo, subset, x)
+        s = revset.getset(repo, subset, x)
     else:
-      s = subset
+        s = subset
     return [r for r in s if repo[r].extra().get('transplant_source')]
 
 def kwtransplanted(repo, ctx, **args):
--- a/i18n/ja.po	Thu Aug 02 17:48:58 2012 +0200
+++ b/i18n/ja.po	Thu Aug 02 18:33:40 2012 +0200
@@ -56,6 +56,7 @@
 # command(, this)       (本)コマンド
 # commit                コミット
 # commit comment        コミットログ
+# commit message        コミットログ
 # copy(of file, repo)   複製
 # default(, by)         指定が無い場合/通常は
 # delete                (作業領域からの)ファイル削除
@@ -65,9 +66,11 @@
 # entry                 エントリ
 # extend(ed)            拡張
 # extension             (Mercurialの)エクステンション
+# fold (revision/patch) (リビジョン/パッチの)併合
 # glob(, rooted at ...) ワイルドカード形式
 #                       (... からの相対パスに対して、
 #                        パス先頭からのパターン合致で判定する)
+# graft                 移植
 # hash identifier(s)    ハッシュ値
 # head                  ヘッド
 # head changeset(s)     ヘッド
@@ -125,7 +128,7 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2012-06-30 20:47+0900\n"
+"POT-Creation-Date: 2012-08-01 04:42+0900\n"
 "PO-Revision-Date: 2009-11-16 21:24+0100\n"
 "Last-Translator: Japanese translation team <mercurial-ja@googlegroups.com>\n"
 "Language-Team: Japanese\n"
@@ -220,10 +223,10 @@
 
 msgid ""
 "Branch-based Access Control\n"
-"..........................."
+"---------------------------"
 msgstr ""
 "ブランチベースのアクセス制御\n"
-"............................"
+"----------------------------"
 
 msgid ""
 "Use the ``acl.deny.branches`` and ``acl.allow.branches`` sections to\n"
@@ -252,11 +255,18 @@
 "- 「全て」を意味するアスタリスク"
 
 msgid ""
+"You can add the \"!\" prefix to a user or group name to invert the sense\n"
+"of the match."
+msgstr ""
+"ユーザ/グループ名指定の冒頭に \"!\" を付けることで、 合致判定条件を、\n"
+"反転させることができます。"
+
+msgid ""
 "Path-based Access Control\n"
-"........................."
+"-------------------------"
 msgstr ""
 "パスベースのアクセス制御\n"
-"........................"
+"------------------------"
 
 msgid ""
 "Use the ``acl.deny`` and ``acl.allow`` sections to have path-based\n"
@@ -272,10 +282,10 @@
 
 msgid ""
 "Groups\n"
-"......"
+"------"
 msgstr ""
 "グループ\n"
-"........"
+"--------"
 
 msgid ""
 "Group names must be prefixed with an ``@`` symbol. Specifying a group\n"
@@ -297,10 +307,10 @@
 
 msgid ""
 "Example Configuration\n"
-"....................."
+"---------------------"
 msgstr ""
 "設定例\n"
-"......"
+"------"
 
 msgid "::"
 msgstr "::"
@@ -473,6 +483,89 @@
 msgid "  .hgtags = release_engineer"
 msgstr "  .hgtags = release_engineer"
 
+msgid ""
+"Examples using the \"!\" prefix\n"
+"............................."
+msgstr ""
+"条件反転(\"!\")設定例\n"
+"..................."
+
+msgid ""
+"Suppose there's a branch that only a given user (or group) should be able "
+"to\n"
+"push to, and you don't want to restrict access to any other branch that may\n"
+"be created."
+msgstr ""
+"仮に、 指定ユーザ (又はグループ) の履歴のみを反映させたいブランチがあり、\n"
+"ブランチ生成も含めて、 それ以外のアクセスは制限したくない、とします。"
+
+msgid ""
+"The \"!\" prefix allows you to prevent anyone except a given user or group "
+"to\n"
+"push changesets in a given branch or path."
+msgstr ""
+"\"!\" 指定を使うことで、 指定ユーザ/グループ以外による履歴の反映を、\n"
+"特定ブランチ/パスに対して抑止できます。"
+
+msgid ""
+"In the examples below, we will:\n"
+"1) Deny access to branch \"ring\" to anyone but user \"gollum\"\n"
+"2) Deny access to branch \"lake\" to anyone but members of the group \"hobbit"
+"\"\n"
+"3) Deny access to a file to anyone but user \"gollum\""
+msgstr ""
+"以下の設定により:\n"
+"1) ユーザ \"gollum\" 以外のブランチ \"ring\" へのアクセス、\n"
+"2) グループ \"hobbit\" 以外のブランチ \"lake\" へのアクセス、\n"
+"3) ユーザ \"gollum\" 以外の ``/misty/mountains/cave/ring``\n"
+"ファイルへのアクセスが、禁止されます。"
+
+msgid ""
+"  [acl.allow.branches]\n"
+"  # Empty"
+msgstr ""
+"  [acl.allow.branches]\n"
+"  # 空"
+
+msgid ""
+"  # 1) only 'gollum' can commit to branch 'ring';\n"
+"  # 'gollum' and anyone else can still commit to any other branch.\n"
+"  ring = !gollum"
+msgstr ""
+"  # 1) ユーザ 'gollum' のみがブランチ 'ring' にコミット可能。\n"
+"  # その他のブランチへの 'gollum' /他のユーザのコミット可否は変わらず。\n"
+"  ring = !gollum"
+
+msgid ""
+"  # 2) only members of the group 'hobbit' can commit to branch 'lake';\n"
+"  # 'hobbit' members and anyone else can still commit to any other branch.\n"
+"  lake = !@hobbit"
+msgstr ""
+"  # 2) グループ 'hobbit' のメンバーみがブランチ 'lake' にコミット可能。\n"
+"  # その他のブランチへの 'hobbit' /他のユーザのコミット可否は変わらず。\n"
+"  lake = !@hobbit"
+
+msgid "  # You can also deny access based on file paths:"
+msgstr "  # ファイルパスによるアクセス禁止も可能:"
+
+msgid ""
+"  [acl.allow]\n"
+"  # Empty"
+msgstr ""
+"  [acl.allow]\n"
+"  # 空"
+
+msgid ""
+"  [acl.deny]\n"
+"  # 3) only 'gollum' can change the file below;\n"
+"  # 'gollum' and anyone else can still change any other file.\n"
+"  /misty/mountains/cave/ring = !gollum"
+msgstr ""
+"  [acl.deny]\n"
+"  # 3) ユーザ 'gollum' のみが以下のファイルを変更可能。\n"
+"  # 他のファイルの 'gollum' /他のユーザの改変可否は変わらず。\n"
+"  /misty/mountains/cave/ring = !gollum"
+
 #, python-format
 msgid "group '%s' is undefined"
 msgstr "グループ '%s' は未定義です"
@@ -1163,8 +1256,15 @@
 msgid "Bugzilla error: %s"
 msgstr "Bugzilla エラー: %s"
 
-msgid "command to display child changesets"
-msgstr "子リビジョン表示のコマンド"
+msgid "command to display child changesets (DEPRECATED)"
+msgstr "子リビジョン表示のコマンド (非推奨)"
+
+msgid ""
+"This extension is deprecated. You should use :hg:`log -r\n"
+"\"children(REV)\"` instead.\n"
+msgstr ""
+"本エクステンションは非推奨です。:hg:`log -r \"children(REV)\"`\n"
+"を使用してください。\n"
 
 msgid "show the children of the given or working directory revision"
 msgstr "指定リビジョンの子リビジョンの表示"
@@ -1197,7 +1297,7 @@
 msgstr "変更履歴の統計情報表示のコマンド"
 
 #, python-format
-msgid "Revision %d is a merge, ignoring...\n"
+msgid "revision %d is a merge, ignoring...\n"
 msgstr "マージ実施リビジョン %d を無視...\n"
 
 msgid "analyzing"
@@ -1790,10 +1890,10 @@
 
 msgid ""
 "    Mercurial Source\n"
-"    ''''''''''''''''"
+"    ################"
 msgstr ""
 "    Mercurial 形式からの変換\n"
-"    ''''''''''''''''''''''''"
+"    ########################"
 
 msgid ""
 "    The Mercurial source recognizes the following configuration\n"
@@ -1830,10 +1930,10 @@
 
 msgid ""
 "    CVS Source\n"
-"    ''''''''''"
+"    ##########"
 msgstr ""
 "    CVS 形式からの変換\n"
-"    ''''''''''''''''''"
+"    ##################"
 
 msgid ""
 "    CVS source will use a sandbox (i.e. a checked-out copy) from CVS\n"
@@ -1915,7 +2015,7 @@
 
 msgid ""
 "    :hook.cvschangesets: Specify a Python function to be called after\n"
-"        the changesets are calculated from the the CVS log. The\n"
+"        the changesets are calculated from the CVS log. The\n"
 "        function is passed a list with the changeset entries, and can\n"
 "        modify the changesets in-place, or add or delete them."
 msgstr ""
@@ -1936,10 +2036,10 @@
 
 msgid ""
 "    Subversion Source\n"
-"    '''''''''''''''''"
+"    #################"
 msgstr ""
 "    Subversion 形式からの変換\n"
-"    '''''''''''''''''''''''''"
+"    #########################"
 
 msgid ""
 "    Subversion source detects classical trunk/branches/tags layouts.\n"
@@ -2005,10 +2105,10 @@
 
 msgid ""
 "    Perforce Source\n"
-"    '''''''''''''''"
+"    ###############"
 msgstr ""
 "    Perforce 形式からの変換\n"
-"    '''''''''''''''''''''''"
+"    #######################"
 
 msgid ""
 "    The Perforce (P4) importer can be given a p4 depot path or a\n"
@@ -2041,10 +2141,10 @@
 
 msgid ""
 "    Mercurial Destination\n"
-"    '''''''''''''''''''''"
+"    #####################"
 msgstr ""
 "    Mercurial 形式への変換\n"
-"    ''''''''''''''''''''''"
+"    ######################"
 
 msgid "    The following options are supported:"
 msgstr "    以下のオプションを指定できます:"
@@ -2266,11 +2366,11 @@
 msgstr "格納されていないリビジョンがあります"
 
 #, python-format
-msgid "Writing author map file %s\n"
+msgid "writing author map file %s\n"
 msgstr "作成者名変換ファイル %s への書き込み中\n"
 
 #, python-format
-msgid "Ignoring bad line in author map file %s: %s\n"
+msgid "ignoring bad line in author map file %s: %s\n"
 msgstr "作成者名変換ファイル %s の不正な行を無視: %s\n"
 
 #, python-format
@@ -2404,7 +2504,7 @@
 "warning: CVS commit message references non-existent branch %r:\n"
 "%s\n"
 msgstr ""
-"警告: CVS コミットメッセージが未知のブランチ %r を参照しています:\n"
+"警告: CVS コミットログが未知のブランチ %r を参照しています:\n"
 "%s\n"
 
 #, python-format
@@ -2587,6 +2687,9 @@
 msgid "collecting p4 changelists\n"
 msgstr "p4 チェンジリストの収集中\n"
 
+msgid "debugsvnlog could not load Subversion python bindings"
+msgstr "debugsvnlog が Subversion python バインディングを読み込めません"
+
 msgid "Mercurial failed to run itself, check hg executable is in PATH"
 msgstr "Mercurial 自身の実行に失敗。 PATH 設定と hg コマンドを確認してください"
 
@@ -2605,7 +2708,7 @@
 msgid "%s does not look like a Subversion repository"
 msgstr "%s は Subversion 形式ではないと思われます"
 
-msgid "Could not load Subversion python bindings"
+msgid "could not load Subversion python bindings"
 msgstr "Subversion python バインディングが読み込めません"
 
 #, python-format
@@ -3183,8 +3286,8 @@
 msgid "factotum not responding"
 msgstr "factotum が応答しません"
 
-msgid "pull, update and merge in one command"
-msgstr "pull, update, merge の一括実行"
+msgid "pull, update and merge in one command (DEPRECATED)"
+msgstr "pull, update, merge の一括実行 (非推奨)"
 
 msgid "pull changes from a remote repository, merge new changes if needed."
 msgstr "連携先リポジトリからの取り込みと、 必要に応じたマージ実施"
@@ -3249,7 +3352,7 @@
 msgstr "%s から取り込み中\n"
 
 msgid ""
-"Other repository doesn't support revision lookup, so a rev cannot be "
+"other repository doesn't support revision lookup, so a rev cannot be "
 "specified."
 msgstr "連携先でリビジョンが特定できないため、 リビジョンは指定できません"
 
@@ -3277,10 +3380,10 @@
 msgstr "取り込み対象リビジョンの指定"
 
 msgid "edit commit message"
-msgstr "コミットメッセージの編集"
+msgstr "コミットログの編集"
 
 msgid "edit commit message (DEPRECATED)"
-msgstr "コミットメッセージの編集(非推奨)"
+msgstr "コミットログの編集(非推奨)"
 
 msgid "switch parents when merging"
 msgstr "マージの際の第1親リビジョンを切り替え"
@@ -3316,14 +3419,14 @@
 msgid "%s:%d node does not exist\n"
 msgstr "%s:%d ノードは存在しません\n"
 
-msgid "hg sigcheck REVISION"
-msgstr "hg sigcheck REVISION"
+msgid "hg sigcheck REV"
+msgstr "hg sigcheck REV"
 
 msgid "verify all the signatures there may be for a particular revision"
 msgstr "特定リビジョンに関する全署名の検証"
 
 #, python-format
-msgid "No valid signature for %s\n"
+msgid "no valid signature for %s\n"
 msgstr "%s の正しい署名ではありません\n"
 
 msgid "make the signature local"
@@ -3345,10 +3448,10 @@
 msgstr "テキスト"
 
 msgid "commit message"
-msgstr "コミットメッセージ"
-
-msgid "hg sign [OPTION]... [REVISION]..."
-msgstr "hg sign [OPTION]... [REVISION]..."
+msgstr "コミットログ"
+
+msgid "hg sign [OPTION]... [REV]..."
+msgstr "hg sign [OPTION]... [REV]..."
 
 msgid "add a signature for the current or given revision"
 msgstr "指定リビジョンへの署名の付与"
@@ -3371,7 +3474,7 @@
 msgstr "マージが未コミットです - 対象リビジョンを指定してください"
 
 #, python-format
-msgid "Signing %d:%s\n"
+msgid "signing %d:%s\n"
 msgstr "%d:%s への署名中\n"
 
 msgid "error while signing"
@@ -3398,21 +3501,6 @@
 "新規オプション --graph を付与します。 --graph 指定により、 ASCII\n"
 "文字による履歴ツリーが表示されます。\n"
 
-#, python-format
-msgid "-G/--graph option is incompatible with --%s"
-msgstr "-G/--graph と --%s は併用できません"
-
-#, python-format
-msgid "cannot follow file not in parent revision: \"%s\""
-msgstr "親リビジョンに存在しないファイルは追跡できません: \"%s\""
-
-#, python-format
-msgid "cannot follow nonexistent file: \"%s\""
-msgstr "存在しないファイルは追跡できません: \"%s\""
-
-msgid "can only follow copies/renames for explicit filenames"
-msgstr "ファイル名が明示された場合のみ複製/改名を追跡可能です"
-
 msgid "follow changeset history, or file history across copies and renames"
 msgstr "複製元や改名元の履歴も遡る"
 
@@ -3477,9 +3565,6 @@
 "    @ 文字で表示されるリビジョンは、 作業領域の親リビジョンです。\n"
 "    "
 
-msgid "show the revision DAG"
-msgstr "履歴ツリーの表示"
-
 msgid "hooks for integrating with the CIA.vc notification service"
 msgstr "CIA.vc 通知サービスとの統合向けのフック集"
 
@@ -3721,7 +3806,7 @@
 msgstr "hg debug-rev-list [OPTION]... REV..."
 
 msgid "syntax highlighting for hgweb (requires Pygments)"
-msgstr "hgweb におけるシンタックスハイライトの実施(要 Pygments)"
+msgstr "hgweb におけるシンタックスハイライト (要 Pygments)"
 
 msgid ""
 "It depends on the Pygments syntax highlighting library:\n"
@@ -3743,6 +3828,385 @@
 msgid "The default is 'colorful'.\n"
 msgstr "無指定時の設定は 'colorful' とみなされます。\n"
 
+msgid "interactive history editing"
+msgstr "対話的な履歴改変"
+
+msgid ""
+"With this extension installed, Mercurial gains one new command: histedit. "
+"Usage\n"
+"is as follows, assuming the following history::"
+msgstr ""
+"本エクステンションの有効化により histedit コマンドが利用可能になります。\n"
+"以降の説明では、 以下の履歴を前提としています::"
+
+msgid ""
+" @  3[tip]   7c2fd3b9020c   2009-04-27 18:04 -0500   durin42\n"
+" |    Add delta\n"
+" |\n"
+" o  2   030b686bedc4   2009-04-27 18:04 -0500   durin42\n"
+" |    Add gamma\n"
+" |\n"
+" o  1   c561b4e977df   2009-04-27 18:04 -0500   durin42\n"
+" |    Add beta\n"
+" |\n"
+" o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"      Add alpha"
+msgstr ""
+" @  3[tip]   7c2fd3b9020c   2009-04-27 18:04 -0500   durin42\n"
+" |    Add delta\n"
+" |\n"
+" o  2   030b686bedc4   2009-04-27 18:04 -0500   durin42\n"
+" |    Add gamma\n"
+" |\n"
+" o  1   c561b4e977df   2009-04-27 18:04 -0500   durin42\n"
+" |    Add beta\n"
+" |\n"
+" o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"      Add alpha"
+
+msgid ""
+"If you were to run ``hg histedit c561b4e977df``, you would see the "
+"following\n"
+"file open in your editor::"
+msgstr ""
+"``hg histedit c561b4e977df`` 実行により、 エディタが起動された上で、\n"
+"以下の内容のファイルが開かれます::"
+
+msgid ""
+" pick c561b4e977df Add beta\n"
+" pick 030b686bedc4 Add gamma\n"
+" pick 7c2fd3b9020c Add delta"
+msgstr ""
+" pick c561b4e977df Add beta\n"
+" pick 030b686bedc4 Add gamma\n"
+" pick 7c2fd3b9020c Add delta"
+
+msgid ""
+" # Edit history between 633536316234 and 7c2fd3b9020c\n"
+" #\n"
+" # Commands:\n"
+" #  p, pick = use commit\n"
+" #  e, edit = use commit, but stop for amending\n"
+" #  f, fold = use commit, but fold into previous commit\n"
+" #  d, drop = remove commit from history\n"
+" #  m, mess = edit message without changing commit content\n"
+" #"
+msgstr ""
+" # Edit history between 633536316234 and 7c2fd3b9020c\n"
+" #\n"
+" # Commands:\n"
+" #  p, pick = use commit\n"
+" #  e, edit = use commit, but stop for amending\n"
+" #  f, fold = use commit, but fold into previous commit\n"
+" #  d, drop = remove commit from history\n"
+" #  m, mess = edit message without changing commit content\n"
+" #"
+
+msgid ""
+"In this file, lines beginning with ``#`` are ignored. You must specify a "
+"rule\n"
+"for each revision in your history. For example, if you had meant to add "
+"gamma\n"
+"before beta, and then wanted to add delta in the same revision as beta, you\n"
+"would reorganize the file to look like this::"
+msgstr ""
+"このファイル中の ``#`` で始まる行は無視されます。 履歴編集対象に対して、\n"
+"各リビジョン毎の処理内容 (rule) を指定してください。 例えば \"Add beta\"\n"
+"による改変よりも \"Add gamma\" による改変を先に実施した上で、 \"Add\n"
+"delta\" による改変を \"Add beta\" へと併合 (fold) する場合なら、\n"
+"以下のように記述します::"
+
+msgid ""
+" pick 030b686bedc4 Add gamma\n"
+" pick c561b4e977df Add beta\n"
+" fold 7c2fd3b9020c Add delta"
+msgstr ""
+" pick 030b686bedc4 Add gamma\n"
+" pick c561b4e977df Add beta\n"
+" fold 7c2fd3b9020c Add delta"
+
+msgid ""
+"At which point you close the editor and ``histedit`` starts working. When "
+"you\n"
+"specify a ``fold`` operation, ``histedit`` will open an editor when it "
+"folds\n"
+"those revisions together, offering you a chance to clean up the commit "
+"message::"
+msgstr ""
+"``histedit`` の実際の処理は、 エディタを終了させた時点から始まります。\n"
+"``fold`` 操作を指定した場合、 併合後リビジョンのコミットログ入力のために、\n"
+"併合対象と併合先の各コミットログを、 以下の様に結合したファイルを、\n"
+"``histedit`` がエディタで開きます::"
+
+msgid ""
+" Add beta\n"
+" ***\n"
+" Add delta"
+msgstr ""
+" Add beta\n"
+" ***\n"
+" Add delta"
+
+msgid ""
+"Edit the commit message to your liking, then close the editor. For\n"
+"this example, let's assume that the commit message was changed to\n"
+"``Add beta and delta.`` After histedit has run and had a chance to\n"
+"remove any old or temporary revisions it needed, the history looks\n"
+"like this::"
+msgstr ""
+"コミットログの編集を終えたなら、 エディタを終了します。 ここでは、\n"
+"コミットログを ``Add beta and delta.`` に変更したものと仮定します。\n"
+"histedit による改変処理が完了すると、 以下の様な履歴になります::"
+
+msgid ""
+" @  2[tip]   989b4d060121   2009-04-27 18:04 -0500   durin42\n"
+" |    Add beta and delta.\n"
+" |\n"
+" o  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n"
+" |    Add gamma\n"
+" |\n"
+" o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"      Add alpha"
+msgstr ""
+" @  2[tip]   989b4d060121   2009-04-27 18:04 -0500   durin42\n"
+" |    Add beta and delta.\n"
+" |\n"
+" o  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n"
+" |    Add gamma\n"
+" |\n"
+" o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"      Add alpha"
+
+msgid ""
+"Note that ``histedit`` does *not* remove any revisions (even its own "
+"temporary\n"
+"ones) until after it has completed all the editing operations, so it will\n"
+"probably perform several strip operations when it's done. For the above "
+"example,\n"
+"it had to run strip twice. Strip can be slow depending on a variety of "
+"factors,\n"
+"so you might need to be a little patient. You can choose to keep the "
+"original\n"
+"revisions by passing the ``--keep`` flag."
+msgstr ""
+"``histedit`` の履歴改変処理では、 改変処理が完了するまでは、(例えそれが、\n"
+"作業用の一時的なものであっても) 履歴が削除されることはありませんので、\n"
+"処理終了直前には、 おそらく複数のリビジョンの破棄が行われます。\n"
+"上記の例の場合、 2回の履歴破棄が行われる筈です。 履歴破棄の実行速度は、\n"
+"様々な要因が元で低下し得ますので、 多少の我慢が必要になるかもしれません。\n"
+"``--keep`` を指定することで、 履歴の破棄を抑止可能です。"
+
+msgid ""
+"The ``edit`` operation will drop you back to a command prompt,\n"
+"allowing you to edit files freely, or even use ``hg record`` to commit\n"
+"some changes as a separate commit. When you're done, any remaining\n"
+"uncommitted changes will be committed as well. When done, run ``hg\n"
+"histedit --continue`` to finish this step. You'll be prompted for a\n"
+"new commit message, but the default commit message will be the\n"
+"original message for the ``edit`` ed revision."
+msgstr ""
+"``edit`` 操作を指定した場合、 一旦コマンド入力に戻りますので、\n"
+"ファイル内容の編集や、 ``hg record`` による選択的な変更の取り込みなどを、\n"
+"自由に行ってください。 変更作業が完了したなら、 ``hg histedit --continue``\n"
+"を実行することで、 作業領域中の変更内容が、 変更後リビジョンとして、\n"
+"コミットされます。 この際に、 コミットログの問い合わせがありますが、\n"
+"デフォルト値は ``edit`` 対処リビジョンの、 元々のコミットログの内容です。"
+
+msgid ""
+"The ``message`` operation will give you a chance to revise a commit\n"
+"message without changing the contents. It's a shortcut for doing\n"
+"``edit`` immediately followed by `hg histedit --continue``."
+msgstr ""
+"``message`` 操作は、 対象リビジョンでの変更内容はそのままに、\n"
+"コミットログのみを変更します。 これは ``edit`` 操作を指定した上で、\n"
+"コマンド入力に戻ってすぐに ``hg histedit --continue`` を実施するのと、\n"
+"全く同じ挙動となります。"
+
+msgid ""
+"If ``histedit`` encounters a conflict when moving a revision (while\n"
+"handling ``pick`` or ``fold``), it'll stop in a similar manner to\n"
+"``edit`` with the difference that it won't prompt you for a commit\n"
+"message when done. If you decide at this point that you don't like how\n"
+"much work it will be to rearrange history, or that you made a mistake,\n"
+"you can use ``hg histedit --abort`` to abandon the new changes you\n"
+"have made and return to the state before you attempted to edit your\n"
+"history."
+msgstr ""
+"履歴改変による衝突が ``histedit`` によって (``pick`` や ``fold``\n"
+"操作において) 検出された場合に、 一旦コマンド入力に戻る点は ``edit``\n"
+"操作と同じですが、 衝突解消作業が完了して ``hg histedit --continue``\n"
+"を実行しても、 コミットログの問い合わせが無い点は ``edit`` と異なります。\n"
+"この時点で、 履歴改変に伴う作業量の問題や、 間違いに気付いた場合は、\n"
+"``hg histedit --abort`` 実行によって、 これまでの作業成果が破棄され、\n"
+"履歴は改変前の状態に戻ります。"
+
+msgid ""
+"If we clone the example repository above and add three more changes, such "
+"that\n"
+"we have the following history::"
+msgstr ""
+"上記の実行例におけるリポジトリを複製し、 そこで履歴を3つ追加した結果、\n"
+"以下の様な履歴になったものと仮定します::"
+
+msgid ""
+"   @  6[tip]   038383181893   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add theta\n"
+"   |\n"
+"   o  5   140988835471   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add eta\n"
+"   |\n"
+"   o  4   122930637314   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add zeta\n"
+"   |\n"
+"   o  3   836302820282   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add epsilon\n"
+"   |\n"
+"   o  2   989b4d060121   2009-04-27 18:04 -0500   durin42\n"
+"   |    Add beta and delta.\n"
+"   |\n"
+"   o  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n"
+"   |    Add gamma\n"
+"   |\n"
+"   o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"        Add alpha"
+msgstr ""
+"   @  6[tip]   038383181893   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add theta\n"
+"   |\n"
+"   o  5   140988835471   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add eta\n"
+"   |\n"
+"   o  4   122930637314   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add zeta\n"
+"   |\n"
+"   o  3   836302820282   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add epsilon\n"
+"   |\n"
+"   o  2   989b4d060121   2009-04-27 18:04 -0500   durin42\n"
+"   |    Add beta and delta.\n"
+"   |\n"
+"   o  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n"
+"   |    Add gamma\n"
+"   |\n"
+"   o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"        Add alpha"
+
+msgid ""
+"If you run ``hg histedit --outgoing`` on the clone then it is the same\n"
+"as running ``hg histedit 836302820282``. If you need plan to push to a\n"
+"repository that Mercurial does not detect to be related to the source\n"
+"repo, you can add a ``--force`` option.\n"
+msgstr ""
+"複製『先』のリポジトリで ``hg histedit --outgoing`` を実行した場合、\n"
+"``hg histedit 836302820282`` 実行と同じ結果となります。 Mercurial が、\n"
+"連携先リポジトリとの関連性を、 検出できない場合でも、 ``--force``\n"
+"を指定することで、 元リポジトリとの関連ありとみなすことができます。\n"
+
+msgid "cannot edit history that would orphan nodes"
+msgstr "履歴ツリーが分断されるような履歴改変はできません"
+
+msgid "can't edit history with merges"
+msgstr "マージに関わる履歴の改変はできません"
+
+#, python-format
+msgid "%s: empty changeset"
+msgstr "%s: 空のリビジョン"
+
+msgid "Fix up the change and run hg histedit --continue"
+msgstr "衝突解消後に \"hg histedit --continue\" してください"
+
+msgid ""
+"Make changes as needed, you may commit or record as needed now.\n"
+"When you are finished, run hg histedit --continue to resume."
+msgstr ""
+"必要に応じて変更/記録を行ってください。 作業が完了したならば、\n"
+"改変再開のために hg histedit --continue を実行してください。"
+
+msgid "Read history edits from the specified file."
+msgstr "履歴改変手順を指定ファイルから読み込み"
+
+msgid "continue an edit already in progress"
+msgstr "中断された履歴改変を再開"
+
+msgid "don't strip old nodes after edit is complete"
+msgstr "改変元の履歴を改変完了後も保持"
+
+msgid "abort an edit in progress"
+msgstr "進行中の履歴改変を中止"
+
+msgid "changesets not found in destination"
+msgstr "連携先リポジトリに、 含まれないリビジョンを、 改変対象化"
+
+msgid "force outgoing even for unrelated repositories"
+msgstr "連携先が無関係なリポジトリでも、 比較を実施"
+
+msgid "first revision to be edited"
+msgstr "改変対象の最初のリビジョン"
+
+msgid "[PARENT]"
+msgstr "[PARENT]"
+
+msgid ""
+"interactively edit changeset history\n"
+"    "
+msgstr ""
+"対話的な履歴の改変\n"
+"    "
+
+msgid "source has mq patches applied"
+msgstr "元リポジトリでは MQ パッチが適用中です"
+
+msgid "only one repo argument allowed with --outgoing"
+msgstr "--outgoing 指定時には、引数は1つしか指定できません"
+
+#, python-format
+msgid "comparing with %s\n"
+msgstr "%s と比較中\n"
+
+msgid "--force only allowed with --outgoing"
+msgstr "--outgoing 指定時のみ --force を指定可能です"
+
+msgid "no arguments allowed with --continue"
+msgstr "--continue 指定時は引数を指定できません"
+
+msgid "no arguments allowed with --abort"
+msgstr "--abort 指定時は引数を指定できません"
+
+msgid "history edit already in progress, try --continue or --abort"
+msgstr "履歴改変は継続中です。 --continue または --abort を指定してください"
+
+msgid "histedit requires exactly one parent revision"
+msgstr "履歴改変には単一の親リビジョンを指定してください"
+
+msgid "histedit: Should update metadata for the following changes:\n"
+msgstr "histedit: 以下のリビジョンのためにメタデータの更新が必要です:\n"
+
+#, python-format
+msgid "histedit:  %s to %s\n"
+msgstr "histedit:  %s から %s へ\n"
+
+#, python-format
+msgid "histedit:     moving bookmarks %s\n"
+msgstr "histedit:     ブックマーク %s の移動中\n"
+
+msgid "must specify a rule for each changeset once"
+msgstr "1リビジョン毎に1つのルール指定が必要です"
+
+#, python-format
+msgid "malformed line \"%s\""
+msgstr "不正な行 \"%s\""
+
+msgid "may not use changesets other than the ones listed"
+msgstr "対象範囲以外のリビジョンは指定できません"
+
+#, python-format
+msgid "unknown changeset %s listed"
+msgstr "未知のリビジョン %s が指定されました"
+
+#, python-format
+msgid "unknown action \"%s\""
+msgstr "未知の操作 \"%s\" が指定されました"
+
 msgid "accelerate status report using Linux's inotify service"
 msgstr "Linux の inoitfy サービスによる状態報告の高速化"
 
@@ -4546,6 +5010,14 @@
 msgid "largefile %s missing from store (needs to be uploaded)"
 msgstr "大容量ファイル %s が不在です (連携先へ転送できません)"
 
+#, python-format
+msgid "%d additional largefiles cached\n"
+msgstr "大容量ファイル %d 個を追加取得\n"
+
+#, python-format
+msgid "%d largefiles failed to download\n"
+msgstr "大容量ファイル %d 個の取得に失敗\n"
+
 msgid "getting changed largefiles\n"
 msgstr "更新された大容量ファイルの取得中\n"
 
@@ -4578,14 +5050,14 @@
 msgstr "未知の OS です: %s\n"
 
 #, python-format
-msgid "Found %s in store\n"
-msgstr "%s が見つかりました\n"
-
-#, python-format
-msgid "Found %s in system cache\n"
-msgstr "システムキャッシュで %s が見つかりました\n"
-
-msgid "Can't get file locally"
+msgid "found %s in store\n"
+msgstr "%s はリポジトリに取得済み\n"
+
+#, python-format
+msgid "found %s in system cache\n"
+msgstr "%s はシステムキャッシュに取得済み\n"
+
+msgid "can't get file locally"
 msgstr "ファイルが手元にありません"
 
 #, python-format
@@ -4686,12 +5158,12 @@
 msgid "&Other"
 msgstr "&Other"
 
+msgid "no files to copy"
+msgstr "コピーするファイルがありません"
+
 msgid "destination largefile already exists"
 msgstr "大容量ファイルの複製先は既に存在します"
 
-msgid "no files to copy"
-msgstr "コピーするファイルがありません"
-
 msgid "caching new largefiles\n"
 msgstr "更新された大容量ファイルのキャッシュ中\n"
 
@@ -4700,6 +5172,10 @@
 msgstr "大容量ファイル %d 個をキャッシュ\n"
 
 #, python-format
+msgid "--all-largefiles is incompatible with non-local destination %s"
+msgstr "非ローカルなリポジトリ %s では --all-largefiles を指定できません"
+
+#, python-format
 msgid "unknown archive type '%s'"
 msgstr "未知のアーカイブ種別 '%s'"
 
@@ -4814,6 +5290,12 @@
 msgid "display outgoing largefiles"
 msgstr "転送対象大容量ファイルを表示"
 
+msgid "download all pulled versions of largefiles"
+msgstr "取り込みリビジョンにおいて、 大容量ファイルを全て取得"
+
+msgid "download all versions of all largefiles"
+msgstr "全リビジョンにおいて、 大容量ファイルを全て取得"
+
 msgid "manage a stack of patches"
 msgstr "パッチ併用の管理"
 
@@ -4905,11 +5387,35 @@
 
 msgid ""
 "You will by default be managing a patch queue named \"patches\". You can\n"
-"create other, independent patch queues with the :hg:`qqueue` command.\n"
-msgstr ""
-"特に指定が無い場合、 パッチは \"patches\" という名前のキューで管理\n"
-"されます。  :hg:`qqueue` を使うことで、 相互に独立した別の管理キューを\n"
-"作成することができます。\n"
+"create other, independent patch queues with the :hg:`qqueue` command."
+msgstr ""
+"通常は \"patches\" という名前のキュー配下で、パッチが管理されます。\n"
+":hg:`qqueue` を使うことで、 独立した個別の管理キューを作成可能です。"
+
+msgid ""
+"If the working directory contains uncommitted files, qpush, qpop and\n"
+"qgoto abort immediately. If -f/--force is used, the changes are\n"
+"discarded. Setting::"
+msgstr ""
+"作業領域中に、 未コミット変更がある場合、 qpush, qpop や qgoto の実行は、\n"
+"即座に中断されます。 -f/--force 指定時は、 変更内容が破棄されます。\n"
+"これらのコマンドの挙動は、 以下の設定により::"
+
+msgid ""
+"  [mq]\n"
+"  keepchanges = True"
+msgstr ""
+"  [mq]\n"
+"  keepchanges = True"
+
+msgid ""
+"make them behave as if --keep-changes were passed, and non-conflicting\n"
+"local changes will be tolerated and preserved. If incompatible options\n"
+"such as -f/--force or --exact are passed, this setting is ignored.\n"
+msgstr ""
+"--keep-changes 指定時と同じになるため、 作業領域中の変更は、\n"
+"衝突が無い限り、 そのまま維持されます。 -f/--force や --exact のような、\n"
+"併用できないオプションが指定された場合、 この設定は無視されます。\n"
 
 msgid "print first line of patch header"
 msgstr "パッチヘッダの最初の行を表示"
@@ -5011,6 +5517,9 @@
 msgid "unable to read %s\n"
 msgstr "ファイル %s が読み込めません\n"
 
+msgid "local changes found, refresh first"
+msgstr "作業領域の内容は変更されていますので qrefresh を実施してください"
+
 #, python-format
 msgid "patch %s is empty\n"
 msgstr "パッチ %s は空です\n"
@@ -5068,9 +5577,6 @@
 msgid "uncommitted changes in subrepository %s"
 msgstr "副リポジトリ %s の変更が未コミットです"
 
-msgid "local changes found, refresh first"
-msgstr "作業領域の内容は変更されていますので qrefresh を実施してください"
-
 msgid "local changes found"
 msgstr "作業領域の内容は変更されています"
 
@@ -5094,6 +5600,9 @@
 msgid "patch \"%s\" already exists"
 msgstr "パッチ \"%s\" は既に存在します"
 
+msgid "cannot use both --force and --keep-changes"
+msgstr "--force と --keep-changes は併用できません"
+
 msgid "cannot manage merge changesets"
 msgstr "マージリビジョンは MQ の管理対象にできません"
 
@@ -5144,6 +5653,9 @@
 msgid "patch series already fully applied\n"
 msgstr "全てのパッチが適用中です\n"
 
+msgid "cannot use --exact and --keep-changes together"
+msgstr "--exact and --keep-changes は併用できません"
+
 msgid "cannot use --exact and --move together"
 msgstr "--exact と --move は併用できません"
 
@@ -5223,7 +5735,7 @@
 msgid "patch %s is not in series file"
 msgstr "パッチ %s は未知のパッチです"
 
-msgid "No saved patch data found\n"
+msgid "no saved patch data found\n"
 msgstr "保存されたパッチ状態データが見つかりません\n"
 
 #, python-format
@@ -5244,8 +5756,8 @@
 msgid "updating queue directory\n"
 msgstr "パッチ管理領域の更新中\n"
 
-msgid "Unable to load queue repository\n"
-msgstr "パッチ管理領域を読み込めません\n"
+msgid "unable to load queue repository\n"
+msgstr "パッチ管理領域のリポジトリ情報を読み込めません\n"
 
 msgid "save: no patches applied, exiting\n"
 msgstr "save: 適用中のパッチが無いため終了します\n"
@@ -5266,6 +5778,9 @@
 msgid "option \"-r\" not valid when importing files"
 msgstr "ファイル取り込みの際の \"-r\" 指定は不適切です"
 
+msgid "no files or revisions specified"
+msgstr "ファイル/リビジョンの指定がありません"
+
 msgid "option \"-n\" not valid when importing multiple patches"
 msgstr "複数パッチ取り込みの際の \"-n\" 指定は不適切です"
 
@@ -5396,8 +5911,8 @@
 msgid "qpush after importing"
 msgstr "パッチ取り込み後にパッチ適用(qpush)を実施"
 
-msgid "hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... FILE..."
-msgstr "hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... FILE..."
+msgid "hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... [FILE]..."
+msgstr "hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... [FILE]..."
 
 msgid "import a patch or existing changeset"
 msgstr "パッチないし既存リビジョンの取り込み"
@@ -5633,12 +6148,12 @@
 "    only changes to matching files to the new patch, leaving the rest\n"
 "    as uncommitted modifications."
 msgstr ""
-"    本コマンドは、 (パッチ適用中の場合は)適用中パッチの最上位の位置に\n"
-"    新規パッチを作成します。 新規のパッチは、 作業領域中の全ての変更を\n"
-"    保持します。 -I/--include、 -X/--exclude と、 パッチ名に続けて指定\n"
-"    するファイル名の組み合わせによって、 新規パッチに変更が取り込まれる\n"
-"    ファイルを限定することができます。 取り込み対象外のファイルにおける\n"
-"    変更は未コミットなまま残ります。"
+"    本コマンドは、 (パッチ適用中の場合は) 適用中パッチの最上位の位置に、\n"
+"    新規パッチを作成します。 新規パッチには、 作業領域中の全ての変更が、\n"
+"    格納されます。 -I/--include、 -X/--exclude や、 パッチ名に続く、\n"
+"    ファイル名指定の組み合わせにより、 変更が取り込まれるファイルを、\n"
+"    限定することができます。 取り込み対象外のファイルにおける変更は、\n"
+"    未コミットなまま、 作業領域に残ります。"
 
 msgid ""
 "    -u/--user and -d/--date can be used to set the (given) user and\n"
@@ -5654,9 +6169,9 @@
 "    well as the commit message. If none is specified, the header is\n"
 "    empty and the commit message is '[mq]: PATCH'."
 msgstr ""
-"    -e/--edit, -m/--message ないし -l/--logfile は、 コミットメッセージと\n"
-"    同様に、 パッチのヘッダに記録する情報を指定します。 指定が無い場合は、\n"
-"    ヘッダは空のまま、 コミットメッセージが '[mq]: パッチ名' となります。"
+"    -e/--edit, -m/--message, -l/--logfile は、 コミットログと同様に、\n"
+"    パッチのヘッダに記録する情報を指定します。 指定が無い場合は、\n"
+"    ヘッダは空のまま、 コミットログが '[mq]: パッチ名' となります。"
 
 msgid ""
 "    Use the -g/--git option to keep the patch in the git extended diff\n"
@@ -5768,13 +6283,13 @@
 msgstr "パッチヘッダ内容の編集"
 
 msgid "keep folded patch files"
-msgstr "結合対象パッチのパッチファイル削除を抑止"
+msgstr "併合対象パッチのパッチファイル削除を抑止"
 
 msgid "hg qfold [-e] [-k] [-m TEXT] [-l FILE] PATCH..."
 msgstr "hg qfold [-e] [-k] [-m TEXT] [-l FILE] PATCH..."
 
 msgid "fold the named patches into the current patch"
-msgstr "指定パッチの現行パッチへの統合"
+msgstr "指定パッチの現行パッチへの併合"
 
 msgid ""
 "    Patches must not yet be applied. Each patch will be successively\n"
@@ -5784,36 +6299,37 @@
 "    deleted. With -k/--keep, the folded patch files will not be\n"
 "    removed afterwards."
 msgstr ""
-"    対象パッチは未適用でなければなりません。\n"
-"    それぞれのパッチは、 指定された順序で、\n"
-"    連続的に現行パッチに適用されます。\n"
-"    全ての適用が成功した場合は、\n"
-"    現行パッチが全てのパッチの累積として更新され、\n"
-"    統合されたパッチは削除されます。\n"
-"    -k/--keep が指定された場合、\n"
-"    統合されたパッチのファイルは、 統合実施後も残ります。"
+"    併合対象パッチは、 未適用でなければなりません。 個々のパッチは、\n"
+"    指定された順序で、 現行パッチの上に、 連続して適用されます。\n"
+"    併合対象パッチの適用が、 全て成功した場合、 現行のパッチは、\n"
+"    対象パッチ全ての累積として更新され、 併合パッチは削除されます。\n"
+"    -k/--keep が指定された場合、 併合対象パッチのファイルは、\n"
+"    併合後も保持されます。"
 
 msgid ""
 "    The header for each folded patch will be concatenated with the\n"
 "    current patch header, separated by a line of ``* * *``."
 msgstr ""
-"    統合対象パッチのヘッダ情報は、 ``* * *`` 行を区切り記号として、\n"
+"    併合対象パッチのヘッダ情報は、 ``* * *`` 行を区切り記号として、\n"
 "    現行のパッチに追加されます。"
 
 msgid "qfold requires at least one patch name"
-msgstr "統合実施には最低1つのパッチ名指定が必要です"
-
-#, python-format
-msgid "Skipping already folded patch %s\n"
-msgstr "既に統合済みのパッチ %s は無視します\n"
+msgstr "併合実施には最低1つのパッチ名指定が必要です"
+
+#, python-format
+msgid "skipping already folded patch %s\n"
+msgstr "既に併合済みのパッチ %s は無視します\n"
 
 #, python-format
 msgid "qfold cannot fold already applied patch %s"
-msgstr "パッチ %s は適用中なので統合できません"
+msgstr "パッチ %s は適用中なので併合できません"
 
 #, python-format
 msgid "error folding patch %s"
-msgstr "パッチ %s の統合に失敗"
+msgstr "パッチ %s の併合に失敗"
+
+msgid "tolerate non-conflicting local changes"
+msgstr "衝突しない作業領域中の変更を許容"
 
 msgid "overwrite any local changes"
 msgstr "作業領域中の変更を上書き"
@@ -5917,11 +6433,16 @@
 msgstr "次のパッチの適用"
 
 msgid ""
-"    When -f/--force is applied, all local changes in patched files\n"
-"    will be lost."
-msgstr ""
-"    -f/--force が指定された場合、 パッチ適用対象ファイルの、\n"
-"    作業領域における変更内容は破棄されます。"
+"    By default, abort if the working directory contains uncommitted\n"
+"    changes. With --keep-changes, abort only if the uncommitted files\n"
+"    overlap with patched files. With -f/--force, backup and patch over\n"
+"    uncommitted changes."
+msgstr ""
+"    作業領域に未コミット変更がある場合、 通常はコマンドが中断されます。\n"
+"    --keep-changes が指定された場合、 未コミット変更とパッチとの間で、\n"
+"    重複がある場合のみ、 中断されます。 -f/--force が指定された場合、\n"
+"    変更内容をバックアップした上で、 未コミット変更の上から、\n"
+"    パッチが適用されます。"
 
 msgid "no saved queues found, please use -n\n"
 msgstr "保存されたパッチ管理領域がありません。 -n を使用してください\n"
@@ -5946,13 +6467,24 @@
 msgstr "現行パッチの適用解除"
 
 msgid ""
-"    By default, pops off the top of the patch stack. If given a patch\n"
-"    name, keeps popping off patches until the named patch is at the\n"
-"    top of the stack."
-msgstr ""
-"    特に指定が無い場合、 適用中の最上位パッチを解除します。 パッチ名が指定\n"
-"    された場合、 当該パッチが適用中の最上位パッチになるまで、 他のパッチの\n"
-"    適用解除を行います。"
+"    Without argument, pops off the top of the patch stack. If given a\n"
+"    patch name, keeps popping off patches until the named patch is at\n"
+"    the top of the stack."
+msgstr ""
+"    引数指定が無い場合、 適用中パッチ群のうち、 最上位パッチを解除します。\n"
+"    パッチ名が指定された場合、 当該パッチが適用最上位パッチになるまで、\n"
+"    他のパッチの適用解除を行います。"
+
+msgid ""
+"    By default, abort if the working directory contains uncommitted\n"
+"    changes. With --keep-changes, abort only if the uncommitted files\n"
+"    overlap with patched files. With -f/--force, backup and discard\n"
+"    changes made to such files."
+msgstr ""
+"    作業領域に未コミット変更がある場合、 通常はコマンドが中断されます。\n"
+"    --keep-changes が指定された場合、 未コミット変更とパッチとの間で、\n"
+"    重複がある場合のみ、 中断されます。 -f/--force が指定された場合、\n"
+"    変更内容をバックアップした上で、 未コミット変更の内容を破棄します。"
 
 #, python-format
 msgid "using patch queue: %s\n"
@@ -6042,8 +6574,11 @@
 msgid "do not modify working copy during strip"
 msgstr "処理中の作業領域更新を抑止"
 
-msgid "hg strip [-k] [-f] [-n] REV..."
-msgstr "hg strip [-k] [-f] [-n] REV..."
+msgid "remove revs only reachable from given bookmark"
+msgstr "指定ブックマークから、 到達可能なリビジョンのみを除外"
+
+msgid "hg strip [-k] [-f] [-n] [-B bookmark] [-r] REV..."
+msgstr "hg strip [-k] [-f] [-n] [-B bookmark] [-r] REV..."
 
 msgid "strip changesets and all their descendants from the repository"
 msgstr "リポジトリからの、 特定リビジョンおよびその子孫の除外"
@@ -6091,6 +6626,24 @@
 "    除外処理完了時点で bundle ファイルを破棄する場合は\n"
 "    --no-backup を指定してください。"
 
+msgid ""
+"    Strip is not a history-rewriting operation and can be used on\n"
+"    changesets in the public phase. But if the stripped changesets have\n"
+"    been pushed to a remote repository you will likely pull them again."
+msgstr ""
+"    本コマンドでの操作は、 履歴の書き換えではないので、 対象リビジョンが\n"
+"    public フェーズでも、 実行可能です。 但し、 除外対象リビジョンが、\n"
+"    他リポジトリに反映済みである場合、 そのリビジョンは pull 操作により、\n"
+"    再び手元のリポジトリに出現することでしょう。"
+
+#, python-format
+msgid "bookmark '%s' not found"
+msgstr "ブックマーク '%s' がありません"
+
+#, python-format
+msgid "bookmark '%s' deleted\n"
+msgstr "ブックマーク '%s' が破棄されました\n"
+
 msgid "empty revision set"
 msgstr "指定に該当するリビジョンはありません"
 
@@ -6167,12 +6720,12 @@
 "    --pop) to push back to the current patch afterwards, but skip\n"
 "    guarded patches."
 msgstr ""
-"    本コマンドの実行により、 適用中のパッチの適用可否も変化し得ます。 特に\n"
-"    指定が無い場合、 ガードが有効なパッチの適用解除は行われません。\n"
-"    --pop が指定された場合、 適用可否が変わる最初のパッチまでのパッチが\n"
+"    本コマンドの実行により、 適用中のパッチの適用可否も変化し得ます。 \n"
+"    特に指定が無い場合、 ガードが有効なパッチの適用解除は行われません。\n"
+"    --pop が指定された場合、 適用可否が変わる最初のパッチまでのパッチが、\n"
 "    適用解除されます。 --reapply が指定された場合、 --pop 相当の処理後に、\n"
-"    ガードが有効なパッチの適用を見送りつつ、 現行パッチに至るまでパッチを\n"
-"    再適用します。"
+"    ガードが有効なパッチの適用を見送りつつ、 現行パッチに至るまで、\n"
+"    パッチを再適用します。"
 
 msgid ""
 "    Use -s/--series to print a list of all guards in the series file\n"
@@ -6350,15 +6903,12 @@
 msgid "cannot commit over an applied mq patch"
 msgstr "MQ パッチ適用中はコミットを実施できません"
 
-msgid "source has mq patches applied"
-msgstr "元リポジトリでは MQ パッチが適用中です"
-
 #, python-format
 msgid "mq status file refers to unknown node %s\n"
 msgstr "MQ の状態管理ファイルが未知のリビジョン %s を参照しています\n"
 
 #, python-format
-msgid "Tag %s overrides mq patch of the same name\n"
+msgid "tag %s overrides mq patch of the same name\n"
 msgstr "タグ %s は MQ パッチの同名タグを上書きします\n"
 
 msgid "cannot import over an applied patch"
@@ -6710,10 +7260,10 @@
 
 msgid ""
 "  [pager]\n"
-"  pager = less -FRSX"
+"  pager = less -FRX"
 msgstr ""
 "  [pager]\n"
-"  pager = less -FRSX"
+"  pager = less -FRX"
 
 msgid ""
 "If no pager is set, the pager extensions uses the environment variable\n"
@@ -6933,10 +7483,10 @@
 msgstr "送信するリビジョン"
 
 msgid "run even when remote repository is unrelated (with -b/--bundle)"
-msgstr "連携先が無関係なリポジトリでも送信(-b/--bundle 指定時)"
+msgstr "連携先が無関係なリポジトリでも送信 (-b/--bundle 指定時)"
 
 msgid "a base changeset to specify instead of a destination (with -b/--bundle)"
-msgstr "連携先指定の代わりとなる基底リビジョン(-b/--bundle 指定時)"
+msgstr "連携先指定の代わりとなる基底リビジョン (-b/--bundle 指定時)"
 
 msgid "send an introduction email for a single patch"
 msgstr "説明文を独立したメールで送信"
@@ -7112,10 +7662,6 @@
 "    を参照してください。 (※ 訳注: :hg:`help config` でも参照可能)\n"
 "    "
 
-#, python-format
-msgid "comparing with %s\n"
-msgstr "%s と比較中\n"
-
 msgid "no changes found\n"
 msgstr "差分はありません\n"
 
@@ -7139,7 +7685,7 @@
 "一連のパッチのための説明文を記述してください。"
 
 #, python-format
-msgid "This patch series consists of %d patches."
+msgid "this patch series consists of %d patches."
 msgstr "一連のパッチは %d 個のパッチから構成されています。"
 
 msgid "no recipient addresses provided"
@@ -7164,10 +7710,10 @@
 msgid "patchbomb canceled"
 msgstr "メールは送信しません"
 
-msgid "Displaying "
+msgid "displaying "
 msgstr "表示中 "
 
-msgid "Sending "
+msgid "sending "
 msgstr "送信中 "
 
 msgid "sending"
@@ -7349,15 +7895,15 @@
 msgstr "警告: %s\n"
 
 #, python-format
-msgid "Removing file %s\n"
-msgstr "ファイル %s を削除しています\n"
-
-#, python-format
-msgid "Removing directory %s\n"
-msgstr "ディレクトリ %s を削除しています\n"
+msgid "removing file %s\n"
+msgstr "ファイル %s の削除中\n"
+
+#, python-format
+msgid "removing directory %s\n"
+msgstr "ディレクトリ %s の削除中\n"
 
 msgid "command to move sets of revisions to a different ancestor"
-msgstr "一連のリビジョンを、履歴ツリー上の異なる位置に移動させるコマンド"
+msgstr "履歴上の異なる位置への一連のリビジョンの移動"
 
 msgid ""
 "This extension lets you rebase changesets in an existing Mercurial\n"
@@ -7391,13 +7937,13 @@
 msgstr "移動後に移動リビジョンを単一化"
 
 msgid "use text as collapse commit message"
-msgstr "指定テキストを要約コミットメッセージとして使用"
+msgstr "指定テキストを要約コミットログとして使用"
 
 msgid "invoke editor on commit messages"
-msgstr "コミットメッセージ入力にエディタを起動"
+msgstr "コミットログ入力にエディタを起動"
 
 msgid "read collapse commit message from file"
-msgstr "要約コミットメッセージをファイルから読み込み"
+msgstr "要約コミットログをファイルから読み込み"
 
 msgid "keep original changesets"
 msgstr "元リビジョンを維持"
@@ -7405,8 +7951,8 @@
 msgid "keep original branch names"
 msgstr "元ブランチ名を維持"
 
-msgid "force detaching of source from its original branch"
-msgstr "移動元を元ブランチから強制的に移動"
+msgid "(DEPRECATED)"
+msgstr "(非推奨)"
 
 msgid "specify merge tool"
 msgstr "マージツールの指定"
@@ -7434,7 +7980,7 @@
 "    development tree."
 msgstr ""
 "    本コマンドは、 反復的なマージを行なうことで、 ある履歴位置 (移動元)\n"
-"    から別な位置 (移動先) へとリビジョン群を移動します。 この機能は、\n"
+"    から別な位置 (移動先) へとリビジョン群を移植します。 この機能は、\n"
 "    手元のリポジトリでの成果を、 開発用の共有リポジトリに反映する際に、\n"
 "    枝分かれの無い状態にしたい場合などで有用です。"
 
@@ -7537,9 +8083,6 @@
 msgid "cannot use collapse with continue or abort"
 msgstr "--collapse と、 --abort や --continue は併用できません"
 
-msgid "cannot use detach with continue or abort"
-msgstr "--detach と、 --abort や --continue は併用できません"
-
 msgid "abort and continue do not allow specifying revisions"
 msgstr "--abort や --continue と、 リビジョン指定は併用できません"
 
@@ -7555,12 +8098,6 @@
 msgid "cannot specify both a revision and a source"
 msgstr "--rev と --soruce は併用できません"
 
-msgid "detach requires a revision to be specified"
-msgstr "--detach にはリビジョン指定が必要です"
-
-msgid "cannot specify a base with detach"
-msgstr "--base と --detach は同時には指定できません"
-
 msgid "can't remove original changesets with unrebased descendants"
 msgstr "移動対象外の子孫を持つため、移動元リビジョンが削除できません"
 
@@ -7652,7 +8189,7 @@
 msgstr "移動用のマージツールの指定"
 
 msgid "commands to interactively select changes for commit/qrefresh"
-msgstr "commit または qrefresh 実行時に対話的な変更選択を行うコマンド"
+msgstr "commit や qrefresh における対話的な変更取り込みの選択"
 
 msgid "ignore white space when comparing lines"
 msgstr "差分判定の際に空白文字を無視"
@@ -7897,9 +8434,6 @@
 msgid "hardlinks are not supported on this system"
 msgstr "このシステム上ではハードリンクが未サポートです"
 
-msgid "must specify local origin repository"
-msgstr "ローカルの元リポジトリ指定が必要です"
-
 #, python-format
 msgid "relinking %s to %s\n"
 msgstr "%s から %s にハードリンク中\n"
@@ -8120,10 +8654,6 @@
 msgid "can only omit patchfile if merging"
 msgstr "マージの場合のみパッチファイルを省略可能"
 
-#, python-format
-msgid "%s: empty changeset"
-msgstr "%s: 空のリビジョン"
-
 msgid "fix up the merge and run hg transplant --continue"
 msgstr "衝突解消後に \"hg transplant --continue\" してください"
 
@@ -8246,13 +8776,13 @@
 "    移植候補リビジョンに関して、 移植要否の問い合わせが発生します。"
 
 msgid ""
-"    :hg:`transplant --branch REVISION --all` will transplant the\n"
+"    :hg:`transplant --branch REV --all` will transplant the\n"
 "    selected branch (up to the named revision) onto your current\n"
 "    working directory."
 msgstr ""
-"    :hg:`transplant --branch REVISION --all` 実行により、\n"
-"    指定された名前付きブランチ中の (REVISION までの) リビジョンが、\n"
-"    作業領域の親上に移植されます。"
+"    :hg:`transplant --branch REV --all` 実行により、\n"
+"    指定された名前付きブランチ (の中の REV までのリビジョン) が、\n"
+"    作業領域の親リビジョンの子として、 移植されます。"
 
 msgid ""
 "    You can optionally mark selected transplanted changesets as merge\n"
@@ -8328,7 +8858,7 @@
 msgstr ":transplanted: 文字列。 (移植先であれば) 移植元リビジョンの ID。"
 
 msgid "allow the use of MBCS paths with problematic encodings"
-msgstr "問題のある文字コードでの多バイト符号化文字を使用したパス名の有効化"
+msgstr "問題ある文字コードをパス名に使用する場合の対処"
 
 msgid ""
 "Some MBCS encodings are not good for some path operations (i.e.\n"
@@ -8492,8 +9022,8 @@
 "見直すことをお勧めします。\n"
 
 #, python-format
-msgid "Attempt to commit or push text file(s) using %s line endings\n"
-msgstr "テキストファイルの行末形式 %s による commit ないし履歴反映を実施\n"
+msgid "attempt to commit or push text file(s) using %s line endings\n"
+msgstr "行末形式 %s によるテキストファイルの commit ないし履歴反映を実施\n"
 
 #, python-format
 msgid "in %s: %s\n"
@@ -8603,6 +9133,10 @@
 msgid "divergent bookmark %s stored as %s\n"
 msgstr "分岐するブックマーク %s を %s として保存\n"
 
+#, python-format
+msgid "adding remote bookmark %s\n"
+msgstr "連携先にブックマーク %s を追加中\n"
+
 msgid "searching for changed bookmarks\n"
 msgstr "変更されたブックマークを探索中\n"
 
@@ -8655,7 +9189,7 @@
 
 #, python-format
 msgid "can't read commit message '%s': %s"
-msgstr "コミットメッセージ '%s' を読み込むことができません: %s"
+msgstr "コミットログ '%s' を読み込むことができません: %s"
 
 msgid "limit must be a positive integer"
 msgstr "制限には正数を指定してください"
@@ -8815,13 +9349,28 @@
 msgstr "%s: '%s' というキーはありません"
 
 #, python-format
-msgid "Found revision %s from %s\n"
+msgid "found revision %s from %s\n"
 msgstr "リビジョン %s を %s で見つけました\n"
 
 msgid "revision matching date not found"
 msgstr "リビジョンに一致する日付がありません"
 
 #, python-format
+msgid "cannot follow file not in parent revision: \"%s\""
+msgstr "親リビジョンに存在しないファイルは追跡できません: \"%s\""
+
+#, python-format
+msgid "cannot follow nonexistent file: \"%s\""
+msgstr "存在しないファイルは追跡できません: \"%s\""
+
+msgid "can only follow copies/renames for explicit filenames"
+msgstr "ファイル名が明示された場合のみ複製/改名を追跡可能です"
+
+#, python-format
+msgid "-G/--graph option is incompatible with --%s"
+msgstr "-G/--graph と --%s は併用できません"
+
+#, python-format
 msgid "adding %s\n"
 msgstr "%s を追加登録中\n"
 
@@ -8846,8 +9395,7 @@
 msgstr "改変対象リビジョン %s を除外中\n"
 
 msgid "HG: Enter commit message.  Lines beginning with 'HG:' are removed."
-msgstr ""
-"HG: コミットメッセージを入力してください。  HG: で始まる行は無視されます。"
+msgstr "HG: コミットログを入力してください。'HG:' で始まる行は無視されます。"
 
 msgid "HG: Leave message empty to abort commit."
 msgstr "HG: メッセージが空のままならコミットを中断します。"
@@ -8883,7 +9431,7 @@
 msgstr "HG: ファイル変更なし"
 
 msgid "empty commit message"
-msgstr "コミットメッセージがありません"
+msgstr "コミットログがありません"
 
 #, python-format
 msgid "forgetting %s\n"
@@ -8984,10 +9532,10 @@
 msgstr "パターンに合致したファイルを処理対象から除外"
 
 msgid "use text as commit message"
-msgstr "指定テキストをコミットメッセージとして使用"
+msgstr "指定テキストをコミットログとして使用"
 
 msgid "read commit message from file"
-msgstr "コミットメッセージをファイルから読み込み"
+msgstr "コミットログをファイルから読み込み"
 
 msgid "record the specified date as commit date"
 msgstr "指定日時をコミット日時として記録"
@@ -9013,6 +9561,9 @@
 msgid "output diffstat-style summary of changes"
 msgstr "diffstat 形式の変更概要を生成"
 
+msgid "show the revision DAG"
+msgstr "履歴ツリーの表示"
+
 msgid "treat all files as text"
 msgstr "全ファイルをテキストファイルと仮定"
 
@@ -9115,24 +9666,24 @@
 "    次回コミット時点です。"
 
 msgid ""
-"    Use the -s/--similarity option to detect renamed files. With a\n"
-"    parameter greater than 0, this compares every removed file with\n"
-"    every added file and records those similar enough as renames. This\n"
+"    Use the -s/--similarity option to detect renamed files. This\n"
 "    option takes a percentage between 0 (disabled) and 100 (files must\n"
-"    be identical) as its parameter. Detecting renamed files this way\n"
+"    be identical) as its parameter. With a parameter greater than 0,\n"
+"    this compares every removed file with every added file and records\n"
+"    those similar enough as renames. Detecting renamed files this way\n"
 "    can be expensive. After using this option, :hg:`status -C` can be\n"
-"    used to check which files were identified as moved or renamed.\n"
-"    If this option is not specified, only renames of identical files\n"
-"    are detected."
-msgstr ""
-"    ファイルの改名を検知するには -s/--similarity を使用します。 指定値が\n"
-"    0 より大きい場合は、 全ての追加・除外ファイルが、 確認対象となって、\n"
-"    改名の有無が判定されます。 このオプションには、 0(改名比較無し)\n"
-"    から 100 (完全一致で判定)までの範囲でパーセンテージを指定します。\n"
-"    判定処理には、 相応の時間を要する場合があります。 判定結果の確認は、\n"
+"    used to check which files were identified as moved or renamed. If\n"
+"    not specified, -s/--similarity defaults to 100 and only renames of\n"
+"    identical files are detected."
+msgstr ""
+"    ファイルの改名を検知するには -s/--similarity を使用します。 これは、\n"
+"    0 (改名比較無し) から 100 (完全一致で判定) の範囲で、 類似度を指定\n"
+"    するオプションです (パーセンテージ指定)。 0 より大きい指定値の場合、\n"
+"    全ての追加/除外ファイル対象として、 改名の有無が判定されます。 \n"
+"    改名判定には、 相応の時間を要する場合があります。 判定結果の確認は、\n"
 "    本コマンドの実行後に :hg:`status -C` 出力を参照してください。\n"
-"    本オプションが指定されない場合、 内容が完全に一致するファイルのみが、\n"
-"    改名とみなされます。"
+"    -s/--similarity 未指定の場合、 100 が指定されたものとみなされ、\n"
+"    内容が完全に一致するファイルのみが、 改名とみなされます。"
 
 msgid "similarity must be a number"
 msgstr "類似度には数値を指定してください"
@@ -9406,13 +9957,13 @@
 msgstr "対象リビジョンの探索状態を bad 化"
 
 msgid "skip testing changeset"
-msgstr "対象リビジョンの判定作業を省略"
+msgstr "対象リビジョンの検証作業を省略"
 
 msgid "extend the bisect range"
 msgstr "探索範囲の拡張"
 
 msgid "use command to check changeset state"
-msgstr "good/bad 判定用コマンド"
+msgstr "good/bad 検証用コマンド"
 
 msgid "do not update to target"
 msgstr "対象リビジョンによる作業領域内容の更新を抑止"
@@ -9450,16 +10001,19 @@
 
 msgid ""
 "    If you supply a command, it will be used for automatic bisection.\n"
-"    Its exit status will be used to mark revisions as good or bad:\n"
-"    status 0 means good, 125 means to skip the revision, 127\n"
-"    (command not found) will abort the bisection, and any other\n"
-"    non-zero exit status means the revision is bad."
+"    The environment variable HG_NODE will contain the ID of the\n"
+"    changeset being tested. The exit status of the command will be\n"
+"    used to mark revisions as good or bad: status 0 means good, 125\n"
+"    means to skip the revision, 127 (command not found) will abort the\n"
+"    bisection, and any other non-zero exit status means the revision\n"
+"    is bad."
 msgstr ""
 "    コマンドが指定された場合、 自動的なリビジョン検証に使用されます。\n"
-"    コマンドの終了コードはリビジョンに対する bad ないし good のマーク\n"
-"    付けに使用されます。 終了コード 0 は good、 125 はリビジョンのスキップ\n"
-"    127(コマンドが見つからない場合)は分割探索中断、 それ以外の 0 より\n"
-"    大きい終了コードは bad のマーク付けとみなされます。"
+"    コマンド実行時には、 環境変数 HG_NODE に検証対象リビジョンの ID\n"
+"    が格納されます。コマンドの終了コードは、 リビジョンに対する bad\n"
+"    ないし good のマーク付けに使用されます。終了コード 0 は good、 125\n"
+"    はリビジョンのスキップ、 127 (コマンド不在) は探索中断、\n"
+"    その他の非 0 終了コードは bad とみなされます。"
 
 msgid "      Some examples:"
 msgstr "      例:"
@@ -9535,6 +10089,15 @@
 msgid "          hg log -r \"bisect(pruned)\""
 msgstr "          hg log -r \"bisect(pruned)\""
 
+msgid ""
+"      - see the changeset currently being bisected (especially useful\n"
+"        if running with -U/--noupdate)::"
+msgstr ""
+"      - 現在の検証対象リビジョンを表示 (特に -U/--noupdate 併用時に有用)::"
+
+msgid "          hg log -r \"bisect(current)\""
+msgstr "          hg log -r \"bisect(current)\""
+
 msgid "      - see all changesets that took part in the current bisection::"
 msgstr "      - 現在の検索対象になっているリビジョン全てを表示::"
 
@@ -9585,6 +10148,12 @@
 msgid "incompatible arguments"
 msgstr "不正な引数の組み合わせです"
 
+msgid "current bisect revision is unknown - start a new bisect to fix"
+msgstr "現在の検証対象リビジョンが不在です - 探索を最初からやり直してください"
+
+msgid "current bisect revision is a merge"
+msgstr "現在の検証対象リビジョンはマージ実施リビジョンです"
+
 #, python-format
 msgid "failed to execute %s"
 msgstr "%s の実行に失敗"
@@ -9594,7 +10163,7 @@
 msgstr "%s プロセスは中断されました"
 
 #, python-format
-msgid "Changeset %d:%s: %s\n"
+msgid "changeset %d:%s: %s\n"
 msgstr "リビジョン %d:%s: %s\n"
 
 #, python-format
@@ -10180,7 +10749,7 @@
 "    commit fails, you will find a backup of your message in\n"
 "    ``.hg/last-message.txt``."
 msgstr ""
-"    コミットメッセージが指定されない場合、 メッセージ入力用のプログラムが\n"
+"    コミットログが指定されない場合、 メッセージ入力用のプログラムが、\n"
 "    設定に従って起動されます。 コミット処理が失敗した場合でも、\n"
 "    入力したメッセージは ``.hg/last-message.txt`` に保存されます。"
 
@@ -10575,14 +11144,14 @@
 msgstr "Mercurial インストールの検証"
 
 #, python-format
-msgid "Checking encoding (%s)...\n"
-msgstr "文字コード %s の検証中...\n"
+msgid "checking encoding (%s)...\n"
+msgstr "文字コードの検証中 (%s)...\n"
 
 msgid " (check that your locale is properly set)\n"
 msgstr " (ロケール設定の妥当性を確認してください)\n"
 
 #, python-format
-msgid "Checking installed modules (%s)...\n"
+msgid "checking installed modules (%s)...\n"
 msgstr "インストール済みモジュールの確認中(%s)...\n"
 
 msgid " One or more extensions could not be found"
@@ -10592,14 +11161,14 @@
 msgstr " (エクステンションのコンパイル状況を確認してください)\n"
 
 #, python-format
-msgid "Checking templates (%s)...\n"
-msgstr "テンプレート (%s) の検証中...\n"
+msgid "checking templates (%s)...\n"
+msgstr "テンプレートの確認中 (%s)...\n"
 
 msgid " (templates seem to have been installed incorrectly)\n"
 msgstr " (テンプレートのインストールが不適切なようです)\n"
 
-msgid "Checking commit editor...\n"
-msgstr "メッセージ入力用エディタの検証中...\n"
+msgid "checking commit editor...\n"
+msgstr "メッセージ入力用エディタの確認中...\n"
 
 msgid " No commit editor set and can't find vi in PATH\n"
 msgstr " エディタが起動できません(vi にも PATH が通っていません)\n"
@@ -10611,14 +11180,14 @@
 msgid " Can't find editor '%s' in PATH\n"
 msgstr " エディタ '%s' に PATH が通っていません\n"
 
-msgid "Checking username...\n"
-msgstr "ユーザ名の検証中...\n"
+msgid "checking username...\n"
+msgstr "ユーザ名の確認中...\n"
 
 msgid " (specify a username in your configuration file)\n"
 msgstr " (設定ファイルでユーザ名を設定してください)\n"
 
-msgid "No problems detected\n"
-msgstr "障害は検出されませんでした\n"
+msgid "no problems detected\n"
+msgstr "問題は検出されませんでした\n"
 
 #, python-format
 msgid "%s problems detected, please check your install!\n"
@@ -10631,15 +11200,20 @@
 msgstr "対象リポジトリにおける ID の既知性検証"
 
 msgid ""
-"    Every ID must be a full-length hex node id string. Returns a list of 0s "
-"and 1s\n"
-"    indicating unknown/known.\n"
+"    Every ID must be a full-length hex node id string. Returns a list of 0s\n"
+"    and 1s indicating unknown/known.\n"
 "    "
 msgstr ""
 "    ID の指定には、 完全長 (40桁) の16進数文字列を使用してください。\n"
 "    各 ID 毎の既知性を、 0 と 1 で表現したリストが出力されます。\n"
 "    "
 
+msgid "[OBSOLETED [REPLACEMENT] [REPL... ]"
+msgstr "[OBSOLETED [REPLACEMENT] [REPL... ]"
+
+msgid "create arbitrary obsolete marker"
+msgstr "任意の『廃止』状態の設定"
+
 msgid "REPO NAMESPACE [KEY OLD NEW]"
 msgstr "REPO NAMESPACE [KEY OLD NEW]"
 
@@ -10850,8 +11424,8 @@
 msgid "revisions to export"
 msgstr "対象リビジョン"
 
-msgid "[OPTION]... [-o OUTFILESPEC] REV..."
-msgstr "[OPTION]... [-o OUTFILESPEC] REV..."
+msgid "[OPTION]... [-o OUTFILESPEC] [-r] REV..."
+msgstr "[OPTION]... [-o OUTFILESPEC] [-r] REV..."
 
 msgid "dump the header and diffs for one or more changesets"
 msgstr "1つ以上のリビジョンに対するヘッダおよび変更内容の出力"
@@ -10997,17 +11571,23 @@
 msgid "          hg forget \"set:hgignore()\""
 msgstr "          hg forget \"set:hgignore()\""
 
+msgid "revisions to graft"
+msgstr "移植対象リビジョン"
+
 msgid "resume interrupted graft"
 msgstr "中断された移植を再開"
 
+msgid "append graft info to log message"
+msgstr "コミットログへの移植情報の付与"
+
 msgid "record the current date as commit date"
 msgstr "現時刻をコミット日時として記録"
 
 msgid "record the current user as committer"
 msgstr "現ユーザをコミットユーザとして記録"
 
-msgid "[OPTION]... REVISION..."
-msgstr "[OPTION]... REVISION..."
+msgid "[OPTION]... [-r] REV..."
+msgstr "[OPTION]... [-r] REV..."
 
 msgid "copy changes from other branches onto the current branch"
 msgstr "別ブランチ上から現行ブランチへの指定リビジョンの複製"
@@ -11032,6 +11612,9 @@
 "    現行リビジョンの祖先、 既に移植 (graft) 済みのリビジョン、\n"
 "    マージ実施リビジョンは、 複製対象から除外されます。"
 
+msgid "      (grafted from CHANGESETHASH)"
+msgstr "      (grafted from 移植元リビジョンのハッシュ値)"
+
 msgid ""
 "    If a graft merge results in conflicts, the graft process is\n"
 "    interrupted so that the current merge can be manually resolved.\n"
@@ -11122,6 +11705,10 @@
 msgid "use hg resolve and hg graft --continue"
 msgstr "hg resolve と hg graft --continue を使用してください"
 
+#, python-format
+msgid "graft for revision %s is empty\n"
+msgstr "リビジョン %s の移植は空です\n"
+
 msgid "end fields with NUL"
 msgstr "各フィールドの区切りにNUL文字(0x00)を使用"
 
@@ -11276,6 +11863,9 @@
 msgid "show only help for commands"
 msgstr "コマンドに関するヘルプのみを表示"
 
+msgid "show topics matching keyword"
+msgstr "キーワードに合致するトピック一覧を表示"
+
 msgid "[-ec] [TOPIC]"
 msgstr "[-ec] [TOPIC]"
 
@@ -11299,41 +11889,6 @@
 "    成功時のコマンド終了値は 0 です。\n"
 "    "
 
-msgid "VALUE"
-msgstr "値"
-
-msgid "DEPRECATED"
-msgstr "非推奨"
-
-msgid ""
-"\n"
-"[+] marked option can be specified multiple times\n"
-msgstr ""
-"\n"
-"[+] 印付きのオプションは複数回指定可能です\n"
-
-msgid "global options:"
-msgstr "グローバルオプション:"
-
-msgid "use \"hg help\" for the full list of commands"
-msgstr "全コマンドの一覧は \"hg help\" で表示されます"
-
-msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
-msgstr ""
-"全コマンドの一覧は \"hg help\" で、 コマンド詳細は \"hg -v\" で表示されます"
-
-#, python-format
-msgid "use \"hg help %s\" to show the full help text"
-msgstr "\"hg help %s\" で詳細なヘルプが表示されます"
-
-#, python-format
-msgid "use \"hg -v help%s\" to show builtin aliases and global options"
-msgstr "組み込み別名およびグローバルオプションの表示は \"hg -v help%s\""
-
-#, python-format
-msgid "use \"hg -v help %s\" to show more info"
-msgstr "より詳細な情報は \"hg -v help %s\" で表示されます"
-
 #, python-format
 msgid ""
 "\n"
@@ -11368,6 +11923,9 @@
 msgid "options:"
 msgstr "オプション:"
 
+msgid "global options:"
+msgstr "グローバルオプション:"
+
 #, python-format
 msgid ""
 "\n"
@@ -11403,6 +11961,21 @@
 "\n"
 "追加のヘルプトピック:"
 
+msgid "use \"hg help\" for the full list of commands"
+msgstr "全コマンドの一覧は \"hg help\" で表示されます"
+
+msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
+msgstr ""
+"全コマンドの一覧は \"hg help\" で、 コマンド詳細は \"hg -v\" で表示されます"
+
+#, python-format
+msgid "use \"hg help %s\" to show the full help text"
+msgstr "\"hg help %s\" で詳細なヘルプが表示されます"
+
+#, python-format
+msgid "use \"hg -v help%s\" to show builtin aliases and global options"
+msgstr "組み込み別名およびグローバルオプションの表示は \"hg -v help%s\""
+
 #, python-format
 msgid ""
 "\n"
@@ -11425,6 +11998,12 @@
 msgid "'%s' is provided by the following extension:"
 msgstr "以下のエクステンションにより  '%s' が提供されています:"
 
+msgid "Topics"
+msgstr "トピック"
+
+msgid "Extension Commands"
+msgstr "エクステンション由来のコマンド"
+
 msgid "Mercurial Distributed SCM\n"
 msgstr "Mercurial - 分散構成管理ツール\n"
 
@@ -11833,8 +12412,8 @@
 "    特に指定が無い場合、 本コマンドが出力する情報は -\n"
 "    リビジョン番号、 識別用ハッシュ値、 タグ、 (リビジョン番号の離れた)\n"
 "    親リビジョン、 作成者、 作成日時およびコミットログの1行目 - です。\n"
-"    -v/--verbose が指定された場合、 変更対象ファイル一覧と、 コミット\n"
-"    ログの全文も表示されます。"
+"    -v/--verbose が指定された場合、 変更対象ファイル一覧と、\n"
+"    コミットログの全文も表示されます。"
 
 msgid ""
 "    .. note::\n"
@@ -12047,6 +12626,18 @@
 "    成功時のコマンド終了値は 0、 未解消ファイルがある場合は 1 です。\n"
 "    "
 
+msgid ""
+"multiple matching bookmarks to merge - please merge with an explicit rev or "
+"bookmark"
+msgstr "現ブックマークは複数ヘッドです -マージ対象を明示してください"
+
+msgid "run 'hg heads' to see all heads"
+msgstr "'hg heads' によりヘッドを一覧表示できます"
+
+msgid ""
+"no matching bookmark to merge - please merge with an explicit rev or bookmark"
+msgstr "現ブックマークは単一ヘッドです - マージ対象を明示してください"
+
 #, python-format
 msgid "branch '%s' has %d heads - please merge with an explicit rev"
 msgstr "ブランチ '%s' には %d 個のヘッドあります - 対象を明示してください"
@@ -12054,13 +12645,13 @@
 msgid "run 'hg heads .' to see heads"
 msgstr "'hg heads .' によりヘッドを一覧表示できます"
 
+msgid "heads are bookmarked - please merge with an explicit rev"
+msgstr "ヘッドはブックマークされています - マージ対象を明示してください"
+
 #, python-format
 msgid "branch '%s' has one head - please merge with an explicit rev"
 msgstr "ブランチ '%s' は単一ヘッドです - 対象を明示してください"
 
-msgid "run 'hg heads' to see all heads"
-msgstr "'hg heads' によりヘッドを一覧表示できます"
-
 msgid "nothing to merge"
 msgstr "マージの必要がありません"
 
@@ -12276,7 +12867,7 @@
 msgstr "(作業領域の更新は 'hg update')\n"
 
 msgid "update to new branch head if changesets were pulled"
-msgstr "新規取り込みの際には作業領域を新規のブランチヘッドで更新"
+msgstr "新規取り込みの際は、 新規ブランチヘッドで、 作業領域を更新"
 
 msgid "run even when remote repository is unrelated"
 msgstr "連携先が無関係なリポジトリでも実行"
@@ -12336,11 +12927,6 @@
 msgid "remote bookmark %s not found!"
 msgstr "連携先にはブックマーク %s がありません!"
 
-msgid ""
-"other repository doesn't support revision lookup, so a rev cannot be "
-"specified."
-msgstr "連携先でリビジョンが特定できないため、 リビジョンは指定できません"
-
 #, python-format
 msgid "importing bookmark %s\n"
 msgstr "ブックマーク %s の取り込み中\n"
@@ -12389,8 +12975,7 @@
 "    only create a new branch without forcing other changes."
 msgstr ""
 "    連携先に存在しない名前付きブランチを新規作成する場合は --new-branch\n"
-"    を使用します。 このオプション指定は、 新規ブランチの作成のみを許可\n"
-"    します。"
+"    を使用します。 このオプションは、 新規ブランチの作成のみを許可します。"
 
 msgid ""
 "    Use -f/--force to override the default behavior and push all\n"
@@ -12403,8 +12988,16 @@
 "    If -r/--rev is used, the specified revision and all its ancestors\n"
 "    will be pushed to the remote repository."
 msgstr ""
-"    -r/--rev が指定された場合、 指定されたリビジョンと、 その祖先となる\n"
-"    リビジョンが連携先リポジトリへと反映されます。"
+"    -r/--rev が指定された場合、 指定リビジョンとその祖先のリビジョン群が、\n"
+"    連携先リポジトリへと反映されます。"
+
+msgid ""
+"    If -B/--bookmark is used, the specified bookmarked revision, its\n"
+"    ancestors, and the bookmark will be pushed to the remote\n"
+"    repository."
+msgstr ""
+"    -B/--bookmark が指定された場合、 指定ブックマークのリビジョンと、\n"
+"    その祖先のリビジョン群、 およびブックマークが、 連携先へと反映されます。"
 
 msgid ""
 "    Please see :hg:`help urls` for important details about ``ssh://``\n"
@@ -12703,17 +13296,19 @@
 msgid "restore files to their checkout state"
 msgstr "親リビジョンの状態でファイルを復旧"
 
-msgid ""
-"    .. note::\n"
+msgid "    .. note::"
+msgstr "    .. note::"
+
+msgid ""
 "       To check out earlier revisions, you should use :hg:`update REV`.\n"
-"       To cancel a merge (and lose your changes), use :hg:`update --clean .`."
-msgstr ""
-"    .. note::\n"
-"       作業領域を別リビジョン時点に変更したい場合は、\n"
+"       To cancel an uncommitted merge (and lose your changes), use\n"
+"       :hg:`update --clean .`."
+msgstr ""
+"       作業領域を、 別リビジョン時点の内容で更新する場合は\n"
 "       :hg:`update 対象リビジョン` を実行してください。\n"
-"       マージの実施を取り消す場合は、\n"
+"       マージ実施を途中で取り消す場合は\n"
 "       :hg:`update --clean .` を実行してください\n"
-"       (マージにおける修正内容は破棄されます)"
+"       (マージにおける修正内容は破棄されます)。"
 
 msgid ""
 "    With no revision specified, revert the specified files or directories\n"
@@ -12802,43 +13397,47 @@
 "    any dirstate changes since that time. This command does not alter\n"
 "    the working directory."
 msgstr ""
-"    本コマンドの使用には注意が必要です。 巻き戻しは1段階限りで、 巻き\n"
-"    戻したトランザクションの再実施はできません。 本コマンドは、 直前の\n"
-"    トランザクション実施時点の dirstate を復元し、 その時点以後の変更は\n"
-"    全て失われます。 但し、 作業領域内容は変更されません。"
+"    本コマンドの使用には注意を要します。 巻き戻しは1段階限りで、 \n"
+"    巻き戻し後の再実施はできません。 直前のトランザクション時点の、\n"
+"    作業領域状態が復元され、 その時点以後の変更は全て失われます。\n"
+"    但し、 作業領域の内容は変更されません。"
 
 msgid ""
 "    Transactions are used to encapsulate the effects of all commands\n"
 "    that create new changesets or propagate existing changesets into a\n"
-"    repository. For example, the following commands are transactional,\n"
-"    and their effects can be rolled back:"
-msgstr ""
-"    トランザクションとは、 新規リビジョンの作成、 ないし外部からの既存\n"
-"    リビジョンの取り込みにおけるコマンドの改変操作を一括化するものです。\n"
-"    例えば、 以下のコマンドはいずれもトランザクションを形成するもので、\n"
-"    その効果は本コマンドにより巻き戻し可能です:"
-
-msgid ""
-"    - commit\n"
-"    - import\n"
-"    - pull\n"
-"    - push (with this repository as the destination)\n"
-"    - unbundle"
-msgstr ""
-"    - commit\n"
-"    - import\n"
-"    - pull\n"
-"    - push (現リポジトリが、 反映対象として指定された場合)\n"
-"    - unbundle"
-
-msgid ""
-"    To avoid permanent data loss, rollback will refuse to rollback a\n"
-"    commit transaction if it isn't checked out. Use --force to\n"
-"    override this protection."
-msgstr ""
-"    データが永遠に失われるのを回避するため、 コミットの巻き戻し操作は、\n"
-"    作業領域の親リビジョン以外に対しては、 失敗するようになっています。\n"
-"    この回避挙動は --force 指定により抑止されます。"
+"    repository."
+msgstr ""
+"    トランザクションとは、 コマンド実行による、 新規リビジョンの作成や、\n"
+"    外部からのリビジョンの取り込みといった、 改変操作を一括化するものです。"
+
+msgid ""
+"      For example, the following commands are transactional, and their\n"
+"      effects can be rolled back:"
+msgstr ""
+"      例えば、 以下のコマンドはいずれもトランザクションを形成するため、\n"
+"      本コマンドにより、 その効果を巻き戻し可能です:"
+
+msgid ""
+"      - commit\n"
+"      - import\n"
+"      - pull\n"
+"      - push (with this repository as the destination)\n"
+"      - unbundle"
+msgstr ""
+"      - commit\n"
+"      - import\n"
+"      - pull\n"
+"      - push (現リポジトリが、 反映対象として指定された場合)\n"
+"      - unbundle"
+
+msgid ""
+"      To avoid permanent data loss, rollback will refuse to rollback a\n"
+"      commit transaction if it isn't checked out. Use --force to\n"
+"      override this protection."
+msgstr ""
+"      データが永遠に失われるのを回避するため、 コミットの巻き戻し操作は、\n"
+"      作業領域の親リビジョン以外に対しては、 失敗するようになっています。\n"
+"      この回避挙動は --force 指定により抑止されます。"
 
 msgid ""
 "    This command is not intended for use on public repositories. Once\n"
@@ -12960,9 +13559,6 @@
 msgid "cannot use --stdio with --cmdserver"
 msgstr "--stdio と --cmdserver は併用できません"
 
-msgid "There is no Mercurial repository here (.hg not found)"
-msgstr "Mercurial リポジトリが見つかりません(.hg が不在です)"
-
 #, python-format
 msgid "listening at http://%s%s/%s (bound to %s:%d)\n"
 msgstr "http://%s%s/%s で待ち受け開始(バインド先は %s:%d)\n"
@@ -13273,7 +13869,7 @@
 msgstr "タグの削除"
 
 msgid "use <text> as commit message"
-msgstr "コミットメッセージ"
+msgstr "指定文字列をコミットログとして使用"
 
 msgid "[-f] [-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME..."
 msgstr "[-f] [-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME..."
@@ -13368,6 +13964,9 @@
 msgid "not at a branch head (use -f to force)"
 msgstr "親リビジョンがブランチのヘッドではありません(強制実行は -f 指定)"
 
+msgid "null revision specified"
+msgstr "null リビジョンが指定されました"
+
 msgid "list repository tags"
 msgstr "リポジトリ中のタグ一覧の表示"
 
@@ -13406,7 +14005,7 @@
 "    特別なタグで、 改名や、 他のリビジョンへの付け替えはできません。"
 
 msgid "update to new branch head if changesets were unbundled"
-msgstr "新規取り込みの際には作業領域を新規ブランチヘッドで更新"
+msgstr "新規取り込みの際は、 新規ブランチヘッドで、 作業領域を更新"
 
 msgid "[-u] FILE..."
 msgstr "[-u] FILE..."
@@ -13450,6 +14049,13 @@
 "    (詳細は :hg:`help bookmarks` 参照)"
 
 msgid ""
+"    Update sets the working directory's parent revison to the specified\n"
+"    changeset (see :hg:`help parents`)."
+msgstr ""
+"    作業領域の親リビジョンを、 指定されたリビジョンに更新します\n"
+"    (:hg:`help parents` 参照)。"
+
+msgid ""
 "    If the changeset is not a descendant or ancestor of the working\n"
 "    directory's parent, the update is aborted. With the -c/--check\n"
 "    option, the working directory is checked for uncommitted changes; if\n"
@@ -13462,47 +14068,49 @@
 "    作業領域を指定リビジョンで更新します。"
 
 msgid ""
-"    Update sets the working directory's parent revison to the specified\n"
-"    changeset (see :hg:`help parents`)."
-msgstr ""
-"    作業領域の親リビジョンを、 指定されたリビジョンに更新します\n"
-"    (:hg:`help parents` 参照)。"
-
-msgid ""
-"    The following rules apply when the working directory contains\n"
-"    uncommitted changes:"
-msgstr "    作業領域の変更が未コミットの場合、 以下の規則が適用されます:"
-
-msgid ""
-"    1. If neither -c/--check nor -C/--clean is specified, and if\n"
-"       the requested changeset is an ancestor or descendant of\n"
-"       the working directory's parent, the uncommitted changes\n"
-"       are merged into the requested changeset and the merged\n"
-"       result is left uncommitted. If the requested changeset is\n"
-"       not an ancestor or descendant (that is, it is on another\n"
-"       branch), the update is aborted and the uncommitted changes\n"
-"       are preserved."
-msgstr ""
-"    1. -c/--check と -C/--clean のいずれも指定されず、 指定リビジョンが\n"
-"       作業領域の親リビジョンにとって直系の祖先ないし子孫であった場合、\n"
-"       未コミット変更の内容は指定リビジョンへとマージされ、\n"
-"       マージ結果は未コミットのまま作業領域に残ります。\n"
-"       別の(名前無し)ブランチ上にあるリビジョンなど、 直系の祖先/子孫\n"
-"       以外が指定された場合、 更新は中断され、 未コミット変更は残ります。"
-
-msgid ""
-"    2. With the -c/--check option, the update is aborted and the\n"
-"       uncommitted changes are preserved."
-msgstr ""
-"    2. -c/--check が指定された場合、 更新は中断され、 未コミット変更は\n"
-"       残ります。"
-
-msgid ""
-"    3. With the -C/--clean option, uncommitted changes are discarded and\n"
-"       the working directory is updated to the requested changeset."
-msgstr ""
-"    3. -C/--clean が指定された場合、 未コミット変更は破棄され、\n"
-"       作業領域は指定のリビジョンで更新されます。"
+"      The following rules apply when the working directory contains\n"
+"      uncommitted changes:"
+msgstr "      作業領域の変更が未コミットの場合、 以下の規則が適用されます:"
+
+msgid ""
+"      1. If neither -c/--check nor -C/--clean is specified, and if\n"
+"         the requested changeset is an ancestor or descendant of\n"
+"         the working directory's parent, the uncommitted changes\n"
+"         are merged into the requested changeset and the merged\n"
+"         result is left uncommitted. If the requested changeset is\n"
+"         not an ancestor or descendant (that is, it is on another\n"
+"         branch), the update is aborted and the uncommitted changes\n"
+"         are preserved."
+msgstr ""
+"      1. -c/--check も -C/--clean も指定されず、 指定リビジョンが、\n"
+"         作業領域の親リビジョンの、 直系の祖先ないし子孫であった場合、\n"
+"         未コミット変更の内容は、 指定リビジョンへとマージされ、\n"
+"         マージ結果は、 未コミットのまま作業領域に残ります。\n"
+"         別の (名前無し) ブランチ上にあるリビジョンなど、\n"
+"         直系の祖先/子孫以外が指定された場合、\n"
+"         更新は中断され、 未コミット変更は、 作業領域に残ります。"
+
+msgid ""
+"      2. With the -c/--check option, the update is aborted and the\n"
+"         uncommitted changes are preserved."
+msgstr ""
+"      2. -c/--check が指定された場合、 更新は中断され、\n"
+"         未コミット変更は、 作業領域に残ります。"
+
+msgid ""
+"      3. With the -C/--clean option, uncommitted changes are discarded and\n"
+"         the working directory is updated to the requested changeset."
+msgstr ""
+"      3. -C/--clean が指定された場合、 未コミット変更は破棄され、\n"
+"         作業領域は指定のリビジョンで更新されます。"
+
+msgid ""
+"    To cancel an uncommitted merge (and lose your changes), use\n"
+"    :hg:`update --clean .`."
+msgstr ""
+"    マージ実施を途中で取り消す場合は\n"
+"    :hg:`update --clean .` を実行してください\n"
+"    (マージにおける修正内容は破棄されます)。"
 
 msgid ""
 "    Use null as the changeset to remove the working directory (like\n"
@@ -13806,13 +14414,27 @@
 msgid "abort: out of memory\n"
 msgstr "中断: メモリ不足\n"
 
+msgid "the extension author."
+msgstr "エクステンションの作者"
+
+#, python-format
+msgid ""
+"** Unknown exception encountered with possibly-broken third-party extension "
+"%s\n"
+"** which supports versions %s of Mercurial.\n"
+"** Please disable %s and try your action again.\n"
+"** If that fixes the bug please report it to %s\n"
+msgstr ""
+"** 非同梱のエクステンション %s に起因する例外が発生しました。\n"
+"** 当該エクステンションのサポート対象 Mercurial の版: %s\n"
+"** エクステンション %s を無効化してから、再度同じ処理を実行してください。\n"
+"** 問題が改善された場合、 障害の発生を %s に報告してください。\n"
+
 msgid "** unknown exception encountered, please report by visiting\n"
-msgstr "** 予期せぬ例外が発生しました\n"
-
-msgid "**  http://mercurial.selenic.com/wiki/BugTracker\n"
-msgstr ""
-"**  http://mercurial.selenic.com/wiki/BugTracker まで\n"
-"**  以下の情報を報告してください。\n"
+msgstr "** 予期せぬ例外が発生しました。以下の URL から障害報告してください\n"
+
+msgid "** http://mercurial.selenic.com/wiki/BugTracker\n"
+msgstr "** http://mercurial.selenic.com/wiki/BugTracker\n"
 
 #, python-format
 msgid "** Python %s\n"
@@ -13871,7 +14493,7 @@
 msgstr "-R は単独記述(例: '-dR' は不可)、 --repository の略記は --repo のみ"
 
 #, python-format
-msgid "Time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n"
+msgid "time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n"
 msgstr "所要時間: 実時間 %.3f 秒 (ユーザ %.3f+%.3f システム %.3f+%.3f)\n"
 
 #, python-format
@@ -14320,6 +14942,19 @@
 msgid "disabled extensions:"
 msgstr "無効化されているエクステンション:"
 
+msgid "VALUE"
+msgstr "値"
+
+msgid "DEPRECATED"
+msgstr "非推奨"
+
+msgid ""
+"\n"
+"[+] marked option can be specified multiple times\n"
+msgstr ""
+"\n"
+"[+] 印付きのオプションは複数回指定可能です\n"
+
 msgid "Configuration Files"
 msgstr "設定ファイル"
 
@@ -14339,10 +14974,10 @@
 msgstr "複数リビジョンの指定"
 
 msgid "Specifying Revision Sets"
-msgstr "複数リビジョンの指定"
+msgstr "リビジョン群の指定"
 
 msgid "Specifying File Sets"
-msgstr "複数ファイルの指定"
+msgstr "ファイル群の指定"
 
 msgid "Diff Formats"
 msgstr "差分形式"
@@ -14410,10 +15045,10 @@
 
 msgid ""
 "Files\n"
-"-----"
+"====="
 msgstr ""
 "ファイル\n"
-"--------"
+"========"
 
 msgid ""
 "Mercurial reads configuration data from several files, if they exist.\n"
@@ -14571,10 +15206,10 @@
 
 msgid ""
 "Syntax\n"
-"------"
+"======"
 msgstr ""
 "文法\n"
-"----"
+"===="
 
 msgid ""
 "A configuration file consists of sections, led by a ``[section]`` header\n"
@@ -14583,7 +15218,8 @@
 msgstr ""
 "設定ファイルは、 「セクション」から構成され、\n"
 "各セクションは ``[セクション名]`` 形式のヘッダで始まり、\n"
-"``名前 = 値`` 形式の要素 (``設定キー`` と呼称される事も) が列挙されます::"
+"``名前 = 値`` 形式の要素 (『名前』は『設定キー』とも呼ばれます)\n"
+"が列挙されます::"
 
 msgid ""
 "    [spam]\n"
@@ -14758,10 +15394,10 @@
 
 msgid ""
 "Sections\n"
-"--------"
+"========"
 msgstr ""
 "セクション\n"
-"----------"
+"=========="
 
 msgid ""
 "This section describes the different sections that may appear in a\n"
@@ -14773,10 +15409,10 @@
 
 msgid ""
 "``alias``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "``alias``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid ""
 "Defines command aliases.\n"
@@ -14895,11 +15531,11 @@
 msgid ""
 "\n"
 "``annotate``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 msgstr ""
 "\n"
 "``annotate``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 
 msgid ""
 "Settings used when displaying file annotations. All values are\n"
@@ -14935,11 +15571,11 @@
 msgid ""
 "\n"
 "``auth``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 msgstr ""
 "\n"
 "``auth``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 
 msgid ""
 "Authentication credentials for HTTP authentication. This section\n"
@@ -15075,11 +15711,11 @@
 msgid ""
 "\n"
 "``decode/encode``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"-----------------"
 msgstr ""
 "\n"
 "``decode/encode``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"-----------------"
 
 msgid ""
 "Filters for transforming files on checkout/checkin. This would\n"
@@ -15177,11 +15813,11 @@
 msgid ""
 "\n"
 "``defaults``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 msgstr ""
 "\n"
 "``defaults``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 
 msgid "(defaults are deprecated. Don't use them. Use aliases instead)"
 msgstr "(defaults の使用は非推奨です。 alias を使用してください)"
@@ -15221,11 +15857,11 @@
 msgid ""
 "\n"
 "``diff``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 msgstr ""
 "\n"
 "``diff``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 
 msgid ""
 "Settings used when displaying diffs. Everything except for ``unified``\n"
@@ -15267,10 +15903,10 @@
 
 msgid ""
 "``email``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "``email``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid "Settings for extensions that send email messages."
 msgstr "電子メールを送信するエクステンション向けの設定。"
@@ -15382,11 +16018,11 @@
 msgid ""
 "\n"
 "``extensions``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------"
 msgstr ""
 "\n"
 "``extensions``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------"
 
 msgid ""
 "Mercurial has an extension mechanism for adding new features. To\n"
@@ -15441,11 +16077,11 @@
 msgid ""
 "\n"
 "``format``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 msgstr ""
 "\n"
 "``format``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 
 msgid ""
 "``usestore``\n"
@@ -15493,18 +16129,18 @@
 msgstr ""
 "``dotencode``\n"
 "    \"fncache\" 形式リポジトリ (本設定の有効化に必須) において、\n"
-"    Mac OS X および Windows で生じる、 ドットと空白文字 (``. ``)\n"
-"    で始まるファイル名の問題を回避するための、 \"dotencode\"\n"
+"    Mac OS X では ``._``  、Windows では空白文字で始まるファイル名が、\n"
+"    原因となって発生する問題を、 回避するための  \"dotencode\"\n"
 "    形式リポジトリの使用可否。 デフォルトでは有効化されています。\n"
 "    この設定を無効化した場合、 新規作成したリポジトリは、 1.7 以前の\n"
 "    Mercurial と、 ディスク記録形式で互換性が保たれます。"
 
 msgid ""
 "``graph``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "``graph``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid ""
 "Web graph view configuration. This section let you change graph\n"
@@ -15551,10 +16187,10 @@
 
 msgid ""
 "``hooks``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "``hooks``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid ""
 "Commands or Python functions that get automatically executed by\n"
@@ -15968,11 +16604,11 @@
 msgid ""
 "\n"
 "``hostfingerprints``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------------"
 msgstr ""
 "\n"
 "``hostfingerprints``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------------"
 
 msgid ""
 "Fingerprints of the certificates of known HTTPS servers.\n"
@@ -16008,11 +16644,11 @@
 msgid ""
 "\n"
 "``http_proxy``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------"
 msgstr ""
 "\n"
 "``http_proxy``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------"
 
 msgid ""
 "Used to access web-based Mercurial repositories through a HTTP\n"
@@ -16063,10 +16699,10 @@
 
 msgid ""
 "``merge-patterns``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------------"
 msgstr ""
 "``merge-patterns``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------------"
 
 msgid ""
 "This section specifies merge tools to associate with particular file\n"
@@ -16090,10 +16726,10 @@
 
 msgid ""
 "``merge-tools``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"---------------"
 msgstr ""
 "``merge-tools``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"---------------"
 
 msgid ""
 "This section configures external merge tools to use for file-level\n"
@@ -16304,11 +16940,11 @@
 msgid ""
 "\n"
 "``patch``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "\n"
 "``patch``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid ""
 "Settings used when applying patches, for instance through the 'import'\n"
@@ -16345,11 +16981,11 @@
 msgid ""
 "\n"
 "``paths``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "\n"
 "``paths``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid ""
 "Assigns symbolic names to repositories. The left side is the\n"
@@ -16388,10 +17024,10 @@
 
 msgid ""
 "``phases``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 msgstr ""
 "``phases``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 
 msgid ""
 "Specifies default handling of phases. See :hg:`help phases` for more\n"
@@ -16425,10 +17061,10 @@
 
 msgid ""
 "``profiling``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"-------------"
 msgstr ""
 "``profiling``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"-------------"
 
 msgid ""
 "Specifies profiling type, format, and file output. Two profilers are\n"
@@ -16525,10 +17161,10 @@
 
 msgid ""
 "``revsetalias``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"---------------"
 msgstr ""
 "``revsetalias``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"---------------"
 
 msgid "Alias definitions for revsets. See :hg:`help revsets` for details."
 msgstr ""
@@ -16537,10 +17173,10 @@
 
 msgid ""
 "``server``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 msgstr ""
 "``server``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 
 msgid "Controls generic server settings."
 msgstr "一般的なサーバ機能の設定。"
@@ -16592,10 +17228,10 @@
 
 msgid ""
 "``smtp``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 msgstr ""
 "``smtp``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 
 msgid "Configuration for extensions that need to send email messages."
 msgstr "電子メールを送信するエクステンション向け設定。"
@@ -16657,11 +17293,11 @@
 msgid ""
 "\n"
 "``subpaths``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 msgstr ""
 "\n"
 "``subpaths``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 
 msgid ""
 "Subrepository source URLs can go stale if a remote server changes name\n"
@@ -16695,7 +17331,7 @@
 "``http://hg.server/foo/`` に書き換えられます。"
 
 msgid ""
-"Relative subrepository paths are first made absolute, and the the\n"
+"Relative subrepository paths are first made absolute, and the\n"
 "rewrite rules are then applied on the full (absolute) path. The rules\n"
 "are applied in definition order."
 msgstr ""
@@ -16705,10 +17341,10 @@
 
 msgid ""
 "``trusted``\n"
-"\"\"\"\"\"\"\"\"\"\"\""
+"-----------"
 msgstr ""
 "``trusted``\n"
-"\"\"\"\"\"\"\"\"\"\"\""
+"-----------"
 
 msgid ""
 "Mercurial will not use the settings in the\n"
@@ -16762,11 +17398,11 @@
 msgid ""
 "\n"
 "``ui``\n"
-"\"\"\"\"\"\""
+"------"
 msgstr ""
 "\n"
 "``ui``\n"
-"\"\"\"\"\"\""
+"------"
 
 msgid "User interface controls."
 msgstr "ユーザインタフェースに関する設定。"
@@ -17032,11 +17668,11 @@
 msgid ""
 "\n"
 "``web``\n"
-"\"\"\"\"\"\"\""
+"-------"
 msgstr ""
 "\n"
 "``web``\n"
-"\"\"\"\"\"\"\""
+"-------"
 
 msgid ""
 "Web interface configuration. The settings in this section apply to\n"
@@ -17386,6 +18022,20 @@
 "    エラーログの書き出し先。 無指定時は標準エラー出力に出力。"
 
 msgid ""
+"``comparisoncontext``\n"
+"    Number of lines of context to show in side-by-side file comparison. If\n"
+"    negative or the value ``full``, whole files are shown. Default is 5.\n"
+"    This setting can be overridden by a ``context`` request parameter to "
+"the\n"
+"    ``comparison`` command, taking the same values."
+msgstr ""
+"``comparisoncontext``\n"
+"    ファイルの差分比較を表示する際の、 コンテキスト行数。 負値または\n"
+"    ``full`` 指定の場合、 ファイル全体が表示されます。 デフォルト値は 5。\n"
+"    ``comparison`` 要求時に ``context`` パラメータを指定することで、\n"
+"    設定を上書き可能です。"
+
+msgid ""
 "``hidden``\n"
 "    Whether to hide the repository in the hgwebdir index.\n"
 "    Default is False."
@@ -17850,7 +18500,7 @@
 "    defaults to 'vi'."
 msgstr ""
 "EDITOR\n"
-"    コミット時のメッセージのように、 エディタでファイルを開き、\n"
+"    コミットログ入力時のように、 エディタでファイルを開き、\n"
 "    ユーザによる編集を促す状況があります。\n"
 "    そこで使用されるエディタは、 HGEDITOR、 VISUAL\n"
 "    あるいは EDITOR 環境変数に設定されたものを(この順序で)使用します。\n"
@@ -18952,10 +19602,10 @@
 
 msgid ""
 "Synopsis\n"
-"--------"
+"========"
 msgstr ""
 "概要\n"
-"----"
+"===="
 
 msgid ""
 "The Mercurial system uses a file called ``.hgignore`` in the root\n"
@@ -18968,10 +19618,10 @@
 
 msgid ""
 "Description\n"
-"-----------"
-msgstr ""
-"詳細\n"
-"----"
+"==========="
+msgstr ""
+"説明\n"
+"===="
 
 msgid ""
 "The working directory of a Mercurial repository will often contain\n"
@@ -19036,6 +19686,17 @@
 ":hg:`help <command>` および :hg:`help patterns` を参照してください。"
 
 msgid ""
+"Files that are already tracked are not affected by .hgignore, even\n"
+"if they appear in .hgignore. An untracked file X can be explicitly\n"
+"added with :hg:`add X`, even if X would be excluded by a pattern\n"
+"in .hgignore."
+msgstr ""
+"既に管理対象となっているファイルは、 .hgignore 中の指定が合致しても、\n"
+"無視の対象とはなりません。 .hgignore 記述により、 管理対象外のファイル\n"
+"X が無視されている場合でも、 明示的な :hg:`add X` 実行により、\n"
+"ファイル X を管理対象にすることが可能です。"
+
+msgid ""
 "An ignore file is a plain text file consisting of a list of patterns,\n"
 "with one pattern per line. Empty lines are skipped. The ``#``\n"
 "character is treated as a comment character, and the ``\\`` character\n"
@@ -19104,10 +19765,10 @@
 
 msgid ""
 "Example\n"
-"-------"
+"======="
 msgstr ""
 "記述例\n"
-"------"
+"======"
 
 msgid "Here is an example ignore file. ::"
 msgstr "無視設定ファイルの記述例を以下に示します。 ::"
@@ -19139,17 +19800,19 @@
 
 msgid ""
 "Mercurial's internal web server, hgweb, can serve either a single\n"
-"repository, or a collection of them. In the latter case, a special\n"
-"configuration file can be used to specify the repository paths to use\n"
-"and global web configuration options."
+"repository, or a tree of repositories. In the second case, repository\n"
+"paths and global options can be defined using a dedicated\n"
+"configuration file common to :hg:`serve`, ``hgweb.wsgi``,\n"
+"``hgweb.cgi`` and ``hgweb.fcgi``."
 msgstr ""
 "Mercurial の内部ウェブサーバ機能 hgweb は、 単一リポジトリないし、\n"
-"複数リポジトリを公開することができます。 複数リポジトリを公開する場合、\n"
-"専用設定ファイルに、 対象リポジトリへのパスや、 共通設定を記述できます。"
-
-msgid ""
-"This file uses the same syntax as other Mercurial configuration files,\n"
-"but only the following sections are recognized:"
+"リポジトリのツリーを公開可能です。 後者の場合、 専用の設定ファイルにより、\n"
+"パスやオプション設定を定義可能です。 設定ファイルは :hg:`serve`、\n"
+"``hgweb.wsgi``、 ``hgweb.cgi`` および ``hgweb.fcgi`` で共通です。"
+
+msgid ""
+"This file uses the same syntax as other Mercurial configuration files\n"
+"but recognizes only the following sections:"
 msgstr ""
 "このファイルの記述文法は、 通常の Mercurial 設定ファイルと同じですが、\n"
 "以下のセクションのみが認識されます:"
@@ -19163,87 +19826,83 @@
 "  - paths\n"
 "  - collections"
 
-msgid ""
-"The ``web`` section can specify all the settings described in the web\n"
-"section of the hgrc(5) documentation. See :hg:`help config` for\n"
-"information on where to find the manual page."
-msgstr ""
-"``web`` セクションでは、 hgrc(5) ドキュメントにおける ``web``\n"
-"セクションで説明されている全ての設定が可能です。\n"
-"hgrc(5) ドキュメントは :hg:`help config` でも参照可能です。"
-
-msgid ""
-"The ``paths`` section provides mappings of physical repository\n"
-"paths to virtual ones. For instance::"
-msgstr ""
-"``paths`` セクションは、 仮想的なリポジトリパスと、 実際のリポジトリの、\n"
-"対応付けをを行います。 例えば::"
+msgid "The ``web`` options are thorougly described in :hg:`help config`."
+msgstr "``web`` での記述の詳細は :hg:`help config` を参照してください。"
+
+msgid ""
+"The ``paths`` section maps URL paths to paths of repositories in the\n"
+"filesystem. hgweb will not expose the filesystem directly - only\n"
+"Mercurial repositories can be published and only according to the\n"
+"configuration."
+msgstr ""
+"``paths`` セクションは、 URL 上のパスと、 それに対応するリポジトリの、\n"
+"ファイルシステム上におけるパスを対応付けます。 hgweb による公開は、\n"
+"ファイルシステムの直接公開ではなく、 Mercurial のリポジトリのみを、\n"
+"設定に従って公開します。"
+
+msgid ""
+"The left hand side is the path in the URL. Note that hgweb reserves\n"
+"subpaths like ``rev`` or ``file``, try using different names for\n"
+"nested repositories to avoid confusing effects."
+msgstr ""
+"設定キーは URL 中のパスを指します。 hgweb では ``rev`` または ``file``\n"
+"といった名前は、 特定用途用に使われますので、 想定外の挙動を避けるために、\n"
+"リポジトリのパスが、 これらと衝突しないように注意してください。"
+
+msgid ""
+"The right hand side is the path in the filesystem. If the specified\n"
+"path ends with ``*`` or ``**`` the filesystem will be searched\n"
+"recursively for repositories below that point.\n"
+"With ``*`` it will not recurse into the repositories it finds (except for\n"
+"``.hg/patches``).\n"
+"With ``**`` it will also search inside repository working directories\n"
+"and possibly find subrepositories."
+msgstr ""
+"設定値はファイルシステム上のパスです。 パス指定末尾が ``*`` や ``**``\n"
+"の場合、 指定のパス位置から、 リポジトリの検出が、 再帰的に実施されます。\n"
+"パスの末尾が ``*`` の場合、 検出されたリポジトリ配下の再帰的検出は、\n"
+"実施されません (``.hg/patches`` 配下を除く)。 パス末尾が ``**`` の場合、\n"
+"副リポジトリのような、 作業領域中のリポジトリも、 再帰的に検出されます。"
+
+msgid "In this example::"
+msgstr "以下の設定例の場合::"
 
 msgid ""
 "  [paths]\n"
-"  projects/a = /foo/bar\n"
-"  projects/b = /baz/quux\n"
-"  web/root = /real/root/*\n"
-"  / = /real/root2/*\n"
-"  virtual/root2 = /real/root2/**"
+"  /projects/a = /srv/tmprepos/a\n"
+"  /projects/b = c:/repos/b\n"
+"  / = /srv/repos/*\n"
+"  /user/bob = /home/bob/repos/**"
 msgstr ""
 "  [paths]\n"
-"  projects/a = /foo/bar\n"
-"  projects/b = /baz/quux\n"
-"  web/root = /real/root/*\n"
-"  / = /real/root2/*\n"
-"  virtual/root2 = /real/root2/**"
+"  /projects/a = /srv/tmprepos/a\n"
+"  /projects/b = c:/repos/b\n"
+"  / = /srv/repos/*\n"
+"  /user/bob = /home/bob/repos/**"
 
 msgid ""
 "- The first two entries make two repositories in different directories\n"
 "  appear under the same directory in the web interface\n"
-"- The third entry maps every Mercurial repository found in '/real/root'\n"
-"  into 'web/root'. This format is preferred over the [collections] one,\n"
-"  since using absolute paths as configuration keys is not supported on "
-"every\n"
-"  platform (especially on Windows).\n"
-"- The fourth entry is a special case mapping all repositories in\n"
-"  '/real/root2' in the root of the virtual directory.\n"
-"- The fifth entry recursively finds all repositories under the real\n"
-"  root, and maps their relative paths under the virtual root."
-msgstr ""
-"- 冒頭の2つの設定は、 異なるディレクトリ配下のリポジトリを、 URL 上は、\n"
-"  同一ディレクトリ配下にあるように見せます\n"
-"- 3つ目の設定は、 '/real/root' 配下のリポジトリを 'web/root'\n"
-"  配下にあるように見せます。 設定のキーとしての絶対パス利用が、\n"
-"  全ての環境でサポートされているわけでは無い (特に Windows 環境) ため、\n"
-"  ``collections`` セクションでの設定よりは、 こちらの表記を推奨します。\n"
-"- 4つ目の設定は、 '/real/root2' 配下のリポジトリを、 仮想パスの、\n"
-"  ルート配下にあるように見せます。\n"
-"- 5つ目の設定は、 '/real/root2' 配下のリポジトリを、 再帰的に検出し、\n"
-"  検出された全てを、 相対パスを使って 'virtual/root2' 配下に配置します。\n"
-"  (※ 訳注: ``**`` 指定の場合、 入れ子になったリポジトリも検出します)"
-
-msgid ""
-"The ``collections`` section provides mappings of trees of physical\n"
-"repositories paths to virtual ones, though the paths syntax is generally\n"
-"preferred. For instance::"
-msgstr ""
-"``collections`` セクションでは、 実リポジトリから仮想リポジトリへの、\n"
-"パスの対応付けを定義しますが、 ``paths`` セクションによる記述の方が、\n"
-"一般的に推奨されます。 記述例は::"
-
-msgid ""
-"  [collections]\n"
-"  /foo = /foo"
-msgstr ""
-"  [collections]\n"
-"  /foo = /foo"
-
-msgid ""
-"Here, the left side will be stripped off all repositories found in the\n"
-"right side. Thus ``/foo/bar`` and ``foo/quux/baz`` will be listed as\n"
-"``bar`` and ``quux/baz`` respectively.\n"
-msgstr ""
-"等号 ('=') の右辺で記述されたパス配下の、 全てのリポジトリが、\n"
-"等号の左辺を取り除いたパスで、 公開されます。 例えば上記設定において、\n"
-"``/foo/bar`` と ``foo/quux/baz`` というリポジトリが存在する場合、\n"
-"それぞれが ``bar`` および ``quux/baz`` として公開されます。\n"
+"- The third entry will publish every Mercurial repository found in\n"
+"  ``/srv/repos/``, for instance the repository ``/srv/repos/quux/``\n"
+"  will appear as ``http://server/quux/``\n"
+"- The fourth entry will publish both ``http://server/user/bob/quux/``\n"
+"  and ``http://server/user/bob/quux/testsubrepo/``"
+msgstr ""
+"- 冒頭の2つの設定は、 ファイルシステム上は異なる位置にあるリポジトリを、\n"
+"  URL 上は同一ディレクトリ配下にあるように見せます\n"
+"- 3つ目の設定は、 ``/srv/repos/`` 配下の全リポジトリを公開します。\n"
+"  例えば ``/srv/repos/quux/`` リポジトリは ``http://server/quux/``\n"
+"  としてアクセス可能です。\n"
+"- 4つ目の設定では、 ``http://server/user/bob/quux/`` と\n"
+"  ``http://server/user/bob/quux/testsubrepo/`` の両方が公開されます。"
+
+msgid ""
+"The ``collections`` section is deprecated and has been superseeded by\n"
+"``paths``.\n"
+msgstr ""
+"``collections`` セクションでの設定は非推奨なので、 代わりに ``paths``\n"
+"を使用してください。\n"
 
 msgid "To merge files Mercurial uses merge tools."
 msgstr "Mercurial での更新内容マージには、 マージツールを使用します。"
@@ -19289,10 +19948,10 @@
 
 msgid ""
 "Available merge tools\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"====================="
 msgstr ""
 "利用可能なマージツール\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"======================"
 
 msgid ""
 "External merge tools and their properties are configured in the\n"
@@ -19343,10 +20002,10 @@
 
 msgid ""
 "Choosing a merge tool\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"====================="
 msgstr ""
 "マージツールの選択\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"=================="
 
 msgid "Mercurial uses these rules when deciding which merge tool to use:"
 msgstr "Mercurial で使用されるマージツールは以下の順序で決定されます:"
@@ -19612,10 +20271,10 @@
 
 msgid ""
 "What are phases?\n"
-"----------------"
+"================"
 msgstr ""
 "フェーズとは?\n"
-"--------------"
+"=============="
 
 msgid ""
 "Phases are a system for tracking which changesets have been or should\n"
@@ -19651,10 +20310,10 @@
 
 msgid ""
 "How are phases managed?\n"
-"-----------------------"
+"======================="
 msgstr ""
 "フェーズはどう管理されるのか?\n"
-"------------------------------"
+"=============================="
 
 msgid ""
 "For the most part, phases should work transparently. By default, a\n"
@@ -19678,10 +20337,10 @@
 
 msgid ""
 "Phases and servers\n"
-"------------------"
+"=================="
 msgstr ""
 "フェーズとサーバ\n"
-"----------------"
+"================"
 
 msgid "Normally, all servers are ``publishing`` by default. This means::"
 msgstr ""
@@ -19744,10 +20403,10 @@
 
 msgid ""
 "Examples\n"
-"--------"
+"========"
 msgstr ""
 "記述例\n"
-"------"
+"======"
 
 msgid " - list changesets in draft or secret phase::"
 msgstr " - draft ないし secret フェーズのリビジョン一覧::"
@@ -19811,22 +20470,20 @@
 "前方一致する場合にのみ有効です。"
 
 msgid ""
-"Any other string is treated as a tag or branch name. A tag name is a\n"
-"symbolic name associated with a revision identifier. A branch name\n"
-"denotes the tipmost revision of that branch. Tag and branch names must\n"
-"not contain the \":\" character."
-msgstr ""
-"それ以外の文字列は、 「タグ名」ないし「ブランチ名」とみなされます。\n"
-"「タグ名」はリビジョン ID に付与されたシンボリックな名前です。\n"
-"「ブランチ名」は、 ブランチ中の最新リビジョンを意味します。\n"
-"タグ名およびブランチ名は \":\" を含んではなりません。"
-
-msgid ""
-"The reserved name \"tip\" is a special tag that always identifies the\n"
-"most recent revision."
-msgstr ""
-"常に「最新のリビジョン」を意味する名前 \"tip\" は、 特別なタグ名として\n"
-"予約されています。"
+"Any other string is treated as a bookmark, tag, or branch name. A\n"
+"bookmark is a movable pointer to a revision. A tag is a permanent name\n"
+"associated with a revision. A branch name denotes the tipmost revision\n"
+"of that branch. Bookmark, tag, and branch names must not contain the \":\"\n"
+"character."
+msgstr ""
+"他の文字列は、 「ブックマーク」 、 「タグ名」 ないし 「ブランチ名」\n"
+"とみなされます。 「ブックマーク」 は移動可能なリビジョン参照ポインタです。\n"
+"「タグ名」 は特定のリビジョンに付与された永続的な名前です。\n"
+"「ブランチ名」 は当該ブランチ中の最新リビジョンを意味します。\n"
+"ブックマーク、タグおよびブランチの名前は \":\" 文字を含んではなりません。"
+
+msgid "The reserved name \"tip\" always identifies the most recent revision."
+msgstr "予約名 \"tip\" は、 常に一番最新のリビジョンを指します。"
 
 msgid ""
 "The reserved name \"null\" indicates the null revision. This is the\n"
@@ -20164,11 +20821,11 @@
 msgid ""
 "\n"
 "Adding a Subrepository\n"
-"----------------------"
+"======================"
 msgstr ""
 "\n"
 "副リポジトリの追加\n"
-"------------------"
+"=================="
 
 msgid ""
 "If ``.hgsub`` does not exist, create it and add it to the parent\n"
@@ -20190,10 +20847,10 @@
 
 msgid ""
 "Synchronizing a Subrepository\n"
-"-----------------------------"
+"============================="
 msgstr ""
 "副リポジトリの同期\n"
-"------------------"
+"=================="
 
 msgid ""
 "Subrepos do not automatically track the latest changeset of their\n"
@@ -20219,10 +20876,10 @@
 
 msgid ""
 "Deleting a Subrepository\n"
-"------------------------"
+"========================"
 msgstr ""
 "副リポジトリの削除\n"
-"------------------"
+"=================="
 
 msgid ""
 "To remove a subrepository from the parent repository, delete its\n"
@@ -20233,10 +20890,10 @@
 
 msgid ""
 "Interaction with Mercurial Commands\n"
-"-----------------------------------"
+"==================================="
 msgstr ""
 "Mercurial コマンドとの連携\n"
-"--------------------------"
+"=========================="
 
 msgid ""
 ":add: add does not recurse in subrepos unless -S/--subrepos is\n"
@@ -20373,10 +21030,10 @@
 
 msgid ""
 "Remapping Subrepositories Sources\n"
-"---------------------------------"
+"================================="
 msgstr ""
 "副リポジトリ連携先の書き換え\n"
-"----------------------------"
+"============================"
 
 msgid ""
 "A subrepository source location may change during a project life,\n"
@@ -20647,6 +21304,9 @@
 msgid "destination directory: %s\n"
 msgstr "複製先ディレクトリ: %s\n"
 
+msgid "empty destination path is not valid"
+msgstr "複製先指定における空のパスは不正です"
+
 #, python-format
 msgid "destination '%s' already exists"
 msgstr "複製先 '%s' は既に存在します"
@@ -20707,6 +21367,10 @@
 msgstr "'%s:%d' でのサーバ起動に失敗: %s"
 
 #, python-format
+msgid "(binary file %s, hash: %s)"
+msgstr "(バイナリファイル %s, ハッシュ値: %s)"
+
+#, python-format
 msgid " %d files changed, %d insertions(+), %d deletions(-)\n"
 msgstr " 更新ファイル数 %d、 追加 %d 行(+)、 削除 %d 行(-)\n"
 
@@ -20764,6 +21428,10 @@
 msgid "warning: %s hook %s\n"
 msgstr "警告: %s フック %s\n"
 
+#, python-format
+msgid "loading %s hook failed:\n"
+msgstr "フック %s の読み込みに失敗:\n"
+
 msgid "kb"
 msgstr "キロバイト"
 
@@ -20947,7 +21615,7 @@
 
 #, python-format
 msgid "note: commit message saved in %s\n"
-msgstr "備考: コミットメッセージを %s に保存しました\n"
+msgstr "備考: コミットログを %s に保存しました\n"
 
 #, python-format
 msgid "trouble committing %s!\n"
@@ -20961,10 +21629,24 @@
 "changegroupsubset."
 msgstr "連携先の changegroupsubset 機能未対応により、 部分取り込みできません。"
 
+msgid "destination does not support push"
+msgstr "指定の連携先には履歴反映ができません"
+
+#, python-format
+msgid "push includes an obsolete changeset: %s!"
+msgstr "履歴反映対象に『廃止』リビジョンが含まれます!: %s"
+
+#, python-format
+msgid "push includes an unstable changeset: %s!"
+msgstr "履歴反映対象に『非永続』リビジョンが含まれます!: %s"
+
 #, python-format
 msgid "updating %s to public failed!\n"
 msgstr "%s のフェーズの public 化に失敗!\n"
 
+msgid "failed to push some obsolete markers!\n"
+msgstr "リビジョンの『廃止』情報の反映に失敗しました!\n"
+
 #, python-format
 msgid "%d changesets found\n"
 msgstr "%d 個のリビジョンがあります\n"
@@ -21009,7 +21691,7 @@
 msgid "added %d changesets with %d changes to %d files%s\n"
 msgstr "%d 個のリビジョン(%d の変更を %d ファイルに適用)を追加%s\n"
 
-msgid "Unexpected response from remote server:"
+msgid "unexpected response from remote server:"
 msgstr "連携先のサーバから予期しない返信:"
 
 msgid "operation forbidden by server"
@@ -21028,6 +21710,9 @@
 msgid "%d files to transfer, %s of data\n"
 msgstr "%d 個のファイル転送(データ量 %s)\n"
 
+msgid "clone"
+msgstr "複製"
+
 #, python-format
 msgid "transferred %s in %.1f seconds (%s/sec)\n"
 msgstr "%s を %.1f 秒で送信しました(%s/秒)\n"
@@ -21174,6 +21859,10 @@
 msgid "note: possible conflict - %s was renamed multiple times to:\n"
 msgstr "備考: 衝突の可能性 - %s が複数のファイルに改名されました:\n"
 
+#, python-format
+msgid "note: possible conflict - %s was deleted and renamed to:\n"
+msgstr "備考: 衝突の可能性 - 削除と平行して %s への改名があります:\n"
+
 msgid "merging with a working directory ancestor has no effect"
 msgstr "作業領域の祖先とのマージは意味がありません"
 
@@ -21222,6 +21911,22 @@
 msgstr "警告!"
 
 #, python-format
+msgid "parsing obsolete marker: unknown version %r"
+msgstr "『廃止』情報解析: 未知のリビジョン %r"
+
+#, python-format
+msgid ""
+"parsing obsolete marker: metadata is too short, %d bytes expected, got %d"
+msgstr "『廃止』情報解析: メタデータの想定サイズ %d に対して %d しかありません"
+
+#, python-format
+msgid "unknown key: %r"
+msgstr "未知のキーです: %r"
+
+msgid "unexpected old value"
+msgstr "旧値の指定は想定外です"
+
+#, python-format
 msgid "unexpected token: %s"
 msgstr "未知の記述: %s"
 
@@ -21324,6 +22029,13 @@
 msgstr "パッチの適用に失敗"
 
 #, python-format
+msgid "cannot %s; remote repository does not support the %r capability"
+msgstr "%s ができません。 連携先は機能 %r が未サポートです"
+
+msgid "cannot change null revision phase"
+msgstr "null リビジョンのフェーズは変更できません"
+
+#, python-format
 msgid "ignoring inconsistent public root from remote: %s\n"
 msgstr "連携先からの矛盾するフェーズ public 化要求を無視: %s\n"
 
@@ -21363,8 +22075,8 @@
 msgstr "リビジョンの除外に失敗: 部分的なバンドルを '%s' に保存\n"
 
 #, python-format
-msgid "cannot %s; remote repository does not support the %r capability"
-msgstr "%s ができません。 連携先は機能 %r が未サポートです"
+msgid "revlog decompress error: %s"
+msgstr "revlog 圧縮の展開エラー: %s"
 
 #, python-format
 msgid "unknown compression type %r"
@@ -21476,15 +22188,18 @@
 "    - ``range``              : csets taking part in the bisection\n"
 "    - ``pruned``             : csets that are goods, bads or skipped\n"
 "    - ``untested``           : csets whose fate is yet unknown\n"
-"    - ``ignored``            : csets ignored due to DAG topology"
+"    - ``ignored``            : csets ignored due to DAG topology\n"
+"    - ``current``            : the cset currently being bisected"
 msgstr ""
 "    - ``good``, ``bad``, ``skip``: 各状態にマークされたリビジョン群\n"
 "    - ``goods``, ``bads``      : good ないし bad と判断されたリビジョン群\n"
 "    - ``range``              : 探索範囲中のリビジョン群 \n"
 "    - ``pruned``             : 状態が確定したリビジョン群\n"
 "    - ``untested``           : 状態が未確定のリビジョン群\n"
-"    - ``ignored``            : 探索対象から除外されたリビジョン群"
-
+"    - ``ignored``            : 探索対象から除外されたリビジョン群\n"
+"    - ``current``            : 現在の探索対象リビジョン"
+
+#. i18n: "bisect" is a keyword
 msgid "bisect requires a string"
 msgstr "bisect には文字列を指定してください"
 
@@ -21495,6 +22210,16 @@
 "``bookmark([name])``\n"
 "    指定ブックマーク対象、ないし全ブックマーク対象。"
 
+msgid ""
+"    If `name` starts with `re:`, the remainder of the name is treated as\n"
+"    a regular expression. To match a bookmark that actually starts with `re:"
+"`,\n"
+"    use the prefix `literal:`."
+msgstr ""
+"    `name` が `re:` で始まる場合、 残りは正規表現として扱われます。\n"
+"    ブックマーク名そのものが `re:` で始まる場合は、 名前を `literal:`\n"
+"    付きで指定してください。"
+
 #. i18n: "bookmark" is a keyword
 msgid "bookmark takes one or no arguments"
 msgstr "bookmark の引数は最大1つです"
@@ -21503,6 +22228,10 @@
 msgid "the argument to bookmark must be a string"
 msgstr "bookmark には文字列を指定してください"
 
+#, python-format
+msgid "no bookmarks exist that match '%s'"
+msgstr "'%s' に合致するブックマークはありません"
+
 msgid ""
 "``branch(string or set)``\n"
 "    All changesets belonging to the given branch or the branches of the "
@@ -21513,6 +22242,16 @@
 "    指定ブランチないしリビジョン群の属するブランチ群に、 属するリビジョン。"
 
 msgid ""
+"    If `string` starts with `re:`, the remainder of the name is treated as\n"
+"    a regular expression. To match a branch that actually starts with `re:"
+"`,\n"
+"    use the prefix `literal:`."
+msgstr ""
+"    `string` が `re:` で始まる場合、 残りは正規表現として扱われます。\n"
+"    ブランチ名そのものが `re:` で始まる場合は、 名前を `literal:`\n"
+"    付きで指定してください。"
+
+msgid ""
 "``children(set)``\n"
 "    Child changesets of changesets in set."
 msgstr ""
@@ -21544,6 +22283,23 @@
 msgstr "contains にはパターンを指定してください"
 
 msgid ""
+"``converted([id])``\n"
+"    Changesets converted from the given identifier in the old repository if\n"
+"    present, or all converted changesets if no identifier is specified."
+msgstr ""
+"``converted([id])``\n"
+"    id が指定された場合は、 変換元における id から変換されたリビジョン、\n"
+"    id 指定が無い場合は、 変換された全てのリビジョン群。"
+
+#. i18n: "converted" is a keyword
+msgid "converted takes one or no arguments"
+msgstr "converted の引数は最大1つです"
+
+#. i18n: "converted" is a keyword
+msgid "converted requires a revision"
+msgstr "converted にはリビジョン識別子を指定してください"
+
+msgid ""
 "``date(interval)``\n"
 "    Changesets within the interval, see :hg:`help dates`."
 msgstr ""
@@ -21574,26 +22330,88 @@
 "    指定リビジョン群の子孫リビジョン群。"
 
 msgid ""
+"``destination([set])``\n"
+"    Changesets that were created by a graft, transplant or rebase "
+"operation,\n"
+"    with the given revisions specified as the source.  Omitting the optional "
+"set\n"
+"    is the same as passing all()."
+msgstr ""
+"``destination([set])``\n"
+"    指定リビジョン群を元に、 graft, transplant, rebase 等によって、\n"
+"    生成されたリビジョン群。 set 指定が省略された場合、 ``all()``\n"
+"    指定相当とみなします。"
+
+msgid ""
 "``draft()``\n"
 "    Changeset in draft phase."
 msgstr ""
 "``draft()``\n"
 "    フェーズが draft なリビジョン群。"
 
+#. i18n: "draft" is a keyword
 msgid "draft takes no arguments"
 msgstr "draft には引数が指定できません"
 
 msgid ""
+"``extinct()``\n"
+"    Obsolete changesets with obsolete descendants only."
+msgstr ""
+"``extinct()``\n"
+"    子孫が全て『廃止』リビジョンな、『廃止』リビジョン群。"
+
+#. i18n: "extinct" is a keyword
+msgid "extinct takes no arguments"
+msgstr "extinct には引数が指定できません"
+
+msgid ""
+"``extra(label, [value])``\n"
+"    Changesets with the given label in the extra metadata, with the given\n"
+"    optional value."
+msgstr ""
+"``extra(label, [value])``\n"
+"    extra メタデータに、 特定の名前の値を持つリビジョン群。 値指定により、\n"
+"    合致対象が更に絞り込まれます。"
+
+msgid ""
+"    If `value` starts with `re:`, the remainder of the value is treated as\n"
+"    a regular expression. To match a value that actually starts with `re:`,\n"
+"    use the prefix `literal:`."
+msgstr ""
+"    `value` が `re:` で始まる場合、 残りは正規表現として扱われます。\n"
+"    値そのものが `re:` で始まる場合は、 値を `literal:`\n"
+"    付きで指定してください。"
+
+#. i18n: "extra" is a keyword
+msgid "extra takes at least 1 and at most 2 arguments"
+msgstr "extra の引数は、 最低1つ、最大2つです"
+
+#. i18n: "extra" is a keyword
+msgid "first argument to extra must be a string"
+msgstr "extra の第1引数には文字列を指定してください"
+
+#. i18n: "extra" is a keyword
+msgid "second argument to extra must be a string"
+msgstr "extra の第2引数には文字列を指定してください"
+
+msgid ""
 "``filelog(pattern)``\n"
 "    Changesets connected to the specified filelog."
 msgstr ""
 "``filelog(pattern)``\n"
-"    パターンに合致するファイルの改変に関連付けられたリビジョン群。\n"
-"    (※ 訳注: ``filelog()`` に合致するリビジョンは ``file()`` にも合致。\n"
-"    filelog 情報を元にするため、 ``file()`` と一致しない場合もある。\n"
-"    ``filelog()`` の方が高速だが、 合致しないリビジョンもあるため、\n"
-"    実行性能上の必要性が無ければ、 ``file()`` の利用を推奨)"
-
+"    パターンに合致するファイルの改変に関連付けられたリビジョン群。"
+
+msgid ""
+"    For performance reasons, ``filelog()`` does not show every changeset\n"
+"    that affects the requested file(s). See :hg:`help log` for details. For\n"
+"    a slower, more accurate result, use ``file()``."
+msgstr ""
+"    指定ファイルの関連リビジョンであっても、 ``filelog()`` によって、\n"
+"    必ずしも列挙されるとは限らないのは、 性能上の理由からです。\n"
+"    この挙動の詳細に関しては :hg:`help log` を参照してください。\n"
+"    低速でも、 正確な結果が必要な場合は ``file()`` を使用してください。"
+
+#. i18n: "filelog" is a keyword
 msgid "filelog requires a pattern"
 msgstr "filelog にはパターンを指定してください"
 
@@ -21658,15 +22476,19 @@
 msgid "_matchfiles requires at least one argument"
 msgstr "_matchfiles には最低1つの引数が必要です"
 
+#. i18n: "_matchfiles" is a keyword
 msgid "_matchfiles requires string arguments"
 msgstr "_matchfiles には文字列引数が必要です"
 
+#. i18n: "_matchfiles" is a keyword
 msgid "_matchfiles expected at most one revision"
 msgstr "_matchfiles へのリビジョン指定は最大1つです"
 
+#. i18n: "_matchfiles" is a keyword
 msgid "_matchfiles expected at most one default mode"
 msgstr "_matchfiles へのモード指定は最大1つです"
 
+#. i18n: "_matchfiles" is a keyword
 #, python-format
 msgid "invalid _matchfiles prefix: %s"
 msgstr "不正な _matchfiles 前置詞指定: %s"
@@ -21676,9 +22498,14 @@
 "    Changesets affecting files matched by pattern."
 msgstr ""
 "``file(pattern)``\n"
-"    パターンに合致するファイルに改変を行ったリビジョン群。\n"
-"    (※ 訳注: ``filelog()`` に合致するリビジョンは ``file()`` にも合致。\n"
-"    リビジョン側情報で判定するため ``filelog()`` と一致しない場合もある。)"
+"    パターンに合致するファイルに改変を行ったリビジョン群。"
+
+msgid ""
+"    For a faster but less accurate result, consider using ``filelog()``\n"
+"    instead."
+msgstr ""
+"    多少厳密さに欠けても、 性能が必要な場合は、 代わりに ``filelog()``\n"
+"    の使用を検討してみてください。"
 
 #. i18n: "file" is a keyword
 msgid "file requires a pattern"
@@ -21805,6 +22632,37 @@
 msgstr "id には文字列を指定してください"
 
 msgid ""
+"``obsolete()``\n"
+"    Mutable changeset with a newer version."
+msgstr ""
+"``obsolete()``\n"
+"    新規リビジョンによる改変が可能なリビジョン群。\n"
+"    (※ 訳注: 『廃止』設定されているリビジョン群のこと)"
+
+#. i18n: "obsolete" is a keyword
+msgid "obsolete takes no arguments"
+msgstr "obsolete には引数が指定できません"
+
+msgid ""
+"``origin([set])``\n"
+"    Changesets that were specified as a source for the grafts, transplants "
+"or\n"
+"    rebases that created the given revisions.  Omitting the optional set is "
+"the\n"
+"    same as passing all().  If a changeset created by these operations is "
+"itself\n"
+"    specified as a source for one of these operations, only the source "
+"changeset\n"
+"    for the first operation is selected."
+msgstr ""
+"``origin([set])``\n"
+"    指定リビジョン群の graft, transplant, rebase 等による生成の際に、\n"
+"    元リビジョンとして指定されたリビジョン群。 set 指定が省略された場合、\n"
+"    ``all()`` 指定相当とみなします。 当該操作で生成されたリビジョンが、 \n"
+"    別のリビジョン生成の際に、 生成元として指定されている場合は、\n"
+"    最初の生成操作における生成元のみが、 生成元とみなされます。"
+
+msgid ""
 "``outgoing([path])``\n"
 "    Changesets not found in the specified destination repository, or the\n"
 "    default push location."
@@ -21869,6 +22727,7 @@
 "``public()``\n"
 "    フェーズが public なリビジョン群。"
 
+#. i18n: "public" is a keyword
 msgid "public takes no arguments"
 msgstr "public には引数が指定できません"
 
@@ -21948,12 +22807,17 @@
 
 msgid ""
 "    Regular revision fields are ``description``, ``author``, ``branch``,\n"
-"    ``date``, ``files``, ``phase``, ``parents``, ``substate`` and ``user``.\n"
-"    Note that ``author`` and ``user`` are synonyms."
-msgstr ""
-"    一般的な項目には、``description``、 ``author``、 ``branch``、\n"
-"    ``date``、 ``files``、 ``phase``、 ``parents``、 ``substate`` および\n"
-"    ``user`` があります。 ``author`` と ``user`` は同一項目です。"
+"    ``date``, ``files``, ``phase``, ``parents``, ``substate``, ``user``\n"
+"    and ``diff``.\n"
+"    Note that ``author`` and ``user`` are synonyms. ``diff`` refers to the\n"
+"    contents of the revision. Two revisions matching their ``diff`` will\n"
+"    also match their ``files``."
+msgstr ""
+"    一般的な項目には、``description``, ``author``, ``branch``,\n"
+"    ``date``, ``files``, ``phase``, ``parents``, ``substate``, ``user``\n"
+"    および ``diff`` があります。 ``author`` と ``user`` は同一項目です。\n"
+"    ``diff`` は各リビジョンでの差分を指します。 2つのリビジョンにおいて\n"
+"    ``diff`` が一致する場合は ``files`` も一致します。"
 
 msgid ""
 "    Special fields are ``summary`` and ``metadata``:\n"
@@ -21973,12 +22837,15 @@
 "    フィールド指定が無い場合、 ``metadata`` フィールドが対象となります。\n"
 "    同時に複数フィールドの合致判定が可能です。"
 
+#. i18n: "matching" is a keyword
 msgid "matching takes 1 or 2 arguments"
 msgstr "matching の引数は1つか2つです"
 
+#. i18n: "matching" is a keyword
 msgid "matching requires a string as its second argument"
 msgstr "matching の第2引数は文字列です"
 
+#. i18n: "matching" is a keyword
 #, python-format
 msgid "unexpected field name passed to matching: %s"
 msgstr "matching への想定外のフィールド名指定: %s"
@@ -22005,6 +22872,7 @@
 "``secret()``\n"
 "    フェーズが secret なリビジョン群。"
 
+#. i18n: "secret" is a keyword
 msgid "secret takes no arguments"
 msgstr "secret には引数が指定できません"
 
@@ -22037,6 +22905,7 @@
 msgid "sort requires one or two arguments"
 msgstr "sort の引数は1つないし2つです"
 
+#. i18n: "sort" is a keyword
 msgid "sort spec must be a string"
 msgstr "sort には文字列を指定してください"
 
@@ -22044,6 +22913,10 @@
 msgid "unknown sort key %r"
 msgstr "未知の整列方式 %r"
 
+#, python-format
+msgid "invalid regular expression: %s"
+msgstr "不正な正規表現: %s"
+
 msgid ""
 "``tag([name])``\n"
 "    The specified tag by name, or all tagged revisions if no name is given."
@@ -22059,6 +22932,21 @@
 msgid "the argument to tag must be a string"
 msgstr "tag には文字列を指定してください"
 
+#, python-format
+msgid "no tags exist that match '%s'"
+msgstr "'%s' に合致するタグはありません"
+
+msgid ""
+"``unstable()``\n"
+"    Non-obsolete changesets with obsolete ancestors."
+msgstr ""
+"``unstable()``\n"
+"    祖先に『廃止』リビジョンを持つ、『非廃止』リビジョン群。"
+
+#. i18n: "unstable" is a keyword
+msgid "unstable takes no arguments"
+msgstr "unstable には引数が指定できません"
+
 msgid ""
 "``user(string)``\n"
 "    User name contains string. The match is case-insensitive."
@@ -22066,6 +22954,16 @@
 "``user(string)``\n"
 "    文字列をユーザ名に持つリビジョン群。 合致判定は文字大小を無視。"
 
+msgid ""
+"    If `string` starts with `re:`, the remainder of the string is treated "
+"as\n"
+"    a regular expression. To match a user that actually contains `re:`, use\n"
+"    the prefix `literal:`."
+msgstr ""
+"    `string` が `re:` で始まる場合、 残りは正規表現として扱われます。\n"
+"    ユーザ名そのものが `re:` で始まる場合は、 ユーザ名を `literal:`\n"
+"    付きで指定してください。"
+
 msgid "can't negate that"
 msgstr "負値にできません"
 
@@ -22418,10 +23316,10 @@
 #, python-format
 msgid ""
 "no branch checked out in subrepo %s\n"
-"cannot push revision %s"
+"cannot push revision %s\n"
 msgstr ""
 "副リポジトリ %s にブランチが取り出されていません。\n"
-"リビジョン %s の反映ができません。"
+"リビジョン %s を反映できません。\n"
 
 #, python-format
 msgid "%s, line %s: %s\n"
@@ -22744,6 +23642,15 @@
 msgid ":tags: List of strings. Any tags associated with the changeset."
 msgstr ":tags: 文字列列挙。 当該リビジョンに付与されたタグの一覧。"
 
+msgid ""
+":parents: List of strings. The parents of the changeset in \"rev:node\"\n"
+"    format. If the changeset has only one \"natural\" parent (the "
+"predecessor\n"
+"    revision) nothing is shown."
+msgstr ""
+":parents: 文字列列挙。 当該リビジョンの親リビジョンの \"rev:node\" 形式。\n"
+"    親が単一で、 且つリビジョン番号が1つ前の場合は、 何も表示されません。"
+
 #, python-format
 msgid "unknown method '%s'"
 msgstr "不明な処理 '%s' が指定されました"
@@ -22797,11 +23704,11 @@
 msgstr "既にあるリビジョンです "
 
 #, python-format
-msgid "Not trusting file %s from untrusted user %s, group %s\n"
+msgid "not trusting file %s from untrusted user %s, group %s\n"
 msgstr "信頼できないファイル %s (所有者 %s, グループ %s)\n"
 
 #, python-format
-msgid "Ignored: %s\n"
+msgid "ignored: %s\n"
 msgstr "無視しました: %s\n"
 
 #, python-format
@@ -22820,7 +23727,7 @@
 msgstr "コミットするユーザ名を入力してください:"
 
 #, python-format
-msgid "No username found, using '%s' instead\n"
+msgid "no username found, using '%s' instead\n"
 msgstr "ユーザ名が不明のため、 '%s' を使用\n"
 
 msgid "no username supplied (see \"hg help config\")"
@@ -23011,7 +23918,7 @@
 
 #, python-format
 msgid "checking parents of %s"
-msgstr "%s の親を検証中"
+msgstr "%s の親を確認中"
 
 #, python-format
 msgid "duplicate revision %d (%d)"
--- a/i18n/pt_BR.po	Thu Aug 02 17:48:58 2012 +0200
+++ b/i18n/pt_BR.po	Thu Aug 02 18:33:40 2012 +0200
@@ -31,7 +31,7 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2012-04-21 11:29-0300\n"
+"POT-Creation-Date: 2012-07-31 14:10-0300\n"
 "PO-Revision-Date: 2011-06-28 09:55+0200\n"
 "Last-Translator: Wagner Bruna <wbruna@yahoo.com>\n"
 "Language-Team: Brazilian Portuguese\n"
@@ -128,10 +128,10 @@
 
 msgid ""
 "Branch-based Access Control\n"
-"..........................."
+"---------------------------"
 msgstr ""
 "Controle de Acesso Baseado em Ramos\n"
-"..................................."
+"-----------------------------------"
 
 msgid ""
 "Use the ``acl.deny.branches`` and ``acl.allow.branches`` sections to\n"
@@ -159,11 +159,18 @@
 "- um asterisco, que significa \"qualquer usuário ou grupo\";"
 
 msgid ""
+"You can add the \"!\" prefix to a user or group name to invert the sense\n"
+"of the match."
+msgstr ""
+"Você pode adicionar o prefixo \"!\" para um usuário ou grupo\n"
+"para inverter o sentido do casamento."
+
+msgid ""
 "Path-based Access Control\n"
-"........................."
+"-------------------------"
 msgstr ""
 "Controle de Acesso Baseado em Caminhos\n"
-"......................................"
+"--------------------------------------"
 
 msgid ""
 "Use the ``acl.deny`` and ``acl.allow`` sections to have path-based\n"
@@ -179,10 +186,10 @@
 
 msgid ""
 "Groups\n"
-"......"
+"------"
 msgstr ""
 "Grupos\n"
-"......"
+"------"
 
 msgid ""
 "Group names must be prefixed with an ``@`` symbol. Specifying a group\n"
@@ -205,10 +212,10 @@
 
 msgid ""
 "Example Configuration\n"
-"....................."
+"---------------------"
 msgstr ""
 "Exemplo de Configuração\n"
-"......................."
+"-----------------------"
 
 msgid "::"
 msgstr "::"
@@ -321,7 +328,7 @@
 "  # user6 will not have write access to any file:\n"
 "  ** = user6"
 msgstr ""
-"  # usuário6 não terá acesso a nenhum arquivo:\n"
+"  # usuário6 não terá acesso de escrita a nenhum arquivo:\n"
 "  ** = usuário6"
 
 msgid ""
@@ -382,9 +389,91 @@
 msgid "  .hgtags = release_engineer"
 msgstr "  .hgtags = release_engineer"
 
+msgid ""
+"Examples using the \"!\" prefix\n"
+"............................."
+msgstr ""
+"Exemplos usando o prefixo \"!\"\n"
+"............................."
+
+msgid ""
+"Suppose there's a branch that only a given user (or group) should be able to\n"
+"push to, and you don't want to restrict access to any other branch that may\n"
+"be created."
+msgstr ""
+"Suponha que haja um ramo para o qual somente um dado usuário (ou grupo) seja capaz\n"
+"de enviar revisões, e você não quer restringir acesso a qualquer outro ramo que\n"
+"possa ser criado."
+
+msgid ""
+"The \"!\" prefix allows you to prevent anyone except a given user or group to\n"
+"push changesets in a given branch or path."
+msgstr ""
+"O prefixo \"!\" permite que você previna que qualquer um com exceção de um\n"
+"dado usuário ou grupo envie revisões em um certo ramo ou caminho."
+
+msgid ""
+"In the examples below, we will:\n"
+"1) Deny access to branch \"ring\" to anyone but user \"gollum\"\n"
+"2) Deny access to branch \"lake\" to anyone but members of the group \"hobbit\"\n"
+"3) Deny access to a file to anyone but user \"gollum\""
+msgstr ""
+"No exemplo abaixo, nós iremos:\n"
+"1) Negar o acesso a um ramo \"ring\" a todos, menos ao usuário \"gollum\"\n"
+"2) Negar o acesso ao ramo \"lake\" a todos, menos aos membros do grupo \"hobbit\"\n"
+"3) Negar o acesso a um arquivo a todos, menos ao usuário \"gollum\""
+
+msgid ""
+"  [acl.allow.branches]\n"
+"  # Empty"
+msgstr ""
+"  [acl.allow.branches]\n"
+"  # Vazio"
+
+msgid ""
+"  # 1) only 'gollum' can commit to branch 'ring';\n"
+"  # 'gollum' and anyone else can still commit to any other branch.\n"
+"  ring = !gollum"
+msgstr ""
+"  # 1) somente 'gollum' pode consolidar no ramo 'ring';\n"
+"  # 'gollum' e qualquer outro usuário ainda pode consolidar em\n"
+"  # qualquer outro ramo.\n"
+"  ring = !gollum"
+
+msgid ""
+"  # 2) only members of the group 'hobbit' can commit to branch 'lake';\n"
+"  # 'hobbit' members and anyone else can still commit to any other branch.\n"
+"  lake = !@hobbit"
+msgstr ""
+"  # 2) somente membros do grupo 'hobbit' podem consolidar em um ramo 'lake';\n"
+"  # membros do grupo 'hobbit' e qualquer outro usuário ainda podem consolidar\n"
+"  # em qualquer outro ramo.\n"
+"  lake = !@hobbit"
+
+msgid "  # You can also deny access based on file paths:"
+msgstr "  # Você também pode negar o acesso com base em caminhos de arquivo:"
+
+msgid ""
+"  [acl.allow]\n"
+"  # Empty"
+msgstr ""
+"  [acl.allow]\n"
+"  # Vazio"
+
+msgid ""
+"  [acl.deny]\n"
+"  # 3) only 'gollum' can change the file below;\n"
+"  # 'gollum' and anyone else can still change any other file.\n"
+"  /misty/mountains/cave/ring = !gollum"
+msgstr ""
+"  [acl.deny]\n"
+"  # 3) somente 'gollum' pode mudar o arquivo abaixo;\n"
+"  # 'gollum' e qualquer outro ainda pode mudar qualquer outro arquivo.\n"
+"  /misty/mountains/cave/ring = !gollum"
+
 #, python-format
 msgid "group '%s' is undefined"
-msgstr "O grupo '%s' não está definido"
+msgstr "o grupo '%s' não está definido"
 
 #, python-format
 msgid ""
@@ -1088,8 +1177,15 @@
 msgid "Bugzilla error: %s"
 msgstr "Erro do Bugzilla: %s"
 
-msgid "command to display child changesets"
-msgstr "comando para exibir revisões filhas"
+msgid "command to display child changesets (DEPRECATED)"
+msgstr "comando para exibir revisões filhas (OBSOLETO)"
+
+msgid ""
+"This extension is deprecated. You should use :hg:`log -r\n"
+"\"children(REV)\"` instead.\n"
+msgstr ""
+"Esta extensão é obsoleta. Você deve usar :hg:`log -r\n"
+"\"children(REV)\"` em seu lugar.\n"
 
 msgid "show the children of the given or working directory revision"
 msgstr "exibe os filhos da revisão pedida ou do diretório de trabalho"
@@ -1122,8 +1218,8 @@
 msgstr "comando para mostrar estatísticas do histórico do repositório"
 
 #, python-format
-msgid "Revision %d is a merge, ignoring...\n"
-msgstr "Revisão %d é uma mesclagem, ignorando...\n"
+msgid "revision %d is a merge, ignoring...\n"
+msgstr "a revisão %d é uma mesclagem, ignorando...\n"
 
 msgid "analyzing"
 msgstr "analisando"
@@ -1732,10 +1828,10 @@
 
 msgid ""
 "    Mercurial Source\n"
-"    ''''''''''''''''"
+"    ################"
 msgstr ""
 "    Origem Mercurial\n"
-"    ''''''''''''''''"
+"    ################"
 
 msgid ""
 "    The Mercurial source recognizes the following configuration\n"
@@ -1773,10 +1869,10 @@
 
 msgid ""
 "    CVS Source\n"
-"    ''''''''''"
+"    ##########"
 msgstr ""
 "    Origem CVS\n"
-"    ''''''''''"
+"    ##########"
 
 msgid ""
 "    CVS source will use a sandbox (i.e. a checked-out copy) from CVS\n"
@@ -1863,7 +1959,7 @@
 
 msgid ""
 "    :hook.cvschangesets: Specify a Python function to be called after\n"
-"        the changesets are calculated from the the CVS log. The\n"
+"        the changesets are calculated from the CVS log. The\n"
 "        function is passed a list with the changeset entries, and can\n"
 "        modify the changesets in-place, or add or delete them."
 msgstr ""
@@ -1886,10 +1982,10 @@
 
 msgid ""
 "    Subversion Source\n"
-"    '''''''''''''''''"
+"    #################"
 msgstr ""
 "    Origem Subversion\n"
-"    '''''''''''''''''"
+"    #################"
 
 msgid ""
 "    Subversion source detects classical trunk/branches/tags layouts.\n"
@@ -1957,10 +2053,10 @@
 
 msgid ""
 "    Perforce Source\n"
-"    '''''''''''''''"
+"    ###############"
 msgstr ""
 "    Origem Perforce\n"
-"    '''''''''''''''"
+"    ###############"
 
 msgid ""
 "    The Perforce (P4) importer can be given a p4 depot path or a\n"
@@ -1994,10 +2090,10 @@
 
 msgid ""
 "    Mercurial Destination\n"
-"    '''''''''''''''''''''"
+"    #####################"
 msgstr ""
 "    Destino Mercurial\n"
-"    '''''''''''''''''"
+"    #################"
 
 msgid "    The following options are supported:"
 msgstr "    As seguintes opções são suportadas:"
@@ -2226,12 +2322,12 @@
 msgstr "nem todas as revisões foram ordenadas"
 
 #, python-format
-msgid "Writing author map file %s\n"
-msgstr "Escrevendo arquivo de mapeamento de autor %s\n"
-
-#, python-format
-msgid "Ignoring bad line in author map file %s: %s\n"
-msgstr "Ignorando linha inválida no arquivo de mapeamento de autor %s: %s\n"
+msgid "writing author map file %s\n"
+msgstr "escrevendo arquivo de mapeamento de autor %s\n"
+
+#, python-format
+msgid "ignoring bad line in author map file %s: %s\n"
+msgstr "ignorando linha inválida no arquivo de mapeamento de autor %s: %s\n"
 
 #, python-format
 msgid "mapping author %s to %s\n"
@@ -2552,6 +2648,10 @@
 msgid "collecting p4 changelists\n"
 msgstr "coletando changelists do p4\n"
 
+msgid "debugsvnlog could not load Subversion python bindings"
+msgstr ""
+"debugsvnlog: não foi possível carregar os módulos python do Subversion"
+
 msgid "Mercurial failed to run itself, check hg executable is in PATH"
 msgstr ""
 "Mercurial falhou ao executar a si próprio, veja se o executável hg está no "
@@ -2572,8 +2672,8 @@
 msgid "%s does not look like a Subversion repository"
 msgstr "%s não parece ser um repositório do Subversion"
 
-msgid "Could not load Subversion python bindings"
-msgstr "Não foi possível carregar os módulos python do Subversion"
+msgid "could not load Subversion python bindings"
+msgstr "não foi possível carregar os módulos python do Subversion"
 
 #, python-format
 msgid "Subversion python bindings %d.%d found, 1.4 or later required"
@@ -3172,8 +3272,8 @@
 msgid "factotum not responding"
 msgstr "factotum não está respondendo"
 
-msgid "pull, update and merge in one command"
-msgstr "pull, update e merge em um comando"
+msgid "pull, update and merge in one command (DEPRECATED)"
+msgstr "pull, update e merge em um comando (OBSOLETA)"
 
 msgid "pull changes from a remote repository, merge new changes if needed."
 msgstr "traz mudanças de um repositório remoto, mesclando se necessário"
@@ -3240,10 +3340,10 @@
 msgstr "trazendo revisões de %s\n"
 
 msgid ""
-"Other repository doesn't support revision lookup, so a rev cannot be "
+"other repository doesn't support revision lookup, so a rev cannot be "
 "specified."
 msgstr ""
-"O outro repositório não suporta busca por revisão, portanto uma revisão não "
+"o outro repositório não suporta busca por revisão, portanto uma revisão não "
 "pode ser especificada."
 
 #, python-format
@@ -3309,8 +3409,8 @@
 msgid "%s:%d node does not exist\n"
 msgstr "nó %s:%d não existe\n"
 
-msgid "hg sigcheck REVISION"
-msgstr "hg sigcheck REVISÃO"
+msgid "hg sigcheck REV"
+msgstr "hg sigcheck REV"
 
 msgid "verify all the signatures there may be for a particular revision"
 msgstr ""
@@ -3318,8 +3418,8 @@
 "particular"
 
 #, python-format
-msgid "No valid signature for %s\n"
-msgstr "Assinatura inválida para %s\n"
+msgid "no valid signature for %s\n"
+msgstr "nenhuma assinatura válida para %s\n"
 
 msgid "make the signature local"
 msgstr "torna a assinatura local"
@@ -3342,8 +3442,8 @@
 msgid "commit message"
 msgstr "mensagem de consolidação"
 
-msgid "hg sign [OPTION]... [REVISION]..."
-msgstr "hg sign [OPÇÃO]... [REVISÃO]..."
+msgid "hg sign [OPTION]... [REV]..."
+msgstr "hg sign [OPÇÃO]... [REV]..."
 
 msgid "add a signature for the current or given revision"
 msgstr "adiciona uma assinatura para a revisão atual ou pedida"
@@ -3368,8 +3468,8 @@
 msgstr "mesclagem não consolidada - por favor forneça uma revisão específica"
 
 #, python-format
-msgid "Signing %d:%s\n"
-msgstr "Assinando %d: %s\n"
+msgid "signing %d:%s\n"
+msgstr "assinando %d: %s\n"
 
 msgid "error while signing"
 msgstr "erro ao assinar"
@@ -3396,23 +3496,6 @@
 "outgoing e log. Quando esta opção for passada, também será mostrada\n"
 "uma representação ASCII do grafo de revisões.\n"
 
-#, python-format
-msgid "-G/--graph option is incompatible with --%s"
-msgstr "a opção -G/--graph é incompatível com --%s"
-
-#, python-format
-msgid "cannot follow file not in parent revision: \"%s\""
-msgstr "não é possível seguir arquivo não presente na revisão pai: \"%s\""
-
-#, python-format
-msgid "cannot follow nonexistent file: \"%s\""
-msgstr "não é possível seguir arquivo inexistente: \"%s\""
-
-msgid "can only follow copies/renames for explicit filenames"
-msgstr ""
-"é possível acompanhar cópias/renomeações apenas para nomes de arquivo "
-"explícitos"
-
 msgid "follow changeset history, or file history across copies and renames"
 msgstr ""
 "acompanha histórico de revisões, ou histórico de arquivo através de cópias e"
@@ -3482,9 +3565,6 @@
 "    trabalho.\n"
 "    "
 
-msgid "show the revision DAG"
-msgstr "mostra o grafo de revisões"
-
 msgid "hooks for integrating with the CIA.vc notification service"
 msgstr "ganchos para integração com o serviço de notificação CIA.vc"
 
@@ -3748,6 +3828,381 @@
 msgid "The default is 'colorful'.\n"
 msgstr "O padrão é 'colorful'.\n"
 
+msgid "interactive history editing"
+msgstr "edição interativa de histórico"
+
+msgid ""
+"With this extension installed, Mercurial gains one new command: histedit. Usage\n"
+"is as follows, assuming the following history::"
+msgstr ""
+"Com essa extensão instalada, o Mercurial ganha um novo comando: histedit.\n"
+"O uso é como a seguir, assumindo o seguinte histórico::"
+
+msgid ""
+" @  3[tip]   7c2fd3b9020c   2009-04-27 18:04 -0500   durin42\n"
+" |    Add delta\n"
+" |\n"
+" o  2   030b686bedc4   2009-04-27 18:04 -0500   durin42\n"
+" |    Add gamma\n"
+" |\n"
+" o  1   c561b4e977df   2009-04-27 18:04 -0500   durin42\n"
+" |    Add beta\n"
+" |\n"
+" o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"      Add alpha"
+msgstr ""
+" @  3[tip]   7c2fd3b9020c   2009-04-27 18:04 -0500   durin42\n"
+" |    Add delta\n"
+" |\n"
+" o  2   030b686bedc4   2009-04-27 18:04 -0500   durin42\n"
+" |    Add gamma\n"
+" |\n"
+" o  1   c561b4e977df   2009-04-27 18:04 -0500   durin42\n"
+" |    Add beta\n"
+" |\n"
+" o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"      Add alpha"
+
+msgid ""
+"If you were to run ``hg histedit c561b4e977df``, you would see the following\n"
+"file open in your editor::"
+msgstr ""
+"Se você fosse rodar ``hg histedit c561b4e977df``, você veria o seguinte\n"
+"arquivo aberto no seu editor::"
+
+msgid ""
+" pick c561b4e977df Add beta\n"
+" pick 030b686bedc4 Add gamma\n"
+" pick 7c2fd3b9020c Add delta"
+msgstr ""
+" pick c561b4e977df Add beta\n"
+" pick 030b686bedc4 Add gamma\n"
+" pick 7c2fd3b9020c Add delta"
+
+msgid ""
+" # Edit history between 633536316234 and 7c2fd3b9020c\n"
+" #\n"
+" # Commands:\n"
+" #  p, pick = use commit\n"
+" #  e, edit = use commit, but stop for amending\n"
+" #  f, fold = use commit, but fold into previous commit\n"
+" #  d, drop = remove commit from history\n"
+" #  m, mess = edit message without changing commit content\n"
+" #"
+msgstr ""
+" # Edit history between 633536316234 and 7c2fd3b9020c\n"
+" #\n"
+" # Commands:\n"
+" #  p, pick = use commit\n"
+" #  e, edit = use commit, but stop for amending\n"
+" #  f, fold = use commit, but fold into previous commit\n"
+" #  d, drop = remove commit from history\n"
+" #  m, mess = edit message without changing commit content\n"
+" #"
+
+msgid ""
+"In this file, lines beginning with ``#`` are ignored. You must specify a rule\n"
+"for each revision in your history. For example, if you had meant to add gamma\n"
+"before beta, and then wanted to add delta in the same revision as beta, you\n"
+"would reorganize the file to look like this::"
+msgstr ""
+"Nesse arquivo, linhas que começam com ``#`` são ignoradas. Você deve\n"
+"especificar uma regra para cada revisão no seu histórico. Por exemplo,\n"
+"para alterar o histórico para adicionar gama antes de beta, e acrescentar\n"
+"delta na mesma revisão que beta, você reorganizaria o arquivo para ficar\n"
+"da seguinte forma:"
+
+msgid ""
+" pick 030b686bedc4 Add gamma\n"
+" pick c561b4e977df Add beta\n"
+" fold 7c2fd3b9020c Add delta"
+msgstr ""
+" pick 030b686bedc4 Add gamma\n"
+" pick c561b4e977df Add beta\n"
+" fold 7c2fd3b9020c Add delta"
+
+msgid ""
+"At which point you close the editor and ``histedit`` starts working. When you\n"
+"specify a ``fold`` operation, ``histedit`` will open an editor when it folds\n"
+"those revisions together, offering you a chance to clean up the commit message::"
+msgstr ""
+"Em seguida, no momento em que você fechar o editor, o 'histedit'\n"
+"começará a funcionar.\n"
+"Quando você especificar a operação ``fold``(incorporar), ``histedit``\n"
+"abrirá um editor ao incorporar as revisões, oferecendo a você\n"
+"uma chance de limpar a mensagem de consolidação::"
+
+msgid ""
+" Add beta\n"
+" ***\n"
+" Add delta"
+msgstr ""
+" Add beta\n"
+" ***\n"
+" Add delta"
+
+msgid ""
+"Edit the commit message to your liking, then close the editor. For\n"
+"this example, let's assume that the commit message was changed to\n"
+"``Add beta and delta.`` After histedit has run and had a chance to\n"
+"remove any old or temporary revisions it needed, the history looks\n"
+"like this::"
+msgstr ""
+"Edite a mensagem de consolidação, e feche o editor.\n"
+"Para esse exemplo, vamos assumir que a mensagem\n"
+"foi mudada para ``Add beta and delta.``Depois que o histedit for\n"
+"executado, e tiver removido quaisquer revisões velhas ou temporárias\n"
+"de que necessitava, o histórico se parecerá com o seguinte::"
+
+msgid ""
+" @  2[tip]   989b4d060121   2009-04-27 18:04 -0500   durin42\n"
+" |    Add beta and delta.\n"
+" |\n"
+" o  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n"
+" |    Add gamma\n"
+" |\n"
+" o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"      Add alpha"
+msgstr ""
+" @  2[tip]   989b4d060121   2009-04-27 18:04 -0500   durin42\n"
+" |    Add beta and delta.\n"
+" |\n"
+" o  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n"
+" |    Add gamma\n"
+" |\n"
+" o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"      Add alpha"
+
+msgid ""
+"Note that ``histedit`` does *not* remove any revisions (even its own temporary\n"
+"ones) until after it has completed all the editing operations, so it will\n"
+"probably perform several strip operations when it's done. For the above example,\n"
+"it had to run strip twice. Strip can be slow depending on a variety of factors,\n"
+"so you might need to be a little patient. You can choose to keep the original\n"
+"revisions by passing the ``--keep`` flag."
+msgstr ""
+"Note que ``histedit`` *não* remove qualquer revisão (até mesmo\n"
+"as temporárias) até completar todas as operações de edição, então\n"
+"provavelmente ele irá realizar diversas operações de remoção\n"
+"quando for terminado. Para o exemplo acima, ele teve que executar\n"
+"a remoção duas vezes. Dependendo de uma variedade de fatores, a\n"
+"remoção pode ser lenta, então você pode precisar ser um pouco\n"
+"paciente. Você pode escolher manter as revisões originais passando\n"
+"o parâmetro ``--keep``."
+
+msgid ""
+"The ``edit`` operation will drop you back to a command prompt,\n"
+"allowing you to edit files freely, or even use ``hg record`` to commit\n"
+"some changes as a separate commit. When you're done, any remaining\n"
+"uncommitted changes will be committed as well. When done, run ``hg\n"
+"histedit --continue`` to finish this step. You'll be prompted for a\n"
+"new commit message, but the default commit message will be the\n"
+"original message for the ``edit`` ed revision."
+msgstr ""
+"A operação de edição (``edit``) irá conduzi-lo de volta ao prompt de comando,\n"
+"permitindo que você edite arquivos livremente, ou mesmo use ``hg record``\n"
+"para consolidar algumas mudanças como uma consolidação separada. Quando\n"
+"você acabar, qualquer mudança restante não consolidada também será\n"
+"consolidada. Quando terminado, execute ``hg histedit --continue`` para\n"
+"finalizar essa etapa. Você será consultado interativamente para uma nova\n"
+"mensagem de consolidação, mas o texto da mensagem original será incluído\n"
+"na edição."
+
+msgid ""
+"The ``message`` operation will give you a chance to revise a commit\n"
+"message without changing the contents. It's a shortcut for doing\n"
+"``edit`` immediately followed by `hg histedit --continue``."
+msgstr ""
+"A operação de mensagem ( ``message``) irá dar a você a chance de\n"
+"revisar uma mensagem de consolidação sem mudar o conteúdo. É um\n"
+"atalho para fazer ``edit`` e imediatamente em seguida fazer\n"
+"``hg histedit --continue``."
+
+msgid ""
+"If ``histedit`` encounters a conflict when moving a revision (while\n"
+"handling ``pick`` or ``fold``), it'll stop in a similar manner to\n"
+"``edit`` with the difference that it won't prompt you for a commit\n"
+"message when done. If you decide at this point that you don't like how\n"
+"much work it will be to rearrange history, or that you made a mistake,\n"
+"you can use ``hg histedit --abort`` to abandon the new changes you\n"
+"have made and return to the state before you attempted to edit your\n"
+"history."
+msgstr ""
+"Se ``histedit`` encontrar um conflito ao mover uma revisão\n"
+"(ao executar ``pick`` ou ``fold``), ela parará de uma maneira\n"
+"similar a ``edit``, mas não solicitará uma mensagem de consolidação\n"
+"ao encerrar. Se nesse ponto você mudar de ideia a respeito da\n"
+"reorganização do histórico, você pode usar ``hg histedit --abort``\n"
+"para abandonar as novas mudanças e retornar ao estado anterior\n"
+"à tentativa de edição de histórico."
+
+msgid ""
+"If we clone the example repository above and add three more changes, such that\n"
+"we have the following history::"
+msgstr ""
+"Se clonarmos o repositório de exemplo acima e adicionarmos mais\n"
+"três mudanças, de modo que tenhamos o seguinte histórico::"
+
+msgid ""
+"   @  6[tip]   038383181893   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add theta\n"
+"   |\n"
+"   o  5   140988835471   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add eta\n"
+"   |\n"
+"   o  4   122930637314   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add zeta\n"
+"   |\n"
+"   o  3   836302820282   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add epsilon\n"
+"   |\n"
+"   o  2   989b4d060121   2009-04-27 18:04 -0500   durin42\n"
+"   |    Add beta and delta.\n"
+"   |\n"
+"   o  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n"
+"   |    Add gamma\n"
+"   |\n"
+"   o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"        Add alpha"
+msgstr ""
+"   @  6[tip]   038383181893   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add theta\n"
+"   |\n"
+"   o  5   140988835471   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add eta\n"
+"   |\n"
+"   o  4   122930637314   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add zeta\n"
+"   |\n"
+"   o  3   836302820282   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add epsilon\n"
+"   |\n"
+"   o  2   989b4d060121   2009-04-27 18:04 -0500   durin42\n"
+"   |    Add beta and delta.\n"
+"   |\n"
+"   o  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n"
+"   |    Add gamma\n"
+"   |\n"
+"   o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"        Add alpha"
+
+msgid ""
+"If you run ``hg histedit --outgoing`` on the clone then it is the same\n"
+"as running ``hg histedit 836302820282``. If you need plan to push to a\n"
+"repository that Mercurial does not detect to be related to the source\n"
+"repo, you can add a ``--force`` option.\n"
+msgstr ""
+"Rodar ``hg histedit --outgoing`` no clone será o mesmo que rodar\n"
+"``hg histedit 836302820282``. Caso você pretenda enviar revisões para\n"
+"um repositório que o Mercurial detectar como não relacionado ao de\n"
+"origem, você pode adicionar uma opção ``--force``.\n"
+
+msgid "cannot edit history that would orphan nodes"
+msgstr "não é possível editar histórico de forma a produzir nós órfãos"
+
+msgid "can't edit history with merges"
+msgstr "não se pode editar histórico contendo mesclagens"
+
+#, python-format
+msgid "%s: empty changeset"
+msgstr "%s: revisão vazia"
+
+msgid "Fix up the change and run hg histedit --continue"
+msgstr "Conserte a mudança e execute hg histedit --continue"
+
+msgid ""
+"Make changes as needed, you may commit or record as needed now.\n"
+"When you are finished, run hg histedit --continue to resume."
+msgstr ""
+"Faça mudanças conforme for necessário, consolidando ou gravando usando record.\n"
+"Quando tiver terminado, execute hg histedit --continue para retomar."
+
+msgid "Read history edits from the specified file."
+msgstr "Lê alterações de histórico a partir do arquivo especificado."
+
+msgid "continue an edit already in progress"
+msgstr "continua uma edição em progresso"
+
+msgid "don't strip old nodes after edit is complete"
+msgstr "não remove nós antigos após o término da edição"
+
+msgid "abort an edit in progress"
+msgstr "aborta uma edição de histórico em andamento"
+
+msgid "changesets not found in destination"
+msgstr "revisões não encontradas no destino"
+
+msgid "force outgoing even for unrelated repositories"
+msgstr "força outgoing mesmo para repositórios não relacionados"
+
+msgid "first revision to be edited"
+msgstr "primeira revisão a ser editada"
+
+msgid "[PARENT]"
+msgstr "[PAI]"
+
+msgid ""
+"interactively edit changeset history\n"
+"    "
+msgstr ""
+"edição interativa de histórico de revisões\n"
+"    "
+
+msgid "source has mq patches applied"
+msgstr "a origem tem patches mq aplicados"
+
+msgid "only one repo argument allowed with --outgoing"
+msgstr "apenas um repositório pode ser usado com --outgoing"
+
+#, python-format
+msgid "comparing with %s\n"
+msgstr "comparando com %s\n"
+
+msgid "--force only allowed with --outgoing"
+msgstr "--force só é permitido com --outgoing"
+
+msgid "no arguments allowed with --continue"
+msgstr "--continue não recebe argumentos adicionais"
+
+msgid "no arguments allowed with --abort"
+msgstr "--abort não recebe argumentos adicionais"
+
+msgid "history edit already in progress, try --continue or --abort"
+msgstr ""
+"uma edição de histórico já está em progresso, tente --continue ou --abort"
+
+msgid "histedit requires exactly one parent revision"
+msgstr "histedit requer exatamente uma revisão pai"
+
+msgid "histedit: Should update metadata for the following changes:\n"
+msgstr "histedit: Deve atualizar metadados para as seguintes mudanças:\n"
+
+#, python-format
+msgid "histedit:  %s to %s\n"
+msgstr "histedit:  %s a %s\n"
+
+#, python-format
+msgid "histedit:     moving bookmarks %s\n"
+msgstr "histedit:     movendo marcadores %s\n"
+
+msgid "must specify a rule for each changeset once"
+msgstr "é necessário especificar uma vez uma regra para cada revisão"
+
+#, python-format
+msgid "malformed line \"%s\""
+msgstr "linha malformada \"%s\""
+
+msgid "may not use changesets other than the ones listed"
+msgstr "não é possível usar revisões além das listadas"
+
+#, python-format
+msgid "unknown changeset %s listed"
+msgstr "revisão desconhecida %s listada"
+
+#, python-format
+msgid "unknown action \"%s\""
+msgstr "ação desconhecida \"%s\""
+
 msgid "accelerate status report using Linux's inotify service"
 msgstr "acelera informações de status usando o serviço inotify do Linux"
 
@@ -4573,6 +5028,14 @@
 msgid "largefile %s missing from store (needs to be uploaded)"
 msgstr "o largefile %s está faltando no repositório (deve ser enviado)"
 
+#, python-format
+msgid "%d additional largefiles cached\n"
+msgstr "%d largefiles adicionados ao cache\n"
+
+#, python-format
+msgid "%d largefiles failed to download\n"
+msgstr "o download de %d largefiles falhou\n"
+
 msgid "getting changed largefiles\n"
 msgstr "obtendo largefiles modificados\n"
 
@@ -4605,15 +5068,15 @@
 msgstr "sistema operacional desconhecido: %s\n"
 
 #, python-format
-msgid "Found %s in store\n"
-msgstr "Encontrado %s no armazenamento\n"
-
-#, python-format
-msgid "Found %s in system cache\n"
-msgstr "Encontrado %s no cache do sistema\n"
-
-msgid "Can't get file locally"
-msgstr "Não é possível obter o arquivo localmente"
+msgid "found %s in store\n"
+msgstr "encontrado %s no armazenamento\n"
+
+#, python-format
+msgid "found %s in system cache\n"
+msgstr "encontrado %s no cache do sistema\n"
+
+msgid "can't get file locally"
+msgstr "não é possível obter o arquivo localmente"
 
 #, python-format
 msgid ""
@@ -4713,12 +5176,12 @@
 msgid "&Other"
 msgstr "&Outra"
 
+msgid "no files to copy"
+msgstr "nenhum arquivo para copiar"
+
 msgid "destination largefile already exists"
 msgstr "largefile de destino já existe"
 
-msgid "no files to copy"
-msgstr "nenhum arquivo para copiar"
-
 msgid "caching new largefiles\n"
 msgstr "adicionando novos largefiles ao cache\n"
 
@@ -4727,6 +5190,10 @@
 msgstr "%d largefiles adicionados ao cache\n"
 
 #, python-format
+msgid "--all-largefiles is incompatible with non-local destination %s"
+msgstr "--all-largefiles é incompatível com um destino não-local %s"
+
+#, python-format
 msgid "unknown archive type '%s'"
 msgstr "tipo de arquivo '%s' desconhecido"
 
@@ -4844,6 +5311,12 @@
 msgid "display outgoing largefiles"
 msgstr "exibe largefiles a serem enviados"
 
+msgid "download all pulled versions of largefiles"
+msgstr "baixa todas as versões trazidas dos largefiles"
+
+msgid "download all versions of all largefiles"
+msgstr "baixa todas as versões de todos os largefiles"
+
 msgid "manage a stack of patches"
 msgstr "gerencia uma pilha de patches"
 
@@ -4937,10 +5410,36 @@
 
 msgid ""
 "You will by default be managing a patch queue named \"patches\". You can\n"
-"create other, independent patch queues with the :hg:`qqueue` command.\n"
+"create other, independent patch queues with the :hg:`qqueue` command."
 msgstr ""
 "Você gerenciará por padrão uma fila de patches chamada \"patches\". Você\n"
-"pode criar outras filas independentes usando o comando :hg:`qqueue`.\n"
+"pode criar outras filas independentes usando o comando :hg:`qqueue`."
+
+msgid ""
+"If the working directory contains uncommitted files, qpush, qpop and\n"
+"qgoto abort immediately. If -f/--force is used, the changes are\n"
+"discarded. Setting::"
+msgstr ""
+"Se o diretório de trabalho contiver mudanças não consolidadas,\n"
+"qpush, qpop e qgoto abortam imediatamente. Se for usado -f/--force,\n"
+"essas mudanças serão descartadas. A definição::"
+
+msgid ""
+"  [mq]\n"
+"  keepchanges = True"
+msgstr ""
+"  [mq]\n"
+"  keepchanges = True"
+
+msgid ""
+"make them behave as if --keep-changes were passed, and non-conflicting\n"
+"local changes will be tolerated and preserved. If incompatible options\n"
+"such as -f/--force or --exact are passed, this setting is ignored.\n"
+msgstr ""
+"faz com que esses comandos se comportem como se --keep-changes\n"
+"tivesse sido passada, e mudanças locais não conflitantes serão\n"
+"toleradas e preservadas. Se forem passadas mudanças incompatíveis\n"
+"como -f/--force ou --exact, esta configuração será ignorada.\n"
 
 msgid "print first line of patch header"
 msgstr "imprime a primeira linha do cabeçalho do patch"
@@ -5042,6 +5541,9 @@
 msgid "unable to read %s\n"
 msgstr "impossível ler %s\n"
 
+msgid "local changes found, refresh first"
+msgstr "mudanças locais encontradas, você deve primeiro renovar"
+
 #, python-format
 msgid "patch %s is empty\n"
 msgstr "o patch %s é vazio\n"
@@ -5099,9 +5601,6 @@
 msgid "uncommitted changes in subrepository %s"
 msgstr "mudanças não consolidadas no sub-repositório %s"
 
-msgid "local changes found, refresh first"
-msgstr "mudanças locais encontradas, você deve primeiro renovar"
-
 msgid "local changes found"
 msgstr "mudanças locais encontradas"
 
@@ -5125,6 +5624,9 @@
 msgid "patch \"%s\" already exists"
 msgstr "o patch \"%s\" já existe"
 
+msgid "cannot use both --force and --keep-changes"
+msgstr "não se pode especificar --force e --keep-changes simultaneamente"
+
 msgid "cannot manage merge changesets"
 msgstr "não se pode gerenciar revisões de mesclagem"
 
@@ -5175,8 +5677,11 @@
 msgid "patch series already fully applied\n"
 msgstr "série de patches já completamente aplicada\n"
 
+msgid "cannot use --exact and --keep-changes together"
+msgstr "não se pode especificar --exact e --keep-changes simultaneamente"
+
 msgid "cannot use --exact and --move together"
-msgstr "não se pode usar --exact e --move ao mesmo tempo"
+msgstr "não se pode especificar --exact e --move simultaneamente"
 
 msgid "cannot push --exact with applied patches"
 msgstr "não se pode fazer qpush usando --exact com patches aplicados"
@@ -5257,8 +5762,8 @@
 msgid "patch %s is not in series file"
 msgstr "o patch %s não está no arquivo series"
 
-msgid "No saved patch data found\n"
-msgstr "Nenhum dado salvo de patches encontrado\n"
+msgid "no saved patch data found\n"
+msgstr "nenhum dado salvo de patches encontrado\n"
 
 #, python-format
 msgid "restoring status: %s\n"
@@ -5278,8 +5783,8 @@
 msgid "updating queue directory\n"
 msgstr "atualizando diretório da fila\n"
 
-msgid "Unable to load queue repository\n"
-msgstr "Incapaz de carregar o repositório da fila\n"
+msgid "unable to load queue repository\n"
+msgstr "incapaz de carregar o repositório da fila\n"
 
 msgid "save: no patches applied, exiting\n"
 msgstr "save: nenhum patch aplicado, saindo\n"
@@ -5300,6 +5805,9 @@
 msgid "option \"-r\" not valid when importing files"
 msgstr "opção \"-r\" inválida ao importar arquivos"
 
+msgid "no files or revisions specified"
+msgstr "nenhuma revisão ou arquivo especificados"
+
 msgid "option \"-n\" not valid when importing multiple patches"
 msgstr "opção \"-n\" inválida ao importar múltiplos patches"
 
@@ -5430,8 +5938,8 @@
 msgid "qpush after importing"
 msgstr "executa qpush após importar"
 
-msgid "hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... FILE..."
-msgstr "hg qimport [-e] [-n NOME] [-f] [-g] [-P] [-r REV]... ARQUIVO..."
+msgid "hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... [FILE]..."
+msgstr "hg qimport [-e] [-n NOME] [-f] [-g] [-P] [-r REV]... [ARQUIVO]..."
 
 msgid "import a patch or existing changeset"
 msgstr "importa um patch ou revisão existente"
@@ -5845,8 +6353,8 @@
 msgstr "qfold requer ao menos um nome de patch"
 
 #, python-format
-msgid "Skipping already folded patch %s\n"
-msgstr "Omitindo patch %s já incorporado\n"
+msgid "skipping already folded patch %s\n"
+msgstr "omitindo patch %s já incorporado\n"
 
 #, python-format
 msgid "qfold cannot fold already applied patch %s"
@@ -5856,6 +6364,9 @@
 msgid "error folding patch %s"
 msgstr "erro incorporando patch %s"
 
+msgid "tolerate non-conflicting local changes"
+msgstr "tolera alterações locais não conflitantes"
+
 msgid "overwrite any local changes"
 msgstr "sobrescreve qualquer alteração local"
 
@@ -5958,11 +6469,16 @@
 msgstr "empilha o próximo patch na pilha"
 
 msgid ""
-"    When -f/--force is applied, all local changes in patched files\n"
-"    will be lost."
-msgstr ""
-"    Se -f/--force for pedido, todas as mudanças locais em arquivos\n"
-"    modificados pelo patch serão perdidas."
+"    By default, abort if the working directory contains uncommitted\n"
+"    changes. With --keep-changes, abort only if the uncommitted files\n"
+"    overlap with patched files. With -f/--force, backup and patch over\n"
+"    uncommitted changes."
+msgstr ""
+"    Por padrão, aborta se o diretório de trabalho contiver mudanças\n"
+"    não consolidadas. Com a opção --keep-changes, aborta apenas se as\n"
+"    mudanças não consolidadas se sobrepõe a arquivos no patch. Com\n"
+"    -f/--force, cria uma cópia de segurança e sobrescreve as mudanças\n"
+"    não consolidadas."
 
 msgid "no saved queues found, please use -n\n"
 msgstr "nenhuma fila salva encontrada, por favor use -n\n"
@@ -5987,14 +6503,26 @@
 msgstr "desempilha o patch atual da pilha"
 
 msgid ""
-"    By default, pops off the top of the patch stack. If given a patch\n"
-"    name, keeps popping off patches until the named patch is at the\n"
-"    top of the stack."
-msgstr ""
-"    Por padrão, desempilha o topo da pilha de patches. Se for\n"
+"    Without argument, pops off the top of the patch stack. If given a\n"
+"    patch name, keeps popping off patches until the named patch is at\n"
+"    the top of the stack."
+msgstr ""
+"    Sem parâmetros, desempilha o topo da pilha de patches. Se for\n"
 "    passado um nome, desempilha sucessivamente os patches até que\n"
 "    o patch com esse nome esteja no topo da pilha."
 
+msgid ""
+"    By default, abort if the working directory contains uncommitted\n"
+"    changes. With --keep-changes, abort only if the uncommitted files\n"
+"    overlap with patched files. With -f/--force, backup and discard\n"
+"    changes made to such files."
+msgstr ""
+"    Por padrão, aborta se o diretório de trabalho contiver mudanças\n"
+"    não consolidadas. Com a opção --keep-changes, aborta apenas se as\n"
+"    mudanças não consolidadas se sobrepõem a arquivos no patch. Com\n"
+"    -f/--force, cria uma cópia de segurança e descarta as mudanças\n"
+"    desses arquivos."
+
 #, python-format
 msgid "using patch queue: %s\n"
 msgstr "usando fila de patches: %s\n"
@@ -6087,8 +6615,11 @@
 msgid "do not modify working copy during strip"
 msgstr "não modifica a cópia de trabalho durante o strip"
 
-msgid "hg strip [-k] [-f] [-n] REV..."
-msgstr "hg strip [-k] [-f] [-n] REV..."
+msgid "remove revs only reachable from given bookmark"
+msgstr "remove revisões alcançáveis apenas pelo marcador dado"
+
+msgid "hg strip [-k] [-f] [-n] [-B bookmark] [-r] REV..."
+msgstr "hg strip [-k] [-f] [-n] [-B marcador] [-r] REV..."
 
 msgid "strip changesets and all their descendants from the repository"
 msgstr "remove do repositório revisões e todos os seus descendentes"
@@ -6148,6 +6679,14 @@
 "    tiverem sido enviadas para um repositório remoto, um comando pull\n"
 "    subsequente poderá trazê-las de volta."
 
+#, python-format
+msgid "bookmark '%s' not found"
+msgstr "marcador '%s' não encontrado"
+
+#, python-format
+msgid "bookmark '%s' deleted\n"
+msgstr "marcador '%s' apagado\n"
+
 msgid "empty revision set"
 msgstr "conjunto vazio de revisões"
 
@@ -6405,16 +6944,13 @@
 msgid "cannot commit over an applied mq patch"
 msgstr "não se pode consolidar sobre um patch mq aplicado"
 
-msgid "source has mq patches applied"
-msgstr "a origem tem patches mq aplicados"
-
 #, python-format
 msgid "mq status file refers to unknown node %s\n"
 msgstr "arquivo de estado da mq se refere ao nó desconhecido %s\n"
 
 #, python-format
-msgid "Tag %s overrides mq patch of the same name\n"
-msgstr "A etiqueta %s se sobrepõe ao patch mq de mesmo nome\n"
+msgid "tag %s overrides mq patch of the same name\n"
+msgstr "a etiqueta %s se sobrepõe ao patch mq de mesmo nome\n"
 
 msgid "cannot import over an applied patch"
 msgstr "não se pode importar sobre um patch aplicado"
@@ -6771,10 +7307,10 @@
 
 msgid ""
 "  [pager]\n"
-"  pager = less -FRSX"
+"  pager = less -FRX"
 msgstr ""
 "  [pager]\n"
-"  pager = less -FRSX"
+"  pager = less -FRX"
 
 msgid ""
 "If no pager is set, the pager extensions uses the environment variable\n"
@@ -7191,10 +7727,6 @@
 "    seu hgrc. Veja a seção [email] em hgrc(5) para mais detalhes.\n"
 "    "
 
-#, python-format
-msgid "comparing with %s\n"
-msgstr "comparando com %s\n"
-
 msgid "no changes found\n"
 msgstr "nenhuma alteração encontrada\n"
 
@@ -7219,8 +7751,8 @@
 "Escreva a mensagem introdutória para a série de patches."
 
 #, python-format
-msgid "This patch series consists of %d patches."
-msgstr "Esta série de patches consiste de %d patches."
+msgid "this patch series consists of %d patches."
+msgstr "esta série de patches consiste de %d patches."
 
 msgid "no recipient addresses provided"
 msgstr "nenhum endereço de destinatário fornecido"
@@ -7244,11 +7776,11 @@
 msgid "patchbomb canceled"
 msgstr "patchbomb cancelado"
 
-msgid "Displaying "
-msgstr "Exibindo "
-
-msgid "Sending "
-msgstr "Enviando "
+msgid "displaying "
+msgstr "exibindo "
+
+msgid "sending "
+msgstr "enviando "
 
 msgid "sending"
 msgstr "enviando"
@@ -7437,12 +7969,12 @@
 msgstr "aviso: %s\n"
 
 #, python-format
-msgid "Removing file %s\n"
-msgstr "Removendo arquivo %s\n"
-
-#, python-format
-msgid "Removing directory %s\n"
-msgstr "Removendo diretório %s\n"
+msgid "removing file %s\n"
+msgstr "removendo arquivo %s\n"
+
+#, python-format
+msgid "removing directory %s\n"
+msgstr "removendo diretório %s\n"
 
 msgid "command to move sets of revisions to a different ancestor"
 msgstr "comando para mover conjuntos de revisões para um ancestral diferente"
@@ -7495,8 +8027,8 @@
 msgid "keep original branch names"
 msgstr "mantém nomes de ramos originais"
 
-msgid "force detaching of source from its original branch"
-msgstr "força desacoplamento da origem de seu ramo original"
+msgid "(DEPRECATED)"
+msgstr "(OBSOLETA)"
 
 msgid "specify merge tool"
 msgstr "especifica o utilitário de mesclagem"
@@ -7630,9 +8162,6 @@
 msgid "cannot use collapse with continue or abort"
 msgstr "não se pode usar collapse com continue ou abort"
 
-msgid "cannot use detach with continue or abort"
-msgstr "não se pode usar detach com continue ou abort"
-
 msgid "abort and continue do not allow specifying revisions"
 msgstr "abort e continue não permitem especificar revisões"
 
@@ -7648,12 +8177,6 @@
 msgid "cannot specify both a revision and a source"
 msgstr "não se pode especificar ao mesmo tempo uma revisão e uma origem"
 
-msgid "detach requires a revision to be specified"
-msgstr "detach exige que uma revisão seja especificada"
-
-msgid "cannot specify a base with detach"
-msgstr "não se pode especificar base com detach"
-
 msgid "can't remove original changesets with unrebased descendants"
 msgstr ""
 "não é possível remover revisões originais que tenham descendentes não "
@@ -8005,9 +8528,6 @@
 msgid "hardlinks are not supported on this system"
 msgstr "hardlinks não são suportados neste sistema"
 
-msgid "must specify local origin repository"
-msgstr "é necessário especificar um repositório de origem local"
-
 #, python-format
 msgid "relinking %s to %s\n"
 msgstr "restaurando hardlinks de %s para %s\n"
@@ -8231,10 +8751,6 @@
 msgid "can only omit patchfile if merging"
 msgstr "só é possível omitir arquivo de patch em uma mesclagem"
 
-#, python-format
-msgid "%s: empty changeset"
-msgstr "%s: revisão vazia"
-
 msgid "fix up the merge and run hg transplant --continue"
 msgstr "conserte a mesclagem e execute hg transplant --continue"
 
@@ -8360,11 +8876,11 @@
 "    transplantadas serão pedidas interativamente."
 
 msgid ""
-"    :hg:`transplant --branch REVISION --all` will transplant the\n"
+"    :hg:`transplant --branch REV --all` will transplant the\n"
 "    selected branch (up to the named revision) onto your current\n"
 "    working directory."
 msgstr ""
-"    :hg:`transplant --branch REVISÃO --all` irá transplantar o ramo\n"
+"    :hg:`transplant --branch REV --all` irá transplantar o ramo\n"
 "    selecionado (até a revisão pedida) no seu diretório de trabalho\n"
 "    atual."
 
@@ -8614,9 +9130,9 @@
 "Mercurial.ini ou %s.\n"
 
 #, python-format
-msgid "Attempt to commit or push text file(s) using %s line endings\n"
-msgstr ""
-"Tentativa de consolidação ou push de arquivo(s) texto usando quebras de "
+msgid "attempt to commit or push text file(s) using %s line endings\n"
+msgstr ""
+"tentativa de consolidação ou push de arquivo(s) texto usando quebras de "
 "linha %s\n"
 
 #, python-format
@@ -8729,6 +9245,10 @@
 msgid "divergent bookmark %s stored as %s\n"
 msgstr "marcador divergente %s guardado como %s\n"
 
+#, python-format
+msgid "adding remote bookmark %s\n"
+msgstr "adicionando marcador remoto %s\n"
+
 msgid "searching for changed bookmarks\n"
 msgstr "procurando por marcadores modificados\n"
 
@@ -8944,13 +9464,30 @@
 msgstr "%s: nenhuma chave nomeada '%s'"
 
 #, python-format
-msgid "Found revision %s from %s\n"
-msgstr "Encontrada revisão %s de %s\n"
+msgid "found revision %s from %s\n"
+msgstr "encontrada revisão %s de %s\n"
 
 msgid "revision matching date not found"
 msgstr "revisão com data equivalente não encontrada"
 
 #, python-format
+msgid "cannot follow file not in parent revision: \"%s\""
+msgstr "não é possível seguir arquivo não presente na revisão pai: \"%s\""
+
+#, python-format
+msgid "cannot follow nonexistent file: \"%s\""
+msgstr "não é possível seguir arquivo inexistente: \"%s\""
+
+msgid "can only follow copies/renames for explicit filenames"
+msgstr ""
+"é possível acompanhar cópias/renomeações apenas para nomes de arquivo "
+"explícitos"
+
+#, python-format
+msgid "-G/--graph option is incompatible with --%s"
+msgstr "a opção -G/--graph é incompatível com --%s"
+
+#, python-format
 msgid "adding %s\n"
 msgstr "adicionando %s\n"
 
@@ -9148,6 +9685,9 @@
 msgid "output diffstat-style summary of changes"
 msgstr "imprime sumário de mudanças no estilo diffstat"
 
+msgid "show the revision DAG"
+msgstr "mostra o grafo de revisões"
+
 msgid "treat all files as text"
 msgstr "trata todos os arquivos como texto"
 
@@ -9254,25 +9794,27 @@
 "    próxima consolidação."
 
 msgid ""
-"    Use the -s/--similarity option to detect renamed files. With a\n"
-"    parameter greater than 0, this compares every removed file with\n"
-"    every added file and records those similar enough as renames. This\n"
+"    Use the -s/--similarity option to detect renamed files. This\n"
 "    option takes a percentage between 0 (disabled) and 100 (files must\n"
-"    be identical) as its parameter. Detecting renamed files this way\n"
+"    be identical) as its parameter. With a parameter greater than 0,\n"
+"    this compares every removed file with every added file and records\n"
+"    those similar enough as renames. Detecting renamed files this way\n"
 "    can be expensive. After using this option, :hg:`status -C` can be\n"
-"    used to check which files were identified as moved or renamed.\n"
-"    If this option is not specified, only renames of identical files\n"
-"    are detected."
+"    used to check which files were identified as moved or renamed. If\n"
+"    not specified, -s/--similarity defaults to 100 and only renames of\n"
+"    identical files are detected."
 msgstr ""
 "    Use a opção -s/--similarity para detectar arquivos renomeados.\n"
-"    Com um parâmetro maior do que 0, compara cada arquivo removido com cada\n"
+"    Esta opção recebe como parâmetro uma porcentagem entre 0\n"
+"    (desabilitada) e 100 (arquivos devem ser idênticos).    Com um parâmetro maior do que 0, compara cada arquivo removido com cada\n"
 "    arquivo adicionado e grava como renomeações aqueles semelhantes o\n"
-"    bastante. Esta opção usa uma porcentagem entre 0 (desabilitada)\n"
-"    e 100 (arquivos devem ser idênticos) como parâmetro. Detectar\n"
+"    bastante.  Detectar\n"
 "    desta maneira arquivos renomeados pode ser uma operação cara.\n"
 "    Após o uso dessa opção, :hg:`status -C` pode ser usado para\n"
 "    verificar quais arquivos foram identificados como movidos ou\n"
-"    renomeados. Se esta opção não for especificada, apenas\n"
+"    renomeados.\n"
+"    Se -s/--similarity não for especificada, seu valor será 100,\n"
+"    de modo que apenas\n"
 "    renomeações idênticas aos originais serão detectadas."
 
 msgid "similarity must be a number"
@@ -9590,13 +10132,17 @@
 
 msgid ""
 "    If you supply a command, it will be used for automatic bisection.\n"
-"    Its exit status will be used to mark revisions as good or bad:\n"
-"    status 0 means good, 125 means to skip the revision, 127\n"
-"    (command not found) will abort the bisection, and any other\n"
-"    non-zero exit status means the revision is bad."
+"    The environment variable HG_NODE will contain the ID of the\n"
+"    changeset being tested. The exit status of the command will be\n"
+"    used to mark revisions as good or bad: status 0 means good, 125\n"
+"    means to skip the revision, 127 (command not found) will abort the\n"
+"    bisection, and any other non-zero exit status means the revision\n"
+"    is bad."
 msgstr ""
 "    Se você fornecer um comando ele será usado para bissecção\n"
-"    automática. Seu código de saída será usado para marcar revisões\n"
+"    automática. A variável de ambiente HG_NODE conterá o ID da\n"
+"    revisão sendo testada. O código de saída do comando\n"
+"    será usado para marcar revisões\n"
 "    como boas ou ruins: o código de saída 0 marcará a revisão como\n"
 "    boa, 125 omitirá a revisão, 127 (comando não encontrado)\n"
 "    abortará a bissecção, e qualquer outro código maior que 0\n"
@@ -9680,6 +10226,16 @@
 msgid "          hg log -r \"bisect(pruned)\""
 msgstr "          hg log -r \"bisect(pruned)\""
 
+msgid ""
+"      - see the changeset currently being bisected (especially useful\n"
+"        if running with -U/--noupdate)::"
+msgstr ""
+"      - mostra a revisão sendo bisseccionada no momento (especialmente\n"
+"        útil ao rodar com -U/--noupdate)::"
+
+msgid "          hg log -r \"bisect(current)\""
+msgstr "          hg log -r \"bisect(current)\""
+
 msgid "      - see all changesets that took part in the current bisection::"
 msgstr "      - mostra todas as revisões que tomam parte na bissecção atual::"
 
@@ -9730,11 +10286,19 @@
 msgstr "não é possível fazer o bisect (nenhuma revisão ruim conhecida)"
 
 msgid "(use of 'hg bisect <cmd>' is deprecated)\n"
-msgstr "(uso 'hg bisect <cmd>' é obsoleto)\n"
+msgstr "(o uso 'hg bisect <cmd>' é obsoleto)\n"
 
 msgid "incompatible arguments"
 msgstr "argumentos incompatíveis"
 
+msgid "current bisect revision is unknown - start a new bisect to fix"
+msgstr ""
+"a revisão biseccionada atual é desconhecida - para corrigir inicie uma nova "
+"bissecção"
+
+msgid "current bisect revision is a merge"
+msgstr "a revisão biseccionada atual é uma mesclagem"
+
 #, python-format
 msgid "failed to execute %s"
 msgstr "falhou ao executar %s"
@@ -9744,8 +10308,8 @@
 msgstr "%s morto"
 
 #, python-format
-msgid "Changeset %d:%s: %s\n"
-msgstr "Revisão %d:%s: %s\n"
+msgid "changeset %d:%s: %s\n"
+msgstr "revisão %d:%s: %s\n"
 
 #, python-format
 msgid "Extending search to changeset %d:%s\n"
@@ -10735,15 +11299,15 @@
 msgstr "testa a instalação do Mercurial"
 
 #, python-format
-msgid "Checking encoding (%s)...\n"
-msgstr "Verificando codificação (%s)...\n"
+msgid "checking encoding (%s)...\n"
+msgstr "verificando codificação (%s)...\n"
 
 msgid " (check that your locale is properly set)\n"
 msgstr " (verifique se seu locale está configurado propriamente)\n"
 
 #, python-format
-msgid "Checking installed modules (%s)...\n"
-msgstr "Verificando módulos instalados (%s)...\n"
+msgid "checking installed modules (%s)...\n"
+msgstr "verificando módulos instalados (%s)...\n"
 
 msgid " One or more extensions could not be found"
 msgstr " Uma ou mais extensões não puderam ser encontradas"
@@ -10752,14 +11316,14 @@
 msgstr " (verifique se você compilou as extensões)\n"
 
 #, python-format
-msgid "Checking templates (%s)...\n"
-msgstr "Verificando modelos (%s)...\n"
+msgid "checking templates (%s)...\n"
+msgstr "verificando modelos (%s)...\n"
 
 msgid " (templates seem to have been installed incorrectly)\n"
 msgstr " (modelos parecem ter sido instalados incorretamente)\n"
 
-msgid "Checking commit editor...\n"
-msgstr "Verificando editor para consolidação...\n"
+msgid "checking commit editor...\n"
+msgstr "verificando editor para consolidação...\n"
 
 msgid " No commit editor set and can't find vi in PATH\n"
 msgstr ""
@@ -10774,14 +11338,14 @@
 msgid " Can't find editor '%s' in PATH\n"
 msgstr " Não é possível localizar editor '%s' no PATH\n"
 
-msgid "Checking username...\n"
-msgstr "Verificando nome de usuário...\n"
+msgid "checking username...\n"
+msgstr "verificando nome de usuário...\n"
 
 msgid " (specify a username in your configuration file)\n"
 msgstr " (especifique um nome de usuário em seu arquivo de configuração)\n"
 
-msgid "No problems detected\n"
-msgstr "Nenhum problema detectado\n"
+msgid "no problems detected\n"
+msgstr "nenhum problema detectado\n"
 
 #, python-format
 msgid "%s problems detected, please check your install!\n"
@@ -10794,8 +11358,8 @@
 msgstr "testa se os ids dos nós são conhecidos em um repositório"
 
 msgid ""
-"    Every ID must be a full-length hex node id string. Returns a list of 0s and 1s\n"
-"    indicating unknown/known.\n"
+"    Every ID must be a full-length hex node id string. Returns a list of 0s\n"
+"    and 1s indicating unknown/known.\n"
 "    "
 msgstr ""
 "    Todo ID deve ser uma string hexadecimal completa.\n"
@@ -10803,6 +11367,12 @@
 "    desconhecidos e conhecidos.\n"
 "    "
 
+msgid "[OBSOLETED [REPLACEMENT] [REPL... ]"
+msgstr "[OBSOLETA [SUBSTITUTA] [SUBSTITUTA... ]"
+
+msgid "create arbitrary obsolete marker"
+msgstr "cria uma marcação de obsolescência arbitrária"
+
 msgid "REPO NAMESPACE [KEY OLD NEW]"
 msgstr "REPOSITÓRIO NAMESPACE [CHAVE ANTIGO NOVO]"
 
@@ -11025,8 +11595,8 @@
 msgid "revisions to export"
 msgstr "revisões a serem exportadas"
 
-msgid "[OPTION]... [-o OUTFILESPEC] REV..."
-msgstr "[OPÇÃO]... [-o PADRÃOARQSAÍDA] REV..."
+msgid "[OPTION]... [-o OUTFILESPEC] [-r] REV..."
+msgstr "[OPÇÃO]... [-o PADRÃOARQSAÍDA] [-r] REV..."
 
 msgid "dump the header and diffs for one or more changesets"
 msgstr "exibe o cabeçalho e diffs para uma ou mais revisões"
@@ -11181,17 +11751,23 @@
 msgid "          hg forget \"set:hgignore()\""
 msgstr "          hg forget \"set:hgignore()\""
 
+msgid "revisions to graft"
+msgstr "revisões a serem enxertadas"
+
 msgid "resume interrupted graft"
 msgstr "continua um enxerto interrompido"
 
+msgid "append graft info to log message"
+msgstr "anexa informações de enxerto à mensagem de log"
+
 msgid "record the current date as commit date"
 msgstr "grava a data atual como data da consolidação"
 
 msgid "record the current user as committer"
 msgstr "grava o usuário atual como autor da consolidação"
 
-msgid "[OPTION]... REVISION..."
-msgstr "[OPÇÃO]... REVISÃO..."
+msgid "[OPTION]... [-r] REV..."
+msgstr "[OPÇÃO]... [-r] REV..."
 
 msgid "copy changes from other branches onto the current branch"
 msgstr "copia mudanças de outros ramos para o ramo atual"
@@ -11217,6 +11793,9 @@
 "    Serão omitidas revisões ancestrais da revisão atual, já\n"
 "    enxertadas ou mesclagens."
 
+msgid "      (grafted from CHANGESETHASH)"
+msgstr "      (grafted from CHANGESETHASH)"
+
 msgid ""
 "    If a graft merge results in conflicts, the graft process is\n"
 "    interrupted so that the current merge can be manually resolved.\n"
@@ -11312,6 +11891,10 @@
 msgid "use hg resolve and hg graft --continue"
 msgstr "use hg resolve e hg graft --continue"
 
+#, python-format
+msgid "graft for revision %s is empty\n"
+msgstr "o enxerto para a revisão %s é vazio\n"
+
 msgid "end fields with NUL"
 msgstr "termina campos com NUL"
 
@@ -11466,6 +12049,9 @@
 msgid "show only help for commands"
 msgstr "mostra apenas a ajuda para comandos"
 
+msgid "show topics matching keyword"
+msgstr "mostra os tópicos que correspondem à palavra chave"
+
 msgid "[-ec] [TOPIC]"
 msgstr "[-ec] [TÓPICO]"
 
@@ -11492,42 +12078,6 @@
 "    Devolve 0 para indicar sucesso.\n"
 "    "
 
-msgid "VALUE"
-msgstr "VALOR"
-
-msgid "DEPRECATED"
-msgstr "OBSOLETO"
-
-msgid ""
-"\n"
-"[+] marked option can be specified multiple times\n"
-msgstr ""
-"\n"
-"opções marcadas com [+] podem ser especificadas múltiplas vezes\n"
-
-msgid "global options:"
-msgstr "opções globais:"
-
-msgid "use \"hg help\" for the full list of commands"
-msgstr "use \"hg help\" para a lista completa de comandos"
-
-msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
-msgstr "use \"hg help\" para a lista completa de comandos ou \"hg -v\" para detalhes"
-
-#, python-format
-msgid "use \"hg help %s\" to show the full help text"
-msgstr "use \"hg help %s\" para mostrar o texto completo de ajuda"
-
-#, python-format
-msgid "use \"hg -v help%s\" to show builtin aliases and global options"
-msgstr ""
-"use \"hg -v help%s\" para mostrar apelidos pré-definidos de comandos e "
-"opções globais"
-
-#, python-format
-msgid "use \"hg -v help %s\" to show more info"
-msgstr "use \"hg -v help %s\" para mostrar mais informações"
-
 #, python-format
 msgid ""
 "\n"
@@ -11562,6 +12112,9 @@
 msgid "options:"
 msgstr "opções:"
 
+msgid "global options:"
+msgstr "opções globais:"
+
 #, python-format
 msgid ""
 "\n"
@@ -11597,6 +12150,22 @@
 "\n"
 "tópicos adicionais de ajuda:"
 
+msgid "use \"hg help\" for the full list of commands"
+msgstr "use \"hg help\" para a lista completa de comandos"
+
+msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
+msgstr "use \"hg help\" para a lista completa de comandos ou \"hg -v\" para detalhes"
+
+#, python-format
+msgid "use \"hg help %s\" to show the full help text"
+msgstr "use \"hg help %s\" para mostrar o texto completo de ajuda"
+
+#, python-format
+msgid "use \"hg -v help%s\" to show builtin aliases and global options"
+msgstr ""
+"use \"hg -v help%s\" para mostrar apelidos pré-definidos de comandos e "
+"opções globais"
+
 #, python-format
 msgid ""
 "\n"
@@ -11620,6 +12189,12 @@
 msgid "'%s' is provided by the following extension:"
 msgstr "'%s' é fornecido pela seguinte extensão:"
 
+msgid "Topics"
+msgstr "Tópicos"
+
+msgid "Extension Commands"
+msgstr "Comandos de Extensões"
+
 msgid "Mercurial Distributed SCM\n"
 msgstr "Sistema de controle de versão distribuído Mercurial\n"
 
@@ -12270,6 +12845,23 @@
 "    Devolve 0 para indicar sucesso, 1 se houver arquivos não resolvidos.\n"
 "    "
 
+msgid ""
+"multiple matching bookmarks to merge - please merge with an explicit rev or "
+"bookmark"
+msgstr ""
+"múltiplos marcadores para mesclar - por favor mescle com uma revisão ou "
+"marcador explícitos"
+
+msgid "run 'hg heads' to see all heads"
+msgstr "execute 'hg heads' para ver todas as cabeças"
+
+msgid ""
+"no matching bookmark to merge - please merge with an explicit rev or "
+"bookmark"
+msgstr ""
+"nenhum marcador correspondente para mesclar - por favor mescle com uma "
+"revisão ou marcador explícitos"
+
 #, python-format
 msgid "branch '%s' has %d heads - please merge with an explicit rev"
 msgstr ""
@@ -12278,15 +12870,17 @@
 msgid "run 'hg heads .' to see heads"
 msgstr "execute 'hg heads .' para ver as cabeças"
 
+msgid "heads are bookmarked - please merge with an explicit rev"
+msgstr ""
+"as cabeças estão marcadas com bookmarks - por favor mescle com uma revisão "
+"explícita"
+
 #, python-format
 msgid "branch '%s' has one head - please merge with an explicit rev"
 msgstr ""
 "o ramo '%s' tem apenas uma cabeça - por favor mescle com uma revisão "
 "explícita"
 
-msgid "run 'hg heads' to see all heads"
-msgstr "execute 'hg heads' para ver todas as cabeças"
-
 msgid "nothing to merge"
 msgstr "nada para mesclar"
 
@@ -12564,13 +13158,6 @@
 msgid "remote bookmark %s not found!"
 msgstr "marcador remoto %s não encontrado!"
 
-msgid ""
-"other repository doesn't support revision lookup, so a rev cannot be "
-"specified."
-msgstr ""
-"o outro repositório não suporta busca por revisão, portanto uma revisão não "
-"pode ser especificada."
-
 #, python-format
 msgid "importing bookmark %s\n"
 msgstr "importando marcador %s\n"
@@ -12638,6 +13225,15 @@
 "    ancestrais serão enviados para o repositório remoto."
 
 msgid ""
+"    If -B/--bookmark is used, the specified bookmarked revision, its\n"
+"    ancestors, and the bookmark will be pushed to the remote\n"
+"    repository."
+msgstr ""
+"    Se -B/--bookmark for usado, a revisão marcada especificada, seus\n"
+"    ancestrais, e o próprio marcador serão enviados para o repositório\n"
+"    remoto."
+
+msgid ""
 "    Please see :hg:`help urls` for important details about ``ssh://``\n"
 "    URLs. If DESTINATION is omitted, a default path will be used."
 msgstr ""
@@ -12952,15 +13548,17 @@
 msgstr ""
 "restaura arquivos para o estado correspondente a uma cópia de trabalho"
 
-msgid ""
-"    .. note::\n"
+msgid "    .. note::"
+msgstr "    .. note::"
+
+msgid ""
 "       To check out earlier revisions, you should use :hg:`update REV`.\n"
-"       To cancel a merge (and lose your changes), use :hg:`update --clean .`."
-msgstr ""
-"    .. note::\n"
+"       To cancel an uncommitted merge (and lose your changes), use\n"
+"       :hg:`update --clean .`."
+msgstr ""
 "       Para obter revisões anteriores, você deve usar :hg:`update REV`.\n"
-"       Para cancelar uma mesclagem (e perder suas modificações), use\n"
-"       :hg:`update --clean .`."
+"       Para cancelar uma mesclagem não consolidada (e descartar suas\n"
+"       modificações), use :hg:`update --clean .`."
 
 msgid ""
 "    With no revision specified, revert the specified files or directories\n"
@@ -13061,36 +13659,41 @@
 msgid ""
 "    Transactions are used to encapsulate the effects of all commands\n"
 "    that create new changesets or propagate existing changesets into a\n"
-"    repository. For example, the following commands are transactional,\n"
-"    and their effects can be rolled back:"
+"    repository."
 msgstr ""
 "    Transações são usadas para encapsular os efeitos de todos os comandos\n"
 "    que criam novas revisões ou propagam revisões existentes para o\n"
-"    repositório. Por exemplo, os seguintes comandos são transacionais,\n"
-"    e seus efeitos podem ser revertidos com rollback::"
-
-msgid ""
-"    - commit\n"
-"    - import\n"
-"    - pull\n"
-"    - push (with this repository as the destination)\n"
-"    - unbundle"
-msgstr ""
-"    - commit\n"
-"    - import\n"
-"    - pull\n"
-"    - push (com este repositório como destino)\n"
-"    - unbundle"
-
-msgid ""
-"    To avoid permanent data loss, rollback will refuse to rollback a\n"
-"    commit transaction if it isn't checked out. Use --force to\n"
-"    override this protection."
-msgstr ""
-"    Para evitar perda permanente de dados, o comando rollback se recusará\n"
-"    a desfazer a transação de um commit se a revisão correspondente não\n"
-"    for a revisão atual do diretório de trabalho. Para desabilitar essa\n"
-"    proteção e remover a revisão de qualquer maneira, use a opção --force."
+"    repositório."
+
+msgid ""
+"      For example, the following commands are transactional, and their\n"
+"      effects can be rolled back:"
+msgstr ""
+"      Por exemplo, os seguintes comandos são transacionais,\n"
+"      e seus efeitos podem ser revertidos com rollback::"
+
+msgid ""
+"      - commit\n"
+"      - import\n"
+"      - pull\n"
+"      - push (with this repository as the destination)\n"
+"      - unbundle"
+msgstr ""
+"      - commit\n"
+"      - import\n"
+"      - pull\n"
+"      - push (com este repositório como destino)\n"
+"      - unbundle"
+
+msgid ""
+"      To avoid permanent data loss, rollback will refuse to rollback a\n"
+"      commit transaction if it isn't checked out. Use --force to\n"
+"      override this protection."
+msgstr ""
+"      Para evitar perda permanente de dados, o comando rollback se recusará\n"
+"      a desfazer a transação de um commit se a revisão correspondente não\n"
+"      for a revisão atual do diretório de trabalho. Para desabilitar essa\n"
+"      proteção e remover a revisão de qualquer maneira, use a opção --force."
 
 msgid ""
 "    This command is not intended for use on public repositories. Once\n"
@@ -13215,9 +13818,6 @@
 msgid "cannot use --stdio with --cmdserver"
 msgstr "não se pode usar --stdio com --cmdserver"
 
-msgid "There is no Mercurial repository here (.hg not found)"
-msgstr "Não há um repositório do Mercurial aqui (.hg não encontrado)"
-
 #, python-format
 msgid "listening at http://%s%s/%s (bound to %s:%d)\n"
 msgstr "ouvindo em http://%s%s/%s (associado a %s:%d)\n"
@@ -13633,6 +14233,9 @@
 msgid "not at a branch head (use -f to force)"
 msgstr "não está em uma cabeça de ramo (use -f para forçar)"
 
+msgid "null revision specified"
+msgstr "foi especificada a revisão nula"
+
 msgid "list repository tags"
 msgstr "lista as etiquetas do repositório"
 
@@ -13720,6 +14323,13 @@
 "    (veja :hg:`help bookmarks`)."
 
 msgid ""
+"    Update sets the working directory's parent revison to the specified\n"
+"    changeset (see :hg:`help parents`)."
+msgstr ""
+"    Update muda o pai do diretório de trabalho para a revisão especificada\n"
+"    (veja :hg:`help parents`)."
+
+msgid ""
 "    If the changeset is not a descendant or ancestor of the working\n"
 "    directory's parent, the update is aborted. With the -c/--check\n"
 "    option, the working directory is checked for uncommitted changes; if\n"
@@ -13734,51 +14344,51 @@
 "    atualizado para a revisão pedida."
 
 msgid ""
-"    Update sets the working directory's parent revison to the specified\n"
-"    changeset (see :hg:`help parents`)."
-msgstr ""
-"    Update muda o pai do diretório de trabalho para a revisão especificada\n"
-"    (veja :hg:`help parents`)."
-
-msgid ""
-"    The following rules apply when the working directory contains\n"
-"    uncommitted changes:"
-msgstr ""
-"    Quando o diretório de trabalho contiver mudanças não consolidadas, as\n"
-"    seguintes regras se aplicam:"
-
-msgid ""
-"    1. If neither -c/--check nor -C/--clean is specified, and if\n"
-"       the requested changeset is an ancestor or descendant of\n"
-"       the working directory's parent, the uncommitted changes\n"
-"       are merged into the requested changeset and the merged\n"
-"       result is left uncommitted. If the requested changeset is\n"
-"       not an ancestor or descendant (that is, it is on another\n"
-"       branch), the update is aborted and the uncommitted changes\n"
-"       are preserved."
-msgstr ""
-"    1. Se nem -c/--check nem -C/--clean forem especificadas, e se a\n"
-"       revisão pedida for um ancestral ou um descendente do pai do\n"
-"       diretório de trabalho, as alterações não consolidadas são\n"
-"       mescladas com a revisão pedida e o resultado da mesclagem não\n"
-"       será automaticamente consolidado. Se a revisão pedida não for\n"
-"       um ancestral ou um descendente (ou seja, se estiver em um\n"
-"       outro ramo), a atualização abortará e as mudanças não\n"
-"       consolidadas serão preservadas."
-
-msgid ""
-"    2. With the -c/--check option, the update is aborted and the\n"
-"       uncommitted changes are preserved."
-msgstr ""
-"    2. Com a opção -c/--check, a atualização abortará e as mudanças\n"
-"       não consolidadas serão preservadas."
-
-msgid ""
-"    3. With the -C/--clean option, uncommitted changes are discarded and\n"
-"       the working directory is updated to the requested changeset."
-msgstr ""
-"    3. Com a opção -C/--clean, mudanças não consolidadas são descartadas\n"
-"       e o diretório de trabalho é atualizado para a revisão pedida."
+"      The following rules apply when the working directory contains\n"
+"      uncommitted changes:"
+msgstr ""
+"      Quando o diretório de trabalho contiver mudanças não consolidadas, as\n"
+"      seguintes regras se aplicam:"
+
+msgid ""
+"      1. If neither -c/--check nor -C/--clean is specified, and if\n"
+"         the requested changeset is an ancestor or descendant of\n"
+"         the working directory's parent, the uncommitted changes\n"
+"         are merged into the requested changeset and the merged\n"
+"         result is left uncommitted. If the requested changeset is\n"
+"         not an ancestor or descendant (that is, it is on another\n"
+"         branch), the update is aborted and the uncommitted changes\n"
+"         are preserved."
+msgstr ""
+"      1. Se nem -c/--check nem -C/--clean forem especificadas, e se a\n"
+"         revisão pedida for um ancestral ou um descendente do pai do\n"
+"         diretório de trabalho, as alterações não consolidadas são\n"
+"         mescladas com a revisão pedida e o resultado da mesclagem não\n"
+"         será automaticamente consolidado. Se a revisão pedida não for\n"
+"         um ancestral ou um descendente (ou seja, se estiver em um\n"
+"         outro ramo), a atualização abortará e as mudanças não\n"
+"         consolidadas serão preservadas."
+
+msgid ""
+"      2. With the -c/--check option, the update is aborted and the\n"
+"         uncommitted changes are preserved."
+msgstr ""
+"      2. Com a opção -c/--check, a atualização abortará e as mudanças\n"
+"         não consolidadas serão preservadas."
+
+msgid ""
+"      3. With the -C/--clean option, uncommitted changes are discarded and\n"
+"         the working directory is updated to the requested changeset."
+msgstr ""
+"      3. Com a opção -C/--clean, mudanças não consolidadas são descartadas\n"
+"         e o diretório de trabalho é atualizado para a revisão pedida."
+
+msgid ""
+"    To cancel an uncommitted merge (and lose your changes), use\n"
+"    :hg:`update --clean .`."
+msgstr ""
+"    Para cancelar uma mesclagem não consolidada (e perder suas\n"
+"    modificações), use :hg:`update --clean .`."
 
 msgid ""
 "    Use null as the changeset to remove the working directory (like\n"
@@ -14086,13 +14696,28 @@
 msgid "abort: out of memory\n"
 msgstr "abortado: sem memória\n"
 
+msgid "the extension author."
+msgstr "o autor da extensão."
+
+#, python-format
+msgid ""
+"** Unknown exception encountered with possibly-broken third-party extension %s\n"
+"** which supports versions %s of Mercurial.\n"
+"** Please disable %s and try your action again.\n"
+"** If that fixes the bug please report it to %s\n"
+msgstr ""
+"** Exceção desconhecida encontrada, envolvendo a extensão de terceiros %s,\n"
+"** possivelmente defeituosa, que suporta a versão %s do Mercurial.\n"
+"** Por favor desabilite %s e tente sua ação novamente.\n"
+"** Se isso corrigir o erro, por favor informe-o para %s\n"
+
 msgid "** unknown exception encountered, please report by visiting\n"
 msgstr ""
 "** exceção desconhecida encontrada, por favor informe sobre esse erro "
 "visitando\n"
 
-msgid "**  http://mercurial.selenic.com/wiki/BugTracker\n"
-msgstr "**  http://mercurial.selenic.com/wiki/BugTracker\n"
+msgid "** http://mercurial.selenic.com/wiki/BugTracker\n"
+msgstr "** http://mercurial.selenic.com/wiki/BugTracker\n"
 
 #, python-format
 msgid "** Python %s\n"
@@ -14155,8 +14780,8 @@
 "--repository pode ser abreviada apenas como --repo!"
 
 #, python-format
-msgid "Time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n"
-msgstr "Tempo: real %.3f segs (user %.3f+%.3f sys %.3f+%.3f)\n"
+msgid "time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n"
+msgstr "tempo: real %.3f segs (user %.3f+%.3f sys %.3f+%.3f)\n"
 
 #, python-format
 msgid "repository '%s' is not local"
@@ -14603,6 +15228,19 @@
 msgid "disabled extensions:"
 msgstr "extensões desabilitadas:"
 
+msgid "VALUE"
+msgstr "VALOR"
+
+msgid "DEPRECATED"
+msgstr "OBSOLETO"
+
+msgid ""
+"\n"
+"[+] marked option can be specified multiple times\n"
+msgstr ""
+"\n"
+"opções marcadas com [+] podem ser especificadas múltiplas vezes\n"
+
 msgid "Configuration Files"
 msgstr "Arquivos de Configuração"
 
@@ -14691,10 +15329,10 @@
 
 msgid ""
 "Files\n"
-"-----"
+"====="
 msgstr ""
 "Arquivos\n"
-"--------"
+"========"
 
 msgid ""
 "Mercurial reads configuration data from several files, if they exist.\n"
@@ -14854,10 +15492,10 @@
 
 msgid ""
 "Syntax\n"
-"------"
+"======"
 msgstr ""
 "Sintaxe\n"
-"-------"
+"======="
 
 msgid ""
 "A configuration file consists of sections, led by a ``[section]`` header\n"
@@ -15043,10 +15681,10 @@
 
 msgid ""
 "Sections\n"
-"--------"
+"========"
 msgstr ""
 "Seções\n"
-"------"
+"======"
 
 msgid ""
 "This section describes the different sections that may appear in a\n"
@@ -15059,10 +15697,10 @@
 
 msgid ""
 "``alias``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "``alias``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid ""
 "Defines command aliases.\n"
@@ -15184,11 +15822,11 @@
 msgid ""
 "\n"
 "``annotate``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 msgstr ""
 "\n"
 "``annotate``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 
 msgid ""
 "Settings used when displaying file annotations. All values are\n"
@@ -15223,11 +15861,11 @@
 msgid ""
 "\n"
 "``auth``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 msgstr ""
 "\n"
 "``auth``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 
 msgid ""
 "Authentication credentials for HTTP authentication. This section\n"
@@ -15369,11 +16007,11 @@
 msgid ""
 "\n"
 "``decode/encode``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"-----------------"
 msgstr ""
 "\n"
 "``decode/encode``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"-----------------"
 
 msgid ""
 "Filters for transforming files on checkout/checkin. This would\n"
@@ -15476,11 +16114,11 @@
 msgid ""
 "\n"
 "``defaults``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 msgstr ""
 "\n"
 "``defaults``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 
 msgid "(defaults are deprecated. Don't use them. Use aliases instead)"
 msgstr ""
@@ -15523,11 +16161,11 @@
 msgid ""
 "\n"
 "``diff``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 msgstr ""
 "\n"
 "``diff``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 
 msgid ""
 "Settings used when displaying diffs. Everything except for ``unified``\n"
@@ -15568,10 +16206,10 @@
 
 msgid ""
 "``email``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "``email``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid "Settings for extensions that send email messages."
 msgstr "Definições para extensões que enviam mensagens de email."
@@ -15687,11 +16325,11 @@
 msgid ""
 "\n"
 "``extensions``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------"
 msgstr ""
 "\n"
 "``extensions``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------"
 
 msgid ""
 "Mercurial has an extension mechanism for adding new features. To\n"
@@ -15749,11 +16387,11 @@
 msgid ""
 "\n"
 "``format``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 msgstr ""
 "\n"
 "``format``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 
 msgid ""
 "``usestore``\n"
@@ -15812,10 +16450,10 @@
 
 msgid ""
 "``graph``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "``graph``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid ""
 "Web graph view configuration. This section let you change graph\n"
@@ -15863,10 +16501,10 @@
 
 msgid ""
 "``hooks``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "``hooks``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid ""
 "Commands or Python functions that get automatically executed by\n"
@@ -16272,11 +16910,11 @@
 msgid ""
 "\n"
 "``hostfingerprints``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------------"
 msgstr ""
 "\n"
 "``hostfingerprints``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------------"
 
 msgid ""
 "Fingerprints of the certificates of known HTTPS servers.\n"
@@ -16313,11 +16951,11 @@
 msgid ""
 "\n"
 "``http_proxy``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------"
 msgstr ""
 "\n"
 "``http_proxy``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------"
 
 msgid ""
 "Used to access web-based Mercurial repositories through a HTTP\n"
@@ -16369,10 +17007,10 @@
 
 msgid ""
 "``merge-patterns``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------------"
 msgstr ""
 "``merge-patterns``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------------"
 
 msgid ""
 "This section specifies merge tools to associate with particular file\n"
@@ -16396,10 +17034,10 @@
 
 msgid ""
 "``merge-tools``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"---------------"
 msgstr ""
 "``merge-tools``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"---------------"
 
 msgid ""
 "This section configures external merge tools to use for file-level\n"
@@ -16617,11 +17255,11 @@
 msgid ""
 "\n"
 "``patch``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "\n"
 "``patch``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid ""
 "Settings used when applying patches, for instance through the 'import'\n"
@@ -16658,11 +17296,11 @@
 msgid ""
 "\n"
 "``paths``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "\n"
 "``paths``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid ""
 "Assigns symbolic names to repositories. The left side is the\n"
@@ -16697,10 +17335,10 @@
 
 msgid ""
 "``phases``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 msgstr ""
 "``phases``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 
 msgid ""
 "Specifies default handling of phases. See :hg:`help phases` for more\n"
@@ -16733,10 +17371,10 @@
 
 msgid ""
 "``profiling``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"-------------"
 msgstr ""
 "``profiling``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"-------------"
 
 msgid ""
 "Specifies profiling type, format, and file output. Two profilers are\n"
@@ -16842,10 +17480,10 @@
 
 msgid ""
 "``revsetalias``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"---------------"
 msgstr ""
 "``revsetalias``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"---------------"
 
 msgid "Alias definitions for revsets. See :hg:`help revsets` for details."
 msgstr ""
@@ -16854,10 +17492,10 @@
 
 msgid ""
 "``server``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 msgstr ""
 "``server``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 
 msgid "Controls generic server settings."
 msgstr "Controla configurações genéricas de servidores."
@@ -16912,10 +17550,10 @@
 
 msgid ""
 "``smtp``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 msgstr ""
 "``smtp``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 
 msgid "Configuration for extensions that need to send email messages."
 msgstr "Configurações para extensões que enviam mensagens de email."
@@ -16976,11 +17614,11 @@
 msgid ""
 "\n"
 "``subpaths``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 msgstr ""
 "\n"
 "``subpaths``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 
 msgid ""
 "Subrepository source URLs can go stale if a remote server changes name\n"
@@ -17012,7 +17650,7 @@
 msgstr "reescreve ``http://server/foo-hg/`` como ``http://hg.server/foo/``."
 
 msgid ""
-"Relative subrepository paths are first made absolute, and the the\n"
+"Relative subrepository paths are first made absolute, and the\n"
 "rewrite rules are then applied on the full (absolute) path. The rules\n"
 "are applied in definition order."
 msgstr ""
@@ -17022,10 +17660,10 @@
 
 msgid ""
 "``trusted``\n"
-"\"\"\"\"\"\"\"\"\"\"\""
+"-----------"
 msgstr ""
 "``trusted``\n"
-"\"\"\"\"\"\"\"\"\"\"\""
+"-----------"
 
 msgid ""
 "Mercurial will not use the settings in the\n"
@@ -17075,11 +17713,11 @@
 msgid ""
 "\n"
 "``ui``\n"
-"\"\"\"\"\"\""
+"------"
 msgstr ""
 "\n"
 "``ui``\n"
-"\"\"\"\"\"\""
+"------"
 
 msgid "User interface controls."
 msgstr "Controles de interface com o usuário."
@@ -17351,11 +17989,11 @@
 msgid ""
 "\n"
 "``web``\n"
-"\"\"\"\"\"\"\""
+"-------"
 msgstr ""
 "\n"
 "``web``\n"
-"\"\"\"\"\"\"\""
+"-------"
 
 msgid ""
 "Web interface configuration. The settings in this section apply to\n"
@@ -17726,6 +18364,20 @@
 "    Onde escrever o log de erros. O padrão é a saída de erros (stderr)."
 
 msgid ""
+"``comparisoncontext``\n"
+"    Number of lines of context to show in side-by-side file comparison. If\n"
+"    negative or the value ``full``, whole files are shown. Default is 5.\n"
+"    This setting can be overridden by a ``context`` request parameter to the\n"
+"    ``comparison`` command, taking the same values."
+msgstr ""
+"``comparisoncontext``\n"
+"    Número de linhas de contexto a serem exibidas em comparações lado a\n"
+"    lado. Se negativo, ou com o valor ``full``, serão exibidos arquivos\n"
+"    completos. O padrão é 5.\n"
+"    Esta configuração pode ser redefinida por um parâmetro ``context`` do\n"
+"    pedido para o comando ``comparison``, recebendo os mesmos valores."
+
+msgid ""
 "``hidden``\n"
 "    Whether to hide the repository in the hgwebdir index.\n"
 "    Default is False."
@@ -19360,10 +20012,10 @@
 
 msgid ""
 "Synopsis\n"
-"--------"
+"========"
 msgstr ""
 "Sinopse\n"
-"-------"
+"======="
 
 msgid ""
 "The Mercurial system uses a file called ``.hgignore`` in the root\n"
@@ -19376,10 +20028,10 @@
 
 msgid ""
 "Description\n"
-"-----------"
+"==========="
 msgstr ""
 "Descrição\n"
-"---------"
+"========="
 
 msgid ""
 "The working directory of a Mercurial repository will often contain\n"
@@ -19439,6 +20091,17 @@
 ":hg:`help <comando>` e :hg:`help patterns` para mais detalhes."
 
 msgid ""
+"Files that are already tracked are not affected by .hgignore, even\n"
+"if they appear in .hgignore. An untracked file X can be explicitly\n"
+"added with :hg:`add X`, even if X would be excluded by a pattern\n"
+"in .hgignore."
+msgstr ""
+"O .hgignore não afeta arquivos já rastreados, mesmo que estes\n"
+"apareçam no .hgignore. Um arquivo X não rastreado pode ser adicionado\n"
+"explicitamente usando :hg:`add X`, mesmo se X estiver sendo excluído\n"
+"por um padrão no .hgignore."
+
+msgid ""
 "An ignore file is a plain text file consisting of a list of patterns,\n"
 "with one pattern per line. Empty lines are skipped. The ``#``\n"
 "character is treated as a comment character, and the ``\\`` character\n"
@@ -19507,10 +20170,10 @@
 
 msgid ""
 "Example\n"
-"-------"
+"======="
 msgstr ""
 "Exemplo\n"
-"-------"
+"======="
 
 msgid "Here is an example ignore file. ::"
 msgstr "Este é um exemplo de arquivo hgignore. ::"
@@ -19542,22 +20205,23 @@
 
 msgid ""
 "Mercurial's internal web server, hgweb, can serve either a single\n"
-"repository, or a collection of them. In the latter case, a special\n"
-"configuration file can be used to specify the repository paths to use\n"
-"and global web configuration options."
-msgstr ""
-"hgweb, o servidor web interno do Mercurial, pode servir tanto\n"
-"um único como uma coleção de repositórios. No último caso, um\n"
-"arquivo de configuração especial pode ser usado para especificar\n"
-"os caminhos dos repositórios a serem usados e opções globais\n"
-"de configuração web.."
-
-msgid ""
-"This file uses the same syntax as other Mercurial configuration files,\n"
-"but only the following sections are recognized:"
+"repository, or a tree of repositories. In the second case, repository\n"
+"paths and global options can be defined using a dedicated\n"
+"configuration file common to :hg:`serve`, ``hgweb.wsgi``,\n"
+"``hgweb.cgi`` and ``hgweb.fcgi``."
+msgstr ""
+"hgweb, o servidor web interno do Mercurial, é capaz de servir tanto um único\n"
+"repositório como uma árvore de repositórios. No caso de uma árvore,\n"
+"os caminhos e opções globais podem ser especificados através de um\n"
+"arquivo de configuração dedicado comum a :hg:`serve`, ``hgweb.wsgi``,\n"
+"``hgweb.cgi`` e ``hgweb.fcgi``."
+
+msgid ""
+"This file uses the same syntax as other Mercurial configuration files\n"
+"but recognizes only the following sections:"
 msgstr ""
 "Este arquivo usa a mesma sintaxe de arquivos de configuração do Mercurial,\n"
-"mas apenas as seguintes seções são reconhecidas:"
+"mas reconhece apenas as seguintes seções:"
 
 msgid ""
 "  - web\n"
@@ -19568,86 +20232,87 @@
 "  - paths\n"
 "  - collections"
 
-msgid ""
-"The ``web`` section can specify all the settings described in the web\n"
-"section of the hgrc(5) documentation. See :hg:`help config` for\n"
-"information on where to find the manual page."
-msgstr ""
-"A seção ``web`` pode especificar todas as configurações descritas na\n"
-"seção web da documentação do hgrc (man page hgrc(5)). Veja\n"
-":hg:`help config` para informações sobre onde encontrar a página\n"
-"de manual."
-
-msgid ""
-"The ``paths`` section provides mappings of physical repository\n"
-"paths to virtual ones. For instance::"
-msgstr ""
-"A seção ``paths`` provê mapeamentos de caminhos de repositórios\n"
-"físicos para virtuais. Por exemplo::"
+msgid "The ``web`` options are thorougly described in :hg:`help config`."
+msgstr "As opções ``web`` são descritas com detalhes em :hg:`help config`."
+
+msgid ""
+"The ``paths`` section maps URL paths to paths of repositories in the\n"
+"filesystem. hgweb will not expose the filesystem directly - only\n"
+"Mercurial repositories can be published and only according to the\n"
+"configuration."
+msgstr ""
+"A seção ``paths`` mapeia caminhos URL para caminhos de\n"
+"repositórios no sistema de arquivos. O hgweb não expõe o\n"
+"sistema de arquivos diretamente - apenas repositórios\n"
+"do Mercurial podem ser publicados e apenas de acordo com a\n"
+"configuração."
+
+msgid ""
+"The left hand side is the path in the URL. Note that hgweb reserves\n"
+"subpaths like ``rev`` or ``file``, try using different names for\n"
+"nested repositories to avoid confusing effects."
+msgstr ""
+"O lado esquerdo corresponde ao caminho na URL. Note que o hgweb\n"
+"reserva caminhos intermediários como ``rev`` ou ``file``, tente\n"
+"usar nomes diferentes para repositórios aninhados para evitar\n"
+"confusão."
+
+msgid ""
+"The right hand side is the path in the filesystem. If the specified\n"
+"path ends with ``*`` or ``**`` the filesystem will be searched\n"
+"recursively for repositories below that point.\n"
+"With ``*`` it will not recurse into the repositories it finds (except for\n"
+"``.hg/patches``).\n"
+"With ``**`` it will also search inside repository working directories\n"
+"and possibly find subrepositories."
+msgstr ""
+"O lado direito corresponde ao caminho no sistema de arquivos.\n"
+"Se o caminho especificado terminar por ``*`` ou ``**``, será feita\n"
+"uma busca recursiva por repositórios a partir daquele ponto.\n"
+"Com ``*`` a busca não entrará nos repositórios que encontrar (com\n"
+"a exceção de ``.hg/patches``).\n"
+"Com ``**`` a busca incluirá os diretórios de trabalho dos\n"
+"repositórios, e eventuais sub-repositórios."
+
+msgid "In this example::"
+msgstr "Neste exemplo::"
 
 msgid ""
 "  [paths]\n"
-"  projects/a = /foo/bar\n"
-"  projects/b = /baz/quux\n"
-"  web/root = /real/root/*\n"
-"  / = /real/root2/*\n"
-"  virtual/root2 = /real/root2/**"
+"  /projects/a = /srv/tmprepos/a\n"
+"  /projects/b = c:/repos/b\n"
+"  / = /srv/repos/*\n"
+"  /user/bob = /home/bob/repos/**"
 msgstr ""
 "  [paths]\n"
-"  projetos/a = /foo/bar\n"
-"  projetos/b = /baz/quux\n"
-"  web/raiz = /raiz/real/*\n"
-"  / = /raiz/real2/*\n"
-"  raiz/virtual2 = /raiz/real2/**"
+"  /projects/a = /srv/tmprepos/a\n"
+"  /projects/b = c:/repos/b\n"
+"  / = /srv/repos/*\n"
+"  /user/bob = /home/bob/repos/**"
 
 msgid ""
 "- The first two entries make two repositories in different directories\n"
 "  appear under the same directory in the web interface\n"
-"- The third entry maps every Mercurial repository found in '/real/root'\n"
-"  into 'web/root'. This format is preferred over the [collections] one,\n"
-"  since using absolute paths as configuration keys is not supported on every\n"
-"  platform (especially on Windows).\n"
-"- The fourth entry is a special case mapping all repositories in\n"
-"  '/real/root2' in the root of the virtual directory.\n"
-"- The fifth entry recursively finds all repositories under the real\n"
-"  root, and maps their relative paths under the virtual root."
-msgstr ""
-"- As primeiras duas entradas fazem com que dois repositórios em\n"
-"  diretórios diferentes apareçam sob o mesmo diretório na interface web\n"
-"- A terceira entrada mapeia todos os repositórios encontrados em\n"
-"  '/raiz/real' para 'web/raiz'. Este formato é preferido em relação\n"
-"  ao da seção [collections], pois o uso de caminhos absolutos como\n"
-"  chaves de configuração não é suportado em qualquer plataforma\n"
-"  (especialmente no Windows).\n"
-"- A quarta entrada é um caso especial mapeando todos os repositórios\n"
-"  em '/raiz/real2' para o raiz do diretório virtual.\n"
-"- A quinta entrada busca recursivamente todos os repositórios sob a\n"
-"  raiz real, e mapeia seus caminhos relativos sob a raiz virtual."
-
-msgid ""
-"The ``collections`` section provides mappings of trees of physical\n"
-"repositories paths to virtual ones, though the paths syntax is generally\n"
-"preferred. For instance::"
-msgstr ""
-"A seção ``collections`` provê mapeamentos de árvores de caminhos\n"
-"de repositórios físicos para virtuais, embora a sintaxe de caminhos\n"
-"seja em geral preferida. Por exemplo::"
-
-msgid ""
-"  [collections]\n"
-"  /foo = /foo"
-msgstr ""
-"  [collections]\n"
-"  /foo = /foo"
-
-msgid ""
-"Here, the left side will be stripped off all repositories found in the\n"
-"right side. Thus ``/foo/bar`` and ``foo/quux/baz`` will be listed as\n"
-"``bar`` and ``quux/baz`` respectively.\n"
-msgstr ""
-"Aqui, o lado esquerdo terá todos os caminhos de repositórios encontrados\n"
-"do lado direito removidos. Assim, ``/foo/bar`` e ``foo/quux/baz`` serão\n"
-"listados como ``bar`` e ``quux/baz`` respectivamente.\n"
+"- The third entry will publish every Mercurial repository found in\n"
+"  ``/srv/repos/``, for instance the repository ``/srv/repos/quux/``\n"
+"  will appear as ``http://server/quux/``\n"
+"- The fourth entry will publish both ``http://server/user/bob/quux/``\n"
+"  and ``http://server/user/bob/quux/testsubrepo/``"
+msgstr ""
+"- As primeiras duas entradas fazem dois repositórios em diretórios\n"
+"  diferentes aparecerem sob o mesmo diretório na interface web\n"
+"- A terceira entrada publicará todos os repositórios do Mercurial\n"
+"  encontrados em ``/srv/repos/``, por exemplo o repositório\n"
+"  ``/srv/repos/quux/`` aparecerá em ``http://server/quux/``\n"
+"- A quarta entrada publicará tanto ``http://server/user/bob/quux/``\n"
+"  como ``http://server/user/bob/quux/testsubrepo/``"
+
+msgid ""
+"The ``collections`` section is deprecated and has been superseeded by\n"
+"``paths``.\n"
+msgstr ""
+"A seção ``collections`` é obsoleta e foi completamente substituída\n"
+"pela seção ``paths``.\n"
 
 msgid "To merge files Mercurial uses merge tools."
 msgstr "Para mesclar arquivos o Mercurial usa utilitários de mesclagem."
@@ -19691,10 +20356,10 @@
 
 msgid ""
 "Available merge tools\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"====================="
 msgstr ""
 "Utilitários de mesclagem disponíveis\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"===================================="
 
 msgid ""
 "External merge tools and their properties are configured in the\n"
@@ -19745,10 +20410,10 @@
 
 msgid ""
 "Choosing a merge tool\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"====================="
 msgstr ""
 "Escolhendo um utilitário de mesclagem\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"====================================="
 
 msgid "Mercurial uses these rules when deciding which merge tool to use:"
 msgstr ""
@@ -20017,10 +20682,10 @@
 
 msgid ""
 "What are phases?\n"
-"----------------"
+"================"
 msgstr ""
 "O que são fases?\n"
-"----------------"
+"================"
 
 msgid ""
 "Phases are a system for tracking which changesets have been or should\n"
@@ -20058,10 +20723,10 @@
 
 msgid ""
 "How are phases managed?\n"
-"-----------------------"
+"======================="
 msgstr ""
 "Como fases são gerenciadas?\n"
-"---------------------------"
+"==========================="
 
 msgid ""
 "For the most part, phases should work transparently. By default, a\n"
@@ -20086,10 +20751,10 @@
 
 msgid ""
 "Phases and servers\n"
-"------------------"
+"=================="
 msgstr ""
 "Fases e servidores\n"
-"------------------"
+"=================="
 
 msgid "Normally, all servers are ``publishing`` by default. This means::"
 msgstr ""
@@ -20157,10 +20822,10 @@
 
 msgid ""
 "Examples\n"
-"--------"
+"========"
 msgstr ""
 "Exemplos\n"
-"--------"
+"========"
 
 msgid " - list changesets in draft or secret phase::"
 msgstr " - lista revisões nas fases rascunho ou secreta::"
@@ -20237,22 +20902,23 @@
 "de um identificador completo."
 
 msgid ""
-"Any other string is treated as a tag or branch name. A tag name is a\n"
-"symbolic name associated with a revision identifier. A branch name\n"
-"denotes the tipmost revision of that branch. Tag and branch names must\n"
-"not contain the \":\" character."
-msgstr ""
-"Qualquer outra string é tratada como um nome de etiqueta ou\n"
-"ramo. Um nome de etiqueta é um nome simbólico associado a um\n"
-"identificador de revisão. Um nome de ramo denota a revisão mais\n"
-"recente de tal ramo. Nomes de etiqueta ou de ramo não podem\n"
-"conter o caractere \":\"."
-
-msgid ""
-"The reserved name \"tip\" is a special tag that always identifies the\n"
-"most recent revision."
-msgstr ""
-"O nome reservado \"tip\" é uma etiqueta especial que sempre\n"
+"Any other string is treated as a bookmark, tag, or branch name. A\n"
+"bookmark is a movable pointer to a revision. A tag is a permanent name\n"
+"associated with a revision. A branch name denotes the tipmost revision\n"
+"of that branch. Bookmark, tag, and branch names must not contain the \":\"\n"
+"character."
+msgstr ""
+"Qualquer outra string é tratada como um nome de marcador, etiqueta\n"
+"ou ramo.\n"
+"Um marcador (bookmark) é um apontador móvel para uma revisão.\n"
+"Uma etiqueta (tag) é um nome simbólico permanente associado a uma\n"
+"revisão.\n"
+"Um nome de ramo denota a revisão mais recente de tal ramo.\n"
+"Nomes de marcadores, etiquetas e ramos não podem conter o caractere \":\"."
+
+msgid "The reserved name \"tip\" always identifies the most recent revision."
+msgstr ""
+"O nome reservado \"tip\" sempre\n"
 "identifica a revisão mais recente."
 
 msgid ""
@@ -20601,11 +21267,11 @@
 msgid ""
 "\n"
 "Adding a Subrepository\n"
-"----------------------"
-msgstr ""
-"\n"
-"Como Adicionar um Sub-Repositório\n"
-"---------------------------------"
+"======================"
+msgstr ""
+"\n"
+"Adicionando um Sub-Repositório\n"
+"=============================="
 
 msgid ""
 "If ``.hgsub`` does not exist, create it and add it to the parent\n"
@@ -20625,10 +21291,10 @@
 
 msgid ""
 "Synchronizing a Subrepository\n"
-"-----------------------------"
-msgstr ""
-"Como Sincronizar um Sub-Repositório\n"
-"-----------------------------------"
+"============================="
+msgstr ""
+"Sincronizando um Sub-Repositório\n"
+"================================"
 
 msgid ""
 "Subrepos do not automatically track the latest changeset of their\n"
@@ -20656,10 +21322,10 @@
 
 msgid ""
 "Deleting a Subrepository\n"
-"------------------------"
-msgstr ""
-"Como Remover um Sub-Repositório\n"
-"-------------------------------"
+"========================"
+msgstr ""
+"Apagando um Sub-Repositório\n"
+"==========================="
 
 msgid ""
 "To remove a subrepository from the parent repository, delete its\n"
@@ -20671,10 +21337,10 @@
 
 msgid ""
 "Interaction with Mercurial Commands\n"
-"-----------------------------------"
-msgstr ""
-"Interação com comandos do Mercurial\n"
-"-----------------------------------"
+"==================================="
+msgstr ""
+"Interação com Comandos do Mercurial\n"
+"==================================="
 
 msgid ""
 ":add: add does not recurse in subrepos unless -S/--subrepos is\n"
@@ -20818,10 +21484,10 @@
 
 msgid ""
 "Remapping Subrepositories Sources\n"
-"---------------------------------"
-msgstr ""
-"Remapeando Origens de Sub-Repositórios\n"
-"--------------------------------------"
+"================================="
+msgstr ""
+"Remapeamento de Origens de Sub-Repositórios\n"
+"==========================================="
 
 msgid ""
 "A subrepository source location may change during a project life,\n"
@@ -21099,6 +21765,9 @@
 msgid "destination directory: %s\n"
 msgstr "diretório de destino: %s\n"
 
+msgid "empty destination path is not valid"
+msgstr "um caminho de destino vazio não é válido"
+
 #, python-format
 msgid "destination '%s' already exists"
 msgstr "o destino '%s' já existe"
@@ -21164,6 +21833,10 @@
 msgstr "não é possível iniciar o servidor em '%s:%d': %s"
 
 #, python-format
+msgid "(binary file %s, hash: %s)"
+msgstr "(arquivo binário %s, hash: %s)"
+
+#, python-format
 msgid " %d files changed, %d insertions(+), %d deletions(-)\n"
 msgstr "%d arquivos modificados, %d inserções(+), %d remoções(-)\n"
 
@@ -21221,6 +21894,10 @@
 msgid "warning: %s hook %s\n"
 msgstr "aviso: gancho %s %s\n"
 
+#, python-format
+msgid "loading %s hook failed:\n"
+msgstr "o carregamento do gancho %s falhou:\n"
+
 msgid "kb"
 msgstr "kb"
 
@@ -21431,10 +22108,24 @@
 "pull parcial não pode ser feito porque o outro repositório não suporta "
 "'changegroupsubset'."
 
+msgid "destination does not support push"
+msgstr "o destino não suporta push"
+
+#, python-format
+msgid "push includes an obsolete changeset: %s!"
+msgstr "push inclui uma revisão obsoleta: %s!"
+
+#, python-format
+msgid "push includes an unstable changeset: %s!"
+msgstr "push inclui uma revisão instável: %s!"
+
 #, python-format
 msgid "updating %s to public failed!\n"
 msgstr "a atualização da fase de %s para pública falhou!\n"
 
+msgid "failed to push some obsolete markers!\n"
+msgstr "erro ao enviar algumas marcações de obsolescência!\n"
+
 #, python-format
 msgid "%d changesets found\n"
 msgstr "%d revisões encontradas\n"
@@ -21479,8 +22170,8 @@
 msgid "added %d changesets with %d changes to %d files%s\n"
 msgstr "adicionadas %d revisões com %d mudanças em %d arquivos%s\n"
 
-msgid "Unexpected response from remote server:"
-msgstr "Resposta inesperada do servidor remoto:"
+msgid "unexpected response from remote server:"
+msgstr "resposta inesperada do servidor remoto:"
 
 msgid "operation forbidden by server"
 msgstr "operação não permitida pelo servidor"
@@ -21498,6 +22189,9 @@
 msgid "%d files to transfer, %s of data\n"
 msgstr "%d arquivos para transferir, %s de dados\n"
 
+msgid "clone"
+msgstr "clone"
+
 #, python-format
 msgid "transferred %s in %.1f seconds (%s/sec)\n"
 msgstr "transferidos %s em %.1f segundos (%s/s)\n"
@@ -21649,6 +22343,10 @@
 msgid "note: possible conflict - %s was renamed multiple times to:\n"
 msgstr "nota: possível conflito - %s foi renomeado múltiplas vezes para:\n"
 
+#, python-format
+msgid "note: possible conflict - %s was deleted and renamed to:\n"
+msgstr "nota: possível conflito - %s foi apagado e renomeado para:\n"
+
 msgid "merging with a working directory ancestor has no effect"
 msgstr ""
 "mesclar com um ancestral do diretório de trabalho não tem nenhum efeito"
@@ -21700,6 +22398,24 @@
 msgstr "Aviso!"
 
 #, python-format
+msgid "parsing obsolete marker: unknown version %r"
+msgstr "decodificando marcações de obsolescência: versão desconhecida %r"
+
+#, python-format
+msgid ""
+"parsing obsolete marker: metadata is too short, %d bytes expected, got %d"
+msgstr ""
+"decodificando marcações de obsolescência: metadados são curtos demais, %d "
+"bytes esperados, %d obtidos"
+
+#, python-format
+msgid "unknown key: %r"
+msgstr "chave desconhecida: %r"
+
+msgid "unexpected old value"
+msgstr "valor antigo inesperado"
+
+#, python-format
 msgid "unexpected token: %s"
 msgstr "token inesperado: %s"
 
@@ -21804,6 +22520,13 @@
 msgstr "aplicação do patch falhou"
 
 #, python-format
+msgid "cannot %s; remote repository does not support the %r capability"
+msgstr "impossível %s; repositório remoto não suporta a funcionalidade '%r'"
+
+msgid "cannot change null revision phase"
+msgstr "não é possível mudar a fase da revisão nula"
+
+#, python-format
 msgid "ignoring inconsistent public root from remote: %s\n"
 msgstr "ignorando raiz pública inconsistente no repositório remoto: %s\n"
 
@@ -21843,8 +22566,8 @@
 msgstr "strip falhou, bundle parcial armazenado em '%s'\n"
 
 #, python-format
-msgid "cannot %s; remote repository does not support the %r capability"
-msgstr "impossível %s; repositório remoto não suporta a funcionalidade '%r'"
+msgid "revlog decompress error: %s"
+msgstr "erro de descompressão do revlog: %s"
 
 #, python-format
 msgid "unknown compression type %r"
@@ -21956,15 +22679,18 @@
 "    - ``range``              : csets taking part in the bisection\n"
 "    - ``pruned``             : csets that are goods, bads or skipped\n"
 "    - ``untested``           : csets whose fate is yet unknown\n"
-"    - ``ignored``            : csets ignored due to DAG topology"
+"    - ``ignored``            : csets ignored due to DAG topology\n"
+"    - ``current``            : the cset currently being bisected"
 msgstr ""
 "    - ``good``, ``bad``, ``skip``: revs explicitamente marcadas como boas, ruins ou omitidas\n"
 "    - ``goods``, ``bads``      : revs topologicamente boas ou ruins\n"
 "    - ``range``              : revs participando da bissecção\n"
 "    - ``pruned``             : revs goods, bads ou skipped\n"
 "    - ``untested``           : revs que ainda não foram testadas\n"
-"    - ``ignored``            : revs ignoradas pela topologia do DAG"
-
+"    - ``ignored``            : revs ignoradas pela topologia do DAG\n"
+"    - ``current``            : a revisão sendo biseccionada no momento"
+
+#. i18n: "bisect" is a keyword
 msgid "bisect requires a string"
 msgstr "bisect requer uma string"
 
@@ -21975,6 +22701,15 @@
 "``bookmark([nome])``\n"
 "    O marcador chamado nome, ou todos os marcadores."
 
+msgid ""
+"    If `name` starts with `re:`, the remainder of the name is treated as\n"
+"    a regular expression. To match a bookmark that actually starts with `re:`,\n"
+"    use the prefix `literal:`."
+msgstr ""
+"    Se `nome` começar com `re:`, o restante do nome é tratado como\n"
+"    uma expressão regular. Para combinar com um marcador que comece\n"
+"    com `re:` literalmente, use o prefixo `literal:`."
+
 #. i18n: "bookmark" is a keyword
 msgid "bookmark takes one or no arguments"
 msgstr "bookmark requer um ou nenhum argumento"
@@ -21983,6 +22718,10 @@
 msgid "the argument to bookmark must be a string"
 msgstr "o argumento para o comando bookmark deve ser uma string"
 
+#, python-format
+msgid "no bookmarks exist that match '%s'"
+msgstr "não existe nenhum marcador que corresponda a '%s'"
+
 msgid ""
 "``branch(string or set)``\n"
 "    All changesets belonging to the given branch or the branches of the given\n"
@@ -21993,6 +22732,15 @@
 "    das revisões no conjunto."
 
 msgid ""
+"    If `string` starts with `re:`, the remainder of the name is treated as\n"
+"    a regular expression. To match a branch that actually starts with `re:`,\n"
+"    use the prefix `literal:`."
+msgstr ""
+"    Se `string` começar com `re:`, o restante do nome é tratado como\n"
+"    uma expressão regular. Para combinar com um ramo que comece\n"
+"    com `re:` literalmente, use o prefixo `literal:`."
+
+msgid ""
 "``children(set)``\n"
 "    Child changesets of changesets in set."
 msgstr ""
@@ -22024,6 +22772,24 @@
 msgstr "contains requer um padrão"
 
 msgid ""
+"``converted([id])``\n"
+"    Changesets converted from the given identifier in the old repository if\n"
+"    present, or all converted changesets if no identifier is specified."
+msgstr ""
+"``converted([id])``\n"
+"    Revisões convertidas a partir do identificador dado no\n"
+"    repositório de origem, ou todas as revisões convertidas se\n"
+"    um identificador não for fornecido."
+
+#. i18n: "converted" is a keyword
+msgid "converted takes one or no arguments"
+msgstr "converted recebe um ou nenhum argumento"
+
+#. i18n: "converted" is a keyword
+msgid "converted requires a revision"
+msgstr "converted requer uma revisão"
+
+msgid ""
 "``date(interval)``\n"
 "    Changesets within the interval, see :hg:`help dates`."
 msgstr ""
@@ -22054,22 +22820,87 @@
 "    Todas as revisões descendentes de revisões do conjunto."
 
 msgid ""
+"``destination([set])``\n"
+"    Changesets that were created by a graft, transplant or rebase operation,\n"
+"    with the given revisions specified as the source.  Omitting the optional set\n"
+"    is the same as passing all()."
+msgstr ""
+"``destination([conjunto])``\n"
+"    Revisões criadas por operações graft, transplant ou rebase\n"
+"    que tiveram como origem revisões no conjunto. Se o conjunto\n"
+"    não for especificado, será o mesmo que especificar all()."
+
+msgid ""
 "``draft()``\n"
 "    Changeset in draft phase."
 msgstr ""
 "``draft()``\n"
 "    Revisões na fase \"draft\" (rascunho)."
 
+#. i18n: "draft" is a keyword
 msgid "draft takes no arguments"
 msgstr "draft não tem argumentos"
 
 msgid ""
+"``extinct()``\n"
+"    Obsolete changesets with obsolete descendants only."
+msgstr ""
+"``extinct()``\n"
+"    Revisões extintas (revisões obsoletas que possuam apenas\n"
+"    descendentes obsoletos)."
+
+#. i18n: "extinct" is a keyword
+msgid "extinct takes no arguments"
+msgstr "extinct não tem argumentos"
+
+msgid ""
+"``extra(label, [value])``\n"
+"    Changesets with the given label in the extra metadata, with the given\n"
+"    optional value."
+msgstr ""
+"``extra(rótulo, [valor])``\n"
+"    Revisões com o rótulo pedido nos metadados extras, opcionalmente\n"
+"    com o valor pedido."
+
+msgid ""
+"    If `value` starts with `re:`, the remainder of the value is treated as\n"
+"    a regular expression. To match a value that actually starts with `re:`,\n"
+"    use the prefix `literal:`."
+msgstr ""
+"    Se `valor` começar com `re:`, o restante do valor é tratado como\n"
+"    uma expressão regular. Para combinar com um valor que comece\n"
+"    com `re:` literalmente, use o prefixo `literal:`."
+
+#. i18n: "extra" is a keyword
+msgid "extra takes at least 1 and at most 2 arguments"
+msgstr "extra recebe um ou dois argumentos"
+
+#. i18n: "extra" is a keyword
+msgid "first argument to extra must be a string"
+msgstr "o primeiro argumento de extra deve ser uma string"
+
+#. i18n: "extra" is a keyword
+msgid "second argument to extra must be a string"
+msgstr "o segundo argumento de extra deve ser uma string"
+
+msgid ""
 "``filelog(pattern)``\n"
 "    Changesets connected to the specified filelog."
 msgstr ""
 "``filelog(padrão)``\n"
 "    Revisões conectadas ao filelog especificado."
 
+msgid ""
+"    For performance reasons, ``filelog()`` does not show every changeset\n"
+"    that affects the requested file(s). See :hg:`help log` for details. For\n"
+"    a slower, more accurate result, use ``file()``."
+msgstr ""
+"    Por razões de desempenho, ``filelog()`` não mostra todas as\n"
+"    revisões que afetaram os arquivos pedidos. Veja :hg:`help log`\n"
+"    para mais detalhes. Para um resultado mais preciso, mas mais\n"
+"    lento, use ``file()``."
+
+#. i18n: "filelog" is a keyword
 msgid "filelog requires a pattern"
 msgstr "filelog requer um padrão"
 
@@ -22134,15 +22965,19 @@
 msgid "_matchfiles requires at least one argument"
 msgstr "_matchfiles requer ao menos um argumento"
 
+#. i18n: "_matchfiles" is a keyword
 msgid "_matchfiles requires string arguments"
 msgstr "_matchfiles requer argumentos de texto"
 
+#. i18n: "_matchfiles" is a keyword
 msgid "_matchfiles expected at most one revision"
 msgstr "_matchfiles espera no máximo uma revisão"
 
+#. i18n: "_matchfiles" is a keyword
 msgid "_matchfiles expected at most one default mode"
 msgstr "_matchfiles espera no máximo um modo padrão"
 
+#. i18n: "_matchfiles" is a keyword
 #, python-format
 msgid "invalid _matchfiles prefix: %s"
 msgstr "prefixo _matchfiles inválido: %s"
@@ -22154,6 +22989,13 @@
 "``file(padrão)``\n"
 "    Revisões que afetam arquivos correspondentes ao padrão."
 
+msgid ""
+"    For a faster but less accurate result, consider using ``filelog()``\n"
+"    instead."
+msgstr ""
+"    Para um resultado mais rápido mas menos preciso, considere usar\n"
+"    ``filelog()``."
+
 #. i18n: "file" is a keyword
 msgid "file requires a pattern"
 msgstr "file requer um padrão"
@@ -22281,6 +23123,33 @@
 msgstr "id requer uma string"
 
 msgid ""
+"``obsolete()``\n"
+"    Mutable changeset with a newer version."
+msgstr ""
+"``obsolete()``\n"
+"    Revisões obsoletas (revisões mutáveis com uma nova versão)."
+
+#. i18n: "obsolete" is a keyword
+msgid "obsolete takes no arguments"
+msgstr "obsolete não tem argumentos"
+
+msgid ""
+"``origin([set])``\n"
+"    Changesets that were specified as a source for the grafts, transplants or\n"
+"    rebases that created the given revisions.  Omitting the optional set is the\n"
+"    same as passing all().  If a changeset created by these operations is itself\n"
+"    specified as a source for one of these operations, only the source changeset\n"
+"    for the first operation is selected."
+msgstr ""
+"``origin([conjunto])``\n"
+"    Revisões que foram especificadas como origem em operações graft,\n"
+"    transplant ou rebase que criaram as revisões no conjunto. Omitir\n"
+"    o conjunto tem o mesmo efeito de passar all(). Se uma revisão\n"
+"    criada por essas operações for ela mesma especificada como\n"
+"    origem de uma dessas operações, apenas a revisão de origem da\n"
+"    primeira operação será selecionada."
+
+msgid ""
 "``outgoing([path])``\n"
 "    Changesets not found in the specified destination repository, or the\n"
 "    default push location."
@@ -22347,6 +23216,7 @@
 "``public()``\n"
 "    Revisões na fase \"public\" (pública)."
 
+#. i18n: "public" is a keyword
 msgid "public takes no arguments"
 msgstr "public não tem argumentos"
 
@@ -22428,13 +23298,18 @@
 
 msgid ""
 "    Regular revision fields are ``description``, ``author``, ``branch``,\n"
-"    ``date``, ``files``, ``phase``, ``parents``, ``substate`` and ``user``.\n"
-"    Note that ``author`` and ``user`` are synonyms."
+"    ``date``, ``files``, ``phase``, ``parents``, ``substate``, ``user``\n"
+"    and ``diff``.\n"
+"    Note that ``author`` and ``user`` are synonyms. ``diff`` refers to the\n"
+"    contents of the revision. Two revisions matching their ``diff`` will\n"
+"    also match their ``files``."
 msgstr ""
 "    Os campos comuns são: ``description`` (descrição), ``author`` (autor),\n"
 "    ``branch`` (ramo), ``date`` (data), ``files`` (arquivos),\n"
 "    ``phase`` (fase), ``parents`` (pais), ``substate`` (sub-repositórios)\n"
-"    e ``user`` (usuário). Note que ``user`` ``author`` são sinônimos."
+"    e ``user`` (usuário). Note que ``user`` ``author`` são sinônimos.\n"
+"    ``diff`` se refere ao conteúdo da revisão. Duas revisões com mesmo\n"
+"    ``diff`` também terão o mesmo ``files``."
 
 msgid ""
 "    Special fields are ``summary`` and ``metadata``:\n"
@@ -22454,12 +23329,15 @@
 "    Se não forem especificados campos, será utilizado o campo metadata.\n"
 "    Você pode corresponder mais de um campo simultaneamente."
 
+#. i18n: "matching" is a keyword
 msgid "matching takes 1 or 2 arguments"
 msgstr "matching recebe um ou dois argumentos"
 
+#. i18n: "matching" is a keyword
 msgid "matching requires a string as its second argument"
 msgstr "matching exige uma string como segundo argumento"
 
+#. i18n: "matching" is a keyword
 #, python-format
 msgid "unexpected field name passed to matching: %s"
 msgstr "nome de campo inesperado passado para matching: %s"
@@ -22485,6 +23363,7 @@
 "``secret()``\n"
 "    A revisão está na fase \"secret\" (secreta)."
 
+#. i18n: "secret" is a keyword
 msgid "secret takes no arguments"
 msgstr "secret não tem argumentos"
 
@@ -22517,6 +23396,7 @@
 msgid "sort requires one or two arguments"
 msgstr "sort exige um ou dois argumentos"
 
+#. i18n: "sort" is a keyword
 msgid "sort spec must be a string"
 msgstr "especificação do sort deve ser uma string"
 
@@ -22524,6 +23404,10 @@
 msgid "unknown sort key %r"
 msgstr "especificação de ordenação desconhecida: %r"
 
+#, python-format
+msgid "invalid regular expression: %s"
+msgstr "expressão regular inválida: %s"
+
 msgid ""
 "``tag([name])``\n"
 "    The specified tag by name, or all tagged revisions if no name is given."
@@ -22541,6 +23425,21 @@
 msgid "the argument to tag must be a string"
 msgstr "o argumento de tag deve ser uma string"
 
+#, python-format
+msgid "no tags exist that match '%s'"
+msgstr "não existem etiquetas que correspondem a '%s'"
+
+msgid ""
+"``unstable()``\n"
+"    Non-obsolete changesets with obsolete ancestors."
+msgstr ""
+"``unstable()``\n"
+"    Revisões instáveis (revisões não-obsoletas com ancestrais obsoletos)."
+
+#. i18n: "unstable" is a keyword
+msgid "unstable takes no arguments"
+msgstr "unstable não tem argumentos"
+
 msgid ""
 "``user(string)``\n"
 "    User name contains string. The match is case-insensitive."
@@ -22549,6 +23448,15 @@
 "    O nome do usuário contém texto. A comparação não diferencia\n"
 "    maiúsculas e minúsculas."
 
+msgid ""
+"    If `string` starts with `re:`, the remainder of the string is treated as\n"
+"    a regular expression. To match a user that actually contains `re:`, use\n"
+"    the prefix `literal:`."
+msgstr ""
+"    Se `texto` começar com `re:`, o restante do texto é tratado como\n"
+"    uma expressão regular. Para combinar com um usuário que contiver\n"
+"    `re:` literalmente, use o prefixo `literal:`."
+
 msgid "can't negate that"
 msgstr "não é possível negar essa expressão"
 
@@ -22911,10 +23819,10 @@
 #, python-format
 msgid ""
 "no branch checked out in subrepo %s\n"
-"cannot push revision %s"
+"cannot push revision %s\n"
 msgstr ""
 "nenhum ramo obtido no sub-repositório %s\n"
-"não é possível fazer push da revisão %s"
+"não é possível fazer push da revisão %s\n"
 
 #, python-format
 msgid "%s, line %s: %s\n"
@@ -23269,6 +24177,15 @@
 msgid ":tags: List of strings. Any tags associated with the changeset."
 msgstr ":tags: Lista de strings. Quaisquer etiquetas associadas à revisão."
 
+msgid ""
+":parents: List of strings. The parents of the changeset in \"rev:node\"\n"
+"    format. If the changeset has only one \"natural\" parent (the predecessor\n"
+"    revision) nothing is shown."
+msgstr ""
+":parents: Lista de strings. Os pais da revisão no formato \"rev:node\".\n"
+"    Se a revisão só tiver um pai \"natural\" (a revisão predecessora),\n"
+"    nada é exibido."
+
 #, python-format
 msgid "unknown method '%s'"
 msgstr "método desconhecido '%s'"
@@ -23322,12 +24239,12 @@
 msgstr "já possui a revisão "
 
 #, python-format
-msgid "Not trusting file %s from untrusted user %s, group %s\n"
-msgstr "Não confiando em arquivo %s de usuário não confiável %s, grupo %s\n"
-
-#, python-format
-msgid "Ignored: %s\n"
-msgstr "Ignorado: %s\n"
+msgid "not trusting file %s from untrusted user %s, group %s\n"
+msgstr "não confiando em arquivo %s de usuário não confiável %s, grupo %s\n"
+
+#, python-format
+msgid "ignored: %s\n"
+msgstr "ignorado: %s\n"
 
 #, python-format
 msgid "(deprecated '%%' in path %s=%s from %s)\n"
@@ -23345,8 +24262,8 @@
 msgstr "entre o nome do usuário para consolidação:"
 
 #, python-format
-msgid "No username found, using '%s' instead\n"
-msgstr "Nome de usuário não encontrado, usando '%s'\n"
+msgid "no username found, using '%s' instead\n"
+msgstr "nome de usuário não encontrado, usando '%s'\n"
 
 msgid "no username supplied (see \"hg help config\")"
 msgstr "nome de usuário não fornecido (veja \"hg help config\")"
--- a/i18n/ru.po	Thu Aug 02 17:48:58 2012 +0200
+++ b/i18n/ru.po	Thu Aug 02 18:33:40 2012 +0200
@@ -135,6 +135,7 @@
 # checkin        (в конфиге для encode/decode) сейчас фиксация ???
 # lookup         поиск ???
 # facility       ???
+# obsolete marker маркер устаревшей ревизии
 #
 #
 # === TODO ===
@@ -172,7 +173,7 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2012-06-15 10:29+0400\n"
+"POT-Creation-Date: 2012-08-01 18:47+0400\n"
 "PO-Revision-Date: 2011-05-12 23:48+0400\n"
 "Last-Translator: Alexander Sauta <demosito@gmail.com>\n"
 "Language-Team: Russian\n"
@@ -272,10 +273,10 @@
 
 msgid ""
 "Branch-based Access Control\n"
-"..........................."
-msgstr ""
-"Контроль доступа, основанный на ветке\n"
-"....................................."
+"---------------------------"
+msgstr ""
+"Контроль доступа по веткам\n"
+"--------------------------"
 
 msgid ""
 "Use the ``acl.deny.branches`` and ``acl.allow.branches`` sections to\n"
@@ -304,11 +305,19 @@
 "- звёздочка, чтобы выбрать любого;"
 
 msgid ""
+"You can add the \"!\" prefix to a user or group name to invert the sense\n"
+"of the match."
+msgstr ""
+"Вы можете добавить префикс \"!\" перед именем пользователя или группы, "
+"чтобы\n"
+"изменить смысл правила на противоположный."
+
+msgid ""
 "Path-based Access Control\n"
-"........................."
-msgstr ""
-"Контроль доступа основанный на пути\n"
-"..................................."
+"-------------------------"
+msgstr ""
+"Контроль доступа по путям\n"
+"-------------------------"
 
 msgid ""
 "Use the ``acl.deny`` and ``acl.allow`` sections to have path-based\n"
@@ -325,10 +334,10 @@
 
 msgid ""
 "Groups\n"
-"......"
+"------"
 msgstr ""
 "Группы\n"
-"......"
+"------"
 
 msgid ""
 "Group names must be prefixed with an ``@`` symbol. Specifying a group\n"
@@ -351,10 +360,10 @@
 
 msgid ""
 "Example Configuration\n"
-"....................."
+"---------------------"
 msgstr ""
 "Пример конфигурации\n"
-"..................."
+"-------------------"
 
 msgid "::"
 msgstr "::"
@@ -536,6 +545,90 @@
 msgid "  .hgtags = release_engineer"
 msgstr "  .hgtags = release_engineer"
 
+msgid ""
+"Examples using the \"!\" prefix\n"
+"............................."
+msgstr ""
+"Примеры использования префикса \"!\"\n"
+".................................."
+
+msgid ""
+"Suppose there's a branch that only a given user (or group) should be able "
+"to\n"
+"push to, and you don't want to restrict access to any other branch that may\n"
+"be created."
+msgstr ""
+"Допустим, есть ветка, доступ на запись к которой должен иметь только "
+"заданный\n"
+"пользователь или группа, и вы не хотите ограничивать доступ к другим веткам."
+
+msgid ""
+"The \"!\" prefix allows you to prevent anyone except a given user or group "
+"to\n"
+"push changesets in a given branch or path."
+msgstr ""
+"Префикс \"!\" позволяет запретить всем, кроме заданного пользователя или\n"
+"группы проталкивать изменения в заданную ветку или по заданному пути."
+
+msgid ""
+"In the examples below, we will:\n"
+"1) Deny access to branch \"ring\" to anyone but user \"gollum\"\n"
+"2) Deny access to branch \"lake\" to anyone but members of the group \"hobbit"
+"\"\n"
+"3) Deny access to a file to anyone but user \"gollum\""
+msgstr ""
+"В следующем примере мы:\n"
+"1) Запретим доступ к ветке \"ring\" всем, кроме пользователя \"gollum\"\n"
+"2) Запретим доступ к ветке \"lake\" всем, кроме членов группы \"hobbit\"\n"
+"3) Запретим доступ к файлу всем, кроме пользователя \"gollum\""
+
+msgid ""
+"  [acl.allow.branches]\n"
+"  # Empty"
+msgstr ""
+"  [acl.allow.branches]\n"
+"  # Пусто"
+
+msgid ""
+"  # 1) only 'gollum' can commit to branch 'ring';\n"
+"  # 'gollum' and anyone else can still commit to any other branch.\n"
+"  ring = !gollum"
+msgstr ""
+"  # 1) только 'gollum' может фиксировать в ветку 'ring';\n"
+"  # 'gollum' и все остальные погут фиксировать в любую другую ветку.\n"
+"  ring = !gollum"
+
+msgid ""
+"  # 2) only members of the group 'hobbit' can commit to branch 'lake';\n"
+"  # 'hobbit' members and anyone else can still commit to any other branch.\n"
+"  lake = !@hobbit"
+msgstr ""
+"  # 2) только члены группы 'hobbit' могут фиксировать в ветку 'lake';\n"
+"  # члены группы 'hobbit' и все остальные могут фиксировать в любую другую "
+"ветку.\n"
+"  lake = !@hobbit"
+
+msgid "  # You can also deny access based on file paths:"
+msgstr "  # Можно также запрещать доступ к определенным путям:"
+
+msgid ""
+"  [acl.allow]\n"
+"  # Empty"
+msgstr ""
+"  [acl.allow]\n"
+"  # Пусто"
+
+msgid ""
+"  [acl.deny]\n"
+"  # 3) only 'gollum' can change the file below;\n"
+"  # 'gollum' and anyone else can still change any other file.\n"
+"  /misty/mountains/cave/ring = !gollum"
+msgstr ""
+"  [acl.deny]\n"
+"  # только 'gollum' может изменять нижеперечисленные файлы;\n"
+"  # 'gollum' и все остальные могут изменять любой другой файл.\n"
+"  /misty/mountains/cave/ring = !gollum"
+
 #, python-format
 msgid "group '%s' is undefined"
 msgstr "группа '%s' не определена"
@@ -1242,8 +1335,14 @@
 msgid "Bugzilla error: %s"
 msgstr "Ошибка Bugzilla: %s"
 
-msgid "command to display child changesets"
-msgstr "Команда для отображения дочерних наборов изменений"
+msgid "command to display child changesets (DEPRECATED)"
+msgstr "команда для отображения дочерних наборов изменений (УСТАРЕЛО)"
+
+msgid ""
+"This extension is deprecated. You should use :hg:`log -r\n"
+"\"children(REV)\"` instead.\n"
+msgstr ""
+"Это расширение устарело, используйте :hg:`log -r \"children(РЕВИЗИЯ)\"`.\n"
 
 msgid "show the children of the given or working directory revision"
 msgstr "показать дочерние ревизии для заданной ревизии"
@@ -1277,8 +1376,8 @@
 msgstr "команда для отображения статистики об истории хранилища"
 
 #, python-format
-msgid "Revision %d is a merge, ignoring...\n"
-msgstr "Ревизия %d это слияние (merge), пропускаем...\n"
+msgid "revision %d is a merge, ignoring...\n"
+msgstr "ревизия %d это слияние (merge), игнорируется...\n"
 
 msgid "analyzing"
 msgstr "анализ"
@@ -1889,10 +1988,10 @@
 
 msgid ""
 "    Mercurial Source\n"
-"    ''''''''''''''''"
+"    ################"
 msgstr ""
 "    Источник - Mercurial\n"
-"    ''''''''''''''''''''"
+"    ####################"
 
 msgid ""
 "    The Mercurial source recognizes the following configuration\n"
@@ -1931,10 +2030,10 @@
 
 msgid ""
 "    CVS Source\n"
-"    ''''''''''"
+"    ##########"
 msgstr ""
 "    Источник - CVS\n"
-"    ''''''''''''''"
+"    ##############"
 
 msgid ""
 "    CVS source will use a sandbox (i.e. a checked-out copy) from CVS\n"
@@ -2021,7 +2120,7 @@
 
 msgid ""
 "    :hook.cvschangesets: Specify a Python function to be called after\n"
-"        the changesets are calculated from the the CVS log. The\n"
+"        the changesets are calculated from the CVS log. The\n"
 "        function is passed a list with the changeset entries, and can\n"
 "        modify the changesets in-place, or add or delete them."
 msgstr ""
@@ -2043,10 +2142,10 @@
 
 msgid ""
 "    Subversion Source\n"
-"    '''''''''''''''''"
+"    #################"
 msgstr ""
 "    Источник - Subversion\n"
-"    '''''''''''''''''''''"
+"    #####################"
 
 msgid ""
 "    Subversion source detects classical trunk/branches/tags layouts.\n"
@@ -2115,10 +2214,10 @@
 
 msgid ""
 "    Perforce Source\n"
-"    '''''''''''''''"
+"    ###############"
 msgstr ""
 "    Источник - Perforce\n"
-"    '''''''''''''''''''"
+"    ###################"
 
 msgid ""
 "    The Perforce (P4) importer can be given a p4 depot path or a\n"
@@ -2151,10 +2250,10 @@
 
 msgid ""
 "    Mercurial Destination\n"
-"    '''''''''''''''''''''"
+"    #####################"
 msgstr ""
 "    Выходное хранилище Mercurial\n"
-"    ''''''''''''''''''''''''''''"
+"    ############################"
 
 msgid "    The following options are supported:"
 msgstr "    Поддерживаются следующие параметры:"
@@ -2387,12 +2486,12 @@
 msgstr "не все ревизии были отсортированы"
 
 #, python-format
-msgid "Writing author map file %s\n"
-msgstr "Записываем файл отображений (map file) авторов %s\n"
-
-#, python-format
-msgid "Ignoring bad line in author map file %s: %s\n"
-msgstr "Ошибочная строка в файле отображения авторов %s игнорируется: %s\n"
+msgid "writing author map file %s\n"
+msgstr "запись файла отображения (map file) авторов %s\n"
+
+#, python-format
+msgid "ignoring bad line in author map file %s: %s\n"
+msgstr "ошибочная строка в файле отображения авторов %s игнорируется: %s\n"
 
 #, python-format
 msgid "mapping author %s to %s\n"
@@ -2712,6 +2811,10 @@
 msgid "collecting p4 changelists\n"
 msgstr "сбор списков изменений p4\n"
 
+msgid "debugsvnlog could not load Subversion python bindings"
+msgstr ""
+"debugsvnlog не удалось загрузить привязки (bindings) Subversion для python"
+
 msgid "Mercurial failed to run itself, check hg executable is in PATH"
 msgstr ""
 "Mercurial не удалось запустить себя самого, убедитесь, что переменная\n"
@@ -2733,7 +2836,7 @@
 msgid "%s does not look like a Subversion repository"
 msgstr "%s не похож на хранилище Subversion"
 
-msgid "Could not load Subversion python bindings"
+msgid "could not load Subversion python bindings"
 msgstr "Не удалось загрузить привязки (bindings) Subversion для python"
 
 #, python-format
@@ -3325,8 +3428,8 @@
 msgid "factotum not responding"
 msgstr "factotum не отвечает"
 
-msgid "pull, update and merge in one command"
-msgstr "затянуть, обновиться и слить одной командой"
+msgid "pull, update and merge in one command (DEPRECATED)"
+msgstr "затянуть, обновиться и слить одной командой (УСТАРЕЛО)"
 
 msgid "pull changes from a remote repository, merge new changes if needed."
 msgstr ""
@@ -3396,11 +3499,11 @@
 msgstr "затягиваем из %s\n"
 
 msgid ""
-"Other repository doesn't support revision lookup, so a rev cannot be "
+"other repository doesn't support revision lookup, so a rev cannot be "
 "specified."
 msgstr ""
-"Другое хранилище не поддерживает поиск ревизий, поэтому нельзя\n"
-"задавать ревизию."
+"Отдалённое хранилище не поддерживает поиск ревизий, поэтому ревизия не может "
+"быть задана."
 
 #, python-format
 msgid ""
@@ -3466,15 +3569,15 @@
 msgid "%s:%d node does not exist\n"
 msgstr "узел %s:%d не существует\n"
 
-msgid "hg sigcheck REVISION"
+msgid "hg sigcheck REV"
 msgstr "hg sigcheck РЕВИЗИЯ"
 
 msgid "verify all the signatures there may be for a particular revision"
 msgstr "проверить все возможные подписи для указанной ревизии"
 
 #, python-format
-msgid "No valid signature for %s\n"
-msgstr "Нет действительной подписи для %s\n"
+msgid "no valid signature for %s\n"
+msgstr "нет действительной подписи для %s\n"
 
 msgid "make the signature local"
 msgstr "сделать подпись локальной"
@@ -3497,7 +3600,7 @@
 msgid "commit message"
 msgstr "сообщение фиксации"
 
-msgid "hg sign [OPTION]... [REVISION]..."
+msgid "hg sign [OPTION]... [REV]..."
 msgstr "hg sign [ПАРАМЕТР]... [РЕВИЗИЯ]..."
 
 msgid "add a signature for the current or given revision"
@@ -3521,8 +3624,8 @@
 msgstr "незафиксированное слияние - пожалуйста, явно укажите ревизию"
 
 #, python-format
-msgid "Signing %d:%s\n"
-msgstr "Подписывается %d:%s\n"
+msgid "signing %d:%s\n"
+msgstr "подписывается %d:%s\n"
 
 msgid "error while signing"
 msgstr "ошибка при подписи"
@@ -3548,23 +3651,6 @@
 "Эта команда добавляет опцию --graph к командам incoming, outgoing и\n"
 "log. Если эта опция указана, то отображается граф ревизий в ASCII-графике.\n"
 
-#, python-format
-msgid "-G/--graph option is incompatible with --%s"
-msgstr "опция -G/--graph несовместима с --%s "
-
-#, python-format
-msgid "cannot follow file not in parent revision: \"%s\""
-msgstr ""
-"невозможно отслеживать файл, которого нет в родительской ревизии: \"%s\""
-
-#, python-format
-msgid "cannot follow nonexistent file: \"%s\""
-msgstr "невозможно отслеживать несуществующий файл: \"%s\""
-
-msgid "can only follow copies/renames for explicit filenames"
-msgstr ""
-"чтобы отслеживать копирования/переименования, требуется явное имя файла"
-
 msgid "follow changeset history, or file history across copies and renames"
 msgstr ""
 "следовать истории набора изменений или истории файла при копированиях/"
@@ -3634,9 +3720,6 @@
 "    каталога.\n"
 "    "
 
-msgid "show the revision DAG"
-msgstr "показать граф ревизий"
-
 msgid "hooks for integrating with the CIA.vc notification service"
 msgstr "хуки для интеграции с сервисом уведомлений CIA.vc"
 
@@ -3900,6 +3983,391 @@
 msgid "The default is 'colorful'.\n"
 msgstr "По умолчанию 'colorful'.\n"
 
+msgid "interactive history editing"
+msgstr "интерактивное редактирование истории"
+
+msgid ""
+"With this extension installed, Mercurial gains one new command: histedit. "
+"Usage\n"
+"is as follows, assuming the following history::"
+msgstr ""
+"Это расширение добавляет в Mercurial одну команду: histedit.\n"
+"Ниже приводится пример использования для следующей истории:"
+
+msgid ""
+" @  3[tip]   7c2fd3b9020c   2009-04-27 18:04 -0500   durin42\n"
+" |    Add delta\n"
+" |\n"
+" o  2   030b686bedc4   2009-04-27 18:04 -0500   durin42\n"
+" |    Add gamma\n"
+" |\n"
+" o  1   c561b4e977df   2009-04-27 18:04 -0500   durin42\n"
+" |    Add beta\n"
+" |\n"
+" o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"      Add alpha"
+msgstr ""
+" @  3[tip]   7c2fd3b9020c   2009-04-27 18:04 -0500   durin42\n"
+" |    Add delta\n"
+" |\n"
+" o  2   030b686bedc4   2009-04-27 18:04 -0500   durin42\n"
+" |    Add gamma\n"
+" |\n"
+" o  1   c561b4e977df   2009-04-27 18:04 -0500   durin42\n"
+" |    Add beta\n"
+" |\n"
+" o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"      Add alpha"
+
+msgid ""
+"If you were to run ``hg histedit c561b4e977df``, you would see the "
+"following\n"
+"file open in your editor::"
+msgstr ""
+"Если вы выполните ``hg histedit c561b4e977df``, вы увидите следующий файл,"
+"открытый в вашем редакторе::"
+
+msgid ""
+" pick c561b4e977df Add beta\n"
+" pick 030b686bedc4 Add gamma\n"
+" pick 7c2fd3b9020c Add delta"
+msgstr ""
+" pick c561b4e977df Add beta\n"
+" pick 030b686bedc4 Add gamma\n"
+" pick 7c2fd3b9020c Add delta"
+
+# this output is not localized yet
+msgid ""
+" # Edit history between 633536316234 and 7c2fd3b9020c\n"
+" #\n"
+" # Commands:\n"
+" #  p, pick = use commit\n"
+" #  e, edit = use commit, but stop for amending\n"
+" #  f, fold = use commit, but fold into previous commit\n"
+" #  d, drop = remove commit from history\n"
+" #  m, mess = edit message without changing commit content\n"
+" #"
+msgstr ""
+" # Edit history between 633536316234 and 7c2fd3b9020c\n"
+" #\n"
+" # Commands:\n"
+" #  p, pick = use commit\n"
+" #  e, edit = use commit, but stop for amending\n"
+" #  f, fold = use commit, but fold into previous commit\n"
+" #  d, drop = remove commit from history\n"
+" #  m, mess = edit message without changing commit content\n"
+" #"
+
+msgid ""
+"In this file, lines beginning with ``#`` are ignored. You must specify a "
+"rule\n"
+"for each revision in your history. For example, if you had meant to add "
+"gamma\n"
+"before beta, and then wanted to add delta in the same revision as beta, you\n"
+"would reorganize the file to look like this::"
+msgstr ""
+"В этом файле строки, начинающиеся с ``#``, игнорируются. Вы должны задать\n"
+"правило для каждой ревизии в вашей истории. Например, если вы хотели\n"
+"добавить gamma перед beta, а потом хотели добавить delta в той же ревизии,\n"
+"что и beta, вам следует отредактировать файл следующим образом::"
+
+msgid ""
+" pick 030b686bedc4 Add gamma\n"
+" pick c561b4e977df Add beta\n"
+" fold 7c2fd3b9020c Add delta"
+msgstr ""
+" pick 030b686bedc4 Add gamma\n"
+" pick c561b4e977df Add beta\n"
+" fold 7c2fd3b9020c Add delta"
+
+msgid ""
+"At which point you close the editor and ``histedit`` starts working. When "
+"you\n"
+"specify a ``fold`` operation, ``histedit`` will open an editor when it "
+"folds\n"
+"those revisions together, offering you a chance to clean up the commit "
+"message::"
+msgstr ""
+"После того, как вы закроете редактор, ``histedit`` начнет работать.\n"
+"Когда вы указываете операцию ``fold`` (совместить), ``histedit`` откроет\n"
+"редактор при совмещении этих ревизий вместе, предлагая вам подчистить\n"
+"сообщение фиксации::"
+
+msgid ""
+" Add beta\n"
+" ***\n"
+" Add delta"
+msgstr ""
+" Add beta\n"
+" ***\n"
+" Add delta"
+
+msgid ""
+"Edit the commit message to your liking, then close the editor. For\n"
+"this example, let's assume that the commit message was changed to\n"
+"``Add beta and delta.`` After histedit has run and had a chance to\n"
+"remove any old or temporary revisions it needed, the history looks\n"
+"like this::"
+msgstr ""
+"Напишите подходящее сообщение фиксации и закройте редактор. Здесь\n"
+"предположим, что сообщение фиксации было заменено на ``Add beta and "
+"delta``.\n"
+"После того, как histedit завершился и удалил все старые и промежуточные\n"
+"ревизии, история будет выглядеть так::"
+
+msgid ""
+" @  2[tip]   989b4d060121   2009-04-27 18:04 -0500   durin42\n"
+" |    Add beta and delta.\n"
+" |\n"
+" o  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n"
+" |    Add gamma\n"
+" |\n"
+" o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"      Add alpha"
+msgstr ""
+" @  2[tip]   989b4d060121   2009-04-27 18:04 -0500   durin42\n"
+" |    Add beta and delta.\n"
+" |\n"
+" o  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n"
+" |    Add gamma\n"
+" |\n"
+" o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"      Add alpha"
+
+msgid ""
+"Note that ``histedit`` does *not* remove any revisions (even its own "
+"temporary\n"
+"ones) until after it has completed all the editing operations, so it will\n"
+"probably perform several strip operations when it's done. For the above "
+"example,\n"
+"it had to run strip twice. Strip can be slow depending on a variety of "
+"factors,\n"
+"so you might need to be a little patient. You can choose to keep the "
+"original\n"
+"revisions by passing the ``--keep`` flag."
+msgstr ""
+"Обратите внимание, что ``histedit`` *не* удаляет никакие ревизии (даже\n"
+"промежуточные временные ревизии) до того, как завершит все операции\n"
+"редактирования, поэтому он, возможно, будет проводить несколько операций\n"
+"strip после завершения. Для приведенного примера, strip выполнится дважды.\n"
+"Strip может выполняться медленно в зависимости от многих факторов, поэтому\n"
+"вам, возможно, потребуется немого подождать. Вы также можете не удалять\n"
+"ревизии с помощью флага ``--keep``."
+
+# spell также так же
+msgid ""
+"The ``edit`` operation will drop you back to a command prompt,\n"
+"allowing you to edit files freely, or even use ``hg record`` to commit\n"
+"some changes as a separate commit. When you're done, any remaining\n"
+"uncommitted changes will be committed as well. When done, run ``hg\n"
+"histedit --continue`` to finish this step. You'll be prompted for a\n"
+"new commit message, but the default commit message will be the\n"
+"original message for the ``edit`` ed revision."
+msgstr ""
+"Операция ``edit`` вернет вас обратно в командную строку, позволяя\n"
+"произвольно редактировать файлы и даже использовать ``hg record``,\n"
+"чтобы зафиксировать некоторые изменения отдельной ревизией. После того,\n"
+"как вы закончите, все незафиксированные изменения будут так же "
+"зафиксированы.\n"
+"После завершения запустите ``hg histedit --continue`` чтобы закончить этот\n"
+"шаг. Вам будет предложено ввести новое сообщение фиксации, при этом\n"
+"по умолчанию сообщение фиксации берется из редактируемой ревизии."
+
+msgid ""
+"The ``message`` operation will give you a chance to revise a commit\n"
+"message without changing the contents. It's a shortcut for doing\n"
+"``edit`` immediately followed by `hg histedit --continue``."
+msgstr ""
+"Операция ``message`` позволит вам исправить сообщение фиксации без\n"
+"изменения содержимого ревизии. Это сокращенный вариант выполнения\n"
+"операции ``edit`` с последующим `hg histedit --continue``."
+
+msgid ""
+"If ``histedit`` encounters a conflict when moving a revision (while\n"
+"handling ``pick`` or ``fold``), it'll stop in a similar manner to\n"
+"``edit`` with the difference that it won't prompt you for a commit\n"
+"message when done. If you decide at this point that you don't like how\n"
+"much work it will be to rearrange history, or that you made a mistake,\n"
+"you can use ``hg histedit --abort`` to abandon the new changes you\n"
+"have made and return to the state before you attempted to edit your\n"
+"history."
+msgstr ""
+"Если ``histedit`` обнаруживает конфликт при перемещении ревизии (во\n"
+"время ``pick`` или ``fold``), он остановится, как при ``edit``, за\n"
+"исключением того, что вам не будет предложено ввести сообщение фиксации\n"
+"по завершении. Если в этот момент вы решите, что вам не нравится тот\n"
+"объем работы, который потребуется для переделывания истории, или вы\n"
+"допустили ошибку, можно использовать ``hg histedit --abort``, чтобы\n"
+"отбросить новые изменения и вернуться к состоянию до редактирования\n"
+"истории."
+
+msgid ""
+"If we clone the example repository above and add three more changes, such "
+"that\n"
+"we have the following history::"
+msgstr ""
+"Если мы клонируем приведенное выше хранилище и добавим еще три изменения,\n"
+"получим такую историю::"
+
+msgid ""
+"   @  6[tip]   038383181893   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add theta\n"
+"   |\n"
+"   o  5   140988835471   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add eta\n"
+"   |\n"
+"   o  4   122930637314   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add zeta\n"
+"   |\n"
+"   o  3   836302820282   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add epsilon\n"
+"   |\n"
+"   o  2   989b4d060121   2009-04-27 18:04 -0500   durin42\n"
+"   |    Add beta and delta.\n"
+"   |\n"
+"   o  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n"
+"   |    Add gamma\n"
+"   |\n"
+"   o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"        Add alpha"
+msgstr ""
+"   @  6[tip]   038383181893   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add theta\n"
+"   |\n"
+"   o  5   140988835471   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add eta\n"
+"   |\n"
+"   o  4   122930637314   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add zeta\n"
+"   |\n"
+"   o  3   836302820282   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add epsilon\n"
+"   |\n"
+"   o  2   989b4d060121   2009-04-27 18:04 -0500   durin42\n"
+"   |    Add beta and delta.\n"
+"   |\n"
+"   o  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n"
+"   |    Add gamma\n"
+"   |\n"
+"   o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"        Add alpha"
+
+msgid ""
+"If you run ``hg histedit --outgoing`` on the clone then it is the same\n"
+"as running ``hg histedit 836302820282``. If you need plan to push to a\n"
+"repository that Mercurial does not detect to be related to the source\n"
+"repo, you can add a ``--force`` option.\n"
+msgstr ""
+"Выполнение ``hg histedit --outgoing`` на клоне эквивалентно выполнению\n"
+"``hg histedit 836302820282``. Если вы хотите протолкнуть изменения в\n"
+"хранилище, которое Mercurial не опознает как связанное с источником,\n"
+"можно использовать параметр ``--force``.\n"
+
+msgid "cannot edit history that would orphan nodes"
+msgstr "нельзя редактировать историю, если это оставляет висячие узлы"
+
+msgid "can't edit history with merges"
+msgstr "нельзя редактировать историю со слияниями"
+
+#, python-format
+msgid "%s: empty changeset"
+msgstr "%s: пустой набор изменений"
+
+msgid "Fix up the change and run hg histedit --continue"
+msgstr "Исправьте изменение и запустите hg histedit --continue"
+
+msgid ""
+"Make changes as needed, you may commit or record as needed now.\n"
+"When you are finished, run hg histedit --continue to resume."
+msgstr ""
+"Внесите изменения при необходимости, при этом, если хотите, можно\n"
+"выполнять commit или record. Когда закончите, выполните\n"
+"hg histedit --continue для продолжения."
+
+msgid "Read history edits from the specified file."
+msgstr "Читать изменения истории из указанного файла."
+
+msgid "continue an edit already in progress"
+msgstr "продолжить текущее изменение истории"
+
+msgid "don't strip old nodes after edit is complete"
+msgstr "не вырезать старые узлы после завершения"
+
+msgid "abort an edit in progress"
+msgstr "отменить текущее редактирование"
+
+msgid "changesets not found in destination"
+msgstr "наборы изменений, отсутствующие в другом хранилище"
+
+msgid "force outgoing even for unrelated repositories"
+msgstr "использовать outgoing даже для несвязанных хранилищах"
+
+msgid "first revision to be edited"
+msgstr "первая редактируемая ревизия"
+
+msgid "[PARENT]"
+msgstr "[РОДИТЕЛЬ]"
+
+msgid ""
+"interactively edit changeset history\n"
+"    "
+msgstr "интерактивно редактировать историю ревизий    "
+
+msgid "source has mq patches applied"
+msgstr "источник имеет наложенные патчи mq"
+
+msgid "only one repo argument allowed with --outgoing"
+msgstr "допускается только одно хранилище с --outgoing"
+
+#, python-format
+msgid "comparing with %s\n"
+msgstr "сравниваем с %s\n"
+
+msgid "--force only allowed with --outgoing"
+msgstr "--force допустимо только с --outgoing"
+
+msgid "no arguments allowed with --continue"
+msgstr "другие аргументы не допускаются с --continue"
+
+msgid "no arguments allowed with --abort"
+msgstr "другие аргументы не допускаются с --abort"
+
+msgid "history edit already in progress, try --continue or --abort"
+msgstr ""
+"редактирование истории уже выполняется, используйте --continue или --abort"
+
+msgid "histedit requires exactly one parent revision"
+msgstr "histedit требует ровно одну родительскую ревизию"
+
+msgid "histedit: Should update metadata for the following changes:\n"
+msgstr "histedit: Необходимо обновить метаданные для следующих изменений:\n"
+
+#, python-format
+msgid "histedit:  %s to %s\n"
+msgstr "histedit: %s to %s\n"
+
+#, python-format
+msgid "histedit:     moving bookmarks %s\n"
+msgstr "histedit:     перемещаются закладки %s\n"
+
+msgid "must specify a rule for each changeset once"
+msgstr "для каждой ревизии требуется указать одно правило"
+
+#, python-format
+msgid "malformed line \"%s\""
+msgstr "неверный формат строки \"%s\""
+
+msgid "may not use changesets other than the ones listed"
+msgstr "можно использовать только перечисленные наборы изменений"
+
+#, python-format
+msgid "unknown changeset %s listed"
+msgstr "перечислен неизвестный набор изменений %s"
+
+#, python-format
+msgid "unknown action \"%s\""
+msgstr "неизвестное действие \"%s\""
+
 msgid "accelerate status report using Linux's inotify service"
 msgstr "ускоренные уведомления об изменениях с использованием Linux inotify"
 
@@ -4720,6 +5188,14 @@
 msgid "largefile %s missing from store (needs to be uploaded)"
 msgstr "большой файл %s отсутствует на складе (необходимо его загрузить)"
 
+#, python-format
+msgid "%d additional largefiles cached\n"
+msgstr "%d больших файлов закэшировано дополнительно\n"
+
+#, python-format
+msgid "%d largefiles failed to download\n"
+msgstr "не удалось загрузить %d больших файлов\n"
+
 msgid "getting changed largefiles\n"
 msgstr "получение измененных больших файлов\n"
 
@@ -4753,15 +5229,15 @@
 msgstr "неизвестная операционная система: %s\n"
 
 #, python-format
-msgid "Found %s in store\n"
+msgid "found %s in store\n"
 msgstr "%s найден на складе\n"
 
 #, python-format
-msgid "Found %s in system cache\n"
-msgstr "%s найден в кэше системы\n"
-
-msgid "Can't get file locally"
-msgstr "Невозможно получить файл локально"
+msgid "found %s in system cache\n"
+msgstr "%s найден в системном кэше\n"
+
+msgid "can't get file locally"
+msgstr "невозможно получить файл локально"
 
 #, python-format
 msgid ""
@@ -4868,12 +5344,12 @@
 msgid "&Other"
 msgstr "&Other - другой"
 
+msgid "no files to copy"
+msgstr "нет файлов для копирования"
+
 msgid "destination largefile already exists"
 msgstr "большой файл назначения уже существует"
 
-msgid "no files to copy"
-msgstr "нет файлов для копирования"
-
 msgid "caching new largefiles\n"
 msgstr "кэшируем новые большие файлы\n"
 
@@ -4882,6 +5358,10 @@
 msgstr "%d больших файлов закэшировано\n"
 
 #, python-format
+msgid "--all-largefiles is incompatible with non-local destination %s"
+msgstr "--all-largefiles несовместим с нелокальным путем назначения %s"
+
+#, python-format
 msgid "unknown archive type '%s'"
 msgstr "неизвестный тип архива '%s'"
 
@@ -4996,6 +5476,12 @@
 msgid "display outgoing largefiles"
 msgstr "показать исходящие большие файлы"
 
+msgid "download all pulled versions of largefiles"
+msgstr "загрузить все затянутые версии больших файлов"
+
+msgid "download all versions of all largefiles"
+msgstr "загрузить все версии всех больших файлов"
+
 msgid "manage a stack of patches"
 msgstr "управление стеком патчей"
 
@@ -5086,11 +5572,37 @@
 
 msgid ""
 "You will by default be managing a patch queue named \"patches\". You can\n"
-"create other, independent patch queues with the :hg:`qqueue` command.\n"
+"create other, independent patch queues with the :hg:`qqueue` command."
 msgstr ""
 "По умолчанию будет создана очередь патчей с именем \"patches\". Вы\n"
 "можете создавать другие независимые очереди патчей с помощью команды\n"
-":hg:`qqueue`.\n"
+":hg:`qqueue`."
+
+msgid ""
+"If the working directory contains uncommitted files, qpush, qpop and\n"
+"qgoto abort immediately. If -f/--force is used, the changes are\n"
+"discarded. Setting::"
+msgstr ""
+"Если рабочий каталог содержит незафиксированные файлы, qpush, apop и\n"
+"qgoto немедленно прерываются. Если укзан -f/--force, изменения будут\n"
+"потеряны. Настройка::"
+
+msgid ""
+"  [mq]\n"
+"  keepchanges = True"
+msgstr ""
+"  [mq]\n"
+"  keepchanges = True"
+
+msgid ""
+"make them behave as if --keep-changes were passed, and non-conflicting\n"
+"local changes will be tolerated and preserved. If incompatible options\n"
+"such as -f/--force or --exact are passed, this setting is ignored.\n"
+msgstr ""
+"заставляет эти команды вести себя так, как будто был указан --keep-changes,\n"
+"при этом локальные изменения без конфликтов сохраняются. Если указаны\n"
+"несовместимые параметры, такие как -f/--force и --exact, этот параметр\n"
+"игнорируется.\n"
 
 msgid "print first line of patch header"
 msgstr "печатать первую строку заголовка патча"
@@ -5192,6 +5704,9 @@
 msgid "unable to read %s\n"
 msgstr "невозможно прочитать %s\n"
 
+msgid "local changes found, refresh first"
+msgstr "найдены локальные изменения, необходимо сначала обновиться"
+
 #, python-format
 msgid "patch %s is empty\n"
 msgstr "патч %s пуст\n"
@@ -5250,9 +5765,6 @@
 msgid "uncommitted changes in subrepository %s"
 msgstr "незафиксированные изменения в подхранилище %s"
 
-msgid "local changes found, refresh first"
-msgstr "найдены локальные изменения, необходимо сначала обновиться"
-
 msgid "local changes found"
 msgstr "найдены локальные изменения"
 
@@ -5276,6 +5788,9 @@
 msgid "patch \"%s\" already exists"
 msgstr "патч \"%s\" уже существует"
 
+msgid "cannot use both --force and --keep-changes"
+msgstr "нельзя одновременно указывать --force и --keep-changes"
+
 msgid "cannot manage merge changesets"
 msgstr "не могу работать с ревизией слияния"
 
@@ -5326,6 +5841,9 @@
 msgid "patch series already fully applied\n"
 msgstr "последовательность патчей уже полностью наложена\n"
 
+msgid "cannot use --exact and --keep-changes together"
+msgstr "нельзя использовать --exact и --keep-changes одновременно"
+
 msgid "cannot use --exact and --move together"
 msgstr "нельзя использовать --exact и --move одновременно"
 
@@ -5407,8 +5925,8 @@
 msgid "patch %s is not in series file"
 msgstr "патч %s не в файле последовательностей (series)"
 
-msgid "No saved patch data found\n"
-msgstr "Не найдено сохраненных данных патча\n"
+msgid "no saved patch data found\n"
+msgstr "не найдено сохраненных данных патча\n"
 
 #, python-format
 msgid "restoring status: %s\n"
@@ -5428,8 +5946,8 @@
 msgid "updating queue directory\n"
 msgstr "обновление каталога очереди\n"
 
-msgid "Unable to load queue repository\n"
-msgstr "Невозможно загрузить хранилище очереди\n"
+msgid "unable to load queue repository\n"
+msgstr "невозможно загрузить хранилище очереди\n"
 
 msgid "save: no patches applied, exiting\n"
 msgstr "save: нет наложенных патчей, выход\n"
@@ -5450,6 +5968,9 @@
 msgid "option \"-r\" not valid when importing files"
 msgstr "опция \"-r\" недопустима при импорте файлов"
 
+msgid "no files or revisions specified"
+msgstr "не заданы файлы или ревизии"
+
 msgid "option \"-n\" not valid when importing multiple patches"
 msgstr "опция \"-n\" недопустима при импорте нескольких патчей"
 
@@ -5581,8 +6102,8 @@
 msgid "qpush after importing"
 msgstr "выполнить qpush после импортирования"
 
-msgid "hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... FILE..."
-msgstr "hg qimport [-e] [-n ИМЯ] [-f] [-g] [-P] [-r РЕВ]... ФАЙЛ..."
+msgid "hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... [FILE]..."
+msgstr "hg qimport [-e] [-n ИМЯ] [-f] [-g] [-P] [-r РЕВ]... [ФАЙЛ]..."
 
 msgid "import a patch or existing changeset"
 msgstr "импортировать патч или существующий набор изменений"
@@ -5999,8 +6520,8 @@
 msgstr "qfold требует указать хотя бы одно имя патча"
 
 #, python-format
-msgid "Skipping already folded patch %s\n"
-msgstr "Пропускается уже подшитый патч %s\n"
+msgid "skipping already folded patch %s\n"
+msgstr "пропускается уже подшитый патч %s\n"
 
 #, python-format
 msgid "qfold cannot fold already applied patch %s"
@@ -6010,6 +6531,9 @@
 msgid "error folding patch %s"
 msgstr "ошибка при подшивке патча %s"
 
+msgid "tolerate non-conflicting local changes"
+msgstr "допускать неконфликтующие локальные изменения"
+
 msgid "overwrite any local changes"
 msgstr "перезаписывать все локальные изменения"
 
@@ -6117,11 +6641,16 @@
 msgstr "протолкнуть следующий патч в стек"
 
 msgid ""
-"    When -f/--force is applied, all local changes in patched files\n"
-"    will be lost."
-msgstr ""
-"    С -f/--force все локальные изменения в файлах, на которые накладывается\n"
-"    патч, будут утеряны."
+"    By default, abort if the working directory contains uncommitted\n"
+"    changes. With --keep-changes, abort only if the uncommitted files\n"
+"    overlap with patched files. With -f/--force, backup and patch over\n"
+"    uncommitted changes."
+msgstr ""
+"    По умолчанию выполнение прерывается, если в рабочем каталоге есть\n"
+"    назафиксированные изменения. С --keep-changes прерывается только\n"
+"    если незафиксированные изменения пересекаются с файлами, на которые\n"
+"    накладывается патч. C -f/--force создается резервная копия и патч\n"
+"    накладывается поверх незафиксированных изменений."
 
 msgid "no saved queues found, please use -n\n"
 msgstr "не найдено сохраненных очередей, пожалуйста используйте -n\n"
@@ -6147,14 +6676,26 @@
 msgstr "вытолкнуть текущий патч из стека"
 
 msgid ""
-"    By default, pops off the top of the patch stack. If given a patch\n"
-"    name, keeps popping off patches until the named patch is at the\n"
-"    top of the stack."
-msgstr ""
-"    По умолчанию, выталкивает вершину стека патчей. Если указано имя\n"
+"    Without argument, pops off the top of the patch stack. If given a\n"
+"    patch name, keeps popping off patches until the named patch is at\n"
+"    the top of the stack."
+msgstr ""
+"    Без аргументов выталкивает вершину стека патчей. Если указано имя\n"
 "    патча, продолжает выталкивать патчи до тех пор, пока указанный патч\n"
 "    не окажется на вершине."
 
+msgid ""
+"    By default, abort if the working directory contains uncommitted\n"
+"    changes. With --keep-changes, abort only if the uncommitted files\n"
+"    overlap with patched files. With -f/--force, backup and discard\n"
+"    changes made to such files."
+msgstr ""
+"    По умолчанию выполнение прерывается, если в рабочем каталоге имеются\n"
+"    незафиксированные изменения. С --keep-changes прерывается только\n"
+"    если незафиксированные файлы пересекаются с файлами, на которые\n"
+"    накладывается патч. С -f/--force создается резервная копия и все\n"
+"    изменения в таких файлах отменяются."
+
 #, python-format
 msgid "using patch queue: %s\n"
 msgstr "используется очередь патчей: %s\n"
@@ -6248,8 +6789,11 @@
 msgid "do not modify working copy during strip"
 msgstr "не изменять рабочую копию во во время операции strip"
 
-msgid "hg strip [-k] [-f] [-n] REV..."
-msgstr "hg strip [-k] [-f] [-n] РЕВ..."
+msgid "remove revs only reachable from given bookmark"
+msgstr "удалить ревизии, доступные только через указанную закладку"
+
+msgid "hg strip [-k] [-f] [-n] [-B bookmark] [-r] REV..."
+msgstr "hg strip [-k] [-f] [-n] [-B закладка] [-r] РЕВИЗИЯ..."
 
 msgid "strip changesets and all their descendants from the repository"
 msgstr "срезать наборы изменений и всех их потомков из хранилища"
@@ -6298,6 +6842,23 @@
 "    Используйте параметр --no-backup чтобы удалить комплект резервного\n"
 "    восстановления сразу после завершения операции."
 
+msgid ""
+"    Strip is not a history-rewriting operation and can be used on\n"
+"    changesets in the public phase. But if the stripped changesets have\n"
+"    been pushed to a remote repository you will likely pull them again."
+msgstr ""
+"    Strip не изменяет историю, поэтому может быть использована на наборах\n"
+"    изменений в публичной фазе. Но если вырезанный набор изменений\n"
+"    был записан в отдаленное хранилище, скорее всего вы затяните его снова."
+
+#, python-format
+msgid "bookmark '%s' not found"
+msgstr "закладка '%s' не найдена"
+
+#, python-format
+msgid "bookmark '%s' deleted\n"
+msgstr "закладк '%s' удалена\n"
+
 msgid "empty revision set"
 msgstr "пустой набор ревизий"
 
@@ -6562,16 +7123,13 @@
 msgid "cannot commit over an applied mq patch"
 msgstr "не могу зафиксировать поверх наложенного патч mq"
 
-msgid "source has mq patches applied"
-msgstr "источник имеет наложенные патчи mq"
-
 #, python-format
 msgid "mq status file refers to unknown node %s\n"
 msgstr "файл состояния mq ссылается на неизвестный узел %s\n"
 
 #, python-format
-msgid "Tag %s overrides mq patch of the same name\n"
-msgstr "Метка %s подменяет патч mq с таким же именем\n"
+msgid "tag %s overrides mq patch of the same name\n"
+msgstr "метка %s подменяет патч mq с таким же именем\n"
 
 msgid "cannot import over an applied patch"
 msgstr "невозможно импортировать поверх наложенного патча"
@@ -6613,24 +7171,24 @@
 msgstr "хуки для отправки уведомлений о новых изменениях по email"
 
 msgid ""
-"This extension let you run hooks sending email notifications when\n"
-"changesets are being pushed, from the sending or receiving side."
-msgstr ""
-"Это расширение позволяет вам запускать хуки, отправляющие уведомление\n"
-"по email, когда наборы изменений проталкиваются в хранилище, от принимающей\n"
+"This extension implements hooks to send email notifications when\n"
+"changesets are sent from or received by the local repository."
+msgstr ""
+"Это расширение реализует хуки, отправляющие уведомления\n"
+"по email, когда наборы изменений проталкиваются или затягиваются\n"
 "или получающей стороны."
 
 msgid ""
 "First, enable the extension as explained in :hg:`help extensions`, and\n"
 "register the hook you want to run. ``incoming`` and ``changegroup`` hooks\n"
-"are run by the changesets receiver while the ``outgoing`` one is for\n"
-"the sender::"
+"are run when changesets are received, while ``outgoing`` hooks are for\n"
+"changesets sent to another repository::"
 msgstr ""
 "Первым делом, включите расширение, как это описано в :hg:`help extensions`\n"
-"и зарегистрируйте хук, который вы желаете запускать. На стороне,\n"
-"принимающей наборы изменений, выполняются хуки ``incoming`` и "
-"``changegroup``,\n"
-"в то время как на передающей стороне выполняется только ``outgoing``::"
+"и зарегистрируйте хук, который вы желаете запускать. При получении,\n"
+"изменений, выполняются хуки ``incoming`` и ``changegroup``,\n"
+"в то время как ``outgoing`` вызывается для передаваемых в другое хранилище\n"
+"наборов изменений::"
 
 msgid ""
 "  [hooks]\n"
@@ -6653,19 +7211,19 @@
 "  outgoing.notify = python:hgext.notify.hook"
 
 msgid ""
-"Now the hooks are running, subscribers must be assigned to\n"
-"repositories. Use the ``[usersubs]`` section to map repositories to a\n"
-"given email or the ``[reposubs]`` section to map emails to a single\n"
-"repository::"
-msgstr ""
-"Теперь, когда хуки активированы, подписчики должны быть привязаны к\n"
-"хранилищам. Используйте секции ``[usersubs]``, чтобы связать хранилища\n"
-"с заданным адресом email, или секцию ``[reposubs]``, чтобы связать\n"
-"адреса email с одним хранилищем::"
+"This registers the hooks. To enable notification, subscribers must\n"
+"be assigned to repositories. The ``[usersubs]`` section maps multiple\n"
+"repositories to a given recipient. The ``[reposubs]`` section maps\n"
+"multiple recipients to a single repository::"
+msgstr ""
+"Таким образом хуки зарегистрированы. Чтобы включить уведомления,\n"
+"подписчики должны быть связаны с хранилищами. Секция ``[usersubs]``\n"
+"связывает несколько хранилищ с заданным получателем. Секция ``[reposubs]``\n"
+"связывает несколько получателей с одним хранилищем::"
 
 msgid ""
 "  [usersubs]\n"
-"  # key is subscriber email, value is a comma-separated list of glob\n"
+"  # key is subscriber email, value is a comma-separated list of repo glob\n"
 "  # patterns\n"
 "  user@host = pattern"
 msgstr ""
@@ -6682,19 +7240,23 @@
 "  pattern = user@host"
 msgstr ""
 "  [reposubs]\n"
-"  # ключ - шаблон в стиле glob, значение - разделенный запятыми список "
-"адресов\n"
-"  # email\n"
+"  # ключ - шаблон в стиле glob, значение - разделенный запятыми список\n"
+"  # email-адресов\n"
 "  шаблон = пользователь@хост"
 
 msgid ""
 "Glob patterns are matched against absolute path to repository\n"
-"root. The subscriptions can be defined in their own file and\n"
-"referenced with::"
-msgstr ""
-"Шаблоны сравниваются с абсолютными путями к корню хранилища.\n"
-"Подписки могут определяться в отдельном файле, при этом на\n"
-"них можно сослаться следующим образом::"
+"root."
+msgstr "Шаблоны сопоставляются с абсолютными путями к корню хранилища."
+
+msgid ""
+"In order to place them under direct user management, ``[usersubs]`` and\n"
+"``[reposubs]`` sections may be placed in a separate ``hgrc`` file and\n"
+"incorporated by reference::"
+msgstr ""
+"Секции ``[reposubs]`` и ``[usersubs]`` могут быть помещены в отдельный файл\n"
+"конфигурации (hgrc), для того чтобы пользователь мог явно управлять ими, и\n"
+"могут подключаться с помощью ссылки:"
 
 msgid ""
 "  [notify]\n"
@@ -6704,20 +7266,11 @@
 "  config = /путь/к/файлу/подписок"
 
 msgid ""
-"Alternatively, they can be added to Mercurial configuration files by\n"
-"setting the previous entry to an empty value."
-msgstr ""
-"Также они могут быть добавлены прямо в конфигурационные файлы Mercurial,\n"
-"для этого надо установить предыдущий параметр в пустое значение (config= )"
-
-msgid ""
-"At this point, notifications should be generated but will not be sent until "
-"you\n"
-"set the ``notify.test`` entry to ``False``."
-msgstr ""
-"После этого уведомления уже должны генерироваться, но они не будут "
-"отправляться\n"
-"до тех пор, пока вы не установите ``notify.test`` в ``False``."
+"Notifications will not be sent until the ``notify.test`` value is set\n"
+"to ``False``; see below."
+msgstr ""
+"Уведомления не будут отправляться до тех пор, пока вы не установите\n"
+" ``notify.test`` в ``False``; см. далее."
 
 msgid ""
 "Notifications content can be tweaked with the following configuration "
@@ -6736,29 +7289,37 @@
 
 msgid ""
 "notify.sources\n"
-"  Space separated list of change sources. Notifications are sent only\n"
-"  if it includes the incoming or outgoing changes source. Incoming\n"
-"  sources can be ``serve`` for changes coming from http or ssh,\n"
-"  ``pull`` for pulled changes, ``unbundle`` for changes added by\n"
-"  :hg:`unbundle` or ``push`` for changes being pushed\n"
-"  locally. Outgoing sources are the same except for ``unbundle`` which\n"
-"  is replaced by ``bundle``. Default: serve."
+"  Space-separated list of change sources. Notifications are activated only\n"
+"  when a changeset's source is in this list. Sources may be:"
 msgstr ""
 "notify.sources\n"
-"  Разделенный пробелами список источников изменений. Уведомления\n"
-"  отсылаются, только если он содержит источники входящих или исходящих\n"
-"  изменений. Входящие источники могут быть ``serve`` - для изменений,\n"
-"  получаемых по ssh или http, ``pull`` - для затягиваемых изменений,\n"
-"  ``unbundle`` - для изменений, добавляемых с помощью :hg:`unbundle`,\n"
-"  или ``push`` - для добавленных локально с помощью команды :hg:`push`.\n"
-"  Такие же значения возможны и для исходящих, кроме ``unbundle``, который\n"
-"  заменяется на ``bundle``. По умолчанию: serve."
+"  Разделенный пробелами список источников изменений. Уведомления "
+"активируются\n"
+"  только когда источник набора изменений находится в этом списке.\n"
+"  Источником могут быть:"
+
+msgid ""
+"  :``serve``: changesets received via http or ssh\n"
+"  :``pull``: changesets received via ``hg pull``\n"
+"  :``unbundle``: changesets received via ``hg unbundle``\n"
+"  :``push``: changesets sent or received via ``hg push``\n"
+"  :``bundle``: changesets sent via ``hg unbundle``"
+msgstr ""
+"  :``serve``: наборы изменений, полученные по http или ssh\n"
+"  :``pull``: наборы изменений, полученные с помощью ``hg pull``\n"
+"  :``unbundle``: наборы изменений, полученные с помощью ``hg unbundle``\n"
+"  :``push``: наборы изменений, полученные или отправленные с помощью ``hg "
+"push``\n"
+"  :``bundle``: наборы изменений, отправленные с помощью ``hg unbundle``"
+
+msgid "  Default: serve."
+msgstr "  По умолчанию: serve."
 
 msgid ""
 "notify.strip\n"
 "  Number of leading slashes to strip from url paths. By default, "
 "notifications\n"
-"  references repositories with their absolute path. ``notify.strip`` let "
+"  reference repositories with their absolute path. ``notify.strip`` lets "
 "you\n"
 "  turn them into relative paths. For example, ``notify.strip=3`` will "
 "change\n"
@@ -6772,12 +7333,11 @@
 
 msgid ""
 "notify.domain\n"
-"  If subscribers emails or the from email have no domain set, complete them\n"
-"  with this value."
+"  Default email domain for sender or recipients with no explicit domain."
 msgstr ""
 "notify.domain\n"
-"  Если адреса email подписчиков или поле email \"From:\" (От) не имеют\n"
-"  домена, он заменяется этим значением."
+"  Домен email, используемый по умолчанию для отправителя или получателей,\n"
+"  если он не задан явно."
 
 msgid ""
 "notify.style\n"
@@ -6795,23 +7355,25 @@
 
 msgid ""
 "notify.incoming\n"
-"  Template to use when run as incoming hook, override ``notify.template``."
+"  Template to use when run as an incoming hook, overriding ``notify."
+"template``."
 msgstr ""
 "notify.incoming\n"
-"  Шаблон, используемый при запуске в качестве хука для входящих изменений,\n"
-"  переопределяет ``notify.template``."
+"  Шаблон, используемый при запуске в качестве хука для входящих изменений,"
+"переопределяет ``notify.template``."
 
 msgid ""
 "notify.outgoing\n"
-"  Template to use when run as outgoing hook, override ``notify.template``."
+"  Template to use when run as an outgoing hook, overriding ``notify."
+"template``."
 msgstr ""
 "notify.outgoing\n"
-"  Шаблон, используемый при запуске в качестве хука для исходящих изменений,\n"
-"  переопределяет ``notify.template``."
+"  Шаблон, используемый при запуске в качестве хука для исходящих изменений,"
+"переопределяет ``notify.template``."
 
 msgid ""
 "notify.changegroup\n"
-"  Template to use when running as changegroup hook, override\n"
+"  Template to use when running as a changegroup hook, overriding\n"
 "  ``notify.template``."
 msgstr ""
 "notify.changegroup\n"
@@ -6821,7 +7383,7 @@
 msgid ""
 "notify.maxdiff\n"
 "  Maximum number of diff lines to include in notification email. Set to 0\n"
-"  to disable the diff, -1 to include all of it. Default: 300."
+"  to disable the diff, or -1 to include all of it. Default: 300."
 msgstr ""
 "notify.maxdiff\n"
 "  Максимальное количество строк различий, включаемых в письмо уведомления.\n"
@@ -6830,7 +7392,7 @@
 
 msgid ""
 "notify.maxsubject\n"
-"  Maximum number of characters in emails subject line. Default: 67."
+"  Maximum number of characters in email's subject line. Default: 67."
 msgstr ""
 "notify.maxsubject\n"
 "  Максимальное количество символов в теме (\"Subject:\") письма. По "
@@ -6863,19 +7425,18 @@
 
 msgid ""
 "notify.fromauthor\n"
-"  If set, use the first committer of the changegroup for the \"From\" field "
-"of\n"
-"  the notification mail. If not set, take the user from the pushing repo.\n"
-"  Default: False."
+"  If set, use the committer of the first changeset in a changegroup for\n"
+"  the \"From\" field of the notification mail. If not set, take the user\n"
+"  from the pushing repo.  Default: False."
 msgstr ""
 "notify.fromauthor\n"
-"  Если истина, использовать первого автора группы изменений для поля \"От\"\n"
-"  сообщения. Если не задан, использовать пользователя из исходящего "
-"хранилища.\n"
+"  Если задано, использовать автора первого изменения группы изменений для\n"
+"  поля \"От\" email-сообщения. Если не задан, использовать пользователя из   "
+"исходящего хранилища.\n"
 "  По умолчанию: False (Ложь)"
 
 msgid ""
-"If set, the following entries will also be used to customize the "
+"If set, the following entries will also be used to customize the\n"
 "notifications:"
 msgstr ""
 "Следующие параметры также используются для настройки уведомлений,\n"
@@ -6883,8 +7444,8 @@
 
 msgid ""
 "email.from\n"
-"  Email ``From`` address to use if none can be found in generated email "
-"content."
+"  Email ``From`` address to use if none can be found in the generated\n"
+"  email content."
 msgstr ""
 "email.from\n"
 "  Адрес для поля ``От`` (``From``), если нет другого подходящего\n"
@@ -6892,11 +7453,11 @@
 
 msgid ""
 "web.baseurl\n"
-"  Root repository browsing URL to combine with repository paths when making\n"
+"  Root repository URL to combine with repository paths when making\n"
 "  references. See also ``notify.strip``."
 msgstr ""
 "web.baseurl\n"
-"  URL корня хранилища для обозревателя, совмещаемый с путями хранилища\n"
+"  URL корня хранилища, присоединяемый к путям хранилища\n"
 "  при создании ссылок. См. также ``notify.strip``."
 
 #, python-format
@@ -6937,10 +7498,10 @@
 
 msgid ""
 "  [pager]\n"
-"  pager = less -FRSX"
+"  pager = less -FRX"
 msgstr ""
 "  [pager]\n"
-"  pager = less -FRSX"
+"  pager = less -FRX"
 
 msgid ""
 "If no pager is set, the pager extensions uses the environment variable\n"
@@ -7363,10 +7924,6 @@
 "    в вашем конфигурационном файле. См. секцию [email] в справке по\n"
 "    hgrc(5) для дополнительной информации.    "
 
-#, python-format
-msgid "comparing with %s\n"
-msgstr "сравниваем с %s\n"
-
 msgid "no changes found\n"
 msgstr "изменения не найдены\n"
 
@@ -7391,8 +7948,8 @@
 "Напишите вводное письмо для серии патчей."
 
 #, python-format
-msgid "This patch series consists of %d patches."
-msgstr "Эта серия содержит %d патчей."
+msgid "this patch series consists of %d patches."
+msgstr "Эта серия состоит из %d патчей."
 
 msgid "no recipient addresses provided"
 msgstr "не указан адрес получателя"
@@ -7419,11 +7976,11 @@
 msgid "patchbomb canceled"
 msgstr "отправка отменена"
 
-msgid "Displaying "
-msgstr "Показывается "
-
-msgid "Sending "
-msgstr "Отправляется "
+msgid "displaying "
+msgstr "отображение "
+
+msgid "sending "
+msgstr "отправка "
 
 msgid "sending"
 msgstr "отправка"
@@ -7609,12 +8166,12 @@
 msgstr "предупреждение: %s\n"
 
 #, python-format
-msgid "Removing file %s\n"
-msgstr "Удаляем файл %s\n"
-
-#, python-format
-msgid "Removing directory %s\n"
-msgstr "Удаляем каталог %s\n"
+msgid "removing file %s\n"
+msgstr "удаляется файл %s\n"
+
+#, python-format
+msgid "removing directory %s\n"
+msgstr "удаляется каталог %s\n"
 
 msgid "command to move sets of revisions to a different ancestor"
 msgstr "команда для перемещения наборов ревизий к другому предку"
@@ -7669,8 +8226,8 @@
 msgid "keep original branch names"
 msgstr "сохранить исходные имена веток"
 
-msgid "force detaching of source from its original branch"
-msgstr "принудительно отцепить источник от его ветки-источника"
+msgid "(DEPRECATED)"
+msgstr "(УСТАРЕЛО)"
 
 msgid "specify merge tool"
 msgstr "задать инструмент слияния"
@@ -7808,9 +8365,6 @@
 msgid "cannot use collapse with continue or abort"
 msgstr "нельзя использовать collapse с continue или abort"
 
-msgid "cannot use detach with continue or abort"
-msgstr "нельзя использовать detach с continue или abort"
-
 msgid "abort and continue do not allow specifying revisions"
 msgstr "abort и continue не позволяют задавать ревизии"
 
@@ -7826,12 +8380,6 @@
 msgid "cannot specify both a revision and a source"
 msgstr "нельзя указывать одновременно ревизию и source"
 
-msgid "detach requires a revision to be specified"
-msgstr "detach требует указания ревизии"
-
-msgid "cannot specify a base with detach"
-msgstr "нельзя задавать base с detach"
-
 msgid "can't remove original changesets with unrebased descendants"
 msgstr ""
 "не удается удалить исходный набор изменений с неперебазированными потомками"
@@ -7892,10 +8440,9 @@
 msgid "no rebase in progress"
 msgstr "нет прерванного перебазирования"
 
-msgid "warning: immutable rebased changeset detected, can't abort\n"
-msgstr ""
-"внимание: обнаружены неизменяемые перебазированные наборы изменений, нельзя "
-"прервать\n"
+#, python-format
+msgid "can't abort rebase due to immutable changesets %s"
+msgstr "невозможно отменить перебазирование из-за неизменяемых ревизий %s"
 
 msgid "warning: new changesets detected on target branch, can't abort\n"
 msgstr ""
@@ -8192,9 +8739,6 @@
 msgid "hardlinks are not supported on this system"
 msgstr "эта система не поддерживать жесткие ссылки"
 
-msgid "must specify local origin repository"
-msgstr "хранилище-источник должно быть локальным"
-
 #, python-format
 msgid "relinking %s to %s\n"
 msgstr "пересоздаем ссылки %s в %s\n"
@@ -8420,10 +8964,6 @@
 msgid "can only omit patchfile if merging"
 msgstr "patchfile можно опустить только при слиянии"
 
-#, python-format
-msgid "%s: empty changeset"
-msgstr "%s: пустой набор изменений"
-
 msgid "fix up the merge and run hg transplant --continue"
 msgstr "разрешите конфликты и запустите hg transplant --continue"
 
@@ -8551,12 +9091,12 @@
 "    изменений, которые вы хотите пересадить."
 
 msgid ""
-"    :hg:`transplant --branch REVISION --all` will transplant the\n"
+"    :hg:`transplant --branch REV --all` will transplant the\n"
 "    selected branch (up to the named revision) onto your current\n"
 "    working directory."
 msgstr ""
 "    :hg:`transplant --branch РЕВИЗИЯ --all` пересадит выбранную\n"
-"    ветке (вплоть до указанной ревизии) поверх текущего рабочего\n"
+"    ветку (вплоть до указанной ревизии) поверх текущего рабочего\n"
 "    каталога."
 
 msgid ""
@@ -8808,8 +9348,10 @@
 "в Mercurial.ini или %s.\n"
 
 #, python-format
-msgid "Attempt to commit or push text file(s) using %s line endings\n"
-msgstr "Попытка зафиксировать или протолкнуть файл(ы) с переводами строки %s\n"
+msgid "attempt to commit or push text file(s) using %s line endings\n"
+msgstr ""
+"попытка зафиксировать или протолкнуть текстовые файл(ы) с переводами\n"
+"строки формата %s\n"
 
 #, python-format
 msgid "in %s: %s\n"
@@ -8924,6 +9466,10 @@
 msgid "divergent bookmark %s stored as %s\n"
 msgstr "противоречивая закладка %s сохранена как %s\n"
 
+#, python-format
+msgid "adding remote bookmark %s\n"
+msgstr "добавление отдалённой закладки %s\n"
+
 msgid "searching for changed bookmarks\n"
 msgstr "поиск изменившихся закладок\n"
 
@@ -9140,13 +9686,30 @@
 
 # второй параметр - дата/время
 #, python-format
-msgid "Found revision %s from %s\n"
-msgstr "Найдена ревизия %s от %s\n"
+msgid "found revision %s from %s\n"
+msgstr "найдена ревизия %s от %s\n"
 
 msgid "revision matching date not found"
 msgstr "не найдена ревизия для данной даты"
 
 #, python-format
+msgid "cannot follow file not in parent revision: \"%s\""
+msgstr ""
+"невозможно отслеживать файл, которого нет в родительской ревизии: \"%s\""
+
+#, python-format
+msgid "cannot follow nonexistent file: \"%s\""
+msgstr "невозможно отслеживать несуществующий файл: \"%s\""
+
+msgid "can only follow copies/renames for explicit filenames"
+msgstr ""
+"чтобы отслеживать копирования/переименования, требуется явное имя файла"
+
+#, python-format
+msgid "-G/--graph option is incompatible with --%s"
+msgstr "опция -G/--graph несовместима с --%s "
+
+#, python-format
 msgid "adding %s\n"
 msgstr "добавляется %s\n"
 
@@ -9344,6 +9907,9 @@
 msgid "output diffstat-style summary of changes"
 msgstr "отображать сводку изменений в стиле diffstat"
 
+msgid "show the revision DAG"
+msgstr "показать граф ревизий"
+
 msgid "treat all files as text"
 msgstr "обрабатывать все файлы как текстовые"
 
@@ -9449,27 +10015,27 @@
 "    при следующей фиксации."
 
 msgid ""
-"    Use the -s/--similarity option to detect renamed files. With a\n"
-"    parameter greater than 0, this compares every removed file with\n"
-"    every added file and records those similar enough as renames. This\n"
+"    Use the -s/--similarity option to detect renamed files. This\n"
 "    option takes a percentage between 0 (disabled) and 100 (files must\n"
-"    be identical) as its parameter. Detecting renamed files this way\n"
+"    be identical) as its parameter. With a parameter greater than 0,\n"
+"    this compares every removed file with every added file and records\n"
+"    those similar enough as renames. Detecting renamed files this way\n"
 "    can be expensive. After using this option, :hg:`status -C` can be\n"
-"    used to check which files were identified as moved or renamed.\n"
-"    If this option is not specified, only renames of identical files\n"
-"    are detected."
+"    used to check which files were identified as moved or renamed. If\n"
+"    not specified, -s/--similarity defaults to 100 and only renames of\n"
+"    identical files are detected."
 msgstr ""
 "    Используйте параметр -s/--similarity, чтобы найти переименованные\n"
 "    файлы. Если этот параметр больше 0, то производится сравнение\n"
-"    каждого отдалённого файла с каждым добавленным, и если они достаточно\n"
+"    каждого удалённого файла с каждым добавленным, и если они достаточно\n"
 "    похожи, то это фиксируется как переименование. Этот параметр принимает\n"
 "    в качестве параметра \"процент похожести\" от 0 (отключено) до 100\n"
 "    (файлы должны быть одинаковыми). Этот способ нахождения\n"
-"    переименованных файлов может оказать дорогим. После использования\n"
+"    переименованных файлов может оказаться затратным. После использования\n"
 "    этого параметра можно использовать :hg:`status -C` чтобы проверить,\n"
 "    какие файлы были идентифицированы как перемещенные или\n"
 "    переименованные. Если этот параметр не задан, обнаруживаются только\n"
-"    переименования идентичных файлов."
+"    переименования идентичных файлов (--similarity = 100)."
 
 msgid "similarity must be a number"
 msgstr "параметр \"similarity\" должен быть числом"
@@ -9788,13 +10354,16 @@
 
 msgid ""
 "    If you supply a command, it will be used for automatic bisection.\n"
-"    Its exit status will be used to mark revisions as good or bad:\n"
-"    status 0 means good, 125 means to skip the revision, 127\n"
-"    (command not found) will abort the bisection, and any other\n"
-"    non-zero exit status means the revision is bad."
-msgstr ""
-"    Если вы укажите команду, она будет использована для автоматического\n"
-"    поиска. Ее код возврата будет использован чтобы пометить ревизию\n"
+"    The environment variable HG_NODE will contain the ID of the\n"
+"    changeset being tested. The exit status of the command will be\n"
+"    used to mark revisions as good or bad: status 0 means good, 125\n"
+"    means to skip the revision, 127 (command not found) will abort the\n"
+"    bisection, and any other non-zero exit status means the revision\n"
+"    is bad."
+msgstr ""
+"    Если вы укажите команду, она будет использована для автоматической\n"
+"    бисекции. Переменная окружения HG_NODE будет содержать ID тестируемой\n"
+"    ревизии. Код возврата команды будет использован чтобы пометить ревизию\n"
 "    как плохую или хорошую: код 0 - хорошая, код 125 означает пропустить\n"
 "    ревизию, 127 (команда не найдена) отменяет поиск, любой другой\n"
 "    код возврата означает плохую ревизию."
@@ -9877,6 +10446,17 @@
 msgid "          hg log -r \"bisect(pruned)\""
 msgstr "          hg log -r \"bisect(pruned)\""
 
+msgid ""
+"      - see the changeset currently being bisected (especially useful\n"
+"        if running with -U/--noupdate)::"
+msgstr ""
+"      - посмотреть ревизию, над которой в данный момент выполняется "
+"бисекция\n"
+"        (особенно полезно при запуске с -U/--noupdate)::"
+
+msgid "          hg log -r \"bisect(current)\""
+msgstr "          hg log -r \"bisect(current)\""
+
 msgid "      - see all changesets that took part in the current bisection::"
 msgstr ""
 "      - посмотреть все наборы изменений, которые участвовали в текущей "
@@ -9929,6 +10509,12 @@
 msgid "incompatible arguments"
 msgstr "несовместимые аргументы"
 
+msgid "current bisect revision is unknown - start a new bisect to fix"
+msgstr "текущая ревизия бисекции неизвестна - начните бисекцию заново"
+
+msgid "current bisect revision is a merge"
+msgstr "текущая ревизия бисекция является ревизией слияния"
+
 #, python-format
 msgid "failed to execute %s"
 msgstr "не удалось выполнить %s"
@@ -9938,8 +10524,8 @@
 msgstr "%s завершен (killed)"
 
 #, python-format
-msgid "Changeset %d:%s: %s\n"
-msgstr "Набор изменений %d:%s: %s\n"
+msgid "changeset %d:%s: %s\n"
+msgstr "ревизия %d:%s: %s\n"
 
 #, python-format
 msgid "Extending search to changeset %d:%s\n"
@@ -10943,15 +11529,15 @@
 msgstr "протестировать установка Mercurial"
 
 #, python-format
-msgid "Checking encoding (%s)...\n"
-msgstr "Проверка кодировки (%s)...\n"
+msgid "checking encoding (%s)...\n"
+msgstr "проверка кодировки (%s)...\n"
 
 msgid " (check that your locale is properly set)\n"
 msgstr " (проверьте правильность установки локали)\n"
 
 #, python-format
-msgid "Checking installed modules (%s)...\n"
-msgstr "Проверка установленных модулей (%s)...\n"
+msgid "checking installed modules (%s)...\n"
+msgstr "проверка установленных модулей (%s)...\n"
 
 msgid " One or more extensions could not be found"
 msgstr " Одно или более расширение не найдено"
@@ -10960,14 +11546,14 @@
 msgstr " (убедитесь, что вы скомпилировали расширение)\n"
 
 #, python-format
-msgid "Checking templates (%s)...\n"
-msgstr "Проверка шаблонов (%s)...\n"
+msgid "checking templates (%s)...\n"
+msgstr "проверка шаблонов (%s)...\n"
 
 msgid " (templates seem to have been installed incorrectly)\n"
 msgstr " (шаблоны, похоже, некорректно установлены)\n"
 
-msgid "Checking commit editor...\n"
-msgstr "Проверка редактора сообщений фиксации...\n"
+msgid "checking commit editor...\n"
+msgstr "проверка редактора сообщений фиксации...\n"
 
 msgid " No commit editor set and can't find vi in PATH\n"
 msgstr " Редактор сообщений не установлен и vi не доступен в PATH\n"
@@ -10979,14 +11565,14 @@
 msgid " Can't find editor '%s' in PATH\n"
 msgstr " Редактор '%s' не доступен в PATH\n"
 
-msgid "Checking username...\n"
-msgstr "Проверка имени пользователя...\n"
+msgid "checking username...\n"
+msgstr "проверка имени пользователя...\n"
 
 msgid " (specify a username in your configuration file)\n"
 msgstr " (задайте имя пользователя в конфиге)\n"
 
-msgid "No problems detected\n"
-msgstr "Проблем не обнаружено\n"
+msgid "no problems detected\n"
+msgstr "проблем не обнаружено\n"
 
 #, python-format
 msgid "%s problems detected, please check your install!\n"
@@ -10999,15 +11585,20 @@
 msgstr "проверить, известны ли идентификаторы узлов в хранилище"
 
 msgid ""
-"    Every ID must be a full-length hex node id string. Returns a list of 0s "
-"and 1s\n"
-"    indicating unknown/known.\n"
+"    Every ID must be a full-length hex node id string. Returns a list of 0s\n"
+"    and 1s indicating unknown/known.\n"
 "    "
 msgstr ""
 "    Каждый идентификатор должен быть полным 16-ричным идентификатором узла.\n"
 "    Возвращает список нулей и единиц, означающих неизвестен/известен.\n"
 "    "
 
+msgid "[OBSOLETED [REPLACEMENT] [REPL... ]"
+msgstr "[УСТАРЕВШЕЕ [ЗАМЕНА] [ЗАМЕНА... ]"
+
+msgid "create arbitrary obsolete marker"
+msgstr "создать произвольный маркер устаревшей ревизии"
+
 msgid "REPO NAMESPACE [KEY OLD NEW]"
 msgstr "ХРАНИЛИЩЕ ПРОСТРАНСТВО_ИМЕН [КЛЮЧ СТАРЫЙ НОВЫЙ]"
 
@@ -11227,8 +11818,8 @@
 msgid "revisions to export"
 msgstr "ревизии для экспортирования"
 
-msgid "[OPTION]... [-o OUTFILESPEC] REV..."
-msgstr "[ПАРАМЕТР]... [-o OUTFILESPEC] РЕВИЗИЯ..."
+msgid "[OPTION]... [-o OUTFILESPEC] [-r] REV..."
+msgstr "[ПАРАМЕТР]... [-o ВЫХФОРМАТ] [-r] РЕВИЗИЯ..."
 
 msgid "dump the header and diffs for one or more changesets"
 msgstr "вывести заголовок и различия для одной или нескольких ревизий"
@@ -11384,17 +11975,23 @@
 msgid "          hg forget \"set:hgignore()\""
 msgstr "          hg forget \"set:hgignore()\""
 
+msgid "revisions to graft"
+msgstr "ревизии для переноса"
+
 msgid "resume interrupted graft"
 msgstr "возобновить прерванную операцию graft"
 
+msgid "append graft info to log message"
+msgstr "добавить информацию о переносе в журнальное сообщение"
+
 msgid "record the current date as commit date"
 msgstr "использовать текущую дату в качестве даты фиксации"
 
 msgid "record the current user as committer"
 msgstr "использовать текущего пользователя как автора фиксации"
 
-msgid "[OPTION]... REVISION..."
-msgstr "[ПАРАМЕТР]... РЕВИЗИЯ..."
+msgid "[OPTION]... [-r] REV..."
+msgstr "[ПАРАМЕТР]... [-r] РЕВИЗИЯ..."
 
 msgid "copy changes from other branches onto the current branch"
 msgstr "копировать изменения с другой ветки в текущую"
@@ -11420,6 +12017,9 @@
 "    уже была применена операция graft, а также ревизии слияния будут\n"
 "    пропущены."
 
+msgid "      (grafted from CHANGESETHASH)"
+msgstr "      (перенесено из ХЭШРЕВИЗИИ)"
+
 msgid ""
 "    If a graft merge results in conflicts, the graft process is\n"
 "    interrupted so that the current merge can be manually resolved.\n"
@@ -11514,6 +12114,10 @@
 msgid "use hg resolve and hg graft --continue"
 msgstr "используйте hg resolve и hg graft --continue"
 
+#, python-format
+msgid "graft for revision %s is empty\n"
+msgstr "нечего переносить для ревизии %s\n"
+
 msgid "end fields with NUL"
 msgstr "заканчивать поля символом NUL"
 
@@ -11665,6 +12269,9 @@
 msgid "show only help for commands"
 msgstr "показать только справку по командам"
 
+msgid "show topics matching keyword"
+msgstr "показать темы, соответствующие ключевому слову"
+
 msgid "[-ec] [TOPIC]"
 msgstr "[-ec] [ТЕМА]"
 
@@ -11689,44 +12296,6 @@
 "    Возвращает 0 при успешном выполнении.\n"
 "    "
 
-msgid "VALUE"
-msgstr "ЗНАЧЕНИЕ"
-
-msgid "DEPRECATED"
-msgstr "УСТАРЕЛО"
-
-msgid ""
-"\n"
-"[+] marked option can be specified multiple times\n"
-msgstr ""
-"\n"
-"параметры, помеченные [+], могут указываться многократно\n"
-
-msgid "global options:"
-msgstr "глобальные параметры:"
-
-msgid "use \"hg help\" for the full list of commands"
-msgstr "используйте \"hg help\" чтобы посмотреть полный список команд"
-
-msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
-msgstr ""
-"используйте \"hg help\" чтобы посмотреть полный список команд,\"hg -v\" для "
-"подробной информации"
-
-#, python-format
-msgid "use \"hg help %s\" to show the full help text"
-msgstr "используйте \"hg help %s\" чтобы получить полную справку"
-
-#, python-format
-msgid "use \"hg -v help%s\" to show builtin aliases and global options"
-msgstr ""
-"используйте \"hg -v help%s\" чтобы посмотреть встроенные псевдонимы и "
-"глобальные параметры"
-
-#, python-format
-msgid "use \"hg -v help %s\" to show more info"
-msgstr "используйте \"hg -v help %s\" для дополнительной информации"
-
 #, python-format
 msgid ""
 "\n"
@@ -11761,6 +12330,9 @@
 msgid "options:"
 msgstr "параметры:"
 
+msgid "global options:"
+msgstr "глобальные параметры:"
+
 #, python-format
 msgid ""
 "\n"
@@ -11796,6 +12368,24 @@
 "\n"
 "дополнительные разделы справки:"
 
+msgid "use \"hg help\" for the full list of commands"
+msgstr "используйте \"hg help\" чтобы посмотреть полный список команд"
+
+msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
+msgstr ""
+"используйте \"hg help\" чтобы посмотреть полный список команд,\"hg -v\" для "
+"подробной информации"
+
+#, python-format
+msgid "use \"hg help %s\" to show the full help text"
+msgstr "используйте \"hg help %s\" чтобы получить полную справку"
+
+#, python-format
+msgid "use \"hg -v help%s\" to show builtin aliases and global options"
+msgstr ""
+"используйте \"hg -v help%s\" чтобы посмотреть встроенные псевдонимы и "
+"глобальные параметры"
+
 #, python-format
 msgid ""
 "\n"
@@ -11818,6 +12408,12 @@
 msgid "'%s' is provided by the following extension:"
 msgstr "'%s' предоставляется следующим расширением:"
 
+msgid "Topics"
+msgstr "Темы"
+
+msgid "Extension Commands"
+msgstr "Команды Расширения"
+
 msgid "Mercurial Distributed SCM\n"
 msgstr "Распределенная система контроля версий Mercurial\n"
 
@@ -12454,6 +13050,20 @@
 "    При успехе возвращает 0, 1 если есть неразрешенные конфликты.\n"
 "    "
 
+msgid ""
+"multiple matching bookmarks to merge - please merge with an explicit rev or "
+"bookmark"
+msgstr ""
+"несколько подходящих закладок - явно укажите ревизию или закладку для слияния"
+
+msgid "run 'hg heads' to see all heads"
+msgstr "используйте 'hg heads' чтобы посмотреть все головы"
+
+msgid ""
+"no matching bookmark to merge - please merge with an explicit rev or bookmark"
+msgstr ""
+"нет подходящих закладок - явно укажите ревизию или закладку для слияния"
+
 #, python-format
 msgid "branch '%s' has %d heads - please merge with an explicit rev"
 msgstr "ветка '%s' имеет %d голов(ы) - явно укажите ревизию для слияния"
@@ -12461,13 +13071,13 @@
 msgid "run 'hg heads .' to see heads"
 msgstr "используйте 'hg heads .' чтобы посмотреть головы"
 
+msgid "heads are bookmarked - please merge with an explicit rev"
+msgstr "головы помечены закладками - явно укажите ревизию для слияния"
+
 #, python-format
 msgid "branch '%s' has one head - please merge with an explicit rev"
 msgstr "ветка '%s' имеет одну голову - явно укажите ревизию для слияния"
 
-msgid "run 'hg heads' to see all heads"
-msgstr "используйте 'hg heads' чтобы посмотреть все головы"
-
 msgid "nothing to merge"
 msgstr "нечего сливать"
 
@@ -12747,13 +13357,6 @@
 msgid "remote bookmark %s not found!"
 msgstr "закладка %s не найдена в отдалённом хранилище"
 
-msgid ""
-"other repository doesn't support revision lookup, so a rev cannot be "
-"specified."
-msgstr ""
-"Отдалённое хранилище не поддерживает поиск ревизий, поэтому ревизия не может "
-"быть задана."
-
 #, python-format
 msgid "importing bookmark %s\n"
 msgstr "импортируется закладка %s\n"
@@ -12824,6 +13427,14 @@
 "    будут переданы в отдалённое хранилище."
 
 msgid ""
+"    If -B/--bookmark is used, the specified bookmarked revision, its\n"
+"    ancestors, and the bookmark will be pushed to the remote\n"
+"    repository."
+msgstr ""
+"    Если указан -B/--bookmark, то ревизия, помеченная заданной закладкой,\n"
+"    ее предки и сама закладка будут протолкнуты в отдалённое хранилище."
+
+msgid ""
 "    Please see :hg:`help urls` for important details about ``ssh://``\n"
 "    URLs. If DESTINATION is omitted, a default path will be used."
 msgstr ""
@@ -13132,14 +13743,17 @@
 msgid "restore files to their checkout state"
 msgstr "восстановить файлы до их состояния в хранилище"
 
-msgid ""
-"    .. note::\n"
+# does this require a translation?
+msgid "    .. note::"
+msgstr "    .. примечание::"
+
+msgid ""
 "       To check out earlier revisions, you should use :hg:`update REV`.\n"
-"       To cancel a merge (and lose your changes), use :hg:`update --clean .`."
-msgstr ""
-"    .. note::\n"
+"       To cancel an uncommitted merge (and lose your changes), use\n"
+"       :hg:`update --clean .`."
+msgstr ""
 "       Чтобы извлечь более ранние ревизии, необходимо использовать\n"
-"       :hg:`update РЕВИЗИЯ`. Чтобы отменить слияние (с потерей сделанных)\n"
+"       :hg:`update РЕВИЗИЯ`. Чтобы отменить слияние (с потерей сделанных\n"
 "       изменений), используйте :hg:`update --clean .`."
 
 msgid ""
@@ -13242,35 +13856,40 @@
 msgid ""
 "    Transactions are used to encapsulate the effects of all commands\n"
 "    that create new changesets or propagate existing changesets into a\n"
-"    repository. For example, the following commands are transactional,\n"
-"    and their effects can be rolled back:"
-msgstr ""
-"    Транзакции используются для инкапсуляции эффектов всех команд,\n"
+"    repository."
+msgstr ""
+"    Для инкапсуляции эффектов всех команд,\n"
 "    которые создают новые наборы изменений или передают уже\n"
-"    существующие в хранилище. Действие таких команд можно откатить.\n"
-"    Транзакционными являются, например, следующие команды:"
-
-msgid ""
-"    - commit\n"
-"    - import\n"
-"    - pull\n"
-"    - push (with this repository as the destination)\n"
-"    - unbundle"
-msgstr ""
-"    - commit\n"
-"    - import\n"
-"    - pull\n"
-"    - push (с текущим хранилищем в качестве назначения)\n"
-"    - unbundle"
-
-msgid ""
-"    To avoid permanent data loss, rollback will refuse to rollback a\n"
-"    commit transaction if it isn't checked out. Use --force to\n"
-"    override this protection."
-msgstr ""
-"    Чтобы предотвратить безвозвратную потерю данных, rollback откажется\n"
-"    выполнять откат транзакции фиксации, если она не извлечена. Вы можете\n"
-"    использовать --force, чтобы откатить принудительно."
+"    существующие наборы изменений в хранилище, используются транзакции."
+
+msgid ""
+"      For example, the following commands are transactional, and their\n"
+"      effects can be rolled back:"
+msgstr ""
+"      Так, следующие команды являются транзакционными и их эффекты\n"
+"      можно откатить:"
+
+msgid ""
+"      - commit\n"
+"      - import\n"
+"      - pull\n"
+"      - push (with this repository as the destination)\n"
+"      - unbundle"
+msgstr ""
+"      - commit\n"
+"      - import\n"
+"      - pull\n"
+"      - push (с текущим хранилищем в качестве назначения)\n"
+"      - unbundle"
+
+msgid ""
+"      To avoid permanent data loss, rollback will refuse to rollback a\n"
+"      commit transaction if it isn't checked out. Use --force to\n"
+"      override this protection."
+msgstr ""
+"      Чтобы предотвратить безвозвратную потерю данных, rollback откажется\n"
+"      выполнять откат транзакции фиксации, если она не извлечена. Вы можете\n"
+"      использовать --force, чтобы откатить принудительно."
 
 msgid ""
 "    This command is not intended for use on public repositories. Once\n"
@@ -13396,9 +14015,6 @@
 msgid "cannot use --stdio with --cmdserver"
 msgstr "нельзя использовать --stdio с --cmdserver"
 
-msgid "There is no Mercurial repository here (.hg not found)"
-msgstr "Здесь нет хранилища Mercurial (.hg не обнаружен)"
-
 #, python-format
 msgid "listening at http://%s%s/%s (bound to %s:%d)\n"
 msgstr "слушаю по адресу http://%s%s/%s (привязан к %s:%d)\n"
@@ -13593,7 +14209,7 @@
 
 #, python-format
 msgid "parent: %d:%s "
-msgstr "родитель: %d:%s"
+msgstr "родитель: %d:%s "
 
 msgid " (empty repository)"
 msgstr " (пустое хранилище)"
@@ -13809,6 +14425,9 @@
 msgid "not at a branch head (use -f to force)"
 msgstr "не на голове ветки (-f - установить принудительно)"
 
+msgid "null revision specified"
+msgstr "задана пустая ревизия"
+
 msgid "list repository tags"
 msgstr "перечислить метки в хранилище"
 
@@ -13894,6 +14513,13 @@
 "    bookmarks`)."
 
 msgid ""
+"    Update sets the working directory's parent revison to the specified\n"
+"    changeset (see :hg:`help parents`)."
+msgstr ""
+"    Update устанавливает ревизию родителя рабочего каталога в заданный\n"
+"    набор изменений (см. :hg:`help update`)."
+
+msgid ""
 "    If the changeset is not a descendant or ancestor of the working\n"
 "    directory's parent, the update is aborted. With the -c/--check\n"
 "    option, the working directory is checked for uncommitted changes; if\n"
@@ -13907,50 +14533,50 @@
 "    если таковых нет, рабочий каталог обновляется до указанной ревизии."
 
 msgid ""
-"    Update sets the working directory's parent revison to the specified\n"
-"    changeset (see :hg:`help parents`)."
-msgstr ""
-"    Update устанавливает ревизию родителя рабочего каталога в заданный\n"
-"    набор изменений (см. :hg:`help update`)."
-
-msgid ""
-"    The following rules apply when the working directory contains\n"
-"    uncommitted changes:"
-msgstr ""
-"    Если рабочий каталог содержит незафиксированные изменения,\n"
-"    применяются следующие правила:"
-
-msgid ""
-"    1. If neither -c/--check nor -C/--clean is specified, and if\n"
-"       the requested changeset is an ancestor or descendant of\n"
-"       the working directory's parent, the uncommitted changes\n"
-"       are merged into the requested changeset and the merged\n"
-"       result is left uncommitted. If the requested changeset is\n"
-"       not an ancestor or descendant (that is, it is on another\n"
-"       branch), the update is aborted and the uncommitted changes\n"
-"       are preserved."
-msgstr ""
-"    1. Если не указаны ни -c/--check, ни -C/--clean и если заданная\n"
-"       ревизия является предком или потомком родителя рабочего\n"
-"       каталога, незафиксированные изменения сливаются в заданную\n"
-"       ревизию и результат слияния остается незафиксированным. Если\n"
-"       заданная ревизия не предок и не потомок (т.е. на другой ветке)\n"
-"       update завершается с ошибкой, незафиксированные изменения\n"
-"       сохраняются."
-
-msgid ""
-"    2. With the -c/--check option, the update is aborted and the\n"
-"       uncommitted changes are preserved."
-msgstr ""
-"    2. С опцией -c/--check update завершается с ошибкой и\n"
-"       незафиксированные изменения сохраняются."
-
-msgid ""
-"    3. With the -C/--clean option, uncommitted changes are discarded and\n"
-"       the working directory is updated to the requested changeset."
-msgstr ""
-"    3. С опцией -C/--clean незафиксированные изменения отбрасываются\n"
-"       и рабочий каталог обновляется до указанной ревизии."
+"      The following rules apply when the working directory contains\n"
+"      uncommitted changes:"
+msgstr ""
+"      Если рабочий каталог содержит незафиксированные изменения,\n"
+"      применяются следующие правила:"
+
+msgid ""
+"      1. If neither -c/--check nor -C/--clean is specified, and if\n"
+"         the requested changeset is an ancestor or descendant of\n"
+"         the working directory's parent, the uncommitted changes\n"
+"         are merged into the requested changeset and the merged\n"
+"         result is left uncommitted. If the requested changeset is\n"
+"         not an ancestor or descendant (that is, it is on another\n"
+"         branch), the update is aborted and the uncommitted changes\n"
+"         are preserved."
+msgstr ""
+"      1. Если не указаны ни -c/--check, ни -C/--clean и если заданная\n"
+"         ревизия является предком или потомком родителя рабочего\n"
+"         каталога, незафиксированные изменения сливаются в заданную\n"
+"         ревизию и результат слияния остается незафиксированным. Если\n"
+"         заданная ревизия не предок и не потомок (т.е. на другой ветке)\n"
+"         update завершается с ошибкой, незафиксированные изменения\n"
+"         сохраняются."
+
+msgid ""
+"      2. With the -c/--check option, the update is aborted and the\n"
+"         uncommitted changes are preserved."
+msgstr ""
+"      2. С опцией -c/--check update завершается с ошибкой и\n"
+"         незафиксированные изменения сохраняются."
+
+msgid ""
+"      3. With the -C/--clean option, uncommitted changes are discarded and\n"
+"         the working directory is updated to the requested changeset."
+msgstr ""
+"      3. С опцией -C/--clean незафиксированные изменения отбрасываются\n"
+"         и рабочий каталог обновляется до указанной ревизии."
+
+msgid ""
+"    To cancel an uncommitted merge (and lose your changes), use\n"
+"    :hg:`update --clean .`."
+msgstr ""
+"    Чтобы отменить незафиксированное слияние (с потерей сделанных\n"
+"    изменений), используйте :hg:`update --clean .`."
 
 msgid ""
 "    Use null as the changeset to remove the working directory (like\n"
@@ -14265,11 +14891,28 @@
 msgid "abort: out of memory\n"
 msgstr "прервано: недостаточно памяти\n"
 
+msgid "the extension author."
+msgstr "автор расширения."
+
+#, python-format
+msgid ""
+"** Unknown exception encountered with possibly-broken third-party extension "
+"%s\n"
+"** which supports versions %s of Mercurial.\n"
+"** Please disable %s and try your action again.\n"
+"** If that fixes the bug please report it to %s\n"
+msgstr ""
+"** Неизвестное исключение в возможно неисправном стороннем дополнении \n"
+"%s\n"
+"** которое поддерживает версии Mercurial %s.\n"
+"** Отключите %s и попробуйте еще раз.\n"
+"** Если это помогло, пожалуйста сообщите об этом %s\n"
+
 msgid "** unknown exception encountered, please report by visiting\n"
 msgstr "** неизвестное исключение, пожалуйте, сообщите об этом по адресу\n"
 
-msgid "**  http://mercurial.selenic.com/wiki/BugTracker\n"
-msgstr "**  http://mercurial.selenic.com/wiki/BugTracker\n"
+msgid "** http://mercurial.selenic.com/wiki/BugTracker\n"
+msgstr "** http://mercurial.selenic.com/wiki/BugTracker\n"
 
 #, python-format
 msgid "** Python %s\n"
@@ -14333,8 +14976,8 @@
 "--repository можно сократить только до --repo!"
 
 #, python-format
-msgid "Time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n"
-msgstr "Время: полное (real) %.3f c (польз %.3f+%.3f сист %.3f+%.3f)\n"
+msgid "time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n"
+msgstr "время: полное (real) %.3f c (польз %.3f+%.3f сист %.3f+%.3f)\n"
 
 #, python-format
 msgid "repository '%s' is not local"
@@ -14780,6 +15423,19 @@
 msgid "disabled extensions:"
 msgstr "отключенные расширения:"
 
+msgid "VALUE"
+msgstr "ЗНАЧЕНИЕ"
+
+msgid "DEPRECATED"
+msgstr "УСТАРЕЛО"
+
+msgid ""
+"\n"
+"[+] marked option can be specified multiple times\n"
+msgstr ""
+"\n"
+"параметры, помеченные [+], могут указываться многократно\n"
+
 msgid "Configuration Files"
 msgstr "Файлы конфигурации"
 
@@ -14868,10 +15524,10 @@
 
 msgid ""
 "Files\n"
-"-----"
+"====="
 msgstr ""
 "Файлы\n"
-"-----"
+"====="
 
 msgid ""
 "Mercurial reads configuration data from several files, if they exist.\n"
@@ -15027,10 +15683,10 @@
 
 msgid ""
 "Syntax\n"
-"------"
+"======"
 msgstr ""
 "Синтаксис\n"
-"---------"
+"========="
 
 msgid ""
 "A configuration file consists of sections, led by a ``[section]`` header\n"
@@ -15210,10 +15866,10 @@
 
 msgid ""
 "Sections\n"
-"--------"
+"========"
 msgstr ""
 "Секции\n"
-"------"
+"======"
 
 msgid ""
 "This section describes the different sections that may appear in a\n"
@@ -15226,10 +15882,10 @@
 
 msgid ""
 "``alias``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "``alias``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid ""
 "Defines command aliases.\n"
@@ -15349,11 +16005,11 @@
 msgid ""
 "\n"
 "``annotate``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 msgstr ""
 "\n"
 "``annotate``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 
 msgid ""
 "Settings used when displaying file annotations. All values are\n"
@@ -15389,11 +16045,11 @@
 msgid ""
 "\n"
 "``auth``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 msgstr ""
 "\n"
 "``auth``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 
 msgid ""
 "Authentication credentials for HTTP authentication. This section\n"
@@ -15532,11 +16188,11 @@
 msgid ""
 "\n"
 "``decode/encode``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"-----------------"
 msgstr ""
 "\n"
 "``decode/encode``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"-----------------"
 
 msgid ""
 "Filters for transforming files on checkout/checkin. This would\n"
@@ -15636,11 +16292,11 @@
 msgid ""
 "\n"
 "``defaults``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 msgstr ""
 "\n"
 "``defaults``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 
 msgid "(defaults are deprecated. Don't use them. Use aliases instead)"
 msgstr "(устарело. Не используйте эту секцию. Используйте псевдонимы.)"
@@ -15681,11 +16337,11 @@
 msgid ""
 "\n"
 "``diff``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 msgstr ""
 "\n"
 "``diff``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 
 msgid ""
 "Settings used when displaying diffs. Everything except for ``unified``\n"
@@ -15727,10 +16383,10 @@
 
 msgid ""
 "``email``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "``email``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid "Settings for extensions that send email messages."
 msgstr "Настройки для расширений, отправляющих сообщения по email"
@@ -15841,11 +16497,11 @@
 msgid ""
 "\n"
 "``extensions``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------"
 msgstr ""
 "\n"
 "``extensions``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------"
 
 msgid ""
 "Mercurial has an extension mechanism for adding new features. To\n"
@@ -15901,11 +16557,11 @@
 msgid ""
 "\n"
 "``format``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 msgstr ""
 "\n"
 "``format``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 
 msgid ""
 "``usestore``\n"
@@ -15963,10 +16619,10 @@
 
 msgid ""
 "``graph``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "``graph``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid ""
 "Web graph view configuration. This section let you change graph\n"
@@ -16014,10 +16670,10 @@
 
 msgid ""
 "``hooks``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "``hooks``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 # NOT-SURE site-wide - ?
 msgid ""
@@ -16406,11 +17062,11 @@
 msgid ""
 "\n"
 "``hostfingerprints``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------------"
 msgstr ""
 "\n"
 "``hostfingerprints``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------------"
 
 msgid ""
 "Fingerprints of the certificates of known HTTPS servers.\n"
@@ -16445,11 +17101,11 @@
 msgid ""
 "\n"
 "``http_proxy``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------"
 msgstr ""
 "\n"
 "``http_proxy``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"--------------"
 
 msgid ""
 "Used to access web-based Mercurial repositories through a HTTP\n"
@@ -16501,10 +17157,10 @@
 
 msgid ""
 "``merge-patterns``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------------"
 msgstr ""
 "``merge-patterns``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------------"
 
 msgid ""
 "This section specifies merge tools to associate with particular file\n"
@@ -16528,10 +17184,10 @@
 
 msgid ""
 "``merge-tools``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"---------------"
 msgstr ""
 "``merge-tools``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"---------------"
 
 msgid ""
 "This section configures external merge tools to use for file-level\n"
@@ -16747,11 +17403,11 @@
 msgid ""
 "\n"
 "``patch``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "\n"
 "``patch``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid ""
 "Settings used when applying patches, for instance through the 'import'\n"
@@ -16787,11 +17443,11 @@
 msgid ""
 "\n"
 "``paths``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 msgstr ""
 "\n"
 "``paths``\n"
-"\"\"\"\"\"\"\"\"\""
+"---------"
 
 msgid ""
 "Assigns symbolic names to repositories. The left side is the\n"
@@ -16825,10 +17481,10 @@
 
 msgid ""
 "``phases``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 msgstr ""
 "``phases``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 
 msgid ""
 "Specifies default handling of phases. See :hg:`help phases` for more\n"
@@ -16862,10 +17518,10 @@
 
 msgid ""
 "``profiling``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"-------------"
 msgstr ""
 "``profiling``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"-------------"
 
 msgid ""
 "Specifies profiling type, format, and file output. Two profilers are\n"
@@ -16968,10 +17624,10 @@
 
 msgid ""
 "``revsetalias``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"---------------"
 msgstr ""
 "``revsetalias``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"---------------"
 
 msgid "Alias definitions for revsets. See :hg:`help revsets` for details."
 msgstr ""
@@ -16980,10 +17636,10 @@
 
 msgid ""
 "``server``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 msgstr ""
 "``server``\n"
-"\"\"\"\"\"\"\"\"\"\""
+"----------"
 
 msgid "Controls generic server settings."
 msgstr "Общие настройки сервера."
@@ -17036,10 +17692,10 @@
 
 msgid ""
 "``smtp``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 msgstr ""
 "``smtp``\n"
-"\"\"\"\"\"\"\"\""
+"--------"
 
 msgid "Configuration for extensions that need to send email messages."
 msgstr "Настройки для расширений, которые рассылают email-сообщения."
@@ -17099,11 +17755,11 @@
 msgid ""
 "\n"
 "``subpaths``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 msgstr ""
 "\n"
 "``subpaths``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
+"------------"
 
 msgid ""
 "Subrepository source URLs can go stale if a remote server changes name\n"
@@ -17135,7 +17791,7 @@
 msgstr "заменит ``http://server/foo-hg/`` на ``http://hg.server/foo/``."
 
 msgid ""
-"Relative subrepository paths are first made absolute, and the the\n"
+"Relative subrepository paths are first made absolute, and the\n"
 "rewrite rules are then applied on the full (absolute) path. The rules\n"
 "are applied in definition order."
 msgstr ""
@@ -17145,10 +17801,10 @@
 
 msgid ""
 "``trusted``\n"
-"\"\"\"\"\"\"\"\"\"\"\""
+"-----------"
 msgstr ""
 "``trusted``\n"
-"\"\"\"\"\"\"\"\"\"\"\""
+"-----------"
 
 msgid ""
 "Mercurial will not use the settings in the\n"
@@ -17197,11 +17853,11 @@
 msgid ""
 "\n"
 "``ui``\n"
-"\"\"\"\"\"\""
+"------"
 msgstr ""
 "\n"
 "``ui``\n"
-"\"\"\"\"\"\""
+"------"
 
 msgid "User interface controls."
 msgstr "Настройки интерфейса пользователя."
@@ -17471,11 +18127,11 @@
 msgid ""
 "\n"
 "``web``\n"
-"\"\"\"\"\"\"\""
+"-------"
 msgstr ""
 "\n"
 "``web``\n"
-"\"\"\"\"\"\"\""
+"-------"
 
 msgid ""
 "Web interface configuration. The settings in this section apply to\n"
@@ -17834,12 +18490,29 @@
 "    Куда писать журнал ошибок. По умолчанию stderr."
 
 msgid ""
+"``comparisoncontext``\n"
+"    Number of lines of context to show in side-by-side file comparison. If\n"
+"    negative or the value ``full``, whole files are shown. Default is 5.\n"
+"    This setting can be overridden by a ``context`` request parameter to "
+"the\n"
+"    ``comparison`` command, taking the same values."
+msgstr ""
+"``comparisoncontext``\n"
+"    Количество строк контекста, показываемого при построчном сравнении "
+"файлов.\n"
+"    Если отрицательно или ``full``, файлы показыаются целиком. По умолчанию "
+"5.\n"
+"    Это значение может быть переопределено параметром запроса ``context`` "
+"команды\n"
+"    ``comparison``, принимающей такие же значения."
+
+msgid ""
 "``hidden``\n"
 "    Whether to hide the repository in the hgwebdir index.\n"
 "    Default is False."
 msgstr ""
 "``hidden``\n"
-"    Прятать хранилище из списка hgwebdir.\n"
+"    Скрывать ли хранилище в списке hgwebdir.\n"
 "    По умолчанию False (не прятать)."
 
 msgid ""
@@ -19407,10 +20080,10 @@
 
 msgid ""
 "Synopsis\n"
-"--------"
-msgstr ""
-"Сводка\n"
-"------"
+"========"
+msgstr ""
+"Обзор\n"
+"====="
 
 msgid ""
 "The Mercurial system uses a file called ``.hgignore`` in the root\n"
@@ -19423,10 +20096,10 @@
 
 msgid ""
 "Description\n"
-"-----------"
+"==========="
 msgstr ""
 "Описание\n"
-"--------"
+"========"
 
 msgid ""
 "The working directory of a Mercurial repository will often contain\n"
@@ -19484,6 +20157,17 @@
 "Подробнее см. :hg:`help <команда>` и :hg:`help patterns`."
 
 msgid ""
+"Files that are already tracked are not affected by .hgignore, even\n"
+"if they appear in .hgignore. An untracked file X can be explicitly\n"
+"added with :hg:`add X`, even if X would be excluded by a pattern\n"
+"in .hgignore."
+msgstr ""
+"Содержимое .hgignore не влияет на файлы, уже отслеживаемые Mercurial,\n"
+"даже если они перечислены в .hgignore. Неотслеживаемый файл X может быть\n"
+"явно добавлен с помощью :hg:`add X`, даже если X был бы исключен шаблоном\n"
+"из .hgignore."
+
+msgid ""
 "An ignore file is a plain text file consisting of a list of patterns,\n"
 "with one pattern per line. Empty lines are skipped. The ``#``\n"
 "character is treated as a comment character, and the ``\\`` character\n"
@@ -19551,10 +20235,10 @@
 
 msgid ""
 "Example\n"
-"-------"
+"======="
 msgstr ""
 "Пример\n"
-"------"
+"======"
 
 msgid "Here is an example ignore file. ::"
 msgstr "Пример файла игнорирования. ::"
@@ -19586,18 +20270,19 @@
 
 msgid ""
 "Mercurial's internal web server, hgweb, can serve either a single\n"
-"repository, or a collection of them. In the latter case, a special\n"
-"configuration file can be used to specify the repository paths to use\n"
-"and global web configuration options."
+"repository, or a tree of repositories. In the second case, repository\n"
+"paths and global options can be defined using a dedicated\n"
+"configuration file common to :hg:`serve`, ``hgweb.wsgi``,\n"
+"``hgweb.cgi`` and ``hgweb.fcgi``."
 msgstr ""
 "Встроенный веб-сервер Mercurial, hgweb, может обслуживать как одно\n"
-"хранилище, так и несколько. В последнем случае может быть использован\n"
-"отдельный файл конфигурации чтобы задать пути к хранилищам вместе\n"
-"с глобальными настройками веб-сервера."
-
-msgid ""
-"This file uses the same syntax as other Mercurial configuration files,\n"
-"but only the following sections are recognized:"
+"хранилище, так и несколько. В последнем случае пути хранилищ и\n"
+"глобальные параметры могут быть опеределены в отдельном файле, общем\n"
+"для :hg:`serve`, ``hgweb.wsgi``, ``hgweb.cgi`` and ``hgweb.fcgi``."
+
+msgid ""
+"This file uses the same syntax as other Mercurial configuration files\n"
+"but recognizes only the following sections:"
 msgstr ""
 "Этот файл имеет тот же формат, что и другие файлы конфигурации\n"
 "Mercurial, но обрабатываются только следующие секции:"
@@ -19611,87 +20296,81 @@
 "  - paths\n"
 "  - collections"
 
-msgid ""
-"The ``web`` section can specify all the settings described in the web\n"
-"section of the hgrc(5) documentation. See :hg:`help config` for\n"
-"information on where to find the manual page."
-msgstr ""
-"Секция ``web`` для задания всех параметров, описанных в справке по\n"
-"одноименной секции из :hg:`help config`."
-
-msgid ""
-"The ``paths`` section provides mappings of physical repository\n"
-"paths to virtual ones. For instance::"
-msgstr ""
-"Секция ``paths`` задает соответствие физических путей к хранилищам\n"
-"и виртуальных. Например::"
+msgid "The ``web`` options are thorougly described in :hg:`help config`."
+msgstr "Настройки секции ``web`` подробно описаны в :hg:`help config`."
+
+msgid ""
+"The ``paths`` section maps URL paths to paths of repositories in the\n"
+"filesystem. hgweb will not expose the filesystem directly - only\n"
+"Mercurial repositories can be published and only according to the\n"
+"configuration."
+msgstr ""
+"Секция ``paths`` связывает пути в URL с путями хранилищ в файловой\n"
+"системе. hgweb не выставляет наружу файловую систему напрямую - \n"
+"публикуются только хранилища Mercurial и только в соответствии с конфигом."
+
+msgid ""
+"The left hand side is the path in the URL. Note that hgweb reserves\n"
+"subpaths like ``rev`` or ``file``, try using different names for\n"
+"nested repositories to avoid confusing effects."
+msgstr ""
+"В левой части находится путь в URL. Обратите внимание, что hgweb\n"
+"резервирует такие пути, как ``rev`` или ``file``, используйте\n"
+"другие имена для вложенных подхранилищ, чтобы избежать неожиданных\n"
+"эффектов."
+
+msgid ""
+"The right hand side is the path in the filesystem. If the specified\n"
+"path ends with ``*`` or ``**`` the filesystem will be searched\n"
+"recursively for repositories below that point.\n"
+"With ``*`` it will not recurse into the repositories it finds (except for\n"
+"``.hg/patches``).\n"
+"With ``**`` it will also search inside repository working directories\n"
+"and possibly find subrepositories."
+msgstr ""
+"В правой части находится путь в файловой системе. Если указанный путь\n"
+"заканчивается на ``*`` или ``**``, хранилища будут искаться рекурсивно\n"
+"в этом каталоге. При ``*`` поиск в подкаталогах хранилищ не ведется\n"
+"(за исключением ``.hg/patches``). При ``**`` поиск производится также\n"
+"внутри рабочих каталогов хранилищ."
+
+msgid "In this example::"
+msgstr "В этом примере::"
 
 msgid ""
 "  [paths]\n"
-"  projects/a = /foo/bar\n"
-"  projects/b = /baz/quux\n"
-"  web/root = /real/root/*\n"
-"  / = /real/root2/*\n"
-"  virtual/root2 = /real/root2/**"
+"  /projects/a = /srv/tmprepos/a\n"
+"  /projects/b = c:/repos/b\n"
+"  / = /srv/repos/*\n"
+"  /user/bob = /home/bob/repos/**"
 msgstr ""
 "  [paths]\n"
-"  projects/a = /foo/bar\n"
-"  projects/b = /baz/quux\n"
-"  web/root = /real/root/*\n"
-"  / = /real/root2/*\n"
-"  virtual/root2 = /real/root2/**"
+"  /projects/a = /srv/tmprepos/a\n"
+"  /projects/b = c:/repos/b\n"
+"  / = /srv/repos/*\n"
+"  /user/bob = /home/bob/repos/**"
 
 msgid ""
 "- The first two entries make two repositories in different directories\n"
 "  appear under the same directory in the web interface\n"
-"- The third entry maps every Mercurial repository found in '/real/root'\n"
-"  into 'web/root'. This format is preferred over the [collections] one,\n"
-"  since using absolute paths as configuration keys is not supported on "
-"every\n"
-"  platform (especially on Windows).\n"
-"- The fourth entry is a special case mapping all repositories in\n"
-"  '/real/root2' in the root of the virtual directory.\n"
-"- The fifth entry recursively finds all repositories under the real\n"
-"  root, and maps their relative paths under the virtual root."
-msgstr ""
-"- Первые две строки показывают два хранилища, физически находящиеся по\n"
-"  разным путям, в одном каталоге в веб-интерфейсе\n"
-"- Третья строка показывает все хранилища Mercurial, находящиеся в\n"
-"  '/real/root', в каталоге 'web/root' веб-интерфейса. Такая форма\n"
-"  является предпочтительной по сравнению с секцией [collections],\n"
-"  т.к. использование абсолютных путей в качестве ключей поддерживается\n"
-"  не на всех платформах (в частности, не работает в Windows)\n"
-"- Четвертая строка иллюстрирует особый случай, при котором все\n"
-"  хранилища из каталога '/real/root2' отображаются в корневом\n"
-"  виртуальном каталоге.\n"
-"- Пятая строка рекурсивно ищет все хранилища в подкаталогах\n"
-"  /real/root2 и показывает из относительные пути в виртуальном\n"
-"  каталоге."
-
-msgid ""
-"The ``collections`` section provides mappings of trees of physical\n"
-"repositories paths to virtual ones, though the paths syntax is generally\n"
-"preferred. For instance::"
-msgstr ""
-"Секция ``collections`` задает соответствие деревьев физических путей\n"
-"хранилищ виртуальным. Однако, предпочтительно использовать секцию\n"
-"paths. Пример::"
-
-msgid ""
-"  [collections]\n"
-"  /foo = /foo"
-msgstr ""
-"  [collections]\n"
-"  /foo = /foo"
-
-msgid ""
-"Here, the left side will be stripped off all repositories found in the\n"
-"right side. Thus ``/foo/bar`` and ``foo/quux/baz`` will be listed as\n"
-"``bar`` and ``quux/baz`` respectively.\n"
-msgstr ""
-"Здесь левая часть путей будет удалена из всех путей хранилищ,\n"
-"найденных в каталоге из правой части. Так, ``/foo/bar`` и ``foo/quux/baz``\n"
-"будут отображаться как ``bar`` и ``quux/baz`` соответственно.\n"
+"- The third entry will publish every Mercurial repository found in\n"
+"  ``/srv/repos/``, for instance the repository ``/srv/repos/quux/``\n"
+"  will appear as ``http://server/quux/``\n"
+"- The fourth entry will publish both ``http://server/user/bob/quux/``\n"
+"  and ``http://server/user/bob/quux/testsubrepo/``"
+msgstr ""
+"- Первые две строки позволяют двум хранилищам из разных каталогов\n"
+"  отображаться в одном каталоге в веб-интерфейсе\n"
+"- Третья строка публикует каждое хранилище Mercurial в каталоге\n"
+"  ``/srv/repos/``. Например, хранилище ``/srv/repos/quux/`` будет\n"
+"  опубликовано как ``http://server/quux/``\n"
+"- Четвертая строка публикует хранилища ``http://server/user/bob/quux/``\n"
+"  и ``http://server/user/bob/quux/testsubrepo/``"
+
+msgid ""
+"The ``collections`` section is deprecated and has been superseeded by\n"
+"``paths``.\n"
+msgstr "Секция ``collections`` устарела и заменена секцией ``paths``.\n"
 
 msgid "To merge files Mercurial uses merge tools."
 msgstr "При слиянии файлов Mercurial использует специальные инструменты."
@@ -19735,10 +20414,10 @@
 
 msgid ""
 "Available merge tools\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
-"Возможные инструменты слияния\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"====================="
+msgstr ""
+"Доступные инструменты слияния\n"
+"============================="
 
 msgid ""
 "External merge tools and their properties are configured in the\n"
@@ -19786,10 +20465,10 @@
 
 msgid ""
 "Choosing a merge tool\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"====================="
 msgstr ""
 "Выбор инструмента слияния\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"========================="
 
 msgid "Mercurial uses these rules when deciding which merge tool to use:"
 msgstr "Mercurial использует следующие правила при выбора программы слияния:"
@@ -20058,10 +20737,10 @@
 
 msgid ""
 "What are phases?\n"
-"----------------"
+"================"
 msgstr ""
 "Что такое фазы?\n"
-"---------------"
+"==============="
 
 msgid ""
 "Phases are a system for tracking which changesets have been or should\n"
@@ -20099,10 +20778,10 @@
 
 msgid ""
 "How are phases managed?\n"
-"-----------------------"
-msgstr ""
-"Что происходит с фазами?\n"
-"------------------------"
+"======================="
+msgstr ""
+"Как происходит работа с фазами?\n"
+"==============================="
 
 msgid ""
 "For the most part, phases should work transparently. By default, a\n"
@@ -20126,10 +20805,10 @@
 
 msgid ""
 "Phases and servers\n"
-"------------------"
+"=================="
 msgstr ""
 "Фазы и серверы\n"
-"--------------"
+"=============="
 
 msgid "Normally, all servers are ``publishing`` by default. This means::"
 msgstr "Как правило, все серверы по умолчанию ``публичные``. Это означает::"
@@ -20193,10 +20872,10 @@
 
 msgid ""
 "Examples\n"
-"--------"
+"========"
 msgstr ""
 "Примеры\n"
-"-------"
+"======="
 
 msgid " - list changesets in draft or secret phase::"
 msgstr " - перечислить наборы изменений в черновой или секретной фазе::"
@@ -20268,22 +20947,22 @@
 "ровно одного полного ID ревизии."
 
 msgid ""
-"Any other string is treated as a tag or branch name. A tag name is a\n"
-"symbolic name associated with a revision identifier. A branch name\n"
-"denotes the tipmost revision of that branch. Tag and branch names must\n"
-"not contain the \":\" character."
-msgstr ""
-"Любая другая строка интерпретируется как имя ветки или метки. Имя\n"
-"метки - это символьное имя, ассоциированное с некоторым ID ревизии.\n"
-"Имя ветки означает последнюю ревизию на этой ветки. Имена ветки и\n"
-"метки не должны содержать символа \":\"."
-
-msgid ""
-"The reserved name \"tip\" is a special tag that always identifies the\n"
-"most recent revision."
-msgstr ""
-"Зарезервированное имя \"tip\" является специальной меткой, которая\n"
-"всегда ссылается на самую последнюю ревизию."
+"Any other string is treated as a bookmark, tag, or branch name. A\n"
+"bookmark is a movable pointer to a revision. A tag is a permanent name\n"
+"associated with a revision. A branch name denotes the tipmost revision\n"
+"of that branch. Bookmark, tag, and branch names must not contain the \":\"\n"
+"character."
+msgstr ""
+"Любая другая строка интерпретируется как имя закладки, ветки или метки.\n"
+"Закладка - это автоматически передвигаемый указатель на ревизию.\n"
+"Метка - постоянное имя, ассоциированное с некоторой ревизией.\n"
+"Имя ветки означает последнюю ревизию на этой ветки. Имена ветки, метки или\n"
+"закладки не должны содержать символа \":\"."
+
+msgid "The reserved name \"tip\" always identifies the most recent revision."
+msgstr ""
+"Зарезервированное имя \"tip\" всегда всегда ссылается на самую последнюю "
+"ревизию."
 
 msgid ""
 "The reserved name \"null\" indicates the null revision. This is the\n"
@@ -20627,11 +21306,11 @@
 msgid ""
 "\n"
 "Adding a Subrepository\n"
-"----------------------"
+"======================"
 msgstr ""
 "\n"
 "Добавление подхранилища\n"
-"-----------------------"
+"======================="
 
 msgid ""
 "If ``.hgsub`` does not exist, create it and add it to the parent\n"
@@ -20652,10 +21331,10 @@
 
 msgid ""
 "Synchronizing a Subrepository\n"
-"-----------------------------"
+"============================="
 msgstr ""
 "Синхронизация подхранилища\n"
-"--------------------------"
+"=========================="
 
 msgid ""
 "Subrepos do not automatically track the latest changeset of their\n"
@@ -20681,10 +21360,10 @@
 
 msgid ""
 "Deleting a Subrepository\n"
-"------------------------"
+"========================"
 msgstr ""
 "Удаление подхранилища\n"
-"---------------------"
+"====================="
 
 msgid ""
 "To remove a subrepository from the parent repository, delete its\n"
@@ -20695,10 +21374,10 @@
 
 msgid ""
 "Interaction with Mercurial Commands\n"
-"-----------------------------------"
+"==================================="
 msgstr ""
 "Взаимодействие с командами Mercurial\n"
-"------------------------------------"
+"===================================="
 
 msgid ""
 ":add: add does not recurse in subrepos unless -S/--subrepos is\n"
@@ -20827,10 +21506,10 @@
 
 msgid ""
 "Remapping Subrepositories Sources\n"
-"---------------------------------"
+"================================="
 msgstr ""
 "Переназначение источников подхранилищ\n"
-"-------------------------------------"
+"====================================="
 
 msgid ""
 "A subrepository source location may change during a project life,\n"
@@ -21105,6 +21784,9 @@
 msgid "destination directory: %s\n"
 msgstr "каталог назначения: %s\n"
 
+msgid "empty destination path is not valid"
+msgstr "пустой путь назначения недопустим"
+
 #, python-format
 msgid "destination '%s' already exists"
 msgstr "путь назначения '%s' уже существует"
@@ -21170,6 +21852,10 @@
 msgstr "не удается запустить сервер по адресу '%s:%d': %s"
 
 #, python-format
+msgid "(binary file %s, hash: %s)"
+msgstr "(бинарный файл %s, хэш: %s)"
+
+#, python-format
 msgid " %d files changed, %d insertions(+), %d deletions(-)\n"
 msgstr " %d файлов изменено, %d вставок(+), %d удалений(-)\n"
 
@@ -21228,6 +21914,10 @@
 msgid "warning: %s hook %s\n"
 msgstr "внимание: хук %s %s\n"
 
+#, python-format
+msgid "loading %s hook failed:\n"
+msgstr "не удалось загрузить хука %s:\n"
+
 msgid "kb"
 msgstr "Кб"
 
@@ -21432,11 +22122,25 @@
 "частичное затягивание не может быть произведено, т.к. второе хранилище\n"
 "не поддерживает подмножества групп изменений (changegroupsubset)"
 
+msgid "destination does not support push"
+msgstr "хранилище назначения не поддерживает push"
+
+#, python-format
+msgid "push includes an obsolete changeset: %s!"
+msgstr "push включает устаревшую ревизию: %s!"
+
+#, python-format
+msgid "push includes an unstable changeset: %s!"
+msgstr "push включает нестабильную ревизию: %s!"
+
 # CHECK ME NOT-SURE
 #, python-format
 msgid "updating %s to public failed!\n"
 msgstr "обновление %s до публичной фазы завершилась неудачей!\n"
 
+msgid "failed to push some obsolete markers!\n"
+msgstr "не удалось протолкнуть некоторые маркеры устаревших ревизий!\n"
+
 #, python-format
 msgid "%d changesets found\n"
 msgstr "найдено %d наборов изменений\n"
@@ -21484,8 +22188,8 @@
 msgid "added %d changesets with %d changes to %d files%s\n"
 msgstr "добавлено %d наборов изменений с %d изменениями в %d файлах%s\n"
 
-msgid "Unexpected response from remote server:"
-msgstr "Неожиданный ответ от отдалённого сервера:"
+msgid "unexpected response from remote server:"
+msgstr "неожиданный ответ от отдалённого сервера:"
 
 msgid "operation forbidden by server"
 msgstr "операция запрещена на сервере"
@@ -21504,6 +22208,9 @@
 msgid "%d files to transfer, %s of data\n"
 msgstr "%d файлов для передачи, %s данных\n"
 
+msgid "clone"
+msgstr "клонирование"
+
 #, python-format
 msgid "transferred %s in %.1f seconds (%s/sec)\n"
 msgstr "передано %s за %.1f секунд (%s/c)\n"
@@ -21664,6 +22371,10 @@
 msgid "note: possible conflict - %s was renamed multiple times to:\n"
 msgstr "внимание: возможен конфликт - %s был переименован несколько раз в:\n"
 
+#, python-format
+msgid "note: possible conflict - %s was deleted and renamed to:\n"
+msgstr "внимание: возможен конфликт - %s был удален и переименован в:\n"
+
 msgid "merging with a working directory ancestor has no effect"
 msgstr "слияние с предком рабочего каталога не имеет смысла"
 
@@ -21716,6 +22427,24 @@
 msgstr "Внимание!"
 
 #, python-format
+msgid "parsing obsolete marker: unknown version %r"
+msgstr "ошибка разбора маркера устаревшей ревизии: неизвестная версия %r"
+
+#, python-format
+msgid ""
+"parsing obsolete marker: metadata is too short, %d bytes expected, got %d"
+msgstr ""
+"ошибка разбора маркера устаревшей ревизии: слишком малая длина метаданных,\n"
+"ожидалось %d байт, получено %d"
+
+#, python-format
+msgid "unknown key: %r"
+msgstr "неизвестный ключ: %r"
+
+msgid "unexpected old value"
+msgstr "неожиданное старое значение"
+
+#, python-format
 msgid "unexpected token: %s"
 msgstr "неожиданный символ (token): %s"
 
@@ -21822,6 +22551,13 @@
 msgstr "не удалось наложить патч"
 
 #, python-format
+msgid "cannot %s; remote repository does not support the %r capability"
+msgstr "%s не возможно; отдаленное хранилище не поддерживает возможность %r"
+
+msgid "cannot change null revision phase"
+msgstr "невозможно изменить фазу пустой ревизии"
+
+#, python-format
 msgid "ignoring inconsistent public root from remote: %s\n"
 msgstr "игнорируем неподходящий публичный корень от отдалённого сервера: %s\n"
 
@@ -21861,8 +22597,8 @@
 msgstr "strip не удался, частичный комплект (bundle) сохранен в '%s'\n"
 
 #, python-format
-msgid "cannot %s; remote repository does not support the %r capability"
-msgstr "%s не возможно; отдаленное хранилище не поддерживает возможность %r"
+msgid "revlog decompress error: %s"
+msgstr "ошибка распаковки revlog: %s"
 
 #, python-format
 msgid "unknown compression type %r"
@@ -21976,7 +22712,8 @@
 "    - ``range``              : csets taking part in the bisection\n"
 "    - ``pruned``             : csets that are goods, bads or skipped\n"
 "    - ``untested``           : csets whose fate is yet unknown\n"
-"    - ``ignored``            : csets ignored due to DAG topology"
+"    - ``ignored``            : csets ignored due to DAG topology\n"
+"    - ``current``            : the cset currently being bisected"
 msgstr ""
 "    - ``good``, ``bad``, ``skip``: явно помеченные как хороший/плохой/"
 "пропущенный\n"
@@ -21984,8 +22721,10 @@
 "    - ``range``              : находящиеся в рамках бисекции\n"
 "    - ``pruned``             : goods, bads или пропущенные\n"
 "    - ``untested``           : те, чья судьба ещё неизвестна\n"
-"    - ``ignored``            : игнорируемые ввиду топологии графа ревизий"
-
+"    - ``ignored``            : игнорируемые ввиду топологии графа ревизий    "
+"- ``current``            : обрабатываемый в данный момент"
+
+#. i18n: "bisect" is a keyword
 msgid "bisect requires a string"
 msgstr "bisect требует строку"
 
@@ -21996,6 +22735,17 @@
 "``bookmark([имя])``\n"
 "    Именованная закладка или все закладки."
 
+msgid ""
+"    If `name` starts with `re:`, the remainder of the name is treated as\n"
+"    a regular expression. To match a bookmark that actually starts with `re:"
+"`,\n"
+"    use the prefix `literal:`."
+msgstr ""
+"    Если `имя` начинается с `re:`, остальная часть имени считается "
+"регулярным\n"
+"    выражением. Чтобы найти закладку, имя которой начинается с символов\n"
+"    `re:`, используйте префикс `literal:`."
+
 #. i18n: "bookmark" is a keyword
 msgid "bookmark takes one or no arguments"
 msgstr "bookmark принимает один или ноль аргументов"
@@ -22004,6 +22754,10 @@
 msgid "the argument to bookmark must be a string"
 msgstr "аргумент для bookmark должен быть строкой"
 
+#, python-format
+msgid "no bookmarks exist that match '%s'"
+msgstr "нет закладок, совпадающих с '%s'"
+
 msgid ""
 "``branch(string or set)``\n"
 "    All changesets belonging to the given branch or the branches of the "
@@ -22015,6 +22769,17 @@
 "    данных наборов изменений."
 
 msgid ""
+"    If `string` starts with `re:`, the remainder of the name is treated as\n"
+"    a regular expression. To match a branch that actually starts with `re:"
+"`,\n"
+"    use the prefix `literal:`."
+msgstr ""
+"    Если `строка` начинается с `re:`, остальная часть имени считается "
+"регулярным\n"
+"    выражением. Чтобы найти ветку, имя которой начинается с символов\n"
+"    `re:`, используйте префикс `literal:`."
+
+msgid ""
 "``children(set)``\n"
 "    Child changesets of changesets in set."
 msgstr ""
@@ -22047,6 +22812,26 @@
 msgstr "contains требует шаблон"
 
 msgid ""
+"``converted([id])``\n"
+"    Changesets converted from the given identifier in the old repository if\n"
+"    present, or all converted changesets if no identifier is specified."
+msgstr ""
+"``converted([id])``\n"
+"    Наборы изменений, сконвертированные из заданного идентификатора в "
+"старом\n"
+"    хранилище, или все сконвертированные наборы изменений, если "
+"идентификатор\n"
+"    не указан."
+
+#. i18n: "converted" is a keyword
+msgid "converted takes one or no arguments"
+msgstr "converted принимает ноль или один аргумент"
+
+#. i18n: "converted" is a keyword
+msgid "converted requires a revision"
+msgstr "converted требует ревизию"
+
+msgid ""
 "``date(interval)``\n"
 "    Changesets within the interval, see :hg:`help dates`."
 msgstr ""
@@ -22076,22 +22861,90 @@
 "    Наборы изменений, являющиеся потомками наборов из множества."
 
 msgid ""
+"``destination([set])``\n"
+"    Changesets that were created by a graft, transplant or rebase "
+"operation,\n"
+"    with the given revisions specified as the source.  Omitting the optional "
+"set\n"
+"    is the same as passing all()."
+msgstr ""
+"``destination([множество])``\n"
+"    Наборы изменений, созданные с помощью операций graft, transplant или\n"
+"    rebase c указанными ревизиями в качестве источников. Если множество\n"
+"    ревизий опущено, вместо него предполагается all()."
+
+msgid ""
 "``draft()``\n"
 "    Changeset in draft phase."
 msgstr ""
 "``draft()``\n"
 "    Набор изменений в черновой фазе."
 
+#. i18n: "draft" is a keyword
 msgid "draft takes no arguments"
 msgstr "draft не требует аргументов"
 
 msgid ""
+"``extinct()``\n"
+"    Obsolete changesets with obsolete descendants only."
+msgstr ""
+"``extinct()``\n"
+"    Устаревший набор изменений, имеющий только устаревших потомков."
+
+#. i18n: "extinct" is a keyword
+msgid "extinct takes no arguments"
+msgstr "extinct не требует аргументов"
+
+msgid ""
+"``extra(label, [value])``\n"
+"    Changesets with the given label in the extra metadata, with the given\n"
+"    optional value."
+msgstr ""
+"``extra(label, [значение])``\n"
+"    Наборы изменений с заданной меткой в дополнительных метаданных и с\n"
+"    заданным значением (необязательным)."
+
+msgid ""
+"    If `value` starts with `re:`, the remainder of the value is treated as\n"
+"    a regular expression. To match a value that actually starts with `re:`,\n"
+"    use the prefix `literal:`."
+msgstr ""
+"    Если `значение` начинается с `re:`, остальная часть значения считается "
+"регулярным\n"
+"    выражением. Чтобы найти значение, которое начинается с символов\n"
+"    `re:`, используйте префикс `literal:`."
+
+#. i18n: "extra" is a keyword
+msgid "extra takes at least 1 and at most 2 arguments"
+msgstr "extra требует от одного до двух аргументов"
+
+#. i18n: "extra" is a keyword
+msgid "first argument to extra must be a string"
+msgstr "первый аргумент для extra должен быть строкой"
+
+#. i18n: "extra" is a keyword
+msgid "second argument to extra must be a string"
+msgstr "второй аргумент для extra должен быть строкой"
+
+msgid ""
 "``filelog(pattern)``\n"
 "    Changesets connected to the specified filelog."
 msgstr ""
 "``filelog(шаблон)``\n"
 "    Наборы изменений, связанные с указанным объектом filelog."
 
+msgid ""
+"    For performance reasons, ``filelog()`` does not show every changeset\n"
+"    that affects the requested file(s). See :hg:`help log` for details. For\n"
+"    a slower, more accurate result, use ``file()``."
+msgstr ""
+"    Из соображений производительности, ``filelog()`` не показывает все\n"
+"    наборы изменений, затрагивающие указанный файл(ы). Подробнее см.\n"
+"    :hg:`help log`. Для более точного, но медленного результата, "
+"используйте\n"
+"    ``file()``."
+
+#. i18n: "filelog" is a keyword
 msgid "filelog requires a pattern"
 msgstr "filelog требует шаблон"
 
@@ -22155,15 +23008,19 @@
 msgid "_matchfiles requires at least one argument"
 msgstr "_matchfiles требует хотя бы один аргумент"
 
+#. i18n: "_matchfiles" is a keyword
 msgid "_matchfiles requires string arguments"
 msgstr "_matchfiles требует строковых аргументов"
 
+#. i18n: "_matchfiles" is a keyword
 msgid "_matchfiles expected at most one revision"
 msgstr "_matchfiles ожидает не более одной ревизии"
 
+#. i18n: "_matchfiles" is a keyword
 msgid "_matchfiles expected at most one default mode"
 msgstr "_matchfiles ожидает не более одного режима сравнения по умолчанию"
 
+#. i18n: "_matchfiles" is a keyword
 #, python-format
 msgid "invalid _matchfiles prefix: %s"
 msgstr "неверный префикс для _matchfiles: %s"
@@ -22175,6 +23032,13 @@
 "``file(шаблон)``\n"
 "    Наборы изменений, затрагивающие файлы, совпадающие с шаблоном."
 
+msgid ""
+"    For a faster but less accurate result, consider using ``filelog()``\n"
+"    instead."
+msgstr ""
+"    Для более быстрого, но не столь точного результата, используйте\n"
+"    ``filelog()``."
+
 #. i18n: "file" is a keyword
 msgid "file requires a pattern"
 msgstr "file требует шаблон"
@@ -22300,6 +23164,37 @@
 msgstr "id требует строку"
 
 msgid ""
+"``obsolete()``\n"
+"    Mutable changeset with a newer version."
+msgstr ""
+"``obsolete()``\n"
+"    Изменяемый набор изменений, имеющий более новую версию."
+
+#. i18n: "obsolete" is a keyword
+msgid "obsolete takes no arguments"
+msgstr "obsolete не требует аргументов"
+
+msgid ""
+"``origin([set])``\n"
+"    Changesets that were specified as a source for the grafts, transplants "
+"or\n"
+"    rebases that created the given revisions.  Omitting the optional set is "
+"the\n"
+"    same as passing all().  If a changeset created by these operations is "
+"itself\n"
+"    specified as a source for one of these operations, only the source "
+"changeset\n"
+"    for the first operation is selected."
+msgstr ""
+"``origin([множество])``\n"
+"    Наборы изменений, которые были заданы в качестве исходных для операций\n"
+"    graft, rebase или transplant, создавших указанные ревизии. Если "
+"множество\n"
+"    не задано, предполагается all(). Если набор изменений, созданный этими\n"
+"    операциями, указан в качестве источника для одной из этих операций,\n"
+"    будет выбран только исходный набор изменений для первой операции."
+
+msgid ""
 "``outgoing([path])``\n"
 "    Changesets not found in the specified destination repository, or the\n"
 "    default push location."
@@ -22369,6 +23264,7 @@
 "``public()``\n"
 "    Набор изменений в публичной фазе."
 
+#. i18n: "public" is a keyword
 msgid "public takes no arguments"
 msgstr "public не требует аргументов"
 
@@ -22441,7 +23337,7 @@
 msgstr ""
 "    Для поиска ревизий с несколькими совпадающими полями, задайте список "
 "имен,\n"
-"    полей, разделенных пробелами (например, ``author dexcription``)."
+"    полей, разделенных пробелами (например, ``author description``)."
 
 msgid ""
 "    Valid fields are most regular revision fields and some special fields."
@@ -22449,16 +23345,23 @@
 "    В качестве полей могут выступать \"обычные\" поля ревизий, а также\n"
 "    несколько особых полей."
 
+# NOT-SURE
 msgid ""
 "    Regular revision fields are ``description``, ``author``, ``branch``,\n"
-"    ``date``, ``files``, ``phase``, ``parents``, ``substate`` and ``user``.\n"
-"    Note that ``author`` and ``user`` are synonyms."
+"    ``date``, ``files``, ``phase``, ``parents``, ``substate``, ``user``\n"
+"    and ``diff``.\n"
+"    Note that ``author`` and ``user`` are synonyms. ``diff`` refers to the\n"
+"    contents of the revision. Two revisions matching their ``diff`` will\n"
+"    also match their ``files``."
 msgstr ""
 "    \"Обычные\" поля ревизий: ``description``, ``author``, ``branch``,\n"
-"    ``date``, ``files``, ``phase``, ``parents``, ``substate`` and ``user``\n"
-"    (описание, автор, ветка, дата, файлы, фаза, родители, состояние, и еще\n"
-"    раз автор-пользователь).\n"
-"    Обратите внимание, что ``author`` and ``user`` являются синонимами."
+"    ``date``, ``files``, ``phase``, ``parents``, ``substate``, ``user``\n"
+"    и ``diff``.\n"
+"    (описание, автор, ветка, дата, файлы, фаза, родители, состояние, еще\n"
+"    раз автор-пользователь, и различия).\n"
+"    Обратите внимание, что ``author`` and ``user`` являются синонимами.    "
+"``diff`` означает содержимое ревизии. У двух ревизий, совпадающих с\n"
+"    заданным ``diff``, совпадут также и ``files``."
 
 msgid ""
 "    Special fields are ``summary`` and ``metadata``:\n"
@@ -22478,12 +23381,15 @@
 "    ``metadata`` используется по умолчанию, когда не указано ни одного\n"
 "    поля. Можно искать по нескольким полям за раз."
 
+#. i18n: "matching" is a keyword
 msgid "matching takes 1 or 2 arguments"
 msgstr "matching принимает один или два аргумента"
 
+#. i18n: "matching" is a keyword
 msgid "matching requires a string as its second argument"
 msgstr "matching требует строку в качестве второго аргумента"
 
+#. i18n: "matching" is a keyword
 #, python-format
 msgid "unexpected field name passed to matching: %s"
 msgstr "неожиданное имя поля, переданное matching: %s"
@@ -22509,6 +23415,7 @@
 "``secret()``\n"
 "    Набор изменений в секретной фазе."
 
+#. i18n: "secret" is a keyword
 msgid "secret takes no arguments"
 msgstr "secret не требует аргументов"
 
@@ -22541,6 +23448,7 @@
 msgid "sort requires one or two arguments"
 msgstr "sort требует один или два аргумента"
 
+#. i18n: "sort" is a keyword
 msgid "sort spec must be a string"
 msgstr "спецификация sort должна быть строкой"
 
@@ -22548,6 +23456,10 @@
 msgid "unknown sort key %r"
 msgstr "неизвестный ключ сортировки %r"
 
+#, python-format
+msgid "invalid regular expression: %s"
+msgstr "недопустимое регулярное выражение: %s"
+
 msgid ""
 "``tag([name])``\n"
 "    The specified tag by name, or all tagged revisions if no name is given."
@@ -22563,6 +23475,21 @@
 msgid "the argument to tag must be a string"
 msgstr "аргумент для tag должен быть строкой"
 
+#, python-format
+msgid "no tags exist that match '%s'"
+msgstr "нет меток, совпадающих с '%s'"
+
+msgid ""
+"``unstable()``\n"
+"    Non-obsolete changesets with obsolete ancestors."
+msgstr ""
+"``unstable()``\n"
+"    Неустаревшие наборы изменений с устаревшими предками."
+
+#. i18n: "unstable" is a keyword
+msgid "unstable takes no arguments"
+msgstr "unstable не требует аргументов"
+
 msgid ""
 "``user(string)``\n"
 "    User name contains string. The match is case-insensitive."
@@ -22570,6 +23497,18 @@
 "``user(строка)``\n"
 "    Имя пользователя содержит строку. Регистр букв не учитывается."
 
+msgid ""
+"    If `string` starts with `re:`, the remainder of the string is treated "
+"as\n"
+"    a regular expression. To match a user that actually contains `re:`, use\n"
+"    the prefix `literal:`."
+msgstr ""
+"    Если `строка` начинается с `re:`, остальная часть имени считается "
+"регулярным\n"
+"    выражением. Чтобы найти пользователя, имя которого начинается с "
+"символов\n"
+"    `re:`, используйте префикс `literal:`."
+
 msgid "can't negate that"
 msgstr "это нельзя отрицать"
 
@@ -22908,6 +23847,12 @@
 msgid "not removing repo %s because it has changes.\n"
 msgstr "не удаляем хранилище %s, т.к. в нем имеются изменения.\n"
 
+msgid "cannot retrieve git version"
+msgstr "не удалось получить версию git"
+
+msgid "git subrepo requires at least 1.6.0 or later"
+msgstr "подхранилище git требует версии не ниже 1.6.0"
+
 #, python-format
 msgid "revision %s does not exist in subrepo %s\n"
 msgstr "ревизия %s не существует в подхранилище %s\n"
@@ -22934,10 +23879,10 @@
 #, python-format
 msgid ""
 "no branch checked out in subrepo %s\n"
-"cannot push revision %s"
+"cannot push revision %s\n"
 msgstr ""
 "нет извлеченной ветки в подхранилище %s\n"
-"невозможно протолкнуть ревизию %s"
+"невозможно протолкнуть ревизию %s\n"
 
 #, python-format
 msgid "%s, line %s: %s\n"
@@ -23288,6 +24233,16 @@
 msgid ":tags: List of strings. Any tags associated with the changeset."
 msgstr ":tags: Список строк. Все метки, ассоциированные с набором изменений."
 
+msgid ""
+":parents: List of strings. The parents of the changeset in \"rev:node\"\n"
+"    format. If the changeset has only one \"natural\" parent (the "
+"predecessor\n"
+"    revision) nothing is shown."
+msgstr ""
+":parents: Список строк. Родители ревизии в формате \"номер ревизии:хэш\".\n"
+"    Если набор изменений имеет только одного \"естественного\" родителя\n"
+"    (предшествующая ревизия), ничего не показывается."
+
 #, python-format
 msgid "unknown method '%s'"
 msgstr "неизвестный метод '%s'"
@@ -23343,12 +24298,12 @@
 msgstr "уже имеется набор изменений "
 
 #, python-format
-msgid "Not trusting file %s from untrusted user %s, group %s\n"
-msgstr "Не доверяем файлу %s от недоверенного пользователя %s, группа %s\n"
-
-#, python-format
-msgid "Ignored: %s\n"
-msgstr "Игнорируется: %s\n"
+msgid "not trusting file %s from untrusted user %s, group %s\n"
+msgstr "не доверяем файлу %s от недоверенного пользователя %s, группа %s\n"
+
+#, python-format
+msgid "ignored: %s\n"
+msgstr "игнорируется: %s\n"
 
 #, python-format
 msgid "(deprecated '%%' in path %s=%s from %s)\n"
@@ -23366,8 +24321,8 @@
 msgstr "введите имя пользователя для фиксации:"
 
 #, python-format
-msgid "No username found, using '%s' instead\n"
-msgstr "Имя пользователя не найдено, используется '%s'\n"
+msgid "no username found, using '%s' instead\n"
+msgstr "имя пользователя не найдено, используется '%s'\n"
 
 msgid "no username supplied (see \"hg help config\")"
 msgstr "не задано имя пользователя (см. \"hg help config\")"
@@ -23691,6 +24646,458 @@
 msgstr "ошибка при проталкивании:"
 
 #~ msgid ""
+#~ "``unstable()``\n"
+#~ "    Unstable changesets are non-obsolete with obsolete descendants."
+#~ msgstr ""
+#~ "``unstable()``\n"
+#~ "    Нестабильные наборы изменений - не устаревшие наборы изменений\n"
+#~ "    с устаревшими потомками."
+
+#~ msgid ""
+#~ "Branch-based Access Control\n"
+#~ "..........................."
+#~ msgstr ""
+#~ "Контроль доступа, основанный на ветке\n"
+#~ "....................................."
+
+#~ msgid ""
+#~ "Path-based Access Control\n"
+#~ "........................."
+#~ msgstr ""
+#~ "Контроль доступа основанный на пути\n"
+#~ "..................................."
+
+#~ msgid ""
+#~ "Groups\n"
+#~ "......"
+#~ msgstr ""
+#~ "Группы\n"
+#~ "......"
+
+#~ msgid ""
+#~ "Example Configuration\n"
+#~ "....................."
+#~ msgstr ""
+#~ "Пример конфигурации\n"
+#~ "..................."
+
+#~ msgid ""
+#~ "    Mercurial Destination\n"
+#~ "    '''''''''''''''''''''"
+#~ msgstr ""
+#~ "    Выходное хранилище Mercurial\n"
+#~ "    ''''''''''''''''''''''''''''"
+
+#~ msgid "must specify local origin repository"
+#~ msgstr "хранилище-источник должно быть локальным"
+
+#~ msgid ""
+#~ "Files\n"
+#~ "-----"
+#~ msgstr ""
+#~ "Файлы\n"
+#~ "-----"
+
+#~ msgid ""
+#~ "Syntax\n"
+#~ "------"
+#~ msgstr ""
+#~ "Синтаксис\n"
+#~ "---------"
+
+#~ msgid ""
+#~ "``alias``\n"
+#~ "\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "``alias``\n"
+#~ "\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "\n"
+#~ "``annotate``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "\n"
+#~ "``annotate``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "\n"
+#~ "``auth``\n"
+#~ "\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "\n"
+#~ "``auth``\n"
+#~ "\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "\n"
+#~ "``decode/encode``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "\n"
+#~ "``decode/encode``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "\n"
+#~ "``defaults``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "\n"
+#~ "``defaults``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "\n"
+#~ "``diff``\n"
+#~ "\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "\n"
+#~ "``diff``\n"
+#~ "\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "``email``\n"
+#~ "\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "``email``\n"
+#~ "\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "\n"
+#~ "``extensions``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "\n"
+#~ "``extensions``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "\n"
+#~ "``format``\n"
+#~ "\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "\n"
+#~ "``format``\n"
+#~ "\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "``graph``\n"
+#~ "\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "``graph``\n"
+#~ "\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "``hooks``\n"
+#~ "\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "``hooks``\n"
+#~ "\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "\n"
+#~ "``hostfingerprints``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "\n"
+#~ "``hostfingerprints``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "\n"
+#~ "``http_proxy``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "\n"
+#~ "``http_proxy``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "``merge-patterns``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "``merge-patterns``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "``merge-tools``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "``merge-tools``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "\n"
+#~ "``patch``\n"
+#~ "\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "\n"
+#~ "``patch``\n"
+#~ "\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "\n"
+#~ "``paths``\n"
+#~ "\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "\n"
+#~ "``paths``\n"
+#~ "\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "``phases``\n"
+#~ "\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "``phases``\n"
+#~ "\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "``profiling``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "``profiling``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "``revsetalias``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "``revsetalias``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "``server``\n"
+#~ "\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "``server``\n"
+#~ "\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "``smtp``\n"
+#~ "\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "``smtp``\n"
+#~ "\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "\n"
+#~ "``subpaths``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "\n"
+#~ "``subpaths``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "``trusted``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "``trusted``\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "\n"
+#~ "``ui``\n"
+#~ "\"\"\"\"\"\""
+#~ msgstr ""
+#~ "\n"
+#~ "``ui``\n"
+#~ "\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "\n"
+#~ "``web``\n"
+#~ "\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "\n"
+#~ "``web``\n"
+#~ "\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "Example\n"
+#~ "-------"
+#~ msgstr ""
+#~ "Пример\n"
+#~ "------"
+
+#~ msgid ""
+#~ "The ``web`` section can specify all the settings described in the web\n"
+#~ "section of the hgrc(5) documentation. See :hg:`help config` for\n"
+#~ "information on where to find the manual page."
+#~ msgstr ""
+#~ "Секция ``web`` для задания всех параметров, описанных в справке по\n"
+#~ "одноименной секции из :hg:`help config`."
+
+#~ msgid ""
+#~ "The ``paths`` section provides mappings of physical repository\n"
+#~ "paths to virtual ones. For instance::"
+#~ msgstr ""
+#~ "Секция ``paths`` задает соответствие физических путей к хранилищам\n"
+#~ "и виртуальных. Например::"
+
+#~ msgid ""
+#~ "- The first two entries make two repositories in different directories\n"
+#~ "  appear under the same directory in the web interface\n"
+#~ "- The third entry maps every Mercurial repository found in '/real/root'\n"
+#~ "  into 'web/root'. This format is preferred over the [collections] one,\n"
+#~ "  since using absolute paths as configuration keys is not supported on "
+#~ "every\n"
+#~ "  platform (especially on Windows).\n"
+#~ "- The fourth entry is a special case mapping all repositories in\n"
+#~ "  '/real/root2' in the root of the virtual directory.\n"
+#~ "- The fifth entry recursively finds all repositories under the real\n"
+#~ "  root, and maps their relative paths under the virtual root."
+#~ msgstr ""
+#~ "- Первые две строки показывают два хранилища, физически находящиеся по\n"
+#~ "  разным путям, в одном каталоге в веб-интерфейсе\n"
+#~ "- Третья строка показывает все хранилища Mercurial, находящиеся в\n"
+#~ "  '/real/root', в каталоге 'web/root' веб-интерфейса. Такая форма\n"
+#~ "  является предпочтительной по сравнению с секцией [collections],\n"
+#~ "  т.к. использование абсолютных путей в качестве ключей поддерживается\n"
+#~ "  не на всех платформах (в частности, не работает в Windows)\n"
+#~ "- Четвертая строка иллюстрирует особый случай, при котором все\n"
+#~ "  хранилища из каталога '/real/root2' отображаются в корневом\n"
+#~ "  виртуальном каталоге.\n"
+#~ "- Пятая строка рекурсивно ищет все хранилища в подкаталогах\n"
+#~ "  /real/root2 и показывает из относительные пути в виртуальном\n"
+#~ "  каталоге."
+
+#~ msgid ""
+#~ "The ``collections`` section provides mappings of trees of physical\n"
+#~ "repositories paths to virtual ones, though the paths syntax is generally\n"
+#~ "preferred. For instance::"
+#~ msgstr ""
+#~ "Секция ``collections`` задает соответствие деревьев физических путей\n"
+#~ "хранилищ виртуальным. Однако, предпочтительно использовать секцию\n"
+#~ "paths. Пример::"
+
+#~ msgid ""
+#~ "  [collections]\n"
+#~ "  /foo = /foo"
+#~ msgstr ""
+#~ "  [collections]\n"
+#~ "  /foo = /foo"
+
+#~ msgid ""
+#~ "Here, the left side will be stripped off all repositories found in the\n"
+#~ "right side. Thus ``/foo/bar`` and ``foo/quux/baz`` will be listed as\n"
+#~ "``bar`` and ``quux/baz`` respectively.\n"
+#~ msgstr ""
+#~ "Здесь левая часть путей будет удалена из всех путей хранилищ,\n"
+#~ "найденных в каталоге из правой части. Так, ``/foo/bar`` и ``foo/quux/"
+#~ "baz``\n"
+#~ "будут отображаться как ``bar`` и ``quux/baz`` соответственно.\n"
+
+#~ msgid ""
+#~ "Available merge tools\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "Возможные инструменты слияния\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "Choosing a merge tool\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+#~ msgstr ""
+#~ "Выбор инструмента слияния\n"
+#~ "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+
+#~ msgid ""
+#~ "Interaction with Mercurial Commands\n"
+#~ "-----------------------------------"
+#~ msgstr ""
+#~ "Взаимодействие с командами Mercurial\n"
+#~ "------------------------------------"
+
+#~ msgid ""
+#~ "Remapping Subrepositories Sources\n"
+#~ "---------------------------------"
+#~ msgstr ""
+#~ "Переназначение источников подхранилищ\n"
+#~ "-------------------------------------"
+
+#~ msgid ""
+#~ "Other repository doesn't support revision lookup, so a rev cannot be "
+#~ "specified."
+#~ msgstr ""
+#~ "Другое хранилище не поддерживает поиск ревизий, поэтому нельзя\n"
+#~ "задавать ревизию."
+
+#~ msgid ""
+#~ "    When -f/--force is applied, all local changes in patched files\n"
+#~ "    will be lost."
+#~ msgstr ""
+#~ "    С -f/--force все локальные изменения в файлах, на которые "
+#~ "накладывается\n"
+#~ "    патч, будут утеряны."
+
+#~ msgid ""
+#~ "Alternatively, they can be added to Mercurial configuration files by\n"
+#~ "setting the previous entry to an empty value."
+#~ msgstr ""
+#~ "Также они могут быть добавлены прямо в конфигурационные файлы Mercurial,\n"
+#~ "для этого надо установить предыдущий параметр в пустое значение (config= )"
+
+#~ msgid ""
+#~ "notify.sources\n"
+#~ "  Space separated list of change sources. Notifications are sent only\n"
+#~ "  if it includes the incoming or outgoing changes source. Incoming\n"
+#~ "  sources can be ``serve`` for changes coming from http or ssh,\n"
+#~ "  ``pull`` for pulled changes, ``unbundle`` for changes added by\n"
+#~ "  :hg:`unbundle` or ``push`` for changes being pushed\n"
+#~ "  locally. Outgoing sources are the same except for ``unbundle`` which\n"
+#~ "  is replaced by ``bundle``. Default: serve."
+#~ msgstr ""
+#~ "notify.sources\n"
+#~ "  Разделенный пробелами список источников изменений. Уведомления\n"
+#~ "  отсылаются, только если он содержит источники входящих или исходящих\n"
+#~ "  изменений. Входящие источники могут быть ``serve`` - для изменений,\n"
+#~ "  получаемых по ssh или http, ``pull`` - для затягиваемых изменений,\n"
+#~ "  ``unbundle`` - для изменений, добавляемых с помощью :hg:`unbundle`,\n"
+#~ "  или ``push`` - для добавленных локально с помощью команды :hg:`push`.\n"
+#~ "  Такие же значения возможны и для исходящих, кроме ``unbundle``, "
+#~ "который\n"
+#~ "  заменяется на ``bundle``. По умолчанию: serve."
+
+#~ msgid ""
+#~ "notify.domain\n"
+#~ "  If subscribers emails or the from email have no domain set, complete "
+#~ "them\n"
+#~ "  with this value."
+#~ msgstr ""
+#~ "notify.domain\n"
+#~ "  Если адреса email подписчиков или поле email \"From:\" (От) не имеют\n"
+#~ "  домена, он заменяется этим значением."
+
+#~ msgid "Sending "
+#~ msgstr "Отправляется "
+
+#~ msgid "force detaching of source from its original branch"
+#~ msgstr "принудительно отцепить источник от его ветки-источника"
+
+#~ msgid "cannot use detach with continue or abort"
+#~ msgstr "нельзя использовать detach с continue или abort"
+
+#~ msgid "cannot specify a base with detach"
+#~ msgstr "нельзя задавать base с detach"
+
+#~ msgid "warning: immutable rebased changeset detected, can't abort\n"
+#~ msgstr ""
+#~ "внимание: обнаружены неизменяемые перебазированные наборы изменений, "
+#~ "нельзя прервать\n"
+
+#~ msgid "[OPTION]... REVISION..."
+#~ msgstr "[ПАРАМЕТР]... РЕВИЗИЯ..."
+
+#~ msgid "use \"hg -v help %s\" to show more info"
+#~ msgstr "используйте \"hg -v help %s\" для дополнительной информации"
+
+#~ msgid "There is no Mercurial repository here (.hg not found)"
+#~ msgstr "Здесь нет хранилища Mercurial (.hg не обнаружен)"
+
+#~ msgid ""
 #~ "If you notice \"BROKEN PIPE\" error messages, you can disable them by\n"
 #~ "setting::"
 #~ msgstr ""
--- a/i18n/sv.po	Thu Aug 02 17:48:58 2012 +0200
+++ b/i18n/sv.po	Thu Aug 02 18:33:40 2012 +0200
@@ -4,17 +4,20 @@
 #
 # Translation dictionary:
 #
+# amend      förändra
 # changeset  ändring
 # commit     arkivera
+# graft      ympa
 # merge      sammanfoga
+# strip      avlägsna
 # tag        märke
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2012-01-30 16:25+0100\n"
-"PO-Revision-Date: 2012-01-30 16:27+0100\n"
+"POT-Creation-Date: 2012-07-28 14:35+0200\n"
+"PO-Revision-Date: 2012-07-28 22:58+0200\n"
 "Last-Translator: Jens Bäckman <jens.backman@gmail.com>\n"
 "Language-Team: Swedish\n"
 "Language: Swedish\n"
@@ -88,10 +91,10 @@
 
 msgid ""
 "Branch-based Access Control\n"
-"..........................."
+"---------------------------"
 msgstr ""
 "Grenbaserad Åtkomstkontroll\n"
-"..........................."
+"---------------------------"
 
 msgid ""
 "Use the ``acl.deny.branches`` and ``acl.allow.branches`` sections to\n"
@@ -113,11 +116,16 @@
 msgstr ""
 
 msgid ""
+"You can add the \"!\" prefix to a user or group name to invert the sense\n"
+"of the match."
+msgstr ""
+
+msgid ""
 "Path-based Access Control\n"
-"........................."
+"-------------------------"
 msgstr ""
 "Sökvägsbaserad Åtkomstkontroll\n"
-".............................."
+"------------------------------"
 
 msgid ""
 "Use the ``acl.deny`` and ``acl.allow`` sections to have path-based\n"
@@ -128,10 +136,10 @@
 
 msgid ""
 "Groups\n"
-"......"
+"------"
 msgstr ""
 "Grupper\n"
-"......."
+"-------"
 
 msgid ""
 "Group names must be prefixed with an ``@`` symbol. Specifying a group\n"
@@ -147,10 +155,10 @@
 
 msgid ""
 "Example Configuration\n"
-"....................."
+"---------------------"
 msgstr ""
 "Exempelkonfiguration\n"
-"...................."
+"--------------------"
 
 msgid "::"
 msgstr "::"
@@ -262,15 +270,73 @@
 msgstr ""
 
 msgid ""
-"  # Everyone (except for \"user6\" - see acl.deny above) will have write\n"
-"  # access to any file under the \"resources\" folder (except for 1\n"
-"  # file. See acl.deny):\n"
+"  # Everyone (except for \"user6\" and \"@hg-denied\" - see acl.deny above)\n"
+"  # will have write access to any file under the \"resources\" folder\n"
+"  # (except for 1 file. See acl.deny):\n"
 "  src/main/resources/** = *"
 msgstr ""
 
 msgid "  .hgtags = release_engineer"
 msgstr ""
 
+msgid ""
+"Examples using the \"!\" prefix\n"
+"............................."
+msgstr ""
+
+msgid ""
+"Suppose there's a branch that only a given user (or group) should be able "
+"to\n"
+"push to, and you don't want to restrict access to any other branch that may\n"
+"be created."
+msgstr ""
+
+msgid ""
+"The \"!\" prefix allows you to prevent anyone except a given user or group "
+"to\n"
+"push changesets in a given branch or path."
+msgstr ""
+
+msgid ""
+"In the examples below, we will:\n"
+"1) Deny access to branch \"ring\" to anyone but user \"gollum\"\n"
+"2) Deny access to branch \"lake\" to anyone but members of the group \"hobbit"
+"\"\n"
+"3) Deny access to a file to anyone but user \"gollum\""
+msgstr ""
+
+msgid ""
+"  [acl.allow.branches]\n"
+"  # Empty"
+msgstr ""
+
+msgid ""
+"  # 1) only 'gollum' can commit to branch 'ring';\n"
+"  # 'gollum' and anyone else can still commit to any other branch.\n"
+"  ring = !gollum"
+msgstr ""
+
+msgid ""
+"  # 2) only members of the group 'hobbit' can commit to branch 'lake';\n"
+"  # 'hobbit' members and anyone else can still commit to any other branch.\n"
+"  lake = !@hobbit"
+msgstr ""
+
+msgid "  # You can also deny access based on file paths:"
+msgstr ""
+
+msgid ""
+"  [acl.allow]\n"
+"  # Empty"
+msgstr ""
+
+msgid ""
+"  [acl.deny]\n"
+"  # 3) only 'gollum' can change the file below;\n"
+"  # 'gollum' and anyone else can still change any other file.\n"
+"  /misty/mountains/cave/ring = !gollum"
+msgstr ""
+
 #, python-format
 msgid "group '%s' is undefined"
 msgstr ""
@@ -305,7 +371,9 @@
 "the Mercurial template mechanism."
 msgstr ""
 
-msgid "The hook does not change bug status."
+msgid ""
+"The bug references can optionally include an update for Bugzilla of the\n"
+"hours spent working on the bug. Bugs can also be marked fixed."
 msgstr ""
 
 msgid "Three basic modes of access to Bugzilla are provided:"
@@ -334,7 +402,7 @@
 "MySQL user and password to have full access rights to the Bugzilla\n"
 "database. For these reasons this access mode is now considered\n"
 "deprecated, and will not be updated for new Bugzilla versions going\n"
-"forward."
+"forward. Only adding comments is supported in this access mode."
 msgstr ""
 
 msgid ""
@@ -342,7 +410,8 @@
 "in the configuration. Comments are added under that username. Since the\n"
 "configuration must be readable by all Mercurial users, it is recommended\n"
 "that the rights of that user are restricted in Bugzilla to the minimum\n"
-"necessary to add comments."
+"necessary to add comments. Marking bugs fixed requires Bugzilla 4.0 and "
+"later."
 msgstr ""
 
 msgid ""
@@ -352,7 +421,8 @@
 "user, so the comment appears to come from the Mercurial user. In the event\n"
 "that the Mercurial user email is not recognised by Bugzilla as a Bugzilla\n"
 "user, the email associated with the Bugzilla username used to log into\n"
-"Bugzilla is used instead as the source of the comment."
+"Bugzilla is used instead as the source of the comment. Marking bugs fixed\n"
+"works on all supported Bugzilla versions."
 msgstr ""
 
 msgid "Configuration items common to all access modes:"
@@ -375,11 +445,43 @@
 
 msgid ""
 "bugzilla.regexp\n"
-"  Regular expression to match bug IDs in changeset commit message.\n"
-"  Must contain one \"()\" group. The default expression matches ``Bug\n"
-"  1234``, ``Bug no. 1234``, ``Bug number 1234``, ``Bugs 1234,5678``,\n"
-"  ``Bug 1234 and 5678`` and variations thereof. Matching is case\n"
-"  insensitive."
+"  Regular expression to match bug IDs for update in changeset commit "
+"message.\n"
+"  It must contain one \"()\" named group ``<ids>`` containing the bug\n"
+"  IDs separated by non-digit characters. It may also contain\n"
+"  a named group ``<hours>`` with a floating-point number giving the\n"
+"  hours worked on the bug. If no named groups are present, the first\n"
+"  \"()\" group is assumed to contain the bug IDs, and work time is not\n"
+"  updated. The default expression matches ``Bug 1234``, ``Bug no. 1234``,\n"
+"  ``Bug number 1234``, ``Bugs 1234,5678``, ``Bug 1234 and 5678`` and\n"
+"  variations thereof, followed by an hours number prefixed by ``h`` or\n"
+"  ``hours``, e.g. ``hours 1.5``. Matching is case insensitive."
+msgstr ""
+
+msgid ""
+"bugzilla.fixregexp\n"
+"  Regular expression to match bug IDs for marking fixed in changeset\n"
+"  commit message. This must contain a \"()\" named group ``<ids>` "
+"containing\n"
+"  the bug IDs separated by non-digit characters. It may also contain\n"
+"  a named group ``<hours>`` with a floating-point number giving the\n"
+"  hours worked on the bug. If no named groups are present, the first\n"
+"  \"()\" group is assumed to contain the bug IDs, and work time is not\n"
+"  updated. The default expression matches ``Fixes 1234``, ``Fixes bug "
+"1234``,\n"
+"  ``Fixes bugs 1234,5678``, ``Fixes 1234 and 5678`` and\n"
+"  variations thereof, followed by an hours number prefixed by ``h`` or\n"
+"  ``hours``, e.g. ``hours 1.5``. Matching is case insensitive."
+msgstr ""
+
+msgid ""
+"bugzilla.fixstatus\n"
+"  The status to set a bug to when marking fixed. Default ``RESOLVED``."
+msgstr ""
+
+msgid ""
+"bugzilla.fixresolution\n"
+"  The resolution to set a bug to when marking fixed. Default ``FIXED``."
 msgstr ""
 
 msgid ""
@@ -651,6 +753,10 @@
 msgstr ""
 
 #, python-format
+msgid "bug %d does not exist\n"
+msgstr "bugg %d existerar inte\n"
+
+#, python-format
 msgid "bug %d already knows about changeset %s\n"
 msgstr ""
 
@@ -684,6 +790,12 @@
 msgid "cannot find bugzilla user id for %s or %s"
 msgstr ""
 
+msgid "Bugzilla/MySQL cannot update bug state\n"
+msgstr ""
+
+msgid "Bugzilla/XMLRPC needs Bugzilla 4.0 or later to mark bugs fixed\n"
+msgstr ""
+
 msgid "configuration 'bzemail' missing"
 msgstr "'bzemail' inte konfigurerad"
 
@@ -695,6 +807,10 @@
 msgid "bugzilla version %s not supported"
 msgstr "bugzilla version %s stöds inte"
 
+#, python-format
+msgid "%s: invalid hours\n"
+msgstr "%s: ogiltiga timmar\n"
+
 msgid ""
 "changeset {node|short} in repo {root} refers to bug {bug}.\n"
 "details:\n"
@@ -709,8 +825,15 @@
 msgid "Bugzilla error: %s"
 msgstr "Bugzilla-fel: %s"
 
-msgid "command to display child changesets"
-msgstr ""
+msgid "command to display child changesets (DEPRECATED)"
+msgstr "kommando för att visa barnändringar (FÖRLEGAD)"
+
+msgid ""
+"This extension is deprecated. You should use :hg:`log -r\n"
+"\"children(REV)\"` instead.\n"
+msgstr ""
+"Detta är en förlegad utökning. Du kan avända :hg:`log -r\n"
+"\"children(REV)\"` instead.\n"
 
 msgid "show the children of the given or working directory revision"
 msgstr ""
@@ -737,7 +860,7 @@
 msgstr ""
 
 #, python-format
-msgid "Revision %d is a merge, ignoring...\n"
+msgid "revision %d is a merge, ignoring...\n"
 msgstr ""
 
 msgid "analyzing"
@@ -1236,10 +1359,10 @@
 
 msgid ""
 "    Mercurial Source\n"
-"    ''''''''''''''''"
+"    ################"
 msgstr ""
 "    Mercurial-källa\n"
-"    '''''''''''''''"
+"    ###############"
 
 msgid ""
 "    The Mercurial source recognizes the following configuration\n"
@@ -1265,10 +1388,10 @@
 
 msgid ""
 "    CVS Source\n"
-"    ''''''''''"
+"    ##########"
 msgstr ""
 "    CVS-källa\n"
-"    '''''''''"
+"    #########"
 
 msgid ""
 "    CVS source will use a sandbox (i.e. a checked-out copy) from CVS\n"
@@ -1324,7 +1447,7 @@
 
 msgid ""
 "    :hook.cvschangesets: Specify a Python function to be called after\n"
-"        the changesets are calculated from the the CVS log. The\n"
+"        the changesets are calculated from the CVS log. The\n"
 "        function is passed a list with the changeset entries, and can\n"
 "        modify the changesets in-place, or add or delete them."
 msgstr ""
@@ -1338,10 +1461,10 @@
 
 msgid ""
 "    Subversion Source\n"
-"    '''''''''''''''''"
+"    #################"
 msgstr ""
 "    Subversion-källa\n"
-"    ''''''''''''''''"
+"    ################"
 
 msgid ""
 "    Subversion source detects classical trunk/branches/tags layouts.\n"
@@ -1387,10 +1510,10 @@
 
 msgid ""
 "    Perforce Source\n"
-"    '''''''''''''''"
+"    ###############"
 msgstr ""
 "    Perforce-källa\n"
-"    ''''''''''''''"
+"    ##############"
 
 msgid ""
 "    The Perforce (P4) importer can be given a p4 depot path or a\n"
@@ -1413,10 +1536,10 @@
 
 msgid ""
 "    Mercurial Destination\n"
-"    '''''''''''''''''''''"
+"    #####################"
 msgstr ""
 "    Mercurial-destination\n"
-"    '''''''''''''''''''''"
+"    #####################"
 
 msgid "    The following options are supported:"
 msgstr ""
@@ -1547,8 +1670,8 @@
 msgstr ""
 
 #, python-format
-msgid "%s is not a valid revision in current branch"
-msgstr ""
+msgid "%s is not a valid revision"
+msgstr "%s är inte en giltig revision"
 
 #, python-format
 msgid "%s is not available in %s anymore"
@@ -1575,6 +1698,10 @@
 msgstr ""
 
 #, python-format
+msgid "syntax error in %s(%d): child parent1[,parent2] expected"
+msgstr ""
+
+#, python-format
 msgid "%s: invalid source repository type"
 msgstr "%s: ogiltig typ för källarkiv"
 
@@ -1604,6 +1731,14 @@
 msgstr "skannar"
 
 #, python-format
+msgid "splice map revision %s is not being converted, ignoring\n"
+msgstr ""
+
+#, python-format
+msgid "unknown splice map parent: %s"
+msgstr ""
+
+#, python-format
 msgid "unknown sort mode: %s"
 msgstr ""
 
@@ -1615,11 +1750,11 @@
 msgstr ""
 
 #, python-format
-msgid "Writing author map file %s\n"
-msgstr ""
-
-#, python-format
-msgid "Ignoring bad line in author map file %s: %s\n"
+msgid "writing author map file %s\n"
+msgstr ""
+
+#, python-format
+msgid "ignoring bad line in author map file %s: %s\n"
 msgstr ""
 
 #, python-format
@@ -1864,6 +1999,12 @@
 msgstr "uppdaterar bokmärken\n"
 
 #, python-format
+msgid ""
+"revision %s not found in destination repository (lookups with "
+"clonebranches=true are not implemented)"
+msgstr ""
+
+#, python-format
 msgid "%s is not a valid start revision"
 msgstr ""
 
@@ -1924,6 +2065,9 @@
 msgid "collecting p4 changelists\n"
 msgstr ""
 
+msgid "debugsvnlog could not load Subversion python bindings"
+msgstr ""
+
 msgid "Mercurial failed to run itself, check hg executable is in PATH"
 msgstr ""
 
@@ -1940,7 +2084,7 @@
 msgid "%s does not look like a Subversion repository"
 msgstr "%s verkar inte vara ett Subversion-arkiv"
 
-msgid "Could not load Subversion python bindings"
+msgid "could not load Subversion python bindings"
 msgstr ""
 
 #, python-format
@@ -2025,6 +2169,12 @@
 msgid "writing Subversion tags is not yet implemented\n"
 msgstr ""
 
+#, python-format
+msgid ""
+"splice map revision %s not found in subversion child map (revision lookups "
+"are not implemented)"
+msgstr ""
+
 msgid "automatically manage newlines in repository files"
 msgstr ""
 
@@ -2211,7 +2361,8 @@
 "  # (see http://www.vim.org/scripts/script.php?script_id=102) Non\n"
 "  # English user, be sure to put \"let g:DirDiffDynamicDiffText = 1\" in\n"
 "  # your .vimrc\n"
-"  vimdiff = gvim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)'"
+"  vimdiff = gvim -f \"+next\" \\\n"
+"            \"+execute 'DirDiff' fnameescape(argv(0)) fnameescape(argv(1))\""
 msgstr ""
 
 msgid "Tool arguments can include variables that are expanded at runtime::"
@@ -2324,7 +2475,56 @@
 msgid "hg %s [OPTION]... [FILE]..."
 msgstr ""
 
-msgid "pull, update and merge in one command"
+msgid "http authentication with factotum"
+msgstr ""
+
+msgid ""
+"This extension allows the factotum(4) facility on Plan 9 from Bell Labs\n"
+"platforms to provide authentication information for HTTP access. "
+"Configuration\n"
+"entries specified in the auth section as well as authentication information\n"
+"provided in the repository URL are fully supported. If no prefix is "
+"specified,\n"
+"a value of \"*\" will be assumed."
+msgstr ""
+
+msgid "By default, keys are specified as::"
+msgstr ""
+
+msgid ""
+"  proto=pass service=hg prefix=<prefix> user=<username> !password=<password>"
+msgstr ""
+
+msgid ""
+"If the factotum extension is unable to read the required key, one will be\n"
+"requested interactively."
+msgstr ""
+
+msgid ""
+"A configuration section is available to customize runtime behavior. By\n"
+"default, these entries are::"
+msgstr ""
+
+msgid ""
+"  [factotum]\n"
+"  executable = /bin/auth/factotum\n"
+"  mountpoint = /mnt/factotum\n"
+"  service = hg"
+msgstr ""
+
+msgid ""
+"The executable entry defines the full path to the factotum binary. The\n"
+"mountpoint entry defines the path to the factotum file service. Lastly, the\n"
+"service entry controls the service name used when reading keys."
+msgstr ""
+
+msgid "factotum not interactive"
+msgstr ""
+
+msgid "factotum not responding"
+msgstr ""
+
+msgid "pull, update and merge in one command (DEPRECATED)"
 msgstr ""
 
 msgid "pull changes from a remote repository, merge new changes if needed."
@@ -2343,10 +2543,9 @@
 msgstr ""
 
 msgid ""
-"    When a merge occurs, the newly pulled changes are assumed to be\n"
-"    \"authoritative\". The head of the new changes is used as the first\n"
-"    parent, with local changes as the second. To switch the merge\n"
-"    order, use --switch-parent."
+"    When a merge is needed, the working directory is first updated to\n"
+"    the newly pulled changes. Local changes are then merged into the\n"
+"    pulled changes. To switch the merge order, use --switch-parent."
 msgstr ""
 
 msgid "    See :hg:`help dates` for a list of formats valid for -d/--date."
@@ -2385,10 +2584,10 @@
 msgstr "drar från %s\n"
 
 msgid ""
-"Other repository doesn't support revision lookup, so a rev cannot be "
+"other repository doesn't support revision lookup, so a rev cannot be "
 "specified."
 msgstr ""
-"Det andra arkivet stödjer inte revisionsuppslag, så en revision kan inte "
+"det andra arkivet stödjer inte revisionsuppslag, så en revision kan inte "
 "anges."
 
 #, python-format
@@ -2454,15 +2653,15 @@
 msgid "%s:%d node does not exist\n"
 msgstr "%s:%d noden existerar inte\n"
 
-msgid "hg sigcheck REVISION"
-msgstr "hg sigcheck REVISION"
+msgid "hg sigcheck REV"
+msgstr "hg sigcheck REV"
 
 msgid "verify all the signatures there may be for a particular revision"
 msgstr "verifiera alla signaturerna som finns för en viss revision"
 
 #, python-format
-msgid "No valid signature for %s\n"
-msgstr "Ingen giltig signatur för %s\n"
+msgid "no valid signature for %s\n"
+msgstr "ingen giltig signatur för %s\n"
 
 msgid "make the signature local"
 msgstr "gör signaturen lokal"
@@ -2485,8 +2684,8 @@
 msgid "commit message"
 msgstr "arkiveringsmeddelande"
 
-msgid "hg sign [OPTION]... [REVISION]..."
-msgstr "hg sign [FLAGGA]... [REVISION]..."
+msgid "hg sign [OPTION]... [REV]..."
+msgstr "hg sign [FLAGGA]... [REV]..."
 
 msgid "add a signature for the current or given revision"
 msgstr "lägg till en signatur för den aktuella eller angivna revisionen"
@@ -2509,8 +2708,8 @@
 msgstr "oarkiverad sammanfogning - ange en specifik revision"
 
 #, python-format
-msgid "Signing %d:%s\n"
-msgstr "Signerar %d:%s\n"
+msgid "signing %d:%s\n"
+msgstr "signerar %d:%s\n"
 
 msgid "error while signing"
 msgstr "fel vid signering"
@@ -2537,27 +2736,54 @@
 "outgoing och log. När flaggan anges, visas också en ASCII-version av\n"
 "revisionsgrafen.\n"
 
-#, python-format
-msgid "-G/--graph option is incompatible with --%s"
-msgstr "flaggan -G/--graph är inkompatibel med --%s"
-
-msgid "-G/--graph option is incompatible with --follow with file argument"
-msgstr "flaggan -G/--graph är inkompatibel med --follow med filargument"
-
-msgid "NUM"
-msgstr "NUM"
-
-msgid "limit number of changes displayed"
-msgstr "begränsa antalet visade ändringar"
-
-msgid "show patch"
-msgstr "visa patch"
+msgid "follow changeset history, or file history across copies and renames"
+msgstr ""
+"följ ändringshistorik, eller filhistorik över kopieringar och namnbyten"
+
+msgid "only follow the first parent of merge changesets (DEPRECATED)"
+msgstr "följ bara den första föräldern vid sammanfogningar (FÖRLEGAD)"
+
+msgid "show revisions matching date spec"
+msgstr "visa revisioner som matchar datumspecen"
+
+msgid "show copied files"
+msgstr "visa kopierade filer"
+
+msgid "do case-insensitive search for a given text"
+msgstr "gör versalokänslig sökning efter en given text"
 
 msgid "show the specified revision or range"
 msgstr "visa den specifika revisionen eller serien"
 
-msgid "hg glog [OPTION]... [FILE]"
-msgstr "hg glog [FLAGGA]... [FIL]"
+msgid "include revisions where files were removed"
+msgstr "inkludera revisioner där filer togs bort"
+
+msgid "show only merges (DEPRECATED)"
+msgstr "visa bara sammanfogningar (FÖRLEGAD)"
+
+msgid "USER"
+msgstr "ANVÄNDARE"
+
+msgid "revisions committed by user"
+msgstr "revisioner arkiverade av användare"
+
+msgid "show only changesets within the given named branch (DEPRECATED)"
+msgstr "visa bara ändringar i den namngivna grenen (FÖRLEGAD)"
+
+msgid "BRANCH"
+msgstr "GREN"
+
+msgid "show changesets within the given named branch"
+msgstr "visa ändringar i den namngivna grenen"
+
+msgid "do not display revision or any of its ancestors"
+msgstr "visa inte revision eller någon av dess föräldrar"
+
+msgid "show hidden changesets (DEPRECATED)"
+msgstr "visa dolda ändringar (FÖRLEGAD)"
+
+msgid "[OPTION]... [FILE]"
+msgstr "[FLAGGA]... [FIL]"
 
 msgid "show revision history alongside an ASCII revision graph"
 msgstr "visa revisionshistorik vid sidan av en ASCII-revisionsgraf"
@@ -2577,9 +2803,6 @@
 "    Noder visade som ett @-tecken är föräldrar till arbetskatalogen.\n"
 "    "
 
-msgid "show the revision DAG"
-msgstr "visa revisionsdiagram"
-
 msgid "hooks for integrating with the CIA.vc notification service"
 msgstr ""
 
@@ -2707,6 +2930,12 @@
 msgid "start interactive history viewer"
 msgstr ""
 
+msgid "NUM"
+msgstr "NUM"
+
+msgid "limit number of changes displayed"
+msgstr "begränsa antalet visade ändringar"
+
 msgid "hg view [-l LIMIT] [REVRANGE]"
 msgstr ""
 
@@ -2763,23 +2992,322 @@
 msgstr ""
 
 msgid "syntax highlighting for hgweb (requires Pygments)"
-msgstr ""
+msgstr "syntaxfärgning för hgweb (kräver Pygments)"
 
 msgid ""
 "It depends on the Pygments syntax highlighting library:\n"
 "http://pygments.org/"
 msgstr ""
+"Den beror på syntaxfärgningsbiblioteket Pygments:\n"
+"http://pygments.org/"
 
 msgid "There is a single configuration option::"
-msgstr ""
+msgstr "Det finns ett enda konfigurationsalternativ::"
 
 msgid ""
 "  [web]\n"
 "  pygments_style = <style>"
 msgstr ""
+"  [web]\n"
+"  pygments_style = <style>"
 
 msgid "The default is 'colorful'.\n"
-msgstr ""
+msgstr "Som standard används 'colorful'.\n"
+
+msgid "interactive history editing"
+msgstr "interaktiv historieredigering"
+
+msgid ""
+"With this extension installed, Mercurial gains one new command: histedit. "
+"Usage\n"
+"is as follows, assuming the following history::"
+msgstr ""
+"Med denna utökning installerad, så får Mercurial ett nytt kommando: \n"
+"histedit. Det används som följer, förutsatt denna historia::"
+
+msgid ""
+" @  3[tip]   7c2fd3b9020c   2009-04-27 18:04 -0500   durin42\n"
+" |    Add delta\n"
+" |\n"
+" o  2   030b686bedc4   2009-04-27 18:04 -0500   durin42\n"
+" |    Add gamma\n"
+" |\n"
+" o  1   c561b4e977df   2009-04-27 18:04 -0500   durin42\n"
+" |    Add beta\n"
+" |\n"
+" o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"      Add alpha"
+msgstr ""
+" @  3[tip]   7c2fd3b9020c   2009-04-27 18:04 -0500   durin42\n"
+" |    Add delta\n"
+" |\n"
+" o  2   030b686bedc4   2009-04-27 18:04 -0500   durin42\n"
+" |    Add gamma\n"
+" |\n"
+" o  1   c561b4e977df   2009-04-27 18:04 -0500   durin42\n"
+" |    Add beta\n"
+" |\n"
+" o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"      Add alpha"
+
+msgid ""
+"If you were to run ``hg histedit c561b4e977df``, you would see the "
+"following\n"
+"file open in your editor::"
+msgstr ""
+"Om du skulle köra ``hg histedit c561b4e977df``, så skulle den följande \n"
+"filen öppnas i din editor::"
+
+msgid ""
+" pick c561b4e977df Add beta\n"
+" pick 030b686bedc4 Add gamma\n"
+" pick 7c2fd3b9020c Add delta"
+msgstr ""
+" pick c561b4e977df Add beta\n"
+" pick 030b686bedc4 Add gamma\n"
+" pick 7c2fd3b9020c Add delta"
+
+msgid ""
+" # Edit history between 633536316234 and 7c2fd3b9020c\n"
+" #\n"
+" # Commands:\n"
+" #  p, pick = use commit\n"
+" #  e, edit = use commit, but stop for amending\n"
+" #  f, fold = use commit, but fold into previous commit\n"
+" #  d, drop = remove commit from history\n"
+" #  m, mess = edit message without changing commit content\n"
+" #\n"
+" 0 files updated, 0 files merged, 0 files removed, 0 files unresolved"
+msgstr ""
+
+msgid ""
+"In this file, lines beginning with ``#`` are ignored. You must specify a "
+"rule\n"
+"for each revision in your history. For example, if you had meant to add "
+"gamma\n"
+"before beta, and then wanted to add delta in the same revision as beta, you\n"
+"would reorganize the file to look like this::"
+msgstr ""
+
+msgid ""
+" pick 030b686bedc4 Add gamma\n"
+" pick c561b4e977df Add beta\n"
+" fold 7c2fd3b9020c Add delta"
+msgstr ""
+" pick 030b686bedc4 Add gamma\n"
+" pick c561b4e977df Add beta\n"
+" fold 7c2fd3b9020c Add delta"
+
+msgid ""
+"At which point you close the editor and ``histedit`` starts working. When "
+"you\n"
+"specify a ``fold`` operation, ``histedit`` will open an editor when it "
+"folds\n"
+"those revisions together, offering you a chance to clean up the commit "
+"message::"
+msgstr ""
+
+msgid ""
+" Add beta\n"
+" ***\n"
+" Add delta"
+msgstr ""
+
+msgid ""
+"Edit the commit message to your liking, then close the editor. For\n"
+"this example, let's assume that the commit message was changed to\n"
+"``Add beta and delta.`` After histedit has run and had a chance to\n"
+"remove any old or temporary revisions it needed, the history looks\n"
+"like this::"
+msgstr ""
+
+msgid ""
+" @  2[tip]   989b4d060121   2009-04-27 18:04 -0500   durin42\n"
+" |    Add beta and delta.\n"
+" |\n"
+" o  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n"
+" |    Add gamma\n"
+" |\n"
+" o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"      Add alpha"
+msgstr ""
+
+msgid ""
+"Note that ``histedit`` does *not* remove any revisions (even its own "
+"temporary\n"
+"ones) until after it has completed all the editing operations, so it will\n"
+"probably perform several strip operations when it's done. For the above "
+"example,\n"
+"it had to run strip twice. Strip can be slow depending on a variety of "
+"factors,\n"
+"so you might need to be a little patient. You can choose to keep the "
+"original\n"
+"revisions by passing the ``--keep`` flag."
+msgstr ""
+
+msgid ""
+"The ``edit`` operation will drop you back to a command prompt,\n"
+"allowing you to edit files freely, or even use ``hg record`` to commit\n"
+"some changes as a separate commit. When you're done, any remaining\n"
+"uncommitted changes will be committed as well. When done, run ``hg\n"
+"histedit --continue`` to finish this step. You'll be prompted for a\n"
+"new commit message, but the default commit message will be the\n"
+"original message for the ``edit`` ed revision."
+msgstr ""
+
+msgid ""
+"The ``message`` operation will give you a chance to revise a commit\n"
+"message without changing the contents. It's a shortcut for doing\n"
+"``edit`` immediately followed by `hg histedit --continue``."
+msgstr ""
+
+msgid ""
+"If ``histedit`` encounters a conflict when moving a revision (while\n"
+"handling ``pick`` or ``fold``), it'll stop in a similar manner to\n"
+"``edit`` with the difference that it won't prompt you for a commit\n"
+"message when done. If you decide at this point that you don't like how\n"
+"much work it will be to rearrange history, or that you made a mistake,\n"
+"you can use ``hg histedit --abort`` to abandon the new changes you\n"
+"have made and return to the state before you attempted to edit your\n"
+"history."
+msgstr ""
+
+msgid ""
+"If we clone the example repository above and add three more changes, such "
+"that\n"
+"we have the following history::"
+msgstr ""
+
+msgid ""
+"   @  6[tip]   038383181893   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add theta\n"
+"   |\n"
+"   o  5   140988835471   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add eta\n"
+"   |\n"
+"   o  4   122930637314   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add zeta\n"
+"   |\n"
+"   o  3   836302820282   2009-04-27 18:04 -0500   stefan\n"
+"   |    Add epsilon\n"
+"   |\n"
+"   o  2   989b4d060121   2009-04-27 18:04 -0500   durin42\n"
+"   |    Add beta and delta.\n"
+"   |\n"
+"   o  1   081603921c3f   2009-04-27 18:04 -0500   durin42\n"
+"   |    Add gamma\n"
+"   |\n"
+"   o  0   d8d2fcd0e319   2009-04-27 18:04 -0500   durin42\n"
+"        Add alpha"
+msgstr ""
+
+msgid ""
+"If you run ``hg histedit --outgoing`` on the clone then it is the same\n"
+"as running ``hg histedit 836302820282``. If you need plan to push to a\n"
+"repository that Mercurial does not detect to be related to the source\n"
+"repo, you can add a ``--force`` option.\n"
+msgstr ""
+
+msgid "cannot edit history that would orphan nodes"
+msgstr ""
+
+msgid "can't edit history with merges"
+msgstr "kan inte redigera historik med sammanfogningar"
+
+#, python-format
+msgid "%s: empty changeset"
+msgstr "%s: tom ändring"
+
+msgid "Fix up the change and run hg histedit --continue"
+msgstr "Fixa ändringen och kör hg histedit --continue"
+
+msgid ""
+"Make changes as needed, you may commit or record as needed now.\n"
+"When you are finished, run hg histedit --continue to resume."
+msgstr ""
+
+msgid "Read history edits from the specified file."
+msgstr "Läs historieändringar från den angivna filen"
+
+msgid "continue an edit already in progress"
+msgstr ""
+
+msgid "don't strip old nodes after edit is complete"
+msgstr ""
+
+msgid "abort an edit in progress"
+msgstr ""
+
+msgid "changesets not found in destination"
+msgstr "visa ändringar som inte hittas i destinationen"
+
+msgid "force outgoing even for unrelated repositories"
+msgstr ""
+
+msgid "first revision to be edited"
+msgstr "första revision att redigera"
+
+msgid "[PARENT]"
+msgstr "[FÖRÄLDER]"
+
+msgid ""
+"interactively edit changeset history\n"
+"    "
+msgstr ""
+
+msgid "source has mq patches applied"
+msgstr ""
+
+msgid "only one repo argument allowed with --outgoing"
+msgstr ""
+
+#, python-format
+msgid "comparing with %s\n"
+msgstr "jämför med %s\n"
+
+msgid "--force only allowed with --outgoing"
+msgstr ""
+
+msgid "no arguments allowed with --continue"
+msgstr ""
+
+msgid "no arguments allowed with --abort"
+msgstr ""
+
+msgid "history edit already in progress, try --continue or --abort"
+msgstr ""
+
+msgid "histedit requires exactly one parent revision"
+msgstr "histedit kräver exakt en förälderrevision"
+
+msgid "histedit: Should update metadata for the following changes:\n"
+msgstr ""
+
+#, python-format
+msgid "histedit:  %s to %s\n"
+msgstr "histedit:  %s till %s\n"
+
+#, python-format
+msgid "histedit:     moving bookmarks %s\n"
+msgstr "histedit:     flyttar bokmärken %s\n"
+
+msgid "must specify a rule for each changeset once"
+msgstr ""
+
+#, python-format
+msgid "malformed line \"%s\""
+msgstr "defekt rad \"%s\""
+
+msgid "may not use changesets other than the ones listed"
+msgstr ""
+
+#, python-format
+msgid "unknown changeset %s listed"
+msgstr "okänd ändring %s angiven"
+
+#, python-format
+msgid "unknown action \"%s\""
+msgstr "okänd handling \"%s\""
 
 msgid "accelerate status report using Linux's inotify service"
 msgstr ""
@@ -3425,11 +3953,23 @@
 msgid "largefile %s missing from store (needs to be uploaded)"
 msgstr ""
 
+#, python-format
+msgid "%d additional largefiles cached\n"
+msgstr "%d ytterligare largefiles cachade\n"
+
+#, python-format
+msgid "%d largefiles failed to download\n"
+msgstr "%d largefiles kunde inte hämtas\n"
+
 msgid "getting changed largefiles\n"
-msgstr ""
+msgstr "hämtar ändrade largefiles\n"
 
 #, python-format
 msgid "%d largefiles updated, %d removed\n"
+msgstr "%d largefiles uppdaterade, %d borttagna\n"
+
+#, python-format
+msgid "largefile %s is not in cache and could not be downloaded"
 msgstr ""
 
 msgid "minimum size (MB) for files to be converted as largefiles"
@@ -3453,14 +3993,14 @@
 msgstr "okänt operativsystem: %s\n"
 
 #, python-format
-msgid "Found %s in store\n"
-msgstr ""
-
-#, python-format
-msgid "Found %s in system cache\n"
-msgstr ""
-
-msgid "Can't get file locally"
+msgid "found %s in store\n"
+msgstr ""
+
+#, python-format
+msgid "found %s in system cache\n"
+msgstr ""
+
+msgid "can't get file locally"
 msgstr ""
 
 #, python-format
@@ -3549,12 +4089,12 @@
 msgid "&Other"
 msgstr ""
 
-msgid "destination largefile already exists"
-msgstr ""
-
 msgid "no files to copy"
 msgstr "inga filer att kopiera"
 
+msgid "destination largefile already exists"
+msgstr "destionation-largefile finns redan"
+
 msgid "caching new largefiles\n"
 msgstr "cachar nya largefiles\n"
 
@@ -3563,6 +4103,10 @@
 msgstr "%d largefiles cachade\n"
 
 #, python-format
+msgid "--all-largefiles is incompatible with non-local destination %s"
+msgstr "--all-largefiles är inkompatibel med icke-lokal destination %s"
+
+#, python-format
 msgid "unknown archive type '%s'"
 msgstr "okänd arkivtyp '%s'"
 
@@ -3674,6 +4218,12 @@
 msgid "display outgoing largefiles"
 msgstr "visa utgående largefiles"
 
+msgid "download all pulled versions of largefiles"
+msgstr ""
+
+msgid "download all versions of all largefiles"
+msgstr ""
+
 msgid "manage a stack of patches"
 msgstr "hantera en uppsättning patchar"
 
@@ -3748,7 +4298,7 @@
 "andra fallet."
 
 msgid ""
-"It may be desirable for mq changesets in the secret phase (see\n"
+"It may be desirable for mq changesets to be kept in the secret phase (see\n"
 ":hg:`help phases`), which can be enabled with the following setting::"
 msgstr ""
 "Det kan vara önskvärt att hålla alla mq-ändringar i secret-fasen (se\n"
@@ -3763,10 +4313,35 @@
 
 msgid ""
 "You will by default be managing a patch queue named \"patches\". You can\n"
-"create other, independent patch queues with the :hg:`qqueue` command.\n"
+"create other, independent patch queues with the :hg:`qqueue` command."
 msgstr ""
 "Du kommer som standard att handera en patchkö vid namn \"patches\". Du\n"
-"kan skapa en ny, oberoende patchkö med kommandot :hg:`qqueue`.\n"
+"kan skapa en ny, oberoende patchkö med kommandot :hg:`qqueue`."
+
+msgid ""
+"If the working directory contains uncommitted files, qpush, qpop and\n"
+"qgoto abort immediately. If -f/--force is used, the changes are\n"
+"discarded. Setting::"
+msgstr ""
+"Om arbetskatalogen innehåller oarkiverade filer så kommer qpush, qpop\n"
+"och qgoto omedelbart att avslutas. Om -f/--force används, så kommer\n"
+"ändringarna att kastas bort. Inställningen::"
+
+msgid ""
+"  [mq]\n"
+"  keepchanges = True"
+msgstr ""
+"  [mq]\n"
+"  keepchanges = True"
+
+msgid ""
+"make them behave as if --keep-changes were passed, and non-conflicting\n"
+"local changes will be tolerated and preserved. If incompatible options\n"
+"such as -f/--force or --exact are passed, this setting is ignored.\n"
+msgstr ""
+"får dom att uppföra sig som om --keep-changes angetts, och konfliktfria\n"
+"lokala ändringar tolereras och bevaras. Om inkompatibla flaggor som\n"
+"-f/--force eller --exact anges, så ignoreras den här inställningen.\n"
 
 msgid "print first line of patch header"
 msgstr "skriv ut första raden i patchheadern"
@@ -3784,35 +4359,35 @@
 msgstr "%s finns mer än en gång i %s"
 
 msgid "guard cannot be an empty string"
-msgstr "guard kan inte vara en tom sträng"
+msgstr "skyddet kan inte vara en tom sträng"
 
 #, python-format
 msgid "guard %r starts with invalid character: %r"
-msgstr ""
+msgstr "skyddet %r börjar med ett otillåtet tecken: %r"
 
 #, python-format
 msgid "invalid character in guard %r: %r"
-msgstr ""
+msgstr "otillåtet tecken i skyddet %r: %r"
 
 #, python-format
 msgid "guard %r too short"
-msgstr ""
+msgstr "skyddet %r är för kort"
 
 #, python-format
 msgid "guard %r starts with invalid char"
-msgstr ""
+msgstr "skyddet %r börjar med ett otillåtet tecken"
 
 #, python-format
 msgid "allowing %s - no guards in effect\n"
-msgstr ""
+msgstr "tillåter %s - inga skydd aktiva\n"
 
 #, python-format
 msgid "allowing %s - no matching negative guards\n"
-msgstr ""
+msgstr "tillåter %s - inga matchande negativa skydd\n"
 
 #, python-format
 msgid "allowing %s - guarded by %s\n"
-msgstr ""
+msgstr "tillåter %s - skyddad av %s\n"
 
 #, python-format
 msgid "skipping %s - guarded by %s\n"
@@ -3820,62 +4395,72 @@
 
 #, python-format
 msgid "skipping %s - no matching guards\n"
-msgstr ""
+msgstr "hoppar över %s - inga matchande skydd\n"
 
 #, python-format
 msgid "error removing undo: %s\n"
-msgstr ""
+msgstr "fel vid borttagning av återställare: %s\n"
+
+#, python-format
+msgid "saving current version of %s as %s\n"
+msgstr "sparar nuvarande revision av %s som %s\n"
 
 #, python-format
 msgid "apply failed for patch %s"
-msgstr ""
+msgstr "misslyckades att applicera patchen %s"
 
 #, python-format
 msgid "patch didn't work out, merging %s\n"
-msgstr ""
+msgstr "patchning gick inte bra, sammanfogar %s\n"
 
 #, python-format
 msgid "update returned %d"
-msgstr ""
+msgstr "update returnerade %d"
 
 msgid "repo commit failed"
-msgstr ""
+msgstr "arkivering misslyckades"
 
 #, python-format
 msgid "unable to read %s"
-msgstr ""
+msgstr "kan inte läsa %s"
 
 #, python-format
 msgid "patch %s does not exist\n"
-msgstr ""
+msgstr "patchen %s finns inte\n"
 
 #, python-format
 msgid "patch %s is not applied\n"
-msgstr ""
+msgstr "patchen %s är inte applicerad\n"
 
 msgid "patch failed, unable to continue (try -v)\n"
-msgstr ""
+msgstr "patchning misslyckades, kan inte fortsätta (försök med -v)\n"
 
 #, python-format
 msgid "applying %s\n"
-msgstr ""
+msgstr "applicerar %s\n"
 
 #, python-format
 msgid "unable to read %s\n"
-msgstr ""
+msgstr "kan inte läsa %s\n"
+
+msgid "local changes found, refresh first"
+msgstr "lokala ändringar hittades, uppdatera först"
 
 #, python-format
 msgid "patch %s is empty\n"
-msgstr ""
+msgstr "patchen %s är tom\n"
+
+msgid "qpush exactly duplicates child changeset"
+msgstr "qpush duplicerar barnändringen exakt"
 
 msgid "repository commit failed"
-msgstr ""
+msgstr "arkivering misslyckades"
 
 msgid "patch failed, rejects left in working dir\n"
-msgstr ""
+msgstr "patchning misslyckades, avslag lämnades i arbetskatalogen\n"
 
 msgid "fuzz found when applying patch, stopping\n"
-msgstr ""
+msgstr "ludd upptäcktes när patchen applicerades, stannar\n"
 
 #, python-format
 msgid "revision %s refers to unknown patches: %s\n"
@@ -3887,54 +4472,51 @@
 
 #, python-format
 msgid "revision %d is not managed"
-msgstr ""
+msgstr "revision %d hanteras inte"
 
 #, python-format
 msgid "cannot delete revision %d above applied patches"
-msgstr ""
+msgstr "kan inte radera revision %d ovanför applicerade patchar"
 
 #, python-format
 msgid "patch %s finalized without changeset message\n"
-msgstr ""
+msgstr "patchen %s färdigställdes utan arkiveringsmeddelande\n"
 
 msgid "qdelete requires at least one revision or patch name"
-msgstr ""
+msgstr "qdelete kräver minst en revision eller ett patchnamn"
 
 #, python-format
 msgid "cannot delete applied patch %s"
-msgstr ""
+msgstr "kan inte radera applicerad patch %s"
 
 #, python-format
 msgid "patch %s not in series file"
-msgstr ""
+msgstr "patchen %s finns inte i series-filen"
 
 msgid "no patches applied"
-msgstr ""
+msgstr "inga patcher applicerade"
 
 msgid "working directory revision is not qtip"
-msgstr ""
+msgstr "arbetskatalogen är inte qtip"
 
 #, python-format
 msgid "uncommitted changes in subrepository %s"
 msgstr "oarkiverade ändringar i underarkivet %s"
 
-msgid "local changes found, refresh first"
-msgstr ""
-
 msgid "local changes found"
-msgstr ""
+msgstr "lokala ändringar hittades"
 
 #, python-format
 msgid "\"%s\" cannot be used as the name of a patch"
-msgstr ""
+msgstr "\"%s\" kan inte användas som patchnamn"
 
 #, python-format
 msgid "patch name cannot begin with \"%s\""
-msgstr ""
+msgstr "patchnamn kan inte börja med \"%s\""
 
 #, python-format
 msgid "\"%s\" cannot be used in the name of a patch"
-msgstr ""
+msgstr "\"%s\" kan inte användas i patchnamn"
 
 #, python-format
 msgid "\"%s\" already exists as a directory"
@@ -3944,6 +4526,9 @@
 msgid "patch \"%s\" already exists"
 msgstr "patchen \"%s\" existerar redan"
 
+msgid "cannot use both --force and --keep-changes"
+msgstr "kan inte ange både --force och --keep-changes"
+
 msgid "cannot manage merge changesets"
 msgstr "kan inte hantera sammanfogningar"
 
@@ -3953,21 +4538,21 @@
 
 #, python-format
 msgid "error unlinking %s\n"
-msgstr ""
+msgstr "fel vid radering av %s\n"
 
 #, python-format
 msgid "patch name \"%s\" is ambiguous:\n"
-msgstr ""
+msgstr "patchnamnet \"%s\" är tvetydligt:\n"
 
 #, python-format
 msgid "patch %s not in series"
-msgstr ""
+msgstr "patchen %s finns inte i serien"
 
 msgid "(working directory not at a head)\n"
-msgstr ""
+msgstr "(arbetskatalogen är inte på ett huvud)\n"
 
 msgid "no patches in series\n"
-msgstr ""
+msgstr "inga patchar i serien\n"
 
 #, python-format
 msgid "qpush: %s is already at the top\n"
@@ -3975,24 +4560,27 @@
 
 #, python-format
 msgid "cannot push to a previous patch: %s"
-msgstr ""
+msgstr "kan inte pusha till en tidigare patch: %s"
 
 #, python-format
 msgid "guarded by %s"
 msgstr "skyddad av %s"
 
 msgid "no matching guards"
-msgstr ""
+msgstr "inga matchande skydd"
 
 #, python-format
 msgid "cannot push '%s' - %s\n"
-msgstr ""
+msgstr "kan inte pusha '%s' - %s\n"
 
 msgid "all patches are currently applied\n"
-msgstr ""
+msgstr "alla patchar är applicerade\n"
 
 msgid "patch series already fully applied\n"
-msgstr ""
+msgstr "patchserien är redan fullständigt applicerad\n"
+
+msgid "cannot use --exact and --keep-changes together"
+msgstr "kan inte använda --exact och --keep-changes tillsammans"
 
 msgid "cannot use --exact and --move together"
 msgstr "kan inte använda --exact och --move tillsammans"
@@ -4008,68 +4596,80 @@
 msgstr "ange patchen som ska flyttas"
 
 msgid "cleaning up working directory..."
-msgstr ""
+msgstr "rensar upp arbetskatalogen..."
 
 #, python-format
 msgid "errors during apply, please fix and refresh %s\n"
-msgstr ""
+msgstr "fel vid applicering, fixa och uppdatera %s\n"
 
 #, python-format
 msgid "now at: %s\n"
-msgstr ""
+msgstr "är nu på: %s\n"
 
 #, python-format
 msgid "patch %s is not applied"
-msgstr ""
+msgstr "patchen %s är inte applicerad"
 
 msgid "no patches applied\n"
-msgstr ""
+msgstr "inga patchar applicerade\n"
 
 #, python-format
 msgid "qpop: %s is already at the top\n"
-msgstr ""
+msgstr "qpop: %s är redan på toppen\n"
 
 msgid "qpop: forcing dirstate update\n"
-msgstr ""
+msgstr "qpop: tvingar en uppdatering av dirstate\n"
 
 #, python-format
 msgid "trying to pop unknown node %s"
-msgstr ""
+msgstr "försöker att poppa okänd nod %s"
 
 msgid "popping would remove a revision not managed by this patch queue"
 msgstr ""
+"poppning skulle ta bort en revision som inte hanteras av denna patchkö"
+
+msgid "popping would remove an immutable revision"
+msgstr "poppning skulle ta bort en oföränderlig revision"
+
+msgid "see \"hg help phases\" for details"
+msgstr "se \"hg help phases\" för detaljer"
 
 msgid "deletions found between repo revs"
-msgstr ""
+msgstr "raderingar hittades mellan arkivrevisioner"
 
 #, python-format
 msgid "popping %s\n"
-msgstr ""
+msgstr "poppar %s\n"
 
 msgid "patch queue now empty\n"
-msgstr ""
+msgstr "patchkön är nu tom\n"
 
 msgid "cannot refresh a revision with children"
-msgstr ""
+msgstr "kan inte uppdatera en revision med barn"
+
+msgid "cannot refresh immutable revision"
+msgstr "kan inte uppdatera oföränderlig revision"
 
 msgid ""
 "refresh interrupted while patch was popped! (revert --all, qpush to "
 "recover)\n"
 msgstr ""
+"uppdatering avbröts medans patch var poppad! (revert --all, qpush för "
+"att återställa)\n"
 
 msgid "patch queue directory already exists"
-msgstr ""
+msgstr "katalog för patchkö finns redan"
 
 #, python-format
 msgid "patch %s is not in series file"
-msgstr ""
-
-msgid "No saved patch data found\n"
-msgstr ""
+msgstr "patchen %s finns inte i series-filen"
+
+msgid "no saved patch data found\n"
+msgstr "ingen sparad patchdata hittades\n"
 
 #, python-format
 msgid "restoring status: %s\n"
-msgstr ""
+msgstr "återställer status: %s\n"
 
 msgid "save entry has children, leaving it alone\n"
 msgstr ""
@@ -4085,14 +4685,14 @@
 msgid "updating queue directory\n"
 msgstr "uppdaterar kökatalog\n"
 
-msgid "Unable to load queue repository\n"
-msgstr ""
+msgid "unable to load queue repository\n"
+msgstr "kan inte öppna köarkiv\n"
 
 msgid "save: no patches applied, exiting\n"
 msgstr ""
 
 msgid "status is already saved\n"
-msgstr ""
+msgstr "status är redan sparad\n"
 
 msgid "hg patches saved state"
 msgstr ""
@@ -4107,6 +4707,9 @@
 msgid "option \"-r\" not valid when importing files"
 msgstr ""
 
+msgid "no files or revisions specified"
+msgstr "inga filer eller revisioner angivna"
+
 msgid "option \"-n\" not valid when importing multiple patches"
 msgstr ""
 
@@ -4130,9 +4733,6 @@
 msgid "revision %d is not mutable"
 msgstr ""
 
-msgid "see \"hg help phases\" for details"
-msgstr ""
-
 #, python-format
 msgid "cannot import merge revision %d"
 msgstr ""
@@ -4187,8 +4787,8 @@
 "    use the :hg:`qfinish` command."
 msgstr ""
 
-msgid "show only the last patch"
-msgstr "visa bara den sista patchen"
+msgid "show only the preceding applied patch"
+msgstr "visa bara den föregående applicerade patchen"
 
 msgid "hg qapplied [-1] [-s] [PATCH]"
 msgstr "hg qapplied [-1] [-s] [PATCH]"
@@ -4235,11 +4835,11 @@
 msgid "qpush after importing"
 msgstr ""
 
-msgid "hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... FILE..."
-msgstr "hg qimport [-e] [-n NAMN] [-f] [-g] [-P] [-r REV]... FIL..."
-
-msgid "import a patch"
-msgstr "importera en patch"
+msgid "hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... [FILE]..."
+msgstr "hg qimport [-e] [-n NAMN] [-f] [-g] [-P] [-r REV]... [FIL]..."
+
+msgid "import a patch or existing changeset"
+msgstr "importera en patch eller existerande ändring"
 
 msgid ""
 "    The patch is inserted into the series after the last applied\n"
@@ -4328,10 +4928,10 @@
 msgstr ""
 
 msgid "hg qclone [OPTION]... SOURCE [DEST]"
-msgstr ""
+msgstr "hg qclone [FLAGGA]... KÄLLA [DEST]"
 
 msgid "clone main and patch repository at same time"
-msgstr ""
+msgstr "klona huvud- och patcharkivet på samma gång"
 
 msgid ""
 "    If source is local, destination will have no patches applied. If\n"
@@ -4374,7 +4974,7 @@
 msgstr ""
 
 msgid "hg qcommit [OPTION]... [FILE]..."
-msgstr ""
+msgstr "hg qcommit [FLAGGA]... [FIL]..."
 
 msgid "commit changes in the queue repository (DEPRECATED)"
 msgstr "arkivera ändringar i köarkivet (FÖRÅLDRAD)"
@@ -4384,55 +4984,52 @@
 "    Detta är ett föråldrat kommando; använd :hg:`commit --mq` istället."
 
 msgid "print patches not in series"
-msgstr ""
+msgstr "visa patchas som inte är i serien"
 
 msgid "hg qseries [-ms]"
-msgstr ""
+msgstr "hg qseries [-ms]"
 
 msgid "print the entire series file"
-msgstr ""
+msgstr "visa hela seriefilen"
 
 msgid "hg qtop [-s]"
 msgstr "hg qtop [-s]"
 
 msgid "print the name of the current patch"
-msgstr ""
+msgstr "visa namnet på den nuvarande patchen"
 
 msgid "hg qnext [-s]"
 msgstr "hg qnext [-s]"
 
-msgid "print the name of the next patch"
-msgstr ""
+msgid "print the name of the next pushable patch"
+msgstr "visa namnet på den nästkommande patchen"
 
 msgid "hg qprev [-s]"
 msgstr "hg qprev [-s]"
 
-msgid "print the name of the previous patch"
-msgstr ""
+msgid "print the name of the preceding applied patch"
+msgstr "skriv ut namnet på föregående applicerade patch"
 
 msgid "import uncommitted changes (DEPRECATED)"
 msgstr "importera icke arkiverade ändringar (FÖRLEGAD)"
 
 msgid "add \"From: <current user>\" to patch"
-msgstr ""
-
-msgid "USER"
-msgstr ""
+msgstr "lägg till \"From: <denna användare>\" i patch"
 
 msgid "add \"From: <USER>\" to patch"
-msgstr ""
+msgstr "lägg till \"From: <ANVÄNDARE>\" i patch"
 
 msgid "add \"Date: <current date>\" to patch"
-msgstr ""
+msgstr "lägg till \"Date: <nuvarande datum>\" i patch"
 
 msgid "add \"Date: <DATE>\" to patch"
-msgstr ""
+msgstr "lägg till \"Date: <DATUM>\" i patch"
 
 msgid "hg qnew [-e] [-m TEXT] [-l FILE] PATCH [FILE]..."
 msgstr "hg qnew [-e] [-m TEXT] [-l FIL] PATCH [FIL]..."
 
 msgid "create a new patch"
-msgstr ""
+msgstr "skapa en ny patch"
 
 msgid ""
 "    qnew creates a new patch on top of the currently-applied patch (if\n"
@@ -4442,18 +5039,30 @@
 "    only changes to matching files to the new patch, leaving the rest\n"
 "    as uncommitted modifications."
 msgstr ""
+"    qnew skapar en ny patch ovanpå redan applicerade patchar (om några).\n"
+"    Patchen kommer att initialiseras med oarkiverade ändringar i\n"
+"    arbetskatalogen. Du kan också använda -I/--include, -X/--exclude,\n"
+"    och/eller en uppsättning filer efter patchnamnet för att bara lägga\n"
+"    till ändringar i dessa filer i patchen, och lämna resten som\n"
+"    oarkiverade ändringar."
 
 msgid ""
 "    -u/--user and -d/--date can be used to set the (given) user and\n"
 "    date, respectively. -U/--currentuser and -D/--currentdate set user\n"
 "    to current user and date to current date."
 msgstr ""
+"    -u/--user och -d/--date kan användas för att sätta (den angivna)\n"
+"    användaren respektive datumet. -U/--currentuser och -D/--currentdate\n"
+"    sätter användare till denna användaren och datumed till nuvarande datum."
 
 msgid ""
 "    -e/--edit, -m/--message or -l/--logfile set the patch header as\n"
 "    well as the commit message. If none is specified, the header is\n"
 "    empty and the commit message is '[mq]: PATCH'."
 msgstr ""
+"    -e/--edit, -m/--message or -l/--logfile sätter både patchhuvudet och\n"
+"    arkiveringsmeddelandet. Om inget är angivet, så är huvudet tomt och\n"
+"    arkiveringsmeddelandet är '[mq]: PATCH'."
 
 msgid ""
 "    Use the -g/--git option to keep the patch in the git extended diff\n"
@@ -4461,6 +5070,10 @@
 "    is important for preserving permission changes and copy/rename\n"
 "    information."
 msgstr ""
+"    Använd flaggan -g/--git gör att lagra patchen i gits utökade\n"
+"    diff-format. Läs hjälpämnet om diffar för mer inormation om varför\n"
+"    detta är viktigt för att lagra rättighetsändringar och information om\n"
+"    kopior/namnbyten."
 
 msgid ""
 "    Returns 0 on successful creation of a new patch.\n"
@@ -4485,7 +5098,7 @@
 msgstr ""
 
 msgid "hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FILE] [-s] [FILE]..."
-msgstr ""
+msgstr "hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FIL] [-s] [FIL]..."
 
 msgid "update the current patch"
 msgstr "uppdatera den nuvarande patchen"
@@ -4569,8 +5182,8 @@
 msgstr ""
 
 #, python-format
-msgid "Skipping already folded patch %s\n"
-msgstr "Hoppar över redan hopvikta patchen %s\n"
+msgid "skipping already folded patch %s\n"
+msgstr "hoppar över redan hopvikta patchen %s\n"
 
 #, python-format
 msgid "qfold cannot fold already applied patch %s"
@@ -4580,9 +5193,15 @@
 msgid "error folding patch %s"
 msgstr ""
 
+msgid "tolerate non-conflicting local changes"
+msgstr ""
+
 msgid "overwrite any local changes"
 msgstr ""
 
+msgid "do not save backup copies of files"
+msgstr "spara inte backup-kopior av filer"
+
 msgid "hg qgoto [OPTION]... PATCH"
 msgstr ""
 
@@ -4624,7 +5243,7 @@
 msgstr ""
 
 msgid "      hg qguard other.patch -- +2.6.17 -stable"
-msgstr ""
+msgstr "      hg qguard other.patch -- +2.6.17 -stable"
 
 msgid "cannot mix -l/--list with options or arguments"
 msgstr ""
@@ -4634,7 +5253,7 @@
 
 #, python-format
 msgid "no patch named %s"
-msgstr ""
+msgstr "ingen patch med namnet %s"
 
 msgid "hg qheader [PATCH]"
 msgstr "hg qheader [PATCH]"
@@ -4652,7 +5271,7 @@
 msgstr ""
 
 msgid "apply all patches"
-msgstr ""
+msgstr "applicera alla patchar"
 
 msgid "merge from another queue (DEPRECATED)"
 msgstr ""
@@ -4670,8 +5289,10 @@
 msgstr ""
 
 msgid ""
-"    When -f/--force is applied, all local changes in patched files\n"
-"    will be lost."
+"    By default, abort if the working directory contains uncommitted\n"
+"    changes. With --keep-changes, abort only if the uncommitted files\n"
+"    overlap with patched files. With -f/--force, backup and patch over\n"
+"    uncommitted changes."
 msgstr ""
 
 msgid "no saved queues found, please use -n\n"
@@ -4679,13 +5300,13 @@
 
 #, python-format
 msgid "merging with queue at: %s\n"
-msgstr ""
+msgstr "sammanfogar med kö vid: %s\n"
 
 msgid "pop all patches"
-msgstr ""
+msgstr "poppa alla patchar"
 
 msgid "queue name to pop (DEPRECATED)"
-msgstr ""
+msgstr "könamn att poppa (FÖRLEGAD)"
 
 msgid "forget any local changes to patched files"
 msgstr ""
@@ -4697,9 +5318,16 @@
 msgstr ""
 
 msgid ""
-"    By default, pops off the top of the patch stack. If given a patch\n"
-"    name, keeps popping off patches until the named patch is at the\n"
-"    top of the stack."
+"    Without argument, pops off the top of the patch stack. If given a\n"
+"    patch name, keeps popping off patches until the named patch is at\n"
+"    the top of the stack."
+msgstr ""
+
+msgid ""
+"    By default, abort if the working directory contains uncommitted\n"
+"    changes. With --keep-changes, abort only if the uncommitted files\n"
+"    overlap with patched files. With -f/--force, backup and discard\n"
+"    changes made to such files."
 msgstr ""
 
 #, python-format
@@ -4784,11 +5412,17 @@
 msgid "no backups (DEPRECATED)"
 msgstr "inga säkerhetskopior (FÖRÅLDRAD)"
 
+msgid "ignored  (DEPRECATED)"
+msgstr "ignorerad  (FÖRÅLDRAD)"
+
 msgid "do not modify working copy during strip"
 msgstr "modifiera inte arbetskopian vid strippning"
 
-msgid "hg strip [-k] [-f] [-n] REV..."
-msgstr "hg strip [-k] [-f] [-n] REV..."
+msgid "remove revs only reachable from given bookmark"
+msgstr "radera revisioner som bara nås från givet bokmärke"
+
+msgid "hg strip [-k] [-f] [-n] [-B bookmark] [-r] REV..."
+msgstr "hg strip [-k] [-f] [-n] [-B bokmärke] [-r] REV..."
 
 msgid "strip changesets and all their descendants from the repository"
 msgstr ""
@@ -4821,6 +5455,20 @@
 "    operation completes."
 msgstr ""
 
+msgid ""
+"    Strip is not a history-rewriting operation and can be used on\n"
+"    changesets in the public phase. But if the stripped changesets have\n"
+"    been pushed to a remote repository you will likely pull them again."
+msgstr ""
+
+#, python-format
+msgid "bookmark '%s' not found"
+msgstr "bokmärket '%s' hittades inte"
+
+#, python-format
+msgid "bookmark '%s' deleted\n"
+msgstr "bokmärket '%s' raderad\n"
+
 msgid "empty revision set"
 msgstr "tomt revisionsset"
 
@@ -5034,15 +5682,12 @@
 msgid "cannot commit over an applied mq patch"
 msgstr ""
 
-msgid "source has mq patches applied"
-msgstr ""
-
 #, python-format
 msgid "mq status file refers to unknown node %s\n"
 msgstr ""
 
 #, python-format
-msgid "Tag %s overrides mq patch of the same name\n"
+msgid "tag %s overrides mq patch of the same name\n"
 msgstr ""
 
 msgid "cannot import over an applied patch"
@@ -5085,15 +5730,15 @@
 msgstr ""
 
 msgid ""
-"This extension let you run hooks sending email notifications when\n"
-"changesets are being pushed, from the sending or receiving side."
+"This extension implements hooks to send email notifications when\n"
+"changesets are sent from or received by the local repository."
 msgstr ""
 
 msgid ""
 "First, enable the extension as explained in :hg:`help extensions`, and\n"
-"register the hook you want to run. ``incoming`` and ``outgoing`` hooks\n"
-"are run by the changesets receiver while the ``outgoing`` one is for\n"
-"the sender::"
+"register the hook you want to run. ``incoming`` and ``changegroup`` hooks\n"
+"are run when changesets are received, while ``outgoing`` hooks are for\n"
+"changesets sent to another repository::"
 msgstr ""
 
 msgid ""
@@ -5110,15 +5755,15 @@
 msgstr ""
 
 msgid ""
-"Now the hooks are running, subscribers must be assigned to\n"
-"repositories. Use the ``[usersubs]`` section to map repositories to a\n"
-"given email or the ``[reposubs]`` section to map emails to a single\n"
-"repository::"
+"This registers the hooks. To enable notification, subscribers must\n"
+"be assigned to repositories. The ``[usersubs]`` section maps multiple\n"
+"repositories to a given recipient. The ``[reposubs]`` section maps\n"
+"multiple recipients to a single repository::"
 msgstr ""
 
 msgid ""
 "  [usersubs]\n"
-"  # key is subscriber email, value is a comma-separated list of glob\n"
+"  # key is subscriber email, value is a comma-separated list of repo glob\n"
 "  # patterns\n"
 "  user@host = pattern"
 msgstr ""
@@ -5132,8 +5777,13 @@
 
 msgid ""
 "Glob patterns are matched against absolute path to repository\n"
-"root. The subscriptions can be defined in their own file and\n"
-"referenced with::"
+"root."
+msgstr ""
+
+msgid ""
+"In order to place them under direct user management, ``[usersubs]`` and\n"
+"``[reposubs]`` sections may be placed in a separate ``hgrc`` file and\n"
+"incorporated by reference::"
 msgstr ""
 
 msgid ""
@@ -5142,14 +5792,8 @@
 msgstr ""
 
 msgid ""
-"Alternatively, they can be added to Mercurial configuration files by\n"
-"setting the previous entry to an empty value."
-msgstr ""
-
-msgid ""
-"At this point, notifications should be generated but will not be sent until "
-"you\n"
-"set the ``notify.test`` entry to ``False``."
+"Notifications will not be sent until the ``notify.test`` value is set\n"
+"to ``False``; see below."
 msgstr ""
 
 msgid ""
@@ -5165,20 +5809,26 @@
 
 msgid ""
 "notify.sources\n"
-"  Space separated list of change sources. Notifications are sent only\n"
-"  if it includes the incoming or outgoing changes source. Incoming\n"
-"  sources can be ``serve`` for changes coming from http or ssh,\n"
-"  ``pull`` for pulled changes, ``unbundle`` for changes added by\n"
-"  :hg:`unbundle` or ``push`` for changes being pushed\n"
-"  locally. Outgoing sources are the same except for ``unbundle`` which\n"
-"  is replaced by ``bundle``. Default: serve."
-msgstr ""
+"  Space-separated list of change sources. Notifications are activated only\n"
+"  when a changeset's source is in this list. Sources may be:"
+msgstr ""
+
+msgid ""
+"  :``serve``: changesets received via http or ssh\n"
+"  :``pull``: changesets received via ``hg pull``\n"
+"  :``unbundle``: changesets received via ``hg unbundle``\n"
+"  :``push``: changesets sent or received via ``hg push``\n"
+"  :``bundle``: changesets sent via ``hg unbundle``"
+msgstr ""
+
+msgid "  Default: serve."
+msgstr "  Standard: serve"
 
 msgid ""
 "notify.strip\n"
 "  Number of leading slashes to strip from url paths. By default, "
 "notifications\n"
-"  references repositories with their absolute path. ``notify.strip`` let "
+"  reference repositories with their absolute path. ``notify.strip`` lets "
 "you\n"
 "  turn them into relative paths. For example, ``notify.strip=3`` will "
 "change\n"
@@ -5187,8 +5837,7 @@
 
 msgid ""
 "notify.domain\n"
-"  If subscribers emails or the from email have no domain set, complete them\n"
-"  with this value."
+"  Default email domain for sender or recipients with no explicit domain."
 msgstr ""
 
 msgid ""
@@ -5203,29 +5852,31 @@
 
 msgid ""
 "notify.incoming\n"
-"  Template to use when run as incoming hook, override ``notify.template``."
+"  Template to use when run as an incoming hook, overriding ``notify."
+"template``."
 msgstr ""
 
 msgid ""
 "notify.outgoing\n"
-"  Template to use when run as outgoing hook, override ``notify.template``."
+"  Template to use when run as an outgoing hook, overriding ``notify."
+"template``."
 msgstr ""
 
 msgid ""
 "notify.changegroup\n"
-"  Template to use when running as changegroup hook, override\n"
+"  Template to use when running as a changegroup hook, overriding\n"
 "  ``notify.template``."
 msgstr ""
 
 msgid ""
 "notify.maxdiff\n"
 "  Maximum number of diff lines to include in notification email. Set to 0\n"
-"  to disable the diff, -1 to include all of it. Default: 300."
+"  to disable the diff, or -1 to include all of it. Default: 300."
 msgstr ""
 
 msgid ""
 "notify.maxsubject\n"
-"  Maximum number of characters in emails subject line. Default: 67."
+"  Maximum number of characters in email's subject line. Default: 67."
 msgstr ""
 
 msgid ""
@@ -5245,26 +5896,25 @@
 
 msgid ""
 "notify.fromauthor\n"
-"  If set, use the first committer of the changegroup for the \"From\" field "
-"of\n"
-"  the notification mail. If not set, take the user from the pushing repo.\n"
-"  Default: False."
-msgstr ""
-
-msgid ""
-"If set, the following entries will also be used to customize the "
+"  If set, use the committer of the first changeset in a changegroup for\n"
+"  the \"From\" field of the notification mail. If not set, take the user\n"
+"  from the pushing repo.  Default: False."
+msgstr ""
+
+msgid ""
+"If set, the following entries will also be used to customize the\n"
 "notifications:"
 msgstr ""
 
 msgid ""
 "email.from\n"
-"  Email ``From`` address to use if none can be found in generated email "
-"content."
+"  Email ``From`` address to use if none can be found in the generated\n"
+"  email content."
 msgstr ""
 
 msgid ""
 "web.baseurl\n"
-"  Root repository browsing URL to combine with repository paths when making\n"
+"  Root repository URL to combine with repository paths when making\n"
 "  references. See also ``notify.strip``."
 msgstr ""
 
@@ -5311,20 +5961,6 @@
 msgstr ""
 
 msgid ""
-"If you notice \"BROKEN PIPE\" error messages, you can disable them by\n"
-"setting::"
-msgstr ""
-"Om du får felmeddelanden om \"BROKEN PIPE\", så kan du deaktivera dem\n"
-"genom att sätta::"
-
-msgid ""
-"  [pager]\n"
-"  quiet = True"
-msgstr ""
-"  [pager]\n"
-"  quiet = True"
-
-msgid ""
 "You can disable the pager for certain commands by adding them to the\n"
 "pager.ignore list::"
 msgstr ""
@@ -5453,9 +6089,12 @@
 msgstr ""
 "Du kan också endera konfigurera alternativet method i email-sektionen att\n"
 "vara en sendmail-kompatibel sändare eller fylla i sektionen [smtp] så att\n"
-"patchbomb-utäkningen automatiskt kan skicka patchbomber från kommandoraden.\n"
+"patchbomb-utökningen automatiskt kan skicka patchbomber från kommandoraden.\n"
 "Se sektionerna [email] och [smtp] i hgrc(5) för detaljer.\n"
 
+msgid "send patches as inline message text (default)"
+msgstr ""
+
 msgid "send patches as attachments"
 msgstr ""
 
@@ -5574,7 +6213,9 @@
 "    By default the patch is included as text in the email body for\n"
 "    easy reviewing. Using the -a/--attach option will instead create\n"
 "    an attachment for the patch. With -i/--inline an inline attachment\n"
-"    will be created."
+"    will be created. You can include a patch both as text in the email\n"
+"    body and as a regular or an inline attachment by combining the\n"
+"    -a/--attach or -i/--inline with the --body option."
 msgstr ""
 
 msgid ""
@@ -5650,10 +6291,6 @@
 "    "
 msgstr ""
 
-#, python-format
-msgid "comparing with %s\n"
-msgstr "jämför med %s\n"
-
 msgid "no changes found\n"
 msgstr "inga ändringar hittades\n"
 
@@ -5675,7 +6312,7 @@
 msgstr ""
 
 #, python-format
-msgid "This patch series consists of %d patches."
+msgid "this patch series consists of %d patches."
 msgstr ""
 
 msgid "no recipient addresses provided"
@@ -5698,11 +6335,11 @@
 msgid "patchbomb canceled"
 msgstr ""
 
-msgid "Displaying "
-msgstr "Visar "
-
-msgid "Sending "
-msgstr "Sänder "
+msgid "displaying "
+msgstr "visar "
+
+msgid "sending "
+msgstr "sänder "
 
 msgid "sending"
 msgstr "sänder"
@@ -5847,12 +6484,12 @@
 msgstr ""
 
 #, python-format
-msgid "Removing file %s\n"
-msgstr ""
-
-#, python-format
-msgid "Removing directory %s\n"
-msgstr ""
+msgid "removing file %s\n"
+msgstr "tar bort file %s\n"
+
+#, python-format
+msgid "removing directory %s\n"
+msgstr "tar bort katalogen %s\n"
 
 msgid "command to move sets of revisions to a different ancestor"
 msgstr ""
@@ -5899,8 +6536,8 @@
 msgid "keep original branch names"
 msgstr ""
 
-msgid "force detaching of source from its original branch"
-msgstr ""
+msgid "(DEPRECATED)"
+msgstr "(FÖRLEGAD)"
 
 msgid "specify merge tool"
 msgstr "ange sammanfogningsverktyg"
@@ -5990,9 +6627,6 @@
 msgid "cannot use collapse with continue or abort"
 msgstr ""
 
-msgid "cannot use detach with continue or abort"
-msgstr "kan inte använda detach med continue eller abort"
-
 msgid "abort and continue do not allow specifying revisions"
 msgstr ""
 
@@ -6008,12 +6642,6 @@
 msgid "cannot specify both a revision and a source"
 msgstr "kan inte ange både en revision och en källa"
 
-msgid "detach requires a revision to be specified"
-msgstr "detach kräver att en revision anges"
-
-msgid "cannot specify a base with detach"
-msgstr "kan inte ange en bas med detach"
-
 msgid "can't remove original changesets with unrebased descendants"
 msgstr ""
 
@@ -6069,7 +6697,8 @@
 msgid "no rebase in progress"
 msgstr ""
 
-msgid "warning: immutable rebased changeset detected, can't abort\n"
+#, python-format
+msgid "can't abort rebase due to immutable changesets %s"
 msgstr ""
 
 msgid "warning: new changesets detected on target branch, can't abort\n"
@@ -6090,6 +6719,10 @@
 msgid "source is ancestor of destination"
 msgstr ""
 
+#, python-format
+msgid "updating bookmark %s\n"
+msgstr "uppdaterar bokmärket %s\n"
+
 msgid "--tool can only be used with --rebase"
 msgstr ""
 
@@ -6100,7 +6733,7 @@
 msgstr "ange sammanfogningsverktyg för ombasering"
 
 msgid "commands to interactively select changes for commit/qrefresh"
-msgstr ""
+msgstr "interaktivt val av ändringar för commit/qrefresh"
 
 msgid "ignore white space when comparing lines"
 msgstr "ignorera blanktecken när rader jämförs"
@@ -6112,65 +6745,100 @@
 msgstr "ignorera ändringar vars rader är tomma"
 
 msgid "this modifies a binary file (all or nothing)\n"
-msgstr ""
+msgstr "detta modifierar en binär fil (allt eller inget)\n"
 
 msgid "this is a binary file\n"
-msgstr ""
+msgstr "det här är en binär fil\n"
 
 #, python-format
 msgid "%d hunks, %d lines changed\n"
-msgstr ""
-
-msgid "[Ynsfdaq?]"
-msgstr ""
+msgstr "%d stycken, %d rader ändrade\n"
+
+msgid "[Ynesfdaq?]"
+msgstr "[Ynesfdaq?]"
 
 msgid "&Yes, record this change"
-msgstr ""
+msgstr "(&Y) Ja, lagra den här ändringen"
 
 msgid "&No, skip this change"
-msgstr ""
+msgstr "&Nej, hoppa över den här ändringen"
+
+msgid "&Edit the change manually"
+msgstr "(&E) Redigera ändringen manuellt"
 
 msgid "&Skip remaining changes to this file"
-msgstr ""
+msgstr "(&S) Hoppa över kvarvarande ändringar i den här filen"
 
 msgid "Record remaining changes to this &file"
-msgstr ""
+msgstr "Spara kvarvarande ändringar till denna &fil"
 
 msgid "&Done, skip remaining changes and files"
-msgstr ""
+msgstr "&(D) Klar, hoppa över kvarvarande ändringar och filer"
 
 msgid "Record &all changes to all remaining files"
-msgstr ""
+msgstr "Spara &alla ändringar till alla kvarvarande filer"
 
 msgid "&Quit, recording no changes"
-msgstr ""
+msgstr "(&Q) Avsluta, spara inga ändringar"
 
 msgid "&?"
-msgstr ""
+msgstr "&?"
+
+msgid "cannot edit patch for whole file"
+msgstr "kan inte redigera patch för hel fil"
+
+msgid "cannot edit patch for binary file"
+msgstr "kan inte redigera patch för binär fil"
+
+msgid ""
+"\n"
+"To remove '-' lines, make them ' ' lines (context).\n"
+"To remove '+' lines, delete them.\n"
+"Lines starting with # will be removed from the patch."
+msgstr ""
+"\n"
+"För att radera rader med '-', ersätt med blanka (' ') rader (kontext).\n"
+"För att radera rader med '+', radera dom.\n"
+"Rader som börjar med # kommer att raderas från patchen."
+
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be\n"
+"added to the record list. If it does not apply cleanly, a rejects\n"
+"file will be generated: you can use that when you try again. If\n"
+"all lines of the hunk are removed, then the edit is aborted and\n"
+"the hunk is left unchanged.\n"
+msgstr ""
+"Om patchen appliceras utan problem, kommer det redigerade stycket att\n"
+"sparas. Om problem uppstår, kommer en .rej-fil att genereras: du kan\n"
+"använde den när du försöker igen. Om alla rader i stycket raderas, så\n"
+"avbryts redigeringen och stycket lämnas oförändrat.\n"
+
+msgid "edit failed"
+msgstr "redigering misslyckades"
 
 msgid "user quit"
-msgstr ""
+msgstr "användaren avslutade"
 
 #, python-format
 msgid "examine changes to %s?"
-msgstr ""
+msgstr "granska ändringar i %s?"
 
 msgid " and "
-msgstr ""
+msgstr " och "
 
 #, python-format
 msgid "record this change to %r?"
-msgstr ""
+msgstr "spara den här ändringen till %r?"
 
 #, python-format
 msgid "record change %d/%d to %r?"
-msgstr ""
+msgstr "spara ändring %d/%d till %r?"
 
 msgid "hg record [OPTION]... [FILE]..."
 msgstr "hg record [FLAGGA]... [FIL]..."
 
 msgid "interactively select changes to commit"
-msgstr ""
+msgstr "välj interaktivt ändringar för arkivering"
 
 msgid ""
 "    If a list of files is omitted, all changes reported by :hg:`status`\n"
@@ -6185,31 +6853,43 @@
 "    change to use. For each query, the following responses are\n"
 "    possible::"
 msgstr ""
+"    Du kommer att frågas om du vill lagra ändrade filer, och i filer med\n"
+"    flera ändringar kommer du att få frågan för varje ändring. Vid varje\n"
+"    fråga är följande svar möjliga::"
 
 msgid ""
 "      y - record this change\n"
-"      n - skip this change"
-msgstr ""
+"      n - skip this change\n"
+"      e - edit this change manually"
+msgstr ""
+"      y - lagra den här ändringen\n"
+"      n - hoppa över den här ändringen\n"
+"      e - redigera ändringen manuellt"
 
 msgid ""
 "      s - skip remaining changes to this file\n"
 "      f - record remaining changes to this file"
 msgstr ""
+"      s - hoppa över kvarvarande ändringar i den här filen\n"
+"      f - spara kvarvarande ändringar till denna fil"
 
 msgid ""
 "      d - done, skip remaining changes and files\n"
 "      a - record all changes to all remaining files\n"
 "      q - quit, recording no changes"
 msgstr ""
+"      d - klar, hoppa över kvarvarande ändringar och filer\n"
+"      a - spara alla ändringar till alla kvarvarande filer\n"
+"      q - avsluta, spara inga ändringar"
 
 msgid "      ? - display help"
-msgstr ""
+msgstr "      ? - visa hjälp"
 
 msgid "    This command is not available when committing a merge."
-msgstr ""
+msgstr "    Det här kommandot är inte tillgängligt vid sammanfogning."
 
 msgid "interactively record a new patch"
-msgstr ""
+msgstr "lägra en ny ändring interaktivt"
 
 msgid ""
 "    See :hg:`help qnew` & :hg:`help record` for more information and\n"
@@ -6221,24 +6901,24 @@
 "    "
 
 msgid "'mq' extension not loaded"
-msgstr ""
+msgstr "utökningen 'mq' är inte laddad"
 
 #, python-format
 msgid "running non-interactively, use %s instead"
-msgstr ""
+msgstr "kör icke-interaktivt, använd %s istället"
 
 msgid "cannot partially commit a merge (use \"hg commit\" instead)"
 msgstr ""
 "kan inte delvis arkivera en sammanfogning (använd \"hg commit\" istället)"
 
 msgid "no changes to record\n"
-msgstr ""
+msgstr "inga ändringar att lagra\n"
 
 msgid "hg qrecord [OPTION]... PATCH [FILE]..."
-msgstr ""
+msgstr "hg qrecord [FLAGGA]... PATCH [FIL]..."
 
 msgid "interactively select changes to refresh"
-msgstr ""
+msgstr "interaktivt val av ändringar att uppdatera"
 
 msgid "recreates hardlinks between repository clones"
 msgstr ""
@@ -6284,9 +6964,6 @@
 msgid "hardlinks are not supported on this system"
 msgstr "hårda länkar stöds inte av detta system"
 
-msgid "must specify local origin repository"
-msgstr "måste ange lokalt utgångsarkiv"
-
 #, python-format
 msgid "relinking %s to %s\n"
 msgstr "länkar om %s till %s\n"
@@ -6448,6 +7125,10 @@
 msgstr ""
 
 #, python-format
+msgid "%s is not a parent of %s"
+msgstr "%s är inte en förälder till %s"
+
+#, python-format
 msgid "%s merged at %s\n"
 msgstr ""
 
@@ -6465,10 +7146,6 @@
 msgid "can only omit patchfile if merging"
 msgstr ""
 
-#, python-format
-msgid "%s: empty changeset"
-msgstr ""
-
 msgid "fix up the merge and run hg transplant --continue"
 msgstr ""
 
@@ -6515,9 +7192,6 @@
 msgid "pull patches from REPO"
 msgstr ""
 
-msgid "BRANCH"
-msgstr "GREN"
-
 msgid "pull patches from branch BRANCH"
 msgstr ""
 
@@ -6530,6 +7204,9 @@
 msgid "merge at REV"
 msgstr ""
 
+msgid "parent to choose when transplanting merge"
+msgstr "förälder att välja när sammanfogning transplanteras"
+
 msgid "append transplant info to log message"
 msgstr ""
 
@@ -6577,7 +7254,7 @@
 msgstr ""
 
 msgid ""
-"    :hg:`transplant --branch REVISION --all` will transplant the\n"
+"    :hg:`transplant --branch REV --all` will transplant the\n"
 "    selected branch (up to the named revision) onto your current\n"
 "    working directory."
 msgstr ""
@@ -6590,6 +7267,11 @@
 msgstr ""
 
 msgid ""
+"    Merge changesets may be transplanted directly by specifying the\n"
+"    proper parent changeset by calling :hg:`transplant --parent`."
+msgstr ""
+
+msgid ""
 "    If no merges or revisions are provided, :hg:`transplant` will\n"
 "    start an interactive changeset browser."
 msgstr ""
@@ -6753,7 +7435,7 @@
 msgstr ""
 
 #, python-format
-msgid "Attempt to commit or push text file(s) using %s line endings\n"
+msgid "attempt to commit or push text file(s) using %s line endings\n"
 msgstr ""
 
 #, python-format
@@ -6840,13 +7522,13 @@
 msgstr "grenen %s hittades inte"
 
 #, python-format
-msgid "updating bookmark %s\n"
-msgstr "uppdaterar bokmärket %s\n"
-
-#, python-format
 msgid "divergent bookmark %s stored as %s\n"
 msgstr "divergent bokmärke %s lagrat som %s\n"
 
+#, python-format
+msgid "adding remote bookmark %s\n"
+msgstr "lägger till fjärrbokmärket %s\n"
+
 msgid "searching for changed bookmarks\n"
 msgstr "söker efter ändrade bokmärken\n"
 
@@ -6854,7 +7536,7 @@
 msgstr "inga ändrade bokmärken hittades\n"
 
 msgid "unknown parent"
-msgstr ""
+msgstr "okänd förälder"
 
 #, python-format
 msgid "integrity check failed on %s:%d"
@@ -6941,6 +7623,10 @@
 msgstr ""
 
 #, python-format
+msgid "%s: can't copy - same file\n"
+msgstr "%s: kan inte kopiera - samma fil\n"
+
+#, python-format
 msgid "%s: not overwriting - file exists\n"
 msgstr ""
 
@@ -7056,18 +7742,26 @@
 msgstr ""
 
 #, python-format
-msgid "Found revision %s from %s\n"
-msgstr "Hittade revision %s från %s\n"
+msgid "found revision %s from %s\n"
+msgstr "hittade revision %s från %s\n"
 
 msgid "revision matching date not found"
 msgstr ""
 
 #, python-format
+msgid "cannot follow file not in parent revision: \"%s\""
+msgstr "kan inte följa fil som inte finns i förälderrevision: \"%s\""
+
+#, python-format
 msgid "cannot follow nonexistent file: \"%s\""
-msgstr ""
+msgstr "kan inte följa icke-existerande fil: \"%s\""
 
 msgid "can only follow copies/renames for explicit filenames"
-msgstr ""
+msgstr "kan bara följa kopior/namnbyten för explicita filnamn"
+
+#, python-format
+msgid "-G/--graph option is incompatible with --%s"
+msgstr "flaggan -G/--graph är inkompatibel med --%s"
 
 #, python-format
 msgid "adding %s\n"
@@ -7077,6 +7771,22 @@
 msgid "skipping missing subrepository: %s\n"
 msgstr ""
 
+#, python-format
+msgid "amending changeset %s\n"
+msgstr "förändrar ändringen %s\n"
+
+#, python-format
+msgid "copying changeset %s to %s\n"
+msgstr "kopierar ändringen %s till %s\n"
+
+#, python-format
+msgid "stripping intermediate changeset %s\n"
+msgstr "avlägsnar mellanliggande ändring %s\n"
+
+#, python-format
+msgid "stripping amended changeset %s\n"
+msgstr "avlägsnar förändrad ändring %s\n"
+
 msgid "HG: Enter commit message.  Lines beginning with 'HG:' are removed."
 msgstr ""
 
@@ -7116,6 +7826,26 @@
 msgid "empty commit message"
 msgstr "tomt arkiveringsmeddelande"
 
+#, python-format
+msgid "forgetting %s\n"
+msgstr "glömmer %s\n"
+
+#, python-format
+msgid "reverting %s\n"
+msgstr "återställer %s\n"
+
+#, python-format
+msgid "undeleting %s\n"
+msgstr "ångrar radering av %s\n"
+
+#, python-format
+msgid "file not managed: %s\n"
+msgstr "filen hanteras inte: %s\n"
+
+#, python-format
+msgid "no changes needed to %s\n"
+msgstr "inga ändringar behövs för %s\n"
+
 msgid "repository root directory or name of overlay bundle file"
 msgstr "arkivrotkatalog eller namn på påläggsbuntfil"
 
@@ -7216,12 +7946,18 @@
 msgid "display with template"
 msgstr "visa med mall"
 
+msgid "show patch"
+msgstr "visa patch"
+
 msgid "do not show merges"
 msgstr "visa inte sammanfogningar"
 
 msgid "output diffstat-style summary of changes"
 msgstr "visa sammanfattning av ändringar i diffstat-stil"
 
+msgid "show the revision DAG"
+msgstr "visa revisionsdiagram"
+
 msgid "treat all files as text"
 msgstr "behandla alla filer som text"
 
@@ -7322,22 +8058,25 @@
 "     vid nästa arkivering."
 
 msgid ""
-"    Use the -s/--similarity option to detect renamed files. With a\n"
-"    parameter greater than 0, this compares every removed file with\n"
-"    every added file and records those similar enough as renames. This\n"
+"    Use the -s/--similarity option to detect renamed files. This\n"
 "    option takes a percentage between 0 (disabled) and 100 (files must\n"
-"    be identical) as its parameter. Detecting renamed files this way\n"
+"    be identical) as its parameter. With a parameter greater than 0,\n"
+"    this compares every removed file with every added file and records\n"
+"    those similar enough as renames. Detecting renamed files this way\n"
 "    can be expensive. After using this option, :hg:`status -C` can be\n"
-"    used to check which files were identified as moved or renamed."
-msgstr ""
-"    Använd flaggan -s/--similarity för att upptäcka omdöpta filer. Med en\n"
-"    parameter större än 0, kommer varje borttagen fil att jämföras med\n"
-"    varje tillagd fil och lagrar de som är tillräckligt lika som ett\n"
-"    namnbyte. Flaggan tar ett procentvärde mellan 0 (deaktiverad) och 100\n"
-"    (filer måste vara identiska) som parameter. Att upptäcka omdöpta filer\n"
-"    på det här sättet kan ta lång tid. Efter att denna flagga har använts,\n"
-"    kan :hg:`status -C` användas för att kontrollera vilka filer som\n"
-"    identifierades som flyttade eller omdöpta."
+"    used to check which files were identified as moved or renamed. If\n"
+"    not specified, -s/--similarity defaults to 100 and only renames of\n"
+"    identical files are detected."
+msgstr ""
+"    Använd flaggan -s/--similarity för att upptäcka omdöpta filer. Flaggan\n"
+"    tar ett procentvärde mellan 0 (deaktiverad) och 100 (filer måste vara\n"
+"    identiska) som parameter. Med en parameter större än 0, kommer varje\n"
+"    borttagen fil att jämföras med varje tillagd fil och lagrar de som är\n"
+"    tillräckligt lika som ett namnbyte. Att upptäcka omdöpta filer på det\n"
+"    här sättet kan ta lång tid. Efter att denna flagga har använts, kan\n"
+"    :hg:`status -C` användas för att kontrollera vilka filer som\n"
+"    identifierades som flyttade eller omdöpta. Om den flaggan inte anges,\n"
+"    upptäcks bara namnbyten för identiska filer."
 
 msgid "similarity must be a number"
 msgstr "likhet måste vara ett nummer"
@@ -7580,10 +8319,6 @@
 msgid "cannot backout a merge changeset"
 msgstr "kan inte återkalla en sammanfogning"
 
-#, python-format
-msgid "%s is not a parent of %s"
-msgstr "%s är inte en förälder till %s"
-
 msgid "cannot use --parent on non-merge changeset"
 msgstr "kan inte använda --parent på icke-sammanfogande ändring"
 
@@ -7649,16 +8384,20 @@
 
 msgid ""
 "    If you supply a command, it will be used for automatic bisection.\n"
-"    Its exit status will be used to mark revisions as good or bad:\n"
-"    status 0 means good, 125 means to skip the revision, 127\n"
-"    (command not found) will abort the bisection, and any other\n"
-"    non-zero exit status means the revision is bad."
+"    The environment variable HG_NODE will contain the ID of the\n"
+"    changeset being tested. The exit status of the command will be\n"
+"    used to mark revisions as good or bad: status 0 means good, 125\n"
+"    means to skip the revision, 127 (command not found) will abort the\n"
+"    bisection, and any other non-zero exit status means the revision\n"
+"    is bad."
 msgstr ""
 "    Om du tillhandahåller ett kommando, kommer det att användas för\n"
-"    automatisk genomsökning. Dess returkod kommer att användas för att ange\n"
-"    revisioner som bra eller dåliga: kod 0 betyder bra, 125 betyder att\n"
-"    revisionen hoppas över, 127 (kommandot hittades inte) avbryter\n"
-"    genomsökningen, och alla andra värden betyder att revisionen är dålig."
+"    automatisk genomsökning. Miljövariabeln HG_NODE kommer att innehålla\n"
+"    ID för den ändring som testas. Returkoden från kommandot kommer att\n"
+"    användas för att markera en revision som bra eller dålig: 0 betyer\n"
+"    bra, 125 betyder hoppa över revionen, 127 (kommandot hittades inte)\n"
+"    kommer att avbryta genomsökningen, och alla andra värden betyder att\n"
+"    revisionen är dålig."
 
 msgid "      Some examples:"
 msgstr "      Några exempel:"
@@ -7740,6 +8479,15 @@
 msgid "          hg log -r \"bisect(pruned)\""
 msgstr "          hg log -r \"bisect(pruned)\""
 
+msgid ""
+"      - see the changeset currently being bisected (especially useful\n"
+"        if running with -U/--noupdate)::"
+msgstr ""
+"      - se ändringen som genomsöks (mest användbart med -U/--no-update)::"
+
+msgid "          hg log -r \"bisect(current)\""
+msgstr "          hg log -r \"bisect(current)\""
+
 msgid "      - see all changesets that took part in the current bisection::"
 msgstr "      - se alla ändringar som var med i den nuvarande genomsökningen::"
 
@@ -7788,6 +8536,12 @@
 msgid "incompatible arguments"
 msgstr "inkompatibla argument"
 
+msgid "current bisect revision is unknown - start a new bisect to fix"
+msgstr ""
+
+msgid "current bisect revision is a merge"
+msgstr ""
+
 #, python-format
 msgid "failed to execute %s"
 msgstr "misslyckades med att köra %s"
@@ -7797,8 +8551,8 @@
 msgstr "%s dödad"
 
 #, python-format
-msgid "Changeset %d:%s: %s\n"
-msgstr "Ändring %d:%s: %s\n"
+msgid "changeset %d:%s: %s\n"
+msgstr "ändring %d:%s: %s\n"
 
 #, python-format
 msgid "Extending search to changeset %d:%s\n"
@@ -8100,12 +8854,12 @@
 "    Returnerar 0 om kommandot lyckades, 1 om inga ändringar hittades.\n"
 "    "
 
+msgid "unknown bundle type specified with --type"
+msgstr "okänd bunttyp angiven med --type"
+
 msgid "--base is incompatible with specifying a destination"
 msgstr "--base är inkompatibel med specificering av destination"
 
-msgid "unknown bundle type specified with --type"
-msgstr "okänd bunttyp angiven med --type"
-
 msgid "print output to file with formatted name"
 msgstr "skriv utmatning till fil med formatterat namn"
 
@@ -8340,6 +9094,9 @@
 msgid "mark a branch as closed, hiding it from the branch list"
 msgstr "markera en gren som stängd, och göm den från grenlistan"
 
+msgid "amend the parent of the working dir"
+msgstr "förändra arbetskatalogens föräldrer"
+
 msgid "commit the specified files or all outstanding changes"
 msgstr "arkivera de angivna filerna eller alla ändringar"
 
@@ -8378,6 +9135,26 @@
 "    meddelande i ``.hg/last-message.txt``."
 
 msgid ""
+"    The --amend flag can be used to amend the parent of the\n"
+"    working directory with a new commit that contains the changes\n"
+"    in the parent in addition to those currently reported by :hg:`status`,\n"
+"    if there are any. The old commit is stored in a backup bundle in\n"
+"    ``.hg/strip-backup`` (see :hg:`help bundle` and :hg:`help unbundle`\n"
+"    on how to restore it)."
+msgstr ""
+
+msgid ""
+"    Message, user and date are taken from the amended commit unless\n"
+"    specified. When a message isn't specified on the command line,\n"
+"    the editor will open with the message of the amended commit."
+msgstr ""
+
+msgid ""
+"    It is not possible to amend public changesets (see :hg:`help phases`)\n"
+"    or changesets that have children."
+msgstr ""
+
+msgid ""
 "    Returns 0 on success, 1 if nothing changed.\n"
 "    "
 msgstr ""
@@ -8387,13 +9164,28 @@
 msgid "can only close branch heads"
 msgstr "kan bara stänga grenhuvuden"
 
+msgid "cannot amend recursively"
+msgstr "kan inte förändra rekursivt"
+
+msgid "cannot amend public changesets"
+msgstr "kan inte förändra publika ändringar"
+
+msgid "cannot amend merge changesets"
+msgstr "kan inte förändra sammanfogningar"
+
+msgid "cannot amend while merging"
+msgstr "kan inte förändra vid sammanfogning"
+
+msgid "cannot amend changeset with children"
+msgstr "kan inte förändra ändringar med barn"
+
+msgid "nothing changed\n"
+msgstr "inget ändrat\n"
+
 #, python-format
 msgid "nothing changed (%d missing files, see 'hg status')\n"
 msgstr "inget ändrat (%d saknade filer, se 'hg status')\n"
 
-msgid "nothing changed\n"
-msgstr "inget ändrat\n"
-
 msgid "created new head\n"
 msgstr "skapade ett nytt huvud\n"
 
@@ -8691,15 +9483,15 @@
 msgstr "testa Mercurial-installation"
 
 #, python-format
-msgid "Checking encoding (%s)...\n"
-msgstr "Kontrollerar teckenkodning (%s)...\n"
+msgid "checking encoding (%s)...\n"
+msgstr "kontrollerar teckenkodning (%s)...\n"
 
 msgid " (check that your locale is properly set)\n"
 msgstr " (kontrollera att din locale är korrekt inställd)\n"
 
 #, python-format
-msgid "Checking installed modules (%s)...\n"
-msgstr "Kontrollerar installerade moduler (%s)...\n"
+msgid "checking installed modules (%s)...\n"
+msgstr "kontrollerar installerade moduler (%s)...\n"
 
 msgid " One or more extensions could not be found"
 msgstr " En eller fler utökningar kunde inte hittas"
@@ -8708,14 +9500,14 @@
 msgstr " (kontrollera att du kompilerade utökningarna)\n"
 
 #, python-format
-msgid "Checking templates (%s)...\n"
-msgstr "Kontrollerar mallar (%s)...\n"
+msgid "checking templates (%s)...\n"
+msgstr "kontrollerar mallar (%s)...\n"
 
 msgid " (templates seem to have been installed incorrectly)\n"
 msgstr " (mallar verkar vara inkorrekt installerade)\n"
 
-msgid "Checking commit editor...\n"
-msgstr "Kontrollerar arkiveringseditor...\n"
+msgid "checking commit editor...\n"
+msgstr "kontrollerar arkiveringseditor...\n"
 
 msgid " No commit editor set and can't find vi in PATH\n"
 msgstr " Ingen arkiveringseditor satt och kan inte hitta vi i PATH\n"
@@ -8727,14 +9519,14 @@
 msgid " Can't find editor '%s' in PATH\n"
 msgstr " Kan inte hitta editorn '%s' i PATH\n"
 
-msgid "Checking username...\n"
-msgstr "Kontrollerar användarnamn...\n"
+msgid "checking username...\n"
+msgstr "kontrollerar användarnamn...\n"
 
 msgid " (specify a username in your configuration file)\n"
 msgstr " (ange ett användarnamn i din konfigurationsfil)\n"
 
-msgid "No problems detected\n"
-msgstr "Inga problem upptäcktes\n"
+msgid "no problems detected\n"
+msgstr "inga problem upptäcktes\n"
 
 #, python-format
 msgid "%s problems detected, please check your install!\n"
@@ -8747,10 +9539,15 @@
 msgstr ""
 
 msgid ""
-"    Every ID must be a full-length hex node id string. Returns a list of 0s "
-"and 1s\n"
-"    indicating unknown/known.\n"
-"    "
+"    Every ID must be a full-length hex node id string. Returns a list of 0s\n"
+"    and 1s indicating unknown/known.\n"
+"    "
+msgstr ""
+
+msgid "[OBSOLETED [REPLACEMENT] [REPL... ]"
+msgstr ""
+
+msgid "create arbitrary obsolete marker"
 msgstr ""
 
 msgid "REPO NAMESPACE [KEY OLD NEW]"
@@ -8768,6 +9565,25 @@
 "    "
 msgstr ""
 
+msgid "A B"
+msgstr "A B"
+
+#, python-format
+msgid "a: %s\n"
+msgstr "a: %s\n"
+
+#, python-format
+msgid "b: %s\n"
+msgstr "b: %s\n"
+
+#, python-format
+msgid "depth(a): %d depth(b): %d\n"
+msgstr ""
+
+#, python-format
+msgid "delta: %d hdist: %d distance: %d relation: %s\n"
+msgstr ""
+
 msgid "revision to rebuild to"
 msgstr "revision att bygga om till"
 
@@ -8806,6 +9622,12 @@
 msgid "parse and apply a revision specification"
 msgstr ""
 
+msgid ""
+"    Use --verbose to print the parsed tree before and after aliases\n"
+"    expansion.\n"
+"    "
+msgstr ""
+
 msgid "REV1 [REV2]"
 msgstr "REV1 [REV2]"
 
@@ -8933,8 +9755,8 @@
 msgid "revisions to export"
 msgstr "revisioner att exportera"
 
-msgid "[OPTION]... [-o OUTFILESPEC] REV..."
-msgstr "[FLAGGA]... [-o UTFILSPEC] REV..."
+msgid "[OPTION]... [-o OUTFILESPEC] [-r] REV..."
+msgstr "[FLAGGA]... [-o UTFILSPEC] [-r] REV..."
 
 msgid "dump the header and diffs for one or more changesets"
 msgstr "dumpa rubrik och diff för en eller fler ändringar"
@@ -9086,17 +9908,23 @@
 msgid "          hg forget \"set:hgignore()\""
 msgstr "          hg forget \"set:hgignore()\""
 
+msgid "revisions to graft"
+msgstr "revisioner att ympa"
+
 msgid "resume interrupted graft"
 msgstr "återuppta avbruten ympning"
 
+msgid "append graft info to log message"
+msgstr "lägg till ympningsinfo till loggmeddelande"
+
 msgid "record the current date as commit date"
 msgstr "lagra det nuvarande datumet som arkiveringsdatumet"
 
 msgid "record the current user as committer"
 msgstr "lagra den nuvarande användaren som arkiverare"
 
-msgid "[OPTION]... REVISION..."
-msgstr "[FLAGGA]... REVISION..."
+msgid "[OPTION]... [-r] REV..."
+msgstr "[FLAGGA]... [-r] REV..."
 
 msgid "copy changes from other branches onto the current branch"
 msgstr "kopiera ändringar från andra grenar till den nuvarande grenen"
@@ -9114,6 +9942,9 @@
 "    already been grafted, or that are merges will be skipped."
 msgstr ""
 
+msgid "      (grafted from CHANGESETHASH)"
+msgstr ""
+
 msgid ""
 "    If a graft merge results in conflicts, the graft process is\n"
 "    interrupted so that the current merge can be manually resolved.\n"
@@ -9199,16 +10030,16 @@
 msgid "use hg resolve and hg graft --continue"
 msgstr "använd hg resolve och hg graft --continue"
 
+#, python-format
+msgid "graft for revision %s is empty\n"
+msgstr ""
+
 msgid "end fields with NUL"
 msgstr "avsluta fält med NUL"
 
 msgid "print all revisions that match"
 msgstr "visa alla revisioner som matchar"
 
-msgid "follow changeset history, or file history across copies and renames"
-msgstr ""
-"följ ändringshistorik, eller filhistorik över kopieringar och namnbyten"
-
 msgid "ignore case when matching"
 msgstr "ignorera versaler/gemener vid matchning"
 
@@ -9279,8 +10110,8 @@
 msgid "show normal and closed branch heads"
 msgstr "visa normala och stängda grenhuvuden"
 
-msgid "[-ac] [-r STARTREV] [REV]..."
-msgstr "[-ac] [-r STARTREV] [REV]..."
+msgid "[-ct] [-r STARTREV] [REV]..."
+msgstr "[-ct] [-r STARTREV] [REV]..."
 
 msgid "show current repository heads or show branch heads"
 msgstr "visa aktuella arkivhuvuden och visar grenhuvuden"
@@ -9353,6 +10184,9 @@
 msgid "show only help for commands"
 msgstr "visa bara hjälp för kommandon"
 
+msgid "show topics matching keyword"
+msgstr "visa ämnen för nyckelord"
+
 msgid "[-ec] [TOPIC]"
 msgstr "[-ec] [ÄMNE]"
 
@@ -9367,8 +10201,7 @@
 "    Given a topic, extension, or command name, print help for that\n"
 "    topic."
 msgstr ""
-"    Med ett ämne, utökning eller kommandonamn, visas hjälp för det ämnet.\n"
-"    "
+"    Med ett ämne, utökning eller kommandonamn, visas hjälp för det ämnet."
 
 msgid ""
 "    Returns 0 if successful.\n"
@@ -9377,42 +10210,6 @@
 "    Returnerar 0 om kommandot lyckades.\n"
 "    "
 
-msgid "VALUE"
-msgstr "VÄRDE"
-
-msgid "DEPRECATED"
-msgstr "FÖRLEGAD"
-
-msgid ""
-"\n"
-"[+] marked option can be specified multiple times\n"
-msgstr ""
-"\n"
-"flaggor markerade med [+] kan anges flera gånger\n"
-
-msgid "global options:"
-msgstr "globala flaggor:"
-
-msgid "use \"hg help\" for the full list of commands"
-msgstr "använd \"hg help\" för den fulla kommandolistan"
-
-msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
-msgstr ""
-"använd \"hg help\" för en full kommandolista eller \"hg -v\" för detaljer"
-
-#, python-format
-msgid "use \"hg help %s\" to show the full help text"
-msgstr "använd \"hg help %s\" för att visa utförlig hjälp"
-
-#, python-format
-msgid "use \"hg -v help%s\" to show builtin aliases and global options"
-msgstr ""
-"använd \"hg -v help%s\" för att visa inbyggda alias och globala flaggor"
-
-#, python-format
-msgid "use \"hg -v help %s\" to show more info"
-msgstr "använd \"hg -v help %s\" för att visa mer info"
-
 #, python-format
 msgid ""
 "\n"
@@ -9447,6 +10244,9 @@
 msgid "options:"
 msgstr "flaggor:"
 
+msgid "global options:"
+msgstr "globala flaggor:"
+
 #, python-format
 msgid ""
 "\n"
@@ -9482,6 +10282,22 @@
 "\n"
 "ytterligare hjälpämnen:"
 
+msgid "use \"hg help\" for the full list of commands"
+msgstr "använd \"hg help\" för den fulla kommandolistan"
+
+msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
+msgstr ""
+"använd \"hg help\" för en full kommandolista eller \"hg -v\" för detaljer"
+
+#, python-format
+msgid "use \"hg help %s\" to show the full help text"
+msgstr "använd \"hg help %s\" för att visa utförlig hjälp"
+
+#, python-format
+msgid "use \"hg -v help%s\" to show builtin aliases and global options"
+msgstr ""
+"använd \"hg -v help%s\" för att visa inbyggda alias och globala flaggor"
+
 #, python-format
 msgid ""
 "\n"
@@ -9505,6 +10321,12 @@
 msgid "'%s' is provided by the following extension:"
 msgstr "'%s' tillhandahålls av följande utökning:"
 
+msgid "Topics"
+msgstr "Ämnen"
+
+msgid "Extension Commands"
+msgstr "Utökningar"
+
 msgid "Mercurial Distributed SCM\n"
 msgstr "Mercurial Distribuerad SCM\n"
 
@@ -9849,42 +10671,6 @@
 "    Detta undviker problemet med att \"xargs\" behandlar filnamn som\n"
 "    innehåller blanktecken som multipla filnamn"
 
-msgid "only follow the first parent of merge changesets (DEPRECATED)"
-msgstr "följ bara den första föräldern vid sammanfogningar (FÖRLEGAD)"
-
-msgid "show revisions matching date spec"
-msgstr "visa revisioner som matchar datumspecen"
-
-msgid "show copied files"
-msgstr "visa kopierade filer"
-
-msgid "do case-insensitive search for a given text"
-msgstr "gör versalokänslig sökning efter en given text"
-
-msgid "include revisions where files were removed"
-msgstr "inkludera revisioner där filer togs bort"
-
-msgid "show only merges (DEPRECATED)"
-msgstr "visa bara sammanfogningar (FÖRLEGAD)"
-
-msgid "revisions committed by user"
-msgstr "revisioner arkiverade av användare"
-
-msgid "show only changesets within the given named branch (DEPRECATED)"
-msgstr "visa bara ändringar i den namngivna grenen (FÖRLEGAD)"
-
-msgid "show changesets within the given named branch"
-msgstr "visa ändringar i den namngivna grenen"
-
-msgid "do not display revision or any of its ancestors"
-msgstr "visa inte revision eller någon av dess föräldrar"
-
-msgid "show hidden changesets (DEPRECATED)"
-msgstr "visa dolda ändringar (FÖRLEGAD)"
-
-msgid "[OPTION]... [FILE]"
-msgstr "[FLAGGA]... [FIL]"
-
 msgid "show revision history of entire repository or files"
 msgstr "visa revisionshistorik för hela arkivet eller filer"
 
@@ -10019,6 +10805,13 @@
 "    Se :hg:`help revisions` och :hg:`help revsets` för mer om hur man anger\n"
 "    revisioner."
 
+msgid ""
+"    See :hg:`help templates` for more about pre-packaged styles and\n"
+"    specifying custom templates."
+msgstr ""
+"    Se :hg:`help templates` för information om mallar och filter.\n"
+"    "
+
 msgid "revision to display"
 msgstr "revision att visa"
 
@@ -10130,6 +10923,22 @@
 "    Returnerar 0 om kommandot lyckades, 1 om det finns olösta filer.\n"
 "    "
 
+msgid ""
+"multiple matching bookmarks to merge - please merge with an explicit rev or "
+"bookmark"
+msgstr ""
+"flera överrensstämmande bokmärken att sammanfoga - ange en explicit revision "
+"eller ett bokmärke"
+
+msgid "run 'hg heads' to see all heads"
+msgstr "kör 'hg heads' för att se alla huvuden"
+
+msgid ""
+"no matching bookmark to merge - please merge with an explicit rev or bookmark"
+msgstr ""
+"inga överrensstämmande bokmärken att sammanfoga - ange en explicit revision "
+"eller ett bokmärke"
+
 #, python-format
 msgid "branch '%s' has %d heads - please merge with an explicit rev"
 msgstr "grenen '%s' har %d huvuden - sammanfoga med en specifik rev"
@@ -10137,13 +10946,13 @@
 msgid "run 'hg heads .' to see heads"
 msgstr "kör 'hg heads .' för att se huvuden"
 
+msgid "heads are bookmarked - please merge with an explicit rev"
+msgstr "huvuden är bokmärkta - sammanfoga med en explicit revision"
+
 #, python-format
 msgid "branch '%s' has one head - please merge with an explicit rev"
 msgstr "grenen '%s' har ett huvud - sammanfoga med en specifik rev"
 
-msgid "run 'hg heads' to see all heads"
-msgstr "kör 'hg heads' för att se alla huvuden"
-
 msgid "nothing to merge"
 msgstr "inget att sammanfoga"
 
@@ -10306,18 +11115,24 @@
 msgstr "        public < draft < secret"
 
 msgid ""
-"    Return 0 on success, 1 if no phases were changed.\n"
-"    "
-msgstr ""
-"    Returnerar 0 om kommandot lyckades, 1 om inga faser ändrades.\n"
+"    Return 0 on success, 1 if no phases were changed or some could not\n"
+"    be changed.\n"
+"    "
+msgstr ""
+"    Returnerar 0 om kommandot lyckades, 1 om inga faser ändrades eller om\n"
+"    några inte kunde förändras.\n"
 "    "
 
 msgid "only one phase can be specified"
 msgstr "bara en fas kan vara angiven"
 
 #, python-format
-msgid "phase change for %i changesets\n"
-msgstr "fasändring för %i ändringar\n"
+msgid "cannot move %i changesets to a more permissive phase, use --force\n"
+msgstr ""
+
+#, python-format
+msgid "phase changed for %i changesets\n"
+msgstr "fas ändrad för %i ändringar\n"
 
 msgid "no phases changed\n"
 msgstr "inga faser ändrage\n"
@@ -10401,13 +11216,6 @@
 msgid "remote bookmark %s not found!"
 msgstr "fjärrbokmärket %s hittades inte!"
 
-msgid ""
-"other repository doesn't support revision lookup, so a rev cannot be "
-"specified."
-msgstr ""
-"det andra arkivet stödjer inte revisionsuppslag, så en revision kan inte "
-"anges."
-
 #, python-format
 msgid "importing bookmark %s\n"
 msgstr "importerar bokmärket %s\n"
@@ -10475,6 +11283,14 @@
 "    tryckas till det andra arkivet."
 
 msgid ""
+"    If -B/--bookmark is used, the specified bookmarked revision, its\n"
+"    ancestors, and the bookmark will be pushed to the remote\n"
+"    repository."
+msgstr ""
+"    Om -B/--bookmarks används, kommer den angivna bokmärkta revisionen,\n"
+"    alla anfäder och bokmärket att tryckas till det andra arkivet."
+
+msgid ""
 "    Please see :hg:`help urls` for important details about ``ssh://``\n"
 "    URLs. If DESTINATION is omitted, a default path will be used."
 msgstr ""
@@ -10744,24 +11560,24 @@
 msgid "revert to the specified revision"
 msgstr "återgå till den angivna revisionen"
 
-msgid "do not save backup copies of files"
-msgstr "spara inte backup-kopior av filer"
-
 msgid "[OPTION]... [-r REV] [NAME]..."
 msgstr "[FLAGGA]... [-r REV] [NAMN]..."
 
 msgid "restore files to their checkout state"
 msgstr "återställ filer till deras uthämtningstillstånd"
 
-msgid ""
-"    .. note::\n"
+msgid "    .. note::"
+msgstr "    .. note::"
+
+msgid ""
 "       To check out earlier revisions, you should use :hg:`update REV`.\n"
-"       To cancel a merge (and lose your changes), use :hg:`update --clean .`."
+"       To cancel an uncommitted merge (and lose your changes), use\n"
+"       :hg:`update --clean .`."
 msgstr ""
 "    .. note::\n"
 "       För att hämta ut tidigare revisioner, använd :hg:`update REV`.\n"
-"       För att avbryta en sammanfogning (och bli av med alla ändringar),\n"
-"       använd :hg:`update --clean .`."
+"       För att avbryta en oarkiverad sammanfogning (och bli av med alla\n"
+"        ändringar), använd :hg:`update --clean .`."
 
 msgid ""
 "    With no revision specified, revert the specified files or directories\n"
@@ -10837,30 +11653,6 @@
 msgid "use --all to revert all files"
 msgstr "använd --all för att återställa filer"
 
-#, python-format
-msgid "forgetting %s\n"
-msgstr "glömmer %s\n"
-
-#, python-format
-msgid "reverting %s\n"
-msgstr "återställer %s\n"
-
-#, python-format
-msgid "undeleting %s\n"
-msgstr "ångrar radering av %s\n"
-
-#, python-format
-msgid "saving current version of %s as %s\n"
-msgstr "sparar nuvarande revision av %s som %s\n"
-
-#, python-format
-msgid "file not managed: %s\n"
-msgstr "filen hanteras inte: %s\n"
-
-#, python-format
-msgid "no changes needed to %s\n"
-msgstr "inga ändringar behövs för %s\n"
-
 msgid "ignore safety measures"
 msgstr "ignorera säkerhetsåtgärder"
 
@@ -10883,35 +11675,39 @@
 msgid ""
 "    Transactions are used to encapsulate the effects of all commands\n"
 "    that create new changesets or propagate existing changesets into a\n"
-"    repository. For example, the following commands are transactional,\n"
-"    and their effects can be rolled back:"
+"    repository."
 msgstr ""
 "    Transaktioner används för att kapsla in alla kommandon som skapar nya\n"
-"    ändringar eller sprider existerade ändringar till ett arkiv.\n"
-"    Exempelvis skapar de följande kommandona transaktioner, och deras\n"
-"    ändringar kan återkallas:"
-
-msgid ""
-"    - commit\n"
-"    - import\n"
-"    - pull\n"
-"    - push (with this repository as the destination)\n"
-"    - unbundle"
-msgstr ""
-"    - commit\n"
-"    - import\n"
-"    - pull\n"
-"    - push (med det här arkivet som destination)\n"
-"    - unbundle"
-
-msgid ""
-"    To avoid permanent data loss, rollback will refuse to rollback a\n"
-"    commit transaction if it isn't checked out. Use --force to\n"
-"    override this protection."
-msgstr ""
-"    För att undvika permanent dataförlust så vägrar rollback att köras på\n"
-"    en arkivering om den inte är uthämtad. Använd --force för att gå förbi\n"
-"    det här skyddet."
+"    ändringar eller sprider existerade ändringar till ett arkiv."
+
+msgid ""
+"      For example, the following commands are transactional, and their\n"
+"      effects can be rolled back:"
+msgstr ""
+"      Exempelvis skapar de följande kommandona transaktioner, och deras\n"
+"      ändringar kan återkallas:"
+
+msgid ""
+"      - commit\n"
+"      - import\n"
+"      - pull\n"
+"      - push (with this repository as the destination)\n"
+"      - unbundle"
+msgstr ""
+"      - commit\n"
+"      - import\n"
+"      - pull\n"
+"      - push (med det här arkivet som destination)\n"
+"      - unbundle"
+
+msgid ""
+"      To avoid permanent data loss, rollback will refuse to rollback a\n"
+"      commit transaction if it isn't checked out. Use --force to\n"
+"      override this protection."
+msgstr ""
+"      För att undvika permanent dataförlust så vägrar rollback att köras\n"
+"      på en arkivering om den inte är uthämtad. Använd --force för att gå\n"
+"      förbi det här skyddet."
 
 msgid ""
 "    This command is not intended for use on public repositories. Once\n"
@@ -11033,9 +11829,6 @@
 msgid "cannot use --stdio with --cmdserver"
 msgstr "kan inte använda --stdio med --cmdserver"
 
-msgid "There is no Mercurial repository here (.hg not found)"
-msgstr "Det finns inget Mercurial-arkiv här (.hg hittades inte)"
-
 #, python-format
 msgid "listening at http://%s%s/%s (bound to %s:%d)\n"
 msgstr "lyssnar på http://%s%s/%s (bunden till %s:%d)\n"
@@ -11434,6 +12227,9 @@
 msgid "not at a branch head (use -f to force)"
 msgstr "inte vid ett grenhuvud (använd -f för att tvinga)"
 
+msgid "null revision specified"
+msgstr "null-revision angiven"
+
 msgid "list repository tags"
 msgstr "lista arkivmärken"
 
@@ -11516,56 +12312,63 @@
 "    grenen och nuvarande bokmärket flyttas (se :hg:`help bookmarks`)."
 
 msgid ""
-"    If the changeset is not a descendant of the working directory's\n"
-"    parent, the update is aborted. With the -c/--check option, the\n"
-"    working directory is checked for uncommitted changes; if none are\n"
-"    found, the working directory is updated to the specified\n"
-"    changeset."
-msgstr ""
-
-msgid ""
 "    Update sets the working directory's parent revison to the specified\n"
 "    changeset (see :hg:`help parents`)."
 msgstr ""
 
 msgid ""
-"    The following rules apply when the working directory contains\n"
-"    uncommitted changes:"
-msgstr ""
-"    Följande regler gäller när arbetskatalogen innehåller oarkiverade\n"
-"    ändringar:"
-
-msgid ""
-"    1. If neither -c/--check nor -C/--clean is specified, and if\n"
-"       the requested changeset is an ancestor or descendant of\n"
-"       the working directory's parent, the uncommitted changes\n"
-"       are merged into the requested changeset and the merged\n"
-"       result is left uncommitted. If the requested changeset is\n"
-"       not an ancestor or descendant (that is, it is on another\n"
-"       branch), the update is aborted and the uncommitted changes\n"
-"       are preserved."
-msgstr ""
-"    1. Om varken -c/--check eller -C/--clean specificeras, och om den\n"
-"       begärda ändringen är en anfader eller ättling till arbetskatalogens\n"
-"       förälder, kommer oarkiverade ändringar att sammanfogas med den\n"
-"       begärda ändringen och det sammanfogade resultatet lämnas oarkiverat.\n"
-"       Om den begärda ändringen inte är en anfader eller ättling (dvs är i\n"
-"       en annan gren), avbryts uppdateringen och de oarkiverade ändringarna\n"
-"       bevaras."
-
-msgid ""
-"    2. With the -c/--check option, the update is aborted and the\n"
-"       uncommitted changes are preserved."
-msgstr ""
-"    2. Med flaggan -c/--check avbryts uppdateringen och de oarkiverade\n"
-"       ändringarna lämnas."
-
-msgid ""
-"    3. With the -C/--clean option, uncommitted changes are discarded and\n"
-"       the working directory is updated to the requested changeset."
-msgstr ""
-"    3. Med flaggan -C/--clean kommer oarkiverade ändringar att kasseras och\n"
-"       arbetskatalogen uppdateras till den begärda ändringen."
+"    If the changeset is not a descendant or ancestor of the working\n"
+"    directory's parent, the update is aborted. With the -c/--check\n"
+"    option, the working directory is checked for uncommitted changes; if\n"
+"    none are found, the working directory is updated to the specified\n"
+"    changeset."
+msgstr ""
+
+msgid ""
+"      The following rules apply when the working directory contains\n"
+"      uncommitted changes:"
+msgstr ""
+"      Följande regler gäller när arbetskatalogen innehåller oarkiverade\n"
+"      ändringar:"
+
+msgid ""
+"      1. If neither -c/--check nor -C/--clean is specified, and if\n"
+"         the requested changeset is an ancestor or descendant of\n"
+"         the working directory's parent, the uncommitted changes\n"
+"         are merged into the requested changeset and the merged\n"
+"         result is left uncommitted. If the requested changeset is\n"
+"         not an ancestor or descendant (that is, it is on another\n"
+"         branch), the update is aborted and the uncommitted changes\n"
+"         are preserved."
+msgstr ""
+"      1. Om varken -c/--check eller -C/--clean specificeras, och om den\n"
+"         begärda ändringen är en anfader eller ättling till\n"
+"         arbetskatalogens förälder, kommer oarkiverade ändringar att\n"
+"         sammanfogas med den begärda ändringen och det sammanfogade\n"
+"         resultatet lämnas oarkiverat. Om den begärda ändringen inte är en\n"
+"         anfader eller ättling (dvs är i en annan gren), avbryts\n"
+"         uppdateringen och de oarkiverade ändringarna  bevaras."
+
+msgid ""
+"      2. With the -c/--check option, the update is aborted and the\n"
+"         uncommitted changes are preserved."
+msgstr ""
+"      2. Med flaggan -c/--check avbryts uppdateringen och de oarkiverade\n"
+"         ändringarna lämnas."
+
+msgid ""
+"      3. With the -C/--clean option, uncommitted changes are discarded and\n"
+"         the working directory is updated to the requested changeset."
+msgstr ""
+"      3. Med flaggan -C/--clean kommer oarkiverade ändringar att kasseras\n"
+"         och arbetskatalogen uppdateras till den begärda ändringen."
+
+msgid ""
+"    To cancel an uncommitted merge (and lose your changes), use\n"
+"    :hg:`update --clean .`."
+msgstr ""
+"    För att avbryta en oarkiverad sammanfogning (och förlora dina\n"
+"    ändringar), använd :hg:`update --clean .`."
 
 msgid ""
 "    Use null as the changeset to remove the working directory (like\n"
@@ -11631,6 +12434,14 @@
 msgid "cannot include %s (%s)"
 msgstr "kan inte inkludera %s (%s)"
 
+#, python-format
+msgid "working directory has unknown parent '%s'!"
+msgstr ""
+
+#, python-format
+msgid "unknown revision '%s'"
+msgstr ""
+
 msgid "not found in manifest"
 msgstr "hittades inte i manifestet"
 
@@ -11855,11 +12666,23 @@
 msgid "abort: out of memory\n"
 msgstr ""
 
+msgid "the extension author."
+msgstr ""
+
+#, python-format
+msgid ""
+"** Unknown exception encountered with possibly-broken third-party extension "
+"%s\n"
+"** which supports versions %s of Mercurial.\n"
+"** Please disable %s and try your action again.\n"
+"** If that fixes the bug please report it to %s\n"
+msgstr ""
+
 msgid "** unknown exception encountered, please report by visiting\n"
 msgstr ""
 
-msgid "**  http://mercurial.selenic.com/wiki/BugTracker\n"
-msgstr ""
+msgid "** http://mercurial.selenic.com/wiki/BugTracker\n"
+msgstr "** http://mercurial.selenic.com/wiki/BugTracker\n"
 
 #, python-format
 msgid "** Python %s\n"
@@ -11873,6 +12696,9 @@
 msgid "** Extensions loaded: %s\n"
 msgstr ""
 
+msgid "too few arguments for command alias"
+msgstr ""
+
 #, python-format
 msgid "no definition for alias '%s'\n"
 msgstr ""
@@ -11915,7 +12741,7 @@
 msgstr ""
 
 #, python-format
-msgid "Time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n"
+msgid "time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n"
 msgstr ""
 
 #, python-format
@@ -11938,6 +12764,17 @@
 "misc/lsprof/"
 msgstr ""
 
+msgid "statprof not available - install using \"easy_install statprof\""
+msgstr ""
+
+#, python-format
+msgid "invalid sampling frequency '%s' - ignoring\n"
+msgstr ""
+
+#, python-format
+msgid "unrecognized profiler '%s' - ignored\n"
+msgstr ""
+
 #, python-format
 msgid "*** failed to import extension %s from %s: %s\n"
 msgstr ""
@@ -11966,16 +12803,64 @@
 msgid "tool %s requires a GUI\n"
 msgstr ""
 
+msgid ""
+"``internal:prompt``\n"
+"Asks the user which of the local or the other version to keep as\n"
+"    the merged version."
+msgstr ""
+
 #, python-format
 msgid ""
 " no tool found to merge %s\n"
 "keep (l)ocal or take (o)ther?"
 msgstr ""
 
+msgid ""
+"``internal:local``\n"
+"Uses the local version of files as the merged version."
+msgstr ""
+
+msgid ""
+"``internal:other``\n"
+"Uses the other version of files as the merged version."
+msgstr ""
+
+msgid ""
+"``internal:fail``\n"
+"Rather than attempting to merge files that were modified on both\n"
+"    branches, it marks them as unresolved. The resolve command must be\n"
+"    used to resolve these conflicts."
+msgstr ""
+
 #, python-format
 msgid "%s.premerge not valid ('%s' is neither boolean nor %s)"
 msgstr ""
 
+msgid ""
+"``internal:merge``\n"
+"Uses the internal non-interactive simple merge algorithm for merging\n"
+"    files. It will fail if there are any conflicts and leave markers in\n"
+"    the partially merged file."
+msgstr ""
+
+#, python-format
+msgid "merging %s incomplete! (edit conflicts, then use 'hg resolve --mark')\n"
+msgstr ""
+
+msgid ""
+"``internal:dump``\n"
+"Creates three versions of the files to merge, containing the\n"
+"    contents of local, other and base. These files can then be used to\n"
+"    perform a merge manually. If the file to be merged is named\n"
+"    ``a.txt``, these files will accordingly be named ``a.txt.local``,\n"
+"    ``a.txt.other`` and ``a.txt.base`` and they will be placed in the\n"
+"    same directory as ``a.txt``."
+msgstr ""
+
+#, python-format
+msgid "merging %s failed!\n"
+msgstr ""
+
 #, python-format
 msgid "was merge of '%s' successful (yn)?"
 msgstr ""
@@ -11986,14 +12871,6 @@
 "was merge successful (yn)?"
 msgstr ""
 
-#, python-format
-msgid "merging %s incomplete! (edit conflicts, then use 'hg resolve --mark')\n"
-msgstr ""
-
-#, python-format
-msgid "merging %s failed!\n"
-msgstr ""
-
 msgid "unterminated string"
 msgstr ""
 
@@ -12180,6 +13057,18 @@
 msgid "copied takes no arguments"
 msgstr "copied tar inga argument"
 
+msgid ""
+"``subrepo([pattern])``\n"
+"    Subrepositories whose paths match the given pattern."
+msgstr ""
+
+#. i18n: "subrepo" is a keyword
+msgid "subrepo takes at most one argument"
+msgstr "subrepo tar maximalt ett argument"
+
+msgid "subrepo requires a pattern or no arguments"
+msgstr "subrepo kräver ett mönster eller inga argument"
+
 msgid "invalid token"
 msgstr ""
 
@@ -12224,6 +13113,19 @@
 msgid "disabled extensions:"
 msgstr "deaktiverade utökningar:"
 
+msgid "VALUE"
+msgstr "VÄRDE"
+
+msgid "DEPRECATED"
+msgstr "FÖRLEGAD"
+
+msgid ""
+"\n"
+"[+] marked option can be specified multiple times\n"
+msgstr ""
+"\n"
+"flaggor markerade med [+] kan anges flera gånger\n"
+
 msgid "Configuration Files"
 msgstr "Konfigurationsfiler"
 
@@ -12260,8 +13162,8 @@
 msgid "URL Paths"
 msgstr "URL-sökvägar"
 
-msgid "Using additional features"
-msgstr "Använda ytterligare funktioner"
+msgid "Using Additional Features"
+msgstr "Använda Ytterligare Funktioner"
 
 msgid "Subrepositories"
 msgstr "Underarkiv"
@@ -12272,8 +13174,8 @@
 msgid "Glossary"
 msgstr "Ordlista"
 
-msgid "syntax for Mercurial ignore files"
-msgstr "syntax för Mercurials ignoreringsfiler"
+msgid "Syntax for Mercurial Ignore Files"
+msgstr "Syntax för Mercurials Ignoreringsfiler"
 
 msgid "Working with Phases"
 msgstr "Arbeta med Faser"
@@ -12312,10 +13214,10 @@
 
 msgid ""
 "Files\n"
-"-----"
+"====="
 msgstr ""
 "Filer\n"
-"-----"
+"====="
 
 msgid ""
 "Mercurial reads configuration data from several files, if they exist.\n"
@@ -12334,7 +13236,7 @@
 "ones."
 msgstr ""
 
-msgid "| (Unix, Windows) ``<repo>/.hg/hgrc``"
+msgid "| (All) ``<repo>/.hg/hgrc``"
 msgstr ""
 
 msgid ""
@@ -12342,12 +13244,13 @@
 "    particular repository. This file is not version-controlled, and\n"
 "    will not get transferred during a \"clone\" operation. Options in\n"
 "    this file override options in all other configuration files. On\n"
-"    Unix, most of this file will be ignored if it doesn't belong to a\n"
-"    trusted user or to a trusted group. See the documentation for the\n"
-"    ``[trusted]`` section below for more details."
-msgstr ""
-
-msgid ""
+"    Plan 9 and Unix, most of this file will be ignored if it doesn't\n"
+"    belong to a trusted user or to a trusted group. See the documentation\n"
+"    for the ``[trusted]`` section below for more details."
+msgstr ""
+
+msgid ""
+"| (Plan 9) ``$home/lib/hgrc``\n"
 "| (Unix) ``$HOME/.hgrc``\n"
 "| (Windows) ``%USERPROFILE%\\.hgrc``\n"
 "| (Windows) ``%USERPROFILE%\\Mercurial.ini``\n"
@@ -12365,6 +13268,8 @@
 msgstr ""
 
 msgid ""
+"| (Plan 9) ``/lib/mercurial/hgrc``\n"
+"| (Plan 9) ``/lib/mercurial/hgrc.d/*.rc``\n"
 "| (Unix) ``/etc/mercurial/hgrc``\n"
 "| (Unix) ``/etc/mercurial/hgrc.d/*.rc``"
 msgstr ""
@@ -12377,6 +13282,8 @@
 msgstr ""
 
 msgid ""
+"| (Plan 9) ``<install-root>/lib/mercurial/hgrc``\n"
+"| (Plan 9) ``<install-root>/lib/mercurial/hgrc.d/*.rc``\n"
 "| (Unix) ``<install-root>/etc/mercurial/hgrc``\n"
 "| (Unix) ``<install-root>/etc/mercurial/hgrc.d/*.rc``"
 msgstr ""
@@ -12403,15 +13310,15 @@
 "    keys contain PATH-like strings, every part of which must reference\n"
 "    a ``Mercurial.ini`` file or be a directory where ``*.rc`` files will\n"
 "    be read.  Mercurial checks each of these locations in the specified\n"
-"    order until one or more configuration files are detected.  If the\n"
-"    pywin32 extensions are not installed, Mercurial will only look for\n"
-"    site-wide configuration in ``C:\\Mercurial\\Mercurial.ini``."
+"    order until one or more configuration files are detected."
 msgstr ""
 
 msgid ""
 "Syntax\n"
-"------"
-msgstr ""
+"======"
+msgstr ""
+"Syntax\n"
+"======"
 
 msgid ""
 "A configuration file consists of sections, led by a ``[section]`` header\n"
@@ -12534,8 +13441,10 @@
 
 msgid ""
 "Sections\n"
-"--------"
-msgstr ""
+"========"
+msgstr ""
+"Sektioner\n"
+"========="
 
 msgid ""
 "This section describes the different sections that may appear in a\n"
@@ -12545,8 +13454,10 @@
 
 msgid ""
 "``alias``\n"
-"\"\"\"\"\"\"\"\"\""
-msgstr ""
+"---------"
+msgstr ""
+"``alias``\n"
+"---------"
 
 msgid ""
 "Defines command aliases.\n"
@@ -12590,7 +13501,7 @@
 "run arbitrary commands. As an example, ::"
 msgstr ""
 
-msgid "   echo = !echo"
+msgid "   echo = !echo $@"
 msgstr ""
 
 msgid ""
@@ -12607,11 +13518,19 @@
 msgstr ""
 
 msgid ""
-"Shell aliases are executed in an environment where ``$HG`` expand to\n"
+"Positional arguments like ``$1``, ``$2``, etc. in the alias definition\n"
+"expand to the command arguments. Unmatched arguments are\n"
+"removed. ``$0`` expands to the alias name and ``$@`` expands to all\n"
+"arguments separated by a space. These expansions happen before the\n"
+"command is passed to the shell."
+msgstr ""
+
+msgid ""
+"Shell aliases are executed in an environment where ``$HG`` expands to\n"
 "the path of the Mercurial that was used to execute the alias. This is\n"
 "useful when you want to call further Mercurial commands in a shell\n"
 "alias, as was done above for the purge alias. In addition,\n"
-"``$HG_ARGS`` expand to the arguments given to Mercurial. In the ``hg\n"
+"``$HG_ARGS`` expands to the arguments given to Mercurial. In the ``hg\n"
 "echo foo`` call above, ``$HG_ARGS`` would expand to ``echo foo``."
 msgstr ""
 
@@ -12624,8 +13543,11 @@
 msgid ""
 "\n"
 "``annotate``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
+"------------"
+msgstr ""
+"\n"
+"``annotate``\n"
+"------------"
 
 msgid ""
 "Settings used when displaying file annotations. All values are\n"
@@ -12657,8 +13579,11 @@
 msgid ""
 "\n"
 "``auth``\n"
-"\"\"\"\"\"\"\"\""
-msgstr ""
+"--------"
+msgstr ""
+"\n"
+"``auth``\n"
+"--------"
 
 msgid ""
 "Authentication credentials for HTTP authentication. This section\n"
@@ -12751,8 +13676,11 @@
 msgid ""
 "\n"
 "``decode/encode``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
+"-----------------"
+msgstr ""
+"\n"
+"``decode/encode``\n"
+"-----------------"
 
 msgid ""
 "Filters for transforming files on checkout/checkin. This would\n"
@@ -12819,8 +13747,11 @@
 msgid ""
 "\n"
 "``defaults``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
+"------------"
+msgstr ""
+"\n"
+"``defaults``\n"
+"------------"
 
 msgid "(defaults are deprecated. Don't use them. Use aliases instead)"
 msgstr ""
@@ -12850,8 +13781,11 @@
 msgid ""
 "\n"
 "``diff``\n"
-"\"\"\"\"\"\"\"\""
-msgstr ""
+"--------"
+msgstr ""
+"\n"
+"``diff``\n"
+"--------"
 
 msgid ""
 "Settings used when displaying diffs. Everything except for ``unified``\n"
@@ -12887,8 +13821,10 @@
 
 msgid ""
 "``email``\n"
-"\"\"\"\"\"\"\"\"\""
-msgstr ""
+"---------"
+msgstr ""
+"``email``\n"
+"---------"
 
 msgid "Settings for extensions that send email messages."
 msgstr ""
@@ -12963,8 +13899,11 @@
 msgid ""
 "\n"
 "``extensions``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
+"--------------"
+msgstr ""
+"\n"
+"``extensions``\n"
+"--------------"
 
 msgid ""
 "Mercurial has an extension mechanism for adding new features. To\n"
@@ -13005,36 +13944,12 @@
 
 msgid ""
 "\n"
-"``hostfingerprints``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
-
-msgid ""
-"Fingerprints of the certificates of known HTTPS servers.\n"
-"A HTTPS connection to a server with a fingerprint configured here will\n"
-"only succeed if the servers certificate matches the fingerprint.\n"
-"This is very similar to how ssh known hosts works.\n"
-"The fingerprint is the SHA-1 hash value of the DER encoded certificate.\n"
-"The CA chain and web.cacerts is not used for servers with a fingerprint."
-msgstr ""
-
-msgid "For example::"
-msgstr "Exempelvis::"
-
-msgid ""
-"    [hostfingerprints]\n"
-"    hg.intevation.org = 38:76:52:7c:87:26:9a:8f:4a:f8:d3:de:08:45:3b:ea:"
-"d6:4b:ee:cc"
-msgstr ""
-
-msgid "This feature is only supported when using Python 2.6 or later."
-msgstr ""
-
-msgid ""
+"``format``\n"
+"----------"
+msgstr ""
 "\n"
 "``format``\n"
-"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
+"----------"
 
 msgid ""
 "``usestore``\n"
@@ -13067,167 +13982,50 @@
 msgstr ""
 
 msgid ""
-"``merge-patterns``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
-
-msgid ""
-"This section specifies merge tools to associate with particular file\n"
-"patterns. Tools matched here will take precedence over the default\n"
-"merge tool. Patterns are globs by default, rooted at the repository\n"
-"root."
-msgstr ""
-
-msgid ""
-"  [merge-patterns]\n"
-"  **.c = kdiff3\n"
-"  **.jpg = myimgmerge"
-msgstr ""
-
-msgid ""
-"``merge-tools``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
-
-msgid ""
-"This section configures external merge tools to use for file-level\n"
-"merges."
-msgstr ""
-
-msgid "Example ``~/.hgrc``::"
-msgstr ""
-
-msgid ""
-"  [merge-tools]\n"
-"  # Override stock tool location\n"
-"  kdiff3.executable = ~/bin/kdiff3\n"
-"  # Specify command line\n"
-"  kdiff3.args = $base $local $other -o $output\n"
-"  # Give higher priority\n"
-"  kdiff3.priority = 1"
-msgstr ""
-
-msgid ""
-"  # Define new tool\n"
-"  myHtmlTool.args = -m $local $other $base $output\n"
-"  myHtmlTool.regkey = Software\\FooSoftware\\HtmlMerge\n"
-"  myHtmlTool.priority = 1"
-msgstr ""
-
-msgid ""
-"``priority``\n"
-"  The priority in which to evaluate this tool.\n"
-"  Default: 0."
-msgstr ""
-
-msgid ""
-"``executable``\n"
-"  Either just the name of the executable or its pathname.  On Windows,\n"
-"  the path can use environment variables with ${ProgramFiles} syntax.\n"
-"  Default: the tool name."
-msgstr ""
-
-msgid ""
-"``args``\n"
-"  The arguments to pass to the tool executable. You can refer to the\n"
-"  files being merged as well as the output file through these\n"
-"  variables: ``$base``, ``$local``, ``$other``, ``$output``.\n"
-"  Default: ``$local $base $other``"
-msgstr ""
-
-msgid ""
-"``premerge``\n"
-"  Attempt to run internal non-interactive 3-way merge tool before\n"
-"  launching external tool.  Options are ``true``, ``false``, or ``keep``\n"
-"  to leave markers in the file if the premerge fails.\n"
-"  Default: True"
-msgstr ""
-
-msgid ""
-"``binary``\n"
-"  This tool can merge binary files. Defaults to False, unless tool\n"
-"  was selected by file pattern match."
-msgstr ""
-
-msgid ""
-"``symlink``\n"
-"  This tool can merge symlinks. Defaults to False, even if tool was\n"
-"  selected by file pattern match."
-msgstr ""
-
-msgid ""
-"``check``\n"
-"  A list of merge success-checking options:"
-msgstr ""
-
-msgid ""
-"  ``changed``\n"
-"    Ask whether merge was successful when the merged file shows no changes.\n"
-"  ``conflicts``\n"
-"    Check whether there are conflicts even though the tool reported "
-"success.\n"
-"  ``prompt``\n"
-"    Always prompt for merge success, regardless of success reported by tool."
-msgstr ""
-
-msgid ""
-"``checkchanged``\n"
-"  True is equivalent to ``check = changed``.\n"
-"  Default: False"
-msgstr ""
-
-msgid ""
-"``checkconflicts``\n"
-"  True is equivalent to ``check = conflicts``.\n"
-"  Default: False"
-msgstr ""
-
-msgid ""
-"``fixeol``\n"
-"  Attempt to fix up EOL changes caused by the merge tool.\n"
-"  Default: False"
-msgstr ""
-
-msgid ""
-"``gui``\n"
-"  This tool requires a graphical interface to run. Default: False"
-msgstr ""
-
-msgid ""
-"``regkey``\n"
-"  Windows registry key which describes install location of this\n"
-"  tool. Mercurial will search for this key first under\n"
-"  ``HKEY_CURRENT_USER`` and then under ``HKEY_LOCAL_MACHINE``.\n"
-"  Default: None"
-msgstr ""
-
-msgid ""
-"``regkeyalt``\n"
-"  An alternate Windows registry key to try if the first key is not\n"
-"  found.  The alternate key uses the same ``regname`` and ``regappend``\n"
-"  semantics of the primary key.  The most common use for this key\n"
-"  is to search for 32bit applications on 64bit operating systems.\n"
-"  Default: None"
-msgstr ""
-
-msgid ""
-"``regname``\n"
-"  Name of value to read from specified registry key. Defaults to the\n"
-"  unnamed (default) value."
-msgstr ""
-
-msgid ""
-"``regappend``\n"
-"  String to append to the value read from the registry, typically\n"
-"  the executable name of the tool.\n"
-"  Default: None"
-msgstr ""
-
-msgid ""
-"\n"
+"``graph``\n"
+"---------"
+msgstr ""
+"``graph``\n"
+"---------"
+
+msgid ""
+"Web graph view configuration. This section let you change graph\n"
+"elements display properties by branches, for instance to make the\n"
+"``default`` branch stand out."
+msgstr ""
+
+msgid "    <branch>.<argument> = <value>"
+msgstr ""
+
+msgid ""
+"where ``<branch>`` is the name of the branch being\n"
+"customized. Example::"
+msgstr ""
+
+msgid ""
+"    [graph]\n"
+"    # 2px width\n"
+"    default.width = 2\n"
+"    # red color\n"
+"    default.color = FF0000"
+msgstr ""
+
+msgid ""
+"``width``\n"
+"    Set branch edges width in pixels."
+msgstr ""
+
+msgid ""
+"``color``\n"
+"    Set branch edges color in hexadecimal RGB notation."
+msgstr ""
+
+msgid ""
 "``hooks``\n"
-"\"\"\"\"\"\"\"\"\""
-msgstr ""
+"---------"
+msgstr ""
+"``hooks``\n"
+"---------"
 
 msgid ""
 "Commands or Python functions that get automatically executed by\n"
@@ -13463,9 +14261,42 @@
 
 msgid ""
 "\n"
+"``hostfingerprints``\n"
+"--------------------"
+msgstr ""
+"\n"
+"``hostfingerprints``\n"
+"--------------------"
+
+msgid ""
+"Fingerprints of the certificates of known HTTPS servers.\n"
+"A HTTPS connection to a server with a fingerprint configured here will\n"
+"only succeed if the servers certificate matches the fingerprint.\n"
+"This is very similar to how ssh known hosts works.\n"
+"The fingerprint is the SHA-1 hash value of the DER encoded certificate.\n"
+"The CA chain and web.cacerts is not used for servers with a fingerprint."
+msgstr ""
+
+msgid "For example::"
+msgstr "Exempelvis::"
+
+msgid ""
+"    [hostfingerprints]\n"
+"    hg.intevation.org = 38:76:52:7c:87:26:9a:8f:4a:f8:d3:de:08:45:3b:ea:"
+"d6:4b:ee:cc"
+msgstr ""
+
+msgid "This feature is only supported when using Python 2.6 or later."
+msgstr ""
+
+msgid ""
+"\n"
 "``http_proxy``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
+"--------------"
+msgstr ""
+"\n"
+"``http_proxy``\n"
+"--------------"
 
 msgid ""
 "Used to access web-based Mercurial repositories through a HTTP\n"
@@ -13501,9 +14332,369 @@
 msgstr ""
 
 msgid ""
+"``merge-patterns``\n"
+"------------------"
+msgstr ""
+"``merge-patterns``\n"
+"------------------"
+
+msgid ""
+"This section specifies merge tools to associate with particular file\n"
+"patterns. Tools matched here will take precedence over the default\n"
+"merge tool. Patterns are globs by default, rooted at the repository\n"
+"root."
+msgstr ""
+
+msgid ""
+"  [merge-patterns]\n"
+"  **.c = kdiff3\n"
+"  **.jpg = myimgmerge"
+msgstr ""
+
+msgid ""
+"``merge-tools``\n"
+"---------------"
+msgstr ""
+"``merge-tools``\n"
+"---------------"
+
+msgid ""
+"This section configures external merge tools to use for file-level\n"
+"merges."
+msgstr ""
+
+msgid "Example ``~/.hgrc``::"
+msgstr ""
+
+msgid ""
+"  [merge-tools]\n"
+"  # Override stock tool location\n"
+"  kdiff3.executable = ~/bin/kdiff3\n"
+"  # Specify command line\n"
+"  kdiff3.args = $base $local $other -o $output\n"
+"  # Give higher priority\n"
+"  kdiff3.priority = 1"
+msgstr ""
+
+msgid ""
+"  # Define new tool\n"
+"  myHtmlTool.args = -m $local $other $base $output\n"
+"  myHtmlTool.regkey = Software\\FooSoftware\\HtmlMerge\n"
+"  myHtmlTool.priority = 1"
+msgstr ""
+
+msgid ""
+"``priority``\n"
+"  The priority in which to evaluate this tool.\n"
+"  Default: 0."
+msgstr ""
+
+msgid ""
+"``executable``\n"
+"  Either just the name of the executable or its pathname.  On Windows,\n"
+"  the path can use environment variables with ${ProgramFiles} syntax.\n"
+"  Default: the tool name."
+msgstr ""
+
+msgid ""
+"``args``\n"
+"  The arguments to pass to the tool executable. You can refer to the\n"
+"  files being merged as well as the output file through these\n"
+"  variables: ``$base``, ``$local``, ``$other``, ``$output``.\n"
+"  Default: ``$local $base $other``"
+msgstr ""
+
+msgid ""
+"``premerge``\n"
+"  Attempt to run internal non-interactive 3-way merge tool before\n"
+"  launching external tool.  Options are ``true``, ``false``, or ``keep``\n"
+"  to leave markers in the file if the premerge fails.\n"
+"  Default: True"
+msgstr ""
+
+msgid ""
+"``binary``\n"
+"  This tool can merge binary files. Defaults to False, unless tool\n"
+"  was selected by file pattern match."
+msgstr ""
+
+msgid ""
+"``symlink``\n"
+"  This tool can merge symlinks. Defaults to False, even if tool was\n"
+"  selected by file pattern match."
+msgstr ""
+
+msgid ""
+"``check``\n"
+"  A list of merge success-checking options:"
+msgstr ""
+
+msgid ""
+"  ``changed``\n"
+"    Ask whether merge was successful when the merged file shows no changes.\n"
+"  ``conflicts``\n"
+"    Check whether there are conflicts even though the tool reported "
+"success.\n"
+"  ``prompt``\n"
+"    Always prompt for merge success, regardless of success reported by tool."
+msgstr ""
+
+msgid ""
+"``checkchanged``\n"
+"  True is equivalent to ``check = changed``.\n"
+"  Default: False"
+msgstr ""
+
+msgid ""
+"``checkconflicts``\n"
+"  True is equivalent to ``check = conflicts``.\n"
+"  Default: False"
+msgstr ""
+
+msgid ""
+"``fixeol``\n"
+"  Attempt to fix up EOL changes caused by the merge tool.\n"
+"  Default: False"
+msgstr ""
+
+msgid ""
+"``gui``\n"
+"  This tool requires a graphical interface to run. Default: False"
+msgstr ""
+
+msgid ""
+"``regkey``\n"
+"  Windows registry key which describes install location of this\n"
+"  tool. Mercurial will search for this key first under\n"
+"  ``HKEY_CURRENT_USER`` and then under ``HKEY_LOCAL_MACHINE``.\n"
+"  Default: None"
+msgstr ""
+
+msgid ""
+"``regkeyalt``\n"
+"  An alternate Windows registry key to try if the first key is not\n"
+"  found.  The alternate key uses the same ``regname`` and ``regappend``\n"
+"  semantics of the primary key.  The most common use for this key\n"
+"  is to search for 32bit applications on 64bit operating systems.\n"
+"  Default: None"
+msgstr ""
+
+msgid ""
+"``regname``\n"
+"  Name of value to read from specified registry key. Defaults to the\n"
+"  unnamed (default) value."
+msgstr ""
+
+msgid ""
+"``regappend``\n"
+"  String to append to the value read from the registry, typically\n"
+"  the executable name of the tool.\n"
+"  Default: None"
+msgstr ""
+
+msgid ""
+"\n"
+"``patch``\n"
+"---------"
+msgstr ""
+"\n"
+"``patch``\n"
+"---------"
+
+msgid ""
+"Settings used when applying patches, for instance through the 'import'\n"
+"command or with Mercurial Queues extension."
+msgstr ""
+
+msgid ""
+"``eol``\n"
+"    When set to 'strict' patch content and patched files end of lines\n"
+"    are preserved. When set to ``lf`` or ``crlf``, both files end of\n"
+"    lines are ignored when patching and the result line endings are\n"
+"    normalized to either LF (Unix) or CRLF (Windows). When set to\n"
+"    ``auto``, end of lines are again ignored while patching but line\n"
+"    endings in patched files are normalized to their original setting\n"
+"    on a per-file basis. If target file does not exist or has no end\n"
+"    of line, patch line endings are preserved.\n"
+"    Default: strict."
+msgstr ""
+
+msgid ""
+"\n"
+"``paths``\n"
+"---------"
+msgstr ""
+"\n"
+"``paths``\n"
+"---------"
+
+msgid ""
+"Assigns symbolic names to repositories. The left side is the\n"
+"symbolic name, and the right gives the directory or URL that is the\n"
+"location of the repository. Default paths can be declared by setting\n"
+"the following entries."
+msgstr ""
+
+msgid ""
+"``default``\n"
+"    Directory or URL to use when pulling if no source is specified.\n"
+"    Default is set to repository from which the current repository was\n"
+"    cloned."
+msgstr ""
+
+msgid ""
+"``default-push``\n"
+"    Optional. Directory or URL to use when pushing if no destination\n"
+"    is specified."
+msgstr ""
+
+msgid ""
+"``phases``\n"
+"----------"
+msgstr ""
+"``phases``\n"
+"----------"
+
+msgid ""
+"Specifies default handling of phases. See :hg:`help phases` for more\n"
+"information about working with phases."
+msgstr ""
+
+msgid ""
+"``publish``\n"
+"    Controls draft phase behavior when working as a server. When true,\n"
+"    pushed changesets are set to public in both client and server and\n"
+"    pulled or cloned changesets are set to public in the client.\n"
+"    Default: True"
+msgstr ""
+
+msgid ""
+"``new-commit``\n"
+"    Phase of newly-created commits.\n"
+"    Default: draft"
+msgstr ""
+
+msgid ""
+"``profiling``\n"
+"-------------"
+msgstr ""
+"``profiling``\n"
+"-------------"
+
+msgid ""
+"Specifies profiling type, format, and file output. Two profilers are\n"
+"supported: an instrumenting profiler (named ``ls``), and a sampling\n"
+"profiler (named ``stat``)."
+msgstr ""
+
+msgid ""
+"In this section description, 'profiling data' stands for the raw data\n"
+"collected during profiling, while 'profiling report' stands for a\n"
+"statistical text report generated from the profiling data. The\n"
+"profiling is done using lsprof."
+msgstr ""
+
+msgid ""
+"``type``\n"
+"    The type of profiler to use.\n"
+"    Default: ls."
+msgstr ""
+
+msgid ""
+"    ``ls``\n"
+"      Use Python's built-in instrumenting profiler. This profiler\n"
+"      works on all platforms, but each line number it reports is the\n"
+"      first line of a function. This restriction makes it difficult to\n"
+"      identify the expensive parts of a non-trivial function.\n"
+"    ``stat``\n"
+"      Use a third-party statistical profiler, statprof. This profiler\n"
+"      currently runs only on Unix systems, and is most useful for\n"
+"      profiling commands that run for longer than about 0.1 seconds."
+msgstr ""
+
+msgid ""
+"``format``\n"
+"    Profiling format.  Specific to the ``ls`` instrumenting profiler.\n"
+"    Default: text."
+msgstr ""
+
+msgid ""
+"    ``text``\n"
+"      Generate a profiling report. When saving to a file, it should be\n"
+"      noted that only the report is saved, and the profiling data is\n"
+"      not kept.\n"
+"    ``kcachegrind``\n"
+"      Format profiling data for kcachegrind use: when saving to a\n"
+"      file, the generated file can directly be loaded into\n"
+"      kcachegrind."
+msgstr ""
+
+msgid ""
+"``frequency``\n"
+"    Sampling frequency.  Specific to the ``stat`` sampling profiler.\n"
+"    Default: 1000."
+msgstr ""
+
+msgid ""
+"``output``\n"
+"    File path where profiling data or report should be saved. If the\n"
+"    file exists, it is replaced. Default: None, data is printed on\n"
+"    stderr"
+msgstr ""
+
+msgid ""
+"``revsetalias``\n"
+"---------------"
+msgstr ""
+"``revsetalias``\n"
+"---------------"
+
+msgid "Alias definitions for revsets. See :hg:`help revsets` for details."
+msgstr ""
+
+msgid ""
+"``server``\n"
+"----------"
+msgstr ""
+"``server``\n"
+"----------"
+
+msgid "Controls generic server settings."
+msgstr ""
+
+msgid ""
+"``uncompressed``\n"
+"    Whether to allow clients to clone a repository using the\n"
+"    uncompressed streaming protocol. This transfers about 40% more\n"
+"    data than a regular clone, but uses less memory and CPU on both\n"
+"    server and client. Over a LAN (100 Mbps or better) or a very fast\n"
+"    WAN, an uncompressed streaming clone is a lot faster (~10x) than a\n"
+"    regular clone. Over most WAN connections (anything slower than\n"
+"    about 6 Mbps), uncompressed streaming is slower, because of the\n"
+"    extra data transfer overhead. This mode will also temporarily hold\n"
+"    the write lock while determining what data to transfer.\n"
+"    Default is True."
+msgstr ""
+
+msgid ""
+"``preferuncompressed``\n"
+"    When set, clients will try to use the uncompressed streaming\n"
+"    protocol. Default is False."
+msgstr ""
+
+msgid ""
+"``validate``\n"
+"    Whether to validate the completeness of pushed changesets by\n"
+"    checking that all new file revisions specified in manifests are\n"
+"    present. Default is False."
+msgstr ""
+
+msgid ""
 "``smtp``\n"
-"\"\"\"\"\"\"\"\""
-msgstr ""
+"--------"
+msgstr ""
+"``smtp``\n"
+"--------"
 
 msgid "Configuration for extensions that need to send email messages."
 msgstr ""
@@ -13546,168 +14737,27 @@
 
 msgid ""
 "\n"
-"``patch``\n"
-"\"\"\"\"\"\"\"\"\""
-msgstr ""
-
-msgid ""
-"Settings used when applying patches, for instance through the 'import'\n"
-"command or with Mercurial Queues extension."
-msgstr ""
-
-msgid ""
-"``eol``\n"
-"    When set to 'strict' patch content and patched files end of lines\n"
-"    are preserved. When set to ``lf`` or ``crlf``, both files end of\n"
-"    lines are ignored when patching and the result line endings are\n"
-"    normalized to either LF (Unix) or CRLF (Windows). When set to\n"
-"    ``auto``, end of lines are again ignored while patching but line\n"
-"    endings in patched files are normalized to their original setting\n"
-"    on a per-file basis. If target file does not exist or has no end\n"
-"    of line, patch line endings are preserved.\n"
-"    Default: strict."
-msgstr ""
-
-msgid ""
-"\n"
-"``paths``\n"
-"\"\"\"\"\"\"\"\"\""
-msgstr ""
-
-msgid ""
-"Assigns symbolic names to repositories. The left side is the\n"
-"symbolic name, and the right gives the directory or URL that is the\n"
-"location of the repository. Default paths can be declared by setting\n"
-"the following entries."
-msgstr ""
-
-msgid ""
-"``default``\n"
-"    Directory or URL to use when pulling if no source is specified.\n"
-"    Default is set to repository from which the current repository was\n"
-"    cloned."
-msgstr ""
-
-msgid ""
-"``default-push``\n"
-"    Optional. Directory or URL to use when pushing if no destination\n"
-"    is specified."
-msgstr ""
-
-msgid ""
-"``phases``\n"
-"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
-
-msgid ""
-"Specifies default handling of phases. See :hg:`help phases` for more\n"
-"information about working with phases."
-msgstr ""
-
-msgid ""
-"``publish``\n"
-"    Controls draft phase behavior when working as a server. When true,\n"
-"    pushed changesets are set to public in both client and server and\n"
-"    pulled or cloned changesets are set to public in the client.\n"
-"    Default: True"
-msgstr ""
-
-msgid ""
-"``new-commit``\n"
-"    Phase of newly-created commits.\n"
-"    Default: draft"
-msgstr ""
-
-msgid ""
-"``profiling``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
-
-msgid ""
-"Specifies profiling format and file output. In this section\n"
-"description, 'profiling data' stands for the raw data collected\n"
-"during profiling, while 'profiling report' stands for a statistical\n"
-"text report generated from the profiling data. The profiling is done\n"
-"using lsprof."
-msgstr ""
-
-msgid ""
-"``format``\n"
-"    Profiling format.\n"
-"    Default: text."
-msgstr ""
-
-msgid ""
-"    ``text``\n"
-"      Generate a profiling report. When saving to a file, it should be\n"
-"      noted that only the report is saved, and the profiling data is\n"
-"      not kept.\n"
-"    ``kcachegrind``\n"
-"      Format profiling data for kcachegrind use: when saving to a\n"
-"      file, the generated file can directly be loaded into\n"
-"      kcachegrind."
-msgstr ""
-
-msgid ""
-"``output``\n"
-"    File path where profiling data or report should be saved. If the\n"
-"    file exists, it is replaced. Default: None, data is printed on\n"
-"    stderr"
-msgstr ""
-
-msgid ""
-"``revsetalias``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
-
-msgid "Alias definitions for revsets. See :hg:`help revsets` for details."
-msgstr ""
-
-msgid ""
-"``server``\n"
-"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
-
-msgid "Controls generic server settings."
-msgstr ""
-
-msgid ""
-"``uncompressed``\n"
-"    Whether to allow clients to clone a repository using the\n"
-"    uncompressed streaming protocol. This transfers about 40% more\n"
-"    data than a regular clone, but uses less memory and CPU on both\n"
-"    server and client. Over a LAN (100 Mbps or better) or a very fast\n"
-"    WAN, an uncompressed streaming clone is a lot faster (~10x) than a\n"
-"    regular clone. Over most WAN connections (anything slower than\n"
-"    about 6 Mbps), uncompressed streaming is slower, because of the\n"
-"    extra data transfer overhead. This mode will also temporarily hold\n"
-"    the write lock while determining what data to transfer.\n"
-"    Default is True."
-msgstr ""
-
-msgid ""
-"``validate``\n"
-"    Whether to validate the completeness of pushed changesets by\n"
-"    checking that all new file revisions specified in manifests are\n"
-"    present. Default is False."
-msgstr ""
-
-msgid ""
+"``subpaths``\n"
+"------------"
+msgstr ""
+"\n"
 "``subpaths``\n"
-"\"\"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
-
-msgid "Defines subrepositories source locations rewriting rules of the form::"
+"------------"
+
+msgid ""
+"Subrepository source URLs can go stale if a remote server changes name\n"
+"or becomes temporarily unavailable. This section lets you define\n"
+"rewrite rules of the form::"
 msgstr ""
 
 msgid "    <pattern> = <replacement>"
 msgstr ""
 
 msgid ""
-"Where ``pattern`` is a regular expression matching the source and\n"
-"``replacement`` is the replacement string used to rewrite it. Groups\n"
-"can be matched in ``pattern`` and referenced in ``replacements``. For\n"
-"instance::"
+"where ``pattern`` is a regular expression matching a subrepository\n"
+"source URL and ``replacement`` is the replacement string used to\n"
+"rewrite it. Groups can be matched in ``pattern`` and referenced in\n"
+"``replacements``. For instance::"
 msgstr ""
 
 msgid "    http://server/(.*)-hg/ = http://hg.server/\\1/"
@@ -13716,13 +14766,18 @@
 msgid "rewrites ``http://server/foo-hg/`` into ``http://hg.server/foo/``."
 msgstr ""
 
-msgid "All patterns are applied in definition order."
+msgid ""
+"Relative subrepository paths are first made absolute, and the\n"
+"rewrite rules are then applied on the full (absolute) path. The rules\n"
+"are applied in definition order."
 msgstr ""
 
 msgid ""
 "``trusted``\n"
-"\"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
+"-----------"
+msgstr ""
+"``trusted``\n"
+"-----------"
 
 msgid ""
 "Mercurial will not use the settings in the\n"
@@ -13755,8 +14810,11 @@
 msgid ""
 "\n"
 "``ui``\n"
-"\"\"\"\"\"\""
-msgstr ""
+"------"
+msgstr ""
+"\n"
+"``ui``\n"
+"------"
 
 msgid "User interface controls."
 msgstr ""
@@ -13857,6 +14915,12 @@
 msgstr ""
 
 msgid ""
+"``reportoldssl``\n"
+"    Warn if an SSL certificate is unable to be due to using Python\n"
+"    2.5 or earlier. True or False. Default is True."
+msgstr ""
+
+msgid ""
 "``report_untrusted``\n"
 "    Warn if a ``.hg/hgrc`` file is ignored due to not being owned by a\n"
 "    trusted user or group. True or False. Default is True."
@@ -13921,8 +14985,11 @@
 msgid ""
 "\n"
 "``web``\n"
-"\"\"\"\"\"\"\""
-msgstr ""
+"-------"
+msgstr ""
+"\n"
+"``web``\n"
+"-------"
 
 msgid ""
 "Web interface configuration. The settings in this section apply to\n"
@@ -14043,7 +15110,27 @@
 "    authority certificates. Environment variables and ``~user``\n"
 "    constructs are expanded in the filename. If specified on the\n"
 "    client, then it will verify the identity of remote HTTPS servers\n"
-"    with these certificates. The form must be as follows::"
+"    with these certificates."
+msgstr ""
+
+msgid ""
+"    This feature is only supported when using Python 2.6 or later. If you "
+"wish\n"
+"    to use it with earlier versions of Python, install the backported\n"
+"    version of the ssl library that is available from\n"
+"    ``http://pypi.python.org``."
+msgstr ""
+
+msgid ""
+"    To disable SSL verification temporarily, specify ``--insecure`` from\n"
+"    command line."
+msgstr ""
+
+msgid ""
+"    You can use OpenSSL's CA certificate file if your platform has\n"
+"    one. On most Linux systems this will be\n"
+"    ``/etc/ssl/certs/ca-certificates.crt``. Otherwise you will have to\n"
+"    generate this file manually. The form must be as follows::"
 msgstr ""
 
 msgid ""
@@ -14056,31 +15143,22 @@
 msgstr ""
 
 msgid ""
-"    This feature is only supported when using Python 2.6 or later. If you "
-"wish\n"
-"    to use it with earlier versions of Python, install the backported\n"
-"    version of the ssl library that is available from\n"
-"    ``http://pypi.python.org``."
-msgstr ""
-
-msgid ""
-"    You can use OpenSSL's CA certificate file if your platform has one.\n"
-"    On most Linux systems this will be ``/etc/ssl/certs/ca-certificates."
-"crt``.\n"
-"    Otherwise you will have to generate this file manually."
-msgstr ""
-
-msgid ""
-"    To disable SSL verification temporarily, specify ``--insecure`` from\n"
-"    command line."
-msgstr ""
-
-msgid ""
 "``cache``\n"
 "    Whether to support caching in hgweb. Defaults to True."
 msgstr ""
 
 msgid ""
+"``collapse``\n"
+"    With ``descend`` enabled, repositories in subdirectories are shown at\n"
+"    a single level alongside repositories in the current path. With\n"
+"    ``collapse`` also enabled, repositories residing at a deeper level than\n"
+"    the current path are grouped behind navigable directory entries that\n"
+"    lead to the locations of these repositories. In effect, this setting\n"
+"    collapses each collection of repositories found within a subdirectory\n"
+"    into a single entry for that subdirectory. Default is False."
+msgstr ""
+
+msgid ""
 "``contact``\n"
 "    Name or email address of the person in charge of the repository.\n"
 "    Defaults to ui.username or ``$EMAIL`` or \"unknown\" if unset or empty."
@@ -14139,6 +15217,15 @@
 msgstr ""
 
 msgid ""
+"``comparisoncontext``\n"
+"    Number of lines of context to show in side-by-side file comparison. If\n"
+"    negative or the value ``full``, whole files are shown. Default is 5.\n"
+"    This setting can be overridden by a ``context`` request parameter to "
+"the\n"
+"    ``comparison`` command, taking the same values."
+msgstr ""
+
+msgid ""
 "``hidden``\n"
 "    Whether to hide the repository in the hgwebdir index.\n"
 "    Default is False."
@@ -14858,7 +15945,7 @@
 
 msgid ""
 "Close changeset\n"
-"    See 'Changeset, close'."
+"    See 'Head, closed branch'"
 msgstr ""
 
 msgid ""
@@ -14969,6 +16056,13 @@
 msgstr ""
 
 msgid ""
+"Draft\n"
+"    Changesets in the draft phase have not been shared with publishing\n"
+"    repositories and may thus be safely changed by history-modifying\n"
+"    extensions. See :hg:`help phases`."
+msgstr ""
+
+msgid ""
 "Graph\n"
 "    See DAG and :hg:`help graphlog`."
 msgstr ""
@@ -14999,6 +16093,11 @@
 msgstr ""
 
 msgid ""
+"    Closed heads can be re-opened by committing new changeset as the\n"
+"    child of the changeset that marks a head as closed."
+msgstr ""
+
+msgid ""
 "Head, repository\n"
 "    A topological head which has not been closed."
 msgstr ""
@@ -15099,6 +16198,19 @@
 msgstr ""
 
 msgid ""
+"Phase\n"
+"    A per-changeset state tracking how the changeset has been or\n"
+"    should be shared. See :hg:`help phases`."
+msgstr ""
+
+msgid ""
+"Public\n"
+"    Changesets in the public phase have been shared with publishing\n"
+"    repositories and are therefore considered immutable. See :hg:`help\n"
+"    phases`."
+msgstr ""
+
+msgid ""
 "Pull\n"
 "    An operation in which changesets in a remote repository which are\n"
 "    not in the local repository are brought into the local\n"
@@ -15173,6 +16285,12 @@
 msgstr ""
 
 msgid ""
+"Secret\n"
+"    Changesets in the secret phase may not be shared via push, pull,\n"
+"    or clone. See :hg:`help phases`."
+msgstr ""
+
+msgid ""
 "Tag\n"
 "    An alternative name given to a changeset. Tags can be used in all\n"
 "    places where Mercurial expects a changeset ID, e.g., with\n"
@@ -15224,8 +16342,10 @@
 
 msgid ""
 "Synopsis\n"
-"--------"
-msgstr ""
+"========"
+msgstr ""
+"Synopsis\n"
+"========"
 
 msgid ""
 "The Mercurial system uses a file called ``.hgignore`` in the root\n"
@@ -15235,10 +16355,10 @@
 
 msgid ""
 "Description\n"
-"-----------"
+"==========="
 msgstr ""
 "Beskrivning\n"
-"-----------"
+"==========="
 
 msgid ""
 "The working directory of a Mercurial repository will often contain\n"
@@ -15276,6 +16396,13 @@
 msgstr ""
 
 msgid ""
+"Files that are already tracked are not affected by .hgignore, even\n"
+"if they appear in .hgignore. An untracked file X can be explicitly\n"
+"added with :hg:`add X`, even if X would be excluded by a pattern\n"
+"in .hgignore."
+msgstr ""
+
+msgid ""
 "An ignore file is a plain text file consisting of a list of patterns,\n"
 "with one pattern per line. Empty lines are skipped. The ``#``\n"
 "character is treated as a comment character, and the ``\\`` character\n"
@@ -15316,9 +16443,17 @@
 msgstr ""
 
 msgid ""
+".. note::\n"
+"  Patterns specified in other than ``.hgignore`` are always rooted.\n"
+"  Please see :hg:`help patterns` for details."
+msgstr ""
+
+msgid ""
 "Example\n"
-"-------"
-msgstr ""
+"======="
+msgstr ""
+"Exempel\n"
+"======="
 
 msgid "Here is an example ignore file. ::"
 msgstr ""
@@ -15342,21 +16477,22 @@
 
 msgid ""
 "Mercurial's internal web server, hgweb, can serve either a single\n"
-"repository, or a collection of them. In the latter case, a special\n"
-"configuration file can be used to specify the repository paths to use\n"
-"and global web configuration options."
+"repository, or a tree of repositories. In the second case, repository\n"
+"paths and global options can be defined using a dedicated\n"
+"configuration file common to :hg:`serve`, ``hgweb.wsgi``,\n"
+"``hgweb.cgi`` and ``hgweb.fcgi``."
 msgstr ""
 "Mercurials interna webbserver, hgweb, kan endera dela ut ett arkiv, eller\n"
-"flera stycken. I det senare fallet, så kan en speciell konfigurationsfil\n"
-"användas för att ange arkivsökvägarna att använda och globala alternativ\n"
-"för webbkonfiguration"
-
-msgid ""
-"This file uses the same syntax as other Mercurial configuration files,\n"
-"but only the following sections are recognized:"
+"en trädstruktur med arkiv. I det andra fallet kan arkivsökvägar och\n"
+"globala flaggor definieras med en dedikerad konfigurationsfil som delas\n"
+"av :hg:`serve`, ``hgweb.wsgi``, ``hgweb.cgi`` och ``hgweb.fcgi``."
+
+msgid ""
+"This file uses the same syntax as other Mercurial configuration files\n"
+"but recognizes only the following sections:"
 msgstr ""
 "Denna fil använder samma syntax som Mercurials övriga konfigurationsfiler,\n"
-"men bara de följande sektionerna används:"
+"men använder bara de följande sektionerna:"
 
 msgid ""
 "  - web\n"
@@ -15367,83 +16503,82 @@
 "  - paths\n"
 "  - collections"
 
-msgid ""
-"The ``web`` section can specify all the settings described in the web\n"
-"section of the hgrc(5) documentation. See :hg:`help config` for\n"
-"information on where to find the manual page."
-msgstr ""
-"Sektionen ``web`` kan ange alla inställningar som beskrivs i web-sektionen\n"
-"i hgrc(5)-dokumentationen. Se :hg:`help config` för information om var\n"
-"manualsidan hittas."
-
-msgid ""
-"The ``paths`` section provides mappings of physical repository\n"
-"paths to virtual ones. For instance::"
-msgstr ""
-"Sektionen ``paths`` mappar upp fysiska arkiv till virtuella. Exempelvis::"
+msgid "The ``web`` options are thorougly described in :hg:`help config`."
+msgstr "Flaggorna för ``web`` finns utförligt beskrivna i :hg:`help config`."
+
+msgid ""
+"The ``paths`` section maps URL paths to paths of repositories in the\n"
+"filesystem. hgweb will not expose the filesystem directly - only\n"
+"Mercurial repositories can be published and only according to the\n"
+"configuration."
+msgstr ""
+"Sektionen ``paths`` matchar URL-sökvägar till arkivsökvägar i filsystemet.\n"
+"hgweb kommer inte att exponera filsystemet direkt - bara Mercurial-arkiv\n"
+"kan publiceras och bara som konfigurationen medger."
+
+msgid ""
+"The left hand side is the path in the URL. Note that hgweb reserves\n"
+"subpaths like ``rev`` or ``file``, try using different names for\n"
+"nested repositories to avoid confusing effects."
+msgstr ""
+"Den vänstra sidan är sökvägen i URL:en. Notera att hgweb reserverar\n"
+"undersökvägar som ``rev`` eller ``file``, försök att anvädna andra namn\n"
+"för nästlade arkiv för att undvika förbryllande fenomen."
+
+msgid ""
+"The right hand side is the path in the filesystem. If the specified\n"
+"path ends with ``*`` or ``**`` the filesystem will be searched\n"
+"recursively for repositories below that point.\n"
+"With ``*`` it will not recurse into the repositories it finds (except for\n"
+"``.hg/patches``).\n"
+"With ``**`` it will also search inside repository working directories\n"
+"and possibly find subrepositories."
+msgstr ""
+"Den högra sidan är sökvägen i filsystemet. Om den angivna sökvägen slutar\n"
+"med ``*`` eller ``**`` så kommer filsystemet att genomsökas rekursivt\n"
+"efter arkiv från den punkten.\n"
+"Med ``*`` så kommer sökningen inte att fortsätta in i funna arkiv (med\n"
+"undantag för ``.hg/patches``).\n"
+"Med ``**`` så kommer sökningen att fortsätta i arkivets arbetskopia och\n"
+"möjligen hitta underarkiv."
+
+msgid "In this example::"
+msgstr "I det här exemplet::"
 
 msgid ""
 "  [paths]\n"
-"  projects/a = /foo/bar\n"
-"  projects/b = /baz/quux\n"
-"  web/root = /real/root/*\n"
-"  / = /real/root2/*\n"
-"  virtual/root2 = /real/root2/**"
+"  /projects/a = /srv/tmprepos/a\n"
+"  /projects/b = c:/repos/b\n"
+"  / = /srv/repos/*\n"
+"  /user/bob = /home/bob/repos/**"
 msgstr ""
 "  [paths]\n"
-"  projekt/a = /foo/bar\n"
-"  projekt/b = /baz/quux\n"
-"  web/rot = /riktig/rot/*\n"
-"  / = /riktig/rot2/*\n"
-"  virtuell/rot2 = /riktig/rot2/**"
+"  /projects/a = /srv/tmprepos/a\n"
+"  /projects/b = c:/repos/b\n"
+"  / = /srv/repos/*\n"
+"  /user/bob = /home/bob/repos/**"
 
 msgid ""
 "- The first two entries make two repositories in different directories\n"
 "  appear under the same directory in the web interface\n"
-"- The third entry maps every Mercurial repository found in '/real/root'\n"
-"  into 'web/root'. This format is preferred over the [collections] one,\n"
-"  since using absolute paths as configuration keys is not supported on "
-"every\n"
-"  platform (especially on Windows).\n"
-"- The fourth entry is a special case mapping all repositories in\n"
-"  '/real/root2' in the root of the virtual directory.\n"
-"- The fifth entry recursively finds all repositories under the real\n"
-"  root, and maps their relative paths under the virtual root."
-msgstr ""
-"- De första två posterna gör att två arkiv i olika kataloger visas under\n"
-"  samma katalog i webbgränssnittet\n"
-"- Den tredje posten mappar alla Mercurial-arkiv som hittas i '/riktig/rot'\n"
-"  i 'web/rot'. Detta format är att föredra över det i [collections],\n"
-"  eftersom användning av absoluta sökvägar som konfigurationsnycklar inte\n"
-"  stödjs på alla plattformar (särskilt Windows).\n"
-"- Den fjärde posten är ett specialfall som mappar alla arkiv i\n"
-"  '/riktig/rot2' i roten på den virtuella katalogen.\n"
-"- Den femte posten söker rekursivt efter alla arkiv under den riktiga\n"
-"  roten, och mappar deras relativa sökvägar under den virtuella roten."
-
-msgid ""
-"The ``collections`` section provides mappings of trees of physical\n"
-"repositories paths to virtual ones, though the paths syntax is generally\n"
-"preferred. For instance::"
-msgstr ""
-"Sektionen ``collections`` mappar upp träd av fysiska arkiv till virtuella,\n"
-"men användning av paths är generellt sett att föredra. Exempel::"
-
-msgid ""
-"  [collections]\n"
-"  /foo = /foo"
-msgstr ""
-"  [collections]\n"
-"  /foo = /foo"
-
-msgid ""
-"Here, the left side will be stripped off all repositories found in the\n"
-"right side. Thus ``/foo/bar`` and ``foo/quux/baz`` will be listed as\n"
-"``bar`` and ``quux/baz`` respectively.\n"
-msgstr ""
-"Här kommer den vänstra sidan att strippas från alla arkiv som hittas i den\n"
-"högra sidan. Det innebär att ``/foo/bar`` och ``foo/quux/baz`` kommer att\n"
-"visas som ``bar``och ``quux/baz``.\n"
+"- The third entry will publish every Mercurial repository found in\n"
+"  ``/srv/repos/``, for instance the repository ``/srv/repos/quux/``\n"
+"  will appear as ``http://server/quux/``\n"
+"- The fourth entry will publish both ``http://server/user/bob/quux/``\n"
+"  and ``http://server/user/bob/quux/testsubrepo/``"
+msgstr ""
+"- De första två posterna gör att två arkiv i olika kataloger dyker upp\n"
+"  under samma katalog i webbgränssnittet\n"
+"- Den tredje posten publicerar alla Mercurial-arkiv som hittas i\n"
+"  ``/srv/repos/``, exempelvis kommer arkivet ``/srv/repos/quux/``\n"
+"  att dyka upp som ``http://server/quux/``\n"
+"- Den fjärde posten publicerar både ``http://server/user/bob/quux/``\n"
+"  och ``http://server/user/bob/quux/testsubrepo/``"
+
+msgid ""
+"The ``collections`` section is deprecated and has been superseeded by\n"
+"``paths``.\n"
+msgstr "Sektionen ``collections`` är föråldrad och har ersatts av ``paths``.\n"
 
 msgid "To merge files Mercurial uses merge tools."
 msgstr ""
@@ -15473,8 +16608,10 @@
 
 msgid ""
 "Available merge tools\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
-msgstr ""
+"====================="
+msgstr ""
+"Tillgängliga sammanfogningsverktyg\n"
+"=================================="
 
 msgid ""
 "External merge tools and their properties are configured in the\n"
@@ -15497,44 +16634,7 @@
 "merge tools are:"
 msgstr ""
 
-msgid ""
-"``internal:merge``\n"
-"   Uses the internal non-interactive simple merge algorithm for merging\n"
-"   files. It will fail if there are any conflicts and leave markers in\n"
-"   the partially merged file."
-msgstr ""
-
-msgid ""
-"``internal:fail``\n"
-"   Rather than attempting to merge files that were modified on both\n"
-"   branches, it marks them as unresolved. The resolve command must be\n"
-"   used to resolve these conflicts."
-msgstr ""
-
-msgid ""
-"``internal:local``\n"
-"   Uses the local version of files as the merged version."
-msgstr ""
-
-msgid ""
-"``internal:other``\n"
-"   Uses the other version of files as the merged version."
-msgstr ""
-
-msgid ""
-"``internal:prompt``\n"
-"   Asks the user which of the local or the other version to keep as\n"
-"   the merged version."
-msgstr ""
-
-msgid ""
-"``internal:dump``\n"
-"   Creates three versions of the files to merge, containing the\n"
-"   contents of local, other and base. These files can then be used to\n"
-"   perform a merge manually. If the file to be merged is named\n"
-"   ``a.txt``, these files will accordingly be named ``a.txt.local``,\n"
-"   ``a.txt.other`` and ``a.txt.base`` and they will be placed in the\n"
-"   same directory as ``a.txt``."
+msgid ".. internaltoolsmarker"
 msgstr ""
 
 msgid ""
@@ -15545,7 +16645,7 @@
 
 msgid ""
 "Choosing a merge tool\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"====================="
 msgstr ""
 
 msgid "Mercurial uses these rules when deciding which merge tool to use:"
@@ -15660,6 +16760,12 @@
 msgstr "Alternativa mönsternotationer måste anges explicit."
 
 msgid ""
+".. note::\n"
+"  Patterns specified in ``.hgignore`` are not rooted. \n"
+"  Please see :hg:`help hgignore` for details."
+msgstr ""
+
+msgid ""
 "To use a plain path name without any pattern matching, start it with\n"
 "``path:``. These path names must completely match starting at the\n"
 "current repository root."
@@ -15749,8 +16855,10 @@
 
 msgid ""
 "What are phases?\n"
-"----------------"
-msgstr ""
+"================"
+msgstr ""
+"Vad är faser?\n"
+"============="
 
 msgid ""
 "Phases are a system for tracking which changesets have been or should\n"
@@ -15771,13 +16879,15 @@
 "These phases are ordered (public < draft < secret) and no changeset\n"
 "can be in a lower phase than its ancestors. For instance, if a\n"
 "changeset is public, all its ancestors are also public. Lastly,\n"
-"changeset phases only be changed towards the public phase."
+"changeset phases should only be changed towards the public phase."
 msgstr ""
 
 msgid ""
 "How are phases managed?\n"
-"-----------------------"
-msgstr ""
+"======================="
+msgstr ""
+"Hur hanteras faser?\n"
+"==================="
 
 msgid ""
 "For the most part, phases should work transparently. By default, a\n"
@@ -15794,8 +16904,10 @@
 
 msgid ""
 "Phases and servers\n"
-"------------------"
-msgstr ""
+"=================="
+msgstr ""
+"Faser och servrar\n"
+"================="
 
 msgid "Normally, all servers are ``publishing`` by default. This means::"
 msgstr ""
@@ -15843,10 +16955,10 @@
 
 msgid ""
 "Examples\n"
-"--------"
+"========"
 msgstr ""
 "Exempel\n"
-"-------"
+"======="
 
 msgid " - list changesets in draft or secret phase::"
 msgstr " - visa ändringar i draft- eller secret-fasen::"
@@ -15873,6 +16985,12 @@
 msgid "     hg log --template \"{rev} {phase}\\n\""
 msgstr "     hg log --template \"{rev} {phase}\\n\""
 
+msgid " - resynchronize draft changesets relative to a remote repository::"
+msgstr ""
+
+msgid "     hg phase -fd 'outgoing(URL)' "
+msgstr "     hg phase -fd 'outgoing(URL)' "
+
 msgid ""
 "See :hg:`help phase` for more information on manually manipulating phases.\n"
 msgstr ""
@@ -15909,22 +17027,21 @@
 "fullängdsidentifierare."
 
 msgid ""
-"Any other string is treated as a tag or branch name. A tag name is a\n"
-"symbolic name associated with a revision identifier. A branch name\n"
-"denotes the tipmost revision of that branch. Tag and branch names must\n"
-"not contain the \":\" character."
-msgstr ""
-"Alla andra strängar behandlas som märkes- eller grennamn. Ett märkesnamn är\n"
-"ett symboliskt namn associerad med en revisionsidentifierare. Ett grennamn\n"
-"anger den högsta revisionen på den grenen. Märkes- och grennamn kan inte\n"
-"innehålla tecknet \":\"."
-
-msgid ""
-"The reserved name \"tip\" is a special tag that always identifies the\n"
-"most recent revision."
-msgstr ""
-"Det reserverade namnet \"tip\" är ett speciellt märke som alltid\n"
-"identifierar den senaste revisionen."
+"Any other string is treated as a bookmark, tag, or branch name. A\n"
+"bookmark is a movable pointer to a revision. A tag is a permanent name\n"
+"associated with a revision. A branch name denotes the tipmost revision\n"
+"of that branch. Bookmark, tag, and branch names must not contain the \":\"\n"
+"character."
+msgstr ""
+"Alla andra strängar behandlas som bokmärken, märken eller grennamn. Ett\n"
+"bokmärke är en flyttbar pekare till en revision. Ett märkesnamn är ett\n"
+"permanent namn associerad med en revisionsidentifierare. Ett grennamn\n"
+"anger den högsta revisionen på den grenen. Bokmärken, märken och\n"
+"grennamn kan inte innehålla tecknet \":\"."
+
+msgid "The reserved name \"tip\" always identifies the most recent revision."
+msgstr ""
+"Det reserverade namnet \"tip\" identifierar alltid den senaste revisionen."
 
 msgid ""
 "The reserved name \"null\" indicates the null revision. This is the\n"
@@ -16129,7 +17246,8 @@
 msgstr ""
 
 msgid ""
-"2. Nested repository references. They are defined in ``.hgsub`` and\n"
+"2. Nested repository references. They are defined in ``.hgsub``, which\n"
+"   should be placed in the root of working directory, and\n"
 "   tell where the subrepository checkouts come from. Mercurial\n"
 "   subrepositories are referenced like:"
 msgstr ""
@@ -16159,7 +17277,8 @@
 msgstr ""
 
 msgid ""
-"3. Nested repository states. They are defined in ``.hgsubstate`` and\n"
+"3. Nested repository states. They are defined in ``.hgsubstate``, which\n"
+"   is placed in the root of working directory, and\n"
 "   capture whatever information is required to restore the\n"
 "   subrepositories to the state they were committed in a parent\n"
 "   repository changeset. Mercurial automatically record the nested\n"
@@ -16174,7 +17293,7 @@
 msgid ""
 "\n"
 "Adding a Subrepository\n"
-"----------------------"
+"======================"
 msgstr ""
 
 msgid ""
@@ -16188,7 +17307,7 @@
 
 msgid ""
 "Synchronizing a Subrepository\n"
-"-----------------------------"
+"============================="
 msgstr ""
 
 msgid ""
@@ -16207,7 +17326,7 @@
 
 msgid ""
 "Deleting a Subrepository\n"
-"------------------------"
+"========================"
 msgstr ""
 
 msgid ""
@@ -16217,7 +17336,7 @@
 
 msgid ""
 "Interaction with Mercurial Commands\n"
-"-----------------------------------"
+"==================================="
 msgstr ""
 
 msgid ""
@@ -16301,7 +17420,7 @@
 
 msgid ""
 "Remapping Subrepositories Sources\n"
-"---------------------------------"
+"================================="
 msgstr ""
 
 msgid ""
@@ -16496,6 +17615,9 @@
 msgid "destination directory: %s\n"
 msgstr "destinationskatalog: %s\n"
 
+msgid "empty destination path is not valid"
+msgstr "en tom destinationssökväg är inte giltig"
+
 #, python-format
 msgid "destination '%s' already exists"
 msgstr "destinationen '%s' finns redan"
@@ -16559,8 +17681,12 @@
 msgstr ""
 
 #, python-format
+msgid "(binary file %s, hash: %s)"
+msgstr "(binär fil %s, hash: %s)"
+
+#, python-format
 msgid " %d files changed, %d insertions(+), %d deletions(-)\n"
-msgstr ""
+msgstr "%d filer ändrade, %d tillägg(+), %d raderingar(-)\n"
 
 #, python-format
 msgid "calling hook %s: %s\n"
@@ -16616,6 +17742,10 @@
 msgid "warning: %s hook %s\n"
 msgstr ""
 
+#, python-format
+msgid "loading %s hook failed:\n"
+msgstr ""
+
 msgid "kb"
 msgstr "kb"
 
@@ -16708,14 +17838,6 @@
 msgid "working copy of .hgtags is changed (please commit .hgtags manually)"
 msgstr ""
 
-#, python-format
-msgid "working directory has unknown parent '%s'!"
-msgstr ""
-
-#, python-format
-msgid "unknown revision '%s'"
-msgstr ""
-
 msgid "abandoned transaction found - run hg recover"
 msgstr ""
 
@@ -16777,12 +17899,16 @@
 msgstr ""
 "kan inte delvis arkivera en sammanfogning (ange inte filer eller mönster"
 
+#, python-format
+msgid "commit with new subrepo %s excluded"
+msgstr ""
+
+msgid "use --subrepos for recursive commit"
+msgstr ""
+
 msgid "can't commit subrepos without .hgsub"
 msgstr "kan inte arkivera underarkiv utan .hgsub"
 
-msgid "use --subrepos for recursive commit"
-msgstr ""
-
 msgid "file not found!"
 msgstr "filen hittades inte!"
 
@@ -16792,12 +17918,15 @@
 msgid "file not tracked!"
 msgstr "filen spåras inte!"
 
+msgid "cannot commit merge with missing files"
+msgstr "kan inte arkivera sammanfogning när filer saknas"
+
 msgid "unresolved merge conflicts (see hg help resolve)"
 msgstr "olösta sammanfogningskonflikter (se hg help resolve)"
 
 #, python-format
 msgid "committing subrepository %s\n"
-msgstr ""
+msgstr "arkiverar underarkiv %s\n"
 
 #, python-format
 msgid "note: commit message saved in %s\n"
@@ -16817,10 +17946,24 @@
 "deldragningar kan inte göras eftersom det andra arkivet inte stödjer "
 "changegroupsubset."
 
+msgid "destination does not support push"
+msgstr "destinationen stödjer inte tryckning"
+
+#, python-format
+msgid "push includes an obsolete changeset: %s!"
+msgstr "tryckningen innehåller en förlegad ändring: %s!"
+
+#, python-format
+msgid "push includes an unstable changeset: %s!"
+msgstr "tryckningen innehåller en instabil ändring: %s!"
+
 #, python-format
 msgid "updating %s to public failed!\n"
 msgstr "uppdatera %s till publik misslyckades!\n"
 
+msgid "failed to push obsolete markers!\n"
+msgstr "kunde inte trycka förlegad-markörerna!\n"
+
 #, python-format
 msgid "%d changesets found\n"
 msgstr "%d ändringar hittades\n"
@@ -16865,8 +18008,8 @@
 msgid "added %d changesets with %d changes to %d files%s\n"
 msgstr "lade till %d ändringar med %d modifikationer i %d filer%s\n"
 
-msgid "Unexpected response from remote server:"
-msgstr ""
+msgid "unexpected response from remote server:"
+msgstr "oväntat svar från server:"
 
 msgid "operation forbidden by server"
 msgstr ""
@@ -16884,6 +18027,9 @@
 msgid "%d files to transfer, %s of data\n"
 msgstr "%d filer att överföra, %s med data\n"
 
+msgid "clone"
+msgstr ""
+
 #, python-format
 msgid "transferred %s in %.1f seconds (%s/sec)\n"
 msgstr "överförde %s på %.1f sekunder (%s/sek)\n"
@@ -17024,6 +18170,10 @@
 msgid "note: possible conflict - %s was renamed multiple times to:\n"
 msgstr "notera: möjlig konflikt - %s döptes om flera gånger till:\n"
 
+#, python-format
+msgid "note: possible conflict - %s was deleted and renamed to:\n"
+msgstr "notera: möjlig konflikt - %s raderades och döptes om till:\n"
+
 msgid "merging with a working directory ancestor has no effect"
 msgstr ""
 
@@ -17071,6 +18221,24 @@
 msgstr "Varning!"
 
 #, python-format
+msgid "parsing obsolete marker: unknown version %r"
+msgstr "tolkar förlegad-markering: okänd version %r"
+
+#, python-format
+msgid ""
+"parsing obsolete marker: metadata is too short, %d bytes expected, got %d"
+msgstr ""
+"tolkar förlegad-markering: metadata är för kort, %d bytes förväntades, fick "
+"%d"
+
+#, python-format
+msgid "unknown key: %r"
+msgstr "okänd nyckel: %r"
+
+msgid "unexpected old value"
+msgstr "oväntat gammalt värde"
+
+#, python-format
 msgid "unexpected token: %s"
 msgstr ""
 
@@ -17130,11 +18298,16 @@
 msgid "bad hunk #%d old text line %d"
 msgstr ""
 
-msgid "could not extract binary patch"
-msgstr ""
-
-#, python-format
-msgid "binary patch is %d bytes, not %d"
+#, python-format
+msgid "could not extract \"%s\" binary data"
+msgstr ""
+
+#, python-format
+msgid "could not decode \"%s\" binary patch: %s"
+msgstr ""
+
+#, python-format
+msgid "\"%s\" length is %d bytes, should be %d"
 msgstr ""
 
 #, python-format
@@ -17145,6 +18318,10 @@
 msgstr ""
 
 #, python-format
+msgid "failed to synchronize metadata for \"%s\""
+msgstr ""
+
+#, python-format
 msgid "cannot create %s: destination already exists"
 msgstr ""
 
@@ -17164,6 +18341,13 @@
 msgstr ""
 
 #, python-format
+msgid "cannot %s; remote repository does not support the %r capability"
+msgstr "kan inte %s; fjärrarkivet har inte %r-förmågan"
+
+msgid "cannot change null revision phase"
+msgstr "kan inte ändra fas för null-revisionen"
+
+#, python-format
 msgid "ignoring inconsistent public root from remote: %s\n"
 msgstr ""
 
@@ -17172,6 +18356,10 @@
 msgstr ""
 
 #, python-format
+msgid "phases.new-commit: not a valid phase name ('%s')"
+msgstr ""
+
+#, python-format
 msgid "exited with status %d"
 msgstr ""
 
@@ -17187,6 +18375,10 @@
 msgstr ""
 
 #, python-format
+msgid "error removing %s: %s\n"
+msgstr "fel vid radering av %s: %s\n"
+
+#, python-format
 msgid "strip failed, full bundle stored in '%s'\n"
 msgstr "avlägsning misslyckades, hela bunten lagrad i '%s'\n"
 
@@ -17195,7 +18387,7 @@
 msgstr "avlägsning misslyckades, partiell bunt lagrad i '%s'\n"
 
 #, python-format
-msgid "cannot %s; remote repository does not support the %r capability"
+msgid "revlog decompress error: %s"
 msgstr ""
 
 #, python-format
@@ -17298,9 +18490,11 @@
 "    - ``range``              : csets taking part in the bisection\n"
 "    - ``pruned``             : csets that are goods, bads or skipped\n"
 "    - ``untested``           : csets whose fate is yet unknown\n"
-"    - ``ignored``            : csets ignored due to DAG topology"
-msgstr ""
-
+"    - ``ignored``            : csets ignored due to DAG topology\n"
+"    - ``current``            : the cset currently being bisected"
+msgstr ""
+
+#. i18n: "bisect" is a keyword
 msgid "bisect requires a string"
 msgstr "bisect kräver en sträng"
 
@@ -17309,6 +18503,13 @@
 "    The named bookmark or all bookmarks."
 msgstr ""
 
+msgid ""
+"    If `name` starts with `re:`, the remainder of the name is treated as\n"
+"    a regular expression. To match a bookmark that actually starts with `re:"
+"`,\n"
+"    use the prefix `literal:`."
+msgstr ""
+
 #. i18n: "bookmark" is a keyword
 msgid "bookmark takes one or no arguments"
 msgstr "bookmark tar ett eller inga argument"
@@ -17317,6 +18518,10 @@
 msgid "the argument to bookmark must be a string"
 msgstr "argumentet till bookmark måste vara en sträng"
 
+#, python-format
+msgid "no bookmarks exist that match '%s'"
+msgstr ""
+
 msgid ""
 "``branch(string or set)``\n"
 "    All changesets belonging to the given branch or the branches of the "
@@ -17325,6 +18530,13 @@
 msgstr ""
 
 msgid ""
+"    If `string` starts with `re:`, the remainder of the name is treated as\n"
+"    a regular expression. To match a branch that actually starts with `re:"
+"`,\n"
+"    use the prefix `literal:`."
+msgstr ""
+
+msgid ""
 "``children(set)``\n"
 "    Child changesets of changesets in set."
 msgstr ""
@@ -17346,7 +18558,21 @@
 
 #. i18n: "contains" is a keyword
 msgid "contains requires a pattern"
-msgstr "contain kräver ett mönster"
+msgstr "contains kräver ett mönster"
+
+msgid ""
+"``converted([id])``\n"
+"    Changesets converted from the given identifier in the old repository if\n"
+"    present, or all converted changesets if no identifier is specified."
+msgstr ""
+
+#. i18n: "converted" is a keyword
+msgid "converted takes one or no arguments"
+msgstr "converted tar ett eller inga argument"
+
+#. i18n: "converted" is a keyword
+msgid "converted requires a revision"
+msgstr "converted kräver en revision"
 
 msgid ""
 "``date(interval)``\n"
@@ -17372,18 +18598,68 @@
 msgstr ""
 
 msgid ""
+"``destination([set])``\n"
+"    Changesets that were created by a graft, transplant or rebase "
+"operation,\n"
+"    with the given revisions specified as the source.  Omitting the optional "
+"set\n"
+"    is the same as passing all()."
+msgstr ""
+
+msgid ""
 "``draft()``\n"
 "    Changeset in draft phase."
 msgstr ""
 
+#. i18n: "draft" is a keyword
 msgid "draft takes no arguments"
 msgstr "draft tar inga argument"
 
 msgid ""
+"``extinct()``\n"
+"    obsolete changeset with obsolete descendant only."
+msgstr ""
+
+#. i18n: "extinct" is a keyword
+msgid "extinct takes no arguments"
+msgstr "extinct tar inga argument"
+
+msgid ""
+"``extra(label, [value])``\n"
+"    Changesets with the given label in the extra metadata, with the given\n"
+"    optional value."
+msgstr ""
+
+msgid ""
+"    If `value` starts with `re:`, the remainder of the value is treated as\n"
+"    a regular expression. To match a value that actually starts with `re:`,\n"
+"    use the prefix `literal:`."
+msgstr ""
+
+#. i18n: "extra" is a keyword
+msgid "extra takes at least 1 and at most 2 arguments"
+msgstr "extra tar minst 1 och som mest 2 argument"
+
+#. i18n: "extra" is a keyword
+msgid "first argument to extra must be a string"
+msgstr "första argumentet till extra måste vara en sträng"
+
+#. i18n: "extra" is a keyword
+msgid "second argument to extra must be a string"
+msgstr "andra argumentet till extra måste vara en sträng"
+
+msgid ""
 "``filelog(pattern)``\n"
 "    Changesets connected to the specified filelog."
 msgstr ""
 
+msgid ""
+"    For performance reasons, ``filelog()`` does not show every changeset\n"
+"    that affects the requested file(s). See :hg:`help log` for details. For\n"
+"    a slower, more accurate result, use ``file()``."
+msgstr ""
+
+#. i18n: "filelog" is a keyword
 msgid "filelog requires a pattern"
 msgstr "filelog kräver ett mönster"
 
@@ -17392,6 +18668,14 @@
 "    An alias for limit()."
 msgstr ""
 
+#, python-format
+msgid "%s takes no arguments or a filename"
+msgstr "%s tar inga argument eller ett filnamn"
+
+#, python-format
+msgid "%s expected a filename"
+msgstr "%s förväntade sig ett filnamn"
+
 msgid ""
 "``follow([file])``\n"
 "    An alias for ``::.`` (ancestors of the working copy's first parent).\n"
@@ -17399,13 +18683,6 @@
 "    including copies."
 msgstr ""
 
-#. i18n: "follow" is a keyword
-msgid "follow takes no arguments or a filename"
-msgstr "follow tar inga argument eller ett filnamn"
-
-msgid "follow expected a filename"
-msgstr "follow förväntade sig ett filnamn"
-
 msgid ""
 "``all()``\n"
 "    All changesets, the same as ``0:tip``."
@@ -17430,11 +18707,37 @@
 msgid "invalid match pattern: %s"
 msgstr "ogiltigt träffmönster: %s"
 
+#. i18n: "_matchfiles" is a keyword
+msgid "_matchfiles requires at least one argument"
+msgstr "_matchfiles kräver minst ett argument"
+
+#. i18n: "_matchfiles" is a keyword
+msgid "_matchfiles requires string arguments"
+msgstr "_matchfiles kräver strängargument"
+
+#. i18n: "_matchfiles" is a keyword
+msgid "_matchfiles expected at most one revision"
+msgstr "_matchfiles förväntade sig som mest en revision"
+
+#. i18n: "_matchfiles" is a keyword
+msgid "_matchfiles expected at most one default mode"
+msgstr "_matchfiles förvändate sig som mest ett standardläge"
+
+#. i18n: "_matchfiles" is a keyword
+#, python-format
+msgid "invalid _matchfiles prefix: %s"
+msgstr "ogiltigt _matchfiles-prefix: %s"
+
 msgid ""
 "``file(pattern)``\n"
 "    Changesets affecting files matched by pattern."
 msgstr ""
 
+msgid ""
+"    For a faster but less accurate result, consider using ``filelog()``\n"
+"    instead."
+msgstr ""
+
 #. i18n: "file" is a keyword
 msgid "file requires a pattern"
 msgstr "file kräver ett mönster"
@@ -17539,6 +18842,28 @@
 msgstr "id kräver en sträng"
 
 msgid ""
+"``obsolete()``\n"
+"    Mutable changeset with a newer version."
+msgstr ""
+
+#. i18n: "obsolete" is a keyword
+msgid "obsolete takes no arguments"
+msgstr "obsolete tar inga argument"
+
+msgid ""
+"``origin([set])``\n"
+"    Changesets that were specified as a source for the grafts, transplants "
+"or\n"
+"    rebases that created the given revisions.  Omitting the optional set is "
+"the\n"
+"    same as passing all().  If a changeset created by these operations is "
+"itself\n"
+"    specified as a source for one of these operations, only the source "
+"changeset\n"
+"    for the first operation is selected."
+msgstr ""
+
+msgid ""
 "``outgoing([path])``\n"
 "    Changesets not found in the specified destination repository, or the\n"
 "    default push location."
@@ -17578,10 +18903,17 @@
 msgstr ""
 
 msgid ""
+"    If any of specified revisions is not present in the local repository,\n"
+"    the query is normally aborted. But this predicate allows the query\n"
+"    to continue even in such cases."
+msgstr ""
+
+msgid ""
 "``public()``\n"
 "    Changeset in public phase."
 msgstr ""
 
+#. i18n: "public" is a keyword
 msgid "public takes no arguments"
 msgstr "public tar inga argument"
 
@@ -17631,13 +18963,63 @@
 msgstr "rev förväntar sig ett nummer"
 
 msgid ""
+"``matching(revision [, field])``\n"
+"    Changesets in which a given set of fields match the set of fields in "
+"the\n"
+"    selected revision or set."
+msgstr ""
+
+msgid ""
+"    To match more than one field pass the list of fields to match separated\n"
+"    by spaces (e.g. ``author description``)."
+msgstr ""
+
+msgid ""
+"    Valid fields are most regular revision fields and some special fields."
+msgstr ""
+
+msgid ""
+"    Regular revision fields are ``description``, ``author``, ``branch``,\n"
+"    ``date``, ``files``, ``phase``, ``parents``, ``substate``, ``user``\n"
+"    and ``diff``.\n"
+"    Note that ``author`` and ``user`` are synonyms. ``diff`` refers to the\n"
+"    contents of the revision. Two revisions matching their ``diff`` will\n"
+"    also match their ``files``."
+msgstr ""
+
+msgid ""
+"    Special fields are ``summary`` and ``metadata``:\n"
+"    ``summary`` matches the first line of the description.\n"
+"    ``metadata`` is equivalent to matching ``description user date``\n"
+"    (i.e. it matches the main metadata fields)."
+msgstr ""
+
+msgid ""
+"    ``metadata`` is the default field which is used when no fields are\n"
+"    specified. You can match more than one field at a time."
+msgstr ""
+
+#. i18n: "matching" is a keyword
+msgid "matching takes 1 or 2 arguments"
+msgstr "matching tar 1 eller 2 argument"
+
+#. i18n: "matching" is a keyword
+msgid "matching requires a string as its second argument"
+msgstr "matching kräver en sträng som sitt andra argument"
+
+#. i18n: "matching" is a keyword
+#, python-format
+msgid "unexpected field name passed to matching: %s"
+msgstr "oväntat fältnamn skickat till matching: %s"
+
+msgid ""
 "``reverse(set)``\n"
 "    Reverse order of set."
 msgstr ""
 
 msgid ""
 "``roots(set)``\n"
-"    Changesets with no parent changeset in set."
+"    Changesets in set with no parent changeset in set."
 msgstr ""
 
 msgid ""
@@ -17645,6 +19027,7 @@
 "    Changeset in secret phase."
 msgstr ""
 
+#. i18n: "secret" is a keyword
 msgid "secret takes no arguments"
 msgstr "secret tar inga argument"
 
@@ -17669,6 +19052,7 @@
 msgid "sort requires one or two arguments"
 msgstr "sort kräver ett eller två argument"
 
+#. i18n: "sort" is a keyword
 msgid "sort spec must be a string"
 msgstr "sort-spec måste vara en sträng"
 
@@ -17676,6 +19060,10 @@
 msgid "unknown sort key %r"
 msgstr "okänd sorteringsnyckel %r"
 
+#, python-format
+msgid "invalid regular expression: %s"
+msgstr "ogiltigt reguljärt uttryck: %s"
+
 msgid ""
 "``tag([name])``\n"
 "    The specified tag by name, or all tagged revisions if no name is given."
@@ -17689,11 +19077,31 @@
 msgid "the argument to tag must be a string"
 msgstr "argumentet till tag måste vara en sträng"
 
+#, python-format
+msgid "no tags exist that match '%s'"
+msgstr "inga märken finns som matchar '%s'"
+
+msgid ""
+"``unstable()``\n"
+"    Unstable changesets are non-obsolete with obsolete descendants."
+msgstr ""
+
+#. i18n: "unstable" is a keyword
+msgid "unstable takes no arguments"
+msgstr "unstable tar inga argument"
+
 msgid ""
 "``user(string)``\n"
 "    User name contains string. The match is case-insensitive."
 msgstr ""
 
+msgid ""
+"    If `string` starts with `re:`, the remainder of the string is treated "
+"as\n"
+"    a regular expression. To match a user that actually contains `re:`, use\n"
+"    the prefix `literal:`."
+msgstr ""
+
 msgid "can't negate that"
 msgstr "kan inte negera det"
 
@@ -17701,6 +19109,10 @@
 msgstr "inte en symbol"
 
 #, python-format
+msgid "infinite expansion of revset alias \"%s\" detected"
+msgstr ""
+
+#, python-format
 msgid "invalid number of arguments: %s"
 msgstr "felaktigt antal argument: %s"
 
@@ -17739,6 +19151,9 @@
 msgid "could not symlink to %r: %s"
 msgstr ""
 
+msgid "empty revision range"
+msgstr "tomt revisionsset"
+
 #, python-format
 msgid "recording removal of %s as rename to %s (%d%% similar)\n"
 msgstr ""
@@ -17899,6 +19314,10 @@
 msgstr ""
 
 #, python-format
+msgid "invalid subrepository revision specifier in .hgsubstate line %d"
+msgstr ""
+
+#, python-format
 msgid "bad subrepository pattern in %s: %s"
 msgstr ""
 
@@ -17971,6 +19390,10 @@
 msgstr "trycker underarkivet %s till %s\n"
 
 #, python-format
+msgid "reverting subrepo %s\n"
+msgstr "återställer underarkivet %s\n"
+
+#, python-format
 msgid "'svn' executable not found for subrepo '%s'"
 msgstr ""
 
@@ -17980,10 +19403,22 @@
 msgid "cannot commit svn externals"
 msgstr ""
 
+msgid "cannot commit missing svn entries"
+msgstr ""
+
+msgid "failed to commit svn changes"
+msgstr "kunde inte arkivera svn-ändringar"
+
 #, python-format
 msgid "not removing repo %s because it has changes.\n"
 msgstr "raderar inte arkivet %s eftersom den har ändringar.\n"
 
+msgid "cannot retrieve git version"
+msgstr "kan inte hämta git-version"
+
+msgid "git subrepo requires at least 1.6.0 or later"
+msgstr "git-underarkiv kräver minst 1.6.0 eller senare"
+
 #, python-format
 msgid "revision %s does not exist in subrepo %s\n"
 msgstr "revisionen %s existerar inte i underarkivet %s\n"
@@ -18010,14 +19445,14 @@
 #, python-format
 msgid ""
 "no branch checked out in subrepo %s\n"
-"cannot push revision %s"
+"cannot push revision %s\n"
 msgstr ""
 "ingen gren uthämtar i underarkivet %s\n"
-"kan inte trycka revison %s"
+"kan inte trycka revison %s\n"
 
 #, python-format
 msgid "%s, line %s: %s\n"
-msgstr ""
+msgstr "%s, rad %s: %s\n"
 
 msgid "cannot parse entry"
 msgstr ""
@@ -18109,7 +19544,26 @@
 "    XML entities."
 msgstr ""
 
-msgid ":person: Any text. Returns the text before an email address."
+msgid ""
+":person: Any text. Returns the name before an email address,\n"
+"    interpreting it as per RFC 5322."
+msgstr ""
+
+msgid ""
+"    >>> person('foo@bar')\n"
+"    'foo'\n"
+"    >>> person('Foo Bar <foo@bar>')\n"
+"    'Foo Bar'\n"
+"    >>> person('\"Foo Bar\" <foo@bar>')\n"
+"    'Foo Bar'\n"
+"    >>> person('\"Foo \"buz\" Bar\" <foo@bar>')\n"
+"    'Foo \"buz\" Bar'\n"
+"    >>> # The following are invalid, but do exist in real-life\n"
+"    ...\n"
+"    >>> person('Foo \"buz\" Bar <foo@bar>')\n"
+"    'Foo \"buz\" Bar'\n"
+"    >>> person('\"Foo Bar <foo@bar>')\n"
+"    'Foo Bar'"
 msgstr ""
 
 msgid ""
@@ -18160,7 +19614,12 @@
 "    \"foo bar\" becomes \"foo%20bar\"."
 msgstr ""
 
-msgid ":user: Any text. Returns the user portion of an email address."
+msgid ""
+":user: Any text. Returns a short representation of a user name or email\n"
+"    address."
+msgstr ""
+
+msgid ":emailuser: Any text. Returns the user portion of an email address."
 msgstr ""
 
 msgid ":author: String. The unmodified author of the changeset."
@@ -18248,6 +19707,13 @@
 msgid ":tags: List of strings. Any tags associated with the changeset."
 msgstr ""
 
+msgid ""
+":parents: List of strings. The parents of the changeset in \"rev:node\"\n"
+"    format. If the changeset has only one \"natural\" parent (the "
+"predecessor\n"
+"    revision) nothing is shown."
+msgstr ""
+
 #, python-format
 msgid "unknown method '%s'"
 msgstr "okänd metod '%s'"
@@ -18301,12 +19767,12 @@
 msgstr "har redan ändringen "
 
 #, python-format
-msgid "Not trusting file %s from untrusted user %s, group %s\n"
-msgstr "Litar inte på filen %s från opålitlig användare %s, grupp %s\n"
-
-#, python-format
-msgid "Ignored: %s\n"
-msgstr ""
+msgid "not trusting file %s from untrusted user %s, group %s\n"
+msgstr "litar inte på filen %s från opålitlig användare %s, grupp %s\n"
+
+#, python-format
+msgid "ignored: %s\n"
+msgstr "ignorerad: %s\n"
 
 #, python-format
 msgid "(deprecated '%%' in path %s=%s from %s)\n"
@@ -18324,8 +19790,8 @@
 msgstr ""
 
 #, python-format
-msgid "No username found, using '%s' instead\n"
-msgstr "Inget användarnamn hittades, använder '%s' istället\n"
+msgid "no username found, using '%s' instead\n"
+msgstr "inget användarnamn hittades, använder '%s' istället\n"
 
 msgid "no username supplied (see \"hg help config\")"
 msgstr "inget användarnamn angivet (se \"hg help config\")"
@@ -18341,10 +19807,7 @@
 msgstr ""
 
 msgid "password: "
-msgstr ""
-
-msgid "edit failed"
-msgstr ""
+msgstr "lösenord: "
 
 msgid "http authorization required"
 msgstr "http-autenticiering krävs"
--- a/mercurial/cmdutil.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/cmdutil.py	Thu Aug 02 18:33:40 2012 +0200
@@ -996,7 +996,7 @@
         defrange = '%s:0' % repo['.'].rev()
     else:
         defrange = '-1:0'
-    revs = scmutil.revrange(repo, opts['rev'] or [defrange])
+    revs = scmutil.revrange(repo, opts.get('rev') or [defrange])
     if not revs:
         return []
     wanted = set()
--- a/mercurial/commands.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/commands.py	Thu Aug 02 18:33:40 2012 +0200
@@ -190,15 +190,15 @@
     ``.hgignore``. As with add, these changes take effect at the next
     commit.
 
-    Use the -s/--similarity option to detect renamed files. With a
-    parameter greater than 0, this compares every removed file with
-    every added file and records those similar enough as renames. This
+    Use the -s/--similarity option to detect renamed files. This
     option takes a percentage between 0 (disabled) and 100 (files must
-    be identical) as its parameter. Detecting renamed files this way
+    be identical) as its parameter. With a parameter greater than 0,
+    this compares every removed file with every added file and records
+    those similar enough as renames. Detecting renamed files this way
     can be expensive. After using this option, :hg:`status -C` can be
-    used to check which files were identified as moved or renamed.
-    If this option is not specified, only renames of identical files
-    are detected.
+    used to check which files were identified as moved or renamed. If
+    not specified, -s/--similarity defaults to 100 and only renames of
+    identical files are detected.
 
     Returns 0 if all files are successfully added.
     """
@@ -1050,7 +1050,7 @@
                                                 portable=True)
         cg = repo.getlocalbundle('bundle', outgoing)
     if not cg:
-        scmutil.nochangesfound(ui, outgoing and outgoing.excluded)
+        scmutil.nochangesfound(ui, repo, outgoing and outgoing.excluded)
         return 1
 
     changegroup.writebundle(cg, fname, bundletype)
@@ -1298,10 +1298,20 @@
                                editor=editor,
                                extra=extra)
 
+        current = repo._bookmarkcurrent
+        marks = old.bookmarks()
         node = cmdutil.amend(ui, repo, commitfunc, old, extra, pats, opts)
         if node == old.node():
             ui.status(_("nothing changed\n"))
             return 1
+        elif marks:
+            ui.debug('moving bookmarks %r from %s to %s\n' %
+                     (marks, old.hex(), hex(node)))
+            for bm in marks:
+                repo._bookmarks[bm] = node
+                if bm == current:
+                    bookmarks.setcurrent(repo, bm)
+            bookmarks.write(repo)
     else:
         e = cmdutil.commiteditor
         if opts.get('force_editor'):
@@ -2057,17 +2067,31 @@
          _('[OBSOLETED [REPLACEMENT] [REPL... ]'))
 def debugobsolete(ui, repo, precursor=None, *successors, **opts):
     """create arbitrary obsolete marker"""
+    def parsenodeid(s):
+        try:
+            # We do not use revsingle/revrange functions here to accept
+            # arbitrary node identifiers, possibly not present in the
+            # local repository.
+            n = bin(s)
+            if len(n) != len(nullid):
+                raise TypeError()
+            return n
+        except TypeError:
+            raise util.Abort('changeset references must be full hexadecimal '
+                             'node identifiers')
+
     if precursor is not None:
         metadata = {}
         if 'date' in opts:
             metadata['date'] = opts['date']
         metadata['user'] = opts['user'] or ui.username()
-        succs = tuple(bin(succ) for succ in successors)
+        succs = tuple(parsenodeid(succ) for succ in successors)
         l = repo.lock()
         try:
             tr = repo.transaction('debugobsolete')
             try:
-                repo.obsstore.create(tr, bin(precursor), succs, 0, metadata)
+                repo.obsstore.create(tr, parsenodeid(precursor), succs, 0,
+                                     metadata)
                 tr.close()
             finally:
                 tr.release()
@@ -3273,7 +3297,7 @@
             rst.append(_("\nadditional help topics:\n\n"))
             topics = []
             for names, header, doc in help.helptable:
-                topics.append((sorted(names, key=len, reverse=True)[0], header))
+                topics.append((names[0], header))
             for t, desc in topics:
                 rst.append(" :%s: %s\n" % (t, desc))
 
@@ -3506,7 +3530,9 @@
             parents = ctx.parents()
             changed = ""
             if default or id or num:
-                changed = util.any(repo.status()) and "+" or ""
+                if (util.any(repo.status())
+                    or util.any(ctx.sub(s).dirty() for s in ctx.substate)):
+                    changed = '+'
             if default or id:
                 output = ["%s%s" %
                   ('+'.join([hexfunc(p.node()) for p in parents]), changed)]
@@ -4048,7 +4074,7 @@
         getrenamed = templatekw.getrenamedfn(repo, endrev=endrev)
 
     df = False
-    if opts["date"]:
+    if opts.get("date"):
         df = util.matchdate(opts["date"])
 
     branches = opts.get('branch', []) + opts.get('only_branch', [])
@@ -4473,7 +4499,7 @@
         try:
             # set phase
             if not revs:
-                 raise util.Abort(_('empty revision set'))
+                raise util.Abort(_('empty revision set'))
             nodes = [repo[r].node() for r in revs]
             olddata = repo._phasecache.getphaserevs(repo)[:]
             phases.advanceboundary(repo, targetphase, nodes)
@@ -5416,7 +5442,7 @@
                 # current bookmark not in parent ctx marks
                 pass
         for m in marks:
-          ui.write(' ' + m, label='log.bookmark')
+            ui.write(' ' + m, label='log.bookmark')
         ui.write('\n', label='log.bookmark')
 
     st = list(repo.status(unknown=True))[:6]
@@ -5641,6 +5667,11 @@
         if opts.get('edit'):
             message = ui.edit(message, ui.username())
 
+        # don't allow tagging the null rev
+        if (not opts.get('remove') and
+            scmutil.revsingle(repo, rev_).rev() == nullrev):
+            raise util.Abort(_("null revision specified"))
+
         repo.tag(names, r, message, opts.get('local'), opts.get('user'), date)
     finally:
         release(lock, wlock)
--- a/mercurial/discovery.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/discovery.py	Thu Aug 02 18:33:40 2012 +0200
@@ -95,7 +95,7 @@
     (inclusive) are included. If you already know the local repo's heads,
     passing them in onlyheads is faster than letting them be recomputed here.
 
-    If commoninc is given, it must the the result of a prior call to
+    If commoninc is given, it must be the result of a prior call to
     findcommonincoming(repo, other, force) to avoid recomputing it here.
 
     If portable is given, compute more conservative common and missingheads,
@@ -115,8 +115,7 @@
     elif onlyheads is None:
         # use visible heads as it should be cached
         og.missingheads = visibleheads(repo)
-        # extinct changesets are silently ignored
-        og.excluded = [ctx.node() for ctx in repo.set('secret()')]
+        og.excluded = [ctx.node() for ctx in repo.set('secret() or extinct()')]
     else:
         # compute common, missing and exclude secret stuff
         sets = repo.changelog.findcommonmissing(og.commonheads, onlyheads)
@@ -125,12 +124,10 @@
         og.excluded = excluded = []
         for node in allmissing:
             ctx = repo[node]
-            if not ctx.extinct():
-                # extinct changesets are silently ignored
-                if ctx.phase() >= phases.secret:
-                    excluded.append(node)
-                else:
-                    missing.append(node)
+            if ctx.phase() >= phases.secret or ctx.extinct():
+                excluded.append(node)
+            else:
+                missing.append(node)
         if len(missing) == len(allmissing):
             missingheads = onlyheads
         else: # update missing heads
--- a/mercurial/dispatch.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/dispatch.py	Thu Aug 02 18:33:40 2012 +0200
@@ -169,7 +169,7 @@
             try: # usually it is in the form (errno, strerror)
                 reason = inst.reason.args[1]
             except (AttributeError, IndexError):
-                 # it might be anything, for example a string
+                # it might be anything, for example a string
                 reason = inst.reason
             ui.warn(_("abort: error: %s\n") % reason)
         elif util.safehasattr(inst, "args") and inst.args[0] == errno.EPIPE:
@@ -225,8 +225,9 @@
                 break
             if compare not in testedwith.split() and testedwith != 'internal':
                 tested = [tuplever(v) for v in testedwith.split()]
-                nearest = max([t for t in tested if t < ct])
-                if nearest < worst[1]:
+                lower = [t for t in tested if t < ct]
+                nearest = max(lower or tested)
+                if worst[0] is None or nearest < worst[1]:
                     worst = name, nearest, report
         if worst[0] is not None:
             name, testedwith, report = worst
--- a/mercurial/encoding.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/encoding.py	Thu Aug 02 18:33:40 2012 +0200
@@ -168,8 +168,9 @@
 def lower(s):
     "best-effort encoding-aware case-folding of local string s"
     try:
-        return s.encode('ascii').lower()
-    except UnicodeError:
+        s.decode('ascii') # throw exception for non-ASCII character
+        return s.lower()
+    except UnicodeDecodeError:
         pass
     try:
         if isinstance(s, localstr):
@@ -189,6 +190,11 @@
 def upper(s):
     "best-effort encoding-aware case-folding of local string s"
     try:
+        s.decode('ascii') # throw exception for non-ASCII character
+        return s.upper()
+    except UnicodeDecodeError:
+        pass
+    try:
         if isinstance(s, localstr):
             u = s._utf8.decode("utf-8")
         else:
--- a/mercurial/help.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/help.py	Thu Aug 02 18:33:40 2012 +0200
@@ -143,24 +143,24 @@
     (["patterns"], _("File Name Patterns"), loaddoc('patterns')),
     (['environment', 'env'], _('Environment Variables'),
      loaddoc('environment')),
-    (['revs', 'revisions'], _('Specifying Single Revisions'),
+    (['revisions', 'revs'], _('Specifying Single Revisions'),
      loaddoc('revisions')),
-    (['mrevs', 'multirevs'], _('Specifying Multiple Revisions'),
+    (['multirevs', 'mrevs'], _('Specifying Multiple Revisions'),
      loaddoc('multirevs')),
-    (['revset', 'revsets'], _("Specifying Revision Sets"), loaddoc('revsets')),
-    (['fileset', 'filesets'], _("Specifying File Sets"), loaddoc('filesets')),
+    (['revsets', 'revset'], _("Specifying Revision Sets"), loaddoc('revsets')),
+    (['filesets', 'fileset'], _("Specifying File Sets"), loaddoc('filesets')),
     (['diffs'], _('Diff Formats'), loaddoc('diffs')),
-    (['merge-tools'], _('Merge Tools'), loaddoc('merge-tools')),
+    (['merge-tools', 'mergetools'], _('Merge Tools'), loaddoc('merge-tools')),
     (['templating', 'templates', 'template', 'style'], _('Template Usage'),
      loaddoc('templates')),
     (['urls'], _('URL Paths'), loaddoc('urls')),
     (["extensions"], _("Using Additional Features"), extshelp),
-   (["subrepo", "subrepos"], _("Subrepositories"), loaddoc('subrepos')),
-   (["hgweb"], _("Configuring hgweb"), loaddoc('hgweb')),
-   (["glossary"], _("Glossary"), loaddoc('glossary')),
-   (["hgignore", "ignore"], _("Syntax for Mercurial Ignore Files"),
-    loaddoc('hgignore')),
-   (["phases"], _("Working with Phases"), loaddoc('phases')),
+    (["subrepos", "subrepo"], _("Subrepositories"), loaddoc('subrepos')),
+    (["hgweb"], _("Configuring hgweb"), loaddoc('hgweb')),
+    (["glossary"], _("Glossary"), loaddoc('glossary')),
+    (["hgignore", "ignore"], _("Syntax for Mercurial Ignore Files"),
+     loaddoc('hgignore')),
+    (["phases"], _("Working with Phases"), loaddoc('phases')),
 ])
 
 # Map topics to lists of callable taking the current topic help and
--- a/mercurial/help/config.txt	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/help/config.txt	Thu Aug 02 18:33:40 2012 +0200
@@ -13,7 +13,7 @@
 ``ui.verbose``, respectively. See the Syntax section below.
 
 Files
------
+=====
 
 Mercurial reads configuration data from several files, if they exist.
 These files do not exist by default and you will have to create the
@@ -86,7 +86,7 @@
     order until one or more configuration files are detected.
 
 Syntax
-------
+======
 
 A configuration file consists of sections, led by a ``[section]`` header
 and followed by ``name = value`` entries (sometimes called
@@ -171,14 +171,14 @@
 (e.g., ``foo"bar baz`` is the list of ``foo"bar`` and ``baz``).
 
 Sections
---------
+========
 
 This section describes the different sections that may appear in a
 Mercurial configuration file, the purpose of each section, its possible
 keys, and their possible values.
 
 ``alias``
-"""""""""
+---------
 
 Defines command aliases.
 Aliases allow you to define your own commands in terms of other
@@ -238,7 +238,7 @@
 
 
 ``annotate``
-""""""""""""
+------------
 
 Settings used when displaying file annotations. All values are
 Booleans and default to False. See ``diff`` section for related
@@ -255,7 +255,7 @@
 
 
 ``auth``
-""""""""
+--------
 
 Authentication credentials for HTTP authentication. This section
 allows you to store usernames and passwords for use when logging
@@ -322,7 +322,7 @@
 
 
 ``decode/encode``
-"""""""""""""""""
+-----------------
 
 Filters for transforming files on checkout/checkin. This would
 typically be used for newline processing or other
@@ -369,7 +369,7 @@
 
 
 ``defaults``
-""""""""""""
+------------
 
 (defaults are deprecated. Don't use them. Use aliases instead)
 
@@ -389,7 +389,7 @@
 
 
 ``diff``
-""""""""
+--------
 
 Settings used when displaying diffs. Everything except for ``unified``
 is a Boolean and defaults to False. See ``annotate`` section for
@@ -417,7 +417,7 @@
     Number of lines of context to show.
 
 ``email``
-"""""""""
+---------
 
 Settings for extensions that send email messages.
 
@@ -472,7 +472,7 @@
 
 
 ``extensions``
-""""""""""""""
+--------------
 
 Mercurial has an extension mechanism for adding new features. To
 enable an extension, create an entry for it in this section.
@@ -499,7 +499,7 @@
 
 
 ``format``
-""""""""""
+----------
 
 ``usestore``
     Enable or disable the "store" repository format which improves
@@ -526,7 +526,7 @@
     repositories will be compatible with Mercurial before version 1.7.
 
 ``graph``
-"""""""""
+---------
 
 Web graph view configuration. This section let you change graph
 elements display properties by branches, for instance to make the
@@ -554,7 +554,7 @@
     Set branch edges color in hexadecimal RGB notation.
 
 ``hooks``
-"""""""""
+---------
 
 Commands or Python functions that get automatically executed by
 various actions such as starting or finishing a commit. Multiple
@@ -733,7 +733,7 @@
 
 
 ``hostfingerprints``
-""""""""""""""""""""
+--------------------
 
 Fingerprints of the certificates of known HTTPS servers.
 A HTTPS connection to a server with a fingerprint configured here will
@@ -751,7 +751,7 @@
 
 
 ``http_proxy``
-""""""""""""""
+--------------
 
 Used to access web-based Mercurial repositories through a HTTP
 proxy.
@@ -775,7 +775,7 @@
     in ``http_proxy.no``. True or False. Default: False.
 
 ``merge-patterns``
-""""""""""""""""""
+------------------
 
 This section specifies merge tools to associate with particular file
 patterns. Tools matched here will take precedence over the default
@@ -789,7 +789,7 @@
   **.jpg = myimgmerge
 
 ``merge-tools``
-"""""""""""""""
+---------------
 
 This section configures external merge tools to use for file-level
 merges.
@@ -889,7 +889,7 @@
 
 
 ``patch``
-"""""""""
+---------
 
 Settings used when applying patches, for instance through the 'import'
 command or with Mercurial Queues extension.
@@ -907,7 +907,7 @@
 
 
 ``paths``
-"""""""""
+---------
 
 Assigns symbolic names to repositories. The left side is the
 symbolic name, and the right gives the directory or URL that is the
@@ -924,7 +924,7 @@
     is specified.
 
 ``phases``
-""""""""""
+----------
 
 Specifies default handling of phases. See :hg:`help phases` for more
 information about working with phases.
@@ -940,7 +940,7 @@
     Default: draft
 
 ``profiling``
-"""""""""""""
+-------------
 
 Specifies profiling type, format, and file output. Two profilers are
 supported: an instrumenting profiler (named ``ls``), and a sampling
@@ -988,12 +988,12 @@
     stderr
 
 ``revsetalias``
-"""""""""""""""
+---------------
 
 Alias definitions for revsets. See :hg:`help revsets` for details.
 
 ``server``
-""""""""""
+----------
 
 Controls generic server settings.
 
@@ -1019,7 +1019,7 @@
     present. Default is False.
 
 ``smtp``
-""""""""
+--------
 
 Configuration for extensions that need to send email messages.
 
@@ -1048,7 +1048,7 @@
 
 
 ``subpaths``
-""""""""""""
+------------
 
 Subrepository source URLs can go stale if a remote server changes name
 or becomes temporarily unavailable. This section lets you define
@@ -1065,12 +1065,12 @@
 
 rewrites ``http://server/foo-hg/`` into ``http://hg.server/foo/``.
 
-Relative subrepository paths are first made absolute, and the the
+Relative subrepository paths are first made absolute, and the
 rewrite rules are then applied on the full (absolute) path. The rules
 are applied in definition order.
 
 ``trusted``
-"""""""""""
+-----------
 
 Mercurial will not use the settings in the
 ``.hg/hgrc`` file from a repository if it doesn't belong to a trusted
@@ -1094,7 +1094,7 @@
 
 
 ``ui``
-""""""
+------
 
 User interface controls.
 
@@ -1213,7 +1213,7 @@
 
 
 ``web``
-"""""""
+-------
 
 Web interface configuration. The settings in this section apply to
 both the builtin webserver (started by :hg:`serve`) and the script you
@@ -1269,13 +1269,6 @@
     be present in this list. The contents of the allow_push list are
     examined after the deny_push list.
 
-``guessmime``
-    Control MIME types for raw download of file content.
-    Set to True to let hgweb guess the content type from the file
-    extension. This will serve HTML files as ``text/html`` and might
-    allow cross-site scripting attacks when serving untrusted
-    repositories. Default is False.
-
 ``allow_read``
     If the user has not already been denied repository access due to
     the contents of deny_read, this list determines whether to grant
@@ -1335,6 +1328,12 @@
     collapses each collection of repositories found within a subdirectory
     into a single entry for that subdirectory. Default is False.
 
+``comparisoncontext``
+    Number of lines of context to show in side-by-side file comparison. If
+    negative or the value ``full``, whole files are shown. Default is 5.
+    This setting can be overridden by a ``context`` request parameter to the
+    ``comparison`` command, taking the same values.
+
 ``contact``
     Name or email address of the person in charge of the repository.
     Defaults to ui.username or ``$EMAIL`` or "unknown" if unset or empty.
@@ -1377,11 +1376,12 @@
 ``errorlog``
     Where to output the error log. Default is stderr.
 
-``comparisoncontext``
-    Number of lines of context to show in side-by-side file comparison. If
-    negative or the value ``full``, whole files are shown. Default is 5.
-    This setting can be overridden by a ``context`` request parameter to the
-    ``comparison`` command, taking the same values.
+``guessmime``
+    Control MIME types for raw download of file content.
+    Set to True to let hgweb guess the content type from the file
+    extension. This will serve HTML files as ``text/html`` and might
+    allow cross-site scripting attacks when serving untrusted
+    repositories. Default is False.
 
 ``hidden``
     Whether to hide the repository in the hgwebdir index.
@@ -1400,16 +1400,20 @@
     Base URL to use for logos. If unset, ``http://mercurial.selenic.com/``
     will be used.
 
-``name``
-    Repository name to use in the web interface. Default is current
-    working directory.
-
 ``maxchanges``
     Maximum number of changes to list on the changelog. Default is 10.
 
 ``maxfiles``
     Maximum number of files to list per changeset. Default is 10.
 
+``maxshortchanges``
+    Maximum number of changes to list on the shortlog, graph or filelog
+    pages. Default is 60.
+
+``name``
+    Repository name to use in the web interface. Default is current
+    working directory.
+
 ``port``
     Port to listen on. Default is 8000.
 
--- a/mercurial/help/hgignore.txt	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/help/hgignore.txt	Thu Aug 02 18:33:40 2012 +0200
@@ -1,12 +1,12 @@
 Synopsis
---------
+========
 
 The Mercurial system uses a file called ``.hgignore`` in the root
 directory of a repository to control its behavior when it searches
 for files that it is not currently tracking.
 
 Description
------------
+===========
 
 The working directory of a Mercurial repository will often contain
 files that should not be tracked by Mercurial. These include backup
@@ -39,7 +39,7 @@
 in .hgignore.
 
 Syntax
-------
+======
 
 An ignore file is a plain text file consisting of a list of patterns,
 with one pattern per line. Empty lines are skipped. The ``#``
@@ -73,7 +73,7 @@
   Please see :hg:`help patterns` for details.
 
 Example
--------
+=======
 
 Here is an example ignore file. ::
 
--- a/mercurial/help/merge-tools.txt	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/help/merge-tools.txt	Thu Aug 02 18:33:40 2012 +0200
@@ -17,7 +17,7 @@
 programs but relies on external tools for that.
 
 Available merge tools
-"""""""""""""""""""""
+=====================
 
 External merge tools and their properties are configured in the
 merge-tools configuration section - see hgrc(5) - but they can often just
@@ -40,7 +40,7 @@
 not handle symlinks or binary files.
 
 Choosing a merge tool
-"""""""""""""""""""""
+=====================
 
 Mercurial uses these rules when deciding which merge tool to use:
 
--- a/mercurial/help/phases.txt	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/help/phases.txt	Thu Aug 02 18:33:40 2012 +0200
@@ -1,5 +1,5 @@
 What are phases?
-----------------
+================
 
 Phases are a system for tracking which changesets have been or should
 be shared. This helps prevent common mistakes when modifying history
@@ -17,7 +17,7 @@
 changeset phases should only be changed towards the public phase.
 
 How are phases managed?
------------------------
+=======================
 
 For the most part, phases should work transparently. By default, a
 changeset is created in the draft phase and is moved into the public
@@ -29,7 +29,7 @@
 if needed. See :hg:`help -v phase` for examples.
 
 Phases and servers
-------------------
+==================
 
 Normally, all servers are ``publishing`` by default. This means::
 
@@ -59,7 +59,7 @@
   publishing.
 
 Examples
---------
+========
 
  - list changesets in draft or secret phase::
 
--- a/mercurial/help/subrepos.txt	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/help/subrepos.txt	Thu Aug 02 18:33:40 2012 +0200
@@ -43,7 +43,7 @@
 
 
 Adding a Subrepository
-----------------------
+======================
 
 If ``.hgsub`` does not exist, create it and add it to the parent
 repository. Clone or checkout the external projects where you want it
@@ -53,7 +53,7 @@
 ``.hgsubstate`` and bind it to the committed changeset.
 
 Synchronizing a Subrepository
------------------------------
+=============================
 
 Subrepos do not automatically track the latest changeset of their
 sources. Instead, they are updated to the changeset that corresponds
@@ -66,13 +66,13 @@
 commit in the parent repository to record the new combination.
 
 Deleting a Subrepository
-------------------------
+========================
 
 To remove a subrepository from the parent repository, delete its
 reference from ``.hgsub``, then remove its files.
 
 Interaction with Mercurial Commands
------------------------------------
+===================================
 
 :add: add does not recurse in subrepos unless -S/--subrepos is
     specified.  However, if you specify the full path of a file in a
@@ -132,7 +132,7 @@
     can require network access when using subrepositories.
 
 Remapping Subrepositories Sources
----------------------------------
+=================================
 
 A subrepository source location may change during a project life,
 invalidating references stored in the parent repository history. To
--- a/mercurial/hg.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/hg.py	Thu Aug 02 18:33:40 2012 +0200
@@ -525,7 +525,7 @@
                                             force=opts.get('force'))
     o = outgoing.missing
     if not o:
-        scmutil.nochangesfound(repo.ui, outgoing.excluded)
+        scmutil.nochangesfound(repo.ui, repo, outgoing.excluded)
         return None
     return o
 
--- a/mercurial/hgweb/webcommands.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/hgweb/webcommands.py	Thu Aug 02 18:33:40 2012 +0200
@@ -8,7 +8,7 @@
 import os, mimetypes, re, cgi, copy
 import webutil
 from mercurial import error, encoding, archival, templater, templatefilters
-from mercurial.node import short, hex
+from mercurial.node import short, hex, nullid
 from mercurial.util import binary
 from common import paritygen, staticfile, get_contact, ErrorResponse
 from common import HTTP_OK, HTTP_FORBIDDEN, HTTP_NOT_FOUND
@@ -394,8 +394,7 @@
                 branches=webutil.nodebranchdict(web.repo, ctx))
 
 def tags(web, req, tmpl):
-    i = web.repo.tagslist()
-    i.reverse()
+    i = reversed(web.repo.tagslist())
     parity = paritygen(web.stripecount)
 
     def entries(notip=False, limit=0, **map):
@@ -466,8 +465,7 @@
                 latestentry=lambda **x: entries(1, **x))
 
 def summary(web, req, tmpl):
-    i = web.repo.tagslist()
-    i.reverse()
+    i = reversed(web.repo.tagslist())
 
     def tagentries(**map):
         parity = paritygen(web.stripecount)
@@ -588,6 +586,8 @@
 
 def comparison(web, req, tmpl):
     ctx = webutil.changectx(web.repo, req)
+    if 'file' not in req.form:
+        raise ErrorResponse(HTTP_NOT_FOUND, 'file not given')
     path = webutil.cleanpath(web.repo, req.form['file'][0])
     rename = path in ctx and webutil.renamelink(ctx[path]) or []
 
@@ -597,7 +597,39 @@
     else:
         context = parsecontext(web.config('web', 'comparisoncontext', '5'))
 
-    comparison = webutil.compare(tmpl, ctx, path, context)
+    def filelines(f):
+        if binary(f.data()):
+            mt = mimetypes.guess_type(f.path())[0]
+            if not mt:
+                mt = 'application/octet-stream'
+            return [_('(binary file %s, hash: %s)') % (mt, hex(f.filenode()))]
+        return f.data().splitlines()
+
+    if path in ctx:
+        fctx = ctx[path]
+        rightrev = fctx.filerev()
+        rightnode = fctx.filenode()
+        rightlines = filelines(fctx)
+        parents = fctx.parents()
+        if not parents:
+            leftrev = -1
+            leftnode = nullid
+            leftlines = ()
+        else:
+            pfctx = parents[0]
+            leftrev = pfctx.filerev()
+            leftnode = pfctx.filenode()
+            leftlines = filelines(pfctx)
+    else:
+        rightrev = -1
+        rightnode = nullid
+        rightlines = ()
+        fctx = ctx.parents()[0][path]
+        leftrev = fctx.filerev()
+        leftnode = fctx.filenode()
+        leftlines = filelines(fctx)
+
+    comparison = webutil.compare(tmpl, context, leftlines, rightlines)
     return tmpl('filecomparison',
                 file=path,
                 node=hex(ctx.node()),
@@ -607,8 +639,12 @@
                 author=ctx.user(),
                 rename=rename,
                 branch=webutil.nodebranchnodefault(ctx),
-                parent=webutil.parents(ctx),
-                child=webutil.children(ctx),
+                parent=webutil.parents(fctx),
+                child=webutil.children(fctx),
+                leftrev=leftrev,
+                leftnode=hex(leftnode),
+                rightrev=rightrev,
+                rightnode=hex(rightnode),
                 comparison=comparison)
 
 def annotate(web, req, tmpl):
@@ -781,7 +817,9 @@
 
 def graph(web, req, tmpl):
 
-    rev = webutil.changectx(web.repo, req).rev()
+    ctx = webutil.changectx(web.repo, req)
+    rev = ctx.rev()
+
     bg_height = 39
     revcount = web.maxshortchanges
     if 'revcount' in req.form:
@@ -794,20 +832,17 @@
     morevars = copy.copy(tmpl.defaults['sessionvars'])
     morevars['revcount'] = revcount * 2
 
-    max_rev = len(web.repo) - 1
-    revcount = min(max_rev, revcount)
-    revnode = web.repo.changelog.node(rev)
-    revnode_hex = hex(revnode)
-    uprev = min(max_rev, rev + revcount)
+    count = len(web.repo)
+    pos = rev
+    start = max(0, pos - revcount + 1)
+    end = min(count, start + revcount)
+    pos = end - 1
+
+    uprev = min(max(0, count - 1), rev + revcount)
     downrev = max(0, rev - revcount)
-    count = len(web.repo)
-    changenav = webutil.revnavgen(rev, revcount, count, web.repo.changectx)
-    startrev = rev
-    # if starting revision is less than 60 set it to uprev
-    if rev < web.maxshortchanges:
-        startrev = uprev
+    changenav = webutil.revnavgen(pos, revcount, count, web.repo.changectx)
 
-    dag = graphmod.dagwalker(web.repo, range(startrev, downrev - 1, -1))
+    dag = graphmod.dagwalker(web.repo, range(start, end)[::-1])
     tree = list(graphmod.colored(dag, web.repo))
 
     def getcolumns(tree):
@@ -879,7 +914,7 @@
                 canvasheight=canvasheight, bg_height=bg_height,
                 jsdata=lambda **x: graphdata(True, **x),
                 nodes=lambda **x: graphdata(False, **x),
-                node=revnode_hex, changenav=changenav)
+                node=ctx.hex(), changenav=changenav)
 
 def _getdoc(e):
     doc = e[0].__doc__
@@ -896,8 +931,7 @@
     if not topicname:
         def topics(**map):
             for entries, summary, _ in helpmod.helptable:
-                entries = sorted(entries, key=len)
-                yield {'topic': entries[-1], 'summary': summary}
+                yield {'topic': entries[0], 'summary': summary}
 
         early, other = [], []
         primary = lambda s: s.split('|')[0]
--- a/mercurial/hgweb/webutil.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/hgweb/webutil.py	Thu Aug 02 18:33:40 2012 +0200
@@ -6,10 +6,12 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2 or any later version.
 
-import os, mimetypes, copy
+import os, copy
 from mercurial import match, patch, scmutil, error, ui, util
 from mercurial.i18n import _
 from mercurial.node import hex, nullid
+from common import ErrorResponse
+from common import HTTP_NOT_FOUND
 import difflib
 
 def up(p):
@@ -154,11 +156,15 @@
     return ctx
 
 def filectx(repo, req):
+    if 'file' not in req.form:
+        raise ErrorResponse(HTTP_NOT_FOUND, 'file not given')
     path = cleanpath(repo, req.form['file'][0])
     if 'node' in req.form:
         changeid = req.form['node'][0]
+    elif 'filenode' in req.form:
+        changeid = req.form['filenode'][0]
     else:
-        changeid = req.form['filenode'][0]
+        raise ErrorResponse(HTTP_NOT_FOUND, 'node or filenode not given')
     try:
         fctx = repo[changeid][path]
     except error.RepoError:
@@ -221,17 +227,9 @@
     yield tmpl('diffblock', parity=parity.next(), blockno=blockno,
                lines=prettyprintlines(''.join(block), blockno))
 
-def compare(tmpl, ctx, path, context):
+def compare(tmpl, context, leftlines, rightlines):
     '''Generator function that provides side-by-side comparison data.'''
 
-    def filelines(f):
-        if util.binary(f.data()):
-            mt = mimetypes.guess_type(f.path())[0]
-            if not mt:
-                mt = 'application/octet-stream'
-            return [_('(binary file %s, hash: %s)') % (mt, hex(f.filenode()))]
-        return f.data().splitlines()
-
     def compline(type, leftlineno, leftline, rightlineno, rightline):
         lineid = leftlineno and ("l%s" % leftlineno) or ''
         lineid += rightlineno and ("r%s" % rightlineno) or ''
@@ -269,43 +267,12 @@
                                    rightlineno=i + 1,
                                    rightline=rightlines[i])
 
-    if path in ctx:
-        fctx = ctx[path]
-        rightrev = fctx.filerev()
-        rightnode = fctx.filenode()
-        rightlines = filelines(fctx)
-        parents = fctx.parents()
-        if not parents:
-            leftrev = -1
-            leftnode = nullid
-            leftlines = ()
-        else:
-            pfctx = parents[0]
-            leftrev = pfctx.filerev()
-            leftnode = pfctx.filenode()
-            leftlines = filelines(pfctx)
-    else:
-        rightrev = -1
-        rightnode = nullid
-        rightlines = ()
-        fctx = ctx.parents()[0][path]
-        leftrev = fctx.filerev()
-        leftnode = fctx.filenode()
-        leftlines = filelines(fctx)
-
     s = difflib.SequenceMatcher(None, leftlines, rightlines)
     if context < 0:
-        blocks = [tmpl('comparisonblock', lines=getblock(s.get_opcodes()))]
+        yield tmpl('comparisonblock', lines=getblock(s.get_opcodes()))
     else:
-        blocks = (tmpl('comparisonblock', lines=getblock(oc))
-                     for oc in s.get_grouped_opcodes(n=context))
-
-    yield tmpl('comparison',
-               leftrev=leftrev,
-               leftnode=hex(leftnode),
-               rightrev=rightrev,
-               rightnode=hex(rightnode),
-               blocks=blocks)
+        for oc in s.get_grouped_opcodes(n=context):
+            yield tmpl('comparisonblock', lines=getblock(oc))
 
 def diffstatgen(ctx):
     '''Generator function that provides the diffstat data.'''
--- a/mercurial/hook.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/hook.py	Thu Aug 02 18:33:40 2012 +0200
@@ -66,7 +66,7 @@
                              (hname, funcname))
     try:
         try:
-            # redirect IO descriptors the the ui descriptors so hooks
+            # redirect IO descriptors to the ui descriptors so hooks
             # that write directly to these don't mess up the command
             # protocol when running through the command server
             old = sys.stdout, sys.stderr, sys.stdin
--- a/mercurial/keepalive.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/keepalive.py	Thu Aug 02 18:33:40 2012 +0200
@@ -211,7 +211,7 @@
                 h.close()
 
     def _request_closed(self, request, host, connection):
-        """tells us that this request is now closed and the the
+        """tells us that this request is now closed and that the
         connection is ready for another request"""
         self._cm.set_ready(connection, 1)
 
--- a/mercurial/localrepo.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/localrepo.py	Thu Aug 02 18:33:40 2012 +0200
@@ -272,7 +272,7 @@
         return bookmarks.readcurrent(self)
 
     def _writebookmarks(self, marks):
-      bookmarks.write(self)
+        bookmarks.write(self)
 
     def bookmarkheads(self, bookmark):
         name = bookmark.split('@', 1)[0]
@@ -289,6 +289,10 @@
     @storecache('obsstore')
     def obsstore(self):
         store = obsolete.obsstore(self.sopener)
+        if store and not obsolete._enabled:
+            # message is rare enough to not be translated
+            msg = 'obsolete feature not enabled but %i markers found!\n'
+            self.ui.warn(msg % len(list(store)))
         return store
 
     @propertycache
@@ -996,6 +1000,9 @@
                         self.sjoin('phaseroots'))
         self.invalidate()
 
+        # Discard all cache entries to force reloading everything.
+        self._filecache.clear()
+
         parentgone = (parents[0] not in self.changelog.nodemap or
                       parents[1] not in self.changelog.nodemap)
         if parentgone:
@@ -1063,9 +1070,6 @@
                 pass
         self.invalidatecaches()
 
-        # Discard all cache entries to force reloading everything.
-        self._filecache.clear()
-
     def _lock(self, lockname, wait, releasefn, acquirefn, desc):
         try:
             l = lock.lock(lockname, 0, releasefn, desc=desc)
@@ -1499,6 +1503,9 @@
         # tag cache retrieval" case to work.
         self.invalidatecaches()
 
+        # Discard all cache entries to force reloading everything.
+        self._filecache.clear()
+
     def walk(self, match, node=None):
         '''
         walk recursively through the directory tree or a given
@@ -1783,12 +1790,16 @@
                 # should be seen as public
                 phases.advanceboundary(self, phases.public, subset)
 
-            remoteobs = remote.listkeys('obsolete')
-            if 'dump' in remoteobs:
-                if tr is None:
-                    tr = self.transaction(trname)
-                data = base85.b85decode(remoteobs['dump'])
-                self.obsstore.mergemarkers(tr, data)
+            if obsolete._enabled:
+                self.ui.debug('fetching remote obsolete markers')
+                remoteobs = remote.listkeys('obsolete')
+                if 'dump0' in remoteobs:
+                    if tr is None:
+                        tr = self.transaction(trname)
+                    for key in sorted(remoteobs, reverse=True):
+                        if key.startswith('dump'):
+                            data = base85.b85decode(remoteobs[key])
+                            self.obsstore.mergemarkers(tr, data)
             if tr is not None:
                 tr.close()
         finally:
@@ -1844,7 +1855,7 @@
 
                 if not outgoing.missing:
                     # nothing to push
-                    scmutil.nochangesfound(self.ui, outgoing.excluded)
+                    scmutil.nochangesfound(self.ui, self, outgoing.excluded)
                     ret = None
                 else:
                     # something to push
@@ -1951,12 +1962,18 @@
                         if not r:
                             self.ui.warn(_('updating %s to public failed!\n')
                                             % newremotehead)
-                if ('obsolete' in remote.listkeys('namespaces')
-                    and self.obsstore):
-                    data = self.listkeys('obsolete')['dump']
-                    r = remote.pushkey('obsolete', 'dump', '', data)
-                    if not r:
-                        self.ui.warn(_('failed to push obsolete markers!\n'))
+                self.ui.debug('try to push obsolete markers to remote\n')
+                if (obsolete._enabled and self.obsstore and
+                    'obsolete' in remote.listkeys('namespaces')):
+                    rslts = []
+                    remotedata = self.listkeys('obsolete')
+                    for key in sorted(remotedata, reverse=True):
+                        # reverse sort to ensure we end with dump0
+                        data = remotedata[key]
+                        rslts.append(remote.pushkey('obsolete', key, '', data))
+                    if [r for r in rslts if not r]:
+                        msg = _('failed to push some obsolete markers!\n')
+                        self.ui.warn(msg)
             finally:
                 if lock is not None:
                     lock.release()
@@ -2540,6 +2557,7 @@
     def pushkey(self, namespace, key, old, new):
         self.hook('prepushkey', throw=True, namespace=namespace, key=key,
                   old=old, new=new)
+        self.ui.debug('pushing key for "%s:%s"\n' % (namespace, key))
         ret = pushkey.push(self, namespace, key, old, new)
         self.hook('pushkey', namespace=namespace, key=key, old=old, new=new,
                   ret=ret)
@@ -2547,6 +2565,7 @@
 
     def listkeys(self, namespace):
         self.hook('prelistkeys', throw=True, namespace=namespace)
+        self.ui.debug('listing keys for "%s"\n' % namespace)
         values = pushkey.list(self, namespace)
         self.hook('listkeys', namespace=namespace, values=values)
         return values
--- a/mercurial/obsolete.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/obsolete.py	Thu Aug 02 18:33:40 2012 +0200
@@ -55,10 +55,16 @@
 from mercurial import util, base85
 from i18n import _
 
+# the obsolete feature is not mature enought to be enabled by default.
+# you have to rely on third party extension extension to enable this.
+_enabled = False
+
 _pack = struct.pack
 _unpack = struct.unpack
 
-
+# the obsolete feature is not mature enought to be enabled by default.
+# you have to rely on third party extension extension to enable this.
+_enabled = False
 
 # data used for parsing and writing
 _fmversion = 0
@@ -96,7 +102,7 @@
         if len(metadata) != mdsize:
             raise util.Abort(_('parsing obsolete marker: metadata is too '
                                'short, %d bytes expected, got %d')
-                             % (len(metadata), mdsize))
+                             % (mdsize, len(metadata)))
         off += mdsize
         yield (pre, sucs, flags, metadata)
 
@@ -194,6 +200,8 @@
 
         Take care of filtering duplicate.
         Return the number of new marker."""
+        if not _enabled:
+            raise util.Abort('obsolete feature is not enabled on this repo')
         new = [m for m in markers if m not in self._all]
         if new:
             f = self.sopener('obsstore', 'ab')
@@ -234,24 +242,46 @@
     if addheader:
         yield _pack('>B', _fmversion)
     for marker in markers:
-        pre, sucs, flags, metadata = marker
-        nbsuc = len(sucs)
-        format = _fmfixed + (_fmnode * nbsuc)
-        data = [nbsuc, len(metadata), flags, pre]
-        data.extend(sucs)
-        yield _pack(format, *data)
-        yield metadata
+        yield _encodeonemarker(marker)
+
+
+def _encodeonemarker(marker):
+    pre, sucs, flags, metadata = marker
+    nbsuc = len(sucs)
+    format = _fmfixed + (_fmnode * nbsuc)
+    data = [nbsuc, len(metadata), flags, pre]
+    data.extend(sucs)
+    return _pack(format, *data) + metadata
+
+# arbitrary picked to fit into 8K limit from HTTP server
+# you have to take in account:
+# - the version header
+# - the base85 encoding
+_maxpayload = 5300
 
 def listmarkers(repo):
     """List markers over pushkey"""
     if not repo.obsstore:
         return {}
-    markers = _encodemarkers(repo.obsstore, True)
-    return {'dump': base85.b85encode(''.join(markers))}
+    keys = {}
+    parts = []
+    currentlen = _maxpayload * 2  # ensure we create a new part
+    for marker in  repo.obsstore:
+        nextdata = _encodeonemarker(marker)
+        if (len(nextdata) + currentlen > _maxpayload):
+            currentpart = []
+            currentlen = 0
+            parts.append(currentpart)
+        currentpart.append(nextdata)
+        currentlen += len(nextdata)
+    for idx, part in enumerate(reversed(parts)):
+        data = ''.join([_pack('>B', _fmversion)] + part)
+        keys['dump%i' % idx] = base85.b85encode(data)
+    return keys
 
 def pushmarker(repo, key, old, new):
     """Push markers over pushkey"""
-    if key != 'dump':
+    if not key.startswith('dump'):
         repo.ui.warn(_('unknown key: %r') % key)
         return 0
     if old:
--- a/mercurial/patch.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/patch.py	Thu Aug 02 18:33:40 2012 +0200
@@ -634,7 +634,7 @@
             if self.mode is None:
                 self.mode = (False, False)
         if self.missing:
-             self.ui.warn(_("unable to find '%s' for patching\n") % self.fname)
+            self.ui.warn(_("unable to find '%s' for patching\n") % self.fname)
 
         self.hash = {}
         self.dirty = 0
@@ -1630,9 +1630,9 @@
     if opts.git or opts.upgrade:
         copy = copies.pathcopies(ctx1, ctx2)
 
-    difffn = (lambda opts, losedata:
-                  trydiff(repo, revs, ctx1, ctx2, modified, added, removed,
-                          copy, getfilectx, opts, losedata, prefix))
+    def difffn(opts, losedata):
+        return trydiff(repo, revs, ctx1, ctx2, modified, added, removed,
+                       copy, getfilectx, opts, losedata, prefix)
     if opts.upgrade and not opts.git:
         try:
             def losedata(fn):
--- a/mercurial/peer.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/peer.py	Thu Aug 02 18:33:40 2012 +0200
@@ -39,9 +39,6 @@
     def peer(self):
         return self
 
-    def peer(self):
-        return self
-
     def canpush(self):
         return True
 
--- a/mercurial/pushkey.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/pushkey.py	Thu Aug 02 18:33:40 2012 +0200
@@ -11,6 +11,8 @@
     n = {}
     for k in _namespaces:
         n[k] = ""
+    if not obsolete._enabled:
+        n.pop('obsolete')
     return n
 
 _namespaces = {"namespaces": (lambda *x: False, _nslist),
--- a/mercurial/repair.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/repair.py	Thu Aug 02 18:33:40 2012 +0200
@@ -111,6 +111,13 @@
         saverevs.difference_update(descendants)
     savebases = [cl.node(r) for r in saverevs]
     stripbases = [cl.node(r) for r in tostrip]
+    rset = ' or '.join([str(r) for r in tostrip])
+    newbmtarget = repo.revs('sort(heads(ancestors(%r) - (%r)), -rev)',
+                            rset, rset)
+    if newbmtarget:
+        newbmtarget = newbmtarget[0]
+    else:
+        newbmtarget = '.'
 
     bm = repo._bookmarks
     updatebm = []
@@ -174,7 +181,7 @@
                     ui.warn(_('error removing %s: %s\n') % (undofile, str(e)))
 
         for m in updatebm:
-            bm[m] = repo['.'].node()
+            bm[m] = repo[newbmtarget].node()
         bookmarks.write(repo)
     except: # re-raises
         if backupfile:
@@ -192,4 +199,3 @@
         # Multiple branches involved in strip. Will allow branchcache to become
         # invalid and later on rebuilt from scratch
         repo.destroyed()
-
--- a/mercurial/revset.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/revset.py	Thu Aug 02 18:33:40 2012 +0200
@@ -342,6 +342,7 @@
     - ``ignored``            : csets ignored due to DAG topology
     - ``current``            : the cset currently being bisected
     """
+    # i18n: "bisect" is a keyword
     status = getstring(x, _("bisect requires a string")).lower()
     state = set(hbisect.get(repo, status))
     return [r for r in subset if r in state]
@@ -509,10 +510,11 @@
     # There is exactly no chance of resolving the revision, so do a simple
     # string compare and hope for the best
 
+    rev = None
     # i18n: "converted" is a keyword
-    rev = None
     l = getargs(x, 0, 1, _('converted takes one or no arguments'))
     if l:
+        # i18n: "converted" is a keyword
         rev = getstring(l[0], _('converted requires a revision'))
 
     def _matchvalue(r):
@@ -608,14 +610,17 @@
 def draft(repo, subset, x):
     """``draft()``
     Changeset in draft phase."""
+    # i18n: "draft" is a keyword
     getargs(x, 0, 0, _("draft takes no arguments"))
     pc = repo._phasecache
     return [r for r in subset if pc.phase(repo, r) == phases.draft]
 
 def extinct(repo, subset, x):
     """``extinct()``
-    obsolete changeset with obsolete descendant only."""
-    getargs(x, 0, 0, _("obsolete takes no arguments"))
+    Obsolete changesets with obsolete descendants only.
+    """
+    # i18n: "extinct" is a keyword
+    getargs(x, 0, 0, _("extinct takes no arguments"))
     extinctset = set(repo.revs('(obsolete()::) - (::(not obsolete()))'))
     return [r for r in subset if r in extinctset]
 
@@ -629,11 +634,14 @@
     use the prefix `literal:`.
     """
 
+    # i18n: "extra" is a keyword
     l = getargs(x, 1, 2, _('extra takes at least 1 and at most 2 arguments'))
+    # i18n: "extra" is a keyword
     label = getstring(l[0], _('first argument to extra must be a string'))
     value = None
 
     if len(l) > 1:
+        # i18n: "extra" is a keyword
         value = getstring(l[1], _('second argument to extra must be a string'))
         kind, value, matcher = _stringmatcher(value)
 
@@ -646,8 +654,13 @@
 def filelog(repo, subset, x):
     """``filelog(pattern)``
     Changesets connected to the specified filelog.
+
+    For performance reasons, ``filelog()`` does not show every changeset
+    that affects the requested file(s). See :hg:`help log` for details. For
+    a slower, more accurate result, use ``file()``.
     """
 
+    # i18n: "filelog" is a keyword
     pat = getstring(x, _("filelog requires a pattern"))
     m = matchmod.match(repo.root, repo.getcwd(), [pat], default='relpath',
                        ctx=repo[None])
@@ -751,6 +764,7 @@
     hasset = False
     rev, default = None, None
     for arg in l:
+        # i18n: "_matchfiles" is a keyword
         s = getstring(arg, _("_matchfiles requires string arguments"))
         prefix, value = s[:2], s[2:]
         if prefix == 'p:':
@@ -761,15 +775,18 @@
             exc.append(value)
         elif prefix == 'r:':
             if rev is not None:
+                # i18n: "_matchfiles" is a keyword
                 raise error.ParseError(_('_matchfiles expected at most one '
                                          'revision'))
             rev = value
         elif prefix == 'd:':
             if default is not None:
+                # i18n: "_matchfiles" is a keyword
                 raise error.ParseError(_('_matchfiles expected at most one '
                                          'default mode'))
             default = value
         else:
+            # i18n: "_matchfiles" is a keyword
             raise error.ParseError(_('invalid _matchfiles prefix: %s') % prefix)
         if not hasset and matchmod.patkind(value) == 'set':
             hasset = True
@@ -794,6 +811,9 @@
 def hasfile(repo, subset, x):
     """``file(pattern)``
     Changesets affecting files matched by pattern.
+
+    For a faster but less accurate result, consider using ``filelog()``
+    instead.
     """
     # i18n: "file" is a keyword
     pat = getstring(x, _("file requires a pattern"))
@@ -929,6 +949,7 @@
 def obsolete(repo, subset, x):
     """``obsolete()``
     Mutable changeset with a newer version."""
+    # i18n: "obsolete" is a keyword
     getargs(x, 0, 0, _("obsolete takes no arguments"))
     return [r for r in subset if repo[r].obsolete()]
 
@@ -1071,6 +1092,7 @@
 def public(repo, subset, x):
     """``public()``
     Changeset in public phase."""
+    # i18n: "public" is a keyword
     getargs(x, 0, 0, _("public takes no arguments"))
     pc = repo._phasecache
     return [r for r in subset if pc.phase(repo, r) == phases.public]
@@ -1157,6 +1179,7 @@
     ``metadata`` is the default field which is used when no fields are
     specified. You can match more than one field at a time.
     """
+    # i18n: "matching" is a keyword
     l = getargs(x, 1, 2, _("matching takes 1 or 2 arguments"))
 
     revs = getset(repo, xrange(len(repo)), l[0])
@@ -1164,6 +1187,7 @@
     fieldlist = ['metadata']
     if len(l) > 1:
             fieldlist = getstring(l[1],
+                # i18n: "matching" is a keyword
                 _("matching requires a string "
                 "as its second argument")).split()
 
@@ -1221,6 +1245,7 @@
         getfield = _funcs.get(info, None)
         if getfield is None:
             raise error.ParseError(
+                # i18n: "matching" is a keyword
                 _("unexpected field name passed to matching: %s") % info)
         getfieldfuncs.append(getfield)
     # convert the getfield array of functions into a "getinfo" function
@@ -1263,6 +1288,7 @@
 def secret(repo, subset, x):
     """``secret()``
     Changeset in secret phase."""
+    # i18n: "secret" is a keyword
     getargs(x, 0, 0, _("secret takes no arguments"))
     pc = repo._phasecache
     return [r for r in subset if pc.phase(repo, r) == phases.secret]
@@ -1284,6 +1310,7 @@
     l = getargs(x, 1, 2, _("sort requires one or two arguments"))
     keys = "rev"
     if len(l) == 2:
+        # i18n: "sort" is a keyword
         keys = getstring(l[1], _("sort spec must be a string"))
 
     s = l[0]
@@ -1398,8 +1425,10 @@
 
 def unstable(repo, subset, x):
     """``unstable()``
-    Unstable changesets are non-obsolete with obsolete descendants."""
-    getargs(x, 0, 0, _("obsolete takes no arguments"))
+    Non-obsolete changesets with obsolete ancestors.
+    """
+    # i18n: "unstable" is a keyword
+    getargs(x, 0, 0, _("unstable takes no arguments"))
     unstableset = set(repo.revs('(obsolete()::) - obsolete()'))
     return [r for r in subset if r in unstableset]
 
--- a/mercurial/scmutil.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/scmutil.py	Thu Aug 02 18:33:40 2012 +0200
@@ -6,12 +6,21 @@
 # GNU General Public License version 2 or any later version.
 
 from i18n import _
-import util, error, osutil, revset, similar, encoding
+import util, error, osutil, revset, similar, encoding, phases
 import match as matchmod
 import os, errno, re, stat, sys, glob
 
-def nochangesfound(ui, secretlist=None):
-    '''report no changes for push/pull'''
+def nochangesfound(ui, repo, excluded=None):
+    '''Report no changes for push/pull, excluded is None or a list of
+    nodes excluded from the push/pull.
+    '''
+    secretlist = []
+    if excluded:
+        for n in excluded:
+            ctx = repo[n]
+            if ctx.phase() >= phases.secret and not ctx.extinct():
+                secretlist.append(n)
+
     if secretlist:
         ui.status(_("no changes found (ignored %d secret changesets)\n")
                   % len(secretlist))
--- a/mercurial/store.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/store.py	Thu Aug 02 18:33:40 2012 +0200
@@ -232,7 +232,8 @@
         mode = None
     return mode
 
-_data = 'data 00manifest.d 00manifest.i 00changelog.d 00changelog.i phaseroots'
+_data = ('data 00manifest.d 00manifest.i 00changelog.d 00changelog.i'
+         ' phaseroots obsstore')
 
 class basicstore(object):
     '''base class for local repository stores'''
@@ -411,7 +412,7 @@
             self.fncache.rewrite(existing)
 
     def copylist(self):
-        d = ('data dh fncache phaseroots'
+        d = ('data dh fncache phaseroots obsstore'
              ' 00manifest.d 00manifest.i 00changelog.d 00changelog.i')
         return (['requires', '00changelog.i'] +
                 ['store/' + f for f in d.split()])
--- a/mercurial/tags.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/tags.py	Thu Aug 02 18:33:40 2012 +0200
@@ -241,7 +241,7 @@
     # This is the most expensive part of finding tags, so performance
     # depends primarily on the size of newheads.  Worst case: no cache
     # file, so newheads == repoheads.
-    for head in newheads:
+    for head in reversed(newheads):
         cctx = repo[head]
         try:
             fnode = cctx.filenode('.hgtags')
--- a/mercurial/templates/coal/map	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/coal/map	Thu Aug 02 18:33:40 2012 +0200
@@ -84,16 +84,6 @@
 difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
 diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
 
-comparison = '
-  <table class="bigtable">
-    <thead class="header">
-      <tr>
-        <th>{leftrev}:{leftnode|short}</th>
-        <th>{rightrev}:{rightnode|short}</th>
-      </tr>
-    </thead>
-    {blocks}
-  </table>'
 comparisonblock ='
   <tbody class="block">
   {lines}
--- a/mercurial/templates/gitweb/filecomparison.tmpl	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/gitweb/filecomparison.tmpl	Thu Aug 02 18:33:40 2012 +0200
@@ -55,7 +55,15 @@
 </div>
 
 <div class="comparison">
-{comparison}
+  <table style="border-collapse:collapse;">
+    <thead class="header">
+      <tr>
+        <th>{leftrev}:{leftnode|short}</th>
+        <th>{rightrev}:{rightnode|short}</th>
+      </tr>
+    </thead>
+    {comparison}
+  </table>
 </div>
 
 </div>
--- a/mercurial/templates/gitweb/map	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/gitweb/map	Thu Aug 02 18:33:40 2012 +0200
@@ -103,16 +103,6 @@
 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
 diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
 
-comparison = '
-  <table style="border-collapse:collapse;">
-    <thead class="header">
-      <tr>
-        <th>{leftrev}:{leftnode|short}</th>
-        <th>{rightrev}:{rightnode|short}</th>
-      </tr>
-    </thead>
-    {blocks}
-  </table>'
 comparisonblock ='
   <tbody class="block">
   {lines}
--- a/mercurial/templates/gitweb/summary.tmpl	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/gitweb/summary.tmpl	Thu Aug 02 18:33:40 2012 +0200
@@ -56,11 +56,11 @@
 <tr class="light"><td colspan="3"><a class="list" href="{url}bookmarks{sessionvars%urlparameter}">...</a></td></tr>
 </table>
 
-<div><a class="title" href="#">branches</a></div>
+<div><a class="title" href="{url}branches{sessionvars%urlparameter}">branches</a></div>
 <table cellspacing="0">
 {branches%branchentry}
 <tr class="light">
-  <td colspan="4"><a class="list"  href="#">...</a></td>
+  <td colspan="4"><a class="list"  href="{url}branches{sessionvars%urlparameter}">...</a></td>
 </tr>
 </table>
 {footer}
--- a/mercurial/templates/monoblue/bookmarks.tmpl	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/monoblue/bookmarks.tmpl	Thu Aug 02 18:33:40 2012 +0200
@@ -7,7 +7,7 @@
 <body>
 <div id="container">
     <div class="page-header">
-        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Bookmarks</h1>
+        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / bookmarks</h1>
 
         <form action="{url}log">
             {sessionvars%hiddenformentry}
--- a/mercurial/templates/monoblue/branches.tmpl	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/monoblue/branches.tmpl	Thu Aug 02 18:33:40 2012 +0200
@@ -7,7 +7,7 @@
 <body>
 <div id="container">
     <div class="page-header">
-        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Branches</h1>
+        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / branches</h1>
 
         <form action="{url}log">
             {sessionvars%hiddenformentry}
--- a/mercurial/templates/monoblue/changeset.tmpl	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/monoblue/changeset.tmpl	Thu Aug 02 18:33:40 2012 +0200
@@ -7,7 +7,7 @@
 <body>
 <div id="container">
     <div class="page-header">
-        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files</h1>
+        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changeset</h1>
 
         <form action="{url}log">
             {sessionvars%hiddenformentry}
--- a/mercurial/templates/monoblue/error.tmpl	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/monoblue/error.tmpl	Thu Aug 02 18:33:40 2012 +0200
@@ -7,7 +7,7 @@
 <body>
 <div id="container">
     <div class="page-header">
-        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Not found: {repo|escape}</h1>
+        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / not found: {repo|escape}</h1>
 
         <form action="{url}log">
             {sessionvars%hiddenformentry}
--- a/mercurial/templates/monoblue/filecomparison.tmpl	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/monoblue/filecomparison.tmpl	Thu Aug 02 18:33:40 2012 +0200
@@ -58,7 +58,15 @@
     </div>
 
     <div class="comparison">
-    {comparison}
+      <table class="bigtable">
+        <thead class="header">
+          <tr>
+            <th>{leftrev}:{leftnode|short}</th>
+            <th>{rightrev}:{rightnode|short}</th>
+          </tr>
+        </thead>
+        {comparison}
+      </table>
     </div>
 
 {footer}
--- a/mercurial/templates/monoblue/help.tmpl	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/monoblue/help.tmpl	Thu Aug 02 18:33:40 2012 +0200
@@ -7,7 +7,7 @@
 <body>
 <div id="container">
     <div class="page-header">
-        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Help</h1>
+        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / help</h1>
 
         <form action="{url}log">
             {sessionvars%hiddenformentry}
--- a/mercurial/templates/monoblue/helptopics.tmpl	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/monoblue/helptopics.tmpl	Thu Aug 02 18:33:40 2012 +0200
@@ -7,7 +7,7 @@
 <body>
 <div id="container">
     <div class="page-header">
-        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Help</h1>
+        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / help</h1>
 
         <form action="{url}log">
             {sessionvars%hiddenformentry}
--- a/mercurial/templates/monoblue/map	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/monoblue/map	Thu Aug 02 18:33:40 2012 +0200
@@ -98,16 +98,6 @@
 difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
 diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
 
-comparison = '
-  <table class="bigtable">
-    <thead class="header">
-      <tr>
-        <th>{leftrev}:{leftnode|short}</th>
-        <th>{rightrev}:{rightnode|short}</th>
-      </tr>
-    </thead>
-    {blocks}
-  </table>'
 comparisonblock ='
   <tbody class="block">
   {lines}
--- a/mercurial/templates/monoblue/notfound.tmpl	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/monoblue/notfound.tmpl	Thu Aug 02 18:33:40 2012 +0200
@@ -7,7 +7,7 @@
 <body>
 <div id="container">
     <div class="page-header">
-        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Not found: {repo|escape}</h1>
+        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / not found: {repo|escape}</h1>
 
         <form action="{url}log">
             {sessionvars%hiddenformentry}
--- a/mercurial/templates/monoblue/tags.tmpl	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/monoblue/tags.tmpl	Thu Aug 02 18:33:40 2012 +0200
@@ -7,7 +7,7 @@
 <body>
 <div id="container">
     <div class="page-header">
-        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Tags</h1>
+        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / tags</h1>
 
         <form action="{url}log">
             {sessionvars%hiddenformentry}
--- a/mercurial/templates/paper/error.tmpl	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/paper/error.tmpl	Thu Aug 02 18:33:40 2012 +0200
@@ -15,6 +15,8 @@
 <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
 <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
 <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+</ul>
+<ul>
 <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
 </ul>
 </div>
--- a/mercurial/templates/paper/filecomparison.tmpl	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/paper/filecomparison.tmpl	Thu Aug 02 18:33:40 2012 +0200
@@ -76,7 +76,15 @@
   <span class="legendinfo replace">replaced</span>
 </div>
 
-{comparison}
+<table class="bigtable">
+  <thead class="header">
+    <tr>
+      <th>{leftrev}:{leftnode|short}</th>
+      <th>{rightrev}:{rightnode|short}</th>
+    </tr>
+  </thead>
+  {comparison}
+</table>
 
 </div>
 </div>
--- a/mercurial/templates/paper/map	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/paper/map	Thu Aug 02 18:33:40 2012 +0200
@@ -83,16 +83,6 @@
 difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
 diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
 
-comparison = '
-  <table class="bigtable">
-    <thead class="header">
-      <tr>
-        <th>{leftrev}:{leftnode|short}</th>
-        <th>{rightrev}:{rightnode|short}</th>
-      </tr>
-    </thead>
-    {blocks}
-  </table>'
 comparisonblock ='
   <tbody class="block">
   {lines}
--- a/mercurial/templates/raw/map	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/raw/map	Thu Aug 02 18:33:40 2012 +0200
@@ -1,3 +1,5 @@
+default = 'shortlog'
+shortlog = "'raw' is not a browsable style"
 mimetype = 'text/plain; charset={encoding}'
 header = ''
 footer = ''
--- a/mercurial/templates/static/style-coal.css	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/static/style-coal.css	Thu Aug 02 18:33:40 2012 +0200
@@ -304,16 +304,16 @@
 }
 
 .delete {
-    background-color: black;
-    color: white;
+    background-color: #faa;
+    color: #333;
 }
 
 .insert {
-    background-color: #d0d0d0;
+    background-color: #ffa;
 }
 
 .replace {
-    background-color: #f9f9f9;
+    background-color: #e8e8e8;
 }
 
 .header {
--- a/mercurial/templates/static/style-gitweb.css	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/static/style-gitweb.css	Thu Aug 02 18:33:40 2012 +0200
@@ -144,15 +144,16 @@
 }
 
 .delete {
-    background-color: #ffc5ce;
+    background-color: #faa;
+    color: #333;
 }
 
 .insert {
-    background-color: #c5ffc4;
+    background-color: #ffa;
 }
 
 .replace {
-    background-color: #ffff99;
+    background-color: #e8e8e8;
 }
 
 .comparison {
--- a/mercurial/templates/static/style-monoblue.css	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/static/style-monoblue.css	Thu Aug 02 18:33:40 2012 +0200
@@ -496,15 +496,16 @@
 }
 
 .delete {
-    background-color: #ffc5ce;
+    background-color: #faa;
+    color: #333;
 }
 
 .insert {
-    background-color: #c5ffc4;
+    background-color: #ffa;
 }
 
 .replace {
-    background-color: #ffff99;
+    background-color: #e8e8e8;
 }
 
 .comparison {
--- a/mercurial/templates/static/style-paper.css	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/templates/static/style-paper.css	Thu Aug 02 18:33:40 2012 +0200
@@ -293,15 +293,16 @@
 }
 
 .delete {
-    background-color: #ffc5ce;
+    background-color: #faa;
+    color: #333;
 }
 
 .insert {
-    background-color: #c5ffc4;
+    background-color: #ffa;
 }
 
 .replace {
-    background-color: #ffff99;
+    background-color: #e8e8e8;
 }
 
 .header {
--- a/mercurial/util.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/util.py	Thu Aug 02 18:33:40 2012 +0200
@@ -816,6 +816,8 @@
 
         # delegated methods
         self.write = self._fp.write
+        self.seek = self._fp.seek
+        self.tell = self._fp.tell
         self.fileno = self._fp.fileno
 
     def close(self):
--- a/mercurial/wireproto.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/mercurial/wireproto.py	Thu Aug 02 18:33:40 2012 +0200
@@ -236,6 +236,7 @@
         if not self.capable('pushkey'):
             yield False, None
         f = future()
+        self.ui.debug('preparing pushkey for "%s:%s"\n' % (namespace, key))
         yield todict(namespace=encoding.fromlocal(namespace),
                      key=encoding.fromlocal(key),
                      old=encoding.fromlocal(old),
@@ -256,6 +257,7 @@
         if not self.capable('pushkey'):
             yield {}, None
         f = future()
+        self.ui.debug('preparing listkeys for "%s"\n' % namespace)
         yield todict(namespace=encoding.fromlocal(namespace)), f
         d = f.value
         r = {}
--- a/setup.py	Thu Aug 02 17:48:58 2012 +0200
+++ b/setup.py	Thu Aug 02 18:33:40 2012 +0200
@@ -342,11 +342,17 @@
     def build_extensions(self):
         if os.name != 'nt':
             return
+        if isinstance(self.compiler, HackedMingw32CCompiler):
+            self.compiler.compiler_so = self.compiler.compiler # no -mdll
+            self.compiler.dll_libraries = [] # no -lmsrvc90
         objects = self.compiler.compile(['mercurial/exewrapper.c'],
                                          output_dir=self.build_temp)
         dir = os.path.dirname(self.get_ext_fullpath('dummy'))
         target = os.path.join(dir, 'hg')
+        pythonlib = ("python%d%d" %
+               (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff))
         self.compiler.link_executable(objects, target,
+                                      libraries=[pythonlib],
                                       output_dir=self.build_temp)
 
 class hginstallscripts(install_scripts):
--- a/tests/test-acl.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-acl.t	Thu Aug 02 18:33:40 2012 +0200
@@ -82,6 +82,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -115,8 +116,11 @@
   adding quux/file.py revisions
   files: 3/3 chunks (100.00%)
   added 3 changesets with 3 changes to 3 files
+  listing keys for "phases"
+  try to push obsolete markers to remote
   updating the branch cache
   checking for updated bookmarks
+  listing keys for "bookmarks"
   repository tip rolled back to revision 0 (undo push)
   0:6675d58eff77
   
@@ -137,6 +141,7 @@
   searching for changes
   all remote heads known locally
   invalidating branch cache (tip differs)
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -172,8 +177,11 @@
   added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: changes have source "push" - skipping
+  listing keys for "phases"
+  try to push obsolete markers to remote
   updating the branch cache
   checking for updated bookmarks
+  listing keys for "bookmarks"
   repository tip rolled back to revision 0 (undo push)
   0:6675d58eff77
   
@@ -195,6 +203,7 @@
   searching for changes
   all remote heads known locally
   invalidating branch cache (tip differs)
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -240,8 +249,11 @@
   acl: path access granted: "f9cafe1212c8"
   acl: branch access granted: "911600dab2ae" on branch "default"
   acl: path access granted: "911600dab2ae"
+  listing keys for "phases"
+  try to push obsolete markers to remote
   updating the branch cache
   checking for updated bookmarks
+  listing keys for "bookmarks"
   repository tip rolled back to revision 0 (undo push)
   0:6675d58eff77
   
@@ -263,6 +275,7 @@
   searching for changes
   all remote heads known locally
   invalidating branch cache (tip differs)
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -328,6 +341,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -398,6 +412,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -465,6 +480,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -537,6 +553,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -606,6 +623,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -677,6 +695,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -722,8 +741,11 @@
   acl: path access granted: "f9cafe1212c8"
   acl: branch access granted: "911600dab2ae" on branch "default"
   acl: path access granted: "911600dab2ae"
+  listing keys for "phases"
+  try to push obsolete markers to remote
   updating the branch cache
   checking for updated bookmarks
+  listing keys for "bookmarks"
   repository tip rolled back to revision 0 (undo push)
   0:6675d58eff77
   
@@ -752,6 +774,7 @@
   searching for changes
   all remote heads known locally
   invalidating branch cache (tip differs)
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -830,6 +853,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -903,6 +927,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -987,6 +1012,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -1032,8 +1058,11 @@
   acl: path access granted: "f9cafe1212c8"
   acl: branch access granted: "911600dab2ae" on branch "default"
   acl: path access granted: "911600dab2ae"
+  listing keys for "phases"
+  try to push obsolete markers to remote
   updating the branch cache
   checking for updated bookmarks
+  listing keys for "bookmarks"
   repository tip rolled back to revision 0 (undo push)
   0:6675d58eff77
   
@@ -1063,6 +1092,7 @@
   searching for changes
   all remote heads known locally
   invalidating branch cache (tip differs)
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -1108,8 +1138,11 @@
   acl: path access granted: "f9cafe1212c8"
   acl: branch access granted: "911600dab2ae" on branch "default"
   acl: path access granted: "911600dab2ae"
+  listing keys for "phases"
+  try to push obsolete markers to remote
   updating the branch cache
   checking for updated bookmarks
+  listing keys for "bookmarks"
   repository tip rolled back to revision 0 (undo push)
   0:6675d58eff77
   
@@ -1135,6 +1168,7 @@
   searching for changes
   all remote heads known locally
   invalidating branch cache (tip differs)
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -1209,6 +1243,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -1255,8 +1290,11 @@
   acl: path access granted: "f9cafe1212c8"
   acl: branch access granted: "911600dab2ae" on branch "default"
   acl: path access granted: "911600dab2ae"
+  listing keys for "phases"
+  try to push obsolete markers to remote
   updating the branch cache
   checking for updated bookmarks
+  listing keys for "bookmarks"
   repository tip rolled back to revision 0 (undo push)
   0:6675d58eff77
   
@@ -1282,6 +1320,7 @@
   searching for changes
   all remote heads known locally
   invalidating branch cache (tip differs)
+  listing keys for "bookmarks"
   3 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -1395,6 +1434,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   4 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -1451,8 +1491,11 @@
   acl: path access granted: "911600dab2ae"
   acl: branch access granted: "e8fc755d4d82" on branch "foobar"
   acl: path access granted: "e8fc755d4d82"
+  listing keys for "phases"
+  try to push obsolete markers to remote
   updating the branch cache
   checking for updated bookmarks
+  listing keys for "bookmarks"
   repository tip rolled back to revision 2 (undo push)
   2:fb35475503ef
   
@@ -1475,6 +1518,7 @@
   searching for changes
   all remote heads known locally
   invalidating branch cache (tip differs)
+  listing keys for "bookmarks"
   4 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -1553,6 +1597,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   4 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -1627,6 +1672,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   4 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -1695,6 +1741,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   4 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -1751,8 +1798,11 @@
   acl: path access granted: "911600dab2ae"
   acl: branch access granted: "e8fc755d4d82" on branch "foobar"
   acl: path access granted: "e8fc755d4d82"
+  listing keys for "phases"
+  try to push obsolete markers to remote
   updating the branch cache
   checking for updated bookmarks
+  listing keys for "bookmarks"
   repository tip rolled back to revision 2 (undo push)
   2:fb35475503ef
   
@@ -1780,6 +1830,7 @@
   searching for changes
   all remote heads known locally
   invalidating branch cache (tip differs)
+  listing keys for "bookmarks"
   4 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -1836,8 +1887,11 @@
   acl: path access granted: "911600dab2ae"
   acl: branch access granted: "e8fc755d4d82" on branch "foobar"
   acl: path access granted: "e8fc755d4d82"
+  listing keys for "phases"
+  try to push obsolete markers to remote
   updating the branch cache
   checking for updated bookmarks
+  listing keys for "bookmarks"
   repository tip rolled back to revision 2 (undo push)
   2:fb35475503ef
   
@@ -1864,6 +1918,7 @@
   searching for changes
   all remote heads known locally
   invalidating branch cache (tip differs)
+  listing keys for "bookmarks"
   4 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -1937,6 +1992,7 @@
   query 1; heads
   searching for changes
   all remote heads known locally
+  listing keys for "bookmarks"
   4 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
@@ -1993,8 +2049,11 @@
   acl: path access granted: "911600dab2ae"
   acl: branch access granted: "e8fc755d4d82" on branch "foobar"
   acl: path access granted: "e8fc755d4d82"
+  listing keys for "phases"
+  try to push obsolete markers to remote
   updating the branch cache
   checking for updated bookmarks
+  listing keys for "bookmarks"
   repository tip rolled back to revision 2 (undo push)
   2:fb35475503ef
   
@@ -2015,6 +2074,7 @@
   searching for changes
   all remote heads known locally
   invalidating branch cache (tip differs)
+  listing keys for "bookmarks"
   4 changesets found
   list of changesets:
   ef1ea85a6374b77d6da9dcda9541f498f2d17df7
--- a/tests/test-bookmarks-pushpull.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-bookmarks-pushpull.t	Thu Aug 02 18:33:40 2012 +0200
@@ -40,7 +40,6 @@
   bookmarks	
   phases	
   namespaces	
-  obsolete	
   $ hg debugpushkey ../a bookmarks
   Y	4e3505fd95835d721066b76e75dbb8cc554d7f77
   X	4e3505fd95835d721066b76e75dbb8cc554d7f77
@@ -215,7 +214,6 @@
   bookmarks	
   phases	
   namespaces	
-  obsolete	
   $ hg debugpushkey http://localhost:$HGPORT/ bookmarks
   Y	4efff6d98829d9c824c621afd6e3f01865f5439f
   foobar	9b140be1080824d768c5a4691a564088eede71f9
--- a/tests/test-bookmarks-strip.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-bookmarks-strip.t	Thu Aug 02 18:33:40 2012 +0200
@@ -60,8 +60,8 @@
 list bookmarks
 
   $ hg book
-     test                      1:8cf31af87a2b
-     test2                     1:8cf31af87a2b
+     test                      0:5c9ad3787638
+     test2                     0:5c9ad3787638
 
 immediate rollback and reentrancy issue
 
--- a/tests/test-bookmarks.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-bookmarks.t	Thu Aug 02 18:33:40 2012 +0200
@@ -390,3 +390,70 @@
   $ echo "925d80f479bc z" > .hg/bookmarks
   $ hg book
   no bookmarks set
+
+test stripping a non-checked-out but bookmarked revision
+
+  $ hg --config extensions.graphlog= log --graph
+  o  changeset:   4:9ba5f110a0b3
+  |  branch:      test
+  |  tag:         tip
+  |  parent:      2:db815d6d32e6
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     y
+  |
+  | @  changeset:   3:125c9a1d6df6
+  |/   user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     x
+  |
+  o  changeset:   2:db815d6d32e6
+  |  parent:      0:f7b1eb17ad24
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     2
+  |
+  | o  changeset:   1:925d80f479bb
+  |/   user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     1
+  |
+  o  changeset:   0:f7b1eb17ad24
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     0
+  
+  $ hg book should-end-on-two
+  $ hg co --clean 4
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ hg book four
+  $ hg --config extensions.mq= strip 3
+  saved backup bundle to * (glob)
+should-end-on-two should end up pointing to revision 2, as that's the
+tipmost surviving ancestor of the stripped revision.
+  $ hg --config extensions.graphlog= log --graph
+  @  changeset:   3:9ba5f110a0b3
+  |  branch:      test
+  |  bookmark:    four
+  |  tag:         tip
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     y
+  |
+  o  changeset:   2:db815d6d32e6
+  |  bookmark:    should-end-on-two
+  |  parent:      0:f7b1eb17ad24
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     2
+  |
+  | o  changeset:   1:925d80f479bb
+  |/   user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     1
+  |
+  o  changeset:   0:f7b1eb17ad24
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     0
+  
--- a/tests/test-clone.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-clone.t	Thu Aug 02 18:33:40 2012 +0200
@@ -51,9 +51,11 @@
 #if hardlink
   $ hg --debug clone -U . ../c
   linked 8 files
+  listing keys for "bookmarks"
 #else
   $ hg --debug clone -U . ../c
   copied 8 files
+  listing keys for "bookmarks"
 #endif
   $ cd ../c
   $ cat a 2>/dev/null || echo "a not present"
--- a/tests/test-convert.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-convert.t	Thu Aug 02 18:33:40 2012 +0200
@@ -120,7 +120,7 @@
       to a named branch.
   
       Mercurial Source
-      ''''''''''''''''
+      ################
   
       The Mercurial source recognizes the following configuration options, which
       you can set on the command line with "--config":
@@ -138,7 +138,7 @@
                     revision identifier and defaults to 0.
   
       CVS Source
-      ''''''''''
+      ##########
   
       CVS source will use a sandbox (i.e. a checked-out copy) from CVS to
       indicate the starting point of what will be converted. Direct access to
@@ -178,8 +178,8 @@
                     or delete them.
       hook.cvschangesets
                     Specify a Python function to be called after the changesets
-                    are calculated from the the CVS log. The function is passed
-                    a list with the changeset entries, and can modify the
+                    are calculated from the CVS log. The function is passed a
+                    list with the changeset entries, and can modify the
                     changesets in-place, or add or delete them.
   
       An additional "debugcvsps" Mercurial command allows the builtin changeset
@@ -188,7 +188,7 @@
       more details.
   
       Subversion Source
-      '''''''''''''''''
+      #################
   
       Subversion source detects classical trunk/branches/tags layouts. By
       default, the supplied "svn://repo/path/" source URL is converted as a
@@ -220,7 +220,7 @@
                     specify start Subversion revision number. The default is 0.
   
       Perforce Source
-      '''''''''''''''
+      ###############
   
       The Perforce (P4) importer can be given a p4 depot path or a client
       specification as source. It will convert all files in the source to a flat
@@ -236,7 +236,7 @@
                     number).
   
       Mercurial Destination
-      '''''''''''''''''''''
+      #####################
   
       The following options are supported:
   
--- a/tests/test-extension.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-extension.t	Thu Aug 02 18:33:40 2012 +0200
@@ -510,6 +510,8 @@
   ** Mercurial Distributed SCM (*) (glob)
   ** Extensions loaded: throw
 If the extensions declare outdated versions, accuse the older extension first:
+  $ echo "from mercurial import util" >> older.py
+  $ echo "util.version = lambda:'2.2'" >> older.py
   $ echo "testedwith = '1.9.3'" >> older.py
   $ echo "testedwith = '2.1.1'" >> throw.py
   $ rm -f throw.pyc throw.pyo
@@ -520,7 +522,31 @@
   ** Please disable older and try your action again.
   ** If that fixes the bug please report it to the extension author.
   ** Python * (glob)
-  ** Mercurial Distributed SCM (*) (glob)
+  ** Mercurial Distributed SCM (version 2.2)
+  ** Extensions loaded: throw, older
+One extension only tested with older, one only with newer versions:
+  $ echo "util.version = lambda:'2.1.0'" >> older.py
+  $ rm -f older.pyc older.pyo
+  $ hg --config extensions.throw=throw.py --config extensions.older=older.py \
+  >   throw 2>&1 | egrep '^\*\*'
+  ** Unknown exception encountered with possibly-broken third-party extension older
+  ** which supports versions 1.9.3 of Mercurial.
+  ** Please disable older and try your action again.
+  ** If that fixes the bug please report it to the extension author.
+  ** Python * (glob)
+  ** Mercurial Distributed SCM (version 2.1.0)
+  ** Extensions loaded: throw, older
+Older extension is tested with current version, the other only with newer:
+  $ echo "util.version = lambda:'1.9.3'" >> older.py
+  $ rm -f older.pyc older.pyo
+  $ hg --config extensions.throw=throw.py --config extensions.older=older.py \
+  >   throw 2>&1 | egrep '^\*\*'
+  ** Unknown exception encountered with possibly-broken third-party extension throw
+  ** which supports versions 2.1.1 of Mercurial.
+  ** Please disable throw and try your action again.
+  ** If that fixes the bug please report it to http://example.com/bts
+  ** Python * (glob)
+  ** Mercurial Distributed SCM (version 1.9.3)
   ** Extensions loaded: throw, older
 
 Declare the version as supporting this hg version, show regular bts link:
--- a/tests/test-hardlinks.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-hardlinks.t	Thu Aug 02 18:33:40 2012 +0200
@@ -57,6 +57,7 @@
 
   $ hg clone -U --debug r1 r2
   linked 7 files
+  listing keys for "bookmarks"
 
 Create non-hardlinked clone r3:
 
--- a/tests/test-help.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-help.t	Thu Aug 02 18:33:40 2012 +0200
@@ -785,7 +785,7 @@
    extensions Using Additional Features
    glossary   Glossary
    phases     Working with Phases
-   subrepo    Subrepositories
+   subrepos   Subrepositories
    urls       URL Paths
   
   Commands:
--- a/tests/test-hgweb-commands.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-hgweb-commands.t	Thu Aug 02 18:33:40 2012 +0200
@@ -34,6 +34,15 @@
   $ echo stable.color = FF0000 >> .hg/hgrc
   $ hg serve --config server.uncompressed=False -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
   $ cat hg.pid >> $DAEMON_PIDS
+  $ hg log -G --template '{rev}:{node|short} {desc}\n'
+  @  3:ba87b23d29ca branch
+  |
+  o  2:1d22e65f027e branch
+  |
+  o  1:a4f92ed23982 Added tag 1.0 for changeset 2ef0ac749a14
+  |
+  o  0:2ef0ac749a14 base
+  
 
 Logs and changes
 
@@ -857,7 +866,7 @@
   <tr class="light"><td colspan="3"><a class="list" href="/bookmarks?style=gitweb">...</a></td></tr>
   </table>
   
-  <div><a class="title" href="#">branches</a></div>
+  <div><a class="title" href="/branches?style=gitweb">branches</a></div>
   <table cellspacing="0">
   
   <tr class="parity0">
@@ -891,7 +900,7 @@
   </td>
   </tr>
   <tr class="light">
-    <td colspan="4"><a class="list"  href="#">...</a></td>
+    <td colspan="4"><a class="list"  href="/branches?style=gitweb">...</a></td>
   </tr>
   </table>
   <script type="text/javascript">process_dates()</script>
@@ -951,7 +960,7 @@
   <br/>
   <a href="/graph/3?style=gitweb&revcount=30">less</a>
   <a href="/graph/3?style=gitweb&revcount=120">more</a>
-  | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/2ef0ac749a14?style=gitweb">-3</a> <a href="/graph/tip?style=gitweb">tip</a> <br/>
+  | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a> <br/>
   </div>
   
   <div class="title">&nbsp;</div>
@@ -1032,7 +1041,7 @@
   <div class="page_nav">
   <a href="/graph/3?style=gitweb&revcount=30">less</a>
   <a href="/graph/3?style=gitweb&revcount=120">more</a>
-  | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/2ef0ac749a14?style=gitweb">-3</a> <a href="/graph/tip?style=gitweb">tip</a> 
+  | <a href="/graph/2ef0ac749a14?style=gitweb">(0)</a> <a href="/graph/tip?style=gitweb">tip</a> 
   </div>
   
   <script type="text/javascript">process_dates()</script>
@@ -1287,5 +1296,68 @@
 ERRORS ENCOUNTERED
 
   $ cat errors.log
+  $ "$TESTDIR/killdaemons.py"
 
   $ cd ..
+
+Test graph paging
+
+  $ mkcommit() {
+  >  echo $1 >> a
+  >  hg ci -Am $1 a
+  > }
+
+  $ hg init graph
+  $ cd graph
+  $ mkcommit 0
+  $ mkcommit 1
+  $ mkcommit 2
+  $ mkcommit 3
+  $ mkcommit 4
+  $ mkcommit 5
+  $ hg serve --config server.uncompressed=False \
+  >          --config web.maxshortchanges=2 \
+  >          -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
+  $ cat hg.pid >> $DAEMON_PIDS
+  $ hg log -G --template '{rev}:{node|short} {desc}\n'
+  @  5:aed2d9c1d0e7 5
+  |
+  o  4:b60a39a85a01 4
+  |
+  o  3:ada793dcc118 3
+  |
+  o  2:ab4f1438558b 2
+  |
+  o  1:e06180cbfb0c 1
+  |
+  o  0:b4e73ffab476 0
+  
+
+Test paging
+
+  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT \
+  >   'graph/?style=raw' | grep changeset
+  changeset:   aed2d9c1d0e7
+  changeset:   b60a39a85a01
+
+  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT \
+  >   'graph/?style=raw&revcount=3' | grep changeset
+  changeset:   aed2d9c1d0e7
+  changeset:   b60a39a85a01
+  changeset:   ada793dcc118
+
+  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT \
+  >   'graph/e06180cbfb0?style=raw&revcount=3' | grep changeset
+  changeset:   ab4f1438558b
+  changeset:   e06180cbfb0c
+  changeset:   b4e73ffab476
+
+  $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT \
+  >   'graph/b4e73ffab47?style=raw&revcount=3' | grep changeset
+  changeset:   ab4f1438558b
+  changeset:   e06180cbfb0c
+  changeset:   b4e73ffab476
+
+  $ cat errors.log
+
+  $ cd ..
--- a/tests/test-hgweb-diffs.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-hgweb-diffs.t	Thu Aug 02 18:33:40 2012 +0200
@@ -628,7 +628,7 @@
   </tr>
   <tr>
    <th>children</th>
-   <td><a href="/file/559edbd9ed20/a">559edbd9ed20</a> </td>
+   <td></td>
   </tr>
   
   </table>
@@ -642,15 +642,14 @@
     <span class="legendinfo replace">replaced</span>
   </div>
   
-  
   <table class="bigtable">
-  <thead class="header">
-  <tr>
-  <th>-1:000000000000</th>
-  <th>0:b789fdd96dc2</th>
-  </tr>
-  </thead>
-  
+    <thead class="header">
+      <tr>
+        <th>-1:000000000000</th>
+        <th>0:b789fdd96dc2</th>
+      </tr>
+    </thead>
+    
   <tbody class="block">
   
   <tr>
@@ -747,7 +746,7 @@
   </tr>
   <tr>
    <th>parents</th>
-   <td><a href="/file/559edbd9ed20/a">559edbd9ed20</a> </td>
+   <td><a href="/file/0cd96de13884/a">0cd96de13884</a> </td>
   </tr>
   <tr>
    <th>children</th>
@@ -765,15 +764,14 @@
     <span class="legendinfo replace">replaced</span>
   </div>
   
-  
   <table class="bigtable">
-  <thead class="header">
-  <tr>
-  <th>0:b789fdd96dc2</th>
-  <th>1:a80d06849b33</th>
-  </tr>
-  </thead>
-  
+    <thead class="header">
+      <tr>
+        <th>0:b789fdd96dc2</th>
+        <th>1:a80d06849b33</th>
+      </tr>
+    </thead>
+    
   <tbody class="block">
   
   <tr>
@@ -872,7 +870,7 @@
   </tr>
   <tr>
    <th>parents</th>
-   <td><a href="/file/d73db4d812ff/a">d73db4d812ff</a> </td>
+   <td><a href="/file/0cd96de13884/a">0cd96de13884</a> </td>
   </tr>
   <tr>
    <th>children</th>
@@ -890,15 +888,14 @@
     <span class="legendinfo replace">replaced</span>
   </div>
   
-  
   <table class="bigtable">
-  <thead class="header">
-  <tr>
-  <th>1:a80d06849b33</th>
-  <th>-1:000000000000</th>
-  </tr>
-  </thead>
-  
+    <thead class="header">
+      <tr>
+        <th>1:a80d06849b33</th>
+        <th>-1:000000000000</th>
+      </tr>
+    </thead>
+    
   <tbody class="block">
   
   <tr>
--- a/tests/test-hgweb-filelog.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-hgweb-filelog.t	Thu Aug 02 18:33:40 2012 +0200
@@ -534,6 +534,8 @@
   <li><a href="/tags">tags</a></li>
   <li><a href="/bookmarks">bookmarks</a></li>
   <li><a href="/branches">branches</a></li>
+  </ul>
+  <ul>
   <li><a href="/help">help</a></li>
   </ul>
   </div>
--- a/tests/test-hgweb.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-hgweb.t	Thu Aug 02 18:33:40 2012 +0200
@@ -67,6 +67,8 @@
   <li><a href="/tags">tags</a></li>
   <li><a href="/bookmarks">bookmarks</a></li>
   <li><a href="/branches">branches</a></li>
+  </ul>
+  <ul>
   <li><a href="/help">help</a></li>
   </ul>
   </div>
@@ -155,6 +157,8 @@
   <li><a href="/tags">tags</a></li>
   <li><a href="/bookmarks">bookmarks</a></li>
   <li><a href="/branches">branches</a></li>
+  </ul>
+  <ul>
   <li><a href="/help">help</a></li>
   </ul>
   </div>
@@ -455,15 +459,16 @@
   }
   
   .delete {
-      background-color: #ffc5ce;
+      background-color: #faa;
+      color: #333;
   }
   
   .insert {
-      background-color: #c5ffc4;
+      background-color: #ffa;
   }
   
   .replace {
-      background-color: #ffff99;
+      background-color: #e8e8e8;
   }
   
   .comparison {
--- a/tests/test-histedit-fold-non-commute.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-histedit-fold-non-commute.t	Thu Aug 02 18:33:40 2012 +0200
@@ -91,6 +91,7 @@
   does not commute with e
   
   
+  
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   file e already exists
   1 out of 1 hunks FAILED -- saving rejects to file e.rej
--- a/tests/test-histedit-fold.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-histedit-fold.t	Thu Aug 02 18:33:40 2012 +0200
@@ -183,3 +183,56 @@
   
 
   $ cd ..
+
+Test corner case where folded revision is separated from its parent by a
+dropped revision.
+
+
+  $ hg init fold-with-dropped
+  $ cd fold-with-dropped
+  $ printf "1\n2\n3\n" > file
+  $ hg commit -Am '1+2+3'
+  adding file
+  $ echo 4 >> file
+  $ hg commit -m '+4'
+  $ echo 5 >> file
+  $ hg commit -m '+5'
+  $ echo 6 >> file
+  $ hg commit -m '+6'
+  $ hg log -G --template '{rev}:{node|short} {desc|firstline}\n'
+  @  3:251d831eeec5 +6
+  |
+  o  2:888f9082bf99 +5
+  |
+  o  1:617f94f13c0f +4
+  |
+  o  0:0189ba417d34 1+2+3
+  
+  $ EDITED="$TESTTMP/editcommands"
+  $ cat > $EDITED <<EOF
+  > pick 617f94f13c0f 1 +4
+  > drop 888f9082bf99 2 +5
+  > fold 251d831eeec5 3 +6
+  > EOF
+  $ HGEDITOR="cat $EDITED >" hg histedit 1
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  patching file file
+  Hunk #1 FAILED at 2
+  1 out of 1 hunks FAILED -- saving rejects to file file.rej
+  abort: Fix up the change and run hg histedit --continue
+  [255]
+  $ echo 5 >> file
+  $ hg commit -m '+5.2'
+  created new head
+  $ echo 6 >> file
+  $ HGEDITOR=cat hg histedit --continue
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  +4
+  ***
+  +5.2
+  ***
+  +6
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  saved backup bundle to $TESTTMP/fold-with-dropped/.hg/strip-backup/617f94f13c0f-backup.hg (glob)
+  $ cd ..
+
--- a/tests/test-histedit-outgoing.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-histedit-outgoing.t	Thu Aug 02 18:33:40 2012 +0200
@@ -4,13 +4,6 @@
   > histedit=
   > EOF
 
-  $ EDITED="$TESTTMP/editedhistory"
-  $ cat > $EDITED <<EOF
-  > pick 177f92b77385 c
-  > pick e860deea161a e
-  > pick 652413bf663e f
-  > pick 055a42cdd887 d
-  > EOF
   $ initrepos ()
   > {
   >     hg init r
--- a/tests/test-hook.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-hook.t	Thu Aug 02 18:33:40 2012 +0200
@@ -198,7 +198,6 @@
   listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'}
   no changes found
   listkeys hook: HG_NAMESPACE=phases HG_VALUES={'cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b': '1', 'publishing': 'True'}
-  listkeys hook: HG_NAMESPACE=obsolete HG_VALUES={}
   listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'}
   adding remote bookmark bar
   importing bookmark bar
@@ -214,7 +213,6 @@
   searching for changes
   no changes found
   listkeys hook: HG_NAMESPACE=phases HG_VALUES={'cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b': '1', 'publishing': 'True'}
-  listkeys hook: HG_NAMESPACE=namespaces HG_VALUES={'bookmarks': '', 'namespaces': '', 'obsolete': '', 'phases': ''}
   listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'}
   listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'}
   exporting bookmark baz
@@ -558,7 +556,7 @@
   $ echo 'precommit.importfail = python:importfail.whatever' >> .hg/hgrc
 
   $ echo a >> a
-  $ hg --traceback commit -ma 2>&1 | egrep -v '^( +File| {4}[a-zA-Z(])'
+  $ hg --traceback commit -ma 2>&1 | egrep -v '^( +File|    [a-zA-Z(])'
   exception from first failed import attempt:
   Traceback (most recent call last):
   ImportError: No module named somebogusmodule
--- a/tests/test-http-proxy.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-http-proxy.t	Thu Aug 02 18:33:40 2012 +0200
@@ -105,24 +105,20 @@
   * - - [*] "GET http://localhost:$HGPORT/?cmd=batch HTTP/1.1" - - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=getbundle HTTP/1.1" - - x-hgarg-1:common=0000000000000000000000000000000000000000&heads=83180e7845de420a1bb46896fd5fe05294f8d629 (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=listkeys HTTP/1.1" - - x-hgarg-1:namespace=phases (glob)
-  * - - [*] "GET http://localhost:$HGPORT/?cmd=listkeys HTTP/1.1" - - x-hgarg-1:namespace=obsolete (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=listkeys HTTP/1.1" - - x-hgarg-1:namespace=bookmarks (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=capabilities HTTP/1.1" - - (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=batch HTTP/1.1" - - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=getbundle HTTP/1.1" - - x-hgarg-1:common=0000000000000000000000000000000000000000&heads=83180e7845de420a1bb46896fd5fe05294f8d629 (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=listkeys HTTP/1.1" - - x-hgarg-1:namespace=phases (glob)
-  * - - [*] "GET http://localhost:$HGPORT/?cmd=listkeys HTTP/1.1" - - x-hgarg-1:namespace=obsolete (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=listkeys HTTP/1.1" - - x-hgarg-1:namespace=bookmarks (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=capabilities HTTP/1.1" - - (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=batch HTTP/1.1" - - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=getbundle HTTP/1.1" - - x-hgarg-1:common=0000000000000000000000000000000000000000&heads=83180e7845de420a1bb46896fd5fe05294f8d629 (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=listkeys HTTP/1.1" - - x-hgarg-1:namespace=phases (glob)
-  * - - [*] "GET http://localhost:$HGPORT/?cmd=listkeys HTTP/1.1" - - x-hgarg-1:namespace=obsolete (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=listkeys HTTP/1.1" - - x-hgarg-1:namespace=bookmarks (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=capabilities HTTP/1.1" - - (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=batch HTTP/1.1" - - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=getbundle HTTP/1.1" - - x-hgarg-1:common=0000000000000000000000000000000000000000&heads=83180e7845de420a1bb46896fd5fe05294f8d629 (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=listkeys HTTP/1.1" - - x-hgarg-1:namespace=phases (glob)
-  * - - [*] "GET http://localhost:$HGPORT/?cmd=listkeys HTTP/1.1" - - x-hgarg-1:namespace=obsolete (glob)
   * - - [*] "GET http://localhost:$HGPORT/?cmd=listkeys HTTP/1.1" - - x-hgarg-1:namespace=bookmarks (glob)
 
--- a/tests/test-http.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-http.t	Thu Aug 02 18:33:40 2012 +0200
@@ -176,7 +176,10 @@
 clone of serve with repo in root and unserved subrepo (issue2970)
 
   $ hg --cwd test init sub
-  $ hg --cwd test/sub tag something
+  $ echo empty > test/sub/empty
+  $ hg --cwd test/sub add empty
+  $ hg --cwd test/sub commit -qm 'add empty'
+  $ hg --cwd test/sub tag -r 0 something
   $ echo sub = sub > test/.hgsub
   $ hg --cwd test add .hgsub
   $ hg --cwd test commit -qm 'add subrepo'
--- a/tests/test-https.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-https.t	Thu Aug 02 18:33:40 2012 +0200
@@ -125,7 +125,6 @@
   adding file changes
   added 1 changesets with 4 changes to 4 files
   warning: localhost certificate with fingerprint 91:4f:1a:ff:87:24:9c:09:b6:85:9b:88:b1:90:6d:30:75:64:91:ca not verified (check hostfingerprints or web.cacerts config setting)
-  warning: localhost certificate with fingerprint 91:4f:1a:ff:87:24:9c:09:b6:85:9b:88:b1:90:6d:30:75:64:91:ca not verified (check hostfingerprints or web.cacerts config setting)
   updating to branch default
   4 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg verify -R copy-pull
@@ -155,7 +154,6 @@
   added 1 changesets with 1 changes to 1 files
   warning: localhost certificate with fingerprint 91:4f:1a:ff:87:24:9c:09:b6:85:9b:88:b1:90:6d:30:75:64:91:ca not verified (check hostfingerprints or web.cacerts config setting)
   changegroup hook: HG_NODE=5fed3813f7f5e1824344fdc9cf8f63bb662c292d HG_SOURCE=pull HG_URL=https://localhost:$HGPORT/
-  warning: localhost certificate with fingerprint 91:4f:1a:ff:87:24:9c:09:b6:85:9b:88:b1:90:6d:30:75:64:91:ca not verified (check hostfingerprints or web.cacerts config setting)
   (run 'hg update' to get a working copy)
   $ cd ..
 
@@ -184,7 +182,6 @@
   pulling from https://localhost:$HGPORT/
   searching for changes
   no changes found
-  warning: localhost certificate with fingerprint 91:4f:1a:ff:87:24:9c:09:b6:85:9b:88:b1:90:6d:30:75:64:91:ca not verified (check hostfingerprints or web.cacerts config setting)
 
 cacert mismatch
 
@@ -197,7 +194,6 @@
   pulling from https://127.0.0.1:$HGPORT/
   searching for changes
   no changes found
-  warning: 127.0.0.1 certificate with fingerprint 91:4f:1a:ff:87:24:9c:09:b6:85:9b:88:b1:90:6d:30:75:64:91:ca not verified (check hostfingerprints or web.cacerts config setting)
   $ hg -R copy-pull pull --config web.cacerts=pub-other.pem
   abort: error: *:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed (glob)
   [255]
@@ -206,7 +202,6 @@
   pulling from https://localhost:$HGPORT/
   searching for changes
   no changes found
-  warning: localhost certificate with fingerprint 91:4f:1a:ff:87:24:9c:09:b6:85:9b:88:b1:90:6d:30:75:64:91:ca not verified (check hostfingerprints or web.cacerts config setting)
 
 Test server cert which isn't valid yet
 
@@ -264,7 +259,6 @@
   pulling from https://localhost:$HGPORT/
   searching for changes
   no changes found
-  warning: localhost certificate with fingerprint 91:4f:1a:ff:87:24:9c:09:b6:85:9b:88:b1:90:6d:30:75:64:91:ca not verified (check hostfingerprints or web.cacerts config setting)
 
 Test https with cacert and fingerprint through proxy
 
--- a/tests/test-largefiles.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-largefiles.t	Thu Aug 02 18:33:40 2012 +0200
@@ -141,6 +141,43 @@
   $ cat sub/large4
   large22
 
+Test copies and moves from a directory other than root (issue3516)
+
+  $ cd ..
+  $ hg init lf_cpmv
+  $ cd lf_cpmv
+  $ mkdir dira
+  $ mkdir dira/dirb
+  $ touch dira/dirb/largefile
+  $ hg add --large dira/dirb/largefile
+  $ hg commit -m "added"
+  Invoking status precommit hook
+  A dira/dirb/largefile
+  $ cd dira
+  $ hg cp dirb/largefile foo/largefile
+  $ hg ci -m "deep copy"
+  Invoking status precommit hook
+  A dira/foo/largefile
+  $ find . | sort
+  .
+  ./dirb
+  ./dirb/largefile
+  ./foo
+  ./foo/largefile
+  $ hg mv foo/largefile baz/largefile
+  $ hg ci -m "moved"
+  Invoking status precommit hook
+  A dira/baz/largefile
+  R dira/foo/largefile
+  $ find . | sort
+  .
+  ./baz
+  ./baz/largefile
+  ./dirb
+  ./dirb/largefile
+  ./foo
+  $ cd ../../a
+
 #if hgweb
 Test display of largefiles in hgweb
 
@@ -370,6 +407,176 @@
   removing normal3
   adding normaladdremove
 
+Test addremove with -R
+
+  $ hg up -C
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  getting changed largefiles
+  1 largefiles updated, 0 removed
+  $ rm normal3
+  $ rm sub/large4
+  $ echo "testing addremove with patterns" > testaddremove.dat
+  $ echo "normaladdremove" > normaladdremove
+  $ cd ..
+  $ hg -R a addremove
+  removing sub/large4
+  adding a/testaddremove.dat as a largefile (glob)
+  removing normal3
+  adding normaladdremove
+  $ cd a
+
+Test 3364
+  $ hg clone . ../addrm
+  updating to branch default
+  5 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  getting changed largefiles
+  3 largefiles updated, 0 removed
+  $ cd ../addrm
+  $ cat >> .hg/hgrc <<EOF
+  > [hooks]
+  > post-commit.stat=sh -c "echo \"Invoking status postcommit hook\"; hg status -A"
+  > EOF
+  $ touch foo
+  $ hg add --large foo
+  $ hg ci -m "add foo"
+  Invoking status precommit hook
+  A foo
+  Invoking status postcommit hook
+  C foo
+  C normal3
+  C sub/large4
+  C sub/normal4
+  C sub2/large6
+  C sub2/large7
+  $ rm foo
+  $ hg st
+  ! foo
+hmm.. no precommit invoked, but there is a postcommit??
+  $ hg ci -m "will not checkin"
+  nothing changed
+  Invoking status postcommit hook
+  ! foo
+  C normal3
+  C sub/large4
+  C sub/normal4
+  C sub2/large6
+  C sub2/large7
+  [1]
+  $ hg addremove
+  removing foo
+  $ hg st
+  R foo
+  $ hg ci -m "used to say nothing changed"
+  Invoking status precommit hook
+  R foo
+  Invoking status postcommit hook
+  C normal3
+  C sub/large4
+  C sub/normal4
+  C sub2/large6
+  C sub2/large7
+  $ hg st
+
+Test 3507 (both normal files and largefiles were a problem)
+
+  $ touch normal
+  $ touch large
+  $ hg add normal
+  $ hg add --large large
+  $ hg ci -m "added"
+  Invoking status precommit hook
+  A large
+  A normal
+  Invoking status postcommit hook
+  C large
+  C normal
+  C normal3
+  C sub/large4
+  C sub/normal4
+  C sub2/large6
+  C sub2/large7
+  $ hg remove normal
+  $ hg addremove --traceback
+  $ hg ci -m "addremoved normal"
+  Invoking status precommit hook
+  R normal
+  Invoking status postcommit hook
+  C large
+  C normal3
+  C sub/large4
+  C sub/normal4
+  C sub2/large6
+  C sub2/large7
+  $ hg up -C '.^'
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  getting changed largefiles
+  0 largefiles updated, 0 removed
+  $ hg remove large
+  $ hg addremove --traceback
+  $ hg ci -m "removed large"
+  Invoking status precommit hook
+  R large
+  created new head
+  Invoking status postcommit hook
+  C normal
+  C normal3
+  C sub/large4
+  C sub/normal4
+  C sub2/large6
+  C sub2/large7
+
+Test that a standin can't be added as a large file
+
+  $ touch large
+  $ hg add --large large
+  $ hg ci -m "add"
+  Invoking status precommit hook
+  A large
+  Invoking status postcommit hook
+  C large
+  C normal
+  C normal3
+  C sub/large4
+  C sub/normal4
+  C sub2/large6
+  C sub2/large7
+  $ hg remove large
+  $ touch large
+  $ hg addremove --config largefiles.patterns=**large --traceback
+  adding large as a largefile
+
+Test that outgoing --large works (with revsets too)
+  $ hg outgoing --rev '.^' --large
+  comparing with $TESTTMP/a (glob)
+  searching for changes
+  changeset:   8:c02fd3b77ec4
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     add foo
+  
+  changeset:   9:289dd08c9bbb
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     used to say nothing changed
+  
+  changeset:   10:34f23ac6ac12
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     added
+  
+  changeset:   12:710c1b2f523c
+  parent:      10:34f23ac6ac12
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     removed large
+  
+  searching for changes
+  largefiles to upload:
+  large
+  foo
+  
+  $ cd ../a
+
 Clone a largefiles repo.
 
   $ hg clone . ../b
@@ -692,6 +899,8 @@
   reverting .hglf/sub2/large6 (glob)
   $ cat sub2/large6
   large6
+  $ hg revert --no-backup -C -r '.^' sub2
+  reverting .hglf/sub2/large6 (glob)
   $ hg revert --no-backup sub2
   reverting .hglf/sub2/large6 (glob)
   $ hg status
@@ -853,6 +1062,10 @@
   $ rm cat.out
   $ hg cat -r a381d2c8c80e normal3
   normal3-modified
+  $ hg cat -r '.^' normal3
+  normal3-modified
+  $ hg cat -r '.^' sub/large4
+  large4-modified
 
 Test that renaming a largefile results in correct output for status
 
@@ -988,7 +1201,8 @@
   $ cd ..
 
 putlfile errors are shown (issue3123)
-Corrupt the cached largefile in r7
+Corrupt the cached largefile in r7 and in the usercache (required for testing on vfat)
+  $ echo corruption > "$TESTTMP/r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8"
   $ echo corruption > "$USERCACHE/4cdac4d8b084d0b599525cf732437fb337d422a8"
   $ hg init empty
   $ hg serve -R empty -d -p $HGPORT1 --pid-file hg.pid \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-obsolete-changeset-exchange.t	Thu Aug 02 18:33:40 2012 +0200
@@ -0,0 +1,55 @@
+Test changesets filtering during exchanges (some tests are still in
+test-obsolete.t)
+
+  $ cat > obs.py << EOF
+  > import mercurial.obsolete
+  > mercurial.obsolete._enabled = True
+  > EOF
+  $ echo '[extensions]' >> $HGRCPATH
+  $ echo "obs=${TESTTMP}/obs.py" >> $HGRCPATH
+
+Push does not corrupt remote
+----------------------------
+
+Create a DAG where a changeset reuses a revision from a file first used in an
+extinct changeset.
+
+  $ hg init local
+  $ cd local
+  $ echo 'base' > base
+  $ hg commit -Am base
+  adding base
+  $ echo 'A' > A
+  $ hg commit -Am A
+  adding A
+  $ hg up 0
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ hg revert -ar 1
+  adding A
+  $ hg commit -Am "A'"
+  created new head
+  $ hg log -G --template='{desc} {node}'
+  @  A' f89bcc95eba5174b1ccc3e33a82e84c96e8338ee
+  |
+  | o  A 9d73aac1b2ed7d53835eaeec212ed41ea47da53a
+  |/
+  o  base d20a80d4def38df63a4b330b7fb688f3d4cae1e3
+  
+  $ hg debugobsolete 9d73aac1b2ed7d53835eaeec212ed41ea47da53a f89bcc95eba5174b1ccc3e33a82e84c96e8338ee
+
+Push it. The bundle should not refer to the extinct changeset.
+
+  $ hg init ../other
+  $ hg push ../other
+  pushing to ../other
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 2 changes to 2 files
+  $ hg -R ../other verify
+  checking changesets
+  checking manifests
+  crosschecking files in changesets and manifests
+  checking files
+  2 files, 2 changesets, 2 total revisions
--- a/tests/test-obsolete.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-obsolete.t	Thu Aug 02 18:33:40 2012 +0200
@@ -14,13 +14,44 @@
   >    hg id --debug -ir "desc('$1')"
   > }
 
+  $ cat > debugkeys.py <<EOF
+  > def reposetup(ui, repo):
+  >     class debugkeysrepo(repo.__class__):
+  >         def listkeys(self, namespace):
+  >             ui.write('listkeys %s\n' % (namespace,))
+  >             return super(debugkeysrepo, self).listkeys(namespace)
+  > 
+  >     if repo.local():
+  >         repo.__class__ = debugkeysrepo
+  > EOF
 
   $ hg init tmpa
   $ cd tmpa
+  $ mkcommit kill_me
+
+Checking that the feature is properly disabled
+
+  $ hg debugobsolete -d '0 0' `getid kill_me` -u babar
+  abort: obsolete feature is not enabled on this repo
+  [255]
+
+Enabling it
+
+  $ cat > ../obs.py << EOF
+  > import mercurial.obsolete
+  > mercurial.obsolete._enabled = True
+  > EOF
+  $ echo '[extensions]' >> $HGRCPATH
+  $ echo "obs=${TESTTMP}/obs.py" >> $HGRCPATH
 
 Killing a single changeset without replacement
 
-  $ mkcommit kill_me
+  $ hg debugobsolete 0
+  abort: changeset references must be full hexadecimal node identifiers
+  [255]
+  $ hg debugobsolete '00'
+  abort: changeset references must be full hexadecimal node identifiers
+  [255]
   $ hg debugobsolete -d '0 0' `getid kill_me` -u babar
   $ hg debugobsolete
   97b7c2d76b1845ed3eb988cd612611e72406cef0 0 {'date': '0 0', 'user': 'babar'}
@@ -178,6 +209,63 @@
   ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 {'date': '1338 0', 'user': 'test'}
   1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 {'date': '1339 0', 'user': 'test'}
 
+Check obsolete keys are exchanged only if source has an obsolete store
+
+  $ hg init empty
+  $ hg --config extensions.debugkeys=debugkeys.py -R empty push tmpd
+  pushing to tmpd
+  no changes found
+  listkeys phases
+  listkeys bookmarks
+  [1]
+
+clone support
+(markers are copied and extinct changesets are included to allow hardlinks)
+
+  $ hg clone tmpb clone-dest
+  updating to branch default
+  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg -R clone-dest log -G --hidden
+  @  changeset:   5:5601fb93a350
+  |  tag:         tip
+  |  parent:      1:7c3bad9141dc
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     add new_3_c
+  |
+  | x  changeset:   4:ca819180edb9
+  |/   parent:      1:7c3bad9141dc
+  |    user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     add new_2_c
+  |
+  | x  changeset:   3:cdbce2fbb163
+  |/   parent:      1:7c3bad9141dc
+  |    user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     add new_c
+  |
+  | o  changeset:   2:245bde4270cd
+  |/   user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     add original_c
+  |
+  o  changeset:   1:7c3bad9141dc
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     add b
+  |
+  o  changeset:   0:1f0dee641bb7
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     add a
+  
+  $ hg -R clone-dest debugobsolete
+  245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f 0 {'date': '56 12', 'user': 'test'}
+  cdbce2fbb16313928851e97e0d85413f3f7eb77f ca819180edb99ed25ceafb3e9584ac287e240b00 0 {'date': '1337 0', 'user': 'test'}
+  ca819180edb99ed25ceafb3e9584ac287e240b00 1337133713371337133713371337133713371337 0 {'date': '1338 0', 'user': 'test'}
+  1337133713371337133713371337133713371337 5601fb93a350734d935195fee37f4054c529ff39 0 {'date': '1339 0', 'user': 'test'}
+
 
 Destination repo have existing data
 ---------------------------------------
@@ -404,3 +492,17 @@
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
+
+Checking _enable=False warning if obsolete marker exists
+
+  $ echo '[extensions]' >> $HGRCPATH
+  $ echo "obs=!" >> $HGRCPATH
+  $ hg log -r tip
+  obsolete feature not enabled but 7 markers found!
+  changeset:   6:d6a026544050
+  tag:         tip
+  parent:      3:5601fb93a350
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     add obsolete_e
+  
--- a/tests/test-push-warn.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-push-warn.t	Thu Aug 02 18:33:40 2012 +0200
@@ -37,6 +37,7 @@
   searching: 2 queries
   query 2; still undecided: 1, sample size is: 1
   2 total queries
+  listing keys for "bookmarks"
   new remote heads on branch 'default'
   new remote head 1e108cc5548c
   abort: push creates new remote head 1e108cc5548c!
--- a/tests/test-ssh.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-ssh.t	Thu Aug 02 18:33:40 2012 +0200
@@ -167,7 +167,6 @@
   bookmarks	
   phases	
   namespaces	
-  obsolete	
   $ hg book foo -r 0
   $ hg out -B
   comparing with ssh://user@dummy/remote
@@ -278,9 +277,12 @@
 Test remote paths with spaces (issue2983):
 
   $ hg init --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo"
+  $ touch "$TESTTMP/a repo/test"
+  $ hg -R 'a repo' commit -A -m "test"
+  adding test
   $ hg -R 'a repo' tag tag
   $ hg id --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo"
-  3fb238f49e8c
+  73649e48688a
 
 Test hg-ssh using a helper script that will restore PYTHONPATH (which might
 have been cleared by a hg.exe wrapper) and invoke hg-ssh with the right
@@ -296,7 +298,7 @@
   > EOF
 
   $ hg id --ssh "sh ssh.sh" "ssh://user@dummy/a repo"
-  3fb238f49e8c
+  73649e48688a
 
   $ hg id --ssh "sh ssh.sh" "ssh://user@dummy/a'repo"
   remote: Illegal repository "$TESTTMP/a'repo" (glob)
--- a/tests/test-static-http.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-static-http.t	Thu Aug 02 18:33:40 2012 +0200
@@ -112,6 +112,9 @@
 
   $ hg init
   $ hg init sub
+  $ touch sub/test
+  $ hg -R sub commit -A -m "test"
+  adding test
   $ hg -R sub tag not-empty
   $ echo sub=sub > .hgsub
   $ echo a > a
@@ -129,7 +132,7 @@
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
+  added 2 changesets with 2 changes to 2 files
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ cd local2
   $ hg verify
--- a/tests/test-subrepo-git.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-subrepo-git.t	Thu Aug 02 18:33:40 2012 +0200
@@ -430,7 +430,7 @@
   $ git add f1
   $ cd ..
   $ hg id -n
-  1
+  1+
   $ cd s
   $ git rev-parse HEAD
   da5f5b1d8ffcf62fb8327bcd3c89a4367a6018e7
@@ -487,7 +487,7 @@
    l
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg id -n
-  7
+  7+
   $ cd s
   $ git rev-parse HEAD
   aa84837ccfbdfedcdcdeeedc309d73e6eb069edc
--- a/tests/test-subrepo-svn.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-subrepo-svn.t	Thu Aug 02 18:33:40 2012 +0200
@@ -313,7 +313,7 @@
   A         f1
   $ cd ..
   $ hg id -n
-  1
+  1+
   $ cd s
   $ svnversion
   2M
@@ -376,7 +376,7 @@
    l
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg id -n
-  2
+  2+
   $ cd s
   $ svnversion
   1M
--- a/tests/test-subrepo.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-subrepo.t	Thu Aug 02 18:33:40 2012 +0200
@@ -112,10 +112,16 @@
   abort: uncommitted changes in subrepo s
   (use --subrepos for recursive commit)
   [255]
+  $ hg id
+  f6affe3fbfaa+ tip
+  $ hg -R s ci -mc
+  $ hg id
+  f6affe3fbfaa+ tip
+  $ echo d > s/a
   $ hg ci -m4
   committing subrepository s
   $ hg tip -R s
-  changeset:   3:1c833a7a9e3a
+  changeset:   4:02dcf1d70411
   tag:         tip
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
@@ -135,7 +141,7 @@
   $ hg debugsub
   path s
    source   s
-   revision 1c833a7a9e3a4445c711aaf0f012379cd0d4034e
+   revision 02dcf1d704118aee3ee306ccfa1910850d5b05ef
 
 new branch for merge tests
 
@@ -741,7 +747,7 @@
   $ hg add -S s/f1
   $ hg add -S t/f1
   $ hg id
-  365661e5936a
+  365661e5936a+
   $ hg -R s id
   fc627a69481f+
   $ hg -R t id  
@@ -785,7 +791,7 @@
   $ hg id
   e45c8b14af55+
   $ hg -R s id
-  1c833a7a9e3a
+  02dcf1d70411
   $ hg -R t id  
   7af322bc1198
 
@@ -797,21 +803,21 @@
   $ hg id
   e45c8b14af55+
   $ hg -R s id
-  1c833a7a9e3a+
+  02dcf1d70411+
   $ hg -R t id  
   7af322bc1198+
   $ hg update tip
    subrepository sources for s differ
-  use (l)ocal source (1c833a7a9e3a) or (r)emote source (12a213df6fa9)?
+  use (l)ocal source (02dcf1d70411) or (r)emote source (12a213df6fa9)?
    l
    subrepository sources for t differ
   use (l)ocal source (7af322bc1198) or (r)emote source (52c0adc0515a)?
    l
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg id
-  925c17564ef8 tip
+  925c17564ef8+ tip
   $ hg -R s id
-  1c833a7a9e3a+
+  02dcf1d70411+
   $ hg -R t id  
   7af322bc1198+
 
--- a/tests/test-tag.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-tag.t	Thu Aug 02 18:33:40 2012 +0200
@@ -248,7 +248,6 @@
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg tag new-topo-head
 
-
 tagging on null rev
 
   $ hg up null
@@ -259,6 +258,12 @@
 
   $ hg init empty
   $ hg tag -R empty nullrev
+  abort: null revision specified
+  [255]
+
+  $ hg tag -R empty -r 00000000000 -f nulltag
+  abort: null revision specified
+  [255]
 
   $ cd ..
 
@@ -300,6 +305,9 @@
 commit hook on tag used to be run without write lock - issue3344
 
   $ hg init repo-tag
+  $ touch repo-tag/test
+  $ hg -R repo-tag commit -A -m "test"
+  adding test
   $ hg init repo-tag-target
   $ hg -R repo-tag --config hooks.commit="\"hg\" push \"`pwd`/repo-tag-target\"" tag tag
   pushing to $TESTTMP/repo-tag-target
@@ -307,5 +315,5 @@
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
+  added 2 changesets with 2 changes to 2 files
 
--- a/tests/test-transplant.t	Thu Aug 02 17:48:58 2012 +0200
+++ b/tests/test-transplant.t	Thu Aug 02 18:33:40 2012 +0200
@@ -603,3 +603,32 @@
   applying be9f9b39483f
   be9f9b39483f transplanted to 9959e51f94d1
   $ cd ..
+
+test transplanting a patch turning into a no-op
+
+  $ hg init binarysource
+  $ cd binarysource
+  $ echo a > a
+  $ hg ci -Am adda a
+  >>> file('b', 'wb').write('\0b1')
+  $ hg ci -Am addb b
+  >>> file('b', 'wb').write('\0b2')
+  $ hg ci -m changeb b
+  $ cd ..
+
+  $ hg clone -r0 binarysource binarydest
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  updating to branch default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ cd binarydest
+  $ cp ../binarysource/b b
+  $ hg ci -Am addb2 b
+  $ hg transplant -s ../binarysource 2
+  searching for changes
+  applying 7a7d57e15850
+  skipping emptied changeset 7a7d57e15850
+  $ cd ..
+