merge with stable
authorMatt Mackall <mpm@selenic.com>
Mon, 09 Jan 2012 20:16:57 -0600
changeset 15801 bfd3ce759682
parent 15797 c7a8164c61ab (diff)
parent 15800 e4fc0f0b4f7e (current diff)
child 15807 7e5af0ee975c
merge with stable
hgext/mq.py
hgext/rebase.py
mercurial/dirstate.py
tests/test-rebase-named-branches.t
--- a/.hgignore	Sun Jan 08 23:09:35 2012 +0800
+++ b/.hgignore	Mon Jan 09 20:16:57 2012 -0600
@@ -49,3 +49,8 @@
 syntax: regexp
 ^\.pc/
 ^\.(pydev)?project
+
+# hackable windows distribution additions
+^hg-python26/
+^hg.exe$
+^hg.py$
--- a/contrib/check-code.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/contrib/check-code.py	Mon Jan 09 20:16:57 2012 -0600
@@ -131,7 +131,8 @@
     (r'[^\n]\Z', "no trailing newline"),
     (r'(\S[ \t]+|^[ \t]+)\n', "trailing whitespace"),
 #    (r'^\s+[^_ \n][^_. \n]+_[^_\n]+\s*=', "don't use underbars in identifiers"),
-#    (r'\w*[a-z][A-Z]\w*\s*=', "don't use camelcase in identifiers"),
+    (r'^\s+(self\.)?[A-za-z][a-z0-9]+[A-Z]\w* = ',
+     "don't use camelcase in identifiers"),
     (r'^\s*(if|while|def|class|except|try)\s[^[\n]*:\s*[^\\n]#\s]+',
      "linebreak after :"),
     (r'class\s[^( \n]+:', "old-style class, use class foo(object)"),
@@ -301,7 +302,7 @@
     return lines
 
 def checkfile(f, logfunc=_defaultlogger.log, maxerr=None, warnings=False,
-              blame=False, debug=False):
+              blame=False, debug=False, lineno=True):
     """checks style and portability of a given file
 
     :f: filepath
@@ -384,7 +385,7 @@
                         bl, bu, br = blamecache[n]
                         if bl == l:
                             bd = '%s@%s' % (bu, br)
-                errors.append((f, n + 1, l, msg, bd))
+                errors.append((f, lineno and n + 1, l, msg, bd))
                 result = False
 
         errors.sort()
@@ -407,8 +408,11 @@
                       help="use annotate to generate blame info")
     parser.add_option("", "--debug", action="store_true",
                       help="show debug information")
+    parser.add_option("", "--nolineno", action="store_false",
+                      dest='lineno', help="don't show line numbers")
 
-    parser.set_defaults(per_file=15, warnings=False, blame=False, debug=False)
+    parser.set_defaults(per_file=15, warnings=False, blame=False, debug=False,
+                        lineno=True)
     (options, args) = parser.parse_args()
 
     if len(args) == 0:
@@ -416,9 +420,10 @@
     else:
         check = args
 
+    ret = 0
     for f in check:
-        ret = 0
         if not checkfile(f, maxerr=options.per_file, warnings=options.warnings,
-                         blame=options.blame, debug=options.debug):
+                         blame=options.blame, debug=options.debug,
+                         lineno=options.lineno):
             ret = 1
     sys.exit(ret)
--- a/contrib/mercurial.el	Sun Jan 08 23:09:35 2012 +0800
+++ b/contrib/mercurial.el	Mon Jan 09 20:16:57 2012 -0600
@@ -15,8 +15,7 @@
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with mercurial.el, GNU Emacs, or XEmacs; see the file COPYING
-;; (`C-h C-l').  If not, write to the Free Software Foundation, Inc.,
-;; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+;; (`C-h C-l').  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
--- a/contrib/mq.el	Sun Jan 08 23:09:35 2012 +0800
+++ b/contrib/mq.el	Mon Jan 09 20:16:57 2012 -0600
@@ -15,8 +15,7 @@
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with mq.el, GNU Emacs, or XEmacs; see the file COPYING (`C-h
-;; C-l').  If not, write to the Free Software Foundation, Inc., 59
-;; Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+;; C-l').  If not, see <http://www.gnu.org/licenses/>.
 
 (eval-when-compile (require 'cl))
 (require 'mercurial)
Binary file contrib/wix/COPYING.rtf has changed
--- a/contrib/zsh_completion	Sun Jan 08 23:09:35 2012 +0800
+++ b/contrib/zsh_completion	Mon Jan 09 20:16:57 2012 -0600
@@ -880,6 +880,12 @@
   '*:pattern:_hg_files'
 }
 
+_hg_cmd_qfinish() {
+  _arguments -s -w : $_hg_global_opts \
+  '(--all -a)'{-a,--all}'[finish all patches]' \
+  '*:patch:_hg_qapplied'
+}
+
 _hg_cmd_qfold() {
   _arguments -s -w : $_hg_global_opts $_h_commit_opts \
   '(--keep,-k)'{-k,--keep}'[keep folded patch files]' \
--- a/hgext/color.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/color.py	Mon Jan 09 20:16:57 2012 -0600
@@ -2,19 +2,8 @@
 #
 # Copyright (C) 2007 Kevin Christen <kevin.christen@gmail.com>
 #
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2 of the License, or (at your
-# option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
-# Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2 or any later version.
 
 '''colorize output from some commands
 
--- a/hgext/convert/common.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/convert/common.py	Mon Jan 09 20:16:57 2012 -0600
@@ -11,6 +11,8 @@
 from mercurial import util
 from mercurial.i18n import _
 
+propertycache = util.propertycache
+
 def encodeargs(args):
     def encodearg(s):
         lines = base64.encodestring(s)
@@ -321,14 +323,12 @@
         self.checkexit(status, ''.join(output))
         return output
 
-    def getargmax(self):
-        if '_argmax' in self.__dict__:
-            return self._argmax
-
+    @propertycache
+    def argmax(self):
         # POSIX requires at least 4096 bytes for ARG_MAX
-        self._argmax = 4096
+        argmax = 4096
         try:
-            self._argmax = os.sysconf("SC_ARG_MAX")
+            argmax = os.sysconf("SC_ARG_MAX")
         except:
             pass
 
@@ -339,13 +339,11 @@
 
         # Since ARG_MAX is for command line _and_ environment, lower our limit
         # (and make happy Windows shells while doing this).
-
-        self._argmax = self._argmax / 2 - 1
-        return self._argmax
+        return argmax // 2 - 1
 
     def limit_arglist(self, arglist, cmd, closestdin, *args, **kwargs):
         cmdlen = len(self._cmdline(cmd, closestdin, *args, **kwargs))
-        limit = self.getargmax() - cmdlen
+        limit = self.argmax - cmdlen
         bytes = 0
         fl = []
         for fn in arglist:
--- a/hgext/convert/cvsps.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/convert/cvsps.py	Mon Jan 09 20:16:57 2012 -0600
@@ -556,27 +556,25 @@
 
     # Sort files in each changeset
 
+    def entitycompare(l, r):
+        'Mimic cvsps sorting order'
+        l = l.file.split('/')
+        r = r.file.split('/')
+        nl = len(l)
+        nr = len(r)
+        n = min(nl, nr)
+        for i in range(n):
+            if i + 1 == nl and nl < nr:
+                return -1
+            elif i + 1 == nr and nl > nr:
+                return +1
+            elif l[i] < r[i]:
+                return -1
+            elif l[i] > r[i]:
+                return +1
+        return 0
+
     for c in changesets:
-        def pathcompare(l, r):
-            'Mimic cvsps sorting order'
-            l = l.split('/')
-            r = r.split('/')
-            nl = len(l)
-            nr = len(r)
-            n = min(nl, nr)
-            for i in range(n):
-                if i + 1 == nl and nl < nr:
-                    return -1
-                elif i + 1 == nr and nl > nr:
-                    return +1
-                elif l[i] < r[i]:
-                    return -1
-                elif l[i] > r[i]:
-                    return +1
-            return 0
-        def entitycompare(l, r):
-            return pathcompare(l.file, r.file)
-
         c.entries.sort(entitycompare)
 
     # Sort changesets by date
--- a/hgext/convert/darcs.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/convert/darcs.py	Mon Jan 09 20:16:57 2012 -0600
@@ -24,7 +24,7 @@
             try:
                 from elementtree.ElementTree import ElementTree, XMLParser
             except ImportError:
-                ElementTree = None
+                pass
 
 class darcs_source(converter_source, commandline):
     def __init__(self, ui, path, rev=None):
@@ -42,7 +42,7 @@
             raise util.Abort(_('darcs version 2.1 or newer needed (found %r)') %
                              version)
 
-        if ElementTree is None:
+        if "ElementTree" not in globals():
             raise util.Abort(_("Python ElementTree module is not available"))
 
         self.path = os.path.realpath(path)
--- a/hgext/convert/subversion.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/convert/subversion.py	Mon Jan 09 20:16:57 2012 -0600
@@ -1116,6 +1116,12 @@
         return u"svn:%s@%s" % (self.uuid, rev)
 
     def putcommit(self, files, copies, parents, commit, source, revmap):
+        for parent in parents:
+            try:
+                return self.revid(self.childmap[parent])
+            except KeyError:
+                pass
+
         # Apply changes to working copy
         for f, v in files:
             try:
@@ -1128,11 +1134,6 @@
                     self.copies.append([copies[f], f])
         files = [f[0] for f in files]
 
-        for parent in parents:
-            try:
-                return self.revid(self.childmap[parent])
-            except KeyError:
-                pass
         entries = set(self.delete)
         files = frozenset(files)
         entries.update(self.add_dirs(files.difference(entries)))
--- a/hgext/convert/transport.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/convert/transport.py	Mon Jan 09 20:16:57 2012 -0600
@@ -15,8 +15,7 @@
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
 
 from mercurial import util
 from svn.core import SubversionException, Pool
--- a/hgext/hgcia.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/hgcia.py	Mon Jan 09 20:16:57 2012 -0600
@@ -113,7 +113,7 @@
                 # diffstat is stupid
                 self.name = 'cia'
             def write(self, data):
-                self.lines.append(data)
+                self.lines += data.splitlines(True)
             def close(self):
                 pass
 
--- a/hgext/largefiles/lfcommands.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/largefiles/lfcommands.py	Mon Jan 09 20:16:57 2012 -0600
@@ -455,7 +455,13 @@
             ret = -1
     state = repo.dirstate[lfutil.standin(lfile)]
     if state == 'n':
-        lfdirstate.normal(lfile)
+        # When rebasing, we need to synchronize the standin and the largefile,
+        # 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)
+        else:
+            lfdirstate.normal(lfile)
     elif state == 'r':
         lfdirstate.remove(lfile)
     elif state == 'a':
--- a/hgext/largefiles/lfutil.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/largefiles/lfutil.py	Mon Jan 09 20:16:57 2012 -0600
@@ -139,6 +139,8 @@
         return super(largefiles_dirstate, self).drop(unixpath(f))
     def forget(self, f):
         return super(largefiles_dirstate, self).forget(unixpath(f))
+    def normallookup(self, f):
+        return super(largefiles_dirstate, self).normallookup(unixpath(f))
 
 def openlfdirstate(ui, repo):
     '''
@@ -152,11 +154,7 @@
 
     # If the largefiles dirstate does not exist, populate and create
     # it. This ensures that we create it on the first meaningful
-    # largefiles operation in a new clone. It also gives us an easy
-    # way to forcibly rebuild largefiles state:
-    #   rm .hg/largefiles/dirstate && hg status
-    # Or even, if things are really messed up:
-    #   rm -rf .hg/largefiles && hg status
+    # largefiles operation in a new clone.
     if not os.path.exists(os.path.join(admin, 'dirstate')):
         util.makedirs(admin)
         matcher = getstandinmatcher(repo)
@@ -170,27 +168,19 @@
             except OSError, err:
                 if err.errno != errno.ENOENT:
                     raise
-
-        lfdirstate.write()
-
     return lfdirstate
 
 def lfdirstate_status(lfdirstate, repo, rev):
-    wlock = repo.wlock()
-    try:
-        match = match_.always(repo.root, repo.getcwd())
-        s = lfdirstate.status(match, [], False, False, False)
-        unsure, modified, added, removed, missing, unknown, ignored, clean = s
-        for lfile in unsure:
-            if repo[rev][standin(lfile)].data().strip() != \
-                    hashfile(repo.wjoin(lfile)):
-                modified.append(lfile)
-            else:
-                clean.append(lfile)
-                lfdirstate.normal(lfile)
-        lfdirstate.write()
-    finally:
-        wlock.release()
+    match = match_.always(repo.root, repo.getcwd())
+    s = lfdirstate.status(match, [], False, False, False)
+    unsure, modified, added, removed, missing, unknown, ignored, clean = s
+    for lfile in unsure:
+        if repo[rev][standin(lfile)].data().strip() != \
+                hashfile(repo.wjoin(lfile)):
+            modified.append(lfile)
+        else:
+            clean.append(lfile)
+            lfdirstate.normal(lfile)
     return (modified, added, removed, missing, unknown, ignored, clean)
 
 def listlfiles(repo, rev=None, matcher=None):
@@ -232,6 +222,16 @@
         return
     copytostoreabsolute(repo, repo.wjoin(file), hash)
 
+def copyalltostore(repo, node):
+    '''Copy all largefiles in a given revision to the store'''
+
+    ctx = repo[node]
+    for filename in ctx.files():
+        if isstandin(filename) and filename in ctx.manifest():
+            realfile = splitstandin(filename)
+            copytostore(repo, ctx.node(), realfile)
+
+
 def copytostoreabsolute(repo, file, hash):
     util.makedirs(os.path.dirname(storepath(repo, hash)))
     if inusercache(repo.ui, hash):
@@ -401,17 +401,8 @@
 
 def writehash(hash, filename, executable):
     util.makedirs(os.path.dirname(filename))
-    if os.path.exists(filename):
-        os.unlink(filename)
-    wfile = open(filename, 'wb')
-
-    try:
-        wfile.write(hash)
-        wfile.write('\n')
-    finally:
-        wfile.close()
-    if os.path.exists(filename):
-        os.chmod(filename, getmode(executable))
+    util.writefile(filename, hash + '\n')
+    os.chmod(filename, getmode(executable))
 
 def getexecutable(filename):
     mode = os.stat(filename).st_mode
--- a/hgext/largefiles/overrides.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/largefiles/overrides.py	Mon Jan 09 20:16:57 2012 -0600
@@ -20,6 +20,8 @@
 import lfutil
 import lfcommands
 
+# -- Utility functions: commonly/repeatedly needed functionality ---------------
+
 def installnormalfilesmatchfn(manifest):
     '''overrides scmutil.match so that the matcher it returns will ignore all
     largefiles'''
@@ -51,19 +53,13 @@
     restore matchfn to reverse'''
     scmutil.match = getattr(scmutil.match, 'oldmatch', scmutil.match)
 
-# -- Wrappers: modify existing commands --------------------------------
-
-# Add works by going through the files that the user wanted to add and
-# checking if they should be added as largefiles. Then it makes a new
-# matcher which matches only the normal files and runs the original
-# version of add.
-def override_add(orig, ui, repo, *pats, **opts):
+def add_largefiles(ui, repo, *pats, **opts):
     large = opts.pop('large', None)
     lfsize = lfutil.getminsize(
         ui, lfutil.islfilesrepo(repo), opts.pop('lfsize', None))
 
     lfmatcher = None
-    if os.path.exists(repo.wjoin(lfutil.shortname)):
+    if lfutil.islfilesrepo(repo):
         lfpats = ui.configlist(lfutil.longname, 'patterns', default=[])
         if lfpats:
             lfmatcher = match_.match(repo.root, '', list(lfpats))
@@ -117,19 +113,9 @@
                     if f in m.files()]
     finally:
         wlock.release()
-
-    installnormalfilesmatchfn(repo[None].manifest())
-    result = orig(ui, repo, *pats, **opts)
-    restorematchfn()
-
-    return (result == 1 or bad) and 1 or 0
+    return bad
 
-def override_remove(orig, ui, repo, *pats, **opts):
-    manifest = repo[None].manifest()
-    installnormalfilesmatchfn(manifest)
-    orig(ui, repo, *pats, **opts)
-    restorematchfn()
-
+def remove_largefiles(ui, repo, *pats, **opts):
     after = opts.get('after')
     if not pats and not after:
         raise util.Abort(_('no files specified'))
@@ -139,6 +125,7 @@
         s = repo.status(match=m, clean=True)
     finally:
         repo.lfstatus = False
+    manifest = repo[None].manifest()
     modified, added, deleted, clean = [[f for f in list
                                         if lfutil.standin(f) in manifest]
                                        for list in [s[0], s[1], s[3], s[6]]]
@@ -167,21 +154,48 @@
         lfdirstate = lfutil.openlfdirstate(ui, repo)
         for f in remove:
             if not after:
-                os.unlink(repo.wjoin(f))
+                # If this is being called by addremove, notify the user that we
+                # are removing the file.
+                if getattr(repo, "_isaddremove", False):
+                    ui.status(_('removing %s\n' % f))
+                if os.path.exists(repo.wjoin(f)):
+                    os.unlink(repo.wjoin(f))
                 currentdir = os.path.split(f)[0]
                 while currentdir and not os.listdir(repo.wjoin(currentdir)):
                     os.rmdir(repo.wjoin(currentdir))
                     currentdir = os.path.split(currentdir)[0]
             lfdirstate.remove(f)
         lfdirstate.write()
-
         forget = [lfutil.standin(f) for f in forget]
         remove = [lfutil.standin(f) for f in remove]
         lfutil.repo_forget(repo, forget)
-        lfutil.repo_remove(repo, remove, unlink=True)
+        # If this is being called by addremove, let the original addremove
+        # function handle this.
+        if not getattr(repo, "_isaddremove", False):
+            lfutil.repo_remove(repo, remove, unlink=True)
     finally:
         wlock.release()
 
+# -- Wrappers: modify existing commands --------------------------------
+
+# Add works by going through the files that the user wanted to add and
+# checking if they should be added as largefiles. Then it makes a new
+# matcher which matches only the normal files and runs the original
+# version of add.
+def override_add(orig, ui, repo, *pats, **opts):
+    bad = add_largefiles(ui, repo, *pats, **opts)
+    installnormalfilesmatchfn(repo[None].manifest())
+    result = orig(ui, repo, *pats, **opts)
+    restorematchfn()
+
+    return (result == 1 or bad) and 1 or 0
+
+def override_remove(orig, ui, repo, *pats, **opts):
+    installnormalfilesmatchfn(repo[None].manifest())
+    orig(ui, repo, *pats, **opts)
+    restorematchfn()
+    remove_largefiles(ui, repo, *pats, **opts)
+
 def override_status(orig, ui, repo, *pats, **opts):
     try:
         repo.lfstatus = True
@@ -589,7 +603,6 @@
 
 def hg_update(orig, repo, node):
     result = orig(repo, node)
-    # XXX check if it worked first
     lfcommands.updatelfiles(repo.ui, repo)
     return result
 
@@ -717,10 +730,7 @@
     if subrepos:
         for subpath in ctx.substate:
             sub = ctx.sub(subpath)
-            try:
-                sub.archive(repo.ui, archiver, prefix)
-            except TypeError:
-                sub.archive(archiver, prefix)
+            sub.archive(repo.ui, archiver, prefix)
 
     archiver.done()
 
@@ -855,26 +865,29 @@
             ui.status(_('largefiles: %d to upload\n') % len(toupload))
 
 def override_addremove(orig, ui, repo, *pats, **opts):
-    # Check if the parent or child has largefiles; if so, disallow
-    # addremove. If there is a symlink in the manifest then getting
-    # the manifest throws an exception: catch it and let addremove
-    # deal with it.
-    try:
-        manifesttip = set(repo['tip'].manifest())
-    except util.Abort:
-        manifesttip = set()
-    try:
-        manifestworking = set(repo[None].manifest())
-    except util.Abort:
-        manifestworking = set()
+    # Get the list of missing largefiles so we can remove them
+    lfdirstate = lfutil.openlfdirstate(ui, repo)
+    s = lfdirstate.status(match_.always(repo.root, repo.getcwd()), [], False,
+        False, False)
+    (unsure, modified, added, removed, missing, unknown, ignored, clean) = s
 
-    # Manifests are only iterable so turn them into sets then union
-    for file in manifesttip.union(manifestworking):
-        if file.startswith(lfutil.shortname):
-            raise util.Abort(
-                _('addremove cannot be run on a repo with largefiles'))
-
-    return orig(ui, repo, *pats, **opts)
+    # Call into the normal remove code, but the removing of the standin, we want
+    # to have handled by original addremove.  Monkey patching here makes sure
+    # we don't remove the standin in the largefiles code, preventing a very
+    # confused state later.
+    repo._isaddremove = True
+    remove_largefiles(ui, repo, *missing, **opts)
+    repo._isaddremove = False
+    # Call into the normal add code, and any files that *should* be added as
+    # largefiles will be
+    add_largefiles(ui, repo, *pats, **opts)
+    # Now that we've handled largefiles, hand off to the original addremove
+    # function to take care of the rest.  Make sure it doesn't do anything with
+    # largefiles by installing a matcher that will ignore them.
+    installnormalfilesmatchfn(repo[None].manifest())
+    result = orig(ui, repo, *pats, **opts)
+    restorematchfn()
+    return result
 
 # Calling purge with --all will cause the largefiles to be deleted.
 # Override repo.status to prevent this from happening.
@@ -897,15 +910,19 @@
     result = orig(ui, repo, **opts)
     merge.update(repo, node=None, branchmerge=False, force=True,
         partial=lfutil.isstandin)
-    lfdirstate = lfutil.openlfdirstate(ui, repo)
-    lfiles = lfutil.listlfiles(repo)
-    oldlfiles = lfutil.listlfiles(repo, repo[None].parents()[0].rev())
-    for file in lfiles:
-        if file in oldlfiles:
-            lfdirstate.normallookup(file)
-        else:
-            lfdirstate.add(file)
-    lfdirstate.write()
+    wlock = repo.wlock()
+    try:
+        lfdirstate = lfutil.openlfdirstate(ui, repo)
+        lfiles = lfutil.listlfiles(repo)
+        oldlfiles = lfutil.listlfiles(repo, repo[None].parents()[0].rev())
+        for file in lfiles:
+            if file in oldlfiles:
+                lfdirstate.normallookup(file)
+            else:
+                lfdirstate.add(file)
+        lfdirstate.write()
+    finally:
+        wlock.release()
     return result
 
 def override_transplant(orig, ui, repo, *revs, **opts):
--- a/hgext/largefiles/proto.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/largefiles/proto.py	Mon Jan 09 20:16:57 2012 -0600
@@ -27,12 +27,12 @@
             proto.getfile(tmpfp)
             tmpfp.seek(0)
             if sha != lfutil.hexsha1(tmpfp):
-                return wireproto.pushres(1)
+                raise IOError(0, _('largefile contents do not match hash'))
             tmpfp.close()
             lfutil.copytostoreabsolute(repo, tmpname, sha)
         except IOError, e:
-            repo.ui.warn(_('largefiles: failed to put %s (%s) into store: %s') %
-                         (sha, tmpname, e.strerror))
+            repo.ui.warn(_('largefiles: failed to put %s into store: %s') %
+                         (sha, e.strerror))
             return wireproto.pushres(1)
     finally:
         tmpfp.close()
@@ -81,10 +81,16 @@
             # input file-like into a bundle before sending it, so we can't use
             # it ...
             if issubclass(self.__class__, httprepo.httprepository):
+                res = None
                 try:
-                    return int(self._call('putlfile', data=fd, sha=sha,
-                        headers={'content-type':'application/mercurial-0.1'}))
+                    res = self._call('putlfile', data=fd, sha=sha,
+                        headers={'content-type':'application/mercurial-0.1'})
+                    d, output = res.split('\n', 1)
+                    for l in output.splitlines(True):
+                        self.ui.warn(_('remote: '), l, '\n')
+                    return int(d)
                 except (ValueError, urllib2.HTTPError):
+                    self.ui.warn(_('unexpected putlfile response: %s') % res)
                     return 1
             # ... but we can't use sshrepository._call because the data=
             # argument won't get sent, and _callpush does exactly what we want
--- a/hgext/largefiles/reposetup.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/largefiles/reposetup.py	Mon Jan 09 20:16:57 2012 -0600
@@ -10,9 +10,9 @@
 import copy
 import types
 import os
-import re
 
-from mercurial import context, error, manifest, match as match_, node, util
+from mercurial import context, error, manifest, match as match_, util
+from mercurial import node as node_
 from mercurial.i18n import _
 
 import lfcommands
@@ -27,8 +27,6 @@
 
     for name in ('status', 'commitctx', 'commit', 'push'):
         method = getattr(repo, name)
-        #if not (isinstance(method, types.MethodType) and
-        #        method.im_func is repo.__class__.commitctx.im_func):
         if (isinstance(method, types.FunctionType) and
             method.func_name == 'wrap'):
             ui.warn(_('largefiles: repo method %r appears to have already been'
@@ -54,12 +52,11 @@
                                 self).__contains__(filename):
                             return True
                         return super(lfiles_manifestdict,
-                            self).__contains__(lfutil.shortname+'/' + filename)
+                            self).__contains__(lfutil.standin(filename))
                 class lfiles_ctx(ctx.__class__):
                     def files(self):
                         filenames = super(lfiles_ctx, self).files()
-                        return [re.sub('^\\'+lfutil.shortname+'/', '',
-                                       filename) for filename in filenames]
+                        return [lfutil.splitstandin(f) or f for f in filenames]
                     def manifest(self):
                         man1 = super(lfiles_ctx, self).manifest()
                         man1.__class__ = lfiles_manifestdict
@@ -72,8 +69,7 @@
                             # Adding a null character will cause Mercurial to
                             # identify this as a binary file.
                             result = super(lfiles_ctx, self).filectx(
-                                lfutil.shortname + '/' + path, fileid,
-                                filelog)
+                                lfutil.standin(path), fileid, filelog)
                             olddata = result.data
                             result.data = lambda: olddata() + '\0'
                         return result
@@ -88,12 +84,8 @@
                 clean=False, unknown=False, listsubrepos=False):
             listignored, listclean, listunknown = ignored, clean, unknown
             if not self.lfstatus:
-                try:
-                    return super(lfiles_repo, self).status(node1, node2, match,
-                        listignored, listclean, listunknown, listsubrepos)
-                except TypeError:
-                    return super(lfiles_repo, self).status(node1, node2, match,
-                        listignored, listclean, listunknown)
+                return super(lfiles_repo, self).status(node1, node2, match,
+                    listignored, listclean, listunknown, listsubrepos)
             else:
                 # some calls in this function rely on the old version of status
                 self.lfstatus = False
@@ -120,6 +112,18 @@
                 if match is None:
                     match = match_.always(self.root, self.getcwd())
 
+                # First check if there were files specified on the
+                # command line.  If there were, and none of them were
+                # largefiles, we should just bail here and let super
+                # handle it -- thus gaining a big performance boost.
+                lfdirstate = lfutil.openlfdirstate(ui, self)
+                if match.files() and not match.anypats():
+                    matchedfiles = [f for f in match.files() if f in lfdirstate]
+                    if not matchedfiles:
+                        return super(lfiles_repo, self).status(node1, node2,
+                                match, listignored, listclean,
+                                listunknown, listsubrepos)
+
                 # Create a copy of match that matches standins instead
                 # of largefiles.
                 def tostandin(file):
@@ -127,33 +131,46 @@
                         return lfutil.standin(file)
                     return file
 
+                # Create a function that we can use to override what is
+                # normally the ignore matcher.  We've already checked
+                # for ignored files on the first dirstate walk, and
+                # unecessarily re-checking here causes a huge performance
+                # hit because lfdirstate only knows about largefiles
+                def _ignoreoverride(self):
+                    return False
+
                 m = copy.copy(match)
                 m._files = [tostandin(f) for f in m._files]
 
-                # get ignored, clean, and unknown but remove them
-                # later if they were not asked for
-                try:
-                    result = super(lfiles_repo, self).status(node1, node2, m,
-                        True, True, True, listsubrepos)
-                except TypeError:
-                    result = super(lfiles_repo, self).status(node1, node2, m,
-                        True, True, True)
+                # Get ignored files here even if we weren't asked for them; we
+                # must use the result here for filtering later
+                result = super(lfiles_repo, self).status(node1, node2, m,
+                    True, clean, unknown, listsubrepos)
                 if working:
-                    # hold the wlock while we read largefiles and
-                    # update the lfdirstate
-                    wlock = repo.wlock()
                     try:
                         # Any non-largefiles that were explicitly listed must be
                         # taken out or lfdirstate.status will report an error.
                         # The status of these files was already computed using
                         # super's status.
-                        lfdirstate = lfutil.openlfdirstate(ui, self)
+                        # Override lfdirstate's ignore matcher to not do
+                        # anything
+                        orig_ignore = lfdirstate._ignore
+                        lfdirstate._ignore = _ignoreoverride
+
                         match._files = [f for f in match._files if f in
                             lfdirstate]
-                        s = lfdirstate.status(match, [], listignored,
-                                listclean, listunknown)
+                        # Don't waste time getting the ignored and unknown
+                        # files again; we already have them
+                        s = lfdirstate.status(match, [], False,
+                                listclean, False)
                         (unsure, modified, added, removed, missing, unknown,
                                 ignored, clean) = s
+                        # Replace the list of ignored and unknown files with
+                        # the previously caclulated lists, and strip out the
+                        # largefiles
+                        lfiles = set(lfdirstate._map)
+                        ignored = set(result[5]).difference(lfiles)
+                        unknown = set(result[4]).difference(lfiles)
                         if parentworking:
                             for lfile in unsure:
                                 standin = lfutil.standin(lfile)
@@ -166,7 +183,6 @@
                                 else:
                                     clean.append(lfile)
                                     lfdirstate.normal(lfile)
-                            lfdirstate.write()
                         else:
                             tocheck = unsure + modified + added + clean
                             modified, added, clean = [], [], []
@@ -182,7 +198,8 @@
                                 else:
                                     added.append(lfile)
                     finally:
-                        wlock.release()
+                        # Replace the original ignore function
+                        lfdirstate._ignore = orig_ignore
 
                     for standin in ctx1.manifest():
                         if not lfutil.isstandin(standin):
@@ -205,12 +222,13 @@
                     result[2] = [f for f in result[2] if f not in lfdirstate]
 
                     # Unknown files
+                    unknown = set(unknown).difference(ignored)
                     result[4] = [f for f in unknown
                                  if (repo.dirstate[f] == '?' and
                                      not lfutil.isstandin(f))]
-                    # Ignored files must be ignored by both the dirstate and
-                    # lfdirstate
-                    result[5] = set(ignored).intersection(set(result[5]))
+                    # Ignored files were calculated earlier by the dirstate,
+                    # and we already stripped out the largefiles from the list
+                    result[5] = ignored
                     # combine normal files and largefiles
                     normals = [[fn for fn in filelist
                                 if not lfutil.isstandin(fn)]
@@ -238,12 +256,7 @@
         # cache.
         def commitctx(self, *args, **kwargs):
             node = super(lfiles_repo, self).commitctx(*args, **kwargs)
-            ctx = self[node]
-            for filename in ctx.files():
-                if lfutil.isstandin(filename) and filename in ctx.manifest():
-                    realfile = lfutil.splitstandin(filename)
-                    lfutil.copytostore(self, ctx.node(), realfile)
-
+            lfutil.copyalltostore(self, node)
             return node
 
         # Before commit, largefile standins have not had their
@@ -255,14 +268,18 @@
 
             wlock = repo.wlock()
             try:
+                # Case 0: Rebase
+                # We have to take the time to pull down the new largefiles now.
+                # Otherwise if we are rebasing, any largefiles that were
+                # modified in the destination changesets get overwritten, either
+                # by the rebase or in the first commit after the rebase.
+                # updatelfiles will update the dirstate to mark any pulled
+                # largefiles as modified
                 if getattr(repo, "_isrebasing", False):
-                    # We have to take the time to pull down the new
-                    # largefiles now. Otherwise if we are rebasing,
-                    # any largefiles that were modified in the
-                    # destination changesets get overwritten, either
-                    # by the rebase or in the first commit after the
-                    # rebase.
                     lfcommands.updatelfiles(repo.ui, repo)
+                    result = orig(text=text, user=user, date=date, match=match,
+                                    force=force, editor=editor, extra=extra)
+                    return result
                 # Case 1: user calls commit with no specific files or
                 # include/exclude patterns: refresh and commit all files that
                 # are "dirty".
@@ -297,10 +314,13 @@
                             if not os.path.exists(
                                     repo.wjoin(lfutil.standin(lfile))):
                                 lfdirstate.drop(lfile)
+
+                    result = orig(text=text, user=user, date=date, match=match,
+                                    force=force, editor=editor, extra=extra)
+                    # This needs to be after commit; otherwise precommit hooks
+                    # get the wrong status
                     lfdirstate.write()
-
-                    return orig(text=text, user=user, date=date, match=match,
-                                    force=force, editor=editor, extra=extra)
+                    return result
 
                 for f in match.files():
                     if lfutil.isstandin(f):
@@ -332,7 +352,6 @@
                         lfdirstate.normal(lfile)
                     else:
                         lfdirstate.drop(lfile)
-                lfdirstate.write()
 
                 # Cook up a new matcher that only matches regular files or
                 # standins corresponding to the big files requested by the
@@ -373,8 +392,12 @@
                         return f in standins
 
                 match.matchfn = matchfn
-                return orig(text=text, user=user, date=date, match=match,
+                result = orig(text=text, user=user, date=date, match=match,
                                 force=force, editor=editor, extra=extra)
+                # This needs to be after commit; otherwise precommit hooks
+                # get the wrong status
+                lfdirstate.write()
+                return result
             finally:
                 wlock.release()
 
@@ -385,7 +408,7 @@
                 o = repo.changelog.nodesbetween(o, revs)[0]
                 for n in o:
                     parents = [p for p in repo.changelog.parents(n)
-                               if p != node.nullid]
+                               if p != node_.nullid]
                     ctx = repo[n]
                     files = set(ctx.files())
                     if len(parents) == 2:
--- a/hgext/largefiles/uisetup.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/largefiles/uisetup.py	Mon Jan 09 20:16:57 2012 -0600
@@ -23,8 +23,9 @@
     entry = extensions.wrapcommand(commands.table, 'add',
                                    overrides.override_add)
     addopt = [('', 'large', None, _('add as largefile')),
-            ('', 'lfsize', '', _('add all files above this size (in megabytes) '
-                                 'as largefiles (default: 10)'))]
+              ('', 'lfsize', '', _('add all files above this size '
+                                   '(in megabytes) as largefiles '
+                                   '(default: 10)'))]
     entry[1].extend(addopt)
 
     entry = extensions.wrapcommand(commands.table, 'addremove',
--- a/hgext/mq.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/mq.py	Mon Jan 09 20:16:57 2012 -0600
@@ -1765,6 +1765,9 @@
 
             diffopts = self.diffopts({'git': git})
             for r in rev:
+                if not repo[r].mutable():
+                    raise util.Abort(_('revision %d is not mutable') % r,
+                                     hint=_('see "hg help phases" for details'))
                 p1, p2 = repo.changelog.parentrevs(r)
                 n = repo.changelog.node(r)
                 if p2 != nullrev:
@@ -2916,6 +2919,9 @@
         return 0
 
     revs = scmutil.revrange(repo, revrange)
+    if repo['.'].rev() in revs and repo[None].files():
+        ui.warn(_('warning: uncommitted changes in the working directory\n'))
+
     q.finish(repo, revs)
     q.savedirty()
     return 0
--- a/hgext/notify.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/notify.py	Mon Jan 09 20:16:57 2012 -0600
@@ -105,6 +105,14 @@
 notify.merge
   If True, send notifications for merge changesets. Default: True.
 
+notify.mbox
+  If set, append mails to this mbox file instead of sending. Default: None.
+
+notify.fromauthor
+  If set, use the first committer of the changegroup for the "From" field of
+  the notification mail. If not set, take the user from the pushing repo.
+  Default: False.
+
 If set, the following entries will also be used to customize the notifications:
 
 email.from
@@ -156,6 +164,7 @@
         self.stripcount = int(self.ui.config('notify', 'strip', 0))
         self.root = self.strip(self.repo.root)
         self.domain = self.ui.config('notify', 'domain')
+        self.mbox = self.ui.config('notify', 'mbox')
         self.test = self.ui.configbool('notify', 'test', True)
         self.charsets = mail._charsets(self.ui)
         self.subs = self.subscribers()
@@ -288,7 +297,7 @@
             self.ui.status(_('notify: sending %d subscribers %d changes\n') %
                            (len(self.subs), count))
             mail.sendmail(self.ui, util.email(msg['From']),
-                          self.subs, msgtext)
+                          self.subs, msgtext, mbox=self.mbox)
 
     def diff(self, ctx, ref=None):
 
@@ -334,11 +343,14 @@
     ui.pushbuffer()
     data = ''
     count = 0
+    author = ''
     if hooktype == 'changegroup' or hooktype == 'outgoing':
         start, end = ctx.rev(), len(repo)
         for rev in xrange(start, end):
             if n.node(repo[rev]):
                 count += 1
+                if not author:
+                    author = repo[rev].user()
             else:
                 data += ui.popbuffer()
                 ui.note(_('notify: suppressing notification for merge %d:%s\n') %
@@ -356,5 +368,9 @@
         n.diff(ctx)
 
     data += ui.popbuffer()
+    fromauthor = ui.config('notify', 'fromauthor')
+    if author and fromauthor:
+        data = '\n'.join(['From: %s' % author, data])
+
     if count:
         n.send(ctx, count, data)
--- a/hgext/patchbomb.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/patchbomb.py	Mon Jan 09 20:16:57 2012 -0600
@@ -45,7 +45,7 @@
 hgrc(5) for details.
 '''
 
-import os, errno, socket, tempfile, cStringIO, time
+import os, errno, socket, tempfile, cStringIO
 import email.MIMEMultipart, email.MIMEBase
 import email.Utils, email.Encoders, email.Generator
 from mercurial import cmdutil, commands, hg, mail, patch, util, discovery
@@ -532,30 +532,18 @@
                     raise
             if fp is not ui:
                 fp.close()
-        elif mbox:
-            ui.status(_('Writing '), subj, ' ...\n')
-            ui.progress(_('writing'), i, item=subj, total=len(msgs))
-            fp = open(mbox, 'In-Reply-To' in m and 'ab+' or 'wb+')
-            generator = email.Generator.Generator(fp, mangle_from_=True)
-            # Should be time.asctime(), but Windows prints 2-characters day
-            # of month instead of one. Make them print the same thing.
-            date = time.strftime('%a %b %d %H:%M:%S %Y',
-                                 time.localtime(start_time[0]))
-            fp.write('From %s %s\n' % (sender_addr, date))
-            generator.flatten(m, 0)
-            fp.write('\n\n')
-            fp.close()
         else:
             if not sendmail:
-                sendmail = mail.connect(ui)
+                sendmail = mail.connect(ui, mbox=mbox)
             ui.status(_('Sending '), subj, ' ...\n')
             ui.progress(_('sending'), i, item=subj, total=len(msgs))
-            # Exim does not remove the Bcc field
-            del m['Bcc']
+            if not mbox:
+                # Exim does not remove the Bcc field
+                del m['Bcc']
             fp = cStringIO.StringIO()
             generator = email.Generator.Generator(fp, mangle_from_=False)
             generator.flatten(m, 0)
-            sendmail(sender, to + bcc + cc, fp.getvalue())
+            sendmail(sender_addr, to + bcc + cc, fp.getvalue())
 
     ui.progress(_('writing'), None)
     ui.progress(_('sending'), None)
--- a/hgext/progress.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/progress.py	Mon Jan 09 20:16:57 2012 -0600
@@ -2,19 +2,8 @@
 #
 # Copyright (C) 2010 Augie Fackler <durin42@gmail.com>
 #
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 2 of the License, or (at your
-# option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
-# Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2 or any later version.
 
 """show progress bars for some actions
 
--- a/hgext/purge.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/purge.py	Mon Jan 09 20:16:57 2012 -0600
@@ -20,8 +20,7 @@
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
 
 '''command to delete untracked files from the working directory'''
 
--- a/hgext/rebase.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/rebase.py	Mon Jan 09 20:16:57 2012 -0600
@@ -47,7 +47,7 @@
      _('read collapse commit message from file'), _('FILE')),
     ('', 'keep', False, _('keep original changesets')),
     ('', 'keepbranches', False, _('keep original branch names')),
-    ('', 'detach', False, _('force detaching of source from its original '
+    ('D', 'detach', False, _('force detaching of source from its original '
                             'branch')),
     ('t', 'tool', '', _('specify merge tool')),
     ('c', 'continue', False, _('continue an interrupted rebase')),
@@ -168,7 +168,7 @@
                 raise util.Abort(_('cannot specify both a '
                                    'revision and a source'))
             if detachf:
-                if not srcf:
+                if not (srcf or revf):
                     raise util.Abort(
                         _('detach requires a revision to be specified'))
                 if basef:
@@ -185,26 +185,34 @@
                 dest = repo[destf]
 
             if revf:
-                revgen = repo.set('%lr', revf)
+                rebaseset = repo.revs('%lr', revf)
             elif srcf:
                 src = scmutil.revrange(repo, [srcf])
-                revgen = repo.set('(%ld)::', src)
+                rebaseset = repo.revs('(%ld)::', src)
             else:
                 base = scmutil.revrange(repo, [basef or '.'])
-                revgen = repo.set('(children(ancestor(%ld, %d)) and ::(%ld))::',
-                                  base, dest, base)
+                rebaseset = repo.revs(
+                    '(children(ancestor(%ld, %d)) and ::(%ld))::',
+                    base, dest, base)
 
-            rebaseset = [c.rev() for c in revgen]
+            if rebaseset:
+                root = min(rebaseset)
+            else:
+                root = None
 
             if not rebaseset:
                 repo.ui.debug('base is ancestor of destination')
                 result = None
-            elif not keepf and list(repo.set('first(children(%ld) - %ld)',
-                                            rebaseset, rebaseset)):
+            elif not keepf and list(repo.revs('first(children(%ld) - %ld)',
+                                              rebaseset, rebaseset)):
                 raise util.Abort(
                     _("can't remove original changesets with"
                       " unrebased descendants"),
                     hint=_('use --keep to keep original changesets'))
+            elif not keepf and not repo[root].mutable():
+                raise util.Abort(_("Can't rebase immutable changeset %s")
+                                 % repo[root],
+                                 hint=_('see hg help phases for details'))
             else:
                 result = buildstate(repo, dest, rebaseset, detachf)
 
@@ -263,7 +271,7 @@
                                         'resolve, then hg rebase --continue)'))
                     finally:
                         ui.setconfig('ui', 'forcemerge', '')
-                cmdutil.duplicatecopies(repo, rev, target, p2)
+                cmdutil.duplicatecopies(repo, rev, target)
                 if not collapsef:
                     newrev = concludenode(repo, rev, p1, p2, extrafn=extrafn,
                                           editor=editor)
@@ -590,8 +598,7 @@
         # rebase on ancestor, force detach
         detach = True
     if detach:
-        detachset = [c.rev() for c in repo.set('::%d - ::%d - %d',
-                                                root, commonbase, root)]
+        detachset = repo.revs('::%d - ::%d - %d', root, commonbase, root)
 
     repo.ui.debug('rebase onto %d starting from %d\n' % (dest, root))
     state = dict.fromkeys(rebaseset, nullrev)
--- a/hgext/win32mbcs.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/win32mbcs.py	Mon Jan 09 20:16:57 2012 -0600
@@ -127,11 +127,14 @@
 # NOTE: os.path.dirname() and os.path.basename() are safe because
 #       they use result of os.path.split()
 funcs = '''os.path.join os.path.split os.path.splitext
- os.path.splitunc os.path.normpath os.makedirs
+ os.path.normpath os.makedirs
  mercurial.util.endswithsep mercurial.util.splitpath mercurial.util.checkcase
  mercurial.util.fspath mercurial.util.pconvert mercurial.util.normpath
  mercurial.util.checkwinfilename mercurial.util.checkosfilename'''
 
+# List of Windows specific functions to be wrapped.
+winfuncs = '''os.path.splitunc'''
+
 # codec and alias names of sjis and big5 to be faked.
 problematic_encodings = '''big5 big5-tw csbig5 big5hkscs big5-hkscs
  hkscs cp932 932 ms932 mskanji ms-kanji shift_jis csshiftjis shiftjis
@@ -140,7 +143,8 @@
 
 def extsetup(ui):
     # TODO: decide use of config section for this extension
-    if not os.path.supports_unicode_filenames:
+    if ((not os.path.supports_unicode_filenames) and
+        (sys.platform != 'cygwin')):
         ui.warn(_("[win32mbcs] cannot activate on this platform.\n"))
         return
     # determine encoding for filename
@@ -150,6 +154,9 @@
     if _encoding.lower() in problematic_encodings.split():
         for f in funcs.split():
             wrapname(f, wrapper)
+        if os.name == 'nt':
+            for f in winfuncs.split():
+                wrapname(f, wrapper)
         wrapname("mercurial.osutil.listdir", wrapperforlistdir)
         # Check sys.args manually instead of using ui.debug() because
         # command line options is not yet applied when
--- a/hgext/zeroconf/Zeroconf.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/hgext/zeroconf/Zeroconf.py	Mon Jan 09 20:16:57 2012 -0600
@@ -17,8 +17,8 @@
     Lesser General Public License for more details.
 
     You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+    License along with this library; if not, see
+    <http://www.gnu.org/licenses/>.
 
 """
 
--- a/i18n/de.po	Sun Jan 08 23:09:35 2012 +0800
+++ b/i18n/de.po	Mon Jan 09 20:16:57 2012 -0600
@@ -2,46 +2,105 @@
 # Deutsche Übersetzungen für Mercurial
 # Copyright (C) 2009 Matt Mackall and others
 #
+# Übersetzer:
+#   Tobias Bell
+#   Fabian Kreutz
+#   Christoph Mewes
+#   Martin Roppelt
+#   Georg Brandl
+#   Martin Schröder
+#
 # Übersetzungshilfen
 # ==================
 #
 # Der Benutzer sollte mit formeller Anrede angesprochen werden. Je nach
 # Fall kann aber auch eine unpersönliche Anrede ("man") verwendet werden.
 #
-# Deutsche Begriffe sind fein, man sollte es aber nicht übertreiben. Ein
-# Hilfstext à la "Beim Versionieren von Etiketten auf Zweigen" hilft
-# niemandem. Erfahrene Benutzer sind kurz irritiert, weil sie bekannte
-# Begriffe vermissen, während neue Nutzer sich eh noch nichts unter den
-# Begriffen vorstellen können und entweder `hg help` oder Google bemühen
-# müssen.
-# Gleichzeitig fördert die Suche nach "Mercurial Etikett" wenig
-# Brauchbares zu Tage.
-# Hier sollten diese krassen Eindeutschungen nur in der Erklärung zu "tag"
-# verwendet, sonst aber eher vermieden werden.
+# Die Übersetzung der Handbuchseiten hat zwei Ziele:
+#  a) Die ohnehin komplexen Zusammenhänge der Funktion von Mercurial für
+#     Benutzer, die im Englischen wenig versiert sind, verständlicher zu
+#     erklären.
+#  b) Basisbegriffe auf Deutsch zu schaffen, damit nicht jeder in 
+#     der Kommunikation eigene erfinden oder eine D-E-Mischung nutzen muss.
+#
+# Für a) ist es wichtig, dass eine gute, erklärende Übersetzung mit deutscher
+# Grammatik verwendet wird und keine direkte Wort-für-Wort Übersetzung, die
+# auch ein Programm hinkriegt. Eine Übersetzung nur zum Zwecke der Füllung
+# von msgstr Werten ist letzlich nicht hilfreich.
+#
+# b) ist besonders schwierig, da es viele Begriffe im Deutschen noch nicht gibt
+# und Neudefinitionen am Anfang sehr ungewöhnlich und gedrückt klingen.  Wer
+# jedoch die englischen Begriffe bevorzugt, bzw. gegen eine Definition von
+# deutschen Äquivalenten ist, muss die Übersetzung ja nicht einschalten.
+# Englische Begriffe müssen zuweilen einbezogen werden, sollten dann aber als
+# eingebundenes Fremdwort und nicht anstelle eines deutschen Substantivs oder
+# Verbs verwendet werden:
+#
+# Gut:
+#   Synchronisieren Sie ihr Projektarchiv (mit pull).
+#   Im Verlaufe einer Zusammenführung mit :hg:`merge` wird...
+#   Falls es während der 'push'-Operation zu Verbindungsfehlern kommt...
+#
+# Schlecht:
+#   Mergen Sie zunächst die Branche.
+#   Falls der Tag im Filelog zu finden ist...
 #
-# branch        Branch/Zweig/Verzweigung
-# bundle        Bündel
-# change        Änderung
-# changeset     Änderungssatz
-# check out     auschecken
-# commit        Commit
-# commit (v)    übernehmen
-# deprecated    veraltet
-# hook          Hook
-# merge         zusammenführen
-# notation      Schreibweise
-# repository    Projektarchiv
-# manage/track  versionieren
+# Übersetzungen:
+#  backup        Sicherheitskopie (gewinnt in google-fight gegen Sicherungsk.)
+#  branch        Zweig/Verzweigung/Entwicklungszweig
+#  bookmark      Lesezeichen
+#  bundle        Bündel
+#  change        Änderung
+#  changeset     Änderungssatz
+#  commit        Commit/Übernahme
+#  commit (v)    übernehmen
+#  committer     Autor
+#  deprecated    veraltet
+#  force (v)     erzwingen
+#  merge         zusammenführen
+#  notation      Schreibweise
+#  queue         Reihe
+#  repository    (Projekt)archiv
+#  manage/track  versionieren
+#  pull          abrufen
+#  push          übertragen
+#  rebase        Pfropfung/Verschiebung
+#  section       Abschnitt (nicht Sektion)
+#  tag           Etikett    (svn verwendet "Marke")
+#
+# Nicht übersetzt bleiben
+#  hook     mangels guter Übersetzung (Einhängeaktion?)
+#  token    Fachbegriff auch im Deutschen
+#  parser   Fachbegriff auch im Deutschen
+#  patch    Bezieht sich auf ein sehr altes Programm mit demselben Namen und
+#           Dateien in dessen Syntax/Format
+#           Die ursprüngliche Bedeutung des englischen Wortes (Flicken) trifft
+#           heute eh nicht mehr zu.
+#  diff     Siehe patch, ausserdem Abkürzung eines auch deutschen Worts
+#  glob
+#  dirstate Nur für Entwickler interessant. Im sonstigen Handbuch umschreiben!
+#  .. note:: Dies ist spezielle reStructured-Syntax und darf nicht geändert
+#           werden
+# 
+# Weiteres:
+#  graft/transplant: Da graft eine Reimplementierung von transplant als
+#         Kernfunktion ist, kann in beiden Fällen "Transplantation" als
+#         Übersetzung verwendet werden.
+#  keyword ist manchmal ein Schlüsselwort, manchmal ein Platzhalter.
+#         Übersetzungen müssen zum Kontext passen.
+#  commit: wird manchmal anstelle von revision verwendet. In solchen Fällen
+#         kann die Übersetzung "Revision" lauten.
+#  largefile: Binärriese (neues Wort, vielleicht fällt jemandem ein besseres
+#             ein. Dies ist zur Zeit konsequent verwendet)
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2011-03-15 10:18+0100\n"
+"POT-Creation-Date: 2011-12-04 13:42+0200\n"
 "PO-Revision-Date: 2010-12-24 15:09+0100\n"
-"Last-Translator: Martin Roppelt <m.p.roppelt@web.de>\n"
-"Language-Team: German (http://transifex.net/projects/p/mercurial/team/de/) "
-"<>\n"
+"Last-Translator: Fabian Kreutz <fabian.kreutz@qvantel.com>\n"
+"Language-Team: \n"
 "Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -127,22 +186,22 @@
 
 msgid "The allow and deny sections take key-value pairs."
 msgstr ""
-"Die allow- und deny-Abschnitte werden in Schlüssel-Wert-Paaren angegeben."
+"Die Erlaubnis- und Verbotslisten werden in Schlüssel-Wert-Paaren angegeben."
 
 msgid ""
 "Branch-based Access Control\n"
 "..........................."
 msgstr ""
-"Branch-basierte Zugriffskontrolle\n"
-"..........................."
+"Zweig-basierte Zugriffskontrolle\n"
+"................................"
 
 msgid ""
 "Use the ``acl.deny.branches`` and ``acl.allow.branches`` sections to\n"
 "have branch-based access control. Keys in these sections can be\n"
 "either:"
 msgstr ""
-"Verwenden Sie die Abschnitte ``acl.deny.branches`` und\n"
-"``acl.allow.branches``, um Zugriffe auf Basis von Zweigen zu realisieren.\n"
+"Verwenden Sie Abschnitte ``acl.deny.branches`` und ``acl.allow.branches``,\n"
+"um Zugriffe zweigbasiert zu realisieren.\n"
 "Die Schlüssel in diesem Abschnitt können sein:"
 
 msgid ""
@@ -167,7 +226,7 @@
 "........................."
 msgstr ""
 "Pfad-basierte Zugriffskontrolle\n"
-"........................."
+"..............................."
 
 msgid ""
 "Use the ``acl.deny`` and ``acl.allow`` sections to have path-based\n"
@@ -175,7 +234,7 @@
 "a glob syntax by default). The corresponding values follow the same\n"
 "syntax as the other sections above."
 msgstr ""
-"Benutzen Sie die ``acl.deny`` und ``acl.allow``-Bereiche, um eine\n"
+"Benutzen Sie die ``acl.deny`` und ``acl.allow``-Abschnitte, um eine\n"
 "pfadbasierte Zugriffskontrolle umzusetzen. Schlüssel in diesen Bereichen\n"
 "akzeptieren ein Verzeichnismuster (standardmäßig mit glob-Syntax). Die\n"
 "entsprechenden Werte folgen derselben Syntax wie in den anderen o.g.\n"
@@ -186,7 +245,7 @@
 "......"
 msgstr ""
 "Gruppen\n"
-"......"
+"......."
 
 msgid ""
 "Group names must be prefixed with an ``@`` symbol. Specifying a group\n"
@@ -204,12 +263,13 @@
 "Sie können Gruppen-Mitglieder im ``acl.groups``-Bereich definieren. Wenn\n"
 "eine Gruppe nicht existiert und Mercurial auf einem Unix-artigen System\n"
 "läuft, wird die Liste der Benutzer vom Betriebssystem abgerufen.\n"
-"Andernfalls wird eine Ausnahme ausgelöst."
+"Andernfalls wird ein Ausnahmefehler ausgelöst."
 
 msgid ""
 "Example Configuration\n"
 "....................."
-msgstr "Beispielkonfiguration:\n"
+msgstr ""
+"Beispielkonfiguration\n"
 "....................."
 
 msgid "::"
@@ -222,7 +282,8 @@
 "  # Use this if you want to check access restrictions at commit time\n"
 "  pretxncommit.acl = python:hgext.acl.hook"
 msgstr ""
-"  # Verwenden Sie dies, wenn Sie den Zugriff zur Commitzeit prüfen wollen:\n"
+"  # Verwenden Sie dies, wenn Sie den Zugriff zur Zeit der lokalen Übernahme\n"
+"  # (commit) prüfen wollen:\n"
 "  pretxncommit.acl = python:hgext.acl.hook"
 
 msgid ""
@@ -230,9 +291,9 @@
 "  # bundle and serve.\n"
 "  pretxnchangegroup.acl = python:hgext.acl.hook"
 msgstr ""
-"  # Verwenden Sie dies, wenn Sie den Zugriff beim Übertragen (push),\n"
-"  # Abrufen (pull), Bündeln (bundle) oder Ausliefern (serve) prüfen\n"
-"  # wollen.\n"
+"  # Verwenden Sie dies, wenn Sie den Zugriff beim Synchronisieren mit\n"
+"  # anderen Archiven (Übertragen, Abrufen, Bündeln oder Ausliefern (serve))\n"
+"  # prüfen wollen.\n"
 "  pretxnchangegroup.acl = python:hgext.acl.hook"
 
 msgid ""
@@ -261,8 +322,8 @@
 "  # Everyone is denied to the frozen branch:\n"
 "  frozen-branch = *"
 msgstr ""
-"  # Jedem wird der Zugriff auf den frozen-Zweig verweigert:\n"
-"  frozen-zweig = *"
+"  # Jedem wird der Zugriff auf den Zweig \"gesperrt\" verweigert:\n"
+"  gesperrt = *"
 
 msgid ""
 "  # A bad user is denied on all branches:\n"
@@ -292,8 +353,8 @@
 "  # The super user is allowed on any branch:\n"
 "  * = super-user"
 msgstr ""
-"  # Der Super-User darf auf jeden Zweig zugreifen:\n"
-"  * = super-user"
+"  # Der Administrator darf auf jeden Zweig zugreifen:\n"
+"  * = benutzer-admin"
 
 msgid ""
 "  # Everyone is allowed on branch-for-tests:\n"
@@ -332,7 +393,7 @@
 "  # Group \"hg-denied\" will not have write access to any file:\n"
 "  ** = @hg-denied"
 msgstr ""
-"  # Die Gruppe \"hd-verboten\" wird auf keine Datei Schreibzugriff haben:\n"
+"  # Die Gruppe \"hg-verboten\" wird auf keine Datei Schreibzugriff haben:\n"
 "  ** = @hg-verboten"
 
 msgid ""
@@ -395,233 +456,359 @@
 msgstr ""
 "Konfigurationsfehler - Hook-Typ \"%s\" kann weder eingehende "
 "Änderungssätze \n"
-"noch Commits stoppen"
+"noch lokales Übernehmen stoppen"
 
 #, python-format
 msgid "acl: user \"%s\" denied on branch \"%s\" (changeset \"%s\")"
 msgstr ""
-"acl: Benutzer \"%s\" hat keinen Zugriff auf Zweig \"%s\" (Änderungssatz \"%s"
-"\")"
+"acl: Zugriff für \"%s\" auf Zweig \"%s\" abgelehnt (Änderungssatz \"%s\")"
 
 #, python-format
 msgid "acl: user \"%s\" not allowed on branch \"%s\" (changeset \"%s\")"
 msgstr ""
-"acl: Benutzer \"%s\" hat keinen Zugriff auf Zweig \"%s\" (Änderungssatz \"%s"
-"\")"
-
-#, python-format
-msgid "acl: access denied for changeset %s"
-msgstr "acl: Zugriff verweigert auf den Änderungssatz %s"
+"acl: Zugriff für \"%s\" auf Zweig \"%s\" nicht erlaubt (Änderungssatz \"%s\")"
+
+#, python-format
+msgid "acl: user \"%s\" denied on \"%s\" (changeset \"%s\")"
+msgstr ""
+"acl: Zugriff für \"%s\" auf \"%s\" abgelehnt (Änderungssatz \"%s\")"
+
+#, python-format
+msgid "acl: user \"%s\" not allowed on \"%s\" (changeset \"%s\")"
+msgstr ""
+"acl: Zugriff für \"%s\" auf \"%s\" nicht erlaubt (Änderungssatz \"%s\")"
 
 msgid "hooks for integrating with the Bugzilla bug tracker"
 msgstr "Hooks zur Integration mit dem Bugzilla Bugtracker"
 
 msgid ""
 "This hook extension adds comments on bugs in Bugzilla when changesets\n"
-"that refer to bugs by Bugzilla ID are seen. The hook does not change\n"
-"bug status."
-msgstr ""
-"Diese Hook-Erweiterung fügt Kommentare zu Fehlern in Bugzilla hinzu,\n"
-"wenn ein Änderungssatz gesehen wird, der eine Bugzilla-ID enthält. Der\n"
-"Status des Bugs wird nicht verändert."
-
-msgid ""
-"The hook updates the Bugzilla database directly. Only Bugzilla\n"
-"installations using MySQL are supported."
-msgstr ""
-"Die Bugzilla-Datenbank wird direkt verändert, daher werden nur MySQL-"
-"Installationen unterstützt."
-
-msgid ""
-"The hook relies on a Bugzilla script to send bug change notification\n"
-"emails. That script changes between Bugzilla versions; the\n"
-"'processmail' script used prior to 2.18 is replaced in 2.18 and\n"
-"subsequent versions by 'config/sendbugmail.pl'. Note that these will\n"
-"be run by Mercurial as the user pushing the change; you will need to\n"
-"ensure the Bugzilla install file permissions are set appropriately."
-msgstr ""
-"Der Hook verlässt sich auf ein Bugzilla-Skript, um E-Mails mit Änderungs-\n"
-"benachrichtungen zu verschicken. Dieses Skript hat sich zwischen\n"
-"den Bugzilla-Versionen verändert; das 'processmail'-Skript aus Versionen\n"
-"vor 2.18 wird in 2.18 und nachfolgenden Versionen durch\n"
-"'config/sendbugmail.pl' ersetzt. Beachten Sie, dass diese Skripts von\n"
-"Mercurial als der Benutzer ausgeführt werden, der die Änderungen\n"
-"überträgt; Sie müssen sicherstellen, dass die Dateiberechtigungen für die\n"
-"Installationsdatei von Bugzilla korrekt gesetzt sind."
-
-msgid ""
-"The extension is configured through three different configuration\n"
-"sections. These keys are recognized in the [bugzilla] section:"
-msgstr ""
-"Die Erweiterung wird durch drei Abschnitte in der hgrc konfiguriert. Der\n"
-"Abschnitt [bugzilla] kann die folgenden Einträge enthalten:"
-
-msgid ""
-"host\n"
-"  Hostname of the MySQL server holding the Bugzilla database."
-msgstr ""
-"host\n"
-"  Hostname des Servers auf dem die Bugzilla MySQL-Datenbank läuft."
-
-msgid ""
-"db\n"
-"  Name of the Bugzilla database in MySQL. Default 'bugs'."
-msgstr ""
-"db\n"
-"  Name der Bugzilla-Datenbank in MySQL. Standard: 'bugs'."
-
-msgid ""
-"user\n"
-"  Username to use to access MySQL server. Default 'bugs'."
-msgstr ""
-"user\n"
-"  Benutzername zum Zugriff auf den MySQL-Server. Standard: 'bugs'."
-
-msgid ""
-"password\n"
-"  Password to use to access MySQL server."
-msgstr ""
-"password\n"
-"  Password zum Zugriff auf den MySQL-Server."
-
-msgid ""
-"timeout\n"
-"  Database connection timeout (seconds). Default 5."
-msgstr ""
-"timeout\n"
-"  Datenbank Verbindungs-Zeitgrenze (in Sekunden). Standard: 5."
-
-msgid ""
-"version\n"
-"  Bugzilla version. Specify '3.0' for Bugzilla versions 3.0 and later,\n"
-"  '2.18' for Bugzilla versions from 2.18 and '2.16' for versions prior\n"
-"  to 2.18."
-msgstr ""
-"version\n"
-"  Bugzilla-Version. '3.0' für Versionen nach und inklusive 3.0,\n"
-"  '2.18' für Versionen seit 2.18 und '2.16' für Versionen davor."
-
-msgid ""
-"bzuser\n"
-"  Fallback Bugzilla user name to record comments with, if changeset\n"
-"  committer cannot be found as a Bugzilla user."
-msgstr ""
-"bzuser\n"
-"  Ausweich-Benutzername zum Setzen von Kommentaren, falls der Autor der\n"
-"  Änderungen kein Benutzer in Bugzilla ist."
-
-msgid ""
-"bzdir\n"
-"   Bugzilla install directory. Used by default notify. Default\n"
-"   '/var/www/html/bugzilla'."
-msgstr ""
-"bzdir\n"
-"  Bugzilla Installationsverzeichnis. Notwendig für die Standard\n"
-"  'notify'-Aktion; Standard: '/var/www/html/bugzilla'."
-
-msgid ""
-"notify\n"
-"  The command to run to get Bugzilla to send bug change notification\n"
-"  emails. Substitutes from a map with 3 keys, 'bzdir', 'id' (bug id)\n"
-"  and 'user' (committer bugzilla email). Default depends on version;\n"
-"  from 2.18 it is \"cd %(bzdir)s && perl -T contrib/sendbugmail.pl\n"
-"  %(id)s %(user)s\"."
-msgstr ""
-"notify\n"
-"  Das Kommando um Hinweis-E-Mails zu versenden. Die drei Schlüssel 'bzdir',\n"
-"  'id' (Bug ID) und 'user' (Überträger) werden ersetzt. Der Standard hängt\n"
-"  von der Version ab. Ab 2.18 ist es\n"
-"  \"cd %(bzdir)s && perl -T contrib/sendbugmail.pl %(id)s %(user)s\""
-
-msgid ""
-"regexp\n"
+"that refer to bugs by Bugzilla ID are seen. The comment is formatted using\n"
+"the Mercurial template mechanism."
+msgstr ""
+"Diese Hook-Erweiterung fügt Kommentare zu einem Ticket in Bugzilla hinzu,\n"
+"wenn ein Änderungssatz, der eine Bugzilla-ID enthält, gefunden wird. Der\n"
+"Kommentar wird mithilfe des Mercurial Vorlagen-Mechanismus formatiert."
+
+msgid "The hook does not change bug status."
+msgstr "Diese Erweiterung ändert den Status des Bugzilla-Tickets nicht."
+
+msgid "Three basic modes of access to Bugzilla are provided:"
+msgstr "Drei Zugriffsmethoden auf Bugzilla werden unterstützt:"
+
+msgid ""
+"1. Access via the Bugzilla XMLRPC interface. Requires Bugzilla 3.4 or later."
+msgstr ""
+"1. Zugriff über die XMLRPC-Schnittstelle. Benötigt Bugzilla 3.4 oder später."
+
+msgid ""
+"2. Check data via the Bugzilla XMLRPC interface and submit bug change\n"
+"   via email to Bugzilla email interface. Requires Bugzilla 3.4 or later."
+msgstr ""
+"2. Prüft Daten über die XMLRPC-Schnittstelle und sendet Ticket-Änderungen\n"
+"   per Email an die Bugzilla Email-Schnittstelle. Benötigt Bugzilla 3.4\n"
+"   oder später."
+
+msgid ""
+"3. Writing directly to the Bugzilla database. Only Bugzilla installations\n"
+"   using MySQL are supported. Requires Python MySQLdb."
+msgstr ""
+"3. Direktes Schreiben in die Bugzilla Datenbank. Funktioniert nur, wenn die\n"
+"   Bugzilla-Instanz MySQL verwendet. Benötigt das Python MySQLdb Modul."
+
+msgid ""
+"Writing directly to the database is susceptible to schema changes, and\n"
+"relies on a Bugzilla contrib script to send out bug change\n"
+"notification emails. This script runs as the user running Mercurial,\n"
+"must be run on the host with the Bugzilla install, and requires\n"
+"permission to read Bugzilla configuration details and the necessary\n"
+"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."
+msgstr ""
+"Direktes Schreiben in die Datenbank führt leicht zu Problemen bei Schema-\n"
+"veränderungen. Ausserdem wird ein externes Bugzilla Script benötigt, um\n"
+"Benachrichtigungsemails zu versenden. Dieses Script wird mit den Rechten des\n"
+"Mercurial-Benutzers ausgeführt, benötigt eine lokale Bugzilla-Installation\n"
+"sowie Leserechte an der Bugzilla Konfigurationsdatei und MySQL Benutzername\n"
+"und Passwort, um vollen Zugriff auf die Bugzilla Datenbank zu haben. Aus\n"
+"diesen Gründen wird diese Zugriffsmethode als veraltet angesehen und nicht\n"
+"mehr für zukünftigen Bugzillaversionen angepasst."
+
+msgid ""
+"Access via XMLRPC needs a Bugzilla username and password to be specified\n"
+"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."
+msgstr ""
+"Zugriff über XMLRPC benötigt einen Bugzilla-Benutzernamen und -Passwort in\n"
+"der Konfigurationsdatei. Kommentare werden unter diesem Benutzer eingefügt.\n"
+"Da es notwendig ist, dass alle Mercurial-Benutzer Zugriff auf diese Datei\n"
+"haben, ist es empfohlen dieses Benutzerkonto in Bugzilla mit minimalen\n"
+"Rechten (um Kommentare einzufügen) auszustatten."
+
+msgid ""
+"Access via XMLRPC/email uses XMLRPC to query Bugzilla, but sends\n"
+"email to the Bugzilla email interface to submit comments to bugs.\n"
+"The From: address in the email is set to the email address of the Mercurial\n"
+"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."
+msgstr ""
+"Zugriff über XMLRPC/Email verwendet XMLRPC für Anfragen an Bugzilla, aber\n"
+"sendet Emails an die Email-Schnittstelle um Kommentare einzufügen. Die\n"
+"Adresse im 'Absender:' Feld wird auf die Emailadresse des Mercurial-"
+"Benutzers\n"
+"gesetzt, so dass Bugzilla den Autor richtig setzt. Falls Bugzilla den so\n"
+"empfangenen Benutzer nicht kennt, wird der Benutzer für den XMLRPC-Zugriff\n"
+"als Autor verwendet."
+
+msgid "Configuration items common to all access modes:"
+msgstr "Konfigurationseinträge für alle Zugriffsmethoden:"
+
+msgid ""
+"bugzilla.version\n"
+"  This access type to use. Values recognised are:"
+msgstr ""
+"bugzilla.version\n"
+"  Die zu verwendende Zugriffsmethod. Erlaubte Werte sind:"
+
+msgid ""
+"  :``xmlrpc``:       Bugzilla XMLRPC interface.\n"
+"  :``xmlrpc+email``: Bugzilla XMLRPC and email interfaces.\n"
+"  :``3.0``:          MySQL access, Bugzilla 3.0 and later.\n"
+"  :``2.18``:         MySQL access, Bugzilla 2.18 and up to but not\n"
+"                     including 3.0.\n"
+"  :``2.16``:         MySQL access, Bugzilla 2.16 and up to but not\n"
+"                     including 2.18."
+msgstr ""
+"  :``xmlrpc``:       Bugzilla XMLRPC Schnittstelle.\n"
+"  :``xmlrpc+email``: Bugzilla XMLRPC und Email Schnittstellen.\n"
+"  :``3.0``:          MySQL Zugriff, Bugzilla 3.0 oder höher.\n"
+"  :``2.18``:         MySQL Zugriff, Bugzilla 2.18 bis ausschliesslich 3.0.\n"
+"  :``2.16``:         MySQL Zugriff, Bugzilla 2.16 bis ausschliesslich 2.18."
+
+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', 'Bug\n"
-"  1234 and 5678' and variations thereof. Matching is case insensitive."
-msgstr ""
-"regexp\n"
-"  Der Reguläre Ausdruck, mit dem Bug-IDs in der Versionsmeldung erkannt\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."
+msgstr ""
+"bugzilla.regexp\n"
+"  Der Reguläre Ausdruck, mit dem Ticket-IDs in der Versionsmeldung erkannt\n"
 "  werden. Er muss eine \"()\"-Gruppe enthalten. Der Standardwert erkennt:\n"
 "  'Bug 1234', 'Bug no. 1234', 'Bug number 1234', 'Bugs 1234,5678',\n"
 "  'Bug 1234 and 5678' und Variationen. Großschreibung wird ignoriert."
 
 msgid ""
-"style\n"
+"bugzilla.style\n"
 "  The style file to use when formatting comments."
 msgstr ""
-"style\n"
+"bugzilla.style\n"
 "  Stil-Datei für das Formatieren der Kommentare."
 
 msgid ""
-"template\n"
+"bugzilla.template\n"
 "  Template to use when formatting comments. Overrides style if\n"
 "  specified. In addition to the usual Mercurial keywords, the\n"
-"  extension specifies::"
-msgstr ""
-"template\n"
+"  extension specifies:"
+msgstr ""
+"bugzilla.template\n"
 "  Vorlagentext für die Bugzilla-Kommentare (anstelle der Stil-Datei).\n"
-"  Zusätzlich zu den Mercurial-Schlüsselworten gibt es::"
-
-msgid ""
-"    {bug}       The Bugzilla bug ID.\n"
-"    {root}      The full pathname of the Mercurial repository.\n"
-"    {webroot}   Stripped pathname of the Mercurial repository.\n"
-"    {hgweb}     Base URL for browsing Mercurial repositories."
-msgstr ""
-"    {bug}       Die Bugzilla Bug-ID.\n"
-"    {root}      Der volle Pfad des Mercurial Archivs.\n"
-"    {webroot}   Angepasster Pfad des Mercurial Archivs.\n"
-"    {hgweb}     Basis-URL für alle Mercurial Archive."
-
-msgid ""
-"  Default 'changeset {node|short} in repo {root} refers '\n"
-"          'to bug {bug}.\\ndetails:\\n\\t{desc|tabindent}'"
-msgstr ""
-"  Standard: 'Änderung {node|short} in Archiv {root} erwähnt Bug {bug}.\\n'\n"
-"            'Details:\\n\\t{desc|tabindent}'"
-
-msgid ""
-"strip\n"
-"  The number of slashes to strip from the front of {root} to produce\n"
-"  {webroot}. Default 0."
-msgstr ""
-"strip\n"
-"  Anzahl der Schrägstriche, die vom Beginn von {root} entfernt werden, um\n"
-"  {webroot} zu erhalten. Standard: 0."
-
-msgid ""
-"usermap\n"
-"  Path of file containing Mercurial committer ID to Bugzilla user ID\n"
+"  Zusätzlich zu den üblichen Mercurial-Schlüsselworten gibt es:"
+
+msgid ""
+"  :``{bug}``:     The Bugzilla bug ID.\n"
+"  :``{root}``:    The full pathname of the Mercurial repository.\n"
+"  :``{webroot}``: Stripped pathname of the Mercurial repository.\n"
+"  :``{hgweb}``:   Base URL for browsing Mercurial repositories."
+msgstr ""
+"  :``{bug}``:     Die Bugzilla Ticket-ID.\n"
+"  :``{root}``:    Der volle Pfad des Mercurial Archivs.\n"
+"  :``{webroot}``: Angepasster Pfad des Mercurial Archivs.\n"
+"  :``{hgweb}``:   Basis-URL für alle Mercurial Archive."
+
+msgid ""
+"  Default ``changeset {node|short} in repo {root} refers to bug\n"
+"  {bug}.\\ndetails:\\n\\t{desc|tabindent}``"
+msgstr ""
+"  Standard: ``Änderung {node|short} in Archiv {root} erwähnt Bug {bug}.\\n\n"
+"              Details:\\n\\t{desc|tabindent}``"
+
+msgid ""
+"bugzilla.strip\n"
+"  The number of path separator characters to strip from the front of\n"
+"  the Mercurial repository path (``{root}`` in templates) to produce\n"
+"  ``{webroot}``. For example, a repository with ``{root}``\n"
+"  ``/var/local/my-project`` with a strip of 2 gives a value for\n"
+"  ``{webroot}`` of ``my-project``. Default 0."
+msgstr ""
+"bugzilla.strip\n"
+"  Die Anzahl von Verzeichnisebenen, die vom Anfang des Archivpfads\n"
+"  (``{root}`` in Vorlagen) abgeschnitten wird, um ``{webroot}`` zu erhalten.\n"
+"  Zum Beispiel mit ``{root}`` als ``/var/local/mein-projekt`` und einem\n"
+"  Wert 2, wird ``{webroot}`` auf ``mein-projekt`` gesetzt. Standard 0."
+
+msgid ""
+"web.baseurl\n"
+"  Base URL for browsing Mercurial repositories. Referenced from\n"
+"  templates as ``{hgweb}``."
+msgstr ""
+"web.baseurl\n"
+"  Basis-URL für alle Mercurial Archive. Kann in Kommentar-Vorlagen als\n"
+"  ``{hgweb}`` verwendet werden."
+
+msgid "Configuration items common to XMLRPC+email and MySQL access modes:"
+msgstr "Gemeinsame Zugriffskonfiguration für XMLRPC+email und MySQL:"
+
+msgid ""
+"bugzilla.usermap\n"
+"  Path of file containing Mercurial committer email to Bugzilla user email\n"
 "  mappings. If specified, the file should contain one mapping per\n"
-"  line, \"committer\"=\"Bugzilla user\". See also the [usermap] section."
-msgstr ""
-"usermap\n"
+"  line::"
+msgstr ""
+"bugzilla.usermap\n"
 "  Pfad zu einer Datei, die Mercurial Benutzern eine Bugzilla-Benutzer-ID\n"
-"  zuweist. Falls angegeben, sollte jede Zeile der Form\n"
-"    \"Mercurial-Benutzer\"=\"Bugzilla-Benutzer\"\n"
-"  entsprechen. Siehe auch [usermap]."
-
-msgid ""
-"The [usermap] section is used to specify mappings of Mercurial\n"
-"committer ID to Bugzilla user ID. See also [bugzilla].usermap.\n"
-"\"committer\"=\"Bugzilla user\""
-msgstr ""
-"Einträge in dieser [usermap] Sektion weisen Mercurial Benutzern eine\n"
-"Bugzilla-BenutzerID zu. Siehe auch Option [bugzilla].usermap.\n"
-"\"Mercurial-Benutzer\"=\"Bugzilla-Benutzer\""
-
-msgid "Finally, the [web] section supports one entry:"
-msgstr "Letztlich definiert der Abschnitt [web] noch einen Eintrag:"
-
-msgid ""
-"baseurl\n"
-"  Base URL for browsing Mercurial repositories. Reference from\n"
-"  templates as {hgweb}."
-msgstr ""
-"baseurl\n"
-"  Basis-URL für alle Mercurial Archive. Kann in Kommentar-Vorlagen als\n"
-"  {hgweb} verwendet werden."
+"  zuweist. Falls angegeben, sollte jede Zeile der Form::"
+
+msgid "    committer = Bugzilla user"
+msgstr "    Mercurial-Benutzer = Bugzilla-Benutzer"
+
+msgid "  See also the ``[usermap]`` section."
+msgstr "  entsprechen. Siehe auch ``[usermap]``."
+
+msgid ""
+"The ``[usermap]`` section is used to specify mappings of Mercurial\n"
+"committer email to Bugzilla user email. See also ``bugzilla.usermap``.\n"
+"Contains entries of the form ``committer = Bugzilla user``."
+msgstr ""
+"Einträge im ``[usermap]``-Abschnitt weisen Mercurial Benutzern eine\n"
+"Bugzilla-Emailadresse zu. Siehe auch Option ``bugzilla.usermap``.\n"
+"Enthält Einträge der Form ``Mercurial-Benutzer = Bugzilla-Benutzer``"
+
+msgid "XMLRPC access mode configuration:"
+msgstr "XMLRPC Zugriffskonfiguration:"
+
+msgid ""
+"bugzilla.bzurl\n"
+"  The base URL for the Bugzilla installation.\n"
+"  Default ``http://localhost/bugzilla``."
+msgstr ""
+"bugzilla.bzurl\n"
+"  Die Basis-URL der Bugzilla Installation\n"
+"  Standard ``http://localhost/bugzilla``."
+
+msgid ""
+"bugzilla.user\n"
+"  The username to use to log into Bugzilla via XMLRPC. Default\n"
+"  ``bugs``."
+msgstr ""
+"bugzilla.user\n"
+"  Der Benutzername für den Bugzilla-Zugriff via XMLRPC. Standard ``bugs``."
+
+msgid ""
+"bugzilla.password\n"
+"  The password for Bugzilla login."
+msgstr ""
+"bugzilla.password\n"
+"  Das Passwort für den Bugzilla-Zugriff."
+
+msgid ""
+"XMLRPC+email access mode uses the XMLRPC access mode configuration items,\n"
+"and also:"
+msgstr ""
+"XMLRPC+email nutzt die gleichen Zugriffskonfiguration wie XMLRPC plus:"
+
+msgid ""
+"bugzilla.bzemail\n"
+"  The Bugzilla email address."
+msgstr ""
+"bugzilla.bzemail\n"
+"  Die Bugzilla Emailadresse."
+
+msgid ""
+"In addition, the Mercurial email settings must be configured. See the\n"
+"documentation in hgrc(5), sections ``[email]`` and ``[smtp]``."
+msgstr ""
+"Zusütlich müssen der Emailversand für Mercurial konfiguriert werden. Sie\n"
+"dazu die Dokumentation von hgrc(5), Abschnitte ``[email]`` und ``[smtp]``."
+
+msgid "MySQL access mode configuration:"
+msgstr "MySQL Zugriffskonfiguration:"
+
+msgid ""
+"bugzilla.host\n"
+"  Hostname of the MySQL server holding the Bugzilla database.\n"
+"  Default ``localhost``."
+msgstr ""
+"bugzilla.host\n"
+"  Hostname des Servers auf dem die Bugzilla MySQL-Datenbank läuft.\n"
+"  Standard ``localhost``."
+
+msgid ""
+"bugzilla.db\n"
+"  Name of the Bugzilla database in MySQL. Default ``bugs``."
+msgstr ""
+"bugzilla.db\n"
+"  Name der Bugzilla-Datenbank in MySQL. Standard: ``bugs``."
+
+msgid ""
+"bugzilla.user\n"
+"  Username to use to access MySQL server. Default ``bugs``."
+msgstr ""
+"bugzilla.user\n"
+"  Benutzername zum Zugriff auf den MySQL-Server. Standard: ``bugs``."
+
+msgid ""
+"bugzilla.password\n"
+"  Password to use to access MySQL server."
+msgstr ""
+"bugzilla.password\n"
+"  Password zum Zugriff auf den MySQL-Server."
+
+msgid ""
+"bugzilla.timeout\n"
+"  Database connection timeout (seconds). Default 5."
+msgstr ""
+"bugzilla.timeout\n"
+"  Datenbank Verbindungs-Zeitgrenze (in Sekunden). Standard 5."
+
+msgid ""
+"bugzilla.bzuser\n"
+"  Fallback Bugzilla user name to record comments with, if changeset\n"
+"  committer cannot be found as a Bugzilla user."
+msgstr ""
+"bugzilla.bzuser\n"
+"  Ausweich-Benutzername zum Setzen von Kommentaren, falls der Autor der\n"
+"  Änderungen kein Benutzer in Bugzilla ist."
+
+msgid ""
+"bugzilla.bzdir\n"
+"   Bugzilla install directory. Used by default notify. Default\n"
+"   ``/var/www/html/bugzilla``."
+msgstr ""
+"bugzilla.bzdir\n"
+"  Bugzilla Installationsverzeichnis. Notwendig für die Standard\n"
+"  'notify'-Aktion; Standard: ``/var/www/html/bugzilla``."
+
+msgid ""
+"bugzilla.notify\n"
+"  The command to run to get Bugzilla to send bug change notification\n"
+"  emails. Substitutes from a map with 3 keys, ``bzdir``, ``id`` (bug\n"
+"  id) and ``user`` (committer bugzilla email). Default depends on\n"
+"  version; from 2.18 it is \"cd %(bzdir)s && perl -T\n"
+"  contrib/sendbugmail.pl %(id)s %(user)s\"."
+msgstr ""
+"bugzilla.notify\n"
+"  Das Kommando um Hinweis-E-Mails zu versenden. Die drei Schlüssel\n"
+"  ``bzdir``, ``id`` (Ticket ID) und ``user`` (Autor) werden ersetzt.\n"
+"  Der Standard hängt von der Version ab; ab 2.18 ist es\n"
+"  \"cd %(bzdir)s && perl -T contrib/sendbugmail.pl %(id)s %(user)s\""
 
 msgid "Activating the extension::"
 msgstr "Um diese Erweiterung zu aktivieren::"
@@ -639,21 +826,114 @@
 "    incoming.bugzilla = python:hgext.bugzilla.hook"
 msgstr ""
 "    [hooks]\n"
-"    # führt Einhängeaktion für jede Änderung aus, die hierher geholt oder\n"
-"    # geschoben wird\n"
+"    # führt Hook für jede Änderung aus, die hierher abgerufen oder\n"
+"    # übertragen wird\n"
 "    incoming.bugzilla = python:hgext.bugzilla.hook"
 
-msgid "Example configuration:"
-msgstr "Beispielkonfiguration:"
-
-msgid ""
-"This example configuration is for a collection of Mercurial\n"
-"repositories in /var/local/hg/repos/ used with a local Bugzilla 3.2\n"
-"installation in /opt/bugzilla-3.2. ::"
-msgstr ""
-"Dieses Beispiel geht von einer lokalen Bugzilla 3.2 Installation im\n"
-"Verzeichnis /opt/bugzilla-3.2 und Mercurial-Archiven in\n"
-"/var/local/hg/repos/ aus. ::"
+msgid "Example configurations:"
+msgstr "Beispielkonfigurationen:"
+
+msgid ""
+"XMLRPC example configuration. This uses the Bugzilla at\n"
+"``http://my-project.org/bugzilla``, logging in as user\n"
+"``bugmail@my-project.org`` with password ``plugh``. It is used with a\n"
+"collection of Mercurial repositories in ``/var/local/hg/repos/``,\n"
+"with a web interface at ``http://my-project.org/hg``. ::"
+msgstr ""
+"XMLRPC Beispielkonfiguration. Genutzt wird Bugzilla auf\n"
+"``http://mein-projekt.org/bugzilla``, mit dem Benutzer\n"
+"``bugmail@mein-projekt.org`` und Password ``plugh``. Die Archive, deren\n"
+"Änderungen dort kommentiert werden, sind in ``/var/local/hg/repos/``,\n"
+"mit einem Web-Interface auf ``http://mein-projekt.org/hg``. ::"
+
+msgid ""
+"    [bugzilla]\n"
+"    bzurl=http://my-project.org/bugzilla\n"
+"    user=bugmail@my-project.org\n"
+"    password=plugh\n"
+"    version=xmlrpc\n"
+"    template=Changeset {node|short} in {root|basename}.\n"
+"             {hgweb}/{webroot}/rev/{node|short}\\n\n"
+"             {desc}\\n\n"
+"    strip=5"
+msgstr ""
+"    [bugzilla]\n"
+"    bzurl=http://mein-project.org/bugzilla\n"
+"    user=bugmail@mein-projekt.org\n"
+"    password=plugh\n"
+"    version=xmlrpc\n"
+"    template=Änderung {node|short} in Archiv {root|basename}.\n"
+"             {hgweb}/{webroot}/rev/{node|short}\\n\n"
+"             {desc}\\n\n"
+"    strip=5"
+
+msgid ""
+"    [web]\n"
+"    baseurl=http://my-project.org/hg"
+msgstr ""
+"    [web]\n"
+"    baseurl=http://mein-projekt.com/hg"
+
+msgid ""
+"XMLRPC+email example configuration. This uses the Bugzilla at\n"
+"``http://my-project.org/bugzilla``, logging in as user\n"
+"``bugmail@my-project.org`` with password ``plugh``. It is used with a\n"
+"collection of Mercurial repositories in ``/var/local/hg/repos/``,\n"
+"with a web interface at ``http://my-project.org/hg``. Bug comments\n"
+"are sent to the Bugzilla email address\n"
+"``bugzilla@my-project.org``. ::"
+msgstr ""
+"XMLRPC+email Beispielkonfiguration. Genutzt wird Bugzilla auf\n"
+"``http://mein-projekt.org/bugzilla``, mit dem Benutzer\n"
+"``bugmail@mein-projekt.org`` und Password ``plugh``. Die Archive, deren\n"
+"Änderungen dort kommentiert werden, sind in ``/var/local/hg/repos/``,\n"
+"mit einem Web-Interface auf ``http://mein-projekt.org/hg``. Die Kommentare\n"
+"werden an die Emailadresse ``bugzilla@mein-projekt.org`` gesendet. ::"
+
+msgid ""
+"    [bugzilla]\n"
+"    bzurl=http://my-project.org/bugzilla\n"
+"    user=bugmail@my-project.org\n"
+"    password=plugh\n"
+"    version=xmlrpc\n"
+"    bzemail=bugzilla@my-project.org\n"
+"    template=Changeset {node|short} in {root|basename}.\n"
+"             {hgweb}/{webroot}/rev/{node|short}\\n\n"
+"             {desc}\\n\n"
+"    strip=5"
+msgstr ""
+"    [bugzilla]\n"
+"    bzurl=http://mein-projekt.org/bugzilla\n"
+"    user=bugmail@mein-projekt.org\n"
+"    password=plugh\n"
+"    version=xmlrpc\n"
+"    bzemail=bugzilla@mein-projekt.org\n"
+"    template=Änderung {node|short} in Archiv {root|basename}.\n"
+"             {hgweb}/{webroot}/rev/{node|short}\\n\n"
+"             {desc}\\n\n"
+"    strip=5"
+
+msgid ""
+"    [usermap]\n"
+"    user@emaildomain.com=user.name@bugzilladomain.com"
+msgstr ""
+"    [usermap]\n"
+"    benutzer@emaildomain.com=benutzer.name@bugzilladomain.com"
+
+msgid ""
+"MySQL example configuration. This has a local Bugzilla 3.2 installation\n"
+"in ``/opt/bugzilla-3.2``. The MySQL database is on ``localhost``,\n"
+"the Bugzilla database name is ``bugs`` and MySQL is\n"
+"accessed with MySQL username ``bugs`` password ``XYZZY``. It is used\n"
+"with a collection of Mercurial repositories in ``/var/local/hg/repos/``,\n"
+"with a web interface at ``http://my-project.org/hg``. ::"
+msgstr ""
+"MySQL Beispielkonfiguration. Bugzilla 3.2 ist lokal in ``/opt/bugzilla-3.2``\n"
+"installiert. Die MySQL Datenbank wird per ``localhost`` angesprochen,\n"
+"der Name der Bugzilla Datenbank ist ``bugs`` und der MySQL Zugriff ist für\n"
+"enutzer ``bugs`` mit Password ``XYZZY`` erlaubt. Die Archive, deren\n"
+"Änderungen dort kommentiert werden, sind in ``/var/local/hg/repos/``,\n"
+"mit einem Web-Interface auf ``http://mein-projekt.org/hg``. ::"
 
 msgid ""
 "    [bugzilla]\n"
@@ -678,34 +958,24 @@
 "             {desc}\\n\n"
 "    strip=5"
 
-msgid ""
-"    [web]\n"
-"    baseurl=http://dev.domain.com/hg"
-msgstr ""
-"    [web]\n"
-"    baseurl=http://dev.domain.com/hg"
-
-msgid ""
-"    [usermap]\n"
-"    user@emaildomain.com=user.name@bugzilladomain.com"
-msgstr ""
-"    [usermap]\n"
-"    benutzer@emaildomain.com=benutzer.name@bugzilladomain.com"
-
-msgid "Commits add a comment to the Bugzilla bug record of the form::"
+msgid "All the above add a comment to the Bugzilla bug record of the form::"
 msgstr "Eine neue Änderung führt dann zu einem solchen Bugzilla-Kommentar::"
 
 msgid ""
 "    Changeset 3b16791d6642 in repository-name.\n"
-"    http://dev.domain.com/hg/repository-name/rev/3b16791d6642"
+"    http://my-project.org/hg/repository-name/rev/3b16791d6642"
 msgstr ""
 "    Änderung 3b16791d6642 in Archivname.\n"
-"    http://dev.domain.com/hg/archivname/rev/3b16791d6642"
+"    http://mein-projekt.org/hg/archivname/rev/3b16791d6642"
 
 msgid "    Changeset commit comment. Bug 1234.\n"
 msgstr "    Änderungsnachricht des Commits. Bug 1234.\n"
 
 #, python-format
+msgid "python mysql support not available: %s"
+msgstr "MySQL-Unterstützung in Python nicht verfügbar: %s"
+
+#, python-format
 msgid "connecting to %s:%s as %s, password %s\n"
 msgstr "Verbinde mit %s:%s als %s, Passwort %s\n"
 
@@ -740,7 +1010,7 @@
 msgstr "Fehler beim 'notify'-Befehl: %s"
 
 msgid "done\n"
-msgstr "erledigt\n"
+msgstr "fertig\n"
 
 #, python-format
 msgid "looking up user %s\n"
@@ -754,6 +1024,13 @@
 msgid "cannot find bugzilla user id for %s or %s"
 msgstr "Kann keine Bugzilla Benutzer-ID für %s oder %s finden"
 
+msgid "configuration 'bzemail' missing"
+msgstr "Konfiguration für 'bzemail' fehlt"
+
+#, python-format
+msgid "default bugzilla user %s email not found"
+msgstr "Standard Bugzilla-Benutzer %s Email nicht gefunden"
+
 #, python-format
 msgid "bugzilla version %s not supported"
 msgstr "Bugzilla-Version %s wird nicht unterstützt"
@@ -768,16 +1045,12 @@
 "\t{desc|tabindent}"
 
 #, python-format
-msgid "python mysql support not available: %s"
-msgstr "MySQL-Unterstützung in Python nicht verfügbar: %s"
-
-#, python-format
 msgid "hook type %s does not pass a changeset id"
 msgstr "Hook-Typ %s übergibt keine Änderungs-ID"
 
 #, python-format
-msgid "database error: %s"
-msgstr "Datenbankfehler: %s"
+msgid "Bugzilla error: %s"
+msgstr "Bugzilla Fehler: %s"
 
 msgid "command to display child changesets"
 msgstr "Befehl zum Anzeigen von Kindrevisionen"
@@ -806,7 +1079,7 @@
 msgstr "REV"
 
 msgid "show children of the specified revision"
-msgstr "Zeigt die Kinder der übergebenen Revision"
+msgstr "Zeigt die Kinder der gegebenen Revision"
 
 msgid "hg children [-r REV] [FILE]"
 msgstr "hg children [-r REV] [DATEI]"
@@ -816,7 +1089,7 @@
 
 #, python-format
 msgid "Revision %d is a merge, ignoring...\n"
-msgstr "Revision %d ist eine Zusammenführung, wird ignoriert...\n"
+msgstr "Revision %d ist eine Zusammenführung. Ignoriere...\n"
 
 msgid "analyzing"
 msgstr "Analysiere"
@@ -944,12 +1217,11 @@
 msgstr "Färbt die Ausgabe einiger Befehle"
 
 msgid ""
-"This extension modifies the status and resolve commands to add color to "
-"their\n"
-"output to reflect file status, the qseries command to add color to reflect\n"
-"patch status (applied, unapplied, missing), and to diff-related\n"
-"commands to highlight additions, removals, diff headers, and trailing\n"
-"whitespace."
+"This extension modifies the status and resolve commands to add color\n"
+"to their output to reflect file status, the qseries command to add\n"
+"color to reflect patch status (applied, unapplied, missing), and to\n"
+"diff-related commands to highlight additions, removals, diff headers,\n"
+"and trailing whitespace."
 msgstr ""
 "Diese Erweiterung färbt die Ausgabe der Befehle 'status' und 'resolve'\n"
 "anhand des Dateistatus, die Ausgabe von 'qseries' anhand des Patchstatus\n"
@@ -959,15 +1231,19 @@
 
 msgid ""
 "Other effects in addition to color, like bold and underlined text, are\n"
-"also available. Effects are rendered with the ECMA-48 SGR control\n"
+"also available. By default, the terminfo database is used to find the\n"
+"terminal codes used to change color and effect.  If terminfo is not\n"
+"available, then effects are rendered with the ECMA-48 SGR control\n"
 "function (aka ANSI escape codes)."
 msgstr ""
 "Neben Farbänderungen sind auch andere Effekte wie Fettschreibung oder\n"
-"Unterstreichung möglich. Die Effekte werden durch die ECMA-48 SGR\n"
-"Funktionen (ANSI Escape Codes) realisiert."
+"Unterstreichung möglich. Standardmäßig wird die terminfo Datenbank für die\n"
+"Terminalkommandos befragt. Falls terminfo nicht erreichbar ist, werden die\n"
+"Effekte durch die ECMA-48 SGR Funktionen (ANSI Escape Codes) realisiert."
 
 msgid "Default effects may be overridden from your configuration file::"
-msgstr "Standardeffekte können durch die .hgrc-Datei verändert werden::"
+msgstr ""
+"Standardeffekte können durch die Konfigurationsdatei verändert werden::"
 
 msgid ""
 "  [color]\n"
@@ -1047,32 +1323,110 @@
 "  branches.inactive = none"
 
 msgid ""
-"The color extension will try to detect whether to use ANSI codes or\n"
-"Win32 console APIs, unless it is made explicit::"
-msgstr ""
-"Die color-Erweiterung wird versuchen, herauszufinden, ob ANSI-Codes oder\n"
-"die Win32-Konsolen-API verwendet werden muss, es sei denn, dies wird\n"
-"explizit angegeben::"
+"  tags.normal = green\n"
+"  tags.local = black bold"
+msgstr ""
+"  tags.normal = green\n"
+"  tags.local = black bold"
+
+msgid ""
+"The available effects in terminfo mode are 'blink', 'bold', 'dim',\n"
+"'inverse', 'invisible', 'italic', 'standout', and 'underline'; in\n"
+"ECMA-48 mode, the options are 'bold', 'inverse', 'italic', and\n"
+"'underline'.  How each is rendered depends on the terminal emulator.\n"
+"Some may not be available for a given terminal type, and will be\n"
+"silently ignored."
+msgstr ""
+"Die verfügbaren Effekte im terminfo-Modus sind 'blink' (blinkend), 'bold'\n"
+"(fettgeschrieben), 'dim' (gedämmt), 'inverse' (Vorder- und Hintergrund\n"
+"getauscht), 'italic' (Schrägschrift), 'standout' (hervorstehend) und\n"
+"'underline' (unterstrichen); im ECMA-48 Modus nur 'bold', 'inverse',\n"
+"'italic' und 'underline'. Wie dies tatsächlich aussieht, hängt vom Terminal-\n"
+"emulator ab. Effekte, die nicht realisiert werden können, werden ohne\n"
+"Warnung ignoriert."
+
+msgid ""
+"Note that on some systems, terminfo mode may cause problems when using\n"
+"color with the pager extension and less -R. less with the -R option\n"
+"will only display ECMA-48 color codes, and terminfo mode may sometimes\n"
+"emit codes that less doesn't understand. You can work around this by\n"
+"either using ansi mode (or auto mode), or by using less -r (which will\n"
+"pass through all terminal control codes, not just color control\n"
+"codes)."
+msgstr ""
+"Beachten Sie, dass terminfo-Farben in Verbindung mit der pager-Erweiterung\n"
+"und 'less -R' zu Problemen führen kann. 'less' wird mit der -R Option nur\n"
+"ECMA-48 Farbcodes anzeigen und der terminfo-Modus sendet manchmal Werte,\n"
+"die 'less' nicht versteht. Eine Abhilfe ist der ansi (oder auto) -Modus\n"
+"oder 'less -r', was alle Terminalkodes unverändert durchleitet."
+
+msgid ""
+"Because there are only eight standard colors, this module allows you\n"
+"to define color names for other color slots which might be available\n"
+"for your terminal type, assuming terminfo mode.  For instance::"
+msgstr ""
+"Dieses Modul erlaubt im terminfo-Modus die Definition neuer Farben für\n"
+"die Plätze oberhalb der acht Standardfarben. Zum Beispiel::"
+
+msgid ""
+"  color.brightblue = 12\n"
+"  color.pink = 207\n"
+"  color.orange = 202"
+msgstr ""
+"  color.brightblue = 12\n"
+"  color.pink = 207\n"
+"  color.orange = 202"
+
+msgid ""
+"to set 'brightblue' to color slot 12 (useful for 16 color terminals\n"
+"that have brighter colors defined in the upper eight) and, 'pink' and\n"
+"'orange' to colors in 256-color xterm's default color cube.  These\n"
+"defined colors may then be used as any of the pre-defined eight,\n"
+"including appending '_background' to set the background to that color."
+msgstr ""
+"um Hellblau (brightblue) auf Platz 12 zu setzen (nützlich für 16-Farben-\n"
+"Terminale, die in den oberen acht Plätzen die helleren Farben setzen) und\n"
+"Rosa und Orange auf ihre Plätze im Standard-Farbwürfel eines 256-Farben\n"
+"XTerms. Diese Farben können nun genau wie die vordefinierten Acht verwendet\n"
+"werden, auch als Hintergrundfarbe durch Anhängen von '_background'."
+
+msgid ""
+"By default, the color extension will use ANSI mode (or win32 mode on\n"
+"Windows) if it detects a terminal. To override auto mode (to enable\n"
+"terminfo mode, for example), set the following configuration option::"
+msgstr ""
+"Standardmäßig wird die Fareberweiterung den ANSI-Modus (bzw. win32-Modus\n"
+"auf Windows) verwenden, falls ein Terminal gefunden wird (also keine\n"
+"Umleitung in eine Datei). Um den auto-Modus zu überschreiben (z.B. mit dem\n"
+"terminfo-Modus), muss die folgende Konfigurationsoption gesetzt werden::"
 
 msgid ""
 "  [color]\n"
-"  mode = ansi"
+"  mode = terminfo"
 msgstr ""
 "  [color]\n"
-"  mode = ansi"
-
-msgid "Any value other than 'ansi', 'win32', or 'auto' will disable color."
-msgstr ""
-"Jeder Wert außer 'ansi', 'win32' oder 'auto' wird die Farben deaktivieren."
+"  mode = terminfo"
+
+msgid ""
+"Any value other than 'ansi', 'win32', 'terminfo', or 'auto' will\n"
+"disable color.\n"
+msgstr ""
+"Jeder Wert außer 'ansi', 'win32', 'terminfo' oder 'auto' wird Farben\n"
+"deaktivieren.\n"
+
+msgid "no terminfo entry for setab/setaf: reverting to ECMA-48 color\n"
+msgstr ""
+"Kein terminfo-Eintrag für setab/setaf: Falle auf ECMA-48 zurück\n"
+
+#, python-format
+msgid "warning: failed to set color mode to %s\n"
+msgstr ""
+"Warnung: Konnte Farbmodus nicht auf %s setzen\n"
 
 #, python-format
 msgid "ignoring unknown color/effect %r (configured in color.%s)\n"
 msgstr "Ignoriere unbekannte Farbe/Effekt %r (gesetzt in color.%s)\n"
 
-#, python-format
-msgid "warning: failed to set color mode to %s\n"
-msgstr ""
-
 #. i18n: 'always', 'auto', and 'never' are keywords and should
 #. not be translated
 msgid "when to colorize (boolean, always, auto, or never)"
@@ -1183,9 +1537,9 @@
 "    text file that maps each source commit ID to the destination ID\n"
 "    for that revision, like so::"
 msgstr ""
-"    Wenn <REVMAP> nicht gegeben ist, wird es in einer standardisierten\n"
-"    Stelle (standardmäßig <dest>/.hg/shamap) abgelegt. Die <REVMAP> ist\n"
-"    eine einfache Textdatei, die die IDs aus dem Quellarchiv mit denen\n"
+"    Wenn ``REVMAP`` nicht gegeben ist, wird es in einer standardisierten\n"
+"    Stelle (standardmäßig ``<dest>/.hg/shamap``) abgelegt. Die ``REVMAP``\n"
+"    ist eine einfache Textdatei, die die IDs aus dem Quellarchiv mit denen\n"
 "    aus dem Zielarchiv verknüpft. Das Format ist::"
 
 msgid "      <source ID> <destination ID>"
@@ -1216,7 +1570,7 @@
 
 msgid "    Empty lines and lines starting with a ``#`` are ignored."
 msgstr ""
-"    Leere Zeilen werden ignoriert, ebenso Zeilen, die mit ``#`` beginnen."
+"    Leere Zeilen und Zeilen, die mit ``#`` beginnen, werden ignoriert."
 
 msgid ""
 "    The filemap is a file that allows filtering and remapping of files\n"
@@ -1342,7 +1696,7 @@
 "    ''''''''''''''''"
 msgstr ""
 "    Mercurial als Quelle\n"
-"    --------------------"
+"    ''''''''''''''''''''"
 
 msgid ""
 "    The Mercurial source recognizes the following configuration\n"
@@ -1363,12 +1717,12 @@
 
 msgid ""
 "    :convert.hg.saverev: store original revision ID in changeset\n"
-"        (forces target IDs to change). It takes and boolean argument\n"
-"        and defaults to False."
+"        (forces target IDs to change). It takes a boolean argument and\n"
+"        defaults to False."
 msgstr ""
 "    :convert.hg.saverev: Speichere die originale Revision ID im Changeset\n"
 "        (erzwingt geänderte Target IDs). Nimmt ein boolean Argument\n"
-"        und hat den Default False."
+"        und hat den Standard False."
 
 msgid ""
 "    :convert.hg.startrev: convert start revision and its descendants.\n"
@@ -1382,7 +1736,7 @@
 "    ''''''''''"
 msgstr ""
 "    CVS als Quelle\n"
-"    --------------"
+"    ''''''''''''''"
 
 msgid ""
 "    CVS source will use a sandbox (i.e. a checked-out copy) from CVS\n"
@@ -1495,7 +1849,7 @@
 "    '''''''''''''''''"
 msgstr ""
 "    Subversion als Quelle\n"
-"    ---------------------"
+"    '''''''''''''''''''''"
 
 msgid ""
 "    Subversion source detects classical trunk/branches/tags layouts.\n"
@@ -1566,7 +1920,7 @@
 "    '''''''''''''''"
 msgstr ""
 "    Perforce als Quelle\n"
-"    -------------------"
+"    '''''''''''''''''''"
 
 msgid ""
 "    The Perforce (P4) importer can be given a p4 depot path or a\n"
@@ -1601,8 +1955,8 @@
 "    Mercurial Destination\n"
 "    '''''''''''''''''''''"
 msgstr ""
-"    Mercurial Ziel\n"
-"    ''''''''''''''"
+"    Mercurial als Ziel\n"
+"    ''''''''''''''''''"
 
 msgid "    The following options are supported:"
 msgstr "    Die folgenden Optionen werden unterstützt:"
@@ -1722,6 +2076,15 @@
 msgid "hg debugcvsps [OPTION]... [PATH]..."
 msgstr "hg debugcvsps [OPTION]... [PATH]..."
 
+msgid ":svnrev: String. Converted subversion revision number."
+msgstr ":svnrev: Zeichenkette. Die konvertierte subversion-Revisionsnummer."
+
+msgid ":svnpath: String. Converted subversion revision project path."
+msgstr ":svnpath: Zeichenkette. Der konvertierte subversion-Projektpfad."
+
+msgid ":svnuuid: String. Converted subversion revision repository identifier."
+msgstr ":svnuuid: Zeichenkette. Der konvertierte subversion-Archivbezeichner."
+
 #, python-format
 msgid "%s does not look like a Bazaar repository"
 msgstr "%s scheint kein Bazaar-Archiv zu sein"
@@ -1785,10 +2148,6 @@
 msgstr "convert: %s\n"
 
 #, python-format
-msgid "%s\n"
-msgstr ""
-
-#, python-format
 msgid "%s: unknown repository type"
 msgstr "%s: Unbekannter Archivtyp"
 
@@ -2062,7 +2421,10 @@
 msgstr "Filtere leere Revision aus\n"
 
 msgid "updating tags\n"
-msgstr "Aktualisiere Tags\n"
+msgstr "Aktualisiere Etiketten\n"
+
+msgid "updating bookmarks\n"
+msgstr "Aktualisiere Lesezeichen\n"
 
 #, python-format
 msgid "%s is not a valid start revision"
@@ -2076,10 +2438,46 @@
 msgid "%s does not look like a monotone repository"
 msgstr "%s scheint kein monotone-Archiv zu sein"
 
+msgid "bad mtn packet - no end of commandnbr"
+msgstr "Fehlerhaftes mtn-Paket - Ende von commandnbr nicht gefunden"
+
+#, python-format
+msgid "bad mtn packet - bad stream type %s"
+msgstr "Fehlerhaftes mtn-Paket - Falscher Stromtyp %s"
+
+msgid "bad mtn packet - no divider before size"
+msgstr "Fehlerhaftes mtn-Paket - Kein Teiler vor der Größenangabe"
+
+msgid "bad mtn packet - no end of packet size"
+msgstr "Fehlerhaftes mtn-Paket - Ende der Größenangabe nicht gefunden"
+
+#, python-format
+msgid "bad mtn packet - bad packet size %s"
+msgstr "Fehlerhaftes mtn-Paket - Ungültige Größenangabe %s"
+
+#, python-format
+msgid "bad mtn packet - unable to read full packet read %s of %s"
+msgstr ""
+"Fehlerhaftes mtn-Paket - Konnte Paket %s von %s nicht vollständig auslesen"
+
+#, python-format
+msgid "mtn command '%s' returned %s"
+msgstr "mtn Befehl '%s' gab %s zurück"
+
 #, python-format
 msgid "copying file in renamed directory from '%s' to '%s'"
 msgstr "Kopiere Dateien in unbenanntem Verzeichnis von '%s' nach '%s'"
 
+msgid "unable to determine mtn automate interface version"
+msgstr "Konnte die Version der mtn automate-Schnittstelle nicht herausfinden"
+
+#, python-format
+msgid "mtn automate stdio header unexpected: %s"
+msgstr ""
+
+msgid "failed to reach end of mtn automate stdio headers"
+msgstr ""
+
 #, python-format
 msgid "%s does not look like a P4 repository"
 msgstr "%s scheint kein P4-Archiv zu sein"
@@ -2101,14 +2499,14 @@
 msgstr ""
 "SVN: Kann entferntes Projektarchiv nicht untersuchen; nehme an, es handelt "
 "sich um ein Subversion-Projektarchiv.\n"
-"Verwende --source, wenn du es besser weißt.\n"
+"Verwende --source, wenn Sie es besser wissen.\n"
 
 #, python-format
 msgid "%s does not look like a Subversion repository"
 msgstr "%s scheint kein Subversion-Archiv zu sein"
 
 msgid "Could not load Subversion python bindings"
-msgstr ""
+msgstr "Subversion Python-API konnte nicht geladen werden"
 
 #, python-format
 msgid "Subversion python bindings %d.%d found, 1.4 or later required"
@@ -2306,13 +2704,14 @@
 "   um alle Dateien zu berühren."
 
 msgid ""
-"The extension uses an optional ``[eol]`` section in your hgrc file\n"
-"(not the ``.hgeol`` file) for settings that control the overall\n"
-"behavior. There are two settings:"
+"The extension uses an optional ``[eol]`` section read from both the\n"
+"normal Mercurial configuration files and the ``.hgeol`` file, with the\n"
+"latter overriding the former. You can use that section to control the\n"
+"overall behavior. There are three settings:"
 msgstr ""
 "Die Erweiterung verwendet einen optionalen ``[eol]``-Bereich in der\n"
-"Konfigurationsdatei (nicht die ``.hgeol``-Datei), um das systemweite\n"
-"Verhalten zu definieren. Es gibt zwei Einstellungen:"
+"Konfigurationsdatei und mit höherer Priorität in der ``.hgeol``-Datei, um\n"
+"das systemweite Verhalten zu definieren. Es gibt drei Einstellungen:"
 
 msgid ""
 "- ``eol.native`` (default ``os.linesep``) can be set to ``LF`` or\n"
@@ -2322,7 +2721,7 @@
 msgstr ""
 "- ``eol.native`` (Standard ist ``os.linesep``) kann auf ``LF`` oder\n"
 "  ``CRLF`` gesetzt werden, um die Interpretation von ``native`` beim\n"
-"  Auschecken zu überschreiben. Dies kann mit :hg:``archive`` unter Unix\n"
+"  Aktualisieren zu überschreiben. Dies kann mit :hg:``archive`` unter Unix\n"
 "  verwendet werden, um bspw. ein Archiv zu erzeugen, in dem alle Dateien\n"
 "  Windows-Zeilenumbrüche haben."
 
@@ -2341,6 +2740,15 @@
 "  gutem Grund wechselnde Zeilenumbrüche haben."
 
 msgid ""
+"- ``eol.fix-trailing-newline`` (default False) can be set to True to\n"
+"  ensure that converted files end with a EOL character (either ``\\n``\n"
+"  or ``\\r\\n`` as per the configured patterns)."
+msgstr ""
+"- ``eol.fix-trailing-newline`` (standardmäßig False) kann auf True gesetzt\n"
+"  werden um sicherzustellen, dass die konvertierten Dateien mit einem\n"
+"  konfigurierten Zeilenumbruch enden (entweder ``\\n`` oder ``\\r\\n``)."
+
+msgid ""
 "The extension provides ``cleverencode:`` and ``cleverdecode:`` filters\n"
 "like the deprecated win32text extension does. This means that you can\n"
 "disable win32text and enable eol and your filters will still work. You\n"
@@ -2354,17 +2762,22 @@
 
 msgid ""
 "The ``win32text.forbid*`` hooks provided by the win32text extension\n"
-"have been unified into a single hook named ``eol.hook``. The hook will\n"
-"lookup the expected line endings from the ``.hgeol`` file, which means\n"
-"you must migrate to a ``.hgeol`` file first before using the hook.\n"
-"Remember to enable the eol extension in the repository where you\n"
-"install the hook."
-msgstr ""
-"The ``win32text.forbid*`` Hooks, die von der win32text Extension zur\n"
+"have been unified into a single hook named ``eol.checkheadshook``. The\n"
+"hook will lookup the expected line endings from the ``.hgeol`` file,\n"
+"which means you must migrate to a ``.hgeol`` file first before using\n"
+"the hook. ``eol.checkheadshook`` only checks heads, intermediate\n"
+"invalid revisions will be pushed. To forbid them completely, use the\n"
+"``eol.checkallhook`` hook. These hooks are best used as\n"
+"``pretxnchangegroup`` hooks."
+msgstr ""
+"Die ``win32text.forbid*`` Hooks, die von der win32text Extension zur\n"
 "Verfügung gestellt werden, sind in einem einzelnen Hook zusammengeführt\n"
-"worden, ``eol.hook``. Der Hook wird die erwarteten Zeilenendungen aus der\n"
-"``.hgeol`` Datei auslesen, was bedeutet, daß Sie zuerst eine ``.hgeol``\n"
-"Datei anlegen müssen, bevor Sie den Hook benutzen können."
+"worden: ``eol.checkheadshook``. Der Hook liest die erwarteten Zeilenenden\n"
+"aus der ``.hgeol`` Datei aus, daher muss zuerst eine ``.hgeol`` Datei\n"
+"anlegen werden, bevor Sie den Hook verwenden können. Er werden nur\n"
+"Kopfversionen geprüft; intermediäre Revisionen mit ungültigen Zeilenenden\n"
+"werden übertragen. Um auch dies zu verbieten, kann der ``eol.checkallhook``\n"
+"verwendet werden. Sie eignen sich am besten für ``pretxnchangegroup`` Hooks."
 
 msgid ""
 "See :hg:`help patterns` for more information about the glob patterns\n"
@@ -2374,25 +2787,24 @@
 "Glob-Muster.\n"
 
 #, python-format
-msgid "%s should not have CRLF line endings"
-msgstr "%s sollte keine CRLF-Zeilenumbrüche haben"
-
-#, python-format
-msgid "%s should not have LF line endings"
-msgstr "%s sollte keine LF-Zeilenumbrüche haben"
+msgid "ignoring unknown EOL style '%s' from %s\n"
+msgstr "Ignoriere unbekannten EOL-Stil '%s' aus '%s'\n"
 
 #, python-format
 msgid "warning: ignoring .hgeol file due to parse error at %s: %s\n"
-msgstr ""
+msgstr "Warning: Ignoriere .hgeol Datei wegen eines Parserfehlers bei %s: %s\n"
+
+#, python-format
+msgid "  %s in %s should not have %s line endings"
+msgstr "  %s in %s sollte keine %s-Zeilenumbrüche haben"
+
+msgid "end-of-line check failed:\n"
+msgstr "Zeilende-Prüfung fehlgeschlagen:\n"
 
 msgid "the eol extension is incompatible with the win32text extension\n"
 msgstr "Die eol-Erweiterung ist inkompatibel mit der win32text-Erweiterung.\n"
 
 #, python-format
-msgid "ignoring unknown EOL style '%s' from %s\n"
-msgstr "Ignoriere unbekannten EOL-Stil '%s' aus '%s'\n"
-
-#, python-format
 msgid "inconsistent newline style in %s\n"
 msgstr "Inkonsistente Zeilenumbrüche in %s\n"
 
@@ -2412,7 +2824,7 @@
 "Optionen aufgerufen. Dies sind die Pfad zu den zu vergleichenden Daten."
 
 msgid ""
-"The extdiff extension also allows to configure new diff commands, so\n"
+"The extdiff extension also allows you to configure new diff commands, so\n"
 "you do not need to type :hg:`extdiff -p kdiff3` always. ::"
 msgstr ""
 "Die extdiff-Erweiterung erlaubt auch die Definition von neuen\n"
@@ -2471,11 +2883,13 @@
 "  $parent1, $plabel1 - filename, descriptive label of first parent\n"
 "  $child,   $clabel  - filename, descriptive label of child revision\n"
 "  $parent2, $plabel2 - filename, descriptive label of second parent\n"
+"  $root              - repository root\n"
 "  $parent is an alias for $parent1."
 msgstr ""
 "  $parent1, $plabel1 - Dateiname, Beschreibung des ersten Vorfahren\n"
 "  $child,   $clabel  - Dateiname, Beschreibung der Kindrevision\n"
 "  $parent2, $plabel2 - Dateiname, Beschreibung des zweiten Vorfahren\n"
+"  $root              - Wurzelverzeichnis des Projektarchivs\n"
 "  $parent ist ein Alias für $parent1."
 
 msgid ""
@@ -2603,12 +3017,12 @@
 
 msgid "pull, update and merge in one command"
 msgstr ""
-"Holen, Aktualisieren und Zusammenführen in einem Befehl zusammengefasst"
+"Abrufen, Aktualisieren und Zusammenführen in einem Befehl zusammengefasst"
 
 msgid "pull changes from a remote repository, merge new changes if needed."
 msgstr ""
-"Holt Änderungen aus einem entfernten Projektarchiv, führt neue Änderungen "
-"zusammen wenn nötig."
+"Ruft Änderungen aus einem entfernten Projektarchiv ab und führt sie, falls "
+"nötig, zusammen."
 
 msgid ""
 "    This finds all changes from the repository at the specified path\n"
@@ -2623,11 +3037,10 @@
 "    Otherwise, the working directory is updated to include the new\n"
 "    changes."
 msgstr ""
-"    Wenn die geholten Änderungen einen neuen Zweigkopf erzeugen, wird "
-"dieser\n"
-"    Kopf automatisch zusammengeführt, und das Resultat der Zusammenführung\n"
-"    wird eine neue Version. Andernfalls wird das Arbeitsverzeichnis mit den\n"
-"    geholten Änderungen aktualisiert."
+"    Wenn die abgerufenen Änderungen einen neuen Zweigkopf erzeugen, wird\n"
+"    dieser Kopf automatisch zusammengeführt und das Resultat als neue\n"
+"    Revision übernommen. Andernfalls wird das Arbeitsverzeichnis mit den\n"
+"    neue Änderungen aktualisiert."
 
 msgid ""
 "    When a merge occurs, the newly pulled changes are assumed to be\n"
@@ -2655,8 +3068,8 @@
 msgid ""
 "working dir not at branch tip (use \"hg update\" to check out branch tip)"
 msgstr ""
-"Arbeitsverzeichnis ist nicht Spitze (tip) des Zweiges (nutze 'hg update' um\n"
-"auf die Zweigspitze zu wechseln)"
+"Arbeitsverzeichnis ist nicht Spitze des Zweiges (nutze :hg:`update` um auf\n"
+"die Zweigspitze zu wechseln)"
 
 msgid "outstanding uncommitted merge"
 msgstr "Ausstehende nicht versionierte Zusammenführung"
@@ -2676,7 +3089,7 @@
 
 #, python-format
 msgid "pulling from %s\n"
-msgstr "Hole von %s\n"
+msgstr "Rufe von %s ab\n"
 
 msgid ""
 "Other repository doesn't support revision lookup, so a rev cannot be "
@@ -2707,7 +3120,7 @@
 "Neuer Änderungssatz %d:%s führt entfernte Änderungen mit lokalen zusammen\n"
 
 msgid "a specific revision you would like to pull"
-msgstr "Revision die geholt werden soll"
+msgstr "Revision, die geholt werden soll"
 
 msgid "edit commit message"
 msgstr "Editiere Versionsmeldung"
@@ -2739,6 +3152,9 @@
 msgid "%s Note: This key has expired (signed by: \"%s\")\n"
 msgstr "%s Anmerkung: Dieser Schlüssel ist veraltet (signiert von: \"%s\")\n"
 
+msgid "hg sigs"
+msgstr "hg sigs"
+
 msgid "list signed changesets"
 msgstr "Zeigt signierte Änderungssätze"
 
@@ -2746,6 +3162,9 @@
 msgid "%s:%d node does not exist\n"
 msgstr "%s:%d Knoten existiert nicht\n"
 
+msgid "hg sigcheck REVISION"
+msgstr "hg sigcheck REVISION"
+
 msgid "verify all the signatures there may be for a particular revision"
 msgstr "überprüfe alle für eine bestimmte Revision vorhandenen Signaturen"
 
@@ -2753,6 +3172,30 @@
 msgid "No valid signature for %s\n"
 msgstr "Keine gültige Signatur für %s\n"
 
+msgid "make the signature local"
+msgstr "signiert nur lokal"
+
+msgid "sign even if the sigfile is modified"
+msgstr "signiert auch, wenn die Signaturdatei geändert ist"
+
+msgid "do not commit the sigfile after signing"
+msgstr "Signaturdatei nach dem Signieren nicht übernehmen"
+
+msgid "ID"
+msgstr "ID"
+
+msgid "the key id to sign with"
+msgstr "Die Schlüssel-ID zum Signieren"
+
+msgid "TEXT"
+msgstr "TEXT"
+
+msgid "commit message"
+msgstr "Versionsmeldung"
+
+msgid "hg sign [OPTION]... [REVISION]..."
+msgstr "hg sign [OPTION]... [REVISION]..."
+
 msgid "add a signature for the current or given revision"
 msgstr "Fügt der aktuellen oder gegebenen Revision eine Signatur hinzu"
 
@@ -2793,36 +3236,6 @@
 msgid "unknown signature version"
 msgstr "Unbekannte Version der Signatur"
 
-msgid "make the signature local"
-msgstr "signiert nur lokal"
-
-msgid "sign even if the sigfile is modified"
-msgstr "signiert auch, wenn die Signaturdatei geändert ist"
-
-msgid "do not commit the sigfile after signing"
-msgstr "Signaturdatei nach dem Signieren nicht übernehmen"
-
-msgid "ID"
-msgstr "ID"
-
-msgid "the key id to sign with"
-msgstr "Die Schlüssel-ID zum Signieren"
-
-msgid "TEXT"
-msgstr "TEXT"
-
-msgid "commit message"
-msgstr "Versionsmeldung"
-
-msgid "hg sign [OPTION]... [REVISION]..."
-msgstr "hg sign [OPTION]... [REVISION]..."
-
-msgid "hg sigcheck REVISION"
-msgstr "hg sigcheck REVISION"
-
-msgid "hg sigs"
-msgstr "hg sigs"
-
 msgid "command to view revision graphs from a shell"
 msgstr "Befehl zum Anzeigen eines Revisionsgraphs auf dem Terminal"
 
@@ -2836,30 +3249,11 @@
 "ASCII-Darstellung des Änderungsgraphen angezeigt.\n"
 
 #, python-format
-msgid "--graph option is incompatible with --%s"
-msgstr "Option --graph ist inkompatibel mit --%s"
-
-msgid "show revision history alongside an ASCII revision graph"
-msgstr "Zeigt die Revisionshistorie zusammen mit einem ASCII Revisionsgraphen"
-
-msgid ""
-"    Print a revision history alongside a revision graph drawn with\n"
-"    ASCII characters."
-msgstr "    Zeigt die Revisionshistorie und zusammen mit einem ASCII-Graphen."
-
-msgid ""
-"    Nodes printed as an @ character are parents of the working\n"
-"    directory.\n"
-"    "
-msgstr ""
-"    Das @-Zeichen kennzeichnet die Vorgänger des Arbeitsverzeichnisses.\n"
-"    "
-
-msgid "--graph option allows at most one file"
-msgstr ""
-
-msgid "show the revision DAG"
-msgstr "Zeigt den Revisions-DAG"
+msgid "-G/--graph option is incompatible with --%s"
+msgstr "Option -G/--graph ist inkompatibel zu --%s"
+
+msgid "-G/--graph option is incompatible with --follow with file argument"
+msgstr "Option -G/--graph ist inkompatibel zu --follow mit Dateiparameter"
 
 msgid "NUM"
 msgstr "NUM"
@@ -2876,6 +3270,25 @@
 msgid "hg glog [OPTION]... [FILE]"
 msgstr "hg glog [OPTION]... [DATEI]"
 
+msgid "show revision history alongside an ASCII revision graph"
+msgstr "Zeigt die Revisionshistorie zusammen mit einem ASCII Revisionsgraphen"
+
+msgid ""
+"    Print a revision history alongside a revision graph drawn with\n"
+"    ASCII characters."
+msgstr "    Zeigt die Revisionshistorie und einen ASCII-Graphen an."
+
+msgid ""
+"    Nodes printed as an @ character are parents of the working\n"
+"    directory.\n"
+"    "
+msgstr ""
+"    Das @-Zeichen kennzeichnet die Vorgänger des Arbeitsverzeichnisses.\n"
+"    "
+
+msgid "show the revision DAG"
+msgstr "Zeigt den Revisions-DAG"
+
 msgid "hooks for integrating with the CIA.vc notification service"
 msgstr "Hooks zur Integration mit dem CIA.cv-Benachrichtigungsdienst"
 
@@ -2898,7 +3311,7 @@
 "  # Append a diffstat to the log message (optional)\n"
 "  #diffstat = False\n"
 "  # Template to use for log messages (optional)\n"
-"  #template = {desc}\\n{baseurl}/rev/{node}-- {diffstat}\n"
+"  #template = {desc}\\n{baseurl}{webroot}/rev/{node}-- {diffstat}\n"
 "  # Style to use (optional)\n"
 "  #style = foo\n"
 "  # The URL of the CIA notification service (optional)\n"
@@ -2907,7 +3320,9 @@
 "  # Make sure to set email.from if you do this.\n"
 "  #url = http://cia.vc/\n"
 "  # print message instead of sending it (optional)\n"
-"  #test = False"
+"  #test = False\n"
+"  # number of slashes to strip for url paths\n"
+"  #strip = 0"
 msgstr ""
 "  [cia]\n"
 "  # Ihr registrierter CIA-Benutzername\n"
@@ -2920,7 +3335,7 @@
 "  # (optional)\n"
 "  #diffstat = False\n"
 "  # Vorlage für die Commit-Nachrichten (optional)\n"
-"  #template = {desc}\\n{baseurl}/rev/{node}-- {diffstat}\n"
+"  #template = {desc}\\n{baseurl}{webroot}/rev/{node}-- {diffstat}\n"
 "  # zu verwendender Stil (optional)\n"
 "  #style = foo\n"
 "  # Die URL des CIA Benachrichtigungsdienstes (optional)\n"
@@ -2930,7 +3345,9 @@
 "  # wenn Sie dies tun.\n"
 "  #url = http://cia.vc/\n"
 "  # Nachrichten ausgeben statt sie zu senden (optional)\n"
-"  #test = False"
+"  #test = False\n"
+"  # Anzahl von Verzeichnissen, die von URL-Pfaden entfernt werden sollen\n"
+"  #strip = 0"
 
 msgid ""
 "  [hooks]\n"
@@ -3028,7 +3445,7 @@
 "auszuführen.\n"
 
 msgid "diff trees from two commits"
-msgstr "Vergleicht (Teil)bäume von zwei Commits"
+msgstr "Vergleicht (Teil)bäume von zwei Revisionen"
 
 msgid "output common ancestor information"
 msgstr "gibt Informationen über gemeinsame Vorfahren aus"
@@ -3087,6 +3504,7 @@
 msgid "hg debug-merge-base REV REV"
 msgstr "hg debug-merge-base REV REV"
 
+#. i18n: bisect changeset status
 msgid "ignored"
 msgstr "ignoriert"
 
@@ -3251,7 +3669,7 @@
 
 #, python-format
 msgid "filesystem containing %s was unmounted\n"
-msgstr "Dateisystem, das %s enthielt, wurde ausgehangen\n"
+msgstr "Dateisystem, das %s enthielt, wurde ausgehängt\n"
 
 #, python-format
 msgid "%s readable: %d bytes\n"
@@ -3259,7 +3677,7 @@
 
 #, python-format
 msgid "%s below threshold - unhooking\n"
-msgstr "%s unterhalb der Grenze - aushängen\n"
+msgstr "%s unterhalb der Grenze - hänge aus\n"
 
 #, python-format
 msgid "%s reading %d events\n"
@@ -3405,7 +3823,7 @@
 "   The more specific you are in your filename patterns the less you\n"
 "   lose speed in huge repositories."
 msgstr ""
-".. HINWEIS::\n"
+".. note::\n"
 "   Je genauer die Muster für Dateinamen sind, desto weniger\n"
 "   Geschwindigkeit geht in großen Projektarchiven verloren."
 
@@ -3418,18 +3836,18 @@
 "sowie die Einstellungen, führen Sie :hg:`kwdemo` aus. Siehe auch\n"
 ":hg:`templates` für eine Liste verfügbarer Vorlagen und Filter."
 
-msgid "Three additional date template filters are provided::"
+msgid "Three additional date template filters are provided:"
 msgstr ""
 "Drei weitere Filter für Datumsangaben in Vorlagen werden bereitgestellt:"
 
 msgid ""
-"    utcdate      \"2006/09/18 15:13:13\"\n"
-"    svnutcdate   \"2006-09-18 15:13:13Z\"\n"
-"    svnisodate   \"2006-09-18 08:13:13 -700 (Mon, 18 Sep 2006)\""
-msgstr ""
-"    utcdate      \"2006/09/18 15:13:13\"\n"
-"    svnutcdate   \"2006-09-18 15:13:13Z\"\n"
-"    svnisodate   \"2006-09-18 08:13:13 -700 (Mon, 18 Sep 2006)\""
+":``utcdate``:    \"2006/09/18 15:13:13\"\n"
+":``svnutcdate``: \"2006-09-18 15:13:13Z\"\n"
+":``svnisodate``: \"2006-09-18 08:13:13 -700 (Mon, 18 Sep 2006)\""
+msgstr ""
+":``utcdate``:    \"2006/09/18 15:13:13\"\n"
+":``svnutcdate``: \"2006-09-18 15:13:13Z\"\n"
+":``svnisodate``: \"2006-09-18 08:13:13 -700 (Mon, 18 Sep 2006)\""
 
 msgid ""
 "The default template mappings (view with :hg:`kwdemo -d`) can be\n"
@@ -3480,6 +3898,15 @@
 msgid "no [keyword] patterns configured"
 msgstr "Keine [keyword]-Muster konfiguriert"
 
+msgid "show default keyword template maps"
+msgstr "Zeigt die Standard-Vorlagenzuweisungen"
+
+msgid "read maps from rcfile"
+msgstr "Liest die Zuweisungen aus der rcfile-Datei"
+
+msgid "hg kwdemo [-d] [-f RCFILE] [TEMPLATEMAP]..."
+msgstr "hg kwdemo [-d] [-f RCDATEI] [VORLAGENZUWEISUNGEN]..."
+
 msgid "print [keywordmaps] configuration and an expansion example"
 msgstr "Gibt [keywordmaps]-Einstellungen und ein Ersetzungsbeispiel aus"
 
@@ -3544,7 +3971,6 @@
 "\n"
 "\tKonfiguration mittels der standard csv keywordset\n"
 
-
 msgid "\tdisabling current template maps\n"
 msgstr "\tdeaktiviert die aktuellen Vorlagen-Zuweisungen\n"
 
@@ -3573,6 +3999,9 @@
 "\n"
 "\tersetzte Platzhalter\n"
 
+msgid "hg kwexpand [OPTION]... [FILE]..."
+msgstr "hg kwexpand [OPTION]... [DATEI]..."
+
 msgid "expand keywords in the working directory"
 msgstr "Ersetzt Platzhalter in der Arbeitskopie"
 
@@ -3587,6 +4016,18 @@
 "    lokale Änderungen enthalten.\n"
 "    "
 
+msgid "show keyword status flags of all files"
+msgstr "Zeigt den Ersetzungsstatus aller Dateien"
+
+msgid "show files excluded from expansion"
+msgstr "Zeigt Dateien, die von den Mustern ausgeschlossen werden"
+
+msgid "only show unknown (not tracked) files"
+msgstr "Zeigt nur unbekannte (nicht überwachte) Dateien"
+
+msgid "hg kwfiles [OPTION]... [FILE]..."
+msgstr "hg kwfiles [OPTION]... [DATEI]..."
+
 msgid "show files configured for keyword expansion"
 msgstr "Zeigt die für die Ersetzung konfigurierten Dateien"
 
@@ -3633,6 +4074,9 @@
 "      i = ignoriert (nicht versioniert)\n"
 "    "
 
+msgid "hg kwshrink [OPTION]... [FILE]..."
+msgstr "hg kwshrink [OPTION]... [DATEI]..."
+
 msgid "revert expanded keywords in the working directory"
 msgstr "Nimmt Ersetzungen im aktuellen Arbeitsverzeichnis wieder zurück"
 
@@ -3648,32 +4092,478 @@
 "    lokale Änderungen enthalten.\n"
 "    "
 
-msgid "show default keyword template maps"
-msgstr "Zeigt die Standard-Vorlagenzuweisungen"
-
-msgid "read maps from rcfile"
-msgstr "Liest die Zuweisungen aus der rcfile-Datei"
-
-msgid "hg kwdemo [-d] [-f RCFILE] [TEMPLATEMAP]..."
-msgstr "hg kwdemo [-d] [-f RCDATEI] [VORLAGENZUWEISUNGEN]..."
-
-msgid "hg kwexpand [OPTION]... [FILE]..."
-msgstr "hg kwexpand [OPTION]... [DATEI]..."
-
-msgid "show keyword status flags of all files"
-msgstr "Zeigt den Ersetzungsstatus aller Dateien"
-
-msgid "show files excluded from expansion"
-msgstr "Zeigt Dateien, die von den Mustern ausgeschlossen werden"
-
-msgid "only show unknown (not tracked) files"
-msgstr "Zeigt nur unbekannte (nicht überwachte) Dateien"
-
-msgid "hg kwfiles [OPTION]... [FILE]..."
-msgstr "hg kwfiles [OPTION]... [DATEI]..."
-
-msgid "hg kwshrink [OPTION]... [FILE]..."
-msgstr "hg kwshrink [OPTION]... [DATEI]..."
+msgid "track large binary files"
+msgstr "versioniere auch grosse Binärdateien"
+
+msgid ""
+"Large binary files tend to be not very compressible, not very\n"
+"diffable, and not at all mergeable. Such files are not handled\n"
+"efficiently by Mercurial's storage format (revlog), which is based on\n"
+"compressed binary deltas; storing large binary files as regular\n"
+"Mercurial files wastes bandwidth and disk space and increases\n"
+"Mercurial's memory usage. The largefiles extension addresses these\n"
+"problems by adding a centralized client-server layer on top of\n"
+"Mercurial: largefiles live in a *central store* out on the network\n"
+"somewhere, and you only fetch the revisions that you need when you\n"
+"need them."
+msgstr ""
+"Grosse Binärdateien sind für gewöhnlich schlecht komprimierbar, Änderungen\n"
+"können nicht verständlich angezeigt werden und automatische Zusammenführung\n"
+"ist unmöglich. Derartige Dateien können von Mercurials Speicherformat\n"
+"'revlog' nicht effizient gehandhabt werden, da es auf komprimierten bin-\n"
+"deltas basiert. Grosse Binärdateien als reguläre Dateien zu versionieren\n"
+"verschwendet Bandbreite, Speicherplatz und erhöht den Hauptspeicher-\n"
+"verbrauch. Die Erweiterung 'largefiles' versucht dies einzudämmen, indem\n"
+"sie ein zusätzliches *zentrales Lager* für diese Binärriesen (irgendwo\n"
+"im Netzwerk) einrichtet. Für jede Arbeitskopie werden dann nur die\n"
+"benötigten Revisionen abgerufen."
+
+msgid ""
+"largefiles works by maintaining a \"standin file\" in .hglf/ for each\n"
+"largefile. The standins are small (41 bytes: an SHA-1 hash plus\n"
+"newline) and are tracked by Mercurial. Largefile revisions are\n"
+"identified by the SHA-1 hash of their contents, which is written to\n"
+"the standin. largefiles uses that revision ID to get/put largefile\n"
+"revisions from/to the central store. This saves both disk space and\n"
+"bandwidth, since you don't need to retrieve all historical revisions\n"
+"of large files when you clone or pull."
+msgstr ""
+"Dies funktioniert, indem für jeden Binärriesen ein kleiner Stellvertreter\n"
+"in .hglf/ regulär von Mercurial überwacht wird. Diese Dateien enthalten\n"
+"nur 41 Bytes: eine SHA-1 Prüfsumme und ein Zeilenumsprung. Die Revision\n"
+"der Binärdatei wird durch die Prüfsumme identifiziert, so dass die\n"
+"eigentliche Datei von der Erweiterung aus dem zentralen Lager abgerufen\n"
+"bzw. hinein übertragen werden kann. Damit wird sowohl Speicherplatz als\n"
+"auch Bandbreite gespart, da clone- and pull-Operationen nicht die ganze\n"
+"Historie der Änderungen übertragen müssen."
+
+msgid ""
+"To start a new repository or add new large binary files, just add\n"
+"--large to your :hg:`add` command. For example::"
+msgstr ""
+"Um ein neues Archiv zu starten, oder einen neuen Binärriesen hinzuzufügen,\n"
+"wird einfach :hg:`add --large` angegeben. Zum Beispiel::"
+
+msgid ""
+"  $ dd if=/dev/urandom of=randomdata count=2000\n"
+"  $ hg add --large randomdata\n"
+"  $ hg commit -m 'add randomdata as a largefile'"
+msgstr ""
+"  $ dd if=/dev/urandom of=binaerchaos count=2000\n"
+"  $ hg add --large binaerchaos\n"
+"  $ hg commit -m 'Füge binaerchaos als Binärriese hinzu'"
+
+msgid ""
+"When you push a changeset that adds/modifies largefiles to a remote\n"
+"repository, its largefile revisions will be uploaded along with it.\n"
+"Note that the remote Mercurial must also have the largefiles extension\n"
+"enabled for this to work."
+msgstr ""
+"Wird ein Änderungssatz, welcher einen Binärriesen ändert oder hinzufügt,\n"
+"in ein entferntes Archiv übertragen, so werden auch die Revisionen der\n"
+"Binärdatei übertragen. Das entfernte Mercurial muss hierfür die\n"
+"largefiles-Erweiterung unterstützen."
+
+msgid ""
+"When you pull a changeset that affects largefiles from a remote\n"
+"repository, Mercurial behaves as normal. However, when you update to\n"
+"such a revision, any largefiles needed by that revision are downloaded\n"
+"and cached (if they have never been downloaded before). This means\n"
+"that network access may be required to update to changesets you have\n"
+"not previously updated to."
+msgstr ""
+"Wird ein Änderungssatz, der Binärriesen betrifft, von einem entfernten\n"
+"Archiv abgerufen, verhält sich Mercurial zunächst normal. Erst wenn das\n"
+"Arbeitsverzeichnis auf eine Revision aktualisiert wird, die eine solche\n"
+"Datei enthält, wird die Binärdatei heruntergeladen. Durch permanente\n"
+"Zwischenspeicherung jeder Revision wird wiederholtes Herunterladen "
+"verhindert.\n"
+"Das bedeutet allerdings, dass zum Zeitpunkt der Aktualisierung auf eine\n"
+"bisher unbekannte Revision, Netzwerkzugriff möglich sein muss."
+
+msgid ""
+"If you already have large files tracked by Mercurial without the\n"
+"largefiles extension, you will need to convert your repository in\n"
+"order to benefit from largefiles. This is done with the\n"
+":hg:`lfconvert` command::"
+msgstr ""
+"Falls ein Archiv bereits grosse Binärdateien regulär (ohne die Erweiterung)\n"
+"versioniert, muss es zunächst konvertiert werden, um die Vorteile von\n"
+"largefiles zu nutzen. Dies geschieht duch den :hg:`lfconvert` Befehl."
+
+msgid "  $ hg lfconvert --size 10 oldrepo newrepo"
+msgstr "  $ hg lfconvert --size 10 altes-archiv neues-archiv"
+
+msgid ""
+"In repositories that already have largefiles in them, any new file\n"
+"over 10MB will automatically be added as a largefile. To change this\n"
+"threshold, set ``largefiles.minsize`` in your Mercurial config file\n"
+"to the minimum size in megabytes to track as a largefile, or use the\n"
+"--lfsize option to the add command (also in megabytes)::"
+msgstr ""
+"Ein derart konvertiertes Archiv wird neue Dateien, die über 10MB gross sind\n"
+"automatisch als Binärriesen handhaben. Diese Grenze kann entweder mit\n"
+"``largefiles.minsize`` in der Konfigurationsdatei oder der --lfsize Option\n"
+"des 'add'-Befehls geändert werden (Angabe in MB)::"
+
+msgid ""
+"  [largefiles]\n"
+"  minsize = 2"
+msgstr ""
+"  [largefiles]\n"
+"  minsize = 2"
+
+msgid "  $ hg add --lfsize 2"
+msgstr "  $ hg add --lfsize 2"
+
+msgid ""
+"The ``largefiles.patterns`` config option allows you to specify a list\n"
+"of filename patterns (see :hg:`help patterns`) that should always be\n"
+"tracked as largefiles::"
+msgstr ""
+"Mit der Konfigurationsoption ``largefiles.patterns`` kann man Dateimuster\n"
+"angeben (siehe :hg:`help patterns`), die bestimmen, welche Dateien als\n"
+"Binärriesen gehandhabt werden sollen::"
+
+msgid ""
+"  [largefiles]\n"
+"  patterns =\n"
+"    *.jpg\n"
+"    re:.*\\.(png|bmp)$\n"
+"    library.zip\n"
+"    content/audio/*"
+msgstr ""
+"  [largefiles]\n"
+"  patterns =\n"
+"    *.jpg\n"
+"    re:.*\\.(png|bmp)$\n"
+"    library.zip\n"
+"    content/audio/*"
+
+msgid ""
+"Files that match one of these patterns will be added as largefiles\n"
+"regardless of their size.\n"
+msgstr ""
+"Dateien, die auf ein solches Muster passen, werden unabhängig von ihrer\n"
+"Größe als Binärriesen hinzugefügt.\n"
+
+msgid "convert a normal repository to a largefiles repository"
+msgstr "Konvertiert ein normales Archiv in ein Archiv mit Binärriesen"
+
+msgid ""
+"    Convert repository SOURCE to a new repository DEST, identical to\n"
+"    SOURCE except that certain files will be converted as largefiles:\n"
+"    specifically, any file that matches any PATTERN *or* whose size is\n"
+"    above the minimum size threshold is converted as a largefile. The\n"
+"    size used to determine whether or not to track a file as a\n"
+"    largefile is the size of the first version of the file. The\n"
+"    minimum size can be specified either with --size or in\n"
+"    configuration as ``largefiles.size``."
+msgstr ""
+"    Konvertiert das Archiv QUELLE in ein neues Archiv ZIEL, welches sich\n"
+"    nur dadurch unterscheidet, dass gewisse Dateien als Binärriesen\n"
+"    behandlet werden. Genauer sind es die, die auf ein MUSTER passen,\n"
+"    *oder* deren Größe die konfigurierte Grenze überschreitet. Die Größe,\n"
+"    welche zur Entscheidung verwendet wird, ist die zur Zeit des ersten\n"
+"    Hinzufügens der Datei (ob die Datei in späteren Revisionen größer wird\n"
+"    wird nicht geprüft). Der Grenzwert wird mit --size oder dem\n"
+"    Konfigurationseintrag ``largefiles.size`` (je in MB) definiert."
+
+msgid ""
+"    After running this command you will need to make sure that\n"
+"    largefiles is enabled anywhere you intend to push the new\n"
+"    repository."
+msgstr ""
+"    Nach der Ausführung dieses Befehls muss sichergestellt werden, dass die\n"
+"    Erweiterung largefiles in allen entfernten Archiven, mit denen die\n"
+"    Änderungen synchonisiert werden, aktiv ist."
+
+msgid ""
+"    Use --to-normal to convert largefiles back to normal files; after\n"
+"    this, the DEST repository can be used without largefiles at all."
+msgstr ""
+"    Verwende --to-normal um die Konversion in Binärriesen rückgängig zu\n"
+"    machen. Danach kann ZIEL völlig ohne Binärriesen verwendet werden."
+
+msgid "getting largefiles"
+msgstr "Hole Binärriesen"
+
+#, python-format
+msgid "getting %s:%s\n"
+msgstr "Hole %s:%s\n"
+
+#, python-format
+msgid "%s: data corruption (expected %s, got %s)\n"
+msgstr "%s: Beschädigte Daten (erwartete %s, erhielt %s)\n"
+
+#, python-format
+msgid "searching %d changesets for largefiles\n"
+msgstr "Durchsuche %d Änderungssätze nach Binärriesen\n"
+
+#, python-format
+msgid "verified contents of %d revisions of %d largefiles\n"
+msgstr "Inhalt von %d Revisionen von %d Binärriesen verifiziert\n"
+
+#, python-format
+msgid "verified existence of %d revisions of %d largefiles\n"
+msgstr "Existenz von %d Revisionen von %d Binärriesen verifiziert\n"
+
+#, python-format
+msgid "unsupported URL scheme %r"
+msgstr "Nicht unterstütztes URL-Schema %r"
+
+#, python-format
+msgid "%s does not appear to be a largefile store"
+msgstr "%s scheint kein Lager für Binärriesen zu sein"
+
+#, python-format
+msgid "%s is not a local Mercurial repo"
+msgstr "%s ist kein lokales Mercurial-Projektarchiv"
+
+#, python-format
+msgid "initializing destination %s\n"
+msgstr "Initialisiere Ziel %s\n"
+
+msgid "converting revisions"
+msgstr "Konvertiere Revisionen"
+
+#, python-format
+msgid "renamed/copied largefile %s becomes symlink"
+msgstr "Umbenannter/kopierter Binärriese %s wird ein symbolischer Verweis"
+
+#, python-format
+msgid "largefile %s becomes symlink"
+msgstr "Binärriese %s wird ein symbolischer Verweis"
+
+msgid "uploading largefiles"
+msgstr "Lade Binärriesen hoch"
+
+#, python-format
+msgid "largefile %s missing from store (needs to be uploaded)"
+msgstr "Binärriese %s fehlt im Lager (muss hochgeladen werden)"
+
+msgid "getting changed largefiles\n"
+msgstr "Lade veränderte Binärriesen herunter\n"
+
+#, python-format
+msgid "%d largefiles updated, %d removed\n"
+msgstr "%d Binärriesen verändert, %d entfernt\n"
+
+msgid "minimum size (MB) for files to be converted as largefiles"
+msgstr ""
+"Minimale Dateigröße in MB von Dateien, die in Binärriesen konvertiert werden"
+
+msgid "convert from a largefiles repo to a normal repo"
+msgstr "Konvertiert ein Binärriesen-Archiv in ein reguläres Archiv"
+
+msgid "hg lfconvert SOURCE DEST [FILE ...]"
+msgstr "hg lfconvert QUELLE ZIEL [DATEI ...]"
+
+#, python-format
+msgid "largefiles: size must be number (not %s)\n"
+msgstr "largefiles: Dateigröße muss eine Zahl sein (nicht %s)\n"
+
+msgid "minimum size for largefiles must be specified"
+msgstr "Grenzgröße für Binärriesen muss angegeben werden"
+
+#, python-format
+msgid "unknown operating system: %s\n"
+msgstr "Unbekanntes Betriebssytem: %s\n"
+
+#, python-format
+msgid "Found %s in store\n"
+msgstr "%s im Lager gefunden\n"
+
+#, python-format
+msgid "Found %s in system cache\n"
+msgstr "%s im Zwischenspeicher gefunden\n"
+
+#, python-format
+msgid "bad hash in '%s' (only %d bytes long)"
+msgstr "Prüfsummenfehler in '%s' (nur %d Bytes lang)"
+
+msgid "Can't get file locally"
+msgstr "Kann Datei nicht lokal abrufen"
+
+#, python-format
+msgid ""
+"changeset %s: %s missing\n"
+"  (looked for hash %s)\n"
+msgstr ""
+"Änderungssatz %s: %s fehlt\n"
+"  (Prüfsumme %s)\n"
+
+#, python-format
+msgid ""
+"changeset %s: %s: contents differ\n"
+"  (%s:\n"
+"  expected hash %s,\n"
+"  but got %s)\n"
+msgstr ""
+"Änderungssatz %s: %s: verschiedene Inhalte\n"
+"  (%s:\n"
+"  erwartete Prüfsumme %s,\n"
+"  tatsächlich %s)\n"
+
+#, python-format
+msgid "%s already a largefile\n"
+msgstr "%s ist bereits ein Binärriese\n"
+
+#, python-format
+msgid "adding %s as a largefile\n"
+msgstr "Füge %s als Binärriese hinzu\n"
+
+msgid "no files specified"
+msgstr "Keine Dateien angegeben"
+
+#, python-format
+msgid "not removing %s: %s (use -f to force removal)\n"
+msgstr "Entferne nicht %s: %s (Nutze -f um Entfernung zu erzwingen)\n"
+
+msgid "file still exists"
+msgstr "Datei existiert noch"
+
+msgid "file is modified"
+msgstr "Datei ist modifiziert"
+
+msgid "file has been marked for add"
+msgstr "Datei ist als hinzuzufügen markiert"
+
+#, python-format
+msgid "removing %s\n"
+msgstr "Entferne %s\n"
+
+msgid "uncommitted local changes"
+msgstr "Ausstehende nicht versionierte Änderungen"
+
+#, python-format
+msgid "merging %s and %s to %s\n"
+msgstr "Führe %s und %s zusammen zu %s\n"
+
+#, python-format
+msgid "merging %s\n"
+msgstr "Führe %s zusammen\n"
+
+#, python-format
+msgid ""
+"largefile %s has a merge conflict\n"
+"keep (l)ocal or take (o)ther?"
+msgstr ""
+"Zusammenführung führt zu Konflikt im Binärriesen %s\n"
+"(l)okale Version, oder (a)ndere verwenden?"
+
+msgid "&Local"
+msgstr "&Lokal"
+
+msgid "&Other"
+msgstr "&Andere"
+
+msgid "destination largefile already exists"
+msgstr "Ziel-Binärriese existiert bereits"
+
+msgid "no files to copy"
+msgstr "Keine Dateien zu kopieren"
+
+#, python-format
+msgid "unknown archive type '%s'"
+msgstr "Unbekannter Archivtyp '%s'"
+
+msgid "cannot give prefix when archiving to files"
+msgstr "Bei Archivierung in Dateien kann kein Präfix angegeben werden"
+
+#, python-format
+msgid "not removing %s: file is already untracked\n"
+msgstr "Entferne %s nicht: Datei ist nicht versioniert\n"
+
+msgid "largefiles: No remote repo\n"
+msgstr "largefiles: Kein entferntes Archiv\n"
+
+msgid "largefiles to upload:\n"
+msgstr "Hochzuladende Binärriesen:\n"
+
+#, python-format
+msgid "largefiles: %d to upload\n"
+msgstr "largefiles: %d hochzuladen\n"
+
+msgid "addremove cannot be run on a repo with largefiles"
+msgstr ""
+"'addremove' kann nicht auf ein Archiv mit Binärriesen angewendet werden"
+
+#, python-format
+msgid "largefiles: failed to put %s (%s) into store: %s"
+msgstr "largefiles: Konnte %s (%s) nicht in einlagern: %s"
+
+#, python-format
+msgid "requested largefile %s not present in cache"
+msgstr "Angeforderer Binärriese %s ist nicht im Zwischenspeicher"
+
+msgid "putlfile failed:"
+msgstr "putlfile fehlgeschlagen:"
+
+msgid "putlfile failed (unexpected response):"
+msgstr "putlfile fehlgeschlagen (unerwartete Anwort):"
+
+msgid "unexpected response:"
+msgstr "Unerwartete Antwort:"
+
+#, python-format
+msgid "remotestore: could not put %s to remote store %s"
+msgstr "remotestore: Konnte %s nicht ins entfernte Lager %s packen"
+
+#, python-format
+msgid "remotestore: put %s to remote store %s"
+msgstr "remotestore: %s ins entfernte Lager %s gepackt"
+
+#, python-format
+msgid "remotestore: could not open file %s: %s"
+msgstr "remotestore: Konnte Datei %s nicht öffnen: %s"
+
+#, python-format
+msgid "remotestore: largefile %s is invalid"
+msgstr "remotestore: Binärriese %s ist ungültig"
+
+#, python-format
+msgid "remotestore: largefile %s is missing"
+msgstr "remotestore: Binärriese %s fehlt"
+
+#, python-format
+msgid "changeset %s: %s: contents differ\n"
+msgstr "Änderungssatz %s: %s: Unterschiedliche Inhalte\n"
+
+#, python-format
+msgid "changeset %s: %s missing\n"
+msgstr "Änderungssatz %s: %s fehlt\n"
+
+#, python-format
+msgid ""
+"largefiles: repo method %r appears to have already been wrapped by another "
+"extension: largefiles may behave incorrectly\n"
+msgstr ""
+"largefiles: Aktion %r scheint bereits von einer anderen Erweiterung verändert zu sein. Dadurch kann es zu Fehlern in largefiles kommen\n"
+
+#, python-format
+msgid "file \"%s\" is a largefile standin"
+msgstr "Datei  \"%s\" ist Stellvertreter für einen Binärriesen"
+
+msgid "add as largefile"
+msgstr "Füge als Binärriese hinzu"
+
+msgid ""
+"add all files above this size (in megabytes) as largefiles (default: 10)"
+msgstr ""
+"Größe in MB ab der Dateien als Binärriesen hinzugefügt werden (Standard: 10)"
+
+msgid "verify largefiles"
+msgstr "Verifiziere Binärriesen"
+
+msgid "verify all revisions of largefiles not just current"
+msgstr "Verifiziere alle Revisionen der Binärriesen, nicht nur die aktuelle"
+
+msgid "verify largefile contents not just existence"
+msgstr "Verifiziere Inhalte der Binärriesen und nicht nur die Existenz"
+
+msgid "display outgoing largefiles"
+msgstr "Zeigt zu übertragende Binärriesen an"
 
 msgid "manage a stack of patches"
 msgstr "Verwaltet einen Stapel von Patches"
@@ -3758,6 +4648,9 @@
 "Sie\n"
 "können andere, unabhängige Warteschlangen mit :hg:`qqueue` erzeugen.\n"
 
+msgid "print first line of patch header"
+msgstr "Gibt die erste Zeile eines Patch-Kopfes aus"
+
 #, python-format
 msgid "malformated mq status line: %s\n"
 msgstr "fehlerhafte mq Statuszeile: %s\n"
@@ -3798,12 +4691,12 @@
 msgstr "Erlaube %s - von keinem Wächter abgelehnt\n"
 
 #, python-format
-msgid "allowing %s - guarded by %r\n"
-msgstr "Erlaube %s - bewacht durch %r\n"
-
-#, python-format
-msgid "skipping %s - guarded by %r\n"
-msgstr "Überspringe %s - bewacht durch %r\n"
+msgid "allowing %s - guarded by %s\n"
+msgstr "Erlaube %s - bewacht durch %s\n"
+
+#, python-format
+msgid "skipping %s - guarded by %s\n"
+msgstr "Überspringe %s - bewacht durch %s\n"
 
 #, python-format
 msgid "skipping %s - no matching guards\n"
@@ -3855,7 +4748,6 @@
 msgid "patch %s is empty\n"
 msgstr "Patch %s ist leer\n"
 
-#, fuzzy
 msgid "repository commit failed"
 msgstr "Übernahme der Änderungen schlug fehl"
 
@@ -3866,6 +4758,14 @@
 msgstr "Unschärfe bei Anwendung des Patches gefunden - breche ab\n"
 
 #, python-format
+msgid "revision %s refers to unknown patches: %s\n"
+msgstr "Änderungssatz %s referenziert unbekannte Patche: %s\n"
+
+#, python-format
+msgid "unknown patches: %s\n"
+msgstr "Unbekannte Patche: %s\n"
+
+#, python-format
 msgid "revision %d is not managed"
 msgstr "Revision %d steht nicht unter Versionskontrolle"
 
@@ -3909,8 +4809,16 @@
 msgstr "\"%s\" kann nicht als Patchname verwendet werden"
 
 #, python-format
+msgid "patch name cannot begin with \"%s\""
+msgstr "Patchname darf nicht mit \"%s\" anfangen"
+
+#, python-format
+msgid "\"%s\" cannot be used in the name of a patch"
+msgstr "\"%s\" kann nicht in einem Patchnamen verwendet werden"
+
+#, python-format
 msgid "\"%s\" already exists as a directory"
-msgstr "\"%s\" existiert bereits"
+msgstr "\"%s\" existiert bereits als Verzeichnis"
 
 #, python-format
 msgid "patch \"%s\" already exists"
@@ -3950,8 +4858,8 @@
 msgstr "Kann Änderungen nicht in einen vorherigen Patch übertragen: %s"
 
 #, python-format
-msgid "guarded by %r"
-msgstr "bewacht durch %r"
+msgid "guarded by %s"
+msgstr "bewacht durch %s"
 
 msgid "no matching guards"
 msgstr "keine passenden Wächter"
@@ -4058,9 +4966,8 @@
 msgid "saved queue repository parents: %s %s\n"
 msgstr "Eltern der gespeicherten Reihe: %s %s\n"
 
-#, fuzzy
 msgid "updating queue directory\n"
-msgstr "Aktualisiere Arbeitsverzeichnis\n"
+msgstr "Aktualisiere Patchreihenverzeichnis\n"
 
 msgid "Unable to load queue repository\n"
 msgstr "Archiv für Patch-Reihen kann nicht geladen werden\n"
@@ -4123,7 +5030,7 @@
 msgstr "Benenne %s in %s um\n"
 
 msgid "need --name to import a patch from -"
-msgstr "Option --name muss beim Import via stdin angegeben werden"
+msgstr "Beim Import von der Standardeingabe muss die Option --name angegeben werden"
 
 #, python-format
 msgid "unable to read file %s"
@@ -4133,6 +5040,15 @@
 msgid "adding %s to series file\n"
 msgstr "Füge %s zur Seriendatei hinzu\n"
 
+msgid "keep patch file"
+msgstr "Behält die Patchdatei bei"
+
+msgid "stop managing a revision (DEPRECATED)"
+msgstr "Hört auf, eine Revision zu verwalten (VERALTET)"
+
+msgid "hg qdelete [-k] [PATCH]..."
+msgstr "hg qdelete [-k] [PATCH]..."
+
 msgid "remove patches from queue"
 msgstr "Entfernt Patches aus der Patch-Reihe"
 
@@ -4151,6 +5067,12 @@
 "    Um die Entwicklung eines Patches zu beenden und ihn in die permanente\n"
 "    Historie zu legen, verwenden Sie :hg:`qfinish`."
 
+msgid "show only the last patch"
+msgstr "Zeigt nur den letzten Patch"
+
+msgid "hg qapplied [-1] [-s] [PATCH]"
+msgstr "hg qapplied [-1] [-s] [PATCH]"
+
 msgid "print the patches already applied"
 msgstr "Zeigt die bereits angewendeten Patches an"
 
@@ -4160,12 +5082,42 @@
 msgid "only one patch applied\n"
 msgstr "Nur ein Patch angewendet\n"
 
+msgid "show only the first patch"
+msgstr "Zeigt nur den ersten Patch"
+
+msgid "hg qunapplied [-1] [-s] [PATCH]"
+msgstr "hg qunapplied [-1] [-s] [PATCH]"
+
 msgid "print the patches not yet applied"
 msgstr "Zweigt die noch nicht angewendeten Patches an"
 
 msgid "all patches applied\n"
 msgstr "Alle Patches angewendet\n"
 
+msgid "import file in patch directory"
+msgstr "Import eine Datei in das Patchverzeichnis"
+
+msgid "NAME"
+msgstr "NAME"
+
+msgid "name of patch file"
+msgstr "Name der Patchdatei"
+
+msgid "overwrite existing files"
+msgstr "Überschreibt bestehende Dateien"
+
+msgid "place existing revisions under mq control"
+msgstr "Übergibt bestehende Revisionen der Kontrolle von mq"
+
+msgid "use git extended diff format"
+msgstr "Verwende git-erweitertes diff-Format"
+
+msgid "qpush after importing"
+msgstr "Führt qpush nach dem Import aus"
+
+msgid "hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... FILE..."
+msgstr "hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... DATEI..."
+
 msgid "import a patch"
 msgstr "Importiert einen Patch"
 
@@ -4205,14 +5157,16 @@
 "    With -g/--git, patches imported with --rev will use the git diff\n"
 "    format. See the diffs help topic for information on why this is\n"
 "    important for preserving rename/copy information and permission\n"
-"    changes."
+"    changes. Use :hg:`qfinish` to remove changesets from mq control."
 msgstr ""
 "    Ein existierender Änderungssatz kann mit -r/--rev (zum Beispiel\n"
 "    wird qimport --rev tip -n patch die Spitze importieren) unter\n"
 "    Kontrolle von mq gestellt werden. Mit -g/--git werden über --rev\n"
 "    importierte Patches das git-Format benutzen. Siehe auch die Hilfe\n"
-"    von diff für weitere Informationen, warum dies für das Erhalten\n"
-"    von Umbenennen/Kopier-Operationen und Dateirechte wichtig ist."
+"    von diffs für weitere Informationen, warum dies für das Erhalten\n"
+"    von Umbenennen/Kopier-Operationen und Dateirechte wichtig ist.\n"
+"    Verwende :hg:`qfinish` um Änderungssätze der Kontrolle durch mq zu\n"
+"    entziehen."
 
 msgid ""
 "    To import a patch from standard input, pass - as the patch file.\n"
@@ -4226,11 +5180,8 @@
 msgid "    To import an existing patch while renaming it::"
 msgstr "    Um einen existierenden Patch zu importieren und umzubenennen::"
 
-#, fuzzy
 msgid "      hg qimport -e existing-patch -n new-name"
-msgstr ""
-"      hg qimport -e existierender-patch -n neuer-name\n"
-"    "
+msgstr "      hg qimport -e existierender-patch -n neuer-name"
 
 msgid ""
 "    Returns 0 if import succeeded.\n"
@@ -4239,6 +5190,12 @@
 "    Gibt 0 zurück, wenn der Import erfolgreich war.\n"
 "    "
 
+msgid "create queue repository"
+msgstr "Erstellt ein Reihen-Archiv"
+
+msgid "hg qinit [-c]"
+msgstr "hg qinit [-c]"
+
 msgid "init a new queue repository (DEPRECATED)"
 msgstr "Richtet ein neues Archiv für Patch-Reihen ein (VERALTET)"
 
@@ -4264,6 +5221,24 @@
 "    relevanten Befehlen aufgerufen. Statt -c sollte :hg:`init --mq`\n"
 "    verwendet werden."
 
+msgid "use pull protocol to copy metadata"
+msgstr "Nutzt das 'Pull'-Protokoll um Metadaten zu kopieren"
+
+msgid "do not update the new working directories"
+msgstr "Aktualisiert die Arbeitsverzeichnisse nicht"
+
+msgid "use uncompressed transfer (fast over LAN)"
+msgstr "Nutzt unkomprimierte Übertragung (schnell im LAN)"
+
+msgid "REPO"
+msgstr "ARCHIV"
+
+msgid "location of source patch repository"
+msgstr "Ort des Quell-Patcharchivs"
+
+msgid "hg qclone [OPTION]... SOURCE [DEST]"
+msgstr "hg qclone [OPTION]... QUELLE [ZIEL]"
+
 msgid "clone main and patch repository at same time"
 msgstr "Klont gleichzeitig das Haupt- und Patch-Archiv"
 
@@ -4318,6 +5293,9 @@
 msgid "updating destination repository\n"
 msgstr "Aktualisiere Zielarchiv\n"
 
+msgid "hg qcommit [OPTION]... [FILE]..."
+msgstr "hg qcommit [OPTION]... [DATEI]..."
+
 msgid "commit changes in the queue repository (DEPRECATED)"
 msgstr "Speichert Änderungen im Reihen-Archiv (VERALTET)"
 
@@ -4326,18 +5304,54 @@
 "    Dieser Befehl ist veraltet; verwenden Sie stattdessen\n"
 "    :hg:`commit --mq`."
 
+msgid "print patches not in series"
+msgstr "Gibt die Patches aus, die in keiner Serie sind"
+
+msgid "hg qseries [-ms]"
+msgstr "hg qseries [-ms]"
+
 msgid "print the entire series file"
 msgstr "Gibt die ganze Seriendatei aus"
 
+msgid "hg qtop [-s]"
+msgstr "hg qtop [-s]"
+
 msgid "print the name of the current patch"
 msgstr "Gibt den Namen des aktuellen Patches aus"
 
+msgid "hg qnext [-s]"
+msgstr "hg qnext [-s]"
+
 msgid "print the name of the next patch"
 msgstr "Gibt den Namen des nächsten Patches aus"
 
+msgid "hg qprev [-s]"
+msgstr "hg qprev [-s]"
+
 msgid "print the name of the previous patch"
 msgstr "Gibt den Name des vorherigen Patches aus"
 
+msgid "import uncommitted changes (DEPRECATED)"
+msgstr "Importiere ungespeicherte Änderungen (VERALTET)"
+
+msgid "add \"From: <current user>\" to patch"
+msgstr "Fügt \"From: <aktueller Benutzer>\" zum Patch hinzu"
+
+msgid "USER"
+msgstr "BENUTZER"
+
+msgid "add \"From: <USER>\" to patch"
+msgstr "Fügt \"From: <BENUTZER>\" zum Patch hinzu"
+
+msgid "add \"Date: <current date>\" to patch"
+msgstr "Fügt \"Date: <aktuelles Datum>\" zum Patch hinzu"
+
+msgid "add \"Date: <DATE>\" to patch"
+msgstr "Fügt \"Date: <DATUM>\" zum Patch hinzu"
+
+msgid "hg qnew [-e] [-m TEXT] [-l FILE] PATCH [FILE]..."
+msgstr "hg qnew [-e] [-m TEXT] [-l DATEI] PATCH [DATEI]..."
+
 msgid "create a new patch"
 msgstr "Erstellt einen neuen Patch"
 
@@ -4381,20 +5395,16 @@
 "    wird der Kopf des Patches leer und die Versionsmeldung '[mq]: PATCH' "
 "sein."
 
-#, fuzzy
 msgid ""
 "    Use the -g/--git option to keep the patch in the git extended diff\n"
 "    format. Read the diffs help topic for more information on why this\n"
 "    is important for preserving permission changes and copy/rename\n"
 "    information."
 msgstr ""
-"    Verwenden Sie den Schalter -g/--git, um den Patch im erweiterten git-"
-"Format\n"
-"    beizubehalten. Siehe auch die Hilfe von diff für weitere Informationen, "
-"warum\n"
-"    dies für das Erhalten von Umbenennen/Kopier-Operationen und Dateirechte "
-"wichtig\n"
-"    ist."
+"    Verwenden Sie den Schalter -g/--git, um den Patch im erweiterten\n"
+"    git-Format beizubehalten. Siehe auch die Hilfe von diffs für weitere\n"
+"    Informationen, warum dies für das Erhalten von Umbenennen/Kopier-\n"
+"    Operationen und Dateirechte wichtig ist."
 
 msgid ""
 "    Returns 0 on successful creation of a new patch.\n"
@@ -4403,6 +5413,27 @@
 "    Gibt 0 bei einer erfolgreichen Erstellung eines neuen Patches zurück.\n"
 "    "
 
+msgid "refresh only files already in the patch and specified files"
+msgstr "Aktualisiert nur angegebene und bereits in Patches enthaltene Dateien"
+
+msgid "add/update author field in patch with current user"
+msgstr ""
+"Erstellt/aktualisiert das Autor-Feld im Patch mit dem aktuellen Benutzer"
+
+msgid "add/update author field in patch with given user"
+msgstr ""
+"Erstellt/aktualisiert das Autor-Feld im Patch mit dem angegebenen Benutzer"
+
+msgid "add/update date field in patch with current date"
+msgstr "Erstellt/Aktualisiert das Datumsfeld im Patch mit dem aktuellen Datum"
+
+msgid "add/update date field in patch with given date"
+msgstr ""
+"Erstellt/aktualisiert das Datumsfeld im Patch mit dem angegebenen Datum"
+
+msgid "hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FILE] [-s] [FILE]..."
+msgstr "hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l DATEI] [-s] [DATEI]..."
+
 msgid "update the current patch"
 msgstr "Aktualisiert den aktuellen Patch"
 
@@ -4437,7 +5468,7 @@
 "    Wenn -e/--edit angegeben wird, wird Mercurial den konfigurierten Editor\n"
 "    starten, in dem Sie die Versionsmeldung eintragen können. Falls "
 "qrefresh\n"
-"    fehlschlägt, wird eine Sicherungskopie in ``.hg/last-message.txt`` "
+"    fehlschlägt, wird eine Sicherheitskopie in ``.hg/last-message.txt`` "
 "abgelegt."
 
 msgid ""
@@ -4456,6 +5487,9 @@
 msgid "option \"-e\" incompatible with \"-m\" or \"-l\""
 msgstr "Der Schalter \"-e\" ist inkompatibel mit \"-m\" oder \"-l\""
 
+msgid "hg qdiff [OPTION]... [FILE]..."
+msgstr "hg qdiff [OPTION]... [DATEI]..."
+
 msgid "diff of the current patch and subsequent modifications"
 msgstr "Vergleicht den aktuellen Patch mit nachträglichen Änderungen"
 
@@ -4482,8 +5516,16 @@
 "Änderungen\n"
 "    des aktuellen Patches ohne die nachträglichen Änderungen seit dem "
 "letzten\n"
-"    qrefresh sehen möchten.\n"
-"    "
+"    qrefresh sehen möchten."
+
+msgid "edit patch header"
+msgstr "Bearbeitet den Kopf eines Patches"
+
+msgid "keep folded patch files"
+msgstr "Behält zusammengelegte Patches bei"
+
+msgid "hg qfold [-e] [-k] [-m TEXT] [-l FILE] PATCH..."
+msgstr "hg qfold [-e] [-k] [-m TEXT] [-l DATEI] PATCH..."
 
 msgid "fold the named patches into the current patch"
 msgstr "Legt die benannten Patches mit dem aktuellen Patch zusammen"
@@ -4529,10 +5571,25 @@
 msgid "error folding patch %s"
 msgstr "Fehler beim Zusammenlegen des Patches %s"
 
+msgid "overwrite any local changes"
+msgstr "Überschreibt alle lokalen Änderungen"
+
+msgid "hg qgoto [OPTION]... PATCH"
+msgstr "hg qgoto [OPTION]... PATCH"
+
 msgid "push or pop patches until named patch is at top of stack"
 msgstr ""
-"Verschiebt (push/pop) die Patches bis der genannte Patch oben auf dem "
-"Stapel ist"
+"Verschiebt (push/pop) die Patches bis der genannte Patch oben auf dem Stapel "
+"ist"
+
+msgid "list all patches and guards"
+msgstr "Zeigt alle Patches und Wächter an"
+
+msgid "drop all guards"
+msgstr "Entfernt alle Wächter"
+
+msgid "hg qguard [-l] [-n] [PATCH] [-- [+GUARD]... [-GUARD]...]"
+msgstr "hg qguard [-l] [-n] [PATCH] [-- [+WÄCHTER]... [-WÄCHTER]...]"
 
 msgid "set or print guards for a patch"
 msgstr "Setzt einen Wächter oder gibt die Wächter eines Patches aus"
@@ -4566,7 +5623,7 @@
 "       Specifying negative guards now requires '--'."
 msgstr ""
 "    .. note::\n"
-"       Spezifizieren von negativen Guards erfordert jetzt '--'."
+"       Spezifizieren von negativen Wächtern erfordert jetzt '--'."
 
 msgid "    To set guards on another patch::"
 msgstr "    Um die Wächter eines anderen Patches zu setzen::"
@@ -4586,9 +5643,36 @@
 msgid "no patch named %s"
 msgstr "Kein Patch namens %s gefunden"
 
+msgid "hg qheader [PATCH]"
+msgstr "hg qheader [PATCH]"
+
 msgid "print the header of the topmost or specified patch"
 msgstr "Gibt den Kopf des obersten oder angegebenen Patches aus"
 
+msgid "apply on top of local changes"
+msgstr "Wendet Patch über die lokalen Änderungen an"
+
+msgid "apply the target patch to its recorded parent"
+msgstr "Wendet den Ziel-Patch auf dessen aufgezeichneten Vorgänger an"
+
+msgid "list patch name in commit text"
+msgstr "Listet den Patchnamen in der Versionsmeldung auf"
+
+msgid "apply all patches"
+msgstr "Wendet alle Patches an"
+
+msgid "merge from another queue (DEPRECATED)"
+msgstr "Zusammenführung aus einer anderen Patch-Reihe (VERALTET)"
+
+msgid "merge queue name (DEPRECATED)"
+msgstr "Name der Reihe zum Zusammenführen (VERALTET)"
+
+msgid "reorder patch series and apply only the patch"
+msgstr "Sortiert die Patch-Serie neu und wendet nur den Patch an"
+
+msgid "hg qpush [-f] [-l] [-a] [--move] [PATCH | INDEX]"
+msgstr "hg qpush [-f] [-l] [-a] [--move] [PATCH | INDEX]"
+
 msgid "push the next patch onto the stack"
 msgstr "Schiebt den nächsten Patch auf den Stapel"
 
@@ -4597,15 +5681,7 @@
 "    will be lost."
 msgstr ""
 "    Wenn -f/--force angegeben ist, werden alle lokalen Änderungen in den\n"
-"    gepatchten Dateien verlorengehen.\n"
-"    "
-
-msgid ""
-"    Return 0 on succces.\n"
-"    "
-msgstr ""
-"    Gibt 0 bei Erfolg zurück.\n"
-"    "
+"    vom Patch betroffenen Dateien verlorengehen."
 
 msgid "no saved queues found, please use -n\n"
 msgstr "Keine gespeicherten Reihen gefunden, bitte benutze -n\n"
@@ -4614,6 +5690,18 @@
 msgid "merging with queue at: %s\n"
 msgstr "Führe mit Reihe bei %s zusammen\n"
 
+msgid "pop all patches"
+msgstr "Entnimmt (pop) alle Patches"
+
+msgid "queue name to pop (DEPRECATED)"
+msgstr "Name der zu entnehmenden Reihe (VERALTET)"
+
+msgid "forget any local changes to patched files"
+msgstr "Vergisst alle lokalen Änderungen an zu ändernden Dateien"
+
+msgid "hg qpop [-a] [-f] [PATCH | INDEX]"
+msgstr "hg qpop [-a] [-f] [PATCH | INDEX]"
+
 msgid "pop the current patch off the stack"
 msgstr "Holt den aktuellen Patch vom Stapel herunter"
 
@@ -4624,13 +5712,15 @@
 msgstr ""
 "    Standardmäßig wird der oberste Patch vom Stapel genommen. Wenn ein\n"
 "    Patchname angegeben ist, wird solange vom Stapel heruntergenommen, bis\n"
-"    der angegebene Patch der oberste ist.\n"
-"    "
+"    der angegebene Patch der oberste ist."
 
 #, python-format
 msgid "using patch queue: %s\n"
 msgstr "Benutzer Patch-Reihe: %s\n"
 
+msgid "hg qrename PATCH1 [PATCH2]"
+msgstr "hg qrename PATCH1 [PATCH2]"
+
 msgid "rename a patch"
 msgstr "Benennt einen Patch um"
 
@@ -4641,13 +5731,14 @@
 "    Mit einem Argument wird der aktuelle Patch in PATCH1 umbenannt.\n"
 "    Mit zwei Argumenten wird PATCH1 in PATCH2 umbenannt."
 
-#, python-format
-msgid "%s already exists"
-msgstr "%s existiert bereits"
-
-#, python-format
-msgid "A patch named %s already exists in the series file"
-msgstr "Ein Patch namens %s existiert bereits in der Seriendatei"
+msgid "delete save entry"
+msgstr "Löscht Speicher-Eintrag"
+
+msgid "update queue working directory"
+msgstr "Aktualisiert das Arbeitsverzeichnis der Reihe"
+
+msgid "hg qrestore [-d] [-u] REV"
+msgstr "hg qrestore [-d] [-u] REV"
 
 msgid "restore the queue state saved by a revision (DEPRECATED)"
 msgstr ""
@@ -4657,6 +5748,21 @@
 msgstr ""
 "    Dieser Befehl ist veraltet, verwenden Sie stattdessen :hg:`rebase`."
 
+msgid "copy patch directory"
+msgstr "Kopiert das Patchverzeichnis"
+
+msgid "copy directory name"
+msgstr "Kopiert den Verzeichnisnamen"
+
+msgid "clear queue status file"
+msgstr "Löscht die Statusdatei der Reihe"
+
+msgid "force copy"
+msgstr "Erzwingt eine Kopie"
+
+msgid "hg qsave [-m TEXT] [-l FILE] [-c] [-n NAME] [-e] [-f]"
+msgstr "hg qsave [-m TEXT] [-l DATEI] [-c] [-n NAME] [-e] [-f]"
+
 msgid "save current queue state (DEPRECATED)"
 msgstr "Gegenwärtigen Patchstatus speichern (VERALTET)"
 
@@ -4666,23 +5772,56 @@
 
 #, python-format
 msgid "destination %s exists, use -f to force"
-msgstr "Das Ziel %s existiert bereits, verwende -f zum Erzwingen"
+msgstr "Das Ziel %s existiert bereits. Verwende -f zum Erzwingen"
 
 #, python-format
 msgid "copy %s to %s\n"
 msgstr "Kopiert %s nach %s\n"
 
+msgid ""
+"strip specified revision (optional, can specify revisions without this "
+"option)"
+msgstr ""
+"Entfernt die gegebene Revision (optional, da schon die Argumente Revisionen "
+"sind)"
+
+msgid "force removal of changesets, discard uncommitted changes (no backup)"
+msgstr ""
+"erzwingt Entfernung von Änderungssätzen und unversionierten Änderungen\n"
+"(keine Sicherheitskopie)"
+
+msgid ""
+"bundle only changesets with local revision number greater than REV which are "
+"not descendants of REV (DEPRECATED)"
+msgstr ""
+"Bündelt nur Änderungssätze mit einer lokalen Revisionsnummer größer als REV, "
+"die nicht Nachfahren von REV sind (VERALTET)"
+
+msgid "no backups"
+msgstr "Keine Sicherheitskopien"
+
+msgid "no backups (DEPRECATED)"
+msgstr "Keine Sicherheitskopien (VERALTET)"
+
+msgid "do not modify working copy during strip"
+msgstr "ändern Sie nicht die Working Copy während des strip Vorgangs"
+
+msgid "hg strip [-k] [-f] [-n] REV..."
+msgstr "hg strip [-k] [-f] [-n] REV..."
+
 msgid "strip changesets and all their descendants from the repository"
 msgstr "Entfernt Änderungssätze und alle Nachfahren aus dem Projektarchiv"
 
 msgid ""
 "    The strip command removes the specified changesets and all their\n"
-"    descendants. If the working directory has uncommitted changes,\n"
-"    the operation is aborted unless the --force flag is supplied."
+"    descendants. If the working directory has uncommitted changes, the\n"
+"    operation is aborted unless the --force flag is supplied, in which\n"
+"    case changes will be discarded."
 msgstr ""
 "    Der strip-Befehl entfernt die angegebenen Änderungssätze und alle\n"
-"    Nachfahren. Wenn das Arbeitsverzeichnis ungespeicherte Änderungen\n"
-"    hat, wird dieser Vorgang unterbrochen, es sei denn, --force ist gegeben."
+"    Nachfahren. Unversionierte Änderungen im Arbeitsverzeichnis können\n"
+"    durch Angabe von --force verworfen werden, ansonsten unterbrechen sie\n"
+"    diesen Vorgang."
 
 msgid ""
 "    If a parent of the working directory is stripped, then the working\n"
@@ -4715,12 +5854,26 @@
 "    operation completes."
 msgstr ""
 "    Benutzen Sie den Schalter --no-backup, um die Bündel zu entfernen,\n"
-"    wenn die Operation abgeschlossen ist.\n"
-"    "
+"    wenn die Operation abgeschlossen ist."
 
 msgid "empty revision set"
 msgstr "Revisionsmenge ist leer"
 
+msgid "disable all guards"
+msgstr "Deaktiviert alle Wächter"
+
+msgid "list all guards in series file"
+msgstr "Listet alle Wächter in der Seriendatei auf"
+
+msgid "pop to before first guarded applied patch"
+msgstr "Entnimmt Patches bis vor den ersten geschützten angewandten Patch"
+
+msgid "pop, then reapply patches"
+msgstr "Entnimmt Patches und wendet sie dann wieder an"
+
+msgid "hg qselect [OPTION]... [GUARD]..."
+msgstr "hg qselect [OPTION]... [WAECHTER]..."
+
 msgid "set or print guarded patches to push"
 msgstr "Setzt die zu übertragenen bewachten Patches oder gibt sie aus"
 
@@ -4836,6 +5989,12 @@
 msgid "reapplying unguarded patches\n"
 msgstr "Wende ungeschützte Patches erneut an\n"
 
+msgid "finish all applied changesets"
+msgstr "Schließt alle angewandten Änderungssätze ab"
+
+msgid "hg qfinish [-a] [REV]..."
+msgstr "hg qfinish [-a] [REV]..."
+
 msgid "move applied patches into repository history"
 msgstr "Verschiebt angewandte Patches in die Historie des Projektarchivs"
 
@@ -4872,6 +6031,30 @@
 msgid "no revisions specified"
 msgstr "Keine Revisionen angegeben"
 
+msgid "warning: uncommitted changes in the working directory\n"
+msgstr "Warnung: Unversionierte Änderungen im Arbeitsverzeichnis\n"
+
+msgid "list all available queues"
+msgstr "Zeigt alle verfügbaren Patch-Reihen"
+
+msgid "print name of active queue"
+msgstr "Zeigt den Namen der aktive Patch-Reihe"
+
+msgid "create new queue"
+msgstr "Erstellt eine neue Patch-Reihe"
+
+msgid "rename active queue"
+msgstr "Benennt die aktive Patch-Reihe um"
+
+msgid "delete reference to queue"
+msgstr "Löscht den Verweis auf die Patch-Reihe"
+
+msgid "delete queue, and remove patch dir"
+msgstr "Löscht eine Patch-Reihe und entfernt das Patch-Verzeichnis"
+
+msgid "[OPTION] [QUEUE]"
+msgstr "[OPTION] [REIHE]"
+
 msgid "manage multiple patch queues"
 msgstr "Verwaltet mehrere Patch-Reihen"
 
@@ -4888,13 +6071,16 @@
 "registered\n"
 "    queues - by default the \"normal\" patches queue is registered. The "
 "currently\n"
-"    active queue will be marked with \"(active)\"."
+"    active queue will be marked with \"(active)\". Specifying --active will "
+"print\n"
+"    only the name of the active queue."
 msgstr ""
 "    Wenn ein Reihenname ausgelassen wird oder -l/--list angegeben wird, "
 "werden\n"
 "    die registrierten Reihen angezeigt - standardmäßig ist die Reihe \"normal"
 "\"\n"
-"    registriert. Die aktuelle Reihe wird mit \"(aktiv)\" markiert."
+"    registriert. Die aktuelle Reihe ist mit \"(aktiv)\" markiert. Durch\n"
+"    Angabe von --active wird nur der Name der aktiven Reihe angezeigt."
 
 msgid ""
 "    To create a new queue, use -c/--create. The queue is automatically made\n"
@@ -4986,333 +6172,39 @@
 msgid "mq:     (empty queue)\n"
 msgstr "mq:     (leere Reihe)\n"
 
+msgid ""
+"``mq()``\n"
+"    Changesets managed by MQ."
+msgstr ""
+"``mq()``\n"
+"    Änderungssätze unter der Kontrolle von MQ."
+
+msgid "mq takes no arguments"
+msgstr "mq erwartet keine Argumente"
+
 msgid "operate on patch repository"
 msgstr "Arbeite mit Patch-Archiv"
 
-msgid "print first line of patch header"
-msgstr "Gibt die erste Zeile eines Patch-Kopfes aus"
-
-msgid "show only the last patch"
-msgstr "Zeigt nur den letzten Patch"
-
-msgid "hg qapplied [-1] [-s] [PATCH]"
-msgstr "hg qapplied [-1] [-s] [PATCH]"
-
-msgid "use pull protocol to copy metadata"
-msgstr "Nutzt das 'Pull'-Protokoll um Metadaten zu kopieren"
-
-msgid "do not update the new working directories"
-msgstr "Aktualisiert die Arbeitsverzeichnisse nicht"
-
-msgid "use uncompressed transfer (fast over LAN)"
-msgstr "Nutzt unkomprimierte Übertragung (schnell im LAN)"
-
-msgid "REPO"
-msgstr "ARCHIV"
-
-msgid "location of source patch repository"
-msgstr "Ort des Quell-Patcharchivs"
-
-msgid "hg qclone [OPTION]... SOURCE [DEST]"
-msgstr "hg qclone [OPTION]... QUELLE [ZIEL]"
-
-msgid "hg qcommit [OPTION]... [FILE]..."
-msgstr "hg qcommit [OPTION]... [DATEI]..."
-
-msgid "hg qdiff [OPTION]... [FILE]..."
-msgstr "hg qdiff [OPTION]... [DATEI]..."
-
-msgid "keep patch file"
-msgstr "Behält die Patchdatei bei"
-
-msgid "stop managing a revision (DEPRECATED)"
-msgstr "Hört auf, eine Revision zu verwalten (VERALTET)"
-
-msgid "hg qdelete [-k] [PATCH]..."
-msgstr ""
-
-msgid "edit patch header"
-msgstr "Bearbeitet den Kopf eines Patches"
-
-msgid "keep folded patch files"
-msgstr "Behält zusammengelegte Patches bei"
-
-msgid "hg qfold [-e] [-k] [-m TEXT] [-l FILE] PATCH..."
-msgstr "hg qfold [-e] [-k] [-m TEXT] [-l DATEI] PATCH..."
-
-msgid "overwrite any local changes"
-msgstr "Überschreibt alle lokalen Änderungen"
-
-msgid "hg qgoto [OPTION]... PATCH"
-msgstr "hg qgoto [OPTION]... PATCH"
-
-msgid "list all patches and guards"
-msgstr "Zeigt alle Patches und Wächter an"
-
-msgid "drop all guards"
-msgstr "Entfernt alle Wächter"
-
-msgid "hg qguard [-l] [-n] [PATCH] [-- [+GUARD]... [-GUARD]...]"
-msgstr "hg qguard [-l] [-n] [PATCH] [-- [+GUARD]... [-GUARD]...]"
-
-msgid "hg qheader [PATCH]"
-msgstr "hg qheader [PATCH]"
-
-msgid "import file in patch directory"
-msgstr "Import eine Datei in das Patchverzeichnis"
-
-msgid "NAME"
-msgstr "NAME"
-
-msgid "name of patch file"
-msgstr "Name der Patchdatei"
-
-msgid "overwrite existing files"
-msgstr "Überschreibt bestehende Dateien"
-
-msgid "place existing revisions under mq control"
-msgstr "Übergibt bestehende Revisionen der Kontrolle von mq"
-
-msgid "use git extended diff format"
-msgstr "Verwende git-erweitertes diff-Format"
-
-msgid "qpush after importing"
-msgstr "Führt qpush nach dem Import aus"
-
-msgid "hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... FILE..."
-msgstr "hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... DATEI..."
-
-msgid "create queue repository"
-msgstr "Erstellt ein Reihen-Archiv"
-
-msgid "hg qinit [-c]"
-msgstr "hg qinit [-c]"
-
-msgid "import uncommitted changes (DEPRECATED)"
-msgstr "Importiere ungespeicherte Änderungen (VERALTET)"
-
-msgid "add \"From: <current user>\" to patch"
-msgstr "Fügt \"From: <aktueller Benutzer>\" zum Patch hinzu"
-
-msgid "USER"
-msgstr "BENUTZER"
-
-msgid "add \"From: <USER>\" to patch"
-msgstr "Fügt \"From: <BENUTZER>\" zum Patch hinzu"
-
-msgid "add \"Date: <current date>\" to patch"
-msgstr "Fügt \"Date: <aktuelles Datum>\" zum Patch hinzu"
-
-msgid "add \"Date: <DATE>\" to patch"
-msgstr "Fügt \"Date: <DATUM>\" zum Patch hinzu"
-
-msgid "hg qnew [-e] [-m TEXT] [-l FILE] PATCH [FILE]..."
-msgstr "hg qnew [-e] [-m TEXT] [-l DATEI] PATCH [DATEI]..."
-
-msgid "hg qnext [-s]"
-msgstr "hg qnext [-s]"
-
-msgid "hg qprev [-s]"
-msgstr "hg qprev [-s]"
-
-msgid "pop all patches"
-msgstr "Entnimmt (pop) alle Patches"
-
-msgid "queue name to pop (DEPRECATED)"
-msgstr "Name der zu entnehmenden Reihe (VERALTET)"
-
-msgid "forget any local changes to patched files"
-msgstr "Vergisst alle lokalen Änderungen an gepatchten Dateien"
-
-msgid "hg qpop [-a] [-f] [PATCH | INDEX]"
-msgstr ""
-
-#, fuzzy
-msgid "apply on top of local changes"
-msgstr "Wendet eine oder mehrere Änderungsgruppendateien an"
-
-#, fuzzy
-msgid "apply the target patch to its recorded parent"
-msgstr "Legt die benannten Patches mit dem aktuellen Patch zusammen"
-
-msgid "list patch name in commit text"
-msgstr "Listet den Patchnamen in der Versionsmeldung auf"
-
-msgid "apply all patches"
-msgstr "Wendet alle Patches an"
-
-msgid "merge from another queue (DEPRECATED)"
-msgstr "Zusammenführung aus einer anderen Patch-Reihe (VERALTET)"
-
-msgid "merge queue name (DEPRECATED)"
-msgstr "Name der Reihe zum Zusammenführen (VERALTET)"
-
-msgid "reorder patch series and apply only the patch"
-msgstr "Sortiert die Patch-Serie neu und wendet nur den Patch an"
-
-msgid "hg qpush [-f] [-l] [-a] [--move] [PATCH | INDEX]"
-msgstr ""
-
-msgid "refresh only files already in the patch and specified files"
-msgstr "Aktualisiert nur angegebene und bereits in Patches enthaltene Dateien"
-
-msgid "add/update author field in patch with current user"
-msgstr ""
-"Erstellt/Aktualisiert das Autor-Feld im Patch mit dem aktuellen Benutzer"
-
-msgid "add/update author field in patch with given user"
-msgstr ""
-"Erstellt/Aktualisiert das Autor-Feld im Patch mit dem angegebenen Benutzer"
-
-msgid "add/update date field in patch with current date"
-msgstr "Erstellt/Aktualisiert das Datumsfeld im Patch mit dem aktuellen Datum"
-
-msgid "add/update date field in patch with given date"
-msgstr ""
-"Erstellt/Aktualisiert das Datumsfeld im Patch mit dem angegebenen Datum"
-
-msgid "hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FILE] [-s] [FILE]..."
-msgstr "hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l DATEI] [-s] [DATEI]..."
-
-msgid "hg qrename PATCH1 [PATCH2]"
-msgstr "hg qrename PATCH1 [PATCH2]"
-
-msgid "delete save entry"
-msgstr "Löscht Speicher-Eintrag"
-
-msgid "update queue working directory"
-msgstr "Aktualisiert das Arbeitsverzeichnis der Reihe"
-
-msgid "hg qrestore [-d] [-u] REV"
-msgstr "hg qrestore [-d] [-u] REV"
-
-msgid "copy patch directory"
-msgstr "Kopiert das Patchverzeichnis"
-
-msgid "copy directory name"
-msgstr "Kopiert den Verzeichnisnamen"
-
-msgid "clear queue status file"
-msgstr "Löscht die Statusdatei der Reihe"
-
-msgid "force copy"
-msgstr "Erzwingt eine Kopie"
-
-msgid "hg qsave [-m TEXT] [-l FILE] [-c] [-n NAME] [-e] [-f]"
-msgstr "hg qsave [-m TEXT] [-l DATEI] [-c] [-n NAME] [-e] [-f]"
-
-msgid "disable all guards"
-msgstr "Deaktiviert alle Wächter"
-
-msgid "list all guards in series file"
-msgstr "Listet alle Wächter in der Seriendatei auf"
-
-msgid "pop to before first guarded applied patch"
-msgstr "Entnimmt Patches bis vor den ersten geschützten angewandten Patch"
-
-msgid "pop, then reapply patches"
-msgstr "Entnimmt Patches und wendet sie dann wieder an"
-
-msgid "hg qselect [OPTION]... [GUARD]..."
-msgstr "hg qselect [OPTION]... [WAECHTER]..."
-
-msgid "print patches not in series"
-msgstr "Gibt die Patches aus, die in keiner Serie sind"
-
-msgid "hg qseries [-ms]"
-msgstr "hg qseries [-ms]"
-
-msgid ""
-"force removal of changesets even if the working directory has uncommitted "
-"changes"
-msgstr ""
-"Erzwingt die Entfernung der Änderungssätze, sogar wenn das "
-"Arbeitsverzeichnis ungespeicherte Änderungen enthält"
-
-msgid ""
-"bundle only changesets with local revision number greater than REV which are "
-"not descendants of REV (DEPRECATED)"
-msgstr ""
-"Bündelt nur Änderungssätze mit einer lokalen Revisionsnummer größer als REV, "
-"die nicht Nachfahren von REV sind (VERALTET)"
-
-msgid "no backups"
-msgstr "Keine Sicherungskopien"
-
-msgid "no backups (DEPRECATED)"
-msgstr "Keine Sicherungskopien (VERALTET)"
-
-msgid "do not modify working copy during strip"
-msgstr "ändern Sie nicht die Working Copy während des strip Vorgangs"
-
-msgid "hg strip [-k] [-f] [-n] REV..."
-msgstr ""
-
-msgid "hg qtop [-s]"
-msgstr "hg qtop [-s]"
-
-msgid "show only the first patch"
-msgstr "Zeigt nur den ersten Patch"
-
-msgid "hg qunapplied [-1] [-s] [PATCH]"
-msgstr "hg qunapplied [-1] [-s] [PATCH]"
-
-msgid "finish all applied changesets"
-msgstr "Schließt alle angewandten Änderungssätze ab"
-
-msgid "hg qfinish [-a] [REV]..."
-msgstr "hg qfinish [-a] [REV]..."
-
-msgid "list all available queues"
-msgstr "Zeigt alle verfügbaren Patch-Reihen"
-
-msgid "create new queue"
-msgstr "Erstellt eine neue Patch-Reihe"
-
-msgid "rename active queue"
-msgstr "Benennt die aktive Patch-Reihe um"
-
-msgid "delete reference to queue"
-msgstr "Löscht den Verweis auf die Patch-Reihe"
-
-msgid "delete queue, and remove patch dir"
-msgstr "Löscht eine Patch-Reihe und entfernt das Patch-Verzeichnis"
-
-msgid "[OPTION] [QUEUE]"
-msgstr "[OPTION] [REIHE]"
-
-msgid "hooks for sending email notifications at commit/push time"
-msgstr "Hooks zum Senden von E-Mail-Benachrichtigungen beim Commit/Übertragen"
-
-msgid ""
-"Subscriptions can be managed through a hgrc file. Default mode is to\n"
-"print messages to stdout, for testing and configuring."
-msgstr ""
-"Abonnements können über eine hgrc-Datei verwaltet werden. Standardmäßig "
-"werden\n"
-"die Nachrichten zum Testen und Konfigurieren auf der Standardausgabe "
-"ausgegeben."
-
-msgid ""
-"To use, configure the notify extension and enable it in hgrc like\n"
-"this::"
-msgstr ""
-"Um diese Erweiterung zu benutzen, konfigurieren und aktivieren Sie notify "
-"in\n"
-"der hgrc-Datei wie folgt::"
-
-msgid ""
-"  [extensions]\n"
-"  notify ="
-msgstr ""
-"  [extensions]\n"
-"  notify ="
+msgid "hooks for sending email push notifications"
+msgstr "Hooks zum Senden von E-Mail-Benachrichtigungen beim Übertragen"
+
+msgid ""
+"This extension let you run hooks sending email notifications when\n"
+"changesets are being pushed, from the sending or receiving side."
+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::"
+msgstr ""
 
 msgid ""
 "  [hooks]\n"
 "  # one email for each incoming changeset\n"
 "  incoming.notify = python:hgext.notify.hook\n"
-"  # batch emails when many changesets incoming at one time\n"
+"  # one email for all incoming changesets\n"
 "  changegroup.notify = python:hgext.notify.hook"
 msgstr ""
 "  [hooks]\n"
@@ -5322,106 +6214,176 @@
 "  changegroup.notify = python:hgext.notify.hook"
 
 msgid ""
-"  [notify]\n"
-"  # config items go here"
-msgstr ""
-"  [notify]\n"
-"  # Konfigurationselemente werden hier notiert."
-
-msgid "Required configuration items::"
-msgstr "Benötigte Einstellungen::"
-
-msgid "  config = /path/to/file # file containing subscriptions"
-msgstr "  config = /pfad/zur/datei # Datei, die die Abonnements enthält"
-
-msgid "Optional configuration items::"
-msgstr "Optionale Einstellungen::"
-
-msgid ""
-"  test = True            # print messages to stdout for testing\n"
-"  strip = 3              # number of slashes to strip for url paths\n"
-"  domain = example.com   # domain to use if committer missing domain\n"
-"  style = ...            # style file to use when formatting email\n"
-"  template = ...         # template to use when formatting email\n"
-"  incoming = ...         # template to use when run as incoming hook\n"
-"  changegroup = ...      # template when run as changegroup hook\n"
-"  maxdiff = 300          # max lines of diffs to include (0=none, -1=all)\n"
-"  maxsubject = 67        # truncate subject line longer than this\n"
-"  diffstat = True        # add a diffstat before the diff content\n"
-"  sources = serve        # notify if source of incoming changes in this "
-"list\n"
-"                         # (serve == ssh or http, push, pull, bundle)\n"
-"  merge = False          # send notification for merges (default True)\n"
-"  [email]\n"
-"  from = user@host.com   # email address to send as if none given\n"
-"  [web]\n"
-"  baseurl = http://hgserver/... # root of hg web site for browsing commits"
-msgstr ""
-"  test = True           # Nachrichten auf der Standardausgabe ausgeben?\n"
-"  strip = 3             # Anzahl der zu entfernenden Slashes von URLs\n"
-"  domain = example.com  # zu verwendende Domain, falls der Autor sie "
-"vergisst\n"
-"  style = ...           # Stildatei zur Formatierung der E-Mail\n"
-"  template = ...        # Vorlagendatei zur Formatierung der E-Mail\n"
-"  incoming = ...        # Vorlage für den incoming-Hook\n"
-"  changegroup = ...     # Vorlage für den changegroup-Hook\n"
-"  maxdiff = 300         # max. Anzahl an Diffzeilen in E-Mails (0=keine, "
-"-1=alle)\n"
-"  maxsubject = 67       # Betreffzeilen bei dieser Länge abschneiden\n"
-"  diffstat = True       # Diffstat vor den Diffzeilen einfügen?\n"
-"  sources = serve       # benachrichtige nur, wenn die Quelle in der Liste "
-"ist\n"
-"                        # (serve == ssh oder http, push, pull, bundle)\n"
-"  merge = False         # Sende E-Mails für Zusammenführungen? (Standard: "
-"False)\n"
-"  [email]\n"
-"  from = benutzer@rechner       # Absender, falls im Änderungssatz\n"
-"                                # keine gegeben ist\n"
-"  [web]\n"
-"  baseurl = http://hgserver/... # Wurzel der hg-Website zum Durchstöbern\n"
-"                                # der Commits"
-
-msgid ""
-"The notify config file has same format as a regular hgrc file. It has\n"
-"two sections so you can express subscriptions in whatever way is\n"
-"handier for you."
-msgstr ""
-"Die notify-Konfigurationsdatei folgt dem selben Format wie eine reguläre\n"
-"hgrc-Datei. Sie besteht aus zwei Bereichen, sodass Sie Abonnements so\n"
-"notieren können, wie es Ihnen am besten passt."
+"  # one email for all outgoing changesets\n"
+"  outgoing.notify = python:hgext.notify.hook"
+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::"
+msgstr ""
 
 msgid ""
 "  [usersubs]\n"
-"  # key is subscriber email, value is \",\"-separated list of glob patterns\n"
+"  # key is subscriber email, value is a comma-separated list of glob\n"
+"  # patterns\n"
 "  user@host = pattern"
 msgstr ""
 "  [usersubs]\n"
-"  # Schlüssel ist die E-Mail-Adresse des Abonnenten\n"
+"  # Schlüssel ist die Email-Adresse des Abonnenten\n"
 "  # Wert ist eine kommaseparierte Liste von glob-Mustern\n"
 "  benutzer@rechner = muster"
 
 msgid ""
 "  [reposubs]\n"
-"  # key is glob pattern, value is \",\"-separated list of subscriber emails\n"
+"  # key is glob pattern, value is a comma-separated list of subscriber\n"
+"  # emails\n"
 "  pattern = user@host"
 msgstr ""
 "  [reposubs]\n"
 "  # Schlüssel ist ein glob-Muster\n"
-"  # Wert ist eine kommaseparierte Liste von Abonnenten-E-Mails\n"
+"  # Wert ist eine kommaseparierte Liste von Abonnenten-Emails\n"
 "  muster = benutzer@rechner"
 
-msgid "Glob patterns are matched against path to repository root."
-msgstr ""
-"Die glob-Ausdrücke werden relativ zum Wurzelverzeichnis des Archivs\n"
-"ausgewertet."
-
-msgid ""
-"If you like, you can put notify config file in repository that users\n"
-"can push changes to, they can manage their own subscriptions.\n"
-msgstr ""
-"Wenn Sie möchten, können Sie die notify-Konfiguration in ein Archiv\n"
-"legen, in das die Benutzer Änderungen übertragen können. Dann können\n"
-"diese ihre Abonnements selber verwalten.\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 ""
+
+msgid ""
+"  [notify]\n"
+"  config = /path/to/subscriptionsfile"
+msgstr ""
+"  [notify]\n"
+"  config = /pfad/zur/abonnentendatei"
+
+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``."
+msgstr ""
+
+msgid ""
+"Notifications content can be tweaked with the following configuration "
+"entries:"
+msgstr ""
+
+msgid ""
+"notify.test\n"
+"  If ``True``, print messages to stdout instead of sending them. Default: "
+"True."
+msgstr ""
+
+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 ""
+
+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 "
+"you\n"
+"  turn them into relative paths. For example, ``notify.strip=3`` will "
+"change\n"
+"  ``/long/path/repository`` into ``repository``. Default: 0."
+msgstr ""
+
+msgid ""
+"notify.domain\n"
+"  If subscribers emails or the from email have no domain set, complete them\n"
+"  with this value."
+msgstr ""
+
+msgid ""
+"notify.style\n"
+"  Style file to use when formatting emails."
+msgstr ""
+"notify.style\n"
+"  Stil-Datei für das Formatieren der Emails."
+
+msgid ""
+"notify.template\n"
+"  Template to use when formatting emails."
+msgstr ""
+"notify.template\n"
+"  Vorlage für das Formatieren der Emails."
+
+msgid ""
+"notify.incoming\n"
+"  Template to use when run as incoming hook, override ``notify.template``."
+msgstr ""
+
+msgid ""
+"notify.outgoing\n"
+"  Template to use when run as outgoing hook, override ``notify.template``."
+msgstr ""
+
+msgid ""
+"notify.changegroup\n"
+"  Template to use when running as changegroup hook, override\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."
+msgstr ""
+
+msgid ""
+"notify.maxsubject\n"
+"  Maximum number of characters in emails subject line. Default: 67."
+msgstr ""
+
+msgid ""
+"notify.diffstat\n"
+"  Set to True to include a diffstat before diff content. Default: True."
+msgstr ""
+
+msgid ""
+"notify.merge\n"
+"  If True, send notifications for merge changesets. Default: True."
+msgstr ""
+
+msgid ""
+"notify.mbox\n"
+"  If set, append mails to this mbox file instead of sending. Default: None."
+msgstr ""
+"notify.mbox\n"
+"  Schreibe Nachrichten in mbox Datei, anstatt sie zu versenden. Standard: None"
+
+msgid ""
+"If set, the following entries will also be used to customize the "
+"notifications:"
+msgstr ""
+
+msgid ""
+"email.from\n"
+"  Email ``From`` address to use if none can be found in generated email "
+"content."
+msgstr ""
+
+msgid ""
+"web.baseurl\n"
+"  Root repository browsing URL to combine with repository paths when making\n"
+"  references. See also ``notify.strip``."
+msgstr ""
 
 #, python-format
 msgid "%s: %d new changesets"
@@ -5543,49 +6505,8 @@
 "Pagers zu kontrollieren. Benutzen Sie Werte wie yes, no, on, off, oder auto\n"
 "für normales Verhalten.\n"
 
-#, fuzzy
 msgid "when to paginate (boolean, always, auto, or never)"
-msgstr "Wann soll eingefärbt werden (boolescher Wert, always, auto oder never)"
-
-msgid "interpret suffixes to refer to ancestor revisions"
-msgstr "Interpretiert Suffixe, um Vorfahren zu referenzieren"
-
-msgid ""
-"This extension allows you to use git-style suffixes to refer to the\n"
-"ancestors of a specific revision."
-msgstr ""
-"Diese Erweiterung erlaubt es, Suffixe im Stil von git zu verwenden, um\n"
-"die Vorfahren einer bestimmten Revision anzusprechen."
-
-msgid "For example, if you can refer to a revision as \"foo\", then::"
-msgstr ""
-"Zum Beispiel, wenn eine Revision als \"foo\" angesprochen werden kann,\n"
-"dann gilt::"
-
-msgid ""
-"  foo^N = Nth parent of foo\n"
-"  foo^0 = foo\n"
-"  foo^1 = first parent of foo\n"
-"  foo^2 = second parent of foo\n"
-"  foo^  = foo^1"
-msgstr ""
-"  foo^N = N-ter Vorfahr von foo\n"
-"  foo^0 = foo\n"
-"  foo^1 = erster Elternteil von foo\n"
-"  foo^2 = zweiter Elternteil von foo\n"
-"  foo^  = foo^1"
-
-msgid ""
-"  foo~N = Nth first grandparent of foo\n"
-"  foo~0 = foo\n"
-"  foo~1 = foo^1 = foo^ = first parent of foo\n"
-"  foo~2 = foo^1^1 = foo^^ = first parent of first parent of foo\n"
-msgstr ""
-"  foo~N = N-ter erster Großelternteil von foo\n"
-"  foo~0 = foo\n"
-"  foo~1 = foo^1 = foo^ = erster Elternteil von foo\n"
-"  foo~2 = foo^1^1 = foo^^ = erster Elternteil des ersten Elternteils\n"
-"                            von foo\n"
+msgstr "Wann soll die Seite umgebrochen werden (always, auto oder never)"
 
 msgid "command to send changesets as (a series of) patch emails"
 msgstr "Befehl, um Änderungssätze als (Reihe von) Patch-E-Mails zu versenden"
@@ -5625,11 +6546,11 @@
 "und -archiven als zusammengehörig angezeigt werden."
 
 msgid ""
-"To configure other defaults, add a section like this to your hgrc\n"
-"file::"
-msgstr ""
-"Andere Standardwerte können durch beispielsweise durch den\n"
-"folgenden Abschnitt in der hgrc konfiguriert werden::"
+"To configure other defaults, add a section like this to your\n"
+"configuration file::"
+msgstr ""
+"Andere Standardwerte können beispielsweise durch den folgenden Abschnitt\n"
+"in der hgrc konfiguriert werden::"
 
 msgid ""
 "  [email]\n"
@@ -5673,12 +6594,81 @@
 "Befehlszeile senden kann. Siehe die [email]- und [smtp]-Abschnitte in\n"
 "hgrc(5) für Einzelheiten.\n"
 
-#, python-format
-msgid "%s Please enter a valid value"
-msgstr "%s Bitte einen gültigen Wert angeben"
-
-msgid "Please enter a valid value.\n"
-msgstr "Bitte einen gültigen Wert angeben.\n"
+msgid "send patches as attachments"
+msgstr "Sendet Patches als Anhänge"
+
+msgid "send patches as inline attachments"
+msgstr "Sendet Patches als inline-Anhänge"
+
+msgid "email addresses of blind carbon copy recipients"
+msgstr "Emailadressen von BCC-Empfängern"
+
+msgid "email addresses of copy recipients"
+msgstr "Emailadressen von CC-Empfängern"
+
+msgid "ask for confirmation before sending"
+msgstr "Vor dem Abschicken bestätigen"
+
+msgid "add diffstat output to messages"
+msgstr "Fügt Ausgabe von diffstat hinzu"
+
+msgid "use the given date as the sending date"
+msgstr "Nutze gegebenes Datum als Sendedatum"
+
+msgid "use the given file as the series description"
+msgstr "Nutze gegebene Datei als Serienbeschreibung"
+
+msgid "email address of sender"
+msgstr "Emailadresse des Senders"
+
+msgid "print messages that would be sent"
+msgstr "Zeige Nachrichten an, die gesendet werden würden"
+
+msgid "write messages to mbox file instead of sending them"
+msgstr "Schreibe Nachrichten in mbox Datei, anstatt sie zu versenden"
+
+msgid "email addresses replies should be sent to"
+msgstr "Emailadressen zu denen Antworten geschickt werden sollen"
+
+msgid "subject of first message (intro or single patch)"
+msgstr "Betreff der ersten Nachricht (Serieneinführung oder einzelner Patch)"
+
+msgid "message identifier to reply to"
+msgstr "Antwortadresse (reply-to)"
+
+msgid "flags to add in subject prefixes"
+msgstr "Diese Stichwörter zu Betreffs-Präfixen hinzufügen"
+
+msgid "email addresses of recipients"
+msgstr "Emailadressen der Empfänger"
+
+msgid "omit hg patch header"
+msgstr "Lasse \"hg patch\"-Kopf aus"
+
+msgid "send changes not found in the target repository"
+msgstr "Wähle Änderungen aus, die nicht im Zielarchiv sind"
+
+msgid "send changes not in target as a binary bundle"
+msgstr "Wähle Änderungen, die nicht im Ziel als Binärbündel sind"
+
+msgid "name of the bundle attachment file"
+msgstr "Name der Bündel-Anhangsdatei"
+
+msgid "a revision to send"
+msgstr "Eine zu sendende Revision"
+
+msgid "run even when remote repository is unrelated (with -b/--bundle)"
+msgstr ""
+"Auch ausführen, wenn das entfernte Archiv keinen Bezug hat (mit -b/--bundle)"
+
+msgid "a base changeset to specify instead of a destination (with -b/--bundle)"
+msgstr "Eine Basisrevision anstelle eines Ziels (mit -b/--bundle)"
+
+msgid "send an introduction email for a single patch"
+msgstr "Sende eine Einführungsemail auch für einzelnen Patch"
+
+msgid "hg email [OPTION]... [DEST]..."
+msgstr "hg email [OPTION]... [ZIEL]..."
 
 msgid "send changesets by email"
 msgstr "Sende Änderungssätze per Email"
@@ -5692,16 +6682,16 @@
 "    je eine pro Nachricht. Die Serie wird durch \"[PATCH 0 of N]\"\n"
 "    eingeleitet, die die Serie als Ganzes beschreibt."
 
-#, fuzzy
 msgid ""
 "    Each patch email has a Subject line of \"[PATCH M of N] ...\", using\n"
 "    the first line of the changeset description as the subject text.\n"
 "    The message contains two or three parts. First, the changeset\n"
 "    description."
 msgstr ""
-"Der Betreff jeder Patch-E-Mail ist \"[PATCH M of N] ...\", mit der ersten\n"
-"Zeile der Änderungszusammenfassung als weiterem Text. Die Nachricht\n"
-"besteht aus zwei oder drei Teilen:"
+"    Der Betreff jeder Patch-E-Mail ist \"[PATCH M of N] ...\", mit der\n"
+"    ersten Zeile der Änderungszusammenfassung als weiterem Text. Die\n"
+"    Nachricht besteht aus zwei oder drei Teilen. Zuerst die Beschreibung\n"
+"    des Änderungsssatzes."
 
 msgid ""
 "    With the -d/--diffstat option, if the diffstat program is\n"
@@ -5838,7 +6828,7 @@
 "    hgrc. See the [email] section in hgrc(5) for details.\n"
 "    "
 msgstr ""
-"    Um dieses Kommando zu benutzen muss das Email-Versenden in der Sektion\n"
+"    Um dieses Kommando zu benutzen muss das Email-Versenden im Abschnitt\n"
 "    [email] der Konfiguration aktiviert sein. Siehe hgrc(5) für Details.\n"
 "    "
 
@@ -5872,6 +6862,9 @@
 msgid "This patch series consists of %d patches."
 msgstr "Diese Patch-Serie besteht aus %d Patches."
 
+msgid "no recipient addresses provided"
+msgstr ""
+
 msgid ""
 "\n"
 "Final summary:"
@@ -5894,94 +6887,14 @@
 msgid "Displaying "
 msgstr "Zeige "
 
-msgid "Writing "
-msgstr "Schreibe "
-
-msgid "writing"
-msgstr "Schreibe"
-
 msgid "Sending "
 msgstr "Sende "
 
 msgid "sending"
 msgstr "Sende"
 
-msgid "send patches as attachments"
-msgstr "Sendet Patches als Anhänge"
-
-msgid "send patches as inline attachments"
-msgstr "Sendet Patches als inline-Anhänge"
-
-msgid "email addresses of blind carbon copy recipients"
-msgstr "Emailadressen von BCC-Empfängern"
-
-msgid "email addresses of copy recipients"
-msgstr "Emailadressen von CC-Empfängern"
-
-msgid "ask for confirmation before sending"
-msgstr "Vor dem Abschicken bestätigen"
-
-msgid "add diffstat output to messages"
-msgstr "Fügt Ausgabe von diffstat hinzu"
-
-msgid "use the given date as the sending date"
-msgstr "Nutze gegebenes Datum als Sendedatum"
-
-msgid "use the given file as the series description"
-msgstr "Nutze gegebene Datei als Serienbeschreibung"
-
-msgid "email address of sender"
-msgstr "Emailadresse des Senders"
-
-msgid "print messages that would be sent"
-msgstr "Zeige Nachrichten an, die gesendet werden würden"
-
-msgid "write messages to mbox file instead of sending them"
-msgstr "Schreibe Nachrichten in mbox Datei, anstatt sie zu versenden"
-
-#, fuzzy
-msgid "email addresses replies should be sent to"
-msgstr "Emailadressen der Empfänger"
-
-msgid "subject of first message (intro or single patch)"
-msgstr "Betreff der ersten Nachricht (Serieneinführung oder einzelner Patch)"
-
-msgid "message identifier to reply to"
-msgstr "Antwortadresse (reply-to)"
-
-msgid "flags to add in subject prefixes"
-msgstr "Diese Stichwörter zu Betreffs-Präfixen hinzufügen"
-
-msgid "email addresses of recipients"
-msgstr "Emailadressen der Empfänger"
-
-msgid "omit hg patch header"
-msgstr "Lasse \"hg patch\"-Kopf aus"
-
-msgid "send changes not found in the target repository"
-msgstr "Wähle Änderungen aus, die nicht im Zielarchiv sind"
-
-msgid "send changes not in target as a binary bundle"
-msgstr "Wähle Änderungen, die nicht im Ziel als Binärbündel sind"
-
-msgid "name of the bundle attachment file"
-msgstr "Name der Bündel-Anhangsdatei"
-
-msgid "a revision to send"
-msgstr "Eine zu sendende Revision"
-
-msgid "run even when remote repository is unrelated (with -b/--bundle)"
-msgstr ""
-"Auch ausführen wenn das entfernte Archiv keinen Bezug hat (mit -b/--bundle)"
-
-msgid "a base changeset to specify instead of a destination (with -b/--bundle)"
-msgstr "Eine Basisrevision anstelle eines Ziels (mit -b/--bundle)"
-
-msgid "send an introduction email for a single patch"
-msgstr "Sende eine Einführungsemail auch für einzelnen Patch"
-
-msgid "hg email [OPTION]... [DEST]..."
-msgstr "hg email [OPTION]... [ZIEL]..."
+msgid "writing"
+msgstr "Schreibe"
 
 msgid "show progress bars for some actions"
 msgstr "Bei einigen Befehlen Fortschrittsbalken zeigen"
@@ -6000,10 +6913,12 @@
 msgid "The following settings are available::"
 msgstr "Die folgenden Einstellungen sind verfügbar::"
 
-#, fuzzy
 msgid ""
 "  [progress]\n"
 "  delay = 3 # number of seconds (float) before showing the progress bar\n"
+"  changedelay = 1 # changedelay: minimum delay before showing a new topic.\n"
+"                  # If set to less than 3 * refresh, that value will\n"
+"                  # be used instead.\n"
 "  refresh = 0.1 # time in seconds between refreshes of the progress bar\n"
 "  format = topic bar number estimate # format of the progress bar\n"
 "  width = <none> # if set, the maximum width of the progress information\n"
@@ -6016,9 +6931,10 @@
 "  [progress]\n"
 "  delay = 3 # Verzögerung in Sekunden (float),\n"
 "            # bevor der Fortschrittsbalken gezeigt wird\n"
-"  refresh = 0.1 # Sekunden zwischen Aktualisierungen des "
-"Fortschrittsbalkens\n"
-"  format = topic bar number # Format des Fortschrittsbalkens\n"
+"  changedelay = 1 # Mindestverzögerung bevor ein neues Thema gezeigt wird.\n"
+"                  # Falls 3 * refresh größer ist, wird dies verwendet.\n"
+"  refresh = 0.1 # Sek. zwischen Aktualisierungen des Fortschrittsbalkens\n"
+"  format = topic bar number estimate # Format des Fortschrittsbalkens\n"
 "  width = <none> # Maximalbreite der Fortschrittsinformation\n"
 "                 # (damit wird min(width, term width) verwendet)\n"
 "  clear-complete = True # löscht den Fortschrittsbalken, wenn er fertig ist\n"
@@ -6028,15 +6944,15 @@
 
 msgid ""
 "Valid entries for the format field are topic, bar, number, unit,\n"
-"estimate, and item. item defaults to the last 20 characters of the\n"
-"item, but this can be changed by adding either ``-<num>`` which would\n"
-"take the last num characters, or ``+<num>`` for the first num\n"
+"estimate, speed, and item. item defaults to the last 20 characters of\n"
+"the item, but this can be changed by adding either ``-<num>`` which\n"
+"would take the last num characters, or ``+<num>`` for the first num\n"
 "characters.\n"
 msgstr ""
 "Gültige Einträge für das Format-Feld sind topic, bar, number, unit\n"
-"und item. item zeigt normalerweise die letzten 20 Zeichen des Objektes.\n"
-"Mit dem Zusatz ``-<num>`` oder ``+<num>`` werden stattdessen entweder \n"
-"die letzten (-) oder die ersten (+) num Zeichen gezeigt.\n"
+"estimate, speed und item. item zeigt normalerweise die letzten 20 Zeichen\n"
+"des Objektes. Mit dem Zusatz ``-<num>`` oder ``+<num>`` werden stattdessen\n"
+"entweder die letzten (-) oder die ersten (+) num Zeichen gezeigt.\n"
 
 #. i18n: format XX seconds as "XXs"
 #, python-format
@@ -6068,9 +6984,29 @@
 msgid "%dy%02dw"
 msgstr ""
 
+#, python-format
+msgid "%d %s/sec"
+msgstr ""
+
 msgid "command to delete untracked files from the working directory"
 msgstr "Löscht nicht versionierte Dateien aus dem Arbeitsverzeichnis"
 
+msgid "abort if an error occurs"
+msgstr "Bei Fehler abbrechen"
+
+msgid "purge ignored files too"
+msgstr "Auch ignorierte Dateien entfernen"
+
+msgid "print filenames instead of deleting them"
+msgstr "Zeigt Dateinamen an, statt sie zu entfernen"
+
+msgid "end filenames with NUL, for use with xargs (implies -p/--print)"
+msgstr ""
+"Beendet Dateinamen mit NUL zur Nutzung mit xargs (implizert -p/--print)"
+
+msgid "hg purge [OPTION]... [DIR]..."
+msgstr "hg purge [OPTION]... [DIR]..."
+
 msgid "removes files not tracked by Mercurial"
 msgstr "Entfernt nicht von Mercurial versionierte Dateien"
 
@@ -6142,22 +7078,6 @@
 msgid "Removing directory %s\n"
 msgstr "Entferne Verzeichnis %s\n"
 
-msgid "abort if an error occurs"
-msgstr "Bei Fehler abbrechen"
-
-msgid "purge ignored files too"
-msgstr "Auch ignorierte Dateien entfernen"
-
-msgid "print filenames instead of deleting them"
-msgstr "Zeigt Dateinamen an, statt sie zu entfernen"
-
-msgid "end filenames with NUL, for use with xargs (implies -p/--print)"
-msgstr ""
-"Beendet Dateinamen mit NUL zur Nutzung mit xargs (implizert -p/--print)"
-
-msgid "hg purge [OPTION]... [DIR]..."
-msgstr "hg purge [OPTION]... [DIR]..."
-
 msgid "command to move sets of revisions to a different ancestor"
 msgstr "Verknüpft Änderungssätze mit einem anderen Vorgänger"
 
@@ -6175,6 +7095,57 @@
 "Weitere Informationen:\n"
 "http://mercurial.selenic.com/wiki/RebaseExtension\n"
 
+msgid "rebase from the specified changeset"
+msgstr "Verschiebe angefangen vom gegebenen Änderungssatz"
+
+msgid ""
+"rebase from the base of the specified changeset (up to greatest common "
+"ancestor of base and dest)"
+msgstr ""
+"verschiebt von der Basis des spezifizierten Changesets (bis zum größten "
+"gemeinsamen Vorgänger von base und dest)"
+
+msgid "rebase these revisions"
+msgstr "Verschiebe diese Revisionen"
+
+msgid "rebase onto the specified changeset"
+msgstr "Verschiebe auf den gegebenen Änderungssatz"
+
+msgid "collapse the rebased changesets"
+msgstr "Faltet die erzeugten Änderungssätze nach dem Rebase zusammen"
+
+msgid "use text as collapse commit message"
+msgstr "Nimm Text als gefaltete Commit-Nachricht"
+
+msgid "invoke editor on commit messages"
+msgstr "Ruft Editor zum setzen der Versionsmeldung auf"
+
+msgid "read collapse commit message from file"
+msgstr "Liest gefaltete Commit-Nachricht aus Datei"
+
+msgid "keep original changesets"
+msgstr "Behält die ursprünglichen Änderungssätze bei"
+
+msgid "keep original branch names"
+msgstr "Erhält die ursprünglichen Zweignamen"
+
+msgid "force detaching of source from its original branch"
+msgstr "erzwingt ein Abkoppeln der Quelle von ihrem ursprünglichen Zweig"
+
+msgid "specify merge tool"
+msgstr "Methode für das Zusammenführen"
+
+msgid "continue an interrupted rebase"
+msgstr "Führt einen unterbrochenen Rebase fort"
+
+msgid "abort an interrupted rebase"
+msgstr "Bricht einen unterbrochenen Rebase ab"
+
+msgid ""
+"hg rebase [-s REV | -b REV] [-d REV] [options]\n"
+"hg rebase {-a|-c}"
+msgstr ""
+
 msgid "move changeset (and descendants) to a different branch"
 msgstr ""
 "Verschiebt Versionen (und ihre Nachfolger) auf einen abweichenden Zweig"
@@ -6196,7 +7167,7 @@
 "    same rebase or they will end up with duplicated changesets after\n"
 "    pulling in your rebased changesets."
 msgstr ""
-"    Sie sollten keine changesets rebasen, die auch andere bereits\n"
+"    Sie sollten keine Änderungssätze umpfropfen, die auch andere bereits\n"
 "    haben, ansonsten zwingen Sie jeden anderen die gleiche rebase-\n"
 "    Operation durchzuführen, um die verschobenen Versionen nicht\n"
 "    doppelt zu haben, wenn sie Ihre Änderungen ziehen."
@@ -6230,7 +7201,7 @@
 "    Abkürzungen für ein Menge von Changesets, die topologisch\n"
 "    zusammenhängen (die \"source\" Branch). Wenn Sie source angeben\n"
 "    (``-s/--source``), rebase wird dieses Changeset und all seine\n"
-"    Descendants nach dest rebasen. Wenn Sie base angeben (``-b/--base``),\n"
+"    Descendants nach dest pfropfen. Wenn Sie base angeben (``-b/--base``),\n"
 "    rebase wird Vorgänger von base auswählen, bis zu aber nicht\n"
 "    einschließlich dem gemeinsamen Vorgänger mit dest. Es ist also\n"
 "    ``-b`` weniger präzise, aber bequemer, als ``-s``: Sie können\n"
@@ -6267,15 +7238,13 @@
 "    Branches mit zwei Heads sind. Sie müssen Quelle und/oder Ziel angeben\n"
 "    (oder auf den anderen Head ``update``en)."
 
-#, fuzzy
 msgid ""
 "    If a rebase is interrupted to manually resolve a merge, it can be\n"
 "    continued with --continue/-c or aborted with --abort/-a."
 msgstr ""
 "    Sollte eine Verschiebung zwecks manueller Konfliktbehebung unterbrochen\n"
-"    werden, kann sie mit --continue wieder aufgenommen oder mit --abort\n"
-"    abgebrochen werden.\n"
-"    "
+"    werden, kann sie mit --continue/-c wieder aufgenommen oder mit\n"
+"    --abort/-a abgebrochen werden."
 
 msgid ""
 "    Returns 0 on success, 1 if nothing to rebase.\n"
@@ -6284,48 +7253,60 @@
 "    Gibt 0 bei Erfolg zurück, oder 1, wenn es nichts zu verschieben gibt.\n"
 "    "
 
+msgid "message can only be specified with collapse"
+msgstr ""
+
 msgid "cannot use both abort and continue"
 msgstr "abort und continue können nicht gleichzeitig genutzt werden"
 
 msgid "cannot use collapse with continue or abort"
 msgstr "collapse kann nicht mit continue oder abort genutzt werden"
 
-#, fuzzy
 msgid "cannot use detach with continue or abort"
-msgstr "collapse kann nicht mit continue oder abort genutzt werden"
+msgstr "detach kann nicht mit continue oder abort genutzt werden"
 
 msgid "abort and continue do not allow specifying revisions"
 msgstr "abort und continue erlauben die Angabe einer Revision nicht"
 
+msgid "tool option will be ignored\n"
+msgstr ""
+
+msgid "cannot specify both a source and a base"
+msgstr "Es können nicht Quelle und Basis gleichzeitig angegeben werden"
+
 msgid "cannot specify both a revision and a base"
-msgstr "Es können nicht revision und base gleichzeitig angegeben werden"
-
-#, fuzzy
+msgstr "Es können nicht Revision und Basis gleichzeitig angegeben werden"
+
+msgid "cannot specify both a revision and a source"
+msgstr "Es können nicht Revision und Quelle gleichzeitig angegeben werden"
+
 msgid "detach requires a revision to be specified"
-msgstr "Zu viele Revisionen angegeben"
-
-#, fuzzy
+msgstr "detach benötigt eine Revision"
+
 msgid "cannot specify a base with detach"
-msgstr "--rev und --change können nicht gleichzeitig angegeben werden"
+msgstr "detach erwartet keine Basis"
+
+msgid "can't remove original changesets with unrebased descendants"
+msgstr "Kann Änderungssatz nicht ohne dessen Nachfahren verschieben"
+
+msgid "use --keep to keep original changesets"
+msgstr "Verwende --keep, um die ursprünglichen Änderungssätze zu behalten"
 
 msgid "nothing to rebase\n"
 msgstr "Kein Rebase nötig\n"
 
-msgid "cannot use both keepbranches and extrafn"
-msgstr "keepbranches und extrafn können nicht gleichzeitig genutzt werden"
-
-#, fuzzy
+msgid "cannot collapse multiple named branches"
+msgstr "Kann nicht mehrere benannte Zweige kollabieren"
+
 msgid "rebasing"
-msgstr "Revision"
+msgstr "Verschiebe"
 
 msgid "changesets"
 msgstr "Änderungssätze"
 
-#, fuzzy
 msgid "unresolved conflicts (see hg resolve, then hg rebase --continue)"
 msgstr ""
-"Behebe ungelöste Konflikte mit hg resolve, dann führe hg rebase --continue "
-"aus"
+"ungelöste Konflikte (siehe hg resolve, fahre mit hg rebase --continue fort)"
 
 #, python-format
 msgid "no changes, revision %d skipped\n"
@@ -6357,9 +7338,9 @@
 msgid "no rebase in progress"
 msgstr "Kein vorheriger Rebase zur Wiederaufnahme"
 
-#, fuzzy
 msgid "warning: new changesets detected on target branch, can't abort\n"
-msgstr "Warnung: Neue Änderungssätze auf Zielzweig gefunden, lösche nicht\n"
+msgstr ""
+"Warnung: Neue Änderungssätze auf Zielzweig gefunden, kann nicht abbrechen\n"
 
 msgid "rebase aborted\n"
 msgstr "Rebase abgebrochen\n"
@@ -6367,56 +7348,36 @@
 msgid "cannot rebase onto an applied mq patch"
 msgstr "Rebase kann auf einem angewandten MQ-Patch nicht aufsetzen"
 
+msgid "no matching revisions"
+msgstr "keine passenden Revisionen"
+
+msgid "can't rebase multiple roots"
+msgstr ""
+
 msgid "source is ancestor of destination"
 msgstr "Quelle ist ein Vorfahr des Ziels"
 
-msgid "source is descendant of destination"
-msgstr "Quelle ist Nachfahr des Ziels"
+msgid "--tool can only be used with --rebase"
+msgstr ""
 
 msgid "rebase working directory to branch head"
 msgstr "Führt Rebase zu einem Zweigkopf auf dem Arbeitsverzeichnis aus"
 
-#, fuzzy
-msgid "rebase from the specified changeset"
-msgstr "Zeigt die Vorgänger der angegeben Revision"
-
-msgid ""
-"rebase from the base of the specified changeset (up to greatest common "
-"ancestor of base and dest)"
-msgstr ""
-"verschiebt von der Basis des spezifizierten Changesets (bis zum größten "
-"gemeinsamen Vorgänger von base und dest)"
-
-#, fuzzy
-msgid "rebase onto the specified changeset"
-msgstr "Revision %d zeigt auf unerwarteten Änderungssatz %d"
-
-msgid "collapse the rebased changesets"
-msgstr "Faltet die erzeugten Änderungssätze nach dem Rebase zusammen"
-
-msgid "keep original changesets"
-msgstr "Behält die ursprünglichen Änderungssätze bei"
-
-msgid "keep original branch names"
-msgstr "Erhält die ursprünglichen Zweignamen"
-
-msgid "force detaching of source from its original branch"
-msgstr "erzwingt ein Abkoppeln der Quelle von ihrem ursprünglichen Zweig"
-
-msgid "continue an interrupted rebase"
-msgstr "Führt einen unterbrochenen Rebase fort"
-
-msgid "abort an interrupted rebase"
-msgstr "Bricht einen unterbrochenen Rebase ab"
-
-msgid ""
-"hg rebase [-s REV | -b REV] [-d REV] [options]\n"
-"hg rebase {-a|-c}"
-msgstr ""
+msgid "specify merge tool for rebase"
+msgstr "Method für Zusammenführungen innerhalb der Verschiebung"
 
 msgid "commands to interactively select changes for commit/qrefresh"
 msgstr "Befehle um interaktiv Änderungen für commit/qrefresh zu wählen"
 
+msgid "ignore white space when comparing lines"
+msgstr "Ignoriert Leerzeichen beim Vergleich von Zeilen"
+
+msgid "ignore changes in the amount of white space"
+msgstr "Ignoriert Änderungen bei der Anzahl von Leerzeichen"
+
+msgid "ignore changes whose lines are all blank"
+msgstr "Ignoriert Änderungen, die nur aus Leerzeilen bestehen"
+
 msgid "this modifies a binary file (all or nothing)\n"
 msgstr "Dies modifiziert eine Binärdatei (alles oder nicht)\n"
 
@@ -6436,15 +7397,12 @@
 msgid "&No, skip this change"
 msgstr "&No, überspringt diese Änderung"
 
-#, fuzzy
 msgid "&Skip remaining changes to this file"
 msgstr "&Überspringe die restlichen Änderungen an dieser Datei"
 
-#, fuzzy
 msgid "Record remaining changes to this &file"
 msgstr "Zeichne die restlichen Änderungen an dieser &Datei auf"
 
-#, fuzzy
 msgid "&Done, skip remaining changes and files"
 msgstr "&Fertig, überspringe die restlichen Änderungen und Dateien"
 
@@ -6475,16 +7433,18 @@
 msgid "record change %d/%d to %r?"
 msgstr "Übernehme die Änderung %d/%d an %r?"
 
+msgid "hg record [OPTION]... [FILE]..."
+msgstr "hg record [OPTION]... [DATEI]..."
+
 msgid "interactively select changes to commit"
 msgstr "Interaktive Auswahl der Änderungen zur Übernahme ins Archiv"
 
-#, fuzzy
 msgid ""
 "    If a list of files is omitted, all changes reported by :hg:`status`\n"
 "    will be candidates for recording."
 msgstr ""
 "    Falls keine Liste von Dateien angegeben wird, gelten alle von\n"
-"    \"hg status\" gemeldeten Änderungen als Kandidaten für 'record'."
+"    hg:`status` gemeldeten Änderungen als Kandidaten für 'record'."
 
 msgid ""
 "    You will be prompted for whether to record changes to each\n"
@@ -6524,29 +7484,41 @@
 
 msgid "    This command is not available when committing a merge."
 msgstr ""
-"    Dieses Kommando ist nicht verfügbar, wenn Sie einen Merge committen."
+"    Dieses Kommando ist nicht verfügbar, wenn Sie einen Zusammenführung\n"
+"    übernehmen."
+
+msgid "interactively record a new patch"
+msgstr "Interaktive Aufnahme eines neuen Patches"
+
+msgid ""
+"    See :hg:`help qnew` & :hg:`help record` for more information and\n"
+"    usage.\n"
+"    "
+msgstr ""
+"    Siehe auch :hg:`help qnew` und :hg:`help record` für weitere Infos.\n"
+"    "
 
 msgid "'mq' extension not loaded"
 msgstr "'mq' Erweiterung nicht geladen"
 
-msgid "running non-interactively, use commit instead"
-msgstr "Nicht-interaktive Ausführung, nutze stattdessen 'commit'"
-
-#, fuzzy
+#, python-format
+msgid "running non-interactively, use %s instead"
+msgstr "Nicht-interaktive Ausführung, nutze stattdessen '%s'"
+
 msgid "cannot partially commit a merge (use \"hg commit\" instead)"
 msgstr ""
-"Ein Merge kann nicht teilweise versioniert werden (Gib keine Dateien oder "
-"Muster an)"
+"Eine Zusammenführung kann nicht teilweise übernommen werden (verwende "
+"stattdessen :h:`commit`)"
 
 msgid "no changes to record\n"
 msgstr "Keine Änderungen zu übernehmen\n"
 
-msgid "hg record [OPTION]... [FILE]..."
-msgstr "hg record [OPTION]... [DATEI]..."
-
 msgid "hg qrecord [OPTION]... PATCH [FILE]..."
 msgstr "hg qrecord [OPTION]... PATCH [DATEI]..."
 
+msgid "interactively select changes to refresh"
+msgstr "Interaktive Auswahl der Änderungen für refresh"
+
 msgid "recreates hardlinks between repository clones"
 msgstr "stellt Hardlinks zwischen Repository Clones wieder her"
 
@@ -6599,25 +7571,28 @@
 "    "
 msgstr ""
 
-#, fuzzy
 msgid "hardlinks are not supported on this system"
-msgstr "Hardlinks nicht unterstützt"
+msgstr "Hardlinks werden von diesem System nicht unterstützt"
+
+msgid "must specify local origin repository"
+msgstr "Lokales Quellarchiv muss angegeben werden"
 
 #, python-format
 msgid "relinking %s to %s\n"
 msgstr "Wiederverknüpft: %s nach %s\n"
 
+msgid "there is nothing to relink\n"
+msgstr ""
+
 #, python-format
 msgid "tip has %d files, estimated total number of files: %s\n"
 msgstr ""
 
-#, fuzzy
 msgid "collecting"
-msgstr "Sammle CVS rlog\n"
-
-#, fuzzy
+msgstr "Sammle"
+
 msgid "files"
-msgstr " Dateien"
+msgstr "Dateien"
 
 #, python-format
 msgid "collected %d candidate storage files\n"
@@ -6626,24 +7601,18 @@
 msgid "source and destination are on different devices"
 msgstr "Quelle und Ziel sind auf unterschiedlichen Geräten"
 
-#, python-format
-msgid "not linkable: %s\n"
-msgstr "fester Verweis nicht möglich: %s\n"
-
-#, fuzzy
 msgid "pruning"
-msgstr "Führe aus: %s\n"
+msgstr ""
 
 #, python-format
 msgid "pruned down to %d probably relinkable files\n"
 msgstr ""
 
-#, fuzzy
 msgid "relinking"
-msgstr "Wiederverknüpft: %s nach %s\n"
-
-#, python-format
-msgid "relinked %d files (%d bytes reclaimed)\n"
+msgstr ""
+
+#, python-format
+msgid "relinked %d files (%s reclaimed)\n"
 msgstr ""
 
 msgid "[ORIGIN]"
@@ -6703,12 +7672,15 @@
 "same name.\n"
 msgstr ""
 
+#, python-format
+msgid "custom scheme %s:// conflicts with drive letter %s:\\\n"
+msgstr ""
+
 msgid "share a common history between several working directories"
 msgstr ""
 
-#, fuzzy
 msgid "create a new shared repository"
-msgstr "Kann neues HTTP-Projektarchiv nicht erzeugen"
+msgstr "Erzeuge ein neues gemeinsames Archiv"
 
 msgid ""
 "    Initialize a new repository and working directory that shares its\n"
@@ -6729,6 +7701,17 @@
 "    "
 msgstr ""
 
+msgid "convert a shared repository to a normal one"
+msgstr "Konvertiert ein gemeinsames Archiv in ein normales"
+
+msgid ""
+"    Copy the store data to the repo and remove the sharedpath data.\n"
+"    "
+msgstr ""
+
+msgid "this is not a shared repo"
+msgstr "Dies ist kein gemeinsames Archiv"
+
 msgid "do not create a working copy"
 msgstr "erstelle keine Arbeitskopie"
 
@@ -6784,7 +7767,7 @@
 msgstr ""
 
 msgid "transplant log file is corrupt"
-msgstr ""
+msgstr "transplant Logdatei ist beschädigt"
 
 #, python-format
 msgid "working dir not at transplant parent %s"
@@ -6793,6 +7776,9 @@
 msgid "commit failed"
 msgstr ""
 
+msgid "filter corrupted changeset (no user or date)"
+msgstr "filtriere beschädigte Änderungssätze (ohne Nutzer oder Datum)"
+
 msgid ""
 "y: transplant this changeset\n"
 "n: skip this changeset\n"
@@ -6809,6 +7795,36 @@
 msgid "no such option\n"
 msgstr ""
 
+msgid "pull patches from REPO"
+msgstr ""
+
+msgid "BRANCH"
+msgstr ""
+
+msgid "pull patches from branch BRANCH"
+msgstr ""
+
+msgid "pull all changesets up to BRANCH"
+msgstr ""
+
+msgid "skip over REV"
+msgstr ""
+
+msgid "merge at REV"
+msgstr ""
+
+msgid "append transplant info to log message"
+msgstr ""
+
+msgid "continue last transplant session after repair"
+msgstr ""
+
+msgid "filter changesets through command"
+msgstr "Filtriere Änderungssätze durch Programm"
+
+msgid "hg transplant [-s REPO] [-b BRANCH [-a]] [-p REV] [-m REV] [REV]..."
+msgstr ""
+
 msgid "transplant changesets from another branch"
 msgstr ""
 
@@ -6889,43 +7905,14 @@
 msgid "outstanding local changes"
 msgstr ""
 
-#, fuzzy
-msgid ""
-"``transplanted(set)``\n"
-"    Transplanted changesets in set."
-msgstr ""
-"``p1(set)``\n"
-"  Erster Vorfahr der Änderungssätze in set."
-
-msgid "pull patches from REPO"
-msgstr ""
-
-msgid "BRANCH"
-msgstr ""
-
-msgid "pull patches from branch BRANCH"
-msgstr ""
-
-msgid "pull all changesets up to BRANCH"
-msgstr ""
-
-msgid "skip over REV"
-msgstr ""
-
-msgid "merge at REV"
-msgstr ""
-
-msgid "append transplant info to log message"
-msgstr ""
-
-msgid "continue last transplant session after repair"
-msgstr ""
-
-#, fuzzy
-msgid "filter changesets through command"
-msgstr "%d Änderungssätze gefunden\n"
-
-msgid "hg transplant [-s REPO] [-b BRANCH [-a]] [-p REV] [-m REV] [REV]..."
+msgid ""
+"``transplanted([set])``\n"
+"    Transplanted changesets in set, or all transplanted changesets."
+msgstr ""
+
+msgid ""
+":transplanted: String. The node identifier of the transplanted\n"
+"    changeset if any."
 msgstr ""
 
 msgid "allow the use of MBCS paths with problematic encodings"
@@ -7083,13 +8070,12 @@
 "** = %sdecode:\n"
 msgstr ""
 
-#, fuzzy
 msgid ""
 "win32text is deprecated: http://mercurial.selenic.com/wiki/"
 "Win32TextExtension\n"
 msgstr ""
-"Weitere Informationen:\n"
-"http://mercurial.selenic.com/wiki/RebaseExtension\n"
+"win32text ist veraltet: http://mercurial.selenic.com/wiki/"
+"Win32TextExtension\n"
 
 msgid "discover and advertise repositories on the local network"
 msgstr ""
@@ -7123,29 +8109,35 @@
 msgid "archive prefix contains illegal components"
 msgstr "Präfix des Archivs enthält nicht zulässige Komponenten"
 
-msgid "cannot give prefix when archiving to files"
-msgstr "Bei Archivierung in Dateien kann kein Präfix angegeben werden"
-
-#, python-format
-msgid "unknown archive type '%s'"
-msgstr "Unbekannter Archivtyp '%s'"
-
 msgid "archiving"
 msgstr ""
 
 #, python-format
+msgid "malformed line in .hg/bookmarks: %r\n"
+msgstr ""
+
+#, python-format
 msgid "bookmark '%s' contains illegal character"
 msgstr "Lesezeichen '%s' enthält illegale Zeichen"
 
+#, python-format
+msgid "branch %s not found"
+msgstr "Zweig '%s' nicht gefunden"
+
+#, python-format
+msgid "updating bookmark %s\n"
+msgstr "Aktualisiere Lesezeichen %s\n"
+
+#, python-format
+msgid "not updating divergent bookmark %s\n"
+msgstr "Aktualisiere nicht divergierendes Lesezeichen %s\n"
+
 msgid "searching for changed bookmarks\n"
 msgstr "Suche nach geänderten Lesezeichen\n"
 
 msgid "no changed bookmarks found\n"
 msgstr "Keine geänderten Lesezeichen gefunden\n"
 
-msgid "invalid changegroup"
-msgstr ""
-
 msgid "unknown parent"
 msgstr "Unbekannte Vorgängerversion"
 
@@ -7156,21 +8148,21 @@
 msgid "cannot create new bundle repository"
 msgstr "Neues Bündelarchiv kann nicht erzeugt werden"
 
-#, fuzzy, python-format
+#, python-format
 msgid "stream ended unexpectedly (got %d bytes, expected %d)"
-msgstr "vorzeitiges Dateiende beim Lesen (%d Byte erhalten, %d erwartet)"
-
-#, fuzzy, python-format
+msgstr "vorzeitiges Ende des Stroms (%d Byte erhalten, %d erwartet)"
+
+#, python-format
 msgid "invalid chunk length %d"
-msgstr "grep: Ungültiges Suchmuster: %s\n"
-
-#, fuzzy, python-format
+msgstr "Ungültige Abschnitsslänge %d"
+
+#, python-format
 msgid "%s: not a Mercurial bundle"
 msgstr "%s: keine Mercurial Bündeldatei"
 
-#, fuzzy, python-format
+#, python-format
 msgid "%s: unknown bundle version %s"
-msgstr "%s: unbekannte Bündelversion"
+msgstr "%s: unbekannte Bündelversion %s"
 
 msgid "empty username"
 msgstr "Leerere Benutzername"
@@ -7183,6 +8175,10 @@
 msgid "the name '%s' is reserved"
 msgstr "der name '%s' ist reserviert"
 
+#, python-format
+msgid "uncommitted changes in subrepo %s"
+msgstr "Unversionierte Änderungen in Unterarchiv %s"
+
 msgid "options --message and --logfile are mutually exclusive"
 msgstr "Optionen --message und --logfile schließen sich gegenseitig aus"
 
@@ -7200,24 +8196,21 @@
 msgid "invalid format spec '%%%s' in output filename"
 msgstr "Ungültiges Format '%%%s' für den Namen der Ausgabedatei"
 
-#, python-format
-msgid "adding %s\n"
-msgstr "Füge %s hinzu\n"
-
-#, python-format
-msgid "removing %s\n"
-msgstr "Entferne %s\n"
-
-#, python-format
-msgid "recording removal of %s as rename to %s (%d%% similar)\n"
-msgstr ""
-"Interpretiere die Entfernung von %s als Umbenennung in %s (%d%% ähnlich)\n"
-
-#, python-format
-msgid "%s has not been committed yet, so no copy data will be stored for %s.\n"
-msgstr ""
-"%s ist nicht im Archiv, daher gilt %s als neu hinzugefügt (nicht als "
-"kopiert).\n"
+msgid "cannot specify --changelog and --manifest at the same time"
+msgstr "--changelog und --manifest können nicht gleichzeitig angegeben werden"
+
+msgid "cannot specify filename with --changelog or --manifest"
+msgstr ""
+
+msgid "cannot specify --changelog or --manifest without a repository"
+msgstr ""
+
+msgid "invalid arguments"
+msgstr "ungültige Parameter"
+
+#, python-format
+msgid "revlog '%s' not found"
+msgstr "revlog '%s' nicht gefunden"
 
 #, python-format
 msgid "%s: not copying - file is not managed\n"
@@ -7235,13 +8228,13 @@
 msgid "%s: not overwriting - file exists\n"
 msgstr "%s: kann nicht kopiert werden - Datei existiert bereits\n"
 
-#, fuzzy, python-format
+#, python-format
 msgid "%s: not recording move - %s does not exist\n"
-msgstr "%s:%d Knoten existiert nicht\n"
-
-#, fuzzy, python-format
+msgstr "%s: Verschiebung nicht aufgezeichnet - %s existiert nicht\n"
+
+#, python-format
 msgid "%s: not recording copy - %s does not exist\n"
-msgstr "%s:%d Knoten existiert nicht\n"
+msgstr "%s: Kopieren nicht aufgezeichnet - %s existiert nicht\n"
 
 #, python-format
 msgid "%s: deleted in working copy\n"
@@ -7272,9 +8265,6 @@
 msgid "destination %s is not a directory"
 msgstr "Ziel %s ist kein Verzeichnis"
 
-msgid "no files to copy"
-msgstr "Keine Dateien zu kopieren"
-
 msgid "(consider using --after)\n"
 msgstr "(erwäge die Option --after)\n"
 
@@ -7360,28 +8350,31 @@
 msgstr ""
 "Kopien/Umbenennungen können nur zu expliziten Dateinamen verfolgt werden"
 
-#, fuzzy, python-format
+#, python-format
+msgid "adding %s\n"
+msgstr "Füge %s hinzu\n"
+
+#, python-format
 msgid "skipping missing subrepository: %s\n"
-msgstr "Übernehme Unterarchiv %s\n"
+msgstr "Überspringe fehlendes Unterarchiv: %s\n"
 
 msgid "HG: Enter commit message.  Lines beginning with 'HG:' are removed."
 msgstr ""
-"HG: Bitte gib eine Versions-Meldung ein. Zeilen beginnend mit 'HG:' werden "
-"entfernt."
+"HG: Bitte gib eine Versions-Meldung ein. Zeilen beginnend mit 'HG:' werden"
 
 msgid "HG: Leave message empty to abort commit."
-msgstr "HG: Leere Versionsmeldung wird das Übernehmen abbrechen."
+msgstr "HG: entfernt. Leere Versionsmeldung wird das Übernehmen abbrechen."
 
 #, python-format
 msgid "HG: user: %s"
 msgstr "HG: Benutzer: %s"
 
 msgid "HG: branch merge"
-msgstr ""
+msgstr "HG: Zweigzusammenführung"
 
 #, python-format
 msgid "HG: branch '%s'"
-msgstr ""
+msgstr "HG: Zweig '%s'"
 
 #, python-format
 msgid "HG: subrepo %s"
@@ -7389,7 +8382,7 @@
 
 #, python-format
 msgid "HG: added %s"
-msgstr ""
+msgstr "HG: Hinzugefügt %s"
 
 #, python-format
 msgid "HG: changed %s"
@@ -7397,7 +8390,7 @@
 
 #, python-format
 msgid "HG: removed %s"
-msgstr "HG: entfernt %s"
+msgstr "HG: Entfernt %s"
 
 msgid "HG: no files changed"
 msgstr "HG: Keine Dateiänderungen"
@@ -7405,4259 +8398,6 @@
 msgid "empty commit message"
 msgstr "Leere Versions-Meldung"
 
-msgid "add the specified files on the next commit"
-msgstr "Fügt die angegebenen Dateien der nächsten Version hinzu"
-
-msgid ""
-"    Schedule files to be version controlled and added to the\n"
-"    repository."
-msgstr "    Merkt Dateien zur Versionskontrolle im Projektarchiv vor."
-
-#, fuzzy
-msgid ""
-"    The files will be added to the repository at the next commit. To\n"
-"    undo an add before that, see :hg:`forget`."
-msgstr ""
-"    Die Dateien werden dem Projektarchiv beim nächsten Übernehmen (commit)\n"
-"    hinzugefügt. Um diese Aktion vorher rückgängig zu machen, siehe hg "
-"revert."
-
-#, fuzzy
-msgid "    If no names are given, add all files to the repository."
-msgstr ""
-"    Wenn keine Namen angegeben sind, füge alle Dateien dem Projektarchiv\n"
-"    hinzu.\n"
-"    "
-
-msgid "    .. container:: verbose"
-msgstr ""
-
-msgid ""
-"       An example showing how new (unknown) files are added\n"
-"       automatically by :hg:`add`::"
-msgstr ""
-
-#, fuzzy
-msgid ""
-"         $ ls\n"
-"         foo.c\n"
-"         $ hg status\n"
-"         ? foo.c\n"
-"         $ hg add\n"
-"         adding foo.c\n"
-"         $ hg status\n"
-"         A foo.c"
-msgstr ""
-"             A  C  M  !\n"
-"      keine  W  EL W  E\n"
-"      -f     E  EL EL E\n"
-"      -A     W  W  W  E\n"
-"      -Af    E  E  E  E"
-
-msgid ""
-"    Returns 0 if all files are successfully added.\n"
-"    "
-msgstr ""
-
-msgid "add all new files, delete all missing files"
-msgstr "Fügt alle neuen Dateien hinzu, löscht alle fehlenden Dateien"
-
-msgid ""
-"    Add all new files and remove all missing files from the\n"
-"    repository."
-msgstr ""
-"    Füge alle neuen Dateien hinzu und lösche alle fehlenden Dateien aus\n"
-"    dem Projektarchiv."
-
-#, fuzzy
-msgid ""
-"    New files are ignored if they match any of the patterns in\n"
-"    ``.hgignore``. As with add, these changes take effect at the next\n"
-"    commit."
-msgstr ""
-"    Neue Dateien werden ignoriert, wenn sie einem der Muster aus .hgignore\n"
-"    entsprechen. Genau wie add, wirken diese Änderungen erst beim nächsten\n"
-"    Übernehmen (commit)."
-
-#, fuzzy
-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"
-"    option takes a percentage between 0 (disabled) and 100 (files must\n"
-"    be identical) as its parameter. 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 ""
-"    Nutze die Option -s um umbenannte Dateien zu entdecken. Mit einem\n"
-"    Parameter > 0 wird jede gelöschte Datei mit jeder hinzugefügten "
-"verglichen\n"
-"    und bei genügender Ähnlichkeit als Umbenennung markiert. Diese Option\n"
-"    erwartet eine Prozentangabe zwischen 0 (deaktiviert) und 100 (Dateien\n"
-"    müssen identisch sein) als Parameter. Umbenennungen auf diese Weise zu\n"
-"    erkennen, kann aufwändig sein.\n"
-"    "
-
-msgid "similarity must be a number"
-msgstr "similarity muss eine Zahl sein"
-
-msgid "similarity must be between 0 and 100"
-msgstr "similarity muss zwischen 0 und 100 liegen"
-
-msgid "show changeset information by line for each file"
-msgstr "Zeigt Informationen über Änderungssätze pro Dateizeile an"
-
-msgid ""
-"    List changes in files, showing the revision id responsible for\n"
-"    each line"
-msgstr ""
-"    Listet Änderungen in Dateien mit der zugehörigen Revisions-Id für jede\n"
-"    Zeile auf"
-
-msgid ""
-"    This command is useful for discovering when a change was made and\n"
-"    by whom."
-msgstr ""
-"    Dieser Befehl ist nützlich, um herauszufinden wer eine Änderung gemacht\n"
-"    hat oder wann eine Änderung stattgefunden hat."
-
-#, fuzzy
-msgid ""
-"    Without the -a/--text option, annotate will avoid processing files\n"
-"    it detects as binary. With -a, annotate will annotate the file\n"
-"    anyway, although the results will probably be neither useful\n"
-"    nor desirable."
-msgstr ""
-"    Ohne den Schalter -a/--text wird die Verarbeitung von Binärdateien\n"
-"    vermieden. Mit -a werden auch solche Dateien verarbeitet, "
-"wahrscheinlich\n"
-"    mit unerwünschtem Ergebnis.\n"
-"    "
-
-msgid "at least one filename or pattern is required"
-msgstr "Mindestens ein Dateiname oder Muster benötigt"
-
-msgid "at least one of -n/-c is required for -l"
-msgstr "Zumindest -n oder -c werden für -l benötigt"
-
-#, python-format
-msgid "%s: binary file\n"
-msgstr "%s: Binärdatei\n"
-
-msgid "create an unversioned archive of a repository revision"
-msgstr "Erzeugt ein unversioniertes Archiv einer Projektarchiv-Revision"
-
-msgid ""
-"    By default, the revision used is the parent of the working\n"
-"    directory; use -r/--rev to specify a different revision."
-msgstr ""
-"    Standardmäßig wird die Vorgängerversion der im Arbeitsverzeichnis "
-"gefundenen\n"
-"    verwendet. Eine andere Reversion kann mit \"-r/--rev\" angegeben werden."
-
-msgid ""
-"    The archive type is automatically detected based on file\n"
-"    extension (or override using -t/--type)."
-msgstr ""
-
-msgid "    Valid types are:"
-msgstr ""
-
-#, fuzzy
-msgid ""
-"    :``files``: a directory full of files (default)\n"
-"    :``tar``:   tar archive, uncompressed\n"
-"    :``tbz2``:  tar archive, compressed using bzip2\n"
-"    :``tgz``:   tar archive, compressed using gzip\n"
-"    :``uzip``:  zip archive, uncompressed\n"
-"    :``zip``:   zip archive, compressed using deflate"
-msgstr ""
-"      \"files\" (Standard): ein Verzeichnis voller Dateien\n"
-"      \"tar\": tar Archiv, unkomprimiert\n"
-"      \"tbz2\": tar Archiv, komprimiert mit bzip2\n"
-"      \"tgz\": tar Archiv, komprimiert mit gzip\n"
-"      \"uzip\": zip Archiv, unkomprimiert\n"
-"      \"zip\": zip Archiv, komprimiert mit deflate"
-
-#, fuzzy
-msgid ""
-"    The exact name of the destination archive or directory is given\n"
-"    using a format string; see :hg:`help export` for details."
-msgstr ""
-"    Der exakte Name des Zielarchivs oder -verzeichnises wird mit\n"
-"    einem Format-String angegeben; siehe 'hg help export' für Details."
-
-#, fuzzy
-msgid ""
-"    Each member added to an archive file has a directory prefix\n"
-"    prepended. Use -p/--prefix to specify a format string for the\n"
-"    prefix. The default is the basename of the archive, with suffixes\n"
-"    removed."
-msgstr ""
-"    Jedem Element des Archivs wird ein Verzeichnis-Präfix vorangestellt.\n"
-"    Nutze -p/--prefix um eine Format-String für das Präfix anzugeben.\n"
-"    Als Standard wird der Dateiname des Archive ohne Dateiendung genutzt.\n"
-"    "
-
-msgid "no working directory: please specify a revision"
-msgstr "Kein Arbeitsverzeichnis: Bitte gib eine Revision an"
-
-msgid "repository root cannot be destination"
-msgstr "Projektarchiv-Wurzel kann nicht als Ziel angegeben werden"
-
-msgid "cannot archive plain files to stdout"
-msgstr ""
-"Ungepacktes Archiv kann nicht auf der Standardausgabe ausgegeben werden"
-
-msgid "reverse effect of earlier changeset"
-msgstr "Macht einen vorangegangen Änderungssatz rückgängig"
-
-#, fuzzy
-msgid ""
-"    Prepare a new changeset with the effect of REV undone in the\n"
-"    current working directory."
-msgstr "Setzt die Vorgängerversionen des Arbeitsverzeichnisses manuell"
-
-msgid ""
-"    If REV is the parent of the working directory, then this new changeset\n"
-"    is committed automatically. Otherwise, hg needs to merge the\n"
-"    changes and the merged result is left uncommitted."
-msgstr ""
-
-msgid ""
-"    By default, the pending changeset will have one parent,\n"
-"    maintaining a linear history. With --merge, the pending changeset\n"
-"    will instead have two parents: the old parent of the working\n"
-"    directory and a new child of REV that simply undoes REV."
-msgstr ""
-
-msgid ""
-"    Before version 1.7, the behavior without --merge was equivalent to\n"
-"    specifying --merge followed by :hg:`update --clean .` to cancel\n"
-"    the merge and leave the child of REV as a head to be merged\n"
-"    separately."
-msgstr ""
-
-msgid "please specify just one revision"
-msgstr "Bitte nur eine Revision angeben"
-
-msgid "please specify a revision to backout"
-msgstr "Bitte eine Revision, die zurückgezogen werden soll, angeben"
-
-msgid "cannot backout change on a different branch"
-msgstr "Kann die Änderung auf einem abweichenden Zweig nicht rückgängig machen"
-
-msgid "cannot backout a change with no parents"
-msgstr "Kann eine Änderung ohne Vorgängerversion nicht rückgängig machen"
-
-msgid "cannot backout a merge changeset without --parent"
-msgstr "Kann eine Zusammenführung nicht ohne --parent rückgängig machen"
-
-#, python-format
-msgid "%s is not a parent of %s"
-msgstr "%s ist kein Vorgänger von %s"
-
-msgid "cannot use --parent on non-merge changeset"
-msgstr "Kann mit --parent nur Zusammenführung rückgängig machen"
-
-#, python-format
-msgid "changeset %s backs out changeset %s\n"
-msgstr "Änderungssatz %s macht Änderungssatz %s rückgängig\n"
-
-#, python-format
-msgid "merging with changeset %s\n"
-msgstr "Führe mit Änderungssatz %s zusammen\n"
-
-msgid "subdivision search of changesets"
-msgstr "Binäre Suche von Änderungssätzen"
-
-msgid ""
-"    This command helps to find changesets which introduce problems. To\n"
-"    use, mark the earliest changeset you know exhibits the problem as\n"
-"    bad, then mark the latest changeset which is free from the problem\n"
-"    as good. Bisect will update your working directory to a revision\n"
-"    for testing (unless the -U/--noupdate option is specified). Once\n"
-"    you have performed tests, mark the working directory as good or\n"
-"    bad, and bisect will either update to another candidate changeset\n"
-"    or announce that it has found the bad revision."
-msgstr ""
-"    Dieser Befehl hilft Änderungssätze zu finden, die Probleme eingeführt\n"
-"    haben. Dies geschieht, indem eine Revision nach der anderen geladen und\n"
-"    getestet wird, bis zwei aufeinanderfolgende Revisionen ohne und mit\n"
-"    Fehler gefunden wurden."
-
-msgid ""
-"    As a shortcut, you can also use the revision argument to mark a\n"
-"    revision as good or bad without checking it out first."
-msgstr ""
-"    Markiere zunächst die früheste Version, von der bekannt ist, dass der\n"
-"    Fehler dort auftritt und die entsprechende letzte fehlerfreie Version.\n"
-"    Bisect wird das Arbeitsverzeichnis dann auf eine zu testede Revision\n"
-"    bringen (es sei denn, die Option -U/--noupdate ist angegeben). Nachdem\n"
-"    der Test ausgeführt wurde, muss diese Revision als gut oder schlecht\n"
-"    markiert werden. Bisect wird dann zur nächsten Revision wechseln oder\n"
-"    das Ziel (die erste schlechte Revision) melden."
-
-#, fuzzy
-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 ""
-"    Die Markierung kann automatisch durch einem Testprogramm stattfinden.\n"
-"    Ein Rückgabewert von 0 bedeutet dabei Erfolg, 125 Überspringen, 127\n"
-"    (Kommando nicht gefunden) Abbruch und jeder andere positive Wert "
-"Fehler.\n"
-"    "
-
-msgid "The first good revision is:\n"
-msgstr "Die erste fehlerfreie Revision ist:\n"
-
-msgid "The first bad revision is:\n"
-msgstr "Die erste fehlerhafte Revision ist:\n"
-
-#, python-format
-msgid ""
-"Not all ancestors of this changeset have been checked.\n"
-"To check the other ancestors, start from the common ancestor, %s.\n"
-msgstr ""
-
-msgid "Due to skipped revisions, the first good revision could be any of:\n"
-msgstr ""
-"Aufgrund übersprungener Revisionen könnte die erste fehlerfreie Revision\n"
-"eine der folgenden sein:\n"
-
-msgid "Due to skipped revisions, the first bad revision could be any of:\n"
-msgstr ""
-"Aufgrund übersprungener Revisionen könnte die erste fehlerhafte Revision\n"
-"eine der folgenden sein:\n"
-
-msgid "cannot bisect (no known good revisions)"
-msgstr "Kann Suche nicht starten (keine bekannte fehlerfreie Revision)"
-
-msgid "cannot bisect (no known bad revisions)"
-msgstr "Kann Suche nicht starten (keine bekannte fehlerhafte Revision)"
-
-msgid "(use of 'hg bisect <cmd>' is deprecated)\n"
-msgstr "(Die Syntax 'hg bisect <cmd>' ist veraltet)\n"
-
-msgid "incompatible arguments"
-msgstr "Inkompatible Argumente"
-
-#, python-format
-msgid "failed to execute %s"
-msgstr "Fehler bei der Ausführung von %s"
-
-#, python-format
-msgid "%s killed"
-msgstr "%s gestorben"
-
-#, python-format
-msgid "Changeset %d:%s: %s\n"
-msgstr "Änderungssatz %d:%s: %s\n"
-
-#, python-format
-msgid "Testing changeset %d:%s (%d changesets remaining, ~%d tests)\n"
-msgstr "Teste Änderungssatz %d:%s (%d Änderungssätze verbleiben, ~%d Tests)\n"
-
-msgid "track a line of development with movable markers"
-msgstr "Folgt einem Entwicklungsstrang mit einer beweglichen Markierung"
-
-msgid ""
-"    Bookmarks are pointers to certain commits that move when\n"
-"    committing. Bookmarks are local. They can be renamed, copied and\n"
-"    deleted. It is possible to use bookmark names in :hg:`merge` and\n"
-"    :hg:`update` to merge and update respectively to a given bookmark."
-msgstr ""
-"    Lesezeichen sind Zeiger auf bestimmte Versionen, die mitwandern,\n"
-"    wenn eine neuen Version erzeugt wird. Lesezeichen sind nur lokal.\n"
-"    Sie können umbenannt, kopiert und gelöscht werden. Es ist möglich,\n"
-"    Lesezeichen bei :hg: `merge` und :hg:`update` zu nutzen, um auf das\n"
-"    angegebene Lesezeichen zu aktualisieren."
-
-msgid ""
-"    You can use :hg:`bookmark NAME` to set a bookmark on the working\n"
-"    directory's parent revision with the given name. If you specify\n"
-"    a revision using -r REV (where REV may be an existing bookmark),\n"
-"    the bookmark is assigned to that revision."
-msgstr ""
-"    Man kann :hg:`bookmark NAME` aufrufen, um ein Lesezeichen mit dem\n"
-"    angegeben Namen auf der aktuellen Spitze (tip) zu setzen. Bei Angabe\n"
-"    einer Revision mit -r REV (REV kann ein vorhandenes Lesezeichen sein) \n"
-"    wird das Lesezeichen auf dieser Revision gesetzt.\n"
-"    "
-
-msgid ""
-"    Bookmarks can be pushed and pulled between repositories (see :hg:`help\n"
-"    push` and :hg:`help pull`). This requires both the local and remote\n"
-"    repositories to support bookmarks. For versions prior to 1.8, this "
-"means\n"
-"    the bookmarks extension must be enabled.\n"
-"    "
-msgstr ""
-"    Lesezeichen können zwischen Mercurial Archiven ausgetauscht werden.\n"
-"    (siehe :hg:`help push` bzw. :hg:`help pull`). Beide Archive müssen "
-"dafür\n"
-"    Lesezeichen unterstützen. Bis Mercurial version 1.8 muss hierfür die\n"
-"    Lesezeichenerweiterung (bookmarks extension) angeschaltet werden.\n"
-"    "
-
-msgid "a bookmark of this name does not exist"
-msgstr "Es existiert kein Lesezeichen mit diesem Namen"
-
-msgid "a bookmark of the same name already exists"
-msgstr "Ein Lesezeichen mit diesem Namen existiert bereits"
-
-msgid "new bookmark name required"
-msgstr "Ein neuer Name für das Lesezeichen muss übergeben werden"
-
-msgid "bookmark name required"
-msgstr "Ein Name für das Lesezeichen muss übergeben werden"
-
-msgid "bookmark name cannot contain newlines"
-msgstr "Ein Lesezeichenname darf keine Zeilenumbrüche enthalten"
-
-msgid "bookmark names cannot consist entirely of whitespace"
-msgstr "Ein Lesezeichenname darf nicht ausschließlich aus Leerraum bestehen"
-
-msgid "a bookmark cannot have the name of an existing branch"
-msgstr ""
-"Ein Lesezeichen darf nicht denselben Namen wie ein existierender Zweig haben"
-
-msgid "no bookmarks set\n"
-msgstr "Keine Lesezeichen gesetzt\n"
-
-msgid "set or show the current branch name"
-msgstr "Setzt oder zeigt den Namen des aktuellen Zweigs"
-
-msgid ""
-"    With no argument, show the current branch name. With one argument,\n"
-"    set the working directory branch name (the branch will not exist\n"
-"    in the repository until the next commit). Standard practice\n"
-"    recommends that primary development take place on the 'default'\n"
-"    branch."
-msgstr ""
-"    Ohne Parameter wird der Name des aktuellen Zweiges angezeigt. Mit einem\n"
-"    Parameter wird der Zweigname des Arbeitsverzeichnisses gesetzt. Der\n"
-"    Zweig existiert nicht im Projektarchiv und muss erst übernommen werden.\n"
-"    Es wird empfohlen den 'default'-Zweig als Hauptentwicklungszweig zu\n"
-"    nutzen."
-
-msgid ""
-"    Unless -f/--force is specified, branch will not let you set a\n"
-"    branch name that already exists, even if it's inactive."
-msgstr ""
-"    Außer bei Angabe von -f/--force lässt 'hg branch' nicht zu, einen Namen\n"
-"    zu vergeben, der einen existierenden Zweig überdeckt."
-
-msgid ""
-"    Use -C/--clean to reset the working directory branch to that of\n"
-"    the parent of the working directory, negating a previous branch\n"
-"    change."
-msgstr ""
-"    Nutze -C/--clean um den neuen Namen rückgängig zu machen. Die "
-"Arbeitskopie\n"
-"    hat dann wieder den selben Namen wie der Vorgänger im Projektarchiv."
-
-#, fuzzy
-msgid ""
-"    Use the command :hg:`update` to switch to an existing branch. Use\n"
-"    :hg:`commit --close-branch` to mark this branch as closed."
-msgstr ""
-"    Um auf einen anderen (existierenden) Zweig zu wechseln, siehe 'hg "
-"update'.\n"
-"    "
-
-#, python-format
-msgid "reset working directory to branch %s\n"
-msgstr "Setze Arbeitsverzeichnis auf Zweig %s zurück\n"
-
-#, fuzzy
-msgid ""
-"a branch of the same name already exists (use 'hg update' to switch to it)"
-msgstr "Ein Zweig mit diesem Namen existiert bereits (--force zum Erzwingen)"
-
-#, python-format
-msgid "marked working directory as branch %s\n"
-msgstr "Arbeitsverzeichnis wurde als Zweig %s markiert\n"
-
-msgid "list repository named branches"
-msgstr "Zeigt alle benannten Zweige des Projektarchiv an"
-
-#, fuzzy
-msgid ""
-"    List the repository's named branches, indicating which ones are\n"
-"    inactive. If -c/--closed is specified, also list branches which have\n"
-"    been marked closed (see :hg:`commit --close-branch`)."
-msgstr ""
-"    Listet die benannten Zweige des Projektarchiv auf und zeigt an, welche\n"
-"    inaktiv sind. Zweige, die durch \"hg commit --close-branch\" "
-"geschlossen\n"
-"    wurden, werden nur mit dem Schalter -c/--closed angezeigt."
-
-msgid ""
-"    If -a/--active is specified, only show active branches. A branch\n"
-"    is considered active if it contains repository heads."
-msgstr ""
-"    Mit der Option -a/--active werden nur aktive Zweige ausgegeben. Ein\n"
-"    Zweig gilt als aktiv, wenn er echte Köpfe besitzt."
-
-#, fuzzy
-msgid "    Use the command :hg:`update` to switch to an existing branch."
-msgstr ""
-"    Um auf einen anderen (existierenden) Zweig zu wechseln, siehe 'hg "
-"update'.\n"
-"    "
-
-msgid ""
-"    Returns 0.\n"
-"    "
-msgstr ""
-
-msgid " (closed)"
-msgstr ""
-
-msgid " (inactive)"
-msgstr ""
-
-msgid "create a changegroup file"
-msgstr "Erzeugt eine Datei mit Änderungsgruppen"
-
-msgid ""
-"    Generate a compressed changegroup file collecting changesets not\n"
-"    known to be in another repository."
-msgstr ""
-"    Erzeuge eine gepackte Datei der Änderungsgruppen, die alle Änderungs-\n"
-"    sätze enthält, die in einem anderen Archiv nicht vorhanden sind."
-
-#, fuzzy
-msgid ""
-"    If you omit the destination repository, then hg assumes the\n"
-"    destination will have all the nodes you specify with --base\n"
-"    parameters. To create a bundle containing all changesets, use\n"
-"    -a/--all (or --base null)."
-msgstr ""
-"    Falls kein Zielarchiv angegeben ist, wird angenommen, dass das Ziel\n"
-"    alle Knoten enthält, die durch einen oder mehrere --base Parameter\n"
-"    angegeben wurden. Um ein Bündel aller Änderungssätze zu erzeugen, nutze\n"
-"    -a/--all (oder --base null)."
-
-msgid ""
-"    You can change compression method with the -t/--type option.\n"
-"    The available compression methods are: none, bzip2, and\n"
-"    gzip (by default, bundles are compressed using bzip2)."
-msgstr ""
-"    Die angewendete Kompressionsmethode kann mit der Option -t/--type\n"
-"    gewählt werden: none (nicht komprimieren), bzip2 (standard) oder gzip."
-
-msgid ""
-"    The bundle file can then be transferred using conventional means\n"
-"    and applied to another repository with the unbundle or pull\n"
-"    command. This is useful when direct push and pull are not\n"
-"    available or when exporting an entire repository is undesirable."
-msgstr ""
-"    Die Bündeldatei kann mit üblichen Mitteln transportiert und auf ein "
-"anderes\n"
-"    Archiv mit dem 'unbundle' oder 'pull'-Befehl angewandt werden.\n"
-"    Dies ist nützlich wenn ein direktes Schieben oder Herunterladen von\n"
-"    Änderungen nicht verfügbar ist oder der Export eines kompletten Archivs\n"
-"    unerwünscht ist."
-
-#, fuzzy
-msgid ""
-"    Applying bundles preserves all changeset contents including\n"
-"    permissions, copy/rename information, and revision history."
-msgstr ""
-"    Die Anwendung von Bündeln bewahrt die Inhalte aller Änderungssätze,\n"
-"    Berechtigungen, Kopier/Umbennungs-Informationen und die "
-"Revisionshistorie.\n"
-"    "
-
-msgid ""
-"    Returns 0 on success, 1 if no changes found.\n"
-"    "
-msgstr ""
-
-msgid "--base is incompatible with specifying a destination"
-msgstr "Bei Nutzung von --base kann kein Zielarchiv angegeben werden"
-
-msgid "unknown bundle type specified with --type"
-msgstr "Unbekannter Bündeltyp mit --type angegeben"
-
-msgid "output the current or given revision of files"
-msgstr ""
-"Gibt den Inhalt von Dateien in der aktuellen oder angegebenen Revision aus"
-
-msgid ""
-"    Print the specified files as they were at the given revision. If\n"
-"    no revision is given, the parent of the working directory is used,\n"
-"    or tip if no revision is checked out."
-msgstr ""
-"    Gibt die angegebenen Dateien aus, wie sie zur gegebenen Revision waren.\n"
-"    Wenn keine Revision angegeben wird, wird die Vorgängerversion des\n"
-"    Arbeitsverzeichnisses genutzt, oder die Spitze, falls keine\n"
-"    Revision geladen ist."
-
-#, fuzzy
-msgid ""
-"    Output may be to a file, in which case the name of the file is\n"
-"    given using a format string. The formatting rules are the same as\n"
-"    for the export command, with the following additions:"
-msgstr ""
-"    Die Ausgabe kann in eine Datei erfolgen. In diesem Fall wird der Name\n"
-"    der Datei mit einem Formatstring vorgegeben. Die Formatierungsregeln "
-"sind\n"
-"    dem 'export'-Befehl analog, mit folgenden Ergänzungen::"
-
-#, fuzzy
-msgid ""
-"    :``%s``: basename of file being printed\n"
-"    :``%d``: dirname of file being printed, or '.' if in repository root\n"
-"    :``%p``: root-relative path name of file being printed"
-msgstr ""
-"      %s   Dateiname der ausgegebenen Datei\n"
-"      %d   Verzeichnisname der Datei oder '.' in der Wurzel des Archivs\n"
-"      %p   Pfad und Dateiname relativ zur Archiv-Wurzel\n"
-"    "
-
-msgid "make a copy of an existing repository"
-msgstr "Erzeugt eine Kopie eines bestehenden Projektarchivs"
-
-msgid "    Create a copy of an existing repository in a new directory."
-msgstr "    Kopiert ein bestehendes Projektarchiv in ein neues Verzeichnis."
-
-msgid ""
-"    If no destination directory name is specified, it defaults to the\n"
-"    basename of the source."
-msgstr ""
-"    Wird kein Zielverzeichnis angegeben, wird der Basisname der Quelle "
-"genutzt."
-
-#, fuzzy
-msgid ""
-"    The location of the source is added to the new repository's\n"
-"    ``.hg/hgrc`` file, as the default to be used for future pulls."
-msgstr ""
-"    Die Adresse der Quelle wird der .hg/hgrc Datei des neuen Archivs\n"
-"    als Standard für entfernte Aktionen (pull/push) hinzugefügt."
-
-#, fuzzy
-msgid "    See :hg:`help urls` for valid source format details."
-msgstr "    Siehe 'hg help urls' für Details gültiger Quellformate."
-
-#, fuzzy
-msgid ""
-"    It is possible to specify an ``ssh://`` URL as the destination, but no\n"
-"    ``.hg/hgrc`` and working directory will be created on the remote side.\n"
-"    Please see :hg:`help urls` for important details about ``ssh://`` URLs."
-msgstr ""
-"    Es ist möglich eine ``ssh://`` URL als Ziel anzugeben, aber es werden "
-"weder\n"
-"    .hg/hgrc noch Arbeitsverzeichnis auf der entfernten Seite angelegt.\n"
-"    Wichtige Details zu URLs mit ``ssh://`` finden sich unter 'hg help urls'."
-
-msgid ""
-"    A set of changesets (tags, or branch names) to pull may be specified\n"
-"    by listing each changeset (tag, or branch name) with -r/--rev.\n"
-"    If -r/--rev is used, the cloned repository will contain only a subset\n"
-"    of the changesets of the source repository. Only the set of changesets\n"
-"    defined by all -r/--rev options (including all their ancestors)\n"
-"    will be pulled into the destination repository.\n"
-"    No subsequent changesets (including subsequent tags) will be present\n"
-"    in the destination."
-msgstr ""
-"    Eine Liste von Änderungssätzen (oder Etiketten/Zweignamen) kann durch\n"
-"    wiederholte Angabe der Option -r/--rev geklont werden. In diesem Fall\n"
-"    enthält das Ziel nur diese Untermenge von Änderungssätzen der Quelle,\n"
-"    einschliesslich ihrer Vorgänger. Nachfahren der aufgelisteten\n"
-"    Änderungssätze (und Etiketten die auf Nachfahren verweisen) werden\n"
-"    vollständig ausgelassen."
-
-msgid ""
-"    Using -r/--rev (or 'clone src#rev dest') implies --pull, even for\n"
-"    local source repositories."
-msgstr ""
-"    Die Benutzung von -r/--rev (oder 'clone quelle#rev ziel') impliziert\n"
-"    in jedem Falle --pull, auch bei lokalen Archiven."
-
-#, fuzzy
-msgid ""
-"    For efficiency, hardlinks are used for cloning whenever the source\n"
-"    and destination are on the same filesystem (note this applies only\n"
-"    to the repository data, not to the working directory). Some\n"
-"    filesystems, such as AFS, implement hardlinking incorrectly, but\n"
-"    do not report errors. In these cases, use the --pull option to\n"
-"    avoid hardlinking."
-msgstr ""
-"    Aus Effizienzgründen werden 'hardlinks' für das Klonen genutzt, wann "
-"immer\n"
-"    Quelle und Ziel auf dem selben Dateisystem liegen (dies gilt nur für "
-"die\n"
-"    Daten des Archivs, nicht für die Arbeitskopie). Einige Dateisyteme, wie\n"
-"    etwa AFS, implementieren 'hardlinks' fehlerhaft, erzeugen dabei aber "
-"keine\n"
-"    Fehlermeldung. In diesen Fällen muss die --pull Option genutzt werden,\n"
-"    um das Erzeugen von 'hardlinks' zu vermeiden."
-
-#, fuzzy
-msgid ""
-"    In some cases, you can clone repositories and the working directory\n"
-"    using full hardlinks with ::"
-msgstr ""
-"    In einigen Fällen können Archiv und Arbeitskopie unter Nutzung\n"
-"    von 'hardlinks' kopiert werden mit ::"
-
-msgid "      $ cp -al REPO REPOCLONE"
-msgstr "      $ cp -al REPO REPOCLONE"
-
-#, fuzzy
-msgid ""
-"    This is the fastest way to clone, but it is not always safe. The\n"
-"    operation is not atomic (making sure REPO is not modified during\n"
-"    the operation is up to you) and you have to make sure your editor\n"
-"    breaks hardlinks (Emacs and most Linux Kernel tools do so). Also,\n"
-"    this is not compatible with certain extensions that place their\n"
-"    metadata under the .hg directory, such as mq."
-msgstr ""
-"    Dies ist der schnellste Weg zu klonen, aber nicht immer sicher.\n"
-"    Diese Operation ist nicht atomar (das Archiv darf während der Operation\n"
-"    nicht modifiziert wird) und es muss sichergestellt werden, dass der\n"
-"    genutzte Editor 'hardlinks' auflöst (vim, emacs und die meisten Linux\n"
-"    Kernel Tools tun dies). Außerdem ist dies inkompatibel mit einigen\n"
-"    Erweiterungen, die Metadaten unter dem .hg Verzeichnis ablegen, z.B. "
-"mq.\n"
-"    "
-
-msgid ""
-"    Mercurial will update the working directory to the first applicable\n"
-"    revision from this list:"
-msgstr ""
-
-msgid ""
-"    a) null if -U or the source repository has no changesets\n"
-"    b) if -u . and the source repository is local, the first parent of\n"
-"       the source repository's working directory\n"
-"    c) the changeset specified with -u (if a branch name, this means the\n"
-"       latest head of that branch)\n"
-"    d) the changeset specified with -r\n"
-"    e) the tipmost head specified with -b\n"
-"    f) the tipmost head specified with the url#branch source syntax\n"
-"    g) the tipmost head of the default branch\n"
-"    h) tip"
-msgstr ""
-
-msgid "cannot specify both --noupdate and --updaterev"
-msgstr ""
-"Es können nicht gleichzeitig --noupdate und --updaterev angegeben werden"
-
-msgid "commit the specified files or all outstanding changes"
-msgstr ""
-"Übernimmt Änderungen der angegebenen Dateien oder alle ausstehenden "
-"Änderungen ins Archiv"
-
-#, fuzzy
-msgid ""
-"    Commit changes to the given files into the repository. Unlike a\n"
-"    centralized SCM, this operation is a local operation. See\n"
-"    :hg:`push` for a way to actively distribute your changes."
-msgstr ""
-"    Übernimmt Änderungen der angegebenen Dateien ins Archiv. Anders als\n"
-"    bei zentralen Versionsverwaltungssystem ist dies eine lokale Operation.\n"
-"    Vergleiche hg push für Wege zur aktiven Verteilung der Änderungen."
-
-#, fuzzy
-msgid ""
-"    If a list of files is omitted, all changes reported by :hg:`status`\n"
-"    will be committed."
-msgstr ""
-"    Sollten keine Dateien übergeben werden, werden alle von \"hg status\"\n"
-"    angezeigten Änderungen Bestandteil der neuen Revision."
-
-msgid ""
-"    If you are committing the result of a merge, do not provide any\n"
-"    filenames or -I/-X filters."
-msgstr ""
-"    Wenn das Ergebnis einer Zusammenführung übernommen werden soll, dürfen\n"
-"    keine Dateinamen oder -I/-X Filter angegeben werden."
-
-msgid ""
-"    If no commit message is specified, Mercurial starts your\n"
-"    configured editor where you can enter a message. In case your\n"
-"    commit fails, you will find a backup of your message in\n"
-"    ``.hg/last-message.txt``."
-msgstr ""
-
-msgid ""
-"    Returns 0 on success, 1 if nothing changed.\n"
-"    "
-msgstr ""
-
-#, fuzzy
-msgid "can only close branch heads"
-msgstr "Zeigt normale und geschlossene Branch-Köpfe"
-
-msgid "nothing changed\n"
-msgstr "Keine Änderung\n"
-
-msgid "created new head\n"
-msgstr "neuer Kopf erzeugt\n"
-
-#, fuzzy, python-format
-msgid "reopening closed branch head %d\n"
-msgstr "Zeigt normale und geschlossene Branch-Köpfe"
-
-#, python-format
-msgid "committed changeset %d:%s\n"
-msgstr "Änderungssatz %d erzeugt:%s\n"
-
-msgid "mark files as copied for the next commit"
-msgstr "Markiert Dateien als Kopien bereits versionierter Dateien"
-
-msgid ""
-"    Mark dest as having copies of source files. If dest is a\n"
-"    directory, copies are put in that directory. If dest is a file,\n"
-"    the source must be a single file."
-msgstr ""
-"    Markiert das Ziel als Kopie der Quelle, so dass es die Versionshistorie "
-"der\n"
-"    Quelle bis zu diesem Zeitpunkt teilt. Wenn mehrere Quellen angegeben "
-"sind,\n"
-"    muss das Ziel ein Verzeichnis sein."
-
-msgid ""
-"    By default, this command copies the contents of files as they\n"
-"    exist in the working directory. If invoked with -A/--after, the\n"
-"    operation is recorded, but no copying is performed."
-msgstr ""
-"    Normalerweise kopiert dieser Befehl auch den Inhalt der Datei(en) wie "
-"sie\n"
-"    im Arbeitsverzeichnis vorliegt. Existiert das Ziel jedoch schon, so "
-"kann\n"
-"    dieses durch Angabe der Option -A/--after als Kopie nachträglich "
-"markiert\n"
-"    werden."
-
-#, fuzzy
-msgid ""
-"    This command takes effect with the next commit. To undo a copy\n"
-"    before that, see :hg:`revert`."
-msgstr ""
-"    Die neue Datei wird wie üblich nicht sofort übernommen, sondern "
-"existiert\n"
-"    als lokale  Änderung im Arbeitsverzeichnis. Sie kann durch \"hg revert"
-"\"\n"
-"    rückgängig gemacht werden.\n"
-"    "
-
-msgid ""
-"    Returns 0 on success, 1 if errors are encountered.\n"
-"    "
-msgstr ""
-
-msgid "find the ancestor revision of two revisions in a given index"
-msgstr "Finde die Vorgängerversion zweier Revisionen im angegebenen Index"
-
-msgid "either two or three arguments required"
-msgstr "Entweder zwei oder drei Parameter angeben"
-
-msgid "builds a repo with a given dag from scratch in the current empty repo"
-msgstr ""
-
-#, fuzzy
-msgid "    Elements:"
-msgstr ""
-"Zeigt gruppierte Statistiken über Anzahl der Revisionen/Änderungen an\n"
-"\n"
-"    Zählt Revisionen oder veränderte Zeilen anhand einer gegebenen "
-"Gruppierung\n"
-"    und zeigt sie als Graph an. Gruppiert wird anhand von Vorlagen (siehe\n"
-"    'hg help templating') oder Datum, falls ein Datumsformat angegeben ist.\n"
-"\n"
-"    Standardmäßig werden die veränderten Zeilen gezählt.\n"
-"\n"
-"    Beispiele::\n"
-"\n"
-"      # Zeigt Anzahl der veränderten Zeilen pro Entwickler\n"
-"      hg churn -t '{author|email}'\n"
-"\n"
-"      # Zeigt Aktivität im Tagesverlauf (Gruppiert nach Stunde)\n"
-"      hg churn -f '%H' -s -c\n"
-"\n"
-"      # Zeigt Aktivität pro Monat\n"
-"      hg churn -f '%Y-%m' -s -c\n"
-"\n"
-"      # Zeigt Anzahl der veränderten Zeilen über die Jahre\n"
-"      hg churn -f '%Y' -s\n"
-"\n"
-"    Als Zuweisungsdatei für Alias-Emails zu echten Emails wird "
-"standardmäßig\n"
-"    die .hgchurn Datei in der Archivwurzel verwendet. Die Option --aliases\n"
-"    verändert diese Vorgabe. Das Format ist recht einfach::\n"
-"\n"
-"      <alias Email> <echte Email>\n"
-"    "
-
-msgid ""
-"     - \"+n\" is a linear run of n nodes based on the current default "
-"parent\n"
-"     - \".\" is a single node based on the current default parent\n"
-"     - \"$\" resets the default parent to null (implied at the start);\n"
-"           otherwise the default parent is always the last node created\n"
-"     - \"<p\" sets the default parent to the backref p\n"
-"     - \"*p\" is a fork at parent p, which is a backref\n"
-"     - \"*p1/p2\" is a merge of parents p1 and p2, which are backrefs\n"
-"     - \"/p2\" is a merge of the preceding node and p2\n"
-"     - \":tag\" defines a local tag for the preceding node\n"
-"     - \"@branch\" sets the named branch for subsequent nodes\n"
-"     - \"!command\" runs the command using your shell\n"
-"     - \"!!my command\\n\" is like \"!\", but to the end of the line\n"
-"     - \"#...\\n\" is a comment up to the end of the line"
-msgstr ""
-
-msgid "    Whitespace between the above elements is ignored."
-msgstr ""
-
-msgid "    A backref is either"
-msgstr ""
-
-msgid ""
-"     - a number n, which references the node curr-n, where curr is the "
-"current\n"
-"       node, or\n"
-"     - the name of a local tag you placed earlier using \":tag\", or\n"
-"     - empty to denote the default parent."
-msgstr ""
-
-msgid ""
-"    All string valued-elements are either strictly alphanumeric, or must\n"
-"    be enclosed in double quotes (\"...\"), with \"\\\" as escape character."
-msgstr ""
-
-msgid ""
-"    Note that the --overwritten-file and --appended-file options imply the\n"
-"    use of \"HGMERGE=internal:local\" during DAG buildup.\n"
-"    "
-msgstr ""
-
-msgid "need at least one of -m, -a, -o, -n"
-msgstr ""
-
-#, fuzzy
-msgid "repository is not empty"
-msgstr "Projektarchiv %s nicht gefunden"
-
-#, fuzzy, python-format
-msgid "%s command %s"
-msgstr "Grundlegende Befehle:"
-
-#, fuzzy
-msgid "list all available commands and options"
-msgstr "Zeigt alle Optionen des Befehls"
-
-msgid "returns the completion list associated with the given command"
-msgstr "Listet mögliche Befehle zu gegebener Abkürzung auf"
-
-#, fuzzy
-msgid "show information detected about current filesystem"
-msgstr "Zeigt nur gelöschte (aber versionierte) Dateien"
-
-#, fuzzy
-msgid "rebuild the dirstate as it would look like for the given revision"
-msgstr ""
-"Markiert aktuellen Status als Änderungen seit gegebener Revision\n"
-"\n"
-"    Interpretiert das Arbeitsverzeichnis als lokale Änderung seit der "
-"gegebenen\n"
-"    Revision. Die Vorgängerversion ist die gegebene und die Änderungen "
-"aller\n"
-"    Versionen seit dem (oder bis dahin) sind vorgemerkt und können als neue\n"
-"    Revision (und Kopf) übernommen werden.\n"
-"    "
-
-msgid "validate the correctness of the current dirstate"
-msgstr "Prüft die Richtigkeit der bisher vorgemerkten Änderungen"
-
-#, python-format
-msgid "%s in state %s, but not in manifest1\n"
-msgstr "%s ist in Status %s, aber nicht in Manifest 1\n"
-
-#, python-format
-msgid "%s in state %s, but also in manifest1\n"
-msgstr "%s ist in Status %s, aber auch in Manifest 1\n"
-
-#, python-format
-msgid "%s in state %s, but not in either manifest\n"
-msgstr "%s ist in Status %s, aber in keinem Manifest\n"
-
-#, python-format
-msgid "%s in manifest1, but listed as state %s"
-msgstr "%s im Manifest 1, aber aufgeführt im Status %s"
-
-msgid ".hg/dirstate inconsistent with current parent's manifest"
-msgstr ".hg/dirstate inkonsistent mit dem Manifest des aktuellen Vorgängers"
-
-msgid "show combined config settings from all hgrc files"
-msgstr "Zeigt die kombinierten Konfigurationswerte aller hgrc-Dateien an"
-
-msgid "    With no arguments, print names and values of all config items."
-msgstr ""
-"    Ohne Argumente werden die Namen und Werte aller Konfigurationseinträge\n"
-"    angezeigt."
-
-msgid ""
-"    With one argument of the form section.name, print just the value\n"
-"    of that config item."
-msgstr ""
-"    Mit einem Argument der Form sektion.name wird nur der Wert dieses\n"
-"    Konfigurationseintrages angezeigt."
-
-msgid ""
-"    With multiple arguments, print names and values of all config\n"
-"    items with matching section names."
-msgstr ""
-"    Mit mehreren Argumenten werden die Namen und Werte aller passenden\n"
-"    Konfigurationseinträge angezeigt."
-
-#, fuzzy
-msgid ""
-"    With --debug, the source (filename and line number) is printed\n"
-"    for each config item."
-msgstr ""
-"    Mit dem --debug Schalter wird der Dateiname und die Zeilennummer der\n"
-"    Definitionsquelle mit jedem Eintrag ausgegeben.\n"
-"    "
-
-#, fuzzy, python-format
-msgid "read config from: %s\n"
-msgstr "%s umbenannt von %s:%s\n"
-
-msgid "only one config item permitted"
-msgstr "Nur ein Konfigurationseintrag ist erlaubt"
-
-msgid "access the pushkey key/value protocol"
-msgstr ""
-
-msgid "    With two args, list the keys in the given namespace."
-msgstr ""
-
-msgid ""
-"    With five args, set a key to new if it currently is set to old.\n"
-"    Reports success or failure.\n"
-"    "
-msgstr ""
-
-#, fuzzy
-msgid "parse and apply a revision specification"
-msgstr "Zu viele Revisionen angegeben"
-
-msgid "manually set the parents of the current working directory"
-msgstr "Setzt die Vorgängerversionen des Arbeitsverzeichnisses manuell"
-
-#, fuzzy
-msgid ""
-"    This is useful for writing repository conversion tools, but should\n"
-"    be used with care."
-msgstr ""
-"    Die kann für externe Konversionswerkzeuge nützlich sein, sollte aber "
-"mit\n"
-"    großer Vorsicht angewendet werden.\n"
-"    "
-
-msgid "show the contents of the current dirstate"
-msgstr ""
-"Zeigt die interne Repräsentation der aktuellen Änderungen (dirstate) an"
-
-#, python-format
-msgid "copy: %s -> %s\n"
-msgstr "Kopiere: %s -> %s\n"
-
-msgid "format the changelog or an index DAG as a concise textual description"
-msgstr ""
-
-msgid ""
-"    If you pass a revlog index, the revlog's DAG is emitted. If you list\n"
-"    revision numbers, they get labelled in the output as rN."
-msgstr ""
-
-#, fuzzy
-msgid ""
-"    Otherwise, the changelog DAG of the current repo is emitted.\n"
-"    "
-msgstr ""
-"    Gibt das Wurzelverzeichnis des aktuellen Arbeitsverzeichnisses aus.\n"
-"    "
-
-msgid "need repo for changelog dag"
-msgstr ""
-
-msgid "dump the contents of a data file revision"
-msgstr ""
-
-#, python-format
-msgid "invalid revision identifier %s"
-msgstr ""
-
-msgid "parse and display a date"
-msgstr "Liest ein Datum ein und gibt es wieder aus"
-
-msgid "display the combined ignore pattern"
-msgstr ""
-
-#, fuzzy
-msgid "no ignore patterns found"
-msgstr "Keine [keyword]-Muster konfiguriert"
-
-msgid "dump the contents of an index file"
-msgstr ""
-
-#, fuzzy, python-format
-msgid "unknown format %d"
-msgstr "Index %s hat unbekanntes Format %d"
-
-msgid "dump an index DAG as a graphviz dot file"
-msgstr ""
-
-msgid "test Mercurial installation"
-msgstr "Testet die Mercurial Installation"
-
-#, python-format
-msgid "Checking encoding (%s)...\n"
-msgstr "Prüfe Kodierung (%s)...\n"
-
-msgid " (check that your locale is properly set)\n"
-msgstr " (Stelle sicher, dass locale richtig gesetzt ist!)\n"
-
-#, fuzzy, python-format
-msgid "Checking installed modules (%s)...\n"
-msgstr "Prüfe Kodierung (%s)...\n"
-
-msgid " One or more extensions could not be found"
-msgstr " Eine oder mehrere Erweiterungen nicht gefunden"
-
-msgid " (check that you compiled the extensions)\n"
-msgstr " (Stelle sicher, dass die Erweiterungen compiliert wurden!)\n"
-
-msgid "Checking templates...\n"
-msgstr "Prüfe Vorlagen...\n"
-
-msgid " (templates seem to have been installed incorrectly)\n"
-msgstr "(Vorlagen scheinen falsch installiert worden zu sein)\n"
-
-msgid "Checking patch...\n"
-msgstr "Prüfe patch...\n"
-
-msgid " patch call failed:\n"
-msgstr " Aufruf von patch gescheitert:\n"
-
-msgid " unexpected patch output!\n"
-msgstr " Unerwartete Ausgabe von patch\n"
-
-msgid " patch test failed!\n"
-msgstr " patch Test gescheitert\n"
-
-#, fuzzy
-msgid ""
-" (Current patch tool may be incompatible with patch, or misconfigured. "
-"Please check your configuration file)\n"
-msgstr ""
-" (Aktuelles patch Werkzeug könnte mit patch inkompatibel or fehlkonfiguriert "
-"sein. Prüfe die .hgrc Datei!)\n"
-
-#, fuzzy
-msgid ""
-" Internal patcher failure, please report this error to http://mercurial."
-"selenic.com/wiki/BugTracker\n"
-msgstr ""
-" Fehlschlag des internen patch Werkzeugs. Bitte melden Sie diesen Fehler bei "
-"http://www.selenic.com/mercurial/bts\n"
-
-msgid "Checking commit editor...\n"
-msgstr "Prüfe Editor für Versionsmeldungen...\n"
-
-msgid " No commit editor set and can't find vi in PATH\n"
-msgstr " Kein Editor für Versionsmeldungen angegeben und vi nicht im PATH\n"
-
-#, fuzzy
-msgid " (specify a commit editor in your configuration file)\n"
-msgstr " (Gib einen Editor in der .hgrc Datei an!)\n"
-
-#, python-format
-msgid " Can't find editor '%s' in PATH\n"
-msgstr " Kann Editor '%s' nicht im PATH finden\n"
-
-msgid "Checking username...\n"
-msgstr "Prüfe Benutzernamen...\n"
-
-#, fuzzy
-msgid " (specify a username in your configuration file)\n"
-msgstr " (Gib einen Benutzernamen in der .hgrc Datei an!)\n"
-
-msgid "No problems detected\n"
-msgstr "Keine Probleme gefunden\n"
-
-#, python-format
-msgid "%s problems detected, please check your install!\n"
-msgstr "%s Probleme gefunden. Erwäge die obigen Lösungsvorschläge!\n"
-
-msgid "dump rename information"
-msgstr ""
-
-#, python-format
-msgid "%s renamed from %s:%s\n"
-msgstr "%s umbenannt von %s:%s\n"
-
-#, python-format
-msgid "%s not renamed\n"
-msgstr "%s ist nicht unbenannt\n"
-
-msgid "show how files match on given patterns"
-msgstr ""
-
-msgid "diff repository (or selected files)"
-msgstr ""
-"Zeigt Änderungen des Projektarchivs oder angegebener Dateien an\n"
-"\n"
-"    Zeigt Unterschiede von Dateien zwischen Revisionen im unified-diff-\n"
-"    Format an.\n"
-"\n"
-"    HINWEIS: diff kann bei Zusammenführungen unerwartete Resultate "
-"anzeigen,\n"
-"    da es nur mit einer (der ersten wenn keine Revision angegeben ist)\n"
-"    Vorgängerversion vergleicht.\n"
-"\n"
-"    Bei Angabe zweier Revisionen als Parameter werden Unterschiede\n"
-"    zwischen diesen beiden angezeigt. Wenn nur eine Revision angegeben\n"
-"    wurde, wird diese mit dem Arbeitsverzeichnis verglichen. Sollte keine\n"
-"    Revision angegeben worden sein, wird das Arbeitsverzeichnis mit der\n"
-"    Vorgängerversion verglichen.\n"
-"\n"
-"    Ohne die Option -a vermeidet export den Vergleich von binären Dateien.\n"
-"    Mit -a wird der Vergleich in jedem Fall durchgeführt, wahrscheinlich "
-"mit\n"
-"    unerwünschtem Resultat.\n"
-"\n"
-"    Nutze die Option --git um Vergleiche im git-erweiterten diff-Format zu\n"
-"    erzeugen. Zur weiteren Information ist \"hg help diff\" "
-"aufschlussreich.\n"
-"    "
-
-#, fuzzy
-msgid "    Show differences between revisions for the specified files."
-msgstr ""
-"Zeigt Änderungen des Projektarchiv oder angegebener Dateien an\n"
-"\n"
-"    Zeigt Unterschiede von Dateien zwischen Revisionen im unified-diff-\n"
-"    Format an.\n"
-"\n"
-"    HINWEIS: diff kann bei Zusammenführungen unerwartete Resultate "
-"anzeigen,\n"
-"    da es nur mit einer (der ersten wenn keine Revision angegeben ist)\n"
-"    Vorgängerversion vergleicht.\n"
-"\n"
-"    Bei Angabe zweier Revisionen als Parameter werden Unterschiede\n"
-"    zwischen diesen beiden angezeigt. Wenn nur eine Revision angegeben\n"
-"    wurde, wird diese mit dem Arbeitsverzeichnis verglichen. Sollte keine\n"
-"    Revision angegeben worden sein, wird das Arbeitsverzeichnis mit der\n"
-"    Vorgängerversion verglichen.\n"
-"\n"
-"    Ohne die Option -a vermeidet export den Vergleich von binären Dateien.\n"
-"    Mit -a wird der Vergleich in jedem Fall durchgeführt, wahrscheinlich "
-"mit\n"
-"    unerwünschtem Resultat.\n"
-"\n"
-"    Nutze die Option --git um Vergleiche im git-erweiterten diff-Format zu\n"
-"    erzeugen. Zur weiteren Information ist \"hg help diff\" "
-"aufschlussreich.\n"
-"    "
-
-#, fuzzy
-msgid "    Differences between files are shown using the unified diff format."
-msgstr ""
-"Zeigt Änderungen des Projektarchiv oder angegebener Dateien an\n"
-"\n"
-"    Zeigt Unterschiede von Dateien zwischen Revisionen im unified-diff-\n"
-"    Format an.\n"
-"\n"
-"    HINWEIS: diff kann bei Zusammenführungen unerwartete Resultate "
-"anzeigen,\n"
-"    da es nur mit einer (der ersten wenn keine Revision angegeben ist)\n"
-"    Vorgängerversion vergleicht.\n"
-"\n"
-"    Bei Angabe zweier Revisionen als Parameter werden Unterschiede\n"
-"    zwischen diesen beiden angezeigt. Wenn nur eine Revision angegeben\n"
-"    wurde, wird diese mit dem Arbeitsverzeichnis verglichen. Sollte keine\n"
-"    Revision angegeben worden sein, wird das Arbeitsverzeichnis mit der\n"
-"    Vorgängerversion verglichen.\n"
-"\n"
-"    Ohne die Option -a vermeidet export den Vergleich von binären Dateien.\n"
-"    Mit -a wird der Vergleich in jedem Fall durchgeführt, wahrscheinlich "
-"mit\n"
-"    unerwünschtem Resultat.\n"
-"\n"
-"    Nutze die Option --git um Vergleiche im git-erweiterten diff-Format zu\n"
-"    erzeugen. Zur weiteren Information ist \"hg help diff\" "
-"aufschlussreich.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    .. note::\n"
-"       diff may generate unexpected results for merges, as it will\n"
-"       default to comparing against the working directory's first\n"
-"       parent changeset if no revisions are specified."
-msgstr ""
-"Zeigt Änderungen des Projektarchiv oder angegebener Dateien an\n"
-"\n"
-"    Zeigt Unterschiede von Dateien zwischen Revisionen im unified-diff-\n"
-"    Format an.\n"
-"\n"
-"    HINWEIS: diff kann bei Zusammenführungen unerwartete Resultate "
-"anzeigen,\n"
-"    da es nur mit einer (der ersten wenn keine Revision angegeben ist)\n"
-"    Vorgängerversion vergleicht.\n"
-"\n"
-"    Bei Angabe zweier Revisionen als Parameter werden Unterschiede\n"
-"    zwischen diesen beiden angezeigt. Wenn nur eine Revision angegeben\n"
-"    wurde, wird diese mit dem Arbeitsverzeichnis verglichen. Sollte keine\n"
-"    Revision angegeben worden sein, wird das Arbeitsverzeichnis mit der\n"
-"    Vorgängerversion verglichen.\n"
-"\n"
-"    Ohne die Option -a vermeidet export den Vergleich von binären Dateien.\n"
-"    Mit -a wird der Vergleich in jedem Fall durchgeführt, wahrscheinlich "
-"mit\n"
-"    unerwünschtem Resultat.\n"
-"\n"
-"    Nutze die Option --git um Vergleiche im git-erweiterten diff-Format zu\n"
-"    erzeugen. Zur weiteren Information ist \"hg help diff\" "
-"aufschlussreich.\n"
-"    "
-
-msgid ""
-"    Alternatively you can specify -c/--change with a revision to see\n"
-"    the changes in that changeset relative to its first parent."
-msgstr ""
-
-#, fuzzy
-msgid ""
-"    Without the -a/--text option, diff will avoid generating diffs of\n"
-"    files it detects as binary. With -a, diff will generate a diff\n"
-"    anyway, probably with undesirable results."
-msgstr ""
-"Zeigt Änderungen des Projektarchiv oder angegebener Dateien an\n"
-"\n"
-"    Zeigt Unterschiede von Dateien zwischen Revisionen im unified-diff-\n"
-"    Format an.\n"
-"\n"
-"    HINWEIS: diff kann bei Zusammenführungen unerwartete Resultate "
-"anzeigen,\n"
-"    da es nur mit einer (der ersten wenn keine Revision angegeben ist)\n"
-"    Vorgängerversion vergleicht.\n"
-"\n"
-"    Bei Angabe zweier Revisionen als Parameter werden Unterschiede\n"
-"    zwischen diesen beiden angezeigt. Wenn nur eine Revision angegeben\n"
-"    wurde, wird diese mit dem Arbeitsverzeichnis verglichen. Sollte keine\n"
-"    Revision angegeben worden sein, wird das Arbeitsverzeichnis mit der\n"
-"    Vorgängerversion verglichen.\n"
-"\n"
-"    Ohne die Option -a vermeidet export den Vergleich von binären Dateien.\n"
-"    Mit -a wird der Vergleich in jedem Fall durchgeführt, wahrscheinlich "
-"mit\n"
-"    unerwünschtem Resultat.\n"
-"\n"
-"    Nutze die Option --git um Vergleiche im git-erweiterten diff-Format zu\n"
-"    erzeugen. Zur weiteren Information ist \"hg help diff\" "
-"aufschlussreich.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    Use the -g/--git option to generate diffs in the git extended diff\n"
-"    format. For more information, read :hg:`help diffs`."
-msgstr ""
-"Zeigt Änderungen des Projektarchiv oder angegebener Dateien an\n"
-"\n"
-"    Zeigt Unterschiede von Dateien zwischen Revisionen im unified-diff-\n"
-"    Format an.\n"
-"\n"
-"    HINWEIS: diff kann bei Zusammenführungen unerwartete Resultate "
-"anzeigen,\n"
-"    da es nur mit einer (der ersten wenn keine Revision angegeben ist)\n"
-"    Vorgängerversion vergleicht.\n"
-"\n"
-"    Bei Angabe zweier Revisionen als Parameter werden Unterschiede\n"
-"    zwischen diesen beiden angezeigt. Wenn nur eine Revision angegeben\n"
-"    wurde, wird diese mit dem Arbeitsverzeichnis verglichen. Sollte keine\n"
-"    Revision angegeben worden sein, wird das Arbeitsverzeichnis mit der\n"
-"    Vorgängerversion verglichen.\n"
-"\n"
-"    Ohne die Option -a vermeidet export den Vergleich von binären Dateien.\n"
-"    Mit -a wird der Vergleich in jedem Fall durchgeführt, wahrscheinlich "
-"mit\n"
-"    unerwünschtem Resultat.\n"
-"\n"
-"    Nutze die Option --git um Vergleiche im git-erweiterten diff-Format zu\n"
-"    erzeugen. Zur weiteren Information ist \"hg help diff\" "
-"aufschlussreich.\n"
-"    "
-
-msgid "dump the header and diffs for one or more changesets"
-msgstr ""
-"Gibt Kopfzeilen und Änderungsverlauf einer oder mehrerer Versionen aus\n"
-"\n"
-"    Die angezeigten Daten in den Kopfzeilen sind: Autor,\n"
-"    Änderungssatz-Prüfsumme, Vorgängerversion(en) und Versionsmeldung.\n"
-"\n"
-"    HINWEIS: export kann bei Zusammenführungen unerwartete Resultate "
-"anzeigen,\n"
-"    da es nur mit der ersten Vorgängerversion vergleicht.\n"
-"\n"
-"    Die Ausgabe kann in eine Datei erfolgen. In diesem Fall wird der Name\n"
-"    für jede ausgegebene Revision anhand einer Formatangabe erzeugt::\n"
-"\n"
-"      %%   literales \"%\" Zeichen\n"
-"      %H   Prüfsumme des Änderungssatzes (40 Byte hexadezimal)\n"
-"      %N   Anzahl der generierten Patches\n"
-"      %R   Revisionnummer des Änderungssatzes\n"
-"      %b   Basisname des exportierten Archivs\n"
-"      %h   Kurzform der Prüfsumme des Änderungssatzes (12 Byte hexadezimal)\n"
-"      %n   laufende Nummer mit führenden Nullen, beginnend bei 1\n"
-"      %r   Revisionsnummer mit führenden Nullen\n"
-"\n"
-"    Ohne die Option -a/--text vermeidet export den Vergleich von binären\n"
-"    Dateien. Mit -a wird der Vergleich in jedem Fall durchgeführt,\n"
-"    wahrscheinlich mit unerwünschtem Resultat.\n"
-"\n"
-"    Nutze die Option -g/--git um Vergleiche im git-erweiterten diff-Format\n"
-"    zu erzeugen. Siehe dazu auch \"hg help diff\".\n"
-"\n"
-"    Mit dem Schalter --switch-parent kann im Falle einer Zusammenführung\n"
-"    mit dem zweiten Vorfahren verglichen werden.\n"
-"    "
-
-#, fuzzy
-msgid "    Print the changeset header and diffs for one or more revisions."
-msgstr ""
-"Gibt Kopfzeilen und Änderungsverlauf einer oder mehrerer Versionen aus\n"
-"\n"
-"    Die angezeigten Daten in den Kopfzeilen sind: Autor,\n"
-"    Änderungssatz-Prüfsumme, Vorgängerversion(en) und Versionsmeldung.\n"
-"\n"
-"    HINWEIS: export kann bei Zusammenführungen unerwartete Resultate "
-"anzeigen,\n"
-"    da es nur mit der ersten Vorgängerversion vergleicht.\n"
-"\n"
-"    Die Ausgabe kann in eine Datei erfolgen. In diesem Fall wird der Name\n"
-"    für jede ausgegebene Revision anhand einer Formatangabe erzeugt::\n"
-"\n"
-"      %%   literales \"%\" Zeichen\n"
-"      %H   Prüfsumme des Änderungssatzes (40 Byte hexadezimal)\n"
-"      %N   Anzahl der generierten Patches\n"
-"      %R   Revisionnummer des Änderungssatzes\n"
-"      %b   Basisname des exportierten Archivs\n"
-"      %h   Kurzform der Prüfsumme des Änderungssatzes (12 Byte hexadezimal)\n"
-"      %n   laufende Nummer mit führenden Nullen, beginnend bei 1\n"
-"      %r   Revisionsnummer mit führenden Nullen\n"
-"\n"
-"    Ohne die Option -a/--text vermeidet export den Vergleich von binären\n"
-"    Dateien. Mit -a wird der Vergleich in jedem Fall durchgeführt,\n"
-"    wahrscheinlich mit unerwünschtem Resultat.\n"
-"\n"
-"    Nutze die Option -g/--git um Vergleiche im git-erweiterten diff-Format\n"
-"    zu erzeugen. Siehe dazu auch \"hg help diff\".\n"
-"\n"
-"    Mit dem Schalter --switch-parent kann im Falle einer Zusammenführung\n"
-"    mit dem zweiten Vorfahren verglichen werden.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    The information shown in the changeset header is: author, date,\n"
-"    branch name (if non-default), changeset hash, parent(s) and commit\n"
-"    comment."
-msgstr ""
-"Gibt Kopfzeilen und Änderungsverlauf einer oder mehrerer Versionen aus\n"
-"\n"
-"    Die angezeigten Daten in den Kopfzeilen sind: Autor,\n"
-"    Änderungssatz-Prüfsumme, Vorgängerversion(en) und Versionsmeldung.\n"
-"\n"
-"    HINWEIS: export kann bei Zusammenführungen unerwartete Resultate "
-"anzeigen,\n"
-"    da es nur mit der ersten Vorgängerversion vergleicht.\n"
-"\n"
-"    Die Ausgabe kann in eine Datei erfolgen. In diesem Fall wird der Name\n"
-"    für jede ausgegebene Revision anhand einer Formatangabe erzeugt::\n"
-"\n"
-"      %%   literales \"%\" Zeichen\n"
-"      %H   Prüfsumme des Änderungssatzes (40 Byte hexadezimal)\n"
-"      %N   Anzahl der generierten Patches\n"
-"      %R   Revisionnummer des Änderungssatzes\n"
-"      %b   Basisname des exportierten Archivs\n"
-"      %h   Kurzform der Prüfsumme des Änderungssatzes (12 Byte hexadezimal)\n"
-"      %n   laufende Nummer mit führenden Nullen, beginnend bei 1\n"
-"      %r   Revisionsnummer mit führenden Nullen\n"
-"\n"
-"    Ohne die Option -a/--text vermeidet export den Vergleich von binären\n"
-"    Dateien. Mit -a wird der Vergleich in jedem Fall durchgeführt,\n"
-"    wahrscheinlich mit unerwünschtem Resultat.\n"
-"\n"
-"    Nutze die Option -g/--git um Vergleiche im git-erweiterten diff-Format\n"
-"    zu erzeugen. Siehe dazu auch \"hg help diff\".\n"
-"\n"
-"    Mit dem Schalter --switch-parent kann im Falle einer Zusammenführung\n"
-"    mit dem zweiten Vorfahren verglichen werden.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    .. note::\n"
-"       export may generate unexpected diff output for merge\n"
-"       changesets, as it will compare the merge changeset against its\n"
-"       first parent only."
-msgstr ""
-"Gibt Kopfzeilen und Änderungsverlauf einer oder mehrerer Versionen aus\n"
-"\n"
-"    Die angezeigten Daten in den Kopfzeilen sind: Autor,\n"
-"    Änderungssatz-Prüfsumme, Vorgängerversion(en) und Versionsmeldung.\n"
-"\n"
-"    HINWEIS: export kann bei Zusammenführungen unerwartete Resultate "
-"anzeigen,\n"
-"    da es nur mit der ersten Vorgängerversion vergleicht.\n"
-"\n"
-"    Die Ausgabe kann in eine Datei erfolgen. In diesem Fall wird der Name\n"
-"    für jede ausgegebene Revision anhand einer Formatangabe erzeugt::\n"
-"\n"
-"      %%   literales \"%\" Zeichen\n"
-"      %H   Prüfsumme des Änderungssatzes (40 Byte hexadezimal)\n"
-"      %N   Anzahl der generierten Patches\n"
-"      %R   Revisionnummer des Änderungssatzes\n"
-"      %b   Basisname des exportierten Archivs\n"
-"      %h   Kurzform der Prüfsumme des Änderungssatzes (12 Byte hexadezimal)\n"
-"      %n   laufende Nummer mit führenden Nullen, beginnend bei 1\n"
-"      %r   Revisionsnummer mit führenden Nullen\n"
-"\n"
-"    Ohne die Option -a/--text vermeidet export den Vergleich von binären\n"
-"    Dateien. Mit -a wird der Vergleich in jedem Fall durchgeführt,\n"
-"    wahrscheinlich mit unerwünschtem Resultat.\n"
-"\n"
-"    Nutze die Option -g/--git um Vergleiche im git-erweiterten diff-Format\n"
-"    zu erzeugen. Siehe dazu auch \"hg help diff\".\n"
-"\n"
-"    Mit dem Schalter --switch-parent kann im Falle einer Zusammenführung\n"
-"    mit dem zweiten Vorfahren verglichen werden.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    Output may be to a file, in which case the name of the file is\n"
-"    given using a format string. The formatting rules are as follows:"
-msgstr ""
-"Gibt Kopfzeilen und Änderungsverlauf einer oder mehrerer Versionen aus\n"
-"\n"
-"    Die angezeigten Daten in den Kopfzeilen sind: Autor,\n"
-"    Änderungssatz-Prüfsumme, Vorgängerversion(en) und Versionsmeldung.\n"
-"\n"
-"    HINWEIS: export kann bei Zusammenführungen unerwartete Resultate "
-"anzeigen,\n"
-"    da es nur mit der ersten Vorgängerversion vergleicht.\n"
-"\n"
-"    Die Ausgabe kann in eine Datei erfolgen. In diesem Fall wird der Name\n"
-"    für jede ausgegebene Revision anhand einer Formatangabe erzeugt::\n"
-"\n"
-"      %%   literales \"%\" Zeichen\n"
-"      %H   Prüfsumme des Änderungssatzes (40 Byte hexadezimal)\n"
-"      %N   Anzahl der generierten Patches\n"
-"      %R   Revisionnummer des Änderungssatzes\n"
-"      %b   Basisname des exportierten Archivs\n"
-"      %h   Kurzform der Prüfsumme des Änderungssatzes (12 Byte hexadezimal)\n"
-"      %n   laufende Nummer mit führenden Nullen, beginnend bei 1\n"
-"      %r   Revisionsnummer mit führenden Nullen\n"
-"\n"
-"    Ohne die Option -a/--text vermeidet export den Vergleich von binären\n"
-"    Dateien. Mit -a wird der Vergleich in jedem Fall durchgeführt,\n"
-"    wahrscheinlich mit unerwünschtem Resultat.\n"
-"\n"
-"    Nutze die Option -g/--git um Vergleiche im git-erweiterten diff-Format\n"
-"    zu erzeugen. Siehe dazu auch \"hg help diff\".\n"
-"\n"
-"    Mit dem Schalter --switch-parent kann im Falle einer Zusammenführung\n"
-"    mit dem zweiten Vorfahren verglichen werden.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    :``%%``: literal \"%\" character\n"
-"    :``%H``: changeset hash (40 hexadecimal digits)\n"
-"    :``%N``: number of patches being generated\n"
-"    :``%R``: changeset revision number\n"
-"    :``%b``: basename of the exporting repository\n"
-"    :``%h``: short-form changeset hash (12 hexadecimal digits)\n"
-"    :``%n``: zero-padded sequence number, starting at 1\n"
-"    :``%r``: zero-padded changeset revision number"
-msgstr ""
-"Gibt Kopfzeilen und Änderungsverlauf einer oder mehrerer Versionen aus\n"
-"\n"
-"    Die angezeigten Daten in den Kopfzeilen sind: Autor,\n"
-"    Änderungssatz-Prüfsumme, Vorgängerversion(en) und Versionsmeldung.\n"
-"\n"
-"    HINWEIS: export kann bei Zusammenführungen unerwartete Resultate "
-"anzeigen,\n"
-"    da es nur mit der ersten Vorgängerversion vergleicht.\n"
-"\n"
-"    Die Ausgabe kann in eine Datei erfolgen. In diesem Fall wird der Name\n"
-"    für jede ausgegebene Revision anhand einer Formatangabe erzeugt::\n"
-"\n"
-"      %%   literales \"%\" Zeichen\n"
-"      %H   Prüfsumme des Änderungssatzes (40 Byte hexadezimal)\n"
-"      %N   Anzahl der generierten Patches\n"
-"      %R   Revisionnummer des Änderungssatzes\n"
-"      %b   Basisname des exportierten Archivs\n"
-"      %h   Kurzform der Prüfsumme des Änderungssatzes (12 Byte hexadezimal)\n"
-"      %n   laufende Nummer mit führenden Nullen, beginnend bei 1\n"
-"      %r   Revisionsnummer mit führenden Nullen\n"
-"\n"
-"    Ohne die Option -a/--text vermeidet export den Vergleich von binären\n"
-"    Dateien. Mit -a wird der Vergleich in jedem Fall durchgeführt,\n"
-"    wahrscheinlich mit unerwünschtem Resultat.\n"
-"\n"
-"    Nutze die Option -g/--git um Vergleiche im git-erweiterten diff-Format\n"
-"    zu erzeugen. Siehe dazu auch \"hg help diff\".\n"
-"\n"
-"    Mit dem Schalter --switch-parent kann im Falle einer Zusammenführung\n"
-"    mit dem zweiten Vorfahren verglichen werden.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    Without the -a/--text option, export will avoid generating diffs\n"
-"    of files it detects as binary. With -a, export will generate a\n"
-"    diff anyway, probably with undesirable results."
-msgstr ""
-"Gibt Kopfzeilen und Änderungsverlauf einer oder mehrerer Versionen aus\n"
-"\n"
-"    Die angezeigten Daten in den Kopfzeilen sind: Autor,\n"
-"    Änderungssatz-Prüfsumme, Vorgängerversion(en) und Versionsmeldung.\n"
-"\n"
-"    HINWEIS: export kann bei Zusammenführungen unerwartete Resultate "
-"anzeigen,\n"
-"    da es nur mit der ersten Vorgängerversion vergleicht.\n"
-"\n"
-"    Die Ausgabe kann in eine Datei erfolgen. In diesem Fall wird der Name\n"
-"    für jede ausgegebene Revision anhand einer Formatangabe erzeugt::\n"
-"\n"
-"      %%   literales \"%\" Zeichen\n"
-"      %H   Prüfsumme des Änderungssatzes (40 Byte hexadezimal)\n"
-"      %N   Anzahl der generierten Patches\n"
-"      %R   Revisionnummer des Änderungssatzes\n"
-"      %b   Basisname des exportierten Archivs\n"
-"      %h   Kurzform der Prüfsumme des Änderungssatzes (12 Byte hexadezimal)\n"
-"      %n   laufende Nummer mit führenden Nullen, beginnend bei 1\n"
-"      %r   Revisionsnummer mit führenden Nullen\n"
-"\n"
-"    Ohne die Option -a/--text vermeidet export den Vergleich von binären\n"
-"    Dateien. Mit -a wird der Vergleich in jedem Fall durchgeführt,\n"
-"    wahrscheinlich mit unerwünschtem Resultat.\n"
-"\n"
-"    Nutze die Option -g/--git um Vergleiche im git-erweiterten diff-Format\n"
-"    zu erzeugen. Siehe dazu auch \"hg help diff\".\n"
-"\n"
-"    Mit dem Schalter --switch-parent kann im Falle einer Zusammenführung\n"
-"    mit dem zweiten Vorfahren verglichen werden.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    Use the -g/--git option to generate diffs in the git extended diff\n"
-"    format. See :hg:`help diffs` for more information."
-msgstr ""
-"Gibt Kopfzeilen und Änderungsverlauf einer oder mehrerer Versionen aus\n"
-"\n"
-"    Die angezeigten Daten in den Kopfzeilen sind: Autor,\n"
-"    Änderungssatz-Prüfsumme, Vorgängerversion(en) und Versionsmeldung.\n"
-"\n"
-"    HINWEIS: export kann bei Zusammenführungen unerwartete Resultate "
-"anzeigen,\n"
-"    da es nur mit der ersten Vorgängerversion vergleicht.\n"
-"\n"
-"    Die Ausgabe kann in eine Datei erfolgen. In diesem Fall wird der Name\n"
-"    für jede ausgegebene Revision anhand einer Formatangabe erzeugt::\n"
-"\n"
-"      %%   literales \"%\" Zeichen\n"
-"      %H   Prüfsumme des Änderungssatzes (40 Byte hexadezimal)\n"
-"      %N   Anzahl der generierten Patches\n"
-"      %R   Revisionnummer des Änderungssatzes\n"
-"      %b   Basisname des exportierten Archivs\n"
-"      %h   Kurzform der Prüfsumme des Änderungssatzes (12 Byte hexadezimal)\n"
-"      %n   laufende Nummer mit führenden Nullen, beginnend bei 1\n"
-"      %r   Revisionsnummer mit führenden Nullen\n"
-"\n"
-"    Ohne die Option -a/--text vermeidet export den Vergleich von binären\n"
-"    Dateien. Mit -a wird der Vergleich in jedem Fall durchgeführt,\n"
-"    wahrscheinlich mit unerwünschtem Resultat.\n"
-"\n"
-"    Nutze die Option -g/--git um Vergleiche im git-erweiterten diff-Format\n"
-"    zu erzeugen. Siehe dazu auch \"hg help diff\".\n"
-"\n"
-"    Mit dem Schalter --switch-parent kann im Falle einer Zusammenführung\n"
-"    mit dem zweiten Vorfahren verglichen werden.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    With the --switch-parent option, the diff will be against the\n"
-"    second parent. It can be useful to review a merge."
-msgstr ""
-"Gibt Kopfzeilen und Änderungsverlauf einer oder mehrerer Versionen aus\n"
-"\n"
-"    Die angezeigten Daten in den Kopfzeilen sind: Autor,\n"
-"    Änderungssatz-Prüfsumme, Vorgängerversion(en) und Versionsmeldung.\n"
-"\n"
-"    HINWEIS: export kann bei Zusammenführungen unerwartete Resultate "
-"anzeigen,\n"
-"    da es nur mit der ersten Vorgängerversion vergleicht.\n"
-"\n"
-"    Die Ausgabe kann in eine Datei erfolgen. In diesem Fall wird der Name\n"
-"    für jede ausgegebene Revision anhand einer Formatangabe erzeugt::\n"
-"\n"
-"      %%   literales \"%\" Zeichen\n"
-"      %H   Prüfsumme des Änderungssatzes (40 Byte hexadezimal)\n"
-"      %N   Anzahl der generierten Patches\n"
-"      %R   Revisionnummer des Änderungssatzes\n"
-"      %b   Basisname des exportierten Archivs\n"
-"      %h   Kurzform der Prüfsumme des Änderungssatzes (12 Byte hexadezimal)\n"
-"      %n   laufende Nummer mit führenden Nullen, beginnend bei 1\n"
-"      %r   Revisionsnummer mit führenden Nullen\n"
-"\n"
-"    Ohne die Option -a/--text vermeidet export den Vergleich von binären\n"
-"    Dateien. Mit -a wird der Vergleich in jedem Fall durchgeführt,\n"
-"    wahrscheinlich mit unerwünschtem Resultat.\n"
-"\n"
-"    Nutze die Option -g/--git um Vergleiche im git-erweiterten diff-Format\n"
-"    zu erzeugen. Siehe dazu auch \"hg help diff\".\n"
-"\n"
-"    Mit dem Schalter --switch-parent kann im Falle einer Zusammenführung\n"
-"    mit dem zweiten Vorfahren verglichen werden.\n"
-"    "
-
-msgid "export requires at least one changeset"
-msgstr "export benötigt zumindest eine Versionsangabe"
-
-msgid "exporting patches:\n"
-msgstr "Exportiere Patches:\n"
-
-msgid "exporting patch:\n"
-msgstr "Exportiere Patch:\n"
-
-msgid "forget the specified files on the next commit"
-msgstr ""
-"Angegebene Dateien ab dem nächsten Commit nicht mehr unter Versionskontrolle "
-"stellen"
-
-msgid ""
-"    Mark the specified files so they will no longer be tracked\n"
-"    after the next commit."
-msgstr ""
-
-msgid ""
-"    This only removes files from the current branch, not from the\n"
-"    entire project history, and it does not delete them from the\n"
-"    working directory."
-msgstr ""
-
-msgid "    To undo a forget before the next commit, see :hg:`add`."
-msgstr ""
-
-msgid "no files specified"
-msgstr "Keine Dateien angegeben"
-
-#, python-format
-msgid "not removing %s: file is already untracked\n"
-msgstr "Entferne %s nicht: Datei ist nicht versioniert\n"
-
-msgid "search for a pattern in specified files and revisions"
-msgstr "Sucht ein Muster in angegebenen Dateien und Revisionen"
-
-msgid "    Search revisions of files for a regular expression."
-msgstr ""
-"    Durchsucht Dateien in der Versionshistorie nach einem gegebenen Muster."
-
-msgid ""
-"    This command behaves differently than Unix grep. It only accepts\n"
-"    Python/Perl regexps. It searches repository history, not the\n"
-"    working directory. It always prints the revision number in which a\n"
-"    match appears."
-msgstr ""
-"    Dieser Befehl unterscheidet sich von Unix grep, da es Reguläre "
-"Ausdrücke\n"
-"    in Python/Perl Format erwartet und ausserdem nur die übernommenen "
-"Revisionen\n"
-"    im Archiv durchsucht, nicht jedoch das Arbeitsverzeichnis."
-
-#, fuzzy
-msgid ""
-"    By default, grep only prints output for the first revision of a\n"
-"    file in which it finds a match. To get it to print every revision\n"
-"    that contains a change in match status (\"-\" for a match that\n"
-"    becomes a non-match, or \"+\" for a non-match that becomes a match),\n"
-"    use the --all flag."
-msgstr ""
-"    Standardmäßig gibt grep den Dateinamen und die jüngste Revision einer "
-"Datei\n"
-"    aus, die das Suchmuster enthält. Mit der Option --all werden "
-"stattdessen\n"
-"    alle Revisionen ausgegeben, in der das Muster hinzugefügt (\"+\") oder\n"
-"    entfernt (\"-\") wurde.\n"
-"    "
-
-msgid ""
-"    Returns 0 if a match is found, 1 otherwise.\n"
-"    "
-msgstr ""
-
-#, python-format
-msgid "grep: invalid match pattern: %s\n"
-msgstr "grep: Ungültiges Suchmuster: %s\n"
-
-msgid "show current repository heads or show branch heads"
-msgstr ""
-"Zeigt die Köpfe des Archivs oder von Entwicklungszweigen\n"
-"\n"
-"    Ohne Argumente werden alle Köpfe des Archivs angezeigt.\n"
-"\n"
-"    Archivköpfe sind Revisionen, die keine Kinder haben. Typischerweise "
-"geht\n"
-"    die Entwicklung hier weiter und die Köpfe sind häufig Ziel von\n"
-"    Aktualisierungen und Zusammenführungen.\n"
-"\n"
-"    Wenn eine oder mehrere REV Argumente gegeben sind, werden die Köpfe von\n"
-"    den benannten Zweigen dieser Revisionen angezeigt. Der Name des Zweigs\n"
-"    wird auch das Zweigetikett der Revision genannt.\n"
-"\n"
-"    Zweigköpfe sind Revisionen eines bestimmten Zweigs, die keine Kinder\n"
-"    im selben Zweig besitzen. Dies kann ein \"echter\" Kopf sein, oder die\n"
-"    letzte Revision bevor ein neuer Zweig erstellt wurde. Falls kein Kopf\n"
-"    eines Zweigs ein echter Kopf ist, gilt der Zweig als inaktiv. Zweige\n"
-"    die mit dem Übernahmeoption \"--close-branch\" geschlossen wurden,\n"
-"    werden nur mit dem -c/--closed Schalter angezeigt.\n"
-"\n"
-"    Bei Angabe einer STARTREV werden nur solche Köpfe (oder Zweigköpfe)\n"
-"    angezeigt, die Nachfahren der gegebenen Revision sind.\n"
-"    "
-
-#, fuzzy
-msgid "    With no arguments, show all repository branch heads."
-msgstr ""
-"Zeigt die Köpfe des Archivs oder von Entwicklungszweigen\n"
-"\n"
-"    Ohne Argumente werden alle Köpfe des Archivs angezeigt.\n"
-"\n"
-"    Archivköpfe sind Revisionen, die keine Kinder haben. Typischerweise "
-"geht\n"
-"    die Entwicklung hier weiter und die Köpfe sind häufig Ziel von\n"
-"    Aktualisierungen und Zusammenführungen.\n"
-"\n"
-"    Wenn eine oder mehrere REV Argumente gegeben sind, werden die Köpfe von\n"
-"    den benannten Zweigen dieser Revisionen angezeigt. Der Name des Zweigs\n"
-"    wird auch das Zweigetikett der Revision genannt.\n"
-"\n"
-"    Zweigköpfe sind Revisionen eines bestimmten Zweigs, die keine Kinder\n"
-"    im selben Zweig besitzen. Dies kann ein \"echter\" Kopf sein, oder die\n"
-"    letzte Revision bevor ein neuer Zweig erstellt wurde. Falls kein Kopf\n"
-"    eines Zweigs ein echter Kopf ist, gilt der Zweig als inaktiv. Zweige\n"
-"    die mit dem Übernahmeoption \"--close-branch\" geschlossen wurden,\n"
-"    werden nur mit dem -c/--closed Schalter angezeigt.\n"
-"\n"
-"    Bei Angabe einer STARTREV werden nur solche Köpfe (oder Zweigköpfe)\n"
-"    angezeigt, die Nachfahren der gegebenen Revision sind.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    Repository \"heads\" are changesets with no child changesets. They are\n"
-"    where development generally takes place and are the usual targets\n"
-"    for update and merge operations. Branch heads are changesets that have\n"
-"    no child changeset on the same branch."
-msgstr ""
-"Zeigt die Köpfe des Archivs oder von Entwicklungszweigen\n"
-"\n"
-"    Ohne Argumente werden alle Köpfe des Archivs angezeigt.\n"
-"\n"
-"    Archivköpfe sind Revisionen, die keine Kinder haben. Typischerweise "
-"geht\n"
-"    die Entwicklung hier weiter und die Köpfe sind häufig Ziel von\n"
-"    Aktualisierungen und Zusammenführungen.\n"
-"\n"
-"    Wenn eine oder mehrere REV Argumente gegeben sind, werden die Köpfe von\n"
-"    den benannten Zweigen dieser Revisionen angezeigt. Der Name des Zweigs\n"
-"    wird auch das Zweigetikett der Revision genannt.\n"
-"\n"
-"    Zweigköpfe sind Revisionen eines bestimmten Zweigs, die keine Kinder\n"
-"    im selben Zweig besitzen. Dies kann ein \"echter\" Kopf sein, oder die\n"
-"    letzte Revision bevor ein neuer Zweig erstellt wurde. Falls kein Kopf\n"
-"    eines Zweigs ein echter Kopf ist, gilt der Zweig als inaktiv. Zweige\n"
-"    die mit dem Übernahmeoption \"--close-branch\" geschlossen wurden,\n"
-"    werden nur mit dem -c/--closed Schalter angezeigt.\n"
-"\n"
-"    Bei Angabe einer STARTREV werden nur solche Köpfe (oder Zweigköpfe)\n"
-"    angezeigt, die Nachfahren der gegebenen Revision sind.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    If one or more REVs are given, only branch heads on the branches\n"
-"    associated with the specified changesets are shown."
-msgstr ""
-"Zeigt die Köpfe des Archivs oder von Entwicklungszweigen\n"
-"\n"
-"    Ohne Argumente werden alle Köpfe des Archivs angezeigt.\n"
-"\n"
-"    Archivköpfe sind Revisionen, die keine Kinder haben. Typischerweise "
-"geht\n"
-"    die Entwicklung hier weiter und die Köpfe sind häufig Ziel von\n"
-"    Aktualisierungen und Zusammenführungen.\n"
-"\n"
-"    Wenn eine oder mehrere REV Argumente gegeben sind, werden die Köpfe von\n"
-"    den benannten Zweigen dieser Revisionen angezeigt. Der Name des Zweigs\n"
-"    wird auch das Zweigetikett der Revision genannt.\n"
-"\n"
-"    Zweigköpfe sind Revisionen eines bestimmten Zweigs, die keine Kinder\n"
-"    im selben Zweig besitzen. Dies kann ein \"echter\" Kopf sein, oder die\n"
-"    letzte Revision bevor ein neuer Zweig erstellt wurde. Falls kein Kopf\n"
-"    eines Zweigs ein echter Kopf ist, gilt der Zweig als inaktiv. Zweige\n"
-"    die mit dem Übernahmeoption \"--close-branch\" geschlossen wurden,\n"
-"    werden nur mit dem -c/--closed Schalter angezeigt.\n"
-"\n"
-"    Bei Angabe einer STARTREV werden nur solche Köpfe (oder Zweigköpfe)\n"
-"    angezeigt, die Nachfahren der gegebenen Revision sind.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    If -c/--closed is specified, also show branch heads marked closed\n"
-"    (see :hg:`commit --close-branch`)."
-msgstr ""
-"Zeigt die Köpfe des Archivs oder von Entwicklungszweigen\n"
-"\n"
-"    Ohne Argumente werden alle Köpfe des Archivs angezeigt.\n"
-"\n"
-"    Archivköpfe sind Revisionen, die keine Kinder haben. Typischerweise "
-"geht\n"
-"    die Entwicklung hier weiter und die Köpfe sind häufig Ziel von\n"
-"    Aktualisierungen und Zusammenführungen.\n"
-"\n"
-"    Wenn eine oder mehrere REV Argumente gegeben sind, werden die Köpfe von\n"
-"    den benannten Zweigen dieser Revisionen angezeigt. Der Name des Zweigs\n"
-"    wird auch das Zweigetikett der Revision genannt.\n"
-"\n"
-"    Zweigköpfe sind Revisionen eines bestimmten Zweigs, die keine Kinder\n"
-"    im selben Zweig besitzen. Dies kann ein \"echter\" Kopf sein, oder die\n"
-"    letzte Revision bevor ein neuer Zweig erstellt wurde. Falls kein Kopf\n"
-"    eines Zweigs ein echter Kopf ist, gilt der Zweig als inaktiv. Zweige\n"
-"    die mit dem Übernahmeoption \"--close-branch\" geschlossen wurden,\n"
-"    werden nur mit dem -c/--closed Schalter angezeigt.\n"
-"\n"
-"    Bei Angabe einer STARTREV werden nur solche Köpfe (oder Zweigköpfe)\n"
-"    angezeigt, die Nachfahren der gegebenen Revision sind.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    If STARTREV is specified, only those heads that are descendants of\n"
-"    STARTREV will be displayed."
-msgstr ""
-"Zeigt die Köpfe des Archivs oder von Entwicklungszweigen\n"
-"\n"
-"    Ohne Argumente werden alle Köpfe des Archivs angezeigt.\n"
-"\n"
-"    Archivköpfe sind Revisionen, die keine Kinder haben. Typischerweise "
-"geht\n"
-"    die Entwicklung hier weiter und die Köpfe sind häufig Ziel von\n"
-"    Aktualisierungen und Zusammenführungen.\n"
-"\n"
-"    Wenn eine oder mehrere REV Argumente gegeben sind, werden die Köpfe von\n"
-"    den benannten Zweigen dieser Revisionen angezeigt. Der Name des Zweigs\n"
-"    wird auch das Zweigetikett der Revision genannt.\n"
-"\n"
-"    Zweigköpfe sind Revisionen eines bestimmten Zweigs, die keine Kinder\n"
-"    im selben Zweig besitzen. Dies kann ein \"echter\" Kopf sein, oder die\n"
-"    letzte Revision bevor ein neuer Zweig erstellt wurde. Falls kein Kopf\n"
-"    eines Zweigs ein echter Kopf ist, gilt der Zweig als inaktiv. Zweige\n"
-"    die mit dem Übernahmeoption \"--close-branch\" geschlossen wurden,\n"
-"    werden nur mit dem -c/--closed Schalter angezeigt.\n"
-"\n"
-"    Bei Angabe einer STARTREV werden nur solche Köpfe (oder Zweigköpfe)\n"
-"    angezeigt, die Nachfahren der gegebenen Revision sind.\n"
-"    "
-
-msgid ""
-"    If -t/--topo is specified, named branch mechanics will be ignored and "
-"only\n"
-"    changesets without children will be shown."
-msgstr ""
-
-msgid ""
-"    Returns 0 if matching heads are found, 1 if not.\n"
-"    "
-msgstr ""
-
-#, fuzzy, python-format
-msgid "no open branch heads found on branches %s"
-msgstr "Keine offenen Zweigköpfe auf Zweig %s\n"
-
-#, fuzzy, python-format
-msgid " (started at %s)"
-msgstr " (Standard: %s)"
-
-msgid "show help for a given topic or a help overview"
-msgstr "Zeigt die Hilfe für ein gegebenes Thema oder eine Hilfsübersicht"
-
-msgid ""
-"    With no arguments, print a list of commands with short help messages."
-msgstr ""
-"    Ohne Parameter wird eine Liste aller Befehle mit Kurzhilfe angezeigt."
-
-msgid ""
-"    Given a topic, extension, or command name, print help for that\n"
-"    topic."
-msgstr ""
-"    Bei Angabe eines Themas, einer Erweiterung oder eines Befehls wird\n"
-"    detaillierte Hilfe zu diesem Thema angezeigt."
-
-msgid ""
-"    Returns 0 if successful.\n"
-"    "
-msgstr ""
-
-msgid "global options:"
-msgstr "Globale Optionen:"
-
-msgid "use \"hg help\" for the full list of commands"
-msgstr "Nutze \"hg help\" für eine Liste aller Befehle"
-
-msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
-msgstr ""
-"Nutze \"hg help\" für eine Liste aller Befehle oder \"hg -v\" für Details"
-
-#, fuzzy, python-format
-msgid "use \"hg -v help%s\" to show builtin aliases and global options"
-msgstr "Nutze \"hg -v help%s\" um Aliase und globale Optionen anzuzeigen"
-
-#, python-format
-msgid "use \"hg -v help %s\" to show global options"
-msgstr "Nutze \"hg -v help %s\" um globale Optionen anzuzeigen"
-
-msgid "list of commands:"
-msgstr "Liste der Befehle:"
-
-#, python-format
-msgid ""
-"\n"
-"aliases: %s\n"
-msgstr ""
-"\n"
-"Aliase: %s\n"
-
-msgid "(no help text available)"
-msgstr "(keine Hilfe verfügbar)"
-
-#, python-format
-msgid "shell alias for::"
-msgstr ""
-
-#, fuzzy, python-format
-msgid "    %s"
-msgstr ""
-"Konvertiert Archive unter anderem VCS in ein Mercurial Archiv\n"
-"\n"
-"    Erkannte Quellformate [Befehlsoption]:\n"
-"\n"
-"    - Mercurial [hg]\n"
-"    - CVS [cvs]\n"
-"    - Darcs [darcs]\n"
-"    - git [git]\n"
-"    - Subversion [svn]\n"
-"    - Monotone [mtn]\n"
-"    - GNU Arch [gnuarch]\n"
-"    - Bazaar [bzr]\n"
-"    - Perforce [p4]\n"
-"\n"
-"    Erlaubte Zielformate [Befehlsoption]:\n"
-"\n"
-"    - Mercurial [hg]\n"
-"    - Subversion [svn] (Historie con Zweigen wird nicht erhalten)\n"
-"\n"
-"    Wenn keine Revision angegeben ist, werden alle konvertiert.\n"
-"    Andernfalls werden alle Revision bis zur angegebenen konvertiert.\n"
-"    Die Revisionsangabe muss für das Quellsystem verständlich sein.\n"
-"\n"
-"    Wenn kein Zielverzeichnisname angegeben ist, wird die Endung \"-hg\"\n"
-"    an den Namen der Quelle angehängt. Wenn das Ziel nicht existiert, wird\n"
-"    es erstellt.\n"
-"\n"
-"    Standardmäßig wird die Option \"--branchsort\" für alle Quellen ausser\n"
-"    Mercurial verwendet. Mercurial verwendet \"--sourcesort\", um die\n"
-"    ursprüngliche Reihenfolge der Revisionsnummern zu erhalten.\n"
-"    Die Sortieroptionen haben folgende Effekte:\n"
-"\n"
-"    --branchsort  Konvertiert von Vorfahr zum Kind wenn möglich. Das\n"
-"                  bedeutet, dass Zweige nacheinander konvertiert "
-"werden.                  Dies führt zu kompakteren Archiven.\n"
-"\n"
-"    --datesort    Sortiert die Revisionen nach Datum. Die fertigen Archive\n"
-"                  haben ein gut lesbares Meldungs-Logbuch, sind aber häufig\n"
-"                  eine Zehnerpotenz größer als mit \"branchsort\" "
-"erstellte.\n"
-"\n"
-"    --sourcesort  Versucht die Reihenfolge der Quellrevisionen zu erhalten.\n"
-"                  Dies ist nur von Mercurial als Quelle unterstützt.\n"
-"\n"
-"    Die Datei <REVMAP> (standardmäßig .hg/shamap im Zielarchiv) ist eine\n"
-"    einfache Textdatei, durch die jede Quellrevision per Id mit der Ziel-\n"
-"    revision assoziiert. Das Format ist::\n"
-"\n"
-"      <Quell ID> <Ziel ID>\n"
-"\n"
-"    Diese Datei wird erstellt, wenn sie nicht existiert. Sie wird durch\n"
-"    jeden konvertierten Änderungssatz erweitert, so dass unterbrochene\n"
-"    Konvertierungen durch erneuten Aufruf fortgesetzt werden können.\n"
-"\n"
-"    Die [Nutzernamen-Zuordnungsdatei] ist eine Textdatei die jeden Autor\n"
-"    von Revisionen in der Quelle einem Ziel-Autor zuweist. Dies ist\n"
-"    praktisch für VCS, die Unix-Login zur Identifikation von Autoren\n"
-"    verwenden, wie z.B. CVS. Das Format ist pro Zeile::\n"
-"\n"
-"      <Quellauthor>=<Zeichenkette, z.B. Email und Benutzername>\n"
-"\n"
-"    Eine weitere Abbildungsdatei für Dateinamen erlaubt eine Filterung und\n"
-"    Umbenennung von Dateien und Verzeichnissen. Kommentarzeilen beginnen "
-"mit\n"
-"    einem #. Jede Zeile kann eine der folgenden Direktiven enthalten::\n"
-"\n"
-"      include pfad/zu/datei\n"
-"\n"
-"      exclude pfad/zu/datei\n"
-"\n"
-"      rename von/datei zu/datei\n"
-"\n"
-"    Ist eine \"include\" Direktive angegeben, so werden genau diese Dateien\n"
-"    bzw. alle Dateien in diesen Verzeichnissen ins Zielarchiv übernommen\n"
-"    alle anderen nicht. Durch die \"exclude\" Direktive werden solche\n"
-"    Dateien oder Verzeichnisse angegeben, die nicht übernommen werden "
-"sollen.\n"
-"    Und \"rename\" schliesslich benennt eine Datei oder Verzeichnis um.\n"
-"    Um von einem Unterverzeichnis der Quelle in die Wurzel des Zielarchivs\n"
-"    umzubenennen, kann '.' als Pfad der Zieldatei angegeben werden.\n"
-"\n"
-"    Die Spleißdatei erlaubt die künstliche Einführung von Vorfahrver-\n"
-"    bindungen. Die ist nützlich, wenn einer Zusammenführung unter "
-"Subversion\n"
-"    der andere Vorfahr angegeben werden soll oder zwei ansonsten "
-"unabhängige\n"
-"    Entwicklungslinien verbunden werden sollen. Jeder Eintrag enthält eine\n"
-"    Revisions-ID des Quellarchivs, eine Leerstelle und eine oder (mit "
-"Komma)\n"
-"    zwei Revisions-IDs, die als Vorfahren der ersten angenommen werden\n"
-"    sollen. Wurde z.B. \"trunk\" mit \"release-1.0\" zusammengeführt, so\n"
-"    sollte die Revision aus \"trunk\" als erster und die aus dem Zweig\n"
-"    \"release-1.0\" als zweiter Vorfahr angegeben werden. Die Vorfahren-IDs\n"
-"    können entweder im Format der Quelle oder des Ziels angegeben werden.\n"
-"\n"
-"    Die Zweig-Abbildungsdatei erlaubt das Umbenennen von Zweigen. Zusammen\n"
-"    mit der Spleißdatei können so auch sehr unorganisierte Archive in\n"
-"    ein gute strukturiertes Mercurial-Archiv konvertiert werden.\n"
-"    Die Zeilen dieser Datei sind von der Form \"original neuer_name\".\n"
-"    Damit kann z.B. Code aus \"default\" eines Archivs in einen benannten\n"
-"    Zweig des Ziels gebracht werden.\n"
-"\n"
-"    Mercurial als Quelle\n"
-"    --------------------\n"
-"\n"
-"    --config convert.hg.ignoreerrors=False    (boolean)\n"
-"        Ignoriert Integritätsfehler beim Lesen. Wir benutzt um Mercurial-\n"
-"        Archive ohne RevLog und eines mit RevLog zu konvertieren.\n"
-"    --config convert.hg.saverev=False         (boolean)\n"
-"        Speichert die Original-Revisions-ID im Änderunsgsatz (erzwingt\n"
-"        Änderung der Ziel-IDs)\n"
-"    --config convert.hg.startrev=0            (hg Revisions-ID)\n"
-"        Konvertiert alle Nachfahren ab Startrevision\n"
-"\n"
-"    CVS als Quelle\n"
-"    --------------\n"
-"\n"
-"    Mit CVS als Quelle wird eine Sandkastenumgebung (also eine "
-"Arbeitskopie)\n"
-"    verwenden, um den Beginn der Konversion anzuzeigen. Direkter Zugriff\n"
-"    auf das Archiv ist nicht nötig, es sei denn es ist ein :lokales: "
-"Archiv.\n"
-"    Die Konversion sucht das CVS Verzeichnis in der Wurzel der Arbeitskopie\n"
-"    und verwendet die CVS rlog Kommandos um alle Dateien für die Konversion\n"
-"    zu finden. Wird also keine Abbildungsdatei für Dateinamen verwendet, so\n"
-"    werden alle Dateien unterhalb des Startverzeichnisses konvertiert und\n"
-"    jegliche Verzeichnis-Umordnung im Sandkasten ignoriert.\n"
-"\n"
-"    Die oben folgenden Argumente entsprechend dem Standardaufruf.\n"
-"\n"
-"    --config convert.cvsps.cache=True         (boolean)\n"
-"        Kann für Tests oder Debugging deaktiviert werden, um das Zwischen-\n"
-"        speichern des Quell-Logbuchs zu unterbinden.\n"
-"    --config convert.cvsps.fuzz=60            (Ganzzahl)\n"
-"        Spezifiziert die maximale Zeit (in Sekunden) die zwischen einzelnen\n"
-"        Dateiübernahmen mit selbem Benutzer und Meldung erlaubt sind, damit\n"
-"        sie in den gleichen Änderungssatz übernommen werden. Wenn sehr\n"
-"        große Dateien übernommen wurden, ist der Standard vielleicht zu "
-"klein.\n"
-"    --config convert.cvsps.mergeto='{{mergetobranch ([-\\w]+)}}'\n"
-"        Spezifiziert Zweignamen durch einen Regulären Ausdruck, auf die hin\n"
-"        Versionsmeldungen untersucht werden. Bei Entsprechung wird eine\n"
-"        künstliche Revision als Zusammenführung des aktuellen mit dem\n"
-"        gefunden Zweig eingefügt.\n"
-"    --config convert.cvsps.mergefrom='{{mergefrombranch ([-\\w]+)}}'\n"
-"        Spezifiziert Zweignamen durch einen Regulären Ausdruck, auf die hin\n"
-"        Versionsmeldungen untersucht werden. Bei Entsprechung wird die\n"
-"        jüngste Revision des angegebenen Zweigs als zweiter Vorfahr der\n"
-"        aktuellen Revision angenommen.\n"
-"\n"
-"    Das zusätzliche Kommando \"debugcvsps\" erlaubt es, die Zusammenführung\n"
-"    auch ohne Konversation ausführen. Die Parameter sind denen von cvsps "
-"2.1\n"
-"    ähnlich. Für weitere Details siehe die Hilfe zu diesem Kommando.\n"
-"\n"
-"    Subversion als Quelle\n"
-"    ---------------------\n"
-"\n"
-"    Die trunk/branch/tag Konvention von Subversion wird erkannt:\n"
-"    Standardmäßig wird entweder die angegebene Quell-URL \"svn://repo/pfad"
-"\"\n"
-"    oder ein Unterverzeichnis 'trunk' (falls dies existiert) als einzelner\n"
-"    (default) Zweig angenommen. Wenn ein 'branches' Unterverzeichnis\n"
-"    gefunden wird, so werden dessen Unterverzeichnisse als mögliche Zweige\n"
-"    aufgenommen. Wenn 'tags' existiert, wird es auf Zweigverweise hin "
-"unter-\n"
-"    sucht. Die Standardwerte 'trunk', 'branches' und 'tags' können mit den\n"
-"    folgenden Optionen überschrieben werden. Sie können auf einen Pfad\n"
-"    relativ zur Quell-URL gesetzt oder leer gelassen werden, um die\n"
-"    automatische Erkennung zu verhindern.\n"
-"\n"
-"    --config convert.svn.branches=branches    (Verzeichnisname)\n"
-"        Spezifiziert das Verzeichnis für die Zweige\n"
-"    --config convert.svn.tags=tags            (Verzeichnisname)\n"
-"        Spezifiziert das Verzeichnis für Etiketten\n"
-"    --config convert.svn.trunk=trunk          (Verzeichnisname)\n"
-"        Spezifiziert den Namen des Hauptzweigs\n"
-"\n"
-"    Nur die Konversion von einzelnen Zweigen ist unterstützt. Die Quell-\n"
-"    historie kann vollständig oder ab einer gegebenen Startrevision erfasst\n"
-"    werden:\n"
-"\n"
-"    --config convert.svn.startrev=0           (svn Revisionsnummer)\n"
-"        Spezifiziert eine Startrevision\n"
-"\n"
-"    Perforce als Quelle\n"
-"    -------------------\n"
-"\n"
-"    Der Perforce (P4) Importierer kann einen p4 Depotpfad oder eine Client-\n"
-"    Spezifikation als Quelle annehmen. Alle Dateien werden in ein flaches\n"
-"    Mercurial-Archiv konvertiert und ignoriert dabei Label, Zweige und\n"
-"    Integrationen. Bei Angabe eines Depotpfads wollte auch ein Zielpfad\n"
-"    genannt werden, da dieser sonst als ...-hg ausfallen kann.\n"
-"\n"
-"    Es ist möglich die zu konvertierte Quellhistorie durch Angabe einer\n"
-"    Startrevision zu begrenzen.\n"
-"\n"
-"    --config convert.p4.startrev=0            (perforce changelist-Nummer)\n"
-"        Spezifiziert eine Startrevision\n"
-"\n"
-"    Mercurial als Ziel\n"
-"    ------------------\n"
-"\n"
-"    --config convert.hg.clonebranches=False   (boolean)\n"
-"        Lagert Quellzweige in separaten Klonen ab.\n"
-"    --config convert.hg.tagsbranch=default    (Zweigname)\n"
-"        tag revisions branch name\n"
-"    --config convert.hg.usebranchnames=True   (boolean)\n"
-"        Erhält die Zweignamen\n"
-"\n"
-"    "
-
-#, fuzzy, python-format
-msgid "alias for: hg %s"
-msgstr ""
-"\n"
-"Aliase: %s\n"
-
-#, python-format
-msgid "%s"
-msgstr ""
-
-#, fuzzy, python-format
-msgid ""
-"\n"
-"use \"hg -v help %s\" to show verbose help\n"
-msgstr "Nutze \"hg -v help %s\" um globale Optionen anzuzeigen"
-
-msgid "options:\n"
-msgstr "Optionen:\n"
-
-msgid "no commands defined\n"
-msgstr "keine Befehle definiert\n"
-
-msgid "no help text available"
-msgstr "keine Hilfe verfügbar"
-
-#, python-format
-msgid "%s extension - %s"
-msgstr "%s Erweiterung - %s"
-
-msgid "use \"hg help extensions\" for information on enabling extensions\n"
-msgstr ""
-
-#, python-format
-msgid "'%s' is provided by the following extension:"
-msgstr ""
-
-msgid "Mercurial Distributed SCM\n"
-msgstr ""
-
-msgid "basic commands:"
-msgstr "Grundlegende Befehle:"
-
-msgid "enabled extensions:"
-msgstr "Aktive Erweiterungen:"
-
-msgid "VALUE"
-msgstr ""
-
-msgid "DEPRECATED"
-msgstr "VERALTET"
-
-msgid ""
-"\n"
-"[+] marked option can be specified multiple times"
-msgstr ""
-"\n"
-"Mit [+] markierte Optionen können mehrfach angegeben werden"
-
-msgid ""
-"\n"
-"additional help topics:"
-msgstr ""
-"\n"
-"Zusätzliche Hilfethemen:"
-
-msgid "identify the working copy or specified revision"
-msgstr "Beschreibt die Arbeitskopie oder die angegebene Revision"
-
-msgid ""
-"    With no revision, print a summary of the current state of the\n"
-"    repository."
-msgstr ""
-"    Ohne Revision wird eine Zusammenfassung des aktuellen Status des\n"
-"    Projektarchivs angezeigt."
-
-msgid ""
-"    Specifying a path to a repository root or Mercurial bundle will\n"
-"    cause lookup to operate on that repository/bundle."
-msgstr ""
-"    Mit einem Pfad auf ein Projektverzeichnis oder ein Bündel wird eine\n"
-"    Abfrage auf dies andere Archiv/Bündel ausgeführt."
-
-#, fuzzy
-msgid ""
-"    This summary identifies the repository state using one or two\n"
-"    parent hash identifiers, followed by a \"+\" if there are\n"
-"    uncommitted changes in the working directory, a list of tags for\n"
-"    this revision and a branch name for non-default branches."
-msgstr ""
-"    Die Zusammenfassung beschreibt den Zustand des Projektarchivs unter\n"
-"    Nutzung von ein oder zwei Prüfsummenbezeichnern, gefolgt von einem \"+"
-"\"\n"
-"    falls unversionierte Änderungen im Arbeitsverzeichnis vorliegen. Zudem\n"
-"    werden eine Liste von Tags dieser Revision ausgegeben und der Zweigname\n"
-"    falls nicht der 'default'-Zweig vorliegt.\n"
-"    "
-
-msgid "can't query remote revision number, branch, tags, or bookmarks"
-msgstr ""
-
-msgid "import an ordered set of patches"
-msgstr "Importiert eine Liste von Patches"
-
-msgid ""
-"    Import a list of patches and commit them individually (unless\n"
-"    --no-commit is specified)."
-msgstr ""
-"    Wendet die angegebenen Patches nacheinander an und übernimmt die "
-"Änderungen\n"
-"    ins Archiv (es sei denn die Option --no-commit ist angegeben)."
-
-msgid ""
-"    If there are outstanding changes in the working directory, import\n"
-"    will abort unless given the -f/--force flag."
-msgstr ""
-"    Falls aktuell lokale Änderungen im Arbeitsverzeichnis vorliegen, bricht\n"
-"    der Befehl ohne die Option -f/--force ab."
-
-msgid ""
-"    You can import a patch straight from a mail message. Even patches\n"
-"    as attachments work (to use the body part, it must have type\n"
-"    text/plain or text/x-patch). From and Subject headers of email\n"
-"    message are used as default committer and commit message. All\n"
-"    text/plain body parts before first diff are added to commit\n"
-"    message."
-msgstr ""
-"    Patches können direkt aus Emails importiert werden, sogar wenn sie in\n"
-"    einem Anhang (Mime Typ text/plain oder text/x-patch) vorliegen. Die\n"
-"    Absender- und Betreffszeile, sowie alle text/plain Abschnitte vor dem "
-"Patch\n"
-"    werden als Benutzername bzw. Versionsmeldung bei der Übernahme verwendet."
-
-#, fuzzy
-msgid ""
-"    If the imported patch was generated by :hg:`export`, user and\n"
-"    description from patch override values from message headers and\n"
-"    body. Values given on command line with -m/--message and -u/--user\n"
-"    override these."
-msgstr ""
-"    Falls der einzulesende Patch von \"hg export\" erzeugt wurde, werden\n"
-"    Benutzername und Versionsmeldung aus dem Patch und nicht aus der Email\n"
-"    verwendet. Die Optionen -m/--message und -u/--user überschreiben aber\n"
-"    auch diese Angaben."
-
-msgid ""
-"    If --exact is specified, import will set the working directory to\n"
-"    the parent of each patch before applying it, and will abort if the\n"
-"    resulting changeset has a different ID than the one recorded in\n"
-"    the patch. This may happen due to character set problems or other\n"
-"    deficiencies in the text patch format."
-msgstr ""
-"    Mit der Option --exact wird das Arbeitsverzeichnis vor jedem Patch auf\n"
-"    dessen Vorgängerversion gebracht. Nach Anwendung wird geprüft, ob der\n"
-"    neue Änderungssatz die gleiche Prüfsumme aufweist, wie der Patch. Falls\n"
-"    dies nicht so ist (im Falle von inkompatiblen Zeichensätzen oder "
-"anderen\n"
-"    Problemen mit dem Patch Format), wird die Operation abgebrochen."
-
-msgid ""
-"    With -s/--similarity, hg will attempt to discover renames and\n"
-"    copies in the patch in the same way as 'addremove'."
-msgstr ""
-"    Mit der Option -s/--similarity werden Umbenennungen und Kopien auf\n"
-"    gleiche Weise wie mit dem Befehl \"hg addremove\" erkannt."
-
-#, fuzzy
-msgid ""
-"    To read a patch from standard input, use \"-\" as the patch name. If\n"
-"    a URL is specified, the patch will be downloaded from it.\n"
-"    See :hg:`help dates` for a list of formats valid for -d/--date."
-msgstr ""
-"    Um einen Patch von der Standardeingabe zu lesen, kann der Dateiname \"-"
-"\"\n"
-"    verwendet werden. Falls eine URL angegeben ist, wird der Patch von dort\n"
-"    heruntergeladen. Siehe 'hg help dates' für eine Liste aller gültigen\n"
-"    Formate für -d/--date.\n"
-"    "
-
-#, fuzzy
-msgid "to working directory"
-msgstr "Aktualisiert das Arbeitsverzeichnis"
-
-msgid "not a Mercurial patch"
-msgstr "Kein Mercurial Patch"
-
-msgid "patch is damaged or loses information"
-msgstr "Prüfsumme stimmt nicht überein: Patch korrumpiert"
-
-msgid "applying patch from stdin\n"
-msgstr "Wende Patch von der Standardeingabe an\n"
-
-#, fuzzy, python-format
-msgid "applied %s\n"
-msgstr "Wende %s an\n"
-
-msgid "no diffs found"
-msgstr "Keine Diffs gefunden"
-
-msgid "show new changesets found in source"
-msgstr "Zeigt neue Revisionen in einer externen Quelle an"
-
-msgid ""
-"    Show new changesets found in the specified path/URL or the default\n"
-"    pull location. These are the changesets that would have been pulled\n"
-"    if a pull at the time you issued this command."
-msgstr ""
-"    Zeigt alle neuen Änderungen an, die durch ein \"hg pull\" vom \n"
-"    angegebenen Pfad/URL oder dem 'default'-Pfad geholt werden würden."
-
-msgid ""
-"    For remote repository, using --bundle avoids downloading the\n"
-"    changesets twice if the incoming is followed by a pull."
-msgstr ""
-"    Für entfernte Archive sorgt die Option --bundle dafür, dass die "
-"Änderungen\n"
-"    bei einem folgenden \"hg pull\" nicht ein zweites Mal geholt werden."
-
-#, fuzzy
-msgid "    See pull for valid source format details."
-msgstr ""
-"    Siehe \"hg help pull\" für gültige Angaben für die Quelle.\n"
-"    "
-
-msgid ""
-"    Returns 0 if there are incoming changes, 1 otherwise.\n"
-"    "
-msgstr ""
-
-#, fuzzy
-msgid "cannot combine --bundle and --subrepos"
-msgstr "Neues Bündelarchiv kann nicht erzeugt werden"
-
-msgid "remote doesn't support bookmarks\n"
-msgstr "Quellarchiv unterstützt keine Lesezeichen\n"
-
-msgid "create a new repository in the given directory"
-msgstr "Erzeugt ein neues Projektarchiv im angegebenen Verzeichnis"
-
-msgid ""
-"    Initialize a new repository in the given directory. If the given\n"
-"    directory does not exist, it will be created."
-msgstr ""
-"    Initialisiert ein neues Archiv im angegebenen Verzeichnis. Sollte das\n"
-"    angegebene Verzeichnis nicht existieren, wird es angelegt."
-
-msgid "    If no directory is given, the current directory is used."
-msgstr "    Ist kein Zielverzeichnis angegeben, wird das aktuelle genutzt."
-
-#, fuzzy
-msgid ""
-"    It is possible to specify an ``ssh://`` URL as the destination.\n"
-"    See :hg:`help urls` for more information."
-msgstr ""
-"    Es ist möglich eine ``ssh://`` URL als Ziel anzugeben.\n"
-"    Siehe 'hg help urls' für mehr Informationen.\n"
-"    "
-
-msgid "locate files matching specific patterns"
-msgstr "Suche Dateien mit bestimmtem Namen"
-
-msgid ""
-"    Print files under Mercurial control in the working directory whose\n"
-"    names match the given patterns."
-msgstr ""
-"    Gibt alle Dateien im Projektarchiv aus, deren Namen auf ein angegebenes\n"
-"    Muster passen."
-
-msgid ""
-"    By default, this command searches all directories in the working\n"
-"    directory. To search just the current directory and its\n"
-"    subdirectories, use \"--include .\"."
-msgstr ""
-"    Standardmäßig wird das gesamte Archiv durchsucht. Um die Suche auf das\n"
-"    aktuelle Verzeichnis und Unterverzeichnisse zu begrenzen, verwende\n"
-"    \"--include .\"."
-
-msgid ""
-"    If no patterns are given to match, this command prints the names\n"
-"    of all files under Mercurial control in the working directory."
-msgstr "    Ohne angegebenes Suchmuster werden alle Dateinamen ausgegeben."
-
-#, fuzzy
-msgid ""
-"    If you want to feed the output of this command into the \"xargs\"\n"
-"    command, use the -0 option to both this command and \"xargs\". This\n"
-"    will avoid the problem of \"xargs\" treating single filenames that\n"
-"    contain whitespace as multiple filenames."
-msgstr ""
-"    Um die Ausgabe besser in Verbindung mit \"xargs\" verwenden zu können,\n"
-"    sollte die Option \"-0\" (Null) in beiden Befehle angegeben werden.\n"
-"    Dadurch werden die Dateinamen mit einem Null-Byte getrennt, was "
-"Probleme\n"
-"    mit Leerzeichen in Dateinamen vermeidet.\n"
-"    "
-
-msgid "show revision history of entire repository or files"
-msgstr "Zeigt die Revisionshistorie des Archivs oder von Dateien an"
-
-msgid ""
-"    Print the revision history of the specified files or the entire\n"
-"    project."
-msgstr ""
-"    Gibt die Revisionshistorie der angegeben Dateien oder des ganzen\n"
-"    Projektes aus."
-
-msgid ""
-"    File history is shown without following rename or copy history of\n"
-"    files. Use -f/--follow with a filename to follow history across\n"
-"    renames and copies. --follow without a filename will only show\n"
-"    ancestors or descendants of the starting revision. --follow-first\n"
-"    only follows the first parent of merge revisions."
-msgstr ""
-"    Die Dateihistorie wird angezeigt ohne der Umbenennungs- oder Kopier-\n"
-"    historie zu folgen. Bei Angabe von -f/--follow mit einem Dateinamen\n"
-"    wird die Historie über Kopien und Umbenennungen hinweg verfolgt.\n"
-"    --follow ohne Dateinamen wird nur Vorläufer und Nachfolger ab der\n"
-"    Startrevision anzeigen. --follow-first folgt nur dem ersten Vorgänger\n"
-"    einer Zusammenführungsversion."
-
-#, fuzzy
-msgid ""
-"    If no revision range is specified, the default is ``tip:0`` unless\n"
-"    --follow is set, in which case the working directory parent is\n"
-"    used as the starting revision. You can specify a revision set for\n"
-"    log, see :hg:`help revsets` for more information."
-msgstr ""
-"    Solle kein Revisionsbereich angegeben sein, wird tip:0 angenommen, "
-"außer\n"
-"    --follow wurde angegeben. In diesem Fall wird die Vorgängerversion des\n"
-"    Arbeitsverzeichnis als Startversion genommen."
-
-msgid ""
-"    By default this command prints revision number and changeset id,\n"
-"    tags, non-trivial parents, user, date and time, and a summary for\n"
-"    each commit. When the -v/--verbose switch is used, the list of\n"
-"    changed files and full commit message are shown."
-msgstr ""
-"    Standardmäßig wird folgendes ausgegeben: Änderungssatz-Id und\n"
-"    Prüfsumme, Marken, nicht triviale Vorgängerversionen, Nutzer,\n"
-"    Datum und Zeit und eine Zusammenfassung für jede Version. Bei Angabe\n"
-"    des -v/--verbose Schalters, wird eine Liste aller geänderten Dateien\n"
-"    und die komplette Versionsmeldung angezeigt."
-
-#, fuzzy
-msgid ""
-"    .. note::\n"
-"       log -p/--patch may generate unexpected diff output for merge\n"
-"       changesets, as it will only compare the merge changeset against\n"
-"       its first parent. Also, only files different from BOTH parents\n"
-"       will appear in files:."
-msgstr ""
-"    HINWEIS: log -p/--patch kann ein unerwartetes Diff für "
-"Zusammenführungen\n"
-"    erzeugen, da es standardmäßig die Zusammenführungsversion mit der "
-"ersten\n"
-"    Vorgängerversion vergleicht. Auch in der Dateiliste werden nur Dateien\n"
-"    berücksichtigt, die zu BEIDEN Vorgängernversionen verschieden sind.\n"
-"    "
-
-msgid "output the current or given revision of the project manifest"
-msgstr "Gibt das Manifest der angegebenen oder aktuellen Revision aus"
-
-msgid ""
-"    Print a list of version controlled files for the given revision.\n"
-"    If no revision is given, the first parent of the working directory\n"
-"    is used, or the null revision if no revision is checked out."
-msgstr ""
-"    Gibt eine Liste aller Dateien unter Versionskontrolle für die "
-"angegebene\n"
-"    Revision aus. Wenn keine Revision angegeben wird, wird die erste\n"
-"    Vorgängerversion des Arbeitsverzeichnis genutzt oder die Spitze (tip)\n"
-"    falls keine Revision ausgecheckt ist."
-
-#, fuzzy
-msgid ""
-"    With -v, print file permissions, symlink and executable bits.\n"
-"    With --debug, print file revision hashes."
-msgstr ""
-"    Mit dem Schalter -v werden zusätzlich zum Dateinamen auch die Rechte "
-"und\n"
-"    der Dateityp (Verknüpfung/ausführbar) ausgegeben; mit --debug auch noch\n"
-"    die Prüfsumme.\n"
-"    "
-
-msgid "merge working directory with another revision"
-msgstr "Führt das Arbeitsverzeichnis mit einer anderen Revision zusammen"
-
-msgid ""
-"    The current working directory is updated with all changes made in\n"
-"    the requested revision since the last common predecessor revision."
-msgstr ""
-"    Wendet die Änderungen der angegebenen Revision (seit einem gemeinsamen\n"
-"    Vorfahr) im Arbeitsverzeichnis an."
-
-msgid ""
-"    Files that changed between either parent are marked as changed for\n"
-"    the next commit and a commit must be performed before any further\n"
-"    updates to the repository are allowed. The next commit will have\n"
-"    two parents."
-msgstr ""
-"    Dateien, die in sich in einer der beiden Vorgängerversionen änderten\n"
-"    werden als verändert markiert und es muss 'hg commit' ausgeführt bevor\n"
-"    weitere Änderungen durchgeführt werden dürfen. Nach dem Übernehmen hat\n"
-"    die neue Revision zwei Vorfahren."
-
-msgid ""
-"    ``--tool`` can be used to specify the merge tool used for file\n"
-"    merges. It overrides the HGMERGE environment variable and your\n"
-"    configuration files."
-msgstr ""
-
-#, fuzzy
-msgid ""
-"    If no revision is specified, the working directory's parent is a\n"
-"    head revision, and the current branch contains exactly one other\n"
-"    head, the other head is merged with by default. Otherwise, an\n"
-"    explicit revision with which to merge with must be provided."
-msgstr ""
-"    Wenn keine Revision angegeben wird und der Vorgänger des Arbeits-\n"
-"    verzeichnisses eine Kopfversion eines Zweiges mit genau zwei Köpfen "
-"ist,\n"
-"    dann wird der andere Kopf für die Zusammenführung verwendet.\n"
-"    Bei mehr oder weniger als zwei Köpfen im Zweig muss eine andere "
-"Revision\n"
-"    explizit angegeben werden.\n"
-"    "
-
-#, fuzzy
-msgid "    :hg:`resolve` must be used to resolve unresolved files."
-msgstr "Nutze 'hg resolve', um ungelöste Merges zu wiederholen\n"
-
-msgid ""
-"    To undo an uncommitted merge, use :hg:`update --clean .` which\n"
-"    will check out a clean copy of the original merge parent, losing\n"
-"    all changes."
-msgstr ""
-
-msgid ""
-"    Returns 0 on success, 1 if there are unresolved files.\n"
-"    "
-msgstr ""
-
-#, fuzzy, python-format
-msgid ""
-"branch '%s' has %d heads - please merge with an explicit rev\n"
-"(run 'hg heads .' to see heads)"
-msgstr "Zweig '%s' hat %d Köpfe - Bitte wähle eine explizite Revision"
-
-#, fuzzy, python-format
-msgid ""
-"branch '%s' has one head - please merge with an explicit rev\n"
-"(run 'hg heads' to see all heads)"
-msgstr "Zweig '%s' hat einen Kopf - Bitte wähle eine explizite Revision"
-
-msgid "there is nothing to merge"
-msgstr "Es gibt nichts zum Zusammenführen"
-
-#, python-format
-msgid "%s - use \"hg update\" instead"
-msgstr "%s - Nutze \"hg update\" stattdessen"
-
-msgid ""
-"working dir not at a head rev - use \"hg update\" or merge with an explicit "
-"rev"
-msgstr ""
-"Arbeitsverzeichnis ist keine Kopfversion - Nutze \"hg update\" oder gib eine "
-"explizite Revision an"
-
-msgid "show changesets not found in the destination"
-msgstr "Zeigt Änderungssätze, die nicht im Zielarchiv sind"
-
-msgid ""
-"    Show changesets not found in the specified destination repository\n"
-"    or the default push location. These are the changesets that would\n"
-"    be pushed if a push was requested."
-msgstr ""
-"    Zeigt alle Änderungssätze des lokalen Archivs, die nicht im angegebenen\n"
-"    Zielarchiv oder dem Standardziel vorhanden sind. Dies sind genau jene,\n"
-"    die durch ein 'hg push' übertragen werden würden."
-
-#, fuzzy
-msgid "    See pull for details of valid destination formats."
-msgstr ""
-"    Siehe Hilfe zu 'pull' für das Format der Zieladresse.\n"
-"    "
-
-msgid ""
-"    Returns 0 if there are outgoing changes, 1 otherwise.\n"
-"    "
-msgstr ""
-
-msgid "show the parents of the working directory or revision"
-msgstr "Zeigt die Vorgänger des Arbeitsverzeichnisses oder einer Revision"
-
-#, fuzzy
-msgid ""
-"    Print the working directory's parent revisions. If a revision is\n"
-"    given via -r/--rev, the parent of that revision will be printed.\n"
-"    If a file argument is given, the revision in which the file was\n"
-"    last changed (before the working directory revision or the\n"
-"    argument to --rev if given) is printed."
-msgstr ""
-"    Gibt die Vorgängerversion(en) des Arbeitsverzeichnisses aus. Bei\n"
-"    Angabe einer Revision via -r/--rev, werden die Vorgänger dieser\n"
-"    Version ausgegeben. Bei Angabe einer Datei wird die Version\n"
-"    ausgegeben, in der diese Datei zuletzt geändert wurde (noch vor der\n"
-"    Version des Arbeitsverzeichnisses oder dem Argument zu --rev falls\n"
-"    angegeben).\n"
-"    "
-
-msgid "can only specify an explicit filename"
-msgstr "Ein expliziter Dateiname muss angegeben werden"
-
-#, python-format
-msgid "'%s' not found in manifest!"
-msgstr "'%s' nicht im Manifest gefunden!"
-
-msgid "show aliases for remote repositories"
-msgstr "Zeigt Adresse für Aliasnamen von entfernten Projektarchiven an"
-
-msgid ""
-"    Show definition of symbolic path name NAME. If no name is given,\n"
-"    show definition of all available names."
-msgstr ""
-"    Zeigt die Adressdefinition des Kurznamens NAME an. Wenn kein Name "
-"gegeben\n"
-"    ist, werden alle Alias-Definitionen angezeigt."
-
-#, fuzzy
-msgid ""
-"    Path names are defined in the [paths] section of your\n"
-"    configuration file and in ``/etc/mercurial/hgrc``. If run inside a\n"
-"    repository, ``.hg/hgrc`` is used, too."
-msgstr ""
-"    Kurznamen für entfernte Archive werden im Abschnitt [paths] der Dateien\n"
-"    /etc/mercurial/hgrc und $HOME/.hgrc definiert. Wenn der Befehl in einem\n"
-"    Projektarchiv ausgeführt wird, wird auch die .hg/hgrc durchsucht."
-
-msgid ""
-"    The path names ``default`` and ``default-push`` have a special\n"
-"    meaning.  When performing a push or pull operation, they are used\n"
-"    as fallbacks if no location is specified on the command-line.\n"
-"    When ``default-push`` is set, it will be used for push and\n"
-"    ``default`` will be used for pull; otherwise ``default`` is used\n"
-"    as the fallback for both.  When cloning a repository, the clone\n"
-"    source is written as ``default`` in ``.hg/hgrc``.  Note that\n"
-"    ``default`` and ``default-push`` apply to all inbound (e.g.\n"
-"    :hg:`incoming`) and outbound (e.g. :hg:`outgoing`, :hg:`email` and\n"
-"    :hg:`bundle`) operations."
-msgstr ""
-
-#, fuzzy
-msgid "    See :hg:`help urls` for more information."
-msgstr ""
-"    Siehe auch 'hg help urls' für das Format von Adressangaben.\n"
-"    "
-
-msgid "not found!\n"
-msgstr "nicht gefunden!\n"
-
-msgid "not updating, since new heads added\n"
-msgstr "Aktualisierung nicht durchgeführt, da neue Köpfe hinzugefügt wurden\n"
-
-msgid "(run 'hg heads' to see heads, 'hg merge' to merge)\n"
-msgstr ""
-"(\"hg heads\" zeigt alle Köpfe, nutze \"hg merge\" um sie zusammenzuführen)\n"
-
-msgid "(run 'hg update' to get a working copy)\n"
-msgstr "(führe \"hg update\" aus, um ein Arbeitsverzeichnis zu erstellen)\n"
-
-msgid "pull changes from the specified source"
-msgstr ""
-"Holt Änderungen aus dem angegebenen Projektarchiv\n"
-"\n"
-"    Überträgt Änderungen aus einem entfernten Archiv in das lokale.\n"
-"\n"
-"    Dabei werden alle Änderungen vom Archiv am angegebenen Pfad oder\n"
-"    URL gesucht und dem lokalen Archiv hinzugefügt. Standardmäßig\n"
-"    wird die Kopie des Projektes im Arbeitsverzeichnis nicht aktualisiert.\n"
-"\n"
-"    Um zu sehen, was beim nächsten 'pull' geholt würde, ohne dem Archiv\n"
-"    tatsächlich Änderungen hinzuzufügen, nutze \"hg incoming\". Wenn diese\n"
-"    dann hinzugefügt werden sollen, kann man mit \"pull -r X\" als X der\n"
-"    letzte von incoming gezeigte Änderungssatz angegeben werden.\n"
-"    Ohne Angabe der QUELLE wird standardmäßig der 'default'-Pfad genutzt.\n"
-"    Siehe Hilfe zu 'paths' zu Pfad-Kurznamen und 'urls' für erlaubte\n"
-"    Formate für die Quellangabe.\n"
-"    "
-
-#, fuzzy
-msgid "    Pull changes from a remote repository to a local one."
-msgstr ""
-"Holt Änderungen aus dem angegebenen Projektarchiv\n"
-"\n"
-"    Überträgt Änderungen aus einem entfernten Archiv in das lokale.\n"
-"\n"
-"    Dabei werden alle Änderungen vom Archiv am angegebenen Pfad oder\n"
-"    URL gesucht und dem lokalen Archiv hinzugefügt. Standardmäßig\n"
-"    wird die Kopie des Projektes im Arbeitsverzeichnis nicht aktualisiert.\n"
-"\n"
-"    Um zu sehen, was beim nächsten 'pull' geholt würde, ohne dem Archiv\n"
-"    tatsächlich Änderungen hinzuzufügen, nutze \"hg incoming\". Wenn diese\n"
-"    dann hinzugefügt werden sollen, kann man mit \"pull -r X\" als X der\n"
-"    letzte von incoming gezeigte Änderungssatz angegeben werden.\n"
-"    Ohne Angabe der QUELLE wird standardmäßig der 'default'-Pfad genutzt.\n"
-"    Siehe Hilfe zu 'paths' zu Pfad-Kurznamen und 'urls' für erlaubte\n"
-"    Formate für die Quellangabe.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    This finds all changes from the repository at the specified path\n"
-"    or URL and adds them to a local repository (the current one unless\n"
-"    -R is specified). By default, this does not update the copy of the\n"
-"    project in the working directory."
-msgstr ""
-"Holt Änderungen aus dem angegebenen Projektarchiv\n"
-"\n"
-"    Überträgt Änderungen aus einem entfernten Archiv in das lokale.\n"
-"\n"
-"    Dabei werden alle Änderungen vom Archiv am angegebenen Pfad oder\n"
-"    URL gesucht und dem lokalen Archiv hinzugefügt. Standardmäßig\n"
-"    wird die Kopie des Projektes im Arbeitsverzeichnis nicht aktualisiert.\n"
-"\n"
-"    Um zu sehen, was beim nächsten 'pull' geholt würde, ohne dem Archiv\n"
-"    tatsächlich Änderungen hinzuzufügen, nutze \"hg incoming\". Wenn diese\n"
-"    dann hinzugefügt werden sollen, kann man mit \"pull -r X\" als X der\n"
-"    letzte von incoming gezeigte Änderungssatz angegeben werden.\n"
-"    Ohne Angabe der QUELLE wird standardmäßig der 'default'-Pfad genutzt.\n"
-"    Siehe Hilfe zu 'paths' zu Pfad-Kurznamen und 'urls' für erlaubte\n"
-"    Formate für die Quellangabe.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    Use :hg:`incoming` if you want to see what would have been added\n"
-"    by a pull at the time you issued this command. If you then decide\n"
-"    to add those changes to the repository, you should use :hg:`pull\n"
-"    -r X` where ``X`` is the last changeset listed by :hg:`incoming`."
-msgstr ""
-"Holt Änderungen aus dem angegebenen Projektarchiv\n"
-"\n"
-"    Überträgt Änderungen aus einem entfernten Archiv in das lokale.\n"
-"\n"
-"    Dabei werden alle Änderungen vom Archiv am angegebenen Pfad oder\n"
-"    URL gesucht und dem lokalen Archiv hinzugefügt. Standardmäßig\n"
-"    wird die Kopie des Projektes im Arbeitsverzeichnis nicht aktualisiert.\n"
-"\n"
-"    Um zu sehen, was beim nächsten 'pull' geholt würde, ohne dem Archiv\n"
-"    tatsächlich Änderungen hinzuzufügen, nutze \"hg incoming\". Wenn diese\n"
-"    dann hinzugefügt werden sollen, kann man mit \"pull -r X\" als X der\n"
-"    letzte von incoming gezeigte Änderungssatz angegeben werden.\n"
-"    Ohne Angabe der QUELLE wird standardmäßig der 'default'-Pfad genutzt.\n"
-"    Siehe Hilfe zu 'paths' zu Pfad-Kurznamen und 'urls' für erlaubte\n"
-"    Formate für die Quellangabe.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    If SOURCE is omitted, the 'default' path will be used.\n"
-"    See :hg:`help urls` for more information."
-msgstr ""
-"Holt Änderungen aus dem angegebenen Projektarchiv\n"
-"\n"
-"    Überträgt Änderungen aus einem entfernten Archiv in das lokale.\n"
-"\n"
-"    Dabei werden alle Änderungen vom Archiv am angegebenen Pfad oder\n"
-"    URL gesucht und dem lokalen Archiv hinzugefügt. Standardmäßig\n"
-"    wird die Kopie des Projektes im Arbeitsverzeichnis nicht aktualisiert.\n"
-"\n"
-"    Um zu sehen, was beim nächsten 'pull' geholt würde, ohne dem Archiv\n"
-"    tatsächlich Änderungen hinzuzufügen, nutze \"hg incoming\". Wenn diese\n"
-"    dann hinzugefügt werden sollen, kann man mit \"pull -r X\" als X der\n"
-"    letzte von incoming gezeigte Änderungssatz angegeben werden.\n"
-"    Ohne Angabe der QUELLE wird standardmäßig der 'default'-Pfad genutzt.\n"
-"    Siehe Hilfe zu 'paths' zu Pfad-Kurznamen und 'urls' für erlaubte\n"
-"    Formate für die Quellangabe.\n"
-"    "
-
-msgid ""
-"    Returns 0 on success, 1 if an update had unresolved files.\n"
-"    "
-msgstr ""
-
-#, python-format
-msgid "remote bookmark %s not found!"
-msgstr "Entferntes Lesezeichen %s wurde nicht gefunden!"
-
-#, fuzzy
-msgid ""
-"other repository doesn't support revision lookup, so a rev cannot be "
-"specified."
-msgstr ""
-"Das andere Projektarchiv unterstützt keine Revisionsabfragen, daher kann "
-"keine Revision angegeben werden."
-
-#, python-format
-msgid "importing bookmark %s\n"
-msgstr "Importierte Lesezeichen %s\n"
-
-msgid "push changes to the specified destination"
-msgstr ""
-"Überträgt lokale Änderungen in das angegebene Ziel\n"
-"\n"
-"    Dies ist das Gegenteil der 'pull' Operation. Die lokalen Änderungen\n"
-"    des aktuellen Archivs werden in ein anderes übertragen. Bei lokalem\n"
-"    Ziel ist diese Aktion identisch zu einem 'hg pull' von diesem Archiv "
-"zum\n"
-"    aktuellen.\n"
-"\n"
-"    Im Regelfall wird \"hg push\" die Ausführung verweigern, wenn das\n"
-"    Resultat die Anzahl der Kopfversionen im entfernten Archiv erhöht, da\n"
-"    dies normalerweise bedeutet, dass der Nutzer vergessen hat vor der\n"
-"    Übertragung die entfernten Änderungen zu holen und zusammenzuführen.\n"
-"\n"
-"    Bei Nutzung von -r/--rev wird die benannte Revision mit allen "
-"Vorgängern\n"
-"    in das entfernte Archiv übertragen.\n"
-"\n"
-"    Für wichtige Details zu ``ssh://``-URLS kann die URL-Hilfe zu Rate "
-"gezogen\n"
-"    werden. Beim Weglassen des ZIELs wird standardmäßig der 'default'-Pfad\n"
-"    genutzt. Weitere Hilfe gibt unter 'hg help urls'.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    Push changesets from the local repository to the specified\n"
-"    destination."
-msgstr ""
-"Überträgt lokale Änderungen in das angegebene Ziel\n"
-"\n"
-"    Dies ist das Gegenteil der 'pull' Operation. Die lokalen Änderungen\n"
-"    des aktuellen Archivs werden in ein anderes übertragen. Bei lokalem\n"
-"    Ziel ist diese Aktion identisch zu einem 'hg pull' von diesem Archiv "
-"zum\n"
-"    aktuellen.\n"
-"\n"
-"    Im Regelfall wird \"hg push\" die Ausführung verweigern, wenn das\n"
-"    Resultat die Anzahl der Kopfversionen im entfernten Archiv erhöht, da\n"
-"    dies normalerweise bedeutet, dass der Nutzer vergessen hat vor der\n"
-"    Übertragung die entfernten Änderungen zu holen und zusammenzuführen.\n"
-"\n"
-"    Bei Nutzung von -r/--rev wird die benannte Revision mit allen "
-"Vorgängern\n"
-"    in das entfernte Archiv übertragen.\n"
-"\n"
-"    Für wichtige Details zu ``ssh://``-URLS kann die URL-Hilfe zu Rate "
-"gezogen\n"
-"    werden. Beim Weglassen des ZIELs wird standardmäßig der 'default'-Pfad\n"
-"    genutzt. Weitere Hilfe gibt unter 'hg help urls'.\n"
-"    "
-
-msgid ""
-"    This operation is symmetrical to pull: it is identical to a pull\n"
-"    in the destination repository from the current one."
-msgstr ""
-
-msgid ""
-"    By default, push will not allow creation of new heads at the\n"
-"    destination, since multiple heads would make it unclear which head\n"
-"    to use. In this situation, it is recommended to pull and merge\n"
-"    before pushing."
-msgstr ""
-
-msgid ""
-"    Use --new-branch if you want to allow push to create a new named\n"
-"    branch that is not present at the destination. This allows you to\n"
-"    only create a new branch without forcing other changes."
-msgstr ""
-
-msgid ""
-"    Use -f/--force to override the default behavior and push all\n"
-"    changesets on all branches."
-msgstr ""
-
-#, fuzzy
-msgid ""
-"    If -r/--rev is used, the specified revision and all its ancestors\n"
-"    will be pushed to the remote repository."
-msgstr ""
-"Überträgt lokale Änderungen in das angegebene Ziel\n"
-"\n"
-"    Dies ist das Gegenteil der 'pull' Operation. Die lokalen Änderungen\n"
-"    des aktuellen Archivs werden in ein anderes übertragen. Bei lokalem\n"
-"    Ziel ist diese Aktion identisch zu einem 'hg pull' von diesem Archiv "
-"zum\n"
-"    aktuellen.\n"
-"\n"
-"    Im Regelfall wird \"hg push\" die Ausführung verweigern, wenn das\n"
-"    Resultat die Anzahl der Kopfversionen im entfernten Archiv erhöht, da\n"
-"    dies normalerweise bedeutet, dass der Nutzer vergessen hat vor der\n"
-"    Übertragung die entfernten Änderungen zu holen und zusammenzuführen.\n"
-"\n"
-"    Bei Nutzung von -r/--rev wird die benannte Revision mit allen "
-"Vorgängern\n"
-"    in das entfernte Archiv übertragen.\n"
-"\n"
-"    Für wichtige Details zu ``ssh://``-URLS kann die URL-Hilfe zu Rate "
-"gezogen\n"
-"    werden. Beim Weglassen des ZIELs wird standardmäßig der 'default'-Pfad\n"
-"    genutzt. Weitere Hilfe gibt unter 'hg help urls'.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    Please see :hg:`help urls` for important details about ``ssh://``\n"
-"    URLs. If DESTINATION is omitted, a default path will be used."
-msgstr ""
-"Überträgt lokale Änderungen in das angegebene Ziel\n"
-"\n"
-"    Dies ist das Gegenteil der 'pull' Operation. Die lokalen Änderungen\n"
-"    des aktuellen Archivs werden in ein anderes übertragen. Bei lokalem\n"
-"    Ziel ist diese Aktion identisch zu einem 'hg pull' von diesem Archiv "
-"zum\n"
-"    aktuellen.\n"
-"\n"
-"    Im Regelfall wird \"hg push\" die Ausführung verweigern, wenn das\n"
-"    Resultat die Anzahl der Kopfversionen im entfernten Archiv erhöht, da\n"
-"    dies normalerweise bedeutet, dass der Nutzer vergessen hat vor der\n"
-"    Übertragung die entfernten Änderungen zu holen und zusammenzuführen.\n"
-"\n"
-"    Bei Nutzung von -r/--rev wird die benannte Revision mit allen "
-"Vorgängern\n"
-"    in das entfernte Archiv übertragen.\n"
-"\n"
-"    Für wichtige Details zu ``ssh://``-URLS kann die URL-Hilfe zu Rate "
-"gezogen\n"
-"    werden. Beim Weglassen des ZIELs wird standardmäßig der 'default'-Pfad\n"
-"    genutzt. Weitere Hilfe gibt unter 'hg help urls'.\n"
-"    "
-
-msgid ""
-"    Returns 0 if push was successful, 1 if nothing to push.\n"
-"    "
-msgstr ""
-
-#, python-format
-msgid "pushing to %s\n"
-msgstr "Übertrage nach %s\n"
-
-#, python-format
-msgid "exporting bookmark %s\n"
-msgstr "Exportiere Lesezeichen %s\n"
-
-#, python-format
-msgid "deleting remote bookmark %s\n"
-msgstr "Lösche entferntes Lesezeichen %s\n"
-
-#, python-format
-msgid "bookmark %s does not exist on the local or remote repository!\n"
-msgstr "Lesezeichen %s existiert weder im lokalen noch im entfernten Archiv!\n"
-
-#, python-format
-msgid "updating bookmark %s failed!\n"
-msgstr "Aktualisieren des Lesezeichens %s fehlgeschlagen!\n"
-
-msgid "roll back an interrupted transaction"
-msgstr "Setzt eine unterbrochene Transaktion zurück"
-
-msgid "    Recover from an interrupted commit or pull."
-msgstr ""
-"    Setzt ein unterbrochenes Übernehmen (commit) oder Abholen (pull) zurück."
-
-#, fuzzy
-msgid ""
-"    This command tries to fix the repository status after an\n"
-"    interrupted operation. It should only be necessary when Mercurial\n"
-"    suggests it."
-msgstr ""
-"    Der ungültige Status durch die Unterbrechung wird repariert. Dies "
-"sollte\n"
-"    nur dann nötig sein, wenn eine Meldung von Mercurial es vorschlägt.\n"
-"    "
-
-msgid ""
-"    Returns 0 if successful, 1 if nothing to recover or verify fails.\n"
-"    "
-msgstr ""
-
-msgid "remove the specified files on the next commit"
-msgstr "Entfernt die angegebenen Dateien in der nächsten Version"
-
-msgid "    Schedule the indicated files for removal from the repository."
-msgstr "    Merkt die benannten Dateien für die Entfernung aus dem Archiv vor."
-
-msgid ""
-"    This only removes files from the current branch, not from the\n"
-"    entire project history. -A/--after can be used to remove only\n"
-"    files that have already been deleted, -f/--force can be used to\n"
-"    force deletion, and -Af can be used to remove files from the next\n"
-"    revision without deleting them from the working directory."
-msgstr ""
-"    Dabei werden nur Dateien aus dem aktuellen Zweig gelöscht, nicht aus\n"
-"    der gesamten Projekthistorie. Option -A/--after kann genutzt werden,\n"
-"    um Dateien zu entfernen, die bereits gelöscht wurden, -f/--force kann\n"
-"    genutzt werden, um die Löschung zu erzwingen. -Af entfernt Dateien aus\n"
-"    der nächsten Revision, ohne sie zu löschen"
-
-#, fuzzy
-msgid ""
-"    The following table details the behavior of remove for different\n"
-"    file states (columns) and option combinations (rows). The file\n"
-"    states are Added [A], Clean [C], Modified [M] and Missing [!] (as\n"
-"    reported by :hg:`status`). The actions are Warn, Remove (from\n"
-"    branch) and Delete (from disk)::"
-msgstr ""
-"    Die folgende Tabelle beschreibt detailliert das Verhalten von 'remove'\n"
-"    für unterschiedliche Dateizustände (Spalten) und Optionskombinationen\n"
-"    (Reihen). Die Dateizustände sind Hinzugefügt (A), Unverändert (C),\n"
-"    Verändert (M) und Fehlend (!) (wie von 'hg status' angezeigt). Die\n"
-"    Aktionen sind Warnen, Entfernen (aus dem Zweig) und Löschen\n"
-"    (von der Festplatte)::"
-
-msgid ""
-"             A  C  M  !\n"
-"      none   W  RD W  R\n"
-"      -f     R  RD RD R\n"
-"      -A     W  W  W  R\n"
-"      -Af    R  R  R  R"
-msgstr ""
-"             A  C  M  !\n"
-"      keine  W  EL W  E\n"
-"      -f     E  EL EL E\n"
-"      -A     W  W  W  E\n"
-"      -Af    E  E  E  E"
-
-#, fuzzy
-msgid ""
-"    This command schedules the files to be removed at the next commit.\n"
-"    To undo a remove before that, see :hg:`revert`."
-msgstr ""
-"    Die Dateien werden im Projektarchiv beim nächsten Übernehmen (commit)\n"
-"    entfernt. Um diese Aktion vorher rückgängig zu machen, siehe 'hg "
-"revert'.\n"
-"    "
-
-msgid ""
-"    Returns 0 on success, 1 if any warnings encountered.\n"
-"    "
-msgstr ""
-
-#, python-format
-msgid "not removing %s: file is untracked\n"
-msgstr "Entferne %s nicht: Datei ist nicht versioniert\n"
-
-#, fuzzy, python-format
-msgid "not removing %s: file still exists (use -f to force removal)\n"
-msgstr "Entferne nicht %s: Datei %s (Nutze -f um Entfernung zu erzwingen)\n"
-
-#, fuzzy, python-format
-msgid "not removing %s: file is modified (use -f to force removal)\n"
-msgstr "Entferne nicht %s: Datei %s (Nutze -f um Entfernung zu erzwingen)\n"
-
-#, fuzzy, python-format
-msgid ""
-"not removing %s: file has been marked for add (use -f to force removal)\n"
-msgstr "Entferne nicht %s: Datei %s (Nutze -f um Entfernung zu erzwingen)\n"
-
-msgid "rename files; equivalent of copy + remove"
-msgstr "Benennt Dateien um; Äquivalent zu \"copy\" und \"remove\""
-
-msgid ""
-"    Mark dest as copies of sources; mark sources for deletion. If dest\n"
-"    is a directory, copies are put in that directory. If dest is a\n"
-"    file, there can only be one source."
-msgstr ""
-"    Erstellt das Ziel als neue Datei mit der Versionshistorie der Quelle.\n"
-"    Die Quelle wird ausserdem als gelöscht markiert. Wenn mehrere Quellen\n"
-"    angegeben sind, muss das Ziel ein Verzeichnis sein."
-
-#, fuzzy
-msgid ""
-"    This command takes effect at the next commit. To undo a rename\n"
-"    before that, see :hg:`revert`."
-msgstr ""
-"    Die neue Datei wird wie üblich nicht sofort übernommen, sondern "
-"existiert\n"
-"    als lokale Änderung im Arbeitsverzeichnis. Die Umbenennung kann durch\n"
-"    \"hg revert\" rückgängig gemacht werden.\n"
-"    "
-
-msgid "redo merges or set/view the merge status of files"
-msgstr ""
-"Macht Zusammenführungen rückgängig oder setzt/zeigt den "
-"Zusammenführungsstatus einer Datei"
-
-msgid ""
-"    Merges with unresolved conflicts are often the result of\n"
-"    non-interactive merging using the ``internal:merge`` configuration\n"
-"    setting, or a command-line merge tool like ``diff3``. The resolve\n"
-"    command is used to manage the files involved in a merge, after\n"
-"    :hg:`merge` has been run, and before :hg:`commit` is run (i.e. the\n"
-"    working directory must have two parents)."
-msgstr ""
-
-msgid "    The resolve command can be used in the following ways:"
-msgstr ""
-
-msgid ""
-"    - :hg:`resolve [--tool TOOL] FILE...`: attempt to re-merge the "
-"specified\n"
-"      files, discarding any previous merge attempts. Re-merging is not\n"
-"      performed for files already marked as resolved. Use ``--all/-a``\n"
-"      to selects all unresolved files. ``--tool`` can be used to specify\n"
-"      the merge tool used for the given files. It overrides the HGMERGE\n"
-"      environment variable and your configuration files."
-msgstr ""
-
-msgid ""
-"    - :hg:`resolve -m [FILE]`: mark a file as having been resolved\n"
-"      (e.g. after having manually fixed-up the files). The default is\n"
-"      to mark all unresolved files."
-msgstr ""
-
-msgid ""
-"    - :hg:`resolve -u [FILE]...`: mark a file as unresolved. The\n"
-"      default is to mark all resolved files."
-msgstr ""
-
-msgid ""
-"    - :hg:`resolve -l`: list files which had or still have conflicts.\n"
-"      In the printed list, ``U`` = unresolved and ``R`` = resolved."
-msgstr ""
-
-msgid ""
-"    Note that Mercurial will not let you commit files with unresolved\n"
-"    merge conflicts. You must use :hg:`resolve -m ...` before you can\n"
-"    commit after a conflicting merge."
-msgstr ""
-
-msgid ""
-"    Returns 0 on success, 1 if any files fail a resolve attempt.\n"
-"    "
-msgstr ""
-
-msgid "too many options specified"
-msgstr "Zu viele Optionen angegeben"
-
-msgid "can't specify --all and patterns"
-msgstr "Verwende nicht --all gleichzeitig mit einem Dateimuster"
-
-msgid "no files or directories specified; use --all to remerge all files"
-msgstr "Keine Dateien oder Verzeichnisse angegeben; nutze --all für alle"
-
-msgid "restore individual files or directories to an earlier state"
-msgstr ""
-"Setzt gegebene Dateien oder Verzeichnisse auf eine frühere Version zurück\n"
-"\n"
-"    (Im Gegensatz zu 'update -r' verändert 'revert' nicht die Angabe der\n"
-"    Vorgängerversion des Arbeitsverzeichnisses)\n"
-"\n"
-"    Ohne gegebene Revision wird der Inhalt der benannten Dateien oder\n"
-"    Verzeichnisse auf die Vorgängerversion zurückgesetzt. Die betroffenen\n"
-"    Dateien gelten danach wieder als unmodifiziert und nicht übernommene\n"
-"    Hinzufügungen, Entfernungen, Kopien und Umbenennungen werden vergessen.\n"
-"    Falls das Arbeitsverzeichnis zwei Vorgänger hat, muss eine Revision\n"
-"    explizit angegeben werden.\n"
-"\n"
-"    Mit der -r/--rev Option werden die Dateien oder Verzeichnisse auf die\n"
-"    gegebene Revision zurückgesetzt. Auf diese Weise können ungewollte\n"
-"    Änderungen rückgängig gemacht werden. Die betroffenen Dateien gelten "
-"dann\n"
-"    als modifiziert (seit dem Vorgänger) und müssen per 'commit' als neue\n"
-"    Revision übernommen werden. Siehe auch 'hg help dates' für erlaubte "
-"Formate\n"
-"    der -d/--date Option.\n"
-"\n"
-"    Eine gelöschte Datei wird wieder hergestellt. Wurde die Ausführbarkeit\n"
-"    einer Datei verändert, wird auch dieser Wert zurückgesetzt.\n"
-"\n"
-"    Nur die angegebenen Dateien und Verzeichnisse werden zurückgesetzt. "
-"Ohne\n"
-"    Angabe werden keine Dateien verändert.\n"
-"\n"
-"    Modifizierte Dateien werden vor der Änderung mit der Endung .orig\n"
-"    gespeichert. Um dieses Backup zu verhindern, verwende --no-backup.\n"
-"    "
-
-msgid ""
-"    .. note::\n"
-"       This command is most likely not what you are looking for.\n"
-"       Revert will partially overwrite content in the working\n"
-"       directory without changing the working directory parents. Use\n"
-"       :hg:`update -r rev` to check out earlier revisions, or\n"
-"       :hg:`update --clean .` to undo a merge which has added another\n"
-"       parent."
-msgstr ""
-
-#, fuzzy
-msgid ""
-"    With no revision specified, revert the named files or directories\n"
-"    to the contents they had in the parent of the working directory.\n"
-"    This restores the contents of the affected files to an unmodified\n"
-"    state and unschedules adds, removes, copies, and renames. If the\n"
-"    working directory has two parents, you must explicitly specify a\n"
-"    revision."
-msgstr ""
-"Setzt gegebene Dateien oder Verzeichnisse auf frühere Version zurück\n"
-"\n"
-"    (Im Gegensatz zu 'update -r' verändert 'revert' nicht die Angabe der\n"
-"    Vorgängerversion des Arbeitsverzeichnisses)\n"
-"\n"
-"    Ohne gegebene Revision wird der Inhalt der benannten Dateien oder\n"
-"    Verzeichnisse auf die Vorgängerversion zurückgesetzt. Die betroffenen\n"
-"    Dateien gelten danach wieder als unmodifiziert und nicht übernommene\n"
-"    Hinzufügungen, Entfernungen, Kopien und Umbenennungen werden vergessen.\n"
-"    Falls das Arbeitsverzeichnis zwei Vorgänger hat, muss eine Revision\n"
-"    explizit angegeben werden.\n"
-"\n"
-"    Mit der -r/--rev Option werden die Dateien oder Verzeichnisse auf die\n"
-"    gegebene Revision zurückgesetzt. Auf diese Weise können ungewollte\n"
-"    Änderungen rückgängig gemacht werden. Die betroffenen Dateien gelten "
-"dann\n"
-"    als modifiziert (seit dem Vorgänger) und müssen per 'commit' als neue\n"
-"    Revision übernommen werden. Siehe auch 'hg help dates' für erlaubte "
-"Formate\n"
-"    der -d/--date Option.\n"
-"\n"
-"    Eine gelöschte Datei wird wieder hergestellt. Wurde die Ausführbarkeit\n"
-"    einer Datei verändert, wird auch dieser Wert zurückgesetzt.\n"
-"\n"
-"    Nur die angegebenen Dateien und Verzeichnisse werden zurückgesetzt. "
-"Ohne\n"
-"    Angabe werden keine Dateien verändert.\n"
-"\n"
-"    Modifizierte Dateien werden vor der Änderung mit der Endung .orig\n"
-"    gespeichert. Um dieses Backup zu verhindern, verwende --no-backup.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    Using the -r/--rev option, revert the given files or directories\n"
-"    to their contents as of a specific revision. This can be helpful\n"
-"    to \"roll back\" some or all of an earlier change. See :hg:`help\n"
-"    dates` for a list of formats valid for -d/--date."
-msgstr ""
-"Setzt gegebene Dateien oder Verzeichnisse auf frühere Version zurück\n"
-"\n"
-"    (Im Gegensatz zu 'update -r' verändert 'revert' nicht die Angabe der\n"
-"    Vorgängerversion des Arbeitsverzeichnisses)\n"
-"\n"
-"    Ohne gegebene Revision wird der Inhalt der benannten Dateien oder\n"
-"    Verzeichnisse auf die Vorgängerversion zurückgesetzt. Die betroffenen\n"
-"    Dateien gelten danach wieder als unmodifiziert und nicht übernommene\n"
-"    Hinzufügungen, Entfernungen, Kopien und Umbenennungen werden vergessen.\n"
-"    Falls das Arbeitsverzeichnis zwei Vorgänger hat, muss eine Revision\n"
-"    explizit angegeben werden.\n"
-"\n"
-"    Mit der -r/--rev Option werden die Dateien oder Verzeichnisse auf die\n"
-"    gegebene Revision zurückgesetzt. Auf diese Weise können ungewollte\n"
-"    Änderungen rückgängig gemacht werden. Die betroffenen Dateien gelten "
-"dann\n"
-"    als modifiziert (seit dem Vorgänger) und müssen per 'commit' als neue\n"
-"    Revision übernommen werden. Siehe auch 'hg help dates' für erlaubte "
-"Formate\n"
-"    der -d/--date Option.\n"
-"\n"
-"    Eine gelöschte Datei wird wieder hergestellt. Wurde die Ausführbarkeit\n"
-"    einer Datei verändert, wird auch dieser Wert zurückgesetzt.\n"
-"\n"
-"    Nur die angegebenen Dateien und Verzeichnisse werden zurückgesetzt. "
-"Ohne\n"
-"    Angabe werden keine Dateien verändert.\n"
-"\n"
-"    Modifizierte Dateien werden vor der Änderung mit der Endung .orig\n"
-"    gespeichert. Um dieses Backup zu verhindern, verwende --no-backup.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    Revert modifies the working directory. It does not commit any\n"
-"    changes, or change the parent of the working directory. If you\n"
-"    revert to a revision other than the parent of the working\n"
-"    directory, the reverted files will thus appear modified\n"
-"    afterwards."
-msgstr ""
-"Setzt gegebene Dateien oder Verzeichnisse auf frühere Version zurück\n"
-"\n"
-"    (Im Gegensatz zu 'update -r' verändert 'revert' nicht die Angabe der\n"
-"    Vorgängerversion des Arbeitsverzeichnisses)\n"
-"\n"
-"    Ohne gegebene Revision wird der Inhalt der benannten Dateien oder\n"
-"    Verzeichnisse auf die Vorgängerversion zurückgesetzt. Die betroffenen\n"
-"    Dateien gelten danach wieder als unmodifiziert und nicht übernommene\n"
-"    Hinzufügungen, Entfernungen, Kopien und Umbenennungen werden vergessen.\n"
-"    Falls das Arbeitsverzeichnis zwei Vorgänger hat, muss eine Revision\n"
-"    explizit angegeben werden.\n"
-"\n"
-"    Mit der -r/--rev Option werden die Dateien oder Verzeichnisse auf die\n"
-"    gegebene Revision zurückgesetzt. Auf diese Weise können ungewollte\n"
-"    Änderungen rückgängig gemacht werden. Die betroffenen Dateien gelten "
-"dann\n"
-"    als modifiziert (seit dem Vorgänger) und müssen per 'commit' als neue\n"
-"    Revision übernommen werden. Siehe auch 'hg help dates' für erlaubte "
-"Formate\n"
-"    der -d/--date Option.\n"
-"\n"
-"    Eine gelöschte Datei wird wieder hergestellt. Wurde die Ausführbarkeit\n"
-"    einer Datei verändert, wird auch dieser Wert zurückgesetzt.\n"
-"\n"
-"    Nur die angegebenen Dateien und Verzeichnisse werden zurückgesetzt. "
-"Ohne\n"
-"    Angabe werden keine Dateien verändert.\n"
-"\n"
-"    Modifizierte Dateien werden vor der Änderung mit der Endung .orig\n"
-"    gespeichert. Um dieses Backup zu verhindern, verwende --no-backup.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    If a file has been deleted, it is restored. If the executable mode\n"
-"    of a file was changed, it is reset."
-msgstr ""
-"Setzt gegebene Dateien oder Verzeichnisse auf frühere Version zurück\n"
-"\n"
-"    (Im Gegensatz zu 'update -r' verändert 'revert' nicht die Angabe der\n"
-"    Vorgängerversion des Arbeitsverzeichnisses)\n"
-"\n"
-"    Ohne gegebene Revision wird der Inhalt der benannten Dateien oder\n"
-"    Verzeichnisse auf die Vorgängerversion zurückgesetzt. Die betroffenen\n"
-"    Dateien gelten danach wieder als unmodifiziert und nicht übernommene\n"
-"    Hinzufügungen, Entfernungen, Kopien und Umbenennungen werden vergessen.\n"
-"    Falls das Arbeitsverzeichnis zwei Vorgänger hat, muss eine Revision\n"
-"    explizit angegeben werden.\n"
-"\n"
-"    Mit der -r/--rev Option werden die Dateien oder Verzeichnisse auf die\n"
-"    gegebene Revision zurückgesetzt. Auf diese Weise können ungewollte\n"
-"    Änderungen rückgängig gemacht werden. Die betroffenen Dateien gelten "
-"dann\n"
-"    als modifiziert (seit dem Vorgänger) und müssen per 'commit' als neue\n"
-"    Revision übernommen werden. Siehe auch 'hg help dates' für erlaubte "
-"Formate\n"
-"    der -d/--date Option.\n"
-"\n"
-"    Eine gelöschte Datei wird wieder hergestellt. Wurde die Ausführbarkeit\n"
-"    einer Datei verändert, wird auch dieser Wert zurückgesetzt.\n"
-"\n"
-"    Nur die angegebenen Dateien und Verzeichnisse werden zurückgesetzt. "
-"Ohne\n"
-"    Angabe werden keine Dateien verändert.\n"
-"\n"
-"    Modifizierte Dateien werden vor der Änderung mit der Endung .orig\n"
-"    gespeichert. Um dieses Backup zu verhindern, verwende --no-backup.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    If names are given, all files matching the names are reverted.\n"
-"    If no arguments are given, no files are reverted."
-msgstr ""
-"Setzt gegebene Dateien oder Verzeichnisse auf frühere Version zurück\n"
-"\n"
-"    (Im Gegensatz zu 'update -r' verändert 'revert' nicht die Angabe der\n"
-"    Vorgängerversion des Arbeitsverzeichnisses)\n"
-"\n"
-"    Ohne gegebene Revision wird der Inhalt der benannten Dateien oder\n"
-"    Verzeichnisse auf die Vorgängerversion zurückgesetzt. Die betroffenen\n"
-"    Dateien gelten danach wieder als unmodifiziert und nicht übernommene\n"
-"    Hinzufügungen, Entfernungen, Kopien und Umbenennungen werden vergessen.\n"
-"    Falls das Arbeitsverzeichnis zwei Vorgänger hat, muss eine Revision\n"
-"    explizit angegeben werden.\n"
-"\n"
-"    Mit der -r/--rev Option werden die Dateien oder Verzeichnisse auf die\n"
-"    gegebene Revision zurückgesetzt. Auf diese Weise können ungewollte\n"
-"    Änderungen rückgängig gemacht werden. Die betroffenen Dateien gelten "
-"dann\n"
-"    als modifiziert (seit dem Vorgänger) und müssen per 'commit' als neue\n"
-"    Revision übernommen werden. Siehe auch 'hg help dates' für erlaubte "
-"Formate\n"
-"    der -d/--date Option.\n"
-"\n"
-"    Eine gelöschte Datei wird wieder hergestellt. Wurde die Ausführbarkeit\n"
-"    einer Datei verändert, wird auch dieser Wert zurückgesetzt.\n"
-"\n"
-"    Nur die angegebenen Dateien und Verzeichnisse werden zurückgesetzt. "
-"Ohne\n"
-"    Angabe werden keine Dateien verändert.\n"
-"\n"
-"    Modifizierte Dateien werden vor der Änderung mit der Endung .orig\n"
-"    gespeichert. Um dieses Backup zu verhindern, verwende --no-backup.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    Modified files are saved with a .orig suffix before reverting.\n"
-"    To disable these backups, use --no-backup."
-msgstr ""
-"Setzt gegebene Dateien oder Verzeichnisse auf frühere Version zurück\n"
-"\n"
-"    (Im Gegensatz zu 'update -r' verändert 'revert' nicht die Angabe der\n"
-"    Vorgängerversion des Arbeitsverzeichnisses)\n"
-"\n"
-"    Ohne gegebene Revision wird der Inhalt der benannten Dateien oder\n"
-"    Verzeichnisse auf die Vorgängerversion zurückgesetzt. Die betroffenen\n"
-"    Dateien gelten danach wieder als unmodifiziert und nicht übernommene\n"
-"    Hinzufügungen, Entfernungen, Kopien und Umbenennungen werden vergessen.\n"
-"    Falls das Arbeitsverzeichnis zwei Vorgänger hat, muss eine Revision\n"
-"    explizit angegeben werden.\n"
-"\n"
-"    Mit der -r/--rev Option werden die Dateien oder Verzeichnisse auf die\n"
-"    gegebene Revision zurückgesetzt. Auf diese Weise können ungewollte\n"
-"    Änderungen rückgängig gemacht werden. Die betroffenen Dateien gelten "
-"dann\n"
-"    als modifiziert (seit dem Vorgänger) und müssen per 'commit' als neue\n"
-"    Revision übernommen werden. Siehe auch 'hg help dates' für erlaubte "
-"Formate\n"
-"    der -d/--date Option.\n"
-"\n"
-"    Eine gelöschte Datei wird wieder hergestellt. Wurde die Ausführbarkeit\n"
-"    einer Datei verändert, wird auch dieser Wert zurückgesetzt.\n"
-"\n"
-"    Nur die angegebenen Dateien und Verzeichnisse werden zurückgesetzt. "
-"Ohne\n"
-"    Angabe werden keine Dateien verändert.\n"
-"\n"
-"    Modifizierte Dateien werden vor der Änderung mit der Endung .orig\n"
-"    gespeichert. Um dieses Backup zu verhindern, verwende --no-backup.\n"
-"    "
-
-msgid "you can't specify a revision and a date"
-msgstr "ungültige Angabe von Revision und Datum gleichzeitig"
-
-msgid "uncommitted merge - use \"hg update\", see \"hg help revert\""
-msgstr ""
-
-msgid "no files or directories specified; use --all to revert the whole repo"
-msgstr ""
-"keine Dateien oder Verzeichnisse angegeben; nutze --all um das gesamte "
-"Arbeitsverzeichnis zurückzusetzen"
-
-#, python-format
-msgid "forgetting %s\n"
-msgstr "vergesse: %s\n"
-
-#, python-format
-msgid "reverting %s\n"
-msgstr "setze zurück: %s\n"
-
-#, python-format
-msgid "undeleting %s\n"
-msgstr "stelle wieder her: %s\n"
-
-#, python-format
-msgid "saving current version of %s as %s\n"
-msgstr "speichere aktuelle Version von %s als %s\n"
-
-#, python-format
-msgid "file not managed: %s\n"
-msgstr "Datei nicht unter Versionskontrolle: %s\n"
-
-#, python-format
-msgid "no changes needed to %s\n"
-msgstr "keine Änderungen notwendig für %s\n"
-
-msgid "roll back the last transaction (dangerous)"
-msgstr "Rollt die letzte Transaktion zurück (gefährlich!)"
-
-msgid ""
-"    This command should be used with care. There is only one level of\n"
-"    rollback, and there is no way to undo a rollback. It will also\n"
-"    restore the dirstate at the time of the last transaction, losing\n"
-"    any dirstate changes since that time. This command does not alter\n"
-"    the working directory."
-msgstr ""
-"    Dieser Befehl muss mit Vorsicht verwendet werden. Es gibt keine ver-\n"
-"    schachtelten Transaktionen und ein Rückrollen kann selber nicht "
-"rückgängig\n"
-"    gemacht werden. Der aktuelle Status (dirstate) im .hg Verzeichnis wird\n"
-"    auf die letzte Transaktion zurückgesetzt. Neuere Änderungen gehen damit\n"
-"    verloren."
-
-#, fuzzy
-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 ""
-"    Transaktionen werden verwendet um den Effekt aller Befehle, die "
-"Änderungs-\n"
-"    sätze erstellen oder verteilen, zu kapseln. Die folgenden Befehle\n"
-"    werden durch Transaktionen geschützt::"
-
-#, fuzzy
-msgid ""
-"    - commit\n"
-"    - import\n"
-"    - pull\n"
-"    - push (with this repository as the destination)\n"
-"    - unbundle"
-msgstr ""
-"      commit\n"
-"      import\n"
-"      pull\n"
-"      push (mit diesem Archiv als Ziel)\n"
-"      unbundle"
-
-#, fuzzy
-msgid ""
-"    This command is not intended for use on public repositories. Once\n"
-"    changes are visible for pull by other users, rolling a transaction\n"
-"    back locally is ineffective (someone else may already have pulled\n"
-"    the changes). Furthermore, a race is possible with readers of the\n"
-"    repository; for example an in-progress pull from the repository\n"
-"    may fail if a rollback is performed."
-msgstr ""
-"    Dieser Befehl ist nicht für öffentliche Archive gedacht. Sobald "
-"Änderungen\n"
-"    für Andere sichtbar sind ist ein Zurückrollen unnütz, da jemand sie "
-"bereits\n"
-"    zu sich übertragen haben könnte. Weiterhin entsteht eine "
-"Wettlaufsituation,\n"
-"    wenn beispielsweise ein Zurückrollen ausgeführt wird, während jemand "
-"anders\n"
-"    ein 'pull' ausführt.\n"
-"    "
-
-msgid ""
-"    Returns 0 on success, 1 if no rollback data is available.\n"
-"    "
-msgstr ""
-
-msgid "print the root (top) of the current working directory"
-msgstr "Gibt die Wurzel (top) des aktuellen Arbeitsverzeichnisses aus"
-
-#, fuzzy
-msgid "    Print the root directory of the current repository."
-msgstr ""
-"    Gibt das Wurzelverzeichnis des aktuellen Arbeitsverzeichnisses aus.\n"
-"    "
-
-msgid "start stand-alone webserver"
-msgstr "Startet einen eigenständigen Webserver"
-
-msgid ""
-"    Start a local HTTP repository browser and pull server. You can use\n"
-"    this for ad-hoc sharing and browsing of repositories. It is\n"
-"    recommended to use a real web server to serve a repository for\n"
-"    longer periods of time."
-msgstr ""
-
-msgid ""
-"    Please note that the server does not implement access control.\n"
-"    This means that, by default, anybody can read from the server and\n"
-"    nobody can write to it by default. Set the ``web.allow_push``\n"
-"    option to ``*`` to allow everybody to push to the server. You\n"
-"    should use a real web server if you need to authenticate users."
-msgstr ""
-
-#, fuzzy
-msgid ""
-"    By default, the server logs accesses to stdout and errors to\n"
-"    stderr. Use the -A/--accesslog and -E/--errorlog options to log to\n"
-"    files."
-msgstr ""
-"    Standardmäßig schreibt der Server Zugriffe auf die Standardausgabe\n"
-"    und Fehler auf die Standardfehlerausgabe. Nutze die Optionen \n"
-"    -A/--accesslog und -E/--errorlog, um die Ausgabe in Dateien umzulenken.\n"
-"    "
-
-msgid ""
-"    To have the server choose a free port number to listen on, specify\n"
-"    a port number of 0; in this case, the server will print the port\n"
-"    number it uses."
-msgstr ""
-
-msgid "There is no Mercurial repository here (.hg not found)"
-msgstr "Es gibt hier kein Mercurial-Archiv (.hg nicht vorhanden)"
-
-#, python-format
-msgid "listening at http://%s%s/%s (bound to %s:%d)\n"
-msgstr "Höre auf http://%s%s/%s (gebunden an %s:%d)\n"
-
-msgid "show changed files in the working directory"
-msgstr "Zeigt geänderte Dateien im Arbeitsverzeichnis"
-
-msgid ""
-"    Show status of files in the repository. If names are given, only\n"
-"    files that match are shown. Files that are clean or ignored or\n"
-"    the source of a copy/move operation, are not listed unless\n"
-"    -c/--clean, -i/--ignored, -C/--copies or -A/--all are given.\n"
-"    Unless options described with \"show only ...\" are given, the\n"
-"    options -mardu are used."
-msgstr ""
-"    Zeigt den Status von Dateien im Archiv an. Wenn eine Name übergeben\n"
-"    wird, werden nur zutreffende Dateien angezeigt. Es werden keine Dateien\n"
-"    angezeigt die unverändert, ignoriert oder Quelle einer Kopier- oder\n"
-"    Verschiebe Operation sind, es sei denn -c/--clean (unverändert),\n"
-"    -i/--ignored (ignoriert), -C/--copies (Kopien) oder -A/--all (alle)\n"
-"    wurde angegeben. Außer bei Angabe von Optionen, die mit \"Zeigt\n"
-"    nur ...\" beschrieben werden, werden die Optionen -mardu genutzt."
-
-msgid ""
-"    Option -q/--quiet hides untracked (unknown and ignored) files\n"
-"    unless explicitly requested with -u/--unknown or -i/--ignored."
-msgstr ""
-"    Die Option -q/--quiet blendet unüberwachte (unbekannte und ignorierte)\n"
-"    Dateien aus, es sei denn sie werden explizit mit -u/--unknown oder \n"
-"    -i/--ignored angefordert."
-
-#, fuzzy
-msgid ""
-"    .. note::\n"
-"       status may appear to disagree with diff if permissions have\n"
-"       changed or a merge has occurred. The standard diff format does\n"
-"       not report permission changes and diff only reports changes\n"
-"       relative to one merge parent."
-msgstr ""
-"    HINWEIS: Der Status kann sich vom Diff unterscheiden, wenn sich\n"
-"    Berechtigungen geändert haben oder eine Zusammenführung aufgetreten\n"
-"    ist. Das Standard-Diff-Format zeigt keine Berechtigungsänderungen an "
-"und\n"
-"    'diff' zeigt nur Änderungen relativ zu einer Vorgängerversion einer\n"
-"    Zusammenführung an."
-
-#, fuzzy
-msgid ""
-"    If one revision is given, it is used as the base revision.\n"
-"    If two revisions are given, the differences between them are\n"
-"    shown. The --change option can also be used as a shortcut to list\n"
-"    the changed files of a revision from its first parent."
-msgstr ""
-"    Bei Angabe einer Revision wird diese als Basisrevision genutzt.\n"
-"    Bei Angabe zweier Revisionen werden die Unterschiede zwischen diesen\n"
-"    beiden gezeigt."
-
-#, fuzzy
-msgid "    The codes used to show the status of files are::"
-msgstr ""
-"Wiederholt eine Dateizusammenführung oder Aktualisierung\n"
-"\n"
-"    Der Prozess, zwei Versionen automatisch zusammenzuführen (nach "
-"expliziter\n"
-"    Zusammenführung oder nach Aktualisierung mit lokalen Änderungen), wird\n"
-"    erneut auf die ursprünglichen Versionen angewendet.\n"
-"    Dies überschreibt manuelle Versuche, den Konflikt zu lösen. Damit dies\n"
-"    nicht geschieht (und damit ein Übernehmen der Änderungen zugelassen\n"
-"    wird), müssen die Dateien mit der Option -m/--mark als manuell gelöst\n"
-"    markiert werden.\n"
-"\n"
-"    Man kann entweder eine Liste von zu bearbeitenden Dateien angeben, oder\n"
-"    mit der Option -a/--all alle konfliktbehafteten Dateien auswählen.\n"
-"\n"
-"    Der aktuelle Status wird mit -l/--list angezeigt. Die dabei verwendeten\n"
-"    Zeichen bedeuten::\n"
-"\n"
-"      U = noch konfliktbehaftet (unresolved)\n"
-"      R = konfliktfrei (resolved)\n"
-"    "
-
-#, fuzzy
-msgid ""
-"      M = modified\n"
-"      A = added\n"
-"      R = removed\n"
-"      C = clean\n"
-"      ! = missing (deleted by non-hg command, but still tracked)\n"
-"      ? = not tracked\n"
-"      I = ignored\n"
-"        = origin of the previous file listed as A (added)"
-msgstr ""
-"      M = modifiziert\n"
-"      A = hinzugefügt (added)\n"
-"      R = entfernt (removed)\n"
-"      C = unverändert (clean)\n"
-"      ! = verschwunden (nicht durch einen hg-Befehl gelöscht, aber immer\n"
-"          noch überwacht)\n"
-"      ? = nicht überwacht\n"
-"      I = ignoriert\n"
-"        = die zuvor hinzugefügt Datei wurde von hier kopiert\n"
-"    "
-
-msgid "summarize working directory state"
-msgstr "Fasst den Status des Arbeitsverzeichnisses zusammen"
-
-msgid ""
-"    This generates a brief summary of the working directory state,\n"
-"    including parents, branch, commit status, and available updates."
-msgstr ""
-
-msgid ""
-"    With the --remote option, this will check the default paths for\n"
-"    incoming and outgoing changes. This can be time-consuming."
-msgstr ""
-
-#, fuzzy, python-format
-msgid "parent: %d:%s "
-msgstr "Vorgänger: %d:%s %s\n"
-
-msgid " (empty repository)"
-msgstr " (leeres Archiv)"
-
-msgid " (no revision checked out)"
-msgstr " (keine Revision geladen)"
-
-#, python-format
-msgid "branch: %s\n"
-msgstr "Zweig: %s\n"
-
-#, python-format
-msgid "%d modified"
-msgstr "%d modifiziert"
-
-#, python-format
-msgid "%d added"
-msgstr "%d hinzugefügt"
-
-#, python-format
-msgid "%d removed"
-msgstr "%d entfernt"
-
-#, fuzzy, python-format
-msgid "%d renamed"
-msgstr "%d entfernt"
-
-#, fuzzy, python-format
-msgid "%d copied"
-msgstr "%d modifiziert"
-
-#, python-format
-msgid "%d deleted"
-msgstr "%d gelöscht"
-
-#, python-format
-msgid "%d unknown"
-msgstr "%d unbekannt"
-
-#, python-format
-msgid "%d ignored"
-msgstr "%d ignoriert"
-
-#, python-format
-msgid "%d unresolved"
-msgstr "%d konfliktbehaftet"
-
-#, fuzzy, python-format
-msgid "%d subrepos"
-msgstr "HG: Unterarchiv %s"
-
-msgid " (merge)"
-msgstr "(Zusammenführung)"
-
-msgid " (new branch)"
-msgstr "(neuer Zeig)"
-
-#, fuzzy
-msgid " (head closed)"
-msgstr " (%+d Köpfe)"
-
-msgid " (clean)"
-msgstr ""
-
-msgid " (new branch head)"
-msgstr ""
-
-#, python-format
-msgid "commit: %s\n"
-msgstr "Übernehme: %s\n"
-
-msgid "update: (current)\n"
-msgstr "Aktualisiere: (aktuell)\n"
-
-#, python-format
-msgid "update: %d new changesets (update)\n"
-msgstr "Aktualisiere: %d neue Änderungssätze (Aktualisierung)\n"
-
-#, python-format
-msgid "update: %d new changesets, %d branch heads (merge)\n"
-msgstr ""
-"Aktualisiere: %d neue Änderungssätze, %d neue Zweigköpfe (Zusammenführung)\n"
-
-msgid "1 or more incoming"
-msgstr ""
-
-#, python-format
-msgid "%d outgoing"
-msgstr ""
-
-#, python-format
-msgid "%d incoming bookmarks"
-msgstr "%d eingehende Lesezeichen"
-
-#, python-format
-msgid "%d outgoing bookmarks"
-msgstr "%d ausgehende Lesezeichen"
-
-#, python-format
-msgid "remote: %s\n"
-msgstr "Entfernt: %s\n"
-
-msgid "remote: (synced)\n"
-msgstr "Entfernt: (synchonisiert)\n"
-
-msgid "add one or more tags for the current or given revision"
-msgstr ""
-"Setze ein oder mehrere Etiketten für die aktuelle oder gegebene Revision"
-
-msgid "    Name a particular revision using <name>."
-msgstr "    Benennt eine bestimmte Revision mit <name>."
-
-#, fuzzy
-msgid ""
-"    Tags are used to name particular revisions of the repository and are\n"
-"    very useful to compare different revisions, to go back to significant\n"
-"    earlier versions or to mark branch points as releases, etc. Changing\n"
-"    an existing tag is normally disallowed; use -f/--force to override."
-msgstr ""
-"    Etiketten sind nützlich um somit benannte Revisionen später in "
-"Vergleichen\n"
-"    zu verwenden, in der Historie dorthin zurückzugehen oder wichtige "
-"Zweig-\n"
-"    stellen zu markieren."
-
-msgid ""
-"    If no revision is given, the parent of the working directory is\n"
-"    used, or tip if no revision is checked out."
-msgstr ""
-"    Wenn keine Revision angegeben ist, wird der Vorgänger des Arbeits-\n"
-"    verzeichnisses (oder - falls keines existiert - die Spitze) benannt."
-
-#, fuzzy
-msgid ""
-"    To facilitate version control, distribution, and merging of tags,\n"
-"    they are stored as a file named \".hgtags\" which is managed similarly\n"
-"    to other project files and can be hand-edited if necessary. This\n"
-"    also means that tagging creates a new commit. The file\n"
-"    \".hg/localtags\" is used for local tags (not shared among\n"
-"    repositories)."
-msgstr ""
-"    Um die Versionskontrolle, Verteilung und Zusammenführung von Etiketten\n"
-"    möglich zu machen, werden sie in einer Datei '.hgtags' gespeichert, "
-"welche\n"
-"    zusammen mit den anderen Projektdateien überwacht wird und manuell be-\n"
-"    arbeitet werden kann. Lokale Etiketten (nicht mit anderen Archiven "
-"geteilt)\n"
-"    liegen in der Datei .hg/localtags."
-
-msgid ""
-"    Tag commits are usually made at the head of a branch. If the parent\n"
-"    of the working directory is not a branch head, :hg:`tag` aborts; use\n"
-"    -f/--force to force the tag commit to be based on a non-head\n"
-"    changeset."
-msgstr ""
-
-msgid ""
-"    Since tag names have priority over branch names during revision\n"
-"    lookup, using an existing branch name as a tag name is discouraged."
-msgstr ""
-
-msgid "tag names must be unique"
-msgstr "Etikettnamen müssen einzigartig sein"
-
-#, fuzzy
-msgid "tag names cannot consist entirely of whitespace"
-msgstr "Ignoriert Änderungen bei der Anzahl von Leerzeichen"
-
-msgid "--rev and --remove are incompatible"
-msgstr "Die Optionen --rev und --remove sind inkompatibel"
-
-#, python-format
-msgid "tag '%s' does not exist"
-msgstr "Etikett '%s' existiert nicht"
-
-#, python-format
-msgid "tag '%s' is not a global tag"
-msgstr "Etikett '%s' ist nicht global"
-
-#, python-format
-msgid "tag '%s' is not a local tag"
-msgstr "Etikett '%s' ist nicht lokal"
-
-#, python-format
-msgid "tag '%s' already exists (use -f to force)"
-msgstr "Etikett '%s' existiert bereits; erzwinge mit -f/--force"
-
-#, fuzzy
-msgid "uncommitted merge"
-msgstr "Ausstehende nicht versionierte Zusammenführung"
-
-#, fuzzy
-msgid "not at a branch head (use -f to force)"
-msgstr "Etikett '%s' existiert bereits; erzwinge mit -f/--force"
-
-msgid "list repository tags"
-msgstr "Liste alle Etiketten des Archivs auf"
-
-#, fuzzy
-msgid ""
-"    This lists both regular and local tags. When the -v/--verbose\n"
-"    switch is used, a third column \"local\" is printed for local tags."
-msgstr ""
-"    Listet sowohl globale wie auch lokale Etiketten auf. Mit dem Schalter -"
-"v/\n"
-"    --verbose werden lokale in einer dritten Spalte als solche markiert.\n"
-"    "
-
-msgid "show the tip revision"
-msgstr "Zeigt die zuletzt übernommene Revision"
-
-msgid ""
-"    The tip revision (usually just called the tip) is the changeset\n"
-"    most recently added to the repository (and therefore the most\n"
-"    recently changed head)."
-msgstr ""
-"    Die Spitze (tip) bezeichnet den zuletzt hinzugefügten Änderungssatz und\n"
-"    damit den zuletzt geänderten Kopf."
-
-#, fuzzy
-msgid ""
-"    If you have just made a commit, that commit will be the tip. If\n"
-"    you have just pulled changes from another repository, the tip of\n"
-"    that repository becomes the current tip. The \"tip\" tag is special\n"
-"    and cannot be renamed or assigned to a different changeset."
-msgstr ""
-"    Nach einem Übernehmen mit commit wird die neue Revision die Spitze.\n"
-"    Nach einem Holen mit pull wird die Spitze des anderen Archives\n"
-"    übernommen. Als Etikettname ist \"tip\" ein Spezialfall und kann nicht\n"
-"    umbenannt oder manuell einem anderen Änderungssatz angehängt werden.\n"
-"    "
-
-msgid "apply one or more changegroup files"
-msgstr "Wendet eine oder mehrere Änderungsgruppendateien an"
-
-#, fuzzy
-msgid ""
-"    Apply one or more compressed changegroup files generated by the\n"
-"    bundle command."
-msgstr ""
-"    Die angegebenen Dateien müssen komprimierte Änderungsgruppen enthalten,\n"
-"    wie sie durch den Befehl 'bundle' erzeugt werden\n"
-"    "
-
-msgid ""
-"    Returns 0 on success, 1 if an update has unresolved files.\n"
-"    "
-msgstr ""
-
-msgid "update working directory (or switch revisions)"
-msgstr "Aktualisiert das Arbeitsverzeichnis (oder wechselt die Version)"
-
-#, fuzzy
-msgid ""
-"    Update the repository's working directory to the specified\n"
-"    changeset. If no changeset is specified, update to the tip of the\n"
-"    current named branch."
-msgstr "    Hebt das Arbeitsverzeichnis auf die angegebene Revision an."
-
-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 ""
-"    The following rules apply when the working directory contains\n"
-"    uncommitted changes:"
-msgstr ""
-"    Wenn die Arbeitskopie nicht übernommene Änderungen enthält, wird nach\n"
-"    folgenden Regeln vorgegangen:"
-
-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. Falls weder -c/--check noch -C/--clean angegeben ist und das\n"
-"       Ziel der Aktualisierung ein Vor- oder Nachfahr des Vorgängers der\n"
-"       Arbeitskopie ist, werden die lokalen Änderungen als solche erhalten,\n"
-"       also mit der Zielversion zusammengeführt, aber nicht übernommen.\n"
-"       Wenn das Ziel dagegen nicht verwandt ist, wird die Aktualisierung\n"
-"       ohne Veränderung abgebrochen."
-
-msgid ""
-"    2. With the -c/--check option, the update is aborted and the\n"
-"       uncommitted changes are preserved."
-msgstr ""
-"    2. Mit der Option -c/--check wird die Aktualisierung immer aufgrund\n"
-"       der lokalen Änderungen abgebrochen."
-
-msgid ""
-"    3. With the -C/--clean option, uncommitted changes are discarded and\n"
-"       the working directory is updated to the requested changeset."
-msgstr ""
-"    3. Mit der Option -C/--clean werden die nicht übernommenen Änderungen\n"
-"       vernachlässigt und durch die Zielversion vollständig ersetzt."
-
-#, fuzzy
-msgid ""
-"    Use null as the changeset to remove the working directory (like\n"
-"    :hg:`clone -U`)."
-msgstr ""
-"    Bei der Verwendung von null als Revision wird die Arbeitskopie\n"
-"    entfernt (wie 'hg clone -U')."
-
-#, fuzzy
-msgid ""
-"    If you want to update just one file to an older changeset, use\n"
-"    :hg:`revert`."
-msgstr ""
-"    Solle nur eine Datei auf eine ältere Revision gehoben werden, kann\n"
-"    'revert' genutzt werden."
-
-msgid "cannot specify both -c/--check and -C/--clean"
-msgstr ""
-"Es können nicht gleichzeitig -c/--check und -C/--clean angegeben werden"
-
-msgid "uncommitted local changes"
-msgstr "Ausstehende nicht versionierte Änderungen"
-
-msgid "verify the integrity of the repository"
-msgstr ""
-"Prüft die Integrität des Projektarchivs\n"
-"\n"
-"    Führt eine umfassende Prüfung des aktuellen Projektarchivs durch, "
-"rechnet\n"
-"    alle Prüfsummen in Historie, Manifest und überwachten Dateien nach.\n"
-"    Auch die Integrität von Referenzen und Indizes wird geprüft.\n"
-"    "
-
-#, fuzzy
-msgid "    Verify the integrity of the current repository."
-msgstr ""
-"Prüft die Integrität des Projektarchivs\n"
-"\n"
-"    Führt eine umfassende Prüfung des aktuellen Projektarchivs durch, "
-"rechnet\n"
-"    alle Prüfsummen in Historie, Manifest und überwachten Dateien nach.\n"
-"    Auch die Integrität von Referenzen und Indizes wird geprüft.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"    This will perform an extensive check of the repository's\n"
-"    integrity, validating the hashes and checksums of each entry in\n"
-"    the changelog, manifest, and tracked files, as well as the\n"
-"    integrity of their crosslinks and indices."
-msgstr ""
-"Prüft die Integrität des Projektarchivs\n"
-"\n"
-"    Führt eine umfassende Prüfung des aktuellen Projektarchivs durch, "
-"rechnet\n"
-"    alle Prüfsummen in Historie, Manifest und überwachten Dateien nach.\n"
-"    Auch die Integrität von Referenzen und Indizes wird geprüft.\n"
-"    "
-
-msgid "output version and copyright information"
-msgstr "Gibt Version und Copyright Information aus"
-
-#, python-format
-msgid "Mercurial Distributed SCM (version %s)\n"
-msgstr ""
-
-#, fuzzy
-msgid "(see http://mercurial.selenic.com for more information)"
-msgstr ""
-"    Siehe auch 'hg help urls' für das Format von Adressangaben.\n"
-"    "
-
-#, fuzzy
-msgid ""
-"Copyright (C) 2005-2011 Matt Mackall and others\n"
-"This is free software; see the source for copying conditions. There is NO\n"
-"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
-msgstr ""
-"\n"
-"Copyright (C) 2005-2010 Matt Mackall <mpm@selenic.com> und andere\n"
-"Dies ist freie Software; siehe Quellen für Kopierbestimmungen. Es besteht\n"
-"KEINE Gewährleistung für das Programm, nicht einmal der Marktreife oder der\n"
-"Verwendbarkeit für einen bestimmten Zweck.\n"
-
 msgid "repository root directory or name of overlay bundle file"
 msgstr "Wurzelverzeichnis des Archivs oder Name einer Bündeldatei"
 
@@ -11667,8 +8407,8 @@
 msgid "change working directory"
 msgstr "Wechselt das Arbeitsverzeichnis"
 
-msgid "do not prompt, assume 'yes' for any required answers"
-msgstr "Keine Abfragen, nimmt 'ja' für jede Nachfrage an"
+msgid "do not prompt, automatically pick the first choice for all prompts"
+msgstr ""
 
 msgid "suppress output"
 msgstr "Unterdrückt Ausgabe"
@@ -11678,7 +8418,7 @@
 
 msgid "set/override config option (use 'section.name=value')"
 msgstr ""
-"Setze/Überschreibe Konfigurationsoption: %s (nutze --config Sektion."
+"Setze/Überschreibe Konfigurationsoption: %s (nutze --config Abschnitt."
 "Name=Wert)"
 
 msgid "CONFIG"
@@ -11738,16 +8478,14 @@
 msgid "exclude names matching the given patterns"
 msgstr "Namen ausschließen, die auf das angegebene Muster passen"
 
-#, fuzzy
 msgid "use text as commit message"
-msgstr "Nutzt <Text> als Commit-Nachricht"
-
-#, fuzzy
+msgstr "Nutzt Text als Commit-Nachricht"
+
 msgid "read commit message from file"
-msgstr "Liest Commit-Nachricht aus <Datei>"
-
-msgid "record datecode as commit date"
-msgstr "Protokolliert Datumscode als Commit-Datum"
+msgstr "Liest Commit-Nachricht aus Datei"
+
+msgid "record the specified date as commit date"
+msgstr "Protokolliert das angegebenen Datum als Übernahmedatum"
 
 msgid "record the specified user as committer"
 msgstr "Protokolliert den angegebenen Nutzer als Autor"
@@ -11770,9 +8508,8 @@
 msgid "treat all files as text"
 msgstr "Behandelt alle Dateien als Text"
 
-#, fuzzy
 msgid "omit dates from diff headers"
-msgstr "Fügt Datum nicht im Kopf des Diff ein"
+msgstr "Fügt Datum nicht im Kopf des Diffs ein"
 
 msgid "show which function each change is in"
 msgstr "Zeigt die Funktion, in der die Änderung passiert ist"
@@ -11780,15 +8517,6 @@
 msgid "produce a diff that undoes the changes"
 msgstr ""
 
-msgid "ignore white space when comparing lines"
-msgstr "Ignoriert Leerzeichen beim Vergleich von Zeilen"
-
-msgid "ignore changes in the amount of white space"
-msgstr "Ignoriert Änderungen bei der Anzahl von Leerzeichen"
-
-msgid "ignore changes whose lines are all blank"
-msgstr "Ignoriert Änderungen, die nur aus Leerzeilen bestehen"
-
 msgid "number of lines of context to show"
 msgstr "Anzahl der anzuzeigenden Kontextzeilen"
 
@@ -11798,31 +8526,122 @@
 msgid "guess renamed files by similarity (0<=s<=100)"
 msgstr "rät Umbenennungn anhand der Ähnlichkeit (0<=s<=100)"
 
-#, fuzzy
 msgid "recurse into subrepositories"
-msgstr "Zielarchivtyp"
+msgstr "Durchläuft rekursiv Unterarchive"
 
 msgid "[OPTION]... [FILE]..."
 msgstr "[OPTION]... [DATEI]..."
 
+msgid "add the specified files on the next commit"
+msgstr "Fügt die angegebenen Dateien der nächsten Version hinzu"
+
+msgid ""
+"    Schedule files to be version controlled and added to the\n"
+"    repository."
+msgstr "    Merkt Dateien zur Versionskontrolle im Projektarchiv vor."
+
+msgid ""
+"    The files will be added to the repository at the next commit. To\n"
+"    undo an add before that, see :hg:`forget`."
+msgstr ""
+"    Die Dateien werden dem Projektarchiv beim nächsten Übernehmen (commit)\n"
+"    hinzugefügt. Um diese vorher rückgängig zu machen, siehe :hg:`revert`."
+
+msgid "    If no names are given, add all files to the repository."
+msgstr ""
+"    Wenn keine Namen angegeben sind, füge alle Dateien dem Projektarchiv\n"
+"    hinzu.\n"
+"    "
+
+msgid "    .. container:: verbose"
+msgstr ""
+
+msgid ""
+"       An example showing how new (unknown) files are added\n"
+"       automatically by :hg:`add`::"
+msgstr ""
+
+msgid ""
+"         $ ls\n"
+"         foo.c\n"
+"         $ hg status\n"
+"         ? foo.c\n"
+"         $ hg add\n"
+"         adding foo.c\n"
+"         $ hg status\n"
+"         A foo.c"
+msgstr ""
+"         $ ls\n"
+"         foo.c\n"
+"         $ hg status\n"
+"         ? foo.c\n"
+"         $ hg add\n"
+"         adding foo.c\n"
+"         $ hg status\n"
+"         A foo.c"
+
+msgid ""
+"    Returns 0 if all files are successfully added.\n"
+"    "
+msgstr ""
+
+msgid "add all new files, delete all missing files"
+msgstr "Fügt alle neuen Dateien hinzu, löscht alle fehlenden Dateien"
+
+msgid ""
+"    Add all new files and remove all missing files from the\n"
+"    repository."
+msgstr ""
+"    Füge alle neuen Dateien hinzu und lösche alle fehlenden Dateien aus\n"
+"    dem Projektarchiv."
+
+msgid ""
+"    New files are ignored if they match any of the patterns in\n"
+"    ``.hgignore``. As with add, these changes take effect at the next\n"
+"    commit."
+msgstr ""
+"    Neue Dateien werden ignoriert, wenn sie einem der Muster aus "
+"``.hgignore``\n"
+"    entsprechen. Genau wie add, wirken diese Änderungen erst beim nächsten\n"
+"    Übernehmen (commit)."
+
+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"
+"    option takes a percentage between 0 (disabled) and 100 (files must\n"
+"    be identical) as its parameter. 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 ""
+"    Nutze die Option -s/--similarity um umbenannte Dateien zu entdecken.\n"
+"    Mit einem Parameter größer 0 wird jede gelöschte Datei mit jeder\n"
+"    hinzugefügten verglichen und bei genügender Ähnlichkeit als Umbenennung\n"
+"    markiert. Diese Option erwartet eine Prozentangabe zwischen 0\n"
+"    (deaktiviert) und 100 (Dateien müssen identisch sein) als Parameter.\n"
+"    Umbenennungen auf diese Weise zu erkennen, kann aufwändig sein."
+
+msgid "similarity must be a number"
+msgstr "similarity muss eine Zahl sein"
+
+msgid "similarity must be between 0 and 100"
+msgstr "similarity muss zwischen 0 und 100 liegen"
+
 msgid "annotate the specified revision"
 msgstr "Annotiert die angegebene Revision"
 
-#, fuzzy
 msgid "follow copies/renames and list the filename (DEPRECATED)"
 msgstr ""
-"Kopien/Umbenennungen können nur zu expliziten Dateinamen verfolgt werden"
-
-#, fuzzy
+"Folge Kopien/Umbenennungen und liste Dateinamen auf (VERALTET)"
+
 msgid "don't follow copies and renames"
-msgstr "Folgt Dateikopien und Umbenennungen"
+msgstr "Unterläßt das Folgen von Dateikopien und Umbenennungen"
 
 msgid "list the author (long with -v)"
 msgstr "Listet den Autor auf (lang mit -v)"
 
-#, fuzzy
 msgid "list the filename"
-msgstr "Listet den Änderungssatz auf"
+msgstr "Listet den Dateinamen auf"
 
 msgid "list the date (short with -q)"
 msgstr "Listet das Datum auf (kurz mit -q)"
@@ -11839,15 +8658,53 @@
 msgid "[-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] FILE..."
 msgstr "[-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] DATEI..."
 
+msgid "show changeset information by line for each file"
+msgstr "Zeigt Informationen über Änderungssätze pro Dateizeile an"
+
+msgid ""
+"    List changes in files, showing the revision id responsible for\n"
+"    each line"
+msgstr ""
+"    Listet Änderungen in Dateien mit der zugehörigen Revisions-Id für jede\n"
+"    Zeile auf"
+
+msgid ""
+"    This command is useful for discovering when a change was made and\n"
+"    by whom."
+msgstr ""
+"    Dieser Befehl ist nützlich, um herauszufinden wer eine Änderung gemacht\n"
+"    hat oder wann eine Änderung stattgefunden hat."
+
+msgid ""
+"    Without the -a/--text option, annotate will avoid processing files\n"
+"    it detects as binary. With -a, annotate will annotate the file\n"
+"    anyway, although the results will probably be neither useful\n"
+"    nor desirable."
+msgstr ""
+"    Ohne den Schalter -a/--text wird die Verarbeitung von Binärdateien\n"
+"    vermieden. Mit -a werden auch solche Dateien verarbeitet, "
+"wahrscheinlich\n"
+"    mit unerwünschtem Ergebnis."
+
+msgid "at least one filename or pattern is required"
+msgstr "Mindestens ein Dateiname oder Muster benötigt"
+
+msgid "at least one of -n/-c is required for -l"
+msgstr "Zumindest -n oder -c werden für -l benötigt"
+
+#, python-format
+msgid "%s: binary file\n"
+msgstr "%s: Binärdatei\n"
+
 msgid "do not pass files through decoders"
 msgstr "Dateien nicht dekodieren"
 
-msgid "PREFIX"
-msgstr ""
-
 msgid "directory prefix for files in archive"
 msgstr "Verzeichnispräfix für Dateien im Archiv"
 
+msgid "PREFIX"
+msgstr ""
+
 msgid "revision to distribute"
 msgstr "zu verteilende Revision"
 
@@ -11857,15 +8714,87 @@
 msgid "[OPTION]... DEST"
 msgstr "[OPTION]... ZIEL"
 
+msgid "create an unversioned archive of a repository revision"
+msgstr "Erzeugt ein unversioniertes Archiv einer Projektarchiv-Revision"
+
+msgid ""
+"    By default, the revision used is the parent of the working\n"
+"    directory; use -r/--rev to specify a different revision."
+msgstr ""
+"    Standardmäßig wird die Vorgängerversion der im Arbeitsverzeichnis "
+"gefundenen\n"
+"    verwendet. Eine andere Reversion kann mit \"-r/--rev\" angegeben werden."
+
+msgid ""
+"    The archive type is automatically detected based on file\n"
+"    extension (or override using -t/--type)."
+msgstr ""
+
+msgid "      Examples:"
+msgstr "      Beispiele:"
+
+msgid "      - create a zip file containing the 1.0 release::"
+msgstr ""
+
+msgid "          hg archive -r 1.0 project-1.0.zip"
+msgstr ""
+
+msgid "      - create a tarball excluding .hg files::"
+msgstr ""
+
+msgid "          hg archive project.tar.gz -X \".hg*\""
+msgstr ""
+
+msgid "    Valid types are:"
+msgstr ""
+
+msgid ""
+"    :``files``: a directory full of files (default)\n"
+"    :``tar``:   tar archive, uncompressed\n"
+"    :``tbz2``:  tar archive, compressed using bzip2\n"
+"    :``tgz``:   tar archive, compressed using gzip\n"
+"    :``uzip``:  zip archive, uncompressed\n"
+"    :``zip``:   zip archive, compressed using deflate"
+msgstr ""
+"    :``files``: (Standard): ein Verzeichnis voller Dateien\n"
+"    :``tar``:   tar Archiv, unkomprimiert\n"
+"    :``tbz2``:  tar Archiv, komprimiert mit bzip2\n"
+"    :``tgz``:   tar Archiv, komprimiert mit gzip\n"
+"    :``uzip``:  zip Archiv, unkomprimiert\n"
+"    :``zip``:   zip Archiv, komprimiert mit deflate"
+
+msgid ""
+"    The exact name of the destination archive or directory is given\n"
+"    using a format string; see :hg:`help export` for details."
+msgstr ""
+"    Der exakte Name des Zielarchivs oder -verzeichnises wird mit\n"
+"    einem Format-String angegeben; siehe :hg:`help export` für Details."
+
+msgid ""
+"    Each member added to an archive file has a directory prefix\n"
+"    prepended. Use -p/--prefix to specify a format string for the\n"
+"    prefix. The default is the basename of the archive, with suffixes\n"
+"    removed."
+msgstr ""
+"    Jedem Element des Archivs wird ein Verzeichnis-Präfix vorangestellt.\n"
+"    Nutze -p/--prefix um eine Format-String für das Präfix anzugeben.\n"
+"    Als Standard wird der Dateiname des Archive ohne Dateiendung genutzt."
+
+msgid "no working directory: please specify a revision"
+msgstr "Kein Arbeitsverzeichnis: Bitte gib eine Revision an"
+
+msgid "repository root cannot be destination"
+msgstr "Projektarchiv-Wurzel kann nicht als Ziel angegeben werden"
+
+msgid "cannot archive plain files to stdout"
+msgstr ""
+"Ungepacktes Archiv kann nicht auf der Standardausgabe ausgegeben werden"
+
 msgid "merge with old dirstate parent after backout"
 msgstr "Führt mit Vorgänger im Status vor Rücknahme zusammen"
 
-msgid "parent to choose when backing out merge"
-msgstr "Wählt einen Vorgänger bei Rücknahme einer Zusammenführung"
-
-#, fuzzy
-msgid "specify merge tool"
-msgstr "gibt cvsroot an"
+msgid "parent to choose when backing out merge (DEPRECATED)"
+msgstr "Wählt einen Vorgänger bei Rücknahme einer Zusammenführung (VERALTET)"
 
 msgid "revision to backout"
 msgstr "Die zurückzunehmende Revision"
@@ -11873,6 +8802,72 @@
 msgid "[OPTION]... [-r] REV"
 msgstr ""
 
+msgid "reverse effect of earlier changeset"
+msgstr "Macht einen vorangegangen Änderungssatz rückgängig"
+
+msgid ""
+"    Prepare a new changeset with the effect of REV undone in the\n"
+"    current working directory."
+msgstr ""
+"    Erstelle eine (unversionierte) Änderung im Arbeitsverzeichnis, die den\n"
+"    Effekt von REV zurücknimmt."
+
+msgid ""
+"    If REV is the parent of the working directory, then this new changeset\n"
+"    is committed automatically. Otherwise, hg needs to merge the\n"
+"    changes and the merged result is left uncommitted."
+msgstr ""
+
+msgid ""
+"    .. note::\n"
+"      backout cannot be used to fix either an unwanted or\n"
+"      incorrect merge."
+msgstr ""
+
+msgid ""
+"      By default, the pending changeset will have one parent,\n"
+"      maintaining a linear history. With --merge, the pending\n"
+"      changeset will instead have two parents: the old parent of the\n"
+"      working directory and a new child of REV that simply undoes REV."
+msgstr ""
+
+msgid ""
+"      Before version 1.7, the behavior without --merge was equivalent\n"
+"      to specifying --merge followed by :hg:`update --clean .` to\n"
+"      cancel the merge and leave the child of REV as a head to be\n"
+"      merged separately."
+msgstr ""
+
+msgid "please specify just one revision"
+msgstr "Bitte nur eine Revision angeben"
+
+msgid "please specify a revision to backout"
+msgstr "Bitte eine Revision, die zurückgezogen werden soll, angeben"
+
+msgid "cannot backout change on a different branch"
+msgstr "Kann die Änderung auf einem abweichenden Zweig nicht rückgängig machen"
+
+msgid "cannot backout a change with no parents"
+msgstr "Kann eine Änderung ohne Vorgängerversion nicht rückgängig machen"
+
+msgid "cannot backout a merge changeset"
+msgstr "Kann eine Zusammenführungen nicht rückgängig machen"
+
+#, python-format
+msgid "%s is not a parent of %s"
+msgstr "%s ist kein Vorgänger von %s"
+
+msgid "cannot use --parent on non-merge changeset"
+msgstr "Kann mit --parent nur Zusammenführung rückgängig machen"
+
+#, python-format
+msgid "changeset %s backs out changeset %s\n"
+msgstr "Änderungssatz %s macht Änderungssatz %s rückgängig\n"
+
+#, python-format
+msgid "merging with changeset %s\n"
+msgstr "Führe mit Änderungssatz %s zusammen\n"
+
 msgid "reset bisect state"
 msgstr "Setzt Status der Suche zurück"
 
@@ -11885,15 +8880,192 @@
 msgid "skip testing changeset"
 msgstr "Überspringt das Testen dieses Änderungssatzes"
 
+msgid "extend the bisect range"
+msgstr "Erweitert den Bereich der Suche"
+
 msgid "use command to check changeset state"
 msgstr "Nutzt eine Programm um den Fehlerstatus zu bestimmen"
 
 msgid "do not update to target"
 msgstr "Führe keine Aktualisierung der Dateien durch"
 
-#, fuzzy
 msgid "[-gbsr] [-U] [-c CMD] [REV]"
-msgstr "[-gbsr] [-c BEFEHL] [REV]"
+msgstr "[-gbsr] [-U] [-c BEFEHL] [REV]"
+
+msgid "subdivision search of changesets"
+msgstr "Binäre Suche von Änderungssätzen"
+
+msgid ""
+"    This command helps to find changesets which introduce problems. To\n"
+"    use, mark the earliest changeset you know exhibits the problem as\n"
+"    bad, then mark the latest changeset which is free from the problem\n"
+"    as good. Bisect will update your working directory to a revision\n"
+"    for testing (unless the -U/--noupdate option is specified). Once\n"
+"    you have performed tests, mark the working directory as good or\n"
+"    bad, and bisect will either update to another candidate changeset\n"
+"    or announce that it has found the bad revision."
+msgstr ""
+"    Dieser Befehl hilft Änderungssätze zu finden, die Probleme eingeführt\n"
+"    haben. Dies geschieht, indem eine Revision nach der anderen geladen und\n"
+"    getestet wird, bis zwei aufeinanderfolgende Revisionen ohne und mit\n"
+"    Fehler gefunden wurden."
+
+msgid ""
+"    As a shortcut, you can also use the revision argument to mark a\n"
+"    revision as good or bad without checking it out first."
+msgstr ""
+"    Markiere zunächst die früheste Version, von der bekannt ist, dass der\n"
+"    Fehler dort auftritt und die entsprechende letzte fehlerfreie Version.\n"
+"    Bisect wird das Arbeitsverzeichnis dann auf eine zu testede Revision\n"
+"    bringen (es sei denn, die Option -U/--noupdate ist angegeben). Nachdem\n"
+"    der Test ausgeführt wurde, muss diese Revision als gut oder schlecht\n"
+"    markiert werden. Bisect wird dann zur nächsten Revision wechseln oder\n"
+"    das Ziel (die erste schlechte Revision) melden."
+
+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 ""
+"    Die Markierung kann automatisch durch einem Testprogramm stattfinden.\n"
+"    Ein Rückgabewert von 0 bedeutet dabei Erfolg, 125 Überspringen, 127\n"
+"    (Kommando nicht gefunden) Abbruch und jeder andere positive Wert Fehler."
+
+msgid "      Some examples:"
+msgstr "      Einige Beispiele:"
+
+msgid ""
+"      - start a bisection with known bad revision 12, and good revision 34::"
+msgstr ""
+
+msgid ""
+"          hg bisect --bad 34\n"
+"          hg bisect --good 12"
+msgstr ""
+
+msgid ""
+"      - advance the current bisection by marking current revision as good "
+"or\n"
+"        bad::"
+msgstr ""
+
+msgid ""
+"          hg bisect --good\n"
+"          hg bisect --bad"
+msgstr ""
+
+msgid ""
+"      - mark the current revision, or a known revision, to be skipped (eg. "
+"if\n"
+"        that revision is not usable because of another issue)::"
+msgstr ""
+
+msgid ""
+"          hg bisect --skip\n"
+"          hg bisect --skip 23"
+msgstr ""
+
+msgid "      - forget the current bisection::"
+msgstr ""
+
+msgid "          hg bisect --reset"
+msgstr ""
+
+msgid ""
+"      - use 'make && make tests' to automatically find the first broken\n"
+"        revision::"
+msgstr ""
+
+msgid ""
+"          hg bisect --reset\n"
+"          hg bisect --bad 34\n"
+"          hg bisect --good 12\n"
+"          hg bisect --command 'make && make tests'"
+msgstr ""
+
+msgid ""
+"      - see all changesets whose states are already known in the current\n"
+"        bisection::"
+msgstr ""
+
+msgid "          hg log -r \"bisect(pruned)\""
+msgstr ""
+
+msgid "      - see all changesets that took part in the current bisection::"
+msgstr ""
+
+msgid "          hg log -r \"bisect(range)\""
+msgstr "          hg log -r \"bisect(range)\""
+
+msgid "      - with the graphlog extension, you can even get a nice graph::"
+msgstr ""
+
+msgid "          hg log --graph -r \"bisect(range)\""
+msgstr ""
+
+msgid "      See :hg:`help revsets` for more about the `bisect()` keyword."
+msgstr ""
+"      Siehe :hg:`help revsets' für mehr Infos über den bisect() Schlüssel."
+
+msgid "The first good revision is:\n"
+msgstr "Die erste fehlerfreie Revision ist:\n"
+
+msgid "The first bad revision is:\n"
+msgstr "Die erste fehlerhafte Revision ist:\n"
+
+#, python-format
+msgid ""
+"Not all ancestors of this changeset have been checked.\n"
+"Use bisect --extend to continue the bisection from\n"
+"the common ancestor, %s.\n"
+msgstr ""
+
+msgid "Due to skipped revisions, the first good revision could be any of:\n"
+msgstr ""
+"Aufgrund übersprungener Revisionen könnte die erste fehlerfreie Revision\n"
+"eine der folgenden sein:\n"
+
+msgid "Due to skipped revisions, the first bad revision could be any of:\n"
+msgstr ""
+"Aufgrund übersprungener Revisionen könnte die erste fehlerhafte Revision\n"
+"eine der folgenden sein:\n"
+
+msgid "cannot bisect (no known good revisions)"
+msgstr "Kann Suche nicht starten (keine bekannte fehlerfreie Revision)"
+
+msgid "cannot bisect (no known bad revisions)"
+msgstr "Kann Suche nicht starten (keine bekannte fehlerhafte Revision)"
+
+msgid "(use of 'hg bisect <cmd>' is deprecated)\n"
+msgstr "(Die Syntax 'hg bisect <cmd>' ist veraltet)\n"
+
+msgid "incompatible arguments"
+msgstr "Inkompatible Argumente"
+
+#, python-format
+msgid "failed to execute %s"
+msgstr "Fehler bei der Ausführung von %s"
+
+#, python-format
+msgid "%s killed"
+msgstr "%s gestorben"
+
+#, python-format
+msgid "Changeset %d:%s: %s\n"
+msgstr "Änderungssatz %d:%s: %s\n"
+
+#, python-format
+msgid "Extending search to changeset %d:%s\n"
+msgstr "Erweitere Suchbereich auf Änderungssatz %d:%s\n"
+
+msgid "nothing to extend"
+msgstr "Keine Erweiterung des Bereichs nötig"
+
+#, python-format
+msgid "Testing changeset %d:%s (%d changesets remaining, ~%d tests)\n"
+msgstr "Teste Änderungssatz %d:%s (%d Änderungssätze verbleiben, ~%d Tests)\n"
 
 msgid "force"
 msgstr "erzwinge"
@@ -11904,8 +9076,80 @@
 msgid "rename a given bookmark"
 msgstr "Benennt ein gegebenes Lesezeichen um"
 
-msgid "hg bookmarks [-f] [-d] [-m NAME] [-r REV] [NAME]"
-msgstr "hg bookmarks [-f] [-d] [-m NAME] [-r REV] [NAME]"
+msgid "do not mark a new bookmark active"
+msgstr ""
+
+msgid "hg bookmarks [-f] [-d] [-i] [-m NAME] [-r REV] [NAME]"
+msgstr "hg bookmarks [-f] [-d] [-i] [-m NAME] [-r REV] [NAME]"
+
+msgid "track a line of development with movable markers"
+msgstr "Folgt einem Entwicklungsstrang mit einer beweglichen Markierung"
+
+msgid ""
+"    Bookmarks are pointers to certain commits that move when\n"
+"    committing. Bookmarks are local. They can be renamed, copied and\n"
+"    deleted. It is possible to use bookmark names in :hg:`merge` and\n"
+"    :hg:`update` to merge and update respectively to a given bookmark."
+msgstr ""
+"    Lesezeichen sind Zeiger auf bestimmte Versionen, die mitwandern,\n"
+"    wenn eine neuen Version erzeugt wird. Lesezeichen sind nur lokal.\n"
+"    Sie können umbenannt, kopiert und gelöscht werden. Es ist möglich,\n"
+"    Lesezeichen bei :hg: `merge` und :hg:`update` zu nutzen, um auf das\n"
+"    angegebene Lesezeichen zu aktualisieren."
+
+msgid ""
+"    You can use :hg:`bookmark NAME` to set a bookmark on the working\n"
+"    directory's parent revision with the given name. If you specify\n"
+"    a revision using -r REV (where REV may be an existing bookmark),\n"
+"    the bookmark is assigned to that revision."
+msgstr ""
+"    Man kann :hg:`bookmark NAME` aufrufen, um ein Lesezeichen mit dem\n"
+"    angegeben Namen auf der aktuellen Spitze (tip) zu setzen. Bei Angabe\n"
+"    einer Revision mit -r REV (REV kann ein vorhandenes Lesezeichen sein) \n"
+"    wird das Lesezeichen auf dieser Revision gesetzt.\n"
+"    "
+
+msgid ""
+"    Bookmarks can be pushed and pulled between repositories (see :hg:`help\n"
+"    push` and :hg:`help pull`). This requires both the local and remote\n"
+"    repositories to support bookmarks. For versions prior to 1.8, this "
+"means\n"
+"    the bookmarks extension must be enabled.\n"
+"    "
+msgstr ""
+"    Lesezeichen können zwischen Mercurial Archiven ausgetauscht werden.\n"
+"    (siehe :hg:`help push` bzw. :hg:`help pull`). Beide Archive müssen "
+"dafür\n"
+"    Lesezeichen unterstützen. Bis Mercurial version 1.8 muss hierfür die\n"
+"    Lesezeichenerweiterung (bookmarks extension) angeschaltet werden.\n"
+"    "
+
+msgid "bookmark name required"
+msgstr "Ein Name für das Lesezeichen muss übergeben werden"
+
+#, python-format
+msgid "bookmark '%s' does not exist"
+msgstr "Lesezeichen '%s' existiert nicht"
+
+#, python-format
+msgid "bookmark '%s' already exists (use -f to force)"
+msgstr "Lesezeichen '%s' existiert bereits; erzwinge mit -f/--force"
+
+msgid "new bookmark name required"
+msgstr "Ein neuer Name für das Lesezeichen muss übergeben werden"
+
+msgid "bookmark name cannot contain newlines"
+msgstr "Ein Lesezeichenname darf keine Zeilenumbrüche enthalten"
+
+msgid "bookmark names cannot consist entirely of whitespace"
+msgstr "Ein Lesezeichenname darf nicht ausschließlich aus Leerraum bestehen"
+
+msgid "a bookmark cannot have the name of an existing branch"
+msgstr ""
+"Ein Lesezeichen darf nicht denselben Namen wie ein existierender Zweig haben"
+
+msgid "no bookmarks set\n"
+msgstr "Keine Lesezeichen gesetzt\n"
 
 msgid "set branch name even if it shadows an existing branch"
 msgstr "Setzt Branchnamen, selbst wenn es einen bestehenden Branch verdeckt"
@@ -11916,6 +9160,68 @@
 msgid "[-fC] [NAME]"
 msgstr ""
 
+msgid "set or show the current branch name"
+msgstr "Setzt oder zeigt den Namen des aktuellen Zweigs"
+
+msgid ""
+"    With no argument, show the current branch name. With one argument,\n"
+"    set the working directory branch name (the branch will not exist\n"
+"    in the repository until the next commit). Standard practice\n"
+"    recommends that primary development take place on the 'default'\n"
+"    branch."
+msgstr ""
+"    Ohne Parameter wird der Name des aktuellen Zweiges angezeigt. Mit einem\n"
+"    Parameter wird der Zweigname des Arbeitsverzeichnisses gesetzt. Der\n"
+"    Zweig existiert nicht im Projektarchiv und muss erst übernommen werden.\n"
+"    Es wird empfohlen den 'default'-Zweig als Hauptentwicklungszweig zu\n"
+"    nutzen."
+
+msgid ""
+"    Unless -f/--force is specified, branch will not let you set a\n"
+"    branch name that already exists, even if it's inactive."
+msgstr ""
+"    Außer bei Angabe von -f/--force lässt 'hg branch' nicht zu, einen Namen\n"
+"    zu vergeben, der einen existierenden Zweig überdeckt."
+
+msgid ""
+"    Use -C/--clean to reset the working directory branch to that of\n"
+"    the parent of the working directory, negating a previous branch\n"
+"    change."
+msgstr ""
+"    Nutze -C/--clean um den neuen Namen rückgängig zu machen. Die "
+"Arbeitskopie\n"
+"    hat dann wieder den selben Namen wie der Vorgänger im Projektarchiv."
+
+msgid ""
+"    Use the command :hg:`update` to switch to an existing branch. Use\n"
+"    :hg:`commit --close-branch` to mark this branch as closed."
+msgstr ""
+"    Um auf einen anderen (existierenden) Zweig zu wechseln, nutze\n"
+"    :hg:`update`. Mit :hg:`commit --close-branch` wird der aktuelle Zweig\n"
+"    geschlossen."
+
+msgid ""
+"    .. note::\n"
+"       Branch names are permanent. Use :hg:`bookmark` to create a\n"
+"       light-weight bookmark instead. See :hg:`help glossary` for more\n"
+"       information about named branches and bookmarks."
+msgstr ""
+
+#, python-format
+msgid "reset working directory to branch %s\n"
+msgstr "Setze Arbeitsverzeichnis auf Zweig %s zurück\n"
+
+msgid "a branch of the same name already exists"
+msgstr "Ein Zweig mit diesem Namen existiert bereits"
+
+#. i18n: "it" refers to an existing branch
+msgid "use 'hg update' to switch to it"
+msgstr ""
+
+#, python-format
+msgid "marked working directory as branch %s\n"
+msgstr "Arbeitsverzeichnis wurde als Zweig %s markiert\n"
+
 msgid "show only branches that have unmerged heads"
 msgstr "Zeigt nur Branches deren Köpfe nicht zusammengeführt wurden"
 
@@ -11925,21 +9231,51 @@
 msgid "[-ac]"
 msgstr ""
 
-#, fuzzy
+msgid "list repository named branches"
+msgstr "Zeigt alle benannten Zweige des Projektarchiv an"
+
+msgid ""
+"    List the repository's named branches, indicating which ones are\n"
+"    inactive. If -c/--closed is specified, also list branches which have\n"
+"    been marked closed (see :hg:`commit --close-branch`)."
+msgstr ""
+"    Listet die benannten Zweige des Projektarchiv auf und zeigt an, welche\n"
+"    inaktiv sind. Zweige, die durch :hg:`commit --close-branch` geschlossen\n"
+"    wurden, werden nur mit dem Schalter -c/--closed angezeigt."
+
+msgid ""
+"    If -a/--active is specified, only show active branches. A branch\n"
+"    is considered active if it contains repository heads."
+msgstr ""
+"    Mit der Option -a/--active werden nur aktive Zweige ausgegeben. Ein\n"
+"    Zweig gilt als aktiv, wenn er echte Köpfe besitzt."
+
+msgid "    Use the command :hg:`update` to switch to an existing branch."
+msgstr ""
+"    Zum Wechsel auf einen anderen (existierenden) Zweig siehe :hg:`update`."
+
+msgid ""
+"    Returns 0.\n"
+"    "
+msgstr ""
+
+msgid " (closed)"
+msgstr ""
+
+msgid " (inactive)"
+msgstr ""
+
 msgid "run even when the destination is unrelated"
-msgstr "Auch ausführen wenn das entfernte Projektarchiv keinen Bezug hat"
-
-#, fuzzy
+msgstr "Auch ausführen, wenn das Ziel keinen Bezug hat"
+
 msgid "a changeset intended to be added to the destination"
-msgstr "Ein Basisänderungssatz anstelle eines Ziels"
-
-#, fuzzy
+msgstr "Ein Änderungssatz der zum Ziel hinzugefügt werden soll"
+
 msgid "a specific branch you would like to bundle"
-msgstr "Revision die geholt werden soll"
-
-#, fuzzy
+msgstr "Revision die gebündelt werden soll"
+
 msgid "a base changeset assumed to be available at the destination"
-msgstr "Ein Basisänderungssatz anstelle eines Ziels"
+msgstr "Ein Änderungssatz der im Ziel bereits existiert"
 
 msgid "bundle all changesets in the repository"
 msgstr "Bündelt alle Änderungssätze des Projektarchivs"
@@ -11947,9 +9283,71 @@
 msgid "bundle compression type to use"
 msgstr "Kompressionstyp für die Ausgabedatei"
 
-#, fuzzy
 msgid "[-f] [-t TYPE] [-a] [-r REV]... [--base REV]... FILE [DEST]"
-msgstr "[-f] [-a] [-r REV]... [--base REV]... DATEI [ZIEL]"
+msgstr "[-f] [-t TYP] [-a] [-r REV]... [--base REV]... DATEI [ZIEL]"
+
+msgid "create a changegroup file"
+msgstr "Erzeugt eine Datei mit Änderungsgruppen"
+
+msgid ""
+"    Generate a compressed changegroup file collecting changesets not\n"
+"    known to be in another repository."
+msgstr ""
+"    Erzeuge eine gepackte Datei der Änderungsgruppen, die alle Änderungs-\n"
+"    sätze enthält, die in einem anderen Archiv nicht vorhanden sind."
+
+msgid ""
+"    If you omit the destination repository, then hg assumes the\n"
+"    destination will have all the nodes you specify with --base\n"
+"    parameters. To create a bundle containing all changesets, use\n"
+"    -a/--all (or --base null)."
+msgstr ""
+"    Falls kein Zielarchiv angegeben ist, wird angenommen, dass das Ziel\n"
+"    alle Knoten enthält, die durch einen oder mehrere --base Parameter\n"
+"    angegeben wurden. Um ein Bündel aller Änderungssätze zu erzeugen, nutze\n"
+"    -a/--all (oder --base null)."
+
+msgid ""
+"    You can change compression method with the -t/--type option.\n"
+"    The available compression methods are: none, bzip2, and\n"
+"    gzip (by default, bundles are compressed using bzip2)."
+msgstr ""
+"    Die angewendete Kompressionsmethode kann mit der Option -t/--type\n"
+"    gewählt werden: none (nicht komprimieren), bzip2 (standard) oder gzip."
+
+msgid ""
+"    The bundle file can then be transferred using conventional means\n"
+"    and applied to another repository with the unbundle or pull\n"
+"    command. This is useful when direct push and pull are not\n"
+"    available or when exporting an entire repository is undesirable."
+msgstr ""
+"    Die Bündeldatei kann mit üblichen Mitteln transportiert und auf ein "
+"anderes\n"
+"    Archiv mit dem 'unbundle' oder 'pull'-Befehl angewandt werden.\n"
+"    Dies ist nützlich wenn ein direktes Schieben oder Herunterladen von\n"
+"    Änderungen nicht verfügbar ist oder der Export eines kompletten Archivs\n"
+"    unerwünscht ist."
+
+msgid ""
+"    Applying bundles preserves all changeset contents including\n"
+"    permissions, copy/rename information, and revision history."
+msgstr ""
+"    Die Anwendung von Bündeln bewahrt die Inhalte aller Änderungssätze,\n"
+"    Berechtigungen, Kopier/Umbennungs-Informationen und die "
+"Revisionshistorie."
+
+msgid ""
+"    Returns 0 on success, 1 if no changes found.\n"
+"    "
+msgstr ""
+"    Gibt 0 bei Erfolg zurück, 1 wenn keine Änderungen gefunden wurden.\n"
+"    "
+
+msgid "--base is incompatible with specifying a destination"
+msgstr "Bei Nutzung von --base kann kein Zielarchiv angegeben werden"
+
+msgid "unknown bundle type specified with --type"
+msgstr "Unbekannter Bündeltyp mit --type angegeben"
 
 msgid "print output to file with formatted name"
 msgstr "Schreibt Ausgabe in Datei mit formatiertem Namen"
@@ -11963,24 +9361,205 @@
 msgid "[OPTION]... FILE..."
 msgstr "[OPTION]... DATEI..."
 
-#, fuzzy
+msgid "output the current or given revision of files"
+msgstr ""
+"Gibt den Inhalt von Dateien in der aktuellen oder angegebenen Revision aus"
+
+msgid ""
+"    Print the specified files as they were at the given revision. If\n"
+"    no revision is given, the parent of the working directory is used,\n"
+"    or tip if no revision is checked out."
+msgstr ""
+"    Gibt die angegebenen Dateien aus, wie sie zur gegebenen Revision waren.\n"
+"    Wenn keine Revision angegeben wird, wird die Vorgängerversion des\n"
+"    Arbeitsverzeichnisses genutzt, oder die Spitze, falls keine\n"
+"    Revision geladen ist."
+
+msgid ""
+"    Output may be to a file, in which case the name of the file is\n"
+"    given using a format string. The formatting rules are the same as\n"
+"    for the export command, with the following additions:"
+msgstr ""
+"    Die Ausgabe kann in eine Datei erfolgen. In diesem Fall wird der Name\n"
+"    der Datei mit einem Formatstring vorgegeben. Die Formatierungsregeln "
+"sind\n"
+"    dem 'export'-Befehl analog, mit folgenden Ergänzungen::"
+
+msgid ""
+"    :``%s``: basename of file being printed\n"
+"    :``%d``: dirname of file being printed, or '.' if in repository root\n"
+"    :``%p``: root-relative path name of file being printed"
+msgstr ""
+"    :``%s``: Dateiname der ausgegebenen Datei\n"
+"    :``%d``: Verzeichnisname der Datei oder '.' in der Wurzel des Archivs\n"
+"    :``%p``: Pfad und Dateiname relativ zur Archiv-Wurzel\n"
+"    "
+
 msgid "the clone will include an empty working copy (only a repository)"
 msgstr "Der Klon wird nur das Projektarchiv enthalten (keine Arbeitskopie)"
 
 msgid "revision, tag or branch to check out"
-msgstr ""
-
-#, fuzzy
+msgstr "Revision, Etikett oder Zweig auf den aktualisiert werden soll"
+
 msgid "include the specified changeset"
-msgstr "Faltet die erzeugten Änderungssätze nach dem Rebase zusammen"
-
-#, fuzzy
+msgstr "Beziehe gegebenen Änderungssatz ein"
+
 msgid "clone only the specified branch"
-msgstr "nur die Änderungen des angegebenen Branches zurückgeben"
+msgstr "Klone nur den gegebenen Zweig"
 
 msgid "[OPTION]... SOURCE [DEST]"
 msgstr "[OPTION]... QUELLE [ZIEL]"
 
+msgid "make a copy of an existing repository"
+msgstr "Erzeugt eine Kopie eines bestehenden Projektarchivs"
+
+msgid "    Create a copy of an existing repository in a new directory."
+msgstr "    Kopiert ein bestehendes Projektarchiv in ein neues Verzeichnis."
+
+msgid ""
+"    If no destination directory name is specified, it defaults to the\n"
+"    basename of the source."
+msgstr ""
+"    Wird kein Zielverzeichnis angegeben, wird der Basisname der Quelle "
+"genutzt."
+
+msgid ""
+"    The location of the source is added to the new repository's\n"
+"    ``.hg/hgrc`` file, as the default to be used for future pulls."
+msgstr ""
+"    Die Adresse der Quelle wird der ``.hg/hgrc`` Datei des neuen Archivs\n"
+"    als Standard für entfernte Aktionen (pull/push) hinzugefügt."
+
+msgid ""
+"    Only local paths and ``ssh://`` URLs are supported as\n"
+"    destinations. For ``ssh://`` destinations, no working directory or\n"
+"    ``.hg/hgrc`` will be created on the remote side."
+msgstr ""
+
+msgid ""
+"    To pull only a subset of changesets, specify one or more revisions\n"
+"    identifiers with -r/--rev or branches with -b/--branch. The\n"
+"    resulting clone will contain only the specified changesets and\n"
+"    their ancestors. These options (or 'clone src#rev dest') imply\n"
+"    --pull, even for local source repositories. Note that specifying a\n"
+"    tag will include the tagged changeset but not the changeset\n"
+"    containing the tag."
+msgstr ""
+
+msgid ""
+"    To check out a particular version, use -u/--update, or\n"
+"    -U/--noupdate to create a clone with no working directory."
+msgstr ""
+
+msgid ""
+"      For efficiency, hardlinks are used for cloning whenever the\n"
+"      source and destination are on the same filesystem (note this\n"
+"      applies only to the repository data, not to the working\n"
+"      directory). Some filesystems, such as AFS, implement hardlinking\n"
+"      incorrectly, but do not report errors. In these cases, use the\n"
+"      --pull option to avoid hardlinking."
+msgstr ""
+"      Aus Effizienzgründen werden 'hardlinks' für das Klonen genutzt, wann\n"
+"      immer Quelle und Ziel auf dem selben Dateisystem liegen (dies gilt nur\n"
+"      für die Daten des Archivs, nicht für die Arbeitskopie). Einige\n"
+"      Dateisyteme, wie etwa AFS, implementieren 'hardlinks' fehlerhaft,\n"
+"      erzeugen dabei aber keine Fehlermeldung. Dann muss die --pull Option\n"
+"      genutzt werden, um das Erzeugen von 'hardlinks' zu vermeiden."
+
+msgid ""
+"      In some cases, you can clone repositories and the working\n"
+"      directory using full hardlinks with ::"
+msgstr ""
+"      In einigen Fällen können Archiv und Arbeitskopie unter Nutzung\n"
+"      von 'hardlinks' kopiert werden mit ::"
+
+msgid "        $ cp -al REPO REPOCLONE"
+msgstr "        $ cp -al REPO REPOCLONE"
+
+msgid ""
+"      This is the fastest way to clone, but it is not always safe. The\n"
+"      operation is not atomic (making sure REPO is not modified during\n"
+"      the operation is up to you) and you have to make sure your\n"
+"      editor breaks hardlinks (Emacs and most Linux Kernel tools do\n"
+"      so). Also, this is not compatible with certain extensions that\n"
+"      place their metadata under the .hg directory, such as mq."
+msgstr ""
+"      Dies ist der schnellste Weg zu klonen, aber nicht immer sicher.\n"
+"      Diese Operation ist nicht atomar (das Archiv darf während der "
+"Operation\n"
+"      nicht modifiziert wird) und es muss sichergestellt werden, dass der\n"
+"      genutzte Editor 'hardlinks' auflöst (vim, emacs und die meisten Linux\n"
+"      Kernel Tools tun dies). Außerdem ist dies inkompatibel mit einigen\n"
+"      Erweiterungen, die Metadaten unter dem .hg Verzeichnis ablegen, z.B. "
+"mq."
+
+msgid ""
+"      Mercurial will update the working directory to the first applicable\n"
+"      revision from this list:"
+msgstr ""
+
+msgid ""
+"      a) null if -U or the source repository has no changesets\n"
+"      b) if -u . and the source repository is local, the first parent of\n"
+"         the source repository's working directory\n"
+"      c) the changeset specified with -u (if a branch name, this means the\n"
+"         latest head of that branch)\n"
+"      d) the changeset specified with -r\n"
+"      e) the tipmost head specified with -b\n"
+"      f) the tipmost head specified with the url#branch source syntax\n"
+"      g) the tipmost head of the default branch\n"
+"      h) tip"
+msgstr ""
+
+msgid "      - clone a remote repository to a new directory named hg/::"
+msgstr ""
+"      - Klont ein entferntes Projektarchiv in ein neues Verzeichnis hg/::"
+
+msgid "          hg clone http://selenic.com/hg"
+msgstr ""
+
+msgid "      - create a lightweight local clone::"
+msgstr ""
+
+msgid "          hg clone project/ project-feature/"
+msgstr ""
+
+msgid ""
+"      - clone from an absolute path on an ssh server (note double-slash)::"
+msgstr ""
+
+msgid "          hg clone ssh://user@server//home/projects/alpha/"
+msgstr ""
+
+msgid ""
+"      - do a high-speed clone over a LAN while checking out a\n"
+"        specified version::"
+msgstr ""
+
+msgid "          hg clone --uncompressed http://server/repo -u 1.5"
+msgstr ""
+
+msgid ""
+"      - create a repository without changesets after a particular revision::"
+msgstr ""
+
+msgid "          hg clone -r 04e544 experimental/ good/"
+msgstr ""
+
+msgid "      - clone (and track) a particular named branch::"
+msgstr ""
+
+msgid "          hg clone http://selenic.com/hg#stable"
+msgstr ""
+
+msgid "    See :hg:`help urls` for details on specifying URLs."
+msgstr ""
+"    Siehe auch :hg:`help urls` für das Format von Adressangaben."
+
+msgid "cannot specify both --noupdate and --updaterev"
+msgstr ""
+"Es können nicht gleichzeitig --noupdate und --updaterev angegeben werden"
+
 msgid "mark new/missing files as added/removed before committing"
 msgstr "Markiert neue/fehlende Dateien als hinzugefügt/entfernt"
 
@@ -11988,6 +9567,69 @@
 msgstr ""
 "Markiert einen Branch als geschlossen und blendet ihn in der Branchlist aus"
 
+msgid "commit the specified files or all outstanding changes"
+msgstr ""
+"Übernimmt Änderungen der angegebenen Dateien oder alle ausstehenden "
+"Änderungen ins Archiv"
+
+msgid ""
+"    Commit changes to the given files into the repository. Unlike a\n"
+"    centralized SCM, this operation is a local operation. See\n"
+"    :hg:`push` for a way to actively distribute your changes."
+msgstr ""
+"    Übernimmt Änderungen der angegebenen Dateien ins Archiv. Anders als\n"
+"    bei zentralen Versionsverwaltungssystem ist dies eine lokale Operation.\n"
+"    Vergleiche :hg:`push` für Wege zur aktiven Verteilung der Änderungen."
+
+msgid ""
+"    If a list of files is omitted, all changes reported by :hg:`status`\n"
+"    will be committed."
+msgstr ""
+"    Sollten keine Dateien übergeben werden, werden alle von :hg:`status`\n"
+"    angezeigten Änderungen Bestandteil der neuen Revision."
+
+msgid ""
+"    If you are committing the result of a merge, do not provide any\n"
+"    filenames or -I/-X filters."
+msgstr ""
+"    Wenn das Ergebnis einer Zusammenführung übernommen werden soll, dürfen\n"
+"    keine Dateinamen oder -I/-X Filter angegeben werden."
+
+msgid ""
+"    If no commit message is specified, Mercurial starts your\n"
+"    configured editor where you can enter a message. In case your\n"
+"    commit fails, you will find a backup of your message in\n"
+"    ``.hg/last-message.txt``."
+msgstr ""
+
+msgid ""
+"    Returns 0 on success, 1 if nothing changed.\n"
+"    "
+msgstr ""
+"    Gibt 0 bei Erfolg zurück, wenn nichts geändert wurde.\n"
+"    "
+
+msgid "can only close branch heads"
+msgstr "Kann nur eindeutige Kopfrevisionen von Zweigen schliessen"
+
+#, python-format
+msgid "nothing changed (%d missing files, see 'hg status')\n"
+msgstr ""
+
+msgid "nothing changed\n"
+msgstr "Keine Änderung\n"
+
+msgid "created new head\n"
+msgstr "neuer Kopf erzeugt\n"
+
+#, python-format
+msgid "reopening closed branch head %d\n"
+msgstr "Zweig %d wird wieder geöffnet\n"
+
+#, python-format
+msgid "committed changeset %d:%s\n"
+msgstr "Änderungssatz %d erzeugt:%s\n"
+
 msgid "record a copy that has already occurred"
 msgstr "Identifiziert eine Kopie, die bereits stattgefunden hat"
 
@@ -11997,14 +9639,59 @@
 msgid "[OPTION]... [SOURCE]... DEST"
 msgstr "[OPTION]... [QUELLE]... ZIEL"
 
+msgid "mark files as copied for the next commit"
+msgstr "Markiert Dateien als Kopien bereits versionierter Dateien"
+
+msgid ""
+"    Mark dest as having copies of source files. If dest is a\n"
+"    directory, copies are put in that directory. If dest is a file,\n"
+"    the source must be a single file."
+msgstr ""
+"    Markiert das Ziel als Kopie der Quelle, so dass es die Versionshistorie "
+"der\n"
+"    Quelle bis zu diesem Zeitpunkt teilt. Wenn mehrere Quellen angegeben "
+"sind,\n"
+"    muss das Ziel ein Verzeichnis sein."
+
+msgid ""
+"    By default, this command copies the contents of files as they\n"
+"    exist in the working directory. If invoked with -A/--after, the\n"
+"    operation is recorded, but no copying is performed."
+msgstr ""
+"    Normalerweise kopiert dieser Befehl auch den Inhalt der Datei(en) wie "
+"sie\n"
+"    im Arbeitsverzeichnis vorliegt. Existiert das Ziel jedoch schon, so "
+"kann\n"
+"    dieses durch Angabe der Option -A/--after als Kopie nachträglich "
+"markiert\n"
+"    werden."
+
+msgid ""
+"    This command takes effect with the next commit. To undo a copy\n"
+"    before that, see :hg:`revert`."
+msgstr ""
+"    Die neue Datei wird wie üblich nicht sofort übernommen, sondern "
+"existiert\n"
+"    als lokale  Änderung im Arbeitsverzeichnis. Sie kann durch :hg:`revert`\n"
+"    rückgängig gemacht werden."
+
+msgid ""
+"    Returns 0 on success, 1 if errors are encountered.\n"
+"    "
+msgstr ""
+"    Gibt 0 bei Erfolg zurück, 1 wenn Fehler gefunden wurden.\n"
+"    "
+
 msgid "[INDEX] REV1 REV2"
 msgstr ""
 
-#, fuzzy
+msgid "find the ancestor revision of two revisions in a given index"
+msgstr "Finde die Vorgängerversion zweier Revisionen im angegebenen Index"
+
+msgid "either two or three arguments required"
+msgstr "Entweder zwei oder drei Parameter angeben"
+
 msgid "add single file mergeable changes"
-msgstr "Füge Dateiänderungen hinzu\n"
-
-msgid "add single file all revs append to"
 msgstr ""
 
 msgid "add single file all revs overwrite"
@@ -12013,36 +9700,154 @@
 msgid "add new file at each rev"
 msgstr ""
 
-#, fuzzy
-msgid "[OPTION]... TEXT"
-msgstr "[OPTION]... ZIEL"
+msgid "[OPTION]... [TEXT]"
+msgstr "[OPTION]... [TEXT]"
+
+msgid "builds a repo with a given DAG from scratch in the current empty repo"
+msgstr ""
+
+msgid ""
+"    The description of the DAG is read from stdin if not given on the\n"
+"    command line."
+msgstr ""
+
+msgid "    Elements:"
+msgstr "    Elemente:"
+
+msgid ""
+"     - \"+n\" is a linear run of n nodes based on the current default "
+"parent\n"
+"     - \".\" is a single node based on the current default parent\n"
+"     - \"$\" resets the default parent to null (implied at the start);\n"
+"           otherwise the default parent is always the last node created\n"
+"     - \"<p\" sets the default parent to the backref p\n"
+"     - \"*p\" is a fork at parent p, which is a backref\n"
+"     - \"*p1/p2\" is a merge of parents p1 and p2, which are backrefs\n"
+"     - \"/p2\" is a merge of the preceding node and p2\n"
+"     - \":tag\" defines a local tag for the preceding node\n"
+"     - \"@branch\" sets the named branch for subsequent nodes\n"
+"     - \"#...\\n\" is a comment up to the end of the line"
+msgstr ""
+
+msgid "    Whitespace between the above elements is ignored."
+msgstr ""
+
+msgid "    A backref is either"
+msgstr ""
+
+msgid ""
+"     - a number n, which references the node curr-n, where curr is the "
+"current\n"
+"       node, or\n"
+"     - the name of a local tag you placed earlier using \":tag\", or\n"
+"     - empty to denote the default parent."
+msgstr ""
+
+msgid ""
+"    All string valued-elements are either strictly alphanumeric, or must\n"
+"    be enclosed in double quotes (\"...\"), with \"\\\" as escape "
+"character.\n"
+"    "
+msgstr ""
+
+msgid "reading DAG from stdin\n"
+msgstr "Lese DAG von der Standardeingabe\n"
+
+msgid "repository is not empty"
+msgstr "Projektarchiv nicht leer"
+
+msgid "building"
+msgstr "Erstelle"
+
+msgid "show all details"
+msgstr "Zeigt alle Details"
+
+msgid "lists the contents of a bundle"
+msgstr "Listet den Inhalt eines Bündels"
+
+msgid "validate the correctness of the current dirstate"
+msgstr "Prüft die Richtigkeit der bisher vorgemerkten Änderungen"
+
+#, python-format
+msgid "%s in state %s, but not in manifest1\n"
+msgstr "%s ist in Status %s, aber nicht in Manifest 1\n"
+
+#, python-format
+msgid "%s in state %s, but also in manifest1\n"
+msgstr "%s ist in Status %s, aber auch in Manifest 1\n"
+
+#, python-format
+msgid "%s in state %s, but not in either manifest\n"
+msgstr "%s ist in Status %s, aber in keinem Manifest\n"
+
+#, python-format
+msgid "%s in manifest1, but listed as state %s"
+msgstr "%s im Manifest 1, aber aufgeführt im Status %s"
+
+msgid ".hg/dirstate inconsistent with current parent's manifest"
+msgstr ".hg/dirstate inkonsistent mit dem Manifest des aktuellen Vorgängers"
 
 msgid "[COMMAND]"
 msgstr "[BEFEHL]"
 
+msgid "list all available commands and options"
+msgstr "Zeigt alle verfügbaren Befehl und Optionen"
+
 msgid "show the command options"
 msgstr "Zeigt alle Optionen des Befehls"
 
 msgid "[-o] CMD"
 msgstr "[-o] BEFEHL"
 
+msgid "returns the completion list associated with the given command"
+msgstr "Listet mögliche Befehle zu gegebener Abkürzung auf"
+
 msgid "use tags as labels"
 msgstr ""
 
-#, fuzzy
 msgid "annotate with branch names"
-msgstr "Erhält die ursprünglichen Zweignamen"
-
-#, fuzzy
+msgstr ""
+
 msgid "use dots for runs"
-msgstr "Stil nicht gefunden: %s"
+msgstr ""
 
 msgid "separate elements by spaces"
 msgstr ""
 
-#, fuzzy
 msgid "[OPTION]... [FILE [REV]...]"
-msgstr "[OPTION]... [DATEI]..."
+msgstr "[OPTION]... [DATEI [REV]]..."
+
+msgid "format the changelog or an index DAG as a concise textual description"
+msgstr ""
+
+msgid ""
+"    If you pass a revlog index, the revlog's DAG is emitted. If you list\n"
+"    revision numbers, they get labelled in the output as rN."
+msgstr ""
+
+msgid ""
+"    Otherwise, the changelog DAG of the current repo is emitted.\n"
+"    "
+msgstr ""
+
+msgid "need repo for changelog dag"
+msgstr ""
+
+msgid "open changelog"
+msgstr "Öffne Changelog"
+
+msgid "open manifest"
+msgstr "Öffne Manifest"
+
+msgid "-c|-m|FILE REV"
+msgstr "-c|-m|DATEI REV"
+
+msgid "dump the contents of a data file revision"
+msgstr ""
+
+#, python-format
+msgid "invalid revision identifier %s"
+msgstr ""
 
 msgid "try extended date formats"
 msgstr "versuche erweiterte Datumsformate"
@@ -12050,56 +9855,580 @@
 msgid "[-e] DATE [RANGE]"
 msgstr "[-e] DATUM [BEREICH]"
 
-msgid "FILE REV"
-msgstr "DATEI REV"
+msgid "parse and display a date"
+msgstr "Liest ein Datum ein und gibt es wieder aus"
+
+msgid "use old-style discovery"
+msgstr ""
+
+msgid "use old-style discovery with non-heads included"
+msgstr ""
+
+msgid "[-l REV] [-r REV] [-b BRANCH]... [OTHER]"
+msgstr ""
+
+msgid "runs the changeset discovery protocol in isolation"
+msgstr ""
+
+msgid "parse and apply a fileset specification"
+msgstr ""
 
 msgid "[PATH]"
 msgstr "[PFAD]"
 
+msgid "show information detected about current filesystem"
+msgstr ""
+
+msgid "id of head node"
+msgstr ""
+
+msgid "id of common node"
+msgstr ""
+
+msgid "REPO FILE [-H|-C ID]..."
+msgstr ""
+
+msgid "retrieves a bundle from a repo"
+msgstr ""
+
+msgid ""
+"    Every ID must be a full-length hex node id string. Saves the bundle to "
+"the\n"
+"    given file.\n"
+"    "
+msgstr ""
+
+msgid "display the combined ignore pattern"
+msgstr ""
+
+msgid "no ignore patterns found"
+msgstr ""
+
 msgid "revlog format"
 msgstr ""
 
+msgid "[-f FORMAT] -c|-m|FILE"
+msgstr ""
+
+msgid "dump the contents of an index file"
+msgstr ""
+
+#, python-format
+msgid "unknown format %d"
+msgstr "Unbekanntes Format %d"
+
+msgid "dump an index DAG as a graphviz dot file"
+msgstr ""
+
+msgid "test Mercurial installation"
+msgstr "Testet die Mercurial Installation"
+
+#, python-format
+msgid "Checking encoding (%s)...\n"
+msgstr "Prüfe Kodierung (%s)...\n"
+
+msgid " (check that your locale is properly set)\n"
+msgstr " (Stelle sicher, dass locale richtig gesetzt ist!)\n"
+
+#, python-format
+msgid "Checking installed modules (%s)...\n"
+msgstr "Prüfe installierte Module (%s)...\n"
+
+msgid " One or more extensions could not be found"
+msgstr " Eine oder mehrere Erweiterungen nicht gefunden"
+
+msgid " (check that you compiled the extensions)\n"
+msgstr " (Stelle sicher, dass die Erweiterungen compiliert wurden!)\n"
+
+#, python-format
+msgid "Checking templates (%s)...\n"
+msgstr "Prüfe Vorlagen (%s)...\n"
+
+msgid " (templates seem to have been installed incorrectly)\n"
+msgstr "(Vorlagen scheinen falsch installiert worden zu sein)\n"
+
+msgid "Checking commit editor...\n"
+msgstr "Prüfe Editor für Versionsmeldungen...\n"
+
+msgid " No commit editor set and can't find vi in PATH\n"
+msgstr " Kein Editor für Versionsmeldungen angegeben und vi nicht im PATH\n"
+
+msgid " (specify a commit editor in your configuration file)\n"
+msgstr " (Gib einen Editor in der .hgrc Datei an!)\n"
+
+#, python-format
+msgid " Can't find editor '%s' in PATH\n"
+msgstr " Kann Editor '%s' nicht im PATH finden\n"
+
+msgid "Checking username...\n"
+msgstr "Prüfe Benutzernamen...\n"
+
+msgid " (specify a username in your configuration file)\n"
+msgstr " (Gib einen Benutzernamen in der .hgrc Datei an!)\n"
+
+msgid "No problems detected\n"
+msgstr "Keine Probleme gefunden\n"
+
+#, python-format
+msgid "%s problems detected, please check your install!\n"
+msgstr "%s Probleme gefunden. Erwäge die obigen Lösungsvorschläge!\n"
+
+msgid "REPO ID..."
+msgstr ""
+
+msgid "test whether node ids are known to a repo"
+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"
+"    "
+msgstr ""
+
 msgid "REPO NAMESPACE [KEY OLD NEW]"
 msgstr ""
 
+msgid "access the pushkey key/value protocol"
+msgstr ""
+
+msgid "    With two args, list the keys in the given namespace."
+msgstr ""
+
+msgid ""
+"    With five args, set a key to new if it currently is set to old.\n"
+"    Reports success or failure.\n"
+"    "
+msgstr ""
+
 msgid "revision to rebuild to"
 msgstr "Basisrevision für die Änderungen"
 
 msgid "[-r REV] [REV]"
 msgstr ""
 
+msgid "rebuild the dirstate as it would look like for the given revision"
+msgstr ""
+
 msgid "revision to debug"
 msgstr ""
 
 msgid "[-r REV] FILE"
 msgstr "[-r REV] DATEI"
 
+msgid "dump rename information"
+msgstr ""
+
+#, python-format
+msgid "%s renamed from %s:%s\n"
+msgstr "%s umbenannt von %s:%s\n"
+
+#, python-format
+msgid "%s not renamed\n"
+msgstr "%s ist nicht unbenannt\n"
+
+msgid "dump index data"
+msgstr ""
+
+msgid "-c|-m|FILE"
+msgstr ""
+
+msgid "show data and statistics about a revlog"
+msgstr ""
+
+msgid "parse and apply a revision specification"
+msgstr ""
+
 msgid "REV1 [REV2]"
 msgstr ""
 
+msgid "manually set the parents of the current working directory"
+msgstr "Setzt die Vorgängerversionen des Arbeitsverzeichnisses manuell"
+
+msgid ""
+"    This is useful for writing repository conversion tools, but should\n"
+"    be used with care."
+msgstr ""
+
 msgid "do not display the saved mtime"
 msgstr "Zeigt gespeicherte Modifikationszeit nicht an"
 
+msgid "sort by saved mtime"
+msgstr "Sortiert nach gespeicherter Modifikationszeit"
+
 msgid "[OPTION]..."
 msgstr ""
 
+msgid "show the contents of the current dirstate"
+msgstr ""
+"Zeigt die interne Repräsentation der aktuellen Änderungen (dirstate) an"
+
+#, python-format
+msgid "copy: %s -> %s\n"
+msgstr "Kopiere: %s -> %s\n"
+
 msgid "revision to check"
 msgstr "Die zu prüfende Revision"
 
-#, fuzzy
+msgid "show how files match on given patterns"
+msgstr ""
+
+msgid "REPO [OPTIONS]... [ONE [TWO]]"
+msgstr "ARCHIV [OPTIONEN]... [EINS [ZWEI]]"
+
 msgid "[OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]..."
-msgstr "[OPTION]... [-r REV1 [-r REV2]] [DATEI]..."
+msgstr "[OPTION]... ([-c REV] | [-r REV1] [-r REV2]]) [DATEI]..."
+
+msgid "diff repository (or selected files)"
+msgstr "Zeigt Änderungen des Projektarchivs oder angegebener Dateien an"
+
+msgid "    Show differences between revisions for the specified files."
+msgstr ""
+"    Zeigt Änderungen zwischen den Revisionen der angegebenen Dateien an."
+
+msgid "    Differences between files are shown using the unified diff format."
+msgstr ""
+"    Unterschiede von Dateien zwischen Revisionen werden im unified-diff-\n"
+"    Format angezeigt."
+
+msgid ""
+"    .. note::\n"
+"       diff may generate unexpected results for merges, as it will\n"
+"       default to comparing against the working directory's first\n"
+"       parent changeset if no revisions are specified."
+msgstr ""
+"    .. note::\n"
+"       diff kann bei Zusammenführungen unerwartete Resultate anzeigen, da\n"
+"       es nur mit einer (der ersten wenn keine Revision angegeben ist)\n"
+"       Vorgängerversion vergleicht."
+
+msgid ""
+"    Alternatively you can specify -c/--change with a revision to see\n"
+"    the changes in that changeset relative to its first parent."
+msgstr ""
+"    Alternativ können mit -c/--change die Änderungen einer Revision relativ\n"
+"    zu dessen ersten Vorgänger angezeigt werden."
+
+msgid ""
+"    Without the -a/--text option, diff will avoid generating diffs of\n"
+"    files it detects as binary. With -a, diff will generate a diff\n"
+"    anyway, probably with undesirable results."
+msgstr ""
+"    Ohne die Option -a/--text vermeidet export den Vergleich von binären\n"
+"    Dateien. Mit -a wird der Vergleich in jedem Fall durchgeführt,\n"
+"    wahrscheinlich mit unerwünschtem Resultat."
+
+msgid ""
+"    Use the -g/--git option to generate diffs in the git extended diff\n"
+"    format. For more information, read :hg:`help diffs`."
+msgstr ""
+"    Nutze die Option -g/--git um Vergleiche im git-erweiterten diff-Format\n"
+"    zu erzeugen. Für mehr Information ist :hg:`help diff` aufschlussreich."
+
+msgid "      - compare a file in the current working directory to its parent::"
+msgstr ""
+"      - vergleiche eine Datei im Arbeitsverzeichnis mit dem Vorgänger::"
+
+msgid "          hg diff foo.c"
+msgstr ""
+
+msgid ""
+"      - compare two historical versions of a directory, with rename info::"
+msgstr ""
+
+msgid "          hg diff --git -r 1.0:1.2 lib/"
+msgstr ""
+
+msgid "      - get change stats relative to the last change on some date::"
+msgstr ""
+
+msgid "          hg diff --stat -r \"date('may 2')\""
+msgstr ""
+
+msgid "      - diff all newly-added files that contain a keyword::"
+msgstr ""
+
+msgid "          hg diff \"set:added() and grep(GNU)\""
+msgstr ""
+
+msgid "      - compare a revision and its parents::"
+msgstr ""
+
+msgid ""
+"          hg diff -c 9353         # compare against first parent\n"
+"          hg diff -r 9353^:9353   # same using revset syntax\n"
+"          hg diff -r 9353^2:9353  # compare against the second parent"
+msgstr ""
 
 msgid "diff against the second parent"
 msgstr "Vergleicht mit der zweiten Vorgängerversion"
 
-#, fuzzy
 msgid "revisions to export"
-msgstr "zu mergende Revision"
+msgstr "zu exportierende Revisionen"
 
 msgid "[OPTION]... [-o OUTFILESPEC] REV..."
 msgstr "[OPTION]... [-o DATEINAMENMUSTER] REV..."
 
+msgid "dump the header and diffs for one or more changesets"
+msgstr ""
+"Gibt Kopfzeilen und Änderungsverlauf einer oder mehrerer Versionen aus"
+
+msgid "    Print the changeset header and diffs for one or more revisions."
+msgstr ""
+"    Gibt Kopfzeilen und Änderungsverlauf einer oder mehrerer Versionen aus."
+
+msgid ""
+"    The information shown in the changeset header is: author, date,\n"
+"    branch name (if non-default), changeset hash, parent(s) and commit\n"
+"    comment."
+msgstr ""
+"    Die angezeigten Daten in den Kopfzeilen sind: Autor, Datum, Zweigname\n"
+"    (falls nicht default), Änderungssatz-Prüfsumme, Vorgängerversion(en)\n"
+"    und Versionsmeldung."
+
+msgid ""
+"    .. note::\n"
+"       export may generate unexpected diff output for merge\n"
+"       changesets, as it will compare the merge changeset against its\n"
+"       first parent only."
+msgstr ""
+"    .. note::\n"
+"       export kann bei Zusammenführungen unerwartete Resultate anzeigen,\n"
+"       da es nur mit der ersten Vorgängerversion vergleicht."
+
+msgid ""
+"    Output may be to a file, in which case the name of the file is\n"
+"    given using a format string. The formatting rules are as follows:"
+msgstr ""
+"    Die Ausgabe kann in eine Datei erfolgen. In diesem Fall wird der Name\n"
+"    für jede ausgegebene Revision anhand einer Formatangabe erzeugt:"
+
+msgid ""
+"    :``%%``: literal \"%\" character\n"
+"    :``%H``: changeset hash (40 hexadecimal digits)\n"
+"    :``%N``: number of patches being generated\n"
+"    :``%R``: changeset revision number\n"
+"    :``%b``: basename of the exporting repository\n"
+"    :``%h``: short-form changeset hash (12 hexadecimal digits)\n"
+"    :``%m``: first line of the commit message (only alphanumeric "
+"characters)\n"
+"    :``%n``: zero-padded sequence number, starting at 1\n"
+"    :``%r``: zero-padded changeset revision number"
+msgstr ""
+"    :``%%``: literales \"%\" Zeichen\n"
+"    :``%H``: Prüfsumme des Änderungssatzes (40 Byte hexadezimal)\n"
+"    :``%N``: Anzahl der generierten Patches\n"
+"    :``%R``: Revisionnummer des Änderungssatzes\n"
+"    :``%b``: Basisname des exportierten Archivs\n"
+"    :``%h``: Kurzform der Prüfsumme des Änderungssatzes (12 Byte hexadezimal)\n"
+"    :``%m``: Erste Zeile der Übernahmenachricht (nur alphanumerische Zeichen)\n"
+"    :``%n``: Laufende Nummer mit führenden Nullen, beginnend bei 1\n"
+"    :``%r``: Revisionsnummer mit führenden Nullen"
+
+msgid ""
+"    Without the -a/--text option, export will avoid generating diffs\n"
+"    of files it detects as binary. With -a, export will generate a\n"
+"    diff anyway, probably with undesirable results."
+msgstr ""
+"    Ohne die Option -a/--text vermeidet export den Vergleich von binären\n"
+"    Dateien. Mit -a wird der Vergleich in jedem Fall durchgeführt,\n"
+"    wahrscheinlich mit unerwünschtem Resultat."
+
+msgid ""
+"    Use the -g/--git option to generate diffs in the git extended diff\n"
+"    format. See :hg:`help diffs` for more information."
+msgstr ""
+"    Nutze die Option -g/--git um Vergleiche im git-erweiterten diff-Format\n"
+"    zu erzeugen. Siehe dazu auch :hg:`help diff`."
+
+msgid ""
+"    With the --switch-parent option, the diff will be against the\n"
+"    second parent. It can be useful to review a merge."
+msgstr ""
+"    Mit dem Schalter --switch-parent kann im Falle einer Zusammenführung\n"
+"    mit dem zweiten Vorfahren verglichen werden."
+
+msgid ""
+"      - use export and import to transplant a bugfix to the current\n"
+"        branch::"
+msgstr ""
+"      - verwendet export und import um einen Bugfix auf den aktuellen Zweig\n"
+"        zu transplantieren::"
+
+msgid "          hg export -r 9353 | hg import -"
+msgstr "          hg export -r 9353 | hg import -"
+
+msgid ""
+"      - export all the changesets between two revisions to a file with\n"
+"        rename information::"
+msgstr ""
+"      - exportiere alle Änderungssätze zwischen zwei Revision in eine Datei\n"
+"        mit Informationen über Umbenennungen::"
+
+msgid "          hg export --git -r 123:150 > changes.txt"
+msgstr "          hg export --git -r 123:150 > aenderungen.txt"
+
+msgid ""
+"      - split outgoing changes into a series of patches with\n"
+"        descriptive names::"
+msgstr ""
+"      - spalte neue Änderungen in eine Reihe von Patches mit erklärenden\n"
+"        Namen::"
+
+msgid "          hg export -r \"outgoing()\" -o \"%n-%m.patch\""
+msgstr "          hg export -r \"outgoing()\" -o \"%n-%m.patch\""
+
+msgid "export requires at least one changeset"
+msgstr "export benötigt zumindest eine Versionsangabe"
+
+msgid "exporting patches:\n"
+msgstr "Exportiere Patches:\n"
+
+msgid "exporting patch:\n"
+msgstr "Exportiere Patch:\n"
+
+msgid "forget the specified files on the next commit"
+msgstr ""
+"Angegebene Dateien ab dem nächsten Commit nicht mehr unter Versionskontrolle "
+"stellen"
+
+msgid ""
+"    Mark the specified files so they will no longer be tracked\n"
+"    after the next commit."
+msgstr ""
+
+msgid ""
+"    This only removes files from the current branch, not from the\n"
+"    entire project history, and it does not delete them from the\n"
+"    working directory."
+msgstr ""
+
+msgid "    To undo a forget before the next commit, see :hg:`add`."
+msgstr ""
+
+msgid "      - forget newly-added binary files::"
+msgstr ""
+
+msgid "          hg forget \"set:added() and binary()\""
+msgstr ""
+
+msgid "      - forget files that would be excluded by .hgignore::"
+msgstr ""
+
+msgid "          hg forget \"set:hgignore()\""
+msgstr ""
+
+msgid "resume interrupted graft"
+msgstr "Führt ein unterbrochenes graft fort"
+
+msgid "record the current date as commit date"
+msgstr "Protokolliert das aktuelle Datum als Commit-Datum"
+
+msgid "record the current user as committer"
+msgstr "Protokolliert den aktuellen Nutzer als Autor"
+
+msgid "[OPTION]... REVISION..."
+msgstr "[OPTION]... REVISION..."
+
+msgid "copy changes from other branches onto the current branch"
+msgstr ""
+
+msgid ""
+"    This command uses Mercurial's merge logic to copy individual\n"
+"    changes from other branches without merging branches in the\n"
+"    history graph. This is sometimes known as 'backporting' or\n"
+"    'cherry-picking'. By default, graft will copy user, date, and\n"
+"    description from the source changesets."
+msgstr ""
+
+msgid ""
+"    Changesets that are ancestors of the current revision, that have\n"
+"    already been grafted, or that are merges will be skipped."
+msgstr ""
+
+msgid ""
+"    If a graft merge results in conflicts, the graft process is\n"
+"    aborted so that the current merge can be manually resolved. Once\n"
+"    all conflicts are addressed, the graft process can be continued\n"
+"    with the -c/--continue option."
+msgstr ""
+
+msgid ""
+"    .. note::\n"
+"      The -c/--continue option does not reapply earlier options."
+msgstr ""
+
+msgid ""
+"      - copy a single change to the stable branch and edit its description::"
+msgstr ""
+
+msgid ""
+"          hg update stable\n"
+"          hg graft --edit 9393"
+msgstr ""
+
+msgid ""
+"      - graft a range of changesets with one exception, updating dates::"
+msgstr ""
+
+msgid "          hg graft -D \"2085::2093 and not 2091\""
+msgstr ""
+
+msgid "      - continue a graft after resolving conflicts::"
+msgstr ""
+
+msgid "          hg graft -c"
+msgstr ""
+
+msgid "      - show the source of a grafted changeset::"
+msgstr ""
+
+msgid "          hg log --debug -r tip"
+msgstr ""
+
+msgid ""
+"    Returns 0 on successful completion.\n"
+"    "
+msgstr ""
+"    Gibt 0 bei Erfolg zurück.\n"
+"    "
+
+msgid "can't specify --continue and revisions"
+msgstr "--continue und Revisionen können nicht gleichzeitig angegeben werden"
+
+msgid "no graft state found, can't continue"
+msgstr "Kein graft Status gefunden, kann nicht fortsetzen"
+
+#, python-format
+msgid "skipping ungraftable merge revision %s\n"
+msgstr "Überspringe nicht transplantierbare Zusammenführung %s\n"
+
+#, python-format
+msgid "skipping ancestor revision %s\n"
+msgstr "Überspringe Vorgängerrevision %s\n"
+
+#, python-format
+msgid "skipping already grafted revision %s\n"
+msgstr "Überspringe bereits transplantierte Revision %s\n"
+
+#, python-format
+msgid "skipping already grafted revision %s (same origin %d)\n"
+msgstr ""
+
+#, python-format
+msgid "skipping already grafted revision %s (was grafted from %d)\n"
+msgstr ""
+
+#, python-format
+msgid "grafting revision %s\n"
+msgstr ""
+
+msgid "unresolved conflicts, can't continue"
+msgstr ""
+
+msgid "use hg resolve and hg graft --continue"
+msgstr ""
+
 msgid "end fields with NUL"
 msgstr "Trennt Einträge mit NULL statt Leerzeichen"
 
@@ -12120,20 +10449,60 @@
 msgid "print matching line numbers"
 msgstr "Zeigt zutreffende Zeilennummern"
 
-#, fuzzy
 msgid "only search files changed within revision range"
-msgstr "Sucht in gegebenem Revisionsbereich"
+msgstr "Sucht Dateien, die in gegebenem Revisionsbereich geändert wurden"
 
 msgid "[OPTION]... PATTERN [FILE]..."
 msgstr "[OPTION]... MUSTER [DATEI]..."
 
-#, fuzzy
-msgid "show only heads which are descendants of STARTREV"
-msgstr "Zeigt nur Köpfe, die Nachkommen dieser Revision sind"
+msgid "search for a pattern in specified files and revisions"
+msgstr "Sucht ein Muster in angegebenen Dateien und Revisionen"
+
+msgid "    Search revisions of files for a regular expression."
+msgstr ""
+"    Durchsucht Dateien in der Versionshistorie nach einem gegebenen Muster."
+
+msgid ""
+"    This command behaves differently than Unix grep. It only accepts\n"
+"    Python/Perl regexps. It searches repository history, not the\n"
+"    working directory. It always prints the revision number in which a\n"
+"    match appears."
+msgstr ""
+"    Dieser Befehl unterscheidet sich von Unix grep, da es Reguläre "
+"Ausdrücke\n"
+"    in Python/Perl Format erwartet und ausserdem nur die übernommenen "
+"Revisionen\n"
+"    im Archiv durchsucht, nicht jedoch das Arbeitsverzeichnis."
+
+msgid ""
+"    By default, grep only prints output for the first revision of a\n"
+"    file in which it finds a match. To get it to print every revision\n"
+"    that contains a change in match status (\"-\" for a match that\n"
+"    becomes a non-match, or \"+\" for a non-match that becomes a match),\n"
+"    use the --all flag."
+msgstr ""
+"    Standardmäßig gibt grep den Dateinamen und die jüngste Revision einer "
+"Datei\n"
+"    aus, die das Suchmuster enthält. Mit der Option --all werden "
+"stattdessen\n"
+"    alle Revisionen ausgegeben, in der das Muster hinzugefügt (\"+\") oder\n"
+"    entfernt (\"-\") wurde."
+
+msgid ""
+"    Returns 0 if a match is found, 1 otherwise.\n"
+"    "
+msgstr ""
+
+#, python-format
+msgid "grep: invalid match pattern: %s\n"
+msgstr "grep: Ungültiges Suchmuster: %s\n"
 
 msgid "STARTREV"
 msgstr ""
 
+msgid "show only heads which are descendants of STARTREV"
+msgstr "Zeigt nur Köpfe, die Nachkommen von STARTREV sind"
+
 msgid "show topological heads only"
 msgstr ""
 
@@ -12143,12 +10512,235 @@
 msgid "show normal and closed branch heads"
 msgstr "Zeigt normale und geschlossene Branch-Köpfe"
 
-#, fuzzy
 msgid "[-ac] [-r STARTREV] [REV]..."
-msgstr "[-nibt] [-r REV] [QUELLE]"
-
-msgid "[TOPIC]"
-msgstr "[THEMA]"
+msgstr "[-ac] [-r STARTREV] [REV]..."
+
+msgid "show current repository heads or show branch heads"
+msgstr "Zeigt die Köpfe des Archivs oder von Entwicklungszweigen"
+
+msgid "    With no arguments, show all repository branch heads."
+msgstr "    Ohne Argumente werden alle Köpfe des Archivs angezeigt."
+
+msgid ""
+"    Repository \"heads\" are changesets with no child changesets. They are\n"
+"    where development generally takes place and are the usual targets\n"
+"    for update and merge operations. Branch heads are changesets that have\n"
+"    no child changeset on the same branch."
+msgstr ""
+"    Archivköpfe sind Revisionen, die keine Nachfahren haben. Typischerweise\n"
+"    geht die Entwicklung hier weiter und die Köpfe sind häufig Ziel von\n"
+"    Aktualisierungen und Zusammenführungen.\n"
+"    Zweigköpfe sind Revisionen eines bestimmten Zweigs, die keine Kinder\n"
+"    im selben Zweig besitzen. Dies kann ein \"echter\" Kopf sein, oder die\n"
+"    letzte Revision bevor ein neuer Zweig erstellt wurde. Falls kein Kopf\n"
+"    eines Zweigs ein echter Kopf ist, gilt der Zweig als inaktiv."
+
+msgid ""
+"    If one or more REVs are given, only branch heads on the branches\n"
+"    associated with the specified changesets are shown. This means\n"
+"    that you can use :hg:`heads foo` to see the heads on a branch\n"
+"    named ``foo``."
+msgstr ""
+"    Wenn eine oder mehrere REV Argumente gegeben sind, werden die Köpfe von\n"
+"    den benannten Zweigen dieser Revisionen angezeigt. Das bedeutet, dass\n"
+"    :hg:`heads foo` verwendet werden kann, um die Köpfe des Zweigs ``foo``\n"
+"    anzuzeigen."
+
+
+msgid ""
+"    If -c/--closed is specified, also show branch heads marked closed\n"
+"    (see :hg:`commit --close-branch`)."
+msgstr ""
+"    Zweige die mit :hg:`commit --close-branch` geschlossen wurden, werden\n"
+"    nur mit dem -c/--closed Schalter angezeigt."
+
+msgid ""
+"    If STARTREV is specified, only those heads that are descendants of\n"
+"    STARTREV will be displayed."
+msgstr ""
+"    Bei Angabe einer STARTREV werden nur solche Köpfe (oder Zweigköpfe)\n"
+"    angezeigt, die Nachfahren der gegebenen Revision sind."
+
+msgid ""
+"    If -t/--topo is specified, named branch mechanics will be ignored and "
+"only\n"
+"    changesets without children will be shown."
+msgstr ""
+"    Mit -t/--topo wird Zweiginformation ignoriert und nur Änderungssätze\n"
+"    ohne Nachfahren angezeigt."
+
+msgid ""
+"    Returns 0 if matching heads are found, 1 if not.\n"
+"    "
+msgstr ""
+"    Gibt 0 zurück, wenn zutreffende Köpfe gefunden wurden, sonst 1.\n"
+"    "
+
+#, python-format
+msgid "no open branch heads found on branches %s"
+msgstr "Keine offenen Zweigköpfe auf Zweig %s"
+
+#, python-format
+msgid " (started at %s)"
+msgstr " (fängt bei %s an)"
+
+msgid "show only help for extensions"
+msgstr "Zeigt Hilfe nur für Erweiterungen"
+
+msgid "show only help for commands"
+msgstr "Zeigt Hilfe für Befehle"
+
+msgid "[-ec] [TOPIC]"
+msgstr "[-ec] [THEMA]"
+
+msgid "show help for a given topic or a help overview"
+msgstr "Zeigt die Hilfe für ein gegebenes Thema oder eine Hilfsübersicht"
+
+msgid ""
+"    With no arguments, print a list of commands with short help messages."
+msgstr ""
+"    Ohne Parameter wird eine Liste aller Befehle mit Kurzhilfe angezeigt."
+
+msgid ""
+"    Given a topic, extension, or command name, print help for that\n"
+"    topic."
+msgstr ""
+"    Bei Angabe eines Themas, einer Erweiterung oder eines Befehls wird\n"
+"    detaillierte Hilfe zu diesem Thema angezeigt."
+
+msgid ""
+"    Returns 0 if successful.\n"
+"    "
+msgstr ""
+"    Gibt 0 bei Erfolg zurück.\n"
+"    "
+
+msgid "VALUE"
+msgstr "WERT"
+
+msgid "DEPRECATED"
+msgstr "VERALTET"
+
+msgid ""
+"\n"
+"[+] marked option can be specified multiple times\n"
+msgstr ""
+"\n"
+"Mit [+] markierte Optionen können mehrfach angegeben werden\n"
+
+msgid "global options:"
+msgstr "Globale Optionen:"
+
+msgid "use \"hg help\" for the full list of commands"
+msgstr "Nutze \"hg help\" für eine Liste aller Befehle"
+
+msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
+msgstr ""
+"Nutze \"hg help\" für eine Liste aller Befehle oder \"hg -v\" für Details"
+
+#, python-format
+msgid "use \"hg help %s\" to show the full help text"
+msgstr "Nutze \"hg -v help %s\" um den vollen Hilfetext anzuzeigen"
+
+#, python-format
+msgid "use \"hg -v help%s\" to show builtin aliases and global options"
+msgstr "Nutze \"hg -v help%s\" um Aliase und globale Optionen anzuzeigen"
+
+#, python-format
+msgid "use \"hg -v help %s\" to show more info"
+msgstr "Nutze \"hg -v help %s\" um mehr Informationen anzuzeigen"
+
+#, python-format
+msgid ""
+"\n"
+"aliases: %s\n"
+msgstr ""
+"\n"
+"Aliase: %s\n"
+
+msgid "(no help text available)"
+msgstr "(keine Hilfe verfügbar)"
+
+#, python-format
+msgid "shell alias for::"
+msgstr ""
+
+#, python-format
+msgid "    %s"
+msgstr "    %s"
+
+#, python-format
+msgid "alias for: hg %s"
+msgstr "Alias für: hg %s"
+
+#, python-format
+msgid "%s"
+msgstr ""
+
+#, python-format
+msgid "use \"hg help -e %s\" to show help for the %s extension"
+msgstr ""
+"Benutzen Sie \"hg -v help %s\" um Hilfe für die Erweitung %s anzuzeigen"
+
+#, python-format
+msgid ""
+"\n"
+"use \"hg help %s\" to show the full help text\n"
+msgstr ""
+"\n"
+"Nutze \"hg help %s\" um den vollen Hilfetext anzuzeigen\n"
+
+#, python-format
+msgid ""
+"\n"
+"use \"hg -v help %s\" to show more info\n"
+msgstr ""
+"\n"
+"Nutze \"hg -v help %s\" um mehr Informationen anzuzeigen\n"
+
+msgid "basic commands:"
+msgstr "Grundlegende Befehle:"
+
+msgid "list of commands:"
+msgstr "Liste der Befehle:"
+
+msgid "no commands defined\n"
+msgstr "keine Befehle definiert\n"
+
+msgid "enabled extensions:"
+msgstr "Aktive Erweiterungen:"
+
+msgid ""
+"\n"
+"additional help topics:"
+msgstr ""
+"\n"
+"Zusätzliche Hilfethemen:"
+
+#, python-format
+msgid ""
+"\n"
+"use \"hg help -c %s\" to see help for the %s command\n"
+msgstr ""
+"\n"
+"Nutze \"hg help -c %s\" für die Hilfe zum Befehl %s\n"
+
+msgid "no help text available"
+msgstr "keine Hilfe verfügbar"
+
+#, python-format
+msgid "%s extension - %s"
+msgstr "%s Erweiterung - %s"
+
+msgid "use \"hg help extensions\" for information on enabling extensions\n"
+msgstr ""
+
+#, python-format
+msgid "'%s' is provided by the following extension:"
+msgstr ""
+
+msgid "Mercurial Distributed SCM\n"
+msgstr ""
 
 msgid "identify the specified revision"
 msgstr "Identifiziert die angegebene Revision"
@@ -12165,13 +10757,62 @@
 msgid "show tags"
 msgstr "Zeigt Tags"
 
-#, fuzzy
 msgid "show bookmarks"
-msgstr "Keine Lesezeichen gesetzt\n"
-
-#, fuzzy
+msgstr "Zeige Lesezeichen"
+
 msgid "[-nibtB] [-r REV] [SOURCE]"
-msgstr "[-nibt] [-r REV] [QUELLE]"
+msgstr "[-nibtB] [-r REV] [QUELLE]"
+
+msgid "identify the working copy or specified revision"
+msgstr "Beschreibt die Arbeitskopie oder die angegebene Revision"
+
+msgid ""
+"    Print a summary identifying the repository state at REV using one or\n"
+"    two parent hash identifiers, followed by a \"+\" if the working\n"
+"    directory has uncommitted changes, the branch name (if not default),\n"
+"    a list of tags, and a list of bookmarks."
+msgstr ""
+"    Die Zusammenfassung beschreibt den Zustand des Projektarchivs unter\n"
+"    Nutzung von ein oder zwei Prüfsummenbezeichnern, gefolgt von einem \"+"
+"\"\n"
+"    falls unversionierte Änderungen im Arbeitsverzeichnis vorliegen. Zudem\n"
+"    werden eine Liste der Tags und eine der Lesezeichen dieser Revision\n"
+"    ausgegeben sowie der Zweigname falls nicht der 'default'-Zweig vorliegt."
+
+msgid ""
+"    When REV is not given, print a summary of the current state of the\n"
+"    repository."
+msgstr ""
+"    Ohne REV wird eine Zusammenfassung des aktuellen Status des\n"
+"    Projektarchivs angezeigt."
+
+msgid ""
+"    Specifying a path to a repository root or Mercurial bundle will\n"
+"    cause lookup to operate on that repository/bundle."
+msgstr ""
+"    Mit einem Pfad auf ein Projektverzeichnis oder ein Bündel wird eine\n"
+"    Abfrage auf dies andere Archiv/Bündel ausgeführt."
+
+msgid "      - generate a build identifier for the working directory::"
+msgstr ""
+
+msgid "          hg id --id > build-id.dat"
+msgstr ""
+
+msgid "      - find the revision corresponding to a tag::"
+msgstr ""
+
+msgid "          hg id -n -r 1.3"
+msgstr ""
+
+msgid "      - check the most recent revision of a remote repository::"
+msgstr "      - Prüft die aktuellste Version eines entfernten Archivs::"
+
+msgid "          hg id -r tip http://selenic.com/hg/"
+msgstr ""
+
+msgid "can't query remote revision number, branch, or tags"
+msgstr ""
 
 msgid ""
 "directory strip option for patch. This has the same meaning as the "
@@ -12180,12 +10821,11 @@
 "Entfernt führende Verzeichnisnamen. Dies hat dieselbe Bedeutung wie die "
 "gleichnamige Option von patch"
 
-#, fuzzy
 msgid "PATH"
-msgstr "[PFAD]"
-
-msgid "base path"
-msgstr "Basispfad"
+msgstr "PFAD"
+
+msgid "base path (DEPRECATED)"
+msgstr "Basispfad (VERALTET)"
 
 msgid "skip check for outstanding uncommitted changes"
 msgstr ""
@@ -12194,6 +10834,9 @@
 msgid "don't commit, just update the working directory"
 msgstr "Kein Commit, nur Aktualisierung des Arbeitsverzeichnisses"
 
+msgid "apply patch without touching the working directory"
+msgstr "Wendet Patch an ohne das Arbeitsverzeichnis zu verändern"
+
 msgid "apply patch to the nodes from which it was generated"
 msgstr "Wendet Patch auf die Knoten an, von denen er erstellt wurde"
 
@@ -12203,9 +10846,147 @@
 msgid "[OPTION]... PATCH..."
 msgstr ""
 
-#, fuzzy
+msgid "import an ordered set of patches"
+msgstr "Importiert eine Liste von Patches"
+
+msgid ""
+"    Import a list of patches and commit them individually (unless\n"
+"    --no-commit is specified)."
+msgstr ""
+"    Wendet die angegebenen Patches nacheinander an und übernimmt die "
+"Änderungen\n"
+"    ins Archiv (es sei denn die Option --no-commit ist angegeben)."
+
+msgid ""
+"    If there are outstanding changes in the working directory, import\n"
+"    will abort unless given the -f/--force flag."
+msgstr ""
+"    Falls aktuell lokale Änderungen im Arbeitsverzeichnis vorliegen, bricht\n"
+"    der Befehl ohne die Option -f/--force ab."
+
+msgid ""
+"    You can import a patch straight from a mail message. Even patches\n"
+"    as attachments work (to use the body part, it must have type\n"
+"    text/plain or text/x-patch). From and Subject headers of email\n"
+"    message are used as default committer and commit message. All\n"
+"    text/plain body parts before first diff are added to commit\n"
+"    message."
+msgstr ""
+"    Patches können direkt aus Emails importiert werden, sogar wenn sie in\n"
+"    einem Anhang (Mime Typ text/plain oder text/x-patch) vorliegen. Die\n"
+"    Absender- und Betreffszeile, sowie alle text/plain Abschnitte vor dem "
+"Patch\n"
+"    werden als Benutzername bzw. Versionsmeldung bei der Übernahme verwendet."
+
+msgid ""
+"    If the imported patch was generated by :hg:`export`, user and\n"
+"    description from patch override values from message headers and\n"
+"    body. Values given on command line with -m/--message and -u/--user\n"
+"    override these."
+msgstr ""
+"    Falls der einzulesende Patch von :hg:`export` erzeugt wurde, werden\n"
+"    Benutzername und Versionsmeldung aus dem Patch und nicht aus der Email\n"
+"    verwendet. Die Optionen -m/--message und -u/--user überschreiben aber\n"
+"    auch diese Angaben."
+
+msgid ""
+"    If --exact is specified, import will set the working directory to\n"
+"    the parent of each patch before applying it, and will abort if the\n"
+"    resulting changeset has a different ID than the one recorded in\n"
+"    the patch. This may happen due to character set problems or other\n"
+"    deficiencies in the text patch format."
+msgstr ""
+"    Mit der Option --exact wird das Arbeitsverzeichnis vor jedem Patch auf\n"
+"    dessen Vorgängerversion gebracht. Nach Anwendung wird geprüft, ob der\n"
+"    neue Änderungssatz die gleiche Prüfsumme aufweist, wie der Patch. Falls\n"
+"    dies nicht so ist (im Falle von inkompatiblen Zeichensätzen oder "
+"anderen\n"
+"    Problemen mit dem Patch Format), wird die Operation abgebrochen."
+
+msgid ""
+"    Use --bypass to apply and commit patches directly to the\n"
+"    repository, not touching the working directory. Without --exact,\n"
+"    patches will be applied on top of the working directory parent\n"
+"    revision."
+msgstr ""
+
+msgid ""
+"    With -s/--similarity, hg will attempt to discover renames and\n"
+"    copies in the patch in the same way as 'addremove'."
+msgstr ""
+"    Mit der Option -s/--similarity werden Umbenennungen und Kopien auf\n"
+"    gleiche Weise wie mit dem Befehl \"hg addremove\" erkannt."
+
+msgid ""
+"    To read a patch from standard input, use \"-\" as the patch name. If\n"
+"    a URL is specified, the patch will be downloaded from it.\n"
+"    See :hg:`help dates` for a list of formats valid for -d/--date."
+msgstr ""
+"    Um einen Patch von der Standardeingabe zu lesen, kann der Dateiname \"-"
+"\"\n"
+"    verwendet werden. Falls eine URL angegeben ist, wird der Patch von dort\n"
+"    heruntergeladen. Siehe :hg:`help dates` für eine Liste aller gültigen\n"
+"    Formate für -d/--date.\n"
+"    "
+
+msgid "      - import a traditional patch from a website and detect renames::"
+msgstr ""
+
+msgid "          hg import -s 80 http://example.com/bugfix.patch"
+msgstr ""
+
+msgid "      - import a changeset from an hgweb server::"
+msgstr ""
+
+msgid "          hg import http://www.selenic.com/hg/rev/5ca8c111e9aa"
+msgstr ""
+
+msgid "      - import all the patches in an Unix-style mbox::"
+msgstr ""
+
+msgid "          hg import incoming-patches.mbox"
+msgstr ""
+
+msgid ""
+"      - attempt to exactly restore an exported changeset (not always\n"
+"        possible)::"
+msgstr ""
+
+msgid "          hg import --exact proposed-fix.patch"
+msgstr ""
+
+msgid "need at least one patch to import"
+msgstr "Benötigt mindestens einen Patchnamen zum Importieren"
+
+msgid "cannot use --no-commit with --bypass"
+msgstr ""
+
+msgid "cannot use --similarity with --bypass"
+msgstr ""
+
+msgid "patch is damaged or loses information"
+msgstr "Prüfsumme stimmt nicht überein: Patch korrumpiert"
+
+msgid "applied to working directory"
+msgstr "Angewendet aufs Arbeitsverzeichnis"
+
+msgid "not a Mercurial patch"
+msgstr "Kein Mercurial Patch"
+
+#. i18n: refers to a short changeset id
+#, python-format
+msgid "created %s"
+msgstr "erstellt %s"
+
+msgid "applying patch from stdin\n"
+msgstr "Wende Patch von der Standardeingabe an\n"
+
+#, python-format
+msgid "%s: no diffs found"
+msgstr "%s: Keine Diffs gefunden"
+
 msgid "run even if remote repository is unrelated"
-msgstr "Auch ausführen wenn das entfernte Projektarchiv keinen Bezug hat"
+msgstr "Auch ausführen, wenn das entfernte Projektarchiv keinen Bezug hat"
 
 msgid "show newest record first"
 msgstr "Zeigt neueste Änderung zuerst"
@@ -12213,26 +10994,76 @@
 msgid "file to store the bundles into"
 msgstr "Dateiname zum Speichern der Bündel"
 
-#, fuzzy
 msgid "a remote changeset intended to be added"
-msgstr "zeigt den aktuellen Änderungssatz in Vorgänger-Branches"
+msgstr "Ein entfernter Änderungssatz, der hinzugefügt werden soll"
 
 msgid "compare bookmarks"
 msgstr "Vergleiche Lesezeichen"
 
-#, fuzzy
 msgid "a specific branch you would like to pull"
-msgstr "Revision die geholt werden soll"
+msgstr "Spezifischer Zweig, der geholt werden soll"
 
 msgid "[-p] [-n] [-M] [-f] [-r REV]... [--bundle FILENAME] [SOURCE]"
 msgstr "[-p] [-n] [-M] [-f] [-r REV]... [--bundle DATEINAME] [QUELLE]"
 
+msgid "show new changesets found in source"
+msgstr "Zeigt neue Revisionen in einer externen Quelle an"
+
+msgid ""
+"    Show new changesets found in the specified path/URL or the default\n"
+"    pull location. These are the changesets that would have been pulled\n"
+"    if a pull at the time you issued this command."
+msgstr ""
+"    Zeigt alle neuen Änderungen an, die durch ein \"hg pull\" vom \n"
+"    angegebenen Pfad/URL oder dem 'default'-Pfad geholt werden würden."
+
+msgid ""
+"    For remote repository, using --bundle avoids downloading the\n"
+"    changesets twice if the incoming is followed by a pull."
+msgstr ""
+"    Für entfernte Archive sorgt die Option --bundle dafür, dass die "
+"Änderungen\n"
+"    bei einem folgenden \"hg pull\" nicht ein zweites Mal geholt werden."
+
+msgid "    See pull for valid source format details."
+msgstr "    Siehe :hg:`help pull` für gültige Angaben für die Quelle."
+
+msgid ""
+"    Returns 0 if there are incoming changes, 1 otherwise.\n"
+"    "
+msgstr ""
+
+msgid "cannot combine --bundle and --subrepos"
+msgstr "Kann --bundle und --subrepos nicht kombinieren"
+
+msgid "remote doesn't support bookmarks\n"
+msgstr "Quellarchiv unterstützt keine Lesezeichen\n"
+
 msgid "[-e CMD] [--remotecmd CMD] [DEST]"
 msgstr ""
 
-#, fuzzy
+msgid "create a new repository in the given directory"
+msgstr "Erzeugt ein neues Projektarchiv im angegebenen Verzeichnis"
+
+msgid ""
+"    Initialize a new repository in the given directory. If the given\n"
+"    directory does not exist, it will be created."
+msgstr ""
+"    Initialisiert ein neues Archiv im angegebenen Verzeichnis. Sollte das\n"
+"    angegebene Verzeichnis nicht existieren, wird es angelegt."
+
+msgid "    If no directory is given, the current directory is used."
+msgstr "    Ist kein Zielverzeichnis angegeben, wird das aktuelle genutzt."
+
+msgid ""
+"    It is possible to specify an ``ssh://`` URL as the destination.\n"
+"    See :hg:`help urls` for more information."
+msgstr ""
+"    Es ist möglich eine ``ssh://`` URL als Ziel anzugeben.\n"
+"    Siehe :hg:`help urls` für mehr Informationen."
+
 msgid "search the repository as it is in REV"
-msgstr "Durchsucht nur die Revision REV"
+msgstr "Sucht in der Revision REV"
 
 msgid "end filenames with NUL, for use with xargs"
 msgstr "Beendet Dateinamen mit NUL zur Nutzung mit xargs"
@@ -12243,8 +11074,44 @@
 msgid "[OPTION]... [PATTERN]..."
 msgstr "[OPTION]... [MUSTER]..."
 
-msgid "only follow the first parent of merge changesets"
-msgstr "Folgt nur dem ersten Vorgänger von Merges"
+msgid "locate files matching specific patterns"
+msgstr "Suche Dateien mit bestimmtem Namen"
+
+msgid ""
+"    Print files under Mercurial control in the working directory whose\n"
+"    names match the given patterns."
+msgstr ""
+"    Gibt alle Dateien im Projektarchiv aus, deren Namen auf ein angegebenes\n"
+"    Muster passen."
+
+msgid ""
+"    By default, this command searches all directories in the working\n"
+"    directory. To search just the current directory and its\n"
+"    subdirectories, use \"--include .\"."
+msgstr ""
+"    Standardmäßig wird das gesamte Archiv durchsucht. Um die Suche auf das\n"
+"    aktuelle Verzeichnis und Unterverzeichnisse zu begrenzen, verwende\n"
+"    \"--include .\"."
+
+msgid ""
+"    If no patterns are given to match, this command prints the names\n"
+"    of all files under Mercurial control in the working directory."
+msgstr "    Ohne angegebenes Suchmuster werden alle Dateinamen ausgegeben."
+
+msgid ""
+"    If you want to feed the output of this command into the \"xargs\"\n"
+"    command, use the -0 option to both this command and \"xargs\". This\n"
+"    will avoid the problem of \"xargs\" treating single filenames that\n"
+"    contain whitespace as multiple filenames."
+msgstr ""
+"    Um die Ausgabe besser in Verbindung mit \"xargs\" verwenden zu können,\n"
+"    sollte die Option \"-0\" (Null) in beiden Befehle angegeben werden.\n"
+"    Dadurch werden die Dateinamen mit einem Null-Byte getrennt, was "
+"Probleme\n"
+"    mit Leerzeichen in Dateinamen vermeidet."
+
+msgid "only follow the first parent of merge changesets (DEPRECATED)"
+msgstr "Folgt nur dem ersten Vorgänger von Zusammenführungen (VERALTET)"
 
 msgid "show revisions matching date spec"
 msgstr "Zeigt Revisionen passend zur Datums-Spezifikation"
@@ -12252,39 +11119,207 @@
 msgid "show copied files"
 msgstr "Zeigt kopierte Dateien"
 
-#, fuzzy
 msgid "do case-insensitive search for a given text"
-msgstr "Sucht unabhängig von Groß- und Kleinschreibung ein Stichwort"
+msgstr "Sucht ein Stichwort unabhängig von Groß- und Kleinschreibung"
 
 msgid "include revisions where files were removed"
 msgstr "Revisionen einschließen, in denen Dateien entfernt wurden"
 
-msgid "show only merges"
-msgstr "Zeigt nur Merges"
+msgid "show only merges (DEPRECATED)"
+msgstr "Zeigt nur Zusammenführungen (VERALTET)"
 
 msgid "revisions committed by user"
 msgstr "Revisionen vom Nutzer"
 
-#, fuzzy
 msgid "show only changesets within the given named branch (DEPRECATED)"
-msgstr "Zeigt nur Änderungssätze innerhalb des angegebenen Branches"
-
-#, fuzzy
+msgstr "Zeigt nur Änderungssätze innerhalb des angegebenen Zweigs (VERALTET)"
+
 msgid "show changesets within the given named branch"
-msgstr "Zeigt nur Änderungssätze innerhalb des angegebenen Branches"
+msgstr "Zeigt nur Änderungssätze innerhalb des angegebenen Zweigs"
 
 msgid "do not display revision or any of its ancestors"
 msgstr "Gibt weder diese Revision noch ihre Vorgänger aus"
 
+msgid "show hidden changesets (DEPRECATED)"
+msgstr "Zeigt versteckte Änderungssätze (VERALTET)"
+
 msgid "[OPTION]... [FILE]"
 msgstr "[OPTION]... [DATEI]"
 
+msgid "show revision history of entire repository or files"
+msgstr "Zeigt die Revisionshistorie des Archivs oder von Dateien an"
+
+msgid ""
+"    Print the revision history of the specified files or the entire\n"
+"    project."
+msgstr ""
+"    Gibt die Revisionshistorie der angegeben Dateien oder des ganzen\n"
+"    Projektes aus."
+
+msgid ""
+"    If no revision range is specified, the default is ``tip:0`` unless\n"
+"    --follow is set, in which case the working directory parent is\n"
+"    used as the starting revision."
+msgstr ""
+"    Wird kein Revisionsbereich angegeben, so wird ``tip:0`` angenommen,\n"
+"    außer --follow wurde angegeben. In dem Fall wird die Vorgängerversion\n"
+"    des Arbeitsverzeichnis als Startversion genommen."
+
+msgid ""
+"    File history is shown without following rename or copy history of\n"
+"    files. Use -f/--follow with a filename to follow history across\n"
+"    renames and copies. --follow without a filename will only show\n"
+"    ancestors or descendants of the starting revision."
+msgstr ""
+"    Die Dateihistorie wird angezeigt ohne der Umbenennungs- oder Kopier-\n"
+"    historie zu folgen. Bei Angabe von -f/--follow mit einem Dateinamen\n"
+"    wird die Historie über Kopien und Umbenennungen hinweg verfolgt.\n"
+"    --follow ohne Dateinamen wird nur Vorläufer und Nachfolger ab der\n"
+"    Startrevision anzeigen."
+
+msgid ""
+"    By default this command prints revision number and changeset id,\n"
+"    tags, non-trivial parents, user, date and time, and a summary for\n"
+"    each commit. When the -v/--verbose switch is used, the list of\n"
+"    changed files and full commit message are shown."
+msgstr ""
+"    Standardmäßig wird folgendes ausgegeben: Änderungssatz-Id und\n"
+"    Prüfsumme, Marken, nicht triviale Vorgängerversionen, Nutzer,\n"
+"    Datum und Zeit und eine Zusammenfassung für jede Version. Bei Angabe\n"
+"    des -v/--verbose Schalters, wird eine Liste aller geänderten Dateien\n"
+"    und die komplette Versionsmeldung angezeigt."
+
+msgid ""
+"    .. note::\n"
+"       log -p/--patch may generate unexpected diff output for merge\n"
+"       changesets, as it will only compare the merge changeset against\n"
+"       its first parent. Also, only files different from BOTH parents\n"
+"       will appear in files:."
+msgstr ""
+"    .. note::\n"
+"       log -p/--patch kann ein unerwartetes Diff für Zusammenführungen\n"
+"       erzeugen, da es standardmäßig die Zusammenführungsversion mit der\n"
+"       ersten Vorgängerversion vergleicht. Auch in der Dateiliste werden\n"
+"       nur Dateien berücksichtigt, die zu BEIDEN Vorgängernversionen\n"
+"       verschieden sind:."
+
+msgid ""
+"    .. note::\n"
+"       for performance reasons, log FILE may omit duplicate changes\n"
+"       made on branches and will not show deletions. To see all\n"
+"       changes including duplicates and deletions, use the --removed\n"
+"       switch."
+msgstr ""
+
+msgid "      - changesets with full descriptions and file lists::"
+msgstr "      - Änderungssätze mit vollen Beschreibungen und Dateilisten::"
+
+msgid "          hg log -v"
+msgstr ""
+
+msgid "      - changesets ancestral to the working directory::"
+msgstr ""
+"      - Alle Änderungssätze, die Vorfahren des Arbeitsverzeichnisses sind"
+
+msgid "          hg log -f"
+msgstr ""
+
+msgid "      - last 10 commits on the current branch::"
+msgstr "      - Die letzten 10 Revisionen des aktuellen Zweigs::"
+
+msgid "          hg log -l 10 -b ."
+msgstr ""
+
+msgid ""
+"      - changesets showing all modifications of a file, including removals::"
+msgstr ""
+
+msgid "          hg log --removed file.c"
+msgstr ""
+
+msgid ""
+"      - all changesets that touch a directory, with diffs, excluding merges::"
+msgstr ""
+"      - Alle Änderungssätze die ein Verzeichnis betreffen, mit diffs ohne\n"
+"        Zusammenführungen::"
+
+msgid "          hg log -Mp lib/"
+msgstr ""
+
+msgid "      - all revision numbers that match a keyword::"
+msgstr "      - Die Nummern von Revisionen, die ein Schlüsselwort beinhalten::"
+
+msgid "          hg log -k bug --template \"{rev}\\n\""
+msgstr ""
+
+msgid "      - check if a given changeset is included is a tagged release::"
+msgstr ""
+
+msgid "          hg log -r \"a21ccf and ancestor(1.9)\""
+msgstr ""
+
+msgid "      - find all changesets by some user in a date range::"
+msgstr "      - Alle Änderungen eines Benutzers innerhalb eines Intervalls::"
+
+msgid "          hg log -k alice -d \"may 2008 to jul 2008\""
+msgstr ""
+
+msgid "      - summary of all changesets after the last tag::"
+msgstr ""
+"      - Zusammenfassung aller Änderungssätze seit dem letzten Etikett::"
+
+msgid ""
+"          hg log -r \"last(tagged())::\" --template \"{desc|firstline}\\n\""
+msgstr ""
+
+msgid ""
+"    See :hg:`help revisions` and :hg:`help revsets` for more about\n"
+"    specifying revisions."
+msgstr ""
+"    Siehe :hg:`help revisions` und :hg:`help revsets` darüber, wie man\n"
+"    Revisionen angeben kann."
+
 msgid "revision to display"
 msgstr "Auszugebende Revision"
 
+msgid "list files from all revisions"
+msgstr "Listet Dateien aller Revisionen"
+
 msgid "[-r REV]"
 msgstr ""
 
+msgid "output the current or given revision of the project manifest"
+msgstr "Gibt das Manifest der angegebenen oder aktuellen Revision aus"
+
+msgid ""
+"    Print a list of version controlled files for the given revision.\n"
+"    If no revision is given, the first parent of the working directory\n"
+"    is used, or the null revision if no revision is checked out."
+msgstr ""
+"    Gibt eine Liste aller Dateien unter Versionskontrolle für die "
+"angegebene\n"
+"    Revision aus. Wenn keine Revision angegeben wird, wird die erste\n"
+"    Vorgängerversion des Arbeitsverzeichnis genutzt oder die Spitze (tip)\n"
+"    falls keine Revision ausgecheckt ist."
+
+msgid ""
+"    With -v, print file permissions, symlink and executable bits.\n"
+"    With --debug, print file revision hashes."
+msgstr ""
+"    Mit dem Schalter -v werden zusätzlich zum Dateinamen auch die Rechte "
+"und\n"
+"    der Dateityp (Verknüpfung/ausführbar) ausgegeben; mit --debug auch noch\n"
+"    die Prüfsumme.\n"
+"    "
+
+msgid ""
+"    If option --all is specified, the list of all files from all revisions\n"
+"    is printed. This includes deleted and renamed files."
+msgstr ""
+
+msgid "can't specify a revision with --all"
+msgstr "Kann nicht eine bestimmte Revision und --all gleichzeitig angeben"
+
 msgid "force a merge with outstanding changes"
 msgstr "Erzwingt einen Merge mit ausstehenden Änderungen"
 
@@ -12294,37 +11329,224 @@
 msgid "review revisions to merge (no merge is performed)"
 msgstr ""
 
-#, fuzzy
 msgid "[-P] [-f] [[-r] REV]"
-msgstr "[-c] [-C] [-d DATUM] [[-r] REV]"
-
-#, fuzzy
+msgstr "[-P] [-f] [[-r] REV]"
+
+msgid "merge working directory with another revision"
+msgstr "Führt das Arbeitsverzeichnis mit einer anderen Revision zusammen"
+
+msgid ""
+"    The current working directory is updated with all changes made in\n"
+"    the requested revision since the last common predecessor revision."
+msgstr ""
+"    Wendet die Änderungen der angegebenen Revision (seit einem gemeinsamen\n"
+"    Vorfahr) im Arbeitsverzeichnis an."
+
+msgid ""
+"    Files that changed between either parent are marked as changed for\n"
+"    the next commit and a commit must be performed before any further\n"
+"    updates to the repository are allowed. The next commit will have\n"
+"    two parents."
+msgstr ""
+"    Dateien, die in sich in einer der beiden Vorgängerversionen änderten\n"
+"    werden als verändert markiert und es muss 'hg commit' ausgeführt bevor\n"
+"    weitere Änderungen durchgeführt werden dürfen. Nach dem Übernehmen hat\n"
+"    die neue Revision zwei Vorfahren."
+
+msgid ""
+"    ``--tool`` can be used to specify the merge tool used for file\n"
+"    merges. It overrides the HGMERGE environment variable and your\n"
+"    configuration files. See :hg:`help merge-tools` for options."
+msgstr ""
+
+msgid ""
+"    If no revision is specified, the working directory's parent is a\n"
+"    head revision, and the current branch contains exactly one other\n"
+"    head, the other head is merged with by default. Otherwise, an\n"
+"    explicit revision with which to merge with must be provided."
+msgstr ""
+"    Wenn keine Revision angegeben wird und der Vorgänger des Arbeits-\n"
+"    verzeichnisses eine Kopfversion eines Zweiges mit genau zwei Köpfen "
+"ist,\n"
+"    dann wird der andere Kopf für die Zusammenführung verwendet.\n"
+"    Bei mehr oder weniger als zwei Köpfen im Zweig muss eine andere "
+"Revision\n"
+"    explizit angegeben werden."
+
+msgid "    :hg:`resolve` must be used to resolve unresolved files."
+msgstr "    Konflikte müssen erst mit :hg:`resolve` gelöst werden."
+
+msgid ""
+"    To undo an uncommitted merge, use :hg:`update --clean .` which\n"
+"    will check out a clean copy of the original merge parent, losing\n"
+"    all changes."
+msgstr ""
+
+msgid ""
+"    Returns 0 on success, 1 if there are unresolved files.\n"
+"    "
+msgstr ""
+"    Gibt 0 bei Erfolg zurück, 1 wenn ungelöste Konflikte auftraten.\n"
+"    "
+
+#, python-format
+msgid "branch '%s' has %d heads - please merge with an explicit rev"
+msgstr "Zweig '%s' hat %d Köpfe - Bitte wähle eine explizite Revision"
+
+msgid "run 'hg heads .' to see heads"
+msgstr ":hg:`heads .` zeigt Köpfe"
+
+#, python-format
+msgid "branch '%s' has one head - please merge with an explicit rev"
+msgstr "Zweig '%s' hat einen Kopf - Bitte wähle eine explizite Revision"
+
+msgid "run 'hg heads' to see all heads"
+msgstr ":hg:`heads .` zeigt alle Köpfe"
+
+msgid "there is nothing to merge"
+msgstr "Es gibt nichts zum Zusammenführen"
+
+#, python-format
+msgid "%s - use \"hg update\" instead"
+msgstr "%s - Nutze \"hg update\" stattdessen"
+
+msgid "working directory not at a head revision"
+msgstr "Arbeitsverzeichnis ist nicht auf Stand der Kopfversion"
+
+msgid "use 'hg update' or merge with an explicit revision"
+msgstr ""
+"Verwende :hg:`update` oder führe mit einer expliziten Revision zusammen"
+
 msgid "a changeset intended to be included in the destination"
-msgstr "Zeigt Änderungssätze, die nicht im Zielarchiv sind"
-
-#, fuzzy
+msgstr "Ein Änderungssatz, den das Ziel einschliessen soll"
+
 msgid "a specific branch you would like to push"
-msgstr "Revision die geholt werden soll"
+msgstr "Revision, die geschoben werden soll"
 
 msgid "[-M] [-p] [-n] [-f] [-r REV]... [DEST]"
 msgstr "[-M] [-p] [-n] [-f] [-r REV]... [ZIEL]"
 
-#, fuzzy
+msgid "show changesets not found in the destination"
+msgstr "Zeigt Änderungssätze, die nicht im Zielarchiv sind"
+
+msgid ""
+"    Show changesets not found in the specified destination repository\n"
+"    or the default push location. These are the changesets that would\n"
+"    be pushed if a push was requested."
+msgstr ""
+"    Zeigt alle Änderungssätze des lokalen Archivs, die nicht im angegebenen\n"
+"    Zielarchiv oder dem Standardziel vorhanden sind. Dies sind genau jene,\n"
+"    die durch ein 'hg push' übertragen werden würden."
+
+msgid "    See pull for details of valid destination formats."
+msgstr "    Siehe Hilfe zu 'pull' für das Format der Zieladresse."
+
+msgid ""
+"    Returns 0 if there are outgoing changes, 1 otherwise.\n"
+"    "
+msgstr ""
+
 msgid "show parents of the specified revision"
 msgstr "Zeigt die Vorgänger der angegeben Revision"
 
 msgid "[-r REV] [FILE]"
 msgstr "[-r REV] [DATEI]"
 
+msgid "show the parents of the working directory or revision"
+msgstr "Zeigt die Vorgänger des Arbeitsverzeichnisses oder einer Revision"
+
+msgid ""
+"    Print the working directory's parent revisions. If a revision is\n"
+"    given via -r/--rev, the parent of that revision will be printed.\n"
+"    If a file argument is given, the revision in which the file was\n"
+"    last changed (before the working directory revision or the\n"
+"    argument to --rev if given) is printed."
+msgstr ""
+"    Gibt die Vorgängerversion(en) des Arbeitsverzeichnisses aus. Bei\n"
+"    Angabe einer Revision via -r/--rev, werden die Vorgänger dieser\n"
+"    Version ausgegeben. Bei Angabe einer Datei wird die Version\n"
+"    ausgegeben, in der diese Datei zuletzt geändert wurde (noch vor der\n"
+"    Version des Arbeitsverzeichnisses oder dem Argument zu --rev falls\n"
+"    angegeben)."
+
+msgid "can only specify an explicit filename"
+msgstr "Ein expliziter Dateiname muss angegeben werden"
+
+#, python-format
+msgid "'%s' not found in manifest!"
+msgstr "'%s' nicht im Manifest gefunden!"
+
 msgid "[NAME]"
 msgstr ""
 
-#, fuzzy
+msgid "show aliases for remote repositories"
+msgstr "Zeigt Adresse für Aliasnamen von entfernten Projektarchiven an"
+
+msgid ""
+"    Show definition of symbolic path name NAME. If no name is given,\n"
+"    show definition of all available names."
+msgstr ""
+"    Zeigt die Adressdefinition des Kurznamens NAME an. Wenn kein Name "
+"gegeben\n"
+"    ist, werden alle Alias-Definitionen angezeigt."
+
+msgid ""
+"    Option -q/--quiet suppresses all output when searching for NAME\n"
+"    and shows only the path names when listing all definitions."
+msgstr ""
+
+msgid ""
+"    Path names are defined in the [paths] section of your\n"
+"    configuration file and in ``/etc/mercurial/hgrc``. If run inside a\n"
+"    repository, ``.hg/hgrc`` is used, too."
+msgstr ""
+"    Kurznamen für entfernte Archive werden im Abschnitt [paths] der\n"
+"    Konfigurationsdatei und ``/etc/mercurial/hgrc`` definiert. Wenn der\n"
+"    Befehl in einem Projektarchiv ausgeführt wird, wird auch die Datei\n"
+"    ``.hg/hgrc`` durchsucht."
+
+msgid ""
+"    The path names ``default`` and ``default-push`` have a special\n"
+"    meaning.  When performing a push or pull operation, they are used\n"
+"    as fallbacks if no location is specified on the command-line.\n"
+"    When ``default-push`` is set, it will be used for push and\n"
+"    ``default`` will be used for pull; otherwise ``default`` is used\n"
+"    as the fallback for both.  When cloning a repository, the clone\n"
+"    source is written as ``default`` in ``.hg/hgrc``.  Note that\n"
+"    ``default`` and ``default-push`` apply to all inbound (e.g.\n"
+"    :hg:`incoming`) and outbound (e.g. :hg:`outgoing`, :hg:`email` and\n"
+"    :hg:`bundle`) operations."
+msgstr ""
+
+msgid "    See :hg:`help urls` for more information."
+msgstr "    Siehe auch :hg:`help urls` für das Format von Adressangaben."
+
+msgid "not found!\n"
+msgstr "nicht gefunden!\n"
+
+#, python-format
+msgid "not updating: %s\n"
+msgstr "aktualisiere nicht: %s\n"
+
+msgid "(run 'hg heads' to see heads, 'hg merge' to merge)\n"
+msgstr ""
+"(\"hg heads\" zeigt alle Köpfe, nutze \"hg merge\" um sie zusammenzuführen)\n"
+
+msgid "(run 'hg heads .' to see heads, 'hg merge' to merge)\n"
+msgstr ""
+"(:hg:`heads` zeigt alle Köpfe, nutze :hg:`merge` um sie zusammenzuführen)\n"
+
+msgid "(run 'hg heads' to see heads)\n"
+msgstr "(:hg:`heads` zeigt alle Köpfe)\n"
+
+msgid "(run 'hg update' to get a working copy)\n"
+msgstr "(führe \"hg update\" aus, um ein Arbeitsverzeichnis zu erstellen)\n"
+
 msgid "update to new branch head if changesets were pulled"
-msgstr "Auf den neuen tip aktualisieren, falls Änderungssätze geholt wurden"
+msgstr "Auf neuen Zweigkopf aktualisieren, falls Änderungssätze geholt wurden"
 
 msgid "run even when remote repository is unrelated"
-msgstr "Auch ausführen wenn das entfernte Projektarchiv keinen Bezug hat"
+msgstr "Auch ausführen, wenn das entfernte Projektarchiv keinen Bezug hat"
 
 msgid "BOOKMARK"
 msgstr "LESEZEICHEN"
@@ -12335,6 +11557,80 @@
 msgid "[-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]"
 msgstr "[-u] [-f] [-r REV]... [-e BEFEHL] [--remotecmd BEFEHL] [QUELLE]"
 
+msgid "pull changes from the specified source"
+msgstr ""
+"Holt Änderungen aus dem angegebenen Projektarchiv\n"
+"\n"
+"    Überträgt Änderungen aus einem entfernten Archiv in das lokale.\n"
+"\n"
+"    Dabei werden alle Änderungen vom Archiv am angegebenen Pfad oder\n"
+"    URL gesucht und dem lokalen Archiv hinzugefügt. Standardmäßig\n"
+"    wird die Kopie des Projektes im Arbeitsverzeichnis nicht aktualisiert.\n"
+"\n"
+"    Um zu sehen, was beim nächsten 'pull' geholt würde, ohne dem Archiv\n"
+"    tatsächlich Änderungen hinzuzufügen, nutze \"hg incoming\". Wenn diese\n"
+"    dann hinzugefügt werden sollen, kann man mit \"pull -r X\" als X der\n"
+"    letzte von incoming gezeigte Änderungssatz angegeben werden.\n"
+"    Ohne Angabe der QUELLE wird standardmäßig der 'default'-Pfad genutzt.\n"
+"    Siehe Hilfe zu 'paths' zu Pfad-Kurznamen und 'urls' für erlaubte\n"
+"    Formate für die Quellangabe.\n"
+"    "
+
+msgid "    Pull changes from a remote repository to a local one."
+msgstr "    Überträgt Änderungen aus einem entfernten Archiv in das lokale."
+
+msgid ""
+"    This finds all changes from the repository at the specified path\n"
+"    or URL and adds them to a local repository (the current one unless\n"
+"    -R is specified). By default, this does not update the copy of the\n"
+"    project in the working directory."
+msgstr ""
+"    Dabei werden alle Änderungen vom Archiv am angegebenen Pfad oder\n"
+"    URL gesucht und dem lokalen Archiv hinzugefügt (das aktuelle, oder das\n"
+"    mit -R gegebene). Standardmäßig wird die Kopie des Projektes im\n"
+"    Arbeitsverzeichnis nicht aktualisiert."
+
+msgid ""
+"    Use :hg:`incoming` if you want to see what would have been added\n"
+"    by a pull at the time you issued this command. If you then decide\n"
+"    to add those changes to the repository, you should use :hg:`pull\n"
+"    -r X` where ``X`` is the last changeset listed by :hg:`incoming`."
+msgstr ""
+"    Um zu sehen, was beim nächsten 'pull' geholt würde, ohne dem Archiv\n"
+"    tatsächlich Änderungen hinzuzufügen, nutze :hg:`incoming`. Wenn diese\n"
+"    dann hinzugefügt werden sollen, kann mit :hg:`pull -r X` als X der\n"
+"    letzte von incoming gezeigte Änderungssatz angegeben werden."
+
+msgid ""
+"    If SOURCE is omitted, the 'default' path will be used.\n"
+"    See :hg:`help urls` for more information."
+msgstr ""
+"    Ohne Angabe der QUELLE wird standardmäßig der 'default'-Pfad genutzt.\n"
+"    Siehe Hilfe zu 'paths' zu Pfad-Kurznamen und 'urls' für erlaubte\n"
+"    Formate für die Quellangabe."
+
+msgid ""
+"    Returns 0 on success, 1 if an update had unresolved files.\n"
+"    "
+msgstr ""
+"    Gibt 0 bei Erfolg zurück, 1 bei Konfliken während der Aktualisierung.\n"
+"    "
+
+#, python-format
+msgid "remote bookmark %s not found!"
+msgstr "Entferntes Lesezeichen %s wurde nicht gefunden!"
+
+msgid ""
+"other repository doesn't support revision lookup, so a rev cannot be "
+"specified."
+msgstr ""
+"Das andere Projektarchiv unterstützt keine Revisionsabfragen, daher kann\n"
+"keine Revision angegeben werden."
+
+#, python-format
+msgid "importing bookmark %s\n"
+msgstr "Importierte Lesezeichen %s\n"
+
 msgid "force push"
 msgstr "Erzwingt Push"
 
@@ -12347,18 +11643,261 @@
 msgid "[-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]"
 msgstr "[-f] [-r REV]... [-e BEFEHL] [--remotecmd BEFEHL] [ZIEL]"
 
+msgid "push changes to the specified destination"
+msgstr ""
+"Überträgt lokale Änderungen in das angegebene Ziel\n"
+"\n"
+"    Dies ist das Gegenteil der 'pull' Operation. Die lokalen Änderungen\n"
+"    des aktuellen Archivs werden in ein anderes übertragen. Bei lokalem\n"
+"    Ziel ist diese Aktion identisch zu einem 'hg pull' von diesem Archiv "
+"zum\n"
+"    aktuellen.\n"
+"\n"
+"    Im Regelfall wird \"hg push\" die Ausführung verweigern, wenn das\n"
+"    Resultat die Anzahl der Kopfversionen im entfernten Archiv erhöht, da\n"
+"    dies normalerweise bedeutet, dass der Nutzer vergessen hat vor der\n"
+"    Übertragung die entfernten Änderungen zu holen und zusammenzuführen.\n"
+"\n"
+"    Bei Nutzung von -r/--rev wird die benannte Revision mit allen "
+"Vorgängern\n"
+"    in das entfernte Archiv übertragen.\n"
+"\n"
+"    Für wichtige Details zu ``ssh://``-URLS kann die URL-Hilfe zu Rate "
+"gezogen\n"
+"    werden. Beim Weglassen des ZIELs wird standardmäßig der 'default'-Pfad\n"
+"    genutzt. Weitere Hilfe gibt unter 'hg help urls'.\n"
+"    "
+
+msgid ""
+"    Push changesets from the local repository to the specified\n"
+"    destination."
+msgstr ""
+"    Überträgt lokale Änderungen in das angegebene Ziel."
+
+msgid ""
+"    This operation is symmetrical to pull: it is identical to a pull\n"
+"    in the destination repository from the current one."
+msgstr ""
+"    Dies ist das Gegenteil der 'pull' Operation. Die lokalen Änderungen\n"
+"    des aktuellen Archivs werden in ein anderes übertragen. Bei lokalem\n"
+"    Ziel ist diese Aktion identisch zu einem 'hg pull' von diesem Archiv "
+"zum\n"
+"    aktuellen."
+
+msgid ""
+"    By default, push will not allow creation of new heads at the\n"
+"    destination, since multiple heads would make it unclear which head\n"
+"    to use. In this situation, it is recommended to pull and merge\n"
+"    before pushing."
+msgstr ""
+"    Im Regelfall wird \"push\" die Ausführung verweigern, wenn das\n"
+"    Resultat die Anzahl der Kopfversionen im entfernten Archiv erhöht, da\n"
+"    dies normalerweise bedeutet, dass der Nutzer vergessen hat, vor der\n"
+"    Übertragung die entfernten Änderungen zu holen und zusammenzuführen."
+
+msgid ""
+"    Use --new-branch if you want to allow push to create a new named\n"
+"    branch that is not present at the destination. This allows you to\n"
+"    only create a new branch without forcing other changes."
+msgstr ""
+"    Der Schalter --new-branch erlaubt es, einen neuen Zweig in das Ziel\n"
+"    zu schieben. Damit kann diese gewünschte Operation erlaubt, aber\n"
+"    jede andere Kopferstellung verboten werden."
+
+msgid ""
+"    Use -f/--force to override the default behavior and push all\n"
+"    changesets on all branches."
+msgstr ""
+"    Nutze -f/--force um diese Vorkehrungen abzuschalten und alle Änderungs-\n"
+"    sätze zu übertragen."
+
+msgid ""
+"    If -r/--rev is used, the specified revision and all its ancestors\n"
+"    will be pushed to the remote repository."
+msgstr ""
+"    Bei Nutzung von -r/--rev wird die benannte Revision mit allen "
+"Vorgängern\n"
+"    in das entfernte Archiv übertragen."
+
+msgid ""
+"    Please see :hg:`help urls` for important details about ``ssh://``\n"
+"    URLs. If DESTINATION is omitted, a default path will be used."
+msgstr ""
+"    Für wichtige Details zu ``ssh://``-URLS kann die URL-Hilfe zu Rate "
+"gezogen\n"
+"    werden. Beim Weglassen des ZIELs wird standardmäßig der 'default'-Pfad\n"
+"    genutzt. Weitere Hilfe gibt unter :hg:`help urls`."
+"    "
+
+msgid ""
+"    Returns 0 if push was successful, 1 if nothing to push.\n"
+"    "
+msgstr ""
+"    Gibt 0 bei Erfolg zurück, 1 wenn nichts übertragen wurde.\n"
+"    "
+
+#, python-format
+msgid "pushing to %s\n"
+msgstr "Übertrage nach %s\n"
+
+#, python-format
+msgid "exporting bookmark %s\n"
+msgstr "Exportiere Lesezeichen %s\n"
+
+#, python-format
+msgid "deleting remote bookmark %s\n"
+msgstr "Lösche entferntes Lesezeichen %s\n"
+
+#, python-format
+msgid "bookmark %s does not exist on the local or remote repository!\n"
+msgstr "Lesezeichen %s existiert weder im lokalen noch im entfernten Archiv!\n"
+
+#, python-format
+msgid "updating bookmark %s failed!\n"
+msgstr "Aktualisieren des Lesezeichens %s fehlgeschlagen!\n"
+
+msgid "roll back an interrupted transaction"
+msgstr "Setzt eine unterbrochene Transaktion zurück"
+
+msgid "    Recover from an interrupted commit or pull."
+msgstr ""
+"    Setzt ein unterbrochenes Übernehmen (commit) oder Abholen (pull) zurück."
+
+msgid ""
+"    This command tries to fix the repository status after an\n"
+"    interrupted operation. It should only be necessary when Mercurial\n"
+"    suggests it."
+msgstr ""
+"    Der ungültige Status durch die Unterbrechung wird repariert. Dies "
+"sollte\n"
+"    nur dann nötig sein, wenn eine Meldung von Mercurial es vorschlägt."
+
+msgid ""
+"    Returns 0 if successful, 1 if nothing to recover or verify fails.\n"
+"    "
+msgstr ""
+
 msgid "record delete for missing files"
 msgstr "Protokolliert die Löschung fehlender Dateien"
 
 msgid "remove (and delete) file even if added or modified"
 msgstr "Entfernt (und löscht) Datei sogar wenn hinzugefügt oder modifiziert"
 
+msgid "remove the specified files on the next commit"
+msgstr "Entfernt die angegebenen Dateien in der nächsten Version"
+
+msgid "    Schedule the indicated files for removal from the current branch."
+msgstr ""
+"    Merkt die benannten Dateien für Entfernung aus dem aktuellen Zweig vor."
+
+msgid ""
+"    This command schedules the files to be removed at the next commit.\n"
+"    To undo a remove before that, see :hg:`revert`. To undo added\n"
+"    files, see :hg:`forget`."
+msgstr ""
+"    Die Dateien werden im Projektarchiv beim nächsten Übernehmen (commit)\n"
+"    entfernt. Um diese Aktion vorher rückgängig zu machen, siehe\n"
+"    :hg:`revert`. Um das Hinzufügen von Dateien rückgängig zu machen, siehe\n"
+"    :hg:`forget`."
+
+msgid ""
+"      -A/--after can be used to remove only files that have already\n"
+"      been deleted, -f/--force can be used to force deletion, and -Af\n"
+"      can be used to remove files from the next revision without\n"
+"      deleting them from the working directory."
+msgstr ""
+"      Option -A/--after kann genutzt werden, um Dateien zu entfernen, die\n"
+"      bereits gelöscht wurden, -f/--force kann genutzt werden, um die\n"
+"      Löschung zu erzwingen. -Af entfernt Dateien aus der nächsten Revision,\n"
+"      ohne sie im Arbeitsverzeichnis zu löschen"
+
+msgid ""
+"      The following table details the behavior of remove for different\n"
+"      file states (columns) and option combinations (rows). The file\n"
+"      states are Added [A], Clean [C], Modified [M] and Missing [!]\n"
+"      (as reported by :hg:`status`). The actions are Warn, Remove\n"
+"      (from branch) and Delete (from disk):"
+msgstr ""
+"      Die folgende Tabelle beschreibt detailliert das Verhalten von 'remove'\n"
+"      für unterschiedliche Dateizustände (Spalten) und Optionskombinationen\n"
+"      (Reihen). Die Dateizustände sind Hinzugefügt (A), Unverändert (C),\n"
+"      Verändert (M) und Fehlend (!) (wie von :hg:`status` angezeigt). Die\n"
+"      Aktionen sind Warnen, Entfernen (aus dem Zweig) und Löschen\n"
+"      (von der Festplatte)::"
+
+msgid ""
+"      ======= == == == ==\n"
+"              A  C  M  !\n"
+"      ======= == == == ==\n"
+"      none    W  RD W  R\n"
+"      -f      R  RD RD R\n"
+"      -A      W  W  W  R\n"
+"      -Af     R  R  R  R\n"
+"      ======= == == == =="
+msgstr ""
+"      ======= == == == ==\n"
+"              A  C  M  !\n"
+"      ======= == == == ==\n"
+"      keine   W  EL W  E\n"
+"      -f      E  EL EL E\n"
+"      -A      W  W  W  E\n"
+"      -Af     E  E  E  E\n"
+"      ======= == == == =="
+
+msgid ""
+"      Note that remove never deletes files in Added [A] state from the\n"
+"      working directory, not even if option --force is specified."
+msgstr ""
+
+msgid ""
+"    Returns 0 on success, 1 if any warnings encountered.\n"
+"    "
+msgstr ""
+"    Gibt 0 bei Erfolg zurück, 1 wenn Warnungen ausgegeben wurden.\n"
+"    "
+
+#, python-format
+msgid "not removing %s: file is untracked\n"
+msgstr "Entferne %s nicht: Datei ist nicht versioniert\n"
+
+#, python-format
+msgid "not removing %s: file still exists (use -f to force removal)\n"
+msgstr "Entferne nicht %s: Datei existiert noch (-f zum Erzwingen)\n"
+
+#, python-format
+msgid "not removing %s: file is modified (use -f to force removal)\n"
+msgstr "Entferne nicht %s: Datei ist verändert (-f zum Erzwingen)\n"
+
+#, python-format
+msgid "not removing %s: file has been marked for add (use forget to undo)\n"
+msgstr "Entferne nicht %s: Datei soll hinzugefügt werden (:hg:`forget` um dies rückgängig zu machen)\n"
+
 msgid "record a rename that has already occurred"
 msgstr ""
 
 msgid "[OPTION]... SOURCE... DEST"
 msgstr "[OPTION]... QUELLE... ZIEL"
 
+msgid "rename files; equivalent of copy + remove"
+msgstr "Benennt Dateien um; Äquivalent zu \"copy\" und \"remove\""
+
+msgid ""
+"    Mark dest as copies of sources; mark sources for deletion. If dest\n"
+"    is a directory, copies are put in that directory. If dest is a\n"
+"    file, there can only be one source."
+msgstr ""
+"    Erstellt das Ziel als neue Datei mit der Versionshistorie der Quelle.\n"
+"    Die Quelle wird ausserdem als gelöscht markiert. Wenn mehrere Quellen\n"
+"    angegeben sind, muss das Ziel ein Verzeichnis sein."
+
+msgid ""
+"    This command takes effect at the next commit. To undo a rename\n"
+"    before that, see :hg:`revert`."
+msgstr ""
+"    Die Umbenennung hat wie üblich keinn sofortigen Effekt, sondern ist\n"
+"    als lokale Änderung vorgemerkt. Die Umbenennung kann durch :hg:`revert`\n"
+"    rückgängig gemacht werden."
+
 msgid "select all unresolved files"
 msgstr "Wählt alle konfliktbehafteten Dateien aus"
 
@@ -12368,29 +11907,298 @@
 msgid "mark files as resolved"
 msgstr "Markiert eine Datei als konfliktfrei"
 
-#, fuzzy
 msgid "mark files as unresolved"
-msgstr "Markiert eine Datei als konfliktfrei"
+msgstr "Markiert eine Datei als konfliktbehaftet"
 
 msgid "hide status prefix"
 msgstr "Versteckt das Status-Präfix"
 
+msgid "redo merges or set/view the merge status of files"
+msgstr ""
+"Macht Zusammenführungen rückgängig oder setzt/zeigt den "
+"Zusammenführungsstatus einer Datei"
+
+msgid ""
+"    Merges with unresolved conflicts are often the result of\n"
+"    non-interactive merging using the ``internal:merge`` configuration\n"
+"    setting, or a command-line merge tool like ``diff3``. The resolve\n"
+"    command is used to manage the files involved in a merge, after\n"
+"    :hg:`merge` has been run, and before :hg:`commit` is run (i.e. the\n"
+"    working directory must have two parents)."
+msgstr ""
+
+msgid "    The resolve command can be used in the following ways:"
+msgstr ""
+
+msgid ""
+"    - :hg:`resolve [--tool TOOL] FILE...`: attempt to re-merge the "
+"specified\n"
+"      files, discarding any previous merge attempts. Re-merging is not\n"
+"      performed for files already marked as resolved. Use ``--all/-a``\n"
+"      to select all unresolved files. ``--tool`` can be used to specify\n"
+"      the merge tool used for the given files. It overrides the HGMERGE\n"
+"      environment variable and your configuration files.  Previous file\n"
+"      contents are saved with a ``.orig`` suffix."
+msgstr ""
+
+msgid ""
+"    - :hg:`resolve -m [FILE]`: mark a file as having been resolved\n"
+"      (e.g. after having manually fixed-up the files). The default is\n"
+"      to mark all unresolved files."
+msgstr ""
+
+msgid ""
+"    - :hg:`resolve -u [FILE]...`: mark a file as unresolved. The\n"
+"      default is to mark all resolved files."
+msgstr ""
+
+msgid ""
+"    - :hg:`resolve -l`: list files which had or still have conflicts.\n"
+"      In the printed list, ``U`` = unresolved and ``R`` = resolved."
+msgstr ""
+
+msgid ""
+"    Note that Mercurial will not let you commit files with unresolved\n"
+"    merge conflicts. You must use :hg:`resolve -m ...` before you can\n"
+"    commit after a conflicting merge."
+msgstr ""
+
+msgid ""
+"    Returns 0 on success, 1 if any files fail a resolve attempt.\n"
+"    "
+msgstr ""
+
+msgid "too many options specified"
+msgstr "Zu viele Optionen angegeben"
+
+msgid "can't specify --all and patterns"
+msgstr "Verwende nicht --all gleichzeitig mit einem Dateimuster"
+
+msgid "no files or directories specified; use --all to remerge all files"
+msgstr "Keine Dateien oder Verzeichnisse angegeben; nutze --all für alle"
+
 msgid "revert all changes when no arguments given"
-msgstr "Nimmt alle Änderungen zurück (wenn ohne andere Parameter aufgerufen)"
+msgstr "Nimmt (ohne andere Parameter) alle Änderungen zurück"
 
 msgid "tipmost revision matching date"
 msgstr "dem tip nächste Revision mit passendem Datum"
 
-#, fuzzy
 msgid "revert to the specified revision"
-msgstr "Annotiert die angegebene Revision"
+msgstr "Geht bis zur angegebene Revision zurück"
 
 msgid "do not save backup copies of files"
-msgstr "Keine Sicherheitskopien (.orig) anlegen"
+msgstr "Keine Sicherheitskopie (.orig) anlegen"
 
 msgid "[OPTION]... [-r REV] [NAME]..."
 msgstr ""
 
+msgid "restore files to their checkout state"
+msgstr ""
+"Setzt gegebene Dateien oder Verzeichnisse auf frühere Version zurück"
+
+msgid ""
+"    .. note::\n"
+"       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"
+"       Um das Arbeitsverzeichnis auf eine ältere Version zu setzen, nutze\n"
+"       :hg:`update REV`. Um eine nicht übernommene Zusammenführung "
+"rückgängig\n"
+"       zu machen, nutze :hg:`update --clean .`."
+
+msgid ""
+"    With no revision specified, revert the specified files or directories\n"
+"    to the contents they had in the parent of the working directory.\n"
+"    This restores the contents of files to an unmodified\n"
+"    state and unschedules adds, removes, copies, and renames. If the\n"
+"    working directory has two parents, you must explicitly specify a\n"
+"    revision."
+msgstr ""
+"    Ohne gegebene Revision wird der Inhalt der benannten Dateien oder\n"
+"    Verzeichnisse auf die Vorgängerversion zurückgesetzt. Die betroffenen\n"
+"    Dateien gelten danach wieder als unmodifiziert und nicht übernommene\n"
+"    Hinzufügungen, Entfernungen, Kopien und Umbenennungen werden vergessen.\n"
+"    Falls das Arbeitsverzeichnis zwei Vorgänger hat, muss eine Revision\n"
+"    explizit angegeben werden."
+
+msgid ""
+"    Using the -r/--rev or -d/--date options, revert the given files or\n"
+"    directories to their states as of a specific revision. Because\n"
+"    revert does not change the working directory parents, this will\n"
+"    cause these files to appear modified. This can be helpful to \"back\n"
+"    out\" some or all of an earlier change. See :hg:`backout` for a\n"
+"    related method."
+msgstr ""
+"    Mit der -r/--rev oder der -d/--date Option werden die Dateien oder\n"
+"    Verzeichnisse auf die gegebene Revision zurückgesetzt. Da 'revert' aber\n"
+"    nicht die mit dem Arbeitsverzeichnis assoziierte Revisionsnummer ändert,\n"
+"    gelten die betroffenen Dateien dann als modifiziert. Damit kann man\n"
+"    ungewollte aber bereits übernommene Änderungen rückgängig machen. Siehe\n"
+"    auch :hg:`backout` für eine ähnliche Methode."
+
+msgid ""
+"    Modified files are saved with a .orig suffix before reverting.\n"
+"    To disable these backups, use --no-backup."
+msgstr ""
+"    Modifizierte Dateien werden vor der Änderung mit der Endung .orig\n"
+"    gespeichert. Um dieses Backup zu verhindern, verwende --no-backup."
+
+msgid "you can't specify a revision and a date"
+msgstr "ungültige Angabe von Revision und Datum gleichzeitig"
+
+msgid "uncommitted merge with no revision specified"
+msgstr ""
+"Nicht übernommene Zusammenführung - bitte gib eine bestimmte Revision an"
+
+msgid "use \"hg update\" or see \"hg help revert\""
+msgstr "Verwende :h:`update` oder lies :h:`help revert`"
+
+msgid "no files or directories specified"
+msgstr "Keine Dateien order Verzeichnisse angegeben"
+
+msgid ""
+"uncommitted merge, use --all to discard all changes, or 'hg update -C .' to "
+"abort the merge"
+msgstr ""
+"Nicht übernommene Zusammenführung - nutze --all um alle Änderungen eines "
+"Vorgängers zu vergessen, oder :hg:`update -C .` um die Zusammenführung nicht "
+"durchzuführen"
+
+#, python-format
+msgid ""
+"uncommitted changes, use --all to discard all changes, or 'hg update %s' to "
+"update"
+msgstr ""
+"Ausstehende nicht versionierte Änderungen - nutze -all um alle Änderungen zu "
+"verwerfen, oder :hg:`update %s` zum Aktualisieren"
+
+#, python-format
+msgid "use --all to revert all files, or 'hg update %s' to update"
+msgstr ""
+
+msgid "uncommitted changes, use --all to discard all changes"
+msgstr ""
+"Ausstehende nicht versionierte Änderungen - nutze -all um alle Änderungen zu "
+"verwerfen"
+
+msgid "use --all to revert all files"
+msgstr "nutze -all, um alle Dateien zurückzusetzen"
+
+#, python-format
+msgid "forgetting %s\n"
+msgstr "vergesse: %s\n"
+
+#, python-format
+msgid "reverting %s\n"
+msgstr "setze zurück: %s\n"
+
+#, python-format
+msgid "undeleting %s\n"
+msgstr "stelle wieder her: %s\n"
+
+#, python-format
+msgid "saving current version of %s as %s\n"
+msgstr "speichere aktuelle Version von %s als %s\n"
+
+#, python-format
+msgid "file not managed: %s\n"
+msgstr "Datei nicht unter Versionskontrolle: %s\n"
+
+#, python-format
+msgid "no changes needed to %s\n"
+msgstr "keine Änderungen notwendig für %s\n"
+
+msgid "ignore safety measures"
+msgstr ""
+
+msgid "roll back the last transaction (dangerous)"
+msgstr "Rollt die letzte Transaktion zurück (gefährlich!)"
+
+msgid ""
+"    This command should be used with care. There is only one level of\n"
+"    rollback, and there is no way to undo a rollback. It will also\n"
+"    restore the dirstate at the time of the last transaction, losing\n"
+"    any dirstate changes since that time. This command does not alter\n"
+"    the working directory."
+msgstr ""
+"    Dieser Befehl muss mit Vorsicht verwendet werden. Es gibt keine ver-\n"
+"    schachtelten Transaktionen und ein Rückrollen kann selber nicht "
+"rückgängig\n"
+"    gemacht werden. Der aktuelle Status (dirstate) im .hg Verzeichnis wird\n"
+"    auf die letzte Transaktion zurückgesetzt. Neuere Änderungen gehen damit\n"
+"    verloren."
+
+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 ""
+"    Transaktionen werden verwendet um den Effekt aller Befehle, die "
+"Änderungs-\n"
+"    sätze erstellen oder verteilen, zu kapseln. Die folgenden Befehle\n"
+"    werden durch Transaktionen geschützt und können zurückgerollt werden:"
+
+msgid ""
+"    - commit\n"
+"    - import\n"
+"    - pull\n"
+"    - push (with this repository as the destination)\n"
+"    - unbundle"
+msgstr ""
+"    - commit\n"
+"    - import\n"
+"    - pull\n"
+"    - push (mit diesem Archiv als Ziel)\n"
+"    - unbundle"
+
+msgid ""
+"    It's possible to lose data with rollback: commit, update back to\n"
+"    an older changeset, and then rollback. The update removes the\n"
+"    changes you committed from the working directory, and rollback\n"
+"    removes them from history. To avoid data loss, you must pass\n"
+"    --force in this case."
+msgstr ""
+"    Es gibt die Möglichkeit durch das Zurückrollen Daten zu verlieren, z.B.\n"
+"    die Übernahme neuer Änderungen (commit) gefolgt von einer Aktualisierung\n"
+"    auf eine andere Revision und einem Zurückrollen der Übernahme.\n"
+"    Damit dies nicht aus Versehen passiert, wird in diesem Falle --force als\n"
+"    Parameter gefordert."
+
+msgid ""
+"    This command is not intended for use on public repositories. Once\n"
+"    changes are visible for pull by other users, rolling a transaction\n"
+"    back locally is ineffective (someone else may already have pulled\n"
+"    the changes). Furthermore, a race is possible with readers of the\n"
+"    repository; for example an in-progress pull from the repository\n"
+"    may fail if a rollback is performed."
+msgstr ""
+"    Dieser Befehl ist nicht für öffentliche Archive gedacht. Sobald "
+"Änderungen\n"
+"    für Andere sichtbar sind ist ein Zurückrollen unnütz, da jemand sie "
+"bereits\n"
+"    zu sich übertragen haben könnte. Weiterhin entsteht eine "
+"Wettlaufsituation,\n"
+"    wenn beispielsweise ein Zurückrollen ausgeführt wird, während jemand "
+"anders\n"
+"    ein 'pull' ausführt."
+
+msgid ""
+"    Returns 0 on success, 1 if no rollback data is available.\n"
+"    "
+msgstr ""
+"    Gibt 0 bei Erfolg zurück, 1 wenn kein Transaktionsprotokoll gefunden "
+"wird.\n"
+"    "
+
+msgid "print the root (top) of the current working directory"
+msgstr "Gibt die Wurzel (top) des aktuellen Arbeitsverzeichnisses aus"
+
+msgid "    Print the root directory of the current repository."
+msgstr ""
+"    Gibt das Wurzelverzeichnis des aktuellen Arbeitsverzeichnisses aus."
+
 msgid "name of access log file to write to"
 msgstr "Name der Zugriffs-Logdatei"
 
@@ -12403,12 +12211,12 @@
 msgid "port to listen on (default: 8000)"
 msgstr "Port auf dem gehorcht wird (Standard: 8000)"
 
-msgid "ADDR"
-msgstr ""
-
 msgid "address to listen on (default: all interfaces)"
 msgstr "Adresse auf der gehorcht wird (Standard: alle Schnittstellen)"
 
+msgid "ADDR"
+msgstr ""
+
 msgid "prefix path to serve from (default: server root)"
 msgstr "Pfadpräfix von dem ausgeliefert wird (Standard: Serverwurzel '/')"
 
@@ -12416,10 +12224,9 @@
 msgstr ""
 "Name der auf der Webseite angezeigt wird (Standard: Arbeitsverzeichnis)"
 
-#, fuzzy
 msgid "name of the hgweb config file (see \"hg help hgweb\")"
 msgstr ""
-"Name der webdir-Konfigurationsdatei (mehr als ein Projektarchiv ausliefern)"
+"Name der hgweb-Konfigurationsdatei (siehe :hg:`help hgweb`)"
 
 msgid "name of the hgweb config file (DEPRECATED)"
 msgstr ""
@@ -12439,14 +12246,86 @@
 msgid "SSL certificate file"
 msgstr "SSL-Zertifikatsdatei"
 
+msgid "start stand-alone webserver"
+msgstr "Startet einen eigenständigen Webserver"
+
+msgid ""
+"    Start a local HTTP repository browser and pull server. You can use\n"
+"    this for ad-hoc sharing and browsing of repositories. It is\n"
+"    recommended to use a real web server to serve a repository for\n"
+"    longer periods of time."
+msgstr ""
+
+msgid ""
+"    Please note that the server does not implement access control.\n"
+"    This means that, by default, anybody can read from the server and\n"
+"    nobody can write to it by default. Set the ``web.allow_push``\n"
+"    option to ``*`` to allow everybody to push to the server. You\n"
+"    should use a real web server if you need to authenticate users."
+msgstr ""
+
+msgid ""
+"    By default, the server logs accesses to stdout and errors to\n"
+"    stderr. Use the -A/--accesslog and -E/--errorlog options to log to\n"
+"    files."
+msgstr ""
+"    Standardmäßig schreibt der Server Zugriffe auf die Standardausgabe\n"
+"    und Fehler auf die Standardfehlerausgabe. Nutze die Optionen \n"
+"    -A/--accesslog und -E/--errorlog, um die Ausgabe in Dateien umzulenken."
+
+msgid ""
+"    To have the server choose a free port number to listen on, specify\n"
+"    a port number of 0; in this case, the server will print the port\n"
+"    number it uses."
+msgstr ""
+
+msgid "cannot use --stdio with --cmdserver"
+msgstr "--stdio und --cmdserver können nicht gleichzeitig verwendet werden"
+
+msgid "There is no Mercurial repository here (.hg not found)"
+msgstr "Es gibt hier kein Mercurial-Archiv (.hg nicht vorhanden)"
+
+#, python-format
+msgid "listening at http://%s%s/%s (bound to %s:%d)\n"
+msgstr "Höre auf http://%s%s/%s (gebunden an %s:%d)\n"
+
 msgid "show untrusted configuration options"
 msgstr ""
 
 msgid "[-u] [NAME]..."
 msgstr ""
 
-msgid "check for push and pull"
-msgstr ""
+msgid "show combined config settings from all hgrc files"
+msgstr "Zeigt die kombinierten Konfigurationswerte aller hgrc-Dateien an"
+
+msgid "    With no arguments, print names and values of all config items."
+msgstr ""
+"    Ohne Argumente werden die Namen und Werte aller Konfigurationseinträge\n"
+"    angezeigt."
+
+msgid ""
+"    With one argument of the form section.name, print just the value\n"
+"    of that config item."
+msgstr ""
+"    Mit einem Argument der Form sektion.name wird nur der Wert dieses\n"
+"    Konfigurationseintrages angezeigt."
+
+msgid ""
+"    With multiple arguments, print names and values of all config\n"
+"    items with matching section names."
+msgstr ""
+"    Mit mehreren Argumenten werden die Namen und Werte aller passenden\n"
+"    Konfigurationseinträge angezeigt."
+
+msgid ""
+"    With --debug, the source (filename and line number) is printed\n"
+"    for each config item."
+msgstr ""
+"    Mit dem --debug Schalter wird der Dateiname und die Zeilennummer der\n"
+"    Definitionsquelle mit jedem Eintrag ausgegeben."
+
+msgid "only one config item permitted"
+msgstr "Nur ein Konfigurationseintrag ist erlaubt"
 
 msgid "show status of all files"
 msgstr "Zeigt den Status aller Dateien"
@@ -12478,13 +12357,231 @@
 msgid "show difference from revision"
 msgstr "Zeigt die Unterschiede zu einer Revision"
 
-#, fuzzy
 msgid "list the changed files of a revision"
-msgstr "Mindestens ein paar Revisionen sind benötigt"
-
-#, fuzzy
+msgstr "Listet geänderte Dateien einer Revision"
+
+msgid "show changed files in the working directory"
+msgstr "Zeigt geänderte Dateien im Arbeitsverzeichnis"
+
+msgid ""
+"    Show status of files in the repository. If names are given, only\n"
+"    files that match are shown. Files that are clean or ignored or\n"
+"    the source of a copy/move operation, are not listed unless\n"
+"    -c/--clean, -i/--ignored, -C/--copies or -A/--all are given.\n"
+"    Unless options described with \"show only ...\" are given, the\n"
+"    options -mardu are used."
+msgstr ""
+"    Zeigt den Status von Dateien im Archiv an. Wenn eine Name übergeben\n"
+"    wird, werden nur zutreffende Dateien angezeigt. Es werden keine Dateien\n"
+"    angezeigt die unverändert, ignoriert oder Quelle einer Kopier- oder\n"
+"    Verschiebe Operation sind, es sei denn -c/--clean (unverändert),\n"
+"    -i/--ignored (ignoriert), -C/--copies (Kopien) oder -A/--all (alle)\n"
+"    wurde angegeben. Außer bei Angabe von Optionen, die mit \"Zeigt\n"
+"    nur ...\" beschrieben werden, werden die Optionen -mardu genutzt."
+
+msgid ""
+"    Option -q/--quiet hides untracked (unknown and ignored) files\n"
+"    unless explicitly requested with -u/--unknown or -i/--ignored."
+msgstr ""
+"    Die Option -q/--quiet blendet unüberwachte (unbekannte und ignorierte)\n"
+"    Dateien aus, es sei denn sie werden explizit mit -u/--unknown oder \n"
+"    -i/--ignored angefordert."
+
+msgid ""
+"    .. note::\n"
+"       status may appear to disagree with diff if permissions have\n"
+"       changed or a merge has occurred. The standard diff format does\n"
+"       not report permission changes and diff only reports changes\n"
+"       relative to one merge parent."
+msgstr ""
+"    .. note:\n"
+"       Der Status kann sich vom Diff unterscheiden, wenn sich Berechtigungen\n"
+"       geändert haben oder eine Zusammenführung durchgeführt wurde. Das\n"
+"       Standard-Diff-Format zeigt keine Berechtigungsänderungen an und\n"
+"       'diff' zeigt nur Änderungen relativ zu einer Vorgängerversion einer\n"
+"       Zusammenführung an."
+
+msgid ""
+"    If one revision is given, it is used as the base revision.\n"
+"    If two revisions are given, the differences between them are\n"
+"    shown. The --change option can also be used as a shortcut to list\n"
+"    the changed files of a revision from its first parent."
+msgstr ""
+"    Bei Angabe einer Revision wird diese als Basisrevision genutzt.\n"
+"    Bei Angabe zweier Revisionen werden die Unterschiede zwischen diesen\n"
+"    beiden gezeigt. Die -c/--change Option kann verwendet werden, um\n"
+"    die Änderungen einer Revision (relativ zu dessen Vorgänger) zu zeigen."
+
+msgid "    The codes used to show the status of files are::"
+msgstr "    Die Zeichen, die den Status anzeigen, bedeuten::"
+
+msgid ""
+"      M = modified\n"
+"      A = added\n"
+"      R = removed\n"
+"      C = clean\n"
+"      ! = missing (deleted by non-hg command, but still tracked)\n"
+"      ? = not tracked\n"
+"      I = ignored\n"
+"        = origin of the previous file listed as A (added)"
+msgstr ""
+"      M = modifiziert\n"
+"      A = hinzugefügt (added)\n"
+"      R = entfernt (removed)\n"
+"      C = unverändert (clean)\n"
+"      ! = verschwunden (nicht durch einen hg-Befehl gelöscht, aber immer\n"
+"          noch überwacht)\n"
+"      ? = nicht überwacht\n"
+"      I = ignoriert\n"
+"        = die zuvor hinzugefügt Datei (A) wurde von hier kopiert"
+
+msgid "      - show changes in the working directory relative to a changeset:"
+msgstr ""
+"      - zeigt Änderungen zwischen dem Arbeitsverzeichnis und einer Revision:"
+
+msgid "          hg status --rev 9353"
+msgstr ""
+
+msgid "      - show all changes including copies in an existing changeset::"
+msgstr ""
+
+msgid "          hg status --copies --change 9353"
+msgstr ""
+
+msgid "      - get a NUL separated list of added files, suitable for xargs::"
+msgstr ""
+
+msgid "          hg status -an0"
+msgstr ""
+
+msgid "check for push and pull"
+msgstr ""
+
+msgid "summarize working directory state"
+msgstr "Fasst den Status des Arbeitsverzeichnisses zusammen"
+
+msgid ""
+"    This generates a brief summary of the working directory state,\n"
+"    including parents, branch, commit status, and available updates."
+msgstr ""
+
+msgid ""
+"    With the --remote option, this will check the default paths for\n"
+"    incoming and outgoing changes. This can be time-consuming."
+msgstr ""
+
+#, python-format
+msgid "parent: %d:%s "
+msgstr "Vorgänger: %d:%s "
+
+msgid " (empty repository)"
+msgstr " (leeres Archiv)"
+
+msgid " (no revision checked out)"
+msgstr " (keine Revision geladen)"
+
+#, python-format
+msgid "branch: %s\n"
+msgstr "Zweig: %s\n"
+
+msgid "bookmarks:"
+msgstr "Lesezeichen:"
+
+#, python-format
+msgid "%d modified"
+msgstr "%d modifiziert"
+
+#, python-format
+msgid "%d added"
+msgstr "%d hinzugefügt"
+
+#, python-format
+msgid "%d removed"
+msgstr "%d entfernt"
+
+#, python-format
+msgid "%d renamed"
+msgstr "%d umbenannt"
+
+#, python-format
+msgid "%d copied"
+msgstr "%d kopiert"
+
+#, python-format
+msgid "%d deleted"
+msgstr "%d gelöscht"
+
+#, python-format
+msgid "%d unknown"
+msgstr "%d unbekannt"
+
+#, python-format
+msgid "%d ignored"
+msgstr "%d ignoriert"
+
+#, python-format
+msgid "%d unresolved"
+msgstr "%d konfliktbehaftet"
+
+#, python-format
+msgid "%d subrepos"
+msgstr "%d Unterarchive"
+
+msgid " (merge)"
+msgstr "(Zusammenführung)"
+
+msgid " (new branch)"
+msgstr "(neuer Zeig)"
+
+msgid " (head closed)"
+msgstr " (Köpfe geschlossen)"
+
+msgid " (clean)"
+msgstr ""
+
+msgid " (new branch head)"
+msgstr ""
+
+#, python-format
+msgid "commit: %s\n"
+msgstr "Übernehme: %s\n"
+
+msgid "update: (current)\n"
+msgstr "Aktualisiere: (aktuell)\n"
+
+#, python-format
+msgid "update: %d new changesets (update)\n"
+msgstr "Aktualisiere: %d neue Änderungssätze (Aktualisierung)\n"
+
+#, python-format
+msgid "update: %d new changesets, %d branch heads (merge)\n"
+msgstr ""
+"Aktualisiere: %d neue Änderungssätze, %d neue Zweigköpfe (Zusammenführung)\n"
+
+msgid "1 or more incoming"
+msgstr ""
+
+#, python-format
+msgid "%d outgoing"
+msgstr ""
+
+#, python-format
+msgid "%d incoming bookmarks"
+msgstr "%d eingehende Lesezeichen"
+
+#, python-format
+msgid "%d outgoing bookmarks"
+msgstr "%d ausgehende Lesezeichen"
+
+#, python-format
+msgid "remote: %s\n"
+msgstr "Entfernt: %s\n"
+
+msgid "remote: (synced)\n"
+msgstr "Entfernt: (synchonisiert)\n"
+
 msgid "force tag"
-msgstr "erzwinge"
+msgstr "erzwinge Etikett"
 
 msgid "make the tag local"
 msgstr "Tag wird nur lokal gesetzt"
@@ -12498,40 +12595,304 @@
 msgid "use <text> as commit message"
 msgstr "Nutzt <Text> als Commit-Nachricht"
 
-#, fuzzy
 msgid "[-f] [-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME..."
-msgstr "[-l] [-m TEXT] [-d DATUM] [-u BENUTZER] [-r REV] NAME..."
+msgstr "[-f] [-l] [-m TEXT] [-d DATUM] [-u BENUTZER] [-r REV] NAME..."
+
+msgid "add one or more tags for the current or given revision"
+msgstr ""
+"Setze ein oder mehrere Etiketten für die aktuelle oder gegebene Revision"
+
+msgid "    Name a particular revision using <name>."
+msgstr "    Benennt eine bestimmte Revision mit <name>."
+
+msgid ""
+"    Tags are used to name particular revisions of the repository and are\n"
+"    very useful to compare different revisions, to go back to significant\n"
+"    earlier versions or to mark branch points as releases, etc. Changing\n"
+"    an existing tag is normally disallowed; use -f/--force to override."
+msgstr ""
+"    Etiketten sind nützlich um somit benannte Revisionen später in "
+"Vergleichen\n"
+"    zu verwenden, in der Historie dorthin zurückzugehen oder wichtige "
+"Zweig-\n"
+"    stellen zu markieren. Daher sind Änderungen existierender Etiketten\n"
+"    normalerweise verboten, können aber mit -f/--force erzwungen werden."
+
+msgid ""
+"    If no revision is given, the parent of the working directory is\n"
+"    used, or tip if no revision is checked out."
+msgstr ""
+"    Wenn keine Revision angegeben ist, wird der Vorgänger des Arbeits-\n"
+"    verzeichnisses (oder - falls keines existiert - die Spitze) benannt."
+
+msgid ""
+"    To facilitate version control, distribution, and merging of tags,\n"
+"    they are stored as a file named \".hgtags\" which is managed similarly\n"
+"    to other project files and can be hand-edited if necessary. This\n"
+"    also means that tagging creates a new commit. The file\n"
+"    \".hg/localtags\" is used for local tags (not shared among\n"
+"    repositories)."
+msgstr ""
+"    Um die Versionskontrolle, Verteilung und Zusammenführung von Etiketten\n"
+"    möglich zu machen, werden sie in einer Datei '.hgtags' gespeichert, "
+"welche\n"
+"    zusammen mit den anderen Projektdateien überwacht wird und manuell\n"
+"    bearbeitet werden kann. Das bedeutet, dass Etikettierung automatisch\n"
+"    eine neue Revision übernimmt. Lokale Etiketten (nicht mit anderen\n"
+"    Archiven geteilt) liegen in der Datei .hg/localtags."
+
+msgid ""
+"    Tag commits are usually made at the head of a branch. If the parent\n"
+"    of the working directory is not a branch head, :hg:`tag` aborts; use\n"
+"    -f/--force to force the tag commit to be based on a non-head\n"
+"    changeset."
+msgstr ""
+
+msgid ""
+"    Since tag names have priority over branch names during revision\n"
+"    lookup, using an existing branch name as a tag name is discouraged."
+msgstr ""
+
+msgid "tag names must be unique"
+msgstr "Etikettnamen müssen einzigartig sein"
+
+msgid "tag names cannot consist entirely of whitespace"
+msgstr "Gegebener Etikettname ist leer"
+
+msgid "--rev and --remove are incompatible"
+msgstr "Die Optionen --rev und --remove sind inkompatibel"
+
+#, python-format
+msgid "tag '%s' does not exist"
+msgstr "Etikett '%s' existiert nicht"
+
+#, python-format
+msgid "tag '%s' is not a global tag"
+msgstr "Etikett '%s' ist nicht global"
+
+#, python-format
+msgid "tag '%s' is not a local tag"
+msgstr "Etikett '%s' ist nicht lokal"
+
+#, python-format
+msgid "tag '%s' already exists (use -f to force)"
+msgstr "Etikett '%s' existiert bereits; erzwinge mit -f/--force"
+
+msgid "uncommitted merge"
+msgstr "Ausstehende nicht versionierte Zusammenführung"
+
+msgid "not at a branch head (use -f to force)"
+msgstr "Nicht auf einem Zweigkopf - erzwinge mit -f/--force"
+
+msgid "list repository tags"
+msgstr "Liste alle Etiketten des Archivs auf"
+
+msgid ""
+"    This lists both regular and local tags. When the -v/--verbose\n"
+"    switch is used, a third column \"local\" is printed for local tags."
+msgstr ""
+"    Listet sowohl reguläre wie auch lokale Etiketten auf. Mit dem Schalter\n"
+"    -v/--verbose werden lokale in einer dritten Spalte als solche markiert."
 
 msgid "[-p] [-g]"
 msgstr ""
 
-#, fuzzy
+msgid "show the tip revision"
+msgstr "Zeigt die zuletzt übernommene Revision"
+
+msgid ""
+"    The tip revision (usually just called the tip) is the changeset\n"
+"    most recently added to the repository (and therefore the most\n"
+"    recently changed head)."
+msgstr ""
+"    Die Spitze (tip) bezeichnet den zuletzt hinzugefügten Änderungssatz und\n"
+"    damit den zuletzt geänderten Kopf."
+
+msgid ""
+"    If you have just made a commit, that commit will be the tip. If\n"
+"    you have just pulled changes from another repository, the tip of\n"
+"    that repository becomes the current tip. The \"tip\" tag is special\n"
+"    and cannot be renamed or assigned to a different changeset."
+msgstr ""
+"    Nach einem Übernehmen mit commit wird die neue Revision die Spitze.\n"
+"    Nach einem Holen mit pull wird die Spitze des anderen Archives\n"
+"    übernommen. Als Etikettname ist \"tip\" ein Spezialfall und kann nicht\n"
+"    umbenannt oder manuell einem anderen Änderungssatz angehängt werden."
+
 msgid "update to new branch head if changesets were unbundled"
-msgstr "aktualisiere auf den neuen tip when Änderungssätze entpackt wurden"
+msgstr "aktualisiere auf den neuen Zweigkopf when Änderungssätze entpackt wurden"
 
 msgid "[-u] FILE..."
 msgstr "[-u] DATEI..."
 
+msgid "apply one or more changegroup files"
+msgstr "Wendet eine oder mehrere Änderungsgruppendateien an"
+
+msgid ""
+"    Apply one or more compressed changegroup files generated by the\n"
+"    bundle command."
+msgstr ""
+"    Die angegebenen Dateien müssen komprimierte Änderungsgruppen enthalten,\n"
+"    wie sie durch den Befehl 'bundle' erzeugt werden."
+
+msgid ""
+"    Returns 0 on success, 1 if an update has unresolved files.\n"
+"    "
+msgstr ""
+
 msgid "discard uncommitted changes (no backup)"
 msgstr "entferne nicht versionierte Änderungen (kein Backup)"
 
-#, fuzzy
 msgid "update across branches if no uncommitted changes"
-msgstr "Ausstehende nicht versionierte Änderungen"
+msgstr "Aktualisiere auf anderen Zweig (falls keine unversionierte Änderungen ausstehen)"
 
 msgid "[-c] [-C] [-d DATE] [[-r] REV]"
 msgstr "[-c] [-C] [-d DATUM] [[-r] REV]"
 
-#, fuzzy, python-format
+msgid "update working directory (or switch revisions)"
+msgstr "Aktualisiert das Arbeitsverzeichnis (oder wechselt die Version)"
+
+msgid ""
+"    Update the repository's working directory to the specified\n"
+"    changeset. If no changeset is specified, update to the tip of the\n"
+"    current named branch."
+msgstr ""
+"    Hebt das Arbeitsverzeichnis auf die angegebene Revision an. Ohne\n"
+"    Angabe einer Revision wird der Spitze des aktuellen Zweigs gewählt."
+
+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 ""
+"    Die gegebene Revision wird die Vorgängerversion des Arbeits-\n"
+"    verzeichnisses (siehe :hg:`help parents`)."
+
+msgid ""
+"    The following rules apply when the working directory contains\n"
+"    uncommitted changes:"
+msgstr ""
+"    Wenn die Arbeitskopie nicht übernommene Änderungen enthält, wird nach\n"
+"    folgenden Regeln vorgegangen:"
+
+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. Falls weder -c/--check noch -C/--clean angegeben ist und das\n"
+"       Ziel der Aktualisierung ein Vor- oder Nachfahr des Vorgängers der\n"
+"       Arbeitskopie ist, werden die lokalen Änderungen als solche erhalten,\n"
+"       also mit der Zielversion zusammengeführt, aber nicht übernommen.\n"
+"       Wenn das Ziel dagegen nicht verwandt ist, wird die Aktualisierung\n"
+"       ohne Veränderung abgebrochen."
+
+msgid ""
+"    2. With the -c/--check option, the update is aborted and the\n"
+"       uncommitted changes are preserved."
+msgstr ""
+"    2. Mit der Option -c/--check wird die Aktualisierung immer aufgrund\n"
+"       der lokalen Änderungen abgebrochen."
+
+msgid ""
+"    3. With the -C/--clean option, uncommitted changes are discarded and\n"
+"       the working directory is updated to the requested changeset."
+msgstr ""
+"    3. Mit der Option -C/--clean werden die nicht übernommenen Änderungen\n"
+"       vernachlässigt und durch die Zielversion vollständig ersetzt."
+
+msgid ""
+"    Use null as the changeset to remove the working directory (like\n"
+"    :hg:`clone -U`)."
+msgstr ""
+"    Bei der Verwendung von null als Revision wird die Arbeitskopie\n"
+"    entfernt (wie :hg:`clone -U`)."
+
+msgid ""
+"    If you want to revert just one file to an older revision, use\n"
+"    :hg:`revert [-r REV] NAME`."
+msgstr ""
+"    Solle nur eine Datei auf eine ältere Revision gehoben werden, kann\n"
+"    :hg:`revert [-r REV] NAME` genutzt werden."
+
+msgid "cannot specify both -c/--check and -C/--clean"
+msgstr ""
+"Es können nicht gleichzeitig -c/--check und -C/--clean angegeben werden"
+
+msgid "verify the integrity of the repository"
+msgstr ""
+"Prüft die Integrität des Projektarchivs\n"
+"\n"
+"    Führt eine umfassende Prüfung des aktuellen Projektarchivs durch, "
+"rechnet\n"
+"    alle Prüfsummen in Historie, Manifest und überwachten Dateien nach.\n"
+"    Auch die Integrität von Referenzen und Indizes wird geprüft.\n"
+"    "
+
+msgid "    Verify the integrity of the current repository."
+msgstr "    Prüft die Integrität des aktuellen Projektarchivs"
+
+msgid ""
+"    This will perform an extensive check of the repository's\n"
+"    integrity, validating the hashes and checksums of each entry in\n"
+"    the changelog, manifest, and tracked files, as well as the\n"
+"    integrity of their crosslinks and indices."
+msgstr ""
+"    Führt eine umfassende Prüfung des aktuellen Projektarchivs durch, "
+"rechnet\n"
+"    alle Prüfsummen in Historie, Manifest und überwachten Dateien nach.\n"
+"    Auch die Integrität von Referenzen und Indizes wird geprüft."
+
+msgid "output version and copyright information"
+msgstr "Gibt Version und Copyright Information aus"
+
+#, python-format
+msgid "Mercurial Distributed SCM (version %s)\n"
+msgstr ""
+
+msgid "(see http://mercurial.selenic.com for more information)"
+msgstr "(siehe http://mercurial.selenic.com für mehr Information)"
+
+msgid ""
+"Copyright (C) 2005-2011 Matt Mackall and others\n"
+"This is free software; see the source for copying conditions. There is NO\n"
+"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
+msgstr ""
+"Copyright (C) 2005-2011 Matt Mackall und andere\n"
+"Dies ist freie Software; siehe Quellen für Kopierbestimmungen. Es besteht\n"
+"KEINE Gewährleistung für das Programm, nicht einmal der Marktreife oder der\n"
+"Verwendbarkeit für einen bestimmten Zweck.\n"
+
+#, python-format
+msgid "unknown mode %s"
+msgstr "Unbekannter Modus: %s"
+
+#, python-format
+msgid "unknown command %s"
+msgstr "unbekannter Befehl %s"
+
+#, python-format
 msgid "cannot include %s (%s)"
-msgstr "Patch '%s' kann nicht angewendet werden - %s\n"
+msgstr "%s kann nicht einbezogen werden (%s)"
 
 msgid "not found in manifest"
 msgstr "nicht im Manifest gefunden"
 
-#, fuzzy, python-format
+#, python-format
 msgid "no such file in rev %s"
-msgstr "Keine Patches in Serie\n"
+msgstr "Datei in Revision %s nicht gefunden"
 
 msgid "branch name not in UTF-8!"
 msgstr "Branchname ist nicht in UTF-8!"
@@ -12557,14 +12918,6 @@
 msgstr "%s ist bereits versioniert!\n"
 
 #, python-format
-msgid "%s not added!\n"
-msgstr "%s nicht hinzugefügt!\n"
-
-#, python-format
-msgid "%s still exists!\n"
-msgstr "%s existiert noch!\n"
-
-#, python-format
 msgid "%s not tracked!\n"
 msgstr "%s nicht versioniert!\n"
 
@@ -12578,9 +12931,9 @@
 "Kopieren fehlgeschlagen: %s ist keine Datei oder eine symbolische "
 "Verknüpfung\n"
 
-#, fuzzy, python-format
+#, python-format
 msgid "invalid character in dag description: %s..."
-msgstr "Ungültiges Zeichen in Wächter %r: %r"
+msgstr "Ungültiges Zeichen in dag Beschreibung: %s..."
 
 #, python-format
 msgid "expected id %i, got %i"
@@ -12590,18 +12943,17 @@
 msgid "parent id %i is larger than current id %i"
 msgstr ""
 
-#, fuzzy, python-format
+#, python-format
 msgid "invalid event type in dag: %s"
-msgstr "Ungültiger Eintrag in fncache, Zeile %s"
+msgstr "Ungültiger Ereignistyp in dag: %s"
+
+msgid "nullid"
+msgstr ""
 
 msgid "working directory state appears damaged!"
 msgstr "Status des Arbeitsverzeichnis scheint beschädigt zu sein!"
 
 #, python-format
-msgid "'\\n' and '\\r' disallowed in filenames: %r"
-msgstr "'\\n' und '\\r' sind nicht in Dateinamen erlaubt: %r"
-
-#, python-format
 msgid "directory %r already in dirstate"
 msgstr "Verzeichnis %r ist bereits im dirstate"
 
@@ -12613,10 +12965,6 @@
 msgid "setting %r to other parent only allowed in merges"
 msgstr ""
 
-#, python-format
-msgid "not in dirstate: %s\n"
-msgstr "nicht im dirstate: %s\n"
-
 msgid "unknown"
 msgstr "Unbekannt"
 
@@ -12639,47 +12987,36 @@
 msgid "unsupported file type (type is %s)"
 msgstr "nicht unterstützter Dateityp (Typ %s)"
 
-msgid "searching for changes\n"
-msgstr "Suche nach Änderungen\n"
-
-msgid "queries"
-msgstr ""
-
-msgid "searching"
-msgstr ""
-
-msgid "already have changeset "
-msgstr "Änderungssatz bereits vorhanden "
-
-msgid "warning: repository is unrelated\n"
-msgstr "Warnung: Projektarchiv steht in keinem Zusammenhang\n"
-
-msgid "repository is unrelated"
-msgstr "Projektarchiv steht in keinem Zusammenhang"
-
-#, fuzzy, python-format
+#, python-format
 msgid "push creates new remote branches: %s!"
-msgstr "Abbruch: Push erzeugt neuen entfernten Branch '%s'!\n"
-
-#, fuzzy
+msgstr "Push erzeugt neuen entfernten Zweig '%s'!"
+
 msgid "use 'hg push --new-branch' to create new remote branches"
-msgstr "Abbruch: Push erzeugt neuen entfernten Branch '%s'!\n"
-
-#, fuzzy, python-format
-msgid "push creates new remote heads on branch '%s'!"
-msgstr "Abbruch: Push erzeugt neuen entfernten Branch '%s'!\n"
-
-#, fuzzy
-msgid "push creates new remote heads!"
-msgstr "Abbruch: Push erzeugt neue entfernte Köpfe!\n"
-
-#, fuzzy
+msgstr "Verwende :hg:`push --new-branch` um dies zu erlauben."
+
+#, python-format
+msgid "push creates new remote head %s on branch '%s'!"
+msgstr "Push erzeugt neuen Kopf %s auf entfernten Zweig '%s'!"
+
+#, python-format
+msgid "push creates new remote head %s!"
+msgstr "Push erzeugt neuen entfernten Kopfe %s!"
+
 msgid "you should pull and merge or use push -f to force"
-msgstr "(Hast du vergessen zu mergen? Nutze push -f um zu erzwingen)\n"
-
-#, fuzzy
+msgstr ""
+"Sie sollten zuerst synchronisieren (pull) und Zusammenführen (merge), oder -"
+"f/--force zum Erzwingen verwenden"
+
 msgid "did you forget to merge? use push -f to force"
-msgstr "(Hast du vergessen zu mergen? Nutze push -f um zu erzwingen)\n"
+msgstr "(Haben Sie vergessen zu mergen? Nutze push -f um zu erzwingen)"
+
+#, python-format
+msgid "new remote heads on branch '%s'\n"
+msgstr "Neuer entfernter Kopf auf Zweig '%s'\n"
+
+#, python-format
+msgid "new remote head %s\n"
+msgstr "Neuer entfernter Kopf %s\n"
 
 msgid "note: unsynced remote changes!\n"
 msgstr "Hinweis: Nicht synchronisierte entfernte Änderungen!\n"
@@ -12692,13 +13029,13 @@
 msgid "(%s)\n"
 msgstr ""
 
-#, fuzzy, python-format
+#, python-format
 msgid "hg: parse error at %s: %s\n"
-msgstr "Abbruch: Fehler: %s\n"
-
-#, fuzzy, python-format
+msgstr "hg: Parserfehler bei %s: %s\n"
+
+#, python-format
 msgid "hg: parse error: %s\n"
-msgstr "Abbruch: Fehler: %s\n"
+msgstr "hg: Parserfehler: %s\n"
 
 msgid "entering debugger - type c to continue starting hg or h for help\n"
 msgstr ""
@@ -12735,6 +13072,9 @@
 msgid "hg: %s\n"
 msgstr ""
 
+msgid "abort: remote error:\n"
+msgstr "Abbruch: Entfernter Fehler:\n"
+
 #, python-format
 msgid "abort: %s!\n"
 msgstr "Abbruch: %s!\n"
@@ -12779,13 +13119,11 @@
 msgid "abort: out of memory\n"
 msgstr "Abbruch: Unzureichender Arbeitsspeicher\n"
 
-#, fuzzy
 msgid "** unknown exception encountered, please report by visiting\n"
-msgstr "** Unbekannter Fehler, Details folgen\n"
-
-#, fuzzy
+msgstr "** Unbekannter Fehler - bitte melden auf:\n"
+
 msgid "**  http://mercurial.selenic.com/wiki/BugTracker\n"
-msgstr "** oder mercurial@selenic.com melden\n"
+msgstr "**  http://mercurial.selenic.com/wiki/BugTracker\n"
 
 #, python-format
 msgid "** Python %s\n"
@@ -12805,11 +13143,6 @@
 
 #, python-format
 msgid ""
-"No argument found for substitution of %i variable in alias '%s' definition."
-msgstr ""
-
-#, python-format
-msgid ""
 "error in definition for alias '%s': %s may only be given on the command "
 "line\n"
 msgstr ""
@@ -12824,21 +13157,19 @@
 
 #, python-format
 msgid "malformed --config option: %r (use --config section.name=value)"
-msgstr "fehlerhafte --config Option: %s (nutze --config Sektion.Name=Wert)"
-
-#, fuzzy, python-format
+msgstr "fehlerhafte --config Option: %s (nutze --config Abschnitt.Name=Wert)"
+
+#, python-format
 msgid "error getting current working directory: %s"
-msgstr "Gibt die Wurzel (top) des aktuellen Arbeitsverzeichnisses aus"
+msgstr "Fehler beim Finden des aktuellen Arbeitsverzeichnisses: %s"
 
 #, python-format
 msgid "extension '%s' overrides commands: %s\n"
 msgstr "Erweiterung '%s' überschreibt die Befehle: %s\n"
 
-#, fuzzy
 msgid "option --config may not be abbreviated!"
 msgstr "Option --config kann nicht abgekürzt werden!"
 
-#, fuzzy
 msgid "option --cwd may not be abbreviated!"
 msgstr "Option --cwd kann nicht abgekürzt werden!"
 
@@ -12857,12 +13188,12 @@
 msgid "repository '%s' is not local"
 msgstr "Projektarchiv '%s' ist nicht lokal"
 
-#, fuzzy
+#, python-format
+msgid "no repository found in '%s' (.hg not found)"
+msgstr "Kein Projektarchiv (.hg Verzeichnis) in %s gefunden"
+
 msgid "warning: --repository ignored\n"
-msgstr "Warnung: Projektarchiv steht in keinem Zusammenhang\n"
-
-msgid "invalid arguments"
-msgstr "ungültige Parameter"
+msgstr "Warnung: --repository Option ignoriert\n"
 
 #, python-format
 msgid "unrecognized profiling format '%s' - Ignored\n"
@@ -12881,9 +13212,9 @@
 msgid "*** failed to import extension %s: %s\n"
 msgstr ""
 
-#, fuzzy, python-format
+#, python-format
 msgid "warning: error finding commands in %s\n"
-msgstr "Führe 'notify'-Befehl aus: %s\n"
+msgstr "Warnung: Fehler beim Suchen von Kommandos in %s\n"
 
 #, python-format
 msgid "couldn't find merge tool %s\n"
@@ -12907,20 +13238,6 @@
 "keep (l)ocal or take (o)ther?"
 msgstr ""
 
-msgid "&Local"
-msgstr ""
-
-msgid "&Other"
-msgstr ""
-
-#, python-format
-msgid "merging %s and %s to %s\n"
-msgstr ""
-
-#, python-format
-msgid "merging %s\n"
-msgstr ""
-
 #, python-format
 msgid "%s.premerge not valid ('%s' is neither boolean nor %s)"
 msgstr ""
@@ -12936,21 +13253,248 @@
 msgstr ""
 
 #, python-format
+msgid "merging %s incomplete! (edit conflicts, then use 'hg resolve --mark')\n"
+msgstr ""
+
+#, python-format
 msgid "merging %s failed!\n"
 msgstr ""
 
-#, fuzzy
+msgid "unterminated string"
+msgstr "nicht abgeschlossene Zeichenkette"
+
+msgid "syntax error"
+msgstr "Syntaxfehler"
+
+msgid "missing argument"
+msgstr "fehlendes Argument"
+
+msgid "can't use a list in this context"
+msgstr "In diesem Kontext kann keine Liste verwendet werden"
+
+msgid ""
+"``modified()``\n"
+"    File that is modified according to status."
+msgstr ""
+
+#. i18n: "modified" is a keyword
+msgid "modified takes no arguments"
+msgstr "'modified' erwartet keine Argumente"
+
+msgid ""
+"``added()``\n"
+"    File that is added according to status."
+msgstr ""
+
+#. i18n: "added" is a keyword
+msgid "added takes no arguments"
+msgstr "'added' erwartet keine Argumente"
+
+msgid ""
+"``removed()``\n"
+"    File that is removed according to status."
+msgstr ""
+
+#. i18n: "removed" is a keyword
+msgid "removed takes no arguments"
+msgstr "'erwartet' erwartet keine Argumente"
+
+msgid ""
+"``deleted()``\n"
+"    File that is deleted according to status."
+msgstr ""
+
+#. i18n: "deleted" is a keyword
+msgid "deleted takes no arguments"
+msgstr "'deleted' erwartet keine Argumente"
+
+msgid ""
+"``unknown()``\n"
+"    File that is unknown according to status. These files will only be\n"
+"    considered if this predicate is used."
+msgstr ""
+
+#. i18n: "unknown" is a keyword
+msgid "unknown takes no arguments"
+msgstr "'unknown' erwartet keine Argumente"
+
+msgid ""
+"``ignored()``\n"
+"    File that is ignored according to status. These files will only be\n"
+"    considered if this predicate is used."
+msgstr ""
+
+#. i18n: "ignored" is a keyword
+msgid "ignored takes no arguments"
+msgstr "'ignored' erwartet keine Argumente"
+
+msgid ""
+"``clean()``\n"
+"    File that is clean according to status."
+msgstr ""
+
+#. i18n: "clean" is a keyword
+msgid "clean takes no arguments"
+msgstr "'clean' erwartet keine Argumente"
+
+#, python-format
+msgid "not a function: %s"
+msgstr "keine Funktion: %s"
+
+msgid ""
+"``binary()``\n"
+"    File that appears to be binary (contains NUL bytes)."
+msgstr ""
+
+#. i18n: "binary" is a keyword
+msgid "binary takes no arguments"
+msgstr "'binary' erwartet keine Argumente"
+
+msgid ""
+"``exec()``\n"
+"    File that is marked as executable."
+msgstr ""
+"``exec()``\n"
+"    Datei ist als ausführbar markiert."
+
+#. i18n: "exec" is a keyword
+msgid "exec takes no arguments"
+msgstr "'exec' erwartet keine Argumente"
+
+msgid ""
+"``symlink()``\n"
+"    File that is marked as a symlink."
+msgstr ""
+
+#. i18n: "symlink" is a keyword
+msgid "symlink takes no arguments"
+msgstr "'symlink' erwartet keine Argumente"
+
+msgid ""
+"``resolved()``\n"
+"    File that is marked resolved according to the resolve state."
+msgstr ""
+"``resolved()``\n"
+"    Datei, deren Konflikt als aufgelöst markiert ist."
+
+#. i18n: "resolved" is a keyword
+msgid "resolved takes no arguments"
+msgstr "'resolved' erwartet keine Argumente"
+
+msgid ""
+"``unresolved()``\n"
+"    File that is marked unresolved according to the resolve state."
+msgstr ""
+
+#. i18n: "unresolved" is a keyword
+msgid "unresolved takes no arguments"
+msgstr "'unresolved' erwartet keine Argumente"
+
+msgid ""
+"``hgignore()``\n"
+"    File that matches the active .hgignore pattern."
+msgstr ""
+"``hgignore()``\n"
+"    Datei, die einem aktives .hgignore-Muster entspricht."
+
+msgid "hgignore takes no arguments"
+msgstr "'hgignore' erwartet keine Argumente"
+
+msgid ""
+"``grep(regex)``\n"
+"    File contains the given regular expression."
+msgstr ""
+
+msgid "grep requires a pattern"
+msgstr "'grep' erwartet ein Muster"
+
+#, python-format
+msgid "couldn't parse size: %s"
+msgstr "Konnte Größe %s nicht verarbeiten"
+
+msgid ""
+"``size(expression)``\n"
+"    File size matches the given expression. Examples:"
+msgstr ""
+
+msgid ""
+"    - 1k (files from 1024 to 2047 bytes)\n"
+"    - < 20k (files less than 20480 bytes)\n"
+"    - >= .5MB (files at least 524288 bytes)\n"
+"    - 4k - 1MB (files from 4096 bytes to 1048576 bytes)"
+msgstr ""
+
+#. i18n: "size" is a keyword
+msgid "size requires an expression"
+msgstr "'size' erwartet einen Ausdruck"
+
+msgid ""
+"``encoding(name)``\n"
+"    File can be successfully decoded with the given character\n"
+"    encoding. May not be useful for encodings other than ASCII and\n"
+"    UTF-8."
+msgstr ""
+
+#. i18n: "encoding" is a keyword
+msgid "encoding requires an encoding name"
+msgstr "'encoding' erwartet einen Kodierungsnamen"
+
+#, python-format
+msgid "unknown encoding '%s'"
+msgstr "Unbekannte Kodierung '%s'"
+
+msgid ""
+"``copied()``\n"
+"    File that is recorded as being copied."
+msgstr ""
+"``copied()``\n"
+"    Datei, die als kopiert markiert ist."
+
+#. i18n: "copied" is a keyword
+msgid "copied takes no arguments"
+msgstr "'copied' erwartet keine Argumente"
+
+msgid "invalid token"
+msgstr "Ungültiges Token"
+
 msgid "starting revisions are not directly related"
-msgstr "svn: Startrevision %s ist keine Ganzzahl"
+msgstr "Startrevisionen haben keinen direkten Bezug"
 
 #, python-format
 msgid "inconsistent state, %s:%s is good and bad"
-msgstr ""
+msgstr "Mehrdeutiger Status, %s:%s ist sowohl gut als auch schlecht"
 
 #, python-format
 msgid "unknown bisect kind %s"
 msgstr ""
 
+msgid "invalid bisect state"
+msgstr "Ungültiger bisect-Status"
+
+#. i18n: bisect changeset status
+msgid "good"
+msgstr "gut"
+
+#. i18n: bisect changeset status
+msgid "bad"
+msgstr "schlecht"
+
+#. i18n: bisect changeset status
+msgid "skipped"
+msgstr "übersprungen"
+
+#. i18n: bisect changeset status
+msgid "untested"
+msgstr "ungetestet"
+
+#. i18n: bisect changeset status
+msgid "good (implicit)"
+msgstr "gut (implizit)"
+
+#. i18n: bisect changeset status
+msgid "bad (implicit)"
+msgstr "schlecht (implizit)"
+
 msgid "disabled extensions:"
 msgstr "Inaktive Erweiterungen:"
 
@@ -12975,6 +13519,9 @@
 msgid "Specifying Revision Sets"
 msgstr "Angabe von Änderungssatzbereichen"
 
+msgid "Specifying File Sets"
+msgstr ""
+
 msgid "Diff Formats"
 msgstr "Diff-Formate"
 
@@ -12999,91 +13546,22 @@
 msgid "Glossary"
 msgstr "Glossar"
 
-msgid ""
-"Mercurial reads configuration data from several files, if they exist.\n"
-"Below we list the most specific file first."
-msgstr ""
-"Mercurial liest die Konfiguration aus mehreren Dateien, falls diese\n"
-"existieren. Es folgen Listen, die von der jeweils archivspezifischen\n"
-"Datei angeführt werden."
-
-msgid "On Windows, these configuration files are read:"
-msgstr "Unter Windows werden diese Dateien gelesen:"
-
-msgid ""
-"- ``<repo>\\.hg\\hgrc``\n"
-"- ``%USERPROFILE%\\.hgrc``\n"
-"- ``%USERPROFILE%\\mercurial.ini``\n"
-"- ``%HOME%\\.hgrc``\n"
-"- ``%HOME%\\mercurial.ini``\n"
-"- ``C:\\mercurial\\mercurial.ini`` (unless regkey or hgrc.d\\ or mercurial."
-"ini found)\n"
-"- ``HKEY_LOCAL_MACHINE\\SOFTWARE\\Mercurial`` (unless hgrc.d\\ or mercurial."
-"ini found)\n"
-"- ``<hg.exe-dir>\\hgrc.d\\*.rc`` (unless mercurial.ini found)\n"
-"- ``<hg.exe-dir>\\mercurial.ini``"
-msgstr ""
-"- ``<archiv>\\.hg\\hgrc``\n"
-"- ``%USERPROFILE%\\.hgrc``\n"
-"- ``%USERPROFILE%\\Mercurial.ini``\n"
-"- ``%HOME%\\.hgrc``\n"
-"- ``%HOME%\\Mercurial.ini``\n"
-"- ``C:\\Mercurial\\Mercurial.ini`` (solange kein Registrierungsschlüssel, "
-"eine hgrc.d oder mercurial.ini gefunden wurde)\n"
-"- ``HKEY_LOCAL_MACHINE\\SOFTWARE\\Mercurial`` (solange keine hgrc.d oder "
-"mercurial.ini gefunden wurde)\n"
-"- ``<installations-pfad>\\hgrc.d\\*.rc`` (solange keine mercurial.ini "
-"gefunden wurde)\n"
-"- ``<installations-pfad>\\mercurial.ini``"
-
-msgid "On Unix, these files are read:"
-msgstr "Unter Unix werden diese Dateien gelesen:"
-
-msgid ""
-"- ``<repo>/.hg/hgrc``\n"
-"- ``$HOME/.hgrc``\n"
-"- ``/etc/mercurial/hgrc``\n"
-"- ``/etc/mercurial/hgrc.d/*.rc``\n"
-"- ``<install-root>/etc/mercurial/hgrc``\n"
-"- ``<install-root>/etc/mercurial/hgrc.d/*.rc``"
-msgstr ""
-"- ``<archiv>/.hg/hgrc``\n"
-"- ``$HOME/.hgrc``\n"
-"- ``/etc/mercurial/hgrc``\n"
-"- ``/etc/mercurial/hgrc.d/*.rc``\n"
-"- ``<installation-pfad>/etc/mercurial/hgrc``\n"
-"- ``<installation-pfad>/etc/mercurial/hgrc.d/*.rc``"
-
-msgid ""
-"If there is a per-repository configuration file which is not owned by\n"
-"the active user, Mercurial will warn you that the file is skipped::"
-msgstr ""
-
-#, fuzzy
-msgid ""
-"  not trusting file <repo>/.hg/hgrc from untrusted user USER, group GROUP"
-msgstr "Nicht vertrauenswürdige Datei %s vom Nutzer %s, Gruppe %s\n"
-
-msgid ""
-"If this bothers you, the warning can be silenced (the file would still\n"
-"be ignored) or trust can be established. Use one of the following\n"
-"settings, the syntax is explained below:"
-msgstr ""
-
-msgid ""
-"- ``ui.report_untrusted = False``\n"
-"- ``trusted.users = USER``\n"
-"- ``trusted.groups = GROUP``"
-msgstr ""
-
-msgid ""
-"The configuration files for Mercurial use a simple ini-file format. A\n"
-"configuration file consists of sections, led by a ``[section]`` header\n"
-"and followed by ``name = value`` entries::"
+msgid "syntax for Mercurial ignore files"
+msgstr "Syntax für Mercurial 'ignore'-Dateien"
+
+msgid ""
+"The Mercurial system uses a set of configuration files to control\n"
+"aspects of its behavior."
+msgstr ""
+
+msgid ""
+"The configuration files use a simple ini-file format. A configuration\n"
+"file consists of sections, led by a ``[section]`` header and followed\n"
+"by ``name = value`` entries::"
 msgstr ""
 "Für die Konfigurationsdateien wird ein einfaches ini-Dateiformat verwendet.\n"
-"Die Datei enthält Sektionen (durch ``[Sektionsname]`` eingeleitet), welche\n"
-"ihrerseits Zeilen der Form ``name = wert`` enthalten::"
+"Die Datei enthält Abschnitte (durch ``[Abschnittsname]`` eingeleitet),\n"
+"welche ihrerseits Zeilen der Form ``name = wert`` enthalten::"
 
 msgid ""
 "  [ui]\n"
@@ -13094,22 +13572,1901 @@
 "  username = Vorname Nachname <vorname.nachname@example.net>\n"
 "  verbose = True"
 
-#, fuzzy
 msgid ""
 "The above entries will be referred to as ``ui.username`` and\n"
-"``ui.verbose``, respectively. Please see the hgrc man page for a full\n"
-"description of the possible configuration values:"
+"``ui.verbose``, respectively. See the Syntax section below."
 msgstr ""
 "Die obigen Beispieleinträge werden als ``ui.username`` bzw. ``ui.verbose``\n"
-"bezeichnet. Der hgrc man-Eintrag listet und beschreibt alle Konfigurations-\n"
-"werte auf:"
-
-msgid ""
-"- on Unix-like systems: ``man hgrc``\n"
-"- online: http://www.selenic.com/mercurial/hgrc.5.html\n"
-msgstr ""
-"- auf Unix-ähnlichen Systemen: ``man hgrc``\n"
-"- online: http://www.selenic.com/mercurial/hgrc.5.html\n"
+"bezeichnet. Siehe auch unten den Abschnitt Syntax."
+
+msgid ""
+"Files\n"
+"-----"
+msgstr ""
+
+msgid ""
+"Mercurial reads configuration data from several files, if they exist.\n"
+"These files do not exist by default and you will have to create the\n"
+"appropriate configuration files yourself: global configuration like\n"
+"the username setting is typically put into\n"
+"``%USERPROFILE%\\mercurial.ini`` or ``$HOME/.hgrc`` and local\n"
+"configuration is put into the per-repository ``<repo>/.hg/hgrc`` file."
+msgstr ""
+
+msgid ""
+"The names of these files depend on the system on which Mercurial is\n"
+"installed. ``*.rc`` files from a single directory are read in\n"
+"alphabetical order, later ones overriding earlier ones. Where multiple\n"
+"paths are given below, settings from earlier paths override later\n"
+"ones."
+msgstr ""
+
+msgid "| (Unix, Windows) ``<repo>/.hg/hgrc``"
+msgstr ""
+
+msgid ""
+"    Per-repository configuration options that only apply in a\n"
+"    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 ""
+"| (Unix) ``$HOME/.hgrc``\n"
+"| (Windows) ``%USERPROFILE%\\.hgrc``\n"
+"| (Windows) ``%USERPROFILE%\\Mercurial.ini``\n"
+"| (Windows) ``%HOME%\\.hgrc``\n"
+"| (Windows) ``%HOME%\\Mercurial.ini``"
+msgstr ""
+
+msgid ""
+"    Per-user configuration file(s), for the user running Mercurial. On\n"
+"    Windows 9x, ``%HOME%`` is replaced by ``%APPDATA%``. Options in these\n"
+"    files apply to all Mercurial commands executed by this user in any\n"
+"    directory. Options in these files override per-system and per-"
+"installation\n"
+"    options."
+msgstr ""
+
+msgid ""
+"| (Unix) ``/etc/mercurial/hgrc``\n"
+"| (Unix) ``/etc/mercurial/hgrc.d/*.rc``"
+msgstr ""
+
+msgid ""
+"    Per-system configuration files, for the system on which Mercurial\n"
+"    is running. Options in these files apply to all Mercurial commands\n"
+"    executed by any user in any directory. Options in these files\n"
+"    override per-installation options."
+msgstr ""
+
+msgid ""
+"| (Unix) ``<install-root>/etc/mercurial/hgrc``\n"
+"| (Unix) ``<install-root>/etc/mercurial/hgrc.d/*.rc``"
+msgstr ""
+"| (Unix) ``<install-root>/etc/mercurial/hgrc``\n"
+"| (Unix) ``<install-root>/etc/mercurial/hgrc.d/*.rc``"
+
+msgid ""
+"    Per-installation configuration files, searched for in the\n"
+"    directory where Mercurial is installed. ``<install-root>`` is the\n"
+"    parent directory of the **hg** executable (or symlink) being run. For\n"
+"    example, if installed in ``/shared/tools/bin/hg``, Mercurial will look\n"
+"    in ``/shared/tools/etc/mercurial/hgrc``. Options in these files apply\n"
+"    to all Mercurial commands executed by any user in any directory."
+msgstr ""
+
+msgid ""
+"| (Windows) ``<install-dir>\\Mercurial.ini`` **or**\n"
+"| (Windows) ``<install-dir>\\hgrc.d\\*.rc`` **or**\n"
+"| (Windows) ``HKEY_LOCAL_MACHINE\\SOFTWARE\\Mercurial``"
+msgstr ""
+
+msgid ""
+"    Per-installation/system configuration files, for the system on\n"
+"    which Mercurial is running. Options in these files apply to all\n"
+"    Mercurial commands executed by any user in any directory. Registry\n"
+"    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``."
+msgstr ""
+
+msgid ""
+"Syntax\n"
+"------"
+msgstr ""
+
+msgid ""
+"A configuration file consists of sections, led by a ``[section]`` header\n"
+"and followed by ``name = value`` entries (sometimes called\n"
+"``configuration keys``)::"
+msgstr ""
+"Die Datei enthält Abschnitte (durch ``[Abschnittsname]`` eingeleitet),\n"
+"welche ihrerseits Zeilen der Form ``name = wert`` enthalten (manchmal als\n"
+"``Konfigurationsschlüssel`` bezeichnet)::"
+
+msgid ""
+"    [spam]\n"
+"    eggs=ham\n"
+"    green=\n"
+"       eggs"
+msgstr ""
+
+msgid ""
+"Each line contains one entry. If the lines that follow are indented,\n"
+"they are treated as continuations of that entry. Leading whitespace is\n"
+"removed from values. Empty lines are skipped. Lines beginning with\n"
+"``#`` or ``;`` are ignored and may be used to provide comments."
+msgstr ""
+
+msgid ""
+"Configuration keys can be set multiple times, in which case Mercurial\n"
+"will use the value that was configured last. As an example::"
+msgstr ""
+
+msgid ""
+"    [spam]\n"
+"    eggs=large\n"
+"    ham=serrano\n"
+"    eggs=small"
+msgstr ""
+
+msgid "This would set the configuration key named ``eggs`` to ``small``."
+msgstr ""
+
+msgid ""
+"It is also possible to define a section multiple times. A section can\n"
+"be redefined on the same and/or on different configuration files. For\n"
+"example::"
+msgstr ""
+
+msgid ""
+"    [foo]\n"
+"    eggs=large\n"
+"    ham=serrano\n"
+"    eggs=small"
+msgstr ""
+
+msgid ""
+"    [bar]\n"
+"    eggs=ham\n"
+"    green=\n"
+"       eggs"
+msgstr ""
+
+msgid ""
+"    [foo]\n"
+"    ham=prosciutto\n"
+"    eggs=medium\n"
+"    bread=toasted"
+msgstr ""
+
+msgid ""
+"This would set the ``eggs``, ``ham``, and ``bread`` configuration keys\n"
+"of the ``foo`` section to ``medium``, ``prosciutto``, and ``toasted``,\n"
+"respectively. As you can see there only thing that matters is the last\n"
+"value that was set for each of the configuration keys."
+msgstr ""
+
+msgid ""
+"If a configuration key is set multiple times in different\n"
+"configuration files the final value will depend on the order in which\n"
+"the different configuration files are read, with settings from earlier\n"
+"paths overriding later ones as described on the ``Files`` section\n"
+"above."
+msgstr ""
+
+msgid ""
+"A line of the form ``%include file`` will include ``file`` into the\n"
+"current configuration file. The inclusion is recursive, which means\n"
+"that included files can include other files. Filenames are relative to\n"
+"the configuration file in which the ``%include`` directive is found.\n"
+"Environment variables and ``~user`` constructs are expanded in\n"
+"``file``. This lets you do something like::"
+msgstr ""
+
+msgid "  %include ~/.hgrc.d/$HOST.rc"
+msgstr ""
+
+msgid "to include a different configuration file on each computer you use."
+msgstr ""
+
+msgid ""
+"A line with ``%unset name`` will remove ``name`` from the current\n"
+"section, if it has been set previously."
+msgstr ""
+
+msgid ""
+"The values are either free-form text strings, lists of text strings,\n"
+"or Boolean values. Boolean values can be set to true using any of \"1\",\n"
+"\"yes\", \"true\", or \"on\" and to false using \"0\", \"no\", \"false\", or "
+"\"off\"\n"
+"(all case insensitive)."
+msgstr ""
+
+msgid ""
+"List values are separated by whitespace or comma, except when values are\n"
+"placed in double quotation marks::"
+msgstr ""
+
+msgid "  allow_read = \"John Doe, PhD\", brian, betty"
+msgstr ""
+
+msgid ""
+"Quotation marks can be escaped by prefixing them with a backslash. Only\n"
+"quotation marks at the beginning of a word is counted as a quotation\n"
+"(e.g., ``foo\"bar baz`` is the list of ``foo\"bar`` and ``baz``)."
+msgstr ""
+
+msgid ""
+"Sections\n"
+"--------"
+msgstr ""
+"Abschnitte\n"
+"----------"
+
+msgid ""
+"This section describes the different sections that may appear in a\n"
+"Mercurial configuration file, the purpose of each section, its possible\n"
+"keys, and their possible values."
+msgstr ""
+
+msgid ""
+"``alias``\n"
+"\"\"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid ""
+"Defines command aliases.\n"
+"Aliases allow you to define your own commands in terms of other\n"
+"commands (or aliases), optionally including arguments. Positional\n"
+"arguments in the form of ``$1``, ``$2``, etc in the alias definition\n"
+"are expanded by Mercurial before execution. Positional arguments not\n"
+"already used by ``$N`` in the definition are put at the end of the\n"
+"command to be executed."
+msgstr ""
+
+msgid "Alias definitions consist of lines of the form::"
+msgstr ""
+
+msgid "    <alias> = <command> [<argument>]..."
+msgstr ""
+
+msgid "For example, this definition::"
+msgstr ""
+
+msgid "    latest = log --limit 5"
+msgstr ""
+
+msgid ""
+"creates a new command ``latest`` that shows only the five most recent\n"
+"changesets. You can define subsequent aliases using earlier ones::"
+msgstr ""
+
+msgid "    stable5 = latest -b stable"
+msgstr ""
+
+msgid ""
+".. note:: It is possible to create aliases with the same names as\n"
+"   existing commands, which will then override the original\n"
+"   definitions. This is almost always a bad idea!"
+msgstr ""
+
+msgid ""
+"An alias can start with an exclamation point (``!``) to make it a\n"
+"shell alias. A shell alias is executed with the shell and will let you\n"
+"run arbitrary commands. As an example, ::"
+msgstr ""
+
+msgid "   echo = !echo"
+msgstr ""
+
+msgid ""
+"will let you do ``hg echo foo`` to have ``foo`` printed in your\n"
+"terminal. A better example might be::"
+msgstr ""
+
+msgid "   purge = !$HG status --no-status --unknown -0 | xargs -0 rm"
+msgstr ""
+
+msgid ""
+"which will make ``hg purge`` delete all unknown files in the\n"
+"repository in the same manner as the purge extension."
+msgstr ""
+
+msgid ""
+"Shell aliases are executed in an environment where ``$HG`` expand 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"
+"echo foo`` call above, ``$HG_ARGS`` would expand to ``echo foo``."
+msgstr ""
+
+msgid ""
+".. note:: Some global configuration options such as ``-R`` are\n"
+"   processed before shell aliases and will thus not be passed to\n"
+"   aliases."
+msgstr ""
+
+msgid ""
+"\n"
+"``annotate``\n"
+"\"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid ""
+"Settings used when displaying file annotations. All values are\n"
+"Booleans and default to False. See ``diff`` section for related\n"
+"options for the diff command."
+msgstr ""
+
+msgid ""
+"``ignorews``\n"
+"    Ignore white space when comparing lines."
+msgstr ""
+
+msgid ""
+"``ignorewsamount``\n"
+"    Ignore changes in the amount of white space."
+msgstr ""
+
+msgid ""
+"``ignoreblanklines``\n"
+"    Ignore changes whose lines are all blank."
+msgstr ""
+
+msgid ""
+"\n"
+"``auth``\n"
+"\"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid ""
+"Authentication credentials for HTTP authentication. This section\n"
+"allows you to store usernames and passwords for use when logging\n"
+"*into* HTTP servers. See the ``[web]`` configuration section if\n"
+"you want to configure *who* can login to your HTTP server."
+msgstr ""
+
+msgid "Each line has the following format::"
+msgstr ""
+
+msgid "    <name>.<argument> = <value>"
+msgstr ""
+
+msgid ""
+"where ``<name>`` is used to group arguments into authentication\n"
+"entries. Example::"
+msgstr ""
+
+msgid ""
+"    foo.prefix = hg.intevation.org/mercurial\n"
+"    foo.username = foo\n"
+"    foo.password = bar\n"
+"    foo.schemes = http https"
+msgstr ""
+
+msgid ""
+"    bar.prefix = secure.example.org\n"
+"    bar.key = path/to/file.key\n"
+"    bar.cert = path/to/file.cert\n"
+"    bar.schemes = https"
+msgstr ""
+
+msgid "Supported arguments:"
+msgstr "Unterstützte Argumente:"
+
+msgid ""
+"``prefix``\n"
+"    Either ``*`` or a URI prefix with or without the scheme part.\n"
+"    The authentication entry with the longest matching prefix is used\n"
+"    (where ``*`` matches everything and counts as a match of length\n"
+"    1). If the prefix doesn't include a scheme, the match is performed\n"
+"    against the URI with its scheme stripped as well, and the schemes\n"
+"    argument, q.v., is then subsequently consulted."
+msgstr ""
+
+msgid ""
+"``username``\n"
+"    Optional. Username to authenticate with. If not given, and the\n"
+"    remote site requires basic or digest authentication, the user will\n"
+"    be prompted for it. Environment variables are expanded in the\n"
+"    username letting you do ``foo.username = $USER``. If the URI\n"
+"    includes a username, only ``[auth]`` entries with a matching\n"
+"    username or without a username will be considered."
+msgstr ""
+
+msgid ""
+"``password``\n"
+"    Optional. Password to authenticate with. If not given, and the\n"
+"    remote site requires basic or digest authentication, the user\n"
+"    will be prompted for it."
+msgstr ""
+
+msgid ""
+"``key``\n"
+"    Optional. PEM encoded client certificate key file. Environment\n"
+"    variables are expanded in the filename."
+msgstr ""
+
+msgid ""
+"``cert``\n"
+"    Optional. PEM encoded client certificate chain file. Environment\n"
+"    variables are expanded in the filename."
+msgstr ""
+
+msgid ""
+"``schemes``\n"
+"    Optional. Space separated list of URI schemes to use this\n"
+"    authentication entry with. Only used if the prefix doesn't include\n"
+"    a scheme. Supported schemes are http and https. They will match\n"
+"    static-http and static-https respectively, as well.\n"
+"    Default: https."
+msgstr ""
+
+msgid ""
+"If no suitable authentication entry is found, the user is prompted\n"
+"for credentials as usual if required by the remote."
+msgstr ""
+
+msgid ""
+"\n"
+"``decode/encode``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid ""
+"Filters for transforming files on checkout/checkin. This would\n"
+"typically be used for newline processing or other\n"
+"localization/canonicalization of files."
+msgstr ""
+
+msgid ""
+"Filters consist of a filter pattern followed by a filter command.\n"
+"Filter patterns are globs by default, rooted at the repository root.\n"
+"For example, to match any file ending in ``.txt`` in the root\n"
+"directory only, use the pattern ``*.txt``. To match any file ending\n"
+"in ``.c`` anywhere in the repository, use the pattern ``**.c``.\n"
+"For each file only the first matching filter applies."
+msgstr ""
+
+msgid ""
+"The filter command can start with a specifier, either ``pipe:`` or\n"
+"``tempfile:``. If no specifier is given, ``pipe:`` is used by default."
+msgstr ""
+
+msgid ""
+"A ``pipe:`` command must accept data on stdin and return the transformed\n"
+"data on stdout."
+msgstr ""
+
+msgid "Pipe example::"
+msgstr "Pipe-Beispiele::"
+
+msgid ""
+"  [encode]\n"
+"  # uncompress gzip files on checkin to improve delta compression\n"
+"  # note: not necessarily a good idea, just an example\n"
+"  *.gz = pipe: gunzip"
+msgstr ""
+
+msgid ""
+"  [decode]\n"
+"  # recompress gzip files when writing them to the working dir (we\n"
+"  # can safely omit \"pipe:\", because it's the default)\n"
+"  *.gz = gzip"
+msgstr ""
+
+msgid ""
+"A ``tempfile:`` command is a template. The string ``INFILE`` is replaced\n"
+"with the name of a temporary file that contains the data to be\n"
+"filtered by the command. The string ``OUTFILE`` is replaced with the name\n"
+"of an empty temporary file, where the filtered data must be written by\n"
+"the command."
+msgstr ""
+
+msgid ""
+".. note:: The tempfile mechanism is recommended for Windows systems,\n"
+"   where the standard shell I/O redirection operators often have\n"
+"   strange effects and may corrupt the contents of your files."
+msgstr ""
+
+msgid ""
+"This filter mechanism is used internally by the ``eol`` extension to\n"
+"translate line ending characters between Windows (CRLF) and Unix (LF)\n"
+"format. We suggest you use the ``eol`` extension for convenience."
+msgstr ""
+
+msgid ""
+"\n"
+"``defaults``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid "(defaults are deprecated. Don't use them. Use aliases instead)"
+msgstr ""
+
+msgid ""
+"Use the ``[defaults]`` section to define command defaults, i.e. the\n"
+"default options/arguments to pass to the specified commands."
+msgstr ""
+
+msgid ""
+"The following example makes :hg:`log` run in verbose mode, and\n"
+":hg:`status` show only the modified files, by default::"
+msgstr ""
+
+msgid ""
+"  [defaults]\n"
+"  log = -v\n"
+"  status = -m"
+msgstr ""
+
+msgid ""
+"The actual commands, instead of their aliases, must be used when\n"
+"defining command defaults. The command defaults will also be applied\n"
+"to the aliases of the commands defined."
+msgstr ""
+
+msgid ""
+"\n"
+"``diff``\n"
+"\"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid ""
+"Settings used when displaying diffs. Everything except for ``unified``\n"
+"is a Boolean and defaults to False. See ``annotate`` section for\n"
+"related options for the annotate command."
+msgstr ""
+
+msgid ""
+"``git``\n"
+"    Use git extended diff format."
+msgstr ""
+"``git``\n"
+"    Verwende git-erweitertes diff-Format"
+
+msgid ""
+"``nodates``\n"
+"    Don't include dates in diff headers."
+msgstr ""
+
+msgid ""
+"``showfunc``\n"
+"    Show which function each change is in."
+msgstr ""
+"``showfunc``\n"
+"    Zeigt die Funktion, in der die Änderung passiert ist"
+
+msgid ""
+"``unified``\n"
+"    Number of lines of context to show."
+msgstr ""
+"``unified``\n"
+"    Anzahl der anzuzeigenden Kontextzeilen"
+
+msgid ""
+"``email``\n"
+"\"\"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid "Settings for extensions that send email messages."
+msgstr ""
+
+msgid ""
+"``from``\n"
+"    Optional. Email address to use in \"From\" header and SMTP envelope\n"
+"    of outgoing messages."
+msgstr ""
+
+msgid ""
+"``to``\n"
+"    Optional. Comma-separated list of recipients' email addresses."
+msgstr ""
+
+msgid ""
+"``cc``\n"
+"    Optional. Comma-separated list of carbon copy recipients'\n"
+"    email addresses."
+msgstr ""
+
+msgid ""
+"``bcc``\n"
+"    Optional. Comma-separated list of blind carbon copy recipients'\n"
+"    email addresses."
+msgstr ""
+
+msgid ""
+"``method``\n"
+"    Optional. Method to use to send email messages. If value is ``smtp``\n"
+"    (default), use SMTP (see the ``[smtp]`` section for configuration).\n"
+"    Otherwise, use as name of program to run that acts like sendmail\n"
+"    (takes ``-f`` option for sender, list of recipients on command line,\n"
+"    message on stdin). Normally, setting this to ``sendmail`` or\n"
+"    ``/usr/sbin/sendmail`` is enough to use sendmail to send messages."
+msgstr ""
+
+msgid ""
+"``charsets``\n"
+"    Optional. Comma-separated list of character sets considered\n"
+"    convenient for recipients. Addresses, headers, and parts not\n"
+"    containing patches of outgoing messages will be encoded in the\n"
+"    first character set to which conversion from local encoding\n"
+"    (``$HGENCODING``, ``ui.fallbackencoding``) succeeds. If correct\n"
+"    conversion fails, the text in question is sent as is. Defaults to\n"
+"    empty (explicit) list."
+msgstr ""
+
+msgid "    Order of outgoing email character sets:"
+msgstr ""
+
+msgid ""
+"    1. ``us-ascii``: always first, regardless of settings\n"
+"    2. ``email.charsets``: in order given by user\n"
+"    3. ``ui.fallbackencoding``: if not in email.charsets\n"
+"    4. ``$HGENCODING``: if not in email.charsets\n"
+"    5. ``utf-8``: always last, regardless of settings"
+msgstr ""
+
+msgid "Email example::"
+msgstr "Email-Beispiele::"
+
+msgid ""
+"  [email]\n"
+"  from = Joseph User <joe.user@example.com>\n"
+"  method = /usr/sbin/sendmail\n"
+"  # charsets for western Europeans\n"
+"  # us-ascii, utf-8 omitted, as they are tried first and last\n"
+"  charsets = iso-8859-1, iso-8859-15, windows-1252"
+msgstr ""
+
+msgid ""
+"\n"
+"``extensions``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid ""
+"Mercurial has an extension mechanism for adding new features. To\n"
+"enable an extension, create an entry for it in this section."
+msgstr ""
+
+msgid ""
+"If you know that the extension is already in Python's search path,\n"
+"you can give the name of the module, followed by ``=``, with nothing\n"
+"after the ``=``."
+msgstr ""
+
+msgid ""
+"Otherwise, give a name that you choose, followed by ``=``, followed by\n"
+"the path to the ``.py`` file (including the file name extension) that\n"
+"defines the extension."
+msgstr ""
+
+msgid ""
+"To explicitly disable an extension that is enabled in an hgrc of\n"
+"broader scope, prepend its path with ``!``, as in ``foo = !/ext/path``\n"
+"or ``foo = !`` when path is not supplied."
+msgstr ""
+"Um eine Erweiterung explizit zu deaktivieren, die von einer allgemeineren\n"
+"hgrc aktiviert wurde, setzen Sie ein ! vor den Pfad, also z.B. ``foo = !``."
+
+msgid "Example for ``~/.hgrc``::"
+msgstr "Beispiel ``~/.hgrc``-Datei::"
+
+msgid ""
+"  [extensions]\n"
+"  # (the mq extension will get loaded from Mercurial's path)\n"
+"  mq =\n"
+"  # (this extension will get loaded from the file specified)\n"
+"  myfeature = ~/.hgext/myfeature.py"
+msgstr ""
+
+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 "Zum Beispiel::"
+
+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"
+"``format``\n"
+"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid ""
+"``usestore``\n"
+"    Enable or disable the \"store\" repository format which improves\n"
+"    compatibility with systems that fold case or otherwise mangle\n"
+"    filenames. Enabled by default. Disabling this option will allow\n"
+"    you to store longer filenames in some situations at the expense of\n"
+"    compatibility and ensures that the on-disk format of newly created\n"
+"    repositories will be compatible with Mercurial before version 0.9.4."
+msgstr ""
+
+msgid ""
+"``usefncache``\n"
+"    Enable or disable the \"fncache\" repository format which enhances\n"
+"    the \"store\" repository format (which has to be enabled to use\n"
+"    fncache) to allow longer filenames and avoids using Windows\n"
+"    reserved names, e.g. \"nul\". Enabled by default. Disabling this\n"
+"    option ensures that the on-disk format of newly created\n"
+"    repositories will be compatible with Mercurial before version 1.1."
+msgstr ""
+
+msgid ""
+"``dotencode``\n"
+"    Enable or disable the \"dotencode\" repository format which enhances\n"
+"    the \"fncache\" repository format (which has to be enabled to use\n"
+"    dotencode) to avoid issues with filenames starting with ._ on\n"
+"    Mac OS X and spaces on Windows. Enabled by default. Disabling this\n"
+"    option ensures that the on-disk format of newly created\n"
+"    repositories will be compatible with Mercurial before version 1.7."
+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 "Beispiel ``.hgrc``-Datei::"
+
+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"
+"``hooks``\n"
+"\"\"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid ""
+"Commands or Python functions that get automatically executed by\n"
+"various actions such as starting or finishing a commit. Multiple\n"
+"hooks can be run for the same action by appending a suffix to the\n"
+"action. Overriding a site-wide hook can be done by changing its\n"
+"value or setting it to an empty string."
+msgstr ""
+
+msgid "Example ``.hg/hgrc``::"
+msgstr ""
+
+msgid ""
+"  [hooks]\n"
+"  # update working directory after adding changesets\n"
+"  changegroup.update = hg update\n"
+"  # do not use the site-wide hook\n"
+"  incoming =\n"
+"  incoming.email = /my/email/hook\n"
+"  incoming.autobuild = /my/build/hook"
+msgstr ""
+
+msgid ""
+"Most hooks are run with environment variables set that give useful\n"
+"additional information. For each hook below, the environment\n"
+"variables it is passed are listed with names of the form ``$HG_foo``."
+msgstr ""
+
+msgid ""
+"``changegroup``\n"
+"  Run after a changegroup has been added via push, pull or unbundle.\n"
+"  ID of the first new changeset is in ``$HG_NODE``. URL from which\n"
+"  changes came is in ``$HG_URL``."
+msgstr ""
+
+msgid ""
+"``commit``\n"
+"  Run after a changeset has been created in the local repository. ID\n"
+"  of the newly created changeset is in ``$HG_NODE``. Parent changeset\n"
+"  IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``."
+msgstr ""
+
+msgid ""
+"``incoming``\n"
+"  Run after a changeset has been pulled, pushed, or unbundled into\n"
+"  the local repository. The ID of the newly arrived changeset is in\n"
+"  ``$HG_NODE``. URL that was source of changes came is in ``$HG_URL``."
+msgstr ""
+
+msgid ""
+"``outgoing``\n"
+"  Run after sending changes from local repository to another. ID of\n"
+"  first changeset sent is in ``$HG_NODE``. Source of operation is in\n"
+"  ``$HG_SOURCE``; see \"preoutgoing\" hook for description."
+msgstr ""
+
+msgid ""
+"``post-<command>``\n"
+"  Run after successful invocations of the associated command. The\n"
+"  contents of the command line are passed as ``$HG_ARGS`` and the result\n"
+"  code in ``$HG_RESULT``. Parsed command line arguments are passed as \n"
+"  ``$HG_PATS`` and ``$HG_OPTS``. These contain string representations of\n"
+"  the python data internally passed to <command>. ``$HG_OPTS`` is a \n"
+"  dictionary of options (with unspecified options set to their defaults).\n"
+"  ``$HG_PATS`` is a list of arguments. Hook failure is ignored."
+msgstr ""
+
+msgid ""
+"``pre-<command>``\n"
+"  Run before executing the associated command. The contents of the\n"
+"  command line are passed as ``$HG_ARGS``. Parsed command line arguments\n"
+"  are passed as ``$HG_PATS`` and ``$HG_OPTS``. These contain string\n"
+"  representations of the data internally passed to <command>. ``$HG_OPTS``\n"
+"  is a  dictionary of options (with unspecified options set to their\n"
+"  defaults). ``$HG_PATS`` is a list of arguments. If the hook returns \n"
+"  failure, the command doesn't execute and Mercurial returns the failure\n"
+"  code."
+msgstr ""
+
+msgid ""
+"``prechangegroup``\n"
+"  Run before a changegroup is added via push, pull or unbundle. Exit\n"
+"  status 0 allows the changegroup to proceed. Non-zero status will\n"
+"  cause the push, pull or unbundle to fail. URL from which changes\n"
+"  will come is in ``$HG_URL``."
+msgstr ""
+
+msgid ""
+"``precommit``\n"
+"  Run before starting a local commit. Exit status 0 allows the\n"
+"  commit to proceed. Non-zero status will cause the commit to fail.\n"
+"  Parent changeset IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``."
+msgstr ""
+
+msgid ""
+"``prelistkeys``\n"
+"  Run before listing pushkeys (like bookmarks) in the\n"
+"  repository. Non-zero status will cause failure. The key namespace is\n"
+"  in ``$HG_NAMESPACE``."
+msgstr ""
+
+msgid ""
+"``preoutgoing``\n"
+"  Run before collecting changes to send from the local repository to\n"
+"  another. Non-zero status will cause failure. This lets you prevent\n"
+"  pull over HTTP or SSH. Also prevents against local pull, push\n"
+"  (outbound) or bundle commands, but not effective, since you can\n"
+"  just copy files instead then. Source of operation is in\n"
+"  ``$HG_SOURCE``. If \"serve\", operation is happening on behalf of remote\n"
+"  SSH or HTTP repository. If \"push\", \"pull\" or \"bundle\", operation\n"
+"  is happening on behalf of repository on same system."
+msgstr ""
+
+msgid ""
+"``prepushkey``\n"
+"  Run before a pushkey (like a bookmark) is added to the\n"
+"  repository. Non-zero status will cause the key to be rejected. The\n"
+"  key namespace is in ``$HG_NAMESPACE``, the key is in ``$HG_KEY``,\n"
+"  the old value (if any) is in ``$HG_OLD``, and the new value is in\n"
+"  ``$HG_NEW``."
+msgstr ""
+
+msgid ""
+"``pretag``\n"
+"  Run before creating a tag. Exit status 0 allows the tag to be\n"
+"  created. Non-zero status will cause the tag to fail. ID of\n"
+"  changeset to tag is in ``$HG_NODE``. Name of tag is in ``$HG_TAG``. Tag "
+"is\n"
+"  local if ``$HG_LOCAL=1``, in repository if ``$HG_LOCAL=0``."
+msgstr ""
+
+msgid ""
+"``pretxnchangegroup``\n"
+"  Run after a changegroup has been added via push, pull or unbundle,\n"
+"  but before the transaction has been committed. Changegroup is\n"
+"  visible to hook program. This lets you validate incoming changes\n"
+"  before accepting them. Passed the ID of the first new changeset in\n"
+"  ``$HG_NODE``. Exit status 0 allows the transaction to commit. Non-zero\n"
+"  status will cause the transaction to be rolled back and the push,\n"
+"  pull or unbundle will fail. URL that was source of changes is in\n"
+"  ``$HG_URL``."
+msgstr ""
+
+msgid ""
+"``pretxncommit``\n"
+"  Run after a changeset has been created but the transaction not yet\n"
+"  committed. Changeset is visible to hook program. This lets you\n"
+"  validate commit message and changes. Exit status 0 allows the\n"
+"  commit to proceed. Non-zero status will cause the transaction to\n"
+"  be rolled back. ID of changeset is in ``$HG_NODE``. Parent changeset\n"
+"  IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``."
+msgstr ""
+
+msgid ""
+"``preupdate``\n"
+"  Run before updating the working directory. Exit status 0 allows\n"
+"  the update to proceed. Non-zero status will prevent the update.\n"
+"  Changeset ID of first new parent is in ``$HG_PARENT1``. If merge, ID\n"
+"  of second new parent is in ``$HG_PARENT2``."
+msgstr ""
+
+msgid ""
+"``listkeys``\n"
+"  Run after listing pushkeys (like bookmarks) in the repository. The\n"
+"  key namespace is in ``$HG_NAMESPACE``. ``$HG_VALUES`` is a\n"
+"  dictionary containing the keys and values."
+msgstr ""
+
+msgid ""
+"``pushkey``\n"
+"  Run after a pushkey (like a bookmark) is added to the\n"
+"  repository. The key namespace is in ``$HG_NAMESPACE``, the key is in\n"
+"  ``$HG_KEY``, the old value (if any) is in ``$HG_OLD``, and the new\n"
+"  value is in ``$HG_NEW``."
+msgstr ""
+
+msgid ""
+"``tag``\n"
+"  Run after a tag is created. ID of tagged changeset is in ``$HG_NODE``.\n"
+"  Name of tag is in ``$HG_TAG``. Tag is local if ``$HG_LOCAL=1``, in\n"
+"  repository if ``$HG_LOCAL=0``."
+msgstr ""
+
+msgid ""
+"``update``\n"
+"  Run after updating the working directory. Changeset ID of first\n"
+"  new parent is in ``$HG_PARENT1``. If merge, ID of second new parent is\n"
+"  in ``$HG_PARENT2``. If the update succeeded, ``$HG_ERROR=0``. If the\n"
+"  update failed (e.g. because conflicts not resolved), ``$HG_ERROR=1``."
+msgstr ""
+
+msgid ""
+".. note:: It is generally better to use standard hooks rather than the\n"
+"   generic pre- and post- command hooks as they are guaranteed to be\n"
+"   called in the appropriate contexts for influencing transactions.\n"
+"   Also, hooks like \"commit\" will be called in all contexts that\n"
+"   generate a commit (e.g. tag) and not just the commit command."
+msgstr ""
+
+msgid ""
+".. note:: Environment variables with empty values may not be passed to\n"
+"   hooks on platforms such as Windows. As an example, ``$HG_PARENT2``\n"
+"   will have an empty value under Unix-like platforms for non-merge\n"
+"   changesets, while it will not be available at all under Windows."
+msgstr ""
+
+msgid "The syntax for Python hooks is as follows::"
+msgstr ""
+
+msgid ""
+"  hookname = python:modulename.submodule.callable\n"
+"  hookname = python:/path/to/python/module.py:callable"
+msgstr ""
+
+msgid ""
+"Python hooks are run within the Mercurial process. Each hook is\n"
+"called with at least three keyword arguments: a ui object (keyword\n"
+"``ui``), a repository object (keyword ``repo``), and a ``hooktype``\n"
+"keyword that tells what kind of hook is used. Arguments listed as\n"
+"environment variables above are passed as keyword arguments, with no\n"
+"``HG_`` prefix, and names in lower case."
+msgstr ""
+
+msgid ""
+"If a Python hook returns a \"true\" value or raises an exception, this\n"
+"is treated as a failure."
+msgstr ""
+
+msgid ""
+"\n"
+"``http_proxy``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid ""
+"Used to access web-based Mercurial repositories through a HTTP\n"
+"proxy."
+msgstr ""
+
+msgid ""
+"``host``\n"
+"    Host name and (optional) port of the proxy server, for example\n"
+"    \"myproxy:8000\"."
+msgstr ""
+
+msgid ""
+"``no``\n"
+"    Optional. Comma-separated list of host names that should bypass\n"
+"    the proxy."
+msgstr ""
+
+msgid ""
+"``passwd``\n"
+"    Optional. Password to authenticate with at the proxy server."
+msgstr ""
+"``passwd``\n"
+"    Optional. Password zur Authentifikation mit einem Proxy-Server."
+
+msgid ""
+"``user``\n"
+"    Optional. User name to authenticate with at the proxy server."
+msgstr ""
+
+msgid ""
+"``always``\n"
+"    Optional. Always use the proxy, even for localhost and any entries\n"
+"    in ``http_proxy.no``. True or False. Default: False."
+msgstr ""
+
+msgid ""
+"``smtp``\n"
+"\"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid "Configuration for extensions that need to send email messages."
+msgstr ""
+
+msgid ""
+"``host``\n"
+"    Host name of mail server, e.g. \"mail.example.com\"."
+msgstr ""
+
+msgid ""
+"``port``\n"
+"    Optional. Port to connect to on mail server. Default: 25."
+msgstr ""
+
+msgid ""
+"``tls``\n"
+"    Optional. Method to enable TLS when connecting to mail server: "
+"starttls,\n"
+"    smtps or none. Default: none."
+msgstr ""
+
+msgid ""
+"``username``\n"
+"    Optional. User name for authenticating with the SMTP server.\n"
+"    Default: none."
+msgstr ""
+
+msgid ""
+"``password``\n"
+"    Optional. Password for authenticating with the SMTP server. If not\n"
+"    specified, interactive sessions will prompt the user for a\n"
+"    password; non-interactive sessions will fail. Default: none."
+msgstr ""
+
+msgid ""
+"``local_hostname``\n"
+"    Optional. It's the hostname that the sender can use to identify\n"
+"    itself to the MTA."
+msgstr ""
+
+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 ""
+"\n"
+"``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 ""
+
+msgid "Defines subrepositories source locations rewriting 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::"
+msgstr ""
+
+msgid "    http://server/(.*)-hg/ = http://hg.server/\\1/"
+msgstr ""
+
+msgid "rewrites ``http://server/foo-hg/`` into ``http://hg.server/foo/``."
+msgstr ""
+
+msgid "All patterns are applied in definition order."
+msgstr ""
+
+msgid ""
+"``trusted``\n"
+"\"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid ""
+"Mercurial will not use the settings in the\n"
+"``.hg/hgrc`` file from a repository if it doesn't belong to a trusted\n"
+"user or to a trusted group, as various hgrc features allow arbitrary\n"
+"commands to be run. This issue is often encountered when configuring\n"
+"hooks or extensions for shared repositories or servers. However,\n"
+"the web interface will use some safe settings from the ``[web]``\n"
+"section."
+msgstr ""
+
+msgid ""
+"This section specifies what users and groups are trusted. The\n"
+"current user is always trusted. To trust everybody, list a user or a\n"
+"group with name ``*``. These settings must be placed in an\n"
+"*already-trusted file* to take effect, such as ``$HOME/.hgrc`` of the\n"
+"user or service running Mercurial."
+msgstr ""
+
+msgid ""
+"``users``\n"
+"  Comma-separated list of trusted users."
+msgstr ""
+
+msgid ""
+"``groups``\n"
+"  Comma-separated list of trusted groups."
+msgstr ""
+
+msgid ""
+"\n"
+"``ui``\n"
+"\"\"\"\"\"\""
+msgstr ""
+
+msgid "User interface controls."
+msgstr ""
+
+msgid ""
+"``archivemeta``\n"
+"    Whether to include the .hg_archival.txt file containing meta data\n"
+"    (hashes for the repository base and for tip) in archives created\n"
+"    by the :hg:`archive` command or downloaded via hgweb.\n"
+"    Default is True."
+msgstr ""
+
+msgid ""
+"``askusername``\n"
+"    Whether to prompt for a username when committing. If True, and\n"
+"    neither ``$HGUSER`` nor ``$EMAIL`` has been specified, then the user "
+"will\n"
+"    be prompted to enter a username. If no username is entered, the\n"
+"    default ``USER@HOST`` is used instead.\n"
+"    Default is False."
+msgstr ""
+
+msgid ""
+"``commitsubrepos``\n"
+"    Whether to commit modified subrepositories when committing the\n"
+"    parent repository. If False and one subrepository has uncommitted\n"
+"    changes, abort the commit.\n"
+"    Default is False."
+msgstr ""
+
+msgid ""
+"``debug``\n"
+"    Print debugging information. True or False. Default is False."
+msgstr ""
+
+msgid ""
+"``editor``\n"
+"    The editor to use during a commit. Default is ``$EDITOR`` or ``vi``."
+msgstr ""
+
+msgid ""
+"``fallbackencoding``\n"
+"    Encoding to try if it's not possible to decode the changelog using\n"
+"    UTF-8. Default is ISO-8859-1."
+msgstr ""
+
+msgid ""
+"``ignore``\n"
+"    A file to read per-user ignore patterns from. This file should be\n"
+"    in the same format as a repository-wide .hgignore file. This\n"
+"    option supports hook syntax, so if you want to specify multiple\n"
+"    ignore files, you can do so by setting something like\n"
+"    ``ignore.other = ~/.hgignore2``. For details of the ignore file\n"
+"    format, see the ``hgignore(5)`` man page."
+msgstr ""
+
+msgid ""
+"``interactive``\n"
+"    Allow to prompt the user. True or False. Default is True."
+msgstr ""
+
+msgid ""
+"``logtemplate``\n"
+"    Template string for commands that print changesets."
+msgstr ""
+
+msgid ""
+"``merge``\n"
+"    The conflict resolution program to use during a manual merge.\n"
+"    For more information on merge tools see :hg:`help merge-tools`.\n"
+"    For configuring merge tools see the ``[merge-tools]`` section."
+msgstr ""
+
+msgid ""
+"``portablefilenames``\n"
+"    Check for portable filenames. Can be ``warn``, ``ignore`` or ``abort``.\n"
+"    Default is ``warn``.\n"
+"    If set to ``warn`` (or ``true``), a warning message is printed on POSIX\n"
+"    platforms, if a file with a non-portable filename is added (e.g. a file\n"
+"    with a name that can't be created on Windows because it contains "
+"reserved\n"
+"    parts like ``AUX``, reserved characters like ``:``, or would cause a "
+"case\n"
+"    collision with an existing file).\n"
+"    If set to ``ignore`` (or ``false``), no warning is printed.\n"
+"    If set to ``abort``, the command is aborted.\n"
+"    On Windows, this configuration option is ignored and the command aborted."
+msgstr ""
+
+msgid ""
+"``quiet``\n"
+"    Reduce the amount of output printed. True or False. Default is False."
+msgstr ""
+
+msgid ""
+"``remotecmd``\n"
+"    remote command to use for clone/push/pull operations. Default is ``hg``."
+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."
+msgstr ""
+
+msgid ""
+"``slash``\n"
+"    Display paths using a slash (``/``) as the path separator. This\n"
+"    only makes a difference on systems where the default path\n"
+"    separator is not the slash character (e.g. Windows uses the\n"
+"    backslash character (``\\``)).\n"
+"    Default is False."
+msgstr ""
+
+msgid ""
+"``ssh``\n"
+"    command to use for SSH connections. Default is ``ssh``."
+msgstr ""
+
+msgid ""
+"``strict``\n"
+"    Require exact command names, instead of allowing unambiguous\n"
+"    abbreviations. True or False. Default is False."
+msgstr ""
+
+msgid ""
+"``style``\n"
+"    Name of style to use for command output."
+msgstr ""
+"``style``\n"
+"    Names des Stils für Befehlsausgabe."
+
+msgid ""
+"``timeout``\n"
+"    The timeout used when a lock is held (in seconds), a negative value\n"
+"    means no timeout. Default is 600."
+msgstr ""
+
+msgid ""
+"``traceback``\n"
+"    Mercurial always prints a traceback when an unknown exception\n"
+"    occurs. Setting this to True will make Mercurial print a traceback\n"
+"    on all exceptions, even those recognized by Mercurial (such as\n"
+"    IOError or MemoryError). Default is False."
+msgstr ""
+
+msgid ""
+"``username``\n"
+"    The committer of a changeset created when running \"commit\".\n"
+"    Typically a person's name and email address, e.g. ``Fred Widget\n"
+"    <fred@example.com>``. Default is ``$EMAIL`` or ``username@hostname``. "
+"If\n"
+"    the username in hgrc is empty, it has to be specified manually or\n"
+"    in a different hgrc file (e.g. ``$HOME/.hgrc``, if the admin set\n"
+"    ``username =``  in the system hgrc). Environment variables in the\n"
+"    username are expanded."
+msgstr ""
+
+msgid ""
+"``verbose``\n"
+"    Increase the amount of output printed. True or False. Default is False."
+msgstr ""
+
+msgid ""
+"\n"
+"``web``\n"
+"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid ""
+"Web interface configuration. The settings in this section apply to\n"
+"both the builtin webserver (started by :hg:`serve`) and the script you\n"
+"run through a webserver (``hgweb.cgi`` and the derivatives for FastCGI\n"
+"and WSGI)."
+msgstr ""
+
+msgid ""
+"The Mercurial webserver does no authentication (it does not prompt for\n"
+"usernames and passwords to validate *who* users are), but it does do\n"
+"authorization (it grants or denies access for *authenticated users*\n"
+"based on settings in this section). You must either configure your\n"
+"webserver to do authentication for you, or disable the authorization\n"
+"checks."
+msgstr ""
+
+msgid ""
+"For a quick setup in a trusted environment, e.g., a private LAN, where\n"
+"you want it to accept pushes from anybody, you can use the following\n"
+"command line::"
+msgstr ""
+
+msgid "    $ hg --config web.allow_push=* --config web.push_ssl=False serve"
+msgstr ""
+
+msgid ""
+"Note that this will allow anybody to push anything to the server and\n"
+"that this should not be used for public servers."
+msgstr ""
+
+msgid "The full set of options is:"
+msgstr "Eine vollständige Liste der Optionen ist::"
+
+msgid ""
+"``accesslog``\n"
+"    Where to output the access log. Default is stdout."
+msgstr ""
+
+msgid ""
+"``address``\n"
+"    Interface address to bind to. Default is all."
+msgstr ""
+
+msgid ""
+"``allow_archive``\n"
+"    List of archive format (bz2, gz, zip) allowed for downloading.\n"
+"    Default is empty."
+msgstr ""
+
+msgid ""
+"``allowbz2``\n"
+"    (DEPRECATED) Whether to allow .tar.bz2 downloading of repository\n"
+"    revisions.\n"
+"    Default is False."
+msgstr ""
+
+msgid ""
+"``allowgz``\n"
+"    (DEPRECATED) Whether to allow .tar.gz downloading of repository\n"
+"    revisions.\n"
+"    Default is False."
+msgstr ""
+
+msgid ""
+"``allowpull``\n"
+"    Whether to allow pulling from the repository. Default is True."
+msgstr ""
+
+msgid ""
+"``allow_push``\n"
+"    Whether to allow pushing to the repository. If empty or not set,\n"
+"    push is not allowed. If the special value ``*``, any remote user can\n"
+"    push, including unauthenticated users. Otherwise, the remote user\n"
+"    must have been authenticated, and the authenticated user name must\n"
+"    be present in this list. The contents of the allow_push list are\n"
+"    examined after the deny_push list."
+msgstr ""
+
+msgid ""
+"``guessmime``\n"
+"    Control MIME types for raw download of file content.\n"
+"    Set to True to let hgweb guess the content type from the file\n"
+"    extension. This will serve HTML files as ``text/html`` and might\n"
+"    allow cross-site scripting attacks when serving untrusted\n"
+"    repositories. Default is False."
+msgstr ""
+
+msgid ""
+"``allow_read``\n"
+"    If the user has not already been denied repository access due to\n"
+"    the contents of deny_read, this list determines whether to grant\n"
+"    repository access to the user. If this list is not empty, and the\n"
+"    user is unauthenticated or not present in the list, then access is\n"
+"    denied for the user. If the list is empty or not set, then access\n"
+"    is permitted to all users by default. Setting allow_read to the\n"
+"    special value ``*`` is equivalent to it not being set (i.e. access\n"
+"    is permitted to all users). The contents of the allow_read list are\n"
+"    examined after the deny_read list."
+msgstr ""
+
+msgid ""
+"``allowzip``\n"
+"    (DEPRECATED) Whether to allow .zip downloading of repository\n"
+"    revisions. Default is False. This feature creates temporary files."
+msgstr ""
+
+msgid ""
+"``baseurl``\n"
+"    Base URL to use when publishing URLs in other locations, so\n"
+"    third-party tools like email notification hooks can construct\n"
+"    URLs. Example: ``http://hgserver/repos/``."
+msgstr ""
+
+msgid ""
+"``cacerts``\n"
+"    Path to file containing a list of PEM encoded certificate\n"
+"    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::"
+msgstr ""
+
+msgid ""
+"        -----BEGIN CERTIFICATE-----\n"
+"        ... (certificate in base64 PEM encoding) ...\n"
+"        -----END CERTIFICATE-----\n"
+"        -----BEGIN CERTIFICATE-----\n"
+"        ... (certificate in base64 PEM encoding) ...\n"
+"        -----END CERTIFICATE-----"
+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 ""
+"``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."
+msgstr ""
+
+msgid ""
+"``deny_push``\n"
+"    Whether to deny pushing to the repository. If empty or not set,\n"
+"    push is not denied. If the special value ``*``, all remote users are\n"
+"    denied push. Otherwise, unauthenticated users are all denied, and\n"
+"    any authenticated user name present in this list is also denied. The\n"
+"    contents of the deny_push list are examined before the allow_push list."
+msgstr ""
+
+msgid ""
+"``deny_read``\n"
+"    Whether to deny reading/viewing of the repository. If this list is\n"
+"    not empty, unauthenticated users are all denied, and any\n"
+"    authenticated user name present in this list is also denied access to\n"
+"    the repository. If set to the special value ``*``, all remote users\n"
+"    are denied access (rarely needed ;). If deny_read is empty or not set,\n"
+"    the determination of repository access depends on the presence and\n"
+"    content of the allow_read list (see description). If both\n"
+"    deny_read and allow_read are empty or not set, then access is\n"
+"    permitted to all users by default. If the repository is being\n"
+"    served via hgwebdir, denied users will not be able to see it in\n"
+"    the list of repositories. The contents of the deny_read list have\n"
+"    priority over (are examined before) the contents of the allow_read\n"
+"    list."
+msgstr ""
+
+msgid ""
+"``descend``\n"
+"    hgwebdir indexes will not descend into subdirectories. Only "
+"repositories\n"
+"    directly in the current path will be shown (other repositories are "
+"still\n"
+"    available from the index corresponding to their containing path)."
+msgstr ""
+
+msgid ""
+"``description``\n"
+"    Textual description of the repository's purpose or contents.\n"
+"    Default is \"unknown\"."
+msgstr ""
+
+msgid ""
+"``encoding``\n"
+"    Character encoding name. Default is the current locale charset.\n"
+"    Example: \"UTF-8\""
+msgstr ""
+
+msgid ""
+"``errorlog``\n"
+"    Where to output the error log. Default is stderr."
+msgstr ""
+
+msgid ""
+"``hidden``\n"
+"    Whether to hide the repository in the hgwebdir index.\n"
+"    Default is False."
+msgstr ""
+
+msgid ""
+"``ipv6``\n"
+"    Whether to use IPv6. Default is False."
+msgstr ""
+
+msgid ""
+"``logoimg``\n"
+"    File name of the logo image that some templates display on each page.\n"
+"    The file name is relative to ``staticurl``. That is, the full path to\n"
+"    the logo image is \"staticurl/logoimg\".\n"
+"    If unset, ``hglogo.png`` will be used."
+msgstr ""
+
+msgid ""
+"``logourl``\n"
+"    Base URL to use for logos. If unset, ``http://mercurial.selenic.com/``\n"
+"    will be used."
+msgstr ""
+
+msgid ""
+"``name``\n"
+"    Repository name to use in the web interface. Default is current\n"
+"    working directory."
+msgstr ""
+
+msgid ""
+"``maxchanges``\n"
+"    Maximum number of changes to list on the changelog. Default is 10."
+msgstr ""
+
+msgid ""
+"``maxfiles``\n"
+"    Maximum number of files to list per changeset. Default is 10."
+msgstr ""
+
+msgid ""
+"``port``\n"
+"    Port to listen on. Default is 8000."
+msgstr ""
+"``port``\n"
+"    Port auf dem gehorcht wird (Standard: 8000)"
+
+msgid ""
+"``prefix``\n"
+"    Prefix path to serve from. Default is '' (server root)."
+msgstr ""
+"``prefix``\n"
+"    Pfadpräfix von dem ausgeliefert wird (Standard: Serverwurzel '/')"
+
+msgid ""
+"``push_ssl``\n"
+"    Whether to require that inbound pushes be transported over SSL to\n"
+"    prevent password sniffing. Default is True."
+msgstr ""
+
+msgid ""
+"``staticurl``\n"
+"    Base URL to use for static files. If unset, static files (e.g. the\n"
+"    hgicon.png favicon) will be served by the CGI script itself. Use\n"
+"    this setting to serve them directly with the HTTP server.\n"
+"    Example: ``http://hgserver/static/``."
+msgstr ""
+
+msgid ""
+"``stripes``\n"
+"    How many lines a \"zebra stripe\" should span in multiline output.\n"
+"    Default is 1; set to 0 to disable."
+msgstr ""
+
+msgid ""
+"``style``\n"
+"    Which template map style to use."
+msgstr ""
+"``style``\n"
+"    Zu verwendender Stil"
+
+msgid ""
+"``templates``\n"
+"    Where to find the HTML templates. Default is install path.\n"
+msgstr ""
 
 msgid "Some commands allow the user to specify a date, e.g.:"
 msgstr "Einige Befehle erlauben dem Benutzer ein Datum anzugeben, z.B.:"
@@ -13121,11 +15478,9 @@
 "- backout, commit, import, tag: Angabe des Versionsdatums.\n"
 "- log, revert, update: Selektion von Revisionen anhand ihres Datums."
 
-#, fuzzy
 msgid "Many date formats are valid. Here are some examples:"
-msgstr "Viele Datumsformate sind erlaubt. Hier einige Beispiele::"
-
-#, fuzzy
+msgstr "Viele Datumsformate sind erlaubt. Hier einige Beispiele:"
+
 msgid ""
 "- ``Wed Dec 6 13:18:29 2006`` (local timezone assumed)\n"
 "- ``Dec 6 13:18 -0600`` (year assumed, time offset provided)\n"
@@ -13141,54 +15496,50 @@
 "- ``12/6``\n"
 "- ``12/6/6`` (Dec 6 2006)"
 msgstr ""
-"  \"Wed Dec 6 13:18:29 2006\" (Lokale Zeitzone angenommen)\n"
-"  \"Dec 6 13:18 -0600\" (Jahr angenommen, Zeitverschiebung angegeben)\n"
-"  \"Dec 6 13:18 UTC\" (UTC und GMT sind Aliase für +0000)\n"
-"  \"Dec 6\" (Mitternacht)\n"
-"  \"13:18\" (Heute angenommen)\n"
-"  \"3:39\" (3:39 morgens angenommen)\n"
-"  \"3:39pm\" (15:39)\n"
-"  \"2006-12-06 13:18:29\" (ISO 8601 format)\n"
-"  \"2006-12-6 13:18\"\n"
-"  \"2006-12-6\"\n"
-"  \"12-6\"\n"
-"  \"12/6\"\n"
-"  \"12/6/6\" (Dec 6 2006)"
-
-#, fuzzy
+"  ``Wed Dec 6 13:18:29 2006`` (Lokale Zeitzone angenommen)\n"
+"  ``Dec 6 13:18 -0600`` (Jahr angenommen, Zeitverschiebung angegeben)\n"
+"  ``Dec 6 13:18 UTC`` (UTC und GMT sind Aliase für +0000)\n"
+"  ``Dec 6`` (Mitternacht)\n"
+"  ``13:18`` (Heute angenommen)\n"
+"  ``3:39`` (3:39 morgens angenommen)\n"
+"  ``3:39pm`` (15:39)\n"
+"  ``2006-12-06 13:18:29`` (ISO 8601 format)\n"
+"  ``2006-12-6 13:18``\n"
+"  ``2006-12-6``\n"
+"  ``12-6``\n"
+"  ``12/6``\n"
+"  ``12/6/6`` (Dec 6 2006)"
+
 msgid "Lastly, there is Mercurial's internal format:"
-msgstr "Schließlich gibt es Mercurials internes Format::"
-
-#, fuzzy
+msgstr "Schließlich gibt es Mercurials internes Format:"
+
 msgid "- ``1165432709 0`` (Wed Dec 6 13:18:29 2006 UTC)"
-msgstr "  \"1165432709 0\" (Wed Dec 6 13:18:29 2006 UTC)"
-
-msgid ""
-"This is the internal representation format for dates. unixtime is the\n"
-"number of seconds since the epoch (1970-01-01 00:00 UTC). offset is\n"
-"the offset of the local timezone, in seconds west of UTC (negative if\n"
-"the timezone is east of UTC)."
+msgstr "-  ``1165432709 0`` (Wed Dec 6 13:18:29 2006 UTC)"
+
+msgid ""
+"This is the internal representation format for dates. The first number\n"
+"is the number of seconds since the epoch (1970-01-01 00:00 UTC). The\n"
+"second is the offset of the local timezone, in seconds west of UTC\n"
+"(negative if the timezone is east of UTC)."
 msgstr ""
 "Dies ist das interne Darstellungsformat für Daten. \"Unixzeit\" ist die\n"
 "Anzahl von Sekunden seit der UNIX Epoche (1970-01-01 00:00 UTC).\n"
 "Abgesetzt davon steht die Verschiebung zur lokalen Zeitzone in Sekunden\n"
 "westlich der UTC (negativ wenn die Zeitzone östlich der UTC ist)."
 
-#, fuzzy
 msgid "The log command also accepts date ranges:"
-msgstr "Der log-Befehl akzeptiert auch Datumsbereiche::"
-
-#, fuzzy
-msgid ""
-"- ``<{datetime}`` - at or before a given date/time\n"
-"- ``>{datetime}`` - on or after a given date/time\n"
-"- ``{datetime} to {datetime}`` - a date range, inclusive\n"
-"- ``-{days}`` - within a given number of days of today\n"
-msgstr ""
-"  \"<{datetime}\" - an oder vor einem/r angegebenen Datum/Uhrzeit\n"
-"  \">{datetime}\" - zu oder nach einem/r angegebenen Datum/Uhrzeit\n"
-"  \"{datetime} to {datetime}\" - ein Datumsbereich, inklusive\n"
-"  \"-{tage}\" - innerhalb der angegebenen Anzahl von Tagen vor heute\n"
+msgstr "Der log-Befehl akzeptiert auch Datumsbereiche:"
+
+msgid ""
+"- ``<DATE`` - at or before a given date/time\n"
+"- ``>DATE`` - on or after a given date/time\n"
+"- ``DATE to DATE`` - a date range, inclusive\n"
+"- ``-DAYS`` - within a given number of days of today\n"
+msgstr ""
+"  ``<DATUM`` - an oder vor einem/r angegebenen Datum/Uhrzeit\n"
+"  ``>DATUM`` - zu oder nach einem/r angegebenen Datum/Uhrzeit\n"
+"  ``DATUM to DATUM`` - ein Datumsbereich, inklusive\n"
+"  ``-TAGE`` - innerhalb der angegebenen Anzahl von Tagen vor heute\n"
 
 msgid ""
 "Mercurial's default format for showing changes between two versions of\n"
@@ -13229,7 +15580,6 @@
 "standardmäßig erzeugt, da einige weit verbreitete Werkzeuge es noch\n"
 "nicht unterstützen."
 
-#, fuzzy
 msgid ""
 "This means that when generating diffs from a Mercurial repository\n"
 "(e.g. with :hg:`export`), you should be careful about things like file\n"
@@ -13240,14 +15590,13 @@
 "format for communicating changes."
 msgstr ""
 "Das bedeutet, dass beim Erzeugen von Diffs für ein Mercurial\n"
-"Projektarchiv (z.B. mit \"hg export\") auf Operationen wie Kopieren,\n"
+"Projektarchiv (z.B. mit :hg:`export`) auf Operationen wie Kopieren,\n"
 "Verschieben und die anderen oben genannten Dinge achten sollte,\n"
 "da beim Anwenden eines Standard-Diffs auf ein anderes Projektarchiv\n"
 "diese Zusatzinformationen verlorengehen. Mercurials interne Operationen\n"
-"(wie Push und Pull) sind davon nicht betroffen, da sie über ein\n"
-"internes, binäres Format zur Kommunikation verwenden."
-
-#, fuzzy
+"(wie Push und Pull) sind davon nicht betroffen, da sie ein internes,\n"
+"binäres Format zur Kommunikation verwenden."
+
 msgid ""
 "To make Mercurial produce the git extended diff format, use the --git\n"
 "option available for many commands, or set 'git = True' in the [diff]\n"
@@ -13256,9 +15605,10 @@
 msgstr ""
 "Um Mercurial dazu zu bringen, das erweiterte Git-Format zu erzeugen,\n"
 "kann man entweder den für viele Befehle verfügbaren Schalter --git\n"
-"verwenden werden oder 'git = True' in der Sektion [diff] in der\n"
-"hgrc angeben. Wenn Diffs in diesem Format importiert oder mit der mq\n"
-"Erweiterung genutzt werden, muss diese Option nicht angegeben werden.\n"
+"verwenden werden oder 'git = True' im Abschnitt [diff] in der\n"
+"Konfigurationsdatei angeben. Wenn Diffs in diesem Format importiert oder\n"
+"mit der mq Erweiterung genutzt werden, muss diese Option nicht angegeben\n"
+"werden.\n"
 
 msgid ""
 "HG\n"
@@ -13284,9 +15634,8 @@
 "    Dies ist der Name des Editors, der zum Bearbeiten der    Versions-"
 "Meldung verwendet wird. Siehe auch EDITOR."
 
-#, fuzzy
 msgid "    (deprecated, use configuration file)"
-msgstr "    (veraltet, benutze .hgrc)"
+msgstr "    (veraltet, benutze Konfigurationsdatei)"
 
 msgid ""
 "HGENCODING\n"
@@ -13339,7 +15688,6 @@
 "    soll. Das Programm wird mit drei Argumenten aufgerufen: die lokale\n"
 "    Datei, die entfernte Datei und die Vorgängerdatei."
 
-#, fuzzy
 msgid ""
 "HGRCPATH\n"
 "    A list of files or directories to search for configuration\n"
@@ -13348,8 +15696,9 @@
 "    the .hg/hgrc from the current repository is read."
 msgstr ""
 "HGRCPATH\n"
-"    Eine Liste von Dateien oder Verzeichnissen, in denen nach hgrc-\n"
-"    Dateien gesucht werden soll. Als Trenner zwischen zwei Elementen\n"
+"    Eine Liste von Dateien oder Verzeichnissen, in denen nach "
+"Konfigurations-\n"
+"    dateien gesucht werden soll. Als Trenner zwischen zwei Elementen\n"
 "    dient \":\" unter Unix und \";\" unter Windows. Wenn HGRCPATH nicht\n"
 "    gesetzt ist, wird der plattformspezifische Standardwert verwendet.\n"
 "    Wenn die Variable gesetzt, aber leer ist, wird nur .hg/hgrc aus dem\n"
@@ -13381,6 +15730,18 @@
 msgstr ""
 
 msgid ""
+"HGPLAINEXCEPT\n"
+"    This is a comma-separated list of features to preserve when\n"
+"    HGPLAIN is enabled. Currently the only value supported is \"i18n\",\n"
+"    which preserves internationalization in plain mode."
+msgstr ""
+
+msgid ""
+"    Setting HGPLAINEXCEPT to anything (even an empty string) will\n"
+"    enable plain mode."
+msgstr ""
+
+msgid ""
 "HGUSER\n"
 "    This is the string used as the author of a commit. If not set,\n"
 "    available values will be considered in this order:"
@@ -13390,7 +15751,6 @@
 "    gesetzt ist, werden die verfügbaren Werte in der folgenden\n"
 "    Reihenfolge ausgewertet:"
 
-#, fuzzy
 msgid ""
 "    - HGUSER (deprecated)\n"
 "    - configuration files from the HGRCPATH\n"
@@ -13399,7 +15759,7 @@
 "    - LOGNAME (with ``@hostname`` appended)"
 msgstr ""
 "    - HGUSER (veraltet)\n"
-"    - hgrc-Dateien aus dem HGRCPATH\n"
+"    - Konfigurationsdateien aus dem HGRCPATH\n"
 "    - EMAIL\n"
 "    - Wert aus einer ineraktiven Eingabeaufforderung\n"
 "    - LOGNAME (mit angefügtem ``@hostname``)"
@@ -13481,7 +15841,6 @@
 "sein; oder sie verändern das übliche Verhalten des Kerns von Mercurial.\n"
 "Daher müssen Erweiterungen erst vom Benutzer bei Bedarf aktiviert werden."
 
-#, fuzzy
 msgid ""
 "To enable the \"foo\" extension, either shipped with Mercurial or in the\n"
 "Python search path, create an entry for it in your configuration file,\n"
@@ -13489,7 +15848,7 @@
 msgstr ""
 "Um die Erweiterung \"foo\", die entweder mit Mercurial ausgeliefert wird\n"
 "oder sich im Python-Suchpfad befindet, zu aktivieren, erstellen Sie einen\n"
-"Eintrag wie den folgenden in Ihrer hgrc::"
+"Eintrag wie den folgenden in Ihrer Konfigurationsdatei::"
 
 msgid ""
 "  [extensions]\n"
@@ -13508,13 +15867,12 @@
 "  [extensions]\n"
 "  meinefunktion = ~/.hgext/meinefunktion.py"
 
-#, fuzzy
 msgid ""
 "To explicitly disable an extension enabled in a configuration file of\n"
 "broader scope, prepend its path with !::"
 msgstr ""
 "Um eine Erweiterung explizit zu deaktivieren, die von einer allgemeineren\n"
-"hgrc aktiviert wurde, setzen Sie ein ! vor den Pfad::"
+"Konfigurationsdatei aktiviert wurde, setzen Sie ein ! vor den Pfad::"
 
 msgid ""
 "  [extensions]\n"
@@ -13530,6 +15888,129 @@
 "  baz = !\n"
 
 msgid ""
+"Mercurial supports a functional language for selecting a set of\n"
+"files. "
+msgstr ""
+"Mercurial unterstützt eine funktionale Sprache, um eine Liste von\n"
+"Dateien auszuwählen."
+
+msgid ""
+"Like other file patterns, this pattern type is indicated by a prefix,\n"
+"'set:'. The language supports a number of predicates which are joined\n"
+"by infix operators. Parenthesis can be used for grouping."
+msgstr ""
+"Dieses Muster ist (wie andere Dateimuster) durch ein Präfix angegeben:\n"
+"'set:'. Die Sprache unterstützt eine Reihe von Prädikaten, die über Infix-\n"
+"Operatoren miteinander verbunden werden. Klammern können zur\n"
+"Gruppierung verwendet werden."
+
+msgid ""
+"Identifiers such as filenames or patterns must be quoted with single\n"
+"or double quotes if they contain characters outside of\n"
+"``[.*{}[]?/\\_a-zA-Z0-9\\x80-\\xff]`` or if they match one of the\n"
+"predefined predicates. This generally applies to file patterns other\n"
+"than globs and arguments for predicates."
+msgstr ""
+"Bezeichner wie Dateinamen oder -muster müssen mit einfachen oder doppelten\n"
+"Anführungszeichen umgeben werden, wenn sie Zeichen außerhalb von\n"
+"``[._a-zA-Z0-9\\x80-\\xff]`` oder wenn sie einem der vordefinierten\n"
+"Prädikate entsprechen. Sonderzeichen können in Bezeichnern mit\n"
+"Anführungszeichen verwendet werden, indem sie \\-maskiert werden, z.B.\n"
+"wird ``\\n`` als Zeilenumbruch interpretiert."
+
+msgid ""
+"Special characters can be used in quoted identifiers by escaping them,\n"
+"e.g., ``\\n`` is interpreted as a newline. To prevent them from being\n"
+"interpreted, strings can be prefixed with ``r``, e.g. ``r'...'``."
+msgstr ""
+
+msgid "There is a single prefix operator:"
+msgstr "Es gibt einen einzigen Präfix-Operator:"
+
+msgid ""
+"``not x``\n"
+"  Files not in x. Short form is ``! x``."
+msgstr ""
+"``not x``\n"
+"  Änderungssätze, die nicht in x enthalten sind. Kurzform ist ``! x``."
+
+msgid "These are the supported infix operators:"
+msgstr "Dies sind die unterstützten Infix-Operatoren:"
+
+msgid ""
+"``x and y``\n"
+"  The intersection of files in x and y. Short form is ``x & y``."
+msgstr ""
+"``x and y``\n"
+"  Die Schnittmenge der Änderungssätze aus x und y. Kurzform ist ``x & y``."
+
+msgid ""
+"``x or y``\n"
+"  The union of files in x and y. There are two alternative short\n"
+"  forms: ``x | y`` and ``x + y``."
+msgstr ""
+"``x or y``\n"
+"  Die Vereinigung der Änderungssätze aus x und y. Es gibt zwei\n"
+"  alternative Kurzformen: ``x | y`` und ``x + y``."
+
+msgid ""
+"``x - y``\n"
+"  Files in x but not in y."
+msgstr ""
+"``x - y``\n"
+"  Änderungssätze in x, aber nicht in y."
+
+msgid "The following predicates are supported:"
+msgstr "Die folgenden Prädikate werden unterstützt:"
+
+msgid ".. predicatesmarker"
+msgstr ""
+
+msgid "Some sample queries:"
+msgstr "Einige Beispiel-Anfragen:"
+
+msgid ""
+"- Show status of files that appear to be binary in the working directory::"
+msgstr ""
+"- Zeigt den Status von als binär erkannten Dateien im Arbeitsverzeichnis::"
+
+msgid "    hg status -A \"set:binary()\""
+msgstr ""
+
+msgid "- Forget files that are in .hgignore but are already tracked::"
+msgstr "- Vergiss Dateien die in .hgignore, aber bereits versioniert sind::"
+
+msgid "    hg forget \"set:hgignore() and not ignored()\""
+msgstr ""
+
+msgid "- Find text files that contain a string::"
+msgstr ""
+
+msgid "    hg locate \"set:grep(magic) and not binary()\""
+msgstr ""
+
+msgid "- Find C files in a non-standard encoding::"
+msgstr ""
+
+msgid "    hg locate \"set:**.c and not encoding(ascii)\""
+msgstr ""
+
+msgid "- Revert copies of large binary files::"
+msgstr ""
+
+msgid "    hg revert \"set:copied() and binary() and size('>1M')\""
+msgstr ""
+
+msgid "- Remove files listed in foo.lst that contain the letter a or b::"
+msgstr ""
+
+msgid "    hg remove \"set: 'listfile:foo.lst' and (**a* or **b*)\""
+msgstr ""
+
+msgid "See also :hg:`help patterns`.\n"
+msgstr ""
+
+msgid ""
 "Ancestor\n"
 "    Any changeset that can be reached by an unbroken chain of parent\n"
 "    changesets from a given changeset. More precisely, the ancestors\n"
@@ -13539,6 +16020,32 @@
 msgstr ""
 
 msgid ""
+"Bookmark\n"
+"    Bookmarks are pointers to certain commits that move when\n"
+"    committing. They are similar to tags in that it is possible to use\n"
+"    bookmark names in all places where Mercurial expects a changeset\n"
+"    ID, e.g., with :hg:`update`. Unlike tags, bookmarks move along\n"
+"    when you make a commit."
+msgstr ""
+"Lesezeichen\n"
+"    Lesezeichen sind Zeiger auf bestimmte Versionen, die mitwandern,\n"
+"    wenn eine neuen Version erzeugt wird. Ähnlich wie Etiketten, können\n"
+"    Lesezeichen überall, wo Mercurial eine Änderungssatz-ID erwartet\n"
+"    angeben, z.B. bei :hg:`update`. Im Unterschied zu Etiketten wandern\n"
+"    Lesezeichen auf neue erstellte Revisionen im Zweig."
+
+msgid ""
+"    Bookmarks can be renamed, copied and deleted. Bookmarks are local,\n"
+"    unless they are explicitly pushed or pulled between repositories.\n"
+"    Pushing and pulling bookmarks allow you to collaborate with others\n"
+"    on a branch without creating a named branch."
+msgstr ""
+"    Lesezeichen können umbenannt, kopiert und gelöscht werden. Sie sind\n"
+"    nur lokal, wenn sie nicht explizit zwischen Archiven übertragen werden.\n"
+"    Die Übertragung von Lesezeichen (push oder pull) erlaubt die Zusammen-\n"
+"    arbeit auf einem Entwicklungszweig, ohne ihn als Zweig zu benennen."
+
+msgid ""
 "Branch\n"
 "    (Noun) A child changeset that has been created from a parent that\n"
 "    is not a head. These are known as topological branches, see\n"
@@ -13690,11 +16197,12 @@
 msgid "    Example: \"I'm using checkout X.\""
 msgstr ""
 
-#, fuzzy
 msgid ""
 "    (Verb) Updating the working directory to a specific changeset. See\n"
 "    :hg:`help update`."
-msgstr "    Hebt das Arbeitsverzeichnis auf die angegebene Revision an."
+msgstr ""
+"    (Verb) Anheben des Arbeitsverzeichnisses auf die angegebene Revision.\n"
+"    Siehe :hg:`help update`."
 
 msgid "    Example: \"I'm going to check out changeset X.\""
 msgstr ""
@@ -13827,40 +16335,24 @@
 "    repository head, depending on the context. See 'Head, branch' and\n"
 "    'Head, repository' for specific definitions."
 msgstr ""
-
-#, fuzzy
+"Kopf\n"
+"    Der Begriff 'Kopf' bezeichnet je nach Kontext einen Zweigkopf oder\n"
+"    einen Archivkopf. Siehe 'Kopf, Zweig' und 'Kopf, Archiv' für die\n"
+"    entsprechende Definition."
+
 msgid ""
 "    Heads are where development generally takes place and are the\n"
 "    usual targets for update and merge operations."
 msgstr ""
-"Zeigt die Köpfe des Archivs oder von Entwicklungszweigen\n"
-"\n"
-"    Ohne Argumente werden alle Köpfe des Archivs angezeigt.\n"
-"\n"
-"    Archivköpfe sind Revisionen, die keine Kinder haben. Typischerweise "
-"geht\n"
-"    die Entwicklung hier weiter und die Köpfe sind häufig Ziel von\n"
-"    Aktualisierungen und Zusammenführungen.\n"
-"\n"
-"    Wenn eine oder mehrere REV Argumente gegeben sind, werden die Köpfe von\n"
-"    den benannten Zweigen dieser Revisionen angezeigt. Der Name des Zweigs\n"
-"    wird auch das Zweigetikett der Revision genannt.\n"
-"\n"
-"    Zweigköpfe sind Revisionen eines bestimmten Zweigs, die keine Kinder\n"
-"    im selben Zweig besitzen. Dies kann ein \"echter\" Kopf sein, oder die\n"
-"    letzte Revision bevor ein neuer Zweig erstellt wurde. Falls kein Kopf\n"
-"    eines Zweigs ein echter Kopf ist, gilt der Zweig als inaktiv. Zweige\n"
-"    die mit dem Übernahmeoption \"--close-branch\" geschlossen wurden,\n"
-"    werden nur mit dem -c/--closed Schalter angezeigt.\n"
-"\n"
-"    Bei Angabe einer STARTREV werden nur solche Köpfe (oder Zweigköpfe)\n"
-"    angezeigt, die Nachfahren der gegebenen Revision sind.\n"
-"    "
+"    Typischerweise findet die Entwicklung an Köpfen statt und sie sind\n"
+"    häufig Ziel von Aktualisierungen und Zusammenführungen."
 
 msgid ""
 "Head, branch\n"
 "    A changeset with no descendants on the same named branch."
 msgstr ""
+"Kopf, Zweig\n"
+"    Ein Änderungssatz ohne Nachfahren im selben benannten Zweig."
 
 msgid ""
 "Head, closed branch\n"
@@ -13869,16 +16361,25 @@
 "    closed when all its heads are closed and consequently is not\n"
 "    listed by :hg:`branches`."
 msgstr ""
+"Kopf, geschlossener Zweig\n"
+"    Ein Änderungssatz, der einen Zweig als nunmehr uninteressant markiert.\n"
+"    Der (schliessende) Kopf wird nicht mehr von :hg:`heads` angezeigt.\n"
+"    Ein Zweig gilt als geschlossen, wenn all dessen Köpfe geschlossen sind,\n"
+"    und wird nicht mehr von :hg:`branches` gezeigt."
 
 msgid ""
 "Head, repository\n"
 "    A topological head which has not been closed."
 msgstr ""
+"Kopf, Archiv\n"
+"    Ein topologischer Kopf, der noch nicht geschlossen wurde."
 
 msgid ""
 "Head, topological\n"
 "    A changeset with no children in the repository."
 msgstr ""
+"Kopf, topologisch\n"
+"    Ein Änderungssatz ohne Nachfahren im Archiv."
 
 msgid ""
 "History, immutable\n"
@@ -13921,11 +16422,12 @@
 "    as a merge changeset, bringing two branches together in the DAG."
 msgstr ""
 
-#, fuzzy
 msgid ""
 "Named branch\n"
 "    See 'Branch, named'."
-msgstr "Setzt Branchnamen zum Namen des Vorgängers zurück"
+msgstr ""
+"Benannter Zweig\n"
+"    Siehe 'Zweig, benannt'."
 
 msgid ""
 "Null changeset\n"
@@ -14041,6 +16543,14 @@
 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"
+"    :hg:`update`. The creation of a tag is stored in the history and\n"
+"    will thus automatically be shared with other using push and pull."
+msgstr ""
+
+msgid ""
 "Tip\n"
 "    The changeset with the highest revision number. It is the changeset\n"
 "    most recently added in a repository."
@@ -14077,11 +16587,141 @@
 "    See 'Directory, working'."
 msgstr ""
 
-#, fuzzy
 msgid ""
 "Working directory parent\n"
 "    See 'Parent, working directory'.\n"
-msgstr "Setzt die Vorgängerversionen des Arbeitsverzeichnisses manuell"
+msgstr ""
+"Vorfahr des Arbeitsverzeichnisses\n"
+"    Siehe 'Vorfahr, Arbeitsverzeichnisses'.\n"
+
+msgid ""
+"Synopsis\n"
+"--------"
+msgstr ""
+"Zusammenfassung\n"
+"-------"
+
+msgid ""
+"The Mercurial system uses a file called ``.hgignore`` in the root\n"
+"directory of a repository to control its behavior when it searches\n"
+"for files that it is not currently tracking."
+msgstr ""
+
+msgid ""
+"Description\n"
+"-----------"
+msgstr ""
+"Beschreibung\n"
+"-----------"
+
+msgid ""
+"The working directory of a Mercurial repository will often contain\n"
+"files that should not be tracked by Mercurial. These include backup\n"
+"files created by editors and build products created by compilers.\n"
+"These files can be ignored by listing them in a ``.hgignore`` file in\n"
+"the root of the working directory. The ``.hgignore`` file must be\n"
+"created manually. It is typically put under version control, so that\n"
+"the settings will propagate to other repositories with push and pull."
+msgstr ""
+
+msgid ""
+"An untracked file is ignored if its path relative to the repository\n"
+"root directory, or any prefix path of that path, is matched against\n"
+"any pattern in ``.hgignore``."
+msgstr ""
+
+msgid ""
+"For example, say we have an untracked file, ``file.c``, at\n"
+"``a/b/file.c`` inside our repository. Mercurial will ignore ``file.c``\n"
+"if any pattern in ``.hgignore`` matches ``a/b/file.c``, ``a/b`` or ``a``."
+msgstr ""
+
+msgid ""
+"In addition, a Mercurial configuration file can reference a set of\n"
+"per-user or global ignore files. See the ``ignore`` configuration\n"
+"key on the ``[ui]`` section of :hg:`help config` for details of how to\n"
+"configure these files."
+msgstr ""
+
+msgid ""
+"To control Mercurial's handling of files that it manages, many\n"
+"commands support the ``-I`` and ``-X`` options; see\n"
+":hg:`help <command>` and :hg:`help patterns` for details."
+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"
+"is treated as an escape character."
+msgstr ""
+"Eine ignore-Datei ist eine Textdatei, die aus einer Liste von Patterns "
+"besteht,\n"
+"mit einem Ausdruck pro Zeile. Leere Zeilen werden übersprungen.\n"
+"Das ``#``-Zeichen wird als Kommentarzeichen behandelt und das \n"
+"``\\``-Zeichen als Escape-Zeichen."
+
+msgid ""
+"Mercurial supports several pattern syntaxes. The default syntax used\n"
+"is Python/Perl-style regular expressions."
+msgstr ""
+"Mercurial unterstützt verschiedene Pattern-Syntaxen. Im Normalfall\n"
+"werden Python/Perl-artige Reguläre Ausdrücke verwendet."
+
+msgid "To change the syntax used, use a line of the following form::"
+msgstr ""
+
+msgid "  syntax: NAME"
+msgstr "  Syntax: NAME"
+
+msgid "where ``NAME`` is one of the following:"
+msgstr "wobei ``NAME`` einer der folgenden ist:"
+
+msgid ""
+"``regexp``\n"
+"  Regular expression, Python/Perl syntax.\n"
+"``glob``\n"
+"  Shell-style glob."
+msgstr ""
+
+msgid ""
+"The chosen syntax stays in effect when parsing all patterns that\n"
+"follow, until another syntax is selected."
+msgstr ""
+"Die gewählte Syntax wird auf auf alle folgenden Patterns angewendet\n"
+"bis eine andere Syntax ausgewählt wird."
+
+msgid ""
+"Neither glob nor regexp patterns are rooted. A glob-syntax pattern of\n"
+"the form ``*.c`` will match a file ending in ``.c`` in any directory,\n"
+"and a regexp pattern of the form ``\\.c$`` will do the same. To root a\n"
+"regexp pattern, start it with ``^``."
+msgstr ""
+
+msgid ""
+"Example\n"
+"-------"
+msgstr ""
+
+msgid "Here is an example ignore file. ::"
+msgstr ""
+
+msgid ""
+"  # use glob syntax.\n"
+"  syntax: glob"
+msgstr ""
+
+msgid ""
+"  *.elc\n"
+"  *.pyc\n"
+"  *~"
+msgstr ""
+
+msgid ""
+"  # switch to regexp syntax.\n"
+"  syntax: regexp\n"
+"  ^\\.pc/\n"
+msgstr ""
 
 msgid ""
 "Mercurial's internal web server, hgweb, can serve either a single\n"
@@ -14091,8 +16731,8 @@
 msgstr ""
 
 msgid ""
-"This file uses the same syntax as hgrc configuration files, but only\n"
-"the following sections are recognized:"
+"This file uses the same syntax as other Mercurial configuration files,\n"
+"but only the following sections are recognized:"
 msgstr ""
 
 msgid ""
@@ -14103,7 +16743,8 @@
 
 msgid ""
 "The ``web`` section can specify all the settings described in the web\n"
-"section of the hgrc documentation."
+"section of the hgrc(5) documentation. See :hg:`help config` for\n"
+"information on where to find the manual page."
 msgstr ""
 
 msgid ""
@@ -14460,18 +17101,19 @@
 msgid "Regexp examples::"
 msgstr "Beispiel mit regulärem Ausdruck::"
 
-#, fuzzy
 msgid "  re:.*\\.c$      any name ending in \".c\", anywhere in the repository"
 msgstr ""
-"  re:.*\\.c$     jeder Name endend mit \".c\" überall im Projektarchiv\n"
-
-#, fuzzy
+"  re:.*\\.c$     jeder Name endend mit \".c\" überall im Projektarchiv"
+
 msgid "File examples::"
-msgstr "Glob-Beispiele::"
+msgstr "Datei-Beispiele::"
 
 msgid ""
 "  listfile:list.txt  read list from list.txt with one file pattern per line\n"
-"  listfile0:list.txt read list from list.txt with null byte delimiters\n"
+"  listfile0:list.txt read list from list.txt with null byte delimiters"
+msgstr ""
+
+msgid "See also :hg:`help filesets`.\n"
 msgstr ""
 
 msgid "Mercurial supports several ways to specify individual revisions."
@@ -14553,7 +17195,6 @@
 "Operatoren miteinander verbunden werden. Klammern können zur\n"
 "Gruppierung verwendet werden."
 
-#, fuzzy
 msgid ""
 "Identifiers such as branch names must be quoted with single or double\n"
 "quotes if they contain characters outside of\n"
@@ -14564,28 +17205,16 @@
 "Anführungszeichen umgeben werden, wenn sie Zeichen außerhalb von\n"
 "``[._a-zA-Z0-9\\x80-\\xff]`` oder wenn sie einem der vordefinierten\n"
 "Prädikate entsprechen. Sonderzeichen können in Bezeichnern mit\n"
-"Anführungszeichen verwendet werden, indem sie escaped werden, z.B.\n"
+"Anführungszeichen verwendet werden, indem sie \\-maskiert werden, z.B.\n"
 "wird ``\\n`` als Zeilenumbruch interpretiert."
 
 msgid ""
-"Special characters can be used in quoted identifiers by escaping them,\n"
-"e.g., ``\\n`` is interpreted as a newline. To prevent them from being\n"
-"interpreted, strings can be prefixed with ``r``, e.g. ``r'...'``."
-msgstr ""
-
-msgid "There is a single prefix operator:"
-msgstr "Es gibt einen einzigen Präfix-Operator:"
-
-msgid ""
 "``not x``\n"
 "  Changesets not in x. Short form is ``! x``."
 msgstr ""
 "``not x``\n"
 "  Änderungssätze, die nicht in x enthalten sind. Kurzform von ``! x``."
 
-msgid "These are the supported infix operators:"
-msgstr "Dies sind die unterstützten Infix-Operatoren:"
-
 msgid ""
 "``x::y``\n"
 "  A DAG range, meaning all changesets that are descendants of x and\n"
@@ -14636,10 +17265,61 @@
 "``x - y``\n"
 "  Änderungssätze in x, aber nicht in y."
 
-msgid "The following predicates are supported:"
-msgstr "Die folgenden Prädikate werden unterstützt:"
-
-msgid ".. predicatesmarker"
+msgid ""
+"``x^n``\n"
+"  The nth parent of x, n == 0, 1, or 2.\n"
+"  For n == 0, x; for n == 1, the first parent of each changeset in x;\n"
+"  for n == 2, the second parent of changeset in x."
+msgstr ""
+
+msgid ""
+"``x~n``\n"
+"  The nth first ancestor of x; ``x~0`` is x; ``x~3`` is ``x^^^``."
+msgstr ""
+
+msgid "There is a single postfix operator:"
+msgstr "Es gibt einen einzigen Postfix-Operator:"
+
+msgid ""
+"``x^``\n"
+"  Equivalent to ``x^1``, the first parent of each changeset in x."
+msgstr ""
+
+msgid ""
+"\n"
+"The following predicates are supported:"
+msgstr ""
+"\n"
+"Die folgenden Prädikate werden unterstützt:"
+
+msgid ""
+"New predicates (known as \"aliases\") can be defined, using any combination "
+"of\n"
+"existing predicates or other aliases. An alias definition looks like::"
+msgstr ""
+
+msgid "  <alias> = <definition>"
+msgstr ""
+
+msgid ""
+"in the ``revsetalias`` section of a Mercurial configuration file. Arguments\n"
+"of the form `$1`, `$2`, etc. are substituted from the alias into the\n"
+"definition."
+msgstr ""
+
+msgid "For example,"
+msgstr "Zum Beispiel,"
+
+msgid ""
+"  [revsetalias]\n"
+"  h = heads()\n"
+"  d($1) = sort($1, date)\n"
+"  rs($1, $2) = reverse(sort($1, $2))"
+msgstr ""
+
+msgid ""
+"defines three aliases, ``h``, ``d``, and ``rs``. ``rs(0:tip, author)`` is\n"
+"exactly equivalent to ``reverse(sort(0:tip, author))``."
 msgstr ""
 
 msgid "Command line equivalents for :hg:`log`::"
@@ -14664,13 +17344,8 @@
 "  -P x  ->  !::x\n"
 "  -l x  ->  limit(expr, x)"
 
-#, fuzzy
-msgid "Some sample queries:"
-msgstr "Einige Beispiel-Anfragen::"
-
-#, fuzzy
 msgid "- Changesets on the default branch::"
-msgstr "Zeigt nur Änderungssätze innerhalb des angegebenen Branches"
+msgstr "- Änderungssätze auf dem Standardzweig (default)::"
 
 msgid "    hg log -r \"branch(default)\""
 msgstr ""
@@ -14681,9 +17356,8 @@
 msgid "    hg log -r \"branch(default) and 1.5:: and not merge()\""
 msgstr ""
 
-#, fuzzy
 msgid "- Open branch heads::"
-msgstr "Zeigt normale und geschlossene Branch-Köpfe"
+msgstr "- Offene Zweigköpfe::"
 
 msgid "    hg log -r \"head() and not closed()\""
 msgstr ""
@@ -14696,7 +17370,7 @@
 msgid "    hg log -r \"1.3::1.5 and keyword(bug) and file('hgext/*')\""
 msgstr ""
 
-msgid "- Changesets in committed May 2008, sorted by user::"
+msgid "- Changesets committed in May 2008, sorted by user::"
 msgstr ""
 
 msgid "    hg log -r \"sort(date('May 2008'), user)\""
@@ -14715,36 +17389,51 @@
 msgid ""
 "Subrepositories let you nest external repositories or projects into a\n"
 "parent Mercurial repository, and make commands operate on them as a\n"
-"group. External Mercurial and Subversion projects are currently\n"
-"supported."
-msgstr ""
+"group."
+msgstr ""
+
+msgid ""
+"Mercurial currently supports Mercurial, Git, and Subversion\n"
+"subrepositories."
+msgstr ""
+"Mercurial unterstützt im Augenblick Mercurial-, Git- und Subversion-\n"
+"Subrepositories."
 
 msgid "Subrepositories are made of three components:"
-msgstr ""
+msgstr "Subrespositories bestehen aus drei Komponenten:"
 
 msgid ""
 "1. Nested repository checkouts. They can appear anywhere in the\n"
-"   parent working directory, and are Mercurial clones or Subversion\n"
-"   checkouts."
-msgstr ""
+"   parent working directory."
+msgstr ""
+"1. Verschachtelte Repository Checkouts. Sie können überall im\n"
+"   übergeordneten Arbeitsverzeichnis auftauchen."
 
 msgid ""
 "2. Nested repository references. They are defined in ``.hgsub`` and\n"
 "   tell where the subrepository checkouts come from. Mercurial\n"
 "   subrepositories are referenced like:"
 msgstr ""
+"2. Verschachtelte Repository References. Sie werden in  ``.hgsub``\n"
+"   definiert und geben an, wo Subrepository Checkouts herkommen.\n"
+"   Mercurial Subrepositories werden wie folgt angegeben:"
 
 msgid "     path/to/nested = https://example.com/nested/repo/path"
 msgstr ""
 
+msgid "   Git and Subversion subrepos are also supported:"
+msgstr ""
+
+msgid ""
+"     path/to/nested = [git]git://example.com/nested/repo/path\n"
+"     path/to/nested = [svn]https://example.com/nested/trunk/path"
+msgstr ""
+
 msgid ""
 "   where ``path/to/nested`` is the checkout location relatively to the\n"
 "   parent Mercurial root, and ``https://example.com/nested/repo/path``\n"
 "   is the source repository path. The source can also reference a\n"
-"   filesystem path. Subversion repositories are defined with:"
-msgstr ""
-
-msgid "     path/to/nested = [svn]https://example.com/nested/trunk/path"
+"   filesystem path."
 msgstr ""
 
 msgid ""
@@ -14766,14 +17455,14 @@
 "      The ``.hgsubstate`` file should not be edited manually."
 msgstr ""
 
-#, fuzzy
 msgid ""
 "\n"
 "Adding a Subrepository\n"
 "----------------------"
 msgstr ""
-"    Mercurial als Ziel\n"
-"    ------------------"
+"\n"
+"Hinzufügen eines Unterarchivs\n"
+"-----------------------------"
 
 msgid ""
 "If ``.hgsub`` does not exist, create it and add it to the parent\n"
@@ -14784,13 +17473,12 @@
 "``.hgsubstate`` and bind it to the committed changeset."
 msgstr ""
 
-#, fuzzy
 msgid ""
 "Synchronizing a Subrepository\n"
 "-----------------------------"
 msgstr ""
-"Zweigbasierte Zugriffskontrolle\n"
-"-------------------------------"
+"Synchronisieren eines Unterarchivs\n"
+"----------------------------------"
 
 msgid ""
 "Subrepos do not automatically track the latest changeset of their\n"
@@ -14806,30 +17494,32 @@
 "commit in the parent repository to record the new combination."
 msgstr ""
 
-#, fuzzy
 msgid ""
 "Deleting a Subrepository\n"
 "------------------------"
 msgstr ""
-"Beispiel-Konfiguration\n"
-"----------------------"
+"Löschen eines Unterarchivs\n"
+"--------------------------"
 
 msgid ""
 "To remove a subrepository from the parent repository, delete its\n"
 "reference from ``.hgsub``, then remove its files."
 msgstr ""
-
-#, fuzzy
+"Um ein Subrepository aus seinem Parent Repository zu entfernen,\n"
+"entfernen Sie seine Verweise aus ``.hgsub`` und löschen die Dateien."
+
 msgid ""
 "Interaction with Mercurial Commands\n"
 "-----------------------------------"
 msgstr ""
-"Zweigbasierte Zugriffskontrolle\n"
-"-------------------------------"
+"Interaktion mit Mercurial-Befehlen\n"
+"----------------------------------"
 
 msgid ""
 ":add: add does not recurse in subrepos unless -S/--subrepos is\n"
-"    specified. Subversion subrepositories are currently silently\n"
+"    specified.  However, if you specify the full path of a file in a\n"
+"    subrepo, it will be added even without -S/--subrepos specified.\n"
+"    Git and Subversion subrepositories are currently silently\n"
 "    ignored."
 msgstr ""
 
@@ -14840,31 +17530,37 @@
 
 msgid ""
 ":commit: commit creates a consistent snapshot of the state of the\n"
-"    entire project and its subrepositories. It does this by first\n"
-"    attempting to commit all modified subrepositories, then recording\n"
-"    their state and finally committing it in the parent\n"
-"    repository. Mercurial can be made to abort if any subrepository\n"
-"    content is modified by setting \"ui.commitsubrepos=no\" in a\n"
-"    configuration file (see :hg:`help config`)."
+"    entire project and its subrepositories. If any subrepositories\n"
+"    have been modified, Mercurial will abort.  Mercurial can be made\n"
+"    to instead commit all modified subrepositories by specifying\n"
+"    -S/--subrepos, or setting \"ui.commitsubrepos=True\" in a\n"
+"    configuration file (see :hg:`help config`).  After there are no\n"
+"    longer any modified subrepositories, it records their state and\n"
+"    finally commits it in the parent repository."
 msgstr ""
 
 msgid ""
 ":diff: diff does not recurse in subrepos unless -S/--subrepos is\n"
 "    specified. Changes are displayed as usual, on the subrepositories\n"
-"    elements. Subversion subrepositories are currently silently\n"
-"    ignored."
+"    elements. Git and Subversion subrepositories are currently\n"
+"    silently ignored."
+msgstr ""
+
+msgid ""
+":forget: forget currently only handles exact file matches in subrepos.\n"
+"    Git and Subversion subrepositories are currently silently ignored."
 msgstr ""
 
 msgid ""
 ":incoming: incoming does not recurse in subrepos unless -S/--subrepos\n"
-"    is specified. Subversion subrepositories are currently silently\n"
-"    ignored."
+"    is specified. Git and Subversion subrepositories are currently\n"
+"    silently ignored."
 msgstr ""
 
 msgid ""
 ":outgoing: outgoing does not recurse in subrepos unless -S/--subrepos\n"
-"    is specified. Subversion subrepositories are currently silently\n"
-"    ignored."
+"    is specified. Git and Subversion subrepositories are currently\n"
+"    silently ignored."
 msgstr ""
 
 msgid ""
@@ -14879,7 +17575,7 @@
 ":push: Mercurial will automatically push all subrepositories first\n"
 "    when the parent repository is being pushed. This ensures new\n"
 "    subrepository changes are available when referenced by top-level\n"
-"    repositories."
+"    repositories.  Push is a no-op for Subversion subrepositories."
 msgstr ""
 
 msgid ""
@@ -14898,13 +17594,12 @@
 "    can require network access when using subrepositories."
 msgstr ""
 
-#, fuzzy
 msgid ""
 "Remapping Subrepositories Sources\n"
 "---------------------------------"
 msgstr ""
-"Zweigbasierte Zugriffskontrolle\n"
-"-------------------------------"
+"Umleitung der Quellen von Unterarchiven\n"
+"---------------------------------------"
 
 msgid ""
 "A subrepository source location may change during a project life,\n"
@@ -14969,102 +17664,8 @@
 "ausgeführten Befehl ab. Diese Schlüsselwörter stehen üblicherweise für\n"
 "Vorlagen von \"log-ähnlichen\" Befehlen zur Verfügung:"
 
-msgid ":author: String. The unmodified author of the changeset."
-msgstr ":author: Zeichenkette. Der unveränderte Autor eines Änderungssatzes."
-
-#, fuzzy
-msgid ""
-":branch: String. The name of the branch on which the changeset was\n"
-"    committed."
-msgstr ""
-":branches: Zeichenkette. Der Name des Zweiges, in dem der Änderungssatz\n"
-"    versioniert wurde. Ist leer, wenn der Zweig-Name default ist."
-
-#, fuzzy
-msgid ""
-":branches: List of strings. The name of the branch on which the\n"
-"    changeset was committed. Will be empty if the branch name was\n"
-"    default."
-msgstr ""
-":branches: Zeichenkette. Der Name des Zweiges, in dem der Änderungssatz\n"
-"    versioniert wurde. Ist leer, wenn der Zweig-Name default ist."
-
-msgid ":children: List of strings. The children of the changeset."
-msgstr ":children: Liste von Zeichenketten. Die Kinder dieses Änderungssatzes."
-
-msgid ":date: Date information. The date when the changeset was committed."
-msgstr ""
-":date: Datumsangabe. Das Datum, wann ein Änderungssatz versioniert wurde."
-
-msgid ":desc: String. The text of the changeset description."
-msgstr ":desc: Zeichenkette. Der Text der Beschreibung eines Änderungssatzes."
-
-msgid ""
-":diffstat: String. Statistics of changes with the following format:\n"
-"    \"modified files: +added/-removed lines\""
-msgstr ""
-":diffstat: Zeichenkette. Statistik über die Änderungen in dem folgenden\n"
-"    Format: \"geänderte Dateien: +hinzugefügt/-entfernte Zeilen\""
-
-msgid ""
-":files: List of strings. All files modified, added, or removed by this\n"
-"    changeset."
-msgstr ""
-":files: Liste von Zeichenketten. Alle geänderten, hinzugefügten oder\n"
-"    gelöschten Dateien dieses Änderungssatzes."
-
-msgid ":file_adds: List of strings. Files added by this changeset."
-msgstr ":file_adds: Liste von Zeichenketten. Alle hinzugefügten Dateien."
-
-msgid ""
-":file_copies: List of strings. Files copied in this changeset with\n"
-"    their sources."
-msgstr ""
-":file_copies_switch: Liste von Zeichenketten. Dateien, die in diesem\n"
-"    Änderungssatz kopiert wurden, zusammen mit den Quelldateien."
-
-msgid ""
-":file_copies_switch: List of strings. Like \"file_copies\" but displayed\n"
-"    only if the --copied switch is set."
-msgstr ""
-":file_copies_switch: Liste von Zeichenketten. Wie \"file_copies\", wird\n"
-"    aber nur angezeigt, wenn der Schalter --copied gesetzt wurde."
-
-msgid ":file_mods: List of strings. Files modified by this changeset."
-msgstr ":file_mods: Liste von Zeichenketten. Alle geänderten Dateien."
-
-msgid ":file_dels: List of strings. Files removed by this changeset."
-msgstr ":file_dels: Liste von Zeichenketten. Alle gelöschten Dateien."
-
-msgid ""
-":node: String. The changeset identification hash, as a 40 hexadecimal\n"
-"    digit string."
-msgstr ""
-":node: Zeichenkette. Die Prüfsumme, die einen Änderungssatz identifiziert,\n"
-"    als 40 Zeichen lange hexadezimale Zeichenkette."
-
-msgid ":parents: List of strings. The parents of the changeset."
-msgstr ":parents: Liste von Zeichenketten. Die Eltern des Änderungssatzes."
-
-msgid ":rev: Integer. The repository-local changeset revision number."
-msgstr ""
-":rev: Zahl. Die für dieses Projektarchiv geltende Nummer eines\n"
-"    Änderungssatzes."
-
-msgid ":tags: List of strings. Any tags associated with the changeset."
-msgstr ""
-":tags: Liste von Zeichenketten. Alle Tags, die diesem Änderungssatz\n"
-"    zugewiesen wurden."
-
-msgid ""
-":latesttag: String. Most recent global tag in the ancestors of this\n"
-"    changeset."
-msgstr ""
-":latesttag: Zeichenkette. Aktuellstes globales Tag in den Nachfahren\n"
-"    dieses Änderungssatzes."
-
-msgid ":latesttagdistance: Integer. Longest path to the latest tag."
-msgstr ":latesttagdistance: Zahl. Längster Pfad zum aktuellsten Tag."
+msgid ".. keywordsmarker"
+msgstr ""
 
 msgid ""
 "The \"date\" keyword does not produce human-readable output. If you\n"
@@ -15093,190 +17694,12 @@
 msgid "List of filters:"
 msgstr "Liste aller Filter:"
 
-msgid ""
-":addbreaks: Any text. Add an XHTML \"<br />\" tag before the end of\n"
-"    every line except the last."
-msgstr ""
-":addbreaks: Beliebiger Text. Führt ein XHTML \"<br />\"-Tag vor das Ende\n"
-"    jeder Zeile bis auf die letzte ein."
-
-msgid ""
-":age: Date. Returns a human-readable date/time difference between the\n"
-"    given date/time and the current date/time."
-msgstr ""
-":age: Datumsangabe. Gibt eine menschenlesbare Datums- und Zeitdifferenz\n"
-"    zwischen dem gegebenen Datum und der aktuellen Zeit aus."
-
-msgid ""
-":basename: Any text. Treats the text as a path, and returns the last\n"
-"    component of the path after splitting by the path separator\n"
-"    (ignoring trailing separators). For example, \"foo/bar/baz\" becomes\n"
-"    \"baz\" and \"foo/bar//\" becomes \"bar\"."
-msgstr ""
-":basename: Beliebiger Text. Behandelt jeden Text als Pfadangabe und gibt\n"
-"    den letzten Bestandteil des Pfades nach dem Auftrennen mit dem\n"
-"    Trennzeichen für Verzeichnisse zurück (überhängende Trenner werden\n"
-"    ignoriert). Zum Beispiel wird aus \"foo/bar/baz\" dann \"baz\" und\n"
-"    \"foo/bar//\" wird zu \"bar\"."
-
-msgid ""
-":stripdir: Treat the text as path and strip a directory level, if\n"
-"    possible. For example, \"foo\" and \"foo/bar\" becomes \"foo\"."
-msgstr ""
-":stripdir: Behandelt den Text als Pfadangabe und entfernt das letzte\n"
-"    Verzeichnis, wenn möglich. Zum Beispiel wird aus \"foo\" und \"foo/bar//"
-"\" \n"
-"    dann \"bar\"."
-
-msgid ""
-":date: Date. Returns a date in a Unix date format, including the\n"
-"    timezone: \"Mon Sep 04 15:13:13 2006 0700\"."
-msgstr ""
-":date: Datumsangabe. Gibt ein Datum als Unix Datum zurück,\n"
-"    inklusive der Zeitzone: \"Mon Sep 04 15:13:13 2006 0700\"."
-
-msgid ""
-":domain: Any text. Finds the first string that looks like an email\n"
-"    address, and extracts just the domain component. Example: ``User\n"
-"    <user@example.com>`` becomes ``example.com``."
-msgstr ""
-":domain: Beliebiger Text. Findet die erste Zeichenkette, die wie eine\n"
-"    E-Mail-Adresse aussieht, und extrahiert davon die Domain-Komponente:\n"
-"    Beispiel: ``Nutzer <user@example.com>`` wird zu ``example.com``."
-
-msgid ""
-":email: Any text. Extracts the first string that looks like an email\n"
-"    address. Example: ``User <user@example.com>`` becomes\n"
-"    ``user@example.com``."
-msgstr ""
-":email: Beliebiger Text. Extrahiert die erste Zeichenkette, die wie eine\n"
-"    E-Mail-Adresse aussieht. Beispiel: ``Nutzer <user@example.com>`` wird\n"
-"    zu ``user@example.com``."
-
-msgid ""
-":escape: Any text. Replaces the special XML/XHTML characters \"&\", \"<\"\n"
-"    and \">\" with XML entities."
-msgstr ""
-":escape: Beliebiger Text. Ersetzt die besonderen XML/XHTML-Zeichen\n"
-"    \"&\", \"<\" und \">\" mit XML-Entitäten."
-
-msgid ""
-":hex: Any text. Convert a binary Mercurial node identifier into\n"
-"    its long hexadecimal representation."
-msgstr ""
-
-msgid ":fill68: Any text. Wraps the text to fit in 68 columns."
-msgstr ":fill68: Beliebiger Text. Umbricht den Text bei 68 Zeichen."
-
-msgid ":fill76: Any text. Wraps the text to fit in 76 columns."
-msgstr ":fill76: Beliebiger Text. Umbricht den Text bei 76 Zeichen."
-
-msgid ":firstline: Any text. Returns the first line of text."
-msgstr ":firstline: Beliebiger Text. Gibt die erste Zeile des Texts zurück."
-
-msgid ":nonempty: Any text. Returns '(none)' if the string is empty."
-msgstr ""
-":nonempty: Beliebiger Text. Gibt '(none)' für eine leere Zeichenkette\n"
-"    zurück."
-
-msgid ""
-":hgdate: Date. Returns the date as a pair of numbers: \"1157407993\n"
-"    25200\" (Unix timestamp, timezone offset)."
-msgstr ""
-":hgdate: Datumsangabe. Gibt das Datum als Zahlpaar zurück:\n"
-"    \"1157407993 25200\" (Unix Zeitstempel, Zeitzonenverschiebung)"
-
-msgid ""
-":isodate: Date. Returns the date in ISO 8601 format: \"2009-08-18 13:00\n"
-"    +0200\"."
-msgstr ""
-":isodate: Datumsangabe. Gibt das Datum im ISO 8601-Format zurück:\n"
-"    \"2009-08-18 13:00 +0200\"."
-
-msgid ""
-":isodatesec: Date. Returns the date in ISO 8601 format, including\n"
-"    seconds: \"2009-08-18 13:00:13 +0200\". See also the rfc3339date\n"
-"    filter."
-msgstr ""
-":isodatesec: Datumsangabe. Gibt das Datum im ISO 8601-Format inklusive\n"
-"    Sekunden zurück: \"2009-08-18 13:00 +0200\". Siehe auch den\n"
-"    rfc3339date-Filter."
-
-msgid ":localdate: Date. Converts a date to local date."
-msgstr ""
-":localdate: Datumsangabe. Konvertiert ein Datum in das lokale Datumsformat."
-
-msgid ""
-":obfuscate: Any text. Returns the input text rendered as a sequence of\n"
-"    XML entities."
-msgstr ""
-":obfuscate: Beliebiger Text. Gibt den Text als Folge von XML-Entitäten\n"
-"    zurück."
-
-msgid ":person: Any text. Returns the text before an email address."
-msgstr ""
-":person: Beliebiger Text. Gibt den Text vor einer E-Mail-Adresse zurück."
-
-msgid ""
-":rfc822date: Date. Returns a date using the same format used in email\n"
-"    headers: \"Tue, 18 Aug 2009 13:00:13 +0200\"."
-msgstr ""
-":rfc822date: Datumsangabe. Gibt das Datum im gleichen Format zurück,\n"
-"    das auch in Kopfzeilen von E-Mails verwendet wird:\n"
-"    \"Tue, 18 Aug 2009 13:00:13 +0200\"."
-
-msgid ""
-":rfc3339date: Date. Returns a date using the Internet date format\n"
-"    specified in RFC 3339: \"2009-08-18T13:00:13+02:00\"."
-msgstr ""
-":rfc3339date: Datumsangabe. Gibt das Datum im Internet-Datumsformat,\n"
-"    spezifiziert im RFC 3339, zurück: \"2009-08-18T13:00:13+02:00\"."
-
-msgid ""
-":short: Changeset hash. Returns the short form of a changeset hash,\n"
-"    i.e. a 12 hexadecimal digit string."
-msgstr ""
-":short: Prüfsumme. Gibt die Kurzform der Prüfsumme zurück, d.h.\n"
-"    als 12 Zeichen lange hexadezimale Zeichenkette."
-
-msgid ":shortdate: Date. Returns a date like \"2006-09-18\"."
-msgstr ":shortdate: Datumsangabe. Gibt ein Datum wie \"2006-09-18\" zurück."
-
-msgid ""
-":stringify: Any type. Turns the value into text by converting values into\n"
-"    text and concatenating them."
-msgstr ""
-":stringify: Beliebiger Typ. Wandelt jeden Wert in einen Text um, indem die\n"
-"    Werte in Zeichenketten konvertiert und dann aneinander gehängt werden."
-
-msgid ":strip: Any text. Strips all leading and trailing whitespace."
-msgstr ""
-":strip: Beliebiger Text. Entfernt jeden führenden und überhängenden\n"
-"    Leerraum."
-
-msgid ""
-":tabindent: Any text. Returns the text, with every line except the\n"
-"     first starting with a tab character."
-msgstr ""
-":tabindent: Beliebiger Text. Gibt den Text zurück, wobei jede Zeile bis\n"
-"    auf die erste mit einem Tabulator eingerückt ist."
-
-msgid ""
-":urlescape: Any text. Escapes all \"special\" characters. For example,\n"
-"    \"foo bar\" becomes \"foo%20bar\"."
-msgstr ""
-":urlescape: Beliebiger Text. Maskiert alle \"besonderen\" Zeichen.\n"
-"    Aus \"foo bar\" wird zum Beispiel \"foo%20bar\"."
-
-msgid ":user: Any text. Returns the user portion of an email address.\n"
-msgstr ""
-":user: Beliebiger Text. Gibt den Nutzerteil einer E-Mail-Adresse\n"
-"    (vor dem @-Zeichen) zurück.\n"
+msgid ".. filtersmarker\n"
+msgstr ""
 
 msgid "Valid URLs are of the form::"
 msgstr "Gültige URLs haben folgende Form::"
 
-#, fuzzy
 msgid ""
 "  local/filesystem/path[#revision]\n"
 "  file://local/filesystem/path[#revision]\n"
@@ -15288,17 +17711,16 @@
 "  file://lokales/dateisystem/pfad[#revision]\n"
 "  http://[nutzer[:pass]@]host[:port]/[pfad][#revision]\n"
 "  https://[nutzer[:pass]@]host[:port]/[pfad][#revision]\n"
-"  ssh://[nutzer[:pass]@]host[:port]/[pfad][#revision]"
-
-#, fuzzy
+"  ssh://[nutzer@]host[:port]/[pfad][#revision]"
+
 msgid ""
 "Paths in the local filesystem can either point to Mercurial\n"
 "repositories or to bundle files (as created by :hg:`bundle` or :hg:`\n"
 "incoming --bundle`). See also :hg:`help paths`."
 msgstr ""
 "Pfade im lokalen Dateisystem können auf ein Mercurial-Archiv oder Bündel-\n"
-"dateien verweisen (wie sie von :hg:`bundle` oder :hg: `incoming --bundle`\n"
-"erzeugt werden)."
+"dateien verweisen (wie sie von :hg:`bundle` oder :hg:`incoming --bundle`\n"
+"erzeugt werden). Siehe auch :hg:`help paths`."
 
 msgid ""
 "An optional identifier after # indicates a particular branch, tag, or\n"
@@ -15322,6 +17744,9 @@
 "Note that the security of HTTPS URLs depends on proper configuration of\n"
 "web.cacerts."
 msgstr ""
+"Beachten Sie, dass die Sicherheit von HTTPS-URLs von der richtigen "
+"Konfiguration\n"
+"von web.cacerts abhängt."
 
 msgid "Some notes about using SSH with Mercurial:"
 msgstr "Einige Hinweise zur Nutzung von SSH mit Mercurial:"
@@ -15372,7 +17797,7 @@
 "These URLs can all be stored in your configuration file with path\n"
 "aliases under the [paths] section like so::"
 msgstr ""
-"Diese URLs können alle in der hgrc als Aliase unter der Sektion [paths]\n"
+"Diese URLs können alle in der hgrc als Aliase unter dem Abschnitt [paths]\n"
 "wie folgt abgelegt werden::"
 
 msgid ""
@@ -15489,9 +17914,9 @@
 msgid "(branch merge, don't forget to commit)\n"
 msgstr "(Zusammenführen von Zweigen, vergiss nicht 'hg commit' auszuführen)\n"
 
-#, fuzzy, python-format
+#, python-format
 msgid "config file %s not found!"
-msgstr "Datei nicht gefunden!"
+msgstr "Konfigurationsdatei %s nicht gefunden!"
 
 #, python-format
 msgid "error reading %s/.hg/hgrc: %s\n"
@@ -15512,6 +17937,11 @@
 msgstr "Kann Server nicht auf '%s:%d' starten: %s"
 
 #, python-format
+msgid " %d files changed, %d insertions(+), %d deletions(-)\n"
+msgstr ""
+" %d Dateien verändert, %d Zeilen hinzugefügt(+), %d Zeilen entfernt(-)\n"
+
+#, python-format
 msgid "calling hook %s: %s\n"
 msgstr "Rufe Hook %s auf: %s\n"
 
@@ -15565,6 +17995,13 @@
 msgid "warning: %s hook %s\n"
 msgstr "Warnung: %s-Hook %s\n"
 
+msgid "kb"
+msgstr ""
+
+#, python-format
+msgid "ignoring invalid [auth] key '%s'\n"
+msgstr "Ignoriere ungültige [auth] Schlüssel '%s'\n"
+
 msgid "connection ended unexpectedly"
 msgstr "Verbindung wurde unerwartet beendet"
 
@@ -15632,16 +18069,13 @@
 msgstr "Projektarchiv %s existiert bereits"
 
 #, python-format
-msgid "requirement '%s' not supported"
-msgstr "Anforderung '%s' nicht unterstützt"
-
-#, python-format
 msgid ".hg/sharedpath points to nonexistent directory %s"
 msgstr ".hg/sharedpath zeigt auf nicht existierendes Verzeichnis %s"
 
-#, fuzzy, python-format
+#, python-format
 msgid "warning: ignoring unknown working parent %s!\n"
-msgstr "Arbeitsverzeichnis hat unbekannte Vaterversion '%s'!"
+msgstr ""
+"Warnung: Ignoriere unbekannte Elternversion %s des Arbeitsverzeichnisses!\n"
 
 #, python-format
 msgid "%r cannot be used in a tag name"
@@ -15672,33 +18106,39 @@
 msgid "no interrupted transaction available\n"
 msgstr "Keine unterbrochene Transaktion vorhanden\n"
 
-#, fuzzy, python-format
+msgid "no rollback information available\n"
+msgstr "Keine rollback-Information verfügbar\n"
+
+#, python-format
 msgid "repository tip rolled back to revision %s (undo %s: %s)\n"
-msgstr "Setze auf Revision %s zurück (%s zurücknehmen: %s)\n"
-
-#, fuzzy, python-format
+msgstr "Archivspitze (tip) auf Revision %s zurückgerollt (%s zurück: %s)\n"
+
+#, python-format
 msgid "repository tip rolled back to revision %s (undo %s)\n"
-msgstr "Setze auf Revision %s zurück (%s zurücknehmen)\n"
+msgstr "Archivspitze (tip) auf Revision %s zurückgerollt (%s zurück)\n"
 
 msgid "rolling back unknown transaction\n"
 msgstr "Setze letzte Transaktion zurück\n"
 
-#, python-format
-msgid "Named branch could not be reset, current branch still is: %s\n"
-msgstr ""
-"Benannter Zweig konnte nicht zurückgesetzt werden, aktueller Zweig ist "
-"weiterhin: %s\n"
-
-#, fuzzy, python-format
+msgid "rollback of last commit while not checked out may lose data"
+msgstr ""
+
+msgid "use -f to force"
+msgstr "Benutzen Sie -f, um dennoch fortzufahren"
+
+#, python-format
+msgid "named branch could not be reset: current branch is still '%s'\n"
+msgstr ""
+"Benannter Zweig konnte nicht zurückgesetzt werden: aktueller Zweig ist "
+"weiterhin '%s'\n"
+
+#, python-format
 msgid "working directory now based on revisions %d and %d\n"
-msgstr "Revision des Arbeitsverzeichnisses ist nicht qtip"
-
-#, fuzzy, python-format
+msgstr "Arbeitsverzeichnis basiert nun auf Revisionen %d und %d\n"
+
+#, python-format
 msgid "working directory now based on revision %d\n"
-msgstr "Führt das Arbeitsverzeichnis mit einer anderen Revision zusammen"
-
-msgid "no rollback information available\n"
-msgstr "Keine rollback-Information verfügbar\n"
+msgstr "Arbeitsverzeichnis basiert nun auf Revision %d\n"
 
 #, python-format
 msgid "waiting for lock on %s held by %r\n"
@@ -15724,9 +18164,8 @@
 msgid "can't commit subrepos without .hgsub"
 msgstr "Kann Unterarchiv nicht ohne .hgsub speichern"
 
-#, fuzzy, python-format
-msgid "uncommitted changes in subrepo %s"
-msgstr "Änderungssatz %d erzeugt:%s\n"
+msgid "use --subrepos for recursive commit"
+msgstr ""
 
 msgid "file not found!"
 msgstr "Datei nicht gefunden!"
@@ -15737,9 +18176,8 @@
 msgid "file not tracked!"
 msgstr "Datei wird nicht versioniert!"
 
-#, fuzzy
 msgid "unresolved merge conflicts (see hg help resolve)"
-msgstr "Ungelöster Konflikt beim Zusammenführen (siehe hg resolve)"
+msgstr "Ungelöste Konflikte beim Zusammenführen (siehe :hg:`help resolve`)"
 
 #, python-format
 msgid "committing subrepository %s\n"
@@ -15764,20 +18202,11 @@
 "changegroupsubset nicht unterstützt."
 
 #, python-format
-msgid "updating bookmark %s\n"
-msgstr "Aktualisiere Lesezeichen %s\n"
-
-#, python-format
-msgid "not updating divergent bookmark %s\n"
-msgstr "Aktualisiere nicht divergierendes Lesezeichen %s\n"
-
-#, python-format
 msgid "%d changesets found\n"
 msgstr "%d Änderungssätze gefunden\n"
 
-#, fuzzy
 msgid "bundling"
-msgstr "Bündle Dateien"
+msgstr "Bündle"
 
 msgid "manifests"
 msgstr "Manifeste"
@@ -15842,9 +18271,8 @@
 msgid "can't use TLS: Python SSL support not installed"
 msgstr "Kann TLS nicht benutzen: SSL-Unterstützung nicht in Python installiert"
 
-#, fuzzy
 msgid "(using smtps)\n"
-msgstr "(benutze TLS)\n"
+msgstr "(benutze SMTPS)\n"
 
 msgid "smtp.host not configured - cannot send mail"
 msgstr "smtp.host nicht konfiguriert -- kann keine E-Mail versenden"
@@ -15853,9 +18281,8 @@
 msgid "sending mail: smtp host %s, port %s\n"
 msgstr "Sende E-Mail: SMTP-Host %s, Port %s\n"
 
-#, fuzzy
 msgid "(using starttls)\n"
-msgstr "(benutze TLS)\n"
+msgstr "(benutze starttls)\n"
 
 #, python-format
 msgid "(authenticating to mail server as %s)\n"
@@ -15888,6 +18315,10 @@
 msgstr "Ungültige lokale Adresse: %s"
 
 #, python-format
+msgid "'\\n' and '\\r' disallowed in filenames: %r"
+msgstr "'\\n' und '\\r' sind nicht in Dateinamen erlaubt: %r"
+
+#, python-format
 msgid "failed to remove %s from manifest"
 msgstr "Konnte %s nicht aus dem Manifest entfernen"
 
@@ -15898,9 +18329,9 @@
 msgid "invalid pattern"
 msgstr "Ungültiges Muster"
 
-#, fuzzy, python-format
+#, python-format
 msgid "unable to read file list (%s)"
-msgstr "Fehler beim Lesen der Datei %s"
+msgstr "Kann Dateiliste nicht lesen (%s)"
 
 #, python-format
 msgid "diff context lines count must be an integer, not %r"
@@ -15941,7 +18372,7 @@
 " local changed %s which remote deleted\n"
 "use (c)hanged version or (d)elete?"
 msgstr ""
-" Lokales Archiv ändert %s, aber lokales löscht.\n"
+" Lokales Archiv ändert %s, aber entferntes löscht.\n"
 "Nutze (c) geänderte Version oder (d) lösche?"
 
 msgid "&Changed"
@@ -15980,10 +18411,6 @@
 msgid "note: possible conflict - %s was renamed multiple times to:\n"
 msgstr ""
 
-#, python-format
-msgid "branch %s not found"
-msgstr "Zweig '%s' nicht gefunden"
-
 msgid "merging with a working directory ancestor has no effect"
 msgstr "Zusammenführen mit einem Vorfahren der Arbeitskopie hat keinen Effekt"
 
@@ -15997,57 +18424,67 @@
 "Ausstehende nicht versionierte Änderungen (nutze 'hg status' zur Auflistung "
 "der Änderungen)"
 
-#, fuzzy, python-format
+#, python-format
 msgid "outstanding uncommitted changes in subrepository '%s'"
-msgstr "Speichere Unterarchiv %s\n"
-
-#, fuzzy
+msgstr "Ausstehende, unversionierte Änderungen im Unterarchiv '%s'"
+
 msgid "crosses branches (merge branches or use --clean to discard changes)"
 msgstr ""
-"kreuzt Zweige (nutze 'hg merge' zum Zusammenführen oder 'hg update -C' um "
+"kreuzt Zweige (nutze :hg:`merge` zum Zusammenführen oder :hg:`update -C` um "
 "die Änderungen zu verwerfen)"
 
-#, fuzzy
-msgid "crosses branches (merge branches or use --check to force update)"
-msgstr "kreuzt Zweige (nutze 'hg merge' oder 'hg update -c')"
+msgid "crosses branches (merge branches or update --check to force update)"
+msgstr ""
+"kreuzt Zweige (nutze :hg:`merge` oder :hg:`update --check` zum Erzwingen)"
 
 msgid "Attention:"
-msgstr ""
+msgstr "Obacht:"
 
 msgid "Caution:"
-msgstr ""
+msgstr "Vorsicht:"
 
 msgid "!Danger!"
-msgstr ""
-
-#, fuzzy
+msgstr "!Gefahr!"
+
 msgid "Error:"
-msgstr "%s-Fehler:\n"
+msgstr "Fehler:"
 
 msgid "Hint:"
-msgstr ""
+msgstr "Tipp:"
 
 msgid "Important:"
-msgstr ""
-
-#, fuzzy
+msgstr "Wichtig:"
+
 msgid "Note:"
-msgstr "Entfernt: "
+msgstr "Hinweis: "
 
 msgid "Tip:"
 msgstr ""
 
-#, fuzzy
 msgid "Warning!"
-msgstr "Führe aus: %s\n"
-
-#, python-format
-msgid "cannot create %s: destination already exists"
-msgstr "Kann %s nicht anlegen: Zielverzeichnis existiert bereits"
-
-#, python-format
-msgid "cannot create %s: unable to create destination directory"
-msgstr "Kann %s nicht anlegen: Zielverzeichnis kann nicht angelegt werden"
+msgstr "Warnung!"
+
+#, python-format
+msgid "unexpected token: %s"
+msgstr "Unerwartetes Token: %s"
+
+#, python-format
+msgid "not a prefix: %s"
+msgstr "kein Präfix: %s"
+
+#, python-format
+msgid "not an infix: %s"
+msgstr "kein Infix: %s"
+
+#, python-format
+msgid "%d out of %d hunks FAILED -- saving rejects to file %s\n"
+msgstr ""
+"%d von %d Teilstücken sind FEHLGESCHLAGEN -- speichere Ausschuss in Datei "
+"%s\n"
+
+#, python-format
+msgid "cannot patch %s: file is not tracked"
+msgstr "Kann patch nicht auf %s anwenden: Datei ist nicht versioniert"
 
 #, python-format
 msgid "unable to find '%s' for patching\n"
@@ -16059,16 +18496,14 @@
 msgstr "Wende Patch auf Datei %s an\n"
 
 #, python-format
-msgid "%d out of %d hunks FAILED -- saving rejects to file %s\n"
-msgstr ""
-"%d von %d Teilstücken sind FEHLGESCHLAGEN -- speichere Ausschuss in Datei "
-"%s\n"
-
-#, python-format
 msgid "bad hunk #%d %s (%d %d %d %d)"
 msgstr "Fehlerhaftes Teilstück #%d %s (%d %d %d %d)"
 
 #, python-format
+msgid "cannot create %s: destination already exists\n"
+msgstr "Kann %s nicht anlegen: Zielverzeichnis existiert bereits\n"
+
+#, python-format
 msgid "file %s already exists\n"
 msgstr "Datei %s existiert bereits\n"
 
@@ -16112,8 +18547,8 @@
 msgstr "undefinierte Quell- und Zieldateien"
 
 #, python-format
-msgid "malformed patch %s %s"
-msgstr "Fehlerhafter Patch %s %s"
+msgid "cannot create %s: destination already exists"
+msgstr "Kann %s nicht anlegen: Zielverzeichnis existiert bereits"
 
 #, python-format
 msgid "unsupported parser state: %s"
@@ -16131,9 +18566,8 @@
 msgstr "Patch schlug fehl"
 
 #, python-format
-msgid " %d files changed, %d insertions(+), %d deletions(-)\n"
-msgstr ""
-" %d Dateien verändert, %d Zeilen hinzugefügt(+), %d Zeilen entfernt(-)\n"
+msgid "Removing unknown node %(n)s from %(p)i-phase boundary"
+msgstr ""
 
 #, python-format
 msgid "exited with status %d"
@@ -16145,7 +18579,7 @@
 
 #, python-format
 msgid "saved backup bundle to %s\n"
-msgstr "Speichere Bündel-Sicherungskopie in %s\n"
+msgstr "Speichere Bündel-Sicherheitskopie in %s\n"
 
 msgid "adding branch\n"
 msgstr "füge Zweig hinzu\n"
@@ -16203,476 +18637,81 @@
 msgid "%s not found in the transaction"
 msgstr "%s nicht in Transaktion gefunden"
 
-#, fuzzy
 msgid "consistency error in delta"
-msgstr "Konsistenzfehler beim Hinzufügen der Gruppe"
-
-msgid "unknown base"
-msgstr "unbekannte Basis"
-
-msgid "unterminated string"
-msgstr "nicht abgeschlossene Zeichenkette"
-
-msgid "syntax error"
-msgstr "Syntaxfehler"
-
-msgid "missing argument"
-msgstr "fehlendes Argument"
+msgstr "Konsistenzfehler im delta"
+
+msgid "unknown delta base"
+msgstr "unbekannte delta-Basis"
 
 #, python-format
 msgid "can't use %s here"
 msgstr "Kann %s hier nicht verwenden"
 
-msgid "can't use a list in this context"
-msgstr "In diesem Kontext kann keine Liste verwendet werden"
-
-#, python-format
-msgid "not a function: %s"
-msgstr "keine Funktion: %s"
-
-msgid ""
-"``id(string)``\n"
-"    Revision non-ambiguously specified by the given hex string prefix."
-msgstr ""
-
-#. i18n: "id" is a keyword
-#, fuzzy
-msgid "id requires one argument"
-msgstr "head erwartet keine Argumente"
-
-#. i18n: "id" is a keyword
-#, fuzzy
-msgid "id requires a string"
-msgstr "date erwartet eine Zeichenkette"
-
-msgid ""
-"``rev(number)``\n"
-"    Revision with the given numeric identifier."
-msgstr ""
-
-#. i18n: "rev" is a keyword
-#, fuzzy
-msgid "rev requires one argument"
-msgstr "merge erwartet keine Argumente"
-
-#. i18n: "rev" is a keyword
-#, fuzzy
-msgid "rev requires a number"
-msgstr "limit erwartet eine Zahl"
-
-#. i18n: "rev" is a keyword
-#, fuzzy
-msgid "rev expects a number"
-msgstr "limit erwartet eine Zahl"
-
-#, fuzzy
-msgid ""
-"``p1([set])``\n"
-"    First parent of changesets in set, or the working directory."
-msgstr ""
-"``p1(set)``\n"
-"  Erster Vorfahr der Änderungssätze in set."
-
-#, fuzzy
-msgid ""
-"``p2([set])``\n"
-"    Second parent of changesets in set, or the working directory."
-msgstr ""
-"``p2(set)``\n"
-"  Zweiter Vorfahr der Änderungssätze in set."
-
-#, fuzzy
-msgid ""
-"``parents([set])``\n"
-"    The set of all parents for all changesets in set, or the working "
-"directory."
-msgstr ""
-"``parents(set)``\n"
-"  Die Menge aller Eltern für die Änderungssätze in set."
-
-#, fuzzy
-msgid ""
-"``max(set)``\n"
-"    Changeset with highest revision number in set."
-msgstr ""
-"``max(set)``\n"
-"  Änderungssatz mit der größten Revisionsnummer in set."
-
-#, fuzzy
-msgid ""
-"``min(set)``\n"
-"    Changeset with lowest revision number in set."
-msgstr ""
-"``min(set)``\n"
-"  Änderungssatz mit der kleinsten Revisionsnummer in set."
-
-#, fuzzy
-msgid ""
-"``limit(set, n)``\n"
-"    First n members of set."
-msgstr ""
-"``limit(set, n)``\n"
-"  Die ersten n Elemente aus set."
-
-#. i18n: "limit" is a keyword
-#, fuzzy
-msgid "limit requires two arguments"
-msgstr "limit erwartet zwei Argumente"
-
-#. i18n: "limit" is a keyword
-#, fuzzy
-msgid "limit requires a number"
-msgstr "limit erwartet eine Zahl"
-
-#. i18n: "limit" is a keyword
-msgid "limit expects a number"
-msgstr "limit erwartet eine Zahl"
-
-#, fuzzy
-msgid ""
-"``children(set)``\n"
-"    Child changesets of changesets in set."
-msgstr ""
-"``children(set)``\n"
-"  Kinder-Änderungssätze der Änderungssätze in set."
-
-#, fuzzy
-msgid ""
-"``branch(set)``\n"
-"    All changesets belonging to the branches of changesets in set."
-msgstr ""
-"``branch(set)``\n"
-"  Alle Änderungssätze, die zu den Zweigen aus den Änderungssätzen\n"
-"  aus set gehören."
-
-#, fuzzy
+msgid ""
+"``adds(pattern)``\n"
+"    Changesets that add a file matching pattern."
+msgstr ""
+"``adds(muster)``\n"
+"    Änderungssätze, die auf das Muster passende Dateien hinzufügen."
+
+#. i18n: "adds" is a keyword
+msgid "adds requires a pattern"
+msgstr "'adds' erwartet ein Muster"
+
 msgid ""
 "``ancestor(single, single)``\n"
 "    Greatest common ancestor of the two changesets."
 msgstr ""
 "``ancestor(single, single)``\n"
-"  Größter gemeinsamer Vorfahre der beiden Änderungssätze."
+"    Jüngster gemeinsamer Vorfahre der beiden Änderungssätze."
 
 #. i18n: "ancestor" is a keyword
-#, fuzzy
 msgid "ancestor requires two arguments"
-msgstr "ancestor erwartet zwei Argumente"
+msgstr "'ancestor' erwartet zwei Argumente"
 
 #. i18n: "ancestor" is a keyword
 msgid "ancestor arguments must be single revisions"
-msgstr "ancestors erwartet einzelne Revisionen als Argumente"
-
-#, fuzzy
+msgstr "'ancestor' erwartet einzelne Revisionen als Argumente"
+
 msgid ""
 "``ancestors(set)``\n"
 "    Changesets that are ancestors of a changeset in set."
 msgstr ""
-"``ancestors(set)``\n"
-"  Änderungssätze, die Vorfahren der Änderungssätze aus set sind."
-
-#, fuzzy
-msgid ""
-"``descendants(set)``\n"
-"    Changesets which are descendants of changesets in set."
-msgstr ""
-"``descendants(set)``\n"
-"  Änderungssätze, die Nachkommen der Änderungssätze in set sind."
-
-#, fuzzy
-msgid ""
-"``follow()``\n"
-"    An alias for ``::.`` (ancestors of the working copy's first parent)."
-msgstr ""
-"``follow()``\n"
-"  Ein Alias für ``::.`` (Vorfahren in der ersten Eltern-Revision der\n"
-"  Arbeitskopie)."
-
-#. i18n: "follow" is a keyword
-msgid "follow takes no arguments"
-msgstr "follow erwartet keine Argumente"
-
-#, fuzzy
-msgid ""
-"``date(interval)``\n"
-"    Changesets within the interval, see :hg:`help dates`."
-msgstr ""
-"``date(intervall)``\n"
-"  Änderungssätze innerhalb des Intervalls, siehe auch :hg:`help dates`."
-
-#. i18n: "date" is a keyword
-#, fuzzy
-msgid "date requires a string"
-msgstr "date erwartet eine Zeichenkette"
-
-#, fuzzy
-msgid ""
-"``keyword(string)``\n"
-"    Search commit message, user name, and names of changed files for\n"
-"    string."
-msgstr ""
-"``keyword(zeichenkette)``\n"
-"  Sucht die Zeichenketten in der Commit-Nachricht, dem Benutzernamen\n"
-"  und der Liste geänderter Dateien."
-
-#. i18n: "keyword" is a keyword
-#, fuzzy
-msgid "keyword requires a string"
-msgstr "keyword erwartet eine Zeichenkette"
-
-msgid ""
-"``grep(regex)``\n"
-"    Like ``keyword(string)`` but accepts a regex. Use ``grep(r'...')``\n"
-"    to ensure special escape characters are handled correctly."
-msgstr ""
-
-#. i18n: "grep" is a keyword
-#, fuzzy
-msgid "grep requires a string"
-msgstr "grep erwartet eine Zeichenkette"
-
-#, fuzzy, python-format
-msgid "invalid match pattern: %s"
-msgstr "grep: Ungültiges Suchmuster: %s\n"
-
-#, fuzzy
+"``ancestors(Liste)``\n"
+"    Änderungssätze, die Vorfahren der Änderungssätze aus der Liste sind."
+
+msgid "~ expects a number"
+msgstr "~ erwartet eine Zahl"
+
 msgid ""
 "``author(string)``\n"
 "    Alias for ``user(string)``."
 msgstr ""
 "``author(zeichenkette)``\n"
-"  Alias für ``user(zeichenkette)``."
+"    Alias für ``user(zeichenkette)``."
 
 #. i18n: "author" is a keyword
-#, fuzzy
 msgid "author requires a string"
-msgstr "author erwartet eine Zeichenkette"
-
-#, fuzzy
-msgid ""
-"``user(string)``\n"
-"    User name is string."
-msgstr ""
-"``user(string)``\n"
-"  Der Benutzername ist eine Zeichenkette."
-
-#, fuzzy
-msgid ""
-"``file(pattern)``\n"
-"    Changesets affecting files matched by pattern."
-msgstr ""
-"``file(muster)``\n"
-"  Änderungssätze, die Dateien betroffen haben, die auf das Muster passen."
-
-#. i18n: "file" is a keyword
-#, fuzzy
-msgid "file requires a pattern"
-msgstr "file erwartet ein Muster"
-
-#, fuzzy
-msgid ""
-"``contains(pattern)``\n"
-"    Revision contains pattern."
-msgstr ""
-"``contains(muster)``\n"
-"  Revision enthält das Muster."
-
-#. i18n: "contains" is a keyword
-#, fuzzy
-msgid "contains requires a pattern"
-msgstr "contains erwartet ein Muster"
-
-#, fuzzy
-msgid ""
-"``modifies(pattern)``\n"
-"    Changesets modifying files matched by pattern."
-msgstr ""
-"``modifies(muster)``\n"
-"  Änderungssätze, die Dateien verändert, die auf das Muster passen."
-
-#. i18n: "modifies" is a keyword
-#, fuzzy
-msgid "modifies requires a pattern"
-msgstr "modifies erwartet ein Muster"
-
-#, fuzzy
-msgid ""
-"``adds(pattern)``\n"
-"    Changesets that add a file matching pattern."
-msgstr ""
-"``adds(muster)``\n"
-"  Änderungssätze, die Dateien hinzufügen, die auf das Muster passen."
-
-#. i18n: "adds" is a keyword
-#, fuzzy
-msgid "adds requires a pattern"
-msgstr "adds erwartet ein Muster"
-
-#, fuzzy
-msgid ""
-"``removes(pattern)``\n"
-"    Changesets which remove files matching pattern."
-msgstr ""
-"``removes(muster)``\n"
-"  Änderungssätze, die Dateien entfernten, die auf das Muster passen."
-
-#. i18n: "removes" is a keyword
-#, fuzzy
-msgid "removes requires a pattern"
-msgstr "removes erwartet ein Muster"
-
-#, fuzzy
-msgid ""
-"``merge()``\n"
-"    Changeset is a merge changeset."
-msgstr ""
-"``merge()``\n"
-"  Änderungssatz ist eine Zusammenführung."
-
-#. i18n: "merge" is a keyword
-msgid "merge takes no arguments"
-msgstr "merge erwartet keine Argumente"
-
-#, fuzzy
-msgid ""
-"``closed()``\n"
-"    Changeset is closed."
-msgstr ""
-"``closed()``\n"
-"  Änderungssatz ist geschlossen."
-
-#. i18n: "closed" is a keyword
-msgid "closed takes no arguments"
-msgstr "closed erwartet keine Argumente"
-
-#, fuzzy
-msgid ""
-"``head()``\n"
-"    Changeset is a named branch head."
-msgstr ""
-"``head()``\n"
-"  Änderungssatz ist ein Kopf (hat keine Kinder)."
-
-#. i18n: "head" is a keyword
-msgid "head takes no arguments"
-msgstr "head erwartet keine Argumente"
-
-#, fuzzy
-msgid ""
-"``reverse(set)``\n"
-"    Reverse order of set."
-msgstr ""
-"``reverse(set)``\n"
-"  Kehrt die Reihenfolge von set um."
-
-#, fuzzy
-msgid ""
-"``present(set)``\n"
-"    An empty set, if any revision in set isn't found; otherwise,\n"
-"    all revisions in set."
-msgstr ""
-"``present(set)``\n"
-"  Ein leeres Set, wenn keine Revision in set gefunden wurde, ansonsten\n"
-"  alle Revisionen aus dem angegebenen Set."
-
-#, fuzzy
-msgid ""
-"``sort(set[, [-]key...])``\n"
-"    Sort set by keys. The default sort order is ascending, specify a key\n"
-"    as ``-key`` to sort in descending order."
-msgstr ""
-"``sort(set[, [-]key...])``\n"
-"  Sortiert set anhand des Schlüssels key. Die Standard-Reihenfolge\n"
-"  ist aufsteigend, geben Sie einen Schlüssel in der Form ``-key`` an,\n"
-"  um absteigend zu sortieren."
-
-#, fuzzy
-msgid "    The keys can be:"
-msgstr "  Der key kann einer der folgenden sein:"
-
-#, fuzzy
-msgid ""
-"    - ``rev`` for the revision number,\n"
-"    - ``branch`` for the branch name,\n"
-"    - ``desc`` for the commit message (description),\n"
-"    - ``user`` for user name (``author`` can be used as an alias),\n"
-"    - ``date`` for the commit date"
-msgstr ""
-"  - ``rev`` für die Revisionsnummer,\n"
-"  - ``branch`` für den Zweignamen,\n"
-"  - ``desc`` für die Commit-Nachricht (description),\n"
-"  - ``user`` für den Benutzernamen (``author`` kann als Alias\n"
-"    genutzt werden),\n"
-"  - ``date`` für das Datum des Commits"
-
-#. i18n: "sort" is a keyword
-#, fuzzy
-msgid "sort requires one or two arguments"
-msgstr "sort verlangt ein oder zwei Argumente"
-
-msgid "sort spec must be a string"
-msgstr "Sortiermodus muss eine Zeichenkette sein"
-
-#, python-format
-msgid "unknown sort key %r"
-msgstr "Unbekannter Sortiermodus: %r"
-
-#, fuzzy
-msgid ""
-"``all()``\n"
-"    All changesets, the same as ``0:tip``."
-msgstr ""
-"``all()``\n"
-"  Alle Änderungssätze, entspricht ``0:tip``."
-
-#. i18n: "all" is a keyword
-msgid "all takes no arguments"
-msgstr "all erwartet keine Argumente"
-
-#, fuzzy
-msgid ""
-"``heads(set)``\n"
-"    Members of set with no children in set."
-msgstr ""
-"``heads(set)``\n"
-"  Elemente aus set, die keine Kinder in set haben."
-
-#, fuzzy
-msgid ""
-"``roots(set)``\n"
-"    Changesets with no parent changeset in set."
-msgstr ""
-"``roots(set)``\n"
-"  Änderungssätze ohne Eltern in set."
-
-#, fuzzy
-msgid ""
-"``outgoing([path])``\n"
-"    Changesets not found in the specified destination repository, or the\n"
-"    default push location."
-msgstr ""
-"``outgoing([pfad])``\n"
-"  Änderungssätze, die nicht im angegebenen Ziel-Archiv oder dem\n"
-"  Standard Push-Ziel vorhanden sind,"
-
-#. i18n: "outgoing" is a keyword
-#, fuzzy
-msgid "outgoing requires a repository path"
-msgstr "outgoing verlangt einen Projektarchivpfad"
-
-msgid ""
-"``tag(name)``\n"
-"    The specified tag by name, or all tagged revisions if no name is given."
-msgstr ""
-
-#. i18n: "tag" is a keyword
-#, fuzzy
-msgid "tag takes one or no arguments"
-msgstr "tagged erwartet keine Argumente"
-
-#. i18n: "tag" is a keyword
-#, fuzzy
-msgid "the argument to tag must be a string"
-msgstr "Sortiermodus muss eine Zeichenkette sein"
+msgstr "'author' erwartet eine Zeichenkette"
+
+msgid ""
+"``bisect(string)``\n"
+"    Changesets marked in the specified bisect status:"
+msgstr ""
+"``bisect(zeichenkette)``\n"
+"    Änderungssätze im gegebenen bisect-Status:"
+
+msgid ""
+"    - ``good``, ``bad``, ``skip``: csets explicitly marked as good/bad/skip\n"
+"    - ``goods``, ``bads``      : csets topologicaly good/bad\n"
+"    - ``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 ""
+
+msgid "bisect requires a string"
+msgstr "bisect erwartet eine Zeichenkette"
 
 msgid ""
 "``bookmark([name])``\n"
@@ -16687,15 +18726,503 @@
 msgid "the argument to bookmark must be a string"
 msgstr "'bookmark' erwartet eine Zeichenkette als Parameter"
 
+msgid ""
+"``branch(string or set)``\n"
+"    All changesets belonging to the given branch or the branches of the "
+"given\n"
+"    changesets."
+msgstr ""
+"``branch(zeichenkette oder liste)``\n"
+"    Alle Änderungssätze des gegebenen Zweigs oder den Zweigen der gegebenen\n"
+"    Liste von Änderungssätzen."
+
+msgid ""
+"``children(set)``\n"
+"    Child changesets of changesets in set."
+msgstr ""
+"``children(liste)``\n"
+"    Direkte Nachfahren der Änderungssätze in der Liste."
+
+msgid ""
+"``closed()``\n"
+"    Changeset is closed."
+msgstr ""
+"``closed()``\n"
+"    Änderungssatz ist geschlossen."
+
+#. i18n: "closed" is a keyword
+msgid "closed takes no arguments"
+msgstr "'closed' erwartet keine Argumente"
+
+msgid ""
+"``contains(pattern)``\n"
+"    Revision contains a file matching pattern. See :hg:`help patterns`\n"
+"    for information about file patterns."
+msgstr ""
+
+#. i18n: "contains" is a keyword
+msgid "contains requires a pattern"
+msgstr "'contains' erwartet ein Muster"
+
+msgid ""
+"``date(interval)``\n"
+"    Changesets within the interval, see :hg:`help dates`."
+msgstr ""
+"``date(intervall)``\n"
+"    Änderungssätze innerhalb des Intervalls, siehe auch :hg:`help dates`."
+
+#. i18n: "date" is a keyword
+msgid "date requires a string"
+msgstr "date erwartet eine Zeichenkette"
+
+msgid ""
+"``desc(string)``\n"
+"    Search commit message for string. The match is case-insensitive."
+msgstr ""
+"``desc(zeichenkette)``\n"
+"    Sucht die Zeichenketten in der Commit-Nachricht (Großschreibung wird\n"
+"    ignoriert)."
+
+#. i18n: "desc" is a keyword
+msgid "desc requires a string"
+msgstr "'desc' erwartet eine Zeichenkette"
+
+msgid ""
+"``descendants(set)``\n"
+"    Changesets which are descendants of changesets in set."
+msgstr ""
+"``descendants(liste)``\n"
+"    Nachkommen der Änderungssätze in der Liste sind."
+
+msgid ""
+"``filelog(pattern)``\n"
+"    Changesets connected to the specified filelog."
+msgstr ""
+"``filelog(muster)``\n"
+"    Änderungssätze, die das gegebene filelog betreffen."
+
+msgid "filelog requires a pattern"
+msgstr "'filelog' erwartet ein Muster"
+
+msgid ""
+"``first(set, [n])``\n"
+"    An alias for limit()."
+msgstr ""
+"``first(liste, [n])``\n"
+"    Alias für limit()."
+
+msgid ""
+"``follow([file])``\n"
+"    An alias for ``::.`` (ancestors of the working copy's first parent).\n"
+"    If a filename is specified, the history of the given file is followed,\n"
+"    including copies."
+msgstr ""
+"``follow([dateiname])``\n"
+"    Ein Alias für ``::.`` (Vorfahren in der ersten Eltern-Revision der\n"
+"    Arbeitskopie). Wenn ein Dateiname gegeben ist, wird der Historie der\n"
+"    Datei über Kopien hinweg gefolgt."
+
+#. i18n: "follow" is a keyword
+msgid "follow takes no arguments or a filename"
+msgstr "follow erwartet keine Argumente außer einem optionalen Dateinamen"
+
+msgid "follow expected a filename"
+msgstr "follow erwartet einen Dateinamen"
+
+#. i18n: "follow" is a keyword
+msgid "follow takes no arguments"
+msgstr "follow erwartet keine Argumente"
+
+msgid ""
+"``all()``\n"
+"    All changesets, the same as ``0:tip``."
+msgstr ""
+"``all()``\n"
+"    Alle Änderungssätze, entspricht ``0:tip``."
+
+#. i18n: "all" is a keyword
+msgid "all takes no arguments"
+msgstr "all erwartet keine Argumente"
+
+msgid ""
+"``grep(regex)``\n"
+"    Like ``keyword(string)`` but accepts a regex. Use ``grep(r'...')``\n"
+"    to ensure special escape characters are handled correctly. Unlike\n"
+"    ``keyword(string)``, the match is case-sensitive."
+msgstr ""
+
+#. i18n: "grep" is a keyword
+msgid "grep requires a string"
+msgstr "'grep' erwartet eine Zeichenkette"
+
+#, python-format
+msgid "invalid match pattern: %s"
+msgstr "Ungültiges Suchmuster: %s"
+
+msgid ""
+"``file(pattern)``\n"
+"    Changesets affecting files matched by pattern."
+msgstr ""
+"``file(muster)``\n"
+"    Änderungssätze, die auf das Muster passende Dateien betreffen."
+
+#. i18n: "file" is a keyword
+msgid "file requires a pattern"
+msgstr "'file' erwartet ein Muster"
+
+msgid ""
+"``head()``\n"
+"    Changeset is a named branch head."
+msgstr ""
+"``head()``\n"
+"    Änderungssatz ist ein Kopf eines benannten Zweigs."
+
+#. i18n: "head" is a keyword
+msgid "head takes no arguments"
+msgstr "head erwartet keine Argumente"
+
+msgid ""
+"``heads(set)``\n"
+"    Members of set with no children in set."
+msgstr ""
+"``heads(liste)``\n"
+"    Elemente der Liste, die keine Kinder in der Liste haben."
+
+msgid ""
+"``keyword(string)``\n"
+"    Search commit message, user name, and names of changed files for\n"
+"    string. The match is case-insensitive."
+msgstr ""
+"``keyword(zeichenkette)``\n"
+"    Sucht die Zeichenketten in der Commit-Nachricht, dem Benutzernamen\n"
+"    und der Liste geänderter Dateien. Großschreibung wird ignoriert."
+
+#. i18n: "keyword" is a keyword
+msgid "keyword requires a string"
+msgstr "'keyword' erwartet eine Zeichenkette"
+
+msgid ""
+"``limit(set, [n])``\n"
+"    First n members of set, defaulting to 1."
+msgstr ""
+"``limit(liste, [n])``\n"
+"    Die erste, bzw. die ersten n Elemente Liste."
+
+#. i18n: "limit" is a keyword
+msgid "limit requires one or two arguments"
+msgstr "'limit' verlangt ein oder zwei Argumente"
+
+#. i18n: "limit" is a keyword
+msgid "limit requires a number"
+msgstr "'limit' erwartet eine Zahl"
+
+#. i18n: "limit" is a keyword
+msgid "limit expects a number"
+msgstr "limit erwartet eine Zahl"
+
+msgid ""
+"``last(set, [n])``\n"
+"    Last n members of set, defaulting to 1."
+msgstr ""
+"``last(liste, [n])``\n"
+"    Das letzte, bzw. die letzten n Elemente der Liste."
+
+#. i18n: "last" is a keyword
+msgid "last requires one or two arguments"
+msgstr "'last' verlangt ein oder zwei Argumente"
+
+#. i18n: "last" is a keyword
+msgid "last requires a number"
+msgstr "'last' benötigt eine Zahl"
+
+#. i18n: "last" is a keyword
+msgid "last expects a number"
+msgstr "'last' erwartet eine Zahl"
+
+msgid ""
+"``max(set)``\n"
+"    Changeset with highest revision number in set."
+msgstr ""
+"``max(set)``\n"
+"  Änderungssatz mit der größten Revisionsnummer in set."
+
+msgid ""
+"``merge()``\n"
+"    Changeset is a merge changeset."
+msgstr ""
+"``merge()``\n"
+"    Änderungssatz ist eine Zusammenführung."
+
+#. i18n: "merge" is a keyword
+msgid "merge takes no arguments"
+msgstr "merge erwartet keine Argumente"
+
+msgid ""
+"``min(set)``\n"
+"    Changeset with lowest revision number in set."
+msgstr ""
+"``min(liste)``\n"
+"    Änderungssatz mit der kleinsten Revisionsnummer in der Liste."
+
+msgid ""
+"``modifies(pattern)``\n"
+"    Changesets modifying files matched by pattern."
+msgstr ""
+"``modifies(muster)``\n"
+"    Änderungssätze, die auf das Muster passende Dateien verändern."
+
+#. i18n: "modifies" is a keyword
+msgid "modifies requires a pattern"
+msgstr "'modifies' erwartet ein Dateinamenmuster"
+
+msgid ""
+"``id(string)``\n"
+"    Revision non-ambiguously specified by the given hex string prefix."
+msgstr ""
+"``id(zeichenkette)``\n"
+"    Revision, die eindeutig durch den gegebenen Hex-Wert(-Präfix)\n"
+"    identifiziert wird."
+
+#. i18n: "id" is a keyword
+msgid "id requires one argument"
+msgstr "'id' erwartet keine Argumente"
+
+#. i18n: "id" is a keyword
+msgid "id requires a string"
+msgstr "'id' erwartet eine Zeichenkette"
+
+msgid ""
+"``outgoing([path])``\n"
+"    Changesets not found in the specified destination repository, or the\n"
+"    default push location."
+msgstr ""
+"``outgoing([pfad])``\n"
+"    Änderungssätze, die nicht im angegebenen Ziel-Archiv oder dem\n"
+"    Standard Push-Ziel vorhanden sind."
+
+#. i18n: "outgoing" is a keyword
+msgid "outgoing takes one or no arguments"
+msgstr "'outgoing' erwartet keine Argumente"
+
+#. i18n: "outgoing" is a keyword
+msgid "outgoing requires a repository path"
+msgstr "'outgoing' verlangt einen Projektarchivpfad"
+
+msgid ""
+"``p1([set])``\n"
+"    First parent of changesets in set, or the working directory."
+msgstr ""
+"``p1([liste])``\n"
+"    Erster Vorfahr der Änderungssätze der Liste oder des Arbeits-\n"
+"    verzeichnisses."
+
+msgid ""
+"``p2([set])``\n"
+"    Second parent of changesets in set, or the working directory."
+msgstr ""
+"``p2([liste])``\n"
+"    Zweiter Vorfahr der Änderungssätze der Liste oder des Arbeits-\n"
+"    verzeichnisses."
+
+msgid ""
+"``parents([set])``\n"
+"    The set of all parents for all changesets in set, or the working "
+"directory."
+msgstr ""
+"``parents([liste])``\n"
+"    Die Menge aller Eltern für die Änderungssätze der Liste oder des\n"
+"    Arbeitverzeichnisses.."
+
+msgid "^ expects a number 0, 1, or 2"
+msgstr "^ erwartet eine Zahl (0, 1 oder 2)"
+
+msgid ""
+"``present(set)``\n"
+"    An empty set, if any revision in set isn't found; otherwise,\n"
+"    all revisions in set."
+msgstr ""
+"``present(liste)``\n"
+"    Die gegebene Liste, wenn alle Revisionen darin gefunden wurden. Wenn\n"
+"    ein Eintrag nicht gefunden wird, die leere Menge."
+
+msgid ""
+"``removes(pattern)``\n"
+"    Changesets which remove files matching pattern."
+msgstr ""
+"``removes(muster)``\n"
+"    Änderungssätze, die auf das Muster passende Dateien entfernten."
+
+#. i18n: "removes" is a keyword
+msgid "removes requires a pattern"
+msgstr "'removes' erwartet ein Muster"
+
+msgid ""
+"``rev(number)``\n"
+"    Revision with the given numeric identifier."
+msgstr ""
+
+#. i18n: "rev" is a keyword
+msgid "rev requires one argument"
+msgstr "'rev' erwartet eine Argumente"
+
+#. i18n: "rev" is a keyword
+msgid "rev requires a number"
+msgstr "'rev' benötigt eine Zahl"
+
+#. i18n: "rev" is a keyword
+msgid "rev expects a number"
+msgstr "'rev' erwartet eine Zahl"
+
+msgid ""
+"``reverse(set)``\n"
+"    Reverse order of set."
+msgstr ""
+"``reverse(set)``\n"
+"    Kehrt die Liste um."
+
+msgid ""
+"``roots(set)``\n"
+"    Changesets with no parent changeset in set."
+msgstr ""
+"``roots(menge)``\n"
+"    Änderungssätze, die keine Eltern in der Menge haben."
+
+msgid ""
+"``sort(set[, [-]key...])``\n"
+"    Sort set by keys. The default sort order is ascending, specify a key\n"
+"    as ``-key`` to sort in descending order."
+msgstr ""
+"``sort(menge[, [-]schlüssel...])``\n"
+"    Sortiert die Menge anhand der Schlüssel. Mit einem vorgestellten ``-``\n"
+"    wird absteigend, standardmäßig aufsteigend sortiert."
+
+msgid "    The keys can be:"
+msgstr "    Folgende Schlüssel können verwendet werden:"
+
+msgid ""
+"    - ``rev`` for the revision number,\n"
+"    - ``branch`` for the branch name,\n"
+"    - ``desc`` for the commit message (description),\n"
+"    - ``user`` for user name (``author`` can be used as an alias),\n"
+"    - ``date`` for the commit date"
+msgstr ""
+"    - ``rev`` für die Revisionsnummer,\n"
+"    - ``branch`` für den Zweignamen,\n"
+"    - ``desc`` für die Commit-Nachricht (description),\n"
+"    - ``user`` für den Benutzernamen (Alias ``author``),\n"
+"    - ``date`` für das Datum des Commits"
+
+#. i18n: "sort" is a keyword
+msgid "sort requires one or two arguments"
+msgstr "'sort' verlangt ein oder zwei Argumente"
+
+msgid "sort spec must be a string"
+msgstr "Sortiermodus muss eine Zeichenkette sein"
+
+#, python-format
+msgid "unknown sort key %r"
+msgstr "Unbekannter Sortiermodus: %r"
+
+msgid ""
+"``tag([name])``\n"
+"    The specified tag by name, or all tagged revisions if no name is given."
+msgstr ""
+
+#. i18n: "tag" is a keyword
+msgid "tag takes one or no arguments"
+msgstr "'tag' erwartet eins oder keine Argumente"
+
+#. i18n: "tag" is a keyword
+msgid "the argument to tag must be a string"
+msgstr "'tag' erwartet eine Zeichenkette"
+
+msgid ""
+"``user(string)``\n"
+"    User name contains string. The match is case-insensitive."
+msgstr ""
+"``user(zeichenkette)``\n"
+"    Der Benutzername enthält die Zeichenkette. Großschreibung wird ignoriert."
+
 msgid "can't negate that"
 msgstr "kann dies nicht negieren"
 
 msgid "not a symbol"
 msgstr "kein Symbol"
 
+#, python-format
+msgid "invalid number of arguments: %s"
+msgstr "ungültige Parameteranzahl: %s"
+
 msgid "empty query"
 msgstr "Leere Anfrage"
 
+#, python-format
+msgid "ui.portablefilenames value is invalid ('%s')"
+msgstr ""
+
+#, python-format
+msgid "possible case-folding collision for %s"
+msgstr ""
+
+#, python-format
+msgid "path ends in directory separator: %s"
+msgstr "Pfad endet mit Verzeichnis Separator: %s"
+
+#, python-format
+msgid "path contains illegal component: %s"
+msgstr "Pfad enthält ungültige Komponente: %s"
+
+#, python-format
+msgid "path '%s' is inside nested repo %r"
+msgstr "Pfad '%s' ist innerhalb des geschachtelten Archivs %r"
+
+#, python-format
+msgid "path %r traverses symbolic link %r"
+msgstr "Pfad %r überschreitet symbolische Verknüpfung %r"
+
+#, python-format
+msgid "could not symlink to %r: %s"
+msgstr "Konnte symbolische Verknüpfung auf %r nicht erzeugen: %s"
+
+#, python-format
+msgid "recording removal of %s as rename to %s (%d%% similar)\n"
+msgstr ""
+"Interpretiere die Entfernung von %s als Umbenennung in %s (%d%% ähnlich)\n"
+
+#, python-format
+msgid "%s has not been committed yet, so no copy data will be stored for %s.\n"
+msgstr ""
+"%s ist nicht im Archiv, daher gilt %s als neu hinzugefügt (nicht als "
+"kopiert).\n"
+
+msgid ".hg/requires file is corrupt"
+msgstr ".hg/requires file ist korrumpiert"
+
+#, python-format
+msgid "unknown repository format: requires features '%s' (upgrade Mercurial)"
+msgstr ""
+
+msgid "searching for changes\n"
+msgstr "Suche nach Änderungen\n"
+
+msgid "all local heads known remotely\n"
+msgstr ""
+
+msgid "sampling from both directions\n"
+msgstr "Nehme Proben von beiden Verzeichnissen\n"
+
+msgid "queries"
+msgstr ""
+
+msgid "searching"
+msgstr "suchen"
+
+msgid "repository is unrelated"
+msgstr "Projektarchiv steht in keinem Zusammenhang"
+
+msgid "warning: repository is unrelated\n"
+msgstr "Warnung: Projektarchiv steht in keinem Zusammenhang\n"
+
 msgid "searching for exact renames"
 msgstr "Suche nach exakten Umbenennungen"
 
@@ -16716,9 +19243,8 @@
 msgid "couldn't parse location %s"
 msgstr "Konnte Adresse %s nicht verarbeiten"
 
-#, fuzzy
 msgid "password in URL not supported"
-msgstr "Hardlinks nicht unterstützt"
+msgstr "Passwort in URL nicht unterstützt"
 
 msgid "could not create remote repo"
 msgstr "Konnte entferntes Projektarchiv nicht erstellen"
@@ -16729,13 +19255,60 @@
 msgid "remote: "
 msgstr "Entfernt: "
 
-msgid "unexpected response:"
-msgstr "Unerwartete Antwort:"
-
 #, python-format
 msgid "push refused: %s"
 msgstr "Hochladen abgewiesen: %s"
 
+msgid "Python SSL support not found"
+msgstr "SSL-Unterstützung für Python nicht gefunden"
+
+msgid "certificate checking requires Python 2.6"
+msgstr "Zur Überprüfung von Zertifikaten wird Python 2.6 benötigt"
+
+msgid "no certificate received"
+msgstr "Kein Zertifikat empfangen"
+
+#, python-format
+msgid "certificate is for %s"
+msgstr "Zertifikat ist für %s"
+
+msgid "IDN in certificate not supported"
+msgstr ""
+
+#, fuzzy
+msgid "no commonName or subjectAltName found in certificate"
+msgstr "Kein commonName oder subjectAltNamt gefunden im Zertifikat"
+
+#, python-format
+msgid "could not find web.cacerts: %s"
+msgstr "Konnte web.cacerts nicht finden: %s"
+
+#, python-format
+msgid "%s certificate error: %s (use --insecure to connect insecurely)"
+msgstr ""
+"%s Zertifikatsfehler: %s (Benutzen Sie --insecure, um unsicher zu verbinden)"
+
+#, python-format
+msgid "invalid certificate for %s with fingerprint %s"
+msgstr ""
+
+#, python-format
+msgid ""
+"warning: %s certificate with fingerprint %s not verified (check "
+"hostfingerprints or web.cacerts config setting)\n"
+msgstr ""
+
+#, python-format
+msgid "host fingerprint for %s can't be verified (Python too old)"
+msgstr ""
+"Host fingerprint für %s kann nicht verifiziert werden (Python ist zu alt)"
+
+#, python-format
+msgid "warning: certificate for %s can't be verified (Python too old)\n"
+msgstr ""
+"Warnung: Zertifikat für %s kann nicht verifiziert werden (Python ist zu "
+"alt)\n"
+
 #, python-format
 msgid "'%s' does not appear to be an hg repository"
 msgstr "'%s' scheint kein hg-Projektarchiv zu sein"
@@ -16750,21 +19323,21 @@
 msgid "invalid entry in fncache, line %s"
 msgstr "Ungültiger Eintrag in fncache, Zeile %s"
 
-#, fuzzy, python-format
+#, python-format
 msgid "warning: subrepo spec file %s not found\n"
-msgstr "Konfigurationsdatei %s für das Unterarchiv nicht gefunden"
+msgstr "Warnung: Spezifikationsdatei für Unterarchive %s nicht gefunden\n"
 
 #, python-format
 msgid "subrepo spec file %s not found"
 msgstr "Konfigurationsdatei %s für das Unterarchiv nicht gefunden"
 
-msgid "missing ] in subrepo source"
-msgstr "Fehlendes ] in der Unterarchivquelle"
-
 #, python-format
 msgid "bad subrepository pattern in %s: %s"
 msgstr "Fehlerhaftes Muster für Unterarchive in %s: %s"
 
+msgid "missing ] in subrepo source"
+msgstr "Fehlendes ] in der Unterarchivquelle"
+
 #, python-format
 msgid ""
 " subrepository sources for %s differ\n"
@@ -16792,43 +19365,47 @@
 " Entferntes Unterarchiv ändert %s, aber lokales löscht.\n"
 "Nutze (c) geänderte Version oder (d) lösche?"
 
-#, fuzzy, python-format
+#, python-format
 msgid ""
 " subrepository sources for %s differ\n"
 "use (l)ocal source (%s) or (r)emote source (%s)?\n"
 msgstr ""
 " Unterarchivquellen für %s sind verschieden.\n"
-"Nutze (l)okale Quelle (%s) oder entfe(r)nte Quelle (%s)?"
-
-#, fuzzy, python-format
+"Nutze (l)okale Quelle (%s) oder entfe(r)nte Quelle (%s)?\n"
+
+#, python-format
 msgid ""
 " subrepository sources for %s differ (in checked out version)\n"
 "use (l)ocal source (%s) or (r)emote source (%s)?\n"
 msgstr ""
-" Unterarchivquellen für %s sind verschieden.\n"
-"Nutze (l)okale Quelle (%s) oder entfe(r)nte Quelle (%s)?"
-
-#, fuzzy, python-format
+" Unterarchivquellen für %s unterscheiden sich im Arbeitsverzeichnis.\n"
+"Nutze (l)okale Quelle (%s) oder entfe(r)nte Quelle (%s)?\n"
+
+#, python-format
 msgid "default path for subrepository %s not found"
-msgstr "Projektarchiv %s nicht gefunden"
+msgstr "Standardpfad für Unterarchiv %s nicht gefunden"
 
 #, python-format
 msgid "unknown subrepo type %s"
 msgstr "Unbekannter Unterarchivtyp %s"
 
-#, fuzzy, python-format
+#, python-format
 msgid "archiving (%s)"
-msgstr "Entferne %s\n"
-
-#, fuzzy, python-format
+msgstr "Archiviere (%s)"
+
+#, python-format
 msgid "warning: error \"%s\" in subrepository \"%s\"\n"
-msgstr "Übernehme Unterarchiv %s\n"
+msgstr "Warnung: Fahler \"%s\" im Unterarchiv \"%s\"\n"
 
 #, python-format
 msgid "removing subrepo %s\n"
 msgstr "Entferne Unterarchiv %s\n"
 
 #, python-format
+msgid "cloning subrepo %s from %s\n"
+msgstr "Klone Unterarchiv %s von %s\n"
+
+#, python-format
 msgid "pulling subrepo %s from %s\n"
 msgstr "Rufe Unterarchiv %s von %s ab\n"
 
@@ -16836,6 +19413,13 @@
 msgid "pushing subrepo %s to %s\n"
 msgstr "Übertrage Unterarchiv %s zu %s\n"
 
+#, python-format
+msgid "'svn' executable not found for subrepo '%s'"
+msgstr ""
+
+msgid "cannot retrieve svn tool version"
+msgstr "Kann svn-Version nicht herausfinden"
+
 msgid "cannot commit svn externals"
 msgstr "Kann SVN-Externals nicht speichern"
 
@@ -16843,17 +19427,9 @@
 msgid "not removing repo %s because it has changes.\n"
 msgstr "Entferne Projektarchiv %s nicht, da es Änderungen enthält.\n"
 
-#, fuzzy, python-format
-msgid "cloning subrepo %s\n"
-msgstr "Entferne Unterarchiv %s\n"
-
-#, fuzzy, python-format
-msgid "pulling subrepo %s\n"
-msgstr "Rufe Unterarchiv %s von %s ab\n"
-
-#, fuzzy, python-format
+#, python-format
 msgid "revision %s does not exist in subrepo %s\n"
-msgstr "Revision %s ist keine Patchsatz-Nummer"
+msgstr "Revision %s existiert nicht im Unterarchiv %s\n"
 
 #, python-format
 msgid "checking out detached HEAD in subrepo %s\n"
@@ -16862,23 +19438,25 @@
 msgid "check out a git branch if you intend to make changes\n"
 msgstr ""
 
-#, fuzzy, python-format
+#, python-format
 msgid "subrepo %s is missing"
-msgstr "%s:%d: Pfad zu %s fehlt\n"
+msgstr "Unterarchiv %s fehlt"
 
 #, python-format
 msgid "unrelated git branch checked out in subrepo %s\n"
 msgstr ""
 
-#, fuzzy, python-format
+#, python-format
 msgid "pushing branch %s of subrepo %s\n"
-msgstr "Übertrage Unterarchiv %s zu %s\n"
-
-#, python-format
+msgstr "Übertrage Zweig %s von Unterarchiv %s\n"
+
+#, fuzzy, python-format
 msgid ""
 "no branch checked out in subrepo %s\n"
 "cannot push revision %s"
 msgstr ""
+"kein Branch in Subrepo %s ausgecheckt\n"
+"Revision %s kann nicht gepusht werden"
 
 #, python-format
 msgid "%s, line %s: %s\n"
@@ -16892,26 +19470,328 @@
 msgstr "Knoten '%s' ist nicht wohlgeformt"
 
 msgid ".hg/cache/tags is corrupt, rebuilding it\n"
-msgstr ""
-
-#, fuzzy, python-format
-msgid "unknown method '%s'"
-msgstr "Unbekannte Revision '%s'"
+msgstr ".hg/cache/tags ist korrupt, wird wiederhergestellt\n"
+
+msgid ""
+":addbreaks: Any text. Add an XHTML \"<br />\" tag before the end of\n"
+"    every line except the last."
+msgstr ""
+":addbreaks: Beliebiger Text. Führt ein XHTML \"<br />\"-Tag vor das Ende\n"
+"    jeder Zeile bis auf die letzte ein."
+
+msgid ""
+":age: Date. Returns a human-readable date/time difference between the\n"
+"    given date/time and the current date/time."
+msgstr ""
+":age: Datumsangabe. Gibt eine menschenlesbare Datums- und Zeitdifferenz\n"
+"    zwischen dem gegebenen Datum und der aktuellen Zeit aus."
+
+msgid ""
+":basename: Any text. Treats the text as a path, and returns the last\n"
+"    component of the path after splitting by the path separator\n"
+"    (ignoring trailing separators). For example, \"foo/bar/baz\" becomes\n"
+"    \"baz\" and \"foo/bar//\" becomes \"bar\"."
+msgstr ""
+":basename: Beliebiger Text. Behandelt jeden Text als Pfadangabe und gibt\n"
+"    den letzten Bestandteil des Pfades nach dem Auftrennen mit dem\n"
+"    Trennzeichen für Verzeichnisse zurück (überhängende Trenner werden\n"
+"    ignoriert). Zum Beispiel wird aus \"foo/bar/baz\" dann \"baz\" und\n"
+"    \"foo/bar//\" wird zu \"bar\"."
+
+msgid ""
+":date: Date. Returns a date in a Unix date format, including the\n"
+"    timezone: \"Mon Sep 04 15:13:13 2006 0700\"."
+msgstr ""
+":date: Datumsangabe. Gibt ein Datum als Unix Datum zurück,\n"
+"    inklusive der Zeitzone: \"Mon Sep 04 15:13:13 2006 0700\"."
+
+msgid ""
+":domain: Any text. Finds the first string that looks like an email\n"
+"    address, and extracts just the domain component. Example: ``User\n"
+"    <user@example.com>`` becomes ``example.com``."
+msgstr ""
+":domain: Beliebiger Text. Findet die erste Zeichenkette, die wie eine\n"
+"    E-Mail-Adresse aussieht, und extrahiert davon die Domain-Komponente:\n"
+"    Beispiel: ``Nutzer <user@example.com>`` wird zu ``example.com``."
+
+msgid ""
+":email: Any text. Extracts the first string that looks like an email\n"
+"    address. Example: ``User <user@example.com>`` becomes\n"
+"    ``user@example.com``."
+msgstr ""
+":email: Beliebiger Text. Extrahiert die erste Zeichenkette, die wie eine\n"
+"    E-Mail-Adresse aussieht. Beispiel: ``Nutzer <user@example.com>`` wird\n"
+"    zu ``user@example.com``."
+
+msgid ""
+":escape: Any text. Replaces the special XML/XHTML characters \"&\", \"<\"\n"
+"    and \">\" with XML entities."
+msgstr ""
+":escape: Beliebiger Text. Ersetzt die besonderen XML/XHTML-Zeichen\n"
+"    \"&\", \"<\" und \">\" mit XML-Entitäten."
+
+msgid ":fill68: Any text. Wraps the text to fit in 68 columns."
+msgstr ":fill68: Beliebiger Text. Umbricht den Text bei 68 Zeichen."
+
+msgid ":fill76: Any text. Wraps the text to fit in 76 columns."
+msgstr ":fill76: Beliebiger Text. Umbricht den Text bei 76 Zeichen."
+
+msgid ":firstline: Any text. Returns the first line of text."
+msgstr ":firstline: Beliebiger Text. Gibt die erste Zeile des Texts zurück."
+
+#, fuzzy
+msgid ""
+":hex: Any text. Convert a binary Mercurial node identifier into\n"
+"    its long hexadecimal representation."
+msgstr ""
+":hex: Beliebiger Text. Konvertiert einen binären Mercurial node identifier \n"
+"    in seine lange hexadezimale Repräsentation."
+
+msgid ""
+":hgdate: Date. Returns the date as a pair of numbers: \"1157407993\n"
+"    25200\" (Unix timestamp, timezone offset)."
+msgstr ""
+":hgdate: Datumsangabe. Gibt das Datum als Zahlpaar zurück:\n"
+"    \"1157407993 25200\" (Unix Zeitstempel, Zeitzonenverschiebung)"
+
+msgid ""
+":isodate: Date. Returns the date in ISO 8601 format: \"2009-08-18 13:00\n"
+"    +0200\"."
+msgstr ""
+":isodate: Datumsangabe. Gibt das Datum im ISO 8601-Format zurück:\n"
+"    \"2009-08-18 13:00 +0200\"."
+
+msgid ""
+":isodatesec: Date. Returns the date in ISO 8601 format, including\n"
+"    seconds: \"2009-08-18 13:00:13 +0200\". See also the rfc3339date\n"
+"    filter."
+msgstr ""
+":isodatesec: Datumsangabe. Gibt das Datum im ISO 8601-Format inklusive\n"
+"    Sekunden zurück: \"2009-08-18 13:00 +0200\". Siehe auch den\n"
+"    rfc3339date-Filter."
+
+msgid ":localdate: Date. Converts a date to local date."
+msgstr ""
+":localdate: Datumsangabe. Konvertiert ein Datum in das lokale Datumsformat."
+
+msgid ":nonempty: Any text. Returns '(none)' if the string is empty."
+msgstr ""
+":nonempty: Beliebiger Text. Gibt '(none)' für eine leere Zeichenkette\n"
+"    zurück."
+
+msgid ""
+":obfuscate: Any text. Returns the input text rendered as a sequence of\n"
+"    XML entities."
+msgstr ""
+":obfuscate: Beliebiger Text. Gibt den Text als Folge von XML-Entitäten\n"
+"    zurück."
+
+msgid ":person: Any text. Returns the text before an email address."
+msgstr ""
+":person: Beliebiger Text. Gibt den Text vor einer E-Mail-Adresse zurück."
+
+msgid ""
+":rfc3339date: Date. Returns a date using the Internet date format\n"
+"    specified in RFC 3339: \"2009-08-18T13:00:13+02:00\"."
+msgstr ""
+":rfc3339date: Datumsangabe. Gibt das Datum im Internet-Datumsformat,\n"
+"    spezifiziert im RFC 3339, zurück: \"2009-08-18T13:00:13+02:00\"."
+
+msgid ""
+":rfc822date: Date. Returns a date using the same format used in email\n"
+"    headers: \"Tue, 18 Aug 2009 13:00:13 +0200\"."
+msgstr ""
+":rfc822date: Datumsangabe. Gibt das Datum im gleichen Format zurück,\n"
+"    das auch in Kopfzeilen von E-Mails verwendet wird:\n"
+"    \"Tue, 18 Aug 2009 13:00:13 +0200\"."
+
+msgid ""
+":short: Changeset hash. Returns the short form of a changeset hash,\n"
+"    i.e. a 12 hexadecimal digit string."
+msgstr ""
+":short: Prüfsumme. Gibt die Kurzform der Prüfsumme zurück, d.h.\n"
+"    als 12 Zeichen lange hexadezimale Zeichenkette."
 
 #, fuzzy
+msgid ""
+":shortbisect: Any text. Treats `text` as a bisection status, and\n"
+"    returns a single-character representing the status (G: good, B: bad,\n"
+"    S: skipped, U: untested, I: ignored). Returns single space if `text`\n"
+"    is not a valid bisection status."
+msgstr ""
+":shortbisect: Beliebiger text. Behandelt `text` als Teilungsstatus, und\n"
+"    gibt ein einzelnes Zeichen zurück, dass den Status repräsentiert (G: "
+"gut, B: schlecht,\n"
+"    S: übersprungen, U: ungetestet, I: ignoriert). Gibt ein einzelnes "
+"Leerzeichen zurück,\n"
+"    wenn `text` kein gültiger Teilungsstatus ist."
+
+msgid ":shortdate: Date. Returns a date like \"2006-09-18\"."
+msgstr ":shortdate: Datumsangabe. Gibt ein Datum wie \"2006-09-18\" zurück."
+
+msgid ""
+":stringify: Any type. Turns the value into text by converting values into\n"
+"    text and concatenating them."
+msgstr ""
+":stringify: Beliebiger Typ. Wandelt jeden Wert in einen Text um, indem die\n"
+"    Werte in Zeichenketten konvertiert und dann aneinander gehängt werden."
+
+msgid ":strip: Any text. Strips all leading and trailing whitespace."
+msgstr ""
+":strip: Beliebiger Text. Entfernt jeden führenden und überhängenden\n"
+"    Leerraum."
+
+msgid ""
+":stripdir: Treat the text as path and strip a directory level, if\n"
+"    possible. For example, \"foo\" and \"foo/bar\" becomes \"foo\"."
+msgstr ""
+":stripdir: Behandelt den Text als Pfadangabe und entfernt das letzte\n"
+"    Verzeichnis, wenn möglich. Zum Beispiel wird aus \"foo\" und \"foo/bar//"
+"\" \n"
+"    dann \"bar\"."
+
+msgid ""
+":tabindent: Any text. Returns the text, with every line except the\n"
+"    first starting with a tab character."
+msgstr ""
+":tabindent: Beliebiger Text. Gibt den Text zurück, wobei jede Zeile bis\n"
+"    auf die erste mit einem Tabulator eingerückt ist."
+
+msgid ""
+":urlescape: Any text. Escapes all \"special\" characters. For example,\n"
+"    \"foo bar\" becomes \"foo%20bar\"."
+msgstr ""
+":urlescape: Beliebiger Text. Maskiert alle \"besonderen\" Zeichen.\n"
+"    Aus \"foo bar\" wird zum Beispiel \"foo%20bar\"."
+
+msgid ":user: Any text. Returns the user portion of an email address."
+msgstr ""
+":user: Beliebiger Text. Gibt den Nutzerteil einer E-Mail-Adresse\n"
+"    (vor dem @-Zeichen) zurück."
+
+msgid ":author: String. The unmodified author of the changeset."
+msgstr ":author: Zeichenkette. Der unveränderte Autor eines Änderungssatzes."
+
+msgid ":bisect: String. The changeset bisection status."
+msgstr ":bisect: Zeichenkette. Der bisect Status des Änderungssatzes."
+
+msgid ""
+":branch: String. The name of the branch on which the changeset was\n"
+"    committed."
+msgstr ""
+":branch: Zeichenkette. Der Name des Zweiges, in dem der Änderungssatz\n"
+"    versioniert wurde."
+
+msgid ""
+":branches: List of strings. The name of the branch on which the\n"
+"    changeset was committed. Will be empty if the branch name was\n"
+"    default."
+msgstr ""
+":branches: Zeichenkette. Der Name des Zweiges, in dem der Änderungssatz\n"
+"    versioniert wurde. Ist leer, wenn der Zweig-Name 'default' ist."
+
+msgid ""
+":bookmarks: List of strings. Any bookmarks associated with the\n"
+"    changeset."
+msgstr ""
+":bookmarks: Liste von Zeichenketten. Alle Lesezeichen, die diesem\n"
+"    Änderungssatz zugewiesen wurden."
+
+msgid ":children: List of strings. The children of the changeset."
+msgstr ":children: Liste von Zeichenketten. Die Kinder dieses Änderungssatzes."
+
+msgid ":date: Date information. The date when the changeset was committed."
+msgstr ""
+":date: Datumsangabe. Das Datum, wann ein Änderungssatz versioniert wurde."
+
+msgid ":desc: String. The text of the changeset description."
+msgstr ":desc: Zeichenkette. Der Text der Beschreibung eines Änderungssatzes."
+
+msgid ""
+":diffstat: String. Statistics of changes with the following format:\n"
+"    \"modified files: +added/-removed lines\""
+msgstr ""
+":diffstat: Zeichenkette. Statistik über die Änderungen in dem folgenden\n"
+"    Format: \"geänderte Dateien: +hinzugefügt/-entfernte Zeilen\""
+
+msgid ":file_adds: List of strings. Files added by this changeset."
+msgstr ":file_adds: Liste von Zeichenketten. Alle hinzugefügten Dateien."
+
+msgid ""
+":file_copies: List of strings. Files copied in this changeset with\n"
+"    their sources."
+msgstr ""
+":file_copies_switch: Liste von Zeichenketten. Dateien, die in diesem\n"
+"    Änderungssatz kopiert wurden, zusammen mit den Quelldateien."
+
+msgid ""
+":file_copies_switch: List of strings. Like \"file_copies\" but displayed\n"
+"    only if the --copied switch is set."
+msgstr ""
+":file_copies_switch: Liste von Zeichenketten. Wie \"file_copies\", wird\n"
+"    aber nur angezeigt, wenn der Schalter --copied gesetzt wurde."
+
+msgid ":file_dels: List of strings. Files removed by this changeset."
+msgstr ":file_dels: Liste von Zeichenketten. Alle gelöschten Dateien."
+
+msgid ":file_mods: List of strings. Files modified by this changeset."
+msgstr ":file_mods: Liste von Zeichenketten. Alle geänderten Dateien."
+
+msgid ""
+":files: List of strings. All files modified, added, or removed by this\n"
+"    changeset."
+msgstr ""
+":files: Liste von Zeichenketten. Alle geänderten, hinzugefügten oder\n"
+"    gelöschten Dateien dieses Änderungssatzes."
+
+msgid ""
+":latesttag: String. Most recent global tag in the ancestors of this\n"
+"    changeset."
+msgstr ""
+":latesttag: Zeichenkette. Aktuellstes globales Tag in den Nachfahren\n"
+"    dieses Änderungssatzes."
+
+msgid ":latesttagdistance: Integer. Longest path to the latest tag."
+msgstr ":latesttagdistance: Zahl. Längster Pfad zum aktuellsten Tag."
+
+msgid ""
+":node: String. The changeset identification hash, as a 40 hexadecimal\n"
+"    digit string."
+msgstr ""
+":node: Zeichenkette. Die Prüfsumme, die einen Änderungssatz identifiziert,\n"
+"    als 40 Zeichen lange hexadezimale Zeichenkette."
+
+#, fuzzy
+msgid ":rev: Integer. The changeset phase."
+msgstr ":rev: Ganze Zahl. Die Phase des Changesets."
+
+msgid ":rev: Integer. The repository-local changeset revision number."
+msgstr ""
+":rev: Zahl. Die für dieses Projektarchiv geltende Nummer eines\n"
+"    Änderungssatzes."
+
+msgid ":tags: List of strings. Any tags associated with the changeset."
+msgstr ""
+":tags: Liste von Zeichenketten. Alle Tags, die diesem Änderungssatz\n"
+"    zugewiesen wurden."
+
+#, python-format
+msgid "unknown method '%s'"
+msgstr "Unbekannte Method '%s'"
+
 msgid "expected a symbol"
-msgstr "kein Symbol"
-
-#, fuzzy, python-format
+msgstr "erwartete ein Symbol"
+
+#, python-format
 msgid "unknown function '%s'"
-msgstr "Unbekannte Revision '%s'"
+msgstr "Unbekannte Funktion '%s'"
 
 msgid "expected template specifier"
 msgstr ""
 
 #, python-format
 msgid "filter %s expects one argument"
-msgstr ""
+msgstr "Filter %s erwartet ein Argument"
 
 msgid "unmatched quotes"
 msgstr "unpassende Anführungszeichen"
@@ -16920,9 +19800,9 @@
 msgid "style not found: %s"
 msgstr "Stil nicht gefunden: %s"
 
-#, fuzzy, python-format
+#, python-format
 msgid "\"%s\" not in template map"
-msgstr "Anzeige unter Nutzung der Vorlagenzuordnungsdatei"
+msgstr "\"%s\" nicht in der Vorlagenzuordnungsdatei gefunden"
 
 #, python-format
 msgid "template file %s: %s"
@@ -16945,6 +19825,9 @@
 msgid "rollback failed - please run hg recover\n"
 msgstr "Zurückrollen fehlgeschlagen - bitte führe hg recover aus\n"
 
+msgid "already have changeset "
+msgstr "Änderungssatz bereits vorhanden "
+
 #, python-format
 msgid "Not trusting file %s from untrusted user %s, group %s\n"
 msgstr "Nicht vertrauenswürdige Datei %s vom Nutzer %s, Gruppe %s\n"
@@ -16958,13 +19841,13 @@
 msgstr "(veraltete Angabe '%%' im Pfad %s=%s aus %s)\n"
 
 #, python-format
-msgid "ignoring untrusted configuration option %s.%s = %s\n"
-msgstr "Ignoriere nicht vertrauenswürdige Einstellung %s.%s = %s\n"
-
-#, python-format
-msgid "%s.%s not a boolean ('%s')"
+msgid "%s.%s is not a boolean ('%s')"
 msgstr "%s.%s ist kein boolescher Wert ('%s')"
 
+#, python-format
+msgid "%s.%s is not an integer ('%s')"
+msgstr "%s.%s ist keine Zahl ('%s')"
+
 msgid "enter a commit username:"
 msgstr "Geben Sie einen Benutzernamen für den Commit ein:"
 
@@ -16991,10 +19874,6 @@
 msgid "edit failed"
 msgstr "Bearbeiten fehlgeschlagen"
 
-#, python-format
-msgid "ignoring invalid [auth] key '%s'\n"
-msgstr "Ignoriere ungültige [auth] Schlüssel '%s'\n"
-
 msgid "http authorization required"
 msgstr "HTTP-Autorisierung erforderlich"
 
@@ -17016,83 +19895,28 @@
 msgid "http auth: user %s, password %s\n"
 msgstr "HTTP-Auth: Benutzer %s, Passwort %s\n"
 
-msgid "kb"
-msgstr ""
-
-msgid "certificate checking requires Python 2.6"
-msgstr "Zur Überprüfung von Zertifikaten wird Python 2.6 benötigt"
-
-#, fuzzy
-msgid "no certificate received"
-msgstr "SSL-Zertifikatsdatei"
-
-#, fuzzy, python-format
-msgid "certificate is for %s"
-msgstr "SSL-Zertifikatsdatei"
-
-msgid "IDN in certificate not supported"
-msgstr ""
-
-msgid "no commonName or subjectAltName found in certificate"
-msgstr ""
-
-#, fuzzy, python-format
-msgid "could not find web.cacerts: %s"
-msgstr "Konnte Abbildungsdatei %r nicht öffnen: %s"
-
-#, python-format
-msgid "%s certificate error: %s (use --insecure to connect insecurely)"
-msgstr ""
-
-#, python-format
-msgid "invalid certificate for %s with fingerprint %s"
-msgstr ""
-
-#, python-format
-msgid ""
-"warning: %s certificate with fingerprint %s not verified (check "
-"hostfingerprints or web.cacerts config setting)\n"
-msgstr ""
-
-#, python-format
-msgid "no certificate for %s with configured hostfingerprint"
-msgstr ""
-
-#, python-format
-msgid ""
-"warning: %s certificate not verified (check web.cacerts config setting)\n"
-msgstr ""
-
 #, python-format
 msgid "command '%s' failed: %s"
 msgstr "Befehl '%s' fehlgeschlagen: %s"
 
-#, fuzzy, python-format
-msgid "path ends in directory separator: %s"
-msgstr "Arbeitsverzeichnis wurde als Zweig %s markiert\n"
-
-#, python-format
-msgid "path contains illegal component: %s"
-msgstr "Pfad enthält ungültige Komponente: %s"
-
-#, python-format
-msgid "path %r is inside repo %r"
-msgstr "Pfad %r ist innerhalb des Archivs %r"
-
-#, python-format
-msgid "path %r traverses symbolic link %r"
-msgstr "Pfad %r überschreitet symbolische Verknüpfung %r"
-
-#, python-format
-msgid "could not symlink to %r: %s"
-msgstr "Konnte symbolische Verknüpfung auf %r nicht erzeugen: %s"
+#, python-format
+msgid "filename contains '%s', which is reserved on Windows"
+msgstr "Dateiname enthält '%s', was in Windows reserviert ist"
+
+#, python-format
+msgid "filename contains %r, which is invalid on Windows"
+msgstr "Dateiname enthält '%r', was in Windows ungültig ist"
+
+#, python-format
+msgid "filename ends with '%s', which is not allowed on Windows"
+msgstr "Dateiname endet mit '%s', was in Windows nicht erlaubt ist"
 
 msgid "check your clock"
-msgstr ""
+msgstr "überprüfen Sie ihre Uhr"
 
 #, python-format
 msgid "negative timestamp: %d"
-msgstr ""
+msgstr "negativer Zeitstempel: %d"
 
 #, python-format
 msgid "invalid date: %r"
@@ -17104,17 +19928,30 @@
 
 #, python-format
 msgid "negative date value: %d"
-msgstr ""
+msgstr "negativer Datumswert: %d"
 
 #, python-format
 msgid "impossible time zone offset: %d"
 msgstr "Unmögliche Zeitzonen-Verschiebung: %d"
 
+msgid "dates cannot consist entirely of whitespace"
+msgstr "Ein Datum kann nicht nur aus Leerzeichen bestehen"
+
+msgid "invalid day spec, use '<DATE'"
+msgstr "Ungültige Datumsangabe, verwende '<DATUM'"
+
+msgid "invalid day spec, use '>DATE'"
+msgstr "Ungültige Datumsangabe, verwende '>DATUM'"
+
 #, python-format
 msgid "invalid day spec: %s"
 msgstr "Ungültige Datumsangabe: %s"
 
 #, python-format
+msgid "%s must be nonnegative (see 'hg help dates')"
+msgstr "%s muss nichtnegativ sein (siehe 'hg help dates')"
+
+#, python-format
 msgid "%.0f GB"
 msgstr "%.0f GB"
 
@@ -17158,6 +19995,9 @@
 msgid "no port number associated with service '%s'"
 msgstr "Dem Dient '%s' ist keine Portnummer zugewiesen"
 
+msgid "file:// URLs can only refer to localhost"
+msgstr "file://-URLs können nur auf localhost verweisen"
+
 msgid "cannot verify bundle or remote repos"
 msgstr "Kann Bündel oder entfernte Projektarchive nicht verifizieren"
 
@@ -17337,393 +20177,3 @@
 
 msgid "push failed:"
 msgstr "Übertragen fehlgeschlagen: %s"
-
-#~ msgid "win32console not found, please install pywin32\n"
-#~ msgstr "win32console nicht gefunden, bitte installiere pywin32\n"
-
-#~ msgid "Subversion python bindings could not be loaded"
-#~ msgstr "Pythons Subversion-Unterstützung konnte nicht geladen werden"
-
-#~ msgid "    options:"
-#~ msgstr "    Optionen:"
-
-#~ msgid ""
-#~ "Path-based Access Control\n"
-#~ "-------------------------"
-#~ msgstr ""
-#~ "Pfadbasierte Zugriffskontrolle\n"
-#~ "------------------------------"
-
-#~ msgid ""
-#~ "Groups\n"
-#~ "------"
-#~ msgstr ""
-#~ "Gruppen\n"
-#~ "-------"
-
-#~ msgid ""
-#~ "Bookmarks are local movable markers to changesets. Every bookmark\n"
-#~ "points to a changeset identified by its hash. If you commit a\n"
-#~ "changeset that is based on a changeset that has a bookmark on it, the\n"
-#~ "bookmark shifts to the new changeset."
-#~ msgstr ""
-#~ "Lesezeichen sind lokale, bewegliche Markierungen für Änderungssätze. "
-#~ "Jedes\n"
-#~ "Lesezeichen zeigt auf einen Änderungssatz, angegeben durch dessen\n"
-#~ "Prüfsumme. Wenn Sie einen Commit ausführen, der auf einem Änderungssatz\n"
-#~ "mit einem Lesezeichen basiert, bewegt sich das Lesezeichen zum neuen\n"
-#~ "Änderungssatz."
-
-#~ msgid ""
-#~ "It is possible to use bookmark names in every revision lookup (e.g.\n"
-#~ ":hg:`merge`, :hg:`update`)."
-#~ msgstr ""
-#~ "Es ist möglich, Lesezeichen in jeder Revisionsabfrage zu verwenden\n"
-#~ "(z.B. :hg:`merge`, :hg:`update`)."
-
-#~ msgid ""
-#~ "By default, when several bookmarks point to the same changeset, they\n"
-#~ "will all move forward together. It is possible to obtain a more\n"
-#~ "git-like experience by adding the following configuration option to\n"
-#~ "your configuration file::"
-#~ msgstr ""
-#~ "Standardmäßig werden, wenn mehrere Lesezeichen auf einen Änderungssatz\n"
-#~ "zeigen, alle aktualisiert. Ist es möglich, ein Git-ähnliches Verhalten\n"
-#~ "zu erzeugen, indem die folgenden Einstellungen in die "
-#~ "Konfigurationsdatei\n"
-#~ "eingefügt werden::"
-
-#~ msgid ""
-#~ "  [bookmarks]\n"
-#~ "  track.current = True"
-#~ msgstr ""
-#~ "  [bookmarks]\n"
-#~ "  track.current = True"
-
-#~ msgid ""
-#~ "This will cause Mercurial to track the bookmark that you are currently\n"
-#~ "using, and only update it. This is similar to git's approach to\n"
-#~ "branching.\n"
-#~ msgstr ""
-#~ "Dies wird Mercurial dazu bringen, das Lesezeichen, das Sie im Moment\n"
-#~ "nutzen, zu verfolgen und nur dies zu aktualisieren. Dies ist ähnlich zur\n"
-#~ "Vorgehensweise von Git bei Verzweigungen.\n"
-
-#~ msgid "bookmark to export"
-#~ msgstr "Zu exportierendes Lesezeichen"
-
-#~ msgid ""
-#~ "    --config convert.hg.ignoreerrors=False    (boolean)\n"
-#~ "        ignore integrity errors when reading. Use it to fix Mercurial\n"
-#~ "        repositories with missing revlogs, by converting from and to\n"
-#~ "        Mercurial.\n"
-#~ "    --config convert.hg.saverev=False         (boolean)\n"
-#~ "        store original revision ID in changeset (forces target IDs to\n"
-#~ "        change)\n"
-#~ "    --config convert.hg.startrev=0            (hg revision identifier)\n"
-#~ "        convert start revision and its descendants"
-#~ msgstr ""
-#~ "    --config convert.hg.ignoreerrors=False    (boolescher Wert)\n"
-#~ "        Ignoriert Integritätsfehler beim Lesen. Wird benutzt um "
-#~ "Mercurial-\n"
-#~ "        Archive ohne Revlog zu korrigieren, wenn von hg in hg "
-#~ "konvertiert\n"
-#~ "        wird.\n"
-#~ "    --config convert.hg.saverev=False         (boolescher Wert)\n"
-#~ "        Speichert die Original-Revisions-ID im Änderunsgsatz (erzwingt\n"
-#~ "        Änderung der Ziel-IDs)\n"
-#~ "    --config convert.hg.startrev=0            (hg Revisions-ID)\n"
-#~ "        Konvertiert alle Nachfahren ab Startrevision"
-
-#~ msgid "    The options shown are the defaults."
-#~ msgstr "    Die folgenden Argumente zeigen die Standardwerte."
-
-#~ msgid ""
-#~ "    --config convert.cvsps.cache=True         (boolean)\n"
-#~ "        Set to False to disable remote log caching, for testing and\n"
-#~ "        debugging purposes.\n"
-#~ "    --config convert.cvsps.fuzz=60            (integer)\n"
-#~ "        Specify the maximum time (in seconds) that is allowed between\n"
-#~ "        commits with identical user and log message in a single\n"
-#~ "        changeset. When very large files were checked in as part of a\n"
-#~ "        changeset then the default may not be long enough.\n"
-#~ "    --config convert.cvsps.mergeto='{{mergetobranch ([-\\w]+)}}'\n"
-#~ "        Specify a regular expression to which commit log messages are\n"
-#~ "        matched. If a match occurs, then the conversion process will\n"
-#~ "        insert a dummy revision merging the branch on which this log\n"
-#~ "        message occurs to the branch indicated in the regex.\n"
-#~ "    --config convert.cvsps.mergefrom='{{mergefrombranch ([-\\w]+)}}'\n"
-#~ "        Specify a regular expression to which commit log messages are\n"
-#~ "        matched. If a match occurs, then the conversion process will\n"
-#~ "        add the most recent revision on the branch indicated in the\n"
-#~ "        regex as the second parent of the changeset.\n"
-#~ "    --config hook.cvslog\n"
-#~ "        Specify a Python function to be called at the end of gathering\n"
-#~ "        the CVS log. The function is passed a list with the log entries,\n"
-#~ "        and can modify the entries in-place, or add or delete them.\n"
-#~ "    --config hook.cvschangesets\n"
-#~ "        Specify a Python function to be called after the changesets\n"
-#~ "        are calculated from the the CVS log. The function is passed\n"
-#~ "        a list with the changeset entries, and can modify the changesets\n"
-#~ "        in-place, or add or delete them."
-#~ msgstr ""
-#~ "    --config convert.cvsps.cache=True         (boolescher Wert)\n"
-#~ "        Kann für Tests oder zur Fehlersuche deaktiviert werden, um das\n"
-#~ "        Zwischenspeichern des Quell-Logbuchs zu unterbinden.\n"
-#~ "    --config convert.cvsps.fuzz=60            (Ganzzahl)\n"
-#~ "        Spezifiziert die maximale Zeit (in Sekunden) die zwischen\n"
-#~ "        einzelnen Änderungssätzen mit selbem Benutzer und Meldung "
-#~ "erlaubt\n"
-#~ "        ist, damit sie in den gleichen Änderungssatz übernommen werden.\n"
-#~ "        Wenn sehr große Dateien übernommen wurden, ist der Standardwert\n"
-#~ "        vielleicht zu klein.\n"
-#~ "    --config convert.cvsps.mergeto='{{mergetobranch ([-\\w]+)}}'\n"
-#~ "        Spezifiziert einen Regulären Ausdruck, auf den Versionsmeldungen\n"
-#~ "        geprüft werden. Wenn ein Treffer gefunden wird, wird eine\n"
-#~ "        künstliche Revision als Zusammenführung des aktuellen mit dem\n"
-#~ "        gefunden Zweig eingefügt.\n"
-#~ "    --config convert.cvsps.mergefrom='{{mergefrombranch ([-\\w]+)}}'\n"
-#~ "        Spezifiziert einen Regulären Ausdruck, auf den Versionsmeldungen\n"
-#~ "        geprüft werden. Wenn ein Treffer gefunden wird, wird die\n"
-#~ "        jüngste Revision des angegebenen Zweigs als zweiter Vorfahr der\n"
-#~ "        aktuellen Revision angenommen.\n"
-#~ "    --config hook.cvslog\n"
-#~ "        Spezifiziert eine Python-Funktion, die nach dem Abrufen des\n"
-#~ "        CVS-Logs ausgeführt wird. Der Funktion wird eine Liste von\n"
-#~ "        Log-Einträgen übergeben, in der in-place Einträge bearbeitet, \n"
-#~ "        ergänzt oder gelöscht werden können.\n"
-#~ "    --config hook.cvschangesets\n"
-#~ "        Spezifiziert eine Python-Funktion, die aufgerufen wird, nachdem\n"
-#~ "        die Änderungssätze aus dem CVS-Log berechnet wurden. Der "
-#~ "Funktion\n"
-#~ "        wird eine Liste von Änderungssätzen übergeben, in der in-place\n"
-#~ "        Einträge bearbeitet, ergänzt oder gelöscht werden können."
-
-#~ msgid ""
-#~ "    --config convert.svn.branches=branches    (directory name)\n"
-#~ "        specify the directory containing branches\n"
-#~ "    --config convert.svn.tags=tags            (directory name)\n"
-#~ "        specify the directory containing tags\n"
-#~ "    --config convert.svn.trunk=trunk          (directory name)\n"
-#~ "        specify the name of the trunk branch"
-#~ msgstr ""
-#~ "    --config convert.svn.branches=branches       (Verzeichnisname)\n"
-#~ "        Spezifiziert das Verzeichnis für die Zweige\n"
-#~ "    --config convert.svn.tags=tags               (Verzeichnisname)\n"
-#~ "        Spezifiziert das Verzeichnis für Tags\n"
-#~ "    --config convert.svn.trunk=trunk             (Verzeichnisname)\n"
-#~ "        Spezifiziert den Namen des Hauptzweigs"
-
-#~ msgid ""
-#~ "    --config convert.p4.startrev=0            (perforce changelist "
-#~ "number)\n"
-#~ "        specify initial Perforce revision."
-#~ msgstr ""
-#~ "    --config convert.p4.startrev=0            (Perforce Changelist-"
-#~ "Nummer)\n"
-#~ "        Spezifiziert die Startrevision"
-
-#~ msgid ""
-#~ "    --config convert.hg.clonebranches=False   (boolean)\n"
-#~ "        dispatch source branches in separate clones.\n"
-#~ "    --config convert.hg.tagsbranch=default    (branch name)\n"
-#~ "        tag revisions branch name\n"
-#~ "    --config convert.hg.usebranchnames=True   (boolean)\n"
-#~ "        preserve branch names"
-#~ msgstr ""
-#~ "    --config convert.hg.clonebranches=False   (boolescher Wert)\n"
-#~ "        Lagert Quellzweige in separaten Klonen ab.\n"
-#~ "    --config convert.hg.tagsbranch=default    (Zweigname)\n"
-#~ "        Name des Zweigs, der die Tags enthalten soll.\n"
-#~ "    --config convert.hg.usebranchnames=True   (boolescher Wert)\n"
-#~ "        Erhält die Zweignamen"
-
-#~ msgid "    "
-#~ msgstr "    "
-
-#~ msgid ""
-#~ "    Run before changing/disabling active keywords or if you experience\n"
-#~ "    problems with :hg:`import` or :hg:`merge`."
-#~ msgstr ""
-#~ "    Führen Sie dies aus, bevor Platzhalter geändert/deaktiviert werden\n"
-#~ "    oder wenn Sie Probleme bei :hg:`import` oder :hg:`merge` haben."
-
-#~ msgid "queue directory updating\n"
-#~ msgstr "Aktualisiere Reihenverzeichnis\n"
-
-#~ msgid ""
-#~ "    With no arguments, print the currently active guards.\n"
-#~ "    With arguments, set guards for the named patch.\n"
-#~ "    NOTE: Specifying negative guards now requires '--'."
-#~ msgstr ""
-#~ "    Ohne Argumente werden die aktuell aktiven Wächter ausgegeben. Mit\n"
-#~ "    Argumenten werden die Wächter für den angegebenen Patch gesetzt. "
-#~ "HINWEIS:\n"
-#~ "    Die Angabe negativer Wächter erfordert jetzt '--'."
-
-#~ msgid "apply if the patch has rejects"
-#~ msgstr "Wendet Patch trotz Fehlerabschnitten an"
-
-#~ msgid ""
-#~ "When you are previewing the patchbomb messages, you can use ``formail``\n"
-#~ "(a utility that is commonly installed as part of the procmail\n"
-#~ "package), to send each message out::"
-#~ msgstr ""
-#~ "Mit ``formail`` (häufig durch das procmail-Paket installiert) können die\n"
-#~ "Nachrichten dann aus der mbox-Datei versendet werden::"
-
-#~ msgid "That should be all. Now your patchbomb is on its way out."
-#~ msgstr ""
-#~ "Das sollte es gewesen sein. Nun ist ihre Patchbombe in die Welt gesetzt."
-
-#, fuzzy
-#~ msgid ""
-#~ "    Each patch email has a Subject line of \"[PATCH M of N] ...\", using\n"
-#~ "    the first line of the changeset description as the subject text.\n"
-#~ "    The message contains two or three parts. First, the changeset\n"
-#~ "    description. Next, (optionally) if the diffstat program is\n"
-#~ "    installed and -d/--diffstat is used, the result of running\n"
-#~ "    diffstat on the patch. Finally, the patch itself, as generated by\n"
-#~ "    :hg:`export`."
-#~ msgstr ""
-#~ "    Die Betreffzeile jeder Patch-Email ist \"[PATCH M of N]\", gefolgt "
-#~ "von\n"
-#~ "    der ersten Zeile der Versionsmeldung. Im Körper folgen zwei oder "
-#~ "drei\n"
-#~ "    drei Teilen: Eine Beschreibung des Änderungssatzes, dann optional\n"
-#~ "    das Ergebnis von diffstat des Patches (wenn das Programm diffstat\n"
-#~ "    installiert ist und der Schalter -d/--diffstat angegeben ist) und\n"
-#~ "    schliesslich der Patch selber, wie durch \"hg export\" generiert."
-
-#, fuzzy
-#~ msgid " changesets"
-#~ msgstr "Füge Änderungssätze hinzu\n"
-
-#~ msgid " files"
-#~ msgstr " Dateien"
-
-#~ msgid "too many revisions specified"
-#~ msgstr "Zu viele Revisionen angegeben"
-
-#~ msgid ""
-#~ "    Commit the backed out changes as a new changeset. The new\n"
-#~ "    changeset is a child of the backed out changeset."
-#~ msgstr ""
-#~ "    Bereits vollzogene Änderungen werden noch einmal rückwärts "
-#~ "angewendet\n"
-#~ "    und als neuer Änderungssatz (als Kind des rückgängig gemachten) "
-#~ "übernommen."
-
-#~ msgid ""
-#~ "    If you backout a changeset other than the tip, a new head is\n"
-#~ "    created. This head will be the new tip and you should merge this\n"
-#~ "    backout changeset with another head."
-#~ msgstr ""
-#~ "    Soll ein anderer Änderungssatz als die Spitze (tip) zurückgezogen "
-#~ "werden,\n"
-#~ "    so wird ein neuer Kopf erzeugt und dieser ist die neue Spitze."
-
-#~ msgid ""
-#~ "    The --merge option remembers the parent of the working directory\n"
-#~ "    before starting the backout, then merges the new head with that\n"
-#~ "    changeset afterwards. This saves you from doing the merge by hand.\n"
-#~ "    The result of this merge is not committed, as with a normal merge."
-#~ msgstr ""
-#~ "    Die dadurch notwendige Zusammenführung kann durch die Option --merge\n"
-#~ "    automatisch mit der Vorgängerversion des Arbeitsverzeichnisses "
-#~ "durchgeführt\n"
-#~ "    werden. Das Resultat dieser Zusammenführung wird wie üblich nicht "
-#~ "sofort\n"
-#~ "    übernommen, sondern existiert als lokale Änderung."
-
-#~ msgid "the backout changeset is a new head - do not forget to merge\n"
-#~ msgstr "Neuen Kopf erstellt - Zusammenführung nicht vergessen\n"
-
-#~ msgid "(use \"backout --merge\" if you want to auto-merge)\n"
-#~ msgstr "(nutze \"backout --merge\" für eine automatische Zusammenführung)\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "    If no changeset is specified, attempt to update to the tip of the\n"
-#~ "    current branch. If this changeset is a descendant of the working\n"
-#~ "    directory's parent, update to it, otherwise abort."
-#~ msgstr ""
-#~ "    Wird keine Revision angegeben, wird zum Kopf des derzeitigen Zweigs\n"
-#~ "    aktualisiert, falls dieser ein Nachfahr des direkten Vorgängers der\n"
-#~ "    Arbeitskopie ist. Ansonsten bricht die Operation ab."
-
-#~ msgid "replace existing tag"
-#~ msgstr "Ersetzt bereits existierendes Tag"
-
-#~ msgid "check for uncommitted changes"
-#~ msgstr "prüft auf nicht versionierte Änderungen"
-
-#~ msgid "** report bug details to http://mercurial.selenic.com/bts/\n"
-#~ msgstr "** Problemdetails bitte bei http://www.selenic.com/mercurial/bts\n"
-
-#~ msgid ""
-#~ "``grep(regex)``\n"
-#~ "  Like ``keyword(string)`` but accepts a regex."
-#~ msgstr ""
-#~ "``grep(regex)``\n"
-#~ "  Wie ``keyword(zeichenkette)``, akzeptiert aber auch einen regulären\n"
-#~ "  Ausdruck (regex)."
-
-#~ msgid ""
-#~ "``tagged()``\n"
-#~ "  Changeset is tagged."
-#~ msgstr ""
-#~ "``tagged()``\n"
-#~ "  Der Änderungssatz wurde mit einem Tag versehen."
-
-#~ msgid ""
-#~ "  hg log -r 'branch(default)'\n"
-#~ "  hg log -r 'branch(default) and 1.5:: and not merge()'\n"
-#~ "  hg log -r '1.3::1.5 and keyword(bug) and file(\"hgext/*\")'\n"
-#~ "  hg log -r 'sort(date(\"May 2008\"), user)'\n"
-#~ "  hg log -r '(keyword(bug) or keyword(issue)) and not ancestors(tagged"
-#~ "())'\n"
-#~ msgstr ""
-#~ "  hg log -r 'branch(default)'\n"
-#~ "  hg log -r 'branch(default) and 1.5:: and not merge()'\n"
-#~ "  hg log -r '1.3::1.5 and keyword(bug) and file(\"hgext/*\")'\n"
-#~ "  hg log -r 'sort(date(\"May 2008\"), user)'\n"
-#~ "  hg log -r '(keyword(bug) or keyword(issue)) and not ancestors(tagged"
-#~ "())'\n"
-
-#~ msgid "bundling changes"
-#~ msgstr "Bündle Änderungen"
-
-#~ msgid "bundling manifests"
-#~ msgstr "Bündle Manifeste"
-
-#~ msgid "warning: detected divergent renames of %s to:\n"
-#~ msgstr "Warnung: abweichende Umbenennungen von %s entdeckt:\n"
-
-#~ msgid ""
-#~ "internal patcher failed\n"
-#~ "please report details to http://mercurial.selenic.com/bts/\n"
-#~ "or mercurial@selenic.com\n"
-#~ msgstr ""
-#~ "Fehlschlag des internen patch-Werkzeugs.\n"
-#~ "Bitte melden Sie diesen Fehler bei http://mercurial.selenic.com/bts/\n"
-#~ "oder mercurial@selenic.com\n"
-
-#~ msgid "limit wants a number"
-#~ msgstr "limit verlangt eine Zahl"
-
-#~ msgid "warning: %s in %s\n"
-#~ msgstr "Warnung: %s in %s\n"
-
-#~ msgid "error expanding '%s%%%s'"
-#~ msgstr "Fehler beim Auflösen von '%s%%%s'"
-
-#~ msgid "unknown filter '%s'"
-#~ msgstr "Unbekannter Filter '%s'"
-
-#~ msgid "server identity verification succeeded\n"
-#~ msgstr "Identität des Servers wurde erfolgreich verifiziert\n"
-
-#~ msgid "user name not available - set USERNAME environment variable"
-#~ msgstr ""
-#~ "Benutzername nicht verfügbar - bitte setze die USERNAME Umgebungsvariable"
--- a/i18n/ru.po	Sun Jan 08 23:09:35 2012 +0800
+++ b/i18n/ru.po	Mon Jan 09 20:16:57 2012 -0600
@@ -1,20 +1,185 @@
 # Russian translations for Mercurial package.
 # Copyright (C) 2011 Matt Mackall <mpm@selenic.com> and others
 # This file is distributed under the same license as the Mercurial package.
-# Alexander Sauta <demosito@gmail.com>, 2011.
+# === Glossary ===
+#
+#
+#                     Файловая структура
+#
+# repository            — хранилище (не «репозиторий»)
+#    subrepository      — подхранилище (не «субрепозиторий») 
+# store                 — склад (= место хранения файлов в LargefilesExtension), 
+#                         (не «хранилище»)
+# directory             — каталог (не «директорий», не «директория»)
+# folder                — папка
+# source                — источник
+#    source file        — исходный файл 
+# destination           — назначение
+#    destination file   — файл назначения 
+#
+#
+#                    Названия основных действий
+#
+# commit              — гл. фиксировать, сущ. фиксация (не «коммит», не «коммитить»)
+#     commit message  — сообщение фиксации
+#     commit comment  — комментарий с сообщением фиксации (только для BugzillaExtension)
+# log                 — журнал
+#     log message     — сообщение журнала, журнальное сообщение
+#     log entry       — запись журнала, журнальная запись
+# pull                — затянуть (не «подтянуть»)
+# push                — протолкнуть (не «затолкнуть»)
+# update              — обновить (~ до определённой ревизии)
+# refresh             — обновить изображение (имеет смысл только для GUI)
+# checkout            — извлечь (напр. из хранилища Subversion)
+# resolve             — уладить (конфликт)
+# revert              — вернуть
+# discard             — отбросить  
+#
+#                   Слова на тему «удаление» 
+#
+# clean                  — чистый (~ локальный файл, не содержащий изменений по сравнению с хранилищем)
+#     clean working copy — чистая рабочая копия (= не содержащая изменённых файлов) 
+# purge                  — зачистить (= удалить неиспользуемые файлы из рабочей копии), 
+#                          (не «удалить», не «очистить»)
+# strip                  — срезать (~ ревизию и всех её потомков) (thg: содрать (как одежду));
+#     strip revision     — срезать ревизию 
+# ??? delete                 — уничтожить (= стереть с диска, не «удалить»)
+# remove                 — изъять (из-под контроля версий, не «удалить») 
+#
+#
+#                   Слова на тему «слияние»
+#
+# branch              — ветка (не «ветвь», не «бранч»), гл. ветвление
+#     frozen branch   — замороженная ветка 
+#     named branch    — именованная ветка
+# diff                — различия (не «дифф»)
+# merge               — слить (сущ. «слияние»)
+# ??? fetch               — залить (сущ. «заливка» — означает слияние поверх незафиксированных изменений)
+# backout             — обратить (~ изменения, сделанные в ранней ревизии), (thg: отлить, сущ. «отливание», иногда «обратное слияние»))
+# rollback            — откатить (~ транзакцию)
+# cancel              — отменить 
+#
+#                  Слова на тему «управление изменениями»
+#
+# bundle                — пачка (не «бандл»), (thg: комплект)
+#     to bundle several changesets — запаковать несколько наборов изменений
+#     binary bundle     — пачка в двоичном формате 
+# ??? batch                 — порция
+# ??? patch                 — заплатка, накладывать заплатку (не «патч», не «патчить»)
+# ??? apply patch — наложить заплатку (не «применить заплатку»), (вариант: пришить заплатку),
+# ??? unapply patch — отпороть заплатку, (thg: оторвать заплатку), варианты: снять заплатку
+# ??? fold patch(es) — подшить заплатки (~ к самой верхней наложенной заплатке) 
+# ??? chunk, hunk — лоскут (= часть заплатки)
+# ??? shelf — долгий ящик (= место для откладывания изменений) ;)
+# shelve — отложить изменения (в долгий ящик) 
+#
+#
+# Разное
+#
+# extension        — расширение
+# option           — параметр (не «опция»)
+#     options      — параметры (не «настройки») 
+# settings         — настройки (не «установки»)
+# ??? hook         — перехватчик, (не «крючок», не «ловушка», не «уловка», не «зацепка»)
+#     hook script  — скрипт-перехватчик (не «скрипт ловушки»)
+#     иногда слово hook употребляется в том же смысле, что и intercepted action (например, в документации) — тогда его следует переводить как «перехватываемое действие/событие» или «точка/момент перехвата» 
+#
+# alias          — псевдоним
+# changeset      — набор изменений
+# revision       — ревизия
+# status         — состояние
+# ??? head       — голова (= ревизия, не имеющая дочерних ревизий)
+#
+# ??? tip        — оконечная ревизия
+#
+# ??? tip revision — (ревизия-)макушка, вариант: оконечная ревизия, ревизия-наконечник 
+#
+# changegroup    группа изменений
+# tag            метка
+# working copy   рабочая копия
+# hash           хэш
+# glob           глоб, glob
+# update         обновить
+# binary         бинарный
+# basename       ? 
+# import         импортировать
+# export         экспортировать
+# rename         переименовывать
+# undo           отменить
+# track          отслеживать
+# committer      автор фиксации
+# whitespace     пробельный символ
+# match          совпадать (о шаблоне)
+# restricted     ограниченный
+# graft          перенести (изменения) ??? вообще пересадить
+# id             идентификатор
+# guard (в mq)   страж (необходимо пояснение) (thg: стражник)
+# positive/negative guard положительный/отрицательный страж ??? (может разрешающий/запрещающий?)
+# apply patch    наложить патч
+# fuzz (patch)   несоответствие контекстов (в патче и целевом файле) ???
+# series (mq)    последовательность
+# pop (о стеке)  вытолкнуть (может писать извлечь из стека/поместить в стек) ???
+# push (о стеке) протолкнуть см. рор ???
+# save entry     запись сохранения ???
+# versioned      находящийся под контролем версий, версионируемый
+# queue repository хранилище очереди
+# nested         вложенный
+# deprecated     устаревший
+# backup         резервная копия
+# finish (mq, qfinish) финализировать??? -- «завершить» // comment by Andrei Polushin
+# fold (patch)     подшить ??? вообще свернуть
+# imply          подразумевать
+# rebase         перебазировать
+# root           корень, корневая ревизия ???
+# progress bar   индикатор выполнения
+# map (file)     ??? да и вообще все с map плохо
+# abort          отмена или останов (в статусах)
+# checkin        (в конфиге для encode/decode) сейчас фиксация ???
+# lookup         поиск ???
+#
+#
+# === TODO ===
+#
+# Эти вещи требуют доработки
+#
+# - keyword template maps в keywords - придумать лучший перевод
+# - вычитка, исправление опечаток, стилистика многих предложений
+# - протестировать сообщения об ошибках (я не видел многих из них в работе)
+# - строки с пользовательским вводом (вида &Local). Пока не знаю, как они обрабатываются.
+# - числительные - сейчас всегда множественное число
+# - придумать перевод для терминов с ???
+# - пометить как-то строки, которые не требуют перевода или не будут переводиться,
+#   чтобы можно легко понять, сколько еще осталось сделать.
+# - в какой форме д.б. глаголы сообщений о текущем действии:
+#   1 л ед.ч. - загружаю обновления, 
+#   1 л мн.ч - загружаем обновления, -- Так! // comment by Andrei Polushin
+#   3 л - загружаются обновления ?
+#   Сюда же относятся сообщения cannot do smth: не могу сделать что-то или что-то невозможно?
+#   Cейчас последний вариант. -- А лучше «не удаётся» // comment by Andrei Polushin
+# - внести определения согласованных терминов в hg glossary
+# - bisect - можно во многих местах употреблять термин "бисекция" вместо
+#            неуклюжего "метод деления пополам". Это устоявшийся термин.
+# - в строке дожно быть не более 75 символов!
+# - переводить ли примеры конфигов? я оставил как есть, чтобы пользователь 
+#   привыкал к англ, т.к. все настройки Mercurial на англ
+# - Attention Caution !Danger! Error Hint Important Note Tip Warning!
+#   какая разница?
+#
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2011-07-01 00:15+0400\n"
-"PO-Revision-Date: 2011-11-09 18:25+0100\n"
+"POT-Creation-Date: 2011-12-26 21:03+0400\n"
+"PO-Revision-Date: 2011-05-12 23:48+0400\n"
 "Last-Translator: Alexander Sauta <demosito@gmail.com>\n"
 "Language-Team: Russian\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
 #, python-format
 msgid " (default: %s)"
@@ -33,8 +198,8 @@
 "This section contains help for extensions that are distributed together with "
 "Mercurial. Help for other extensions is available in the help system."
 msgstr ""
-"Этот раздел содержит справку по расширениям, включенным в стандартную "
-"комплектацию Mercurial. Справка по другим расширениям может быть получена в "
+"Этот раздел содержит справку по расширениям, включенным в стандартный "
+"дистрибутив Mercurial. Справка по другим расширениям может быть получена в "
 "справочной системе."
 
 msgid "Options:"
@@ -44,20 +209,27 @@
 msgid "    aliases: %s"
 msgstr "    псевдонимы: %s"
 
+# {{{ Start of extensions
 msgid "hooks for controlling repository access"
-msgstr "Хуки для контроля доступа к репозиторию"
+msgstr "хуки для контроля доступа к хранилищу"
 
 msgid ""
 "This hook makes it possible to allow or deny write access to given\n"
 "branches and paths of a repository when receiving incoming changesets\n"
 "via pretxnchangegroup and pretxncommit."
 msgstr ""
+"Этот хук позволяет разрешить или запретить доступ на запись к заданным\n"
+"веткам и путям хранилища во время получения входящих наборов изменений\n"
+"через pretxnchangegroup и pretxncommit."
 
 msgid ""
 "The authorization is matched based on the local user name on the\n"
 "system where the hook runs, and not the committer of the original\n"
 "changeset (since the latter is merely informative)."
 msgstr ""
+"Авторизация основана на локальном имени пользователя\n"
+"системы, где выполняется хук, а не на имени автора (committer) исходного\n"
+"изменения (changeset) (так как последний имеет чисто информативный характер)."
 
 msgid ""
 "The acl hook is best used along with a restricted shell like hgsh,\n"
@@ -67,9 +239,18 @@
 "remote users share an account, because then there is no way to\n"
 "distinguish them."
 msgstr ""
+"Хук авторизации (acl hook) лучше всего использовать вместе с ограниченной "
+"(restricted) оболочкой, как, например hgsh,\n"
+"которая предотвращает доступ ко всему кроме push или pull неавторизованными "
+"пользователями.\n"
+"Хук небезопасно использовать, если используется интерактивная оболочка,\n"
+"так как при этом пользователи могут отключить хук. Это также небезопасно "
+"если\n"
+"отдалённые пользователи разделяют один и тот же аккаунт, так как при этом "
+"нельзя различить пользователей."
 
 msgid "The order in which access checks are performed is:"
-msgstr ""
+msgstr "Порядок, в котором выполняются проверки доступа:"
 
 msgid ""
 "1) Deny  list for branches (section ``acl.deny.branches``)\n"
@@ -77,38 +258,55 @@
 "3) Deny  list for paths    (section ``acl.deny``)\n"
 "4) Allow list for paths    (section ``acl.allow``)"
 msgstr ""
+"1) Список запретов   для веток (раздел ``acl.deny.branches``)\n"
+"2) Список разрешений для веток (раздел ``acl.allow.branches``)\n"
+"3) Список запретов   для путей (раздел ``acl.deny``)\n"
+"4) Список разрешений для путей (раздел ``acl.allow``)"
 
 msgid "The allow and deny sections take key-value pairs."
 msgstr ""
+"Одобренный и отказной разделы (секции ``allow`` и ``deny``) принимают пары "
+"ключ-значение."
 
 msgid ""
 "Branch-based Access Control\n"
 "..........................."
 msgstr ""
+"Контроль доступа, основанный на ветке\n"
+"....................................."
 
 msgid ""
 "Use the ``acl.deny.branches`` and ``acl.allow.branches`` sections to\n"
 "have branch-based access control. Keys in these sections can be\n"
 "either:"
 msgstr ""
+"Используйте разделы ``acl.deny.branches`` и ``acl.allow.branches``\n"
+"чтобы получить контроль доступа, основанный на ветке. Ключами в этих "
+"разделах могут быть:"
 
 msgid ""
 "- a branch name, or\n"
 "- an asterisk, to match any branch;"
 msgstr ""
+"- имя ветки, или\n"
+"- звёздочка, чтобы выбрать любую ветку;"
 
 msgid "The corresponding values can be either:"
-msgstr ""
+msgstr "Соответствующие значения могут быть:"
 
 msgid ""
 "- a comma-separated list containing users and groups, or\n"
 "- an asterisk, to match anyone;"
 msgstr ""
+"- список, разделённый запятыми, содержащий пользователей и группы, или\n"
+"- звёздочка, чтобы выбрать любого;"
 
 msgid ""
 "Path-based Access Control\n"
 "........................."
 msgstr ""
+"Контроль доступа основанный на пути\n"
+"..................................."
 
 msgid ""
 "Use the ``acl.deny`` and ``acl.allow`` sections to have path-based\n"
@@ -116,16 +314,26 @@
 "a glob syntax by default). The corresponding values follow the same\n"
 "syntax as the other sections above."
 msgstr ""
+"Используйте разделы ``acl.deny`` и ``acl.allow`` для контроля доступа, "
+"основанного на пути.\n"
+"Ключи в этих разделах принимают шаблон для поддерева (с\n"
+"синтаксисом glob по умолчанию). Соответствующие значения следуют тем же "
+"синтаксическим правилам,\n"
+"что и вышеперечисленные разделы."
 
 msgid ""
 "Groups\n"
 "......"
 msgstr ""
+"Группы\n"
+"......"
 
 msgid ""
 "Group names must be prefixed with an ``@`` symbol. Specifying a group\n"
 "name has the same effect as specifying all the users in that group."
 msgstr ""
+"Имена групп должны начинаться с символа  ``@``. Если имя группы задано,\n"
+"это даёт тот же эффект, что и указание всех пользователей в этой группе."
 
 msgid ""
 "You can define group members in the ``acl.groups`` section.\n"
@@ -133,28 +341,42 @@
 "a Unix-like system, the list of users will be taken from the OS.\n"
 "Otherwise, an exception will be raised."
 msgstr ""
+"Можно задать членов группы в разделе ``acl.groups``.\n"
+"Если имя группы там не определено, и Mercurial работает под управлением\n"
+"Unix-подобной системы, то список пользователей будет определяться "
+"операционной системой.\n"
+"В противном случае генерируется исключение."
 
 msgid ""
 "Example Configuration\n"
 "....................."
 msgstr ""
+"Пример конфигурации\n"
+"..................."
 
 msgid "::"
-msgstr ""
+msgstr "::"
 
 msgid "  [hooks]"
-msgstr ""
+msgstr "  [hooks]"
 
 msgid ""
 "  # Use this if you want to check access restrictions at commit time\n"
 "  pretxncommit.acl = python:hgext.acl.hook"
 msgstr ""
+"  # Используйте это если хотите проверять ограничения доступа во время "
+"фиксации\n"
+"  pretxncommit.acl = python:hgext.acl.hook"
 
 msgid ""
 "  # Use this if you want to check access restrictions for pull, push,\n"
 "  # bundle and serve.\n"
 "  pretxnchangegroup.acl = python:hgext.acl.hook"
 msgstr ""
+"  # Используйте это если хотите проверять ограничения доступа для pull, "
+"push,\n"
+"  # bundle и serve.\n"
+"  pretxnchangegroup.acl = python:hgext.acl.hook"
 
 msgid ""
 "  [acl]\n"
@@ -165,42 +387,64 @@
 "  # Default: serve\n"
 "  sources = serve"
 msgstr ""
+"  [acl]\n"
+"  # Разрешать или запрещать доступ к входящим изменениям только если их "
+"первоисточник\n"
+"  # указан здесь, разрешать в противном случае. Источник - \"serve\" для "
+"всех\n"
+"  # отдалённых операций (по http или ssh), или же \"push\", \"pull\" или "
+"\"bundle\", когда\n"
+"  # соответствующие команды выполняются локально.\n"
+"  # По умолчанию: serve\n"
+"  sources = serve"
 
 msgid "  [acl.deny.branches]"
-msgstr ""
+msgstr "  [acl.deny.branches]"
 
 msgid ""
 "  # Everyone is denied to the frozen branch:\n"
 "  frozen-branch = *"
 msgstr ""
+"  # Всем закрыт доступ к ветке frozen:\n"
+"  frozen-branch = *"
 
 msgid ""
 "  # A bad user is denied on all branches:\n"
 "  * = bad-user"
 msgstr ""
+"  # Плохой пользователь забанен на всех ветках:\n"
+"  * = bad-user"
 
 msgid "  [acl.allow.branches]"
-msgstr ""
+msgstr "  [acl.allow.branches]"
 
 msgid ""
 "  # A few users are allowed on branch-a:\n"
 "  branch-a = user-1, user-2, user-3"
 msgstr ""
+"  # Некоторые пользователи допущены в branch-a:\n"
+"  branch-a = user-1, user-2, user-3"
 
 msgid ""
 "  # Only one user is allowed on branch-b:\n"
 "  branch-b = user-1"
 msgstr ""
+"  # Только один пользователь допущен в branch-b:\n"
+"  branch-b = user-1"
 
 msgid ""
 "  # The super user is allowed on any branch:\n"
 "  * = super-user"
 msgstr ""
+"  # Администратор допущен в любую ветку:\n"
+"  * = super-user"
 
 msgid ""
 "  # Everyone is allowed on branch-for-tests:\n"
 "  branch-for-tests = *"
 msgstr ""
+"  # Все допущены в branch-for-tests:\n"
+"  branch-for-tests = *"
 
 msgid ""
 "  [acl.deny]\n"
@@ -208,45 +452,71 @@
 "  # checked. All users are granted access if acl.deny is not present.\n"
 "  # Format for both lists: glob pattern = user, ..., @group, ..."
 msgstr ""
+"  [acl.deny]\n"
+"  # Этот список проверяется первым. Если найдено совпадение, acl.allow не\n"
+"  # проверяется. Все пользователи получают доступ если acl.deny "
+"отсутствует.\n"
+"  # Формат для обоих списков: glob-шаблон = пользователь, ..., @группа, ..."
 
 msgid ""
 "  # To match everyone, use an asterisk for the user:\n"
 "  # my/glob/pattern = *"
 msgstr ""
+"  # Чтобы обозначить любого пользователя, используйте звёздочку:\n"
+"  # my/glob/pattern = *"
 
 msgid ""
 "  # user6 will not have write access to any file:\n"
 "  ** = user6"
 msgstr ""
+"  # user6 не будет иметь прав на запись для любого файла:\n"
+"  ** = user6"
 
 msgid ""
 "  # Group \"hg-denied\" will not have write access to any file:\n"
 "  ** = @hg-denied"
 msgstr ""
+"  # Группа \"hg-denied\" не будет иметь прав на запись для любого файла:\n"
+"  ** = @hg-denied"
 
 msgid ""
 "  # Nobody will be able to change \"DONT-TOUCH-THIS.txt\", despite\n"
 "  # everyone being able to change all other files. See below.\n"
 "  src/main/resources/DONT-TOUCH-THIS.txt = *"
 msgstr ""
+"  # Никто не сможет изменить файл \"DONT-TOUCH-THIS.txt\", несмотря на то, "
+"что\n"
+"  # все могут менять любые другие файлы. См. далее.\n"
+"  src/main/resources/DONT-TOUCH-THIS.txt = *"
 
 msgid ""
 "  [acl.allow]\n"
 "  # if acl.allow is not present, all users are allowed by default\n"
 "  # empty acl.allow = no users allowed"
 msgstr ""
+"  [acl.allow]\n"
+"  # Если acl.allow отсутствует, все пользователи разрешены по умолчанию,\n"
+"  # пустой acl.allow означает что никому нет доступа"
 
 msgid ""
 "  # User \"doc_writer\" has write access to any file under the \"docs\"\n"
 "  # folder:\n"
 "  docs/** = doc_writer"
 msgstr ""
+"  # Пользователь \"doc_writer\" имеет доступ на запись для любого файла в "
+"\"docs\"\n"
+"  # папке:\n"
+"  docs/** = doc_writer"
 
 msgid ""
 "  # User \"jack\" and group \"designers\" have write access to any file\n"
 "  # under the \"images\" folder:\n"
 "  images/** = jack, @designers"
 msgstr ""
+"  # Пользователь \"jack\" и группа \"designers\" имеют доступ на запись для "
+"любого файла\n"
+"  # в папке \"images\":\n"
+"  images/** = jack, @designers"
 
 msgid ""
 "  # Everyone (except for \"user6\" - see acl.deny above) will have write\n"
@@ -254,59 +524,80 @@
 "  # file. See acl.deny):\n"
 "  src/main/resources/** = *"
 msgstr ""
+"  # Любой пользователь (за исключением \"user6\" - см. acl.deny выше) "
+"получит доступ на запись\n"
+"  # в любой файл в папке \"resources\" (за исключением 1\n"
+"  # файла. Смотри acl.deny):\n"
+"  src/main/resources/** = *"
 
 msgid "  .hgtags = release_engineer"
-msgstr ""
+msgstr "  .hgtags = release_engineer"
 
 #, python-format
 msgid "group '%s' is undefined"
-msgstr ""
+msgstr "группа '%s' не определена"
 
 #, python-format
 msgid ""
 "config error - hook type \"%s\" cannot stop incoming changesets nor commits"
 msgstr ""
+"ошибка конфигурации - хук типа \"%s\" не может предотвратить входящие "
+"изменения (changesets, commits)"
 
 #, python-format
 msgid "acl: user \"%s\" denied on branch \"%s\" (changeset \"%s\")"
-msgstr ""
+msgstr "acl: пользователь \"%s\" не допущен в ветку \"%s\" (ревизия \"%s\")"
 
 #, python-format
 msgid "acl: user \"%s\" not allowed on branch \"%s\" (changeset \"%s\")"
-msgstr ""
-
-#, python-format
-msgid "acl: access denied for changeset %s"
-msgstr ""
+msgstr "acl: пользователь \"%s\" не допущен в ветку \"%s\" (ревизия \"%s\")"
+
+#, python-format
+msgid "acl: user \"%s\" denied on \"%s\" (changeset \"%s\")"
+msgstr "acl: пользователь \"%s\" не допущен в \"%s\" (ревизия \"%s\")"
+
+#, python-format
+msgid "acl: user \"%s\" not allowed on \"%s\" (changeset \"%s\")"
+msgstr "acl: пользователь \"%s\" не допущен в \"%s\" (ревизия \"%s\")"
 
 msgid "hooks for integrating with the Bugzilla bug tracker"
-msgstr ""
+msgstr "хуки для интеграции с Bugzilla bug tracker"
 
 msgid ""
 "This hook extension adds comments on bugs in Bugzilla when changesets\n"
 "that refer to bugs by Bugzilla ID are seen. The comment is formatted using\n"
 "the Mercurial template mechanism."
 msgstr ""
+"Это расширение, предоставляющее хуки, добавляет комментариии к багам\n"
+"в Bugzilla, когда встречает наборы изменений, привязанные к багам c помощью\n"
+"Bugzilla ID. Комментарий форматируется с использованием механизма шаблонов\n"
+"Mercurial."
 
 msgid "The hook does not change bug status."
-msgstr ""
+msgstr "Хук не изменяет статус бага."
 
 msgid "Three basic modes of access to Bugzilla are provided:"
-msgstr ""
+msgstr "Предоставляются три основных режима доступа к Bugzilla:"
 
 msgid ""
 "1. Access via the Bugzilla XMLRPC interface. Requires Bugzilla 3.4 or later."
 msgstr ""
+"1. Доступ через интерфейс Bugzillа XMLRPC. Требуется Bugzilla 3.4 или новее."
 
 msgid ""
 "2. Check data via the Bugzilla XMLRPC interface and submit bug change\n"
 "   via email to Bugzilla email interface. Requires Bugzilla 3.4 or later."
 msgstr ""
+"2. Проверять данные через интерфес Bugzilla XMLRPC и отправлять изменения\n"
+"   бага по почте через email-интерфейс Bugzilla. Требуется Bugzilla 3.4 или "
+"новее."
 
 msgid ""
 "3. Writing directly to the Bugzilla database. Only Bugzilla installations\n"
 "   using MySQL are supported. Requires Python MySQLdb."
 msgstr ""
+"3. Прямая запись в базу данных Bugzilla. Поддерживается только установка\n"
+"   Bugzilla c MySQL. Требуется Python MySQLdb."
 
 msgid ""
 "Writing directly to the database is susceptible to schema changes, and\n"
@@ -319,6 +610,14 @@
 "deprecated, and will not be updated for new Bugzilla versions going\n"
 "forward."
 msgstr ""
+"Прямая запись в базу данных чувствительна к изменениям в ее схеме и\n"
+"полагается на скрипт из каталога contrib Bugzilla при отправке\n"
+"уведомлений об изменении бага по email. Этот скрипт запускается\n"
+"от имени пользователя Mercurial, должен быть запущен на машине, на\n"
+"которай установлена Bugzilla, и требует прав на чтение конфигурации\n"
+"Bugzilla и имени и пароля пользователя, имеющего полный доступа\n"
+"к ее базе данных. По этим причинам этот режим признан устаревшим и\n"
+"не будет обновляться в новых версиях Bugzilla."
 
 msgid ""
 "Access via XMLRPC needs a Bugzilla username and password to be specified\n"
@@ -327,6 +626,11 @@
 "that the rights of that user are restricted in Bugzilla to the minimum\n"
 "necessary to add comments."
 msgstr ""
+"Доступ по XMLRPC требует задания имени и пароля пользователя Bugzilla\n"
+"в настройках. Комментарии добавляются от имени этого пользователя.\n"
+"Поскольку настройки должны быть доступны на чтение всем пользователям\n"
+"Mercurial, рекомендуется ограничить этого пользователя в Bugzilla\n"
+"максимально, разрешив только добавлять комментарии."
 
 msgid ""
 "Access via XMLRPC/email uses XMLRPC to query Bugzilla, but sends\n"
@@ -337,14 +641,25 @@
 "user, the email associated with the Bugzilla username used to log into\n"
 "Bugzilla is used instead as the source of the comment."
 msgstr ""
+"Доступ через XMLRPC/email использует XMLRPC для опроса Bugzilla, но\n"
+"отправляет письма на email-интерфейс Bugzilla для отправки комментариев\n"
+"к багам. Адрес From: (От) в письме устанавливается в email-адрес "
+"пользователя\n"
+"Mercurial, поэтому комментарии оставляются от имени пользователя\n"
+"Mercurial. В случае, если почтовый адрес пользователя Mercurial не\n"
+"опознается Bugzill'ой как ее пользователь, в качестве источника\n"
+"комменатриев используется адрес email, привязанный к пользователю\n"
+"Bugzilla, от имени которого выполнялся вход."
 
 msgid "Configuration items common to all access modes:"
-msgstr ""
+msgstr "Общие параметры для всех режимов доступа:"
 
 msgid ""
 "bugzilla.version\n"
 "  This access type to use. Values recognised are:"
 msgstr ""
+"bugzilla.version\n"
+"  Тип доступа. Возможны следующие значения:"
 
 msgid ""
 "  :``xmlrpc``:       Bugzilla XMLRPC interface.\n"
@@ -355,6 +670,13 @@
 "  :``2.16``:         MySQL access, Bugzilla 2.16 and up to but not\n"
 "                     including 2.18."
 msgstr ""
+"  :``xmlrpc``:       Интерфейс Bugzilla XMLRPC.\n"
+"  :``xmlrpc+email``: Интерфейсы Bugzilla XMLRPC и email.\n"
+"  :``3.0``:          Доступ к MySQL, Bugzilla 3.0 и новее.\n"
+"  :``2.18``:         Доступ к MySQL, Bugzilla 2.18 и до 3.0 (не включая "
+"3.0)\n"
+"  :``2.16``:         Доступн к MySQL, Bugzilla 2.16 и до 2.18 (не включая "
+"2.18)"
 
 msgid ""
 "bugzilla.regexp\n"
@@ -364,11 +686,19 @@
 "  ``Bug 1234 and 5678`` and variations thereof. Matching is case\n"
 "  insensitive."
 msgstr ""
+"bugzilla.regexp\n"
+"  Регулярное выражение для поиска ID бага в комментарии фиксации набора\n"
+"  изменений. Должно содержать одну группу в скобках \"()\". По умолчанию\n"
+"  задано выражение, совпадающее с ``Bug 1234``, ``Bug no. 1234``,\n"
+"  ``Bug number 1234``, ``Bugs 1234,5678``, ``Bug 1234 and 5678`` и их\n"
+"  вариациями. Не чувствительно к регистру."
 
 msgid ""
 "bugzilla.style\n"
 "  The style file to use when formatting comments."
 msgstr ""
+"bugzilla.style\n"
+"  Файл стиля для форматирования комментариев."
 
 msgid ""
 "bugzilla.template\n"
@@ -376,6 +706,10 @@
 "  specified. In addition to the usual Mercurial keywords, the\n"
 "  extension specifies:"
 msgstr ""
+"bugzilla.template\n"
+"  Шаблон, используемый при форматировании комментариев. Переопределяет\n"
+"  style. В дополнение к обычным ключевым словам Mercurial, доступны\n"
+"  также:"
 
 msgid ""
 "  :``{bug}``:     The Bugzilla bug ID.\n"
@@ -383,11 +717,18 @@
 "  :``{webroot}``: Stripped pathname of the Mercurial repository.\n"
 "  :``{hgweb}``:   Base URL for browsing Mercurial repositories."
 msgstr ""
+"  :``{bug}``:     ID бага в Bugzilla.\n"
+"  :``{root}``:    Полный путь к хранилищу Mercurial.\n"
+"  :``{webroot}``: Сокращенный путь к хранилищу Mercurial.\n"
+"  :``{hgweb}``:   Базовый URL для обозревателя хранилищ Mercurial."
 
 msgid ""
 "  Default ``changeset {node|short} in repo {root} refers to bug\n"
 "  {bug}.\\ndetails:\\n\\t{desc|tabindent}``"
 msgstr ""
+"  По умолчанию ``набор изменений {node|short} в хранилище {root}\n"
+"  относится к багу {bug}.\\nДетали:\\n\n"
+"\t{desc|tabindent}"
 
 msgid ""
 "bugzilla.strip\n"
@@ -397,15 +738,23 @@
 "  ``/var/local/my-project`` with a strip of 2 gives a value for\n"
 "  ``{webroot}`` of ``my-project``. Default 0."
 msgstr ""
+"bugzilla.strip\n"
+"  Количество разделителей в путях, вырезаемых из начала пути хранилища\n"
+"  Mercurial ( ``{root}`` в шаблонах), чтобы создать ``{webroot}``.\n"
+"  Например, хранилище с ``{root}`` ``/var/local/my-project`` и strip\n"
+"  равным 2, дает значение ``{webroot}`` ``my-project``. По умолчанию 0."
 
 msgid ""
 "web.baseurl\n"
 "  Base URL for browsing Mercurial repositories. Referenced from\n"
 "  templates as ``{hgweb}``."
 msgstr ""
+"web.baseurl\n"
+"  Базовый URL для просмотра хранилищ Mercurial. На него ссылаются из\n"
+"  шаблонов как ``{hgweb}``."
 
 msgid "Configuration items common to XMLRPC+email and MySQL access modes:"
-msgstr ""
+msgstr "Общие параметры для режимов доступа XMLRPC+email и MySQL:"
 
 msgid ""
 "bugzilla.usermap\n"
@@ -413,94 +762,132 @@
 "  mappings. If specified, the file should contain one mapping per\n"
 "  line::"
 msgstr ""
+"bugzilla.usermap\n"
+"  Путь к файлу, содержащему соответствия email автора наборов\n"
+"  изменений Mercurial и email пользователей Bugzilla. Если задан,\n"
+"  файл должен содержать одно соответствие на строку::"
 
 msgid "    committer = Bugzilla user"
-msgstr ""
+msgstr "     автор Mercurial = пользователь Bugzilla"
 
 msgid "  See also the ``[usermap]`` section."
-msgstr ""
+msgstr "  См. также секцию ``[usermap]``."
 
 msgid ""
 "The ``[usermap]`` section is used to specify mappings of Mercurial\n"
 "committer email to Bugzilla user email. See also ``bugzilla.usermap``.\n"
 "Contains entries of the form ``committer = Bugzilla user``."
 msgstr ""
+"Секция ``[usermap]`` используется чтобы задать соответствия адресов email\n"
+"пользователя Mercurial адресу email пользователя Bugzilla. См. также\n"
+"``bugzilla.usermap``. Содержит записи вида\n"
+"``автор Mercurial = пользователь Bugzilla``"
 
 msgid "XMLRPC access mode configuration:"
-msgstr ""
+msgstr "Параметры режима доступа через XMLRPC:"
 
 msgid ""
 "bugzilla.bzurl\n"
 "  The base URL for the Bugzilla installation.\n"
 "  Default ``http://localhost/bugzilla``."
 msgstr ""
+"bugzilla.bzurl\n"
+"  Базовый URL инсталляции Bugzilla.\n"
+"  По умолчанию ``http://localhost/bugzilla``."
 
 msgid ""
 "bugzilla.user\n"
 "  The username to use to log into Bugzilla via XMLRPC. Default\n"
 "  ``bugs``."
 msgstr ""
+"bugzilla.user\n"
+"  Имя пользователя, используемое при аутентификации в Bugzilla через\n"
+"  через XMLRPC. По умолчанию ``bugs``."
 
 msgid ""
 "bugzilla.password\n"
 "  The password for Bugzilla login."
 msgstr ""
+"bugzilla.password\n"
+"  Пароль для аутентификации в Bugzilla."
 
 msgid ""
 "XMLRPC+email access mode uses the XMLRPC access mode configuration items,\n"
 "and also:"
-msgstr ""
+msgstr "Режим доступа XMLRPC+email использует параметры XMLRPC, а также:"
 
 msgid ""
 "bugzilla.bzemail\n"
 "  The Bugzilla email address."
 msgstr ""
+"bugzilla.bzemail\n"
+"  Адрес email Bugzilla."
 
 msgid ""
 "In addition, the Mercurial email settings must be configured. See the\n"
 "documentation in hgrc(5), sections ``[email]`` and ``[smtp]``."
 msgstr ""
+"Также должны быть настроены параметры email Mercurial. См. документацию\n"
+"по hgrc(5), секции ``[email]`` и ``[smtp]``."
 
 msgid "MySQL access mode configuration:"
-msgstr ""
+msgstr "Параметры режима доступа MySQL:"
 
 msgid ""
 "bugzilla.host\n"
 "  Hostname of the MySQL server holding the Bugzilla database.\n"
 "  Default ``localhost``."
 msgstr ""
+"bugzilla.host\n"
+"  Имя хоста сервера, содержащего базу данных MySQL Bugzilla.\n"
+"  По умолчанию ``localhost``."
 
 msgid ""
 "bugzilla.db\n"
 "  Name of the Bugzilla database in MySQL. Default ``bugs``."
 msgstr ""
+"bugzilla.db\n"
+"  Имя базы данных Bugzilla в MySQL. По умолчанию ``bugs``."
 
 msgid ""
 "bugzilla.user\n"
 "  Username to use to access MySQL server. Default ``bugs``."
 msgstr ""
+"bugzilla.user\n"
+"  Имя пользователя для доступа к MySQL-серверу. По умолчанию ``bugs``."
 
 msgid ""
 "bugzilla.password\n"
 "  Password to use to access MySQL server."
 msgstr ""
+"bugzilla.password\n"
+"  Пароль для доступа к MySQL-серверу."
 
 msgid ""
 "bugzilla.timeout\n"
 "  Database connection timeout (seconds). Default 5."
 msgstr ""
+"bugzilla.timeout\n"
+"  Таймаут соединения с базой данных (секунды). По умолчанию 5."
 
 msgid ""
 "bugzilla.bzuser\n"
 "  Fallback Bugzilla user name to record comments with, if changeset\n"
 "  committer cannot be found as a Bugzilla user."
 msgstr ""
+"bugzilla.bzuser\n"
+"  Резервное имя пользователя Bugzilla для записей комментариев, если\n"
+"  для автора набора изменений не найден соответствующий пользователь "
+"Bugzilla."
 
 msgid ""
 "bugzilla.bzdir\n"
 "   Bugzilla install directory. Used by default notify. Default\n"
 "   ``/var/www/html/bugzilla``."
 msgstr ""
+"bugzilla.bzdir\n"
+"   Установочный каталог Bugzilla. Используется оповещениями (notify)\n"
+"   по умолчанию. По умолчанию ``/var/www/html/bugzilla``."
 
 msgid ""
 "bugzilla.notify\n"
@@ -510,23 +897,35 @@
 "  version; from 2.18 it is \"cd %(bzdir)s && perl -T\n"
 "  contrib/sendbugmail.pl %(id)s %(user)s\"."
 msgstr ""
+"bugzilla.notify\n"
+"  Команда, запускаемая для того, чтобы Bugzilla отправила уведомление\n"
+"  об изменении бага по email. Составляется из набора из трех ключей:\n"
+"  ``bzdir``, ``id`` (идентификатор бага) и ``user``. Значение по умолчанию\n"
+"  зависят от версии; начиная с 2.18 это \"cd %(bzdir)s && perl -T\n"
+"  contrib/sendbugmail.pl %(id)s %(user)s\"."
 
 msgid "Activating the extension::"
-msgstr ""
+msgstr "Включение расширения::"
 
 msgid ""
 "    [extensions]\n"
 "    bugzilla ="
 msgstr ""
+"    [extensions]\n"
+"    bugzilla ="
 
 msgid ""
 "    [hooks]\n"
 "    # run bugzilla hook on every change pulled or pushed in here\n"
 "    incoming.bugzilla = python:hgext.bugzilla.hook"
 msgstr ""
+"    [hooks]\n"
+"    # запускать хук bugzilla при каждом изменении, затянутом или\n"
+"    # протолкнутом сюда\n"
+"    incoming.bugzilla = python:hgext.bugzilla.hook"
 
 msgid "Example configurations:"
-msgstr ""
+msgstr "Пример настроек:"
 
 msgid ""
 "XMLRPC example configuration. This uses the Bugzilla at\n"
@@ -535,6 +934,11 @@
 "collection of Mercurial repositories in ``/var/local/hg/repos/``,\n"
 "with a web interface at ``http://my-project.org/hg``. ::"
 msgstr ""
+"Пример настроек XMLRPC. Использует Bugzilla по адресу\n"
+"``http://my-project.org/bugzilla``, вход от пользователя\n"
+"``bugmail@my-project.org`` с паролем ``plugh``. Используется с\n"
+"коллекцией хранилищ Mercurial в ``/var/local/hg/repos/``,\n"
+"с веб-интерфейсом по адресу ``http://my-project.org/hg``. ::"
 
 msgid ""
 "    [bugzilla]\n"
@@ -547,11 +951,22 @@
 "             {desc}\\n\n"
 "    strip=5"
 msgstr ""
+"    [bugzilla]\n"
+"    bzurl=http://my-project.org/bugzilla\n"
+"    user=bugmail@my-project.org\n"
+"    password=plugh\n"
+"    version=xmlrpc\n"
+"    template=Changeset {node|short} in {root|basename}.\n"
+"             {hgweb}/{webroot}/rev/{node|short}\\n\n"
+"             {desc}\\n\n"
+"    strip=5"
 
 msgid ""
 "    [web]\n"
 "    baseurl=http://my-project.org/hg"
 msgstr ""
+"    [web]\n"
+"    baseurl=http://my-project.org/hg"
 
 msgid ""
 "XMLRPC+email example configuration. This uses the Bugzilla at\n"
@@ -562,6 +977,12 @@
 "are sent to the Bugzilla email address\n"
 "``bugzilla@my-project.org``. ::"
 msgstr ""
+"Пример настроек XMLRPC+email. Использует Bugzilla по адресу\n"
+"``http://my-project.org/bugzilla``, вход от имени пользователя\n"
+"``bugmail@my-project.org`` с паролем ``plugh``. Используется с коллекцией\n"
+"хранилищ Mercurial в ``/var/local/hg/repos/``с веб-интерфейсом по адресу\n"
+"``http://my-project.org/hg``. Комментарии к багам отправляются на email\n"
+"Bugzilla ``bugzilla@my-project.org``. ::"
 
 msgid ""
 "    [bugzilla]\n"
@@ -575,11 +996,23 @@
 "             {desc}\\n\n"
 "    strip=5"
 msgstr ""
+"    [bugzilla]\n"
+"    bzurl=http://my-project.org/bugzilla\n"
+"    user=bugmail@my-project.org\n"
+"    password=plugh\n"
+"    version=xmlrpc\n"
+"    bzemail=bugzilla@my-project.org\n"
+"    template=Changeset {node|short} in {root|basename}.\n"
+"             {hgweb}/{webroot}/rev/{node|short}\\n\n"
+"             {desc}\\n\n"
+"    strip=5"
 
 msgid ""
 "    [usermap]\n"
 "    user@emaildomain.com=user.name@bugzilladomain.com"
 msgstr ""
+"    [usermap]\n"
+"    пользователь@emaildomain.com=имя.пользователя@bugzilladomain.com"
 
 msgid ""
 "MySQL example configuration. This has a local Bugzilla 3.2 installation\n"
@@ -589,6 +1022,12 @@
 "with a collection of Mercurial repositories in ``/var/local/hg/repos/``,\n"
 "with a web interface at ``http://my-project.org/hg``. ::"
 msgstr ""
+"Пример настроек MySQL. Использует локальную установку Bugzilla 3.2\n"
+"в ``/opt/bugzilla-3.2``. База данных MySQL на ``localhost``,\n"
+"имя базы данных Bugzilla ``bugs`` и доступ к MySQL производится с именем\n"
+"пользователя ``bugs`` и паролем ``XYZZY``. Она используется с коллекцией\n"
+"хранилищ  в ``/var/local/hg/repos/``, и веб-интерфейсом по адресу\n"
+"``http://my-project.org/hg``. ::"
 
 msgid ""
 "    [bugzilla]\n"
@@ -602,102 +1041,118 @@
 "             {desc}\\n\n"
 "    strip=5"
 msgstr ""
+"    [bugzilla]\n"
+"    host=localhost\n"
+"    password=XYZZY\n"
+"    version=3.0\n"
+"    bzuser=unknown@domain.com\n"
+"    bzdir=/opt/bugzilla-3.2\n"
+"    template=Changeset {node|short} in {root|basename}.\n"
+"             {hgweb}/{webroot}/rev/{node|short}\\n\n"
+"             {desc}\\n\n"
+"    strip=5"
 
 msgid "All the above add a comment to the Bugzilla bug record of the form::"
 msgstr ""
+"Все приведенные примеры добавляют комментарий следующего вида\n"
+"в запись о баге в Bugzilla ::"
 
 msgid ""
 "    Changeset 3b16791d6642 in repository-name.\n"
 "    http://my-project.org/hg/repository-name/rev/3b16791d6642"
 msgstr ""
+"    Changeset 3b16791d6642 in repository-name.\n"
+"    http://my-project.org/hg/repository-name/rev/3b16791d6642"
 
 msgid "    Changeset commit comment. Bug 1234.\n"
-msgstr ""
+msgstr "    Комментарий фиксации набора изменений. Bug 1234.\n"
 
 #, python-format
 msgid "python mysql support not available: %s"
-msgstr ""
+msgstr "не доступна поддержка mysql в python: %s"
 
 #, python-format
 msgid "connecting to %s:%s as %s, password %s\n"
-msgstr ""
+msgstr "соединяемся с %s:%s как %s, пароль %s\n"
 
 #, python-format
 msgid "query: %s %s\n"
-msgstr ""
+msgstr "запрос: %s %s\n"
 
 #, python-format
 msgid "failed query: %s %s\n"
-msgstr ""
+msgstr "запрос не удался: %s %s\n"
 
 msgid "unknown database schema"
-msgstr ""
+msgstr "неизвестная схема базы данных"
 
 #, python-format
 msgid "bug %d already knows about changeset %s\n"
-msgstr ""
+msgstr "баг %d уже знает о наборе изменений %s\n"
 
 msgid "telling bugzilla to send mail:\n"
-msgstr ""
+msgstr "говорим bugzillf отправить почту:\n"
 
 #, python-format
 msgid "  bug %s\n"
-msgstr ""
+msgstr "  баг %s\n"
 
 #, python-format
 msgid "running notify command %s\n"
-msgstr ""
+msgstr "запускаем команду уведмления %s\n"
 
 #, python-format
 msgid "bugzilla notify command %s"
-msgstr ""
+msgstr "команда уведомления bugzilla %s"
 
 msgid "done\n"
-msgstr ""
+msgstr "завершено\n"
 
 #, python-format
 msgid "looking up user %s\n"
-msgstr ""
+msgstr "ищем пользователя %s\n"
 
 #, python-format
 msgid "cannot find bugzilla user id for %s"
-msgstr ""
+msgstr "идентификатор пользователя bugzilla для %s не найден"
 
 #, python-format
 msgid "cannot find bugzilla user id for %s or %s"
-msgstr ""
+msgstr "идентификатор пользователя bugzilla для %s или %s не найден"
 
 msgid "configuration 'bzemail' missing"
-msgstr ""
+msgstr "отсутствует параметр 'bzemail'"
 
 #, python-format
 msgid "default bugzilla user %s email not found"
-msgstr ""
+msgstr "email пользователя bugzilla %s по умолчанию не найден"
 
 #, python-format
 msgid "bugzilla version %s not supported"
-msgstr ""
+msgstr "версия bugzilla %s не поддерживается"
 
 msgid ""
 "changeset {node|short} in repo {root} refers to bug {bug}.\n"
 "details:\n"
 "\t{desc|tabindent}"
 msgstr ""
+"набор изменений {node|short} в хранилище {root} относится к багу {bug}.\n"
+"Детали:\n"
+"\t{desc|tabindent}"
 
 #, python-format
 msgid "hook type %s does not pass a changeset id"
-msgstr ""
+msgstr "хук типа %s не передает идентификатор набора изменений"
 
 #, python-format
 msgid "Bugzilla error: %s"
-msgstr ""
+msgstr "Ошибка Bugzilla: %s"
 
 msgid "command to display child changesets"
 msgstr "Команда для отображения дочерних наборов изменений"
 
 msgid "show the children of the given or working directory revision"
-msgstr ""
-"показать дочерние ревизии для заданной текущей ревизии рабочего каталога"
+msgstr "показать дочерние ревизии для заданной ревизии"
 
 msgid ""
 "    Print the children of the working directory's revisions. If a\n"
@@ -707,6 +1162,13 @@
 "    argument to --rev if given) is printed.\n"
 "    "
 msgstr ""
+"    Без параметров печатает дочерние ревизии рабочего каталога. Если\n"
+"    ревизия задана с помощью -r/--rev, то выведутся ее дочерние ревизии.\n"
+"    Если задан файл в качестве аргумента, то будет выведена ревизия в "
+"которой\n"
+"    этот файл был изменён (после текушей ревизии рабочего каталога или\n"
+"    для заданного аргумента --rev).\n"
+"    "
 
 msgid "REV"
 msgstr "РЕВИЗИЯ"
@@ -715,20 +1177,20 @@
 msgstr "показать дочерние наборы изменений для указанной ревизии"
 
 msgid "hg children [-r REV] [FILE]"
-msgstr ""
+msgstr "hg children [-r РЕВИЗИЯ] [ФАЙЛ]"
 
 msgid "command to display statistics about repository history"
-msgstr ""
+msgstr "команда для отображения статистики об истории хранилища"
 
 #, python-format
 msgid "Revision %d is a merge, ignoring...\n"
-msgstr ""
+msgstr "Ревизия %d это слияние (merge), пропускаем...\n"
 
 msgid "analyzing"
-msgstr ""
+msgstr "анализ"
 
 msgid "histogram of changes to the repository"
-msgstr ""
+msgstr "гистограмма изменений, внесенных в хранилище"
 
 msgid ""
 "    This command will display a histogram representing the number\n"
@@ -737,95 +1199,116 @@
 "    The --dateformat option may be used to group the results by\n"
 "    date instead."
 msgstr ""
+"    Эта команда показывает гистограмму, представляющую количество\n"
+"    изменённых строк или ревизий, сгруппированных в соответствии с\n"
+"    заданным шаблоном. Стандартный шаблон группирует изменения по автору.\n"
+"    Опция --dateformat может быть использована, чтобы сгруппировать    "
+"результаты по дате."
 
 msgid ""
 "    Statistics are based on the number of changed lines, or\n"
 "    alternatively the number of matching revisions if the\n"
 "    --changesets option is specified."
 msgstr ""
+"    Статистика основана на количестве изменённых строк, либо\n"
+"    числе соответствующих ревизий, если задана опция\n"
+"    --changesets."
 
 msgid "    Examples::"
-msgstr ""
+msgstr "    Примеры::"
 
 msgid ""
 "      # display count of changed lines for every committer\n"
 "      hg churn -t '{author|email}'"
 msgstr ""
+"      # отобразить число изменённых строк для каждого автора\n"
+"      hg churn -t '{author|email}'"
 
 msgid ""
 "      # display daily activity graph\n"
 "      hg churn -f '%H' -s -c"
 msgstr ""
+"      # отобразить график ежедневной активности\n"
+"      hg churn -f '%H' -s -c"
 
 msgid ""
 "      # display activity of developers by month\n"
 "      hg churn -f '%Y-%m' -s -c"
 msgstr ""
+"      # отобразить активность разработчиков помесячно\n"
+"      hg churn -f '%Y-%m' -s -c"
 
 msgid ""
 "      # display count of lines changed in every year\n"
 "      hg churn -f '%Y' -s"
 msgstr ""
+"      # отобразить число изменённых строк за каждый год\n"
+"      hg churn -f '%Y' -s"
 
 msgid ""
 "    It is possible to map alternate email addresses to a main address\n"
 "    by providing a file using the following format::"
 msgstr ""
+"    Можно заменить почтовые адреса на любые другие, задав файл\n"
+"    следующего формата::"
 
 msgid "      <alias email> = <actual email>"
-msgstr ""
+msgstr "      <псевдоним адреса> = <настоящий адрес>"
 
 msgid ""
 "    Such a file may be specified with the --aliases option, otherwise\n"
 "    a .hgchurn file will be looked for in the working directory root.\n"
 "    "
 msgstr ""
+"    Такой файл может быть задан опцией --aliases, иначе\n"
+"    поиск файла .hgchurn происходит в корне рабочего каталога.\n"
+"    "
 
 #, python-format
 msgid "skipping malformed alias: %s\n"
-msgstr ""
+msgstr "пропущен неверный псевдоним: %s\n"
 
 msgid "count rate for the specified revision or range"
-msgstr ""
+msgstr "рассчитывать статистику для заданной ревизии или диапазона"
 
 msgid "DATE"
 msgstr "ДАТА"
 
 msgid "count rate for revisions matching date spec"
-msgstr ""
+msgstr "рассчитывать статистику для ревизий, соответствующих заданному шаблону"
 
 msgid "TEMPLATE"
-msgstr ""
+msgstr "ШАБЛОН"
 
 msgid "template to group changesets"
-msgstr ""
+msgstr "шаблон для группировки изменений"
 
 msgid "FORMAT"
 msgstr "ФОРМАТ"
 
 msgid "strftime-compatible format for grouping by date"
-msgstr ""
+msgstr "strftime-совместимый формат для группирования по дате"
 
 msgid "count rate by number of changesets"
-msgstr ""
+msgstr "считать количество наборов изменений"
 
 msgid "sort by key (default: sort by count)"
-msgstr ""
+msgstr "отсортировать по ключу (по умолчанию: сортировать по количеству)"
 
 msgid "display added/removed lines separately"
-msgstr ""
+msgstr "отобразить добавленные/удалённые строки отдельно"
 
 msgid "FILE"
 msgstr "ФАЙЛ"
 
 msgid "file with email aliases"
-msgstr ""
+msgstr "файл с псевдонимами почтовых адресов"
 
 msgid "hg churn [-d DATE] [-r REV] [--aliases FILE] [FILE]"
-msgstr ""
+msgstr "hg churn [-d ДАТА] [-r РЕВ] [--aliases ФАЙЛ] [ФАЙЛ]"
 
 msgid "colorize output from some commands"
-msgstr "Раскрашивает вывод некоторых команд"
+msgstr "раскрашивает вывод некоторых команд"
 
 msgid ""
 "This extension modifies the status and resolve commands to add color\n"
@@ -834,6 +1317,12 @@
 "diff-related commands to highlight additions, removals, diff headers,\n"
 "and trailing whitespace."
 msgstr ""
+"Это расширение добавляет цветной вывод для некоторых команд.\n"
+"В командах status и resolve цвет отражает статус файла; в qseries -\n"
+"статус патча (применен, не применен, отсутствует); в команды, связанные\n"
+"с различиями (diff) добавляет подсветку добавлений и удалений файлов, "
+"заголовков\n"
+"различий, а также ведущих пробельных символов."
 
 msgid ""
 "Other effects in addition to color, like bold and underlined text, are\n"
@@ -842,9 +1331,16 @@
 "available, then effects are rendered with the ECMA-48 SGR control\n"
 "function (aka ANSI escape codes)."
 msgstr ""
+"Кроме цвета, также доступны и другие эффекты, такие как жирный или "
+"подчёркнутый текст.\n"
+"Пр умолчанию для нахождения кодов терминала для эффекта или изменения цвета\n"
+"используется база terminfo. Если terminfo не доступен,\n"
+"эффекты отображаются при помощи контрольной функции ECMA-48 SGR control\n"
+"(также известной как ANSI escape codes)."
 
 msgid "Default effects may be overridden from your configuration file::"
 msgstr ""
+"Стандартные эффекты могут быть переопределены в вашем файле конфигурации::"
 
 msgid ""
 "  [color]\n"
@@ -855,18 +1351,32 @@
 "  status.unknown = magenta bold underline\n"
 "  status.ignored = black bold"
 msgstr ""
+"  [цвет]\n"
+"  status.modified = blue bold underline red_background # синий подчёркнутый "
+"красный_фон\n"
+"  status.added = green bold # зелёный жирный\n"
+"  status.removed = red bold blue_background # красный жирный синий_фон\n"
+"  status.deleted = cyan bold underline # голубой жирный подчёркнутый\n"
+"  status.unknown = magenta bold underline # пурпурный жирный подчёркнутый\n"
+"  status.ignored = black bold # чёрный жирный"
 
 msgid ""
 "  # 'none' turns off all effects\n"
 "  status.clean = none\n"
 "  status.copied = none"
 msgstr ""
+"  # 'none' выключает все эффекты\n"
+"  status.clean = none\n"
+"  status.copied = none"
 
 msgid ""
 "  qseries.applied = blue bold underline\n"
 "  qseries.unapplied = black bold\n"
 "  qseries.missing = red bold"
 msgstr ""
+"  qseries.applied = blue bold underline # синий жирный подчёркнутый\n"
+"  qseries.unapplied = black bold # чёрный подчёркнутый\n"
+"  qseries.missing = red bold # красный жирный"
 
 msgid ""
 "  diff.diffline = bold\n"
@@ -879,14 +1389,25 @@
 "  diff.changed = white\n"
 "  diff.trailingwhitespace = bold red_background"
 msgstr ""
+"  diff.diffline = bold # жирный\n"
+"  diff.extended = cyan bold # голубой жирный\n"
+"  diff.file_a = red bold # красный жирный\n"
+"  diff.file_b = green bold # зелёный жирный\n"
+"  diff.hunk = magenta # пурпурный\n"
+"  diff.deleted = red # красный\n"
+"  diff.inserted = green # зелёный\n"
+"  diff.changed = white # белый\n"
+"  diff.trailingwhitespace = bold red_background # жирный красный_фон "
 
 msgid ""
 "  resolve.unresolved = red bold\n"
 "  resolve.resolved = green bold"
 msgstr ""
+"  resolve.unresolved = red bold # красный жирный\n"
+"  resolve.resolved = green bold # зелёный жирный"
 
 msgid "  bookmarks.current = green"
-msgstr ""
+msgstr "  bookmarks.current = green # зеленый"
 
 msgid ""
 "  branches.active = none\n"
@@ -894,6 +1415,17 @@
 "  branches.current = green\n"
 "  branches.inactive = none"
 msgstr ""
+"  branches.active = none # нет\n"
+"  branches.closed = black bold # черный жирный\n"
+"  branches.current = green # зеленый\n"
+"  branches.inactive = none # нет"
+
+msgid ""
+"  tags.normal = green\n"
+"  tags.local = black bold"
+msgstr ""
+"  tags.normal = green # зеленый\n"
+"  tags.local = black bold # черный жирный"
 
 msgid ""
 "The available effects in terminfo mode are 'blink', 'bold', 'dim',\n"
@@ -903,6 +1435,13 @@
 "Some may not be available for a given terminal type, and will be\n"
 "silently ignored."
 msgstr ""
+"В режиме terminfo доступны эффекты 'blink' (мигающий), 'bold' (жирный),\n"
+"'dim' (тусклый), 'invisible' (невидимый), 'italic' (курсивный), 'standout'\n"
+"(выделенный) и 'underline' (подчеркнутый); в режиме ECMA-48 доступны\n"
+"'bold', 'inverse', 'italic' и 'underline'. Конкретный вид каждого эффекта\n"
+"зависит от вашего эмулятора терминала. Некоторые из них могут быть "
+"недоступны\n"
+"в вашем терминале и будут молча проигнорированы."
 
 msgid ""
 "Note that on some systems, terminfo mode may cause problems when using\n"
@@ -913,18 +1452,31 @@
 "pass through all terminal control codes, not just color control\n"
 "codes)."
 msgstr ""
+"Обратите внимание, что на некоторых системах режим terminfo может вызывать\n"
+"проблемы с расширением pager и с less -R. less с опцией -R будет отображать\n"
+"только цветовые коды ECMA-48, а режим terminfo иногда может порождать\n"
+"коды, которые less не понимает. Это можно обойти, если использовать режим\n"
+"ansi (или auto), или используя less -r (который пропускает все контрольные\n"
+"последовательности, а не только коды цвета)."
 
 msgid ""
 "Because there are only eight standard colors, this module allows you\n"
 "to define color names for other color slots which might be available\n"
 "for your terminal type, assuming terminfo mode.  For instance::"
 msgstr ""
+"Поскольку стандартных цветов всего восемь, этот модуль позволяет определить\n"
+"имена для других слотов цвета, которые могут быть доступны в вашем "
+"терминале.\n"
+"Например::"
 
 msgid ""
 "  color.brightblue = 12\n"
 "  color.pink = 207\n"
 "  color.orange = 202"
 msgstr ""
+"  color.brightblue = 12 # светло-голубой\n"
+"  color.pink = 207 # розовый\n"
+"  color.orange = 202 # оранжевый"
 
 msgid ""
 "to set 'brightblue' to color slot 12 (useful for 16 color terminals\n"
@@ -933,48 +1485,64 @@
 "defined colors may then be used as any of the pre-defined eight,\n"
 "including appending '_background' to set the background to that color."
 msgstr ""
+"задает имя 'bightblue' для слота 12 (полезно для 16-цветных терминалов,\n"
+"в которых светлые цвета определены в старших 8 кодах) и 'pink' и 'orange'\n"
+"для 256-цветного xterm. Определенные таким образом цвета могут "
+"использоваться\n"
+"так же, как и восемь стандартных, т.ч. и с добавлением '_background' для\n"
+"установки цвета фона."
 
 msgid ""
 "By default, the color extension will use ANSI mode (or win32 mode on\n"
 "Windows) if it detects a terminal. To override auto mode (to enable\n"
 "terminfo mode, for example), set the following configuration option::"
 msgstr ""
+"По умолчанию расширение использует режим ANSI (или win32 под windows),\n"
+"если она обнаруживает терминал. Чтобы переопределить режим по умолчанию\n"
+"(например, чтобы включить режим terminfo), используются следующие\n"
+"параметры::"
 
 msgid ""
 "  [color]\n"
 "  mode = terminfo"
 msgstr ""
+"  [color]\n"
+"  mode = terminfo"
 
 msgid ""
 "Any value other than 'ansi', 'win32', 'terminfo', or 'auto' will\n"
 "disable color.\n"
 msgstr ""
+"Любое другое значение, кроме 'ansi', 'win32', 'terminfo' или 'auto'\n"
+"отключает цвета.\n"
 
 msgid "no terminfo entry for setab/setaf: reverting to ECMA-48 color\n"
-msgstr ""
+msgstr "нет записи terminfo для setab/setaf: возвращаюсь в режим ECMA-48\n"
 
 #, python-format
 msgid "warning: failed to set color mode to %s\n"
-msgstr ""
+msgstr "предупреждение: не удалось установить режим %s\n"
 
 #, python-format
 msgid "ignoring unknown color/effect %r (configured in color.%s)\n"
-msgstr ""
+msgstr "игнорируется неизвестный цвет/эффект %r (заданный в цвете.%s)\n"
 
 #. i18n: 'always', 'auto', and 'never' are keywords and should
 #. not be translated
 msgid "when to colorize (boolean, always, auto, or never)"
 msgstr ""
+"когда раскрашивать вывод (логический. always (всегда), auto (автоматически)"
+"или never (не раскрашивать))"
 
 msgid "TYPE"
 msgstr "ТИП"
 
 msgid "import revisions from foreign VCS repositories into Mercurial"
 msgstr ""
-"импортирует ревизии из репозиториев других систем контроля версий в Mercurial"
+"импортирует ревизии из хранилищ других систем контроля версий в Mercurial"
 
 msgid "convert a foreign SCM repository to a Mercurial one."
-msgstr "Преобразовать репозиторий другой SCM в репозиторий Mercurial"
+msgstr "Преобразовать хранилище другой SCM в хранилище Mercurial"
 
 msgid "    Accepted source formats [identifiers]:"
 msgstr "    Возможные входные форматы [обозначения]:"
@@ -990,6 +1558,15 @@
 "    - Bazaar [bzr]\n"
 "    - Perforce [p4]"
 msgstr ""
+"    - Mercurial [hg]\n"
+"    - CVS [cvs]\n"
+"    - Darcs [darcs]\n"
+"    - git [git]\n"
+"    - Subversion [svn]\n"
+"    - Monotone [mtn]\n"
+"    - GNU Arch [gnuarch]\n"
+"    - Bazaar [bzr]\n"
+"    - Perforce [p4]"
 
 msgid "    Accepted destination formats [identifiers]:"
 msgstr "    Возможные выходные форматы [обозначения]:"
@@ -1027,7 +1604,7 @@
 "    order. Sort modes have the following effects:"
 msgstr ""
 "    По умолчанию все источники кроме Mercurial преобразуются с\n"
-"    параметром --branchsort. Для репозитория Mercurial используется\n"
+"    параметром --branchsort. Для хранилища Mercurial используется\n"
 "    --sourcesort, чтобы сохранить исходный порядок номеров ревизий.\n"
 "    Режимы сортировки имеют следующий смысл:"
 
@@ -1037,9 +1614,9 @@
 "                  the other. It generates more compact repositories."
 msgstr ""
 "    --branchsort  по возможности преобразует от родительской к\n"
-"                  дочерней ревизии, т.е. ветви обычно ковертируются\n"
+"                  дочерней ревизии, т.е. ветки обычно конвертируются\n"
 "                  одна за другой. Позволяет генерировать более\n"
-"                  компактные репозитории."
+"                  компактные хранилища."
 
 msgid ""
 "    --datesort    sort revisions by date. Converted repositories have\n"
@@ -1047,8 +1624,8 @@
 "                  magnitude larger than the same ones generated by\n"
 "                  --branchsort."
 msgstr ""
-"    -datesort    сортирует ревизии по дате. Сконвертированные\n"
-"                 репозитории имеют правильно выглядящую историю,\n"
+"    --datesort   сортирует ревизии по дате. Сконвертированные\n"
+"                 хранилища имеют правильно выглядящую историю,\n"
 "                 но часто получаются на порядок больше по сравнению\n"
 "                 c --branchsort."
 
@@ -1057,7 +1634,7 @@
 "                  supported by Mercurial sources."
 msgstr ""
 "    --sourcesort  пытается сохранить исходный порядок ревизий.\n"
-"                  Только для исходных репозиториев Mercurial"
+"                  Только для исходных хранилищ Mercurial"
 
 msgid ""
 "    If ``REVMAP`` isn't given, it will be put in a default location\n"
@@ -1067,7 +1644,7 @@
 msgstr ""
 "    Если файл ``REVMAP`` не задан, он будет создан по умолчанию\n"
 "    как ``<dest>/.hg/shamap``. ``REVMAP`` - это простой текстовый\n"
-"    файл который устанавливает соответсвие входных и выходных\n"
+"    файл который устанавливает соответствие входных и выходных\n"
 "    идентификаторов для каждой ревизии в формате:"
 
 msgid "      <source ID> <destination ID>"
@@ -1079,9 +1656,9 @@
 "    and can be run repeatedly to copy new commits."
 msgstr ""
 "    Если файл не существует, он создается автоматически. Он\n"
-"    обновляется на каждом копируемом коммите, так что :hg: `convert`\n"
+"    обновляется на каждой копируемой фиксации, так что :hg: `convert`\n"
 "    может быть прервано и повторно запущено для копирования новых\n"
-"    коммитов"
+"    фиксаций"
 
 msgid ""
 "    The authormap is a simple text file that maps each source commit\n"
@@ -1090,10 +1667,10 @@
 "    author mapping and the line format is::"
 msgstr ""
 "    authormap - это обычный текстовый файл, который позволяет \n"
-"    заменить в конечном репозитории имена авторов коммитов из \n"
-"    исходного. Это удобно в случае исходной SCM, которая использует \n"
-"    unix-логины в качестве имен авторов (например, CVS). Каждая \n"
-"    строка соответсвует одному имени. Формат строки::"
+"    заменить в конечном хранилище имена авторов фиксаций из\n"
+"    исходного хранилища. Это удобно в случае когда исходная SCM\n"
+"    использует unix-логины в качестве имен авторов (например, CVS).\n"
+"    Каждая строка соответствует одному имени. Формат строки::"
 
 msgid "      source author = destination author"
 msgstr "      автор в источнике = автор на выходе"
@@ -1125,7 +1702,7 @@
 "    directories. The ``include`` or ``exclude`` directive with the\n"
 "    longest matching path applies, so line order does not matter."
 msgstr ""
-"    Строки, начинающиеся с ``#`` являются комментариями. Заданный\n"
+"    Строки, начинающиеся с ``#``, являются комментариями. Заданный\n"
 "    путь используется, если он совпадает с полным относительным путем\n"
 "    к файлу или одним из его родительских каталогов. Директивы\n"
 "    ``include`` и ``exclude`` применяются для самого длинного из\n"
@@ -1140,13 +1717,13 @@
 "    it is converted. To rename from a subdirectory into the root of\n"
 "    the repository, use ``.`` as the path to rename to."
 msgstr ""
-"    Директива ``include`` означает, что в выходной репозиторий\n"
+"    Директива ``include`` означает, что в выходное хранилище\n"
 "    попадет указанный файл или каталог со всеми его файлами и\n"
 "    подкаталогами, а также что остальные файлы, не указанные явно,\n"
 "    будут проигнорированы. Директива ``exclude`` позволяет\n"
 "    игнорировать указанный файл или каталог. Директива ``rename``\n"
 "    переименовывает файл или каталог при конвертации. Чтобы\n"
-"    переместить файл из подкаталога в корень репозитория,\n"
+"    переместить файл из подкаталога в корень хранилища,\n"
 "    используйте ``.`` в качестве пути назначения."
 
 msgid ""
@@ -1157,7 +1734,7 @@
 "    contains a key, followed by a space, followed by one or two\n"
 "    comma-separated values::"
 msgstr ""
-"    Файл slicemap позволяет добавлять искуственные части в историю,\n"
+"    Файл slicemap позволяет добавлять искусственные части в историю,\n"
 "    позволяя указать родителя для ревизии. Это полезно, например,\n"
 "    если вы хотите привязать две родительские ревизии (parent)\n"
 "    к результату слияния в SVN, или связать две несвязанные части\n"
@@ -1177,14 +1754,14 @@
 "    specify the revision on \"trunk\" as the first parent and the one on\n"
 "    the \"release-1.0\" branch as the second."
 msgstr ""
-"    Ключ - это идентификатор ревизии в исходном репозитории, чьи\n"
+"    Ключ - это идентификатор ревизии в исходном хранилище, чьи\n"
 "    родители должны быть изменены (тот же формат, что и в файле\n"
 "    .hg/shamap). Параметры являются номерами ревизий (во входном\n"
-"    или выходном репозитории), которые используются в качестве\n"
+"    или выходном хранилище), которые используются в качестве\n"
 "    новых родителей для данного узла. Например, если были слиты\n"
-"    ветви \"release-1.0\" и \"trunc\", то нужно указать номер\n"
-"    ревизии в ветви \"trunc\" в качестве родитель1, и номер ревизии\n"
-"    в ветви \"release-1.0\" в качестве родитель2."
+"    ветки \"release-1.0\" и \"trunk\", то нужно указать номер\n"
+"    ревизии в ветке \"trunk\" в качестве родитель1, и номер ревизии\n"
+"    в ветке \"release-1.0\" в качестве родитель2."
 
 msgid ""
 "    The branchmap is a file that allows you to rename a branch when it is\n"
@@ -1194,14 +1771,14 @@
 "    into nicely structured Mercurial repositories. The branchmap contains\n"
 "    lines of the form::"
 msgstr ""
-"    Файл branchmap позволяет переименовать ветвь из любого внешнего\n"
-"    репозитория. При использовании вместе с splicemap, предоставляет\n"
-"    хорошие возможности упорядочить даже самые запутанные\n"
-"    репозитории и преобразовать их в хорошо структурированный\n"
-"    репозиторий Mercurial. Содержит строки в формате:"
+"    Файл branchmap позволяет переименовать ветку из любого внешнего\n"
+"    хранилища. При использовании вместе с splicemap, предоставляет\n"
+"    широкие возможности для упорядочивания даже самых запутанных\n"
+"    хранилищ и преобразования их в хорошо структурированные\n"
+"    хранилище Mercurial. Содержит строки в формате:"
 
 msgid "      original_branch_name new_branch_name"
-msgstr "      исходное_имя_ветви новое_имя_ветви"
+msgstr "      исходное_имя_ветки новое_имя_ветки"
 
 msgid ""
 "    where \"original_branch_name\" is the name of the branch in the\n"
@@ -1210,24 +1787,24 @@
 "    branch names. This can be used to (for instance) move code in one\n"
 "    repository from \"default\" to a named branch."
 msgstr ""
-"    где \"исходное_имя_ветви\" - это имя ветви в исходном репозитории\n"
-"    \"новое_имя_ветви\" - имя ветви в выходном репозитории. Пробелы\n"
-"    в именах ветвей не допускаются. Этим можно пользоваться,\n"
-"    например, чтобы переместить код с ветви \"default\" на именованную\n"
-"    ветвь."
+"    где \"исходное_имя_ветки\" - это имя ветки в исходном хранилище\n"
+"    \"новое_имя_ветки\" - имя ветки в выходном хранилище. Пробелы\n"
+"    в именах веток не допускаются. Этим можно пользоваться,\n"
+"    например, чтобы переместить код с ветки \"default\" на именованную\n"
+"    ветку."
 
 msgid ""
 "    Mercurial Source\n"
 "    ''''''''''''''''"
 msgstr ""
 "    Источник - Mercurial\n"
-"    ''''''''''''''''''''''''''''''''"
+"    ''''''''''''''''''''"
 
 msgid ""
 "    The Mercurial source recognizes the following configuration\n"
 "    options, which you can set on the command line with ``--config``:"
 msgstr ""
-"    При конвертации из репозитория Mercurial возможны следующие\n"
+"    При конвертации из хранилища Mercurial возможны следующие\n"
 "    параметры, которые можно указать в командной строке с помощью\n"
 "    ``--config``:"
 
@@ -1237,16 +1814,16 @@
 "        converting from and to Mercurial. Default is False."
 msgstr ""
 "    :convert.hg.ignoreerrors: игнорировать ошибки целостности при\n"
-"        чтении. Используется для восстановления репозиториев Mercurial\n"
-"        c недостающими revlog'ами путем ковертации из репозитория\n"
+"        чтении. Используется для восстановления хранилищ Mercurial\n"
+"        c недостающими revlog'ами путем конвертации из хранилища\n"
 "        Mercurial и обратно. По умолчанию False."
 
 msgid ""
 "    :convert.hg.saverev: store original revision ID in changeset\n"
-"        (forces target IDs to change). It takes and boolean argument\n"
-"        and defaults to False."
-msgstr ""
-"    :convert.hg.saverev: созранять исходный номер ревизии в наборе\n"
+"        (forces target IDs to change). It takes a boolean argument and\n"
+"        defaults to False."
+msgstr ""
+"    :convert.hg.saverev: сохранять исходный номер ревизии в наборе\n"
 "        изменений (изменяет выходные номера ревизий).\n"
 "        True или False, по умолчанию False."
 
@@ -1263,7 +1840,7 @@
 "    ''''''''''"
 msgstr ""
 "    Источник - CVS\n"
-"    ''''''''''''''''''''''''''"
+"    ''''''''''''''"
 
 msgid ""
 "    CVS source will use a sandbox (i.e. a checked-out copy) from CVS\n"
@@ -1279,10 +1856,10 @@
 "    При конвертировании из CVS используется песочница (т.е. копия,\n"
 "    полученная с помощью cvs checkout), которая нужна в качестве\n"
 "    отправной точки для конвертации. Прямой доступ к файлам\n"
-"    репозитория CVS не требутся, если, конечно, не используется\n"
-"    метод доступа ``:local:``. Репозиторий CVS ищется по каталогу\n"
+"    хранилища CVS не требуется, если, конечно, не используется\n"
+"    метод доступа ``:local:``. Хранилище CVS ищется по каталогу\n"
 "    верхнего уровня песочницы, после чего используется команда\n"
-"    CVS rlog для поиска конвертирумых файлов. Это означает, что\n"
+"    CVS rlog для поиска конвертируемых файлов. Это означает, что\n"
 "    если не задан файл filemap, будут конвертироваться все файлы\n"
 "    из верхнего каталога, и все изменения структуры каталогов в\n"
 "    песочнице будут проигнорированы."
@@ -1295,7 +1872,7 @@
 "        for testing and debugging purposes. Default is True."
 msgstr ""
 "    :convert.cvsps.cache: Установите в False чтобы отключить\n"
-"        кеширование удаленного лога, нужно для тестирования и\n"
+"        кэширование отдалённого лога, нужно для тестирования и\n"
 "        отладки. По умолчанию True."
 
 msgid ""
@@ -1306,7 +1883,7 @@
 "        The default is 60."
 msgstr ""
 "    :convert.cvsps.fuzz: задает максимально допустимое время \n"
-"        (в секундах) между коммитами с одинаковыми пользователем \n"
+"        (в секундах) между фиксациями с одинаковыми пользователем \n"
 "        и журнальным сообщением в рамках одного набора изменений.        "
 "Значения по умолчанию может не хватить, если очень большие файлы были\n"
 "        сохранены в наборе изменений. По умолчанию 60 сек."
@@ -1322,7 +1899,7 @@
 "    :convert.cvsps.mergeto: задает регулярное выражение, на\n"
 "        совпадение с которым проверяются журнальные сообщения. При\n"
 "        совпадении будет вставлена фиктивная ревизия, сливающая\n"
-"        ветвь с этим сообщением с указанной в регулярном выражении\n"
+"        ветку с этим сообщением с указанной в регулярном выражении\n"
 "        веткой. Значение по умолчанию: ``{{mergetobranch ([-\\w]+)}}``"
 
 msgid ""
@@ -1332,6 +1909,11 @@
 "        branch indicated in the regex as the second parent of the\n"
 "        changeset. Default is ``{{mergefrombranch ([-\\w]+)}}``"
 msgstr ""
+"    :convert.cvsps.mergefrom: задает регулярное выражение, с которым\n"
+"        сравниваются комментарии фиксации. Если совпадение найдено, то\n"
+"        наиболее поздняя ревизия на ветке, обозначенной в выражении,\n"
+"        добавляется в качестве второго родителя набора изменений.\n"
+"        По умолчанию ``{{mergefrombranch ([-\\w]+)}}``"
 
 msgid ""
 "    :hook.cvslog: Specify a Python function to be called at the end of\n"
@@ -1339,7 +1921,7 @@
 "        log entries, and can modify the entries in-place, or add or\n"
 "        delete them."
 msgstr ""
-"    :hook.cvslog: задает функцию на Питоне, которая вызывается после\n"
+"    :hook.cvslog: задает функцию на Python, которая вызывается после\n"
 "        получения журнала CVS. Функции передается список с журнальными\n"
 "        записями, она может изменять их, удалять или добавлять новые."
 
@@ -1350,7 +1932,7 @@
 "        modify the changesets in-place, or add or delete them."
 msgstr ""
 "    :hook.cvschangesets: Задает функцию на Питоне, которая вызывается\n"
-"        после того, как будут расчитаны наборы изменений из журнала\n"
+"        после того, как будут рассчитаны наборы изменений из журнала\n"
 "        CVS. Функции передается список с элементами набора изменений,\n"
 "        она может изменять их, удалять или добавлять новые."
 
@@ -1385,14 +1967,14 @@
 "    detection."
 msgstr ""
 "    В случае Subversion анализируется классическая структура\n"
-"    репозитория trunk/branches/tags. По умолчанию заданный URL\n"
-"    ``svn://репозиторий/путь`` преобразуется в одну ветку. Если\n"
-"    ``svn://репозиторий/путь/trunc`` существует, он заменяет ветку\n"
-"    ``default``. Если ``svn://репозиторий/путь/branches`` существует,\n"
-"     его подкаталоги перечисляются как возможные ветви. Если\n"
-"     ``svn://репозиторий/путь/tags`` существует, в нем ищутся\n"
-"     метки, ссылающиеся на конвертируемые ветви. Значения по умолчанию\n"
-"     для ``trunc``, ``branches`` и ``tags`` могут быть изменены\n"
+"    хранилища trunk/branches/tags. По умолчанию заданный URL\n"
+"    ``svn://хранилище/путь`` преобразуется в одну ветку. Если\n"
+"    ``svn://хранилище/путь/trunk`` существует, он заменяет ветку\n"
+"    ``default``. Если ``svn://хранилище/путь/branches`` существует,\n"
+"     его подкаталоги перечисляются как возможные ветки. Если\n"
+"     ``svn://хранилище/путь/tags`` существует, в нем ищутся\n"
+"     метки, ссылающиеся на конвертируемые ветки. Значения по умолчанию\n"
+"     для ``trunk``, ``branches`` и ``tags`` могут быть изменены\n"
 "     нижеперечисленными параметрами. Установите их в пути относительно\n"
 "     URL источника или оставьте пустыми чтобы отключить автоматическое\n"
 "     определение."
@@ -1404,7 +1986,7 @@
 "    :convert.svn.branches: specify the directory containing branches.\n"
 "        The default is ``branches``."
 msgstr ""
-"    :convert.svn.branches: задает каталог, содержащий ветви.\n"
+"    :convert.svn.branches: задает каталог, содержащий ветки.\n"
 "        По умолчанию ``branches``."
 
 msgid ""
@@ -1418,7 +2000,7 @@
 "    :convert.svn.trunk: specify the name of the trunk branch. The\n"
 "        default is ``trunk``."
 msgstr ""
-"    :convert.svn.trunk: задает имя главной ветви (trunc)\n"
+"    :convert.svn.trunk: задает имя главной ветки (trunk)\n"
 "        По умолчанию ``trunk``."
 
 msgid ""
@@ -1428,7 +2010,7 @@
 msgstr ""
 "    История может извлекаться начиная с указанной ревизии, а не\n"
 "    обязательно полностью. Поддерживается только преобразования\n"
-"    для одной ветви."
+"    для одной ветки."
 
 msgid ""
 "    :convert.svn.startrev: specify start Subversion revision number.\n"
@@ -1452,10 +2034,10 @@
 "    usually should specify a target directory, because otherwise the\n"
 "    target may be named ``...-hg``."
 msgstr ""
-"    При импорте из Perforce (P4) в качестве источника можно задать    путь к "
-"хранилищу или спецификацию клиента. Все файлы источика\n"
-"    будут преобразованы в простой репозиторий Mercurial, метки,\n"
-"    ветви и точки интеграции игнорируются. Обратите внимание, что при\n"
+"    При импорте из Perforce (P4) в качестве источника можно задать\n"
+"    путь к хранилищу или спецификацию клиента. Все файлы источника\n"
+"    будут преобразованы в простое хранилище Mercurial, метки,\n"
+"    ветки и точки интеграции игнорируются. Обратите внимание, что при\n"
 "    задании пути к хранилищу обычно надо указать также каталог \n"
 "    назначения, потому что иначе он может быть назван ``...-hg``."
 
@@ -1477,8 +2059,8 @@
 "    Mercurial Destination\n"
 "    '''''''''''''''''''''"
 msgstr ""
-"    Выходной репозиторий Mercurial\n"
-"    ''''''''''''''''''''''''''''''"
+"    Выходное хранилище Mercurial\n"
+"    ''''''''''''''''''''''''''''"
 
 msgid "    The following options are supported:"
 msgstr "    Поддерживаются следующие параметры:"
@@ -1487,23 +2069,22 @@
 "    :convert.hg.clonebranches: dispatch source branches in separate\n"
 "        clones. The default is False."
 msgstr ""
-"    :convert.hg.clonebranches: создавать отдельные репозитории на\n"
-"        каждую ветвь источника. По умолчанию False."
-
-#, fuzzy
+"    :convert.hg.clonebranches: создавать отдельные хранилища на\n"
+"        каждую ветку источника. По умолчанию False."
+
 msgid ""
 "    :convert.hg.tagsbranch: branch name for tag revisions, defaults to\n"
 "        ``default``."
 msgstr ""
-"    :convert.hg.tagsbranch: имя ветви для помеченных ревизий,\n"
-"         по умолчанию ``default``\n"
+"    :convert.hg.tagsbranch: имя ветки для помеченных ревизий,\n"
+"         по умолчанию ``default``"
 
 msgid ""
 "    :convert.hg.usebranchnames: preserve branch names. The default is\n"
 "        True.\n"
 "    "
 msgstr ""
-"    :convert.hg.usebranchnames: сохранять имена ветвей. По умолчанию\n"
+"    :convert.hg.usebranchnames: сохранять имена веток. По умолчанию\n"
 "        True.\n"
 "    "
 
@@ -1526,19 +2107,19 @@
 "    dates."
 msgstr ""
 "    Команда Mercurial debugcvsps читает журнал CVS через rlog для\n"
-"    текущего каталога (или другого указанного каталога) в репозитории\n"
-"    CVS и преобразует ее журнал в поледовательность наборов изменений\n"
-"    основанных на соответсвующих журнальных записях и датах."
+"    текущего каталога (или другого указанного каталога) в хранилище\n"
+"    CVS и преобразует ее журнал в последовательность наборов изменений\n"
+"    основанных на соответствующих журнальных записях и датах."
 
 msgid "username mapping filename (DEPRECATED, use --authormap instead)"
 msgstr ""
 "файл переназначения имен пользователей (УСТАРЕЛО, используйте --authormap)"
 
 msgid "source repository type"
-msgstr "тип репозитория источника"
+msgstr "тип хранилища источника"
 
 msgid "destination repository type"
-msgstr "тип репозитория назначения"
+msgstr "тип хранилища назначения"
 
 msgid "import up to target revision REV"
 msgstr "импортировать до ревизии РЕВИЗИЯ"
@@ -1550,13 +2131,13 @@
 msgstr "переназначить имена файлов согласно файлу"
 
 msgid "splice synthesized history into place"
-msgstr ""
+msgstr "срастить синтезированную историю в заданных точках"
 
 msgid "change branch names while converting"
-msgstr "изменить имена ветвей при конвертации"
+msgstr "изменить имена веток при конвертации"
 
 msgid "try to sort changesets by branches"
-msgstr "попытаться отсортировать наборы изменений по ветвям"
+msgstr "попытаться отсортировать наборы изменений по веткам"
 
 msgid "try to sort changesets by date"
 msgstr "попытаться отсортировать наборы изменений по дате"
@@ -1568,7 +2149,7 @@
 msgstr "hg convert [ПАРАМЕТР]... ИСТОЧНИК [НАЗН [REVMAP]]"
 
 msgid "only return changes on specified branches"
-msgstr "возвращать только изменения на указанных ветвях"
+msgstr "возвращать только изменения на указанных ветках"
 
 msgid "prefix to remove from file names"
 msgstr "удалить этот префикс из имен файлов"
@@ -1577,13 +2158,13 @@
 msgstr "возвращать только изменения после или между указанными метками"
 
 msgid "update cvs log cache"
-msgstr "обновить кэш жирнала cvs"
+msgstr "обновить кэш журнала cvs"
 
 msgid "create new cvs log cache"
 msgstr "создать новый кэш лога cvs"
 
 msgid "set commit time fuzz in seconds"
-msgstr ""
+msgstr "установить погрешность времени фиксации в секундах"
 
 msgid "specify cvsroot"
 msgstr "задать cvsroot"
@@ -1592,7 +2173,7 @@
 msgstr "указать родительские ревизии"
 
 msgid "show current changeset in ancestor branches"
-msgstr "показывать текущий набор изменений на родительских ветвях"
+msgstr "показывать текущий набор изменений на родительских ветках"
 
 msgid "ignored for compatibility"
 msgstr "игнорировать для совместимости"
@@ -1609,497 +2190,515 @@
 
 msgid ":svnuuid: String. Converted subversion revision repository identifier."
 msgstr ""
-":svnuuid: Строка. Идентификатор репозитория сконвертированной из\n"
+":svnuuid: Строка. Идентификатор хранилища сконвертированной из\n"
 "    subversion ревизии."
 
 #, python-format
 msgid "%s does not look like a Bazaar repository"
-msgstr ""
+msgstr "%s не похож на хранилище Bazaar"
 
 msgid "Bazaar modules could not be loaded"
-msgstr ""
+msgstr "Не удалось загрузить модули Bazaar"
 
 msgid ""
 "warning: lightweight checkouts may cause conversion failures, try with a "
 "regular branch instead.\n"
 msgstr ""
+"внимание: легковесные копии (checkouts) могут вызвать ошибки при, лучше\n"
+"конвертировании использовать обычные ветки.\n"
 
 msgid "bzr source type could not be determined\n"
-msgstr ""
+msgstr "невозможно определить тип источника bzr\n"
 
 #, python-format
 msgid "%s is not a valid revision in current branch"
-msgstr ""
+msgstr "%s - недопустимая ревизия на текущей ветке"
 
 #, python-format
 msgid "%s is not available in %s anymore"
-msgstr ""
+msgstr "%s более не доступен в %s"
 
 #, python-format
 msgid "%s.%s symlink has no target"
-msgstr ""
+msgstr "символическая ссылка %s.%s ссылается на несуществующий объект"
 
 #, python-format
 msgid "cannot find required \"%s\" tool"
-msgstr ""
+msgstr "не удается найти требуемый инструмент \"%s\""
 
 #, python-format
 msgid "%s error:\n"
-msgstr ""
+msgstr "ошибка в %s:\n"
 
 #, python-format
 msgid "syntax error in %s(%d): key/value pair expected"
-msgstr ""
+msgstr "синтаксическая ошибка в %s(%d): ожидается пара ключ/значение"
 
 #, python-format
 msgid "could not open map file %r: %s"
-msgstr ""
+msgstr "не удается открыть файл отображения (map file) %r: %s"
 
 #, python-format
 msgid "%s: invalid source repository type"
-msgstr ""
+msgstr "%s: неверный тип хранилища-источника"
 
 #, python-format
 msgid "%s: missing or unsupported repository"
-msgstr ""
+msgstr "%s: отсутствующее или неподдерживаемое хранилище"
 
 #, python-format
 msgid "%s: invalid destination repository type"
-msgstr ""
+msgstr "%s: неверный тип хранилища назначения"
 
 #, python-format
 msgid "convert: %s\n"
-msgstr ""
+msgstr "convert: %s\n"
 
 #, python-format
 msgid "%s: unknown repository type"
-msgstr ""
+msgstr "%s: неизвестный тип хранилища"
 
 msgid "getting files"
-msgstr ""
+msgstr "получаем файлы"
 
 msgid "revisions"
 msgstr "ревизии"
 
 msgid "scanning"
-msgstr ""
+msgstr "сканирование"
 
 #, python-format
 msgid "unknown sort mode: %s"
-msgstr ""
+msgstr "неизвестный режим сортировки: %s"
 
 #, python-format
 msgid "cycle detected between %s and %s"
-msgstr ""
+msgstr "обнаружен цикл между %s и и %s"
 
 msgid "not all revisions were sorted"
-msgstr ""
+msgstr "не все ревизии были отсортированы"
 
 #, python-format
 msgid "Writing author map file %s\n"
-msgstr ""
+msgstr "Записываем файл отображений (map file) авторов %s\n"
 
 #, python-format
 msgid "Ignoring bad line in author map file %s: %s\n"
-msgstr ""
+msgstr "Ошибочная строка в файле отображения авторов %s игнорируется: %s\n"
 
 #, python-format
 msgid "mapping author %s to %s\n"
-msgstr ""
+msgstr "автор %s отображается как %s\n"
 
 #, python-format
 msgid "overriding mapping for author %s, was %s, will be %s\n"
-msgstr ""
+msgstr "отображение для автора %s переопределено, было %s, будет %s\n"
 
 #, python-format
 msgid "spliced in %s as parents of %s\n"
-msgstr ""
+msgstr "сращивание в %s как родителей %s\n"
 
 msgid "scanning source...\n"
-msgstr ""
+msgstr "сканирование источника...\n"
 
 msgid "sorting...\n"
-msgstr ""
+msgstr "сортировка...\n"
 
 msgid "converting...\n"
-msgstr ""
+msgstr "конвертирование...\n"
 
 #, python-format
 msgid "source: %s\n"
-msgstr ""
+msgstr "источник: %s\n"
 
 msgid "converting"
-msgstr ""
+msgstr "конвертирование"
 
 #, python-format
 msgid "assuming destination %s\n"
-msgstr ""
+msgstr "предполается назначение %s\n"
 
 msgid "more than one sort mode specified"
-msgstr ""
+msgstr "указано более одного режима сортировки"
 
 msgid "--sourcesort is not supported by this data source"
-msgstr ""
+msgstr "--sourcesort не поддерживается этим источником"
 
 #, python-format
 msgid "%s does not look like a CVS checkout"
-msgstr ""
+msgstr "%s не похоже на извлеченную рабочую копию CVS"
 
 #, python-format
 msgid "revision %s is not a patchset number"
-msgstr ""
+msgstr "ревизия %s не номер набора патчей"
 
 #, python-format
 msgid "connecting to %s\n"
-msgstr ""
+msgstr "соединение с %s\n"
 
 msgid "CVS pserver authentication failed"
-msgstr ""
+msgstr "ошибка аутентификации через CVS pserver"
 
 #, python-format
 msgid ""
 "unexpected response from CVS server (expected \"Valid-requests\", but got %r)"
 msgstr ""
+"неожиданный ответ от сервера CVS (ожидается \"Valid-requests\", получено %r)"
 
 #, python-format
 msgid "%d bytes missing from remote file"
-msgstr ""
+msgstr "в отдаленном файле отсутствует %d байт"
 
 msgid "malformed response from CVS"
-msgstr ""
+msgstr "неверно сформированный ответ от CVS"
 
 #, python-format
 msgid "cvs server: %s\n"
-msgstr ""
+msgstr "сервер cvs: %s\n"
 
 #, python-format
 msgid "unknown CVS response: %s"
-msgstr ""
+msgstr "неизвестный ответ от CVS: %s"
 
 msgid "collecting CVS rlog\n"
-msgstr ""
+msgstr "сбор CVS rlog\n"
 
 msgid "not a CVS sandbox"
-msgstr ""
+msgstr "не песочница CVS (CVS sandbox)"
 
 #, python-format
 msgid "reading cvs log cache %s\n"
-msgstr ""
+msgstr "чтение кэша журнала cvs %s\n"
 
 #, python-format
 msgid "cache has %d log entries\n"
-msgstr ""
+msgstr "кэш содержит %d журнальных записей\n"
 
 #, python-format
 msgid "error reading cache: %r\n"
-msgstr ""
+msgstr "ошибка чтения кэша: %r\n"
 
 #, python-format
 msgid "running %s\n"
-msgstr ""
+msgstr "запускается %s\n"
 
 msgid "RCS file must be followed by working file"
-msgstr ""
+msgstr "за RCS-файлом должен следовать рабочий файл"
 
 msgid "must have at least some revisions"
-msgstr ""
+msgstr "требуется хотя бы несколько ревизий"
 
 msgid "expected revision number"
-msgstr ""
+msgstr "ожидается номер ревизии"
 
 msgid "revision must be followed by date line"
-msgstr ""
+msgstr "за ревизией должна следовать строка с датой"
 
 msgid "log cache overlaps with new log entries, re-run without cache."
 msgstr ""
+"кэш журнала пересекается с новыми журнальными записями, перезапустите без "
+"кэша."
 
 #, python-format
 msgid "writing cvs log cache %s\n"
-msgstr ""
+msgstr "записывается кэш журнала cvs %s\n"
 
 #, python-format
 msgid "%d log entries\n"
-msgstr ""
+msgstr "%d записей в журнале\n"
 
 msgid "creating changesets\n"
-msgstr ""
+msgstr "создаются наборы изменений\n"
 
 msgid "synthetic changeset cannot have multiple parents"
-msgstr ""
+msgstr "синтезированные наборы изменений не могут иметь несколько родителей"
 
 #, python-format
 msgid ""
 "warning: CVS commit message references non-existent branch %r:\n"
 "%s\n"
 msgstr ""
-
-#, python-format
+"внимание: комментарий фиксации CVS ссылается на несуществующую ветку %r:\n"
+"%s\n"
+
+#, fuzzy, python-format
 msgid "%d changeset entries\n"
-msgstr ""
+msgstr "%d наборов изменений\n"
 
 #, python-format
 msgid "%s does not look like a darcs repository"
-msgstr ""
+msgstr "%s не похож на хранилище darcs"
 
 #, python-format
 msgid "darcs version 2.1 or newer needed (found %r)"
-msgstr ""
+msgstr "требуется версия darcs 2.1 или выше (найдена %r)"
 
 msgid "Python ElementTree module is not available"
-msgstr ""
+msgstr "Модуль Python ElemntTree не доступен"
 
 #, python-format
 msgid "%s repository format is unsupported, please upgrade"
-msgstr ""
+msgstr "формат хранилища %s не поддерживается, пожалуйста обновитесь"
 
 msgid "failed to detect repository format!"
-msgstr ""
+msgstr "не удалось определить формат хранилища!"
 
 msgid "internal calling inconsistency"
-msgstr ""
+msgstr "внутреннее нарушение целостности вызовов"
 
 msgid "errors in filemap"
-msgstr ""
+msgstr "ошибки в отображении файлов (filemap)"
 
 #, python-format
 msgid "%s:%d: path to %s is missing\n"
-msgstr ""
+msgstr "%s:%d: путь к %s отсутствует\n"
 
 #, python-format
 msgid "%s:%d: %r already in %s list\n"
-msgstr ""
+msgstr "%s:%d: %r уже в списке %s\n"
 
 #, python-format
 msgid "%s:%d: superfluous / in %s %r\n"
-msgstr ""
+msgstr "%s:%d: лишний / в %s %r\n"
 
 #, python-format
 msgid "%s:%d: unknown directive %r\n"
-msgstr ""
+msgstr "%s:%d: неизвестная директива %r\n"
 
 msgid "source repository doesn't support --filemap"
-msgstr ""
+msgstr "исходное хранилище не поддерживает --filemap"
 
 #, python-format
 msgid "%s does not look like a Git repository"
-msgstr ""
+msgstr "%s не похож на хранилище Git"
 
 msgid "cannot retrieve git heads"
-msgstr ""
+msgstr "не могу получить головы git"
 
 #, python-format
 msgid "cannot read %r object at %s"
-msgstr ""
+msgstr "не могу прочитать объект %r в %s"
 
 #, python-format
 msgid "cannot read changes in %s"
-msgstr ""
+msgstr "не удается прочитать изменения в %s"
 
 #, python-format
 msgid "cannot read tags from %s"
-msgstr ""
+msgstr "не удается прочитать метки из %s"
 
 #, python-format
 msgid "%s does not look like a GNU Arch repository"
-msgstr ""
+msgstr "%s не похож на хранилище GNU Arch"
 
 msgid "cannot find a GNU Arch tool"
-msgstr ""
+msgstr "не могу найти программу GNU Arch"
 
 #, python-format
 msgid "analyzing tree version %s...\n"
-msgstr ""
+msgstr "анализ дерева версии %s...\n"
 
 #, python-format
 msgid ""
 "tree analysis stopped because it points to an unregistered archive %s...\n"
 msgstr ""
+"анализ дерева прерван, поскольку он указывает на незарегистрированный архив "
+"%s...\n"
 
 #, python-format
 msgid "could not parse cat-log of %s"
-msgstr ""
+msgstr "не могу разобрать cat-log %s"
 
 #, python-format
 msgid "%s is not a local Mercurial repository"
-msgstr ""
+msgstr "%s - не локальное хранилище Mercurial"
 
 #, python-format
 msgid "initializing destination %s repository\n"
-msgstr ""
-
-#, python-format
+msgstr "инициализация хранилища назначения %s\n"
+
+#, fuzzy, python-format
 msgid "could not create hg repository %s as sink"
-msgstr ""
+msgstr "не удается создать хранилище-приемник Mercurial %s"
 
 #, python-format
 msgid "pulling from %s into %s\n"
-msgstr ""
+msgstr "затягиваем из %s в %s\n"
 
 msgid "filtering out empty revision\n"
-msgstr ""
+msgstr "отфильтровывается пустая ревизия\n"
 
 msgid "updating tags\n"
-msgstr ""
+msgstr "обновление меток\n"
 
 msgid "updating bookmarks\n"
-msgstr ""
+msgstr "обновление закладок\n"
 
 #, python-format
 msgid "%s is not a valid start revision"
-msgstr ""
+msgstr "%s не является допустимой начальной ревизией"
 
 #, python-format
 msgid "ignoring: %s\n"
-msgstr ""
+msgstr "игнорируется: %s\n"
 
 #, python-format
 msgid "%s does not look like a monotone repository"
-msgstr ""
+msgstr "%s не похож на хранилище monotone"
 
 msgid "bad mtn packet - no end of commandnbr"
-msgstr ""
+msgstr "плохой пакет mtn - нет окончания commandbr"
 
 #, python-format
 msgid "bad mtn packet - bad stream type %s"
-msgstr ""
+msgstr "плохой пакет mtn - неверный тип потока %s"
 
 msgid "bad mtn packet - no divider before size"
-msgstr ""
+msgstr "плохой пакет mtn - отсутствует разделитель перед размером"
 
 msgid "bad mtn packet - no end of packet size"
-msgstr ""
+msgstr "плохой пакет mtn - отстутствует окончания размера пакета"
 
 #, python-format
 msgid "bad mtn packet - bad packet size %s"
-msgstr ""
+msgstr "плохой пакет mtn - неверный размер пакета %s"
 
 #, python-format
 msgid "bad mtn packet - unable to read full packet read %s of %s"
 msgstr ""
+"плохой пакет mtn - не удается полностью прочитать пакет; прочитано %s из %s"
 
 #, python-format
 msgid "mtn command '%s' returned %s"
-msgstr ""
+msgstr "команда mtn '%s' вернула %s"
 
 #, python-format
 msgid "copying file in renamed directory from '%s' to '%s'"
-msgstr ""
+msgstr "копирование файла из переименованного каталога из '%s' в '%s'"
 
 msgid "unable to determine mtn automate interface version"
-msgstr ""
+msgstr "не удается определить версию автоматизированного интерфейса mtn"
 
 #, python-format
 msgid "mtn automate stdio header unexpected: %s"
-msgstr ""
+msgstr "неожиданные заголовок mtn automate stdio: %s"
 
 msgid "failed to reach end of mtn automate stdio headers"
-msgstr ""
+msgstr "не удалось дойти до конца заголовков mtn automate stdio"
 
 #, python-format
 msgid "%s does not look like a P4 repository"
-msgstr ""
+msgstr "%s не похож на хранилище P4"
 
 msgid "reading p4 views\n"
-msgstr ""
+msgstr "чтение представлений p4\n"
 
 msgid "collecting p4 changelists\n"
-msgstr ""
+msgstr "сбор списков изменений p4\n"
 
 msgid "Mercurial failed to run itself, check hg executable is in PATH"
 msgstr ""
+"Mercurial не удалось запустить себя самого, убедитесь, что переменная\n"
+"PATH содержит путь к hg"
 
 msgid ""
 "svn: cannot probe remote repository, assume it could be a subversion "
 "repository. Use --source-type if you know better.\n"
 msgstr ""
+"svn: не удалось обследовать отдаленное хранилище в предположении, что\n"
+"это хранилище subversion. Используйте --source-type, если вам лучше\n"
+"известен его тип.\n"
 
 #, python-format
 msgid "%s does not look like a Subversion repository"
-msgstr ""
+msgstr "%s не похож на хранилище Subversion"
 
 msgid "Could not load Subversion python bindings"
-msgstr ""
+msgstr "Не удалось загрузить привязки (bindings) Subversion для python"
 
 #, python-format
 msgid "Subversion python bindings %d.%d found, 1.4 or later required"
 msgstr ""
+"Привязки (bindings) Subversions %d.%d для python не найдены, требуется 1.4 "
+"или новее"
 
 msgid "Subversion python bindings are too old, 1.4 or later required"
 msgstr ""
+"Привязки (bindings) Subversions слишком старые, требуется 1.4 или новее"
 
 #, python-format
 msgid "svn: revision %s is not an integer"
-msgstr ""
+msgstr "svn: ревизия %s - не целое число"
 
 #, python-format
 msgid "svn: start revision %s is not an integer"
-msgstr ""
+msgstr "svn: начальная ревизия %s - не целое число"
 
 #, python-format
 msgid "no revision found in module %s"
-msgstr ""
+msgstr "не найдено ревизий в модуле %s"
 
 #, python-format
 msgid "expected %s to be at %r, but not found"
-msgstr ""
+msgstr "%s ожидается в %r, но не был найден"
 
 #, python-format
 msgid "found %s at %r\n"
-msgstr ""
+msgstr "%s найден в %r\n"
 
 #, python-format
 msgid "ignoring empty branch %s\n"
-msgstr ""
+msgstr "игнорируется пустая ветка %s\n"
 
 #, python-format
 msgid "found branch %s at %d\n"
-msgstr ""
+msgstr "ветка %s найдена в %d\n"
 
 msgid "svn: start revision is not supported with more than one branch"
-msgstr ""
+msgstr "svn: начальная ревизия не поддерживается при наличии более одной ветки"
 
 #, python-format
 msgid "svn: no revision found after start revision %d"
-msgstr ""
+msgstr "svn: не найдено ревизий после стартовой ревизии %d"
 
 #, python-format
 msgid "%s not found up to revision %d"
-msgstr ""
+msgstr "%s не найден вполть до ревизии %d"
 
 msgid "scanning paths"
-msgstr ""
+msgstr "сканируем пути"
 
 #, python-format
 msgid "found parent of branch %s at %d: %s\n"
-msgstr ""
+msgstr "найден родитель ветки %s в %d: %s\n"
 
 #, python-format
 msgid "fetching revision log for \"%s\" from %d to %d\n"
-msgstr ""
+msgstr "получаем журнал ревизий для \"%s\" от %d до %d\n"
 
 #, python-format
 msgid "svn: branch has no revision %s"
-msgstr ""
+msgstr "svn: на ветке нет ревизии %s"
 
 #, python-format
 msgid "initializing svn repository %r\n"
-msgstr ""
+msgstr "инициализация хранилища svn %r\n"
 
 #, python-format
 msgid "initializing svn working copy %r\n"
-msgstr ""
+msgstr "инициализация рабочей копии svn %r\n"
 
 msgid "unexpected svn output:\n"
-msgstr ""
+msgstr "неожиданный вывод svn:\n"
 
 msgid "unable to cope with svn output"
-msgstr ""
+msgstr "не удалось скопировать вывод svn"
 
 msgid "writing Subversion tags is not yet implemented\n"
-msgstr ""
+msgstr "запись меток Subversion еще не реализована\n"
 
 msgid "automatically manage newlines in repository files"
-msgstr ""
+msgstr "автоматический перевод форматов новой строки в хранилище"
 
 msgid ""
 "This extension allows you to manage the type of line endings (CRLF or\n"
@@ -2107,6 +2706,10 @@
 "directory. That way you can get CRLF line endings on Windows and LF on\n"
 "Unix/Mac, thereby letting everybody use their OS native line endings."
 msgstr ""
+"Это расширение позволяет управлять форматом перевода строки (CRLF или\n"
+"LF), который используется в хранилище или в рабочей копии. Таким\n"
+"образом можно получить переносы в виде CRLF в Windows и LF в Unix/Mac,\n"
+"позволяя всем использовать нативные для их платформы переносы."
 
 msgid ""
 "The extension reads its configuration from a versioned ``.hgeol``\n"
@@ -2115,6 +2718,10 @@
 "configuration files. It uses two sections, ``[patterns]`` and\n"
 "``[repository]``."
 msgstr ""
+"Расширение читает настройки из версионируемого файла конфигурации\n"
+"``.hgeol``, находящегося в корне рабочего каталога. Файл ``.hgeol``\n"
+"имеет тот же синтаксис, что и другие файлы конфигурации Mercurial.\n"
+"Он использует две секции: ``[patterns]`` и ``[repository]``."
 
 msgid ""
 "The ``[patterns]`` section specifies how line endings should be\n"
@@ -2123,6 +2730,11 @@
 "specific patterns first. The available line endings are ``LF``,\n"
 "``CRLF``, and ``BIN``."
 msgstr ""
+"Секция ``[patterns]`` определяет, как переносы строк должны "
+"преобразовываться\n"
+"между рабочей копией и хранилищем. Формат задается шаблоном файла.\n"
+"Используется первый совпавший шаблон, так что помещайте более конкретные\n"
+"шаблоны в начале. Доступны окончания строки ``LF``, ``CRLF`` и ``BIN``."
 
 msgid ""
 "Files with the declared format of ``CRLF`` or ``LF`` are always\n"
@@ -2134,6 +2746,14 @@
 "default behaviour; it is only needed if you need to override a later,\n"
 "more general pattern."
 msgstr ""
+"Файлы, для которых задан формат ``CRLF`` или ``LF`` всегда извлекаются\n"
+"и хранятся в хранилище в этом формате, файлы с форматом ``BIN``\n"
+"остаются неизменными. Дополнительно может использоваться формат ``native``,\n"
+"позволяющий извлекать файлы в родном для текущей платформы формате: ``LF``\n"
+"в Unix (включая Mac OS X) и ``CRLF`` в Windows. Обратите внимание, что\n"
+"``BIN`` (ничего не делать с переводом строки) является поведением Mercurial\n"
+"по умолчанию; он требуется, только если надо переопределить последующий,\n"
+"более общий шаблон."
 
 msgid ""
 "The optional ``[repository]`` section specifies the line endings to\n"
@@ -2146,9 +2766,20 @@
 "declared as ``LF``, ``CRLF``, or ``BIN`` in the ``[patterns]`` section\n"
 "are always stored as-is in the repository."
 msgstr ""
+"Необязательная секция ``[repository]`` задает формат перевода строки\n"
+"для файлов в хранилище. Он имеет единственный параметр - ``native``, - \n"
+"который определяет формат новой строки для файлов, объявленных как "
+"``native``\n"
+"в секции ``[patterns]``. Он может быть установлен в ``LF`` или ``CRLF``.\n"
+"По умолчанию ``LF``. Это означает, что, например, под Windows файлы,\n"
+"сконфигурированные как ``native`` (``CRLF`` по умолчанию), будут "
+"преобразованы\n"
+"к формату ``LF`` при хранении в хранилище. Файлы, объявленные как ``LF``,\n"
+"``CRLF`` или ``BIN`` в секции ``[patterns]``, всегда хранятся в хранилище\n"
+"в неизменном виде."
 
 msgid "Example versioned ``.hgeol`` file::"
-msgstr ""
+msgstr "Пример версионированного файла ``.hgeol``::"
 
 msgid ""
 "  [patterns]\n"
@@ -2158,23 +2789,41 @@
 "  Makefile = LF\n"
 "  **.jpg = BIN"
 msgstr ""
+"  [patterns]\n"
+"  **.py = native\n"
+"  **.vcproj = CRLF\n"
+"  **.txt = native\n"
+"  Makefile = LF\n"
+"  **.jpg = BIN"
 
 msgid ""
 "  [repository]\n"
 "  native = LF"
 msgstr ""
+"  [repository]\n"
+"  native = LF"
 
 msgid ""
 ".. note::\n"
 "   The rules will first apply when files are touched in the working\n"
 "   copy, e.g. by updating to null and back to tip to touch all files."
 msgstr ""
-
-msgid ""
-"The extension uses an optional ``[eol]`` section in your hgrc file\n"
-"(not the ``.hgeol`` file) for settings that control the overall\n"
-"behavior. There are two settings:"
-msgstr ""
+".. note::\n"
+"   Правила будут впервые применены, когда файлы будут изменены в рабочей\n"
+"   копии, например, при обновлении на нулевую (null) и обратно на оконечную\n"
+"   (tip) ревизию."
+
+msgid ""
+"The extension uses an optional ``[eol]`` section read from both the\n"
+"normal Mercurial configuration files and the ``.hgeol`` file, with the\n"
+"latter overriding the former. You can use that section to control the\n"
+"overall behavior. There are three settings:"
+msgstr ""
+"Расширение использует необязательную секцию ``[eol]``, которую читает\n"
+"из обычного конфигурационного файла Mercurial или из файла ``.hgeol``,\n"
+"причем последний имеет более высокий приоритет. Эту секцию можно "
+"использовать,\n"
+"чтобы управлять общим поведением. Поддерживаются три параметра:"
 
 msgid ""
 "- ``eol.native`` (default ``os.linesep``) can be set to ``LF`` or\n"
@@ -2182,6 +2831,11 @@
 "  checkout. This can be used with :hg:`archive` on Unix, say, to\n"
 "  generate an archive where files have line endings for Windows."
 msgstr ""
+"- ``eol.native`` (по умолчанию ``ls.linesep``) может быть установлен в\n"
+"  ``LF`` или ``CRLF``, чтобы переопределить интерпретацию ``native``\n"
+"  по умолчанию для извлечения файлов. Это можно использовать с\n"
+"  :hg:`archive` в Unix, например, чтобы сгенерировать архив, в котором\n"
+"  файлы имеют формат новой строки для Windows."
 
 msgid ""
 "- ``eol.only-consistent`` (default True) can be set to False to make\n"
@@ -2190,6 +2844,21 @@
 "  Such files are normally not touched under the assumption that they\n"
 "  have mixed EOLs on purpose."
 msgstr ""
+"- ``eol.only-consistent`` (по умолчанию True) можно установить в False,\n"
+"  чтобы преобразовать файлы с непостоянными переводами строк, т.е. такие,\n"
+"  в которых встречаются и ``CRLF`` и ``LF``. Обычно такие файлы не\n"
+"  преобразуются в предположении, что у них смешанные переводы строк\n"
+"  оставлены намеренно."
+
+msgid ""
+"- ``eol.fix-trailing-newline`` (default False) can be set to True to\n"
+"  ensure that converted files end with a EOL character (either ``\\n``\n"
+"  or ``\\r\\n`` as per the configured patterns)."
+msgstr ""
+"- ``eol.fix-trailing-newline`` (по умолчанию False) можно установить в "
+"True,\n"
+"  чтобы убедиться, что преобразованные файлы оканчиваются символом перевода\n"
+"  строки (``\\n`` или ``\\r\\n``, в зависимости от шаблона в конфиге)."
 
 msgid ""
 "The extension provides ``cleverencode:`` and ``cleverdecode:`` filters\n"
@@ -2197,6 +2866,10 @@
 "disable win32text and enable eol and your filters will still work. You\n"
 "only need to these filters until you have prepared a ``.hgeol`` file."
 msgstr ""
+"Расширение предоставляет фильтры ``cleverencode:`` и ``cleverdecode:``,\n"
+"аналогичные устаревшему расширению win32text. Это означает, что win32text\n"
+"можно отключить, и все ваши фильтры будут по-прежнему работать. Они вам\n"
+"понадобятся только до тех пор, пока вы не напишете файл ``.hgeol``."
 
 msgid ""
 "The ``win32text.forbid*`` hooks provided by the win32text extension\n"
@@ -2208,36 +2881,45 @@
 "``eol.checkallhook`` hook. These hooks are best used as\n"
 "``pretxnchangegroup`` hooks."
 msgstr ""
+"Хуки ``win32text.forbid*``, предоставляемые расширением win32text, были\n"
+"объединены в единый хук ``eol.checkheadshook``. Хук считывает ожидаемые\n"
+"переводы строк из файла ``.hgeol``, поэтому необходимо подготовить файл\n"
+"``.hgeol`` перед использованием хука. ``eol.checkheadshook`` проверяет\n"
+"только головные ревизии, промежуточные ревизии с неверными переводами\n"
+"строк будут приняты. Чтобы запретить их полностью, используйте хук\n"
+"``eol.checkallhook``. Эти хуки лучше всего использовать в качестве\n"
+"хука ``pretxnchangegroup``."
 
 msgid ""
 "See :hg:`help patterns` for more information about the glob patterns\n"
 "used.\n"
-msgstr ""
+msgstr "О шаблонах в формате blob см. :hg:`help patterns`\n"
 
 #, python-format
 msgid "ignoring unknown EOL style '%s' from %s\n"
-msgstr ""
+msgstr "игнорируется неизвестный формат новой строки '%s' из %s\n"
 
 #, python-format
 msgid "warning: ignoring .hgeol file due to parse error at %s: %s\n"
 msgstr ""
+"внимание: файл .hgeol игнорируется из-за синтаксический ошибки в стр %s: %s\n"
 
 #, python-format
 msgid "  %s in %s should not have %s line endings"
-msgstr ""
+msgstr "  %s в %s не должен иметь переводы строки вида %s"
 
 msgid "end-of-line check failed:\n"
-msgstr ""
+msgstr "ошибка в формате новой строки:\n"
 
 msgid "the eol extension is incompatible with the win32text extension\n"
-msgstr ""
+msgstr "расширение eol несовместимо с расширением win32text\n"
 
 #, python-format
 msgid "inconsistent newline style in %s\n"
-msgstr ""
+msgstr "в %s используются смешанные переводы строки\n"
 
 msgid "command to allow external programs to compare revisions"
-msgstr ""
+msgstr "позволяет сравнивать ревизии с помощью внешних программ"
 
 msgid ""
 "The extdiff Mercurial extension allows you to use external programs\n"
@@ -2246,11 +2928,17 @@
 "non-option arguments: paths to directories containing snapshots of\n"
 "files to compare."
 msgstr ""
+"Расширение extdiff позволяет использовать внешние программы для сравнения\n"
+"двух ревизий или заданной ревизии с рабочим каталогом. Внешние программы\n"
+"сравнения вызываются с набором настраиваемых аргументов, и двумя жестко\n"
+"заданными: путями к каталогам, содержащим версии сравниваемых файлов."
 
 msgid ""
 "The extdiff extension also allows you to configure new diff commands, so\n"
 "you do not need to type :hg:`extdiff -p kdiff3` always. ::"
 msgstr ""
+"Расширение extdiff также позволяет настроить новые команды для\n"
+"сравнения, чтобы не набирать все время :hg:`extdiff -p kdiff3`. ::"
 
 msgid ""
 "  [extdiff]\n"
@@ -2260,16 +2948,28 @@
 "  #cmd.cdiff = gdiff\n"
 "  #opts.cdiff = -Nprc5"
 msgstr ""
+"  [extdiff]\n"
+"  # добавить новую команду, которая запускает GNU diff(1)\n"
+"  # cо сравнением с контекстом'\n"
+"  cdiff = gdiff -Nprc5\n"
+"  ## то же самое старым способом:\n"
+"  #cmd.cdiff = gdiff\n"
+"  #opts.cdiff = -Nprc5"
 
 msgid ""
 "  # add new command called vdiff, runs kdiff3\n"
 "  vdiff = kdiff3"
 msgstr ""
+"  # добавить новую команду vdiff, запускающую kdiff3\n"
+"  vdiff = kdiff3"
 
 msgid ""
 "  # add new command called meld, runs meld (no need to name twice)\n"
 "  meld ="
 msgstr ""
+"  # добавить новую команду meld, запускающую meld (не нужно набирать "
+"дважды)\n"
+"  meld ="
 
 msgid ""
 "  # add new command called vimdiff, runs gvimdiff with DirDiff plugin\n"
@@ -2278,9 +2978,16 @@
 "  # your .vimrc\n"
 "  vimdiff = gvim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)'"
 msgstr ""
+"  # добавить новую команду vimdiff, запускающую gvimdiff с плагином DirDiff\n"
+"  # (см. http://www.vim.org/scripts/script.php?script_id=102)\n"
+"  # Неанглоязычные пользователи. не забудьте добавить\n"
+"  # \"let g:DirDiffDynamicDiffText = 1\" в ваш .vimrc\n"
+"  vimdiff = gvim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)'"
 
 msgid "Tool arguments can include variables that are expanded at runtime::"
 msgstr ""
+"Аргументы программы могут включать в себя переменные, в которых\n"
+"выполняется подстановка во время выполнения::"
 
 msgid ""
 "  $parent1, $plabel1 - filename, descriptive label of first parent\n"
@@ -2289,21 +2996,32 @@
 "  $root              - repository root\n"
 "  $parent is an alias for $parent1."
 msgstr ""
+"  $parent1, $plabel1 - имя файла, читаемая метка первого родителя\n"
+"  $child,   $clabel  - имя файла, читаемая метка дочерней ревизии\n"
+"  $parent2, $plabel2 - имя файла, читаемая метка второго родителя\n"
+"  $root              - корень хранилища\n"
+"  $parent - псевдоним для $parent1."
 
 msgid ""
 "The extdiff extension will look in your [diff-tools] and [merge-tools]\n"
 "sections for diff tool arguments, when none are specified in [extdiff]."
 msgstr ""
+"extdiff читает аргументы для программ сравнения в секциях [diff-tools]\n"
+"и [merge-tools] конфигурационного файла, если они не заданы в [extdiff]."
 
 msgid ""
 "  [extdiff]\n"
 "  kdiff3 ="
 msgstr ""
+"  [extdiff]\n"
+"  kdiff3 ="
 
 msgid ""
 "  [diff-tools]\n"
 "  kdiff3.diffargs=--L1 '$plabel1' --L2 '$clabel' $parent $child"
 msgstr ""
+"  [diff-tools]\n"
+"  kdiff3.diffargs=--L1 '$plabel1' --L2 '$clabel' $parent $child"
 
 msgid ""
 "You can use -I/-X and list of file or directory names like normal\n"
@@ -2311,6 +3029,11 @@
 "needed files, so running the external diff program will actually be\n"
 "pretty fast (at least faster than having to compare the entire tree).\n"
 msgstr ""
+"Можно использовать ключи -I/-X и список имен файлов или каталогов,\n"
+"как и в обычной команде :hg:`diff`. Расширение extdiff делает снимки\n"
+"только нужных файлов, поэтому запуск программы сравнения будет довольно\n"
+"быстрым (по крайней мере быстрее, чем если бы надо было сравнить все\n"
+"дерево файлов из хранилища).\n"
 
 #, python-format
 msgid "making snapshot of %d files from rev %s\n"
@@ -2318,10 +3041,10 @@
 
 #, python-format
 msgid "making snapshot of %d files from working directory\n"
-msgstr ""
+msgstr "создается снимок %d файлов из рабочего каталога\n"
 
 msgid "cannot specify --rev and --change at the same time"
-msgstr "нельзя указывать одновременно --reb и --change"
+msgstr "нельзя указывать одновременно --rev и --change"
 
 msgid "cleaning up temp directory\n"
 msgstr "очистка временного каталога\n"
@@ -2345,9 +3068,9 @@
 "    will be passed before the names of the directories to compare."
 msgstr ""
 "    Чтобы выбрать другую программу, используйте параметр -p/--program.\n"
-"    Программе будут переданы имена двух директорий для сравнения.\n"
+"    Программе будут переданы имена двух каталогов для сравнения.\n"
 "    Чтобы передать дополнительные параметры, используйте -o/--option.\n"
-"    Они будут переданы перед именами сравниваемых директорий."
+"    Они будут переданы перед именами сравниваемых каталогов."
 
 msgid ""
 "    When two revision arguments are given, then changes are shown\n"
@@ -2360,13 +3083,13 @@
 "    ревизиями. Если указана только одна ревизия, то эта ревизия\n"
 "    сравнивается с рабочей копией, а если не указано ни одной\n"
 "    ревизии, рабочая копия сравнивается с родительской ревизией\n"
-"    из репозитория."
+"    из хранилища."
 
 msgid "CMD"
 msgstr "КОМАНДА"
 
 msgid "comparison program to run"
-msgstr ""
+msgstr "запускаемая программа сравнения"
 
 msgid "OPT"
 msgstr "ОПЦИЯ"
@@ -2385,7 +3108,7 @@
 
 #, python-format
 msgid "use %(path)s to diff repository (or selected files)"
-msgstr "использовать %(path)s для сравнения репозитория (или выбранных файлов)"
+msgstr "использовать %(path)s для сравнения хранилища (или выбранных файлов)"
 
 #, python-format
 msgid ""
@@ -2400,15 +3123,19 @@
 msgstr "hg %s [ПАРАМЕТР]... [ФАЙЛ]..."
 
 msgid "pull, update and merge in one command"
-msgstr ""
+msgstr "затянуть, обновиться и слить одной командой"
 
 msgid "pull changes from a remote repository, merge new changes if needed."
 msgstr ""
+"затягивает изменения из отдалённого хранилища, проводит слияние\n"
+"при необходимости."
 
 msgid ""
 "    This finds all changes from the repository at the specified path\n"
 "    or URL and adds them to the local repository."
 msgstr ""
+"    Находит все изменения в хранилище по указанному пути или URL и\n"
+"    добавляет их в локальное хранилище."
 
 msgid ""
 "    If the pulled changes add a new branch head, the head is\n"
@@ -2416,6 +3143,9 @@
 "    Otherwise, the working directory is updated to include the new\n"
 "    changes."
 msgstr ""
+"    Если затянутые изменения создают новую голову, она автоматически\n"
+"    сливается, и результат слияния фиксируется. В противном случае,\n"
+"    рабочий каталог обновляется, чтобы отразить новые изменения."
 
 msgid ""
 "    When a merge occurs, the newly pulled changes are assumed to be\n"
@@ -2423,6 +3153,10 @@
 "    parent, with local changes as the second. To switch the merge\n"
 "    order, use --switch-parent."
 msgstr ""
+"    Во время слияния затянутые изменения считаются \"приоритетными\".\n"
+"    Головная ревизия новых изменений используется в качестве первого\n"
+"    родителя, вторым являются локальные изменения. Чтобы изменить\n"
+"    этот порядок, используйте --switch-parent."
 
 msgid "    See :hg:`help dates` for a list of formats valid for -d/--date."
 msgstr "    Список возможных форматов для --d/--dates см. :hg:`help dates`"
@@ -2437,170 +3171,187 @@
 msgid ""
 "working dir not at branch tip (use \"hg update\" to check out branch tip)"
 msgstr ""
+"рабочий каталог не на оконечной ревизии (используйте \"hg update\",\n"
+"чтобы извлечь оконечную ревизию)"
 
 msgid "outstanding uncommitted merge"
-msgstr ""
+msgstr "исходящее незафиксированное слияние"
 
 msgid "outstanding uncommitted changes"
-msgstr ""
+msgstr "исходящие незафиксированные изменения"
 
 msgid "working directory is missing some files"
-msgstr ""
+msgstr "в рабочем каталоге отсутствуют некоторые файлы"
 
 msgid ""
 "multiple heads in this branch (use \"hg heads .\" and \"hg merge\" to merge)"
 msgstr ""
+"на этой ветке несколько голов (используйте \"hg heads .\" и \"hg merge\"\n"
+"для слияния"
 
 #, python-format
 msgid "pulling from %s\n"
-msgstr "подтягивая из %s\n"
+msgstr "затягиваем из %s\n"
 
 msgid ""
 "Other repository doesn't support revision lookup, so a rev cannot be "
 "specified."
 msgstr ""
+"Другое хранилище не поддерживает поиск ревизий, поэтому нельзя\n"
+"задавать ревизию."
 
 #, python-format
 msgid ""
 "not merging with %d other new branch heads (use \"hg heads .\" and \"hg merge"
 "\" to merge them)\n"
 msgstr ""
+"не выполняется слияние с %d новыми головными ревизиями (используйте\n"
+"\"hg heads .\" и \"hg merge\" для слияния)\n"
 
 #, python-format
 msgid "updating to %d:%s\n"
-msgstr ""
+msgstr "обновление на %d:%s\n"
 
 #, python-format
 msgid "merging with %d:%s\n"
-msgstr ""
+msgstr "слияние с %d:%s\n"
 
 #, python-format
 msgid "new changeset %d:%s merges remote changes with local\n"
 msgstr ""
+"новый набор изменений %d:%s сливает отдалённые изменения с локальными\n"
 
 msgid "a specific revision you would like to pull"
-msgstr ""
+msgstr "конкретная ревизия, которую вы хотите затянуть"
 
 msgid "edit commit message"
-msgstr "редактировать комментарий к коммиту"
+msgstr "редактировать сообщение фиксации"
 
 msgid "edit commit message (DEPRECATED)"
-msgstr ""
+msgstr "редактировать сообщение фиксации (УСТАРЕЛО)"
 
 msgid "switch parents when merging"
-msgstr ""
+msgstr "поменять родителей при слиянии"
 
 msgid "hg fetch [SOURCE]"
-msgstr ""
+msgstr "hg fetch [ИСТОЧНИК]"
 
 msgid "commands to sign and verify changesets"
-msgstr ""
+msgstr "команды для подписи и проверки наборов изменений"
 
 msgid "error while verifying signature"
-msgstr ""
+msgstr "ошибка при проверки подписи"
 
 #, python-format
 msgid "%s Bad signature from \"%s\"\n"
-msgstr ""
+msgstr "%s Плохая подпись от \"%s\"\n"
 
 #, python-format
 msgid "%s Note: Signature has expired (signed by: \"%s\")\n"
-msgstr ""
+msgstr "%s Внимание: Срок действия подписи истек (автор подписи: \"%s\")\n"
 
 #, python-format
 msgid "%s Note: This key has expired (signed by: \"%s\")\n"
-msgstr ""
+msgstr "%s Замечание: Время действия этого ключа истекло (подписано \"%s\")\n"
 
 msgid "hg sigs"
-msgstr ""
+msgstr "hg sigs"
 
 msgid "list signed changesets"
-msgstr ""
+msgstr "перечислить подписанные наборы изменений"
 
 #, python-format
 msgid "%s:%d node does not exist\n"
-msgstr ""
+msgstr "узел %s:%d не существует\n"
 
 msgid "hg sigcheck REVISION"
-msgstr ""
+msgstr "hg sigcheck РЕВИЗИЯ"
 
 msgid "verify all the signatures there may be for a particular revision"
-msgstr ""
+msgstr "проверить все возможные подписи для указанной ревизии"
 
 #, python-format
 msgid "No valid signature for %s\n"
-msgstr ""
+msgstr "Нет действительной подписи для %s\n"
 
 msgid "make the signature local"
-msgstr ""
+msgstr "сделать подпись локальной"
 
 msgid "sign even if the sigfile is modified"
-msgstr ""
+msgstr "подписать, даже есть файл подписей (sigfile) изменен"
 
 msgid "do not commit the sigfile after signing"
-msgstr ""
+msgstr "не фиксировать файл подписей (sigfile) после подписывания"
 
 msgid "ID"
-msgstr "ID"
+msgstr "ИД"
 
 msgid "the key id to sign with"
-msgstr ""
+msgstr "идентификатор ключа, используемого для подписи"
 
 msgid "TEXT"
 msgstr "ТЕКСТ"
 
 msgid "commit message"
-msgstr ""
+msgstr "сообщение фиксации"
 
 msgid "hg sign [OPTION]... [REVISION]..."
-msgstr ""
+msgstr "hg sign [ПАРАМЕТР]... [РЕВИЗИЯ]..."
 
 msgid "add a signature for the current or given revision"
-msgstr ""
+msgstr "добавить подпись для текущей или заданной ревизии"
 
 msgid ""
 "    If no revision is given, the parent of the working directory is used,\n"
 "    or tip if no revision is checked out."
 msgstr ""
+"    Если ревизия не указана, используется родительская ревизия рабочего\n"
+"    каталога, либо оконечная ревизия, если рабочий каталог не извлечен."
 
 msgid ""
 "    See :hg:`help dates` for a list of formats valid for -d/--date.\n"
 "    "
 msgstr ""
+"    О возможных форматах для -d/--date см. :hg:`help dates`\n"
+"    "
 
 msgid "uncommitted merge - please provide a specific revision"
-msgstr ""
+msgstr "незафиксированное слияние - пожалуйста, явно укажите ревизию"
 
 #, python-format
 msgid "Signing %d:%s\n"
-msgstr ""
+msgstr "Подписывается %d:%s\n"
 
 msgid "error while signing"
-msgstr ""
+msgstr "ошибка при подписи"
 
 msgid ""
 "working copy of .hgsigs is changed (please commit .hgsigs manually or use --"
 "force)"
 msgstr ""
+"рабочая копия файла .hgsigs изменена (пожалуйста, зафиксируйте .hgsigs "
+"вручную или используйте --force"
 
 msgid "unknown signature version"
-msgstr ""
+msgstr "неизвестная версия подписи"
 
 msgid "command to view revision graphs from a shell"
-msgstr ""
+msgstr "команда для просмотра графа ревизий в командной строке"
 
 msgid ""
 "This extension adds a --graph option to the incoming, outgoing and log\n"
 "commands. When this options is given, an ASCII representation of the\n"
 "revision graph is also shown.\n"
 msgstr ""
+"Эта команда добавляет опцию --graph к командам incoming, outgoing и\n"
+"log. Если эта опция указана, то отображается граф ревизий в ASCII-графике.\n"
 
 #, python-format
 msgid "-G/--graph option is incompatible with --%s"
-msgstr ""
+msgstr "опция -G/--graph несовместима с --%s "
 
 msgid "-G/--graph option is incompatible with --follow with file argument"
-msgstr ""
+msgstr "опция -G/--graph несовместима с --follow с аргументом-файлом"
 
 msgid "NUM"
 msgstr "КОЛ-ВО"
@@ -2615,32 +3366,40 @@
 msgstr "показать заданную ревизию или диапазон ревизий"
 
 msgid "hg glog [OPTION]... [FILE]"
-msgstr ""
+msgstr "hg glog [ПАРАМЕТР]... [ФАЙЛ]"
 
 msgid "show revision history alongside an ASCII revision graph"
-msgstr ""
+msgstr "показать историю ревизий рядом с ASCII-графом ревизий"
 
 msgid ""
 "    Print a revision history alongside a revision graph drawn with\n"
 "    ASCII characters."
 msgstr ""
+"    Печатает историю ревизий рядом с графом ревизий, отображаемого\n"
+"    с помощью ASCII-символов."
 
 msgid ""
 "    Nodes printed as an @ character are parents of the working\n"
 "    directory.\n"
 "    "
 msgstr ""
+"    Вершины, печатаемые символом @, являются родителями рабочего\n"
+"    каталога.\n"
+"    "
 
 msgid "show the revision DAG"
-msgstr ""
+msgstr "показать граф ревизий"
 
 msgid "hooks for integrating with the CIA.vc notification service"
-msgstr ""
+msgstr "хуки для интеграции с сервисом уведомлений CIA.vc"
 
 msgid ""
 "This is meant to be run as a changegroup or incoming hook. To\n"
 "configure it, set the following options in your hgrc::"
 msgstr ""
+"Подразумевается использование для хуков changegroup или incoming.\n"
+"Чтобы настроить уведомления, используйте следующие параметры в вашем\n"
+"конфиге Mercurial::"
 
 msgid ""
 "  [cia]\n"
@@ -2666,6 +3425,28 @@
 "  # number of slashes to strip for url paths\n"
 "  #strip = 0"
 msgstr ""
+"  [cia]\n"
+"  # ваше имя пользователя в CIA\n"
+"  user = foo\n"
+"  # название проекта в CIA\n"
+"  project = foo\n"
+"  # модуль (подпроект) (необязательный)\n"
+"  #module = foo\n"
+"  # Добавить diffstat к журнальному сообщению (необязательный)\n"
+"  #diffstat = False\n"
+"  # Шаблон для журнальных сообщений (необязательный)\n"
+"  #template = {desc}\\n{baseurl}{webroot}/rev/{node}-- {diffstat}\n"
+"  # Используемый стиль (необязательный)\n"
+"  #style = foo\n"
+"  # URL сервиса уведомлений CIA (необязательный)\n"
+"  # Можно использовать URL вида mailto: для отправки по почте, например\n"
+"  # mailto:cia@cia.vc\n"
+"  # Обязательно задайте при этом email.from.\n"
+"  #url = http://cia.vc/\n"
+"  # напечатать сообщение вместо его отправки (необязательный)\n"
+"  #test = False\n"
+"  # количество удаляемых слешей из путей в форме url\n"
+"  #strip = 0"
 
 msgid ""
 "  [hooks]\n"
@@ -2673,32 +3454,42 @@
 "  changegroup.cia = python:hgcia.hook\n"
 "  #incoming.cia = python:hgcia.hook"
 msgstr ""
+"  [hooks]\n"
+"  # один из этих:\n"
+"  changegroup.cia = python:hgcia.hook\n"
+"  #incoming.cia = python:hgcia.hook"
 
 msgid ""
 "  [web]\n"
 "  # If you want hyperlinks (optional)\n"
 "  baseurl = http://server/path/to/repo\n"
 msgstr ""
+"  [web]\n"
+"  # Если вам нужны гиперссылки (необязательный)\n"
+"  baseurl = http://server/path/to/repo\n"
 
 #, python-format
 msgid "%s returned an error: %s"
-msgstr ""
+msgstr "%s вернул ошибку: %s"
 
 #, python-format
 msgid "hgcia: sending update to %s\n"
-msgstr ""
+msgstr "hgcia: отправляем обновление %s\n"
 
 msgid "email.from must be defined when sending by email"
-msgstr ""
+msgstr "поле 'от' (email.from) должно быть заполнено при отправке email"
 
 msgid "browse the repository in a graphical way"
-msgstr ""
+msgstr "графический обозреватель хранилища"
 
 msgid ""
 "The hgk extension allows browsing the history of a repository in a\n"
 "graphical way. It requires Tcl/Tk version 8.4 or later. (Tcl/Tk is not\n"
 "distributed with Mercurial.)"
 msgstr ""
+"Расширение hgk позволяет просматривать историю хранилища с использованием\n"
+"графического интерфейса. Оно требует Tcl/Tk версии 8.4 или новее (Tcl/Tk\n"
+"не входит в дистрибутив Mercurial."
 
 msgid ""
 "hgk consists of two parts: a Tcl script that does the displaying and\n"
@@ -2707,149 +3498,173 @@
 "the contrib directory, and the extension is shipped in the hgext\n"
 "repository, and needs to be enabled."
 msgstr ""
+"hgk состоит из двух частей: скрипта на Tcl, который осуществляет\n"
+"отображение и запрос информации, и расширения Mercurial c именем\n"
+"hgk.py, предоставляющего хуки, с помощью которых hgk получает данные.\n"
+"hgk находится в папке contrib, расширение поставляется в хранилище\n"
+"hgext, и его нужно включить в конфиге."
 
 msgid ""
 "The :hg:`view` command will launch the hgk Tcl script. For this command\n"
 "to work, hgk must be in your search path. Alternately, you can specify\n"
 "the path to hgk in your configuration file::"
 msgstr ""
+"Команда :hg:`view` запустит Tcl-скрипт hgk. Чтобы комадна зарабола,\n"
+"hgk должен находится по известным путям (PATH). Другой вариант - задать\n"
+"путь к hgk в вашем файле конфигурации::"
 
 msgid ""
 "  [hgk]\n"
 "  path=/location/of/hgk"
 msgstr ""
+"  [hgk]\n"
+"  path=/путь/к/hgk"
 
 msgid ""
 "hgk can make use of the extdiff extension to visualize revisions.\n"
 "Assuming you had already configured extdiff vdiff command, just add::"
 msgstr ""
+"hgk может использовать расширение extdiff для визуализации ревизий.\n"
+"Предполагая, что вы уже настроили команду extdiff vdiff, просто добавьте::"
 
 msgid ""
 "  [hgk]\n"
 "  vdiff=vdiff"
 msgstr ""
+"  [hgk]\n"
+"  vdiff=vdiff"
 
 msgid ""
 "Revisions context menu will now display additional entries to fire\n"
 "vdiff on hovered and selected revisions.\n"
 msgstr ""
+"В контекстное меню ревизий теперь будут включены дополнительные пункты\n"
+"для запуска vdiff для выбранных или ревизий или ревизий под курсором.\n"
 
 msgid "diff trees from two commits"
-msgstr ""
+msgstr "различия деревьев при двух фиксациях"
 
 msgid "output common ancestor information"
-msgstr ""
+msgstr "вывод информации об общем предке"
 
 msgid "cat a specific revision"
-msgstr ""
+msgstr "вывести указанную ревизию"
 
 msgid "cat-file: type or revision not supplied\n"
-msgstr ""
-
+msgstr "cat-file: не задан тип или ревизия\n"
+
+# BUG
 msgid "aborting hg cat-file only understands commits\n"
-msgstr ""
+msgstr "останов: hg cat-file понимает только фиксации (commits)\n"
 
 msgid "parse given revisions"
-msgstr ""
+msgstr "разбор заданых ревизий"
 
 msgid "print revisions"
-msgstr ""
+msgstr "напечатать ревизии"
 
 msgid "print extension options"
-msgstr ""
+msgstr "напечатать параметры расширения"
 
 msgid "start interactive history viewer"
-msgstr ""
+msgstr "запустить интерактивный обозреватель истории"
 
 msgid "hg view [-l LIMIT] [REVRANGE]"
-msgstr ""
+msgstr "hg view [-l ПРЕДЕЛ] [ДИАПАЗОН_РЕВИЗИЙ]"
 
 msgid "generate patch"
-msgstr ""
+msgstr "generate patch"
 
 msgid "recursive"
-msgstr ""
+msgstr "recursive"
 
 msgid "pretty"
-msgstr ""
+msgstr "pretty"
 
 msgid "stdin"
-msgstr ""
+msgstr "stdin"
 
 msgid "detect copies"
-msgstr ""
+msgstr "detect copies"
 
 msgid "search"
-msgstr ""
+msgstr "search"
 
 msgid "hg git-diff-tree [OPTION]... NODE1 NODE2 [FILE]..."
-msgstr ""
+msgstr "hg git-diff-tree [ПАРАМЕТР]... УЗЕЛ1 УЗЕЛ2 [ФАЙЛ]..."
 
 msgid "hg debug-cat-file [OPTION]... TYPE FILE"
-msgstr ""
+msgstr "hg debug-cat-file [ПАРАМЕТР]... ТИП ФАЙЛ"
 
 msgid "hg debug-config"
-msgstr ""
+msgstr "hg debug-config"
 
 msgid "hg debug-merge-base REV REV"
-msgstr ""
-
+msgstr "hg debug-merge-base РЕВИЗИЯ РЕВИЗИЯ"
+
+#. i18n: bisect changeset status
 msgid "ignored"
 msgstr "игнорируемые"
 
 msgid "hg debug-rev-parse REV"
-msgstr ""
+msgstr "hg debug-rev-parse РЕВИЗИЯ"
 
 msgid "header"
-msgstr ""
+msgstr "заголовок"
 
 msgid "topo-order"
-msgstr ""
+msgstr "топологический порядок"
 
 msgid "parents"
-msgstr ""
+msgstr "родители"
 
 msgid "max-count"
-msgstr ""
+msgstr "максимальное количество"
 
 msgid "hg debug-rev-list [OPTION]... REV..."
-msgstr ""
+msgstr "hg debug-rev-list [ПАРАМЕТР]... РЕВИЗИЯ..."
 
 msgid "syntax highlighting for hgweb (requires Pygments)"
-msgstr ""
+msgstr "подсветка синтаксиса для hgweb (требует Pygments)"
 
 msgid ""
 "It depends on the Pygments syntax highlighting library:\n"
 "http://pygments.org/"
 msgstr ""
+"Зависит от библиотеки подсветки синтаксиса Pygments:\n"
+"http://pygments.org/"
 
 msgid "There is a single configuration option::"
-msgstr ""
+msgstr "Поддерживает единственный параметр конфигурации::"
 
 msgid ""
 "  [web]\n"
 "  pygments_style = <style>"
 msgstr ""
+"  [web]\n"
+"  pygments_style = <стиль>"
 
 msgid "The default is 'colorful'.\n"
-msgstr ""
+msgstr "По умолчанию 'colorful'.\n"
 
 msgid "accelerate status report using Linux's inotify service"
-msgstr ""
+msgstr "ускоренные уведомления об изменениях с использованием Linux inotify"
 
 msgid "start an inotify server for this repository"
-msgstr ""
+msgstr "запустить сервер inotify для данного хранилища"
 
 msgid "debugging information for inotify extension"
-msgstr ""
+msgstr "отладочная информация для расширения inotify"
 
 msgid ""
 "    Prints the list of directories being watched by the inotify server.\n"
 "    "
 msgstr ""
+"    Печатает список каталогов, отслеживаемых сервером inotify.\n"
+"    "
 
 msgid "directories being watched:\n"
-msgstr ""
+msgstr "отслеживаемые каталоги:\n"
 
 msgid "run server in background"
 msgstr "запустить сервер в фоновом режиме"
@@ -2858,156 +3673,170 @@
 msgstr "используется внутренней реализацией в режиме демона"
 
 msgid "minutes to sit idle before exiting"
-msgstr ""
+msgstr "количество минут неактивности перед выходом"
 
 msgid "name of file to write process ID to"
 msgstr "имя файла для записи ID процесса"
 
 msgid "hg inserve [OPTION]..."
-msgstr ""
+msgstr "hg inserve [ПАРАМЕТР]..."
 
 msgid "inotify-client: found dead inotify server socket; removing it\n"
 msgstr ""
+"inotify-client: обнаружен мертвый сокет inotify-сервера; закрываем его\n"
 
 #, python-format
 msgid "inotify-client: could not start inotify server: %s\n"
-msgstr ""
+msgstr "inotify-client: не удается запустить сервер inotify: %s\n"
 
 #, python-format
 msgid "inotify-client: could not talk to new inotify server: %s\n"
 msgstr ""
+"inotify-client: не удается наладить общение с новым сервером inotify: %s\n"
 
 #, python-format
 msgid "inotify-client: failed to contact inotify server: %s\n"
-msgstr ""
+msgstr "inotify-client: не удается соединиться с сервером inotify: %s\n"
 
 msgid "inotify-client: received empty answer from inotify server"
-msgstr ""
+msgstr "inotify-client: получен пустой ответ от сервера inotify"
 
 #, python-format
 msgid "(inotify: received response from incompatible server version %d)\n"
-msgstr ""
+msgstr "(inotify: получен ответ от сервера несовместимой версии %d)\n"
 
 #, python-format
 msgid "(inotify: received '%s' response when expecting '%s')\n"
-msgstr ""
+msgstr "(inotify: получен ответ '%s', ожидался '%s')\n"
 
 msgid "this system does not seem to support inotify"
-msgstr ""
+msgstr "ваша система, похоже, не поддерживает inotify"
 
 #, python-format
 msgid "*** the current per-user limit on the number of inotify watches is %s\n"
 msgstr ""
+"*** текущее предельное количество наблюдений inotify на одного пользователя "
+"- %s\n"
 
 msgid "*** this limit is too low to watch every directory in this repository\n"
 msgstr ""
+"*** этот предел слишком мал чтобы наблюдать за всеми каталогами этого "
+"репозитория\n"
 
 msgid "*** counting directories: "
-msgstr ""
+msgstr "*** подсчет каталогов: "
 
 #, python-format
 msgid "found %d\n"
-msgstr ""
+msgstr "найдено %d\n"
 
 #, python-format
 msgid "*** to raise the limit from %d to %d (run as root):\n"
-msgstr ""
+msgstr "*** чтобы поднять предел с %d до %d (с правами root):)\n"
 
 #, python-format
 msgid "***  echo %d > %s\n"
-msgstr ""
+msgstr "***  echo %d > %s\n"
 
 #, python-format
 msgid "cannot watch %s until inotify watch limit is raised"
-msgstr ""
+msgstr "невозможно отслеживать %s пока не будет повышен предел наблюдений"
 
 #, python-format
 msgid "inotify service not available: %s"
-msgstr ""
+msgstr "служба inotify недоступна: %s"
 
 #, python-format
 msgid "watching %r\n"
-msgstr ""
+msgstr "наблюдаем за %r\n"
 
 #, python-format
 msgid "watching directories under %r\n"
-msgstr ""
+msgstr "наблюдаем за каталогами в %r\n"
 
 #, python-format
 msgid "%s event: created %s\n"
-msgstr ""
+msgstr "%s событие: создан %s\n"
 
 #, python-format
 msgid "%s event: deleted %s\n"
-msgstr ""
+msgstr "%s событие: %s удален\n"
 
 #, python-format
 msgid "%s event: modified %s\n"
-msgstr ""
+msgstr "%s событие: %s изменен\n"
 
 #, python-format
 msgid "filesystem containing %s was unmounted\n"
-msgstr ""
+msgstr "файловая система, содержащая %s, была отмонтирована\n"
 
 #, python-format
 msgid "%s readable: %d bytes\n"
-msgstr ""
+msgstr "%s доступно для чтения: %d байт\n"
 
 #, python-format
 msgid "%s below threshold - unhooking\n"
-msgstr ""
+msgstr "%s достигнут предел - отцепляем хук\n"
 
 #, python-format
 msgid "%s reading %d events\n"
-msgstr ""
+msgstr "%s читает %d событий\n"
 
 #, python-format
 msgid "%s hooking back up with %d bytes readable\n"
-msgstr ""
+msgstr "%s присоединяем хук заново, можно прочитать %d байт\n"
 
 msgid "finished setup\n"
-msgstr ""
+msgstr "установка завершена\n"
 
 #, python-format
 msgid "status: %r %s -> %s\n"
-msgstr ""
+msgstr "состояние: %r %s -> %s\n"
 
 msgid "rescanning due to .hgignore change\n"
-msgstr ""
+msgstr "повторное сканирование из-за изменения .hgignore\n"
 
 msgid "cannot start: socket is already bound"
-msgstr ""
+msgstr "не удается запуститься: сокет уже привязан"
 
 msgid ""
 "cannot start: tried linking .hg/inotify.sock to a temporary socket but .hg/"
 "inotify.sock already exists"
 msgstr ""
+"не удается запуститься: пытались связать .hg/inotify.sock с временным "
+"сокетом,\n"
+"но .hg/inotify.sock уже существует"
 
 #, python-format
 msgid "answering query for %r\n"
-msgstr ""
+msgstr "отвечаем на запрос для %r\n"
 
 #, python-format
 msgid "received query from incompatible client version %d\n"
-msgstr ""
+msgstr "получен запрос от клиента несовместимой версии %d\n"
 
 #, python-format
 msgid "unrecognized query type: %s\n"
-msgstr ""
+msgstr "неизвестный тип запроса: %s\n"
 
 msgid "expand expressions into changelog and summaries"
-msgstr ""
+msgstr "раскрывает выражения в журнале изменений и сводках"
 
 msgid ""
 "This extension allows the use of a special syntax in summaries, which\n"
 "will be automatically expanded into links or any other arbitrary\n"
 "expression, much like InterWiki does."
 msgstr ""
+"Это расширение позволяет использовать в сводках выражения особого вида,\n"
+"которые автоматически раскрываются в ссылки или любое другое произвольное\n"
+"выражение, как это делается в InterWiki."
 
 msgid ""
 "A few example patterns (link to bug tracking, etc.) that may be used\n"
 "in your hgrc::"
 msgstr ""
+"Примеры шабловнов (ссылка на баг-трекер и т.п.), которые могут быть\n"
+"использованы в вашем hgrc::"
 
 msgid ""
 "  [interhg]\n"
@@ -3016,41 +3845,56 @@
 "i\n"
 "  boldify = s!(^|\\s)#(\\d+)\\b! <b>#\\2</b>!\n"
 msgstr ""
+"  [interhg]\n"
+"  issues = s!issue(\\d+)!<a href=\"http://bts/issue\\1\">issue\\1</a>!\n"
+"  bugzilla = s!((?:bug|b=|(?=#?\\d{4,}))(?:\\s*#?)(\\d+))!<a..=\\2\">\\1</a>!"
+"i\n"
+"  boldify = s!(^|\\s)#(\\d+)\\b! <b>#\\2</b>!\n"
 
 #, python-format
 msgid "interhg: invalid pattern for %s: %s\n"
-msgstr ""
+msgstr "interhg: неверный шаблон для %s: %s\n"
 
 #, python-format
 msgid "interhg: invalid regexp for %s: %s\n"
-msgstr ""
+msgstr "interhg: неверное регулярное выражение для %s: %s\n"
 
 msgid "expand keywords in tracked files"
-msgstr ""
+msgstr "выполнять подстановку ключевых слов в отслеживаемых файлах"
 
 msgid ""
 "This extension expands RCS/CVS-like or self-customized $Keywords$ in\n"
 "tracked text files selected by your configuration."
 msgstr ""
+"Это расширение выполняет подстановку RCS/CVS-подобных или самостоятельно\n"
+"определенных $КлючевыхСлов$ в выбранных вами отслеживаемых файлах."
 
 msgid ""
 "Keywords are only expanded in local repositories and not stored in the\n"
 "change history. The mechanism can be regarded as a convenience for the\n"
 "current user or for archive distribution."
 msgstr ""
+"Ключевые слова подставляются только в локальных хранилищах и не хранятся\n"
+"в истории изменений. Такой механизм может использоваться для повышения\n"
+"удобства работы текущего пользователя или при архивации дистрибутива."
 
 msgid ""
 "Keywords expand to the changeset data pertaining to the latest change\n"
 "relative to the working directory parent of each file."
 msgstr ""
+"Ключевые слова подставляются согласно данным последнего изменения "
+"относительно\n"
+"родителя каждого файла в рабочем каталоге."
 
 msgid ""
 "Configuration is done in the [keyword], [keywordset] and [keywordmaps]\n"
 "sections of hgrc files."
 msgstr ""
+"Настройки осуществляются в секциях [keyword], [keywordset] и [keywordmaps]\n"
+"файлов конфигурации."
 
 msgid "Example::"
-msgstr ""
+msgstr "Пример::"
 
 msgid ""
 "    [keyword]\n"
@@ -3058,199 +3902,262 @@
 "    **.py =\n"
 "    x*    = ignore"
 msgstr ""
+"    [keyword]\n"
+"    # подставлять ключевые слова во всех файлах на python, кроме     "
+"#совпадающих с шаблоном \"x*\"\n"
+"    **.py =\n"
+"    x*    = ignore"
 
 msgid ""
 "    [keywordset]\n"
 "    # prefer svn- over cvs-like default keywordmaps\n"
 "    svn = True"
 msgstr ""
+"    [keywordset]\n"
+"    # предпочитать svn- а не cvs-подобные подстановки (keywordmaps) по    "
+"#умолчанию\n"
+"    svn = True"
 
 msgid ""
 ".. note::\n"
 "   The more specific you are in your filename patterns the less you\n"
 "   lose speed in huge repositories."
 msgstr ""
+".. note::\n"
+"   Чем более конкретны ваши шаблоны файлов, тем меньше накладные расходы\n"
+"   в больших хранилищах."
 
 msgid ""
 "For [keywordmaps] template mapping and expansion demonstration and\n"
 "control run :hg:`kwdemo`. See :hg:`help templates` for a list of\n"
 "available templates and filters."
 msgstr ""
+"Для примера использования [keywordmaps] для отображения шаблонов\n"
+"и демонстрации подстановок, используйте :hg:`kwdemo`. Список возможных\n"
+"шаблонов и фильтров см. в :hg:`help templates`."
 
 msgid "Three additional date template filters are provided:"
-msgstr ""
+msgstr "Имеются также три дополнительных фильтров шаблонов дат:"
 
 msgid ""
 ":``utcdate``:    \"2006/09/18 15:13:13\"\n"
 ":``svnutcdate``: \"2006-09-18 15:13:13Z\"\n"
 ":``svnisodate``: \"2006-09-18 08:13:13 -700 (Mon, 18 Sep 2006)\""
 msgstr ""
+":``utcdate``:    \"2006/09/18 15:13:13\"\n"
+":``svnutcdate``: \"2006-09-18 15:13:13Z\"\n"
+":``svnisodate``: \"2006-09-18 08:13:13 -700 (Mon, 18 Sep 2006)\""
 
 msgid ""
 "The default template mappings (view with :hg:`kwdemo -d`) can be\n"
 "replaced with customized keywords and templates. Again, run\n"
 ":hg:`kwdemo` to control the results of your configuration changes."
 msgstr ""
+"Отображения (mappings) шаблонов по умолчанию (их можно посмотреть с\n"
+"помощью :hg:`kwdemo -d`) могут быть заменены своими ключевыми словами\n"
+"и шаблонами. Для контроля результатов вашей настройки запустите\n"
+":hg:`kwdemo` еще раз."
 
 msgid ""
 "Before changing/disabling active keywords, you must run :hg:`kwshrink`\n"
 "to avoid storing expanded keywords in the change history."
 msgstr ""
+"Перед изменением/удалением активных ключевых слов, необходимо запустить\n"
+":hg:`kwshrink`, чтобы избежать сохранения подставленных ключевых слов\n"
+"в истории изменений."
 
 msgid ""
 "To force expansion after enabling it, or a configuration change, run\n"
 ":hg:`kwexpand`."
 msgstr ""
+"Для принудительной подстановки после ее включения или изменения настроек,\n"
+"запустите :hg:`kwexpand`."
 
 msgid ""
 "Expansions spanning more than one line and incremental expansions,\n"
 "like CVS' $Log$, are not supported. A keyword template map \"Log =\n"
 "{desc}\" expands to the first line of the changeset description.\n"
 msgstr ""
+"Подстановки, охватывающие более одной строки, и инкрементальные\n"
+"подстановки вроде CVS $Log$ не поддерживаются. Отображение шаблона\n"
+"ключевого слова (keyword template map) вида \"Log = {desc}\"\n"
+"раскроется в первую строку описания набора изменений.\n"
 
 #, python-format
 msgid "overwriting %s expanding keywords\n"
-msgstr ""
+msgstr "перезаписываются %s подставляемых ключевых слов\n"
 
 #, python-format
 msgid "overwriting %s shrinking keywords\n"
-msgstr ""
+msgstr "перезаписываются %s отмененных (shrinking) ключевых слов\n"
 
 msgid "[keyword] patterns cannot match"
-msgstr ""
+msgstr "шаблоны в [keyword] не совпадут ни с чем"
 
 msgid "no [keyword] patterns configured"
-msgstr ""
+msgstr "в секции [keyword] нет настроенных шаблонов"
 
 msgid "show default keyword template maps"
-msgstr ""
+msgstr "показать отображения шаблонов ключевых слов по умолчанию"
 
 msgid "read maps from rcfile"
-msgstr ""
+msgstr "читать отображения из файла"
 
 msgid "hg kwdemo [-d] [-f RCFILE] [TEMPLATEMAP]..."
-msgstr ""
+msgstr "hg kwdemo [-d] [-f ФАЙЛ] [ОТОБРАЖЕНИЕ_ШАБЛОНОВ]..."
 
 msgid "print [keywordmaps] configuration and an expansion example"
-msgstr ""
+msgstr "напечатать настройки в [keywordmaps] и пример подстановки"
 
 msgid ""
 "    Show current, custom, or default keyword template maps and their\n"
 "    expansions."
 msgstr ""
+"    Показывает текущие, настроенные или заданные по умолчанию отображения\n"
+"    шаблонов ключевых слов (keyword template maps) и их подстановку."
 
 msgid ""
 "    Extend the current configuration by specifying maps as arguments\n"
 "    and using -f/--rcfile to source an external hgrc file."
 msgstr ""
+"    Можно дополнить текущие настройки, указав отображения в качестве\n"
+"    аргументов или используя опцию -f/--rcfile, чтобы прочитать\n"
+"    настройки из файла."
 
 msgid "    Use -d/--default to disable current configuration."
-msgstr ""
+msgstr "   Используйте -d/--default чтобы отключить текущие настройки."
 
 msgid ""
 "    See :hg:`help templates` for information on templates and filters.\n"
 "    "
 msgstr ""
+"    О шаблонах и фильтрах см. :hg:`help templates`.\n"
+"    "
 
 #, python-format
 msgid "creating temporary repository at %s\n"
-msgstr ""
+msgstr "создание временного хранилища в %s\n"
 
 msgid ""
 "\n"
 "\tconfiguration using custom keyword template maps\n"
 msgstr ""
+"\n"
+"\tнастройка с использованием заданных отображение шаблонов ключевых слов\n"
 
 msgid "\textending current template maps\n"
-msgstr ""
+msgstr "\tдополнение текущий отображений шаблонов\n"
 
 msgid "\toverriding default svn keywordset\n"
-msgstr ""
+msgstr "\tпереопределение наборов ключевых слов svn по умолчанию\n"
 
 msgid "\toverriding default cvs keywordset\n"
-msgstr ""
+msgstr "\tпереопределение наборов ключевых слов cvs по умолчанию\n"
 
 msgid ""
 "\n"
 "\tconfiguration using default svn keywordset\n"
 msgstr ""
+"\n"
+"\tнастройка с использованием ключевых слов svn по умолчанию\n"
 
 msgid ""
 "\n"
 "\tconfiguration using default cvs keywordset\n"
 msgstr ""
+"\n"
+"\tнастройка с использованием ключевых слов cvs по умолчанию\n"
 
 msgid "\tdisabling current template maps\n"
-msgstr ""
+msgstr "\tотключение текущих отображений шаблонов\n"
 
 msgid ""
 "\n"
 "\tconfiguration using current keyword template maps\n"
 msgstr ""
+"\n"
+"\tнастройка с использованием текущих отображений шаблонов ключевых слов\n"
 
 #, python-format
 msgid ""
 "\n"
 "keywords written to %s:\n"
 msgstr ""
+"\n"
+"ключевые слова записаны в %s:\n"
 
 msgid "hg keyword configuration and expansion example"
-msgstr ""
+msgstr "пример настройки и подстановки ключевых слов"
 
 msgid ""
 "\n"
 "\tkeywords expanded\n"
 msgstr ""
+"\n"
+"\tрезультат подстановки ключевых слов\n"
 
 msgid "hg kwexpand [OPTION]... [FILE]..."
-msgstr ""
+msgstr "hg kwexpand [ПАРАМЕТР]... [ФАЙЛ]..."
 
 msgid "expand keywords in the working directory"
-msgstr ""
+msgstr "выполнить подстановку ключевых слов в рабочем каталоге"
 
 msgid "    Run after (re)enabling keyword expansion."
 msgstr ""
+"    Запускайте после включения и повторного включения\n"
+"    подстановки ключевых слов."
 
 msgid ""
 "    kwexpand refuses to run if given files contain local changes.\n"
 "    "
 msgstr ""
+"    kwexpand откажется выполняться, если указанные файлы содержат локальные\n"
+"    изменения.\n"
+"    "
 
 msgid "show keyword status flags of all files"
-msgstr ""
+msgstr "показать флаги состояний ключевых слов для всех файлов"
 
 msgid "show files excluded from expansion"
-msgstr ""
+msgstr "показать файлы, в которых не производится подстановка"
 
 msgid "only show unknown (not tracked) files"
-msgstr ""
+msgstr "показать только неизвестные (неотслеживаемые) файлы"
 
 msgid "hg kwfiles [OPTION]... [FILE]..."
-msgstr ""
+msgstr "hg kwfiles [ПАРАМЕТР]... [ФАЙЛ]..."
 
 msgid "show files configured for keyword expansion"
-msgstr ""
+msgstr "показать файлы, настроенные для подстановки ключевых слов"
 
 msgid ""
 "    List which files in the working directory are matched by the\n"
 "    [keyword] configuration patterns."
 msgstr ""
+"    Показывает файлы в рабочем каталоге, имена которых совпадают\n"
+"    с шаблонами, заданными в секции [keyword] конфига."
 
 msgid ""
 "    Useful to prevent inadvertent keyword expansion and to speed up\n"
 "    execution by including only files that are actual candidates for\n"
 "    expansion."
 msgstr ""
+"    Полезно для предотвращения нежелательных подстановок ключевых слов\n"
+"    и для ускорения выполнения за счет обработки только нужных файлов."
 
 msgid ""
 "    See :hg:`help keyword` on how to construct patterns both for\n"
 "    inclusion and exclusion of files."
 msgstr ""
+"    О том, как задавать шаблоны имен файлов, в которых выполняется\n"
+"    или не выполняется подстановка, см. :hg:`help keyword`."
 
 msgid ""
 "    With -A/--all and -v/--verbose the codes used to show the status\n"
 "    of files are::"
 msgstr ""
+"    С опциями -A/--all и -v/--verbose используются следующие коды\n"
+"    состояний файлов::"
 
 msgid ""
 "      K = keyword expansion candidate\n"
@@ -3259,64 +4166,593 @@
 "      i = ignored (not tracked)\n"
 "    "
 msgstr ""
+"      K = кандидат на подстановку ключевых слов\n"
+"      k = кандидат на подстановку ключевых слов (не отслеживается)\n"
+"      I = игнорируется\n"
+"      i = игнорируется (не отслеживается)\n"
+"    "
 
 msgid "hg kwshrink [OPTION]... [FILE]..."
-msgstr ""
+msgstr "hg kwshrink [ПАРАМЕТР]... [ФАЙЛ]..."
 
 msgid "revert expanded keywords in the working directory"
-msgstr ""
+msgstr "отменить подстановки ключевых слов в рабочем каталоге"
 
 msgid "    Must be run before changing/disabling active keywords."
 msgstr ""
+"    Следует запускать перед изменением/отключением активных\n"
+"    ключевых слов."
 
 msgid ""
 "    kwshrink refuses to run if given files contain local changes.\n"
 "    "
 msgstr ""
+"    kwshrink откажется запускаться, если заданные файлы содержат\n"
+"    незафиксированные локальные изменения."
+
+msgid "track large binary files"
+msgstr "отслеживает большие бинарные файлы"
+
+msgid ""
+"Large binary files tend to be not very compressible, not very\n"
+"diffable, and not at all mergeable. Such files are not handled\n"
+"efficiently by Mercurial's storage format (revlog), which is based on\n"
+"compressed binary deltas; storing large binary files as regular\n"
+"Mercurial files wastes bandwidth and disk space and increases\n"
+"Mercurial's memory usage. The largefiles extension addresses these\n"
+"problems by adding a centralized client-server layer on top of\n"
+"Mercurial: largefiles live in a *central store* out on the network\n"
+"somewhere, and you only fetch the revisions that you need when you\n"
+"need them."
+msgstr ""
+"Большие бинарные файлы обычно плохо сжимаются, их сложно сравнивать,\n"
+"и еще сложнее сливать. Такие файлы не могут эффективно храниться\n"
+"в формате Mercurial (revlog), который основан на сжатых двоичных\n"
+"различиях (дельтах); хранение больших файлов в Mercurial обычным\n"
+"способом перегружает сеть, использует много места и увеличивает\n"
+"потребление памяти. Расширение largefiles решает эти проблемы,\n"
+"добавляя централизованный клиент-серверный слой поверх Mercurial:\n"
+"большие файлы помещаются на *центральный склад* где-нибудь\n"
+"в сети, а вы извлекаете нужные ревизии по мере необходимости."
+
+msgid ""
+"largefiles works by maintaining a \"standin file\" in .hglf/ for each\n"
+"largefile. The standins are small (41 bytes: an SHA-1 hash plus\n"
+"newline) and are tracked by Mercurial. Largefile revisions are\n"
+"identified by the SHA-1 hash of their contents, which is written to\n"
+"the standin. largefiles uses that revision ID to get/put largefile\n"
+"revisions from/to the central store. This saves both disk space and\n"
+"bandwidth, since you don't need to retrieve all historical revisions\n"
+"of large files when you clone or pull."
+msgstr ""
+"largefiles создает \"замещающий файл\" (\"standin file\") в .hglf\n"
+"для каждого большого файла. Эти файлы малы (41 байт: хэш SHA-1 и\n"
+"перевод строки) и отслеживаются Mercurial. Ревизии больших файлов\n"
+"определяются по хэшу SHA-1 их содержимого, который пишется в\n"
+"стандартный ввод. largefiles использует этот идентификатор ревизии\n"
+"чтобы получить/передать ревизию большого файла из/на центральный\n"
+"склад. Это позволяет экономить место на диске и трафик, поскольку\n"
+"вам не надо передавать всю историю ревизий больших файлов при\n"
+"клонировании или операции pull."
+
+msgid ""
+"To start a new repository or add new large binary files, just add\n"
+"--large to your :hg:`add` command. For example::"
+msgstr ""
+"Чтобы создать новое хранилище или добавить новый большой бинарный\n"
+"файл, просто добавьте --large к команде :hg:`add`. Например::"
+
+msgid ""
+"  $ dd if=/dev/urandom of=randomdata count=2000\n"
+"  $ hg add --large randomdata\n"
+"  $ hg commit -m 'add randomdata as a largefile'"
+msgstr ""
+"  $ dd if=/dev/urandom of=randomdata count=2000\n"
+"  $ hg add --large randomdata\n"
+"  $ hg commit -m  'randomdata добавлен как большой файл'"
+
+msgid ""
+"When you push a changeset that adds/modifies largefiles to a remote\n"
+"repository, its largefile revisions will be uploaded along with it.\n"
+"Note that the remote Mercurial must also have the largefiles extension\n"
+"enabled for this to work."
+msgstr ""
+"Когда вы передаете набор изменений, который добавляет или изменяет\n"
+"большой файл с помощью команды push, его largefile-ревизия будет\n"
+"также передана. Обратите внимание, что на отдалённой машине расширение\n"
+"largefiles также должно быть включено."
+
+msgid ""
+"When you pull a changeset that affects largefiles from a remote\n"
+"repository, Mercurial behaves as normal. However, when you update to\n"
+"such a revision, any largefiles needed by that revision are downloaded\n"
+"and cached (if they have never been downloaded before). This means\n"
+"that network access may be required to update to changesets you have\n"
+"not previously updated to."
+msgstr ""
+"Когда вы затягиваете набор изменений, который затрагивает большие\n"
+"файлы, из отдалённого хранилища, Mercurial ведет себя как обычно.\n"
+"Однако, когда вы обновляетесь на такую ревизию, все большие файлы,\n"
+"нужные для этой ревизии, загружаются и кэшируются (если они не были\n"
+"загружены ранее). Это означает, что вам может понадобится доступ к сети,\n"
+"чтобы обновится на ревизию, на которую вы до этого ни разу не обновлялись."
+
+msgid ""
+"If you already have large files tracked by Mercurial without the\n"
+"largefiles extension, you will need to convert your repository in\n"
+"order to benefit from largefiles. This is done with the\n"
+":hg:`lfconvert` command::"
+msgstr ""
+"Если у вас уже есть большие файлы, отслеживаемые Mrecurial без\n"
+"расширения largefiles, вам надо будет преобразовать свое хранилище,\n"
+"чтобы извлечь пользу из расширения largefiles. Это делается командой\n"
+":hg:`lfconvert`::"
+
+msgid "  $ hg lfconvert --size 10 oldrepo newrepo"
+msgstr "  $ hg lfconvert --size 10 старое_хранилище новое_хранилище"
+
+msgid ""
+"In repositories that already have largefiles in them, any new file\n"
+"over 10MB will automatically be added as a largefile. To change this\n"
+"threshold, set ``largefiles.minsize`` in your Mercurial config file\n"
+"to the minimum size in megabytes to track as a largefile, or use the\n"
+"--lfsize option to the add command (also in megabytes)::"
+msgstr ""
+"В хранилищах, уже содержащих большие файлы, каждый файл больше 10 Мб\n"
+"будет добавлен как большой. Чтобы изменить этот порог, используйте\n"
+"параметр ``largefiles.minsize`` в вашем конфиге Mercurial, чтобы\n"
+"задать минимальный размер в мегабайтах, начиная с которого файл считается\n"
+"большим, или используйте параметр команды add --lfsize (также в Мб)::"
+
+msgid ""
+"  [largefiles]\n"
+"  minsize = 2"
+msgstr ""
+"  [largefiles]\n"
+"  minsize = 2"
+
+msgid "  $ hg add --lfsize 2"
+msgstr "  $ hg add --lfsize 2"
+
+msgid ""
+"The ``largefiles.patterns`` config option allows you to specify a list\n"
+"of filename patterns (see :hg:`help patterns`) that should always be\n"
+"tracked as largefiles::"
+msgstr ""
+"Параметр конфига ``largefiles.patterns`` позволяет задать список\n"
+"шаблонов имен файлов (см. :hg:`help patterns`), которые должны всегда\n"
+"отслеживаться как большие::"
+
+msgid ""
+"  [largefiles]\n"
+"  patterns =\n"
+"    *.jpg\n"
+"    re:.*\\.(png|bmp)$\n"
+"    library.zip\n"
+"    content/audio/*"
+msgstr ""
+"  [largefiles]\n"
+"  patterns =\n"
+"    *.jpg\n"
+"    re:.*\\.(png|bmp)$\n"
+"    library.zip\n"
+"    content/audio/*"
+
+msgid ""
+"Files that match one of these patterns will be added as largefiles\n"
+"regardless of their size.\n"
+msgstr ""
+"Файлы, подходящие под любой из этих шаблонов, будут добавлены как\n"
+"большие вне зависимости от их размера.\n"
+
+msgid "convert a normal repository to a largefiles repository"
+msgstr "преобразовать обычное хранилище в хранилище largefiles"
+
+msgid ""
+"    Convert repository SOURCE to a new repository DEST, identical to\n"
+"    SOURCE except that certain files will be converted as largefiles:\n"
+"    specifically, any file that matches any PATTERN *or* whose size is\n"
+"    above the minimum size threshold is converted as a largefile. The\n"
+"    size used to determine whether or not to track a file as a\n"
+"    largefile is the size of the first version of the file. The\n"
+"    minimum size can be specified either with --size or in\n"
+"    configuration as ``largefiles.size``."
+msgstr ""
+"    Преобразует хранилище ИСТОЧНИК в новое хранилище НАЗН,\n"
+"    идентичное ИСТОЧНИКУ, за исключением того, что некоторые файлы\n"
+"    будут преобразованы в большие, а именно те, имена которых\n"
+"    совпадают с ШАБЛОНОМ *или* чей размер превышает заданный порог.\n"
+"    Для определения, является ли данный файл большим, используется\n"
+"    размер его первой версии. Минимальный размер может быть задан с\n"
+"    помощью аргумента командной строки --size или в конфиге с помощью\n"
+"    ``largefiles.size``."
+
+msgid ""
+"    After running this command you will need to make sure that\n"
+"    largefiles is enabled anywhere you intend to push the new\n"
+"    repository."
+msgstr ""
+"    После запуска этой команды, вам следует убедиться, что расширение\n"
+"    largefiles включено на всех машинах, с которыми вы собираетесь\n"
+"    обмениваться изменениями."
+
+msgid ""
+"    Use --to-normal to convert largefiles back to normal files; after\n"
+"    this, the DEST repository can be used without largefiles at all."
+msgstr ""
+"    Используйте --to-normal чтобы преобразовать большие файлы\n"
+"    обратно в нормальные; после этого, хранилище НАЗН может\n"
+"    быть использовано и без largefiles."
+
+msgid "getting largefiles"
+msgstr "получение большие файлы"
+
+#, python-format
+msgid "getting %s:%s\n"
+msgstr "получение %s:%s\n"
+
+#, python-format
+msgid "%s: data corruption (expected %s, got %s)\n"
+msgstr "%s: данные повреждены (ожидается %s, получено %s)\n"
+
+#, python-format
+msgid "searching %d changesets for largefiles\n"
+msgstr "поиск %d изменений для больших файлов\n"
+
+#, python-format
+msgid "verified contents of %d revisions of %d largefiles\n"
+msgstr "проверено содержимое %d ревизий %d файлов\n"
+
+#, python-format
+msgid "verified existence of %d revisions of %d largefiles\n"
+msgstr "проверено существование %d ревизий %d файлов\n"
+
+#, python-format
+msgid "unsupported URL scheme %r"
+msgstr "неподдерживаемая схема URL %r"
+
+#, python-format
+msgid "%s does not appear to be a largefile store"
+msgstr "%s не является складом больших файлов"
+
+#, python-format
+msgid "%s is not a local Mercurial repo"
+msgstr "%s - не локальное хранилище Mercurial"
+
+#, python-format
+msgid "initializing destination %s\n"
+msgstr "инициализация хранилища назначения %s\n"
+
+msgid "converting revisions"
+msgstr "преобразование ревизий"
+
+#, python-format
+msgid "renamed/copied largefile %s becomes symlink"
+msgstr ""
+"переименованный/скопированный большой файл %s становится символической "
+"ссылкой"
+
+#, python-format
+msgid "largefile %s becomes symlink"
+msgstr "большой файл %s становится символической ссылкой"
+
+msgid "uploading largefiles"
+msgstr "передача больших файлов"
+
+#, python-format
+msgid "largefile %s missing from store (needs to be uploaded)"
+msgstr "большой файл %s отсутствует на складе (необходимо его загрузить)"
+
+msgid "getting changed largefiles\n"
+msgstr "получение измененных больших файлов\n"
+
+#, python-format
+msgid "%d largefiles updated, %d removed\n"
+msgstr "%d больших файлов загружено, %d удалено\n"
+
+msgid "minimum size (MB) for files to be converted as largefiles"
+msgstr ""
+"минимальный размер (Мб), начиная с которого файлы преобразуются в большие"
+
+msgid "convert from a largefiles repo to a normal repo"
+msgstr "преобразовать из хранилища largefiles в обычное хранилище"
+
+msgid "hg lfconvert SOURCE DEST [FILE ...]"
+msgstr "hg lfconvert ИСТОЧНИК НАЗН [ФАЙЛ]"
+
+#, python-format
+msgid "largefiles: size must be number (not %s)\n"
+msgstr "largefiles: размер должен быть числом (не %s)\n"
+
+msgid "minimum size for largefiles must be specified"
+msgstr "необходимо указать минимальный размер больших файлов"
+
+#, python-format
+msgid "unknown operating system: %s\n"
+msgstr "неизвестная операционная система: %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"
+
+#, python-format
+msgid "bad hash in '%s' (only %d bytes long)"
+msgstr "неверный хэш в '%s' (длина всего %d байт)"
+
+msgid "Can't get file locally"
+msgstr "Невозможно получить файл локально"
+
+#, python-format
+msgid ""
+"changeset %s: %s missing\n"
+"  (looked for hash %s)\n"
+msgstr ""
+"набор изменений %s: %s отсутствует\n"
+"  (пытался найти хэш %s)\n"
+
+#, python-format
+msgid ""
+"changeset %s: %s: contents differ\n"
+"  (%s:\n"
+"  expected hash %s,\n"
+"  but got %s)\n"
+msgstr ""
+"набор изменений %s: %s: содержимое различно\n"
+"  (%s:\n"
+"  ожидаемый хэш %s,\n"
+"  полученный %s)\n"
+
+#, python-format
+msgid "%s already a largefile\n"
+msgstr "файл %s уже считается большим файлом\n"
+
+#, python-format
+msgid "adding %s as a largefile\n"
+msgstr "добавление %s как большого файла\n"
+
+msgid "no files specified"
+msgstr "не задано ни одного файла"
+
+#, python-format
+msgid "not removing %s: %s (use -f to force removal)\n"
+msgstr "%s не удален: %s(-f - удалить принудительно)\n"
+
+msgid "file still exists"
+msgstr "файл уже существует"
+
+msgid "file is modified"
+msgstr "файл изменен"
+
+msgid "file has been marked for add"
+msgstr "файл был помечен для добавления"
+
+#, python-format
+msgid "removing %s\n"
+msgstr "удаляется %s\n"
+
+msgid "uncommitted local changes"
+msgstr "незафиксированные локальные изменения"
+
+#, fuzzy
+msgid "&Largefile"
+msgstr "добавить как большой файл"
+
+# INPUT
+msgid "&Normal file"
+msgstr ""
+
+# INPUT
+#, python-format
+msgid ""
+"%s has been turned into a largefile\n"
+"use (l)argefile or keep as (n)ormal file?"
+msgstr ""
+
+# INPUT
+#, python-format
+msgid ""
+"%s has been turned into a normal file\n"
+"keep as (l)argefile or use (n)ormal file?"
+msgstr ""
+
+#, python-format
+msgid "merging %s and %s to %s\n"
+msgstr "слияние %s и %s в %s\n"
+
+#, python-format
+msgid "merging %s\n"
+msgstr "слияние %s\n"
+
+#, python-format
+msgid ""
+"largefile %s has a merge conflict\n"
+"keep (l)ocal or take (o)ther?"
+msgstr ""
+"конфликт слияние большого файла %s\n"
+"оставить локальный - (l)ocal, или другой - (o)ther)?"
+
+# INPUT
+#, fuzzy
+msgid "&Local"
+msgstr "&Локальные"
+
+# INPUT
+#, fuzzy
+msgid "&Other"
+msgstr "&Другие"
+
+msgid "destination largefile already exists"
+msgstr "большой файл назначения уже существует"
+
+msgid "no files to copy"
+msgstr "нет файлов для копирования"
+
+#, python-format
+msgid "unknown archive type '%s'"
+msgstr "неизвестный тип архива '%s'"
+
+msgid "cannot give prefix when archiving to files"
+msgstr "нельзя задавать префикс при архивировании в файлы"
+
+#, python-format
+msgid "not removing %s: file is already untracked\n"
+msgstr "%s не удален, он и так не отслеживается\n"
+
+msgid "largefiles: No remote repo\n"
+msgstr "largefiles: Нет отдалённого хранилища\n"
+
+msgid "largefiles to upload:\n"
+msgstr "больших файлов для отправки:\n"
+
+#, python-format
+msgid "largefiles: %d to upload\n"
+msgstr "largefiles: %d для загрузки\n"
+
+msgid "addremove cannot be run on a repo with largefiles"
+msgstr "нельзя запускать addremove в хранилище с большими файлами (largefiles)"
+
+#, python-format
+msgid "largefiles: failed to put %s (%s) into store: %s"
+msgstr "largefiles: не удалось поместить %s (%s) на склад: %s"
+
+#, python-format
+msgid "requested largefile %s not present in cache"
+msgstr "требуемый большой файл %s отсутствует в кэше"
+
+msgid "putlfile failed:"
+msgstr "не удалось выполнить putlfile:"
+
+msgid "putlfile failed (unexpected response):"
+msgstr "не удалось выполнить putlfile (непредвиденный ответ):"
+
+msgid "unexpected response:"
+msgstr "непредвиденный ответ:"
+
+#, python-format
+msgid "remotestore: could not put %s to remote store %s"
+msgstr "remotestore: не могу поместить %s на отдаленный склад %s"
+
+#, python-format
+msgid "remotestore: put %s to remote store %s"
+msgstr "remotestore: %s передается на отдаленный склад %s"
+
+#, python-format
+msgid "remotestore: could not open file %s: %s"
+msgstr "remotestore: не могу открыть файл %s: %s"
+
+#, python-format
+msgid "remotestore: largefile %s is invalid"
+msgstr "remotestore: большой файл %s поврежден (invalid)"
+
+#, python-format
+msgid "remotestore: largefile %s is missing"
+msgstr "remotestore: большой файл %s отсутствует"
+
+#, python-format
+msgid "changeset %s: %s: contents differ\n"
+msgstr "Набор изменений %s: %s: содержимое различно\n"
+
+#, python-format
+msgid "changeset %s: %s missing\n"
+msgstr "Набор изменений %s: %s отсутствует\n"
+
+#, python-format
+msgid ""
+"largefiles: repo method %r appears to have already been wrapped by another "
+"extension: largefiles may behave incorrectly\n"
+msgstr ""
+"largefiles: метод %r похоже уже обрабатывается другим расширением: "
+"largefiles может работать некорректно.\n"
+
+#, python-format
+msgid "file \"%s\" is a largefile standin"
+msgstr "файл \"%s\" подменяет большой файл"
+
+msgid "add as largefile"
+msgstr "добавить как большой файл"
+
+msgid ""
+"add all files above this size (in megabytes) as largefiles (default: 10)"
+msgstr ""
+"добавить все файлы больше этого размера (в Мб) как большие (по умолчанию: 10)"
+
+msgid "verify largefiles"
+msgstr "проверить большие файлы"
+
+msgid "verify all revisions of largefiles not just current"
+msgstr "проверить все ревизии больших файлов, а не только текущую"
+
+msgid "verify largefile contents not just existence"
+msgstr "проверить содержимое большого файла, а не только его наличие"
+
+msgid "display outgoing largefiles"
+msgstr "показать исходящие большие файлы"
 
 msgid "manage a stack of patches"
-msgstr ""
+msgstr "управление стеком патчей"
 
 msgid ""
 "This extension lets you work with a stack of patches in a Mercurial\n"
 "repository. It manages two stacks of patches - all known patches, and\n"
 "applied patches (subset of known patches)."
 msgstr ""
+"Это расширение позволяет вам работать со стеком патчей в хранилище\n"
+"Mercurial. Оно управляет двумя стеками патчей: всеми известными патчами\n"
+"и наложенными патчами (подмножество известных)."
 
 msgid ""
 "Known patches are represented as patch files in the .hg/patches\n"
 "directory. Applied patches are both patch files and changesets."
 msgstr ""
+"Известные патчи представлены в виде файлов в каталоге .hg/patches.\n"
+"Наложенные патчи одновременно представлены в файлах и наборах изменений."
 
 msgid "Common tasks (use :hg:`help command` for more details)::"
-msgstr ""
+msgstr "Типичные задачи ( см. также :hg:`help команда`)::"
 
 msgid ""
 "  create new patch                          qnew\n"
 "  import existing patch                     qimport"
 msgstr ""
+"  создать новый патч                             qnew\n"
+"  импортировать существующий патч                qimport"
 
 msgid ""
 "  print patch series                        qseries\n"
 "  print applied patches                     qapplied"
 msgstr ""
+"  напечатать последовательность патчей           qseries\n"
+"  напечатать наложенные патчи                    qapplied"
 
 msgid ""
 "  add known patch to applied stack          qpush\n"
 "  remove patch from applied stack           qpop\n"
 "  refresh contents of top applied patch     qrefresh"
 msgstr ""
+"  добавить известный патч в стек наложенных      qpush\n"
+"  удалить патч из стека наложенных               qpop\n"
+"  обновить содержимое верхнего наложенного патча qrefresh"
 
 msgid ""
 "By default, mq will automatically use git patches when required to\n"
 "avoid losing file mode changes, copy records, binary files or empty\n"
 "files creations or deletions. This behaviour can be configured with::"
 msgstr ""
+"По умолчанию mq автоматически использует патчи в формате git, когда\n"
+"это необходимо чтобы предотвратить потерю изменений прав доступа к\n"
+"файлам, записей о копировании, создание или удаление пустых или\n"
+"бинарных файлов. Это поведение может быть настроено с помощью::"
 
 msgid ""
 "  [mq]\n"
 "  git = auto/keep/yes/no"
 msgstr ""
+"  [mq]\n"
+"  git = auto/keep/yes/no"
 
 msgid ""
 "If set to 'keep', mq will obey the [diff] section configuration while\n"
@@ -3324,497 +4760,530 @@
 "'no', mq will override the [diff] section and always generate git or\n"
 "regular patches, possibly losing data in the second case."
 msgstr ""
+"Если установлено в 'keep', mq будет использовать настройки из секции\n"
+"[diff], сохраняя существующие патчи в формате git до выполнение qrefresh.\n"
+"Если установлено в 'yes' или 'no', mq переопределит настройки секции [diff]\n"
+"и будет всегда создавать патчи соответственно в формате git или в обычном\n"
+"формате, с возможной потерей данных в последнем случае."
 
 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"
+"можете создавать другие независимые очереди патчей с помощью команды\n"
+":hg:`qqueue`.\n"
 
 msgid "print first line of patch header"
-msgstr ""
+msgstr "печатать первую строку заголовка патча"
 
 #, python-format
 msgid "malformated mq status line: %s\n"
-msgstr ""
+msgstr "неверный формат строки состояния mq: %s\n"
 
 #, python-format
 msgid "mq.git option can be auto/keep/yes/no got %s"
-msgstr ""
+msgstr "параметр mq.git может иметь значения auto/keep/yes/no, задано %s"
 
 #, python-format
 msgid "%s appears more than once in %s"
-msgstr ""
+msgstr "%s встречается более одного раза в %s"
 
 msgid "guard cannot be an empty string"
-msgstr ""
+msgstr "страж (guard) не может быть пустой строкой"
 
 #, python-format
 msgid "guard %r starts with invalid character: %r"
-msgstr ""
+msgstr "страж (guard) %r начинается с недопустимого символа: %r"
 
 #, python-format
 msgid "invalid character in guard %r: %r"
-msgstr ""
+msgstr "недопустимый символ в страже (guard) %r: %r"
 
 #, python-format
 msgid "guard %r too short"
-msgstr ""
+msgstr "страж (guard) %r слишком короткий"
 
 #, python-format
 msgid "guard %r starts with invalid char"
-msgstr ""
+msgstr "страж (guard) %r начинается с недопустимого символа"
 
 #, python-format
 msgid "allowing %s - no guards in effect\n"
-msgstr ""
+msgstr "%s разрешен - страж (guard) не задействуется\n"
 
 #, python-format
 msgid "allowing %s - no matching negative guards\n"
-msgstr ""
+msgstr "%s разрешен - нет подходящих запрещающих стражей (guards)\n"
 
 #, python-format
 msgid "allowing %s - guarded by %s\n"
-msgstr ""
+msgstr "%s разрешен - защищен %s\n"
 
 #, python-format
 msgid "skipping %s - guarded by %s\n"
-msgstr ""
+msgstr "%s пропускается - защищен %s\n"
 
 #, python-format
 msgid "skipping %s - no matching guards\n"
-msgstr ""
+msgstr "%s пропускается - нет подходящих стражей (guards)\n"
 
 #, python-format
 msgid "error removing undo: %s\n"
-msgstr ""
+msgstr "ошибка при удалении страховки (undo): %s\n"
 
 #, python-format
 msgid "apply failed for patch %s"
-msgstr ""
-
-#, python-format
+msgstr "не удалось наложить патч %s"
+
+#, fuzzy, python-format
 msgid "patch didn't work out, merging %s\n"
-msgstr ""
+msgstr "патч не сработал, сливаем %s\n"
 
 #, python-format
 msgid "update returned %d"
-msgstr ""
+msgstr "update вернул %d"
 
 msgid "repo commit failed"
-msgstr ""
+msgstr "ошибка при фиксации хранилища"
 
 #, python-format
 msgid "unable to read %s"
-msgstr ""
+msgstr "не удается прочитать %s"
 
 #, python-format
 msgid "patch %s does not exist\n"
-msgstr ""
+msgstr "патч %s не существует\n"
 
 #, python-format
 msgid "patch %s is not applied\n"
-msgstr ""
+msgstr "патч %s не наложен\n"
 
 msgid "patch failed, unable to continue (try -v)\n"
-msgstr ""
+msgstr "не удалось наложить патч, продолжение невозможно (попробуйте -v)\n"
 
 #, python-format
 msgid "applying %s\n"
-msgstr "применяю %s\n"
+msgstr "накладывается %s\n"
 
 #, python-format
 msgid "unable to read %s\n"
-msgstr ""
+msgstr "невозможно прочитать %s\n"
 
 #, python-format
 msgid "patch %s is empty\n"
-msgstr ""
+msgstr "патч %s пуст\n"
 
 msgid "repository commit failed"
-msgstr ""
+msgstr "ошибка при фиксации хранилища"
 
 msgid "patch failed, rejects left in working dir\n"
 msgstr ""
+"не удалось наложить патч, отклоненные файлы сохранены в рабочем каталоге\n"
 
 msgid "fuzz found when applying patch, stopping\n"
-msgstr ""
+msgstr "обнаружено несоответствие контекстов (fuzz), останов\n"
 
 #, python-format
 msgid "revision %s refers to unknown patches: %s\n"
-msgstr ""
+msgstr "ревизия %s ссылается на неизвестные патчи: %s\n"
 
 #, python-format
 msgid "unknown patches: %s\n"
-msgstr ""
+msgstr "неизвестные патчи: %s\n"
 
 #, python-format
 msgid "revision %d is not managed"
-msgstr ""
-
-#, python-format
+msgstr "ревизия %d не контролируется"
+
+#, fuzzy, python-format
 msgid "cannot delete revision %d above applied patches"
-msgstr ""
+msgstr "невозможно удалить ревизию %d поверх наложенных патчей"
 
 #, python-format
 msgid "patch %s finalized without changeset message\n"
-msgstr ""
+msgstr "патч %s финализирован без комментария к набору изменений\n"
 
 msgid "qdelete requires at least one revision or patch name"
-msgstr ""
+msgstr "qdelete требует указания как минимум одной ревизии или имени патча"
 
 #, python-format
 msgid "cannot delete applied patch %s"
-msgstr ""
+msgstr "не могу удалить наложенный патч %s"
 
 #, python-format
 msgid "patch %s not in series file"
-msgstr ""
+msgstr "патч %s отсутствует в файле последовательностей"
 
 msgid "no patches applied"
-msgstr ""
+msgstr "нет наложенных патчей"
 
 msgid "working directory revision is not qtip"
-msgstr ""
+msgstr "ревизия рабочего каталога не оконечная ревизия mq (qtip)"
 
 #, python-format
 msgid "uncommitted changes in subrepository %s"
-msgstr ""
+msgstr "незафиксированные изменения в подхранилище %s"
 
 msgid "local changes found, refresh first"
-msgstr ""
+msgstr "найдены локальные изменения, необходимо сначала обновиться"
 
 msgid "local changes found"
-msgstr ""
+msgstr "найдены локальные изменения"
 
 #, python-format
 msgid "\"%s\" cannot be used as the name of a patch"
-msgstr ""
+msgstr "\"%s\" не может быть использовано в качестве имени патча"
 
 #, python-format
 msgid "patch name cannot begin with \"%s\""
-msgstr ""
+msgstr "имя патча не может начинаться с \"%s\""
 
 #, python-format
 msgid "\"%s\" cannot be used in the name of a patch"
-msgstr ""
+msgstr "\"%s\" не может использоваться в имени патча"
 
 #, python-format
 msgid "\"%s\" already exists as a directory"
-msgstr ""
+msgstr "\"%s\" уже существует в виде каталога"
 
 #, python-format
 msgid "patch \"%s\" already exists"
-msgstr ""
+msgstr "патч \"%s\" уже существует"
 
 msgid "cannot manage merge changesets"
-msgstr ""
+msgstr "не могу работать с ревизией слияния"
 
 #, python-format
 msgid "cannot write patch \"%s\": %s"
-msgstr ""
+msgstr "невозможно записать патч \"%s\": %s"
 
 #, python-format
 msgid "error unlinking %s\n"
-msgstr ""
+msgstr "ошибка при удалении (unlinking) %s\n"
 
 #, python-format
 msgid "patch name \"%s\" is ambiguous:\n"
-msgstr ""
+msgstr "имя патча \"%s\" неоднозначно:\n"
 
 #, python-format
 msgid "patch %s not in series"
-msgstr ""
+msgstr "патч %s не в последовательности (series)"
 
 msgid "(working directory not at a head)\n"
-msgstr ""
+msgstr "(ревизия рабочего каталога не является головной)\n"
 
 msgid "no patches in series\n"
-msgstr ""
+msgstr "нет патчей в последовательности\n"
 
 #, python-format
 msgid "qpush: %s is already at the top\n"
-msgstr ""
+msgstr "qpush: %s уже наверху\n"
 
 #, python-format
 msgid "cannot push to a previous patch: %s"
-msgstr ""
+msgstr "не могу протолкнуть в предыдущий патч: %s"
 
 #, python-format
 msgid "guarded by %s"
-msgstr ""
+msgstr "защищен %s"
 
 msgid "no matching guards"
-msgstr ""
+msgstr "нет подходящих стражей (guards)"
 
 #, python-format
 msgid "cannot push '%s' - %s\n"
-msgstr ""
+msgstr "не могу протолкнуть '%s' - %s\n"
 
 msgid "all patches are currently applied\n"
-msgstr ""
+msgstr "все патчи в настоящее время наложены\n"
 
 msgid "patch series already fully applied\n"
-msgstr ""
+msgstr "последовательность патчей уже полностью наложена\n"
 
 msgid "cannot use --exact and --move together"
-msgstr ""
+msgstr "нельзя использовать --exact и --move одновременно"
 
 msgid "cannot push --exact with applied patches"
-msgstr ""
+msgstr "нельзя использовать push --exact с наложенными патчами"
 
 #, python-format
 msgid "%s does not have a parent recorded"
-msgstr ""
+msgstr "%s не имеет записанного родителя"
 
 msgid "please specify the patch to move"
-msgstr ""
+msgstr "пожалуйста укажите патч для перемещения"
 
 msgid "cleaning up working directory..."
-msgstr ""
+msgstr "очистка рабочего каталога..."
 
 #, python-format
 msgid "errors during apply, please fix and refresh %s\n"
-msgstr ""
+msgstr "ошибка при наложении, пожалуйста исправьте и обновите %s\n"
 
 #, python-format
 msgid "now at: %s\n"
-msgstr ""
+msgstr "теперь на: %s\n"
 
 #, python-format
 msgid "patch %s is not applied"
-msgstr ""
+msgstr "патч %s не наложен"
 
 msgid "no patches applied\n"
-msgstr ""
+msgstr "нет наложенных патчей\n"
 
 #, python-format
 msgid "qpop: %s is already at the top\n"
-msgstr ""
+msgstr "qpop: %s уже наверху\n"
 
 msgid "qpop: forcing dirstate update\n"
-msgstr ""
+msgstr "qpop: принудительное обновление dirstate\n"
 
 #, python-format
 msgid "trying to pop unknown node %s"
-msgstr ""
+msgstr "пытаемся вытолкнуть (pop) неизвестный узел %s"
 
 msgid "popping would remove a revision not managed by this patch queue"
-msgstr ""
+msgstr "выталкивание удалит ревизию, не контролируемую этой очередью патчей"
 
 msgid "deletions found between repo revs"
-msgstr ""
+msgstr "обнаружены удаления между ревизиями хранилища"
 
 #, python-format
 msgid "popping %s\n"
-msgstr ""
+msgstr "выталкивается %s\n"
 
 msgid "patch queue now empty\n"
-msgstr ""
+msgstr "очередь патчей теперь пуста\n"
 
 msgid "cannot refresh a revision with children"
-msgstr ""
+msgstr "не могу обновить ревизию с дочерними ревизиями"
 
 msgid ""
 "refresh interrupted while patch was popped! (revert --all, qpush to "
 "recover)\n"
 msgstr ""
+"обновление прервано в то время как патч был вытолкнут! (используйте\n"
+"revert --all, qpush для восстановления)\n"
 
 msgid "patch queue directory already exists"
-msgstr ""
+msgstr "каталог очереди патчей уже существует"
 
 #, python-format
 msgid "patch %s is not in series file"
-msgstr ""
+msgstr "патч %s не в файле последовательностей (series)"
 
 msgid "No saved patch data found\n"
-msgstr ""
+msgstr "Не найдено сохраненных данных патча\n"
 
 #, python-format
 msgid "restoring status: %s\n"
-msgstr ""
+msgstr "состояние восстановления: %s\n"
 
 msgid "save entry has children, leaving it alone\n"
-msgstr ""
+msgstr "запись сохранения (save entry) имеет потомков, не трогаем ее\n"
 
 #, python-format
 msgid "removing save entry %s\n"
-msgstr ""
+msgstr "удаление записи сохранения (save entry) %s\n"
 
 #, python-format
 msgid "saved queue repository parents: %s %s\n"
-msgstr ""
+msgstr "родители сохраненной очереди в хранилище: %s %s\n"
 
 msgid "updating queue directory\n"
-msgstr ""
+msgstr "обновление каталога очереди\n"
 
 msgid "Unable to load queue repository\n"
-msgstr ""
+msgstr "Невозможно загрузить хранилище очереди\n"
 
 msgid "save: no patches applied, exiting\n"
-msgstr ""
+msgstr "save: нет наложенных патчей, выход\n"
 
 msgid "status is already saved\n"
-msgstr ""
+msgstr "состояние уже сохранено\n"
 
 msgid "hg patches saved state"
-msgstr ""
+msgstr "статус сохранения патчей"
 
 msgid "repo commit failed\n"
-msgstr ""
+msgstr "не удалось зафиксировать хранилище\n"
 
 #, python-format
 msgid "patch %s is already in the series file"
-msgstr ""
+msgstr "патч %s уже в файле последовательностей (series)"
 
 msgid "option \"-r\" not valid when importing files"
-msgstr ""
+msgstr "опция \"-r\" недопустима при импорте файлов"
 
 msgid "option \"-n\" not valid when importing multiple patches"
-msgstr ""
+msgstr "опция \"-n\" недопустима при импорте нескольких патчей"
 
 #, python-format
 msgid "revision %d is the root of more than one branch"
-msgstr ""
+msgstr "ревизия %d является корнем более чем одной ветки"
 
 #, python-format
 msgid "revision %d is already managed"
-msgstr ""
+msgstr "ревизия %d уже контролируется"
 
 #, python-format
 msgid "revision %d is not the parent of the queue"
-msgstr ""
+msgstr "ревизия %d не является родительской ревизией очереди"
 
 #, python-format
 msgid "revision %d has unmanaged children"
-msgstr ""
+msgstr "ревизия %d имеет неконтролируемые дочерние ревизии"
+
+#, python-format
+msgid "revision %d is not mutable"
+msgstr "ревизия %d неизменяема"
+
+msgid "see \"hg help phases\" for details"
+msgstr "подробнее см. \"hg help phases\""
 
 #, python-format
 msgid "cannot import merge revision %d"
-msgstr ""
+msgstr "невозможно импортировать ревизию слияния %d"
 
 #, python-format
 msgid "revision %d is not the parent of %d"
-msgstr ""
+msgstr "ревизия %d не родительская ревизия %d"
 
 msgid "-e is incompatible with import from -"
-msgstr ""
+msgstr "-e несовместим с импортом из -"
 
 #, python-format
 msgid "patch %s does not exist"
-msgstr ""
+msgstr "патч %s не существует"
 
 #, python-format
 msgid "renaming %s to %s\n"
-msgstr ""
+msgstr "переименовывается %s в %s\n"
 
 msgid "need --name to import a patch from -"
-msgstr ""
+msgstr "необходимо указать --name чтобы импортировать патч из -"
 
 #, python-format
 msgid "unable to read file %s"
-msgstr ""
+msgstr "невозможно прочитать файл %s"
 
 #, python-format
 msgid "adding %s to series file\n"
-msgstr ""
+msgstr "%s добавляется в файл последовательностей (series)\n"
 
 msgid "keep patch file"
-msgstr ""
+msgstr "сохранить файл патча"
 
 msgid "stop managing a revision (DEPRECATED)"
-msgstr ""
+msgstr "перестать контролировать ревизию (УСТАРЕЛО)"
 
 msgid "hg qdelete [-k] [PATCH]..."
-msgstr ""
+msgstr "hg qdelete [-k] [ПАТЧ]..."
 
 msgid "remove patches from queue"
-msgstr ""
+msgstr "удалить патчи из очереди"
 
 msgid ""
 "    The patches must not be applied, and at least one patch is required. "
 "With\n"
 "    -k/--keep, the patch files are preserved in the patch directory."
 msgstr ""
+"    Патчи не должны быть наложенными, и требуется по крайней мере один "
+"патч.\n"
+"    С -k/--keep патчи сохраняются в каталоге патчей."
 
 msgid ""
 "    To stop managing a patch and move it into permanent history,\n"
 "    use the :hg:`qfinish` command."
 msgstr ""
+"    Чтобы прекратить отслеживать патч и переместить его в хранилище,\n"
+"    используйте команду :hg:`qfinish`."
 
 msgid "show only the last patch"
-msgstr ""
+msgstr "показать только последний патч"
 
 msgid "hg qapplied [-1] [-s] [PATCH]"
-msgstr ""
+msgstr "hg qapplied [-1] [-s] [ПАТЧ]"
 
 msgid "print the patches already applied"
-msgstr ""
+msgstr "напечатать уже наложенные патчи"
 
 msgid "    Returns 0 on success."
-msgstr ""
+msgstr "    В случае успеха возвращает 0."
 
 msgid "only one patch applied\n"
-msgstr ""
+msgstr "применен только один патч\n"
 
 msgid "show only the first patch"
-msgstr ""
+msgstr "показать только первый патч"
 
 msgid "hg qunapplied [-1] [-s] [PATCH]"
-msgstr ""
+msgstr "hg qunapplied [-1] [-s] [ПАТЧ]"
 
 msgid "print the patches not yet applied"
-msgstr ""
+msgstr "напечатать еще не наложенные патчи"
 
 msgid "all patches applied\n"
-msgstr ""
+msgstr "все патчи наложены\n"
 
 msgid "import file in patch directory"
-msgstr ""
+msgstr "импортировать файл в каталог патчей"
 
 msgid "NAME"
 msgstr "ИМЯ"
 
 msgid "name of patch file"
-msgstr ""
+msgstr "имя файла патча"
 
 msgid "overwrite existing files"
-msgstr ""
+msgstr "перезаписывать существующие файлы"
 
 msgid "place existing revisions under mq control"
-msgstr ""
+msgstr "поместить существующие ревизии под управление mq"
 
 msgid "use git extended diff format"
 msgstr "использовать расширенный формат git для diff'ов"
 
 msgid "qpush after importing"
-msgstr ""
+msgstr "выполнить qpush после импортирования"
 
 msgid "hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... FILE..."
-msgstr ""
+msgstr "hg qimport [-e] [-n ИМЯ] [-f] [-g] [-P] [-r РЕВ]... ФАЙЛ..."
 
 msgid "import a patch"
-msgstr ""
+msgstr "импортировать патч"
 
 msgid ""
 "    The patch is inserted into the series after the last applied\n"
 "    patch. If no patches have been applied, qimport prepends the patch\n"
 "    to the series."
 msgstr ""
+"    Патч помещается в последовательность после последнего наложенного "
+"патча.\n"
+"    Если наложенных патчей нет, qimport добавляет файл в начало\n"
+"    последовательности."
 
 msgid ""
 "    The patch will have the same name as its source file unless you\n"
 "    give it a new one with -n/--name."
 msgstr ""
+"    Патч будет иметь такое же имя, как и файл, из которого он был создан,\n"
+"    если только вы не укажите новое имя с помощью -n/--name."
 
 msgid ""
 "    You can register an existing patch inside the patch directory with\n"
 "    the -e/--existing flag."
 msgstr ""
+"    Вы можете зарегистрировать патч, уже находящийся в каталоге патчей,\n"
+"    с помощью флага -e/--existing."
 
 msgid ""
 "    With -f/--force, an existing patch of the same name will be\n"
 "    overwritten."
 msgstr ""
+"    Если указан -f/--force, существующий патч с таким же именем будет\n"
+"    перезаписан."
 
 msgid ""
 "    An existing changeset may be placed under mq control with -r/--rev\n"
@@ -3824,32 +5293,45 @@
 "    important for preserving rename/copy information and permission\n"
 "    changes. Use :hg:`qfinish` to remove changesets from mq control."
 msgstr ""
+"    Существующий набор изменений может быть помещен под контроль mq\n"
+"    с помощью -r/--rev (т.е. qimport --rev tip -n patch поместит\n"
+"    оконечную ревизию под контроль mq). С -g/--git патчи, импортированные\n"
+"    с --rev, будут использовать формат git. О том, почему это важно\n"
+"    для сохранения информации о копировании/переименовании и правах "
+"доступа,\n"
+"    см. соответствующий раздел справки о различиях (diffs). Используйте\n"
+"    :hg:`qfinish` чтобы изъять наборы изменений из-под контроля mq."
 
 msgid ""
 "    To import a patch from standard input, pass - as the patch file.\n"
 "    When importing from standard input, a patch name must be specified\n"
 "    using the --name flag."
 msgstr ""
+"    Чтобы импортировать патч из стандартного ввода, передайте - в\n"
+"    качестве имени файла патча. При импорте из стандартного ввода имя\n"
+"    патча должно быть задано с помощью флага --name."
 
 msgid "    To import an existing patch while renaming it::"
-msgstr ""
+msgstr "    Импортировать существующий патч с переименованием::"
 
 msgid "      hg qimport -e existing-patch -n new-name"
-msgstr ""
+msgstr "      hg qimport -e существующий-патч -n новое-имя"
 
 msgid ""
 "    Returns 0 if import succeeded.\n"
 "    "
 msgstr ""
+"    Возвращает 0, если импорт завершен успешно.\n"
+"    "
 
 msgid "create queue repository"
-msgstr ""
+msgstr "создать хранилище очереди"
 
 msgid "hg qinit [-c]"
-msgstr ""
+msgstr "hg qinit [-c]"
 
 msgid "init a new queue repository (DEPRECATED)"
-msgstr ""
+msgstr "инициализирует новое хранилище очереди (УСТАРЕЛО)"
 
 msgid ""
 "    The queue repository is unversioned by default. If\n"
@@ -3858,32 +5340,40 @@
 "    an unversioned patch repository into a versioned one). You can use\n"
 "    qcommit to commit changes to this queue repository."
 msgstr ""
+"    По умолчанию хранилище очереди не помещается под контроль версий.\n"
+"    Если указан -c/--create-repo, qinit создаст отдельный вложенный\n"
+"    хранилище для патчей (можно также запустить qinit -c позже, чтобы\n"
+"    преобразовать неверсионируемое хранилище патчей в версионируемое.\n"
+"    Вы можете использовать qcommit чтобы зафиксировать изменения в этом\n"
+"    хранилище очереди."
 
 msgid ""
 "    This command is deprecated. Without -c, it's implied by other relevant\n"
 "    commands. With -c, use :hg:`init --mq` instead."
 msgstr ""
+"    Эта команда устарела. Без -c она неявно подразумевается другими\n"
+"    командами mq. С -c, используйте вместо нее :hg:`init --mq`."
 
 msgid "use pull protocol to copy metadata"
 msgstr "использовать протокол затягивания для копирования метаданных"
 
 msgid "do not update the new working directories"
-msgstr ""
+msgstr "не обновлять новые рабочие каталоги"
 
 msgid "use uncompressed transfer (fast over LAN)"
 msgstr "не использовать сжатие при передачи (быстрее в локальной сети)"
 
 msgid "REPO"
-msgstr "РЕПОЗИТОРИЙ"
+msgstr "ХРАНИЛИЩЕ"
 
 msgid "location of source patch repository"
-msgstr ""
+msgstr "расположение исходного хранилища патчей"
 
 msgid "hg qclone [OPTION]... SOURCE [DEST]"
-msgstr ""
+msgstr "hg qclone [ПАРАМЕТР]... ИСТОЧНИК [НАЗН]"
 
 msgid "clone main and patch repository at same time"
-msgstr ""
+msgstr "клонировать основное хранилище вместе с хранилищем патчей"
 
 msgid ""
 "    If source is local, destination will have no patches applied. If\n"
@@ -3892,96 +5382,108 @@
 "    applied in destination. If you clone remote repository, be sure\n"
 "    before that it has no patches applied."
 msgstr ""
+"    Если источник локален, хранилище назначения не будет иметь\n"
+"    наложенных патчей. Если источник является отдалённым, эта команда\n"
+"    не может проверить, наложены ли патчи в хранилище-источнике,\n"
+"    и поэтому не может гарантировать, что в хранилище назначения\n"
+"    эти патчи не наложены. Если вы клонируете отдалённое хранилище,\n"
+"    сперва убедитесь, что в нем нет наложенных патчей."
 
 msgid ""
 "    Source patch repository is looked for in <src>/.hg/patches by\n"
 "    default. Use -p <url> to change."
 msgstr ""
+"    В хранилище-источнике патчи ищутся по умолчанию в\n"
+"    <источник>/.hg/patches. Используйте -p <url> чтобы задать другой путь."
 
 msgid ""
 "    The patch directory must be a nested Mercurial repository, as\n"
 "    would be created by :hg:`init --mq`."
 msgstr ""
+"    Каталог патчей должен быть вложенным хранилищем Mercurial,\n"
+"    подобным созданному с помощью :hg:`init --mq`."
 
 msgid ""
 "    Return 0 on success.\n"
 "    "
 msgstr ""
+"    В случае успеха возвращает 0.\n"
+"    "
 
 msgid "versioned patch repository not found (see init --mq)"
-msgstr ""
+msgstr "версионируемое хранилище патчей не найдено (см. init --mq)"
 
 msgid "cloning main repository\n"
-msgstr ""
+msgstr "клонирование основного хранилища\n"
 
 msgid "cloning patch repository\n"
-msgstr ""
+msgstr "клонирование хранилища патчей\n"
 
 msgid "stripping applied patches from destination repository\n"
-msgstr ""
+msgstr "срезаются примененные патчи из хранилища назначения\n"
 
 msgid "updating destination repository\n"
-msgstr ""
+msgstr "обновление хранилища назначения\n"
 
 msgid "hg qcommit [OPTION]... [FILE]..."
-msgstr ""
+msgstr "hg qcommit [ПАРАМЕТР]... [ФАЙЛ]..."
 
 msgid "commit changes in the queue repository (DEPRECATED)"
-msgstr ""
+msgstr "зафиксировать изменения в хранилище очереди (УСТАРЕЛО)"
 
 msgid "    This command is deprecated; use :hg:`commit --mq` instead."
-msgstr ""
+msgstr "    Эта команда устарела; используйте :hg:`commit --mq`."
 
 msgid "print patches not in series"
-msgstr ""
+msgstr "напечатать патчи, не входящие в последовательность"
 
 msgid "hg qseries [-ms]"
-msgstr ""
+msgstr "hg qseries [-ms]"
 
 msgid "print the entire series file"
-msgstr ""
+msgstr "напечатать весь файл последовательностей"
 
 msgid "hg qtop [-s]"
-msgstr ""
+msgstr "hg qtop [-s]"
 
 msgid "print the name of the current patch"
-msgstr ""
+msgstr "напечатать имя текущего патча"
 
 msgid "hg qnext [-s]"
-msgstr ""
+msgstr "hg qnext [-s]"
 
 msgid "print the name of the next patch"
-msgstr ""
+msgstr "напечатать имя следующего патча"
 
 msgid "hg qprev [-s]"
-msgstr ""
+msgstr "hg qprev [-s]"
 
 msgid "print the name of the previous patch"
-msgstr ""
+msgstr "напечатать имя предыдущего патча"
 
 msgid "import uncommitted changes (DEPRECATED)"
-msgstr ""
+msgstr "импортировать незафиксированные изменения (УСТАРЕЛО)"
 
 msgid "add \"From: <current user>\" to patch"
-msgstr ""
+msgstr "добавить \"From: <текущий пользователь>\" к патчу"
 
 msgid "USER"
 msgstr "ПОЛЬЗОВАТЕЛЬ"
 
 msgid "add \"From: <USER>\" to patch"
-msgstr ""
+msgstr "добавить \"From: <ПОЛЬЗОВАТЕЛЬ>\" к патчу"
 
 msgid "add \"Date: <current date>\" to patch"
-msgstr ""
+msgstr "добавить \"Date: <текущая дата>\" к патчу"
 
 msgid "add \"Date: <DATE>\" to patch"
-msgstr ""
+msgstr "добавить \"Date: <ДАТА>\" к патчу"
 
 msgid "hg qnew [-e] [-m TEXT] [-l FILE] PATCH [FILE]..."
-msgstr ""
+msgstr "hg qnew [-e] [-m ТЕКСТ] [-l ФАЙЛ] ПАТЧ [ФАЙЛ]..."
 
 msgid "create a new patch"
-msgstr ""
+msgstr "создать новый патч"
 
 msgid ""
 "    qnew creates a new patch on top of the currently-applied patch (if\n"
@@ -3991,18 +5493,31 @@
 "    only changes to matching files to the new patch, leaving the rest\n"
 "    as uncommitted modifications."
 msgstr ""
+"    qnew создает новый патч поверх текущего наложенного патча (если таковой\n"
+"    имеется). Этот патч будет инициализирован незафиксированными\n"
+"    изменениями в рабочем каталоге. Вы можете также использовать -I/--"
+"include,\n"
+"    -X/--exclude и/или список список файлов после имени патча, чтобы\n"
+"    добавить в патч только изменения в соответствующих файлах, считая\n"
+"    остальные незафиксированными изменениями."
 
 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 и -d/--date, чтобы установить (указанного)\n"
+"    пользователя и дату соответственно. -U/--currentuser и -D/--currentdate\n"
+"    устанавливают пользователя в текущего пользователя и дату в текущую дату."
 
 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 или -l/--logfile задают заголовок патча    "
+"аналогично сообщению фиксации. Если ни один из них не задан,\n"
+"    заголовок остается пустым, а сообщение фиксации будет '[mq]: ПАТЧ'."
 
 msgid ""
 "    Use the -g/--git option to keep the patch in the git extended diff\n"
@@ -4010,43 +5525,55 @@
 "    is important for preserving permission changes and copy/rename\n"
 "    information."
 msgstr ""
+"    Используйте параметр -g/--git, чтобы сохранить патч в расширенном\n"
+"    формате git. О том, почему это важно для сохранения информации о \n"
+"    копировании/переименовании и правах доступа, см. соответствующий раздел\n"
+"    справки о различиях (diffs)."
 
 msgid ""
 "    Returns 0 on successful creation of a new patch.\n"
 "    "
 msgstr ""
+"    При успешном создании патча возвращает 0.\n"
+"    "
 
 msgid "refresh only files already in the patch and specified files"
-msgstr ""
+msgstr "обновить только файлы, уже включенные в патч, и указанные файлы"
 
 msgid "add/update author field in patch with current user"
-msgstr ""
+msgstr "добавить/обновить поле патча author, используя текущего пользователя"
 
 msgid "add/update author field in patch with given user"
-msgstr ""
+msgstr "добавить/обновить поле патча author, используя заданного пользователя"
 
 msgid "add/update date field in patch with current date"
-msgstr ""
+msgstr "добавить/обновить поле патча date, используя текущую дату"
 
 msgid "add/update date field in patch with given date"
-msgstr ""
+msgstr "добавить/обновить поле патча date, используя заданную дату"
 
 msgid "hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FILE] [-s] [FILE]..."
-msgstr ""
+msgstr "hg qrefresh [-I] [-X] [-e] [-m ТЕКСТ] [-l ФАЙЛ] [-s] [ФАЙЛ]..."
 
 msgid "update the current patch"
-msgstr ""
+msgstr "обновить текущий патч"
 
 msgid ""
 "    If any file patterns are provided, the refreshed patch will\n"
 "    contain only the modifications that match those patterns; the\n"
 "    remaining modifications will remain in the working directory."
 msgstr ""
+"    Если заданы только шаблоны файлов, обновленный патч будет\n"
+"    содержать только изменения, совпадающие с этими шаблонами;\n"
+"    остальные изменения останутся в рабочем каталоге."
 
 msgid ""
 "    If -s/--short is specified, files currently included in the patch\n"
 "    will be refreshed just like matched files and remain in the patch."
 msgstr ""
+"    Если указан -s/--short, файлы, входящие на данный момент в патч,\n"
+"    будут обновлены так же, как совпавшие с шаблоном файлы, и будут\n"
+"    оставлены в составе патча."
 
 msgid ""
 "    If -e/--edit is specified, Mercurial will start your configured editor "
@@ -4055,6 +5582,10 @@
 "of\n"
 "    your message in ``.hg/last-message.txt``."
 msgstr ""
+"    Если задан -e/--edit, Mercurial запустит настроенный вами редактор,\n"
+"    чтобы вы могли ввести сообщение фиксации. Если qrefresh завершится\n"
+"    аварийно, вы найдете резервную копию вашего сообщения в\n"
+"    ``.hg/last-message.txt``."
 
 msgid ""
 "    hg add/remove/copy/rename work as usual, though you might want to\n"
@@ -4062,15 +5593,21 @@
 "    and renames. See the diffs help topic for more information on the\n"
 "    git diff format."
 msgstr ""
+"    Команды add/remove/copy/rename работают как обычно, хотя вам, возможно,\n"
+"    захочется использовать патчи в стиле git (-g/--git или [diff] git=1)\n"
+"    для отслеживания копирований и переименований. См. раздел "
+"соответствующий\n"
+"    раздел справки (diffs) для дополнительной информации о формате различий\n"
+"    в стиле git."
 
 msgid "option \"-e\" incompatible with \"-m\" or \"-l\""
-msgstr ""
+msgstr "параметр \"-e\" несовместим с \"-m\" или \"-l\""
 
 msgid "hg qdiff [OPTION]... [FILE]..."
-msgstr ""
+msgstr "hg qdiff [ПАРАМЕТР]... [ФАЙЛ]..."
 
 msgid "diff of the current patch and subsequent modifications"
-msgstr ""
+msgstr "различия между текущим патчем и последующими модификациями"
 
 msgid ""
 "    Shows a diff which includes the current patch as well as any\n"
@@ -4078,6 +5615,9 @@
 "    last refresh (thus showing what the current patch would become\n"
 "    after a qrefresh)."
 msgstr ""
+"    Показывает различия, которые включают текущий патч, а также все\n"
+"    изменения, сделанные в рабочем каталоге после последнего qrefresh\n"
+"    (показывая таким образом, чем станет этот патч после qrefresh)"
 
 msgid ""
 "    Use :hg:`diff` if you only want to see the changes made since the\n"
@@ -4085,18 +5625,22 @@
 "    made by the current patch without including changes made since the\n"
 "    qrefresh."
 msgstr ""
+"    Используйте :hg:`diff`, если вы хотите посмотреть только изменения,\n"
+"    сделанные после последнего qrefresh, или :hg:`export qtip`, если\n"
+"    вы хотите посмотреть изменения, сделанные текущим патчем, не включая\n"
+"    изменения после последнего qrefresh."
 
 msgid "edit patch header"
-msgstr ""
+msgstr "редактировать заголовок патча"
 
 msgid "keep folded patch files"
-msgstr ""
+msgstr "оставить подшитые файлы патчей"
 
 msgid "hg qfold [-e] [-k] [-m TEXT] [-l FILE] PATCH..."
-msgstr ""
+msgstr "hg qfold [-e] [-k] [-m ТЕКСТ] [-l ФАЙЛ] ПАТЧ..."
 
 msgid "fold the named patches into the current patch"
-msgstr ""
+msgstr "подшить перечисленные патчи к текущему патчу"
 
 msgid ""
 "    Patches must not yet be applied. Each patch will be successively\n"
@@ -4106,47 +5650,57 @@
 "    deleted. With -k/--keep, the folded patch files will not be\n"
 "    removed afterwards."
 msgstr ""
+"    Патчи не должны быть наложены. Каждый патч будет последовательно "
+"наложен\n"
+"    на текущий патч в заданном порядке. Если патчи успешно наложились,\n"
+"    текущий патч будет обновлен (refreshed) с новым совокупным патчем,\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"
+"    текущего патча, отделенным строкой ``* * *``."
 
 msgid "qfold requires at least one patch name"
-msgstr ""
+msgstr "qfold требует указать хотя бы одно имя патча"
 
 #, python-format
 msgid "Skipping already folded patch %s\n"
-msgstr ""
+msgstr "Пропускается уже подшитый патч %s\n"
 
 #, python-format
 msgid "qfold cannot fold already applied patch %s"
-msgstr ""
+msgstr "qfold не может подшить уже наложенный патч %s"
 
 #, python-format
 msgid "error folding patch %s"
-msgstr ""
+msgstr "ошибка при подшивке патча %s"
 
 msgid "overwrite any local changes"
-msgstr ""
+msgstr "перезаписывать все локальные изменения"
 
 msgid "hg qgoto [OPTION]... PATCH"
-msgstr ""
+msgstr "hg qgoto [ПАРАМЕТР]... ПАТЧ"
 
 msgid "push or pop patches until named patch is at top of stack"
 msgstr ""
+"вталкивать или выталкивать патчи, пока указанный патч не окажется на вершине "
+"стека"
 
 msgid "list all patches and guards"
-msgstr ""
+msgstr "перечислить все патчи и стражей (guards)"
 
 msgid "drop all guards"
-msgstr ""
+msgstr "удалить всех стражей"
 
 msgid "hg qguard [-l] [-n] [PATCH] [-- [+GUARD]... [-GUARD]...]"
-msgstr ""
+msgstr "hg qguard [-l] [-n] [ПАТЧ] [-- [+СТРАЖ]... [-СТРАЖ]...]"
 
 msgid "set or print guards for a patch"
-msgstr ""
+msgstr "установить или напечатать стражей для патча"
 
 msgid ""
 "    Guards control whether a patch can be pushed. A patch with no\n"
@@ -4156,181 +5710,213 @@
 "command\n"
 "    has activated it."
 msgstr ""
+"    Стражи (guards) контролируют, можно ли протолкнуть (в стек) данный "
+"патч.\n"
+"    Патч без стражей проталкивается всегда. Патч с положительным стражем\n"
+"    (\"+foo\") проталкивается только если он был активирован командой\n"
+"    :hg:`qselect`. Патч с отрицательным стражем (\"-foo\") никогда не\n"
+"    проталкивается, если он был активирован командой :hg:`qselect`."
 
 msgid ""
 "    With no arguments, print the currently active guards.\n"
 "    With arguments, set guards for the named patch."
 msgstr ""
+"    Без аргументов печатает активных в данный момент стражей.\n"
+"    С аргументами устанавливает стражей для заданного патча."
 
 msgid ""
 "    .. note::\n"
 "       Specifying negative guards now requires '--'."
 msgstr ""
+"    .. note::\n"
+"       задание отрицательного стража теперь требует '--'."
 
 msgid "    To set guards on another patch::"
-msgstr ""
+msgstr "    Установить стражей для другого патча::"
 
 msgid "      hg qguard other.patch -- +2.6.17 -stable"
-msgstr ""
+msgstr "      hg qguard другой.patch -- +2.6.17 -stable"
 
 msgid "cannot mix -l/--list with options or arguments"
-msgstr ""
+msgstr "нельзя указывать -l/--list с другими параметрами или аргументами"
 
 msgid "no patch to work with"
-msgstr ""
+msgstr "нет патча для работы"
 
 #, python-format
 msgid "no patch named %s"
-msgstr ""
+msgstr "нет патча с именем %s"
 
 msgid "hg qheader [PATCH]"
-msgstr ""
+msgstr "hg qheader [ПАТЧ]"
 
 msgid "print the header of the topmost or specified patch"
-msgstr ""
+msgstr "напечатать заголовок верхнего или указанного патча"
 
 msgid "apply on top of local changes"
-msgstr ""
+msgstr "наложить поверх локальных изменений"
 
 msgid "apply the target patch to its recorded parent"
-msgstr ""
+msgstr "наложить целевой патч на его записанного родителя"
 
 msgid "list patch name in commit text"
-msgstr ""
+msgstr "включить имя патча в сообщение фиксации"
 
 msgid "apply all patches"
-msgstr ""
+msgstr "наложить все патчи"
 
 msgid "merge from another queue (DEPRECATED)"
-msgstr ""
+msgstr "слить из другой очереди (УСТАРЕЛО)"
 
 msgid "merge queue name (DEPRECATED)"
-msgstr ""
-
+msgstr "имя очереди слияния (УСТАРЕЛО)"
+
+# может, единственный патч? совмещенный патч?
+#, fuzzy
 msgid "reorder patch series and apply only the patch"
-msgstr ""
+msgstr "переупорядочить последовательность патчей и наложить только патч"
 
 msgid "hg qpush [-f] [-l] [-a] [--move] [PATCH | INDEX]"
-msgstr ""
-
+msgstr "hg qpush [-f] [-l] [-a] [--move] [ПАТЧ | ИНДЕКС]"
+
+# MAYBE: поместить (добавить) следующий патч в стек 
 msgid "push the next patch onto the stack"
-msgstr ""
+msgstr "протолкнуть следующий патч в стек"
 
 msgid ""
 "    When -f/--force is applied, all local changes in patched files\n"
 "    will be lost."
 msgstr ""
+"    С -f/--force все локальные изменения в файлах, на которые накладывается\n"
+"    патч, будут утеряны."
 
 msgid "no saved queues found, please use -n\n"
-msgstr ""
+msgstr "не найдено сохраненных очередей, пожалуйста используйте -n\n"
 
 #, python-format
 msgid "merging with queue at: %s\n"
-msgstr ""
+msgstr "слияние с очередью: %s\n"
 
 msgid "pop all patches"
-msgstr ""
+msgstr "вытолкнуть все патчи"
 
 msgid "queue name to pop (DEPRECATED)"
-msgstr ""
+msgstr "имя очереди для выталкивания (УСТАРЕЛО)"
 
 msgid "forget any local changes to patched files"
 msgstr ""
+"затереть все локальный изменения в файлах, на которые накладывается патч"
 
 msgid "hg qpop [-a] [-f] [PATCH | INDEX]"
-msgstr ""
+msgstr "hg qapplied [-1] [-s] [ПАТЧ | ИНДЕКС]"
 
 msgid "pop the current patch off the stack"
-msgstr ""
+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"
+"    не окажется на вершине."
 
 #, python-format
 msgid "using patch queue: %s\n"
-msgstr ""
+msgstr "используется очередь патчей: %s\n"
 
 msgid "hg qrename PATCH1 [PATCH2]"
-msgstr ""
+msgstr "hg qrename ПАТЧ1 [ПАТЧ2]"
 
 msgid "rename a patch"
-msgstr ""
+msgstr "переименовать патч"
 
 msgid ""
 "    With one argument, renames the current patch to PATCH1.\n"
 "    With two arguments, renames PATCH1 to PATCH2."
 msgstr ""
+"    С одним аргументом переименовывает текущий патч в ПАТЧ1.\n"
+"    С двумя аргументами переименовывает ПАТЧ1 в ПАТЧ2."
 
 msgid "delete save entry"
-msgstr ""
+msgstr "удалить запись сохранения"
 
 msgid "update queue working directory"
-msgstr ""
+msgstr "обновить рабочий каталог очереди"
 
 msgid "hg qrestore [-d] [-u] REV"
-msgstr ""
+msgstr "hg qrestore [-d] [-u] РЕВ"
 
 msgid "restore the queue state saved by a revision (DEPRECATED)"
-msgstr ""
+msgstr "восстановить состояние очереди, сохраненное в ревизии (УСТАРЕЛО)"
 
 msgid "    This command is deprecated, use :hg:`rebase` instead."
-msgstr ""
+msgstr "    Эта команда устарела, используйте :hg:`rebase`."
 
 msgid "copy patch directory"
-msgstr ""
+msgstr "копировать каталог патчей"
 
 msgid "copy directory name"
-msgstr ""
+msgstr "копировать имя каталога"
 
 msgid "clear queue status file"
-msgstr ""
+msgstr "очистить файл состояния очереди"
 
 msgid "force copy"
-msgstr ""
+msgstr "копировать принудительно"
 
 msgid "hg qsave [-m TEXT] [-l FILE] [-c] [-n NAME] [-e] [-f]"
-msgstr ""
+msgstr "hg qsave [-m ТЕКСТ] [-l ФАЙЛ] [-c] [-n ИМЯ] [-e] [-f]"
 
 msgid "save current queue state (DEPRECATED)"
-msgstr ""
+msgstr "сохранить текущее состояние очереди (УСТАРЕЛО)"
 
 #, python-format
 msgid "destination %s exists and is not a directory"
-msgstr ""
+msgstr "цель %s существует и не является каталогом"
 
 #, python-format
 msgid "destination %s exists, use -f to force"
-msgstr ""
+msgstr "цель %s существует, используйте -f для принудительного сохранения"
 
 #, python-format
 msgid "copy %s to %s\n"
-msgstr ""
+msgstr "копирование %s в %s\n"
+
+msgid ""
+"strip specified revision (optional, can specify revisions without this "
+"option)"
+msgstr ""
+"срезать указанную ревизию (необязательный, можно задать ревизии и без этого "
+"параметра"
 
 msgid "force removal of changesets, discard uncommitted changes (no backup)"
 msgstr ""
+"принудительно изъять наборы изменений, отбросить незафиксированные изменения "
+"(без резервной копии)."
 
 msgid ""
 "bundle only changesets with local revision number greater than REV which are "
 "not descendants of REV (DEPRECATED)"
 msgstr ""
+"добавить в бандл только наборы изменений с локальными номерами ревизий "
+"большими,чем рев, и не являющимися потомками РЕВизии (УСТАРЕЛО)"
 
 msgid "no backups"
-msgstr ""
+msgstr "без резервного копирования"
 
 msgid "no backups (DEPRECATED)"
-msgstr ""
+msgstr "без резервного копирования (УСТАРЕЛО)"
 
 msgid "do not modify working copy during strip"
-msgstr ""
+msgstr "не изменять рабочую копию во во время операции strip"
 
 msgid "hg strip [-k] [-f] [-n] REV..."
-msgstr ""
+msgstr "hg strip [-k] [-f] [-n] РЕВ..."
 
 msgid "strip changesets and all their descendants from the repository"
-msgstr ""
+msgstr "срезать наборы изменений и всех их потомков из хранилища"
 
 msgid ""
 "    The strip command removes the specified changesets and all their\n"
@@ -4338,6 +5924,10 @@
 "    operation is aborted unless the --force flag is supplied, in which\n"
 "    case changes will be discarded."
 msgstr ""
+"    Команда strip удаляет указанные наборы изменений и всех их потомков.\n"
+"    Если рабочий каталог имеет незафиксированные изменения, оперaция\n"
+"    отменяется, если только не указан флаг --force, в случае чего\n"
+"    изменения будут отброшены."
 
 msgid ""
 "    If a parent of the working directory is stripped, then the working\n"
@@ -4345,6 +5935,9 @@
 "    available ancestor of the stripped parent after the operation\n"
 "    completes."
 msgstr ""
+"    Если операция strip выполняется над родителем рабочего каталога,\n"
+"    он будет автоматически обновлен на наиболее позднего доступного\n"
+"    предка срезанного родителя после завершения операции."
 
 msgid ""
 "    Any stripped changesets are stored in ``.hg/strip-backup`` as a\n"
@@ -4354,32 +5947,41 @@
 "    the local revision numbers will in general be different after the\n"
 "    restore."
 msgstr ""
+"    Все срезанные наборы изменений сохраняются в ``.hg/strip-backup``\n"
+"    в виде бандла (см. :hg:`help bundle` и :hg:`help unbundle`). Они\n"
+"    могут быть восстановлены с помощью :hg:`unbundle .hg/strip-backup/"
+"bundle`,\n"
+"    где bundle - имя файла бандла, созданного strip. Обратите внимание, что\n"
+"    локальные номера ревизий в общем случае будут отличаться после\n"
+"    восстановления."
 
 msgid ""
 "    Use the --no-backup option to discard the backup bundle once the\n"
 "    operation completes."
 msgstr ""
+"    Используйте параметр --no-backup чтобы удалить бандл резервного\n"
+"    восстановления после завершения операции."
 
 msgid "empty revision set"
-msgstr ""
+msgstr "пустой набор ревизий"
 
 msgid "disable all guards"
-msgstr ""
+msgstr "отключить всех стражей"
 
 msgid "list all guards in series file"
-msgstr ""
+msgstr "перечислить всех стражей в файле последовательностей"
 
 msgid "pop to before first guarded applied patch"
-msgstr ""
+msgstr "вытолкнуть из стека до первого защищенного стражем наложенного патча"
 
 msgid "pop, then reapply patches"
-msgstr ""
+msgstr "вытолкнуть, затем снова наложить патчи"
 
 msgid "hg qselect [OPTION]... [GUARD]..."
-msgstr ""
+msgstr "hg qselect [ПАРАМЕТР]... [СТРАЖ]..."
 
 msgid "set or print guarded patches to push"
-msgstr ""
+msgstr "задать или напечатать защищенные патчи для помещения в стек"
 
 msgid ""
 "    Use the :hg:`qguard` command to set or print guards on patch, then use\n"
@@ -4388,29 +5990,49 @@
 "    selected guard, but will not be pushed if any negative guards\n"
 "    match the current guard. For example::"
 msgstr ""
-
+"    Используйте команду :hg:`qguard` чтобы задать или напечатать стражей\n"
+"    патча, после этого используйте qselect чтобы указать mq, каких стражей\n"
+"    использовать. Патч будет помещен в стек, если у него стражей или\n"
+"    любой из положительных стражей совпадает с выбранным на данный момент\n"
+"    стражем, но не будет помещен в стек, если совпадет любой отрицательный\n"
+"    страж."
+
+# BUG: line breaks not preserved in Russian
 msgid ""
 "        qguard foo.patch -- -stable    (negative guard)\n"
 "        qguard bar.patch    +stable    (positive guard)\n"
 "        qselect stable"
 msgstr ""
+"        qguard foo.patch -- -stable    (отрицательный страж)\n"
+"        qguard bar.patch    +stable    (положительный страж)\n"
+"        qselect stable"
 
 msgid ""
 "    This activates the \"stable\" guard. mq will skip foo.patch (because\n"
 "    it has a negative match) but push bar.patch (because it has a\n"
 "    positive match)."
 msgstr ""
+"    Это активирует страж \"stable\". mq пропустит foo.patch\n"
+"    (совпадает отрицательный страж), но поместит в стек bar.patch \n"
+"    (совпадает положительный страж)"
 
 msgid ""
 "    With no arguments, prints the currently active guards.\n"
 "    With one argument, sets the active guard."
 msgstr ""
-
+"    Без аргументов печатает активных в данный момент стражей.\n"
+"    С одним аргументом задает активного стража."
+
+# MAYBE BUG: а не наоборот?
 msgid ""
 "    Use -n/--none to deactivate guards (no other arguments needed).\n"
 "    When no guards are active, patches with positive guards are\n"
 "    skipped and patches with negative guards are pushed."
 msgstr ""
+"    Используйте -n/--none чтобы деактивировать стражей (не требуется\n"
+"    дополнительных аргументов). Если активных стражей нет, патчи с\n"
+"    положительными стражами пропускаются, а патчи с отрицательными\n"
+"    стражами помещаются в стек"
 
 msgid ""
 "    qselect can change the guards on applied patches. It does not pop\n"
@@ -4419,55 +6041,67 @@
 "    --pop) to push back to the current patch afterwards, but skip\n"
 "    guarded patches."
 msgstr ""
+"    qselect может менять стражей на наложенных патчах. По умолчанию\n"
+"    он не выталкивает защищенные патчи из стека. Используйте --pop чтобы\n"
+"    вытолкнуть патчи вплоть до последнего наложенного патча без стражей.\n"
+"    Используйте --reapply (который подразумевает --pop) чтобы втолкнуть\n"
+"    после этого все патчи вплоть до текущего, пропуская при этом патчи\n"
+"    со стражами."
 
 msgid ""
 "    Use -s/--series to print a list of all guards in the series file\n"
 "    (no other arguments needed). Use -v for more information."
 msgstr ""
+"    Используйте -s/--series чтобы напечатать список всех стражей в файле\n"
+"    последовательностей (других аргументов не требуется). Чтобы вывести\n"
+"    дополнительную информацию, используйте -v."
 
 msgid "guards deactivated\n"
-msgstr ""
+msgstr "стражи деактивированы\n"
 
 #, python-format
 msgid "number of unguarded, unapplied patches has changed from %d to %d\n"
-msgstr ""
+msgstr "количество незащищённых неналоженных патчей изменилось c %d на %d\n"
 
 #, python-format
 msgid "number of guarded, applied patches has changed from %d to %d\n"
-msgstr ""
+msgstr "количество незащищённых наложенных патчей изменилось c %d на %d\n"
 
 msgid "guards in series file:\n"
-msgstr ""
+msgstr "стражей в файле последовательностей:\n"
 
 msgid "no guards in series file\n"
-msgstr ""
+msgstr "нет стражей в файле последовательностей\n"
 
 msgid "active guards:\n"
-msgstr ""
+msgstr "активные стражи:\n"
 
 msgid "no active guards\n"
-msgstr ""
+msgstr "нет активных стражей\n"
 
 msgid "popping guarded patches\n"
-msgstr ""
+msgstr "выталкиваем защищенные патчи\n"
 
 msgid "reapplying unguarded patches\n"
-msgstr ""
+msgstr "заново накладываем незащищённые патчи\n"
 
 msgid "finish all applied changesets"
-msgstr ""
+msgstr "финализировать все наложенные патчи"
 
 msgid "hg qfinish [-a] [REV]..."
-msgstr ""
+msgstr "hg qfinish [-a] [РЕВ]..."
 
 msgid "move applied patches into repository history"
-msgstr ""
+msgstr "переместить наложенные патчи в историю хранилища"
 
 msgid ""
 "    Finishes the specified revisions (corresponding to applied\n"
 "    patches) by moving them out of mq control into regular repository\n"
 "    history."
 msgstr ""
+"    Финализирует указанные ревизии (соответствующие наложенным патчам)\n"
+"    путем перемещения их из-под контроля mq в историю обычного\n"
+"    хранилища."
 
 msgid ""
 "    Accepts a revision range or the -a/--applied option. If --applied\n"
@@ -4475,49 +6109,70 @@
 "    control. Otherwise, the given revisions must be at the base of the\n"
 "    stack of applied patches."
 msgstr ""
+"    Принимает диапазон ревизий или параметр -a/--applied. Если указан\n"
+"    --applied, все наложенные ревизии mq изымаются из-под контроля mq.\n"
+"    В противном случае указанные ревизии должны быть в основании стека\n"
+"    примененных патчей."
 
 msgid ""
 "    This can be especially useful if your changes have been applied to\n"
 "    an upstream repository, or if you are about to push your changes\n"
 "    to upstream."
 msgstr ""
+"    Это может быть особенно полезным, если ваши изменения были наложены\n"
+"    в вышестоящем (upstream) хранилище, или вы как раз собираетесь\n"
+"     протолкнуть туда ваши изменения."
 
 msgid "no revisions specified"
-msgstr ""
+msgstr "ревизии не заданы"
+
+msgid "warning: uncommitted changes in the working directory\n"
+msgstr "внимание: незафиксированные изменения в рабочем каталоге\n"
 
 msgid "list all available queues"
-msgstr ""
+msgstr "перечислить все доступные очереди"
+
+msgid "print name of active queue"
+msgstr "напечатать имя активной очереди"
 
 msgid "create new queue"
-msgstr ""
+msgstr "создать новую очередь"
 
 msgid "rename active queue"
-msgstr ""
+msgstr "переименовать активную очередь"
 
 msgid "delete reference to queue"
-msgstr ""
+msgstr "удалить ссылку на очередь"
 
 msgid "delete queue, and remove patch dir"
-msgstr ""
+msgstr "удалить очередь и удалить каталог патчей"
 
 msgid "[OPTION] [QUEUE]"
-msgstr ""
+msgstr "[ПАРАМЕТР] [ОЧЕРЕДЬ]"
 
 msgid "manage multiple patch queues"
-msgstr ""
+msgstr "управление несколькими очередями патчей"
 
 msgid ""
 "    Supports switching between different patch queues, as well as creating\n"
 "    new patch queues and deleting existing ones."
 msgstr ""
+"    Поддерживает переключение между различными очередями патчей, а также\n"
+"    создание новых очередей и удаление существующих."
 
 msgid ""
 "    Omitting a queue name or specifying -l/--list will show you the "
 "registered\n"
 "    queues - by default the \"normal\" patches queue is registered. The "
 "currently\n"
-"    active queue will be marked with \"(active)\"."
-msgstr ""
+"    active queue will be marked with \"(active)\". Specifying --active will "
+"print\n"
+"    only the name of the active queue."
+msgstr ""
+"    Если имя очереди опущено или указан -l/--list, показывает\n"
+"    зарегистрированные очереди - по умолчанию зарегистрирована очередь\n"
+"    \"normal\". Активная в настоящий момент очередь будет помечена\n"
+"    \"(активна)\". С флагом --active напечатает только имя активной очереди."
 
 msgid ""
 "    To create a new queue, use -c/--create. The queue is automatically made\n"
@@ -4525,303 +6180,557 @@
 "    currently active queue in the repository. Then the queue will only be\n"
 "    created and switching will fail."
 msgstr ""
+"    Чтобы создать новую очередь, используйте -c/--create. Очередь\n"
+"    автоматически делается активной, за исключением случая, когда в\n"
+"    хранилище есть наложенные патчи из текущей активной очереди. Тогда\n"
+"    очередь будет только создана, а переключение завершится ошибкой."
 
 msgid ""
 "    To delete an existing queue, use --delete. You cannot delete the "
 "currently\n"
 "    active queue."
 msgstr ""
+"    Чтобы удалить существующую очередь, используйте --delete. Нельзя\n"
+"    удалить текущую активную очередь."
 
 msgid "patches applied - cannot set new queue active"
-msgstr ""
+msgstr "патчи наложены - невозможно сделать новую очередь активной"
 
 msgid "cannot delete queue that does not exist"
-msgstr ""
+msgstr "невозможно удалить несуществующую очередь"
 
 msgid "cannot delete currently active queue"
-msgstr ""
+msgstr "невозможно удалить текущую активную очередь"
 
 msgid " (active)\n"
-msgstr ""
+msgstr " (активна)\n"
 
 msgid "invalid queue name, may not contain the characters \":\\/.\""
-msgstr ""
+msgstr "неверное имя очереди, символы \":\\/.\" недопустимы"
 
 #, python-format
 msgid "queue \"%s\" already exists"
-msgstr ""
+msgstr "очередь \"%s\" уже существует"
 
 #, python-format
 msgid "can't rename \"%s\" to its current name"
-msgstr ""
+msgstr "не могу переименовать \"%s\" в ее текущее имя"
 
 #, python-format
 msgid "non-queue directory \"%s\" already exists"
-msgstr ""
+msgstr "каталог, не содержащий очереди, \"%s\" уже существует"
 
 msgid "use --create to create a new queue"
-msgstr ""
+msgstr "используйте --create чтобы создать новую очередь"
 
 msgid "cannot commit over an applied mq patch"
-msgstr ""
+msgstr "не могу зафиксировать поверх наложенного патч mq"
 
 msgid "source has mq patches applied"
-msgstr ""
+msgstr "источник имеет наложенные патчи mq"
 
 #, python-format
 msgid "mq status file refers to unknown node %s\n"
-msgstr ""
+msgstr "файл состояния mq ссылается на неизвестный узел %s\n"
 
 #, python-format
 msgid "Tag %s overrides mq patch of the same name\n"
-msgstr ""
+msgstr "Метка %s подменяет патч mq с таким же именем\n"
 
 msgid "cannot import over an applied patch"
-msgstr ""
+msgstr "невозможно импортировать поверх наложенного патча"
 
 msgid "only a local queue repository may be initialized"
-msgstr ""
+msgstr "можно инициализировать только локальное хранилище очереди"
 
 msgid "there is no Mercurial repository here (.hg not found)"
-msgstr "здесь нет репозитория Mercurial (.hg не найден)"
+msgstr "здесь нет хранилища Mercurial (.hg не найден)"
 
 msgid "no queue repository"
-msgstr ""
+msgstr "нет хранилища очереди"
 
 #, python-format
 msgid "%d applied"
-msgstr ""
+msgstr "%d наложено"
 
 #, python-format
 msgid "%d unapplied"
-msgstr ""
+msgstr "%d неналожено"
 
 msgid "mq:     (empty queue)\n"
-msgstr ""
+msgstr "mq:     (очередь пуста)\n"
 
 msgid ""
 "``mq()``\n"
 "    Changesets managed by MQ."
 msgstr ""
+"``mq()``\n"
+"    Наборы изменений, контролируемые MQ."
 
 msgid "mq takes no arguments"
 msgstr "mq не требует аргументов"
 
 msgid "operate on patch repository"
-msgstr "работать с репозиторием патчей mq"
-
-msgid "hooks for sending email notifications at commit/push time"
-msgstr ""
-
-msgid ""
-"Subscriptions can be managed through a hgrc file. Default mode is to\n"
-"print messages to stdout, for testing and configuring."
-msgstr ""
-
-msgid ""
-"To use, configure the notify extension and enable it in hgrc like\n"
-"this::"
-msgstr ""
-
-msgid ""
-"  [extensions]\n"
-"  notify ="
-msgstr ""
+msgstr "работать с хранилищем патчей mq"
+
+msgid "hooks for sending email push notifications"
+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"
+"или получащей стороны."
+
+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::"
+msgstr ""
+"Первым делом, включите расширение, как это описано в :hg:`help extensions`\n"
+"и зарегистрируйте хук, который вы желаете запускать. На стороне,\n"
+"принимающей наборы изменений, выполняются хуки ``incoming`` и ``outgoing``,\n"
+"в то время как на передающей стороне выполняется только ``outgoing``::"
 
 msgid ""
 "  [hooks]\n"
 "  # one email for each incoming changeset\n"
 "  incoming.notify = python:hgext.notify.hook\n"
-"  # batch emails when many changesets incoming at one time\n"
-"  changegroup.notify = python:hgext.notify.hook\n"
-"  # batch emails when many changesets outgoing at one time (client side)\n"
+"  # one email for all incoming changesets\n"
+"  changegroup.notify = python:hgext.notify.hook"
+msgstr ""
+"  [hooks]\n"
+"  # один email для кажого входящего набора изменений\n"
+"  incoming.notify = python:hgext.notify.hook\n"
+"  # один email для всех входящих наборов изменений\n"
+"  changegroup.notify = python:hgext.notify.hook"
+
+msgid ""
+"  # one email for all outgoing changesets\n"
+"  outgoing.notify = python:hgext.notify.hook"
+msgstr ""
+"  # один email для всех исходящих наборов изменений\n"
 "  outgoing.notify = python:hgext.notify.hook"
-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::"
+msgstr ""
+"Теперь, когда хуки активированы, подписчики должны быть привязаны к\n"
+"хранилищам. Используйте секци ``[usersubs]``, чтобы связать хранилища\n"
+"с заданным адресом email, или секцию ``[reposubs]``, чтобы связать\n"
+"адреса email с одним хранилищем::"
+
+msgid ""
+"  [usersubs]\n"
+"  # key is subscriber email, value is a comma-separated list of glob\n"
+"  # patterns\n"
+"  user@host = pattern"
+msgstr ""
+"  [usersubs]\n"
+"  # ключ - email подписчика, значение - разделенный запятыми список "
+"шаблонов\n"
+"  # в стиле glob (glob patterns)\n"
+"  пользователь@хост = шаблон"
+
+msgid ""
+"  [reposubs]\n"
+"  # key is glob pattern, value is a comma-separated list of subscriber\n"
+"  # emails\n"
+"  pattern = user@host"
+msgstr ""
+"  [reposubs]\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"
+"них можно сослаться следующим образом::"
 
 msgid ""
 "  [notify]\n"
-"  # config items go here"
-msgstr ""
-
-msgid "Required configuration items::"
-msgstr ""
-
-msgid "  config = /path/to/file # file containing subscriptions"
-msgstr ""
-
-msgid "Optional configuration items::"
-msgstr ""
-
-msgid ""
-"  test = True            # print messages to stdout for testing\n"
-"  strip = 3              # number of slashes to strip for url paths\n"
-"  domain = example.com   # domain to use if committer missing domain\n"
-"  style = ...            # style file to use when formatting email\n"
-"  template = ...         # template to use when formatting email\n"
-"  incoming = ...         # template to use when run as incoming hook\n"
-"  outgoing = ...         # template to use when run as outgoing hook\n"
-"  changegroup = ...      # template to use when run as changegroup hook\n"
-"  maxdiff = 300          # max lines of diffs to include (0=none, -1=all)\n"
-"  maxsubject = 67        # truncate subject line longer than this\n"
-"  diffstat = True        # add a diffstat before the diff content\n"
-"  sources = serve        # notify if source of incoming changes in this "
-"list\n"
-"                         # (serve == ssh or http, push, pull, bundle)\n"
-"  merge = False          # send notification for merges (default True)\n"
-"  [email]\n"
-"  from = user@host.com   # email address to send as if none given\n"
-"  [web]\n"
-"  baseurl = http://hgserver/... # root of hg web site for browsing commits"
-msgstr ""
-
-msgid ""
-"The notify config file has same format as a regular hgrc file. It has\n"
-"two sections so you can express subscriptions in whatever way is\n"
-"handier for you."
-msgstr ""
-
-msgid ""
-"  [usersubs]\n"
-"  # key is subscriber email, value is \",\"-separated list of glob patterns\n"
-"  user@host = pattern"
-msgstr ""
-
-msgid ""
-"  [reposubs]\n"
-"  # key is glob pattern, value is \",\"-separated list of subscriber emails\n"
-"  pattern = user@host"
-msgstr ""
-
-msgid "Glob patterns are matched against path to repository root."
-msgstr ""
-
-msgid ""
-"If you like, you can put notify config file in repository that users\n"
-"can push changes to, they can manage their own subscriptions.\n"
-msgstr ""
+"  config = /path/to/subscriptionsfile"
+msgstr ""
+"  [notify]\n"
+"  config = /путь/к/файлу/подписок"
+
+msgid ""
+"Alternatively, they can be added to Mercurial configuration files by\n"
+"setting the previous entry to an empty value."
+msgstr ""
+"Также они могут быть добавлены прямо в конфигурационныe файлы 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``."
+
+msgid ""
+"Notifications content can be tweaked with the following configuration "
+"entries:"
+msgstr ""
+"Содержимое уведомлений может быть настроено с помощью следующих параметров:"
+
+msgid ""
+"notify.test\n"
+"  If ``True``, print messages to stdout instead of sending them. Default: "
+"True."
+msgstr ""
+"notify.test\n"
+"  Если ``True`` (Истина), печатать сообщения на стандартный вывод, вместно\n"
+"  их отправки. По умолчанию: True."
+
+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.strip\n"
+"  Number of leading slashes to strip from url paths. By default, "
+"notifications\n"
+"  references repositories with their absolute path. ``notify.strip`` let "
+"you\n"
+"  turn them into relative paths. For example, ``notify.strip=3`` will "
+"change\n"
+"  ``/long/path/repository`` into ``repository``. Default: 0."
+msgstr ""
+"notify.strip\n"
+"  Количество ведущих слэшей, вырезаемых из путей URL. По умолчанию\n"
+"  уведомления ссылаются на хранилища по их полным путям. ``notify.strip``\n"
+"  позволяет превратить их в относительные. Например, ``notify.strip=3``\n"
+"  заменит ``/длинный/путь/хранилища`` на ``хранилища``. По умолчанию: 0."
+
+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 ""
+"notify.style\n"
+"  Style file to use when formatting emails."
+msgstr ""
+"notify.style\n"
+"  файл стиля, используемого для форматирования писем."
+
+msgid ""
+"notify.template\n"
+"  Template to use when formatting emails."
+msgstr ""
+"notify.template\n"
+"  Шаблон, используемый при форматировании писем."
+
+msgid ""
+"notify.incoming\n"
+"  Template to use when run as incoming hook, override ``notify.template``."
+msgstr ""
+"notify.incoming\n"
+"  Шаблон, используемый при запуске в качестве хука для входящих изменений,\n"
+"  переопределяет ``notify.template``."
+
+msgid ""
+"notify.outgoing\n"
+"  Template to use when run as outgoing hook, override ``notify.template``."
+msgstr ""
+"notify.outgoing\n"
+"  Шаблон, используемый при запуске в качестве хука для исходящих изменений,\n"
+"  переопределяет ``notify.template``."
+
+msgid ""
+"notify.changegroup\n"
+"  Template to use when running as changegroup hook, override\n"
+"  ``notify.template``."
+msgstr ""
+"notify.changegroup\n"
+"  Шаблон, используемый при запуске в качестве хука для группы изменений\n"
+"  (changegroup), переопределяет ``notify.template``."
+
+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."
+msgstr ""
+"notify.maxdiff\n"
+"  Максимальное количество строк различий, включаемых в письмо уведомления.\n"
+"  Установите в 0, чтобы убрать различия, в -1 - включить их полность.\n"
+"  По умолчанию: 300."
+
+msgid ""
+"notify.maxsubject\n"
+"  Maximum number of characters in emails subject line. Default: 67."
+msgstr ""
+"notify.maxsubject\n"
+"  Максимальное количество символов в теме (\"Subject:\") письма. По "
+"умолчанию: 67."
+
+msgid ""
+"notify.diffstat\n"
+"  Set to True to include a diffstat before diff content. Default: True."
+msgstr ""
+"notify.diffstat\n"
+"  Установите в True, чтобы добавить статистику (diffstat) перед содержимым\n"
+"  различий. По умолчанию: True."
+
+msgid ""
+"notify.merge\n"
+"  If True, send notifications for merge changesets. Default: True."
+msgstr ""
+"notify.merge\n"
+"  Если истинно (True), отправлять уведомления для наборов изменений "
+"слияния.\n"
+"  По умолчанию: True."
+
+msgid ""
+"notify.mbox\n"
+"  If set, append mails to this mbox file instead of sending. Default: None."
+msgstr ""
+"notify.mbox\n"
+"  Если задан, добавляет email-сообщения к этому mbox-файлу вместо отправки.\n"
+"  По умолчанию: не задан."
+
+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 ""
+"notify.fromauthor\n"
+"  Если истина, использовать первого автора группы изменений для поля \"От\"\n"
+"  сообщения. Если не задан, использовать пользователя из исходящего "
+"хранилища.\n"
+"  По умолчанию: False (Ложь)"
+
+msgid ""
+"If set, the following entries will also be used to customize the "
+"notifications:"
+msgstr ""
+"Следующие параметры также используются для настройки уведомлений,\n"
+"если заданы их значения:"
+
+msgid ""
+"email.from\n"
+"  Email ``From`` address to use if none can be found in generated email "
+"content."
+msgstr ""
+"email.from\n"
+"  Адрес для поля ``От`` (``From``), если нет другого подходящего\n"
+"  адреса в сгенерированном сообщении."
+
+msgid ""
+"web.baseurl\n"
+"  Root repository browsing URL to combine with repository paths when making\n"
+"  references. See also ``notify.strip``."
+msgstr ""
+"web.baseurl\n"
+"  URL корня хранилища для обозревателя, совмещаемый с путями хранилища\n"
+"  при создании ссылок. См. также ``notify.strip``."
 
 #, python-format
 msgid "%s: %d new changesets"
-msgstr ""
+msgstr "%s: %d новых наборов изменений"
 
 #, python-format
 msgid "notify: sending %d subscribers %d changes\n"
-msgstr ""
+msgstr "notify: отправляется %d подписчикам, %d изменений\n"
 
 #, python-format
 msgid ""
 "\n"
 "diffs (truncated from %d to %d lines):"
 msgstr ""
+"\n"
+"различия (урезанные с %d до %d строк):"
 
 #, python-format
 msgid ""
 "\n"
 "diffs (%d lines):"
 msgstr ""
+"\n"
+"различия (%d строк):"
 
 #, python-format
 msgid "notify: suppressing notification for merge %d:%s\n"
-msgstr ""
+msgstr "notify: подавляется уведомление о слиянии %d:%s\n"
 
 msgid "browse command output with an external pager"
-msgstr ""
+msgstr "просмотр вывода команд с прокруткой с помощью внешней программы"
 
 msgid "To set the pager that should be used, set the application variable::"
 msgstr ""
+"Чтобы задать используемую программу просмотра (pager), установите\n"
+"переменную приложения::"
 
 msgid ""
 "  [pager]\n"
 "  pager = less -FRSX"
 msgstr ""
+"  [pager]\n"
+"  pager = less -FRSX"
 
 msgid ""
 "If no pager is set, the pager extensions uses the environment variable\n"
 "$PAGER. If neither pager.pager, nor $PAGER is set, no pager is used."
 msgstr ""
+"Если программа просмотра не задана, расширение pager использует переменную\n"
+"окружения $PAGER. Если не заданы ни pager.pager, ни $PAGER, программа\n"
+"просмотра не используется."
 
 msgid ""
 "If you notice \"BROKEN PIPE\" error messages, you can disable them by\n"
 "setting::"
 msgstr ""
+"Если вы замечаете сообщение об ошибке \"BROKEN PIPE\" (\"ОБРЫВ КАНАЛА\")\n"
+"его можно отключить с помощью следующего параметра::"
 
 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 ""
+"Можно отключить программу просмотра для определенных команд, добавив\n"
+"их в список pager.ignore::"
 
 msgid ""
 "  [pager]\n"
 "  ignore = version, help, update"
 msgstr ""
+"  [pager]\n"
+"  ignore = version, help, update"
 
 msgid ""
 "You can also enable the pager only for certain commands using\n"
 "pager.attend. Below is the default list of commands to be paged::"
 msgstr ""
+"Вы также можете включить команду просмотра только для некоторых\n"
+"команд, использую pager.attend. Ниже представлен список команд,\n"
+"для которых просмотр с прокруткой используется по умолчанию::"
 
 msgid ""
 "  [pager]\n"
 "  attend = annotate, cat, diff, export, glog, log, qdiff"
 msgstr ""
+"  [pager]\n"
+"  attend = annotate, cat, diff, export, glog, log, qdiff"
 
 msgid ""
 "Setting pager.attend to an empty value will cause all commands to be\n"
 "paged."
 msgstr ""
+"Установка pager.attend в пустое значене активирует программу просмотра\n"
+"для всех команд."
 
 msgid "If pager.attend is present, pager.ignore will be ignored."
-msgstr ""
+msgstr "Если задан pager.attend, pager.ignore игнорируется."
 
 msgid ""
 "To ignore global commands like :hg:`version` or :hg:`help`, you have\n"
 "to specify them in your user configuration file."
 msgstr ""
+"Чтобы игнорировать глобальные команды, такие как :hg:`version` или\n"
+":hg:`help`, необходимо указать из вашем конфигурационном файле."
 
 msgid ""
 "The --pager=... option can also be used to control when the pager is\n"
 "used. Use a boolean value like yes, no, on, off, or use auto for\n"
 "normal behavior.\n"
 msgstr ""
+"Параметр командной строки --pager=... также может использоваться, чтобы\n"
+"контролировать используемую программу просмотра. Используйте логические\n"
+"значения, такие yes (да), no (нет), on (вкл), off (выкл), либо используйте\n"
+"auto для стандартного поведения.\n"
 
 msgid "when to paginate (boolean, always, auto, or never)"
 msgstr ""
+"когда использовать прокрутку (логический. always (всегда), auto"
+"(автоматически) или never (никогда)"
 
 msgid "command to send changesets as (a series of) patch emails"
-msgstr ""
+msgstr "команда для отправки наборов изменений в виде (серии) email с патчами"
 
 msgid ""
 "The series is started off with a \"[PATCH 0 of N]\" introduction, which\n"
 "describes the series as a whole."
 msgstr ""
+"Серия начинается с вводного сообщения \"[PATCH 0 of N]\",\n"
+"которое содержит описание всей серии."
 
 msgid ""
 "Each patch email has a Subject line of \"[PATCH M of N] ...\", using the\n"
 "first line of the changeset description as the subject text. The\n"
 "message contains two or three body parts:"
 msgstr ""
+"Каждое письмо с патчем имеет тему, начинающуюся с \"[PATCH M of N] ...\",\n"
+"при этом в качестве текста темы используется первая строка описания набора\n"
+"изменений. Письмо содержит в теле две или три части:"
 
 msgid ""
 "- The changeset description.\n"
 "- [Optional] The result of running diffstat on the patch.\n"
 "- The patch itself, as generated by :hg:`export`."
 msgstr ""
+"- Описание набора изменений.\n"
+"- [Необязательно] Результат работы diffstat для патча (статистика).\n"
+"- Сам патч, как его генерирует команда :hg:`export`."
 
 msgid ""
 "Each message refers to the first in the series using the In-Reply-To\n"
 "and References headers, so they will show up as a sequence in threaded\n"
 "mail and news readers, and in mail archives."
 msgstr ""
+"Каждое письмо ссылается на первое в серии, используя\n"
+"email-заголовки In-Reply-To и References, так что они будут показываться\n"
+"как единая цепочка в программах чтения почты и новостей, а также в архивах."
 
 msgid ""
 "To configure other defaults, add a section like this to your\n"
 "configuration file::"
 msgstr ""
+"Чтобы настроить другие заполняемые заголовки, добавьте секцию вроде\n"
+"этой в ваш конфигурационный файл::"
 
 msgid ""
 "  [email]\n"
@@ -4831,17 +6740,30 @@
 "  bcc = bcc1, bcc2, ...\n"
 "  reply-to = address1, address2, ..."
 msgstr ""
+"  [email]\n"
+"  from = Мое Имя <my@email>\n"
+"  to = получатель1, получатель2, ...\n"
+"  cc = копия1, копия2, ...\n"
+"  bcc = скрытая-копия1, скрытая-копия2, ...\n"
+"  reply-to = адрес1, адрес2, ..."
 
 msgid ""
 "Use ``[patchbomb]`` as configuration section name if you need to\n"
 "override global ``[email]`` address settings."
 msgstr ""
+"Используйте секцию ``[patchbomb]``, если вы хотите переопределить "
+"глобальные\n"
+"настройки адресов из секции ``[email]``."
 
 msgid ""
 "Then you can use the :hg:`email` command to mail a series of\n"
 "changesets as a patchbomb."
 msgstr ""
-
+"Вы можете использовать команду :hg:`email`, чтобы отправить по электронной\n"
+"почте серию наборов изменений в виде нескольких писем с патчами\n"
+"(patch-bomb)."
+
+# BUG не хватает кавычек в англ тексте
 msgid ""
 "You can also either configure the method option in the email section\n"
 "to be a sendmail compatible mailer or fill out the [smtp] section so\n"
@@ -4849,97 +6771,105 @@
 "directly from the commandline. See the [email] and [smtp] sections in\n"
 "hgrc(5) for details.\n"
 msgstr ""
-
-#, python-format
-msgid "%s Please enter a valid value"
-msgstr ""
-
-msgid "Please enter a valid value.\n"
-msgstr ""
+"Вы также можете либо настроить параметр method секции ``[email]`` так,\n"
+"чтобы он определял sendmail-совместимый клиент для отправки почты, либо\n"
+"заполнить секцию ``[smtp]``, чтобы расширение patchbomb могло автоматически\n"
+"отправлять почту прямо из командной строки. См. секции ``[email]`` и ``[smtp]"
+"``\n"
+"для дополнительной информации.\n"
 
 msgid "send patches as attachments"
 msgstr "отправить патчи как вложения"
 
 msgid "send patches as inline attachments"
-msgstr "отправить патчи как вложения в тексте"
+msgstr "отправить патчи как вложения в тексте (inline attachments)"
 
 msgid "email addresses of blind carbon copy recipients"
-msgstr ""
+msgstr "адреса получателей скрытой копии письма"
 
 msgid "email addresses of copy recipients"
-msgstr ""
+msgstr "адреса получателей копии письма"
 
 msgid "ask for confirmation before sending"
-msgstr ""
+msgstr "запрашивать подтверждение перед отправкой"
 
 msgid "add diffstat output to messages"
-msgstr "добавить статистику различий к сообщениям"
+msgstr "добавить статистику различий (diffstat) к сообщениям"
 
 msgid "use the given date as the sending date"
-msgstr ""
+msgstr "использовать данную дату в качестве даты отправки"
 
 msgid "use the given file as the series description"
-msgstr ""
+msgstr "использовать содержимое указанного файла в качестве описания серии"
 
 msgid "email address of sender"
-msgstr ""
+msgstr "email-адрес отправителя"
 
 msgid "print messages that would be sent"
-msgstr ""
+msgstr "напечатать письма, которые будут отправлены"
 
 msgid "write messages to mbox file instead of sending them"
-msgstr ""
+msgstr "записать письма в mbox-файл вместо их отправки"
 
 msgid "email addresses replies should be sent to"
-msgstr ""
+msgstr "email-адреса, на которые должен присылаться ответ"
 
 msgid "subject of first message (intro or single patch)"
-msgstr ""
+msgstr "тема первого письма (вводного или единственного в последовательности)"
 
 msgid "message identifier to reply to"
-msgstr ""
+msgstr "идентификатор сообщения, на которое надо отвечать"
 
 msgid "flags to add in subject prefixes"
-msgstr ""
+msgstr "флаги, добавляемые в префикс темы"
 
 msgid "email addresses of recipients"
-msgstr ""
+msgstr "email-адреса получателей"
 
 msgid "omit hg patch header"
-msgstr ""
+msgstr "опустить заголовок патча"
 
 msgid "send changes not found in the target repository"
-msgstr ""
+msgstr "отправить изменения, не найденные в целевом хранилище"
 
 msgid "send changes not in target as a binary bundle"
 msgstr ""
+"отправить отсутствующие в целевом хранилище изменения в виде комплекта "
+"(bundle)"
 
 msgid "name of the bundle attachment file"
-msgstr ""
+msgstr "имя вложения файла комплекта (bundle"
 
 msgid "a revision to send"
-msgstr ""
+msgstr "отправить указанную ревизию"
 
 msgid "run even when remote repository is unrelated (with -b/--bundle)"
 msgstr ""
+"работать даже если отдаленное хранилище не связано с текущим (с -b/--bundle)"
 
 msgid "a base changeset to specify instead of a destination (with -b/--bundle)"
 msgstr ""
+"базовый набор изменений, указываемый вместо хранилища назначения (с -b/--"
+"bundle)"
 
 msgid "send an introduction email for a single patch"
-msgstr ""
+msgstr "отправлять вводное письмо для единственного патча"
 
 msgid "hg email [OPTION]... [DEST]..."
-msgstr ""
+msgstr "hg email [ПАРАМЕТР]... [НАЗНАЧЕНИЕ]..."
 
 msgid "send changesets by email"
-msgstr ""
+msgstr "отправить наборы изменений по email"
 
 msgid ""
 "    By default, diffs are sent in the format generated by\n"
 "    :hg:`export`, one per message. The series starts with a \"[PATCH 0\n"
 "    of N]\" introduction, which describes the series as a whole."
 msgstr ""
+"    По умолчанию различия отсылаются в том формате, в каком их генерирует\n"
+"    :hg:`export`, по одному в каждом письме. Серия начинается\n"
+"    с вводного письма \"[PATCH 0 of N]\", содержащего описание всей\n"
+"    серии."
 
 msgid ""
 "    Each patch email has a Subject line of \"[PATCH M of N] ...\", using\n"
@@ -4947,20 +6877,30 @@
 "    The message contains two or three parts. First, the changeset\n"
 "    description."
 msgstr ""
+"    Каждое письмо с патчем имеет тему вида \"[PATCH M of N] ...\",\n"
+"    используя первую строку описания набора изменений в качестве текста\n"
+"    темы. Письмо содержит две или три части. Сначала идет описание\n"
+"    набора изменений."
 
 msgid ""
 "    With the -d/--diffstat option, if the diffstat program is\n"
 "    installed, the result of running diffstat on the patch is inserted."
 msgstr ""
+"    Если был задан параметр -d/--diffstat и установлена программа\n"
+"    diffstat, то после описания вставляется результат ее работы для\n"
+"    этого патча."
 
 msgid "    Finally, the patch itself, as generated by :hg:`export`."
-msgstr ""
+msgstr "    Наконец, сам патч, как его сгенерировала :hg:`export`."
 
 msgid ""
 "    With the -d/--diffstat or -c/--confirm options, you will be presented\n"
 "    with a final summary of all messages and asked for confirmation before\n"
 "    the messages are sent."
 msgstr ""
+"    Если указан параметр -d/--diffstat или -c/--confirm, вам будет\n"
+"    показана итоговая сводка всех сообщений и будет запрощено\n"
+"    подтверждение отправки."
 
 msgid ""
 "    By default the patch is included as text in the email body for\n"
@@ -4968,18 +6908,28 @@
 "    an attachment for the patch. With -i/--inline an inline attachment\n"
 "    will be created."
 msgstr ""
+"    По умолчанию патч включается в тело письма для упрощения просмотра.\n"
+"    Параметр -a/--attach создаст вложение, содержащее патч. С параметром\n"
+"    -i/--inline будет создано вложение в тексте (inline attachment)."
 
 msgid ""
 "    With -o/--outgoing, emails will be generated for patches not found\n"
 "    in the destination repository (or only those which are ancestors\n"
 "    of the specified revisions if any are provided)"
 msgstr ""
+"    C -o/--outgoing, письма будут сгенерированы для патчей, не найденных\n"
+"    в хранилище назначения (либо только для тех, которые являются предками\n"
+"    заданных ревизий, если таковые были указаны)"
 
 msgid ""
 "    With -b/--bundle, changesets are selected as for --outgoing, but a\n"
 "    single email containing a binary Mercurial bundle as an attachment\n"
 "    will be sent."
 msgstr ""
+"    С -b/--bundle, наборы изменений выбираются аналогично --outgoing,\n"
+"    но отсылается единственное письмо, содержащее двоичный комплект "
+"(bundle)\n"
+"    Mercurial во вложении."
 
 msgid ""
 "    With -m/--mbox, instead of previewing each patchbomb message in a\n"
@@ -4988,6 +6938,11 @@
 "    previewed with any mail user agent which supports UNIX mbox\n"
 "    files."
 msgstr ""
+"    С -m/--mbox, вместо того, чтобы просматривать каждое письмо в\n"
+"    консоли или сразу отправлять его, будет создан файл почтового\n"
+"    ящика UNIX (mbox), содержащий письма с патчами. Такой файл\n"
+"    можно просматривать любым почтовым клиентом, который поддерживает\n"
+"    формат mbox."
 
 msgid ""
 "    With -n/--test, all steps will run, but mail will not be sent.\n"
@@ -4997,11 +6952,20 @@
 "    PAGER environment variable is set, your pager will be fired up once\n"
 "    for each patchbomb message, so you can verify everything is alright."
 msgstr ""
+"    С -n/--test будут выполнены все действия, но письмо не будет\n"
+"    отправлено. У вас будет запрошен адрес получателя, тема и вводное\n"
+"    сообщение, описывающее серию патчей. Потом все письма\n"
+"    отображаются на экране. Если установлена переменная окружения\n"
+"    PAGER, ваша программа для просмотра с прокруткой (pager) будет\n"
+"    вызываться для каждого письма, чтобы вы могли убедиться, что\n"
+"    все в порядке."
 
 msgid ""
 "    In case email sending fails, you will find a backup of your series\n"
 "    introductory message in ``.hg/last-email.txt``."
 msgstr ""
+"    Если при отправке происходит ошибка, вы найдете резервную копию\n"
+"    вашего вводного сообщения серии в файле ``.hg/last-email.txt``."
 
 msgid ""
 "      hg email -r 3000          # send patch 3000 only\n"
@@ -5009,6 +6973,10 @@
 "      hg email -r 3000:3005     # send patches 3000 through 3005\n"
 "      hg email 3000             # send patch 3000 (deprecated)"
 msgstr ""
+"      hg email -r 3000          # отправить только патч 3000\n"
+"      hg email -r 3000 -r 3001  # отправить патчи 3000 и 3001\n"
+"      hg email -r 3000:3005     # отправить патчи с 3000 по 3005\n"
+"      hg email 3000             # отправить патч 3000 (устарело)"
 
 msgid ""
 "      hg email -o               # send all patches not in default\n"
@@ -5016,6 +6984,14 @@
 "      hg email -o -r 3000       # send all ancestors of 3000 not in default\n"
 "      hg email -o -r 3000 DEST  # send all ancestors of 3000 not in DEST"
 msgstr ""
+"      hg email -o               # отправить все патчи, которых нет по пути "
+"default\n"
+"      hg email -o НАЗН          # отправить все патчи, которых нет по пути "
+"НАЗН\n"
+"      hg email -o -r 3000       # отправить всех предков ревизии 3000, "
+"которых нет по пути default\n"
+"      hg email -o -r 3000 НАЗН  # отправить всех предков ревизии 3000, "
+"которых нет по пути НАЗН"
 
 msgid ""
 "      hg email -b               # send bundle of all patches not in default\n"
@@ -5024,6 +7000,14 @@
 "default\n"
 "      hg email -b -r 3000 DEST  # bundle of all ancestors of 3000 not in DEST"
 msgstr ""
+"      hg email -b               # отправить комплект (bundle) всех патчей, "
+"которых нет по пути default\n"
+"      hg email -b НАЗН          # отправить комплект всех патчей, которых "
+"нет по пути НАЗН\n"
+"      hg email -b -r 3000       # отправить комплект всех предков ревизии "
+"3000, которых нет по пути default\n"
+"      hg email -b -r 3000 НАЗН  # отправить комплект всех предков ревизии "
+"3000, которых нет по пути НАЗН"
 
 msgid ""
 "      hg email -o -m mbox &&    # generate an mbox file...\n"
@@ -5033,75 +7017,91 @@
 "mbox\n"
 "          -bm -t < mbox         # ... using sendmail"
 msgstr ""
+"      hg email -o -m mbox &&    # сгенерировать mbox-файл ...\n"
+"        mutt -R -f mbox         # ... и посмотерть его в mutt\n"
+"      hg email -o -m mbox &&    # сгененрировать mbox-файл ...\n"
+"        formail -s sendmail \\   # ... и использовать formail для отправки "
+"mbox          -bm -t < mbox           # ... с помощью sendmail"
 
 msgid ""
 "    Before using this command, you will need to enable email in your\n"
 "    hgrc. See the [email] section in hgrc(5) for details.\n"
 "    "
 msgstr ""
+"    Перед использованием этой команды вам необходимо включить email\n"
+"    в вашем конфигурационном файле. См. секцию [email] в справке по\n"
+"    hgrc(5) для дополнительной информации.    "
 
 #, python-format
 msgid "comparing with %s\n"
-msgstr "сравниваю с %s\n"
+msgstr "сравниваем с %s\n"
 
 msgid "no changes found\n"
-msgstr "изменений не найдено\n"
+msgstr "изменения не найдены\n"
 
 msgid "specify at least one changeset with -r or -o"
-msgstr ""
+msgstr "укажите хотя бы один набор изменений для -r или -o "
 
 msgid "--outgoing mode always on with --bundle; do not re-specify --outgoing"
 msgstr ""
+"режим --outgoing всегда включен с --bundle; явный --outgoing не требуется"
 
 msgid "too many destinations"
-msgstr ""
+msgstr "слишком много хранилищ назначения"
 
 msgid "use only one form to specify the revision"
-msgstr ""
+msgstr "используйте одну форму задания ревизии"
 
 msgid ""
 "\n"
 "Write the introductory message for the patch series."
 msgstr ""
+"\n"
+"Напишите вводное письмо для серии патчей."
 
 #, python-format
 msgid "This patch series consists of %d patches."
-msgstr ""
+msgstr "Эта серия содержит %d патчей."
+
+msgid "no recipient addresses provided"
+msgstr "не указан адрес получателя"
 
 msgid ""
 "\n"
 "Final summary:"
 msgstr ""
-
+"\n"
+"Итоговая сводка:"
+
+# INPUT
 msgid "are you sure you want to send (yn)?"
-msgstr ""
-
+msgstr "вы уверены, что хотите отправить письмо (yn)?"
+
+# INPUT
 msgid "&No"
 msgstr "&Нет"
 
+# INPUT
 msgid "&Yes"
 msgstr "&Да"
 
 msgid "patchbomb canceled"
-msgstr ""
+msgstr "отправка отменена"
 
 msgid "Displaying "
-msgstr ""
-
-msgid "Writing "
-msgstr ""
+msgstr "Показывается "
+
+msgid "Sending "
+msgstr "Отправляется "
+
+msgid "sending"
+msgstr "отправка"
 
 msgid "writing"
-msgstr ""
-
-msgid "Sending "
-msgstr ""
-
-msgid "sending"
-msgstr ""
+msgstr "запись"
 
 msgid "show progress bars for some actions"
-msgstr ""
+msgstr "показать индикаторы выполнения для некоторых действий"
 
 msgid ""
 "This extension uses the progress information logged by hg commands\n"
@@ -5109,13 +7109,21 @@
 "bars only offer indeterminate information, while others have a definite\n"
 "end point."
 msgstr ""
+"Это расширение использует информацию о ходе выполнения операции,\n"
+"предоставляемую командами Mercurial, чтобы отобразить максимально\n"
+"информативные индикаторы выполнения. Некоторые индикаторы показывают\n"
+"олько неопределенную информацию, в то время как другие имеют\n"
+"определенную точку завершения."
 
 msgid "The following settings are available::"
-msgstr ""
+msgstr "Доступны следущюие настройки::"
 
 msgid ""
 "  [progress]\n"
 "  delay = 3 # number of seconds (float) before showing the progress bar\n"
+"  changedelay = 1 # changedelay: minimum delay before showing a new topic.\n"
+"                  # If set to less than 3 * refresh, that value will\n"
+"                  # be used instead.\n"
 "  refresh = 0.1 # time in seconds between refreshes of the progress bar\n"
 "  format = topic bar number estimate # format of the progress bar\n"
 "  width = <none> # if set, the maximum width of the progress information\n"
@@ -5125,7 +7133,21 @@
 "  assume-tty = False # if true, ALWAYS show a progress bar, unless\n"
 "                     # disable is given"
 msgstr ""
-
+"  [progress]\n"
+"  delay = 3 # количество секунд (дробное) до показа индикатора выполнения\n"
+"  changedelay = 1 # минимальная задержка перед показом нового этапа\n"
+"                  # Если меньше, чем 3 * refresh, то будет использовано\n"
+"                  # это значение вместо refresh.\n"
+"  refresh = 0.1 # время в секундах между обновлениями индикатора\n"
+"  format = topic bar number estimate # формат индикатора выполнения\n"
+"  width = <none> # если задан, максимальная ширина индикатора\n"
+"                 # (т.е., будет использован min(width, term width))\n"
+"  clear-complete = True # очистить индикатор после завершения операции\n"
+"  disable = False # если истина, не показывать индиктор выполнения\n"
+"  assume-tty = False # если истина, ВСЕГДА показывать индикатор, если\n"
+"                     # не задан disable"
+
+# TODO неадекват
 msgid ""
 "Valid entries for the format field are topic, bar, number, unit,\n"
 "estimate, speed, and item. item defaults to the last 20 characters of\n"
@@ -5133,89 +7155,107 @@
 "would take the last num characters, or ``+<num>`` for the first num\n"
 "characters.\n"
 msgstr ""
+"Допустимые значения для поля format - topic, bar, number, unit, estimate,\n"
+"speed и item. item по умолчанию устанавливается в последние 20 символов\n"
+"описания, но это можно изменить, добавляя ``-<число>``, который использует\n"
+"заданное число симоволов с конца, или ``+<число>``, чтобы использовать\n"
+"заданное число символов с начала.\n"
 
 #. i18n: format XX seconds as "XXs"
 #, python-format
 msgid "%02ds"
-msgstr ""
+msgstr "%02dс"
 
 #. i18n: format X minutes and YY seconds as "XmYYs"
 #, python-format
 msgid "%dm%02ds"
-msgstr ""
+msgstr "%dм%02dс"
 
 #. i18n: format X hours and YY minutes as "XhYYm"
 #, python-format
 msgid "%dh%02dm"
-msgstr ""
+msgstr "%dч%02dм"
 
 #. i18n: format X days and YY hours as "XdYYh"
 #, python-format
 msgid "%dd%02dh"
-msgstr ""
+msgstr "%dд%02dм"
 
 #. i18n: format X weeks and YY days as "XwYYd"
 #, python-format
 msgid "%dw%02dd"
-msgstr ""
+msgstr "%dн%02dд"
 
 #. i18n: format X years and YY weeks as "XyYYw"
 #, python-format
 msgid "%dy%02dw"
-msgstr ""
+msgstr "%dг%02dн"
 
 #, python-format
 msgid "%d %s/sec"
-msgstr ""
+msgstr "%d %s/сек"
 
 msgid "command to delete untracked files from the working directory"
-msgstr ""
+msgstr "команда для удаления неотслеживаемых файлов из рабочего каталога"
 
 msgid "abort if an error occurs"
-msgstr ""
+msgstr "прервать выполнение при возникновении ошибки"
 
 msgid "purge ignored files too"
-msgstr ""
+msgstr "зачистить также игнорируемые файлы"
 
 msgid "print filenames instead of deleting them"
-msgstr ""
+msgstr "напечатать имена файлов вместо их удаления"
 
 msgid "end filenames with NUL, for use with xargs (implies -p/--print)"
 msgstr ""
+"добавлять NUL после имен файлов для использования с xargs (подразумевает-p/--"
+"print)"
 
 msgid "hg purge [OPTION]... [DIR]..."
-msgstr ""
+msgstr "hg purge [ПАРАМЕТР]... [КАТАЛОГ]..."
 
 msgid "removes files not tracked by Mercurial"
-msgstr ""
+msgstr "удалить файлы, не отслеживаемые Mercurial"
 
 msgid ""
 "    Delete files not known to Mercurial. This is useful to test local\n"
 "    and uncommitted changes in an otherwise-clean source tree."
 msgstr ""
+"    Удаляет файлы, не известные Mercurial. Это бывает полезно, чтобы\n"
+"    протестировать локальные и незафиксированные изменения в чистом\n"
+"    во всех других отношениях дереве исходных файлов."
 
 msgid "    This means that purge will delete:"
-msgstr ""
+msgstr "    Это означает, что purge удалит:"
 
 msgid ""
 "    - Unknown files: files marked with \"?\" by :hg:`status`\n"
 "    - Empty directories: in fact Mercurial ignores directories unless\n"
 "      they contain files under source control management"
 msgstr ""
+"    - Неизвестные файлы: файлы, помеченные \"?\" в :hg:`status`\n"
+"    - Пустые каталоги: фактически, Mercurial игнорирует каталоги,\n"
+"      если они не содержат файлов, находящихся под контролем версий."
 
 msgid "    But it will leave untouched:"
-msgstr ""
+msgstr "    Но оставит нетронутыми:"
 
 msgid ""
 "    - Modified and unmodified tracked files\n"
 "    - Ignored files (unless --all is specified)\n"
 "    - New files added to the repository (with :hg:`add`)"
 msgstr ""
+"    - Измененные и неизмененные отслеживаемые файлы\n"
+"    - Игнорируемые файлы (если не указан --all)\n"
+"    - Новые файлы, добавленные в хранилище (с помощью :hg:`add`)"
 
 msgid ""
 "    If directories are given on the command line, only files in these\n"
 "    directories are considered."
 msgstr ""
+"    Если в командной строке заданы каталоги, рассматриваются только файлы\n"
+"    в этих каталогах."
 
 msgid ""
 "    Be careful with purge, as you could irreversibly delete some files\n"
@@ -5224,81 +7264,102 @@
 "    option.\n"
 "    "
 msgstr ""
+"    Будьте острожны с purge, т.к. вы можете необратимо удалить файлы,\n"
+"    которые вы забыли добавить в хранилище. Если вы просто хотите\n"
+"    напечатать список файлов, которые были бы удалены этой программой,\n"
+"    используйте параметр --print."
 
 #, python-format
 msgid "%s cannot be removed"
-msgstr ""
+msgstr "%s не может быть удален"
 
 #, python-format
 msgid "warning: %s\n"
-msgstr ""
+msgstr "предупреждение: %s\n"
 
 #, python-format
 msgid "Removing file %s\n"
-msgstr ""
+msgstr "Удаляем файл %s\n"
 
 #, python-format
 msgid "Removing directory %s\n"
-msgstr ""
+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"
 "repository."
 msgstr ""
+"Это расширение позволяет вам перебазировать наборы изменений в существующем\n"
+"хранилище Mercurial."
 
 msgid ""
 "For more information:\n"
 "http://mercurial.selenic.com/wiki/RebaseExtension\n"
 msgstr ""
+"Дополнительная информация:\n"
+"http://mercurial.selenic.com/wiki/RebaseExtension\n"
 
 msgid "rebase from the specified changeset"
-msgstr ""
+msgstr "перебазировать от указанного набора изменений"
 
 msgid ""
 "rebase from the base of the specified changeset (up to greatest common "
 "ancestor of base and dest)"
 msgstr ""
+"перебазировать от базовой ревизии указанного набора изменений (вплоть до "
+"первого общего предка базовой ревизии и ревизии назначения)"
+
+msgid "rebase these revisions"
+msgstr "перебазировать эти ревизии"
 
 msgid "rebase onto the specified changeset"
-msgstr ""
+msgstr "перебазировать на указанный набор изменений"
 
 msgid "collapse the rebased changesets"
-msgstr ""
+msgstr "объединить перебазированные наборы изменений"
 
 msgid "use text as collapse commit message"
 msgstr ""
+"использовать текст в качестве сообщения фиксации для объединенных наборов "
+"изменений"
+
+msgid "invoke editor on commit messages"
+msgstr "вызвать редактор для создания сообщения фиксации"
 
 msgid "read collapse commit message from file"
-msgstr ""
+msgstr "взять сообщения фиксации для объединенных наборов изменений из файла"
 
 msgid "keep original changesets"
-msgstr ""
+msgstr "сохранить исходные наборы изменений"
 
 msgid "keep original branch names"
-msgstr ""
+msgstr "сохранить исходные имена веток"
 
 msgid "force detaching of source from its original branch"
-msgstr ""
+msgstr "принудительно отцепить источник от его ветки-источника"
 
 msgid "specify merge tool"
 msgstr "задать инструмент слияния"
 
 msgid "continue an interrupted rebase"
-msgstr ""
+msgstr "продолжить прерванное перебазирование"
 
 msgid "abort an interrupted rebase"
-msgstr ""
-
+msgstr "отменить прерванное перебазирование"
+
+# BUG one line?
 msgid ""
 "hg rebase [-s REV | -b REV] [-d REV] [options]\n"
 "hg rebase {-a|-c}"
 msgstr ""
+"hg rebase [-s РЕВ | -b РЕВ] [-d РЕВ] [параметры]\n"
+"hg rebase {-a|-c}"
 
 msgid "move changeset (and descendants) to a different branch"
-msgstr ""
+msgstr "переместить наборы изменений (с потомками) на другую ветку"
 
 msgid ""
 "    Rebase uses repeated merging to graft changesets from one part of\n"
@@ -5306,6 +7367,10 @@
 "    useful for linearizing *local* changes relative to a master\n"
 "    development tree."
 msgstr ""
+"    Rebase использует повторяющиеся слияния, чтобы перенести наборы\n"
+"    изменений из одной части истории (источник) в другую (назначение).\n"
+"    Это может быть полезным для линеаризации *локальных* изменений\n"
+"    относительно основного дерева разработки."
 
 msgid ""
 "    You should not rebase changesets that have already been shared\n"
@@ -5313,6 +7378,11 @@
 "    same rebase or they will end up with duplicated changesets after\n"
 "    pulling in your rebased changesets."
 msgstr ""
+"    Не стоит перебазировать наборы изменений, которые уже были\n"
+"    опубликованы. Это заставит всех остальных также выполнить\n"
+"    перебазирование, поскольку в противном случае они получат\n"
+"    продублированные наборы изменений после того, как затянут\n"
+"    ваши перебазированные наборы изменений."
 
 msgid ""
 "    If you don't specify a destination changeset (``-d/--dest``),\n"
@@ -5320,6 +7390,11 @@
 "    destination. (The destination changeset is not modified by\n"
 "    rebasing, but new changesets are added as its descendants.)"
 msgstr ""
+"    Если вы не укажете ревизию назначения (``-d/--dest``),\n"
+"    rebase использует оконечную голову текущей именованной ветки\n"
+"    в качестве назначения. (Набор изменения назначения не изменяется\n"
+"    при перебазировании, но новые наборы изменений добавляются\n"
+"    в качестве его потомков)"
 
 msgid ""
 "    You can specify which changesets to rebase in two ways: as a\n"
@@ -5334,6 +7409,20 @@
 "    the whole branch. If you specify neither ``-s`` nor ``-b``, rebase\n"
 "    uses the parent of the working directory as the base."
 msgstr ""
+"    Можно задавать ревизии для перебазирования двумя способами: \n"
+"    как \"исходный\" набор изменений, или как \"базовый\". Оба они\n"
+"    являются сокращениями для топологически связанных множеств\n"
+"    наборов изменений (\"исходная ветка\"). Если вы указываете\n"
+"    источник наборов изменений (``-s/--source``), то производится\n"
+"    перебазирование этого набора изменений и всех его потомков\n"
+"    на ревизию назначения. Если задается базовый набор изменений\n"
+"    (``-b/--base``), rebase выберет его предков вплоть до последнего\n"
+"    общего с ревизией назначения, не включая ее саму. Т.о., ``-b``\n"
+"    менее точный, но более удобный, чем ``-s``: вы можете указать\n"
+"    любой набор изменений в исходной ветке, и rebase выберет всю\n"
+"    ветку. Если не указан ни ``-s``, ни ``-b``, rebase использует\n"
+"    родительскую ревизию рабочего каталога в качестве базового\n"
+"    набора изменений."
 
 msgid ""
 "    By default, rebase recreates the changesets in the source branch\n"
@@ -5342,6 +7431,12 @@
 "    changesets in the source branch (e.g. merges from the destination\n"
 "    branch) may be dropped if they no longer contribute any change."
 msgstr ""
+"    По умолчанию rebase заново создает наборы изменений в ветке-источнике\n"
+"    как потомков ревизии назначения, после чего удаляет оригиналы.\n"
+"    Используйте ``--keep`` чтобы сохранить оригиналы в источнике.\n"
+"    Некоторые наборы изменений в ветке-источнике (например, слияния\n"
+"    с веткой назначения) могут быть выброшены, если они более не\n"
+"    вносят никаких изменений."
 
 msgid ""
 "    One result of the rules for selecting the destination changeset\n"
@@ -5351,109 +7446,145 @@
 "    destination (or ``update`` to the other head, if it's the head of\n"
 "    the intended source branch)."
 msgstr ""
+"    Одним из следствий правил выбора ревизии назначения и ветки-источника\n"
+"    является то, что, в отличие от ``слияния``, rebase не сделает ничего,\n"
+"    если вы не на самой поздней (оконечной) голове именованной ветки\n"
+"    с двумя головами. Требуется явно указать источник и/или назначение\n"
+"    (или обноваться на другую голову, если это голова предполагаемой\n"
+"    ветки-источника)."
 
 msgid ""
 "    If a rebase is interrupted to manually resolve a merge, it can be\n"
 "    continued with --continue/-c or aborted with --abort/-a."
 msgstr ""
+"    Если перебазирование прерывается для ручного разрешения конфликтов\n"
+"    при слиянии, его можно продолжить с помощью --continue/-c или\n"
+"    отменить с помощью --abort/-a."
 
 msgid ""
 "    Returns 0 on success, 1 if nothing to rebase.\n"
 "    "
 msgstr ""
+"    В случае успеха возвращает 0, 1 если нечего перебазировать.\n"
+"    "
 
 msgid "message can only be specified with collapse"
-msgstr ""
+msgstr "сообщение можно задавать только при объединении"
 
 msgid "cannot use both abort and continue"
-msgstr ""
+msgstr "нельзя одновременно указывать abort и continue"
 
 msgid "cannot use collapse with continue or abort"
-msgstr ""
+msgstr "нельзя использовать collapse с continue или abort"
 
 msgid "cannot use detach with continue or abort"
-msgstr ""
+msgstr "нельзя использовать detach с continue или abort"
 
 msgid "abort and continue do not allow specifying revisions"
-msgstr ""
+msgstr "abort и continue не позволяют задавать ревизии"
 
 msgid "tool option will be ignored\n"
-msgstr ""
+msgstr "параметр tool будет проигнорирован\n"
+
+msgid "cannot specify both a source and a base"
+msgstr "нельзя задавать source и base одновременно"
 
 msgid "cannot specify both a revision and a base"
-msgstr ""
+msgstr "нельзя одновременно задавать ревизию и base"
+
+msgid "cannot specify both a revision and a source"
+msgstr "нельзя указывать одновременно ревизию и source"
 
 msgid "detach requires a revision to be specified"
-msgstr ""
+msgstr "detach требует указания ревизии"
 
 msgid "cannot specify a base with detach"
-msgstr ""
+msgstr "нельзя задавать base с detach"
+
+msgid "can't remove original changesets with unrebased descendants"
+msgstr ""
+"не удается удалить исходный набор изменений с неперебазированными потомками"
+
+msgid "use --keep to keep original changesets"
+msgstr "используйте --keep чтобы оставить исходные наборы изменений"
 
 msgid "nothing to rebase\n"
-msgstr ""
+msgstr "нечего перебазировать\n"
+
+msgid "cannot collapse multiple named branches"
+msgstr "не могу объединить несколько именованных веток"
 
 msgid "rebasing"
-msgstr ""
+msgstr "перебазируем"
 
 msgid "changesets"
-msgstr ""
+msgstr "наборы изменений"
 
 msgid "unresolved conflicts (see hg resolve, then hg rebase --continue)"
-msgstr ""
+msgstr "неулаженные конфликты ( см. hg resolve, потом hg rebase --continue)"
 
 #, python-format
 msgid "no changes, revision %d skipped\n"
-msgstr ""
+msgstr "нет изменений, ревизия %d пропущена\n"
 
 msgid "rebase merging completed\n"
-msgstr ""
+msgstr "слияние перебазирования завершено\n"
 
 msgid "warning: new changesets detected on source branch, not stripping\n"
 msgstr ""
+"внимание: новые наборы изменений обнаружены на ветке-источнике, не "
+"срезаются\n"
 
 msgid "rebase completed\n"
-msgstr ""
+msgstr "перебазирование завершено\n"
 
 #, python-format
 msgid "%d revisions have been skipped\n"
-msgstr ""
+msgstr "было пропущено %d ревизий\n"
 
 msgid "unable to collapse, there is more than one external parent"
-msgstr ""
+msgstr "не удается объединить - более одного внешнего родителя"
 
 #, python-format
 msgid "cannot use revision %d as base, result would have 3 parents"
 msgstr ""
+"не могу использовать ревизию %d в качестве базовой, результат будет иметь 3 "
+"родителя"
 
 msgid "no rebase in progress"
-msgstr ""
+msgstr "нет прерванного перебазирования"
 
 msgid "warning: new changesets detected on target branch, can't abort\n"
 msgstr ""
+"внимание: новые наборы изменений обнаружены на ветке назначения, отмена "
+"невозможна\n"
 
 msgid "rebase aborted\n"
-msgstr ""
+msgstr "перебазирование отменено\n"
 
 msgid "cannot rebase onto an applied mq patch"
-msgstr ""
+msgstr "не могу перебазировать на наложенный патч mq"
+
+msgid "no matching revisions"
+msgstr "нет подходящих ревизий"
+
+msgid "can't rebase multiple roots"
+msgstr "не могу перебазировать несколько корневых ревизий"
 
 msgid "source is ancestor of destination"
-msgstr ""
-
-msgid "source is descendant of destination"
-msgstr ""
+msgstr "источник является предком ревизии назначения"
 
 msgid "--tool can only be used with --rebase"
-msgstr ""
+msgstr "--tool можно использовать только вместе с --rebase"
 
 msgid "rebase working directory to branch head"
-msgstr "перебазировать рабочий каталог поверх головы ветви"
+msgstr "перебазировать рабочий каталог поверх головы ветки"
 
 msgid "specify merge tool for rebase"
 msgstr "задать программу для слияния при перебазировании"
 
 msgid "commands to interactively select changes for commit/qrefresh"
-msgstr ""
+msgstr "команды для интерактивного выбора изменений для commit/qrefresh"
 
 msgid "ignore white space when comparing lines"
 msgstr "игнорировать пробельные символы при сравнении строк"
@@ -5758,6 +7889,17 @@
 "    "
 msgstr ""
 
+msgid "convert a shared repository to a normal one"
+msgstr "Преобразовать разделяемое хранилище в обычное"
+
+msgid ""
+"    Copy the store data to the repo and remove the sharedpath data.\n"
+"    "
+msgstr ""
+
+msgid "this is not a shared repo"
+msgstr "это не разделяемое хранилище"
+
 msgid "do not create a working copy"
 msgstr ""
 
@@ -5845,7 +7987,7 @@
 msgstr ""
 
 msgid "BRANCH"
-msgstr "ВЕТВЬ"
+msgstr "ВЕТКА"
 
 msgid "pull patches from branch BRANCH"
 msgstr ""
@@ -6150,103 +8292,106 @@
 "  zc-test = http://example.com:8000/test\n"
 msgstr ""
 
+# }}} End of extensions
 msgid "archive prefix contains illegal components"
-msgstr ""
-
-msgid "cannot give prefix when archiving to files"
-msgstr ""
-
-#, python-format
-msgid "unknown archive type '%s'"
-msgstr ""
+msgstr "префикс архива содержит недопустимые компоненты"
 
 msgid "archiving"
-msgstr ""
+msgstr "архивирование"
+
+#, python-format
+msgid "malformed line in .hg/bookmarks: %r\n"
+msgstr "плохая строка в .hg/bookmarks: %r\n"
 
 #, python-format
 msgid "bookmark '%s' contains illegal character"
-msgstr ""
+msgstr "закладка '%s' содержит недопустимый символ"
 
 #, python-format
 msgid "branch %s not found"
-msgstr ""
+msgstr "ветка %s не найдена"
 
 #, python-format
 msgid "updating bookmark %s\n"
-msgstr ""
-
-#, python-format
-msgid "not updating divergent bookmark %s\n"
-msgstr ""
+msgstr "обновление закладки %s\n"
+
+# NOT-SURE
+#, python-format
+msgid "divergent bookmark %s stored as %s\n"
+msgstr "закладка на расходящейся ревизии %s сохранена как %s\n"
 
 msgid "searching for changed bookmarks\n"
-msgstr ""
+msgstr "поиск изменившихся закладок\n"
 
 msgid "no changed bookmarks found\n"
-msgstr ""
+msgstr "измененных закладок не найдено\n"
 
 msgid "unknown parent"
-msgstr ""
+msgstr "неизвестный родитель"
 
 #, python-format
 msgid "integrity check failed on %s:%d"
-msgstr ""
+msgstr "ошибка при проверке целостности %s:%d"
 
 msgid "cannot create new bundle repository"
-msgstr ""
+msgstr "невозможно создать новое хранилище-комплект (bundle)"
 
 #, python-format
 msgid "stream ended unexpectedly (got %d bytes, expected %d)"
-msgstr ""
+msgstr "неожиданное завершение потока (получено %d байт, ожидалось %d)"
 
 #, python-format
 msgid "invalid chunk length %d"
-msgstr ""
+msgstr "неверная длина участка %d"
 
 #, python-format
 msgid "%s: not a Mercurial bundle"
-msgstr ""
+msgstr "%s: не комплект Mercurial"
 
 #, python-format
 msgid "%s: unknown bundle version %s"
-msgstr ""
+msgstr "%s: неизвестная версия комплекта %s"
 
 msgid "empty username"
-msgstr ""
+msgstr "пустое имя пользователя"
 
 #, python-format
 msgid "username %s contains a newline"
-msgstr ""
+msgstr "имя пользователя %s содержит перевод строки"
 
 #, python-format
 msgid "the name '%s' is reserved"
 msgstr "имя '%s' зарезервировано"
 
+#, python-format
+msgid "uncommitted changes in subrepo %s"
+msgstr "незафиксированные изменения в подхранилище %s"
+
 msgid "options --message and --logfile are mutually exclusive"
-msgstr ""
+msgstr "параметры --massage и --logfile взаимно исключающие"
 
 #, python-format
 msgid "can't read commit message '%s': %s"
-msgstr ""
+msgstr "не удается прочитать сообщение фиксации '%s': %s"
 
 msgid "limit must be a positive integer"
-msgstr ""
+msgstr "ограничение должено быть положительным целым числом"
 
 msgid "limit must be positive"
-msgstr ""
+msgstr "ограничение должно быть положительным"
 
 #, python-format
 msgid "invalid format spec '%%%s' in output filename"
-msgstr ""
+msgstr "неверная спецификация формата '%%%s' в имени выходного файла"
 
 msgid "cannot specify --changelog and --manifest at the same time"
-msgstr ""
+msgstr "нельзя указывать --changelog и --manifest одновременно"
 
 msgid "cannot specify filename with --changelog or --manifest"
-msgstr ""
+msgstr "нельзя задавать имя файла с --changelog или --manifest"
 
 msgid "cannot specify --changelog or --manifest without a repository"
-msgstr ""
+msgstr "нельзя задавать --changelog или --manifest без хранилища"
 
 msgid "invalid arguments"
 msgstr "неверные параметры"
@@ -6257,202 +8402,208 @@
 
 #, python-format
 msgid "%s: not copying - file is not managed\n"
-msgstr ""
+msgstr "%s: не копируется - файл не контролируется\n"
 
 #, python-format
 msgid "%s: not copying - file has been marked for remove\n"
-msgstr ""
+msgstr "%s: не копируется - файл был помечен для удаления\n"
 
 #, python-format
 msgid "%s: not overwriting - %s collides with %s\n"
-msgstr ""
+msgstr "%s: не перезаписывается - %s конфликтует с %s\n"
 
 #, python-format
 msgid "%s: not overwriting - file exists\n"
-msgstr ""
+msgstr "%s: не перезаписывается - файл существует\n"
 
 #, python-format
 msgid "%s: not recording move - %s does not exist\n"
-msgstr ""
+msgstr "%s: перемещение не записывается - %s не существует\n"
 
 #, python-format
 msgid "%s: not recording copy - %s does not exist\n"
-msgstr ""
+msgstr "%s: копирование не записывается - %s не существует\n"
 
 #, python-format
 msgid "%s: deleted in working copy\n"
-msgstr ""
+msgstr "%s: удален в рабочей копии\n"
 
 #, python-format
 msgid "%s: cannot copy - %s\n"
-msgstr ""
+msgstr "%s: не удается скопировать - %s\n"
 
 #, python-format
 msgid "moving %s to %s\n"
-msgstr ""
+msgstr "%s перемещается в %s\n"
 
 #, python-format
 msgid "copying %s to %s\n"
-msgstr ""
+msgstr "%s копируется в %s\n"
 
 msgid "no source or destination specified"
-msgstr ""
+msgstr "не указан источник или назначение"
 
 msgid "no destination specified"
-msgstr ""
+msgstr "не указано назначение"
 
 msgid "with multiple sources, destination must be an existing directory"
 msgstr ""
+"если задано несколько источников, назначение должно быть существующим "
+"каталогом"
 
 #, python-format
 msgid "destination %s is not a directory"
-msgstr ""
-
-msgid "no files to copy"
-msgstr ""
+msgstr "назначение %s не является каталогом"
 
 msgid "(consider using --after)\n"
-msgstr ""
+msgstr "(попробуйте использовать --after?)\n"
 
 msgid "child process failed to start"
-msgstr ""
-
+msgstr "не удалось запустить дочерний процесс"
+
+# может сделать "набор изм-й" или "ревизия" для экономии места?
 #, python-format
 msgid "changeset:   %d:%s\n"
-msgstr ""
+msgstr "набор изменений:  %d:%s\n"
 
 #, python-format
 msgid "branch:      %s\n"
-msgstr ""
+msgstr "ветка:            %s\n"
 
 #, python-format
 msgid "bookmark:    %s\n"
-msgstr ""
+msgstr "закладка:         %s\n"
 
 #, python-format
 msgid "tag:         %s\n"
-msgstr ""
+msgstr "метка:            %s\n"
 
 #, python-format
 msgid "parent:      %d:%s\n"
-msgstr ""
+msgstr "родитель:         %d:%s\n"
 
 #, python-format
 msgid "manifest:    %d:%s\n"
-msgstr ""
+msgstr "манифест:         %d:%s\n"
 
 #, python-format
 msgid "user:        %s\n"
-msgstr ""
+msgstr "пользователь:     %s\n"
 
 #, python-format
 msgid "date:        %s\n"
-msgstr ""
+msgstr "дата:             %s\n"
 
 msgid "files+:"
-msgstr ""
+msgstr "файлов+:"
 
 msgid "files-:"
-msgstr ""
+msgstr "файлов-:"
 
 msgid "files:"
-msgstr ""
+msgstr "файлы:"
 
 #, python-format
 msgid "files:       %s\n"
-msgstr ""
+msgstr "файлы:            %s\n"
 
 #, python-format
 msgid "copies:      %s\n"
-msgstr ""
+msgstr "скопировано:      %s\n"
 
 #, python-format
 msgid "extra:       %s=%s\n"
-msgstr ""
+msgstr "дополнительно:    %s=%s\n"
 
 msgid "description:\n"
-msgstr ""
+msgstr "описание:\n"
 
 #, python-format
 msgid "summary:     %s\n"
-msgstr ""
+msgstr "сводка:           %s\n"
 
 #, python-format
 msgid "%s: no key named '%s'"
-msgstr ""
-
-#, python-format
+msgstr "%s: нет ключа с именем '%s'"
+
+# может, не из а от?
+#, fuzzy, python-format
 msgid "Found revision %s from %s\n"
-msgstr ""
+msgstr "найдена ревизия %s из %s\n"
 
 msgid "revision matching date not found"
-msgstr ""
+msgstr "не найдена ревизия для данной даты"
 
 #, python-format
 msgid "cannot follow nonexistent file: \"%s\""
-msgstr ""
+msgstr "невозможно отслеживать несуществующий файл: \"%s\""
 
 msgid "can only follow copies/renames for explicit filenames"
 msgstr ""
+"чтобы отслеживать копирования/переименовывания, требуется явное имя файла"
 
 #, python-format
 msgid "adding %s\n"
-msgstr "добавляю %s\n"
+msgstr "добавлется %s\n"
 
 #, python-format
 msgid "skipping missing subrepository: %s\n"
-msgstr ""
+msgstr "пропускается отсутствующее подхранилище: %s\n"
 
 msgid "HG: Enter commit message.  Lines beginning with 'HG:' are removed."
 msgstr ""
+"HG: Введите сообщение фиксации. Строки, начинающиеся с 'HG:' будут удалены."
 
 msgid "HG: Leave message empty to abort commit."
-msgstr ""
+msgstr "HG: Оставьте сообщение пустым, чтобы отменить фиксацию."
 
 #, python-format
 msgid "HG: user: %s"
-msgstr ""
+msgstr "HG: пользователь: %s"
 
 msgid "HG: branch merge"
-msgstr ""
+msgstr "HG: слияние веток"
 
 #, python-format
 msgid "HG: branch '%s'"
-msgstr ""
+msgstr "HG: ветка '%s'"
 
 #, python-format
 msgid "HG: subrepo %s"
-msgstr ""
-
+msgstr "HG: подхранилище %s"
+
+# UGLY
 #, python-format
 msgid "HG: added %s"
-msgstr ""
-
+msgstr "HG: добавлен(ы) %s"
+
+# UGLY
 #, python-format
 msgid "HG: changed %s"
-msgstr ""
-
+msgstr "HG: изменен(ы) %s"
+
+# UGLY
 #, python-format
 msgid "HG: removed %s"
-msgstr ""
+msgstr "HG: удален(ы) %s"
 
 msgid "HG: no files changed"
-msgstr ""
+msgstr "HG: нет измененных файлов"
 
 msgid "empty commit message"
-msgstr ""
+msgstr "пустое сообщение фиксации"
 
 msgid "repository root directory or name of overlay bundle file"
-msgstr "корневой каталог репозитория или файл бандла"
+msgstr "корневой каталог хранилища или файл бандла"
 
 msgid "DIR"
-msgstr "ДИР"
+msgstr "КАТАЛОГ"
 
 msgid "change working directory"
 msgstr "сменить рабочий каталог"
 
-msgid "do not prompt, assume 'yes' for any required answers"
-msgstr "не спрашивать подтверждания, всегда автоматически отвечать 'да'"
+msgid "do not prompt, automatically pick the first choice for all prompts"
+msgstr "не спрашивать, на все вопросы автоматически выбирать первый вариант"
 
 msgid "suppress output"
 msgstr "подавлять вывод"
@@ -6462,7 +8613,8 @@
 
 msgid "set/override config option (use 'section.name=value')"
 msgstr ""
-"задать/переопределить параметр конфига (в виде 'секция.параметр=значение')"
+"задать/переопределить параметр конфигурации (в виде 'секция."
+"параметр=значение')"
 
 msgid "CONFIG"
 msgstr "КОНФИГ"
@@ -6507,7 +8659,7 @@
 msgstr "используемая команда для ssh"
 
 msgid "specify hg command to run on the remote side"
-msgstr "комадна Mercurial, которая будет запущена на удаленном компьютере"
+msgstr "команда Mercurial, которая будет запущена на отдалённом компьютере"
 
 msgid "do not verify server certificate (ignoring web.cacerts config)"
 msgstr "не проверять сертификат сервера (игнорируя настройку web.cacerts)"
@@ -6516,22 +8668,22 @@
 msgstr "ШАБЛОН"
 
 msgid "include names matching the given patterns"
-msgstr "включить файлы, имена которых соответствуют данным шаблонам"
+msgstr "добавить файлы, имена которых соответствуют данным шаблонам"
 
 msgid "exclude names matching the given patterns"
-msgstr "исключить файлы, имена которых соответствуют данным шаблонам"
+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 "использовать эту дату в качестве даты коммита"
+msgstr "использовать эту дату в качестве даты фиксации"
 
 msgid "record the specified user as committer"
-msgstr "использовать этого пользователя как автора коммита"
+msgstr "использовать этого пользователя как автора фиксации"
 
 msgid "STYLE"
 msgstr "СТИЛЬ"
@@ -6571,33 +8723,34 @@
 "считать файлы переименованными исходя из степени их похожести (от 0 до 100)"
 
 msgid "recurse into subrepositories"
-msgstr "рекурсивно обрабатывать субрепозитории"
+msgstr "рекурсивно обрабатывать подхранилища"
 
 msgid "[OPTION]... [FILE]..."
 msgstr "[ПАРАМЕТР]... [ФАЙЛ]..."
 
 msgid "add the specified files on the next commit"
-msgstr "добавить указанный файл при следующем коммите"
+msgstr "добавить указанный файл при следующей фиксации"
 
 msgid ""
 "    Schedule files to be version controlled and added to the\n"
 "    repository."
 msgstr ""
 "    Планирует помещение файлов под контроль версий и\n"
-"    добавление их в репозиторий."
+"    добавление их в хранилище."
 
 msgid ""
 "    The files will be added to the repository at the next commit. To\n"
 "    undo an add before that, see :hg:`forget`."
 msgstr ""
-"    Файлы будут добавлены в репозиторий при следующем коммите. Чтобы\n"
-"    отменить добавление до коммита, см. :hg:`forget`."
+"    Файлы будут добавлены в хранилище при следующей фиксации. Чтобы\n"
+"    отменить добавление до фиксации, см. :hg:`forget`."
 
 msgid "    If no names are given, add all files to the repository."
 msgstr "    Если имена файлов не заданы, в будут добавлены все файлы."
 
+# does this require a translation?
 msgid "    .. container:: verbose"
-msgstr ""
+msgstr "    .. container:: подробный"
 
 msgid ""
 "       An example showing how new (unknown) files are added\n"
@@ -6633,14 +8786,14 @@
 "    "
 
 msgid "add all new files, delete all missing files"
-msgstr "добавить все новые, удалить все отсутвующие файлы"
+msgstr "добавить все новые, удалить все отсутствующие файлы"
 
 msgid ""
 "    Add all new files and remove all missing files from the\n"
 "    repository."
 msgstr ""
-"    Добавляет все новые и удаляет все отсутсвующие файлы из\n"
-"    репозитория."
+"    Добавляет все новые и удаляет все отсутствующие файлы из\n"
+"    хранилища."
 
 msgid ""
 "    New files are ignored if they match any of the patterns in\n"
@@ -6649,7 +8802,7 @@
 msgstr ""
 "    Новые файлы игнорируются, если они подходят под любой шаблон\n"
 "    в ``.hgignore``. Аналогично команде ``add``, изменения фиксируются\n"
-"    при следующем коммите."
+"    при следующей фиксации."
 
 msgid ""
 "    Use the -s/--similarity option to detect renamed files. With a\n"
@@ -6660,12 +8813,12 @@
 "    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 ""
-"    Используйте параметр -s/--similarity чтобы найти переименованные\n"
+"    Используйте параметр -s/--similarity, чтобы найти переименованные\n"
 "    файлы. Если этот параметр больше 0, то производится сравнение\n"
-"    каждого удаленного файла с каждым добавленным, и если они достаточно\n"
+"    каждого отдалённого файла с каждым добавленным, и если они достаточно\n"
 "    похожи, то это фиксируется как переименование. Этот параметр принимает\n"
 "    в качестве параметра \"процент похожести\" от 0 (отключено) до 100\n"
-"    (файлы дожны быть одинаковыми). Этот способ нахождения\n"
+"    (файлы должны быть одинаковыми). Этот способ нахождения\n"
 "    переименованных файлов может оказать дорогим. После использования\n"
 "    этого параметра можно использовать :hg:`status -C` чтобы проверить,\n"
 "    какие файлы были идентифицированы как перемещенные или\n"
@@ -6721,7 +8874,7 @@
 "    This command is useful for discovering when a change was made and\n"
 "    by whom."
 msgstr ""
-"    Эта комадна полезна для того чтобы узнать, когда и кем было внесено\n"
+"    Эта команда полезна для того, чтобы узнать, когда и кем было внесено\n"
 "    изменение."
 
 msgid ""
@@ -6764,7 +8917,7 @@
 msgstr "[ПАРАМЕТР]... НАЗНАЧЕНИЕ"
 
 msgid "create an unversioned archive of a repository revision"
-msgstr "создать неверсионируемую архивную копию ревизии из репозитория"
+msgstr "создать неверсионируемую архивную копию ревизии из хранилища"
 
 msgid ""
 "    By default, the revision used is the parent of the working\n"
@@ -6780,6 +8933,21 @@
 "    Тип архива выбирается автоматически на основе расширения файла\n"
 "    (можно переопределить с помощью -t/--type)."
 
+msgid "      Examples:"
+msgstr "      Примеры::"
+
+msgid "      - create a zip file containing the 1.0 release::"
+msgstr "      - создать zip-файл, содержащий релиз 1.0::"
+
+msgid "          hg archive -r 1.0 project-1.0.zip"
+msgstr "          hg archive -r 1.0 project-1.0.zip"
+
+msgid "      - create a tarball excluding .hg files::"
+msgstr "      - создать тарбол (tarball), исключив файлы .hg::"
+
+msgid "          hg archive project.tar.gz -X \".hg*\""
+msgstr "          hg archive project.tar.gz -X \".hg*\""
+
 msgid "    Valid types are:"
 msgstr "    Допустимые типы:"
 
@@ -6813,14 +8981,14 @@
 msgstr ""
 "    К каждому элементу архива добавляется префикс в виде имени\n"
 "    каталога. Префикс может быть задан в виде форматирующей строки\n"
-"    с помощью -p/--prefix. По умолчанию это имя архива с удаленным\n"
-"    расширением."
+"    с помощью -p/--prefix. По умолчанию это собственное имя архива,\n"
+"    с отрезанными суффиксами."
 
 msgid "no working directory: please specify a revision"
 msgstr "нет рабочего каталога: пожалуйста, укажите ревизию"
 
 msgid "repository root cannot be destination"
-msgstr "корень репозитория не может быть назначением"
+msgstr "корень хранилища не может быть назначением"
 
 msgid "cannot archive plain files to stdout"
 msgstr "не могу архивировать обычный каталог в stdout"
@@ -6828,8 +8996,8 @@
 msgid "merge with old dirstate parent after backout"
 msgstr "слить со старым родителем после завершения"
 
-msgid "parent to choose when backing out merge"
-msgstr "выбираемая родительская ревизия при отмене слияния"
+msgid "parent to choose when backing out merge (DEPRECATED)"
+msgstr "выбираемая родительская ревизия при отмене слияния (УСТАРЕЛО)"
 
 msgid "revision to backout"
 msgstr "ревизия для отмены"
@@ -6853,32 +9021,41 @@
 "    changes and the merged result is left uncommitted."
 msgstr ""
 "    Если РЕВИЗИЯ - родитель рабочего каталога, то созданный набор\n"
-"    изменений коммитится автоматически. В противном случае Mercurial\n"
+"    изменений фиксируется автоматически. В противном случае Mercurial\n"
 "    проводит слияние изменений, результат слияния остается\n"
-"    незакоммиченным."
-
-msgid ""
-"    By default, the pending changeset will have one parent,\n"
-"    maintaining a linear history. With --merge, the pending changeset\n"
-"    will instead have two parents: the old parent of the working\n"
-"    directory and a new child of REV that simply undoes REV."
-msgstr ""
-"    По умолчанию, созданный набор изменений будет иметь одного\n"
-"    родителя, что сохраняет линейую история. Если указан --merge,\n"
-"    он будет иметь двух родителей: предыдущего родителя рабочего\n"
-"    каталога и новую дочернюю ревизию РЕВИЗИИ, которая просто\n"
-"    отменяет ее действие."
-
-msgid ""
-"    Before version 1.7, the behavior without --merge was equivalent to\n"
-"    specifying --merge followed by :hg:`update --clean .` to cancel\n"
-"    the merge and leave the child of REV as a head to be merged\n"
-"    separately."
-msgstr ""
-"    До версии 1.7 поведение без --merge было эквивалентно поведению\n"
-"    с --merge с последующим :hg:`update --clean .` с целью отменить\n"
-"    слияние и оставить дочернюю ревизию РЕВИЗИИ как голову для\n"
-"    для дальнейшего слияния"
+"    незафиксированным."
+
+msgid ""
+"    .. note::\n"
+"      backout cannot be used to fix either an unwanted or\n"
+"      incorrect merge."
+msgstr ""
+"    .. note::\n"
+"       backout не может использоваться для исправления нежелательного\n"
+"       или некорректного слияния."
+
+msgid ""
+"      By default, the pending changeset will have one parent,\n"
+"      maintaining a linear history. With --merge, the pending\n"
+"      changeset will instead have two parents: the old parent of the\n"
+"      working directory and a new child of REV that simply undoes REV."
+msgstr ""
+"      По умолчанию, созданный набор изменений будет иметь одного\n"
+"      родителя, что сохраняет линейную история. Если указан --merge,\n"
+"      он будет иметь двух родителей: предыдущего родителя рабочего\n"
+"      каталога и новую дочернюю ревизию РЕВИЗИИ, которая просто\n"
+"      отменяет ее действие."
+
+msgid ""
+"      Before version 1.7, the behavior without --merge was equivalent\n"
+"      to specifying --merge followed by :hg:`update --clean .` to\n"
+"      cancel the merge and leave the child of REV as a head to be\n"
+"      merged separately."
+msgstr ""
+"      До версии 1.7 поведение без --merge было эквивалентно поведению\n"
+"      с --merge с последующим :hg:`update --clean .` с целью отменить\n"
+"      слияние и оставить дочернюю ревизию РЕВИЗИИ как голову для\n"
+"      для дальнейшего слияния"
 
 msgid "please specify just one revision"
 msgstr "пожалуйста, укажите ровно одну ревизию"
@@ -6892,8 +9069,8 @@
 msgid "cannot backout a change with no parents"
 msgstr "не могу отменить ревизию без родителей"
 
-msgid "cannot backout a merge changeset without --parent"
-msgstr "немогу отменить ревизию слияния без --parent"
+msgid "cannot backout a merge changeset"
+msgstr "не могу отменить ревизию слияния"
 
 #, python-format
 msgid "%s is not a parent of %s"
@@ -6979,6 +9156,102 @@
 "    ревизию, 127 (команда не найдена) отменяет поиск, любой другой\n"
 "    код возврата означает плохую ревизию."
 
+msgid "      Some examples:"
+msgstr "      Несколько примеров::"
+
+msgid ""
+"      - start a bisection with known bad revision 12, and good revision 34::"
+msgstr "      - начать бисекцию с известной плохой ревизией 12, хорошей 34::"
+
+msgid ""
+"          hg bisect --bad 34\n"
+"          hg bisect --good 12"
+msgstr ""
+"          hg bisect --bad 34\n"
+"          hg bisect --good 12"
+
+msgid ""
+"      - advance the current bisection by marking current revision as good "
+"or\n"
+"        bad::"
+msgstr ""
+"      - продвинуть текущую бисекцию, пометив текущую ревизию как плохую или "
+"хорошую::"
+
+msgid ""
+"          hg bisect --good\n"
+"          hg bisect --bad"
+msgstr ""
+"          hg bisect --good\n"
+"          hg bisect --bad"
+
+msgid ""
+"      - mark the current revision, or a known revision, to be skipped (eg. "
+"if\n"
+"        that revision is not usable because of another issue)::"
+msgstr ""
+"      - пометить текущую или известную ревизию для пропуска (например,\n"
+"        потому что ее нельзя использовать из-за другой проблемы)::"
+
+msgid ""
+"          hg bisect --skip\n"
+"          hg bisect --skip 23"
+msgstr ""
+"          hg bisect --skip\n"
+"          hg bisect --skip 23"
+
+msgid "      - forget the current bisection::"
+msgstr "      - забыть текущую бисекцию::"
+
+msgid "          hg bisect --reset"
+msgstr "          hg bisect --reset"
+
+msgid ""
+"      - use 'make && make tests' to automatically find the first broken\n"
+"        revision::"
+msgstr ""
+"      - использовать команду 'make && make tests' для автоматического\n"
+"        поиска первой нерабочей ревизии::"
+
+msgid ""
+"          hg bisect --reset\n"
+"          hg bisect --bad 34\n"
+"          hg bisect --good 12\n"
+"          hg bisect --command 'make && make tests'"
+msgstr ""
+"          hg bisect --reset\n"
+"          hg bisect --bad 34\n"
+"          hg bisect --good 12\n"
+"          hg bisect --command 'make && make tests'"
+
+msgid ""
+"      - see all changesets whose states are already known in the current\n"
+"        bisection::"
+msgstr ""
+"      - посмтреть все наборы изменений, чьи состояния уже известны в\n"
+"        текущей бисекции::"
+
+msgid "          hg log -r \"bisect(pruned)\""
+msgstr "          hg log -r \"bisect(pruned)\""
+
+msgid "      - see all changesets that took part in the current bisection::"
+msgstr ""
+"      - посмотреть все наборы изменений, которые участвовали в текущей "
+"бисекции::"
+
+msgid "          hg log -r \"bisect(range)\""
+msgstr "          hg log -r \"bisect(range)\""
+
+msgid "      - with the graphlog extension, you can even get a nice graph::"
+msgstr ""
+"      - с расширением graphlog, вы даже можете получить симпатичный граф::"
+
+msgid "          hg log --graph -r \"bisect(range)\""
+msgstr "          hg log --graph -r \"bisect(range)\""
+
+msgid "      See :hg:`help revsets` for more about the `bisect()` keyword."
+msgstr "    Подробнее о `bisect()` см. :hg:`help revsets`."
+
 msgid "The first good revision is:\n"
 msgstr "Первая хорошая ревизия:\n"
 
@@ -7043,7 +9316,7 @@
 msgstr "удалить указанную закладку"
 
 msgid "rename a given bookmark"
-msgstr "переимновать указанную закладку"
+msgstr "переименовать указанную закладку"
 
 msgid "do not mark a new bookmark active"
 msgstr "не помечать новую закладку как активную"
@@ -7052,19 +9325,20 @@
 msgstr "hg bookmarks [-f] [-d] [-i] [-m ИМЯ] [-r РЕВИЗИЯ] [ИМЯ]"
 
 msgid "track a line of development with movable markers"
-msgstr "отслеживать ветвь разработки с помощью подвижных меток"
-
-msgid ""
-"    Bookmarks are pointers to certain commits that move when\n"
-"    committing. Bookmarks are local. They can be renamed, copied and\n"
-"    deleted. It is possible to use bookmark names in :hg:`merge` and\n"
-"    :hg:`update` to merge and update respectively to a given bookmark."
-msgstr ""
-"    Закладки (bookmarks) - это указатели на некторый коммит, которые\n"
-"    перемещаются при коммите. Закладки локальны. Их можно переименовывать\n"
-"    копировать и удалять. Можно использовать имя закладки в :hg:`merge`\n"
-"    и :hg:`update` для слияния или обновления до заданной закладки\n"
-"    соответвенно."
+msgstr "отслеживать ветку разработки с помощью подвижных меток"
+
+msgid ""
+"    Bookmarks are pointers to certain commits that move when committing.\n"
+"    Bookmarks are local. They can be renamed, copied and deleted. It is\n"
+"    possible to use :hg:`merge NAME` to merge from a given bookmark, and\n"
+"    :hg:`update NAME` to update to a given bookmark."
+msgstr ""
+"    Закладки (bookmarks) - это указатели на некоторую ревизию, которые\n"
+"    перемещаются при фиксации.Их можно переименовывать копировать и "
+"удалять.\n"
+"    Можно использовать имя закладки в :hg:`merge ИМЯ` для слияние от "
+"указанной\n"
+"    закладки и :hg:`update ИМЯ` для обновления на заданную закладку."
 
 msgid ""
 "    You can use :hg:`bookmark NAME` to set a bookmark on the working\n"
@@ -7085,13 +9359,16 @@
 "    the bookmarks extension must be enabled.\n"
 "    "
 msgstr ""
-"    Закладки могут передаваться между репозиториями с помощью команд\n"
+"    Закладки могут передаваться между хранилищами с помощью команд\n"
 "    push и pull (см. :hg:`help push` и :hg:`help pull). Для этого\n"
-"    необходимо, чтобы удаленный и локальный репозиторий поддерживали\n"
+"    необходимо, чтобы отдалённое и локальное хранилище поддерживали\n"
 "    закладки. Для Mercurial версий меньше 1.8 это означает, что\n"
 "    должно быть включено расширение bookmarks.\n"
 "    "
 
+msgid "bookmark name required"
+msgstr "укажите имя закладки"
+
 #, python-format
 msgid "bookmark '%s' does not exist"
 msgstr "закладки '%s' не существует"
@@ -7103,9 +9380,6 @@
 msgid "new bookmark name required"
 msgstr "укажите новое имя закладки"
 
-msgid "bookmark name required"
-msgstr "укажите имя закладки"
-
 msgid "bookmark name cannot contain newlines"
 msgstr "имя закладки не может содержать символ перевода строки"
 
@@ -7113,22 +9387,34 @@
 msgstr "имя закладки не может состоять из одних пробелов"
 
 msgid "a bookmark cannot have the name of an existing branch"
-msgstr "закладка не может назыаться так же, как существующая ветвь"
+msgstr "закладка не может называться так же, как существующая ветка"
 
 msgid "no bookmarks set\n"
 msgstr "нет ни одной закладки\n"
 
 msgid "set branch name even if it shadows an existing branch"
-msgstr "использовать имя ветви, даже если оно скрывает уже существующую ветвь"
+msgstr "использовать имя ветки, даже если оно скрывает уже существующую ветку"
 
 msgid "reset branch name to parent branch name"
-msgstr "сбросить имя ветви до имени ветви родителя"
+msgstr "сбросить имя ветки до имени ветки родителя"
 
 msgid "[-fC] [NAME]"
 msgstr "[-fC] [ИМЯ]"
 
 msgid "set or show the current branch name"
-msgstr "задать или показать имя текущей ветви"
+msgstr "задать или показать имя текущей ветки"
+
+msgid ""
+"    .. note::\n"
+"       Branch names are permanent and global. Use :hg:`bookmark` to create "
+"a\n"
+"       light-weight bookmark instead. See :hg:`help glossary` for more\n"
+"       information about named branches and bookmarks."
+msgstr ""
+"    .. note::\n"
+"       Имена веток постоянны и глобальны. Используйте :hg:`bookmark`,\n"
+"       чтобы создать легковесную закладку. Дополнительную\n"
+"       информацию о ветках и закладках см. в :hg:`help glossary`."
 
 msgid ""
 "    With no argument, show the current branch name. With one argument,\n"
@@ -7137,17 +9423,17 @@
 "    recommends that primary development take place on the 'default'\n"
 "    branch."
 msgstr ""
-"    Без аргументов показывает имя текущей ветви. С одним аргументом\n"
-"    задает имя ветви для рабочего каталога (ветвь не будет создана\n"
-"    в репозитории до следующего коммита). Рекомендуется вести основную\n"
-"    разработку в ветви 'default'."
+"    Без аргументов показывает имя текущей ветки. С одним аргументом\n"
+"    задает имя ветки для рабочего каталога (ветка не будет создана\n"
+"    в хранилище до следующей фиксации). Рекомендуется вести основную\n"
+"    разработку в ветке 'default'."
 
 msgid ""
 "    Unless -f/--force is specified, branch will not let you set a\n"
 "    branch name that already exists, even if it's inactive."
 msgstr ""
 "    Если не указан -f/--force, branch не даст вам задать имя\n"
-"    существующей ветви, даже если она не активна."
+"    существующей ветки, даже если она не активна."
 
 msgid ""
 "    Use -C/--clean to reset the working directory branch to that of\n"
@@ -7155,34 +9441,22 @@
 "    change."
 msgstr ""
 "    Используйте -C/--clean чтобы установить ветку рабочего каталога\n"
-"    такой же, как ветвь его родителя, отменяя предыдущую смену ветви."
+"    такой же, как ветка его родителя, отменяя предыдущую смену ветки."
 
 msgid ""
 "    Use the command :hg:`update` to switch to an existing branch. Use\n"
 "    :hg:`commit --close-branch` to mark this branch as closed."
 msgstr ""
 "    Используйте команду :hg:`update` чтобы переключиться на существующую\n"
-"    ветвь. Используйте :hg:`commit --close-branch` чтобы пометить эту\n"
-"    ветвь как закрытую."
-
-msgid "    .. note::"
-msgstr ""
-
-msgid ""
-"       Branch names are permanent. Use :hg:`bookmark` to create a\n"
-"       light-weight bookmark instead. See :hg:`help glossary` for more\n"
-"       information about named branches and bookmarks."
-msgstr ""
-"       Имена ветвей постоянны. В качестве альтернативы можно использовать\n"
-"       :hg:`bookmark`, чтобы создать легковесную ветвь. Дополнительную\n"
-"       информацию о ветвях и закладках см. в :hg:`help glossary`."
+"    ветку. Используйте :hg:`commit --close-branch` чтобы пометить эту\n"
+"    ветку как закрытую."
 
 #, python-format
 msgid "reset working directory to branch %s\n"
-msgstr "рабочий каталог сброшен на ветвь %s\n"
+msgstr "рабочий каталог сброшен на ветку %s\n"
 
 msgid "a branch of the same name already exists"
-msgstr "ветвь с таким именем уже существует"
+msgstr "ветка с таким именем уже существует"
 
 #. i18n: "it" refers to an existing branch
 msgid "use 'hg update' to switch to it"
@@ -7190,39 +9464,44 @@
 
 #, python-format
 msgid "marked working directory as branch %s\n"
-msgstr "рабочий каталог помечен как ветвь %s\n"
+msgstr "рабочий каталог помечен как ветка %s\n"
+
+msgid "(branches are permanent and global, did you want a bookmark?)\n"
+msgstr ""
+"(ветки (branch) глобальны и перманентны, быть может, вам нужна\n"
+"закладка (bookmark?)\n"
 
 msgid "show only branches that have unmerged heads"
-msgstr "показывать только ветви, на которых есть неслитые головы"
+msgstr "показывать только ветки, на которых есть неслитые головы"
 
 msgid "show normal and closed branches"
-msgstr "показывать обычные и закрытые ветви"
+msgstr "показывать обычные и закрытые ветки"
 
 msgid "[-ac]"
 msgstr "[-ac]"
 
 msgid "list repository named branches"
-msgstr "перечислить именованные ветки в репозитории"
+msgstr "перечислить именованные ветки в хранилище"
 
 msgid ""
 "    List the repository's named branches, indicating which ones are\n"
 "    inactive. If -c/--closed is specified, also list branches which have\n"
 "    been marked closed (see :hg:`commit --close-branch`)."
 msgstr ""
-"    Перечисляет именованные ветви в репозитории, выделяя активные.\n"
-"    Если указан -c/--close, печатает также ветви, помеченные как\n"
+"    Перечисляет именованные ветки в хранилище, выделяя активные.\n"
+"    Если указан -c/--close, печатает также ветки, помеченные как\n"
 "    закрытые (см. :hg:`commit --close-branch`)."
 
 msgid ""
 "    If -a/--active is specified, only show active branches. A branch\n"
 "    is considered active if it contains repository heads."
 msgstr ""
-"    Если укзан -a/--active, показывает только активные ветви. Ветвь\n"
+"    Если указан -a/--active, показывает только активные ветки. Ветка\n"
 "    считается активной, если она содержит головные ревизии."
 
 msgid "    Use the command :hg:`update` to switch to an existing branch."
 msgstr ""
-"    Используйте :hg:`update` чтобы переключиться на существующую ветвь."
+"    Используйте :hg:`update` чтобы переключиться на существующую ветку."
 
 msgid ""
 "    Returns 0.\n"
@@ -7238,21 +9517,21 @@
 msgstr " (неактивна)"
 
 msgid "run even when the destination is unrelated"
-msgstr "работать даже если репозиторий не связан с репозиторием назначения"
+msgstr "работать даже если хранилище не связано с хранилищем назначения"
 
 msgid "a changeset intended to be added to the destination"
-msgstr "набор изменений для добавления в репозиторий назначения"
+msgstr "набор изменений для добавления в хранилище назначения"
 
 msgid "a specific branch you would like to bundle"
-msgstr "ветвь для упаковки"
+msgstr "ветка для упаковки"
 
 msgid "a base changeset assumed to be available at the destination"
 msgstr ""
-"базовый набор изменений, который предполагается доступным в репозитории "
+"базовый набор изменений, который предполагается доступным в хранилище "
 "назначения"
 
 msgid "bundle all changesets in the repository"
-msgstr "упаковать все ревизии в репозитории"
+msgstr "упаковать все ревизии в хранилище"
 
 msgid "bundle compression type to use"
 msgstr "тип сжатия"
@@ -7268,7 +9547,7 @@
 "    known to be in another repository."
 msgstr ""
 "    Создает сжатый файл, содержащий группу наборов изменений, которые\n"
-"    отсутсвуют в другом репозитории."
+"    отсутствуют в другом хранилище."
 
 msgid ""
 "    If you omit the destination repository, then hg assumes the\n"
@@ -7276,7 +9555,7 @@
 "    parameters. To create a bundle containing all changesets, use\n"
 "    -a/--all (or --base null)."
 msgstr ""
-"    Если репозиторий назначения опущен, то Mercurial предполагает,\n"
+"    Если хранилище назначения опущено, то Mercurial предполагает,\n"
 "    что там имеются все ревизии, до указанной в --base. Чтобы создать\n"
 "    файл, содержащий все наборы изменений, используйте -a/--all\n"
 "    (или --base null)."
@@ -7297,15 +9576,15 @@
 "    available or when exporting an entire repository is undesirable."
 msgstr ""
 "    Файл с группой изменений (bundle) может быть передан обычными\n"
-"    средствами, или применен в другом репозитории с помощью команд\n"
+"    средствами, или применен в другом хранилище с помощью команд\n"
 "    unbundle или pull. Это полезно когда команды push и pull напрямую\n"
-"    недоступны или когда пулбликация всего репозитория нежелательна."
+"    недоступны или когда публикация всего хранилища нежелательна."
 
 msgid ""
 "    Applying bundles preserves all changeset contents including\n"
 "    permissions, copy/rename information, and revision history."
 msgstr ""
-"    Применение групп изменений сохраняет все аттрибуты наборов\n"
+"    Применение групп изменений сохраняет все атрибуты наборов\n"
 "    изменений, включая права доступа, информацию о копировании/\n"
 "    переименовании и историю ревизий."
 
@@ -7317,7 +9596,7 @@
 "    "
 
 msgid "--base is incompatible with specifying a destination"
-msgstr "нельзя одновременно указывать --base и репозиторий назначения"
+msgstr "нельзя одновременно указывать --base и хранилище назначения"
 
 msgid "unknown bundle type specified with --type"
 msgstr "неизвестный способ задан в --type"
@@ -7342,10 +9621,10 @@
 "    no revision is given, the parent of the working directory is used,\n"
 "    or tip if no revision is checked out."
 msgstr ""
-"    Печатает содержимое указанных файлов, каким оно бало на момент\n"
-"    указанной ревизии. Если невизия не указана, используется\n"
+"    Печатает содержимое указанных файлов, каким оно было на момент\n"
+"    указанной ревизии. Если ревизия не указана, используется\n"
 "    родительская ревизия рабочего каталога или оконечная ревизия (tip),\n"
-"    если работий каталог пуст."
+"    если рабочий каталог пуст."
 
 msgid ""
 "    Output may be to a file, in which case the name of the file is\n"
@@ -7353,7 +9632,7 @@
 "    for the export command, with the following additions:"
 msgstr ""
 "    Можно печатать в файл, в этом случае его имя задается в виде\n"
-"    форматирущей строки. Формат строки такой же, как в команде export,\n"
+"    форматирующей строки. Формат строки такой же, как в команде export,\n"
 "    со следующими дополнениями:"
 
 msgid ""
@@ -7363,184 +9642,237 @@
 msgstr ""
 "    :``%s``: базовое имя печатаемого файла\n"
 "    :``%d``: имя каталога печатаемого файла или '.', если файл в корне\n"
-"    :``%p``: путь к печатаемому файлу относительно корня репозитория"
+"    :``%p``: путь к печатаемому файлу относительно корня хранилища"
 
 msgid "the clone will include an empty working copy (only a repository)"
-msgstr "клон будет включать пустой рабочий каталог (только репозиторий)"
+msgstr "клон будет включать пустой рабочий каталог (только хранилище)"
 
 msgid "revision, tag or branch to check out"
-msgstr "ревизия, метка или ветвь на которую обновиться"
+msgstr "ревизия, метка или ветка на которую обновиться"
 
 msgid "include the specified changeset"
 msgstr "включить указанный набор изменений"
 
 msgid "clone only the specified branch"
-msgstr "клонировать только указанную ветвь"
+msgstr "клонировать только указанную ветку"
 
 msgid "[OPTION]... SOURCE [DEST]"
 msgstr "[ПАРАМЕТР]... ИСТОЧНИК [НАЗН]"
 
 msgid "make a copy of an existing repository"
-msgstr "создать копию существующего репозитория"
+msgstr "создать копию существующего хранилища"
 
 msgid "    Create a copy of an existing repository in a new directory."
-msgstr "    Создает копию существующего репозитория в новом каталоге."
+msgstr "    Создает копию существующего хранилища в новом каталоге."
 
 msgid ""
 "    If no destination directory name is specified, it defaults to the\n"
 "    basename of the source."
 msgstr ""
-"    Если директория назначения не задана, используется базовая часть\n"
+"    Если каталог назначения не задан, используется базовая часть\n"
 "    имени каталога источника."
 
 msgid ""
 "    The location of the source is added to the new repository's\n"
 "    ``.hg/hgrc`` file, as the default to be used for future pulls."
 msgstr ""
-"    Адрес источника добавляется в файл ``.hg/hgrc`` нового репозитория,\n"
-"    и используется по умолчанию для последующих pull'ов и push'ей."
-
-msgid "    See :hg:`help urls` for valid source format details."
-msgstr "    См. :hg:`help urls` о форматах адреса источника."
-
-msgid ""
-"    It is possible to specify an ``ssh://`` URL as the destination, but no\n"
-"    ``.hg/hgrc`` and working directory will be created on the remote side.\n"
-"    Please see :hg:`help urls` for important details about ``ssh://`` URLs."
-msgstr ""
-"    Можно указать ``ssh://...`` в качестве адреса назначения, но файл\n"
-"    ``.hg/hgrc`` и рабочая копия не будут созданы на удаленном компьютере.\n"
-"    См. :hg:`help urls` для важной информации об адресах вида ``ssh://...``."
-
-msgid ""
-"    A set of changesets (tags, or branch names) to pull may be specified\n"
-"    by listing each changeset (tag, or branch name) with -r/--rev.\n"
-"    If -r/--rev is used, the cloned repository will contain only a subset\n"
-"    of the changesets of the source repository. Only the set of changesets\n"
-"    defined by all -r/--rev options (including all their ancestors)\n"
-"    will be pulled into the destination repository.\n"
-"    No subsequent changesets (including subsequent tags) will be present\n"
-"    in the destination."
-msgstr ""
-"    Копируемые наборы изменений (changesets) (как метки или имена ветвей)\n"
-"    могут быть заданы указанием каждого набора изменений (метки или имени\n"
-"    ветви) с помощью -r/--rev. При использовании -r/--rev, клонированный\n"
-"    репозиторий будет содержать только подмножество наборов изменений\n"
-"    источника."
-
-msgid ""
-"    Using -r/--rev (or 'clone src#rev dest') implies --pull, even for\n"
-"    local source repositories."
-msgstr ""
-"    Использование -r/--rev (или 'clone источник#ревизия назн')\n"
-"    предполагает --pull, даже если источник локален."
-
-msgid ""
-"    For efficiency, hardlinks are used for cloning whenever the source\n"
-"    and destination are on the same filesystem (note this applies only\n"
-"    to the repository data, not to the working directory). Some\n"
-"    filesystems, such as AFS, implement hardlinking incorrectly, but\n"
-"    do not report errors. In these cases, use the --pull option to\n"
-"    avoid hardlinking."
-msgstr ""
-"    Для эффективности, при клонировании источника на одной файловой\n"
-"    системе с целевым репозиторием, используются жесткие ссылки (это\n"
-"    относится только к данным репозитория, не рабочему каталогу).\n"
-"    Некоторые файловые системы, например, AFS, некорректно реализуют\n"
-"    жесткие ссылки, но не сообщают об ошибках. В этом случае используйте\n"
-"    --pull чтобы избежать жестких ссылок."
-
-msgid ""
-"    In some cases, you can clone repositories and the working directory\n"
-"    using full hardlinks with ::"
-msgstr ""
-"    В некоторых случаях можно клонировать репозитории и рабочие\n"
-"    каталоги целиком жесткими ссылками ::"
-
-msgid "      $ cp -al REPO REPOCLONE"
-msgstr "      $ cp -al РЕПОЗИТОРИЙ КЛОН"
-
-msgid ""
-"    This is the fastest way to clone, but it is not always safe. The\n"
-"    operation is not atomic (making sure REPO is not modified during\n"
-"    the operation is up to you) and you have to make sure your editor\n"
-"    breaks hardlinks (Emacs and most Linux Kernel tools do so). Also,\n"
-"    this is not compatible with certain extensions that place their\n"
-"    metadata under the .hg directory, such as mq."
-msgstr ""
-"    Это самый быстрый способ клонирования, но он не всегда безопасен.\n"
-"    Эта операция не атомарна (вам надо следить за тем, что РЕПОЗИТОРИЙ\n"
-"    не изменяется в процессе копирования), и вам надо убедиться, что\n"
-"    ваш редактор умеет разрывать жесткие ссылки (Emacs и большинство\n"
-"    инструментов разработчика ядра Linux умеют). Этот способ также\n"
-"    не совместим с некоторыми расширениями, которые хранят свои\n"
-"    метаданные в каталоге .hg, как mq."
-
-msgid ""
-"    Mercurial will update the working directory to the first applicable\n"
-"    revision from this list:"
-msgstr ""
-"    Mercurial обновит рабочий каталог до первой подходящей ревизии по\n"
-"    списку:"
-
-msgid ""
-"    a) null if -U or the source repository has no changesets\n"
-"    b) if -u . and the source repository is local, the first parent of\n"
-"       the source repository's working directory\n"
-"    c) the changeset specified with -u (if a branch name, this means the\n"
-"       latest head of that branch)\n"
-"    d) the changeset specified with -r\n"
-"    e) the tipmost head specified with -b\n"
-"    f) the tipmost head specified with the url#branch source syntax\n"
-"    g) the tipmost head of the default branch\n"
-"    h) tip"
-msgstr ""
-"    а) пустой каталог, если в источнике нет наборов изменений или указан -U\n"
-"    б) если указан -u . и источник локален, до первого родителя рабочей "
-"копии\n"
-"       источника\n"
-"    в) ревизия, указанная в -u (если это имя ветви, то до головной ревизии\n"
-"       этой ветви)\n"
-"    г) до ревизии, укзанной с помощью -r\n"
-"    д) до последней ревизии указанной в -b\n"
-"    е) до последней ревизии указанной как url#ветвь\n"
-"    ж) до последней ревизии ветви default\n"
-"    з) до последней ревизии"
+"    Адрес источника добавляется в файл ``.hg/hgrc`` нового хранилища,\n"
+"    и используется по умолчанию для последующих затягиваний."
+
+msgid ""
+"    Only local paths and ``ssh://`` URLs are supported as\n"
+"    destinations. For ``ssh://`` destinations, no working directory or\n"
+"    ``.hg/hgrc`` will be created on the remote side."
+msgstr ""
+"    В качестве путей назначения поддерживаются только локальные пути и\n"
+"    URL вида ``ssh://``. Для назначения ``ssh://`` не создается рабочей\n"
+"    копии или файла ``.hg/hgrc`` на отдаленной стороне."
+
+msgid ""
+"    To pull only a subset of changesets, specify one or more revisions\n"
+"    identifiers with -r/--rev or branches with -b/--branch. The\n"
+"    resulting clone will contain only the specified changesets and\n"
+"    their ancestors. These options (or 'clone src#rev dest') imply\n"
+"    --pull, even for local source repositories. Note that specifying a\n"
+"    tag will include the tagged changeset but not the changeset\n"
+"    containing the tag."
+msgstr ""
+"    Чтобы затянуть подмножество наборов изменений, укажите один или более\n"
+"    идентификатор ревизии с помощью -r/--rev или ветки с помощь -b/--"
+"branch.\n"
+"    Клон будет содержать только заданные ревизии и их предков. Эти "
+"параметры\n"
+"    (равно как и `clone ист#рев назн') подразумевают --pull, даже для "
+"локальных\n"
+"    исходных хранилищ. Обратите внимание, что при задании метки, клон будет\n"
+"    включать в себя помеченный набор изменений, но не набор изменений,\n"
+"    содержащий метку."
+
+msgid ""
+"    To check out a particular version, use -u/--update, or\n"
+"    -U/--noupdate to create a clone with no working directory."
+msgstr ""
+"    Чтобы извлечь конкретную версию, используйте -u/--update;\n"
+"    чтобы создать клон без рабочего каталога, используйте -U/--noupdate."
+
+msgid ""
+"      For efficiency, hardlinks are used for cloning whenever the\n"
+"      source and destination are on the same filesystem (note this\n"
+"      applies only to the repository data, not to the working\n"
+"      directory). Some filesystems, such as AFS, implement hardlinking\n"
+"      incorrectly, but do not report errors. In these cases, use the\n"
+"      --pull option to avoid hardlinking."
+msgstr ""
+"      Из соображений эффективности при клонировании источника находящегося\n"
+"      на одной файловой системе с хранилищем назначения, используются "
+"жесткие\n"
+"      ссылки (это относится только к данным хранилища, не рабочему "
+"каталогу).\n"
+"      Некоторые файловые системы, например, AFS, некорректно реализуют\n"
+"      жесткие ссылки, но не сообщают об ошибках. В этом случае используйте\n"
+"      --pull чтобы избежать жестких ссылок."
+
+msgid ""
+"      In some cases, you can clone repositories and the working\n"
+"      directory using full hardlinks with ::"
+msgstr ""
+"      В некоторых случаях можно клонировать хранилища и рабочие\n"
+"      каталоги целиком жесткими ссылками ::"
+
+msgid "        $ cp -al REPO REPOCLONE"
+msgstr "        $ cp -al ХРАНИЛИЩЕ КЛОН"
+
+msgid ""
+"      This is the fastest way to clone, but it is not always safe. The\n"
+"      operation is not atomic (making sure REPO is not modified during\n"
+"      the operation is up to you) and you have to make sure your\n"
+"      editor breaks hardlinks (Emacs and most Linux Kernel tools do\n"
+"      so). Also, this is not compatible with certain extensions that\n"
+"      place their metadata under the .hg directory, such as mq."
+msgstr ""
+"      Это самый быстрый способ клонирования, но он не всегда безопасен.\n"
+"      Эта операция не атомарна (вам надо следить за тем, что ХРАНИЛИЩЕ\n"
+"      не изменяется в процессе копирования), и вам надо убедиться, что\n"
+"      ваш редактор умеет разрывать жесткие ссылки (Emacs и большинство\n"
+"      инструментов разработчика ядра Linux умеют). Этот способ также\n"
+"      не совместим с некоторыми расширениями, которые хранят свои\n"
+"      метаданные в каталоге .hg, таких как mq."
+
+msgid ""
+"      Mercurial will update the working directory to the first applicable\n"
+"      revision from this list:"
+msgstr ""
+"      Mercurial обновит рабочий каталог до первой подходящей ревизии по\n"
+"      списку:"
+
+msgid ""
+"      a) null if -U or the source repository has no changesets\n"
+"      b) if -u . and the source repository is local, the first parent of\n"
+"         the source repository's working directory\n"
+"      c) the changeset specified with -u (if a branch name, this means the\n"
+"         latest head of that branch)\n"
+"      d) the changeset specified with -r\n"
+"      e) the tipmost head specified with -b\n"
+"      f) the tipmost head specified with the url#branch source syntax\n"
+"      g) the tipmost head of the default branch\n"
+"      h) tip"
+msgstr ""
+"      а) пустой каталог, если в источнике нет наборов изменений или указан -"
+"U\n"
+"      б) если указано -u . и источник локален, до первого родителя "
+"рабочей          копии источника\n"
+"      в) ревизия, указанная в -u (если это имя ветки, то до головной "
+"ревизии\n"
+"         этой ветки)\n"
+"      г) до ревизии, указанной с помощью -r\n"
+"      д) до оконечной головной ревизии указанной в -b\n"
+"      е) до оконечной головной ревизии заданной как url#ветка\n"
+"      ж) до оконечной головной ревизии ветки default\n"
+"      з) до оконечной ревизии"
+
+msgid "      - clone a remote repository to a new directory named hg/::"
+msgstr ""
+"      - создать клон отдаленного хранилища в новом каталоге с именем hg/::"
+
+msgid "          hg clone http://selenic.com/hg"
+msgstr "          hg clone http://selenic.com/hg"
+
+msgid "      - create a lightweight local clone::"
+msgstr "      - создать легковесный локальный клон::"
+
+msgid "          hg clone project/ project-feature/"
+msgstr "          hg clone project/ project-feature/"
+
+msgid ""
+"      - clone from an absolute path on an ssh server (note double-slash)::"
+msgstr ""
+"      - клонировать хранилище по абсолютному пути на ssh-сервере\n"
+"        (обратите внимание на двойной слэш)::"
+
+msgid "          hg clone ssh://user@server//home/projects/alpha/"
+msgstr "          hg clone ssh://user@server//home/projects/alpha/"
+
+msgid ""
+"      - do a high-speed clone over a LAN while checking out a\n"
+"        specified version::"
+msgstr ""
+"      - выполнить быстрое клонирование по локальной сети с извлечением\n"
+"        указанной ревизии::"
+
+msgid "          hg clone --uncompressed http://server/repo -u 1.5"
+msgstr "          hg clone --uncompressed http://server/repo -u 1.5"
+
+msgid ""
+"      - create a repository without changesets after a particular revision::"
+msgstr ""
+"      - создать хранилище без наборов изменений после заданной ревизии::"
+
+msgid "          hg clone -r 04e544 experimental/ good/"
+msgstr "          hg clone -r 04e544 experimental/ good/"
+
+msgid "      - clone (and track) a particular named branch::"
+msgstr "      - клонировать (и отслеживать) укажанную именованную ветку::"
+
+msgid "          hg clone http://selenic.com/hg#stable"
+msgstr "          hg clone http://selenic.com/hg#stable"
+
+msgid "    See :hg:`help urls` for details on specifying URLs."
+msgstr "    Подробнее о задании URL хранилища см. :hg:`help urls`."
 
 msgid "cannot specify both --noupdate and --updaterev"
 msgstr "нельзя указывать --noupdate и --updaterev одновременно"
 
 msgid "mark new/missing files as added/removed before committing"
 msgstr ""
-"пометить новые/недостающие файлы как добавленные/удаленные перед коммитом"
+"пометить новые/недостающие файлы как добавленные/удаленные перед фиксацией"
 
 msgid "mark a branch as closed, hiding it from the branch list"
-msgstr "пометить ветвь как закрытую, скрыть ее из списка ветвей"
+msgstr "пометить ветку как закрытую, скрыть ее из списка веток"
 
 msgid "commit the specified files or all outstanding changes"
-msgstr "зафиксировать указанные файлы или все изменения в репозитории"
+msgstr "зафиксировать указанные файлы или все изменения в хранилище"
 
 msgid ""
 "    Commit changes to the given files into the repository. Unlike a\n"
 "    centralized SCM, this operation is a local operation. See\n"
 "    :hg:`push` for a way to actively distribute your changes."
 msgstr ""
-"    Зафиксировать (закоммитить) указанные файлы в репозитории. В\n"
-"    отличие от централизованных SCM, это локальная операция. См.\n"
+"    Зафиксировать указанные файлы в хранилище. В отличие от\n"
+"    централизованных SCM, это локальная операция. См.\n"
 "    :hg:`push` чтобы узнать, как опубликовать свои изменения."
 
 msgid ""
 "    If a list of files is omitted, all changes reported by :hg:`status`\n"
 "    will be committed."
 msgstr ""
-"    Если список файлов опущен, будут закоммичены все изменения, которые\n"
+"    Если список файлов опущен, будут зафиксированы все изменения, которые\n"
 "    показывает :hg:`status`."
 
 msgid ""
 "    If you are committing the result of a merge, do not provide any\n"
 "    filenames or -I/-X filters."
 msgstr ""
-"    Если вы коммитите результат слияния, не указывайте никаких\n"
+"    Если вы фиксируете результат слияния, не указывайте никаких\n"
 "    файлов или фильтров в -I/-X."
 
 msgid ""
@@ -7549,9 +9881,9 @@
 "    commit fails, you will find a backup of your message in\n"
 "    ``.hg/last-message.txt``."
 msgstr ""
-"    Если не указан комментарий к коммиту, Mercurial запустит ваш\n"
-"    настроенный редактор, где можно ввести комментарий. Если при\n"
-"    коммите случается сбой, копию сообщения можно найти в \n"
+"    Если не указано сообщение фиксации, Mercurial запустит ваш\n"
+"    настроенный редактор, где можно ввести сообщение. Если при\n"
+"    фиксации случается сбой, копию сообщения можно найти в \n"
 "    ``.hg/last-message.txt``."
 
 msgid ""
@@ -7562,11 +9894,11 @@
 "    "
 
 msgid "can only close branch heads"
-msgstr "можно закрыть только головную ревизию ветви"
+msgstr "можно закрыть только головную ревизию ветки"
 
 #, python-format
 msgid "nothing changed (%d missing files, see 'hg status')\n"
-msgstr "нет изменений (%d файлов отсутсвует, см. 'hg status')\n"
+msgstr "нет изменений (%d файлов отсутствует, см. 'hg status')\n"
 
 msgid "nothing changed\n"
 msgstr "нет изменений\n"
@@ -7576,7 +9908,7 @@
 
 #, python-format
 msgid "reopening closed branch head %d\n"
-msgstr "повторно открываю головную ревизию %d закрытой ветви\n"
+msgstr "повторно открываю головную ревизию %d закрытой ветки\n"
 
 #, python-format
 msgid "committed changeset %d:%s\n"
@@ -7592,7 +9924,7 @@
 msgstr "[ПАРАМЕТР]... [ИСТОЧНИК]... НАЗН"
 
 msgid "mark files as copied for the next commit"
-msgstr "пометить файл как скопированный при следующем коммите"
+msgstr "пометить файл как скопированный при следующей фиксации"
 
 msgid ""
 "    Mark dest as having copies of source files. If dest is a\n"
@@ -7600,7 +9932,7 @@
 "    the source must be a single file."
 msgstr ""
 "    Помечает файл назначения как копию источника. Если НАЗНАЧЕНИЕ -\n"
-"    директория, копии помещаются туда. Если НАЗНАЧЕНИЕ - файл, источник\n"
+"    каталог, копии помещаются туда. Если НАЗНАЧЕНИЕ - файл, источник\n"
 "    должен быть одним файлом."
 
 msgid ""
@@ -7616,7 +9948,7 @@
 "    This command takes effect with the next commit. To undo a copy\n"
 "    before that, see :hg:`revert`."
 msgstr ""
-"    Эффект этой команды фиксируется при следующем коммите. Чтобы\n"
+"    Действие этой команды закрепляется при следующей фиксации. Чтобы\n"
 "    отменить копирование, см. :hg:`revert`."
 
 msgid ""
@@ -7635,6 +9967,7 @@
 msgid "either two or three arguments required"
 msgstr "требуются два или три аргумента"
 
+# {{{ Debug commands
 msgid "add single file mergeable changes"
 msgstr ""
 
@@ -7884,7 +10217,8 @@
 msgid " (check that you compiled the extensions)\n"
 msgstr ""
 
-msgid "Checking templates...\n"
+#, python-format
+msgid "Checking templates (%s)...\n"
 msgstr ""
 
 msgid " (templates seem to have been installed incorrectly)\n"
@@ -8018,17 +10352,18 @@
 msgid "REPO [OPTIONS]... [ONE [TWO]]"
 msgstr ""
 
+# }}} end of debug commands
 msgid "[OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]..."
 msgstr "[ПАРАМЕТР]... ([-c РЕВ] | [-r РЕВ1 [-r РЕВ2]]) [ФАЙЛ]..."
 
 msgid "diff repository (or selected files)"
-msgstr "показать изменения в репозитории (или выбранных файлах)"
+msgstr "показать изменения в хранилище (или выбранных файлах)"
 
 msgid "    Show differences between revisions for the specified files."
 msgstr "    Показывает отличия между ревизиями указанных файлов."
 
 msgid "    Differences between files are shown using the unified diff format."
-msgstr "    Различия показываются в унифицировнном формате diff."
+msgstr "    Различия показываются в унифицированном формате diff."
 
 msgid ""
 "    .. note::\n"
@@ -8038,7 +10373,7 @@
 msgstr ""
 "    .. note::\n"
 "       diff может генерировать неожиданные результаты для слияний,\n"
-"       поскольку по умолчанию сравнивнение производится с первым\n"
+"       поскольку по умолчанию сравнение производится с первым\n"
 "       родителем рабочего каталога, если не указаны другие ревизии."
 
 msgid ""
@@ -8064,6 +10399,50 @@
 "    Используйте -g/--git чтобы генерировать отличия в расширенном\n"
 "    формате git. Подробнее см. :hg:`help diffs`."
 
+msgid "      - compare a file in the current working directory to its parent::"
+msgstr "      - сравнить файл в текущем рабочем каталоге с его родителем::"
+
+msgid "          hg diff foo.c"
+msgstr "          hg diff foo.c"
+
+msgid ""
+"      - compare two historical versions of a directory, with rename info::"
+msgstr ""
+"      - сравнить две версии каталога в истории с информацией о "
+"переимовываниях::"
+
+msgid "          hg diff --git -r 1.0:1.2 lib/"
+msgstr "          hg diff --git -r 1.0:1.2 lib/"
+
+msgid "      - get change stats relative to the last change on some date::"
+msgstr ""
+"      - получить статистику изменений относительно последнего изменения на "
+"некую дату::"
+
+msgid "          hg diff --stat -r \"date('may 2')\""
+msgstr "          hg diff --stat -r \"date('may 2')\""
+
+msgid "      - diff all newly-added files that contain a keyword::"
+msgstr ""
+"      - показать все только что добавленные файлы, содержащие ключевое "
+"слово::"
+
+msgid "          hg diff \"set:added() and grep(GNU)\""
+msgstr "          hg diff \"set:added() and grep(GNU)\""
+
+msgid "      - compare a revision and its parents::"
+msgstr "      - сравнить ревизию и ее родителей::"
+
+msgid ""
+"          hg diff -c 9353         # compare against first parent\n"
+"          hg diff -r 9353^:9353   # same using revset syntax\n"
+"          hg diff -r 9353^2:9353  # compare against the second parent"
+msgstr ""
+"          hg diff -c 9353         # сравнить с первым родителем\n"
+"          hg diff -r 9353^:9353   # то же с использованием синтаксиса "
+"revset\n"
+"          hg diff -r 9353^2:9353  # сранить со вторым родителем"
+
 msgid "diff against the second parent"
 msgstr "отличия от второй родительской ревизии"
 
@@ -8087,8 +10466,8 @@
 "    comment."
 msgstr ""
 "    В заголовке набора изменений содержится следующая информация:\n"
-"    автор, дата, имя ветви (если не default), хэш набора изменений,\n"
-"    родитель (родители) и комментарий к коммиту."
+"    автор, дата, имя ветки (если не default), хэш набора изменений,\n"
+"    родитель (родители) и сообщение фиксации."
 
 msgid ""
 "    .. note::\n"
@@ -8115,6 +10494,8 @@
 "    :``%R``: changeset revision number\n"
 "    :``%b``: basename of the exporting repository\n"
 "    :``%h``: short-form changeset hash (12 hexadecimal digits)\n"
+"    :``%m``: first line of the commit message (only alphanumeric "
+"characters)\n"
 "    :``%n``: zero-padded sequence number, starting at 1\n"
 "    :``%r``: zero-padded changeset revision number"
 msgstr ""
@@ -8122,8 +10503,9 @@
 "    :``%H``: хэш набора изменений (40 шестнадцатеричных цифр)\n"
 "    :``%N``: количество сгенерированных патчей\n"
 "    :``%R``: номер ревизии набора изменений\n"
-"    :``%b``: базовое имя экспортируемого репозитория\n"
+"    :``%b``: базовое имя экспортируемого хранилища\n"
 "    :``%h``: короткий хэш набора изменений (12 шестнадцатеричных цифр)\n"
+"    :``%m``: первая строка комментария фиксации (только буквы и цифры)\n"
 "    :``%n``: выровненный нулями последовательный номер, начиная с 1\n"
 "    :``%r``: выровненный нулями номер ревизии"
 
@@ -8150,6 +10532,36 @@
 "    Если указан --switch-parent, будут генерироваться отличия от\n"
 "    второго родителя. Это может быть полезно при анализе слияния."
 
+msgid ""
+"      - use export and import to transplant a bugfix to the current\n"
+"        branch::"
+msgstr ""
+"      - использовать export вместе с import чтобы перенести исправление\n"
+"        бага на текущую ветку::"
+
+msgid "          hg export -r 9353 | hg import -"
+msgstr "          hg export -r 9353 | hg import -"
+
+msgid ""
+"      - export all the changesets between two revisions to a file with\n"
+"        rename information::"
+msgstr ""
+"      - экспортировать все наборы изменений между двумя ревизиями в файл,\n"
+"        включая информацию о переименованиях::"
+
+msgid "          hg export --git -r 123:150 > changes.txt"
+msgstr "          hg export --git -r 123:150 > changes.txt"
+
+msgid ""
+"      - split outgoing changes into a series of patches with\n"
+"        descriptive names::"
+msgstr ""
+"      - преобразовать исходящие изменений в серию патчей с описывающими\n"
+"        их именами::"
+
+msgid "          hg export -r \"outgoing()\" -o \"%n-%m.patch\""
+msgstr "          hg export -r \"outgoing()\" -o \"%n-%m.patch\""
+
 msgid "export requires at least one changeset"
 msgstr "для экспорта требуется хотя бы один набор изменений"
 
@@ -8160,38 +10572,170 @@
 msgstr "экспортируемый патч:\n"
 
 msgid "forget the specified files on the next commit"
-msgstr "забыть указанные файлы при следующем коммите"
+msgstr "забыть указанные файлы при следующей фиксации"
 
 msgid ""
 "    Mark the specified files so they will no longer be tracked\n"
 "    after the next commit."
 msgstr ""
 "    Помечает указанные файлы, чтобы перестать их отслеживать\n"
-"    при следующем коммите."
+"    при следующей фиксации."
 
 msgid ""
 "    This only removes files from the current branch, not from the\n"
 "    entire project history, and it does not delete them from the\n"
 "    working directory."
 msgstr ""
-"    Это удаляет файлы только из текущей ветви, а не из всего\n"
-"    репозитория, и не удаляет их из рабочего каталога."
+"    Это удаляет файлы только из текущей ветки, а не из всего\n"
+"    хранилища, и не удаляет их из рабочего каталога."
 
 msgid "    To undo a forget before the next commit, see :hg:`add`."
 msgstr ""
-"    Чтобы отменить действие forget до следующего коммита\n"
+"    Чтобы отменить действие forget до следующей фиксации\n"
 "    см. :hg:`add`."
 
-msgid "no files specified"
-msgstr "не задано ни одного файла"
-
-#, python-format
-msgid "not removing %s: file is already untracked\n"
-msgstr "%s не удален, он и так не отслеживается\n"
-
-#, python-format
-msgid "removing %s\n"
-msgstr "удаляю %s\n"
+msgid "      - forget newly-added binary files::"
+msgstr "      - забыть только что добавленные бинарные файлы::"
+
+msgid "          hg forget \"set:added() and binary()\""
+msgstr "          hg forget \"set:added() and binary()\""
+
+msgid "      - forget files that would be excluded by .hgignore::"
+msgstr "      - забыть файлы, которые будут исключены с учетом .hgignore::"
+
+msgid "          hg forget \"set:hgignore()\""
+msgstr "          hg forget \"set:hgignore()\""
+
+msgid "resume interrupted graft"
+msgstr "возобновить прерванную операцию graft"
+
+msgid "record the current date as commit date"
+msgstr "использовать текущую дату в качестве даты фиксации"
+
+msgid "record the current user as committer"
+msgstr "использовать текущего пользователя как автора фиксации"
+
+msgid "[OPTION]... REVISION..."
+msgstr "[ПАРАМЕТР]... РЕВИЗИЯ..."
+
+msgid "copy changes from other branches onto the current branch"
+msgstr "копировать изменения с другой ветки в текущую"
+
+msgid ""
+"    This command uses Mercurial's merge logic to copy individual\n"
+"    changes from other branches without merging branches in the\n"
+"    history graph. This is sometimes known as 'backporting' or\n"
+"    'cherry-picking'. By default, graft will copy user, date, and\n"
+"    description from the source changesets."
+msgstr ""
+"    Эта команда использует возможности слияния Mercurial, чтобы\n"
+"    скопировать отдельные изменения из других веток без полного слияния\n"
+"    веток в графе истории. Иногда эту операцию также называют\n"
+"    'бэкпортирование' ('backporting') или 'cherry-picking'. По умолчанию\n"
+"    graft копирует имя автора, даты и описание из ревизии-источника."
+
+msgid ""
+"    Changesets that are ancestors of the current revision, that have\n"
+"    already been grafted, or that are merges will be skipped."
+msgstr ""
+"    Наборы изменений, являющиеся предками текущей ревизии, и к которым\n"
+"    уже была применена операция graft, а также ревизии слияния будут\n"
+"    пропущены."
+
+#, fuzzy
+msgid ""
+"    If a graft merge results in conflicts, the graft process is\n"
+"    interrupted so that the current merge can be manually resolved.\n"
+"    Once all conflicts are addressed, the graft process can be\n"
+"    continued with the -c/--continue option."
+msgstr ""
+"    Если во время операции возникает конфликт, операция отменяется для\n"
+"    того, чтобы текущее слияние было завершено вручную. После разрешения\n"
+"    всех конфликтов, можно продолжить процесс с помощью параметра\n"
+"    -c/--continue."
+
+msgid ""
+"    .. note::\n"
+"      The -c/--continue option does not reapply earlier options."
+msgstr ""
+"    .. note::\n"
+"      Параметр -c/--continue не применяет повторно ранее заданные опции."
+
+msgid ""
+"      - copy a single change to the stable branch and edit its description::"
+msgstr ""
+"      - скопировать одно изменение в ветку stable и отредактировать ее\n"
+"        описание::"
+
+msgid ""
+"          hg update stable\n"
+"          hg graft --edit 9393"
+msgstr ""
+"          hg update stable\n"
+"          hg graft --edit 9393"
+
+msgid ""
+"      - graft a range of changesets with one exception, updating dates::"
+msgstr ""
+"      - перенести диапазон ревизий с одним исключением, обновляя даты::"
+
+msgid "          hg graft -D \"2085::2093 and not 2091\""
+msgstr "          hg graft -D \"2085::2093 and not 2091\""
+
+msgid "      - continue a graft after resolving conflicts::"
+msgstr "      - продолжить перенос после разрешения конфликтов::"
+
+msgid "          hg graft -c"
+msgstr "          hg graft -c"
+
+msgid "      - show the source of a grafted changeset::"
+msgstr "      - показать источник перенесенного набора изменений::"
+
+msgid "          hg log --debug -r tip"
+msgstr "          hg log --debug -r tip"
+
+msgid ""
+"    Returns 0 on successful completion.\n"
+"    "
+msgstr ""
+"    В случае успеха возвращает 0.\n"
+"    "
+
+msgid "can't specify --continue and revisions"
+msgstr "нельзя указывать --continue и ревизии одновременно"
+
+msgid "no graft state found, can't continue"
+msgstr "не найдено состояние операции graft, продолжение невозможно"
+
+#, python-format
+msgid "skipping ungraftable merge revision %s\n"
+msgstr "пропускаю ревизию слияния %s\n"
+
+#, python-format
+msgid "skipping ancestor revision %s\n"
+msgstr "пропускаю предка %s\n"
+
+#, python-format
+msgid "skipping already grafted revision %s\n"
+msgstr "пропускаю уже перенесенную ревизию %s\n"
+
+#, python-format
+msgid "skipping already grafted revision %s (same origin %d)\n"
+msgstr "пропускаю уже перенесенную ревизию %s (тот же источник %d)\n"
+
+#, python-format
+msgid "skipping already grafted revision %s (was grafted from %d)\n"
+msgstr "пропускаю уже перенесенную ревизию %s (была перенесена из %d)\n"
+
+#, python-format
+msgid "grafting revision %s\n"
+msgstr "перенос ревизии %s\n"
+
+msgid "unresolved conflicts, can't continue"
+msgstr "неразрешенные конфликты, продолжение невозможно"
+
+msgid "use hg resolve and hg graft --continue"
+msgstr "используйте hg resolve и hg graft --continue"
 
 msgid "end fields with NUL"
 msgstr "заканчивать поля символом NUL"
@@ -8232,9 +10776,9 @@
 "    match appears."
 msgstr ""
 "    Команда ведет себя не так, как grep в Unix. Она принимает\n"
-"    регулярные выражения Python/Perl. Ищет в истории репозитория,\n"
+"    регулярные выражения Python/Perl. Ищет в истории хранилища,\n"
 "    а не в рабочем каталоге. Она всегда печатает номер ревизии,\n"
-"    в ктором находит совпадение."
+"    в котором находит совпадение."
 
 msgid ""
 "    By default, grep only prints output for the first revision of a\n"
@@ -8270,19 +10814,19 @@
 msgstr "показать только топологические головные ревизии"
 
 msgid "show active branchheads only (DEPRECATED)"
-msgstr "показать только активные головы ветвей (УСТАРЕЛО)"
+msgstr "показать только активные головы веток (УСТАРЕЛО)"
 
 msgid "show normal and closed branch heads"
-msgstr "показать обычные и закрытые головы ветвей"
+msgstr "показать обычные и закрытые головы веток"
 
 msgid "[-ac] [-r STARTREV] [REV]..."
 msgstr "[-ac] [-r НАЧРЕВИЗИЯ] [РЕВИЗИЯ]..."
 
 msgid "show current repository heads or show branch heads"
-msgstr "показать головы текущего репозитория или головы ветвей"
+msgstr "показать головы текущего хранилища или головы веток"
 
 msgid "    With no arguments, show all repository branch heads."
-msgstr "    Без аргуметов показывает все головы ветвей репозитория."
+msgstr "    Без аргументов показывает все головы веток хранилища."
 
 msgid ""
 "    Repository \"heads\" are changesets with no child changesets. They are\n"
@@ -8290,24 +10834,28 @@
 "    for update and merge operations. Branch heads are changesets that have\n"
 "    no child changeset on the same branch."
 msgstr ""
-"    \"Головы\" репозитория - это наборы изменений, у которых нет дочерних\n"
+"    \"Головы\" хранилища - это наборы изменений, у которых нет дочерних\n"
 "    наборов. Именно в них происходит разработка и они как правило являются\n"
-"    объектами для операций update или merge. Головы ветвей - это наборы\n"
-"    изменений, у которых нет дочерних наборов на той же ветви."
+"    объектами для операций update или merge. Головы веток - это наборы\n"
+"    изменений, у которых нет дочерних наборов на той же ветке."
 
 msgid ""
 "    If one or more REVs are given, only branch heads on the branches\n"
-"    associated with the specified changesets are shown."
+"    associated with the specified changesets are shown. This means\n"
+"    that you can use :hg:`heads foo` to see the heads on a branch\n"
+"    named ``foo``."
 msgstr ""
 "    Если указана одна или более РЕВИЗИЯ, показываются только головы\n"
-"    на ветвях, ассоциированных с указанными ревизиями."
+"    на ветках, ассоциированных с указанными ревизиями. Это означает,\n"
+"    что вы можете использовать :hg:`heads foo`, чтобы посмотреть\n"
+"    головы на ветке с именем ``foo``."
 
 msgid ""
 "    If -c/--closed is specified, also show branch heads marked closed\n"
 "    (see :hg:`commit --close-branch`)."
 msgstr ""
 "    Если указан -c/--closed, показываются также головы на закрытых\n"
-"    ветвях (см. :hg:`commit --close-branch`)"
+"    ветках (см. :hg:`commit --close-branch`)"
 
 msgid ""
 "    If STARTREV is specified, only those heads that are descendants of\n"
@@ -8321,9 +10869,8 @@
 "only\n"
 "    changesets without children will be shown."
 msgstr ""
-"    Если указан -t/--topo, механизм именованных ветвей игнорируется,    и "
-"будут\n"
-"    показаны только наборы изменений без дочерних наборов."
+"    Если указан -t/--topo, механизм именованных веток игнорируется,    и "
+"будут показаны только наборы изменений без дочерних наборов."
 
 msgid ""
 "    Returns 0 if matching heads are found, 1 if not.\n"
@@ -8334,7 +10881,7 @@
 
 #, python-format
 msgid "no open branch heads found on branches %s"
-msgstr "не найдено голов открытых ветвей на ветвях %s"
+msgstr "не найдено голов открытых веток на ветках %s"
 
 #, python-format
 msgid " (started at %s)"
@@ -8354,7 +10901,7 @@
 
 msgid ""
 "    With no arguments, print a list of commands with short help messages."
-msgstr "    Без аргументов печатает списко команд с кратким описанием."
+msgstr "    Без аргументов печатает список команд с кратким описанием."
 
 msgid ""
 "    Given a topic, extension, or command name, print help for that\n"
@@ -8370,6 +10917,19 @@
 "    Возвращает 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 "глобальные параметры:"
 
@@ -8392,11 +10952,8 @@
 "глобальные параметры"
 
 #, python-format
-msgid "use \"hg -v help %s\" to show global options"
-msgstr "используйте \"hg -v help %s\" для просмотра глобальных параметров"
-
-msgid "list of commands:"
-msgstr "список команд:"
+msgid "use \"hg -v help %s\" to show more info"
+msgstr "используйте \"hg -v help %s\" для дополнительной информации"
 
 #, python-format
 msgid ""
@@ -8426,23 +10983,44 @@
 msgstr "%s"
 
 #, python-format
-msgid ""
-"\n"
-"use \"hg -v help %s\" to show verbose help\n"
-msgstr ""
-"\n"
-"используйте \"hg -v help %s\" чтобы посмотреть подробную справку\n"
-
-msgid "options:\n"
-msgstr "параметры:\n"
-
-#, python-format
 msgid "use \"hg help -e %s\" to show help for the %s extension"
 msgstr "используйте \"hg help -e %s\" для просмотра справки по расширению %s"
 
+#, python-format
+msgid ""
+"\n"
+"use \"hg help %s\" to show the full help text\n"
+msgstr ""
+"\n"
+"используйте \"hg help %s\" чтобы получить полную справку\n"
+
+#, python-format
+msgid ""
+"\n"
+"use \"hg -v help %s\" to show more info\n"
+msgstr ""
+"\n"
+"используйте \"hg -v help %s\" для дополнительной информации\n"
+
+msgid "basic commands:"
+msgstr "Основные команды:"
+
+msgid "list of commands:"
+msgstr "список команд:"
+
 msgid "no commands defined\n"
 msgstr "команды не определены\n"
 
+msgid "enabled extensions:"
+msgstr "Включенные расширения:"
+
+msgid ""
+"\n"
+"additional help topics:"
+msgstr ""
+"\n"
+"дополнительные разделы справки:"
+
 #, python-format
 msgid ""
 "\n"
@@ -8466,33 +11044,7 @@
 msgstr "'%s' предоставляется следующим расширением:"
 
 msgid "Mercurial Distributed SCM\n"
-msgstr "Распределенная SCM Mercurial\n"
-
-msgid "basic commands:"
-msgstr "Основные команды:"
-
-msgid "enabled extensions:"
-msgstr "Включенные расширения:"
-
-msgid "VALUE"
-msgstr "ЗНАЧЕНИЕ"
-
-msgid "DEPRECATED"
-msgstr "УСТАРЕЛО"
-
-msgid ""
-"\n"
-"[+] marked option can be specified multiple times"
-msgstr ""
-"\n"
-"параметры, помеченные [+], могут указываться многократно"
-
-msgid ""
-"\n"
-"additional help topics:"
-msgstr ""
-"\n"
-"дополнительные разделы справки:"
+msgstr "Распределенная система контроля версий Mercurial\n"
 
 msgid "identify the specified revision"
 msgstr "описать заданную ревизию"
@@ -8504,7 +11056,7 @@
 msgstr "показать глобальный идентификатор ревизии"
 
 msgid "show branch"
-msgstr "показать ветвь"
+msgstr "показать ветку"
 
 msgid "show tags"
 msgstr "показать метки"
@@ -8524,10 +11076,10 @@
 "    directory has uncommitted changes, the branch name (if not default),\n"
 "    a list of tags, and a list of bookmarks."
 msgstr ""
-"    Печатает сводку, описывающую состояние репозитория на момент РЕВИЗИЯ,\n"
-"    в виде одного или двух хеш-идентификаторов родителя, за которым\n"
-"    следует \"+\", если рабочая копия содержит незакоммиченные\n"
-"    изменения, имени ветви (если отлично от default), списка ветвей,\n"
+"    Печатает сводку, описывающую состояние хранилища на момент РЕВИЗИЯ,\n"
+"    в виде одного или двух хэш-идентификаторов родителя, за которым\n"
+"    следует \"+\", если рабочая копия содержит незафиксированные\n"
+"    изменения, имени ветки (если отлично от default), списка веток,\n"
 "    списка меток и списка закладок."
 
 msgid ""
@@ -8535,23 +11087,41 @@
 "    repository."
 msgstr ""
 "    Если РЕВИЗИЯ не указан, печатает сводку по текущему состоянию\n"
-"    репозитория."
+"    хранилища."
 
 msgid ""
 "    Specifying a path to a repository root or Mercurial bundle will\n"
 "    cause lookup to operate on that repository/bundle."
 msgstr ""
-"    Если задан путь к репозиторию или бандлу Mercurial, будет\n"
-"    работать с этим репозиторием/бандлом."
+"    Если задан путь к хранилищу или бандлу Mercurial, будет\n"
+"    работать с этим хранилищем/бандлом."
+
+msgid "      - generate a build identifier for the working directory::"
+msgstr "      - сгенерировать идентификатор сборки для рабочего каталога::"
+
+msgid "          hg id --id > build-id.dat"
+msgstr "          hg id --id > build-id.dat"
+
+msgid "      - find the revision corresponding to a tag::"
+msgstr "      - найти ревизию, соответствующую метке::"
+
+msgid "          hg id -n -r 1.3"
+msgstr "          hg id -n -r 1.3"
+
+msgid "      - check the most recent revision of a remote repository::"
+msgstr "      - посмотреть последнюю ревизию в отдаленном репозитории::"
+
+msgid "          hg id -r tip http://selenic.com/hg/"
+msgstr "          hg id -r tip http://selenic.com/hg/"
 
 msgid "can't query remote revision number, branch, or tags"
-msgstr "не могу запросить номер удаленной ревизии, ветви или метки"
+msgstr "не могу запросить номер отдалённой ревизии, ветки или метки"
 
 msgid ""
 "directory strip option for patch. This has the same meaning as the "
 "corresponding patch option"
 msgstr ""
-"настройка strip для директории при применении патча. Значит то же,что и в "
+"настройка strip для каталога при применении патча. Значит то же, что и в "
 "команде patch"
 
 msgid "PATH"
@@ -8564,7 +11134,7 @@
 msgstr "не проверять "
 
 msgid "don't commit, just update the working directory"
-msgstr "не коммитить, просто обновить рабочий каталог"
+msgstr "не фиксировать, просто обновить рабочий каталог"
 
 msgid "apply patch without touching the working directory"
 msgstr "применить файл, не трогая рабочий каталог"
@@ -8573,7 +11143,8 @@
 msgstr "применить патч к узлам, для которых он был сгенерирован"
 
 msgid "use any branch information in patch (implied by --exact)"
-msgstr "использовать любую информацию о ветвях из патча (включается --exact)"
+msgstr ""
+"использовать любую информацию о ветках из патча (подразумевается при --exact)"
 
 msgid "[OPTION]... PATCH..."
 msgstr "[ПАРАМЕТР]... ПАТЧ..."
@@ -8585,14 +11156,14 @@
 "    Import a list of patches and commit them individually (unless\n"
 "    --no-commit is specified)."
 msgstr ""
-"    Импортирует список патчей и коммитит их по отдельности (если не\n"
+"    Импортирует список патчей и фиксирует их по отдельности (если не\n"
 "    задан параметр --no-commit)"
 
 msgid ""
 "    If there are outstanding changes in the working directory, import\n"
 "    will abort unless given the -f/--force flag."
 msgstr ""
-"    Если в рабочем каталоге есть незакоммиченные изменения, импорт\n"
+"    Если в рабочем каталоге есть незафиксированные изменения, импорт\n"
 "    отменяется, если не указан флаг -f/--force."
 
 msgid ""
@@ -8605,11 +11176,11 @@
 msgstr ""
 "    Можно импортировать патчи прямо из емейла. Работает даже для\n"
 "    патчей в приложениях (чтобы использовать патч из тела письма,\n"
-"    оно должно иметь тип text/plain или text/x-patch).Заголовки\n"
+"    оно должно иметь тип text/plain или text/x-patch). Заголовки\n"
 "    электронного письма From и Subject используются по умолчанию\n"
-"    в качестве автора коммита и комментария к коммиту. Все части\n"
+"    в качестве автора фиксации и сообщения фиксации. Все части\n"
 "    тела письма типа text/plain до первого diff'а добавляются\n"
-"    к комментарию к коммиту."
+"    к сообщению фиксации."
 
 msgid ""
 "    If the imported patch was generated by :hg:`export`, user and\n"
@@ -8641,8 +11212,8 @@
 "    patches will be applied on top of the working directory parent\n"
 "    revision."
 msgstr ""
-"    Используйте --bypass, чтобы применить и закоммитить патчи прямо\n"
-"    в репозиторий, не затрагивая рабочий каталог. Без --exact патчи\n"
+"    Используйте --bypass, чтобы наложить и зафиксировать патчи прямо\n"
+"    в хранилище, не затрагивая рабочий каталог. Без --exact патчи\n"
 "    будут наложены поверх родительской ревизии рабочего каталога."
 
 msgid ""
@@ -8661,33 +11232,67 @@
 "    стандартного ввода. Если указан URL, патч будет загружен оттуда.\n"
 "    См. :hg:`help dates` о допустимых форматах дат для -d/--date."
 
+msgid "      - import a traditional patch from a website and detect renames::"
+msgstr ""
+"      - импортировать традиционный патч и веб-сайта и найти переименования::"
+
+msgid "          hg import -s 80 http://example.com/bugfix.patch"
+msgstr "          hg import -s 80 http://example.com/bugfix.patch"
+
+msgid "      - import a changeset from an hgweb server::"
+msgstr "      - импортировать набор изменений с сервера hgweb::"
+
+msgid "          hg import http://www.selenic.com/hg/rev/5ca8c111e9aa"
+msgstr "          hg import http://www.selenic.com/hg/rev/5ca8c111e9aa"
+
+msgid "      - import all the patches in an Unix-style mbox::"
+msgstr "      - импортировать все патчи из файла почтового ящика Unix mbox::"
+
+msgid "          hg import incoming-patches.mbox"
+msgstr "          hg import incoming-patches.mbox"
+
+msgid ""
+"      - attempt to exactly restore an exported changeset (not always\n"
+"        possible)::"
+msgstr ""
+"      - попытаться строго восстановить экспортированный набор изменений (не\n"
+"        всегда возможно)::"
+
+msgid "          hg import --exact proposed-fix.patch"
+msgstr "          hg import --exact proposed-fix.patch"
+
+msgid "need at least one patch to import"
+msgstr "для импорта требуется хотя бы один патч"
+
 msgid "cannot use --no-commit with --bypass"
-msgstr ""
+msgstr "нельзя использовать --no-commit с --bypass"
 
 msgid "cannot use --similarity with --bypass"
-msgstr ""
+msgstr "нельзя использовать --similarityt с --bypass"
 
 msgid "patch is damaged or loses information"
 msgstr "патч поврежден или в нем недостает данных"
 
-msgid "to working directory"
-msgstr "в рабочий каталог"
+msgid "applied to working directory"
+msgstr "наложен на рабочий каталог"
 
 msgid "not a Mercurial patch"
 msgstr "не патч Mercurial"
 
+#. i18n: refers to a short changeset id
+#, python-format
+msgid "created %s"
+msgstr "создан %s"
+
 msgid "applying patch from stdin\n"
 msgstr "применяю патч со стандартного вводар\n"
 
 #, python-format
-msgid "applied %s\n"
-msgstr "применен %s\n"
-
-msgid "no diffs found"
-msgstr "отличий не найдено"
+msgid "%s: no diffs found"
+msgstr "%s: отличий не найдено"
 
 msgid "run even if remote repository is unrelated"
-msgstr "работать даже с несвязанным репозиторием"
+msgstr "работать даже с несвязанным хранилищем"
 
 msgid "show newest record first"
 msgstr "показывать новые записи в начале"
@@ -8696,19 +11301,19 @@
 msgstr "файл для сохранения бандла"
 
 msgid "a remote changeset intended to be added"
-msgstr "удаленная ревизия предполагаемая для добавления"
+msgstr "отдалённый набор изменений, предназначенный для добавления"
 
 msgid "compare bookmarks"
-msgstr "сранить закладки"
+msgstr "сравнить закладки"
 
 msgid "a specific branch you would like to pull"
-msgstr "конкретная ветвь, которую вы хотите подтянуть"
+msgstr "конкретная ветка, которую вы хотите затянуть"
 
 msgid "[-p] [-n] [-M] [-f] [-r REV]... [--bundle FILENAME] [SOURCE]"
 msgstr "[-p] [-n] [-M] [-f] [-r РЕВ]... [--bundle ФАЙЛ] [ИСТОЧНИК]"
 
 msgid "show new changesets found in source"
-msgstr "показать новые наборы измений в удаленном репозитории"
+msgstr "показать новые наборы изменений в исходном хранилище"
 
 msgid ""
 "    Show new changesets found in the specified path/URL or the default\n"
@@ -8724,7 +11329,7 @@
 "    For remote repository, using --bundle avoids downloading the\n"
 "    changesets twice if the incoming is followed by a pull."
 msgstr ""
-"    Для удаленного репозитроия использование --bundle позволяет\n"
+"    Для отдалённого хранилища использование --bundle позволяет\n"
 "    избежать повторной загрузки наборов изменений, если за incoming\n"
 "    следует pull."
 
@@ -8742,19 +11347,19 @@
 msgstr "нельзя совмещать --bundle и --subrepos"
 
 msgid "remote doesn't support bookmarks\n"
-msgstr "удаленный репозиторий не поддерживает закладки\n"
+msgstr "отдалённое хранилище не поддерживает закладки\n"
 
 msgid "[-e CMD] [--remotecmd CMD] [DEST]"
 msgstr "[-e КОМАНДА] [--remotecmd КОМАНДА] [НАЗН]"
 
 msgid "create a new repository in the given directory"
-msgstr "создать новый репозиторий в указанном каталоге"
+msgstr "создать новое хранилище в указанном каталоге"
 
 msgid ""
 "    Initialize a new repository in the given directory. If the given\n"
 "    directory does not exist, it will be created."
 msgstr ""
-"    Инициализирует новый репозиторий в заданном каталоге. Если\n"
+"    Инициализирует новое хранилище в заданном каталоге. Если\n"
 "    указанный каталог не существует, он будет создан."
 
 msgid "    If no directory is given, the current directory is used."
@@ -8768,7 +11373,7 @@
 "    См. также :hg:`help urls`."
 
 msgid "search the repository as it is in REV"
-msgstr "искать в репозитории, каким он был на момент РЕВИЗИЯ"
+msgstr "искать в хранилище, каким оно было на момент РЕВИЗИЯ"
 
 msgid "end filenames with NUL, for use with xargs"
 msgstr "вставлять NUL после имен файлов, для использования с xargs"
@@ -8802,7 +11407,7 @@
 "    If no patterns are given to match, this command prints the names\n"
 "    of all files under Mercurial control in the working directory."
 msgstr ""
-"    Если шаблоны не заданы, печатает именя всех файлов, находящихся\n"
+"    Если шаблоны не заданы, печатает имена всех файлов, находящихся\n"
 "    под контролем Mercurial в рабочем каталоге."
 
 msgid ""
@@ -8816,14 +11421,14 @@
 "    проблем, когда \"xargs\" считает отдельные имена с пробелами\n"
 "    несколькими файлами."
 
-msgid "only follow the first parent of merge changesets"
-msgstr "следовать только за первым родителем ревизий слияния"
+msgid "only follow the first parent of merge changesets (DEPRECATED)"
+msgstr "следовать только за первым родителем ревизий слияния (УСТАРЕЛО)"
 
 msgid "show revisions matching date spec"
-msgstr "показывать ревизии с датой, соответсвующие данной"
+msgstr "показывать ревизии с датой, соответствующей данной"
 
 msgid "show copied files"
-msgstr "показыать скопированные файлы"
+msgstr "показывать скопированные файлы"
 
 msgid "do case-insensitive search for a given text"
 msgstr "выполнить поиск данного текста, игнорируя регистр"
@@ -8831,29 +11436,29 @@
 msgid "include revisions where files were removed"
 msgstr "включить ревизии, в которых файлы были удалены"
 
-msgid "show only merges"
-msgstr "показывать только слияния"
+msgid "show only merges (DEPRECATED)"
+msgstr "показывать только слияния (УСТАРЕЛО)"
 
 msgid "revisions committed by user"
 msgstr "только ревизии данного пользователем"
 
 msgid "show only changesets within the given named branch (DEPRECATED)"
-msgstr "показывать только ревизии на данной именованной ветви (УСТАРЕЛО)"
+msgstr "показывать только ревизии на данной именованной ветке (УСТАРЕЛО)"
 
 msgid "show changesets within the given named branch"
-msgstr "показывать наборы изменений на данной именованной ветви"
+msgstr "показывать наборы изменений на данной именованной ветке"
 
 msgid "do not display revision or any of its ancestors"
 msgstr "не показывать ревизию и всех ее предшественников"
 
-msgid "show hidden changesets"
-msgstr "показывать скрытые наборы изменений"
+msgid "show hidden changesets (DEPRECATED)"
+msgstr "показывать скрытые наборы изменений (УСТАРЕЛОл"
 
 msgid "[OPTION]... [FILE]"
 msgstr "[ПАРАМЕТР]... [ФАЙЛ]"
 
 msgid "show revision history of entire repository or files"
-msgstr "показать историю ревизий всего репозитория или файлов"
+msgstr "показать историю ревизий всего хранилища или файлов"
 
 msgid ""
 "    Print the revision history of the specified files or the entire\n"
@@ -8861,29 +11466,24 @@
 msgstr "    Печатает историю ревизий указанных файлов или всего проекта."
 
 msgid ""
+"    If no revision range is specified, the default is ``tip:0`` unless\n"
+"    --follow is set, in which case the working directory parent is\n"
+"    used as the starting revision."
+msgstr ""
+"    Если не указан диапазон ревизий, по умолчанию используется\n"
+"    ``tip:0``, если не указан --follow, в случае чего родительская\n"
+"    ревизия рабочего каталога используются в качестве начальной ревизии."
+
+msgid ""
 "    File history is shown without following rename or copy history of\n"
 "    files. Use -f/--follow with a filename to follow history across\n"
 "    renames and copies. --follow without a filename will only show\n"
-"    ancestors or descendants of the starting revision. --follow-first\n"
-"    only follows the first parent of merge revisions."
+"    ancestors or descendants of the starting revision."
 msgstr ""
 "    История файла показывается без следования за переименованиями или\n"
 "    копированиями файлов. Используйте -f/-follow, чтобы показать\n"
 "    историю с копированиями и переименованиями. --follow без имени\n"
-"    файла покажет только родительские или дочерние ревизии начальной\n"
-"    ревизии. С --follow-first отслеживает только первого родителя\n"
-"    ревизий слияния."
-
-msgid ""
-"    If no revision range is specified, the default is ``tip:0`` unless\n"
-"    --follow is set, in which case the working directory parent is\n"
-"    used as the starting revision. You can specify a revision set for\n"
-"    log, see :hg:`help revsets` for more information."
-msgstr ""
-"    Если не указан диапазон ревизий, по умолчанию используется\n"
-"    ``tip:0``, если не указан --follow, в случае чего родительская\n"
-"    ревизия рабочего каталога используются как начальная ревизия.\n"
-"    Можно также указывать набор ревизий, см. :hg:`help revsets`."
+"    файла покажет только предков или потомков начальной ревизии."
 
 msgid ""
 "    By default this command prints revision number and changeset id,\n"
@@ -8893,9 +11493,9 @@
 msgstr ""
 "    По умолчанию эта команда печатает номера ревизий с хэшами наборов\n"
 "    изменений, метки, неочевидных родителей, пользователя, дату и\n"
-"    время, а также комментарий для каждого коммита. Если указан\n"
-"    -v/--verbose, печатется также список измененных файлов и полное\n"
-"    сообщение для каждого коммита."
+"    время, а также сообщение каждой фиксации. Если указан\n"
+"    -v/--verbose, печатается также список измененных файлов и полное\n"
+"    сообщение каждой фиксации."
 
 msgid ""
 "    .. note::\n"
@@ -8910,8 +11510,93 @@
 "       производится только с ее первым родителем. Также в список\n"
 "       попадут только файлы, отличные от ОБОИХ родителей:."
 
+msgid ""
+"    .. note::\n"
+"       for performance reasons, log FILE may omit duplicate changes\n"
+"       made on branches and will not show deletions. To see all\n"
+"       changes including duplicates and deletions, use the --removed\n"
+"       switch."
+msgstr ""
+"    .. note::\n"
+"       из соображений производительности, в ФАЙЛе журнала могут\n"
+"       отсутствовать дублирующиеся изменения, сделанные на ветках,\n"
+"       а также там будут отсутствовать удаления. Чтобы увидеть все\n"
+"       изменения, включая дубликаты и удаления, используйте параметр\n"
+"       --removed."
+
+msgid "      - changesets with full descriptions and file lists::"
+msgstr "      - наборы изменений с полными описаниями и списками файлов::"
+
+msgid "          hg log -v"
+msgstr "          hg log -v"
+
+msgid "      - changesets ancestral to the working directory::"
+msgstr "      - наборы изменений, являющиеся предками рабочего каталога::"
+
+msgid "          hg log -f"
+msgstr "          hg log -f"
+
+msgid "      - last 10 commits on the current branch::"
+msgstr "      - последние 10 наборов изменений на текущей ветке::"
+
+msgid "          hg log -l 10 -b ."
+msgstr "          hg log -l 10 -b ."
+
+msgid ""
+"      - changesets showing all modifications of a file, including removals::"
+msgstr ""
+"      - наборы изменений, отражающие все изменения файла, т.ч. изъятия "
+"из-        под контроля версий::"
+
+msgid "          hg log --removed file.c"
+msgstr "          hg log --removed file.c"
+
+msgid ""
+"      - all changesets that touch a directory, with diffs, excluding merges::"
+msgstr ""
+"      - все наборы изменений, затрагивающие каталог, с различиями, "
+"кроме         слияний::"
+
+msgid "          hg log -Mp lib/"
+msgstr "          hg log -Mp lib/"
+
+msgid "      - all revision numbers that match a keyword::"
+msgstr "      - номера всех ревизий, содержащие ключевое слово::"
+
+msgid "          hg log -k bug --template \"{rev}\\n\""
+msgstr "          hg log -k bug --template \"{rev}\\n\""
+
+# BUG
+msgid "      - check if a given changeset is included is a tagged release::"
+msgstr ""
+"      - проверить, входит ли заданный набор изменений в помеченный релиз::"
+
+msgid "          hg log -r \"a21ccf and ancestor(1.9)\""
+msgstr "          hg log -r \"a21ccf and ancestor(1.9)\""
+
+msgid "      - find all changesets by some user in a date range::"
+msgstr "      - найти все наборы изменений пользователя в диапазоне дат::"
+
+msgid "          hg log -k alice -d \"may 2008 to jul 2008\""
+msgstr "          hg log -k alice -d \"may 2008 to jul 2008\""
+
+msgid "      - summary of all changesets after the last tag::"
+msgstr "      - сводка для всех наборов изменений после последней метки::"
+
+msgid ""
+"          hg log -r \"last(tagged())::\" --template \"{desc|firstline}\\n\""
+msgstr ""
+"          hg log -r \"last(tagged())::\" --template \"{desc|firstline}\\n\""
+
+msgid ""
+"    See :hg:`help revisions` and :hg:`help revsets` for more about\n"
+"    specifying revisions."
+msgstr ""
+"    См. :hg:`help revisions` и :hg:`help revsets` для дополнительной\n"
+"    информации о задании ревизий."
+
 msgid "revision to display"
-msgstr "показать ревизию"
+msgstr "показать данную ревизию"
 
 msgid "list files from all revisions"
 msgstr "показать файлы из всех ревизий"
@@ -8950,7 +11635,7 @@
 msgstr "нельзя одновременно указывать ревизию и --all"
 
 msgid "force a merge with outstanding changes"
-msgstr "слить принудительно, даже если есть незакоммиченные изменения"
+msgstr "слить принудительно, даже если есть незафиксированные изменения"
 
 msgid "revision to merge"
 msgstr "ревизия для слияния"
@@ -8978,9 +11663,9 @@
 "    two parents."
 msgstr ""
 "    Файлы, измененные по сравнению с любым из родителей, помечаются\n"
-"    как измененные для следующего коммита, который обязательно должен\n"
-"    быть сделан до того, как будут разрешены последующие обновления\n"
-"    робочего каталога. У следующего коммита будет два родителя."
+"    как измененные для следующей фиксации, которая обязательно должна\n"
+"    быть сделана до того, как будут разрешены последующие обновления\n"
+"    рабочего каталога. У следующей фиксации будет два родителя."
 
 msgid ""
 "    ``--tool`` can be used to specify the merge tool used for file\n"
@@ -8998,7 +11683,7 @@
 "    explicit revision with which to merge with must be provided."
 msgstr ""
 "    Если ревизия не указана, родитель рабочего каталога является\n"
-"    головной ревизией и текущая ветвь имеет ровно одну другую голову,\n"
+"    головной ревизией и текущая ветка имеет ровно одну другую голову,\n"
 "    производится слияние с этой головой по умолчанию. В противном\n"
 "    случае, требуется явно указать ревизию для слияния."
 
@@ -9012,7 +11697,7 @@
 "    will check out a clean copy of the original merge parent, losing\n"
 "    all changes."
 msgstr ""
-"    Используйте :hg:`update -clean .`, чтобы отменить незакоммиченное\n"
+"    Используйте :hg:`update -clean .`, чтобы отменить незафиксированное\n"
 "    слияние. Это извлечет чистую копию родителя, изначально выбранного\n"
 "    для слияния, с потерей всех изменений."
 
@@ -9025,24 +11710,23 @@
 
 #, python-format
 msgid "branch '%s' has %d heads - please merge with an explicit rev"
-msgstr "ветвь '%s' имеет %d голов(ы) - явно укажите ревизию для слияния"
+msgstr "ветка '%s' имеет %d голов(ы) - явно укажите ревизию для слияния"
 
 msgid "run 'hg heads .' to see heads"
 msgstr "используйте 'hg heads .' чтобы посмотреть головы"
 
 #, python-format
 msgid "branch '%s' has one head - please merge with an explicit rev"
-msgstr "ветвь '%s' имеет одну голову - явно укажите ревизию для слияния"
+msgstr "ветка '%s' имеет одну голову - явно укажите ревизию для слияния"
 
 msgid "run 'hg heads' to see all heads"
 msgstr "используйте 'hg heads' чтобы посмотреть все головы"
 
-msgid "there is nothing to merge"
+msgid "nothing to merge"
 msgstr "нечего сливать"
 
-#, python-format
-msgid "%s - use \"hg update\" instead"
-msgstr "%s - используйте \"hg update\""
+msgid "use 'hg update' instead"
+msgstr "используйте 'hg update'"
 
 msgid "working directory not at a head revision"
 msgstr "рабочий каталог не на головной ревизии"
@@ -9051,28 +11735,28 @@
 msgstr "используйте 'hg update' или явно укажите ревизию"
 
 msgid "a changeset intended to be included in the destination"
-msgstr "набора изменений для добавления в удаленный репозиторий"
+msgstr "набор изменений, предназначенный для добавления в хранилище назначения"
 
 msgid "a specific branch you would like to push"
-msgstr "одна ветвь, которую вы хотите втолкнуть"
+msgstr "одна ветка, которую вы хотите втолкнуть"
 
 msgid "[-M] [-p] [-n] [-f] [-r REV]... [DEST]"
 msgstr "[-M] [-p] [-n] [-f] [-r РЕВИЗИЯ]... [НАЗН]"
 
 msgid "show changesets not found in the destination"
-msgstr "показать наборы изменений, отсутвующие в другом репозитории"
+msgstr "показать наборы изменений, отсутствующие в другом хранилище"
 
 msgid ""
 "    Show changesets not found in the specified destination repository\n"
 "    or the default push location. These are the changesets that would\n"
 "    be pushed if a push was requested."
 msgstr ""
-"    Показыает наборы изменений, не найденные в указанном удаленном\n"
-"    репозитории или по пути по умолчанию для push. Эти наборы\n"
+"    Показывает наборы изменений, не найденные в указанном отдалённом\n"
+"    хранилище или по пути по умолчанию для push. Эти наборы\n"
 "    изменений были бы переданы командой push."
 
 msgid "    See pull for details of valid destination formats."
-msgstr "    Подробней о форматах пути репозитория назначения см. pull"
+msgstr "    Подробней о форматах пути хранилища назначения см. pull"
 
 msgid ""
 "    Returns 0 if there are outgoing changes, 1 otherwise.\n"
@@ -9114,13 +11798,13 @@
 msgstr "[ИМЯ]"
 
 msgid "show aliases for remote repositories"
-msgstr "показать псевдонимы удаленных репозиториев"
+msgstr "показать псевдонимы отдалённых хранилищ"
 
 msgid ""
 "    Show definition of symbolic path name NAME. If no name is given,\n"
 "    show definition of all available names."
 msgstr ""
-"    Показывает полный путь для сокращенного имени репозитория ИМЯ.\n"
+"    Показывает полный путь для сокращенного имени хранилища ИМЯ.\n"
 "    Если имя не задано, показывает полные пути для всех известных\n"
 "    псевдонимов."
 
@@ -9137,9 +11821,9 @@
 "    configuration file and in ``/etc/mercurial/hgrc``. If run inside a\n"
 "    repository, ``.hg/hgrc`` is used, too."
 msgstr ""
-"    Псевдонимы путей репозиториев определены в секции [path] вашего \n"
+"    Псевдонимы путей хранилищ определены в секции [path] вашего \n"
 "    конфига и в ``etc/mercurial/hgrc``. Если запускается из каталога,\n"
-"    содержащего репозиторий, используется также ``.hg/hgrc``."
+"    содержащего хранилище, используется также ``.hg/hgrc``."
 
 msgid ""
 "    The path names ``default`` and ``default-push`` have a special\n"
@@ -9189,25 +11873,25 @@
 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 "работать даже на несвязанном репозитории"
+msgstr "работать даже на несвязанном хранилище"
 
 msgid "BOOKMARK"
 msgstr "ЗАКЛАДКА"
 
 msgid "bookmark to pull"
-msgstr "подтянуть закладку"
+msgstr "закладка, которую следует затянуть"
 
 msgid "[-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]"
 msgstr "[-u] [-f] [-r РЕВ]... [-e КОМ-ДА] [--remotecmd КОМ-ДА] [ИСТОЧНИК]"
 
 msgid "pull changes from the specified source"
-msgstr "подтянуть изменения из указанного источника"
+msgstr "затянуть изменения из указанного источника"
 
 msgid "    Pull changes from a remote repository to a local one."
-msgstr "    Подтягивает изменения из удаленного репозитория в локальный."
+msgstr "    Скачивает изменения из отдалённого хранилища в локальное."
 
 msgid ""
 "    This finds all changes from the repository at the specified path\n"
@@ -9215,9 +11899,9 @@
 "    -R is specified). By default, this does not update the copy of the\n"
 "    project in the working directory."
 msgstr ""
-"    Находит все измения в репозитории по указанному пути или URL и\n"
-"    добавляет их в локальный репозиторий (по умолчанию текущий, если\n"
-"    не указан другой через -R). По умолчанию рабочая копия\n"
+"    Находит все изменения в хранилище по указанному пути или URL и\n"
+"    добавляет их в локальное хранилище (по умолчанию текущее, если\n"
+"    не указано другое через -R). По умолчанию рабочая копия\n"
 "    обновляется."
 
 msgid ""
@@ -9228,7 +11912,7 @@
 msgstr ""
 "    Используйте :hg:`incoming` чтобы посмотреть, что было бы добавлено\n"
 "    командой pull, вызванной в тот же момент времени. Если потом вы\n"
-"    вы решите добавить эти изменения в репозиторий, следует\n"
+"    вы решите добавить эти изменения в хранилище, следует\n"
 "    использовать :hg:`pull -r X`, где ``X`` - последняя ревизия,\n"
 "    показанная :hg:`incoming`."
 
@@ -9236,7 +11920,7 @@
 "    If SOURCE is omitted, the 'default' path will be used.\n"
 "    See :hg:`help urls` for more information."
 msgstr ""
-"    Если ИСТОЧНИК не задан, будет использова путь 'default'.\n"
+"    Если ИСТОЧНИК не задан, будет использован путь 'default'.\n"
 "    Подробнее см. :hg:`help urls`."
 
 msgid ""
@@ -9248,18 +11932,18 @@
 
 #, python-format
 msgid "remote bookmark %s not found!"
-msgstr "закладка %s не найдена в удаленном репозитории"
+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"
+msgstr "импортируется закладка %s\n"
 
 msgid "force push"
 msgstr "протолкнуть принудительно"
@@ -9268,19 +11952,19 @@
 msgstr "протолкнуть закладку"
 
 msgid "allow pushing a new branch"
-msgstr "разрешить создать новую ветвь в удаленном репозитории"
+msgstr "разрешить создать новую ветку в отдалённом хранилище"
 
 msgid "[-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]"
 msgstr "[-f] [-r РЕВ]... [-e КОМ-ДА] [--remotecmd КОМ-ДА] [НАЗН]"
 
 msgid "push changes to the specified destination"
-msgstr "передать изменения в удаленный репозиторий"
+msgstr "передать изменения в отдалённое хранилище"
 
 msgid ""
 "    Push changesets from the local repository to the specified\n"
 "    destination."
 msgstr ""
-"    \"Проталкивает\" изменения из локального репозитория в удаленный.\n"
+"    \"Проталкивает\" изменения из локального хранилища в отдалённое.\n"
 "    "
 
 msgid ""
@@ -9288,7 +11972,7 @@
 "    in the destination repository from the current one."
 msgstr ""
 "    Эта операция симметрична pull: она имеет такой же эффект, как\n"
-"    если бы в удаленном репозитория был выполнен pull из текущего."
+"    если бы в отдалённом хранилища был выполнен pull из текущего."
 
 msgid ""
 "    By default, push will not allow creation of new heads at the\n"
@@ -9296,10 +11980,10 @@
 "    to use. In this situation, it is recommended to pull and merge\n"
 "    before pushing."
 msgstr ""
-"    По умолчанию push не даст создать новые \"головы\" в удаленном\n"
-"    репозитории, потому что в этом случае было бы не ясно, какую\n"
+"    По умолчанию push не даст создать новые \"головы\" в отдалённом\n"
+"    хранилище, потому что в этом случае было бы не ясно, какую\n"
 "    голову использовать. В такой ситуации рекомендуется\n"
-"    подтянуть (pull) и слить (merge) изменения перед push'ем."
+"    затянуть и слить изменения перед проталкиванием."
 
 msgid ""
 "    Use --new-branch if you want to allow push to create a new named\n"
@@ -9307,8 +11991,8 @@
 "    only create a new branch without forcing other changes."
 msgstr ""
 "    Используйте --new-branch, если вы хотите разрешить создание\n"
-"    именованной ветви, которой нет в удаленном репозитории. Это\n"
-"    позволяет просто создать новую ветвь в удаленном репозитории,\n"
+"    именованной ветки, которой нет в отдалённом хранилище. Это\n"
+"    позволяет просто создать новую ветку в отдалённом хранилище,\n"
 "    не проталкивая остальные изменения."
 
 msgid ""
@@ -9316,14 +12000,14 @@
 "    changesets on all branches."
 msgstr ""
 "    Используйте -f/--force чтобы игнорировать поведение по\n"
-"    умолчанию и протолкнуть все изменения на всех ветвях."
+"    умолчанию и протолкнуть все изменения на всех ветках."
 
 msgid ""
 "    If -r/--rev is used, the specified revision and all its ancestors\n"
 "    will be pushed to the remote repository."
 msgstr ""
 "    Если указан -r/--rev, то заданная ревизия и все ее потомки\n"
-"    будут переданы в удаленный репозиторий."
+"    будут переданы в отдалённое хранилище."
 
 msgid ""
 "    Please see :hg:`help urls` for important details about ``ssh://``\n"
@@ -9336,12 +12020,13 @@
 "    Returns 0 if push was successful, 1 if nothing to push.\n"
 "    "
 msgstr ""
-"    Возвращает 0 в случае успехе, 1 если нет изменений для push'а.\n"
+"    Возвращает 0 в случае успешного проталкивания, 1 если нечего\n"
+"    проталкивать.\n"
 "    "
 
 #, python-format
 msgid "pushing to %s\n"
-msgstr "проталкиваю в %s\n"
+msgstr "проталкиваем в %s\n"
 
 #, python-format
 msgid "exporting bookmark %s\n"
@@ -9349,11 +12034,11 @@
 
 #, python-format
 msgid "deleting remote bookmark %s\n"
-msgstr "удаляется удаленная закладка %s\n"
+msgstr "удаляется отдалённая закладка %s\n"
 
 #, python-format
 msgid "bookmark %s does not exist on the local or remote repository!\n"
-msgstr "закладка %s не существует в локальном или удаленном репозитории!\n"
+msgstr "закладка %s не существует в локальном или отдалённом хранилище!\n"
 
 #, python-format
 msgid "updating bookmark %s failed!\n"
@@ -9363,14 +12048,15 @@
 msgstr "откатить прерванную транзакцию"
 
 msgid "    Recover from an interrupted commit or pull."
-msgstr "    Восстанавливает репозиторий после прерванного push или pull"
+msgstr ""
+"    Восстанавливает хранилище после прерванной фиксации или затягивания"
 
 msgid ""
 "    This command tries to fix the repository status after an\n"
 "    interrupted operation. It should only be necessary when Mercurial\n"
 "    suggests it."
 msgstr ""
-"    Эта команда пытается исправить состояние репозитория после\n"
+"    Эта команда пытается исправить состояние хранилища после\n"
 "    прерванной операции. Это должно быть необходимо только если\n"
 "    Mercurial сам предлагает это сделать."
 
@@ -9386,77 +12072,83 @@
 
 msgid "remove (and delete) file even if added or modified"
 msgstr ""
-"удалять файлы из каталога и репозитория даже если они были добавлены или "
+"удалять файлы из каталога и хранилища даже если они были добавлены или "
 "изменены"
 
 msgid "remove the specified files on the next commit"
-msgstr "удалить указанные файлы при следующем коммите"
-
-msgid "    Schedule the indicated files for removal from the repository."
-msgstr "    Помечает заданные файлы для удаления из репозитория."
-
-msgid ""
-"    This only removes files from the current branch, not from the\n"
-"    entire project history. -A/--after can be used to remove only\n"
-"    files that have already been deleted, -f/--force can be used to\n"
-"    force deletion, and -Af can be used to remove files from the next\n"
-"    revision without deleting them from the working directory."
-msgstr ""
-"    Удаляются только файлы с текущей ветки, а не из всей истории\n"
-"    проекта. Используйте -A/--after, чтобы удалить из репозитория\n"
-"    файлы, которые были удалены из рабочего каталога. -f/--force\n"
-"    удаляет файлы принудительно, -Af можно использовать чтобы\n"
-"    удалить файлы из следующей ревизии, не удаляя их из рабочего\n"
-"    каталога."
-
-msgid ""
-"    The following table details the behavior of remove for different\n"
-"    file states (columns) and option combinations (rows). The file\n"
-"    states are Added [A], Clean [C], Modified [M] and Missing [!] (as\n"
-"    reported by :hg:`status`). The actions are Warn, Remove (from\n"
-"    branch) and Delete (from disk)::"
-msgstr ""
-"    Приведенная ниже таблица поясняет поведение команды remove для\n"
-"    разных состояний файла (столбцы) и комбинаций параметров (строки).\n"
-"    Состояния файлов (как их показывает :hg:`status`):\n"
-"    Добавлен (Added) [A], Без изменений (Clean) [C],\n"
-"    Изменен (Modified) [M], Отсутствует (Missing) [!]. Действия:\n"
-"    Предупредить (Warn - W), удалить из ветви (Remove - R), удалить\n"
-"    из каталога (Delete - D)."
-
-# сбивается форматирование!!!
-#, fuzzy
-msgid ""
-"             A  C  M  !\n"
-"      none   W  RD W  R\n"
-"      -f     R  RD RD R\n"
-"      -A     W  W  W  R\n"
-"      -Af    R  R  R  R"
-msgstr ""
-"             A  C  M  !\n"
-"      нет    W  RD W  R\n"
-"      -f     R  RD RD R\n"
-"      -A     W  W  W  R\n"
-"      -Af    R  R  R  R"
-
-msgid ""
-"    Note that remove never deletes files in Added [A] state from the\n"
-"    working directory, not even if option --force is specified."
-msgstr ""
-"    Обратите внимание, что remove никогда не удаляет из рабочего\n"
-"    каталога файлы с состоянием Added [A], даже c опцией --force."
+msgstr "удалить указанные файлы при следующей фиксации"
+
+msgid "    Schedule the indicated files for removal from the current branch."
+msgstr "    Помечает заданные файлы для удаления из текущей ветки."
 
 msgid ""
 "    This command schedules the files to be removed at the next commit.\n"
-"    To undo a remove before that, see :hg:`revert`."
-msgstr ""
-"    Эта команда помечает файлы для удаления при следующем коммите.\n"
-"    Чтобы отменить удаление до коммита, см. :hg:`revert`."
+"    To undo a remove before that, see :hg:`revert`. To undo added\n"
+"    files, see :hg:`forget`."
+msgstr ""
+"    Эта команда помечает файлы для удаления при следующей фиксации.\n"
+"    Чтобы отменить удаление до фиксации, см. :hg:`revert`. Чтобы отменить\n"
+"    добавление файлов, см. :hg:`forget`."
+
+msgid ""
+"      -A/--after can be used to remove only files that have already\n"
+"      been deleted, -f/--force can be used to force deletion, and -Af\n"
+"      can be used to remove files from the next revision without\n"
+"      deleting them from the working directory."
+msgstr ""
+"      Используйте -A/--after, чтобы удалить из хранилища файлы,\n"
+"      которые были удалены из рабочего каталога. -f/--force\n"
+"      удаляет файлы принудительно, -Af можно использовать чтобы\n"
+"      удалить файлы из следующей ревизии, не удаляя их из рабочего\n"
+"      каталога."
+
+msgid ""
+"      The following table details the behavior of remove for different\n"
+"      file states (columns) and option combinations (rows). The file\n"
+"      states are Added [A], Clean [C], Modified [M] and Missing [!]\n"
+"      (as reported by :hg:`status`). The actions are Warn, Remove\n"
+"      (from branch) and Delete (from disk):"
+msgstr ""
+"      Приведенная ниже таблица поясняет поведение команды remove для\n"
+"      разных состояний файла (столбцы) и комбинаций параметров (строки).\n"
+"      Состояния файлов (как их показывает :hg:`status`):\n"
+"      Добавлен (Added) [A], Без изменений (Clean) [C],\n"
+"      Изменен (Modified) [M], Отсутствует (Missing) [!]. Действия:\n"
+"      Предупредить (Warn - W), удалить из ветки (Remove - R), удалить\n"
+"      с диска (Delete - D)."
+
+msgid ""
+"      ======= == == == ==\n"
+"              A  C  M  !\n"
+"      ======= == == == ==\n"
+"      none    W  RD W  R\n"
+"      -f      R  RD RD R\n"
+"      -A      W  W  W  R\n"
+"      -Af     R  R  R  R\n"
+"      ======= == == == =="
+msgstr ""
+"      ======= == == == ==\n"
+"              A  C  M  !\n"
+"      ======= == == == ==\n"
+"      нет     W  RD W  R\n"
+"      -f      R  RD RD R\n"
+"      -A      W  W  W  R\n"
+"      -Af     R  R  R  R\n"
+"      ======= == == == =="
+
+msgid ""
+"      Note that remove never deletes files in Added [A] state from the\n"
+"      working directory, not even if option --force is specified."
+msgstr ""
+"      Обратите внимание, что remove никогда не удаляет из рабочего\n"
+"      каталога файлы с состоянием Added [A], даже c параметром --force."
 
 msgid ""
 "    Returns 0 on success, 1 if any warnings encountered.\n"
 "    "
-msgstr "    При успехе возвращает 0, 1 если были придупреждения."
+msgstr ""
+"    При успехе возвращает 0, 1 если были предупреждения.\n"
+"    "
 
 #, python-format
 msgid "not removing %s: file is untracked\n"
@@ -9471,10 +12163,10 @@
 msgstr "%s не удален: файл изменен (-f - удалить принудительно)\n"
 
 #, python-format
-msgid ""
-"not removing %s: file has been marked for add (use -f to force removal)\n"
-msgstr ""
-"%s не удален: файл был помечен для добавления (-f - удалить принудительно)\n"
+msgid "not removing %s: file has been marked for add (use forget to undo)\n"
+msgstr ""
+"%s не удален: файл был помечен для добавления (используйте forget для "
+"отмены)\n"
 
 msgid "record a rename that has already occurred"
 msgstr "записать переименование, которое уже было сделано"
@@ -9499,14 +12191,14 @@
 "    This command takes effect at the next commit. To undo a rename\n"
 "    before that, see :hg:`revert`."
 msgstr ""
-"    Эффект команды закрепляется при следующем коммите. чтобы отменить\n"
-"    переимнование, см. :hg:`revert`."
+"    Действие команды закрепляется при следующей фиксации. чтобы отменить\n"
+"    переименование, см. :hg:`revert`."
 
 msgid "select all unresolved files"
-msgstr "работать со всеми требущими слияния файлами"
+msgstr "работать со всеми требующими слияния файлами"
 
 msgid "list state of files needing merge"
-msgstr "показать состояния файлов, трубующих слияния"
+msgstr "показать состояния файлов, требующих слияния"
 
 msgid "mark files as resolved"
 msgstr "пометить файлы как корректно слитый"
@@ -9530,7 +12222,7 @@
 msgstr ""
 "    Неразрешенные конфликтами часто являются результатом неинтерактивного\n"
 "    слияния с использованием ``internal:merge``, или программы слияния\n"
-"    с текстовым интерфесом, вроде ``diff3``. Команда resolve может\n"
+"    с текстовым интерфейсом, вроде ``diff3``. Команда resolve может\n"
 "    быть использована для управления файлами, участвующими в слиянии,\n"
 "    после того, как была запущена :hg:`merge`, но до :hg:`commit`\n"
 "    (т.е. рабочий каталог должен иметь двух \"родителей\")."
@@ -9543,16 +12235,21 @@
 "specified\n"
 "      files, discarding any previous merge attempts. Re-merging is not\n"
 "      performed for files already marked as resolved. Use ``--all/-a``\n"
-"      to selects all unresolved files. ``--tool`` can be used to specify\n"
+"      to select all unresolved files. ``--tool`` can be used to specify\n"
 "      the merge tool used for the given files. It overrides the HGMERGE\n"
-"      environment variable and your configuration files."
-msgstr ""
-"    - :hg:`resolve [--tool ПРОГРАММА] ФАЙЛ...`: попытаться повторитьслияние\n"
-"    файлов, отменяя предыдущие попытки. Повторное слияние не проводится\n"
-"    для файлов, помеченных как разрешенные. Используйте ``--all/-a``,\n"
-"    чтобы повторить слияние для всех неразрешенных файлов. Параметр\n"
-"    ``--tool`` может быть использован, чтобы задать программу для слияния.\n"
-"    Он замещает переменную окружения HGMERGE и конфиг."
+"      environment variable and your configuration files.  Previous file\n"
+"      contents are saved with a ``.orig`` suffix."
+msgstr ""
+"    - :hg:`resolve [--tool ПРОГРАММА] ФАЙЛ...`: попытаться повторить "
+"слияние\n"
+"      файлов, отменяя предыдущие попытки. Повторное слияние не проводится\n"
+"      для файлов, помеченных как разрешенные. Используйте ``--all/-a``,\n"
+"      чтобы повторить слияние для всех неразрешенных файлов. Параметр\n"
+"      ``--tool`` может быть использован, чтобы задать программу для "
+"слияния.\n"
+"      Он замещает переменную окружения HGMERGE и конфиг. Предыдущее "
+"содержимое\n"
+"      файла сохраняется с расширением ``.orig``."
 
 msgid ""
 "    - :hg:`resolve -m [FILE]`: mark a file as having been resolved\n"
@@ -9584,9 +12281,9 @@
 "    merge conflicts. You must use :hg:`resolve -m ...` before you can\n"
 "    commit after a conflicting merge."
 msgstr ""
-"    Обратите внимание, что Mercurial не даст вам закоммитить файлы\n"
+"    Обратите внимание, что Mercurial не даст вам зафиксировать файлы\n"
 "    с неразрешенными конфликтами слияния. Необходимо использовать\n"
-"    :hg:`resolve -m` перед коммитом после слияния с конфликтами."
+"    :hg:`resolve -m` перед фиксацией после слияния с конфликтами."
 
 msgid ""
 "    Returns 0 on success, 1 if any files fail a resolve attempt.\n"
@@ -9611,7 +12308,7 @@
 msgstr "максимальная ревизия не позднее ДАТЫ"
 
 msgid "revert to the specified revision"
-msgstr "вернуть состяние на момент указанной ревизию"
+msgstr "вернуть состояние на момент указанной ревизии"
 
 msgid "do not save backup copies of files"
 msgstr "не делать бэкап файлов"
@@ -9620,7 +12317,7 @@
 msgstr "[ПАРАМЕТР]... [-r РЕВИЗИЯ] [ИМЯ]..."
 
 msgid "restore files to their checkout state"
-msgstr "восстановить файлы до их состояния в репозитории"
+msgstr "восстановить файлы до их состояния в хранилище"
 
 msgid ""
 "    .. note::\n"
@@ -9634,15 +12331,19 @@
 
 msgid ""
 "    With no revision specified, revert the specified files or directories\n"
-"    to the state they had in the first parent of the working directory.\n"
+"    to the contents they had in the parent of the working directory.\n"
 "    This restores the contents of files to an unmodified\n"
-"    state and unschedules adds, removes, copies, and renames."
+"    state and unschedules adds, removes, copies, and renames. If the\n"
+"    working directory has two parents, you must explicitly specify a\n"
+"    revision."
 msgstr ""
 "    Если ревизия не задана, вернуть указанные файлы и каталоги к\n"
 "    состоянию, в котором они сохранены в родительской ревизии\n"
 "    рабочего каталога. Это восстанавливает содержимое указанных\n"
 "    файлов до неизмененного состояния и отменяет запланированные\n"
-"    добавления, удаления, копирования и переименования файлов."
+"    добавления, удаления, копирования и переименования файлов.\n"
+"    Если рабочий каталог имеет двух родителей, необходимо явно\n"
+"    указать ревизию."
 
 msgid ""
 "    Using the -r/--rev or -d/--date options, revert the given files or\n"
@@ -9654,7 +12355,7 @@
 msgstr ""
 "    С параметром -r/--rev или -d/--date восстанавливает содержимое \n"
 "    заданных файлов и каталогов до указанной ревизии. Т.к. revert \n"
-"    изменяет родителей рабочего каталога, эти файлы будут показыаться\n"
+"    изменяет родителей рабочего каталога, эти файлы будут показываться\n"
 "    как измененные. Это может быть полезным чтобы \"откатить\" все или\n"
 "    некоторые предшествующие изменения. См. также backout."
 
@@ -9669,6 +12370,12 @@
 msgid "you can't specify a revision and a date"
 msgstr "нельзя указывать одновременно дату и ревизию"
 
+msgid "uncommitted merge with no revision specified"
+msgstr "имеется незафиксированное слияние, и номер ревизии не указан"
+
+msgid "use \"hg update\" or see \"hg help revert\""
+msgstr "используйте \"hg update\", или см. \"hg help revert\""
+
 msgid "no files or directories specified"
 msgstr "не указаны файлы или каталоги"
 
@@ -9676,12 +12383,16 @@
 "uncommitted merge, use --all to discard all changes, or 'hg update -C .' to "
 "abort the merge"
 msgstr ""
+"незафиксированное слияние, используйте --all чтобы сбросить все изменения\n"
+"или 'hg update -C .' чтобы отменить слияние."
 
 #, python-format
 msgid ""
 "uncommitted changes, use --all to discard all changes, or 'hg update %s' to "
 "update"
 msgstr ""
+"незафиксированные изменения, используйте --all чтобы сбросить все изменения\n"
+"или 'hg update %s' чтобы обновиться."
 
 #, python-format
 msgid "use --all to revert all files, or 'hg update %s' to update"
@@ -9691,7 +12402,7 @@
 
 msgid "uncommitted changes, use --all to discard all changes"
 msgstr ""
-"незакоммиченные изменения, используйте --all чтобы сбросить все изменения"
+"незафиксированные изменения, используйте --all чтобы сбросить все изменения"
 
 msgid "use --all to revert all files"
 msgstr "используйте --all чтобы восстановить все файлы"
@@ -9702,7 +12413,7 @@
 
 #, python-format
 msgid "reverting %s\n"
-msgstr "восстанавление %s\n"
+msgstr "восстановление %s\n"
 
 #, python-format
 msgid "undeleting %s\n"
@@ -9710,7 +12421,7 @@
 
 #, python-format
 msgid "saving current version of %s as %s\n"
-msgstr "текущая версисия %s сохраняется как %s\n"
+msgstr "текущая версия %s сохраняется как %s\n"
 
 #, python-format
 msgid "file not managed: %s\n"
@@ -9720,6 +12431,9 @@
 msgid "no changes needed to %s\n"
 msgstr "не требуются изменения для %s\n"
 
+msgid "ignore safety measures"
+msgstr "игнорировать меры безопасности"
+
 msgid "roll back the last transaction (dangerous)"
 msgstr "откатить последнюю транзакцию (опасно)"
 
@@ -9744,7 +12458,7 @@
 msgstr ""
 "    Транзакции используются для инкапсуляции эффектов всех команд,\n"
 "    которые создают новые наборы изменений или передают уже\n"
-"    существующие в репозиторий. Действие таких команд можно откатиь.\n"
+"    существующие в хранилище. Действие таких команд можно откатить.\n"
 "    Транзакционными являются, например, следующие команды:"
 
 msgid ""
@@ -9757,9 +12471,23 @@
 "    - commit\n"
 "    - import\n"
 "    - pull\n"
-"    - push (с текущим репозиторием в качестве назначения)\n"
+"    - push (с текущим хранилищем в качестве назначения)\n"
 "    - unbundle"
 
+# BUG force won't help you to avoid data loss
+msgid ""
+"    It's possible to lose data with rollback: commit, update back to\n"
+"    an older changeset, and then rollback. The update removes the\n"
+"    changes you committed from the working directory, and rollback\n"
+"    removes them from history. To avoid data loss, you must pass\n"
+"    --force in this case."
+msgstr ""
+"    При использовании rollback возможна потеря данных: зафиксировать,\n"
+"    обновиться обратно на предыдущую ревизию и сделать rollback. Update\n"
+"    удалит изменения, которые вы зафиксировали, из рабочего каталога,\n"
+"    а rollback сотрет их из истории. Чтобы избежать потери данных,\n"
+"    вы должны в таком случае передать --force."
+
 msgid ""
 "    This command is not intended for use on public repositories. Once\n"
 "    changes are visible for pull by other users, rolling a transaction\n"
@@ -9769,11 +12497,11 @@
 "    may fail if a rollback is performed."
 msgstr ""
 "    Эта команда не предназначена для использования на публичных\n"
-"    репозиториях. Если изменения могут быть утянутыми другими\n"
+"    хранилищах. Если изменения могут быть утянутыми другими\n"
 "    пользователями, локальный откат транзакций не имеет смысла\n"
 "    (кто-то могу уже утянуть изменения). Более того, возможны гонки\n"
-"    с читающими репозитрий; например, текущий pull может завершиться\n"
-"    нудачей, если в это время будет вызван rollback."
+"    с читающими хранилище; например, текущий pull может завершиться\n"
+"    неудачей, если в это время будет вызван rollback."
 
 msgid ""
 "    Returns 0 on success, 1 if no rollback data is available.\n"
@@ -9783,10 +12511,10 @@
 "    "
 
 msgid "print the root (top) of the current working directory"
-msgstr "напечатать корневой каталог текущего репозитория"
+msgstr "напечатать корневой каталог текущего хранилища"
 
 msgid "    Print the root directory of the current repository."
-msgstr "    Печатает корневой каталог текущего репозитория."
+msgstr "    Печатает корневой каталог текущего хранилища."
 
 msgid "name of access log file to write to"
 msgstr "имя файла для записи журнала доступа"
@@ -9807,7 +12535,7 @@
 msgstr "АДРЕС"
 
 msgid "prefix path to serve from (default: server root)"
-msgstr "корневая директория веб-сервера (по умолчанию: корень сервера)"
+msgstr "корневой каталог веб-сервера (по умолчанию: корень сервера)"
 
 msgid "name to show in web pages (default: working directory)"
 msgstr ""
@@ -9820,7 +12548,7 @@
 msgstr "путь к конфигу hgweb (УСТАРЕЛО)"
 
 msgid "for remote clients"
-msgstr "для удалённых клиентов"
+msgstr "для отдалённых клиентов"
 
 msgid "web templates to use"
 msgstr "используемые веб-шаблоны"
@@ -9843,9 +12571,9 @@
 "    recommended to use a real web server to serve a repository for\n"
 "    longer periods of time."
 msgstr ""
-"    Запускает локальный HTTP-обзреватель репозитория и pull-сервер.\n"
-"    Эту команду можно использовать в качетве простого способа\n"
-"    организации совместного доступа и просмотра репозитория по сети.\n"
+"    Запускает локальный HTTP-обозреватель хранилища и pull-сервер.\n"
+"    Эту команду можно использовать в качестве простого способа\n"
+"    организации совместного доступа и просмотра хранилища по сети.\n"
 "    Для более серьезной работы в течение длительного времени,\n"
 "    рекомендуется использовать нормальный веб-сервер."
 
@@ -9856,8 +12584,8 @@
 "    option to ``*`` to allow everybody to push to the server. You\n"
 "    should use a real web server if you need to authenticate users."
 msgstr ""
-"    Обратите внимание, что такой сервер не подерживает права доступа.\n"
-"    Это значит, что по умолчанию кто угодно пожет читать репозитории\n"
+"    Обратите внимание, что такой сервер не поддерживает права доступа.\n"
+"    Это значит, что по умолчанию кто угодно может читать хранилища\n"
 "    и не может писать в них. Установите параметр ``web.allow_push`` в\n"
 "    значение ``*``, чтобы разрешить всем делать push на сервер.\n"
 "    Используйте настоящий веб-сервер, если требуется аутентификация\n"
@@ -9882,10 +12610,10 @@
 "    напечатает выбранный порт."
 
 msgid "cannot use --stdio with --cmdserver"
-msgstr ""
+msgstr "нельзя использовать --stdio с --cmdserver"
 
 msgid "There is no Mercurial repository here (.hg not found)"
-msgstr "Здесь нет репозитория Mercurial (.hg не обнаружен)"
+msgstr "Здесь нет хранилища Mercurial (.hg не обнаружен)"
 
 #, python-format
 msgid "listening at http://%s%s/%s (bound to %s:%d)\n"
@@ -9901,7 +12629,7 @@
 msgstr "показать совмещенные настройки из всех файлов конфигурации"
 
 msgid "    With no arguments, print names and values of all config items."
-msgstr "    Без аргументов печатает имена и значения всех парматров конфига."
+msgstr "    Без аргументов печатает имена и значения всех параметров конфига."
 
 msgid ""
 "    With one argument of the form section.name, print just the value\n"
@@ -9925,7 +12653,7 @@
 "    и номер строки, откуда он был прочитан."
 
 msgid "only one config item permitted"
-msgstr "можно указать только один парметр конфига"
+msgstr "можно указать только один параметр конфига"
 
 msgid "show status of all files"
 msgstr "показать состояние всех файлов"
@@ -9937,16 +12665,16 @@
 msgstr "показать только добавленные файлы"
 
 msgid "show only removed files"
-msgstr "показать только удаленные файлы"
+msgstr "показать только отдалённые файлы"
 
 msgid "show only deleted (but tracked) files"
-msgstr "показать только удаленные (но контролируемые) файлы"
+msgstr "показать только отдалённые (но отслеживаемые) файлы"
 
 msgid "show only files without changes"
 msgstr "показать только неизмененные файлы"
 
 msgid "show only unknown (not tracked) files"
-msgstr "показать только неизвестные (не отслежиываемые) файлы"
+msgstr "показать только неизвестные (не отслеживаемые) файлы"
 
 msgid "show only ignored files"
 msgstr "показать только игнорируемые файлы"
@@ -9955,7 +12683,7 @@
 msgstr "показать источник скопированного файла"
 
 msgid "show difference from revision"
-msgstr "показать отличия от ревии"
+msgstr "показать отличия от ревизии"
 
 msgid "list the changed files of a revision"
 msgstr "показать измененные файлы с момента ревизии"
@@ -9971,8 +12699,8 @@
 "    Unless options described with \"show only ...\" are given, the\n"
 "    options -mardu are used."
 msgstr ""
-"    Показывает статус файлов в репозитории. Если заданы имена файлов,\n"
-"    пеатает состояния только для подходящих файлов. Файлы без\n"
+"    Показывает статус файлов в хранилище. Если заданы имена файлов,\n"
+"    печатает состояния только для подходящих файлов. Файлы без\n"
 "    изменений, а также игнорируемые файлы и исходные файлы \n"
 "    скопированных/переименованных файлов не печатаются, если не\n"
 "    задан -c/--clean, -i/--ignored, -C/--copies или -A/-all.\n"
@@ -10007,11 +12735,11 @@
 msgstr ""
 "    Если задана одна ревизия, она используется в качестве базовой.\n"
 "    Если заданы две ревизии, показываются отличия между ними. Можно\n"
-"    использовать --change чтобы вывести только изменные файлы в\n"
-"    в ревизии по сравнению с ее первоым родителем."
+"    использовать --change чтобы вывести только изменённые файлы в\n"
+"    в ревизии по сравнению с ее первым родителем."
 
 msgid "    The codes used to show the status of files are::"
-msgstr "    Испльзуются следующие коды состояний файлов::"
+msgstr "    Используются следующие коды состояний файлов::"
 
 msgid ""
 "      M = modified\n"
@@ -10032,6 +12760,32 @@
 "      I = игнорируется (ignored)\n"
 "        = источник предыдущего файла показанного как A (добавлен)"
 
+msgid ""
+"      - show changes in the working directory relative to a\n"
+"        changeset::"
+msgstr ""
+"      - показать изменения в рабочем каталоге относительно\n"
+"        набора изменений::"
+
+msgid "          hg status --rev 9353"
+msgstr "          hg status --rev 9353"
+
+msgid "      - show all changes including copies in an existing changeset::"
+msgstr ""
+"      - показать все изменения, включая копирования, в существующем\n"
+"        наборе изменений::"
+
+msgid "          hg status --copies --change 9353"
+msgstr "          hg status --copies --change 9353"
+
+msgid "      - get a NUL separated list of added files, suitable for xargs::"
+msgstr ""
+"      - показать разделенный символом NUL список добавленных файлов\n"
+"       для использования с xargs::"
+
+msgid "          hg status -an0"
+msgstr "          hg status -an0"
+
 msgid "check for push and pull"
 msgstr "проверить наличие входящих и исходящих изменений"
 
@@ -10043,7 +12797,7 @@
 "    including parents, branch, commit status, and available updates."
 msgstr ""
 "    Показывает краткую сводку состояния рабочего каталога, включая\n"
-"    информацию о родителях, ветви, незакоммиченных файлах и доступных\n"
+"    информацию о родителях, ветке, незафиксированных файлах и доступных\n"
 "    обновлениях."
 
 msgid ""
@@ -10058,14 +12812,17 @@
 msgstr "родитель: %d:%s"
 
 msgid " (empty repository)"
-msgstr " (пустой репозиторий)"
+msgstr " (пустое хранилище)"
 
 msgid " (no revision checked out)"
 msgstr " (нет извлеченной ревизии)"
 
 #, python-format
 msgid "branch: %s\n"
-msgstr "ветвь: %s\n"
+msgstr "ветка: %s\n"
+
+msgid "bookmarks:"
+msgstr "закладки:"
 
 #, python-format
 msgid "%d modified"
@@ -10105,13 +12862,13 @@
 
 #, python-format
 msgid "%d subrepos"
-msgstr "%d субрепозиториев"
+msgstr "%d подхранилищ"
 
 msgid " (merge)"
 msgstr " (слияние)"
 
 msgid " (new branch)"
-msgstr " (новая ветвь)"
+msgstr " (новая ветка)"
 
 msgid " (head closed)"
 msgstr " (голова закрыта)"
@@ -10120,11 +12877,11 @@
 msgstr " (без изменений)"
 
 msgid " (new branch head)"
-msgstr " (новая голова ветви)"
+msgstr " (новая голова ветки)"
 
 #, python-format
 msgid "commit: %s\n"
-msgstr " коммит: %s\n"
+msgstr "фиксация: %s\n"
 
 msgid "update: (current)\n"
 msgstr "обновление: (текущее)\n"
@@ -10154,10 +12911,10 @@
 
 #, python-format
 msgid "remote: %s\n"
-msgstr "удаленный репозиторий: %s\n"
+msgstr "отдалённо: %s\n"
 
 msgid "remote: (synced)\n"
-msgstr "удаленный репозиторий: (синхронизирован)\n"
+msgstr "отдалённо: (синхронизировано)\n"
 
 msgid "force tag"
 msgstr "установить метку принудительно"
@@ -10169,10 +12926,10 @@
 msgstr "пометить указанную ревизию"
 
 msgid "remove a tag"
-msgstr "уадалить метку"
+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 ТЕКСТ] [-d ДАТА] [-u ПОЛЬЗОВАТЕЛЬ] [-r РЕВ] ИМЯ..."
@@ -10213,9 +12970,9 @@
 "    Чтобы упростить контроль версий, распространение и слияние меток,\n"
 "    они хранятся в файле \".hgtags\", который обрабатывается так же,\n"
 "    как и любой файл в проекте и при необходимости может правиться\n"
-"    вручную. Это означает, что созднание или изменение метки создает\n"
-"    также и новый коммит. Файл \".hg/localtags\" используется для\n"
-"    локальных меток и не передается между репозиториями."
+"    вручную. Это означает, что создание или изменение метки создает\n"
+"    также и новую фиксацию. Файл \".hg/localtags\" используется для\n"
+"    локальных меток и не передается между хранилищами."
 
 msgid ""
 "    Tag commits are usually made at the head of a branch. If the parent\n"
@@ -10223,19 +12980,19 @@
 "    -f/--force to force the tag commit to be based on a non-head\n"
 "    changeset."
 msgstr ""
-"    Обычно коммиты, связанные с метками, создаются на голове ветви.\n"
-"    Если родительская ревизия рабочего каталоа не является головой\n"
-"    ветви, :hg:`tag` не срабатывает. В этом случает можно использовать\n"
-"    -f/-force чтобы принудительно создать коммит для метки на не\n"
-"    головной ревизии."
+"    Обычно фиксации, связанные с метками, создаются на голове ветки.\n"
+"    Если родительская ревизия рабочего каталога не является головой\n"
+"    ветки, :hg:`tag` не срабатывает. В этом случае можно использовать\n"
+"    -f/-force чтобы принудительно создать фиксацию для метки на\n"
+"    неголовной ревизии."
 
 msgid ""
 "    Since tag names have priority over branch names during revision\n"
 "    lookup, using an existing branch name as a tag name is discouraged."
 msgstr ""
-"    Поскольку имя метки имеет больший приоритерт при поиске ревизии\n"
-"    чем имя ветви, настоятельно не рекомендуется использовать имя\n"
-"    существующей ветви в качестве имени метки."
+"    Поскольку имя метки имеет больший приоритет при поиске ревизии\n"
+"    чем имя ветки, настоятельно не рекомендуется использовать имя\n"
+"    существующей ветки в качестве имени метки."
 
 msgid "tag names must be unique"
 msgstr "имя метки должно быть уникальным"
@@ -10260,16 +13017,16 @@
 
 #, python-format
 msgid "tag '%s' already exists (use -f to force)"
-msgstr "метка '%s' уже сущестует (-f - задать принудительно)"
+msgstr "метка '%s' уже существует (-f - задать принудительно)"
 
 msgid "uncommitted merge"
-msgstr "незакоммиченное слияние"
+msgstr "незафиксированное слияние"
 
 msgid "not at a branch head (use -f to force)"
-msgstr "не на голове ветви (-f - установить принудительно)"
+msgstr "не на голове ветки (-f - установить принудительно)"
 
 msgid "list repository tags"
-msgstr "перечислить метки в репозитории"
+msgstr "перечислить метки в хранилище"
 
 msgid ""
 "    This lists both regular and local tags. When the -v/--verbose\n"
@@ -10290,7 +13047,7 @@
 "    recently changed head)."
 msgstr ""
 "    Оконечная ревизия (tip) - это набор последний добавленный в\n"
-"    репозиторий набор изменений (и, следовательно, последняя\n"
+"    хранилище набор изменений (и, следовательно, последняя\n"
 "    измененная головная ревизия)."
 
 msgid ""
@@ -10299,14 +13056,14 @@
 "    that repository becomes the current tip. The \"tip\" tag is special\n"
 "    and cannot be renamed or assigned to a different changeset."
 msgstr ""
-"    Если вы только что сделали коммит, этот коммит и будет tip'ом.\n"
-"    Если вы только что подтянули изменения из другого репозитория,\n"
-"    tip этого репозитория станет текущим tip'ом. Метка \"tip\"\n"
+"    Если вы только что сделали фиксацию, эта фиксация и будет tip'ом.\n"
+"    Если вы только что затянули изменения из другого хранилища,\n"
+"    tip этого хранилища станет текущим tip'ом. Метка \"tip\"\n"
 "    является служебной и не может быть переименована или назначена\n"
 "    другой ревизии."
 
 msgid "update to new branch head if changesets were unbundled"
-msgstr "обновиться на новую голову ветви, если были добавлены наборы изменений"
+msgstr "обновиться на новую голову ветки, если были добавлены наборы изменений"
 
 msgid "[-u] FILE..."
 msgstr "[-u] ФАЙЛ..."
@@ -10330,10 +13087,10 @@
 "    "
 
 msgid "discard uncommitted changes (no backup)"
-msgstr "затереть незакоммиченные изменения (без бэкапа)"
+msgstr "затереть незафиксированные изменения (без создания резервной копии)"
 
 msgid "update across branches if no uncommitted changes"
-msgstr "обновиться на другую ветвь если нет незакоммиченных изменений"
+msgstr "обновиться на другую ветку если нет незафиксированных изменений"
 
 msgid "[-c] [-C] [-d DATE] [[-r] REV]"
 msgstr "[-c] [-C] [-d ДАТА] [[-r] РЕВИЗИЯ]"
@@ -10346,9 +13103,9 @@
 "    changeset. If no changeset is specified, update to the tip of the\n"
 "    current named branch."
 msgstr ""
-"    Обновляет рабочую копию репозитория до указанную ревизию. Если\n"
+"    Обновляет рабочую копию хранилища на указанную ревизию. Если\n"
 "    ревизия не задана, обновляет до оконечной ревизии (tip) текущей\n"
-"    именованной ветви."
+"    именованной ветки."
 
 msgid ""
 "    If the changeset is not a descendant of the working directory's\n"
@@ -10359,8 +13116,8 @@
 msgstr ""
 "    Если РЕВИЗИЯ - не потомок родителя рабочего каталога, update\n"
 "    завершается с ошибкой. С опцией -c/--check рабочий каталог\n"
-"    проверяется на наличие незакоммиченных изменений; если таковых\n"
-"    нет, раочий каталог обновляется до указанной ревизии."
+"    проверяется на наличие незафиксированных изменений; если таковых\n"
+"    нет, рабочий каталог обновляется до указанной ревизии."
 
 msgid ""
 "    Update sets the working directory's parent revison to the specified\n"
@@ -10373,7 +13130,7 @@
 "    The following rules apply when the working directory contains\n"
 "    uncommitted changes:"
 msgstr ""
-"    Если рабочий каталог содержит незакоммиченные изменения,\n"
+"    Если рабочий каталог содержит незафиксированные изменения,\n"
 "    применяются следующие правила:"
 
 msgid ""
@@ -10388,10 +13145,10 @@
 msgstr ""
 "    1. Если не указаны ни -c/--check, ни -C/--clean и если заданная\n"
 "       ревизия является предком или потомком родителя рабочего\n"
-"       каталога, незакоммиченные изменения сливаются в заданную\n"
-"       ревизию и результат слияния остается незакоммиченным. Если\n"
+"       каталога, незафиксированные изменения сливаются в заданную\n"
+"       ревизию и результат слияния остается незафиксированным. Если\n"
 "       заданная ревизия не предок и не потомок (т.е. на другой ветке)\n"
-"       update завершается с ошибкой, незакоммиченные изменения\n"
+"       update завершается с ошибкой, незафиксированные изменения\n"
 "       сохраняются."
 
 msgid ""
@@ -10399,13 +13156,13 @@
 "       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"
+"    3. С опцией -C/--clean незафиксированные изменения отбрасываются\n"
 "       и рабочий каталог обновляется до указанной ревизии."
 
 msgid ""
@@ -10425,14 +13182,11 @@
 msgid "cannot specify both -c/--check and -C/--clean"
 msgstr "нельзя одновременно указывать -c/--check и -C/-clean"
 
-msgid "uncommitted local changes"
-msgstr "незакоммиченные локальные изменения"
-
 msgid "verify the integrity of the repository"
-msgstr "проверить целостность репозитория"
+msgstr "проверить целостность хранилища"
 
 msgid "    Verify the integrity of the current repository."
-msgstr "    Проверяет целостность текущего репозитория."
+msgstr "    Проверяет целостность текущего хранилища."
 
 msgid ""
 "    This will perform an extensive check of the repository's\n"
@@ -10440,7 +13194,7 @@
 "    the changelog, manifest, and tracked files, as well as the\n"
 "    integrity of their crosslinks and indices."
 msgstr ""
-"    Эта команда проводит тщательную проверку целостности репозитория\n"
+"    Эта команда проводит тщательную проверку целостности хранилища\n"
 "    сверяя хэши и контрольные суммы каждого элемента в журнале\n"
 "    изменений, манифесте и отслеживаемых файлах, а также целостность\n"
 "    их взаимосвязей и индексов."
@@ -10462,8 +13216,8 @@
 msgstr ""
 "(С) 2005-2011 Matt Mackall и другие.\n"
 "Это свободное ПО; условия распространения см. в исходном коде.\n"
-"НИКАКИХ ГАРАНТИЙ НЕ ПРЕДОСТАВЛЯЕТСЯ, в том числе, на пригодность для\n"
-"коммерческого использования и для решения конкертных задач.\n"
+"НИКАКИХ ГАРАНТИЙ НЕ ПРЕДОСТАВЛЯЕТСЯ, в том числе на пригодность для\n"
+"коммерческого использования и для решения конкретных задач.\n"
 
 #, python-format
 msgid "unknown mode %s"
@@ -10475,296 +13229,333 @@
 
 #, python-format
 msgid "cannot include %s (%s)"
-msgstr ""
+msgstr "не удается включить %s (%s)"
 
 msgid "not found in manifest"
-msgstr ""
+msgstr "не найден в манифесте"
 
 #, python-format
 msgid "no such file in rev %s"
-msgstr ""
+msgstr "нет такого файла в ревизии %s"
 
 msgid "branch name not in UTF-8!"
-msgstr ""
+msgstr "имя ветки не в UTF-8"
 
 #, python-format
 msgid "%s does not exist!\n"
-msgstr ""
+msgstr "%s не существует!\n"
 
 #, python-format
 msgid ""
 "%s: up to %d MB of RAM may be required to manage this file\n"
 "(use 'hg revert %s' to cancel the pending addition)\n"
 msgstr ""
+"%s: может потребовтаь до %d Мб памяти для обработки этого файла\n"
+"(используйте 'hg revert %s' чтобы отменить запланированное добавление)\n"
 
 #, python-format
 msgid "%s not added: only files and symlinks supported currently\n"
 msgstr ""
+"%s не добавлен: в настоящий момент поддерживаются только файлы\n"
+"и символические ссылки\n"
 
 #, python-format
 msgid "%s already tracked!\n"
-msgstr ""
+msgstr "%s уже отслеживается!\n"
 
 #, python-format
 msgid "%s not tracked!\n"
-msgstr ""
+msgstr "%s не отслеживается!\n"
 
 #, python-format
 msgid "%s not removed!\n"
-msgstr ""
+msgstr "%s не изъят из-под контроля версий!\n"
 
 #, python-format
 msgid "copy failed: %s is not a file or a symbolic link\n"
-msgstr ""
+msgstr "ошибка при копировании: %s не файл и не символическая ссылка\n"
 
 #, python-format
 msgid "invalid character in dag description: %s..."
-msgstr ""
+msgstr "недопустимый символ в описании графа: %s..."
 
 #, python-format
 msgid "expected id %i, got %i"
-msgstr ""
+msgstr "ожидается идентификатор %i, получен %i"
 
 #, python-format
 msgid "parent id %i is larger than current id %i"
-msgstr ""
+msgstr "идентификатор родителя %i больше текущего идентификатора %i"
 
 #, python-format
 msgid "invalid event type in dag: %s"
-msgstr ""
+msgstr "недопустимый тип события в графе: %s"
 
 msgid "nullid"
-msgstr ""
+msgstr "пустой идентификатор (nullid)"
 
 msgid "working directory state appears damaged!"
-msgstr ""
+msgstr "похоже, рабочий каталог находится в поврежденном состоянии!"
 
 #, python-format
 msgid "directory %r already in dirstate"
-msgstr ""
+msgstr "каталог %r уже в dirstate"
 
 #, python-format
 msgid "file %r in dirstate clashes with %r"
-msgstr ""
+msgstr "файл %r конфликтует c %r в dirstate"
 
 #, python-format
 msgid "setting %r to other parent only allowed in merges"
-msgstr ""
+msgstr "установка %r в другого родителя разрешена только для слияний"
 
 msgid "unknown"
-msgstr "неизвесно"
+msgstr "неизвестно"
 
 msgid "character device"
-msgstr ""
+msgstr "символьное устройство"
 
 msgid "block device"
-msgstr ""
+msgstr "блочное устройство"
 
 msgid "fifo"
-msgstr ""
+msgstr "fifo"
 
 msgid "socket"
-msgstr ""
+msgstr "сокет"
 
 msgid "directory"
-msgstr ""
+msgstr "каталог"
 
 #, python-format
 msgid "unsupported file type (type is %s)"
-msgstr ""
+msgstr "неподдерживаемый тип файла (%s)"
+
+#, python-format
+msgid "no changes to push but %i secret changesets\n"
+msgstr "нет исходящих изменений, но есть %i секретных наборов изменений\n"
 
 #, python-format
 msgid "push creates new remote branches: %s!"
-msgstr ""
+msgstr "push создаст новые ветки в отдалённом хранилище: %s!"
 
 msgid "use 'hg push --new-branch' to create new remote branches"
 msgstr ""
+"используйте 'hg push --new-branch' чтобы создать новые ветки ветки\n"
+"в отдаленном хранилище"
 
 #, python-format
 msgid "push creates new remote head %s on branch '%s'!"
-msgstr ""
+msgstr "push создает новую голову в отдаленном хранилище %s на ветке '%s'!"
 
 #, python-format
 msgid "push creates new remote head %s!"
-msgstr "push создаст новую голову %s в удаленном репозитории!"
+msgstr "push создаст новую голову %s в отдалённом хранилище!"
 
 msgid "you should pull and merge or use push -f to force"
 msgstr ""
+"необходимо выпобнить pull, затем merge, либо использовать push -f,\n"
+"чтобы протолкнуть принудительно"
 
 msgid "did you forget to merge? use push -f to force"
 msgstr ""
+"забыли выполнить слияние? используйте push -f, чтобы протолкнуть "
+"принудительно"
+
+#, python-format
+msgid "new remote heads on branch '%s'\n"
+msgstr "новые головные ревизии в отдалённом хранилище на ветке '%s'\n"
+
+#, python-format
+msgid "new remote head %s\n"
+msgstr "новая головная ревизия %s в отдалённом хранилище\n"
 
 msgid "note: unsynced remote changes!\n"
-msgstr ""
+msgstr "внимание: несинхронизированные изменения в отдаленном хранилище!\n"
 
 #, python-format
 msgid "abort: %s\n"
-msgstr ""
+msgstr "останов: %s\n"
 
 #, python-format
 msgid "(%s)\n"
-msgstr ""
+msgstr "(%s)\n"
 
 #, python-format
 msgid "hg: parse error at %s: %s\n"
-msgstr ""
+msgstr "hg: ошибка разбора в %s: %s\n"
 
 #, python-format
 msgid "hg: parse error: %s\n"
-msgstr ""
+msgstr "hg: ошибка разбора: %s\n"
 
 msgid "entering debugger - type c to continue starting hg or h for help\n"
 msgstr ""
+"вход в отладчик - напечатайте c для продолжения запуска hg или h для "
+"справки\n"
 
 #, python-format
 msgid ""
 "hg: command '%s' is ambiguous:\n"
 "    %s\n"
 msgstr ""
+"hg: команда '%s' неоднозначна:\n"
+"    %s\n"
 
 #, python-format
 msgid "timed out waiting for lock held by %s"
-msgstr ""
+msgstr "таймаут при ожидании блокировки, удерживаемой %s"
 
 #, python-format
 msgid "lock held by %s"
-msgstr ""
+msgstr "блокировка удерживается %s"
 
 #, python-format
 msgid "abort: %s: %s\n"
-msgstr ""
+msgstr "останов: %s: %s\n"
 
 #, python-format
 msgid "abort: could not lock %s: %s\n"
-msgstr ""
+msgstr "останов: не удается заблокировать %s: %s\n"
 
 #, python-format
 msgid "hg %s: %s\n"
-msgstr ""
+msgstr "hg %s: %s\n"
 
 #, python-format
 msgid "hg: %s\n"
-msgstr ""
+msgstr "hg: %s\n"
+
+msgid "abort: remote error:\n"
+msgstr "останов: ошибка на отдаленной стороне:\n"
 
 #, python-format
 msgid "abort: %s!\n"
-msgstr "прервано: %s!\n"
+msgstr "останов: %s!\n"
 
 #, python-format
 msgid "abort: %s"
-msgstr ""
+msgstr "останов: %s"
 
 msgid " empty string\n"
-msgstr ""
-
+msgstr " пустая строка\n"
+
+# можно так перевести?
 msgid "killed!\n"
-msgstr ""
+msgstr "прервано сигналом!\n"
 
 #, python-format
 msgid "hg: unknown command '%s'\n"
-msgstr ""
+msgstr "hg: неизвестная команда '%s'\n"
 
 msgid "(did you forget to compile extensions?)\n"
-msgstr ""
+msgstr "(вы не забыли скомпилировать расширения?)\n"
 
 msgid "(is your Python install correct?)\n"
-msgstr ""
+msgstr "(правильно ли у вас установлен Python?)\n"
 
 #, python-format
 msgid "abort: error: %s\n"
-msgstr ""
+msgstr "останов: ошибка: %s\n"
 
 msgid "broken pipe\n"
-msgstr ""
+msgstr "обрыв канала (broken pipe)\n"
 
 msgid "interrupted!\n"
-msgstr ""
+msgstr "прервано!\n"
 
 msgid ""
 "\n"
 "broken pipe\n"
 msgstr ""
+"\n"
+"обрыв канала (broken pipe)\n"
 
 msgid "abort: out of memory\n"
-msgstr ""
+msgstr "останов: недостаточно памяти\n"
 
 msgid "** unknown exception encountered, please report by visiting\n"
-msgstr ""
+msgstr "** неизвестное исключение, пожалуйте, сообщите об этом по адресу\n"
 
 msgid "**  http://mercurial.selenic.com/wiki/BugTracker\n"
-msgstr ""
+msgstr "**  http://mercurial.selenic.com/wiki/BugTracker\n"
 
 #, python-format
 msgid "** Python %s\n"
-msgstr ""
+msgstr "** Python %s\n"
 
 #, python-format
 msgid "** Mercurial Distributed SCM (version %s)\n"
-msgstr ""
+msgstr "** Распределенная система контроля версий Mercurial (версия %s)\n"
 
 #, python-format
 msgid "** Extensions loaded: %s\n"
-msgstr ""
+msgstr "** Загруженные расширения: %s\n"
 
 #, python-format
 msgid "no definition for alias '%s'\n"
-msgstr ""
+msgstr "отсутствует определение псевдонима '%s'\n"
 
 #, python-format
 msgid ""
 "error in definition for alias '%s': %s may only be given on the command "
 "line\n"
 msgstr ""
+"ошибка в определении псеводнима '%s': %s может быть задан только в командной "
+"строке\n"
 
 #, python-format
 msgid "alias '%s' resolves to unknown command '%s'\n"
-msgstr ""
+msgstr "псевдоним '%s' сводится к неизвестной команде '%s'\n"
 
 #, python-format
 msgid "alias '%s' resolves to ambiguous command '%s'\n"
-msgstr ""
+msgstr "псевдоним '%s' сводится к неоднозначной команде '%s'\n"
 
 #, python-format
 msgid "malformed --config option: %r (use --config section.name=value)"
 msgstr ""
+"некорректный параметр --config: %r (используйте --config секция.имя=значение)"
 
 #, python-format
 msgid "error getting current working directory: %s"
-msgstr ""
+msgstr "ошибка при получении текущего рабочего каталога (cwd): %s"
 
 #, python-format
 msgid "extension '%s' overrides commands: %s\n"
 msgstr "расширение '%s' переопределяет команды: %s\n"
 
 msgid "option --config may not be abbreviated!"
-msgstr ""
+msgstr "параметр --config не может быть сокращен!"
 
 msgid "option --cwd may not be abbreviated!"
-msgstr ""
+msgstr "параметр --cwd не может быть сокращен!"
 
 msgid ""
 "Option -R has to be separated from other options (e.g. not -qR) and --"
 "repository may only be abbreviated as --repo!"
 msgstr ""
+"Параметр -R должен быть отделен от других параметров (т.е. не -qR) и\n"
+"--repository можно сократить только до --repo!"
 
 #, python-format
 msgid "Time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n"
-msgstr ""
+msgstr "Время: полное (real) %.3f c (польз %.3f+%.3f сист %.3f+%.3f)\n"
 
 #, python-format
 msgid "repository '%s' is not local"
-msgstr "репозиторий '%s' не локальный"
-
-#, python-format
-msgid "no repository found in %r (.hg not found)"
-msgstr ""
+msgstr "хранилище '%s' не локально"
+
+#, python-format
+msgid "no repository found in '%s' (.hg not found)"
+msgstr "хранилище не найдено в '%s' (не найден .hg)"
 
 msgid "warning: --repository ignored\n"
-msgstr ""
+msgstr "внимание: параметр --repository игнорируется\n"
 
 #, python-format
 msgid "unrecognized profiling format '%s' - Ignored\n"
-msgstr "неопознаный формат профилирования '%s' - Игнорирован\n"
+msgstr "неопознанный формат профилирования '%s' - Игнорирован\n"
 
 msgid ""
 "lsprof not available - install from http://codespeak.net/svn/user/arigo/hack/"
@@ -10775,60 +13566,49 @@
 
 #, python-format
 msgid "*** failed to import extension %s from %s: %s\n"
-msgstr ""
+msgstr "*** не удалось испортировать расширение %s из %s: %s\n"
 
 #, python-format
 msgid "*** failed to import extension %s: %s\n"
-msgstr ""
+msgstr "*** не удалось испортировать расширение %s: %s\n"
 
 #, python-format
 msgid "warning: error finding commands in %s\n"
-msgstr ""
+msgstr "внимание: не удалось найти команды в %s\n"
 
 #, python-format
 msgid "couldn't find merge tool %s\n"
-msgstr ""
+msgstr "не удалось найти программу для слияния %s\n"
 
 #, python-format
 msgid "tool %s can't handle symlinks\n"
-msgstr ""
+msgstr "программа %s не умеет работать с символическими ссылками\n"
 
 #, python-format
 msgid "tool %s can't handle binary\n"
-msgstr ""
+msgstr "программа %s не умеет работать с бинарными файлами\n"
 
 #, python-format
 msgid "tool %s requires a GUI\n"
-msgstr ""
-
+msgstr "программа %s требует графического интерфейсафайлами\n"
+
+# INPUT
 #, python-format
 msgid ""
 " no tool found to merge %s\n"
 "keep (l)ocal or take (o)ther?"
 msgstr ""
 
-msgid "&Local"
-msgstr "&Локальные"
-
-msgid "&Other"
-msgstr "&Другие"
-
-#, python-format
-msgid "merging %s and %s to %s\n"
-msgstr ""
-
-#, python-format
-msgid "merging %s\n"
-msgstr ""
-
-#, python-format
+#, fuzzy, python-format
 msgid "%s.premerge not valid ('%s' is neither boolean nor %s)"
-msgstr ""
-
+msgstr "некорректный %s.premerge ('%s' не логический и не %s)"
+
+# INPUT
 #, python-format
 msgid "was merge of '%s' successful (yn)?"
 msgstr ""
 
+# INPUT
 #, python-format
 msgid ""
 " output file %s appears unchanged\n"
@@ -10836,8 +13616,14 @@
 msgstr ""
 
 #, python-format
+msgid "merging %s incomplete! (edit conflicts, then use 'hg resolve --mark')\n"
+msgstr ""
+"слияние %s не завершено! (устраните конфликты, затем используйте 'hg resolve "
+"--mark')\n"
+
+#, python-format
 msgid "merging %s failed!\n"
-msgstr ""
+msgstr "не удалось слияние %s!\n"
 
 msgid "unterminated string"
 msgstr "незавершенная строка"
@@ -10902,7 +13688,7 @@
 msgstr ""
 "``unknown()``\n"
 "    Файл, неизвестный согласно статусу. Эти файлы рассматриваются\n"
-"    только если исли используется этот предикат."
+"    только если используется этот предикат."
 
 #. i18n: "unknown" is a keyword
 msgid "unknown takes no arguments"
@@ -10915,7 +13701,7 @@
 msgstr ""
 "``ignored()``\n"
 "    Файл, игнорируемый согласно статусу. Эти файлы рассматриваются\n"
-"    только если исли используется этот предикат."
+"    только если используется этот предикат."
 
 #. i18n: "ignored" is a keyword
 msgid "ignored takes no arguments"
@@ -10934,11 +13720,11 @@
 
 #, python-format
 msgid "not a function: %s"
-msgstr ""
+msgstr "не функция: %s"
 
 msgid ""
 "``binary()``\n"
-"    File that appears to be binary (contails NUL bytes)."
+"    File that appears to be binary (contains NUL bytes)."
 msgstr ""
 "``binary()``\n"
 "    Файл, который рассматривается как бинарный (содержит символы NUL)."
@@ -11070,15 +13856,42 @@
 msgstr "неизвестный символ"
 
 msgid "starting revisions are not directly related"
-msgstr ""
+msgstr "начальные ревизии не связаны напрямую"
 
 #, python-format
 msgid "inconsistent state, %s:%s is good and bad"
-msgstr ""
+msgstr "противоречивое состояние, %s:%s одновременно плохой и хороший"
 
 #, python-format
 msgid "unknown bisect kind %s"
-msgstr ""
+msgstr "неизвестный тип бисекции %s"
+
+msgid "invalid bisect state"
+msgstr "некорректное состояние бисекции"
+
+#. i18n: bisect changeset status
+msgid "good"
+msgstr "хороший"
+
+#. i18n: bisect changeset status
+msgid "bad"
+msgstr "плохой"
+
+#. i18n: bisect changeset status
+msgid "skipped"
+msgstr "пропущен"
+
+#. i18n: bisect changeset status
+msgid "untested"
+msgstr "непротестирован"
+
+#. i18n: bisect changeset status
+msgid "good (implicit)"
+msgstr "хороший (неявно)"
+
+#. i18n: bisect changeset status
+msgid "bad (implicit)"
+msgstr "плохой (неявно)"
 
 msgid "disabled extensions:"
 msgstr "отключенные расширения:"
@@ -11123,7 +13936,7 @@
 msgstr "Использование дополнительных возможностей"
 
 msgid "Subrepositories"
-msgstr "Субрепозитории"
+msgstr "Подхранилища"
 
 msgid "Configuring hgweb"
 msgstr "Настройка hgweb"
@@ -11163,8 +13976,8 @@
 "The above entries will be referred to as ``ui.username`` and\n"
 "``ui.verbose``, respectively. See the Syntax section below."
 msgstr ""
-"Эти праметры далее будут упоминаться как ``ui.username`` и\n"
-"``ui.verbose`` соответсвенно. См. раздел Синтаксис ниже."
+"Эти параметры далее будут упоминаться как ``ui.username`` и\n"
+"``ui.verbose`` соответственно. См. раздел Синтаксис ниже."
 
 msgid ""
 "Files\n"
@@ -11186,8 +13999,8 @@
 "файлы самостоятельно: глобальные настройки, вроде имени пользователя, "
 "обычно\n"
 "помещают в ``%USERPROFILE%\\mercurial.ini`` или ``$HOME/.hgrc``, а\n"
-"локальные настройки хранятся для каждого репозитория в файле\n"
-"``<репозиторий>/.hg/hgrc``."
+"локальные настройки хранятся для каждого хранилища в файле\n"
+"``<хранилище>/.hg/hgrc``."
 
 msgid ""
 "The names of these files depend on the system on which Mercurial is\n"
@@ -11202,7 +14015,7 @@
 "путей, первые имеют приоритет над последующими."
 
 msgid "| (Unix, Windows) ``<repo>/.hg/hgrc``"
-msgstr "| (Unix, Windows) ``<репозиторий>/.hg/hgrc``"
+msgstr "| (Unix, Windows) ``<хранилище>/.hg/hgrc``"
 
 msgid ""
 "    Per-repository configuration options that only apply in a\n"
@@ -11213,8 +14026,8 @@
 "    trusted user or to a trusted group. See the documentation for the\n"
 "    ``[trusted]`` section below for more details."
 msgstr ""
-"    Индивидуальные настройки репозитория - это те, которые действуют\n"
-"    только для текущему репозиторию. Этот файл не участвует в контроле\n"
+"    Индивидуальные настройки хранилища - это те, которые действуют\n"
+"    только для текущего хранилища. Этот файл не участвует в контроле\n"
 "    версий и не скачивается при клонировании. Настройки в этом файле\n"
 "    переопределяют настройки других файлов. В Unix большая часть этого\n"
 "    файла игнорируется, если он не принадлежат доверенному пользователю\n"
@@ -11227,6 +14040,11 @@
 "| (Windows) ``%HOME%\\.hgrc``\n"
 "| (Windows) ``%HOME%\\Mercurial.ini``"
 msgstr ""
+"| (Unix) ``$HOME/.hgrc``\n"
+"| (Windows) ``%USERPROFILE%\\.hgrc``\n"
+"| (Windows) ``%USERPROFILE%\\Mercurial.ini``\n"
+"| (Windows) ``%HOME%\\.hgrc``\n"
+"| (Windows) ``%HOME%\\Mercurial.ini``"
 
 msgid ""
 "    Per-user configuration file(s), for the user running Mercurial. On\n"
@@ -11240,13 +14058,15 @@
 "    запущен Mercurial. Под Windows 9x ``%HOME%`` заменяется на\n"
 "    %APPDATA%. Настройки из этих файлов применяются ко всем командам,\n"
 "    выполняемым этим пользователем в любом каталоге. Настройки из\n"
-"    из этих файлов переопределяют общесистемные настройки инастройки\n"
-"данной инсталляции."
+"    из этих файлов переопределяют общесистемные настройки и настройки\n"
+"    данной инсталляции."
 
 msgid ""
 "| (Unix) ``/etc/mercurial/hgrc``\n"
 "| (Unix) ``/etc/mercurial/hgrc.d/*.rc``"
 msgstr ""
+"| (Unix) ``/etc/mercurial/hgrc``\n"
+"| (Unix) ``/etc/mercurial/hgrc.d/*.rc``"
 
 msgid ""
 "    Per-system configuration files, for the system on which Mercurial\n"
@@ -11304,8 +14124,8 @@
 "    site-wide configuration in ``C:\\Mercurial\\Mercurial.ini``."
 msgstr ""
 "    Настройки из файлов конфигурации инсталляции/общесистемных файлов\n"
-"    влияют на все команды, запускаемые всеми пользователемя в любых\n"
-"    директориях. Ключи реестра содержат строки, каждая часть которых\n"
+"    влияют на все команды, запускаемые всеми пользователями в любых\n"
+"    каталогах. Ключи реестра содержат строки, каждая часть которых\n"
 "    должна быть путем к файлу ``Mercurial.ini`` или каталогу с файлами\n"
 "    ``*.rc``. Mercurial просматривает все эти пути в указанном порядке\n"
 "    пока не найдет один или более файл конфигурации. Если не установлены\n"
@@ -11317,7 +14137,7 @@
 "------"
 msgstr ""
 "Синтаксис\n"
-"------"
+"---------"
 
 msgid ""
 "A configuration file consists of sections, led by a ``[section]`` header\n"
@@ -11334,6 +14154,10 @@
 "    green=\n"
 "       eggs"
 msgstr ""
+"    [spam]\n"
+"    eggs=ham\n"
+"    green=\n"
+"       eggs"
 
 msgid ""
 "Each line contains one entry. If the lines that follow are indented,\n"
@@ -11345,7 +14169,7 @@
 "выделены отступами, они считаются продолжением этой настройки.\n"
 "Ведущие пробелы удаляются из значений. Пустые строки пропускаются.\n"
 "Строки, начинающиеся с ``#`` или ``;`` игнорируются и могут\n"
-"использоваться в качестве коментариев."
+"использоваться в качестве комментариев."
 
 msgid ""
 "Configuration keys can be set multiple times, in which case Mercurial\n"
@@ -11360,6 +14184,10 @@
 "    ham=serrano\n"
 "    eggs=small"
 msgstr ""
+"    [spam]\n"
+"    eggs=large\n"
+"    ham=serrano\n"
+"    eggs=small"
 
 msgid "This would set the configuration key named ``eggs`` to ``small``."
 msgstr "Это установит ключ с именем ``eggs`` в значение ``small``."
@@ -11378,6 +14206,10 @@
 "    ham=serrano\n"
 "    eggs=small"
 msgstr ""
+"    [foo]\n"
+"    eggs=large\n"
+"    ham=serrano\n"
+"    eggs=small"
 
 msgid ""
 "    [bar]\n"
@@ -11385,6 +14217,10 @@
 "    green=\n"
 "       eggs"
 msgstr ""
+"    [bar]\n"
+"    eggs=ham\n"
+"    green=\n"
+"       eggs"
 
 msgid ""
 "    [foo]\n"
@@ -11392,6 +14228,10 @@
 "    eggs=medium\n"
 "    bread=toasted"
 msgstr ""
+"    [foo]\n"
+"    ham=prosciutto\n"
+"    eggs=medium\n"
+"    bread=toasted"
 
 msgid ""
 "This would set the ``eggs``, ``ham``, and ``bread`` configuration keys\n"
@@ -11401,7 +14241,7 @@
 msgstr ""
 "Ключи ``eggs``, ``ham`` и ``bread`` секции ``foo`` будут установлены\n"
 "в значения ``medium``, ``proscuitto`` и ``toasted`` соответственно.\n"
-"Как видно, имеет значение только последяя установка параметра."
+"Как видно, имеет значение только последняя установка параметра."
 
 msgid ""
 "If a configuration key is set multiple times in different\n"
@@ -11431,7 +14271,7 @@
 "вида ``~user``. Это позволяет написать::"
 
 msgid "  %include ~/.hgrc.d/$HOST.rc"
-msgstr ""
+msgstr "  %include ~/.hgrc.d/$HOST.rc"
 
 msgid "to include a different configuration file on each computer you use."
 msgstr "чтобы включать различные файлы на разных компьютерах."
@@ -11464,7 +14304,7 @@
 "исключением случаев, когда значения заключаются в двойные кавычки::"
 
 msgid "  allow_read = \"John Doe, PhD\", brian, betty"
-msgstr ""
+msgstr "  allow_read = \"John Doe, PhD\", brian, betty"
 
 msgid ""
 "Quotation marks can be escaped by prefixing them with a backslash. Only\n"
@@ -11480,7 +14320,7 @@
 "--------"
 msgstr ""
 "Секции\n"
-"--------"
+"------"
 
 msgid ""
 "This section describes the different sections that may appear in a\n"
@@ -11495,6 +14335,8 @@
 "``alias``\n"
 "\"\"\"\"\"\"\"\"\""
 msgstr ""
+"``alias``\n"
+"\"\"\"\"\"\"\"\"\""
 
 msgid ""
 "Defines command aliases.\n"
@@ -11505,12 +14347,12 @@
 "already used by ``$N`` in the definition are put at the end of the\n"
 "command to be executed."
 msgstr ""
-"Определяет псевдонимы (алиасы) команд\n"
+"Определяет псевдонимы команд\n"
 "Псевдонимы позволяют определить собственную команду с использованием\n"
 "других команд (или псевдонимов), возможно принимающую аргументы.\n"
 "Позиционные аргументы в виде ``$1``, ``$2`` ... в определении\n"
 "псевдонима раскрываются перед выполнением. Позиционные аргументы,\n"
-"еще не использванные до ``$N`` в определении, добавляются в конец\n"
+"еще не использованные до ``$N`` в определении, добавляются в конец\n"
 "выполняемой команды."
 
 msgid "Alias definitions consist of lines of the form::"
@@ -11523,7 +14365,7 @@
 msgstr "Например, это определение::"
 
 msgid "    latest = log --limit 5"
-msgstr ""
+msgstr "    latest = log --limit 5"
 
 msgid ""
 "creates a new command ``latest`` that shows only the five most recent\n"
@@ -11533,7 +14375,7 @@
 "ревизий. Можно создавать псевдонимы с использованием уже определенных::"
 
 msgid "    stable5 = latest -b stable"
-msgstr ""
+msgstr "    stable5 = latest -b stable"
 
 msgid ""
 ".. note:: It is possible to create aliases with the same names as\n"
@@ -11554,7 +14396,7 @@
 "запускать произвольные команды. Например, ::"
 
 msgid "   echo = !echo"
-msgstr ""
+msgstr "   echo = !echo"
 
 msgid ""
 "will let you do ``hg echo foo`` to have ``foo`` printed in your\n"
@@ -11564,13 +14406,13 @@
 "в терминале. Пример получше::"
 
 msgid "   purge = !$HG status --no-status --unknown -0 | xargs -0 rm"
-msgstr ""
+msgstr "   purge = !$HG status --no-status --unknown -0 | xargs -0 rm"
 
 msgid ""
 "which will make ``hg purge`` delete all unknown files in the\n"
 "repository in the same manner as the purge extension."
 msgstr ""
-"Это позволит удалить все неизвестные файлы в рабочем каталоге,\n"
+"Это заставит ``hg purge`` удалить все неизвестные в хранилище файлы,\n"
 "как это делает расширение purge."
 
 msgid ""
@@ -11589,9 +14431,62 @@
 "``hg echo foo``, ``$HG_ARGS`` раскроется в ``echo foo``."
 
 msgid ""
+".. note:: Some global configuration options such as ``-R`` are\n"
+"   processed before shell aliases and will thus not be passed to\n"
+"   aliases."
+msgstr ""
+".. note:: Некоторые глобальные параметры, такие как ``-R``,\n"
+"   обрабатываются перед псевдонимами оболочки, поэтому они не будут\n"
+"   переданы в псевдонимы."
+
+msgid ""
+"\n"
+"``annotate``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+"\n"
+"``annotate``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\""
+
+msgid ""
+"Settings used when displaying file annotations. All values are\n"
+"Booleans and default to False. See ``diff`` section for related\n"
+"options for the diff command."
+msgstr ""
+"Параметры, используемые при отображениии аннотаций файлов. Все\n"
+"значения являются логическими и по умолчанию установлены в False (Ложь).\n"
+"См. также секцию ``diff``, в которой имеются сходные параметры\n"
+"для команды diff."
+
+msgid ""
+"``ignorews``\n"
+"    Ignore white space when comparing lines."
+msgstr ""
+"``ignorews``\n"
+"    Игнорировать пробельные символы при сравнении строк"
+
+msgid ""
+"``ignorewsamount``\n"
+"    Ignore changes in the amount of white space."
+msgstr ""
+"``ignorewsamount``\n"
+"    Игнорировать изменения в количестве пробельных символов"
+
+msgid ""
+"``ignoreblanklines``\n"
+"    Ignore changes whose lines are all blank."
+msgstr ""
+"``ignoreblanklines``\n"
+"    Игнорировать изменения, состоящие только из пустых строк"
+
+msgid ""
+"\n"
 "``auth``\n"
 "\"\"\"\"\"\"\"\""
 msgstr ""
+"\n"
+"``auth``\n"
+"\"\"\"\"\"\"\"\""
 
 msgid ""
 "Authentication credentials for HTTP authentication. This section\n"
@@ -11623,6 +14518,10 @@
 "    foo.password = bar\n"
 "    foo.schemes = http https"
 msgstr ""
+"    foo.prefix = hg.intevation.org/mercurial\n"
+"    foo.username = foo\n"
+"    foo.password = bar\n"
+"    foo.schemes = http https"
 
 msgid ""
 "    bar.prefix = secure.example.org\n"
@@ -11630,6 +14529,10 @@
 "    bar.cert = path/to/file.cert\n"
 "    bar.schemes = https"
 msgstr ""
+"    bar.prefix = secure.example.org\n"
+"    bar.key = path/to/file.key\n"
+"    bar.cert = path/to/file.cert\n"
+"    bar.schemes = https"
 
 msgid "Supported arguments:"
 msgstr "Поддерживаемые аргументы:"
@@ -11648,20 +14551,24 @@
 "    запись аутентификации с самым длинным подходящим префиксом (при этом\n"
 "    ``*`` совпадает со всем и считается совпадением с длиной 1). Если\n"
 "    префикс не включает схему, при проверке совпадения из URI также.\n"
-"    удаляется схема и далее прверяется аргумент schemes."
+"    удаляется схема и далее проверяется аргумент schemes."
 
 msgid ""
 "``username``\n"
 "    Optional. Username to authenticate with. If not given, and the\n"
 "    remote site requires basic or digest authentication, the user will\n"
 "    be prompted for it. Environment variables are expanded in the\n"
-"    username letting you do ``foo.username = $USER``."
+"    username letting you do ``foo.username = $USER``. If the URI\n"
+"    includes a username, only ``[auth]`` entries with a matching\n"
+"    username or without a username will be considered."
 msgstr ""
 "``username``\n"
 "    Не обязательный. Имя, используемое при аутентификации. Если не\n"
-"    задан, а удаленный сайт требует базовую или digest-аутентификацию,\n"
+"    задан, а отдалённый сайт требует базовую или digest-аутентификацию,\n"
 "    пользователь должен будет ввести имя. Переменные окружения\n"
-"    раскрываются, позволяя написать ``foo.username = $USER``."
+"    раскрываются, позволяя написать ``foo.username = $USER``. Если URI\n"
+"    включает имя пользователя, рассматриваются только параметры из \n"
+"    секции ``[auth]`` с совпадающим именем или без имени."
 
 msgid ""
 "``password``\n"
@@ -11671,7 +14578,7 @@
 msgstr ""
 "``password``\n"
 "    Не обязательный. Пароль для аутентификации. Если не задан, а\n"
-"    удаленный сайт требует базовую или digest-аутентификацию,\n"
+"    отдалённый сайт требует базовую или digest-аутентификацию,\n"
 "    пользователь должен будет ввести пароль."
 
 msgid ""
@@ -11681,7 +14588,7 @@
 msgstr ""
 "``key``\n"
 "\n"
-"    Не обязательный. Защифрованный PEM ключ сертификата клиента.\n"
+"    Не обязательный. Зашифрованный PEM ключ сертификата клиента.\n"
 "    Переменные окружения раскрываются в имя файла."
 
 msgid ""
@@ -11690,7 +14597,7 @@
 "    variables are expanded in the filename."
 msgstr ""
 "``cert``\n"
-"    Не обязательный. Защифрованный PEM файл цепочки сертификата клиента.\n"
+"    Не обязательный. Зашифрованный PEM файл цепочки сертификата клиента.\n"
 "    Переменные окружения раскрываются в имя файла."
 
 msgid ""
@@ -11702,7 +14609,7 @@
 "    Default: https."
 msgstr ""
 "``schemes``\n"
-"    Не обязательный. Разделенный пробелами списко схем URI для\n"
+"    Не обязательный. Разделенный пробелами список схем URI для\n"
 "    этой записи.  Используются только если prefix не включает имени\n"
 "    схемы. Поддерживаются http и https. Также совпадут для статических\n"
 "    http и https соответственно.\n"
@@ -11720,6 +14627,9 @@
 "``decode/encode``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
+"\n"
+"``decode/encode``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 
 msgid ""
 "Filters for transforming files on checkout/checkin. This would\n"
@@ -11739,10 +14649,10 @@
 "For each file only the first matching filter applies."
 msgstr ""
 "Фильтр состоит из шаблона с последующей командой. По умолчанию,\n"
-"шаблоны задаются в виде glob'ов, пути относительно корня репозитория.\n"
+"шаблоны задаются в виде glob'ов, пути относительно корня хранилища.\n"
 "Например, чтобы выбрать все файлы, оканчивающиеся на ``.txt``, только\n"
-"из корневого каталога репозитория, используйте шаблон ``.txt``. Чтобы\n"
-"выбрать файлы, оканчивающиеся на ``.c``, во всем репозитории,\n"
+"из корневого каталога хранилища, используйте шаблон ``.txt``. Чтобы\n"
+"выбрать файлы, оканчивающиеся на ``.c``, во всем хранилище,\n"
 "используйте шаблон ``**.c``. Для каждого файла применяется только\n"
 "первый совпавший фильтр."
 
@@ -11821,9 +14731,12 @@
 "``defaults``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
+"\n"
+"``defaults``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\""
 
 msgid "(defaults are deprecated. Don't use them. Use aliases instead)"
-msgstr "(устарело. Не использйте эту секцию. Используйте псевдонимы.)"
+msgstr "(устарело. Не используйте эту секцию. Используйте псевдонимы.)"
 
 msgid ""
 "Use the ``[defaults]`` section to define command defaults, i.e. the\n"
@@ -11845,13 +14758,16 @@
 "  log = -v\n"
 "  status = -m"
 msgstr ""
+"  [defaults]\n"
+"  log = -v\n"
+"  status = -m"
 
 msgid ""
 "The actual commands, instead of their aliases, must be used when\n"
 "defining command defaults. The command defaults will also be applied\n"
 "to the aliases of the commands defined."
 msgstr ""
-"При опрпедлении умолчаний для команд, дожны использоваться сами команды,\n"
+"При определении умолчаний для команд, должны использоваться сами команды,\n"
 "а не из псевдонимы. Умолчания для команд применяются также к определенным\n"
 "псевдонимам."
 
@@ -11860,13 +14776,19 @@
 "``diff``\n"
 "\"\"\"\"\"\"\"\""
 msgstr ""
-
-msgid ""
-"Settings used when displaying diffs. Everything except for ``unified`` is a\n"
-"Boolean and defaults to False."
+"\n"
+"``diff``\n"
+"\"\"\"\"\"\"\"\""
+
+msgid ""
+"Settings used when displaying diffs. Everything except for ``unified``\n"
+"is a Boolean and defaults to False. See ``annotate`` section for\n"
+"related options for the annotate command."
 msgstr ""
 "Настройки отображения различий. Все параметры, кроме ``unified``, являются\n"
-"логическими и по умолчанию имеют значение Ложь (False)."
+"логическими и по умолчанию имеют значение Ложь (False). См. секцию "
+"``annotate``\n"
+"для справки о связанных параметрах команды annotate."
 
 msgid ""
 "``git``\n"
@@ -11890,27 +14812,6 @@
 "    Для каждого изменения показать, в какой оно сделано функции"
 
 msgid ""
-"``ignorews``\n"
-"    Ignore white space when comparing lines."
-msgstr ""
-"``ignorews``\n"
-"    Игнорировать пробельные символы при сравнении строк"
-
-msgid ""
-"``ignorewsamount``\n"
-"    Ignore changes in the amount of white space."
-msgstr ""
-"``ignorewsamount``\n"
-"    Игнорировать изменения в количестве пробельных символов"
-
-msgid ""
-"``ignoreblanklines``\n"
-"    Ignore changes whose lines are all blank."
-msgstr ""
-"``ignoreblanklines``\n"
-"    Игнорировать изменения, состоящие только из пустых строк"
-
-msgid ""
 "``unified``\n"
 "    Number of lines of context to show."
 msgstr ""
@@ -11921,9 +14822,11 @@
 "``email``\n"
 "\"\"\"\"\"\"\"\"\""
 msgstr ""
+"``email``\n"
+"\"\"\"\"\"\"\"\"\""
 
 msgid "Settings for extensions that send email messages."
-msgstr "Настройки для расширений, использующих email для отправки сообщений"
+msgstr "Настройки для расширений, отправляющих сообщения по email"
 
 msgid ""
 "``from``\n"
@@ -11991,7 +14894,7 @@
 "    считаются удобными для получателей. Адреса, заголовки и части,\n"
 "    не содержащие патчи, будут закодированы первой кодировкой, для\n"
 "    в которую корректно переводится исходная (``$HGENCODING``,\n"
-"    ``ui.fallbackencoding``). Если корректно преобразовать не удетается,\n"
+"    ``ui.fallbackencoding``). Если корректно преобразовать не удаётся,\n"
 "    текст посылается как есть. По умолчанию - пустой (буквально) список."
 
 msgid "    Order of outgoing email character sets:"
@@ -12033,14 +14936,17 @@
 "``extensions``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
+"\n"
+"``extensions``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 
 msgid ""
 "Mercurial has an extension mechanism for adding new features. To\n"
 "enable an extension, create an entry for it in this section."
 msgstr ""
-"Mercurial поддерживает механизм расширений для добавления новых\n"
-"функций. Чтобы включить расширение, создайте для него запись в этой\n"
-"секции."
+"Mercurial использует механизм расширений для добавления новых\n"
+"возможностей. Чтобы включить расширение, создайте для него запись\n"
+"в этой секции."
 
 msgid ""
 "If you know that the extension is already in Python's search path,\n"
@@ -12058,7 +14964,7 @@
 msgstr ""
 "В противном случае, укажите любое имя с последующим знаком ``=``,\n"
 "после которого идет путь к файлу ``.py`` (включая расширение файла)\n"
-"с реализацей расширения."
+"с реализацией расширения."
 
 msgid ""
 "To explicitly disable an extension that is enabled in an hgrc of\n"
@@ -12090,6 +14996,9 @@
 "``hostfingerprints``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
+"\n"
+"``hostfingerprints``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 
 msgid ""
 "Fingerprints of the certificates of known HTTPS servers.\n"
@@ -12099,7 +15008,7 @@
 "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 ""
-"Слепки сертификатов известных HTTPS-серверов. При заданном слепке,\n"
+"Слепки сертификатов известных HTTPS-серверов. При заданном слепке\n"
 "HTTPS-соединение успешно установится только если слепок сертификата\n"
 "сервера совпадает с заданным. Это похоже на работу с известными хостами\n"
 "по ssh. Слепок - это хэш SHA-1 от сертификата, зашифрованного DER.\n"
@@ -12107,13 +15016,16 @@
 "слепками."
 
 msgid "For example::"
-msgstr "Приме::"
+msgstr "Пример::"
 
 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 ""
+"    [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"
 
 msgid "This feature is only supported when using Python 2.6 or later."
 msgstr "Поддерживается только если используется Python 2.6 или выше."
@@ -12123,6 +15035,9 @@
 "``format``\n"
 "\"\"\"\"\"\"\"\"\"\""
 msgstr ""
+"\n"
+"``format``\n"
+"\"\"\"\"\"\"\"\"\"\""
 
 msgid ""
 "``usestore``\n"
@@ -12134,12 +15049,12 @@
 "    repositories will be compatible with Mercurial before version 0.9.4."
 msgstr ""
 "``usestore``\n"
-"    Использовать формат репозитория \"store\", который улучшает\n"
+"    Использовать формат хранилища \"store\", который улучшает\n"
 "    совместимость с системами, которые путают регистр букв или еще\n"
 "    как-нибудь искажают имена файлов. Включен по умолчанию. Отключение\n"
 "    этого параметра позволит хранить более длинные имена файлов во\n"
 "    многих ситуациях ценой совместимости и позволяет удостовериться,\n"
-"    что созданные репозитории будут совместимы с Mercurial до\n"
+"    что созданные хранилища будут совместимы с Mercurial до\n"
 "    версии 0.9.4."
 
 msgid ""
@@ -12152,12 +15067,12 @@
 "    repositories will be compatible with Mercurial before version 1.1."
 msgstr ""
 "``usefncache``\n"
-"    Включить или выключить формат репозитория \"fncache\", который\n"
+"    Включить или выключить формат хранилища \"fncache\", который\n"
 "    является улучшением формата \"store\" (который должен быть включен,\n"
 "    чтобы использовать fncache) и позволяет использовать длинные имена\n"
 "    файлов и избежать использования зарезервированных в Windows имен\n"
 "    (например, \"nul\"). По умолчанию включен. Отключение этого параметра\n"
-"    позволяет быть уверенным, что созданные репозитории будут\n"
+"    позволяет быть уверенным, что созданные хранилища будут\n"
 "    совместимы с Mercurial до версии 1.1."
 
 msgid ""
@@ -12170,18 +15085,20 @@
 "    repositories will be compatible with Mercurial before version 1.7."
 msgstr ""
 "``dotencode``\n"
-"    Включить или выключить формат репозитория \"dotencode\", который\n"
+"    Включить или выключить формат хранилища \"dotencode\", который\n"
 "    является улучшением формата \"fncache\" (который должен быть\n"
 "    включен, чтобы использовать dotencode), чтобы решить проблемы\n"
 "    с именами файлов, начинающихся с ._ в Mac OS X и пробелов в\n"
 "    Windows. По умолчанию включен. Отключение этого параметра позволяет\n"
-"    быть уверенным, что формат хранения создаваемого репозитория\n"
+"    быть уверенным, что формат хранения создаваемого хранилища\n"
 "    будет совместим с Mercurial до версии 1.7."
 
 msgid ""
 "``merge-patterns``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
+"``merge-patterns``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 
 msgid ""
 "This section specifies merge tools to associate with particular file\n"
@@ -12192,18 +15109,23 @@
 "Эта секция задает инструменты для слияния файлов, подходящих под\n"
 "определенный шаблон. Подходящие сюда программы имеют приоритет перед\n"
 "инструментами по умолчанию. Шаблоны по умолчанию имеют формат glob,\n"
-"пути задаются относительно корня репозитория."
+"пути задаются относительно корня хранилища."
 
 msgid ""
 "  [merge-patterns]\n"
 "  **.c = kdiff3\n"
 "  **.jpg = myimgmerge"
 msgstr ""
+"  [merge-patterns]\n"
+"  **.c = kdiff3\n"
+"  **.jpg = myimgmerge"
 
 msgid ""
 "``merge-tools``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
+"``merge-tools``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 
 msgid ""
 "This section configures external merge tools to use for file-level\n"
@@ -12269,7 +15191,7 @@
 "  Default: ``$local $base $other``"
 msgstr ""
 "``args``\n"
-"  Аргументы, передаваемые иструменту слияния. Можно обращаться к\n"
+"  Аргументы, передаваемые инструменту слияния. Можно обращаться к\n"
 "  сливаемым файлам и результату слияния через эти переменные:\n"
 "  ``$base``, ``$local``, ``$other``, ``$output``.\n"
 "  По умолчанию: ``$local $base $other``"
@@ -12391,7 +15313,7 @@
 msgstr ""
 "``regkeyalt``\n"
 "  Альтернативный ключ в реестре Windows, который используется если\n"
-"  первый ключ не найдан. Этот ключ использует ту же семантику\n"
+"  первый ключ не найден. Этот ключ использует ту же семантику\n"
 "  ``regname`` и ``regappend``, что и первичный ключ. Обычно это\n"
 "  используется для поиска 32-битных приложений в 64-битных ОС.\n"
 "  По умолчанию: не задан"
@@ -12421,6 +15343,9 @@
 "``hooks``\n"
 "\"\"\"\"\"\"\"\"\""
 msgstr ""
+"\n"
+"``hooks``\n"
+"\"\"\"\"\"\"\"\"\""
 
 msgid ""
 "Commands or Python functions that get automatically executed by\n"
@@ -12430,7 +15355,7 @@
 "value or setting it to an empty string."
 msgstr ""
 "Команды или функции Python, вызываемые автоматически при различных\n"
-"действиях, таких как начало или конец коммита. Можно задавать несколько\n"
+"действиях, таких как начало или конец фиксации. Можно задавать несколько\n"
 "хуков для одного и того же действия, добавляя к действию суффикс.\n"
 "Можно переопределить глобальный хук, изменив его значения или задав\n"
 "для него пустую строку."
@@ -12460,9 +15385,9 @@
 "additional information. For each hook below, the environment\n"
 "variables it is passed are listed with names of the form ``$HG_foo``."
 msgstr ""
-"Болшьниство хуков выполняются с переменными окружения, содержащими\n"
+"Большинство хуков выполняются с переменными окружения, содержащими\n"
 "полезную дополнительную информацию. Для каждого хука ниже, передаваемые\n"
-"ему переменные перечисленны с именами вида ``$HG_foo``."
+"ему переменные перечислены с именами вида ``$HG_foo``."
 
 msgid ""
 "``changegroup``\n"
@@ -12473,7 +15398,7 @@
 "``changegroup``\n"
 "  Выполняется после того, как группа наборов изменений была добавлена\n"
 "  с помощью push, pull или unbundle. ID первого набора изменений\n"
-"  содержится в ``$HG_NODE``. URL источника измений находится в ``$HG_URL``."
+"  содержится в ``$HG_NODE``. URL источника изменений находится в ``$HG_URL``."
 
 msgid ""
 "``commit``\n"
@@ -12483,7 +15408,7 @@
 msgstr ""
 "``commit``\n"
 "  Выполняется после создания нового набора изменений в локальном\n"
-"  репозитории. ID созданного набора изменений передается в ``$HG_NODE``,\n"
+"  хранилище. ID созданного набора изменений передается в ``$HG_NODE``,\n"
 "  ID родителей содержатся в ``$HG_PARENT1`` и ``$HG_PARENT2``."
 
 msgid ""
@@ -12495,7 +15420,7 @@
 "``incoming``\n"
 "  Выполняется после того, как набор изменений был добавлен с помощью\n"
 "  push, pull или unbundle. ID первого набора изменений содержится\n"
-"  в ``$HG_NODE``. URL источника измений находится в ``$HG_URL``."
+"  в ``$HG_NODE``. URL источника изменений находится в ``$HG_URL``."
 
 msgid ""
 "``outgoing``\n"
@@ -12504,8 +15429,8 @@
 "  ``$HG_SOURCE``; see \"preoutgoing\" hook for description."
 msgstr ""
 "``outgoing``\n"
-"  Выполняется после отправки изменений из локального репозитория в\n"
-"  другой. ID первого набора изменений содержится в ``$HG_NODE``.\n"
+"  Выполняется после отправки изменений из локального хранилища в\n"
+"  другое. ID первого набора изменений содержится в ``$HG_NODE``.\n"
 "  Источник операции находится в ``$HG_SOURCE``; описание см. в\n"
 "  \"preoutgoing\""
 
@@ -12521,12 +15446,12 @@
 msgstr ""
 "``post-<команда>``\n"
 "  Выполняется после успешного вызова соответствующей команды.\n"
-"  Содержимое командной строки передавется в ``$HG_ARGS``, код\n"
+"  Содержимое командной строки передаётся в ``$HG_ARGS``, код\n"
 "  завершения - в ``$HG_RESULT``. Разобранные аргументы командной\n"
 "  строки передаются как ``$HG_PATS`` и ``$HG_OPTS``. Они содержат\n"
 "  строковое представление данных Python, передаваемых <команде>\n"
 "  внутренней реализацией. ``$HG_OPTS`` - это словарь опций \n"
-"  (опущенные опциии установлены в значения по умолчанию).\n"
+"  (опущенные опции установлены в значения по умолчанию).\n"
 "  ``$HG_PATS`` - список аргументов. Неудачное завершение хука\n"
 "  игнорируется."
 
@@ -12543,11 +15468,11 @@
 msgstr ""
 "``pre-<команда>``\n"
 "  Выполняется перед вызовом соответствующей команды.\n"
-"  Содержимое командной строки передавется в ``$HG_ARGS``.\n"
+"  Содержимое командной строки передаётся в ``$HG_ARGS``.\n"
 "  Разобранные аргументы командной строки передаются как ``$HG_PATS``\n"
 "  и ``$HG_OPTS``. Они содержат строковое представление данных\n"
 "  Python, передаваемых <команде> внутренней реализацией. ``$HG_OPTS`` -\n"
-"  это словарь опций (опущенные опции установленны в значения по\n"
+"  это словарь опций (опущенные опции установлены в значения по\n"
 "  умолчанию).``$HG_PATS`` - список аргументов. Неудачное завершение\n"
 "  хука игнорируется."
 
@@ -12571,7 +15496,7 @@
 "  Parent changeset IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``."
 msgstr ""
 "``precommit``\n"
-"  Выполняется перед началом локального коммита. Код возврата 0\n"
+"  Выполняется перед началом локальной фиксации. Код возврата 0\n"
 "  разрешает продолжение операции, ненулевой код возврата заставляет\n"
 "  commit завершиться с ошибкой. ID родителей передаются в ``$HG_PARENT1``\n"
 "  и ``$HG_PARENT2``."
@@ -12584,7 +15509,7 @@
 msgstr ""
 "``prelistkeys``\n"
 "  Выполняется перед выводом ключей наборов изменений (например, закладок)\n"
-"  репозитория. Ненулевой код возврата вызовет завершение с ошибкой.\n"
+"  хранилища. Ненулевой код возврата вызовет завершение с ошибкой.\n"
 "  Пространство имен ключа передается в ``$HG_NAMESPACE``."
 
 msgid ""
@@ -12600,12 +15525,12 @@
 msgstr ""
 "``preoutgoing``\n"
 "  Выполняется перед сборкой изменений для отправки из локального\n"
-"  репозитория в удаленный. Ненулевой код возврата вызовет аварийное\n"
+"  хранилища в отдалённое. Ненулевой код возврата вызовет аварийное\n"
 "  завершение. Это позволяет предотвратить pull по HTTP или SSH. Также\n"
 "  можно отменить и локальные pull, push или bundle, но это неэффективно,\n"
 "  т.к. в этом случае можно просто скопировать файлы. Источник операции\n"
-"  передается в ``$HG_SOURCE``. Для \"serve\" операция вполняется\n"
-"  на стороне удаленного SSH или HTTP репозитория. Для \"push\", \"pull\"\n"
+"  передается в ``$HG_SOURCE``. Для \"serve\" операция выполняется\n"
+"  на стороне отдалённого SSH или HTTP хранилища. Для \"push\", \"pull\"\n"
 "  или \"bundle\", операция выполняется в локальной системе."
 
 msgid ""
@@ -12617,8 +15542,8 @@
 "  ``$HG_NEW``."
 msgstr ""
 "``prepushkey``\n"
-"  Выполняется перед добавлением ключа (напрмер, закладки) в\n"
-"  репозиторий. Ненулевой код возврата отменит добавление ключа.\n"
+"  Выполняется перед добавлением ключа (например, закладки) в\n"
+"  хранилище. Ненулевой код возврата отменит добавление ключа.\n"
 "  Пространство имен ключа передается в ``$HG_NAMESPACE``, ключ в\n"
 "  ``$HG_KEY``, предыдущее значение (если есть) в ``$HG_OLD``, новое -\n"
 "  в ``$HG_NEW``."
@@ -12636,7 +15561,7 @@
 "  метку, ненулевой вызовет завершение с ошибкой. ID помечаемого набора\n"
 "  изменений передается в ``$HG_NODE``, имя метки - в ``$HG_TAG``.\n"
 "  Метка является локальной, если ``$HG_LOCAL=1``, записывается в\n"
-"  репозиторий, если ``$HG_LOCAL=0``."
+"  хранилище, если ``$HG_LOCAL=0``."
 
 msgid ""
 "``pretxnchangegroup``\n"
@@ -12651,11 +15576,11 @@
 msgstr ""
 "``pretxnchangegroup``\n"
 "  Выполняется после добавления группы наборов изменений с помощью\n"
-"  push, pull или unbundle, до коммита транзакции. Группа изменений\n"
+"  push, pull или unbundle, до фиксирования транзакции. Группа изменений\n"
 "  доступна в программе хука. Это позволяет проверить входящие\n"
 "  изменения, перед тем, как принять их. ID первого добавляемого\n"
 "  набора изменений передается в ``$HG_NODE``. Код возврата 0 разрешает\n"
-"  закоммитить транзакцию, ненулевой откатывает ее и заставляет\n"
+"  зафиксировать транзакцию, ненулевой откатывает ее и заставляет\n"
 "  pull, push или unbundle завершиться с ошибкой. URL источника\n"
 "  изменений передается в ``$HG_URL``."
 
@@ -12669,10 +15594,10 @@
 "  IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``."
 msgstr ""
 "``pretxncommit``\n"
-"  Выполняется после того, как набор изменений был создан, но еще\n"
-"  транзакция еще не закоммичена. Набор изменений доступен в программе\n"
-"  хука. Это позволяет проверить текст коммита и изменения. Код\n"
-"  возврата 0 разрешает продолжение коммита, ненулевой код возврата\n"
+"  Выполняется после того, как набор изменений был создан, но\n"
+"  транзакция еще не зафиксирована. Набор изменений доступен в программе\n"
+"  хука. Это позволяет проверить сообщение фиксации и изменения. Код\n"
+"  возврата 0 разрешает продолжение фиксации, ненулевой код возврата\n"
 "  откатит транзакцию. ID набора изменений передается в ``$HG_NODE``.\n"
 "  ID родителей передаются в ``$HG_PARENT1`` и ``$HG_PARENT2``."
 
@@ -12697,7 +15622,7 @@
 "  dictionary containing the keys and values."
 msgstr ""
 "``listkeys``\n"
-"  Выполняется после вывода ключей репозитория (например, закладок).\n"
+"  Выполняется после вывода ключей хранилища (например, закладок).\n"
 "  Пространство имен ключа доступно в ``$HG_NAMESPACE``. ``$HG_VALUES`` -\n"
 "  словарь, содержащий ключи и значения."
 
@@ -12710,7 +15635,7 @@
 msgstr ""
 "``pushkey``\n"
 "  Выполняется после того, как ключ (например, закладка) добавлен\n"
-"  в репозиторий. Пространство имен ключа доступно в ``$HG_NAMESPACE``,\n"
+"  в хранилище. Пространство имен ключа доступно в ``$HG_NAMESPACE``,\n"
 "  ключ в - ``$HG_KEY``, старое значение (если есть) - в ``$HG_OLD``,\n"
 "  новое значение - в ``$HG_NEW``."
 
@@ -12723,7 +15648,7 @@
 "``tag``\n"
 "  Выполняется после создания метки. ID помечаемого набора изменений\n"
 "  передается в ``$HG_TAG``. Метка является локальной, если\n"
-"  ``$HG_LOCAL=1``, создается в репозитории если ``$HG_LOCAL=0``."
+"  ``$HG_LOCAL=1``, но создается в хранилище если ``$HG_LOCAL=0``."
 
 msgid ""
 "``update``\n"
@@ -12750,7 +15675,7 @@
 "   а не pre- и post-хуки, потому что они гарантированно вызываются\n"
 "   с правильным контекстом для транзакций, на которые они влияют.\n"
 "   Также такие хуки как \"commit\" будут вызваны во всех ситуациях,\n"
-"   когда создается коммит (например, tag), а не только по команде\n"
+"   когда создается фиксация (например, tag), а не только по команде\n"
 "   commit."
 
 msgid ""
@@ -12784,7 +15709,7 @@
 msgstr ""
 "Хуки на Python выполняются в рамках процесса Mercurial. Каждый хук\n"
 "вызывается как минимум с тремя аргументами - ключевыми словами:\n"
-"объект интерфейса (``ui``), объект репозитория (``repo``) и ``hooktype``\n"
+"объект интерфейса (``ui``), объект хранилища (``repo``) и ``hooktype``\n"
 "который определяет, какой вид хука используется. Аргументы, описанные\n"
 "выше как переменные окружения, передаются как ключевые слова без\n"
 "префикса ``HG_`` с именами в нижнем регистре."
@@ -12801,12 +15726,15 @@
 "``http_proxy``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
+"\n"
+"``http_proxy``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 
 msgid ""
 "Used to access web-based Mercurial repositories through a HTTP\n"
 "proxy."
 msgstr ""
-"Используется для доступа к web-репозиторию Mercurial через\n"
+"Используется для доступа к web-хранилищу Mercurial через\n"
 "HTTP-прокси."
 
 msgid ""
@@ -12815,7 +15743,7 @@
 "    \"myproxy:8000\"."
 msgstr ""
 "``host``\n"
-"    Имя хостя и (необязательный) порт прокси-сервера, например\n"
+"    Имя хоста и (необязательный) порт прокси-сервера, например\n"
 "    \"myproxy:8000\"."
 
 msgid ""
@@ -12832,7 +15760,7 @@
 "    Optional. Password to authenticate with at the proxy server."
 msgstr ""
 "``passwd``\n"
-"    Необязательный. Пароль для аутетификации на прокси-сервере."
+"    Необязательный. Пароль для аутентификации на прокси-сервере."
 
 msgid ""
 "``user``\n"
@@ -12854,6 +15782,8 @@
 "``smtp``\n"
 "\"\"\"\"\"\"\"\""
 msgstr ""
+"``smtp``\n"
+"\"\"\"\"\"\"\"\""
 
 msgid "Configuration for extensions that need to send email messages."
 msgstr "Настройки для расширений, которые рассылают email-сообщения."
@@ -12877,8 +15807,8 @@
 "    smtps or none. Default: none."
 msgstr ""
 "``tls``\n"
-"    Необязательный. Способ включения TLS при подключении к "
-"почтовомусерверу:\n"
+"    Необязательный. Способ включения TLS при подключении к почтовому "
+"серверу:\n"
 "    starttls, smtps или none (откл.). По умолчанию: none."
 
 msgid ""
@@ -12898,8 +15828,8 @@
 msgstr ""
 "``password``\n"
 "    Необязательный. Пароль для аутентификации на SMTP-сервере. Если\n"
-"    не задан, пользователю будет предложено ввести пароль.\n"
-"    Неитерактивный сеанс завершиться неудачей. По умолчанию: не задан."
+"    не задан, пользователю будет предложено ввести пароль, а\n"
+"    неинтерактивный сеанс завершится неудачей. По умолчанию: не задан."
 
 msgid ""
 "``local_hostname``\n"
@@ -12915,6 +15845,9 @@
 "``patch``\n"
 "\"\"\"\"\"\"\"\"\""
 msgstr ""
+"\n"
+"``patch``\n"
+"\"\"\"\"\"\"\"\"\""
 
 msgid ""
 "Settings used when applying patches, for instance through the 'import'\n"
@@ -12943,7 +15876,7 @@
 "    LF (Unix) или CRLF (Windows) в результате. Если установлен \n"
 "    ``auto``, переводы строки так же игнорируются при наложении патча,\n"
 "    но восстанавливаются в исходный формат для каждого файла. Если\n"
-"    файл назначения не существует или не имеет символов первода строки,\n"
+"    файл назначения не существует или не имеет символов перевода строки,\n"
 "    сохраняется формат новой строки патча.\n"
 "    По умолчанию: strict."
 
@@ -12952,6 +15885,9 @@
 "``paths``\n"
 "\"\"\"\"\"\"\"\"\""
 msgstr ""
+"\n"
+"``paths``\n"
+"\"\"\"\"\"\"\"\"\""
 
 msgid ""
 "Assigns symbolic names to repositories. The left side is the\n"
@@ -12959,8 +15895,8 @@
 "location of the repository. Default paths can be declared by setting\n"
 "the following entries."
 msgstr ""
-"Задает читаемые имена для репозиториев. Левая часть - символьное\n"
-"имя, правая - URL, которая задает положение репозитория. Пути по\n"
+"Задает читаемые имена для хранилищ. Левая часть - символьное\n"
+"имя, правая - URL, которая задает положение хранилища. Пути по\n"
 "умолчанию могут быть заданы с помощью следующих записей."
 
 msgid ""
@@ -12970,9 +15906,9 @@
 "    cloned."
 msgstr ""
 "``default``\n"
-"    Каталог или URL, используемый для pull, если источнмк не указан.\n"
-"    По умолчанию установлен в репозиторий, из которого текущий был\n"
-"    клонирован."
+"    Каталог или URL, используемый для pull, если источник не указан.\n"
+"    По умолчанию установлен в хранилище, из которого текущее был\n"
+"    клонировано."
 
 msgid ""
 "``default-push``\n"
@@ -12981,13 +15917,16 @@
 msgstr ""
 "``default-push``\n"
 "    Необязательный. Каталог или URL, используемый при операции push,\n"
-"    если репозиторий назначения не задан."
+"    если хранилище назначения не задано."
 
 msgid ""
 "\n"
 "``profiling``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
+"\n"
+"``profiling``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\"\""
 
 msgid ""
 "Specifies profiling format and file output. In this section\n"
@@ -12996,7 +15935,7 @@
 "text report generated from the profiling data. The profiling is done\n"
 "using lsprof."
 msgstr ""
-"Задает формат для профолирования и выходного файла. В описании этой\n"
+"Задает формат для профилирования и выходного файла. В описании этой\n"
 "секции 'данные профилирования' означают сырые данные, собранные при\n"
 "профилировании, а 'отчет профилирования' означает статистический\n"
 "текстовый отчет, сгенерированный из данных профилирования.\n"
@@ -13043,14 +15982,20 @@
 "``revsetalias``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
+"``revsetalias``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 
 msgid "Alias definitions for revsets. See :hg:`help revsets` for details."
 msgstr ""
+"Определения псеводнимов для множеств ревизий (revsets).\n"
+"Детали см. в :hg:`help revsets`."
 
 msgid ""
 "``server``\n"
 "\"\"\"\"\"\"\"\"\"\""
 msgstr ""
+"``server``\n"
+"\"\"\"\"\"\"\"\"\"\""
 
 msgid "Controls generic server settings."
 msgstr "Общие настройки сервера."
@@ -13069,7 +16014,7 @@
 "    Default is True."
 msgstr ""
 "``uncompressed``\n"
-"    Разрешать или нет клиентам клонировать клонировать репозиторий,\n"
+"    Разрешать или нет клиентам клонировать клонировать хранилище,\n"
 "    использовать несжатый потоковый протокол. При этом передается\n"
 "    примерно на 40% больше данных при обычном клонировании, но экономит\n"
 "    процессорное время и память на обеих сторонах. По локальной сети\n"
@@ -13089,13 +16034,15 @@
 msgstr ""
 "    Проводить или нет проверку полноты передаваемых с помощью push\n"
 "    наборов изменений, проверяя, что все новые ревизии файлов,\n"
-"    присутсвующие в манифесте, подготовлены для передачи.\n"
+"    присутствующие в манифесте, подготовлены для передачи.\n"
 "    По умолчанию False (отключено)."
 
 msgid ""
 "``subpaths``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
+"``subpaths``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\""
 
 msgid "Defines subrepositories source locations rewriting rules of the form::"
 msgstr "Определяет правила переопределения адресов источников в форме::"
@@ -13111,7 +16058,7 @@
 msgstr ""
 "Где ``шаблон`` - это регулярное выражение, с которым совпадает\n"
 "адрес источника, а ``замена`` - строка, на которую он будет заменен.\n"
-"Группы, совпадающие в ``шаблоне``, могут быть использваны в ``замене``.\n"
+"Группы, совпадающие в ``шаблоне``, могут быть использованы в ``замене``.\n"
 "Например::"
 
 msgid "    http://server/(.*)-hg/ = http://hg.server/\\1/"
@@ -13127,6 +16074,8 @@
 "``trusted``\n"
 "\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
+"``trusted``\n"
+"\"\"\"\"\"\"\"\"\"\"\""
 
 msgid ""
 "Mercurial will not use the settings in the\n"
@@ -13138,10 +16087,10 @@
 "section."
 msgstr ""
 "Mercurial не будет использовать настройки из файла ``.hg/hgrc``\n"
-"репозитория, если он не принадлежит доверенному пользователю или\n"
+"хранилища, если он не принадлежит доверенному пользователю или\n"
 "группе, поскольку многие функции из hgrc позволяют выполнять\n"
 "произвольные команды. С этим часто возникают проблемы при настройке\n"
-"хуков или расширений для публичных репозиториев или серверов. Однако,\n"
+"хуков или расширений для публичных хранилищ или серверов. Однако,\n"
 "web-интерфейс будет использовать некоторые безопасные настройки из\n"
 "секции ``[web]``."
 
@@ -13177,9 +16126,12 @@
 "``ui``\n"
 "\"\"\"\"\"\""
 msgstr ""
+"\n"
+"``ui``\n"
+"\"\"\"\"\"\""
 
 msgid "User interface controls."
-msgstr "Настройки пользовательского интерфейса."
+msgstr "Настройки интерфейса пользователя."
 
 msgid ""
 "``archivemeta``\n"
@@ -13190,7 +16142,7 @@
 msgstr ""
 "``archivemeta``\n"
 "    Включать или нет содержимое файла .hg_archival.txt, хранящего\n"
-"    метаданные (хэши базовой и оконечной (tip) ревизии репозитория)\n"
+"    метаданные (хэши базовой и оконечной (tip) ревизии хранилища)\n"
 "    в архивы, создаваемые командой :hg:`archive` или загруженными\n"
 "    через hgweb. По умолчанию True (включено)."
 
@@ -13204,8 +16156,9 @@
 "    Default is False."
 msgstr ""
 "``askusername``\n"
-"    Спришивать или нет имя пользователя при коммите. Если True, и не\n"
-"    установлены ни ``$HGUSER``, ни ``$EMAIL``, пользователю будетпредложено\n"
+"    Спрашивать или нет имя пользователя при фиксации. Если True, и не\n"
+"    установлены ни ``$HGUSER``, ни ``$EMAIL``, пользователю будет "
+"предложено\n"
 "    ввести имя пользователя. Если ничего не введено, будет использовано\n"
 "    ``ПОЛЬЗОВАТЕЛЬ@ХОСТ``. По умолчанию False (отключено)."
 
@@ -13214,13 +16167,13 @@
 "    Whether to commit modified subrepositories when committing the\n"
 "    parent repository. If False and one subrepository has uncommitted\n"
 "    changes, abort the commit.\n"
-"    Default is True."
+"    Default is False."
 msgstr ""
 "``commitsubrepos``\n"
-"    Коммитить или нет измененные субрепозитории при коммите\n"
-"    родительского репозитория. Если False, и один из субрепозиториев\n"
-"    имеет незакоммиченные изменения, отменить коммит.\n"
-"    По умолчанию True (включено)."
+"    Фиксировать или нет измененные подхранилища при фиксации\n"
+"    родительского хранилища. Если False, и одно из подхранилищ\n"
+"    имеет незафиксированные изменения, фиксация будет отменена.\n"
+"    По умолчанию False (выключено)."
 
 msgid ""
 "``debug``\n"
@@ -13234,7 +16187,7 @@
 "    The editor to use during a commit. Default is ``$EDITOR`` or ``vi``."
 msgstr ""
 "``editor``\n"
-"    Редактор, вызываетмый при коммите. По умолчанию ``$EDITOR`` or ``vi``."
+"    Редактор, вызываемый при фиксации. По умолчанию ``$EDITOR`` or ``vi``."
 
 msgid ""
 "``fallbackencoding``\n"
@@ -13256,7 +16209,7 @@
 msgstr ""
 "``ignore``\n"
 "    Файл, из которого читаются шаблоны игнорируемых файлов данного\n"
-"    пользователя. Имеет тот же формате, что и файл .hgignore репозитория.\n"
+"    пользователя. Имеет тот же формате, что и файл .hgignore хранилища.\n"
 "    Эта опция поддерживает синтаксис хуков, так что можно задать несколько\n"
 "    таких файлов, написав что-то вроде ``ignore.other = ~/.hgignore2``.\n"
 "    Дополнительно см. справку по hgignore."
@@ -13266,7 +16219,7 @@
 "    Allow to prompt the user. True or False. Default is True."
 msgstr ""
 "``interactive``\n"
-"    Разрешить интерактивно спрашивать пльзователя. True или False.\n"
+"    Разрешить интерактивно спрашивать пользователя. True или False.\n"
 "    По умолчанию True (включено)."
 
 msgid ""
@@ -13329,7 +16282,8 @@
 "    remote command to use for clone/push/pull operations. Default is ``hg``."
 msgstr ""
 "``remotecmd``\n"
-"    Комадна, используемая на удаленной машине для операций clone/push/pull.\n"
+"    Команда, используемая на отдалённой машине для операций clone/push/"
+"pull.\n"
 "    По умолчанию ``hg``."
 
 msgid ""
@@ -13338,8 +16292,8 @@
 "    trusted user or group. True or False. Default is True."
 msgstr ""
 "``report_untrusted``\n"
-"    Предупреждать, если файл ``.hg/hgrc`` игноририуется, потому что\n"
-"    его вледалец не доверенный пользователь или группа. True или False.\n"
+"    Предупреждать, если файл ``.hg/hgrc`` игнорируется, потому что\n"
+"    его владелец не доверенный пользователь или группа. True или False.\n"
 "    По умолчанию True (включено)."
 
 msgid ""
@@ -13415,7 +16369,7 @@
 "    username are expanded."
 msgstr ""
 "``username``\n"
-"    Имя автора создаваемого при коммите набора изменений. Оычно\n"
+"    Имя автора набора изменений, создаваемого при фиксации. Обычно\n"
 "    состоит из имени человека и его электронной почты, например\n"
 "    ``Василий Пупкин <vasya@example.com>``. По умолчанию ``$EMAIL``\n"
 "    или ``пользователь@хост``. Если имя пользователя не задано в hgrc,\n"
@@ -13436,6 +16390,9 @@
 "``web``\n"
 "\"\"\"\"\"\"\""
 msgstr ""
+"\n"
+"``web``\n"
+"\"\"\"\"\"\"\""
 
 msgid ""
 "Web interface configuration. The settings in this section apply to\n"
@@ -13473,13 +16430,13 @@
 "командную строку::"
 
 msgid "    $ hg --config web.allow_push=* --config web.push_ssl=False serve"
-msgstr ""
+msgstr "    $ hg --config web.allow_push=* --config web.push_ssl=False serve"
 
 msgid ""
 "Note that this will allow anybody to push anything to the server and\n"
 "that this should not be used for public servers."
 msgstr ""
-"Обратите внимание, что это позволит кому угодно push'ить что угодно\n"
+"Обратите внимание, что это позволит кому угодно проталкивать что угодно\n"
 "на сервер, поэтому так нельзя делать на публичных серверах."
 
 msgid "The full set of options is:"
@@ -13515,7 +16472,7 @@
 "    Default is False."
 msgstr ""
 "``allowbz2``\n"
-"    (УСТАРЕЛО) Разрешать или нет скачивать ревизии репозитория в\n"
+"    (УСТАРЕЛО) Разрешать или нет скачивать ревизии хранилища в\n"
 "    формате .tar.bz2.\n"
 "    По умолчанию False (запрещено)."
 
@@ -13526,7 +16483,7 @@
 "    Default is False."
 msgstr ""
 "``allowgz``\n"
-"    (УСТАРЕЛО) Разрешать или нет скачивать ревизии репозитория в\n"
+"    (УСТАРЕЛО) Разрешать или нет скачивать ревизии хранилища в\n"
 "    формате .tar.gz.\n"
 "    По умолчанию False (запрещено)."
 
@@ -13535,7 +16492,7 @@
 "    Whether to allow pulling from the repository. Default is True."
 msgstr ""
 "``allowpull``\n"
-"    Разрешить или нет pull из репозитория. По умолчанию True (разрешать)."
+"    Разрешить или нет pull из хранилища. По умолчанию True (разрешать)."
 
 msgid ""
 "``allow_push``\n"
@@ -13547,14 +16504,29 @@
 "    examined after the deny_push list."
 msgstr ""
 "``allow_push``\n"
-"    Разрешать или нет push в репозиторий. Если постая строка или не\n"
+"    Разрешать или нет push в хранилище. Если простая строка или не\n"
 "    задан, push запрещен. Если установлен в специальное значение ``*``,\n"
-"    любой удаленный пользователь может делать push, даже если он не\n"
+"    любой отдалённый пользователь может делать push, даже если он не\n"
 "    аутентифицирован. В противном случае, пользователь должен быть\n"
 "    аутентифицирован, и его имя должно присутствовать в этом списке.\n"
 "    Этот список проверяется после списка deny_push."
 
 msgid ""
+"``guessmime``\n"
+"    Control MIME types for raw download of file content.\n"
+"    Set to True to let hgweb guess the content type from the file\n"
+"    extension. This will serve HTML files as ``text/html`` and might\n"
+"    allow cross-site scripting attacks when serving untrusted\n"
+"    repositories. Default is False."
+msgstr ""
+"``guessmime``\n"
+"    Контролирует MIME-типы при скачивании сырого содержимого файла.\n"
+"    Установите в True чтобы разрешить hgweb угадывать тип содержимого\n"
+"    по расширению файла. При этом HTML файлы будут отдаваться как\n"
+"    ``text/html``, и это может сделать возможными атаки межсайтового\n"
+"    скриптинга при обслуживании недоверенных хранилищ. По умолчанию False."
+
+msgid ""
 "``allow_read``\n"
 "    If the user has not already been denied repository access due to\n"
 "    the contents of deny_read, this list determines whether to grant\n"
@@ -13567,9 +16539,9 @@
 "    examined after the deny_read list."
 msgstr ""
 "``allow_read``\n"
-"    Если пользователь еще не получил отказ в доступе к репозиторию\n"
+"    Если пользователь еще не получил отказ в доступе к хранилищу\n"
 "    из-за списка deny_read, этот список определяет, можно ли дать\n"
-"    доступ к репозиторию этому пользователю. Если этот список не\n"
+"    доступ к хранилищу этому пользователю. Если этот список не\n"
 "    пуст, и пользователь не аутентифицирован и не присутствует в списке,\n"
 "    ему будет отказано в доступе. Если список пуст или не задан,\n"
 "    то доступ предоставляется всем пользователям по умолчанию.\n"
@@ -13583,7 +16555,7 @@
 "    revisions. Default is False. This feature creates temporary files."
 msgstr ""
 "``allowzip``\n"
-"    (УСТАРЕЛО) Разрешать или нет скачивать ревизии репозитория в\n"
+"    (УСТАРЕЛО) Разрешать или нет скачивать ревизии хранилища в\n"
 "    формате .zip.\n"
 "    По умолчанию False (запрещено). Эта функция создает временные файлы."
 
@@ -13609,8 +16581,8 @@
 "``cacerts``\n"
 "    Путь к файлу, содержащему список зашифрованных PEM сертификатов.\n"
 "    Производится подстановка переменных окружения и строк вида\n"
-"    ``~user``. Если указан на стороне клиента, будет импользоваться\n"
-"    для идентификации удаленных HTTPS-серверов с этими сертификатами.\n"
+"    ``~user``. Если указан на стороне клиента, будет использоваться\n"
+"    для идентификации отдалённых HTTPS-серверов с этими сертификатами.\n"
 "    Формат файла следующий::"
 
 msgid ""
@@ -13663,7 +16635,7 @@
 "    Whether to support caching in hgweb. Defaults to True."
 msgstr ""
 "``cache``\n"
-"    Включить или нет кеширование в hgweb. По умолчанию True (включено)."
+"    Включить или нет кэширование в hgweb. По умолчанию True (включено)."
 
 msgid ""
 "``contact``\n"
@@ -13671,7 +16643,7 @@
 "    Defaults to ui.username or ``$EMAIL`` or \"unknown\" if unset or empty."
 msgstr ""
 "``contact``\n"
-"    Имя или электронный адрес человека, ответственного за репозиторий.\n"
+"    Имя или электронный адрес человека, ответственного за хранилище.\n"
 "    По умолчанию используется ui.username или ``$EMAIL`` или \"unknown\",\n"
 "    если не задан или пустой."
 
@@ -13684,9 +16656,9 @@
 "    contents of the deny_push list are examined before the allow_push list."
 msgstr ""
 "``deny_push``\n"
-"    Запретить или нет push в репозиторий. Если пустой или не задан,\n"
+"    Запретить или нет push в хранилище. Если пустой или не задан,\n"
 "    push не запрещается. Если установлен в специальное значение ``*``,\n"
-"    push запрещен для всех удаленных пользователей. В противном случае,\n"
+"    push запрещен для всех отдалённых пользователей. В противном случае,\n"
 "    все неаутентифицированные пользователи не могут делать push, равно\n"
 "    как и пользователи, присутствующие в этом списке. Этот список\n"
 "    проверяется перед списком allow_push."
@@ -13708,16 +16680,16 @@
 "    list."
 msgstr ""
 "``deny_read``\n"
-"    Запрещать или нет чтение/просмотр репозитория. Если этот список не\n"
+"    Запрещать или нет чтение/просмотр хранилища. Если этот список не\n"
 "    пуст, неаутентифицированным пользователям запрещается чтение\n"
-"    репозитория, равно как и пользователям, перечисленным в этом списке.\n"
-"    Если установлен в специальное значение ``*``, всем удаленным\n"
+"    хранилища, равно как и пользователям, перечисленным в этом списке.\n"
+"    Если установлен в специальное значение ``*``, всем отдалённым\n"
 "    пользователям запрещается доступ (это требуется редко). Если этот\n"
-"    список пуст или не задан, предоставление доступа к репозиторию\n"
+"    список пуст или не задан, предоставление доступа к хранилищу\n"
 "    зависит от списка allow_read (см. описание). Если оба этих списка\n"
 "    не заданы или пусты, доступ предоставляется всем пользователям по\n"
-"    умолчанию. Если репозиторий расшаривается с помощью hgwebdir,\n"
-"    запрещенные пользователи не смогут видеть его в списке репозиториев.\n"
+"    умолчанию. Если хранилище расшаривается с помощью hgwebdir,\n"
+"    запрещенные пользователи не смогут видеть его в списке хранилищ.\n"
 "    Список deny_read имеет приоритет (читается раньше) перед allow_read."
 
 msgid ""
@@ -13729,9 +16701,9 @@
 "    available from the index corresponding to their containing path)."
 msgstr ""
 "``descend``\n"
-"    hgwebdir не будет индексировать подкаталоги. Только репозитории,\n"
+"    hgwebdir не будет индексировать подкаталоги. Только хранилища,\n"
 "    расположенные прямо по текущему пути будут видны (остальные\n"
-"    репозитории все равно будут доступны по индексу, соответствующему\n"
+"    хранилища все равно будут доступны по индексу, соответствующему\n"
 "    их пути)."
 
 msgid ""
@@ -13740,7 +16712,7 @@
 "    Default is \"unknown\"."
 msgstr ""
 "``description``\n"
-"    Текстовое описание назначения и содержимого репозитория.\n"
+"    Текстовое описание назначения и содержимого хранилища.\n"
 "    По умолчанию \"unknown\" (неизвестно)."
 
 msgid ""
@@ -13765,7 +16737,7 @@
 "    Default is False."
 msgstr ""
 "``hidden``\n"
-"    Прятать репозиторий из списка hgwebdir.\n"
+"    Прятать хранилище из списка hgwebdir.\n"
 "    По умолчанию False (не прятать)."
 
 msgid ""
@@ -13776,6 +16748,20 @@
 "    Использовать IPv6. По умолчанию False (не использовать)."
 
 msgid ""
+"``logoimg``\n"
+"    File name of the logo image that some templates display on each page.\n"
+"    The file name is relative to ``staticurl``. That is, the full path to\n"
+"    the logo image is \"staticurl/logoimg\".\n"
+"    If unset, ``hglogo.png`` will be used."
+msgstr ""
+"``logoimg``\n"
+"    Имя файла с картинкой-логотипом, которая показывается в некоторых\n"
+"    шаблонах на каждой странице. Имя файла задается относительно "
+"``staticurl``.\n"
+"    Т.е. полный путь к логотипу - \"staticurl/logoimg\".\n"
+"    Если не задан, будет использован ``hglogo.png``."
+
+msgid ""
 "``logourl``\n"
 "    Base URL to use for logos. If unset, ``http://mercurial.selenic.com/``\n"
 "    will be used."
@@ -13790,7 +16776,7 @@
 "    working directory."
 msgstr ""
 "``name``\n"
-"    Имя репозитория, используемое в веб-интерфейсе. По умолчанию\n"
+"    Имя хранилища, используемое в веб-интерфейсе. По умолчанию\n"
 "    текущий рабочий каталог."
 
 msgid ""
@@ -13820,7 +16806,7 @@
 "    Prefix path to serve from. Default is '' (server root)."
 msgstr ""
 "``prefix``\n"
-"    Префикс пути, откуда шарятся репозитории (по умолчанию: корень сервера)"
+"    Префикс пути, откуда раздаются хранилища (по умолчанию: корень сервера)"
 
 msgid ""
 "``push_ssl``\n"
@@ -13844,22 +16830,21 @@
 "    CGI-скриптом. Используйте этот параметр, чтобы отдавать статику\n"
 "    напрямую HTTP-сервером. Пример: ``http://hgserver/static/``."
 
-#, fuzzy
 msgid ""
 "``stripes``\n"
 "    How many lines a \"zebra stripe\" should span in multiline output.\n"
 "    Default is 1; set to 0 to disable."
 msgstr ""
 "``stripes``\n"
-"    Количество строк ...\n"
-
-#, fuzzy
+"    Сколько строк должна охватывать \"полоса зебры\" (\"zebra stripe\") при\n"
+"    многострочном выводе. По умолчанию 1; 0 - отключить."
+
 msgid ""
 "``style``\n"
 "    Which template map style to use."
 msgstr ""
 "``style``\n"
-"    Используемый стиль шаблона"
+"    Используемый стиль шаблона отображения (template map style)"
 
 msgid ""
 "``templates``\n"
@@ -13875,7 +16860,7 @@
 "- backout, commit, import, tag: Specify the commit date.\n"
 "- log, revert, update: Select revision(s) by date."
 msgstr ""
-"- backout, commit, import, tag: указать дату коммита.\n"
+"- backout, commit, import, tag: указать дату фиксации.\n"
 "- log, revert, update: выбрать ревизию(и) по дате."
 
 msgid "Many date formats are valid. Here are some examples:"
@@ -13897,7 +16882,7 @@
 "- ``12/6/6`` (Dec 6 2006)"
 msgstr ""
 "- ``Wed Dec 6 13:18:29 2006`` (предполагается местное время)\n"
-"- ``Dec 6 13:18 -0600`` (смещение относитльно начала года)\n"
+"- ``Dec 6 13:18 -0600`` (смещение относительно начала года)\n"
 "- ``Dec 6 13:18 UTC`` (UTC и GMT это псевдонимы для +0000)\n"
 "- ``Dec 6`` (полночь)\n"
 "- ``13:18`` (сегодняшний день)\n"
@@ -13939,7 +16924,7 @@
 "- ``<DATE`` - до заданной даты/времени включительно\n"
 "- ``>DATE`` - после заданной даты/времени включительно\n"
 "- ``DATE to DATE`` - диапазон дат, включительно\n"
-"- ``-DAYS`` - заданное количство дней назад от сегодняшнего дня\n"
+"- ``-DAYS`` - заданное количество дней назад от сегодняшнего дня\n"
 
 msgid ""
 "Mercurial's default format for showing changes between two versions of\n"
@@ -13987,13 +16972,13 @@
 "pull) are not affected by this, because they use an internal binary\n"
 "format for communicating changes."
 msgstr ""
-"Это значит, что при генерировании diff'ов из репозитория Mercurial\n"
+"Это значит, что при генерировании diff'ов из хранилища Mercurial\n"
 "(например, с помощью :hg:`export`), нужно быть осторожным с такими\n"
-"вещами как копирования и переименования и другими перечиленными выше,\n"
-"потому что при применении стандартного diff'а к другому репозиторию\n"
-"эта информация теряется. На внутреннии операции Mercurial (как push\n"
+"вещами как копирования и переименования и другими перечисленными выше,\n"
+"потому что при применении стандартного diff'а к другому хранилищу\n"
+"эта информация теряется. На внутренние операции Mercurial (как push\n"
 "или pull) это не влияет, потому что они используют внутренний бинарный\n"
-"формат для обмна изменениями."
+"формат для обмена изменениями."
 
 msgid ""
 "To make Mercurial produce the git extended diff format, use the --git\n"
@@ -14003,7 +16988,7 @@
 msgstr ""
 "Чтобы генерировать diff'ы в расширенном формате git, используйте опцию\n"
 "--git, которая доступна для многих команд, или установите 'git = True'\n"
-"в секции [diff] в вашем конфиге. Эту опцию не обязательно указыать\n"
+"в секции [diff] в вашем конфиге. Эту опцию не обязательно указывать\n"
 "при импорте diff'ов в этом формате или использовании расширения mq.\n"
 
 msgid ""
@@ -14028,7 +17013,7 @@
 msgstr ""
 "HGEDITOR\n"
 "\n"
-"    Имя редактора, который запускается при коммите. См. EDITOR."
+"    Имя редактора, который запускается при фиксации. См. EDITOR."
 
 msgid "    (deprecated, use configuration file)"
 msgstr "    (устарело, используйте файл конфигурации)"
@@ -14041,9 +17026,9 @@
 "    be overridden with the --encoding command-line option."
 msgstr ""
 "HGENCODING\n"
-"    Замещает настроку кодировки в локали используемую Mercurial\n"
+"    Замещает настройку кодировки в локали используемую Mercurial\n"
 "    по умолчанию. Этот параметр используется для преобразования\n"
-"    имен пользователей, описаний ревизий, имен ветвей и меток.\n"
+"    имен пользователей, описаний ревизий, имен веток и меток.\n"
 "    Можно переопределить эту настройку с помощью опции командной\n"
 "    строки --encoding."
 
@@ -14087,8 +17072,8 @@
 "    ancestor file."
 msgstr ""
 "HGMERGE\n"
-"    Программа для разрешения конфликов слияния. Она будет вызвана\n"
-"    с тремя аргументами: локальный файл, удаленный файл, исходный файл."
+"    Программа для разрешения конфликтов слияния. Она будет вызвана\n"
+"    с тремя аргументами: локальный файл, отдалённый файл, исходный файл."
 
 msgid ""
 "HGRCPATH\n"
@@ -14102,7 +17087,7 @@
 "    В качестве разделителя в Unix используется \":\", в Windows - \";\".\n"
 "    Если HGRCPATH не установлена, используется путь поиска по умолчанию\n"
 "    для текущей платформы. Если переменная установлена в пустое значение,\n"
-"    то используется .hg/hgrc текущего репозитория."
+"    то используется .hg/hgrc текущего хранилища."
 
 msgid "    For each element in HGRCPATH:"
 msgstr "    Для каждого элемента в HGRCPATH:"
@@ -14160,7 +17145,7 @@
 "    available values will be considered in this order:"
 msgstr ""
 "HGUSER\n"
-"    Это строка, используемая в качестве имени автора коммита. Если\n"
+"    Это строка, используемая в качестве имени автора фиксации. Если\n"
 "    не установлена, используются значения в следующем порядке:"
 
 msgid ""
@@ -14181,21 +17166,21 @@
 "    May be used as the author of a commit; see HGUSER."
 msgstr ""
 "EMAIL\n"
-"    Может быть использовано в качестве автора коммита; см. HGUSER."
+"    Может быть использовано в качестве автора фиксации; см. HGUSER."
 
 msgid ""
 "LOGNAME\n"
 "    May be used as the author of a commit; see HGUSER."
 msgstr ""
 "LOGNAME\n"
-"    Может быть использовано в качестве автора коммита; см. HGUSER."
+"    Может быть использовано в качестве автора фиксации; см. HGUSER."
 
 msgid ""
 "VISUAL\n"
 "    This is the name of the editor to use when committing. See EDITOR."
 msgstr ""
 "VISUAL\n"
-"    Название редактора, используемого при коммитах. См. EDITOR."
+"    Название редактора, используемого при фиксациях. См. EDITOR."
 
 msgid ""
 "EDITOR\n"
@@ -14207,8 +17192,8 @@
 "    defaults to 'vi'."
 msgstr ""
 "EDITOR\n"
-"    Инодга требуется открыть текстовый файл в редакторе, чтобы.\n"
-"    внести изменения, например для написания сообщения коммита.\n"
+"    Иногда требуется открыть текстовый файл в редакторе, чтобы.\n"
+"    внести изменения, например для написания сообщения фиксации.\n"
 "    Используемый редактор определяется переменными среды HGEDITOR,\n"
 "    VISUAL и EDITOR, именно в таком порядке. Выбирается первая\n"
 "    непустая переменная. Если они все пусты, используется 'vi'."
@@ -14219,7 +17204,7 @@
 "    set appropriately if this Mercurial is not installed system-wide.\n"
 msgstr ""
 "PYTHONPATH\n"
-"    Используется Python'ом для поиска импортирумых модулей и должна\n"
+"    Используется Python'ом для поиска импортируемых модулей и должна\n"
 "    быть корректно установлена, если текущая копия Mercurial не\n"
 "    установлена в систему штатно.\n"
 
@@ -14256,21 +17241,25 @@
 "like this::"
 msgstr ""
 "Чтобы включить расширение \"foo\", включенное в дистрибутив Mercurial\n"
-"или доступное по известным Python'у путям, создайте запись в вышем\n"
+"или доступное по известным Python'у путям, создайте запись в вашем\n"
 "файле конфигурации::"
 
 msgid ""
 "  [extensions]\n"
 "  foo ="
 msgstr ""
+"  [extensions]\n"
+"  foo ="
 
 msgid "You may also specify the full path to an extension::"
-msgstr "Можно также указать полный путь к раширению::"
+msgstr "Можно также указать полный путь к расширению::"
 
 msgid ""
 "  [extensions]\n"
 "  myfeature = ~/.hgext/myfeature.py"
 msgstr ""
+"  [extensions]\n"
+"  myfeature = ~/.hgext/myfeature.py"
 
 msgid ""
 "To explicitly disable an extension enabled in a configuration file of\n"
@@ -14318,7 +17307,7 @@
 "Идентификаторы, такие как имена файлов или шаблоны, должны заключаться\n"
 "в одиночные или двойные кавычки, если они содержат символы не из набора\n"
 "``[.*{}[]?/\\_a-zA-Z0-9\\x80-\\xff]``, или если они совпадают с одним\n"
-"из предопредленных предикатов. Это относится также и к шаблонам имен\n"
+"из предопределённых предикатов. Это относится также и к шаблонам имен\n"
 "файлов, не являющихся glob'ами, и к аргументам предикатов."
 
 msgid ""
@@ -14371,7 +17360,7 @@
 msgstr "Поддерживаются следующие предикаты:"
 
 msgid ".. predicatesmarker"
-msgstr ""
+msgstr ".. predicatesmarker"
 
 msgid "Some sample queries:"
 msgstr "Примеры запросов:"
@@ -14381,38 +17370,37 @@
 msgstr "- Показать статус файлов, считающихся бинарными, в рабочем каталоге::"
 
 msgid "    hg status -A \"set:binary()\""
-msgstr ""
+msgstr "    hg status -A \"set:binary()\""
 
 msgid "- Forget files that are in .hgignore but are already tracked::"
 msgstr "- Забыть файлы, которые записаны в .hgignore, но уже контролируются::"
 
 msgid "    hg forget \"set:hgignore() and not ignored()\""
-msgstr ""
+msgstr "    hg forget \"set:hgignore() and not ignored()\""
 
 msgid "- Find text files that contain a string::"
 msgstr "- Найти текстовые файлы, содержащие строку::"
 
 msgid "    hg locate \"set:grep(magic) and not binary()\""
-msgstr ""
+msgstr "    hg locate \"set:grep(magic) and not binary()\""
 
 msgid "- Find C files in a non-standard encoding::"
 msgstr "- Найти файлы С с нестандартной кодировкой::"
 
 msgid "    hg locate \"set:**.c and not encoding(ascii)\""
-msgstr ""
+msgstr "    hg locate \"set:**.c and not encoding(ascii)\""
 
 msgid "- Revert copies of large binary files::"
 msgstr "- Вернуть (revert) копии больших бинарных файлов::"
 
 msgid "    hg revert \"set:copied() and binary() and size('>1M')\""
-msgstr ""
-
-msgid "- Remove files listed in files.lst that contain the letter a or b::"
-msgstr ""
-"- Удалить файлы, перечисленные в files.lst и содержащие букву a или b::"
+msgstr "    hg revert \"set:copied() and binary() and size('>1M')\""
+
+msgid "- Remove files listed in foo.lst that contain the letter a or b::"
+msgstr "- Удалить файлы, перечисленные в foo.lst и содержащие букву a или b::"
 
 msgid "    hg remove \"set: 'listfile:foo.lst' and (**a* or **b*)\""
-msgstr ""
+msgstr "    hg remove \"set: 'listfile:foo.lst' and (**a* or **b*)\""
 
 msgid "See also :hg:`help patterns`.\n"
 msgstr "См. также :hg:`help patterns`.\n"
@@ -14441,10 +17429,10 @@
 "    when you make a commit."
 msgstr ""
 "Закладка (Bookmark)\n"
-"    Закладки - это указатели на некоторый коммит, которые перемещаются\n"
-"    при коммите. Они похожи на метки тем, что их можно использовать\n"
+"    Закладки - это указатели на некоторую фиксацию, которые перемещаются\n"
+"    при фиксации. Они похожи на метки тем, что их можно использовать\n"
 "    вместо ID (хэшей) наборов изменений, например, в :hg:`update`.\n"
-"    Но, в отличие от меток, закладки перемещаются вслед за коммитами."
+"    Но, в отличие от меток, закладки перемещаются вслед за фиксациями."
 
 msgid ""
 "    Bookmarks can be renamed, copied and deleted. Bookmarks are local,\n"
@@ -14454,8 +17442,8 @@
 msgstr ""
 "    Закладки можно переименовывать, копировать и удалять. Закладки\n"
 "    по умолчанию локальны, до тех пор пока они явно не передаются\n"
-"    с помощью push или pull между репозиториями. Передача закладок\n"
-"    позволяет вам совместно работать над ветвями, не создавая\n"
+"    с помощью push или pull между хранилищами. Передача закладок\n"
+"    позволяет вам совместно работать над ветками, не создавая\n"
 "    именованную ветку."
 
 msgid ""
@@ -14466,13 +17454,13 @@
 "    a named branch. If a topological branch is not named, it becomes\n"
 "    an anonymous branch. See 'Branch, anonymous' and 'Branch, named'."
 msgstr ""
-"Ветвь (Branch)\n"
+"Ветка (Branch)\n"
 "    Дочерний набор изменений, родительский набор которого не является\n"
 "    головной ревизией. Иногда называются также топологическими ветками\n"
-"    (см. 'Ветвь, топологическая'). Если для топологической ветви \n"
+"    (см. 'Ветка, топологическая'). Если для топологической ветки\n"
 "    задается имя, она становится именованной веткой. Если \n"
-"    топологическая ветвь не имеет имени, она становится\n"
-"    анонимной веткой. См. 'Ветвь, анонимная' и 'Ветвь, именованная'."
+"    топологическая ветка не имеет имени, она становится\n"
+"    анонимной веткой. См. 'Ветка, анонимная' и 'Ветка, именованная'."
 
 msgid ""
 "    Branches may be created when changes are pulled from or pushed to\n"
@@ -14483,13 +17471,13 @@
 "    explicitly with a named branch, but it can also be done locally,\n"
 "    using bookmarks or clones and anonymous branches."
 msgstr ""
-"    Ветви могут создаваться при передаче изменений с помощью push или\n"
+"    Ветки могут создаваться при передаче изменений с помощью push или\n"
 "    pull, поскольку эти операции могут создавать новые головы. Следует\n"
-"    заметить, что термин \"ветвь\" пожет быть использован неформально\n"
+"    заметить, что термин \"ветка\" может быть использован неформально\n"
 "    для описания независимой части процесса разработки. Иногда это\n"
-"    формализуется явно с помощью именованных ветвей, но можно сделать\n"
+"    формализуется явно с помощью именованных веток, но можно сделать\n"
 "    это и локально с помощью закладок или клонирования и анонимных\n"
-"    ветвей."
+"    веток."
 
 msgid "    Example: \"The experimental branch\"."
 msgstr "    Пример: \"Экспериментальная ветка\"."
@@ -14499,8 +17487,8 @@
 "    its parent having more than one child."
 msgstr ""
 "Ветвление\n"
-"    (создание ветви) Действие по созданию дочернего набора изменений,\n"
-"    в результате которого родетльская ревизия имеет более одной\n"
+"    (создание ветки) Действие по созданию дочернего набора изменений,\n"
+"    в результате которого родительская ревизия имеет более одной\n"
 "    дочерней."
 
 msgid "    Example: \"I'm going to branch at X\"."
@@ -14512,33 +17500,33 @@
 "    a head and the name of the branch is not changed, a new anonymous\n"
 "    branch is created."
 msgstr ""
-"Ветвь, анонимная\n"
+"Ветка, анонимная\n"
 "    Каждый раз, когда новый набор изменений создается от родителя,\n"
-"    не являющегося головной ревизией, и при этом имя ветви не меняется,\n"
-"    содается новая анонимная ветвь."
+"    не являющегося головной ревизией, и при этом имя ветки не меняется,\n"
+"    создаётся новая анонимная ветка."
 
 msgid ""
 "Branch, closed\n"
 "    A named branch whose branch heads have all been closed."
 msgstr ""
-"Ветвь, закрытая\n"
-"    Именованная ветвь, на которой все головные ревизии закрыты."
+"Ветка, закрытая\n"
+"    Именованная ветка, на которой все головные ревизии закрыты."
 
 msgid ""
 "Branch, default\n"
 "    The branch assigned to a changeset when no name has previously been\n"
 "    assigned."
 msgstr ""
-"Ветвь, по умолчанию\n"
-"    Ветвь, привязанная к набору изменений, до того, как было явно задано\n"
-"    какое-либо имя ветви."
+"Ветка, по умолчанию\n"
+"    Ветка, привязанная к набору изменений, до того, как было явно задано\n"
+"    какое-либо имя ветки."
 
 msgid ""
 "Branch head\n"
 "    See 'Head, branch'."
 msgstr ""
-"Голова ветви\n"
-"    См. 'Голова, ветви'."
+"Голова ветки\n"
+"    См. 'Голова, ветки'."
 
 msgid ""
 "Branch, inactive\n"
@@ -14548,11 +17536,11 @@
 "    shows inactive branches by default, though they can be hidden with\n"
 "    :hg:`branches --active`."
 msgstr ""
-"Ветвь, неактивная\n"
-"    Если именованная ветвь не имеет топологических головных ревизий,\n"
-"    она считается неактивной. Например, ветка для новой функциеи станет\n"
-"    неактивной, когда она будет слита в ветвь по умолчанию (default).\n"
-"    Команда ':hg:`branches` по умолчанию показывает неактивные ветви,\n"
+"Ветка, неактивная\n"
+"    Если именованная ветка не имеет топологических головных ревизий,\n"
+"    она считается неактивной. Например, ветка для новой функции станет\n"
+"    неактивной, когда она будет слита в ветку по умолчанию (default).\n"
+"    Команда ':hg:`branches` по умолчанию показывает неактивные ветки,\n"
 "    их можно скрыть с помощью :hg:`branches --active`."
 
 msgid ""
@@ -14561,8 +17549,8 @@
 "    --close-branch` when they are no longer needed."
 msgstr ""
 "    ПРИМЕЧАНИЕ: такое поведение устарело и больше не используется,\n"
-"    потому что оно слишком неочивидно и может вызывать путаницу.\n"
-"    Теперь не нужные более ветви необходимо явно закрывать с помощью\n"
+"    потому что оно слишком неочевидно и может вызывать путаницу.\n"
+"    Теперь не нужные более ветки необходимо явно закрывать с помощью\n"
 "    :hg:`commit --close-branch`"
 
 msgid ""
@@ -14574,12 +17562,12 @@
 "    :hg:`commit --close-branch` for more information on managing\n"
 "    branches."
 msgstr ""
-"Ветвь, именованная\n"
-"    Несколько наборов изменений, имеющих одно и то же имя ветви.\n"
+"Ветка, именованная\n"
+"    Несколько наборов изменений, имеющих одно и то же имя ветки.\n"
 "    По умолчанию дочерние ревизии набора изменений на некоторой\n"
-"    именованной ветви принадлежат той же ветви. Дочерний набор\n"
-"    изменений может быть явно привязан к другой ветви. Подробнее об\n"
-"    управлении ветвями см. :hg:`help branch`, :hg:`help branches` и\n"
+"    именованной ветке принадлежат той же ветке. Дочерний набор\n"
+"    изменений может быть явно привязан к другой ветке. Подробнее об\n"
+"    управлении ветками см. :hg:`help branch`, :hg:`help branches` и\n"
 "    :hg:`commit --close-branch`"
 
 msgid ""
@@ -14591,20 +17579,20 @@
 "    further changesets are added to that previous branch, then that\n"
 "    previous branch will be a branch in name only."
 msgstr ""
-"    Именованные ветви можно трактовать как некое пространство имен,\n"
-"    разделяющие наборы изменений, составляющие репозиторий, на\n"
-"    несколько отдельных подмножеств. Именованная ветвь не обязательно\n"
-"    является топологичесткой веткой. Если именованная ветвь отщепляется\n"
-"    от головы другой именованной ветви или ветви по умолчанию (default),\n"
-"    но на первоначальную ветвь более не добавляется наборов изменений,\n"
-"    то первоначальная ветвь будет существовать только в качестве имени."
+"    Именованные ветки можно трактовать как некое пространство имен,\n"
+"    разделяющие наборы изменений, составляющие хранилище, на\n"
+"    несколько отдельных подмножеств. Именованная ветка не обязательно\n"
+"    является топологической веткой. Если именованная ветка отщепляется\n"
+"    от головы другой именованной ветки или ветки по умолчанию (default),\n"
+"    но на первоначальную ветку более не добавляется наборов изменений,\n"
+"    то первоначальная ветка будет существовать только в качестве имени."
 
 msgid ""
 "Branch tip\n"
 "    See 'Tip, branch'."
 msgstr ""
-"Оконченая ревизия (tip) ветви\n"
-"    См. 'Оконечная ревизия (tip), ветвь'."
+"Оконечная ревизия (tip) ветки\n"
+"    См. 'Оконечная ревизия (tip), ветка'."
 
 msgid ""
 "Branch, topological\n"
@@ -14614,12 +17602,12 @@
 "    branch is not named, it becomes an anonymous branch of the\n"
 "    current, possibly default, branch."
 msgstr ""
-"Ветвь, топологическая\n"
+"Ветка, топологическая\n"
 "    Каждый раз, когда дочерняя ревизия отщепляется от родительской,\n"
 "    которая не является головной ревизий, создается топологическая\n"
-"    ветвь. Если ей присваивается имя, она становится именованной\n"
-"    веткой. Если для топологичской ветви не задается имя, она\n"
-"    становится анонимной веткой текущей ветви - возможно ветви\n"
+"    ветка. Если ей присваивается имя, она становится именованной\n"
+"    веткой. Если для топологической ветки не задается имя, она\n"
+"    становится анонимной веткой текущей ветки - возможно, ветки\n"
 "    по умолчанию (default)."
 
 msgid ""
@@ -14629,16 +17617,16 @@
 "    author, commit message, date, and list of changed files."
 msgstr ""
 "Журнал изменений (Changelog)\n"
-"    Запись наборов изменений в порядке из добавления в репозиторий.\n"
+"    Запись наборов изменений в порядке их добавления в хранилище.\n"
 "    Она включает информацию об ID (хэше) ревизии, авторе, сообщение\n"
-"    коммита, дату и список измененных файлов."
+"    фиксации, дату и список измененных файлов."
 
 msgid ""
 "Changeset\n"
 "    A snapshot of the state of the repository used to record a change."
 msgstr ""
 "Набор изменений (changeset)\n"
-"    Снимок состояния репозитория, используемый для записи изменения."
+"    Снимок состояния хранилища, используемый для записи изменения."
 
 msgid ""
 "Changeset, child\n"
@@ -14660,8 +17648,8 @@
 msgstr ""
 "Идентификатор (ID) набора изменений\n"
 "    Хэш SHA-1, однозначно идентифицирующий набор изменений. Может\n"
-"    быть представлен как \"длинная\" (40 шестнадцатиричных символов)\n"
-"    или \"короткая\" (12 шестнадцатиричных символов) строка."
+"    быть представлен как \"длинная\" (40 шестнадцатеричных символов)\n"
+"    или \"короткая\" (12 шестнадцатеричных символов) строка."
 
 msgid ""
 "Changeset, merge\n"
@@ -14669,7 +17657,7 @@
 "    committed."
 msgstr ""
 "Набор изменений слияния\n"
-"    Набор изменений с двумя предками. Создается когда коммитится\n"
+"    Набор изменений с двумя предками. Создается когда фиксируется\n"
 "    результат слияния."
 
 msgid ""
@@ -14715,7 +17703,7 @@
 "    See 'Changeset, child'."
 msgstr ""
 " Дочерний набор изменений (ревизия)\n"
-"    См. 'Набор изменинй, дочерний'."
+"    См. 'Набор изменений, дочерний'."
 
 msgid ""
 "Close changeset\n"
@@ -14728,8 +17716,8 @@
 "Closed branch\n"
 "    See 'Branch, closed'."
 msgstr ""
-"Закрытая ветвь\n"
-"    Cм. 'Ветвь, закрытая'."
+"Закрытая ветка\n"
+"    Cм. 'Ветка, закрытая'."
 
 msgid ""
 "Clone\n"
@@ -14737,11 +17725,11 @@
 "    clone must be in the form of a revision and its ancestors."
 msgstr ""
 "Клон\n"
-"    Полная или частичная копия репозитория. Частичный клон должен\n"
+"    Полная или частичная копия хранилища. Частичный клон должен\n"
 "    быть в форме ревизии с ее предками."
 
 msgid "    Example: \"Is your clone up to date?\"."
-msgstr "    Пример: \"Я всегда беру клон репозитория Linux в отпуск.\""
+msgstr "    Пример: \"Содержит ли твой клон все последние изменения?\""
 
 msgid "    (Verb) The process of creating a clone, using :hg:`clone`."
 msgstr ""
@@ -14749,24 +17737,24 @@
 "    Процесс создания клона с использованием :hg:`clone`."
 
 msgid "    Example: \"I'm going to clone the repository\"."
-msgstr "    Пример:\"Я собираюсь клонировать репозиторий\"."
+msgstr "    Пример:\"Я собираюсь клонировать хранилище\"."
 
 msgid ""
 "Closed branch head\n"
 "    See 'Head, closed branch'."
 msgstr ""
-"Закрытая голова ветви\n"
-"    См. 'Головная ревизия, закрытая ветвь'."
+"Закрытая голова ветки\n"
+"    См. 'Головная ревизия, закрытая ветка'."
 
 msgid ""
 "Commit\n"
 "    (Noun) A synonym for changeset."
 msgstr ""
-"Коммит\n"
+"Фиксация\n"
 "    (Сущ.) Синоним набора изменений."
 
 msgid "    Example: \"Is the bug fixed in your recent commit?\""
-msgstr "    Пример: \"Исправлен ли этот баг в твоем последнем коммите?\""
+msgstr "    Пример: \"Исправлена ли эта ошибка в твоей последней фиксации?\""
 
 msgid ""
 "    (Verb) The act of recording changes to a repository. When files\n"
@@ -14774,13 +17762,13 @@
 "    differences between the committed files and their parent\n"
 "    changeset, creating a new changeset in the repository."
 msgstr ""
-"    (Гл.) Действие по фиксации изменений в репозитории. Когда файлы\n"
-"    коммитятся в рабочем каталоге, Mercurial ищет отличия между ними и\n"
+"    (Гл.) Действие по фиксации изменений в хранилище. Когда файлы\n"
+"    фиксируются в рабочем каталоге, Mercurial ищет отличия между ними и\n"
 "    и их родительской ревизией, создавая новый набор изменений в\n"
-"    репозитории."
+"    хранилище."
 
 msgid "    Example: \"You should commit those changes now.\""
-msgstr "    Пример: \"Тебе стоит закоммитить эти изменения прямо сейчас.\""
+msgstr "    Пример: \"Тебе стоит зафиксировать эти изменения прямо сейчас.\""
 
 msgid ""
 "Cset\n"
@@ -14800,7 +17788,7 @@
 "    for children to have at most two parents."
 msgstr ""
 "НАГ (DAG, граф)\n"
-"    Репозитоирий с наборами изменений распределенной системы контроля\n"
+"    Хранилище с наборами изменений распределенной системы контроля\n"
 "    версий (DVCS) может быть представлен как направленный ациклический\n"
 "    граф (НАГ, англ. DAG), состоящий из узлов и ребер, где узлы являются\n"
 "    наборами изменений, а ребра отражают отражают отношение родительская-\n"
@@ -14812,8 +17800,8 @@
 "Default branch\n"
 "    See 'Branch, default'."
 msgstr ""
-"Ветвь по умолчанию (default)\n"
-"    См. 'Ветвь, по умолчанию'."
+"Ветка по умолчанию (default)\n"
+"    См. 'Ветка, по умолчанию'."
 
 msgid ""
 "Descendant\n"
@@ -14842,7 +17830,7 @@
 msgstr ""
 "Дифф (diff)\n"
 "    Отличия содержимого и атрибутов файлов между двумя ревизиями\n"
-"    или между некой ревизией и текущим рабочим каталогом. Отлчия\n"
+"    или между некоей ревизией и текущим рабочим каталогом. Отличия\n"
 "    обычно представлены в стандартной форме, называемой \"диффом\"\n"
 "    или \"патчем\". Формат диффов git используется, если изменения\n"
 "    должны включать копирования, переименования или изменения\n"
@@ -14876,11 +17864,11 @@
 msgstr ""
 "Каталог, рабочий\n"
 "    Рабочий каталог отражает состояние файлов, контролируемых Mercurial,\n"
-"    которое будет зафиксировано при следующем коммите. Рабочий каталог\n"
+"    которое будет закреплено при следующей фиксации. Рабочий каталог\n"
 "    изначально соответствует снимку существующей ревизии, называемой\n"
 "    родителем рабочего каталога. См. 'Родитель, рабочий каталог'.\n"
 "    Состояние может быть изменено за счет ручной правки файлов или\n"
-"    слияния. Метаданные репозитория находятся в каталоге .hg в рабочем\n"
+"    слияния. Метаданные хранилища находятся в каталоге .hg в рабочем\n"
 "    каталоге."
 
 msgid ""
@@ -14897,9 +17885,9 @@
 "    'Head, repository' for specific definitions."
 msgstr ""
 "Голова (головная ревизия)\n"
-"    Термин 'голова', может быть использован как для обозначения\n"
-"    головной ревизии ветви, так и репозитория, в зависимости от\n"
-"    контекста. См. 'Голова, репозиторий' и 'Голова, ветвь'."
+"    Термин 'голова', может быть использован для обозначения\n"
+"    головной ревизии как ветки, так и хранилища, в зависимости от\n"
+"    контекста. См. 'Голова, хранилище' и 'Голова, ветка'."
 
 msgid ""
 "    Heads are where development generally takes place and are the\n"
@@ -14912,8 +17900,8 @@
 "Head, branch\n"
 "    A changeset with no descendants on the same named branch."
 msgstr ""
-"Голова, ветви\n"
-"    Набор изменений, не имеющий потомков на той же именованной ветви"
+"Голова, ветки\n"
+"    Набор изменений, не имеющий потомков на той же именованной ветке"
 
 msgid ""
 "Head, closed branch\n"
@@ -14922,9 +17910,9 @@
 "    closed when all its heads are closed and consequently is not\n"
 "    listed by :hg:`branches`."
 msgstr ""
-"Голова, закрытая ветвь\n"
+"Голова, закрытая ветка\n"
 "    Набор изменений, который помечает голову как более не интересную.\n"
-"    Закрытая ветвь не отображается :hg:`heads`. Ветка считается закрытой,\n"
+"    Закрытая ветка не отображается :hg:`heads`. Ветка считается закрытой,\n"
 "    если закрыты все ее головы, и соответственно она не отображается\n"
 "    в выводе :hg:`branches`."
 
@@ -14932,7 +17920,7 @@
 "Head, repository\n"
 "    A topological head which has not been closed."
 msgstr ""
-"Голова, репозиторий\n"
+"Голова, хранилище\n"
 "    Топологическая не закрытая головная ревизия."
 
 msgid ""
@@ -14940,7 +17928,7 @@
 "    A changeset with no children in the repository."
 msgstr ""
 "Голова, топологическая\n"
-"    Ревизия, не имеющая потомков в репозитории."
+"    Ревизия, не имеющая потомков в хранилище."
 
 msgid ""
 "History, immutable\n"
@@ -14951,11 +17939,11 @@
 "    reintroduced to the repository."
 msgstr ""
 "История, неизменная\n"
-"    Закомиченный однажды набор изменений не может быть изменен.\n"
+"    Зафиксированный однажды набор изменений не может быть изменен.\n"
 "    Расширения, которые изменяют историю, на самом деле создают\n"
 "    новые наборы изменений, которые заменяют уже существующие,\n"
 "    после чего удаляют старые наборы изменений. Такие действия в\n"
-"    публичном репозитории могут быть причиной ситуации, когда\n"
+"    публичном хранилище могут быть причиной ситуации, когда\n"
 "    старые наборы изменений будут добавлены вновь."
 
 msgid ""
@@ -14965,8 +17953,8 @@
 "    a way as to preserve changeset contents."
 msgstr ""
 "История, изменение\n"
-"    Наборы изменений в репозитории неизменны. Однако, расширения\n"
-"    Mercurial могут быть использованы для изменения самого репозитория,\n"
+"    Наборы изменений в хранилище неизменны. Однако, расширения\n"
+"    Mercurial могут быть использованы для изменения самого хранилища,\n"
 "    как таким образом, чтобы сохранить содержимое наборов изменений."
 
 msgid ""
@@ -15001,19 +17989,19 @@
 "    as a merge changeset, bringing two branches together in the DAG."
 msgstr ""
 "Слияние\n"
-"    Используется для объединения расходящихся ветвей разработки. Когда\n"
+"    Используется для объединения расходящихся веток разработки. Когда\n"
 "    вы обновляетесь на некоторую ревизию и потом сливаете ее в другую\n"
 "    ревизию, вы добавляете историю последней в ваш рабочий каталог.\n"
 "    После разрешения конфликтов (и пометки файлов как разрешенных),\n"
-"    это слияние будет закоммичено как ревизия слияния, объединяя две\n"
-"    ветви на графе ревизий."
+"    это слияние будет зафиксировано как ревизия слияния, объединяя две\n"
+"    ветки на графе ревизий."
 
 msgid ""
 "Named branch\n"
 "    See 'Branch, named'."
 msgstr ""
-"Именованная ветвь\n"
-"    См. 'Ветвь, именованная'."
+"Именованная ветка\n"
+"    См. 'Ветка, именованная'."
 
 msgid ""
 "Null changeset\n"
@@ -15025,7 +18013,7 @@
 msgstr ""
 "Пустая (Null) ревизия\n"
 "    Пустой набор изменений. Это родительская ревизия только что\n"
-"    инициализированного репозитория и репозитория, для которго\n"
+"    инициализированного хранилища и хранилища, для которого\n"
 "    не извлечен рабочий каталог. Таким образом, она является родителем\n"
 "    корневой (root) ревизии и фактическим предком при слиянии\n"
 "    несвязанных наборов изменений. Может быть задана псевдонимом\n"
@@ -15055,7 +18043,7 @@
 msgstr ""
 "    Родитель, рабочего каталога\n"
 "    Родительская ревизия рабочего каталога отражает виртуальную\n"
-"    ревизию, являющуся дочерней ревизией показываемых :hg:`parents`\n"
+"    ревизию, являющуюся дочерней ревизией показываемых :hg:`parents`\n"
 "    наборов изменений. Меняется с помощью :hg:`update`. Также можно\n"
 "    узнать родителя рабочего каталога с помощью :hg:`summary` и\n"
 "    :hg:`id`. Может задаваться псевдонимом \".\"."
@@ -15088,11 +18076,11 @@
 "    only updates the repository, it does not update the files in the\n"
 "    working directory. See :hg:`help pull`."
 msgstr ""
-"Подтянуть (Pull)\n"
-"    Операция, при которой наборы изменений из удаленного репозитория,\n"
-"    отсутсвующие в локальном, передаются в локальный репозиторий.\n"
+"Затянуть (Pull)\n"
+"    Операция, при которой наборы изменений из отдалённого хранилища,\n"
+"    отсутствующие в локальном, передаются в локальное хранилище.\n"
 "    Обратите внимание, что эта операция без дополнительных аргументов\n"
-"    обновляет только репозиторий, но не рабочий каталог.\n"
+"    обновляет только хранилище, но не рабочий каталог.\n"
 "    См. :hg:`help pull`."
 
 msgid ""
@@ -15103,11 +18091,11 @@
 "    locally to the remote repository. Uncommitted changes are not\n"
 "    sent. See :hg:`help push`."
 msgstr ""
-"Протолкнуть (Pull)\n"
-"    Операция, при которой наборы изменения из локального репозитория,\n"
-"    отсутствующие в удаленном, пересылаются в удаленный репозиторий.\n"
+"Протолкнуть (Push)\n"
+"    Операция, при которой наборы изменения из локального хранилища,\n"
+"    отсутствующие в отдалённом, пересылаются в отдалённое хранилище.\n"
 "    Обратите внимание, что это передает только наборы изменений,\n"
-"    которые были закоммичены в локальный репозиторий. Незакоммиченные\n"
+"    которые были зафиксированы в локальное хранилище. Незафиксированные\n"
 "    изменения не пересылаются. См. :hg:`help push`."
 
 msgid ""
@@ -15119,10 +18107,10 @@
 "    recreated by \"updating\" a working directory to a specific\n"
 "    changeset."
 msgstr ""
-"Репозиторий\n"
+"Хранилище\n"
 "    Метаданные, описывающие все зафиксированные состояния набора\n"
 "    файлов. Каждое зафиксированное состояние представлено набором\n"
-"    изменений. Репозиторий как правило (но не всегда) находится\n"
+"    изменений. Хранилище как правило (но не всегда) находится\n"
 "    в подкаталоге ``.hg`` рабочего каталога. Каждое зафиксированное\n"
 "    состояние может быть воссоздано \"обновлением\" рабочего каталога\n"
 "    до желаемого набора изменений."
@@ -15131,8 +18119,8 @@
 "Repository head\n"
 "    See 'Head, repository'."
 msgstr ""
-"Репозитория, голова\n"
-"    См. 'Голова, репозиторий'."
+"Хранилища, голова\n"
+"    См. 'Голова, хранилище'."
 
 msgid ""
 "Revision\n"
@@ -15141,7 +18129,7 @@
 "    number'; See also 'Changeset'."
 msgstr ""
 "Ревизия\n"
-"    Состояние репозитория на некоторый момент времени. Более ранние\n"
+"    Состояние хранилища на некоторый момент времени. Более ранние\n"
 "    ревизии могут быть получены с помощью :hg:`update`. См. также\n"
 "    'Номер ревизии' и 'Набор изменений'.\n"
 "\n"
@@ -15160,10 +18148,10 @@
 msgstr ""
 "Номер ревизии\n"
 "    Это целое число однозначно определяет набор изменений в отдельно\n"
-"    взятом репозитории. Оно отражает порядок, в котором наборы\n"
-"    изменений были добавлены в репозиторий, начиная с ревизии с\n"
+"    взятом хранилище. Оно отражает порядок, в котором наборы\n"
+"    изменений были добавлены в хранилище, начиная с ревизии с\n"
 "    номером 0. Очень важно понимать, что номера ревизий могут\n"
-"    различаться в каждом клоне репозитория. Чтобы однозначно задать\n"
+"    различаться в каждом клоне хранилища. Чтобы однозначно задать\n"
 "    ревизию среди всех клонов, см. 'Идентификатор (ID) набора\n"
 "    изменений'."
 
@@ -15194,7 +18182,7 @@
 msgstr ""
 "Корень (корневая ревизия)\n"
 "    Набор изменений, у которого единственный предок - null. Большинство\n"
-"    репозиториев имеют только один корень."
+"    хранилищ имеют только один корень."
 
 msgid ""
 "Tag\n"
@@ -15217,7 +18205,7 @@
 msgstr ""
 "Оконечная ревизия (tip)\n"
 "    Набор изменений с максимальным номером ревизии. Это набор изменений,\n"
-"    добавленный в репозиторий последним."
+"    добавленный в хранилище последним."
 
 msgid ""
 "Tip, branch\n"
@@ -15227,12 +18215,12 @@
 "    numbers may be different in different repository clones, the\n"
 "    branch tip may be different in different cloned repositories."
 msgstr ""
-"Оконечная ревизия (tip) ветви\n"
-"    Голова данной ветви с максимальным номером ревизии. Когда имя\n"
-"    ветви используется в качестве идентификатора ревизии, оно ссылается\n"
-"    на оконечную ревизию ветви. См. также 'Голова ветви'. Обратите\n"
+"Оконечная ревизия (tip) ветки\n"
+"    Голова данной ветки с максимальным номером ревизии. Когда имя\n"
+"    ветки используется в качестве идентификатора ревизии, оно ссылается\n"
+"    на оконечную ревизию ветки. См. также 'Голова ветки'. Обратите\n"
 "    внимание, что поскольку номера ревизий могут различаться в разных\n"
-"    клонах репозиториев, tip может быть различным в разных клонах."
+"    клонах хранилищ, tip может быть различным в разных клонах."
 
 msgid ""
 "Update\n"
@@ -15269,7 +18257,6 @@
 "Рабочий каталог, родитель\n"
 "    См. 'Родитель, рабочего каталога'.\n"
 
-#, fuzzy
 msgid ""
 "Synopsis\n"
 "--------"
@@ -15283,7 +18270,7 @@
 "for files that it is not currently tracking."
 msgstr ""
 "Mercurial использует файл с именем ``.hgignore`` из корневого каталога\n"
-"репозитория для управления поведением при обнаружении файлов, которые\n"
+"хранилища для управления поведением при обнаружении файлов, которые\n"
 "в настоящий момент не отслеживаются."
 
 msgid ""
@@ -15291,7 +18278,7 @@
 "-----------"
 msgstr ""
 "Описание\n"
-"-----------"
+"----------"
 
 msgid ""
 "The working directory of a Mercurial repository will often contain\n"
@@ -15302,13 +18289,13 @@
 "created manually. It is typically put under version control, so that\n"
 "the settings will propagate to other repositories with push and pull."
 msgstr ""
-"Рабочий каталог репозитория часто содержит файлы, которые не должны\n"
+"Рабочий каталог хранилища часто содержит файлы, которые не должны\n"
 "контролироваться Mercurial. Это, например, бэкапы, создаваемые\n"
 "редакторами, или результаты сборки, полученные при компиляции.\n"
 "Эти файлы могут быть игнорированы, если добавить их в файл ``.hgignore``\n"
 "в корне рабочего каталога. Файл ``.hgignore`` должен быть создан\n"
 "вручную. Как правило его помещают под контроль версий, чтобы настройки\n"
-"могли передаваться между репозиториями с помощью push и pull."
+"могли передаваться между хранилищами с помощью push и pull."
 
 msgid ""
 "An untracked file is ignored if its path relative to the repository\n"
@@ -15316,7 +18303,7 @@
 "any pattern in ``.hgignore``."
 msgstr ""
 "Неотслеживаемый файл игнорируется, если его путь относительно\n"
-"корневого каталога репозитория или любая часть этого пути совпадает\n"
+"корневого каталога хранилища или любая часть этого пути совпадает\n"
 "с любым шаблоном из файла ``.hgignore``."
 
 msgid ""
@@ -15325,7 +18312,7 @@
 "if any pattern in ``.hgignore`` matches ``a/b/file.c``, ``a/b`` or ``a``."
 msgstr ""
 "Например, допустим, что у нас есть неотслеживаемый файл ``file.c``,\n"
-"имеющий путь ``a/b/file.c`` в нашем репозитории. Mercurial будет\n"
+"имеющий путь ``a/b/file.c`` в нашем хранилище. Mercurial будет\n"
 "игнорировать этот файл, любой шаблон из ``.hgignore`` совпадает с\n"
 "``a/b/file.c``, ``a/b`` или ``a``."
 
@@ -15410,7 +18397,7 @@
 "-------"
 msgstr ""
 "Пример\n"
-"-------"
+"------"
 
 msgid "Here is an example ignore file. ::"
 msgstr "Пример файла игнорирования. ::"
@@ -15427,6 +18414,9 @@
 "  *.pyc\n"
 "  *~"
 msgstr ""
+"  *.elc\n"
+"  *.pyc\n"
+"  *~"
 
 msgid ""
 "  # switch to regexp syntax.\n"
@@ -15443,9 +18433,9 @@
 "configuration file can be used to specify the repository paths to use\n"
 "and global web configuration options."
 msgstr ""
-"Встроенный веб-сервер Mercurial, hgweb, может обслуживать как один\n"
-"репозиторий, так и несколько. В последнем случае может быть использован\n"
-"отдельный файл конфигурации чтобы задать пути к репозиториям вместе\n"
+"Встроенный веб-сервер Mercurial, hgweb, может обслуживать как одно\n"
+"хранилище, так и несколько. В последнем случае может быть использован\n"
+"отдельный файл конфигурации чтобы задать пути к хранилищам вместе\n"
 "с глобальными настройками веб-сервера."
 
 msgid ""
@@ -15460,6 +18450,9 @@
 "  - paths\n"
 "  - collections"
 msgstr ""
+"  - web\n"
+"  - paths\n"
+"  - collections"
 
 msgid ""
 "The ``web`` section can specify all the settings described in the web\n"
@@ -15473,7 +18466,7 @@
 "The ``paths`` section provides mappings of physical repository\n"
 "paths to virtual ones. For instance::"
 msgstr ""
-"Секция ``paths`` задает соответствие физических путей к репозиториям\n"
+"Секция ``paths`` задает соответствие физических путей к хранилищам\n"
 "и виртуальных. Например::"
 
 msgid ""
@@ -15484,6 +18477,12 @@
 "  / = /real/root2/*\n"
 "  virtual/root2 = /real/root2/**"
 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/**"
 
 msgid ""
 "- The first two entries make two repositories in different directories\n"
@@ -15498,17 +18497,17 @@
 "- The fifth entry recursively finds all repositories under the real\n"
 "  root, and maps their relative paths under the virtual root."
 msgstr ""
-"- Первые две строки показывают два репозитрия, физически находящихся по\n"
+"- Первые две строки показывают два хранилища, физически находящиеся по\n"
 "  разным путям, в одном каталоге в веб-интерфейсе\n"
-"- Третья строка показывает все репозитории Mercurial, находящиеся в\n"
+"- Третья строка показывает все хранилища Mercurial, находящиеся в\n"
 "  '/real/root', в каталоге 'web/root' веб-интерфейса. Такая форма\n"
 "  является предпочтительной по сравнению с секцией [collections],\n"
 "  т.к. использование абсолютных путей в качестве ключей поддерживается\n"
 "  не на всех платформах (в частности, не работает в Windows)\n"
 "- Четвертая строка иллюстрирует особый случай, при котором все\n"
-"  репозитории из каталога '/real/root2' отображаются в корневом\n"
+"  хранилища из каталога '/real/root2' отображаются в корневом\n"
 "  виртуальном каталоге.\n"
-"- Пятая строка рекурсивно ищет все репозитории в подкаталогах\n"
+"- Пятая строка рекурсивно ищет все хранилища в подкаталогах\n"
 "  /real/root2 и показывает из относительные пути в виртуальном\n"
 "  каталоге."
 
@@ -15517,22 +18516,24 @@
 "repositories paths to virtual ones, though the paths syntax is generally\n"
 "preferred. For instance::"
 msgstr ""
-"Секция ``collections`` задает соответстие деревьев физических путей\n"
-"репозиториев виртуальным. Однако, предпочтительно использовать секцию\n"
+"Секция ``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"
+"Здесь левая часть путей будет удалена из всех путей хранилищ,\n"
+"найденных в каталоге из правой части. Так, ``/foo/bar`` и ``foo/quux/baz``\n"
 "будут отображаться как ``bar`` и ``quux/baz`` соответственно.\n"
 
 msgid "To merge files Mercurial uses merge tools."
@@ -15544,7 +18545,7 @@
 "ancestor of the two file versions, so they can determine the changes\n"
 "made on both branches."
 msgstr ""
-"Такой иструмент объединяет две различных версии файла в результирующую.\n"
+"Такой инструмент объединяет две различных версии файла в результирующую.\n"
 "Инструментом слияния является программа, которой передаются два файла\n"
 "и последний общий предок обеих версий, так что она может определить,\n"
 "какие изменения были были сделаны на каких ветках."
@@ -15555,7 +18556,7 @@
 msgstr ""
 "Инструменты используются командами :hg:`resolve`, :hg:`merge`, :hg:"
 "`update`,\n"
-":hg:`backout` и несколькими раширениями."
+":hg:`backout` и несколькими расширениями."
 
 msgid ""
 "Usually, the merge tool tries to automatically reconcile the files by\n"
@@ -15569,7 +18570,7 @@
 msgstr ""
 "Обычно, программы слияния пытаются автоматически разрешить конфликты,\n"
 "объединяя непересекающиеся изменения, которые были сделаны в двух\n"
-"различных ветвях истории файла. Более того, некоторые интерактивные\n"
+"различных ветках истории файла. Более того, некоторые интерактивные\n"
 "инструменты слияния облегчают ручное разрешение конфликтов, используя\n"
 "графическое представление или вставляя особые маркеры. Mercurial\n"
 "не поставляется с интерактивными инструментами, полагаясь на внешние\n"
@@ -15600,11 +18601,11 @@
 "symlink, if it can handle binary files if the file is binary, and if a\n"
 "GUI is available if the tool requires a GUI."
 msgstr ""
-"Инстумент слияния может использоваться, если его исполняемый файл\n"
+"Инструмент слияния может использоваться, если его исполняемый файл\n"
 "может быть найден системой, и если он может провести слияние.\n"
 "Исполняемый файл может быть найден, если он доступен по известным\n"
 "путям. Инструмент может провести слияние, если он корректно\n"
-"обрабатывает символические сслылки, в том случае если файл является\n"
+"обрабатывает символические ссылки, в том случае если файл является\n"
 "символической ссылкой, обрабатывает бинарные файлы, если файл\n"
 "является бинарным, и если доступна графическая среда, в случае,\n"
 "если инструмент требует GUI."
@@ -15612,7 +18613,7 @@
 msgid ""
 "There are some internal merge tools which can be used. The internal\n"
 "merge tools are:"
-msgstr "Существуеют также встроенные инструменты слияния:"
+msgstr "Существуют также встроенные инструменты слияния:"
 
 msgid ""
 "``internal:merge``\n"
@@ -15632,7 +18633,7 @@
 "   used to resolve these conflicts."
 msgstr ""
 "``internal:fail``\n"
-"   Вместо того, чтобы попытаться провести слияне файлов, измененных на\n"
+"   Вместо того, чтобы попытаться провести слияние файлов, измененных на\n"
 "   обеих ветках, он отмечает их как файлы с неразрешенными конфликтами.\n"
 "   После разрешения конфликта должна быть использована команда resolve."
 
@@ -15648,7 +18649,7 @@
 "   Uses the other version of files as the merged version."
 msgstr ""
 "``internal:other``\n"
-"   Использует версию файла из репозитория в качестве слитой версии."
+"   Использует версию файла из хранилища в качестве слитой версии."
 
 msgid ""
 "``internal:prompt``\n"
@@ -15657,7 +18658,7 @@
 msgstr ""
 "``internal:prompt``\n"
 "   Спрашивает пользователя, какую версию файла - локальную или \n"
-"   из репозитория - использовать в качестве слитой версии."
+"   из хранилища - использовать в качестве слитой версии."
 
 msgid ""
 "``internal:dump``\n"
@@ -15669,10 +18670,10 @@
 "   same directory as ``a.txt``."
 msgstr ""
 "``internal:dump``\n"
-"   Создает три версии файла для слияния: локальную, из репозитория и\n"
+"   Создает три версии файла для слияния: локальную, из хранилища и\n"
 "   базовую. Эти файлы можно использовать для слияния вручную. Если\n"
 "   файл называется `a.txt``, то эти файлы будут называться ``a.txt.local``,\n"
-"   ``a.txt.other`` и ``a.txt.base`` соответсвенно и будут находиться\n"
+"   ``a.txt.other`` и ``a.txt.base`` соответственно и будут находиться\n"
 "   в том же каталоге, что и ``a.txt``."
 
 msgid ""
@@ -15703,7 +18704,7 @@
 "by\n"
 "   the shell."
 msgstr ""
-"1. Если иснтрумент был задан с помощью опции --tool, то используется он.\n"
+"1. Если инструмент был задан с помощью опции --tool, то используется он.\n"
 "   Если это имя инструмента из секции merge-tools, используются\n"
 "   настройки оттуда. В противном случае, заданный инструмент должен\n"
 "   быть пригодным для запуска командной оболочкой."
@@ -15726,7 +18727,7 @@
 msgstr ""
 "3. Если имя сливаемого файла совпадает с любым шаблоном из секции\n"
 "   merge-patterns, используется первый соответствующий шаблону\n"
-"   инструмент слияния. При этои не учитываются возможности этого\n"
+"   инструмент слияния. При этом не учитываются возможности этого\n"
 "   инструмента для слияния двоичных файлов."
 
 msgid ""
@@ -15768,7 +18769,7 @@
 msgid "8. The merge of the file fails and must be resolved before commit."
 msgstr ""
 "8. Слияние завершается неудачей и должно быть завершено с помощью\n"
-"   resolve перед коммитом."
+"   resolve перед фиксацией."
 
 msgid ""
 ".. note::\n"
@@ -15856,7 +18857,7 @@
 msgstr ""
 "Чтобы использовать буквальный путь к файлу, в котором не выполняются\n"
 "подстановки, начните его с ``path:``. Такие пути должны полностью\n"
-"совпадать с именем файла относительно корня репозитория."
+"совпадать с именем файла относительно корня хранилища."
 
 msgid ""
 "To use an extended glob, start a name with ``glob:``. Globs are rooted\n"
@@ -15880,7 +18881,7 @@
 "Regexp pattern matching is anchored at the root of the repository."
 msgstr ""
 "Чтобы использовать регулярные выражения Perl/Python, начните имя с\n"
-"``re:``. Такие шаблоны раскрываются относительно корня репозитория."
+"``re:``. Такие шаблоны раскрываются относительно корня хранилища."
 
 msgid ""
 "To read name patterns from a file, use ``listfile:`` or ``listfile0:``.\n"
@@ -15890,7 +18891,7 @@
 msgstr ""
 "Можно прочитать шаблоны имен из файла, используя ``listfile:`` или\n"
 "``listfile0:``. Последний ожидает шаблонов, отделенных друг от друга\n"
-"символом NUL, в то время как первый предполоает перевод строки. Каждая\n"
+"символом NUL, в то время как первый предполагает перевод строки. Каждая\n"
 "прочитанная из файла строка интерпретируется как шаблон имени файла."
 
 msgid "Plain examples::"
@@ -15901,7 +18902,7 @@
 "                 of the repository\n"
 "  path:path:name a file or directory named \"path:name\""
 msgstr ""
-"  path:foo/bar   файл с именем bar в каталоге foo в корне репозитория\n"
+"  path:foo/bar   файл с именем bar в каталоге foo в корне хранилища\n"
 "  path:path:name файл или каталог с именем \"path:name\""
 
 msgid "Glob examples::"
@@ -15930,7 +18931,7 @@
 msgid "  re:.*\\.c$      any name ending in \".c\", anywhere in the repository"
 msgstr ""
 "  re:.*\\.c$     любой файл, оканчивающийся на \".c\",\n"
-"                 находящийся где угодно в репозитории"
+"                 находящийся где угодно в хранилище"
 
 msgid "File examples::"
 msgstr "Примеры шаблонов из файлов::"
@@ -15956,7 +18957,7 @@
 "-2 denoting the revision prior to the tip, and so forth."
 msgstr ""
 "Простое целое число интерпретируется как номер ревизии. Отрицательные\n"
-"целые чила интерпретируются как непрерывное смещение относительно\n"
+"целые числа интерпретируются как непрерывное смещение относительно\n"
 "оконечной ревизии (tip). Так, -1 означает tip, -2 означает ревизию,\n"
 "предшествующую tip и т.д."
 
@@ -15964,7 +18965,7 @@
 "A 40-digit hexadecimal string is treated as a unique revision\n"
 "identifier."
 msgstr ""
-"Шестнадцатиричная строка из 40 символов считается уникальным\n"
+"Шестнадцатеричная строка из 40 символов считается уникальным\n"
 "идентификатором (ID) ревизии."
 
 msgid ""
@@ -15973,7 +18974,7 @@
 "identifier. A short-form identifier is only valid if it is the prefix\n"
 "of exactly one full-length identifier."
 msgstr ""
-"Шестнадцатиричная строка короче 40 символов считается сокращенной\n"
+"Шестнадцатеричная строка короче 40 символов считается сокращенной\n"
 "формой уникального идентификатора ревизии. Такой идентификатор\n"
 "является корректным, только если он является старшей частью\n"
 "ровно одного полного ID ревизии."
@@ -15984,9 +18985,9 @@
 "denotes the tipmost revision of that branch. Tag and branch names must\n"
 "not contain the \":\" character."
 msgstr ""
-"Любая другая строка интерпретируется как имя ветви или метки. Имя\n"
+"Любая другая строка интерпретируется как имя ветки или метки. Имя\n"
 "метки - это символьное имя, ассоциированное с некоторым ID ревизии.\n"
-"Имя ветви означает последнюю ревизию на этой ветви. Имена ветви и\n"
+"Имя ветки означает последнюю ревизию на этой ветки. Имена ветки и\n"
 "метки не должны содержать символа \":\"."
 
 msgid ""
@@ -16001,7 +19002,7 @@
 "revision of an empty repository, and the parent of revision 0."
 msgstr ""
 "Зарезервированное имя \"null\" означает пустую ревизию. Это ревизия\n"
-"пустого репозитория или родитель ревизии 0."
+"пустого хранилища или родитель ревизии 0."
 
 msgid ""
 "The reserved name \".\" indicates the working directory parent. If no\n"
@@ -16010,8 +19011,8 @@
 "parent.\n"
 msgstr ""
 "Зарезервированное имя \".\" означает родителя рабочего каталога.\n"
-"Если рабочий каталог ен извлечен, оно эквивалентно null. Если в\n"
-"рабочем каталоге находится незакоммиченный результат слияния, \".\"\n"
+"Если рабочий каталог не извлечен, оно эквивалентно null. Если в\n"
+"рабочем каталоге находится незафиксированный результат слияния, \".\"\n"
 "означает первого родителя.\n"
 
 msgid ""
@@ -16034,7 +19035,7 @@
 "``[._a-zA-Z0-9\\x80-\\xff]`` or if they match one of the predefined\n"
 "predicates."
 msgstr ""
-"Идентификаторы, такие как имена ветвей, должны заключаться в одинарные\n"
+"Идентификаторы, такие как имена веток, должны заключаться в одинарные\n"
 "или двойные кавычки, если они содержат символы не из множества\n"
 "``[._a-zA-Z0-9\\x80-\\xff]`` или если их имена совпадают с одним\n"
 "из предопределенных предикатов."
@@ -16158,6 +19159,10 @@
 "  d($1) = sort($1, date)\n"
 "  rs($1, $2) = reverse(sort($1, $2))"
 msgstr ""
+"  [revsetalias]\n"
+"  h = heads()\n"
+"  d($1) = sort($1, date)\n"
+"  rs($1, $2) = reverse(sort($1, $2))"
 
 msgid ""
 "defines three aliases, ``h``, ``d``, and ``rs``. ``rs(0:tip, author)`` is\n"
@@ -16179,26 +19184,34 @@
 "  -P x  ->  !::x\n"
 "  -l x  ->  limit(expr, x)"
 msgstr ""
+"  -f    ->  ::.\n"
+"  -d x  ->  date(x)\n"
+"  -k x  ->  keyword(x)\n"
+"  -m    ->  merge()\n"
+"  -u x  ->  user(x)\n"
+"  -b x  ->  branch(x)\n"
+"  -P x  ->  !::x\n"
+"  -l x  ->  limit(expr, x)"
 
 msgid "- Changesets on the default branch::"
-msgstr "- Ревизии на ветви default::"
+msgstr "- Ревизии на ветке default::"
 
 msgid "    hg log -r \"branch(default)\""
-msgstr ""
+msgstr "    hg log -r \"branch(default)\""
 
 msgid "- Changesets on the default branch since tag 1.5 (excluding merges)::"
 msgstr ""
-"- Ревизии на ветви default, начиная с ветки 1.5, не включая ревизии\n"
+"- Ревизии на ветке default, начиная с метки 1.5, не включая ревизии\n"
 "  слияния::"
 
 msgid "    hg log -r \"branch(default) and 1.5:: and not merge()\""
-msgstr ""
+msgstr "    hg log -r \"branch(default) and 1.5:: and not merge()\""
 
 msgid "- Open branch heads::"
-msgstr "- Головы открытых ветвей"
+msgstr "- Головы открытых веток::"
 
 msgid "    hg log -r \"head() and not closed()\""
-msgstr ""
+msgstr "    hg log -r \"head() and not closed()\""
 
 msgid ""
 "- Changesets between tags 1.3 and 1.5 mentioning \"bug\" that affect\n"
@@ -16208,73 +19221,87 @@
 "  в которых были изменены файлы ``hgext/*``::"
 
 msgid "    hg log -r \"1.3::1.5 and keyword(bug) and file('hgext/*')\""
-msgstr ""
+msgstr "    hg log -r \"1.3::1.5 and keyword(bug) and file('hgext/*')\""
 
 msgid "- Changesets committed in May 2008, sorted by user::"
-msgstr "- Ревизии, закомиченные в Мае 2008, отсортированные по пользователю::"
+msgstr ""
+"- Ревизии, зафиксированные в мае 2008, отсортированные по пользователю::"
 
 msgid "    hg log -r \"sort(date('May 2008'), user)\""
-msgstr ""
+msgstr "    hg log -r \"sort(date('May 2008'), user)\""
 
 msgid ""
 "- Changesets mentioning \"bug\" or \"issue\" that are not in a tagged\n"
 "  release::"
-msgstr "- Не помеченные ревизии, содержищие слова \"bug\" или \"issue\"::"
-
-msgid ""
-"    hg log -r \"(keyword(bug) or keyword(issue)) and not ancestors(tagged())"
-"\"\n"
-msgstr ""
+msgstr ""
+"- Наборы изменений, содержащие в описании слова \"bug\" или \"issue\",\n"
+"  и не входящие в помеченный релиз::"
+
+msgid ""
+"    hg log -r \"(keyword(bug) or keyword(issue)) and not ancestors(tagged"
+"())\"\n"
+msgstr ""
+"    hg log -r \"(keyword(bug) or keyword(issue)) and not ancestors(tagged"
+"())\"\n"
 
 msgid ""
 "Subrepositories let you nest external repositories or projects into a\n"
 "parent Mercurial repository, and make commands operate on them as a\n"
-"group. External Mercurial and Subversion projects are currently\n"
-"supported."
-msgstr ""
-"Субрепозитории (подрепозитории) позволяют вложить несколько внешних\n"
-"репозиториев или пректов в один репозиторий Mercurial и выполнять\n"
-"над ними команды как над единой группой. В настоящее время поддерживаются\n"
-"внешнии проекты Mercurial и Subversion."
+"group."
+msgstr ""
+"Подхранилища позволяют вложить несколько внешних хранилищ или проектов\n"
+"в родительское хранилище Mercurial и выполнять над ними команды как над\n"
+"единой группой."
+
+msgid ""
+"Mercurial currently supports Mercurial, Git, and Subversion\n"
+"subrepositories."
+msgstr ""
+"В настоящее время поддерживаются подхранилища Mercurial, Git\n"
+"и Subversion."
 
 msgid "Subrepositories are made of three components:"
-msgstr "Субрепозитории включают три компонента:"
+msgstr "Подхранилища включают три компонента:"
 
 msgid ""
 "1. Nested repository checkouts. They can appear anywhere in the\n"
-"   parent working directory, and are Mercurial clones or Subversion\n"
-"   checkouts."
-msgstr ""
-"1. Извлеченные рабочие копии вложенных репозиториев. Они могут\n"
-"   находится где угодно в рабочем каталоге и являются либо клонами\n"
-"   Mercurial, либо рабочими копиями Subversion."
+"   parent working directory."
+msgstr ""
+"1. Извлеченные рабочие копии вложенных хранилищ. Они могут\n"
+"   находится где угодно в рабочем каталоге."
 
 msgid ""
 "2. Nested repository references. They are defined in ``.hgsub`` and\n"
 "   tell where the subrepository checkouts come from. Mercurial\n"
 "   subrepositories are referenced like:"
 msgstr ""
-"2. Ссылки на вложенные репозитории. Они определены в ``.hgsub`` и\n"
-"   описывают, откуда были извлечены копии субрепозиториев.\n"
-"   Субрепозитории имеют такие пути:"
+"2. Ссылки на вложенные хранилища. Они определены в ``.hgsub`` и\n"
+"   описывают, откуда были извлечены копии подхранилищ.\n"
+"   Подхранилища имеют такие пути:"
 
 msgid "     path/to/nested = https://example.com/nested/repo/path"
-msgstr ""
+msgstr "     path/to/nested = https://example.com/nested/repo/path"
+
+msgid "   Git and Subversion subrepos are also supported:"
+msgstr "   Поддерживаются также подхранилища Git и Subversion:"
+
+msgid ""
+"     path/to/nested = [git]git://example.com/nested/repo/path\n"
+"     path/to/nested = [svn]https://example.com/nested/trunk/path"
+msgstr ""
+"     path/to/nested = [git]git://example.com/nested/repo/path\n"
+"     path/to/nested = [svn]https://example.com/nested/trunk/path"
 
 msgid ""
 "   where ``path/to/nested`` is the checkout location relatively to the\n"
 "   parent Mercurial root, and ``https://example.com/nested/repo/path``\n"
 "   is the source repository path. The source can also reference a\n"
-"   filesystem path. Subversion repositories are defined with:"
+"   filesystem path."
 msgstr ""
 "   где ``path/to/nested`` - путь к извлеченной рабочей копии относительно\n"
-"   корня родительского репозитория Mercurial, а \n"
-"   ``https://example.com/nested/repo/path`` - путь к репозиторию-\n"
-"   источнику. Источник может быть также путем в файловой системе.\n"
-"   Репозитории Subversion определяются так:"
-
-msgid "     path/to/nested = [svn]https://example.com/nested/trunk/path"
-msgstr ""
+"   корня родительского хранилища Mercurial, а \n"
+"   ``https://example.com/nested/repo/path`` - путь к хранилищу-\n"
+"   источнику. Источник может быть также путем в файловой системе."
 
 msgid ""
 "   Note that ``.hgsub`` does not exist by default in Mercurial\n"
@@ -16282,8 +19309,8 @@
 "   repository before using subrepositories."
 msgstr ""
 "   Обратите внимание, что ``.hgsub`` по умолчанию не существует\n"
-"   в репозиториях Mercurial, вам надо создать его и добавть\n"
-"   в родительский репозиторий перед использованием субрепозиториев."
+"   в хранилищах Mercurial, вам надо создать его и добавить\n"
+"   в родительское хранилище перед использованием подхранилищ."
 
 msgid ""
 "3. Nested repository states. They are defined in ``.hgsubstate`` and\n"
@@ -16292,11 +19319,11 @@
 "   repository changeset. Mercurial automatically record the nested\n"
 "   repositories states when committing in the parent repository."
 msgstr ""
-"3. Состояния вложенных репозиториев. Они определены в ``.hgsubstate``\n"
+"3. Состояния вложенных хранилищ. Они определены в ``.hgsubstate``\n"
 "   и содержат информацию, необходимую для дальнейшего восстановления\n"
-"   субрепозиториев до состояния, в котором они были закоммичены в\n"
-"   родительский репозиторий. Mercurial записывает состояния вложенных\n"
-"   репозиториев автоматичски при коммите в родительский репозиторий."
+"   подхранилищ до состояния, в котором они были зафиксированы в\n"
+"   родительское хранилище. Mercurial записывает состояния вложенных\n"
+"   хранилищ автоматически при фиксации родительского хранилища."
 
 msgid ""
 "   .. note::\n"
@@ -16311,8 +19338,8 @@
 "----------------------"
 msgstr ""
 "\n"
-"Добавление субрепозитория\n"
-"-------------------------"
+"Добавление подхранилища\n"
+"-----------------------"
 
 msgid ""
 "If ``.hgsub`` does not exist, create it and add it to the parent\n"
@@ -16323,20 +19350,20 @@
 "``.hgsubstate`` and bind it to the committed changeset."
 msgstr ""
 "Если файл ``.hgsub`` не существует, создайте его и добавьте в\n"
-"родительский репозиторий. Клонируйте или извлеките внешние проекты\n"
-"в каталог, в котором они будут размещаться в родительском репозитории.\n"
-"Отредактируйте файл ``.hgsub``, добавив туда запись для субрепозитория\n"
-"как описано выше. Начиная с этого момента, этот субрепозиторий\n"
-"контролируется Mercurial, и при следующем коммите в файле ``.hgsubstate``\n"
+"родительское хранилище. Клонируйте или извлеките внешние проекты\n"
+"в каталог, в котором они будут размещаться в родительском хранилище.\n"
+"Отредактируйте файл ``.hgsub``, добавив туда запись для подхранилища\n"
+"как описано выше. Начиная с этого момента, это подхранилище\n"
+"контролируется Mercurial, и при следующей фиксации в файле ``.hgsubstate``\n"
 "будет зафиксировано его состояние и выполнена привязка к нему\n"
-"закомиченного набора изменений."
+"зафиксированного набора изменений."
 
 msgid ""
 "Synchronizing a Subrepository\n"
 "-----------------------------"
 msgstr ""
-"Синхронизация субрепозитория\n"
-"----------------------------"
+"Синхронизация подхранилища\n"
+"--------------------------"
 
 msgid ""
 "Subrepos do not automatically track the latest changeset of their\n"
@@ -16345,7 +19372,7 @@
 "developers always get a consistent set of compatible code and\n"
 "libraries when they update."
 msgstr ""
-"Субрепозитории не отслеживают автоматически изменения в их источниках.\n"
+"Подхранилища не отслеживают автоматически изменения в их источниках.\n"
 "Вместо этого они обновляются до ревизии, соответствующей ревизии,\n"
 "извлеченной уровнем выше. Это сделано для того, чтобы разработчики\n"
 "всегда имели целостный набор кода и библиотек, когда они обновляются."
@@ -16355,23 +19382,23 @@
 "subrepo at the desired revision, test in the top-level repo, then\n"
 "commit in the parent repository to record the new combination."
 msgstr ""
-"Таким образом, обновление субрепозитория необходимо выполнять вручную.\n"
-"Просто извлеките желаемую ревизию субрепозитория, протестируйте ее\n"
-"в родительском репозитории и выполните commit в родительском\n"
-"репозитории, чтобы зафиксировать новую комбинацию."
+"Таким образом, обновление подхранилища необходимо выполнять вручную.\n"
+"Просто извлеките желаемую ревизию подхранилища, протестируйте ее\n"
+"в родительском хранилище и выполните commit в родительском\n"
+"хранилище, чтобы зафиксировать новую комбинацию."
 
 msgid ""
 "Deleting a Subrepository\n"
 "------------------------"
 msgstr ""
-"Удаление субрепозитория\n"
-"-----------------------"
+"Удаление подхранилища\n"
+"---------------------"
 
 msgid ""
 "To remove a subrepository from the parent repository, delete its\n"
 "reference from ``.hgsub``, then remove its files."
 msgstr ""
-"Чтобы удалить субрепозиторий из родительского репозитория, удалите\n"
+"Чтобы удалить подхранилище из родительского хранилища, удалите\n"
 "ссылку на него из файла ``.hgsub``, после чего удалите его файлы."
 
 msgid ""
@@ -16383,64 +19410,77 @@
 
 msgid ""
 ":add: add does not recurse in subrepos unless -S/--subrepos is\n"
-"    specified. Subversion subrepositories are currently silently\n"
+"    specified.  However, if you specify the full path of a file in a\n"
+"    subrepo, it will be added even without -S/--subrepos specified.\n"
+"    Git and Subversion subrepositories are currently silently\n"
 "    ignored."
 msgstr ""
-":add: add не обрабатывает субрепозитории рекурсивно, если не указана\n"
-"    опция -S/--subrepos. Субрепозитории Subversion в настоящее\n"
-"    время молча игнорируются."
+":add: не обрабатывает подхранилища рекурсивно, если не указан ключ\n"
+"    -S/--subrepos. Однако, если вы укажете полный путь к файлу из\n"
+"    подхранилища, он будет добавлен даже без -S/--subrepos.\n"
+"    Подхранилища Git и Subversion в настоящий момент молча игнорируются."
 
 msgid ""
 ":archive: archive does not recurse in subrepositories unless\n"
 "    -S/--subrepos is specified."
 msgstr ""
-":archive: archive не обрабатывает субрепозитории рекурсивно, если\n"
+":archive: archive не обрабатывает подхранилища рекурсивно, если\n"
 "    не указана опция -S/--subrepos."
 
 msgid ""
 ":commit: commit creates a consistent snapshot of the state of the\n"
-"    entire project and its subrepositories. It does this by first\n"
-"    attempting to commit all modified subrepositories, then recording\n"
-"    their state and finally committing it in the parent\n"
-"    repository. Mercurial can be made to abort if any subrepository\n"
-"    content is modified by setting \"ui.commitsubrepos=no\" in a\n"
-"    configuration file (see :hg:`help config`)."
-msgstr ""
-":commit: commit создает целостный снисок состояния всего проекта и\n"
-"    его субрепозиториев. Она делает это сначала пытаясь закоммитить\n"
-"    все измененные субрепозитории, потом записывая из состояние,\n"
-"    после чего выполняет коммит в родительский репозиторий. Можно\n"
-"    заставить Mercurial отменять коммит, если содержимое хотя бы одного\n"
-"    субрепозиторий изменено, с помощью установки \"ui.commitsubrepos=no\"\n"
-"    в конфиге (см. :hg:`help config`)."
+"    entire project and its subrepositories. If any subrepositories\n"
+"    have been modified, Mercurial will abort.  Mercurial can be made\n"
+"    to instead commit all modified subrepositories by specifying\n"
+"    -S/--subrepos, or setting \"ui.commitsubrepos=True\" in a\n"
+"    configuration file (see :hg:`help config`).  After there are no\n"
+"    longer any modified subrepositories, it records their state and\n"
+"    finally commits it in the parent repository."
+msgstr ""
+":commit: commit создает целостный снимок состояния всего проекта и\n"
+"    его подхранилищ. Если хотя бы одно подхранилище было изменено,\n"
+"    выполнение прерывается. Можно заставить Mercurial вместо этого\n"
+"    фиксировать все измененные подхранилища с помощью -S/--subrepos\n"
+"    или настройкой \"ui.commitsubrepos=True\" в конфиге (см.\n"
+"    :hg:`help config`). После того, как измененных подхранилищ\n"
+"    не осталось, их состояние записывается и фиксируется в основном\n"
+"    хранилище."
 
 msgid ""
 ":diff: diff does not recurse in subrepos unless -S/--subrepos is\n"
 "    specified. Changes are displayed as usual, on the subrepositories\n"
-"    elements. Subversion subrepositories are currently silently\n"
-"    ignored."
-msgstr ""
-":diff: diff не обрабатывает субрепозитории рекурсивно, если не указана\n"
-"    опция -S/--subrepos. Различия отображаются как обычно для элементов    "
-"субрепозиториев. Репозитории Subversion в настоящее время молча\n"
+"    elements. Git and Subversion subrepositories are currently\n"
+"    silently ignored."
+msgstr ""
+":diff: diff не обрабатывает подхранилища рекурсивно, если не указана\n"
+"    опция -S/--subrepos. Различия отображаются как обычно для элементов\n"
+"    подхранилищ. Хранилища Subversion в настоящее время молча\n"
 "    игнорируются."
 
 msgid ""
+":forget: forget currently only handles exact file matches in subrepos.\n"
+"    Git and Subversion subrepositories are currently silently ignored."
+msgstr ""
+":forget: forget в настоящее время обрабатывает только точные совпадения\n"
+"    имен файлов в подхранилищах. Хранилища Subversion в настоящее время\n"
+"    молча игнорируются."
+
+msgid ""
 ":incoming: incoming does not recurse in subrepos unless -S/--subrepos\n"
-"    is specified. Subversion subrepositories are currently silently\n"
-"    ignored."
-msgstr ""
-":incoming: incoming не обрабатывает субрепозитории рекурсивно, если\n"
-"    не указана опция -S/--subrepos. Субрепозитории Subversion в\n"
+"    is specified. Git and Subversion subrepositories are currently\n"
+"    silently ignored."
+msgstr ""
+":incoming: incoming не обрабатывает подхранилища рекурсивно, если\n"
+"    не указан параметр -S/--subrepos. Подхранилища Subversion в\n"
 "    настоящее время молча игнорируются."
 
 msgid ""
 ":outgoing: outgoing does not recurse in subrepos unless -S/--subrepos\n"
-"    is specified. Subversion subrepositories are currently silently\n"
-"    ignored."
-msgstr ""
-":outgoing: outgoing не обрабатывает субрепозитории рекурсивно, если\n"
-"    не указана опция -S/--subrepos. Субрепозитории Subversion в\n"
+"    is specified. Git and Subversion subrepositories are currently\n"
+"    silently ignored."
+msgstr ""
+":outgoing: outgoing не обрабатывает подхранилища рекурсивно, если\n"
+"    не указан параметр -S/--subrepos. Подхранилища Subversion в\n"
 "    настоящее время молча игнорируются."
 
 msgid ""
@@ -16450,22 +19490,23 @@
 "    changesets is expensive at best, impossible in the Subversion\n"
 "    case."
 msgstr ""
-":pull: pull не обрабатывает субрепозитории рекурсивно, т.к. до\n"
-"    выполнения :hg:`update` не ясно, что подтягивать. Перечисление и\n"
-"    передача изменений во всех субрепозиториях, на которые ссылаются\n"
-"    подтянуютые ревизии родительского репозитория в лучшем случае\n"
-"    дорого, и вообще не возможно в случае Subversion."
+":pull: pull не обрабатывает подхранилища рекурсивно, т.к. до\n"
+"    выполнения :hg:`update` не ясно, что затягивать. Перечисление и\n"
+"    передача изменений во всех подхранилищах, на которые ссылаются\n"
+"    затянутые ревизии родительского хранилища в лучшем случае\n"
+"    дорого, либо вообще невозможно в случае с Subversion."
 
 msgid ""
 ":push: Mercurial will automatically push all subrepositories first\n"
 "    when the parent repository is being pushed. This ensures new\n"
 "    subrepository changes are available when referenced by top-level\n"
-"    repositories."
-msgstr ""
-":push: Mercurial автоматически выполняет push для всех субрепозиториев\n"
-"    при выполнении push для родительского репозитория. Это позволяет\n"
-"    быть уверенным, что новые изменения в субрепозиториях будут доступны,\n"
-"    когда на них ссылаются репозиторие уровнем выше."
+"    repositories.  Push is a no-op for Subversion subrepositories."
+msgstr ""
+":push: Mercurial автоматически выполняет push сначала для всех подхранилищ\n"
+"    при выполнении push для родительского хранилища. Это позволяет\n"
+"    быть уверенным, что новые изменения в подхранилищах будут доступны,\n"
+"    когда на них ссылаются хранилища уровнем выше. Push не делает ничего\n"
+"    для подхранилищ Subversion."
 
 msgid ""
 ":status: status does not recurse into subrepositories unless\n"
@@ -16474,10 +19515,10 @@
 "    elements. Subversion subrepositories are currently silently\n"
 "    ignored."
 msgstr ""
-":status: status по умолчанию не обрабатывает субрепозитории рекурсивно,\n"
-"    если не указан -S/--subrepos. Изменения в субрепозиториях\n"
-"    отображаются как обычные изменения в элементах субрепозитория.\n"
-"    Репозитории Subversion в настоящее время молча игнорируются."
+":status: status по умолчанию не обрабатывает подхранилища рекурсивно,\n"
+"    если не указан -S/--subrepos. Изменения в подхранилищах\n"
+"    отображаются как обычные изменения в элементах подхранилища.\n"
+"    Хранилища Subversion в настоящее время молча игнорируются."
 
 msgid ""
 ":update: update restores the subrepos in the state they were\n"
@@ -16486,18 +19527,18 @@
 "    will pull it in first before updating.  This means that updating\n"
 "    can require network access when using subrepositories."
 msgstr ""
-":update: update восстанавливает субрепозитории до состояния,\n"
-"    в котором они были закоммичены в целевой ревизии. Если\n"
-"    записанная ревизия недоступна, Mercurial сначала подтянет\n"
+":update: update восстанавливает подхранилища до состояния,\n"
+"    в котором они были зафиксированы в целевой ревизии. Если\n"
+"    записанная ревизия недоступна, Mercurial сначала затянет\n"
 "    ее до обновления. Это значит, что обновление может потребовать\n"
-"    доступа к сети при использовании субрепозиториев."
+"    доступа к сети при использовании подхранилищ."
 
 msgid ""
 "Remapping Subrepositories Sources\n"
 "---------------------------------"
 msgstr ""
-"Переназначение источников субрепозиториев\n"
-"-----------------------------------------"
+"Переназначение источников подхранилищ\n"
+"-------------------------------------"
 
 msgid ""
 "A subrepository source location may change during a project life,\n"
@@ -16506,11 +19547,11 @@
 "file or in Mercurial configuration. See the ``[subpaths]`` section in\n"
 "hgrc(5) for more details."
 msgstr ""
-"Местоположение источников субрепозиториев может меняться в течение\n"
+"Местоположение источников подхранилищ может меняться в течение\n"
 "жизни проекта, делая ссылки, хранящиеся в истории родительского\n"
-"репозитория, некорректными. Чтобы исправить это, можно определить\n"
-"правила переназначения в файле ``hgrc`` родительского репозитория\n"
-"или в конфиге Mercurial. Подробенее см. секцию ``[subpaths]``."
+"хранилища, некорректными. Чтобы исправить это, можно определить\n"
+"правила переназначения в файле ``hgrc`` родительского хранилища\n"
+"или в конфиге Mercurial. Подробнее см. секцию ``[subpaths]``."
 
 msgid ""
 "Mercurial allows you to customize output of commands through\n"
@@ -16536,11 +19577,11 @@
 "Usage::"
 msgstr ""
 "С Mercurial поставляются четыре стиля: стиль по умолчанию (используется,\n"
-"когда другой стиль явно указан), compact, changelog и xml.\n"
+"когда другой стиль явно не указан), compact, changelog и xml.\n"
 "Использование::"
 
 msgid "    $ hg log -r1 --style changelog"
-msgstr ""
+msgstr "    $ hg log -r1 --style changelog"
 
 msgid ""
 "A template is a piece of text, with markup to invoke variable\n"
@@ -16553,6 +19594,8 @@
 "    $ hg log -r1 --template \"{node}\\n\"\n"
 "    b56ce7b07c52de7d5fd79fb89701ea538af65746"
 msgstr ""
+"    $ hg log -r1 --template \"{node}\\n\"\n"
+"    b56ce7b07c52de7d5fd79fb89701ea538af65746"
 
 msgid ""
 "Strings in curly braces are called keywords. The availability of\n"
@@ -16565,7 +19608,7 @@
 "команд, похожих на log:"
 
 msgid ".. keywordsmarker"
-msgstr ""
+msgstr ".. keywordsmarker"
 
 msgid ""
 "The \"date\" keyword does not produce human-readable output. If you\n"
@@ -16588,12 +19631,14 @@
 "   $ hg tip --template \"{date|isodate}\\n\"\n"
 "   2008-08-21 18:22 +0000"
 msgstr ""
+"   $ hg tip --template \"{date|isodate}\\n\"\n"
+"   2008-08-21 18:22 +0000"
 
 msgid "List of filters:"
 msgstr "Список фильтров (вход, описание):"
 
 msgid ".. filtersmarker\n"
-msgstr ""
+msgstr ".. filtersmarker\n"
 
 msgid "Valid URLs are of the form::"
 msgstr "Возможные следующие формы URL::"
@@ -16605,24 +19650,29 @@
 "  https://[user[:pass]@]host[:port]/[path][#revision]\n"
 "  ssh://[user@]host[:port]/[path][#revision]"
 msgstr ""
+"  путь/к/локальному/файлу[#ревизия]\n"
+"  file://путь/к/локальному/файлу[#ревизия]\n"
+"  http://[пользователь[:пароль]@]хост[:порт]/[путь][#ревизия]\n"
+"  https://[пользователь[:пароль]@]хост[:порт]/[путь][#ревизия]\n"
+"  ssh://[пользователь@]хост[:порт]/[путь][#ревизия]"
 
 msgid ""
 "Paths in the local filesystem can either point to Mercurial\n"
 "repositories or to bundle files (as created by :hg:`bundle` or :hg:`\n"
 "incoming --bundle`). See also :hg:`help paths`."
 msgstr ""
-"Пути в локальной файловой системе могут указывать на репозитории\n"
-"Mercurial или на файлы бандлов (созданных с помощью :hg:`bundle` или\n"
-":hg:`incoming --bundle`). См. также :hg:`help paths`."
+"Пути в локальной файловой системе могут указывать на хранилища\n"
+"Mercurial или на файлы комплектов (bundle) (созданных с помощью\n"
+":hg:`bundle` или :hg:`incoming --bundle`). См. также :hg:`help paths`."
 
 msgid ""
 "An optional identifier after # indicates a particular branch, tag, or\n"
 "changeset to use from the remote repository. See also :hg:`help\n"
 "revisions`."
 msgstr ""
-"Необязательный идентификатор после # указывает конкретную ветвь, метку\n"
-"или набор изменений, которую следует использовать из удаленного\n"
-"репозитория. См. также :hg:`help revisions`."
+"Необязательный идентификатор после # указывает конкретную ветку, метку\n"
+"или набор изменений, которую следует использовать из отдалённого\n"
+"хранилища. См. также :hg:`help revisions`."
 
 msgid ""
 "Some features, such as pushing to http:// and https:// URLs are only\n"
@@ -16630,7 +19680,7 @@
 "server."
 msgstr ""
 "Некоторые функции, такие как выполнение push по URL вида http://\n"
-"и https://, доступны только если эти функции явно включены на удаленном\n"
+"и https://, доступны только если эти функции явно включены на отдалённом\n"
 "сервере Mercurial."
 
 msgid ""
@@ -16638,7 +19688,7 @@
 "web.cacerts."
 msgstr ""
 "Обратите внимание, что безопасность работы с URL HTTPS зависит от\n"
-"правильноых настроек в web.cacerts."
+"правильных настроек в web.cacerts."
 
 msgid "Some notes about using SSH with Mercurial:"
 msgstr "Замечания относительно использования Mercurial по SSH:"
@@ -16649,15 +19699,15 @@
 "- path is relative to the remote user's home directory by default. Use\n"
 "  an extra slash at the start of a path to specify an absolute path::"
 msgstr ""
-"- SSH требует доступного пользовательского аккаунта на удаленной\n"
+"- SSH требует доступного пользовательского аккаунта на отдалённой\n"
 "  машине и доступного исполняемого файла Mercurial (hg) по известным\n"
-"  на удаленной машине путям, либо заданного через remotecmd.\n"
-"- пути по умолчанию задаются относительно домашнего каталога удаленного\n"
+"  на отдалённой машине путям, либо заданного через remotecmd.\n"
+"- пути по умолчанию задаются относительно домашнего каталога отдалённого\n"
 "  пользователя. Используйте дополнительный слэш в начале пути, чтобы\n"
 "  задать абсолютный путь::"
 
 msgid "    ssh://example.com//tmp/repository"
-msgstr ""
+msgstr "    ssh://example.com//tmp/repository"
 
 msgid ""
 "- Mercurial doesn't use its own compression via SSH; the right thing\n"
@@ -16672,6 +19722,10 @@
 "    Host *\n"
 "      Compression yes"
 msgstr ""
+"    Host *.mylocalnetwork.example.com\n"
+"      Compression no\n"
+"    Host *\n"
+"      Compression yes"
 
 msgid ""
 "  Alternatively specify \"ssh -C\" as your ssh command in your\n"
@@ -16722,9 +19776,9 @@
 "  pull-like commands (including incoming and outgoing)."
 msgstr ""
 "default:\n"
-"  Когда вы создаете репозиторий с помощью hg clone, команда clone\n"
+"  Когда вы создаете хранилище с помощью hg clone, команда clone\n"
 "  сохраняет адрес источника в качестве пути 'default' для нового\n"
-"  репозитория. Он используется, если вы опускаете путь в командах\n"
+"  хранилища. Он используется, если вы опускаете путь в командах\n"
 "  вроде push и pull (т.ч. incoming и outgoing)."
 
 msgid ""
@@ -16736,171 +19790,181 @@
 "  Команда push сначала ищет путь с именем `default-push` и предпочтет\n"
 "  использовать его вместо 'default', если оба определены.\n"
 
+#, fuzzy
 msgid "remote branch lookup not supported"
-msgstr ""
-
+msgstr "поиск отдаленных веток не поддерживается"
+
+#, fuzzy
 msgid "dirstate branch not accessible"
-msgstr ""
+msgstr "нет доступа к ветке с dirstate"
 
 #, python-format
 msgid "unknown branch '%s'"
-msgstr ""
+msgstr "неизвестная ветка '%s'"
 
 msgid "can only share local repositories"
-msgstr ""
+msgstr "совместный доступ поддерживается только для локальных хранилищ"
 
 msgid "destination already exists"
-msgstr ""
+msgstr "путь назначения уже существует"
 
 msgid "updating working directory\n"
-msgstr ""
+msgstr "обновляем рабочий каталог\n"
 
 #, python-format
 msgid "destination directory: %s\n"
-msgstr ""
+msgstr "каталог назначения: %s\n"
 
 #, python-format
 msgid "destination '%s' already exists"
-msgstr ""
+msgstr "путь назначения '%s' уже существует"
 
 #, python-format
 msgid "destination '%s' is not empty"
-msgstr ""
+msgstr "назначение '%s' не пусто"
 
 msgid ""
 "src repository does not support revision lookup and so doesn't support clone "
 "by revision"
 msgstr ""
+"хранилище-источник не поддерживает поиск ревизий, так что невозможно\n"
+"и клонирование по ревизии."
 
 msgid "clone from remote to remote not supported"
-msgstr ""
+msgstr "клонирование с отдаленной машины на отдаленную не поддерживается"
 
 #, python-format
 msgid "updating to branch %s\n"
-msgstr ""
+msgstr "обновляемся на ветку %s\n"
 
 #, python-format
 msgid ""
 "%d files updated, %d files merged, %d files removed, %d files unresolved\n"
 msgstr ""
+"%d файлов обновлено, %d слито, %d изъято из-под контроля, %d c конфликтами\n"
 
 msgid "use 'hg resolve' to retry unresolved file merges\n"
 msgstr ""
-
+"используйте 'hg resolve' чтобы повторить слияние файлов с конфликтами\n"
+
+#, fuzzy
 msgid ""
 "use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to "
 "abandon\n"
 msgstr ""
+"используйте 'hg resolve' чтобы повторить слияние файлов с конфликтамиили 'hg "
+"update -C .' чтобы отменить слияние\n"
 
 msgid "(branch merge, don't forget to commit)\n"
-msgstr ""
+msgstr "(слияние ветвей, не забудьте зафиксировать)\n"
 
 #, python-format
 msgid "config file %s not found!"
-msgstr ""
+msgstr "файл конфигурации %s не найден!"
 
 #, python-format
 msgid "error reading %s/.hg/hgrc: %s\n"
-msgstr ""
+msgstr "ошибка чтения %s/.hg/hgrc: %s\n"
 
 #, python-format
 msgid "error accessing repository at %s\n"
-msgstr ""
+msgstr "ошибка доступа к хранилищу по адресу %s\n"
 
 msgid "SSL support is unavailable"
-msgstr ""
+msgstr "поддержка SSL недоступна"
 
 msgid "IPv6 is not available on this system"
-msgstr ""
+msgstr "IPv6 недоступен в данной системе"
 
 #, python-format
 msgid "cannot start server at '%s:%d': %s"
-msgstr ""
+msgstr "не удается запустить сервер по адресу '%s:%d': %s"
 
 #, python-format
 msgid " %d files changed, %d insertions(+), %d deletions(-)\n"
-msgstr ""
+msgstr " %d файлов изменено, %d вставок(+), %d удалений(-)\n"
 
 #, python-format
 msgid "calling hook %s: %s\n"
-msgstr ""
+msgstr "вызов хука %s: %s\n"
 
 #, python-format
 msgid "%s hook is invalid (\"%s\" not in a module)"
-msgstr ""
+msgstr "некорректный хук %s (\"%s\" отсутствует в модуле)"
 
 msgid "exception from first failed import attempt:\n"
-msgstr ""
+msgstr "исключение при первой неудачной попытке импорта:\n"
 
 msgid "exception from second failed import attempt:\n"
-msgstr ""
+msgstr "исключение при второй неудачной попытке импорта:\n"
 
 #, python-format
 msgid "%s hook is invalid (import of \"%s\" failed)"
-msgstr ""
+msgstr "плохой хук %s (не удалось импортировать \"%s\")"
 
 #, python-format
 msgid "%s hook is invalid (\"%s\" is not defined)"
-msgstr ""
+msgstr "плохой хук %s (\"%s\" не определен)"
 
 #, python-format
 msgid "%s hook is invalid (\"%s\" is not callable)"
-msgstr ""
+msgstr "плохой хук %s (функция \"%s\" невызываема)"
 
 #, python-format
 msgid "error: %s hook failed: %s\n"
-msgstr ""
+msgstr "ошибка: хук %s завершился неудачей: %s\n"
 
 #, python-format
 msgid "error: %s hook raised an exception: %s\n"
-msgstr ""
+msgstr "ошибка: исключение в хуке %s: %s\n"
 
 #, python-format
 msgid "%s hook failed"
-msgstr ""
+msgstr "хук %s завершился неудачей"
 
 #, python-format
 msgid "warning: %s hook failed\n"
-msgstr ""
+msgstr "внимание: хук %s завершился неудачей\n"
 
 #, python-format
 msgid "running hook %s: %s\n"
-msgstr ""
-
+msgstr "запуск хука %s: %s\n"
+
+# maybe description should be in braсkets?
 #, python-format
 msgid "%s hook %s"
-msgstr ""
+msgstr "хук %s %s"
 
 #, python-format
 msgid "warning: %s hook %s\n"
-msgstr ""
+msgstr "внимание: хук %s %s\n"
 
 msgid "kb"
-msgstr ""
+msgstr "Кб"
 
 #, python-format
 msgid "ignoring invalid [auth] key '%s'\n"
-msgstr ""
+msgstr "игнорируется неверный ключ секции [auth] '%s'\n"
 
 msgid "connection ended unexpectedly"
-msgstr ""
+msgstr "соединение неожиданно прервано"
 
 #, python-format
 msgid "unsupported URL component: \"%s\""
-msgstr ""
+msgstr "неподдерживаемый элемент URL: \"%s\""
 
 msgid "operation not supported over http"
-msgstr ""
+msgstr "операция не поддерживается по http"
 
 msgid "authorization failed"
-msgstr ""
+msgstr "ошибка авторизации"
 
 msgid "http error, possibly caused by proxy setting"
-msgstr ""
+msgstr "ошибка http, возможно вызванная настройками прокси"
 
 #, python-format
 msgid "real URL is %s\n"
-msgstr ""
+msgstr "реальный URL: %s\n"
 
 #, python-format
 msgid ""
@@ -16909,414 +19973,451 @@
 "%s\n"
 "---%%<---\n"
 msgstr ""
+"'%s не похож на хранилище Mercurial:\n"
+"---%%<--- (%s)\n"
+"%s\n"
+"---%%<---\n"
 
 #, python-format
 msgid "'%s' sent a broken Content-Type header (%s)"
-msgstr ""
+msgstr "'%s' послал неверный заголовок Content-Type (%s)"
 
 #, python-format
 msgid "'%s' uses newer protocol %s"
-msgstr ""
-
-msgid "unexpected response:"
-msgstr ""
+msgstr "'%s' использует более новый протокол %s"
 
 #, python-format
 msgid "push failed: %s"
-msgstr ""
+msgstr "ошибка при проталкивании: %s"
 
 msgid "Python support for SSL and HTTPS is not installed"
-msgstr ""
+msgstr "Поддержка SSL и HTTPS для Python не установлена"
 
 msgid "cannot create new http repository"
-msgstr ""
+msgstr "не удается создать новое хранилище по http"
 
 #, python-format
 msgid "ignoring invalid syntax '%s'"
-msgstr ""
+msgstr "игнорируется неверный синтаксис '%s'"
 
 #, python-format
 msgid "skipping unreadable ignore file '%s': %s\n"
-msgstr ""
+msgstr "пропускается нечитаемый файл игнорирования '%s': %s\n"
 
 #, python-format
 msgid "repository %s not found"
-msgstr "репозиторий %s не найден"
+msgstr "хранилище %s не найдено"
 
 #, python-format
 msgid "repository %s already exists"
-msgstr ""
+msgstr "хранилище %s уже существует"
 
 #, python-format
 msgid ".hg/sharedpath points to nonexistent directory %s"
-msgstr ""
-
-#, python-format
+msgstr ".hg/sharedpath указывает на несуществующий каталог %s"
+
+#, fuzzy, python-format
 msgid "warning: ignoring unknown working parent %s!\n"
-msgstr ""
+msgstr "внимание: игнорируется неизвестный рабочий родитель %s!\n"
 
 #, python-format
 msgid "%r cannot be used in a tag name"
-msgstr ""
+msgstr "%r нельзя использовать в имени метки"
 
 #, python-format
 msgid "warning: tag %s conflicts with existing branch name\n"
-msgstr ""
+msgstr "внимание: метка %s конфликтует с существуеющим именем ветви\n"
 
 msgid "working copy of .hgtags is changed (please commit .hgtags manually)"
 msgstr ""
+"рабочая копия .hgtags изменена (пожалуйста зафиксируйте .hgtags вручную)"
 
 #, python-format
 msgid "working directory has unknown parent '%s'!"
-msgstr ""
+msgstr "рабочий каталог имеет неизвестного родителя '%s'!"
 
 #, python-format
 msgid "unknown revision '%s'"
-msgstr ""
+msgstr "неизвестная ревизия '%s'"
 
 msgid "abandoned transaction found - run hg recover"
-msgstr ""
+msgstr "обнаружена незавершенная транзакцию - воспользуйтесь hg recover"
 
 msgid "rolling back interrupted transaction\n"
-msgstr ""
+msgstr "откатываем прерванную транзакцию\n"
 
 msgid "no interrupted transaction available\n"
-msgstr ""
-
-#, python-format
+msgstr "нет прерванной транзакции\n"
+
+msgid "no rollback information available\n"
+msgstr "нет доступной информации для отката\n"
+
+#, fuzzy, python-format
 msgid "repository tip rolled back to revision %s (undo %s: %s)\n"
-msgstr ""
-
-#, python-format
+msgstr "оконечная ревизия откачена на ревизию %s (отменен %s: %s)\n"
+
+#, fuzzy, python-format
 msgid "repository tip rolled back to revision %s (undo %s)\n"
-msgstr ""
+msgstr "оконечная ревизия откачена на ревизию %s (отменен %s)\n"
 
 msgid "rolling back unknown transaction\n"
-msgstr ""
-
-#, python-format
-msgid "named branch could not be reset, current branch is still: %s\n"
-msgstr ""
+msgstr "откатываем неизвестную транзакцию\n"
+
+msgid "rollback of last commit while not checked out may lose data"
+msgstr ""
+"откат последней фиксации без извлеченной ревизии может\n"
+"привести к потере данных"
+
+msgid "use -f to force"
+msgstr "-f - выполнить принудительно"
+
+#, python-format
+msgid "named branch could not be reset: current branch is still '%s'\n"
+msgstr "именованная ветка не может быть сброшена: текущая ветка все еще '%s'\n"
 
 #, python-format
 msgid "working directory now based on revisions %d and %d\n"
-msgstr ""
+msgstr "рабочий каталог теперь основан на ревизиях %d и %d\n"
 
 #, python-format
 msgid "working directory now based on revision %d\n"
-msgstr ""
-
-msgid "no rollback information available\n"
-msgstr ""
+msgstr "рабочий каталог теперь основан на ревизии %d\n"
 
 #, python-format
 msgid "waiting for lock on %s held by %r\n"
-msgstr ""
+msgstr "ожидаем снятия блокировки %s удерживаемой %r\n"
 
 #, python-format
 msgid "repository %s"
-msgstr ""
+msgstr "хранилище %s"
 
 #, python-format
 msgid "working directory of %s"
-msgstr ""
+msgstr "рабочий каталог %s"
 
 #, python-format
 msgid "warning: can't find ancestor for '%s' copied from '%s'!\n"
-msgstr ""
+msgstr "внимание: не удается найти предка '%s' скопированного из '%s'!\n"
 
 msgid "cannot partially commit a merge (do not specify files or patterns)"
 msgstr ""
+"нельзя зафиксировать слияние частично (не указывайте файлы или шаблоны)"
 
 msgid "can't commit subrepos without .hgsub"
-msgstr ""
-
-#, python-format
-msgid "uncommitted changes in subrepo %s"
-msgstr ""
+msgstr "невозможно зафиксировать подхранилища без .hgsub"
+
+msgid "use --subrepos for recursive commit"
+msgstr "используйте --subrepos чтобы фиксировать рекурсивно"
 
 msgid "file not found!"
-msgstr ""
+msgstr "файл не найден!"
 
 msgid "no match under directory!"
-msgstr ""
+msgstr "нет совпадений в каталоге!"
 
 msgid "file not tracked!"
-msgstr ""
+msgstr "файл не отслеживается!"
 
 msgid "unresolved merge conflicts (see hg help resolve)"
-msgstr ""
+msgstr "неразрешенные конфликты слияния (см. hg help resolve)"
 
 #, python-format
 msgid "committing subrepository %s\n"
-msgstr ""
+msgstr "фиксация подхранилища %s\n"
 
 #, python-format
 msgid "note: commit message saved in %s\n"
-msgstr ""
+msgstr "сообщение фиксации сохранено в %s\n"
 
 #, python-format
 msgid "trouble committing %s!\n"
-msgstr ""
+msgstr "проблемы при фиксации %s!\n"
 
 msgid "requesting all changes\n"
-msgstr ""
+msgstr "запрашиваем все изменения\n"
 
 msgid ""
 "partial pull cannot be done because other repository doesn't support "
 "changegroupsubset."
 msgstr ""
+"частичное затягивание не может быть произведено, т.к. второе хранилище\n"
+"не поддеживает подмножества групп изменений (changegroupsubset)"
+
+# BUG
+#, python-format
+msgid "updating phase of %sto %s failed!\n"
+msgstr "фаза обновления %s до %s завершилась неудачей!\n"
 
 #, python-format
 msgid "%d changesets found\n"
-msgstr ""
+msgstr "найдено %d наборов изменений\n"
 
 msgid "bundling"
-msgstr ""
+msgstr "укомплектование (bundling)"
 
 msgid "manifests"
-msgstr ""
+msgstr "манифесты"
 
 #, python-format
 msgid "empty or missing revlog for %s"
-msgstr ""
+msgstr "пустой или отсутствующий revlog для %s"
 
 msgid "adding changesets\n"
-msgstr ""
-
+msgstr "добавляем наборы изменений\n"
+
+# форма такая?
 msgid "chunks"
-msgstr ""
+msgstr "кусков"
 
 msgid "received changelog group is empty"
-msgstr ""
+msgstr "полученная группа изменений пуста"
 
 msgid "adding manifests\n"
-msgstr ""
+msgstr "добавляем манифесты\n"
 
 msgid "adding file changes\n"
-msgstr ""
-
+msgstr "добавляем изменения в файлы\n"
+
+#, fuzzy
 msgid "received file revlog group is empty"
-msgstr ""
-
-#, python-format
+msgstr "полученная группа revlog файла пуста"
+
+#, fuzzy, python-format
 msgid "missing file data for %s:%s - run hg verify"
-msgstr ""
+msgstr "отсутствуют данные файлов для %s:%s - выполните hg verify"
 
 #, python-format
 msgid " (%+d heads)"
-msgstr ""
+msgstr " (%+d голов)"
 
 #, python-format
 msgid "added %d changesets with %d changes to %d files%s\n"
-msgstr ""
+msgstr "добавлено %d набор(ов) изменений с %d изменениями в %d файле(-ах) %s\n"
 
 msgid "Unexpected response from remote server:"
-msgstr ""
+msgstr "Неожиданный ответ от удаленного сервера:"
 
 msgid "operation forbidden by server"
-msgstr ""
+msgstr "операция запрещена на сервере"
 
 msgid "locking the remote repository failed"
-msgstr ""
+msgstr "не удалось заблокировать отдаленное хранилище"
 
 msgid "the server sent an unknown error code"
-msgstr ""
-
+msgstr "сервер передал неизвестный код ошибки"
+
+#, fuzzy
 msgid "streaming all changes\n"
-msgstr ""
+msgstr "поточная передача всех изменений\n"
 
 #, python-format
 msgid "%d files to transfer, %s of data\n"
-msgstr ""
+msgstr "%d файлов для передачи, %s данных\n"
 
 #, python-format
 msgid "transferred %s in %.1f seconds (%s/sec)\n"
-msgstr ""
+msgstr "передано %s за %.1f секунд (%s/c)\n"
 
 msgid "can't use TLS: Python SSL support not installed"
-msgstr ""
+msgstr "не удается использовать TLS: поддержка SSL для Python не установлена"
 
 msgid "(using smtps)\n"
-msgstr ""
+msgstr "(используется smtps)\n"
 
 msgid "smtp.host not configured - cannot send mail"
-msgstr ""
+msgstr "smtp.host не настроен - невозможно отправить почту"
 
 #, python-format
 msgid "sending mail: smtp host %s, port %s\n"
-msgstr ""
+msgstr "отправка почты: smtp хоcт %s, порт %s\n"
 
 msgid "(using starttls)\n"
-msgstr ""
+msgstr "(используется starttls)\n"
 
 #, python-format
 msgid "(authenticating to mail server as %s)\n"
-msgstr ""
+msgstr "(аутентификация на почтовом сервере как %s)\n"
 
 #, python-format
 msgid "sending mail: %s\n"
-msgstr ""
+msgstr "отправка почты: %s\n"
 
 msgid "smtp specified as email transport, but no smtp host configured"
-msgstr ""
+msgstr "smtp задан в качестве транспорта email, но smtp-хост не настроен"
 
 #, python-format
 msgid "%r specified as email transport, but not in PATH"
-msgstr ""
-
-#, python-format
+msgstr "%r задан в качестве транспорта email, но он не доступен в PATH"
+
+#, fuzzy, python-format
 msgid "ignoring invalid sendcharset: %s\n"
-msgstr ""
+msgstr "игноруруется неверная кодировка исходящих писем: %s\n"
 
 #, python-format
 msgid "invalid email address: %s"
-msgstr ""
+msgstr "неверный адрес email: %s"
 
 #, python-format
 msgid "invalid local address: %s"
-msgstr ""
+msgstr "неверный локальный адрес: %s"
 
 #, python-format
 msgid "'\\n' and '\\r' disallowed in filenames: %r"
-msgstr ""
+msgstr "'\\n' и '\\r' недопустимы в именах файлов: %r"
 
 #, python-format
 msgid "failed to remove %s from manifest"
-msgstr ""
+msgstr "не удалось удалить %s из манифеста"
 
 #, python-format
 msgid "invalid pattern (%s): %s"
-msgstr ""
+msgstr "недопустимый шаблон (%s): %s"
 
 msgid "invalid pattern"
-msgstr ""
-
-#, python-format
+msgstr "недопустимый шаблон"
+
+#, fuzzy, python-format
 msgid "unable to read file list (%s)"
-msgstr ""
+msgstr "не удается прочитать список файлов (%s)"
 
 #, python-format
 msgid "diff context lines count must be an integer, not %r"
 msgstr ""
+"количество строк контекста для различий должно быть целым числом, а не %r"
 
 #, python-format
 msgid ""
 "untracked file in working directory differs from file in requested revision: "
 "'%s'"
 msgstr ""
-
-#, python-format
+"неотслеживаемый файл в рабочем каталоге отличается от файла в указанной\n"
+"ревизии: '%s'"
+
+#, fuzzy, python-format
 msgid "case-folding collision between %s and %s"
-msgstr ""
-
+msgstr "конфликт регистров букв между %s и %s"
+
+# INPUT
 #, python-format
 msgid ""
 " conflicting flags for %s\n"
 "(n)one, e(x)ec or sym(l)ink?"
 msgstr ""
 
+# INPUT
 msgid "&None"
 msgstr ""
 
+# INPUT
 msgid "E&xec"
 msgstr ""
 
+# INPUT
 msgid "Sym&link"
 msgstr ""
 
 msgid "resolving manifests\n"
 msgstr ""
 
+# INPUT
 #, python-format
 msgid ""
 " local changed %s which remote deleted\n"
 "use (c)hanged version or (d)elete?"
 msgstr ""
 
+# INPUT
 msgid "&Changed"
 msgstr ""
 
+# INPUT
 msgid "&Delete"
 msgstr ""
 
+# INPUT
 #, python-format
 msgid ""
 "remote changed %s which local deleted\n"
 "use (c)hanged version or leave (d)eleted?"
 msgstr ""
 
+# INPUT
 msgid "&Deleted"
 msgstr ""
 
 msgid "updating"
-msgstr ""
+msgstr "обновление"
 
 #, python-format
 msgid "update failed to remove %s: %s!\n"
-msgstr ""
+msgstr "не удалось удалить %s при обновлении: %s!\n"
 
 #, python-format
 msgid "getting %s\n"
-msgstr ""
+msgstr "получаем %s\n"
 
 #, python-format
 msgid "getting %s to %s\n"
-msgstr ""
+msgstr "получаем %s в %s\n"
 
 #, python-format
 msgid "note: possible conflict - %s was renamed multiple times to:\n"
-msgstr ""
+msgstr "внимание: возможен конфликт - %s был переименован несколько раз в:\n"
 
 msgid "merging with a working directory ancestor has no effect"
-msgstr ""
-
-msgid "nothing to merge (use 'hg update' or check 'hg heads')"
-msgstr ""
-
-msgid "outstanding uncommitted changes (use 'hg status' to list changes)"
-msgstr ""
+msgstr "слияние с предком рабочего каталога не имеет смысла"
+
+msgid "use 'hg update' or check 'hg heads'"
+msgstr "используйте 'hg update' или проверьте 'hg heads'"
+
+msgid "use 'hg status' to list changes"
+msgstr "используйте 'hg status' чтобы посмотреть изменения"
 
 #, python-format
 msgid "outstanding uncommitted changes in subrepository '%s'"
-msgstr ""
+msgstr "незафиксированные изменения в подхранилище %s"
 
 msgid "crosses branches (merge branches or use --clean to discard changes)"
 msgstr ""
-
+"пересекащиеся ветки (слейте ветки или используйте --clean чтобы\n"
+"отбросить изменения)"
+
+# BUG
 msgid "crosses branches (merge branches or update --check to force update)"
 msgstr ""
+"пересекащиеся ветки (слейте ветки или используйте --check чтобы\n"
+"обновиться принудительно)"
 
 msgid "Attention:"
-msgstr ""
+msgstr "Внимание:"
 
 msgid "Caution:"
-msgstr ""
+msgstr "Предостережение:"
 
 msgid "!Danger!"
-msgstr ""
+msgstr "!Опасно!"
 
 msgid "Error:"
-msgstr ""
+msgstr "Ошибка:"
 
 msgid "Hint:"
-msgstr ""
+msgstr "Подсказка:"
 
 msgid "Important:"
-msgstr ""
+msgstr "Важно:"
 
 msgid "Note:"
 msgstr "Примечание:"
 
 msgid "Tip:"
-msgstr ""
+msgstr "Подсказка:"
 
 msgid "Warning!"
-msgstr ""
+msgstr "Внимание!"
 
 #, python-format
 msgid "unexpected token: %s"
-msgstr ""
+msgstr "неожиданный символ (token): %s"
 
 #, python-format
 msgid "not a prefix: %s"
@@ -17329,14 +20430,16 @@
 #, python-format
 msgid "%d out of %d hunks FAILED -- saving rejects to file %s\n"
 msgstr ""
+"%d из %d лоскутов (hunks) НЕ НАЛОЖИЛИСЬ -- сохраняем неналоженные\n"
+"лоскуты в файл %s\n"
 
 #, python-format
 msgid "cannot patch %s: file is not tracked"
-msgstr "не могу пропатчить %s: файл не контролируется"
+msgstr "не могу пропатчить %s: файл не отслеживается"
 
 #, python-format
 msgid "unable to find '%s' for patching\n"
-msgstr ""
+msgstr "не удается найти '%s' для наложения патча\n"
 
 #, python-format
 msgid "patching file %s\n"
@@ -17344,11 +20447,11 @@
 
 #, python-format
 msgid "bad hunk #%d %s (%d %d %d %d)"
-msgstr "плохая полоса #%d %s (%d %d %d %d)"
+msgstr "плохой лоскут (hunk) #%d %s (%d %d %d %d)"
 
 #, python-format
 msgid "cannot create %s: destination already exists\n"
-msgstr "не могу создаеть %s: файл уже существует\n"
+msgstr "не могу создать %s: файл уже существует\n"
 
 #, python-format
 msgid "file %s already exists\n"
@@ -17357,133 +20460,139 @@
 #, python-format
 msgid "Hunk #%d succeeded at %d with fuzz %d (offset %d lines).\n"
 msgstr ""
-"Полоса #%d была успешной для %d с погрешностью %d (смещение %d строк).\n"
+"Лоскут (hunk) #%d был успешно наложен в позиции %d с погрешностью %d\n"
+"(смещение %d строк).\n"
 
 #, python-format
 msgid "Hunk #%d succeeded at %d (offset %d lines).\n"
-msgstr "Полоса #%d была успешной для %d (смещение %d строк).\n"
+msgstr "Лоскут (hunk) #%d успешно наложен в позиции %d (смещение %d строк).\n"
 
 #, python-format
 msgid "Hunk #%d FAILED at %d\n"
-msgstr "Полоса #%d НЕУДАЧНА для %d\n"
+msgstr "Лоскут (hunk) #%d НЕ НАЛОЖЕН в позиции %d\n"
 
 #, python-format
 msgid "bad hunk #%d"
-msgstr "плохая полоса #%d"
+msgstr "плохой лоскут (hunk) #%d"
 
 #, python-format
 msgid "bad hunk #%d old text line %d"
 msgstr "плохая полоса #%d старая строка текста %d"
 
 msgid "could not extract binary patch"
-msgstr "невозможно извлечь двоичную заплатку"
+msgstr "невозможно извлечь двоичный патч"
 
 #, python-format
 msgid "binary patch is %d bytes, not %d"
-msgstr "двоичный патч иммеет размер %d байтов, а не %d"
+msgstr "двоичный патч имеет размер %d байт, а не %d"
 
 #, python-format
 msgid "unable to strip away %d of %d dirs from %s"
-msgstr ""
+msgstr "не удается вырезать %d из %d каталогов из %s"
 
 msgid "undefined source and destination files"
-msgstr ""
+msgstr "не определены исходный и конечный файлы"
 
 #, python-format
 msgid "cannot create %s: destination already exists"
-msgstr ""
+msgstr "не удается создать %s: назначение уже существует"
 
 #, python-format
 msgid "unsupported parser state: %s"
-msgstr ""
+msgstr "неподдерживаемое состояние парсера: %s"
 
 #, python-format
 msgid "patch command failed: %s"
-msgstr ""
+msgstr "команда patch завершилась неудачей: %s"
 
 #, python-format
 msgid "unsupported line endings type: %s"
-msgstr ""
+msgstr "неподдерживаемый тип перевода строки: %s"
 
 msgid "patch failed to apply"
+msgstr "не уадлось наложить патч"
+
+#, python-format
+msgid "Removing unknown node %(n)s from %(p)i-phase boundary"
 msgstr ""
 
 #, python-format
 msgid "exited with status %d"
-msgstr ""
+msgstr "выход с кодом %d"
 
 #, python-format
 msgid "killed by signal %d"
-msgstr ""
+msgstr "завершен получением сигнала %d"
 
 #, python-format
 msgid "saved backup bundle to %s\n"
-msgstr ""
+msgstr "резервный комплект (backup bundle) сохранен в %s\n"
 
 msgid "adding branch\n"
-msgstr ""
+msgstr "добавляется ветка\n"
 
 #, python-format
 msgid "strip failed, full bundle stored in '%s'\n"
-msgstr ""
+msgstr "strip не удался, полный комплект (bundle) сохранен в '%s'\n"
 
 #, python-format
 msgid "strip failed, partial bundle stored in '%s'\n"
-msgstr ""
+msgstr "strip не удался, частичный комплект (bundle) сохранен в '%s'\n"
 
 #, python-format
 msgid "cannot %s; remote repository does not support the %r capability"
-msgstr ""
+msgstr "%s не возможно; отдаленное хранилище не поддерживает возможность %r"
 
 #, python-format
 msgid "unknown compression type %r"
-msgstr ""
+msgstr "неизвестный тип сжатия %r"
 
 msgid "index entry flags need RevlogNG"
-msgstr ""
+msgstr "флаги записи индекса требуют RevlogNG"
 
 #, python-format
 msgid "index %s unknown flags %#04x for format v0"
-msgstr ""
+msgstr "индекс %s содержит неизвестные флаги %#04x для формата v0"
 
 #, python-format
 msgid "index %s unknown flags %#04x for revlogng"
-msgstr ""
+msgstr "индекс %s содержит неизвестные флаги %#04x для revlogng"
 
 #, python-format
 msgid "index %s unknown format %d"
-msgstr ""
+msgstr "индекс %s имеет неизвестный формат %d"
 
 #, python-format
 msgid "index %s is corrupted"
-msgstr ""
+msgstr "индекс %s поврежден"
 
 msgid "no node"
-msgstr ""
+msgstr "нет узла"
 
 msgid "ambiguous identifier"
-msgstr ""
+msgstr "неоднозначный идентификатор"
 
 msgid "no match found"
-msgstr ""
+msgstr "совпадений не найдено"
 
 #, python-format
 msgid "incompatible revision flag %x"
-msgstr ""
+msgstr "несовместимый флаг ревизии %x"
 
 #, python-format
 msgid "%s not found in the transaction"
-msgstr ""
+msgstr "%s не найден в транзакции"
 
 msgid "consistency error in delta"
-msgstr ""
+msgstr "ошибка целостности в дельте"
 
 msgid "unknown delta base"
-msgstr ""
-
+msgstr "неизвестная основа (base) дельты"
+
+# {{{ revsets
 #, python-format
 msgid "can't use %s here"
-msgstr ""
+msgstr "невозможно использовать %s здесь"
 
 msgid ""
 "``adds(pattern)``\n"
@@ -17525,16 +20634,22 @@
 msgstr ""
 
 msgid ""
-"``bisected(string)``\n"
-"    Changesets marked in the specified bisect state (good, bad, skip)."
+"``bisect(string)``\n"
+"    Changesets marked in the specified bisect status:"
+msgstr ""
+
+msgid ""
+"    - ``good``, ``bad``, ``skip``: csets explicitly marked as good/bad/skip\n"
+"    - ``goods``, ``bads``      : csets topologicaly good/bad\n"
+"    - ``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 ""
 
 msgid "bisect requires a string"
 msgstr ""
 
-msgid "invalid bisect state"
-msgstr ""
-
 msgid ""
 "``bookmark([name])``\n"
 "    The named bookmark or all bookmarks."
@@ -17611,6 +20726,11 @@
 msgstr ""
 
 msgid ""
+"``first(set, [n])``\n"
+"    An alias for limit()."
+msgstr ""
+
+msgid ""
 "``follow([file])``\n"
 "    An alias for ``::.`` (ancestors of the working copy's first parent).\n"
 "    If a filename is specified, the history of the given file is followed,\n"
@@ -17621,9 +20741,8 @@
 msgid "follow takes no arguments or a filename"
 msgstr "follow не принимает аргументов или имени файла"
 
-#, fuzzy
 msgid "follow expected a filename"
-msgstr "писать имя файла"
+msgstr "follow ожидает имя файла"
 
 #. i18n: "follow" is a keyword
 msgid "follow takes no arguments"
@@ -17687,13 +20806,13 @@
 msgstr ""
 
 msgid ""
-"``limit(set, n)``\n"
-"    First n members of set."
+"``limit(set, [n])``\n"
+"    First n members of set, defaulting to 1."
 msgstr ""
 
 #. i18n: "limit" is a keyword
-msgid "limit requires two arguments"
-msgstr ""
+msgid "limit requires one or two arguments"
+msgstr "limit требует один или два аргумента"
 
 #. i18n: "limit" is a keyword
 msgid "limit requires a number"
@@ -17704,13 +20823,13 @@
 msgstr ""
 
 msgid ""
-"``last(set, n)``\n"
-"    Last n members of set."
+"``last(set, [n])``\n"
+"    Last n members of set, defaulting to 1."
 msgstr ""
 
 #. i18n: "last" is a keyword
-msgid "last requires two arguments"
-msgstr ""
+msgid "last requires one or two arguments"
+msgstr "last требует один или два аргумента"
 
 #. i18n: "last" is a keyword
 msgid "last requires a number"
@@ -17768,9 +20887,8 @@
 msgstr ""
 
 #. i18n: "outgoing" is a keyword
-#, fuzzy
 msgid "outgoing takes one or no arguments"
-msgstr "unknown не требует аргументов"
+msgstr "outgoing требует либо один аргумент, либо ни одного"
 
 #. i18n: "outgoing" is a keyword
 msgid "outgoing requires a repository path"
@@ -17896,198 +21014,229 @@
 msgid "empty query"
 msgstr ""
 
+# }}} revsets
 #, python-format
 msgid "ui.portablefilenames value is invalid ('%s')"
-msgstr ""
-
-#, python-format
+msgstr "недопустимое значение ui.portablefilenames ('%s')"
+
+#, fuzzy, python-format
 msgid "possible case-folding collision for %s"
-msgstr ""
+msgstr "возможен конфликт при свертке регистра букв в %s"
 
 #, python-format
 msgid "path ends in directory separator: %s"
-msgstr ""
+msgstr "путь заканчивается разделителем каталогов: %s"
 
 #, python-format
 msgid "path contains illegal component: %s"
-msgstr ""
-
-#, python-format
-msgid "path %r is inside nested repo %r"
-msgstr ""
+msgstr "путь содержит недопустимый компонент: %s"
+
+#, python-format
+msgid "path '%s' is inside nested repo %r"
+msgstr "путь '%s' находится внутри вложенного хранилища %r"
 
 #, python-format
 msgid "path %r traverses symbolic link %r"
 msgstr ""
 
+# BUG?
 #, python-format
 msgid "could not symlink to %r: %s"
-msgstr ""
+msgstr "не удается создать символическую ссылку на %r: %s"
 
 #, python-format
 msgid "recording removal of %s as rename to %s (%d%% similar)\n"
-msgstr ""
+msgstr "удаление %s записывается как переименование в %s (похожесть %d%%)\n"
 
 #, python-format
 msgid "%s has not been committed yet, so no copy data will be stored for %s.\n"
 msgstr ""
+"%s еще не был зафиксирован, так что для %s не будет сохранена информация\n"
+"о копировании.\n"
 
 msgid ".hg/requires file is corrupt"
-msgstr ""
+msgstr "файл .hg/requires поврежден"
 
 #, python-format
 msgid "unknown repository format: requires features '%s' (upgrade Mercurial)"
 msgstr ""
+"неизвестный формат хранилища: требуется возможность '%s' (обновите Mercurial)"
 
 msgid "searching for changes\n"
-msgstr ""
-
+msgstr "поиск изменений\n"
+
+msgid "all local heads known remotely\n"
+msgstr "все локальные головы известны на отдаленной стороне\n"
+
+#, fuzzy
+msgid "sampling from both directions\n"
+msgstr "выборка из обоих направлений\n"
+
+#, fuzzy
+# такая фома?
 msgid "queries"
-msgstr ""
+msgstr "запросов"
 
 msgid "searching"
-msgstr ""
-
+msgstr "поиск"
+
+# плохо
 msgid "repository is unrelated"
-msgstr ""
-
+msgstr "хранилище не связано с текущим"
+
+# плохо
 msgid "warning: repository is unrelated\n"
-msgstr ""
+msgstr "внимание: хранилище не связано с текущим\n"
 
 msgid "searching for exact renames"
-msgstr ""
+msgstr "поиск однозначных переименований"
 
 msgid "searching for similar files"
-msgstr ""
+msgstr "поиск похожих файлов"
 
 #, python-format
 msgid "%s looks like a binary file."
-msgstr ""
+msgstr "%s, похоже, является бинарным файлом."
 
 msgid "can only specify two labels."
-msgstr ""
+msgstr "можно указывать только две метки (labels)."
 
 msgid "warning: conflicts during merge.\n"
-msgstr ""
+msgstr "внимание: конфликт при слиянии.\n"
 
 #, python-format
 msgid "couldn't parse location %s"
-msgstr ""
+msgstr "не удается разобрать расположение %s"
 
 msgid "password in URL not supported"
-msgstr ""
+msgstr "пароль в URL не поддерживается"
 
 msgid "could not create remote repo"
-msgstr ""
+msgstr "не удается создать отдаленное хранилище"
 
 msgid "no suitable response from remote hg"
-msgstr ""
-
+msgstr "не получено подходящего ответа от отдаленного hg"
+
+#, fuzzy
 msgid "remote: "
-msgstr ""
+msgstr "отдалённо: "
 
 #, python-format
 msgid "push refused: %s"
-msgstr ""
+msgstr "push отклонен: %s"
+
+msgid "Python SSL support not found"
+msgstr "Не найдена поддержка SSL для Python"
 
 msgid "certificate checking requires Python 2.6"
-msgstr ""
+msgstr "для проверки сертификата требуется Python 2.6"
 
 msgid "no certificate received"
-msgstr ""
+msgstr "сертификатов не получено"
 
 #, python-format
 msgid "certificate is for %s"
-msgstr ""
+msgstr "сертификат для %s"
 
 msgid "IDN in certificate not supported"
-msgstr ""
+msgstr "IDN в сертификате не поддерживается"
 
 msgid "no commonName or subjectAltName found in certificate"
-msgstr ""
+msgstr "в сертификате не найден commonName или subjectAltName"
 
 #, python-format
 msgid "could not find web.cacerts: %s"
-msgstr ""
+msgstr "не найден web.cacerts: %s"
 
 #, python-format
 msgid "%s certificate error: %s (use --insecure to connect insecurely)"
 msgstr ""
+"ошибка сертификата %s: %s (используйте --insecure для небезопасного "
+"подключения)"
 
 #, python-format
 msgid "invalid certificate for %s with fingerprint %s"
-msgstr ""
+msgstr "недействительный сертификат для %s с отпечатком %s"
 
 #, python-format
 msgid ""
 "warning: %s certificate with fingerprint %s not verified (check "
 "hostfingerprints or web.cacerts config setting)\n"
 msgstr ""
+"внимание: сертификат %s c отпечатком %s не проверен (проверьте параметры\n"
+"конфигурации hostfingerprints или web.cacerts)\n"
 
 #, python-format
 msgid "host fingerprint for %s can't be verified (Python too old)"
-msgstr ""
+msgstr "отпечаток хоста %s не может быть проверен (Python слишком старый)"
 
 #, python-format
 msgid "warning: certificate for %s can't be verified (Python too old)\n"
 msgstr ""
+"внимание: сертификат %s не может быть проверен (Python слишком старый)\n"
 
 #, python-format
 msgid "'%s' does not appear to be an hg repository"
-msgstr ""
+msgstr "'%s' не похож на хранилище Mercurial"
 
 msgid "cannot lock static-http repository"
-msgstr ""
+msgstr "не удается заблокировать статическое http-хранилище"
 
 msgid "cannot create new static-http repository"
-msgstr ""
+msgstr "не удается создать новое статическое http-хранилище"
 
 #, python-format
 msgid "invalid entry in fncache, line %s"
-msgstr ""
+msgstr "некорректная запись в fncache, строка %s"
 
 #, python-format
 msgid "warning: subrepo spec file %s not found\n"
-msgstr ""
+msgstr "внимание: файл спецификации подхранилища %s не найден\n"
 
 #, python-format
 msgid "subrepo spec file %s not found"
-msgstr ""
-
-msgid "missing ] in subrepo source"
-msgstr ""
+msgstr "файл спецификации подхранилища %s не найден"
 
 #, python-format
 msgid "bad subrepository pattern in %s: %s"
-msgstr ""
-
+msgstr "некорректный шаблон подхранилища в %s: %s"
+
+msgid "missing ] in subrepo source"
+msgstr "не хватает ] в источнике подхранилища"
+
+# INPUT
 #, python-format
 msgid ""
 " subrepository sources for %s differ\n"
 "use (l)ocal source (%s) or (r)emote source (%s)?"
 msgstr ""
 
+# INPUT
 msgid "&Remote"
 msgstr ""
 
+# INPUT
 #, python-format
 msgid ""
 " local changed subrepository %s which remote removed\n"
 "use (c)hanged version or (d)elete?"
 msgstr ""
 
+# INPUT
 #, python-format
 msgid ""
 " remote changed subrepository %s which local removed\n"
 "use (c)hanged version or (d)elete?"
 msgstr ""
 
+# INPUT
 #, python-format
 msgid ""
 " subrepository sources for %s differ\n"
 "use (l)ocal source (%s) or (r)emote source (%s)?\n"
 msgstr ""
 
+# INPUT
 #, python-format
 msgid ""
 " subrepository sources for %s differ (in checked out version)\n"
@@ -18096,88 +21245,97 @@
 
 #, python-format
 msgid "default path for subrepository %s not found"
-msgstr ""
+msgstr "путь по умолчанию для подхранилища %s не найден"
 
 #, python-format
 msgid "unknown subrepo type %s"
-msgstr ""
+msgstr "неизвестный тип подхранилища %s"
 
 #, python-format
 msgid "archiving (%s)"
-msgstr ""
+msgstr "архивирование (%s)"
 
 #, python-format
 msgid "warning: error \"%s\" in subrepository \"%s\"\n"
-msgstr ""
+msgstr "внимание: ошибка \"%s\" в подхранилище \"%s\"\n"
 
 #, python-format
 msgid "removing subrepo %s\n"
-msgstr ""
+msgstr "удаление подхранилища %s\n"
 
 #, python-format
 msgid "cloning subrepo %s from %s\n"
-msgstr ""
+msgstr "клонирование подхранилища %s из %s\n"
 
 #, python-format
 msgid "pulling subrepo %s from %s\n"
-msgstr ""
+msgstr "затягиваем в подхранилище %s из %s\n"
 
 #, python-format
 msgid "pushing subrepo %s to %s\n"
-msgstr ""
+msgstr "проталкиваем подхранилище %s в %s\n"
+
+#, python-format
+msgid "'svn' executable not found for subrepo '%s'"
+msgstr "исполняемый файл 'svn' не найден для подхранилища '%s'"
 
 msgid "cannot retrieve svn tool version"
-msgstr ""
-
+msgstr "не удалось получить версию svn"
+
+# svn externals - имеется в виду какая-то фишка svn или "не могу закоммитить во
+# внешний репозиторий svn"?
+#, fuzzy
 msgid "cannot commit svn externals"
-msgstr ""
+msgstr "не удается зафиксировать svn externals"
 
 #, python-format
 msgid "not removing repo %s because it has changes.\n"
-msgstr ""
+msgstr "не удаляем хранилище %s, т.к. в нем имеются изменения.\n"
 
 #, python-format
 msgid "revision %s does not exist in subrepo %s\n"
-msgstr ""
+msgstr "ревизия %s не существует в подхранилище %s\n"
 
 #, python-format
 msgid "checking out detached HEAD in subrepo %s\n"
-msgstr ""
+msgstr "извлечение отделенной головной ревизии в подхранилище %s\n"
 
 msgid "check out a git branch if you intend to make changes\n"
-msgstr ""
+msgstr "извлеките ветку git, если вы планируете вносить изменения\n"
 
 #, python-format
 msgid "subrepo %s is missing"
-msgstr ""
+msgstr "отсутствует подхранилище %s"
 
 #, python-format
 msgid "unrelated git branch checked out in subrepo %s\n"
-msgstr ""
+msgstr "в подхранилище %s извлечена не связанная (unrelated) ветка git\n"
 
 #, python-format
 msgid "pushing branch %s of subrepo %s\n"
-msgstr ""
+msgstr "проталкиваем ветку %s подхранилища %s\n"
 
 #, python-format
 msgid ""
 "no branch checked out in subrepo %s\n"
 "cannot push revision %s"
 msgstr ""
+"нет извлеченной ветки в подхранилище %s\n"
+"невозможно протолкнуть ревизию %s"
 
 #, python-format
 msgid "%s, line %s: %s\n"
-msgstr ""
+msgstr "%s, строка %s: %s\n"
 
 msgid "cannot parse entry"
-msgstr ""
+msgstr "ошибка при разборе записи"
 
 #, python-format
 msgid "node '%s' is not well formed"
-msgstr ""
+msgstr "узел '%s' сформирован некорректно"
 
 msgid ".hg/cache/tags is corrupt, rebuilding it\n"
-msgstr ""
+msgstr ".hg/cache/tags поврежден, перестраиваем его\n"
 
 msgid ""
 ":addbreaks: Any text. Add an XHTML \"<br />\" tag before the end of\n"
@@ -18250,7 +21408,7 @@
 "    its long hexadecimal representation."
 msgstr ""
 ":hex: Произвольный текст. Преобразует двоичный идентификатор ревизии\n"
-"    в длинную шестнадцатиричную форму."
+"    в длинную шестнадцатеричную форму."
 
 msgid ""
 ":hgdate: Date. Returns the date as a pair of numbers: \"1157407993\n"
@@ -18312,7 +21470,19 @@
 "    i.e. a 12 hexadecimal digit string."
 msgstr ""
 ":short: Хэш набора изменений. Возвращает хэш набора изменений в\n"
-"    сокращенной форме, т.е. строку из 12 шестнадцатиричных символов."
+"    сокращенной форме, т.е. строку из 12 шестнадцатеричных символов."
+
+msgid ""
+":shortbisect: Any text. Treats `text` as a bisection status, and\n"
+"    returns a single-character representing the status (G: good, B: bad,\n"
+"    S: skipped, U: untested, I: ignored). Returns single space if `text`\n"
+"    is not a valid bisection status."
+msgstr ""
+":shortbisect: Произвольный текст. Воспринимает `текст` как статус\n"
+"    бисекции и возвращает одну букву, представляющую статус (G: good\n"
+"    (хорошая), B: bad (плохая), S: skipped (пропущена), U: untested\n"
+"    (не тестировался), I: ignored (игнорирован). Возвращает один пробел,\n"
+"    если `текст` не является корректным статусом бисекции."
 
 msgid ":shortdate: Date. Returns a date like \"2006-09-18\"."
 msgstr ":shortdate: Дата. Возвращает дату в виде \"2006-09-18\"."
@@ -18342,7 +21512,7 @@
 "    first starting with a tab character."
 msgstr ""
 ":tabindent: Произвольный текст. Возвращает текст, каждая строка\n"
-"    которго, кроме первой, начинается с символа табуляции."
+"    которого, кроме первой, начинается с символа табуляции."
 
 msgid ""
 ":urlescape: Any text. Escapes all \"special\" characters. For example,\n"
@@ -18357,18 +21527,23 @@
 msgid ":author: String. The unmodified author of the changeset."
 msgstr ":author: Строка. Неизмененный автор набора изменений."
 
+msgid ":bisect: String. The changeset bisection status."
+msgstr ""
+":bisect: Строка. Состояние поиска делением пополам (bisect) набора изменений."
+
 msgid ""
 ":branch: String. The name of the branch on which the changeset was\n"
 "    committed."
-msgstr ":branch: Строка. Имя ветви, на которую был закоммичен набор изменений."
+msgstr ""
+":branch: Строка. Имя ветки, на которую был зафиксирован набор изменений."
 
 msgid ""
 ":branches: List of strings. The name of the branch on which the\n"
 "    changeset was committed. Will be empty if the branch name was\n"
 "    default."
 msgstr ""
-":branches: Список строк. Имя ветви, на которую был закоммичен набор\n"
-"    изменений. Будет пустым, если имя ветви было default."
+":branches: Список строк. Имя ветки, на которую был зафиксирован набор\n"
+"    изменений. Будет пустым, если имя ветки было default."
 
 msgid ""
 ":bookmarks: List of strings. Any bookmarks associated with the\n"
@@ -18381,7 +21556,7 @@
 msgstr ":children: Список строк. Дочерние ревизии набора изменений."
 
 msgid ":date: Date information. The date when the changeset was committed."
-msgstr ":date: Информация о дате. Дата коммита набора изменений."
+msgstr ":date: Информация о дате. Дата фиксации набора изменений."
 
 msgid ":desc: String. The text of the changeset description."
 msgstr ":desc: Строка. Текст описания набора изменений."
@@ -18439,100 +21614,104 @@
 ":node: String. The changeset identification hash, as a 40 hexadecimal\n"
 "    digit string."
 msgstr ""
-":node: Строка. Хэш набора изменений в виде 40-значной шестнадцатиричной\n"
+":node: Строка. Хэш набора изменений в виде 40-значной шестнадцатеричной\n"
 "    строки."
 
+msgid ":rev: Integer. The changeset phase."
+msgstr ":rev: Целое число. Фаза набора изменений."
+
 msgid ":rev: Integer. The repository-local changeset revision number."
-msgstr ":rev: Целое число. Локальный номер ревизии в этом репозитории."
+msgstr ":rev: Целое число. Локальный номер ревизии в этом хранилище."
 
 msgid ":tags: List of strings. Any tags associated with the changeset."
 msgstr ":tags: Список строк. Все метки, ассоциированные с набором изменений."
 
 #, python-format
 msgid "unknown method '%s'"
-msgstr ""
+msgstr "неизвестный метод '%s'"
 
 msgid "expected a symbol"
-msgstr ""
+msgstr "ожидается символ"
 
 #, python-format
 msgid "unknown function '%s'"
-msgstr ""
+msgstr "неизвестная функция '%s'"
 
 msgid "expected template specifier"
-msgstr ""
+msgstr "ожидается спецификатор шаблона"
 
 #, python-format
 msgid "filter %s expects one argument"
-msgstr ""
+msgstr "фильтр %s требует один аргумент"
 
 msgid "unmatched quotes"
-msgstr ""
+msgstr "незакрытые кавычки"
 
 #, python-format
 msgid "style not found: %s"
-msgstr ""
-
-#, python-format
+msgstr "стиль не найден: %s"
+
+#, fuzzy, python-format
 msgid "\"%s\" not in template map"
-msgstr ""
+msgstr "\"%s\" не в отображении шаблона"
 
 #, python-format
 msgid "template file %s: %s"
-msgstr ""
+msgstr "файл шаблонов %s: %s"
 
 msgid "cannot use transaction when it is already committed/aborted"
 msgstr ""
+"невозможно использовать транзакцию, когда она уже зафиксирована/отменена"
 
 #, python-format
 msgid "failed to truncate %s\n"
-msgstr ""
+msgstr "не удалось перезаписать %s\n"
 
 msgid "transaction abort!\n"
-msgstr ""
+msgstr "транзакция отменена!\n"
 
 msgid "rollback completed\n"
-msgstr ""
+msgstr "откат завершен\n"
 
 msgid "rollback failed - please run hg recover\n"
-msgstr ""
+msgstr "ошибка при откате - пожалуйста, запустите hg recover\n"
 
 msgid "already have changeset "
-msgstr ""
+msgstr "уже имеется набор изменений "
 
 #, python-format
 msgid "Not trusting file %s from untrusted user %s, group %s\n"
-msgstr ""
+msgstr "Не доверяем файлу %s от недоверенного пользователя %s, группа %s\n"
 
 #, python-format
 msgid "Ignored: %s\n"
-msgstr ""
+msgstr "Игнорируется: %s\n"
 
 #, python-format
 msgid "(deprecated '%%' in path %s=%s from %s)\n"
-msgstr ""
+msgstr "(устаревший '%%' в пути %s=%s из %s)\n"
 
 #, python-format
 msgid "%s.%s is not a boolean ('%s')"
-msgstr ""
+msgstr "%s.%s не логический ('%s')"
 
 #, python-format
 msgid "%s.%s is not an integer ('%s')"
-msgstr ""
+msgstr "%s.%s не целое число ('%s')"
 
 msgid "enter a commit username:"
-msgstr ""
+msgstr "введите имя пользователя для фиксации:"
 
 #, python-format
 msgid "No username found, using '%s' instead\n"
-msgstr ""
+msgstr "Имя пользователя не найдено, используется '%s'\n"
 
 msgid "no username supplied (see \"hg help config\")"
-msgstr ""
+msgstr "не задано имя пользователя (см. \"hg help config\")"
 
 #, python-format
 msgid "username %s contains a newline\n"
-msgstr ""
+msgstr "имя пользователя %s содержит перевод строки\n"
 
 msgid "response expected"
 msgstr "ожидается ответ"
@@ -18547,307 +21726,376 @@
 msgstr "неудача при редактировании"
 
 msgid "http authorization required"
-msgstr ""
+msgstr "требуется http-авторизация"
 
 msgid "http authorization required\n"
-msgstr ""
+msgstr "требуется http-авторизация\n"
 
 #, python-format
 msgid "realm: %s\n"
-msgstr ""
+msgstr "область (realm): %s\n"
 
 #, python-format
 msgid "user: %s\n"
-msgstr ""
+msgstr "пользователь: %s\n"
 
 msgid "user:"
 msgstr "пользователь:"
 
 #, python-format
 msgid "http auth: user %s, password %s\n"
-msgstr ""
+msgstr "http-авторизация: полльзователь %s, пароль %s\n"
 
 #, python-format
 msgid "command '%s' failed: %s"
-msgstr ""
+msgstr "команда '%s' завершилась ошибкой: %s"
 
 #, python-format
 msgid "filename contains '%s', which is reserved on Windows"
-msgstr ""
+msgstr "имя файла содержит '%s', это зарезервированное имя в Windows"
 
 #, python-format
 msgid "filename contains %r, which is invalid on Windows"
-msgstr ""
+msgstr "имя файла содержит %r, это недопустимый символ в Windows"
 
 #, python-format
 msgid "filename ends with '%s', which is not allowed on Windows"
-msgstr ""
+msgstr "имя файла содержии '%s' на конце, что недопустимо в Windows"
 
 msgid "check your clock"
-msgstr ""
+msgstr "проверьте правильность установки времени"
 
 #, python-format
 msgid "negative timestamp: %d"
-msgstr ""
+msgstr "отрицитальная метка времени: %d"
 
 #, python-format
 msgid "invalid date: %r"
-msgstr ""
+msgstr "недопустимая дата: %r"
 
 #, python-format
 msgid "date exceeds 32 bits: %d"
-msgstr ""
+msgstr "дата не помещается в 32 бита: %d"
 
 #, python-format
 msgid "negative date value: %d"
-msgstr ""
+msgstr "отрицательная дата: %d"
 
 #, python-format
 msgid "impossible time zone offset: %d"
-msgstr ""
+msgstr "невозможное смещение часого пояса: %d"
 
 msgid "dates cannot consist entirely of whitespace"
-msgstr ""
+msgstr "даты не могут состоять из одних пробельных символов"
 
 msgid "invalid day spec, use '<DATE'"
-msgstr ""
+msgstr "неверно указана дата, используйте '<ДАТА'"
 
 msgid "invalid day spec, use '>DATE'"
-msgstr ""
+msgstr "неверно указана дата, используйте '>ДАТА'"
 
 #, python-format
 msgid "invalid day spec: %s"
-msgstr ""
+msgstr "неверно указан день: %s"
 
 #, python-format
 msgid "%s must be nonnegative (see 'hg help dates')"
-msgstr ""
+msgstr "%s должен быть неотрицательным (см. 'hg help dates')"
 
 #, python-format
 msgid "%.0f GB"
-msgstr ""
+msgstr "%.0f Гб"
 
 #, python-format
 msgid "%.1f GB"
-msgstr ""
+msgstr "%.1f Гб"
 
 #, python-format
 msgid "%.2f GB"
-msgstr ""
+msgstr "%.2f Гб"
 
 #, python-format
 msgid "%.0f MB"
-msgstr ""
+msgstr "%.0f Мб"
 
 #, python-format
 msgid "%.1f MB"
-msgstr ""
+msgstr "%.1f Мб"
 
 #, python-format
 msgid "%.2f MB"
-msgstr ""
+msgstr "%.2f Мб"
 
 #, python-format
 msgid "%.0f KB"
-msgstr ""
+msgstr "%.0f Кб"
 
 #, python-format
 msgid "%.1f KB"
-msgstr ""
+msgstr "%.1f Кб"
 
 #, python-format
 msgid "%.2f KB"
-msgstr ""
+msgstr "%.2f Кб"
 
 #, python-format
 msgid "%.0f bytes"
-msgstr ""
+msgstr "%.0f байт"
 
 #, python-format
 msgid "no port number associated with service '%s'"
-msgstr ""
+msgstr "с сервисом '%s' не связан ни один номер порта"
 
 msgid "file:// URLs can only refer to localhost"
 msgstr ""
+"URL вида file:// могут ссылаться только на локальную машину (localhost)"
 
 msgid "cannot verify bundle or remote repos"
-msgstr ""
+msgstr "не удается проверить комплект (bundle) или отдаленное хранилище"
 
 msgid "interrupted"
-msgstr ""
+msgstr "прервано"
 
 #, python-format
 msgid "empty or missing %s"
-msgstr ""
+msgstr "%s пустой или отсутствует"
 
 #, python-format
 msgid "data length off by %d bytes"
-msgstr ""
+msgstr "длина данных смещена на %d байт"
 
 #, python-format
 msgid "index contains %d extra bytes"
-msgstr ""
+msgstr "индекс содержит %d лишних байт"
 
 #, python-format
 msgid "warning: `%s' uses revlog format 1"
-msgstr ""
+msgstr "внимание: `%s' использует revlog формата 1"
 
 #, python-format
 msgid "warning: `%s' uses revlog format 0"
-msgstr ""
+msgstr "внимание: `%s' использует revlog формата 0"
 
 #, python-format
 msgid "rev %d points to nonexistent changeset %d"
-msgstr ""
+msgstr "ревизия %d указывает на несуществующий набор изменений %d"
 
 #, python-format
 msgid "rev %d points to unexpected changeset %d"
-msgstr ""
+msgstr "ревизия %d указывает на неожиданный набор изменений %d"
 
 #, python-format
 msgid " (expected %s)"
-msgstr ""
+msgstr " (ожидается %s)"
 
 #, python-format
 msgid "unknown parent 1 %s of %s"
-msgstr ""
+msgstr "неизвестный первый родитель %s набора изменений %s"
 
 #, python-format
 msgid "unknown parent 2 %s of %s"
-msgstr ""
+msgstr "неизвестный второй родитель %s набора изменений %s"
 
 #, python-format
 msgid "checking parents of %s"
-msgstr ""
+msgstr "проверка родителей %s"
 
 #, python-format
 msgid "duplicate revision %d (%d)"
-msgstr ""
+msgstr "дублирующаяся ревизия %d (%d)"
 
 msgid "abandoned transaction found - run hg recover\n"
-msgstr ""
+msgstr "найдена незавершенная транзакция - запустите hg recover\n"
 
 #, python-format
 msgid "repository uses revlog format %d\n"
-msgstr ""
+msgstr "хранилище использует revlog формата %d\n"
 
 msgid "checking changesets\n"
-msgstr ""
+msgstr "проверяем наборы изменений\n"
 
 msgid "checking"
-msgstr ""
+msgstr "проверка"
 
 #, python-format
 msgid "unpacking changeset %s"
-msgstr ""
+msgstr "распаковка наобора изменений %s"
 
 msgid "checking manifests\n"
-msgstr ""
+msgstr "проверка манифестов\n"
 
 #, python-format
 msgid "%s not in changesets"
-msgstr ""
+msgstr "%s отсутствует в наборах изменений"
 
 msgid "file without name in manifest"
-msgstr ""
+msgstr "файл без имени в манифесте"
 
 #, python-format
 msgid "reading manifest delta %s"
-msgstr ""
+msgstr "чтение дельты %s манифеста"
 
 msgid "crosschecking files in changesets and manifests\n"
-msgstr ""
+msgstr "перекрестная проверка файлов в наборах изменений и манифестах\n"
 
 msgid "crosschecking"
-msgstr ""
+msgstr "перекрестная проверка"
 
 #, python-format
 msgid "changeset refers to unknown manifest %s"
-msgstr ""
+msgstr "набор изменений относится к неизвестному манифесту %s"
 
 msgid "in changeset but not in manifest"
-msgstr ""
+msgstr "в наборе изменений, но не в манифесте"
 
 msgid "in manifest but not in changeset"
-msgstr ""
+msgstr "в манифесте, но не в наборе изменений"
 
 msgid "checking files\n"
-msgstr ""
+msgstr "проверка файлов\n"
 
 #, python-format
 msgid "cannot decode filename '%s'"
-msgstr ""
+msgstr "не удается декодировать имя файла '%s'"
 
 #, python-format
 msgid "broken revlog! (%s)"
-msgstr ""
+msgstr "поврежденный revlog! (%s)"
 
 msgid "missing revlog!"
-msgstr ""
+msgstr "revlog отсутствует!"
 
 #, python-format
 msgid "%s not in manifests"
-msgstr ""
+msgstr "%s отсутствует в манифестах"
 
 #, python-format
 msgid "unpacked size is %s, %s expected"
-msgstr ""
+msgstr "распакованный размер %s, а ожидался %s"
 
 #, python-format
 msgid "unpacking %s"
-msgstr ""
+msgstr "распаковка %s"
 
 #, python-format
 msgid "warning: copy source of '%s' not in parents of %s"
-msgstr ""
+msgstr "внимание: источник копии '%s' не входит в родителей %s"
 
 #, python-format
 msgid "empty or missing copy source revlog %s:%s"
-msgstr ""
+msgstr "пустой или отсутствующий revlog источника копии %s:%s"
 
 #, python-format
 msgid "warning: %s@%s: copy source revision is nullid %s:%s\n"
 msgstr ""
+"внимание: %s@%s: источник копии ревизии - пустая ревизия (nullid) %s:%s\n"
 
 #, python-format
 msgid "checking rename of %s"
-msgstr ""
+msgstr "проверка переименования %s"
 
 #, python-format
 msgid "%s in manifests not found"
-msgstr ""
+msgstr "%s не найден в манифестах"
 
 #, python-format
 msgid "warning: orphan revlog '%s'"
-msgstr ""
+msgstr "внимание: висячий (orphan) revlog '%s'"
 
 #, python-format
 msgid "%d files, %d changesets, %d total revisions\n"
-msgstr ""
+msgstr "%d файлов, %d наборов изменений, всего %d ревизий\n"
 
 #, python-format
 msgid "%d warnings encountered!\n"
-msgstr ""
+msgstr "обнаружено %d предупреждений!\n"
 
 #, python-format
 msgid "%d integrity errors encountered!\n"
-msgstr ""
+msgstr "обнаружено %d ошибок целостности!\n"
 
 #, python-format
 msgid "(first damaged changeset appears to be %d)\n"
-msgstr ""
+msgstr "(первый поврежденный набор изменений похоже %d)\n"
 
 msgid "look up remote revision"
-msgstr ""
+msgstr "поиск отдаленной ревизии"
 
 msgid "push failed (unexpected response):"
-msgstr ""
+msgstr "ошибка при проталкивании (неожиданный ответ):"
 
 msgid "look up remote changes"
-msgstr ""
+msgstr "поиск отдаленных изменений"
 
 msgid "push failed:"
-msgstr ""
+msgstr "ошибка при проталкивании:"
+
+#~ msgid "%dм%02dс"
+#~ msgstr "%dм%02dс"
+
+#~ msgid "there is nothing to merge"
+#~ msgstr "нечего сливать"
+
+#~ msgid "acl: access denied for changeset %s"
+#~ msgstr "acl: нет доступа для набора изменений %s"
+
+#~ msgid "    See :hg:`help urls` for valid source format details."
+#~ msgstr "    См. :hg:`help urls` о форматах адреса источника."
+
+#~ msgid ""
+#~ "    It is possible to specify an ``ssh://`` URL as the destination, but "
+#~ "no\n"
+#~ "    ``.hg/hgrc`` and working directory will be created on the remote "
+#~ "side.\n"
+#~ "    Please see :hg:`help urls` for important details about ``ssh://`` "
+#~ "URLs."
+#~ msgstr ""
+#~ "    Можно указать ``ssh://...`` в качестве адреса назначения, но файл\n"
+#~ "    ``.hg/hgrc`` и рабочая копия не будут созданы на отдалённом "
+#~ "компьютере.\n"
+#~ "    См. :hg:`help urls` для важной информации об адресах вида ``ssh://..."
+#~ "``."
+
+#~ msgid ""
+#~ "    A set of changesets (tags, or branch names) to pull may be specified\n"
+#~ "    by listing each changeset (tag, or branch name) with -r/--rev.\n"
+#~ "    If -r/--rev is used, the cloned repository will contain only a "
+#~ "subset\n"
+#~ "    of the changesets of the source repository. Only the set of "
+#~ "changesets\n"
+#~ "    defined by all -r/--rev options (including all their ancestors)\n"
+#~ "    will be pulled into the destination repository.\n"
+#~ "    No subsequent changesets (including subsequent tags) will be present\n"
+#~ "    in the destination."
+#~ msgstr ""
+#~ "    Копируемые наборы изменений (changesets) (как метки или имена веток)\n"
+#~ "    могут быть заданы указанием каждого набора изменений (метки или "
+#~ "имени\n"
+#~ "    ветки) с помощью -r/--rev. При использовании -r/--rev, клонированное\n"
+#~ "    хранилище будет содержать только подмножество наборов изменений\n"
+#~ "    источника."
+
+#~ msgid ""
+#~ "    Using -r/--rev (or 'clone src#rev dest') implies --pull, even for\n"
+#~ "    local source repositories."
+#~ msgstr ""
+#~ "    Использование -r/--rev (или 'clone источник#ревизия назн')\n"
+#~ "    предполагает --pull, даже если источник локален."
+
+#~ msgid "applied %s\n"
+#~ msgstr "применен %s\n"
+
+#~ msgid ""
+#~ ":add: add does not recurse in subrepos unless -S/--subrepos is\n"
+#~ "    specified. Subversion subrepositories are currently silently\n"
+#~ "    ignored."
+#~ msgstr ""
+#~ ":add: add не обрабатывает подхранилища рекурсивно, если не указана\n"
+#~ "    опция -S/--subrepos. Подхранилища Subversion в настоящее\n"
+#~ "    время молча игнорируются."
+
+#~ msgid "do not prompt, assume 'yes' for any required answers"
+#~ msgstr "не спрашивать подтверждения, всегда автоматически отвечать 'да'"
 
 #~ msgid "read config from: %s\n"
 #~ msgstr "читаю конфиг из: %s\n"
@@ -18867,9 +22115,9 @@
 #~ "    .. note::\n"
 #~ "       Эта команда почти наверняка не то, что вы ищете. Revert\n"
 #~ "       частично переписывает файлы в рабочем каталоге, не изменяя его\n"
-#~ "       родительскую ревизию в репозитории. Используйте \n"
+#~ "       родительскую ревизию в хранилище. Используйте \n"
 #~ "       :hg:`update -r рев` чтобы извлечь предыдущие ревизии, или\n"
-#~ "       :hg update --clean .` чтобы отменить слияние, которе добавило\n"
+#~ "       :hg update --clean .` чтобы отменить слияние, которое добавило\n"
 #~ "       второго родителя."
 
 #~ msgid ""
@@ -18879,7 +22127,7 @@
 #~ "    directory, the reverted files will thus appear modified\n"
 #~ "    afterwards."
 #~ msgstr ""
-#~ "    Revert изменяет рабочий каталог. Она не комитит никаких\n"
+#~ "    Revert изменяет рабочий каталог. Она не фиксирует никаких\n"
 #~ "    изменений и не меняет родителя рабочего каталога. Если вы\n"
 #~ "    выполните revert на ревизию, отличную от текущей родительской,\n"
 #~ "    восстановленные файлы будут иметь статус измененных."
@@ -18892,26 +22140,18 @@
 #~ "    Если файл был удален, он восстанавливается. У файлов, помеченных\n"
 #~ "    для добавления, пометка снимается, сами файлы при этом не\n"
 #~ "    изменяются. Если изменился признак исполнимости файла, он\n"
-#~ "    сбраывается."
+#~ "    сбрасывается."
 
 #~ msgid ""
 #~ "    If names are given, all files matching the names are reverted.\n"
 #~ "    If no arguments are given, no files are reverted."
 #~ msgstr ""
 #~ "    Если заданы имена, восстанавливаются все файлы с подходящими\n"
-#~ "    именами. Без аргумнтов никакие файлы не будут восстановлены."
-
-#~ msgid "uncommitted merge - use \"hg update\", see \"hg help revert\""
-#~ msgstr ""
-#~ "незакомиченное слияние - используйте \"hg update\", см. \"hg help revert\""
+#~ "    именами. Без аргументов никакие файлы не будут восстановлены."
 
 #~ msgid ""
 #~ "no files or directories specified; use --all to revert the whole repo"
-#~ msgstr "не заданы файлы или каталоги; --all откатит весь репозиторий"
-
-#, fuzzy
-#~ msgid "%s already exists"
-#~ msgstr "файл %s уже существует\n"
+#~ msgstr "не заданы файлы или каталоги; --all откатит всё хранилище"
 
 #~ msgid "base path"
 #~ msgstr "базовый путь"
@@ -18919,10 +22159,6 @@
 #~ msgid "not updating, since new heads added\n"
 #~ msgstr "не обновляюсь т.к. добавлены новые головы\n"
 
-#, fuzzy
-#~ msgid "%s still exists!\n"
-#~ msgstr "файл %s уже существует\n"
-
 #~ msgid ""
 #~ "Mercurial reads configuration data from several files, if they exist.\n"
 #~ "Below we list the most specific file first."
@@ -18946,7 +22182,7 @@
 #~ "- ``<hg.exe-dir>\\hgrc.d\\*.rc`` (unless mercurial.ini found)\n"
 #~ "- ``<hg.exe-dir>\\mercurial.ini``"
 #~ msgstr ""
-#~ "- ``<репозиторий>\\.hg\\hgrc``\n"
+#~ "- ``<хранилище>\\.hg\\hgrc``\n"
 #~ "- ``%USERPROFILE%\\.hgrc``\n"
 #~ "- ``%USERPROFILE%\\mercurial.ini``\n"
 #~ "- ``%HOME%\\.hgrc``\n"
@@ -18965,13 +22201,13 @@
 #~ "If there is a per-repository configuration file which is not owned by\n"
 #~ "the active user, Mercurial will warn you that the file is skipped::"
 #~ msgstr ""
-#~ "Если владелец файла настроек в репозитории - не текущий пользователь,\n"
+#~ "Если владелец файла настроек в хранилище - не текущий пользователь,\n"
 #~ "Mercurial предупреждает о том, что этот файл не будет использован::"
 
 #~ msgid ""
 #~ "  not trusting file <repo>/.hg/hgrc from untrusted user USER, group GROUP"
 #~ msgstr ""
-#~ "  не доверяю файлу <репозиторий>/.hg/hgrc от недоверенного пользователя\n"
+#~ "  не доверяю файлу <хранилище>/.hg/hgrc от недоверенного пользователя\n"
 #~ "  ПОЛЬЗОВАТЕЛЬ в группе ГРУППА"
 
 #~ msgid ""
--- a/mercurial/bdiff.c	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/bdiff.c	Mon Jan 09 20:16:57 2012 -0600
@@ -425,11 +425,55 @@
 	return result ? result : PyErr_NoMemory();
 }
 
+/*
+ * If allws != 0, remove all whitespace (' ', \t and \r). Otherwise,
+ * reduce whitespace sequences to a single space and trim remaining whitespace
+ * from end of lines.
+ */
+static PyObject *fixws(PyObject *self, PyObject *args)
+{
+	PyObject *s, *result = NULL;
+	char allws, c;
+	const char *r;
+	int i, rlen, wlen = 0;
+	char *w;
+
+	if (!PyArg_ParseTuple(args, "Sb:fixws", &s, &allws))
+		return NULL;
+	r = PyBytes_AsString(s);
+	rlen = PyBytes_Size(s);
+
+	w = (char *)malloc(rlen);
+	if (!w)
+		goto nomem;
+
+	for (i = 0; i != rlen; i++) {
+		c = r[i];
+		if (c == ' ' || c == '\t' || c == '\r') {
+			if (!allws && (wlen == 0 || w[wlen - 1] != ' '))
+				w[wlen++] = ' ';
+		} else if (c == '\n' && !allws
+			  && wlen > 0 && w[wlen - 1] == ' ') {
+			w[wlen - 1] = '\n';
+		} else {
+			w[wlen++] = c;
+		}
+	}
+
+	result = PyBytes_FromStringAndSize(w, wlen);
+
+nomem:
+	free(w);
+	return result ? result : PyErr_NoMemory();
+}
+
+
 static char mdiff_doc[] = "Efficient binary diff.";
 
 static PyMethodDef methods[] = {
 	{"bdiff", bdiff, METH_VARARGS, "calculate a binary diff\n"},
 	{"blocks", blocks, METH_VARARGS, "find a list of matching lines\n"},
+	{"fixws", fixws, METH_VARARGS, "normalize diff whitespaces\n"},
 	{NULL, NULL}
 };
 
--- a/mercurial/bookmarks.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/bookmarks.py	Mon Jan 09 20:16:57 2012 -0600
@@ -128,10 +128,10 @@
 
 def updatecurrentbookmark(repo, oldnode, curbranch):
     try:
-        update(repo, oldnode, repo.branchtags()[curbranch])
+        return update(repo, oldnode, repo.branchtags()[curbranch])
     except KeyError:
         if curbranch == "default": # no default branch!
-            update(repo, oldnode, repo.lookup("tip"))
+            return update(repo, oldnode, repo.lookup("tip"))
         else:
             raise util.Abort(_("branch %s not found") % curbranch)
 
@@ -147,6 +147,7 @@
             update = True
     if update:
         repo._writebookmarks(marks)
+    return update
 
 def listbookmarks(repo):
     # We may try to list bookmarks on a repo type that does not
@@ -155,7 +156,9 @@
 
     d = {}
     for k, v in marks.iteritems():
-        d[k] = hex(v)
+        # don't expose local divergent bookmarks
+        if '@' not in k and not k.endswith('@'):
+            d[k] = hex(v)
     return d
 
 def pushbookmark(repo, key, old, new):
@@ -175,7 +178,7 @@
     finally:
         w.release()
 
-def updatefromremote(ui, repo, remote):
+def updatefromremote(ui, repo, remote, path):
     ui.debug("checking for updated bookmarks\n")
     rb = remote.listkeys('bookmarks')
     changed = False
@@ -192,8 +195,21 @@
                     changed = True
                     ui.status(_("updating bookmark %s\n") % k)
                 else:
-                    ui.warn(_("not updating divergent"
-                                   " bookmark %s\n") % k)
+                    # find a unique @ suffix
+                    for x in range(1, 100):
+                        n = '%s@%d' % (k, x)
+                        if n not in repo._bookmarks:
+                            break
+                    # try to use an @pathalias suffix
+                    # if an @pathalias already exists, we overwrite (update) it
+                    for p, u in ui.configitems("paths"):
+                        if path == u:
+                            n = '%s@%s' % (k, p)
+
+                    repo._bookmarks[n] = cr.node()
+                    changed = True
+                    ui.warn(_("divergent bookmark %s stored as %s\n") % (k, n))
+
     if changed:
         write(repo)
 
--- a/mercurial/byterange.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/byterange.py	Mon Jan 09 20:16:57 2012 -0600
@@ -9,10 +9,8 @@
 #   Lesser General Public License for more details.
 #
 #   You should have received a copy of the GNU Lesser General Public
-#   License along with this library; if not, write to the
-#      Free Software Foundation, Inc.,
-#      59 Temple Place, Suite 330,
-#      Boston, MA  02111-1307  USA
+#   License along with this library; if not, see
+#   <http://www.gnu.org/licenses/>.
 
 # This file is part of urlgrabber, a high-level cross-protocol url-grabber
 # Copyright 2002-2004 Michael D. Stenner, Ryan Tomayko
--- a/mercurial/cmdutil.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/cmdutil.py	Mon Jan 09 20:16:57 2012 -0600
@@ -1179,33 +1179,29 @@
             if ui.verbose or not exact:
                 ui.status(_('adding %s\n') % match.rel(join(f)))
 
-    if listsubrepos:
-        for subpath in wctx.substate:
-            sub = wctx.sub(subpath)
-            try:
-                submatch = matchmod.narrowmatcher(subpath, match)
+    for subpath in wctx.substate:
+        sub = wctx.sub(subpath)
+        try:
+            submatch = matchmod.narrowmatcher(subpath, match)
+            if listsubrepos:
                 bad.extend(sub.add(ui, submatch, dryrun, prefix))
-            except error.LookupError:
-                ui.status(_("skipping missing subrepository: %s\n")
-                               % join(subpath))
+            else:
+                for f in sub.walk(submatch):
+                    if submatch.exact(f):
+                        bad.extend(sub.add(ui, submatch, dryrun, prefix))
+        except error.LookupError:
+            ui.status(_("skipping missing subrepository: %s\n")
+                           % join(subpath))
 
     if not dryrun:
         rejected = wctx.add(names, prefix)
         bad.extend(f for f in rejected if f in match.files())
     return bad
 
-def duplicatecopies(repo, rev, p1, p2):
+def duplicatecopies(repo, rev, p1):
     "Reproduce copies found in the source revision in the dirstate for grafts"
-    # Here we simulate the copies and renames in the source changeset
-    cop, diver = copies.copies(repo, repo[rev], repo[p1], repo[p2], True)
-    m1 = repo[rev].manifest()
-    m2 = repo[p1].manifest()
-    for k, v in cop.iteritems():
-        if k in m1:
-            if v in m1 or v in m2:
-                repo.dirstate.copy(v, k)
-                if v in m2 and v not in m1 and k in m2:
-                    repo.dirstate.remove(v)
+    for dst, src in copies.pathcopies(repo[p1], repo[rev]).iteritems():
+        repo.dirstate.copy(src, dst)
 
 def commit(ui, repo, commitfunc, pats, opts):
     '''commit the specified files or all outstanding changes'''
--- a/mercurial/commands.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/commands.py	Mon Jan 09 20:16:57 2012 -0600
@@ -13,6 +13,7 @@
 import patch, help, url, encoding, templatekw, discovery
 import archival, changegroup, cmdutil, hbisect
 import sshserver, hgweb, hgweb.server, commandserver
+import match as matchmod
 import merge as mergemod
 import minirst, revset, fileset
 import dagparser, context, simplemerge
@@ -105,15 +106,19 @@
     ('', 'nodates', None, _('omit dates from diff headers'))
 ]
 
-diffopts2 = [
-    ('p', 'show-function', None, _('show which function each change is in')),
-    ('', 'reverse', None, _('produce a diff that undoes the changes')),
+diffwsopts = [
     ('w', 'ignore-all-space', None,
      _('ignore white space when comparing lines')),
     ('b', 'ignore-space-change', None,
      _('ignore changes in the amount of white space')),
     ('B', 'ignore-blank-lines', None,
      _('ignore changes whose lines are all blank')),
+    ]
+
+diffopts2 = [
+    ('p', 'show-function', None, _('show which function each change is in')),
+    ('', 'reverse', None, _('produce a diff that undoes the changes')),
+    ] + diffwsopts + [
     ('U', 'unified', '',
      _('number of lines of context to show'), _('NUM')),
     ('', 'stat', None, _('output diffstat-style summary of changes')),
@@ -214,7 +219,7 @@
     ('n', 'number', None, _('list the revision number (default)')),
     ('c', 'changeset', None, _('list the changeset')),
     ('l', 'line-number', None, _('show line number at the first appearance'))
-    ] + walkopts,
+    ] + diffwsopts + walkopts,
     _('[-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] FILE...'))
 def annotate(ui, repo, *pats, **opts):
     """show changeset information by line for each file
@@ -243,9 +248,11 @@
     if not pats:
         raise util.Abort(_('at least one filename or pattern is required'))
 
+    hexfn = ui.debugflag and hex or short
+
     opmap = [('user', ' ', lambda x: ui.shortuser(x[0].user())),
              ('number', ' ', lambda x: str(x[0].rev())),
-             ('changeset', ' ', lambda x: short(x[0].node())),
+             ('changeset', ' ', lambda x: hexfn(x[0].node())),
              ('date', ' ', getdate),
              ('file', ' ', lambda x: x[0].path()),
              ('line_number', ':', lambda x: str(x[1])),
@@ -269,13 +276,15 @@
     m = scmutil.match(ctx, pats, opts)
     m.bad = bad
     follow = not opts.get('no_follow')
+    diffopts = patch.diffopts(ui, opts, section='annotate')
     for abs in ctx.walk(m):
         fctx = ctx[abs]
         if not opts.get('text') and util.binary(fctx.data()):
             ui.write(_("%s: binary file\n") % ((pats and m.rel(abs)) or abs))
             continue
 
-        lines = fctx.annotate(follow=follow, linenumber=linenumber)
+        lines = fctx.annotate(follow=follow, linenumber=linenumber,
+                              diffopts=diffopts)
         pieces = []
 
         for f, sep in funcmap:
@@ -719,10 +728,10 @@
              rename=None, inactive=False):
     '''track a line of development with movable markers
 
-    Bookmarks are pointers to certain commits that move when
-    committing. Bookmarks are local. They can be renamed, copied and
-    deleted. It is possible to use bookmark names in :hg:`merge` and
-    :hg:`update` to merge and update respectively to a given bookmark.
+    Bookmarks are pointers to certain commits that move when committing.
+    Bookmarks are local. They can be renamed, copied and deleted. It is
+    possible to use :hg:`merge NAME` to merge from a given bookmark, and
+    :hg:`update NAME` to update to a given bookmark.
 
     You can use :hg:`bookmark NAME` to set a bookmark on the working
     directory's parent revision with the given name. If you specify
@@ -738,6 +747,17 @@
     marks = repo._bookmarks
     cur   = repo.changectx('.').node()
 
+    if delete:
+        if mark is None:
+            raise util.Abort(_("bookmark name required"))
+        if mark not in marks:
+            raise util.Abort(_("bookmark '%s' does not exist") % mark)
+        if mark == repo._bookmarkcurrent:
+            bookmarks.setcurrent(repo, None)
+        del marks[mark]
+        bookmarks.write(repo)
+        return
+
     if rename:
         if rename not in marks:
             raise util.Abort(_("bookmark '%s' does not exist") % rename)
@@ -753,17 +773,6 @@
         bookmarks.write(repo)
         return
 
-    if delete:
-        if mark is None:
-            raise util.Abort(_("bookmark name required"))
-        if mark not in marks:
-            raise util.Abort(_("bookmark '%s' does not exist") % mark)
-        if mark == repo._bookmarkcurrent:
-            bookmarks.setcurrent(repo, None)
-        del marks[mark]
-        bookmarks.write(repo)
-        return
-
     if mark is not None:
         if "\n" in mark:
             raise util.Abort(_("bookmark name cannot contain newlines"))
@@ -784,8 +793,8 @@
         if rev:
             marks[mark] = repo.lookup(rev)
         else:
-            marks[mark] = repo.changectx('.').node()
-        if not inactive and repo.changectx('.').node() == marks[mark]:
+            marks[mark] = cur
+        if not inactive and cur == marks[mark]:
             bookmarks.setcurrent(repo, mark)
         bookmarks.write(repo)
         return
@@ -2191,7 +2200,7 @@
         if ent[1] & 020000:
             mode = 'lnk'
         else:
-            mode = '%3o' % (ent[1] & 0777)
+            mode = '%3o' % (ent[1] & 0777 & ~util.umask)
         ui.write("%c %s %10d %s%s\n" % (ent[0], mode, ent[2], timestr, file_))
     for f in repo.dirstate.copies():
         ui.write(_("copy: %s -> %s\n") % (repo.dirstate.copied(f), f))
@@ -2434,23 +2443,45 @@
     if not pats:
         raise util.Abort(_('no files specified'))
 
-    m = scmutil.match(repo[None], pats, opts)
+    wctx = repo[None]
+    m = scmutil.match(wctx, pats, opts)
     s = repo.status(match=m, clean=True)
     forget = sorted(s[0] + s[1] + s[3] + s[6])
+    subforget = {}
     errs = 0
 
+    for subpath in wctx.substate:
+        sub = wctx.sub(subpath)
+        try:
+            submatch = matchmod.narrowmatcher(subpath, m)
+            for fsub in sub.walk(submatch):
+                if submatch.exact(fsub):
+                    subforget[subpath + '/' + fsub] = (fsub, sub)
+        except error.LookupError:
+            ui.status(_("skipping missing subrepository: %s\n") % subpath)
+
     for f in m.files():
         if f not in repo.dirstate and not os.path.isdir(m.rel(f)):
-            if os.path.exists(m.rel(f)):
-                ui.warn(_('not removing %s: file is already untracked\n')
-                        % m.rel(f))
-            errs = 1
+            if f not in subforget:
+                if os.path.exists(m.rel(f)):
+                    ui.warn(_('not removing %s: file is already untracked\n')
+                            % m.rel(f))
+                errs = 1
 
     for f in forget:
         if ui.verbose or not m.exact(f):
             ui.status(_('removing %s\n') % m.rel(f))
 
-    repo[None].forget(forget)
+    if ui.verbose:
+        for f in sorted(subforget.keys()):
+            ui.status(_('removing %s\n') % m.rel(f))
+
+    wctx.forget(forget)
+
+    for f in sorted(subforget.keys()):
+        fsub, sub = subforget[f]
+        sub.forget([fsub])
+
     return errs
 
 @command(
@@ -2536,16 +2567,16 @@
         revs = scmutil.revrange(repo, revs)
 
     # check for merges
-    for ctx in repo.set('%ld and merge()', revs):
-        ui.warn(_('skipping ungraftable merge revision %s\n') % ctx.rev())
-        revs.remove(ctx.rev())
+    for rev in repo.revs('%ld and merge()', revs):
+        ui.warn(_('skipping ungraftable merge revision %s\n') % rev)
+        revs.remove(rev)
     if not revs:
         return -1
 
     # check for ancestors of dest branch
-    for ctx in repo.set('::. and %ld', revs):
-        ui.warn(_('skipping ancestor revision %s\n') % ctx.rev())
-        revs.remove(ctx.rev())
+    for rev in repo.revs('::. and %ld', revs):
+        ui.warn(_('skipping ancestor revision %s\n') % rev)
+        revs.remove(rev)
     if not revs:
         return -1
 
@@ -2596,7 +2627,7 @@
             repo.dirstate.setparents(current.node(), nullid)
             repo.dirstate.write()
             # fix up dirstate for copies and renames
-            cmdutil.duplicatecopies(repo, ctx.rev(), current.node(), nullid)
+            cmdutil.duplicatecopies(repo, ctx.rev(), current.node())
             # report any conflicts
             if stats and stats[3] > 0:
                 # write out state for --continue
@@ -3236,10 +3267,11 @@
     ('i', 'id', None, _('show global revision id')),
     ('b', 'branch', None, _('show branch')),
     ('t', 'tags', None, _('show tags')),
-    ('B', 'bookmarks', None, _('show bookmarks'))],
+    ('B', 'bookmarks', None, _('show bookmarks')),
+    ] + remoteopts,
     _('[-nibtB] [-r REV] [SOURCE]'))
 def identify(ui, repo, source=None, rev=None,
-             num=None, id=None, branch=None, tags=None, bookmarks=None):
+             num=None, id=None, branch=None, tags=None, bookmarks=None, **opts):
     """identify the working copy or specified revision
 
     Print a summary identifying the repository state at REV using one or
@@ -3283,7 +3315,7 @@
 
     if source:
         source, branches = hg.parseurl(ui.expandpath(source))
-        repo = hg.peer(ui, {}, source)
+        repo = hg.peer(ui, opts, source)
         revs, checkout = hg.addbranchrevs(repo, repo, branches, None)
 
     if not repo.local():
@@ -3736,14 +3768,14 @@
     [('f', 'follow', None,
      _('follow changeset history, or file history across copies and renames')),
     ('', 'follow-first', None,
-     _('only follow the first parent of merge changesets')),
+     _('only follow the first parent of merge changesets (DEPRECATED)')),
     ('d', 'date', '', _('show revisions matching date spec'), _('DATE')),
     ('C', 'copies', None, _('show copied files')),
     ('k', 'keyword', [],
      _('do case-insensitive search for a given text'), _('TEXT')),
     ('r', 'rev', [], _('show the specified revision or range'), _('REV')),
     ('', 'removed', None, _('include revisions where files were removed')),
-    ('m', 'only-merges', None, _('show only merges')),
+    ('m', 'only-merges', None, _('show only merges (DEPRECATED)')),
     ('u', 'user', [], _('revisions committed by user'), _('USER')),
     ('', 'only-branch', [],
      _('show only changesets within the given named branch (DEPRECATED)'),
@@ -3752,7 +3784,7 @@
      _('show changesets within the given named branch'), _('BRANCH')),
     ('P', 'prune', [],
      _('do not display revision or any of its ancestors'), _('REV')),
-    ('', 'hidden', False, _('show hidden changesets')),
+    ('', 'hidden', False, _('show hidden changesets (DEPRECATED)')),
     ] + logopts + walkopts,
     _('[OPTION]... [FILE]'))
 def log(ui, repo, *pats, **opts):
@@ -3865,14 +3897,21 @@
             return
         if df and not df(ctx.date()[0]):
             return
-        if opts['user'] and not [k for k in opts['user']
-                                 if k.lower() in ctx.user().lower()]:
-            return
+
+        lower = encoding.lower
+        if opts.get('user'):
+            luser = lower(ctx.user())
+            for k in [lower(x) for x in opts['user']]:
+                if (k in luser):
+                    break
+            else:
+                return
         if opts.get('keyword'):
-            for k in [kw.lower() for kw in opts['keyword']]:
-                if (k in ctx.user().lower() or
-                    k in ctx.description().lower() or
-                    k in " ".join(ctx.files()).lower()):
+            luser = lower(ctx.user())
+            ldesc = lower(ctx.description())
+            lfiles = lower(" ".join(ctx.files()))
+            for k in [lower(x) for x in opts['keyword']]:
+                if (k in luser or k in ldesc or k in lfiles):
                     break
             else:
                 return
@@ -4014,10 +4053,10 @@
                                    "please merge with an explicit rev")
                                  % branch,
                                  hint=_("run 'hg heads' to see all heads"))
-            msg = _('there is nothing to merge')
-            if parent != repo.lookup(repo[None].branch()):
-                msg = _('%s - use "hg update" instead') % msg
-            raise util.Abort(msg)
+            msg, hint = _('nothing to merge'), None
+            if parent != repo.lookup(branch):
+                hint = _("use 'hg update' instead")
+            raise util.Abort(msg, hint=hint)
 
         if parent not in bheads:
             raise util.Abort(_('working directory not at a head revision'),
@@ -4245,7 +4284,7 @@
             raise util.Abort(err)
 
     modheads = repo.pull(other, heads=revs, force=opts.get('force'))
-    bookmarks.updatefromremote(ui, repo, other)
+    bookmarks.updatefromremote(ui, repo, other, source)
     if checkout:
         checkout = str(repo.changelog.rev(other.lookup(checkout)))
     repo._subtoppath = source
@@ -4330,7 +4369,7 @@
         c = repo['']
         subs = c.substate # only repos that are committed
         for s in sorted(subs):
-            if not c.sub(s).push(opts.get('force')):
+            if not c.sub(s).push(opts):
                 return False
     finally:
         del repo._subtoppath
@@ -5146,7 +5185,7 @@
         msg = _('cannot specify --rev and --change at the same time')
         raise util.Abort(msg)
     elif change:
-        node2 = repo.lookup(change)
+        node2 = scmutil.revsingle(repo, change, None).node()
         node1 = repo[node2].p1().node()
     else:
         node1, node2 = scmutil.revpair(repo, revs)
@@ -5167,18 +5206,7 @@
     changestates = zip(states, 'MAR!?IC', stat)
 
     if (opts.get('all') or opts.get('copies')) and not opts.get('no_status'):
-        ctxn = repo[nullid]
-        ctx1 = repo[node1]
-        ctx2 = repo[node2]
-        added = stat[1]
-        if node2 is None:
-            added = stat[0] + stat[1] # merged?
-
-        for k, v in copies.copies(repo, ctx1, ctx2, ctxn)[0].iteritems():
-            if k in added:
-                copy[k] = v
-            elif v in added:
-                copy[v] = k
+        copy = copies.pathcopies(repo[node1], repo[node2])
 
     for state, char, files in changestates:
         if state in show:
@@ -5546,8 +5574,7 @@
         for fname in fnames:
             f = url.open(ui, fname)
             gen = changegroup.readbundle(f, fname)
-            modheads = repo.addchangegroup(gen, 'unbundle', 'bundle:' + fname,
-                                           lock=lock)
+            modheads = repo.addchangegroup(gen, 'unbundle', 'bundle:' + fname)
         bookmarks.updatecurrentbookmark(repo, wc.node(), wc.branch())
     finally:
         lock.release()
--- a/mercurial/context.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/context.py	Mon Jan 09 20:16:57 2012 -0600
@@ -7,7 +7,7 @@
 
 from node import nullid, nullrev, short, hex
 from i18n import _
-import ancestor, bdiff, error, util, scmutil, subrepo, patch, encoding
+import ancestor, mdiff, error, util, scmutil, subrepo, patch, encoding
 import match as matchmod
 import os, errno, stat
 
@@ -117,6 +117,15 @@
         return self._repo.nodetags(self._node)
     def bookmarks(self):
         return self._repo.nodebookmarks(self._node)
+    def phase(self):
+        if self._rev == -1:
+            return 0
+        if self._rev >= len(self._repo._phaserev):
+            # outdated cache
+            del self._repo._phaserev
+        return self._repo._phaserev[self._rev]
+    def mutable(self):
+        return self._repo._phaserev[self._rev] > 0
     def hidden(self):
         return self._rev in self._repo.changelog.hiddenrevs
 
@@ -363,6 +372,12 @@
     def size(self):
         return self._filelog.size(self._filerev)
 
+    def isbinary(self):
+        try:
+            return util.binary(self.data())
+        except IOError:
+            return False
+
     def cmp(self, fctx):
         """compare with other file context
 
@@ -426,7 +441,7 @@
         return [filectx(self._repo, self._path, fileid=x,
                         filelog=self._filelog) for x in c]
 
-    def annotate(self, follow=False, linenumber=None):
+    def annotate(self, follow=False, linenumber=None, diffopts=None):
         '''returns a list of tuples of (ctx, line) for each line
         in the file, where ctx is the filectx of the node where
         that line was last changed.
@@ -453,8 +468,13 @@
                     without_linenumber)
 
         def pair(parent, child):
-            for a1, a2, b1, b2 in bdiff.blocks(parent[1], child[1]):
-                child[0][b1:b2] = parent[0][a1:a2]
+            blocks = mdiff.allblocks(parent[1], child[1], opts=diffopts,
+                                     refine=True)
+            for (a1, a2, b1, b2), t in blocks:
+                # Changed blocks ('!') or blocks made only of blank lines ('~')
+                # belong to the child.
+                if t == '=':
+                    child[0][b1:b2] = parent[0][a1:a2]
             return child
 
         getlog = util.lrucachefunc(lambda x: self._repo.file(x))
@@ -791,6 +811,15 @@
             b.extend(p.bookmarks())
         return b
 
+    def phase(self):
+        phase = 1 # default phase to draft
+        for p in self.parents():
+            phase = max(phase, p.phase())
+        return phase
+
+    def hidden(self):
+        return False
+
     def children(self):
         return []
 
--- a/mercurial/copies.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/copies.py	Mon Jan 09 20:16:57 2012 -0600
@@ -84,7 +84,91 @@
         return None
     return limit
 
-def copies(repo, c1, c2, ca, checkdirs=False):
+def _chain(src, dst, a, b):
+    '''chain two sets of copies a->b'''
+    t = a.copy()
+    for k, v in b.iteritems():
+        if v in t:
+            # found a chain
+            if t[v] != k:
+                # file wasn't renamed back to itself
+                t[k] = t[v]
+            if v not in dst:
+                # chain was a rename, not a copy
+                del t[v]
+        if v in src:
+            # file is a copy of an existing file
+            t[k] = v
+    return t
+
+def _tracefile(fctx, actx):
+    '''return file context that is the ancestor of fctx present in actx'''
+    stop = actx.rev()
+    am = actx.manifest()
+
+    for f in fctx.ancestors():
+        if am.get(f.path(), None) == f.filenode():
+            return f
+        if f.rev() < stop:
+            return None
+
+def _dirstatecopies(d):
+    ds = d._repo.dirstate
+    c = ds.copies().copy()
+    for k in c.keys():
+        if ds[k] not in 'anm':
+            del c[k]
+    return c
+
+def _forwardcopies(a, b):
+    '''find {dst@b: src@a} copy mapping where a is an ancestor of b'''
+
+    # check for working copy
+    w = None
+    if b.rev() is None:
+        w = b
+        b = w.p1()
+        if a == b:
+            # short-circuit to avoid issues with merge states
+            return _dirstatecopies(w)
+
+    # find where new files came from
+    # we currently don't try to find where old files went, too expensive
+    # this means we can miss a case like 'hg rm b; hg cp a b'
+    cm = {}
+    for f in b:
+        if f not in a:
+            ofctx = _tracefile(b[f], a)
+            if ofctx:
+                cm[f] = ofctx.path()
+
+    # combine copies from dirstate if necessary
+    if w is not None:
+        cm = _chain(a, w, cm, _dirstatecopies(w))
+
+    return cm
+
+def _backwardcopies(a, b):
+    # because the forward mapping is 1:n, we can lose renames here
+    # in particular, we find renames better than copies
+    f = _forwardcopies(b, a)
+    r = {}
+    for k, v in f.iteritems():
+        r[v] = k
+    return r
+
+def pathcopies(x, y):
+    '''find {dst@y: src@x} copy mapping for directed compare'''
+    if x == y or not x or not y:
+        return {}
+    a = y.ancestor(x)
+    if a == x:
+        return _forwardcopies(x, y)
+    if a == y:
+        return _backwardcopies(x, y)
+    return _chain(x, y, _backwardcopies(x, a), _forwardcopies(a, y))
+
+def mergecopies(repo, c1, c2, ca, checkdirs=True):
     """
     Find moves and copies between context c1 and c2
     """
--- a/mercurial/dirstate.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/dirstate.py	Mon Jan 09 20:16:57 2012 -0600
@@ -50,7 +50,7 @@
         self._rootdir = os.path.join(root, '')
         self._dirty = False
         self._dirtypl = False
-        self._lastnormaltime = None
+        self._lastnormaltime = 0
         self._ui = ui
 
     @propertycache
@@ -254,7 +254,7 @@
                 "_ignore"):
             if a in self.__dict__:
                 delattr(self, a)
-        self._lastnormaltime = None
+        self._lastnormaltime = 0
         self._dirty = False
 
     def copy(self, source, dest):
@@ -418,7 +418,7 @@
             delattr(self, "_dirs")
         self._copymap = {}
         self._pl = [nullid, nullid]
-        self._lastnormaltime = None
+        self._lastnormaltime = 0
         self._dirty = True
 
     def rebuild(self, parent, files):
@@ -466,7 +466,7 @@
             write(f)
         st.write(cs.getvalue())
         st.close()
-        self._lastnormaltime = None
+        self._lastnormaltime = 0
         self._dirty = self._dirtypl = False
 
     def _dirignore(self, f):
--- a/mercurial/discovery.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/discovery.py	Mon Jan 09 20:16:57 2012 -0600
@@ -67,25 +67,45 @@
     on circumstances:
 
     If we are not going to push anything, return a tuple (None,
-    outgoing) where outgoing is 0 if there are no outgoing
+    outgoing, common) where outgoing is 0 if there are no outgoing
     changesets and 1 if there are, but we refuse to push them
-    (e.g. would create new remote heads).
+    (e.g. would create new remote heads). The third element "common"
+    is the list of heads of the common set between local and remote.
 
-    Otherwise, return a tuple (changegroup, remoteheads), where
-    changegroup is a readable file-like object whose read() returns
-    successive changegroup chunks ready to be sent over the wire and
-    remoteheads is the list of remote heads.'''
+    Otherwise, return a tuple (changegroup, remoteheads, futureheads),
+    where changegroup is a readable file-like object whose read()
+    returns successive changegroup chunks ready to be sent over the
+    wire, remoteheads is the list of remote heads and futureheads is
+    the list of heads of the common set between local and remote to
+    be after push completion.
+    '''
     commoninc = findcommonincoming(repo, remote, force=force)
     common, revs = findcommonoutgoing(repo, remote, onlyheads=revs,
                                       commoninc=commoninc, force=force)
     _common, inc, remoteheads = commoninc
 
     cl = repo.changelog
-    outg = cl.findmissing(common, revs)
+    alloutg = cl.findmissing(common, revs)
+    outg = []
+    secret = []
+    for o in alloutg:
+        if repo[o].phase() >= 2:
+            secret.append(o)
+        else:
+            outg.append(o)
 
     if not outg:
-        repo.ui.status(_("no changes found\n"))
-        return None, 1
+        if secret:
+            repo.ui.status(_("no changes to push but %i secret changesets\n")
+                           % len(secret))
+        else:
+            repo.ui.status(_("no changes found\n"))
+        return None, 1, common
+
+    if secret:
+        # recompute target revs
+        revs = [ctx.node() for ctx in repo.set('heads(::(%ld))',
+                                               map(repo.changelog.rev, outg))]
 
     if not force and remoteheads != [nullid]:
         if remote.capable('branchmap'):
@@ -189,4 +209,10 @@
         cg = repo._changegroup(outg, 'push')
     else:
         cg = repo.getbundle('push', heads=revs, common=common)
-    return cg, remoteheads
+    # no need to compute outg ancestor. All node in outg have either:
+    # - parents in outg
+    # - parents in common
+    # - nullid parent
+    rset = repo.set('heads(%ln + %ln)', common, outg)
+    futureheads = [ctx.node() for ctx in rset]
+    return cg, remoteheads, futureheads
--- a/mercurial/dispatch.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/dispatch.py	Mon Jan 09 20:16:57 2012 -0600
@@ -24,7 +24,7 @@
 
 def run():
     "run the command in sys.argv"
-    sys.exit(dispatch(request(sys.argv[1:])))
+    sys.exit((dispatch(request(sys.argv[1:])) or 0) & 255)
 
 def dispatch(req):
     "run the command specified in req.args"
@@ -259,7 +259,6 @@
                 return 1
             self.fn = fn
             self.badalias = True
-
             return
 
         if self.definition.startswith('!'):
@@ -584,7 +583,7 @@
         raise util.Abort(_("option --cwd may not be abbreviated!"))
     if options["repository"]:
         raise util.Abort(_(
-            "Option -R has to be separated from other options (e.g. not -qR) "
+            "option -R has to be separated from other options (e.g. not -qR) "
             "and --repository may only be abbreviated as --repo!"))
 
     if options["encoding"]:
--- a/mercurial/encoding.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/encoding.py	Mon Jan 09 20:16:57 2012 -0600
@@ -105,7 +105,7 @@
                 return localstr(u.encode('UTF-8'), r)
 
         except LookupError, k:
-            raise error.Abort("%s, please check your locale settings" % k)
+            raise error.Abort(k, hint="please check your locale settings")
         except UnicodeDecodeError:
             pass
     u = s.decode("utf-8", "replace") # last ditch
@@ -132,7 +132,7 @@
         sub = s[max(0, inst.start - 10):inst.start + 10]
         raise error.Abort("decoding near '%s': %s!" % (sub, inst))
     except LookupError, k:
-        raise error.Abort("%s, please check your locale settings" % k)
+        raise error.Abort(k, hint="please check your locale settings")
 
 # How to treat ambiguous-width characters. Set to 'wide' to treat as wide.
 wide = (os.environ.get("HGENCODINGAMBIGUOUS", "narrow") == "wide"
--- a/mercurial/filemerge.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/filemerge.py	Mon Jan 09 20:16:57 2012 -0600
@@ -142,18 +142,12 @@
         f.close()
         return name
 
-    def isbin(ctx):
-        try:
-            return util.binary(ctx.data())
-        except IOError:
-            return False
-
     if not fco.cmp(fcd): # files identical?
         return None
 
     ui = repo.ui
     fd = fcd.path()
-    binary = isbin(fcd) or isbin(fco) or isbin(fca)
+    binary = fcd.isbinary() or fco.isbinary() or fca.isbinary()
     symlink = 'l' in fcd.flags() + fco.flags()
     tool, toolpath = _picktool(repo, ui, fd, binary, symlink)
     ui.debug("picked tool '%s' for %s (binary %s symlink %s)\n" %
@@ -262,7 +256,11 @@
         _matcheol(repo.wjoin(fd), back)
 
     if r:
-        ui.warn(_("merging %s failed!\n") % fd)
+        if tool == "internal:merge":
+            ui.warn(_("merging %s incomplete! "
+                      "(edit conflicts, then use 'hg resolve --mark')\n") % fd)
+        else:
+            ui.warn(_("merging %s failed!\n") % fd)
     else:
         os.unlink(back)
 
--- a/mercurial/hbisect.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/hbisect.py	Mon Jan 09 20:16:57 2012 -0600
@@ -179,7 +179,7 @@
         # that's because the bisection can go either way
         range = '( bisect(bad)::bisect(good) | bisect(good)::bisect(bad) )'
 
-        _t = [c.rev() for c in repo.set('bisect(good)::bisect(bad)')]
+        _t = repo.revs('bisect(good)::bisect(bad)')
         # The sets of topologically good or bad csets
         if len(_t) == 0:
             # Goods are topologically after bads
@@ -206,22 +206,21 @@
         ignored = '( ( (%s) | (%s) ) - (%s) )' % (iba, iga, range)
 
         if status == 'range':
-            return [c.rev() for c in repo.set(range)]
+            return repo.revs(range)
         elif status == 'pruned':
-            return [c.rev() for c in repo.set(pruned)]
+            return repo.revs(pruned)
         elif status == 'untested':
-            return [c.rev() for c in repo.set(untested)]
+            return repo.revs(untested)
         elif status == 'ignored':
-            return [c.rev() for c in repo.set(ignored)]
+            return repo.revs(ignored)
         elif status == "goods":
-            return [c.rev() for c in repo.set(goods)]
+            return repo.revs(goods)
         elif status == "bads":
-            return [c.rev() for c in repo.set(bads)]
-
+            return repo.revs(bads)
         else:
             raise error.ParseError(_('invalid bisect state'))
 
-def label(repo, node, short=False):
+def label(repo, node):
     rev = repo.changelog.rev(node)
 
     # Try explicit sets
--- a/mercurial/help/config.txt	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/help/config.txt	Mon Jan 09 20:16:57 2012 -0600
@@ -227,6 +227,24 @@
    processed before shell aliases and will thus not be passed to
    aliases.
 
+
+``annotate``
+""""""""""""
+
+Settings used when displaying file annotations. All values are
+Booleans and default to False. See ``diff`` section for related
+options for the diff command.
+
+``ignorews``
+    Ignore white space when comparing lines.
+
+``ignorewsamount``
+    Ignore changes in the amount of white space.
+
+``ignoreblanklines``
+    Ignore changes whose lines are all blank.
+
+
 ``auth``
 """"""""
 
@@ -364,8 +382,9 @@
 ``diff``
 """"""""
 
-Settings used when displaying diffs. Everything except for ``unified`` is a
-Boolean and defaults to False.
+Settings used when displaying diffs. Everything except for ``unified``
+is a Boolean and defaults to False. See ``annotate`` section for
+related options for the annotate command.
 
 ``git``
     Use git extended diff format.
--- a/mercurial/help/subrepos.txt	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/help/subrepos.txt	Mon Jan 09 20:16:57 2012 -0600
@@ -73,8 +73,10 @@
 -----------------------------------
 
 :add: add does not recurse in subrepos unless -S/--subrepos is
-    specified. Git and Subversion subrepositories are currently
-    silently ignored.
+    specified.  However, if you specify the full path of a file in a
+    subrepo, it will be added even without -S/--subrepos specified.
+    Git and Subversion subrepositories are currently silently
+    ignored.
 
 :archive: archive does not recurse in subrepositories unless
     -S/--subrepos is specified.
@@ -93,6 +95,9 @@
     elements. Git and Subversion subrepositories are currently
     silently ignored.
 
+:forget: forget currently only handles exact file matches in subrepos.
+    Git and Subversion subrepositories are currently silently ignored.
+
 :incoming: incoming does not recurse in subrepos unless -S/--subrepos
     is specified. Git and Subversion subrepositories are currently
     silently ignored.
--- a/mercurial/hg.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/hg.py	Mon Jan 09 20:16:57 2012 -0600
@@ -183,7 +183,10 @@
     try:
         hardlink = None
         num = 0
+        srcpublishing = srcrepo.ui.configbool('phases', 'publish', True)
         for f in srcrepo.store.copylist():
+            if srcpublishing and f.endswith('phaseroots'):
+                continue
             src = os.path.join(srcrepo.sharedpath, f)
             dst = os.path.join(destpath, f)
             dstbase = os.path.dirname(dst)
@@ -353,6 +356,21 @@
         if dircleanup:
             dircleanup.close()
 
+        # clone all bookmarks
+        if destrepo.local() and srcrepo.capable("pushkey"):
+            rb = srcrepo.listkeys('bookmarks')
+            for k, n in rb.iteritems():
+                try:
+                    m = destrepo.lookup(n)
+                    destrepo._bookmarks[k] = m
+                except error.RepoLookupError:
+                    pass
+            if rb:
+                bookmarks.write(destrepo)
+        elif srcrepo.local() and destrepo.capable("pushkey"):
+            for k, n in srcrepo._bookmarks.iteritems():
+                destrepo.pushkey('bookmarks', k, '', hex(n))
+
         if destrepo.local():
             fp = destrepo.opener("hgrc", "w", text=True)
             fp.write("[paths]\n")
@@ -381,21 +399,6 @@
                 destrepo.ui.status(_("updating to branch %s\n") % bn)
                 _update(destrepo, uprev)
 
-        # clone all bookmarks
-        if destrepo.local() and srcrepo.capable("pushkey"):
-            rb = srcrepo.listkeys('bookmarks')
-            for k, n in rb.iteritems():
-                try:
-                    m = destrepo.lookup(n)
-                    destrepo._bookmarks[k] = m
-                except error.RepoLookupError:
-                    pass
-            if rb:
-                bookmarks.write(destrepo)
-        elif srcrepo.local() and destrepo.capable("pushkey"):
-            for k, n in srcrepo._bookmarks.iteritems():
-                destrepo.pushkey('bookmarks', k, '', hex(n))
-
         return srcrepo, destrepo
     finally:
         release(srclock, destlock)
--- a/mercurial/hgweb/webcommands.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/hgweb/webcommands.py	Mon Jan 09 20:16:57 2012 -0600
@@ -12,7 +12,7 @@
 from mercurial.util import binary
 from common import paritygen, staticfile, get_contact, ErrorResponse
 from common import HTTP_OK, HTTP_FORBIDDEN, HTTP_NOT_FOUND
-from mercurial import graphmod
+from mercurial import graphmod, patch
 from mercurial import help as helpmod
 from mercurial.i18n import _
 
@@ -124,7 +124,8 @@
 
     def changelist(**map):
         count = 0
-        qw = query.lower().split()
+        lower = encoding.lower
+        qw = lower(query).split()
 
         def revgen():
             for i in xrange(len(web.repo) - 1, 0, -100):
@@ -139,9 +140,9 @@
         for ctx in revgen():
             miss = 0
             for q in qw:
-                if not (q in ctx.user().lower() or
-                        q in ctx.description().lower() or
-                        q in " ".join(ctx.files()).lower()):
+                if not (q in lower(ctx.user()) or
+                        q in lower(ctx.description()) or
+                        q in lower(" ".join(ctx.files()))):
                     miss = 1
                     break
             if miss:
@@ -576,6 +577,7 @@
     fctx = webutil.filectx(web.repo, req)
     f = fctx.path()
     parity = paritygen(web.stripecount)
+    diffopts = patch.diffopts(web.repo.ui, untrusted=True, section='annotate')
 
     def annotate(**map):
         last = None
@@ -585,7 +587,8 @@
             lines = enumerate([((fctx.filectx(fctx.filerev()), 1),
                                 '(binary:%s)' % mt)])
         else:
-            lines = enumerate(fctx.annotate(follow=True, linenumber=True))
+            lines = enumerate(fctx.annotate(follow=True, linenumber=True,
+                                            diffopts=diffopts))
         for lineno, ((f, targetline), l) in lines:
             fnode = f.filenode()
 
--- a/mercurial/httpconnection.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/httpconnection.py	Mon Jan 09 20:16:57 2012 -0600
@@ -38,7 +38,7 @@
         self.write = self._data.write
         self.length = os.fstat(self._data.fileno()).st_size
         self._pos = 0
-        self._total = self.length / 1024 * 2
+        self._total = self.length // 1024 * 2
 
     def read(self, *args, **kwargs):
         try:
@@ -51,7 +51,7 @@
         # requires authentication. Since we can't know until we try
         # once whether authentication will be required, just lie to
         # the user and maybe the push succeeds suddenly at 50%.
-        self.ui.progress(_('sending'), self._pos / 1024,
+        self.ui.progress(_('sending'), self._pos // 1024,
                          unit=_('kb'), total=self._total)
         return ret
 
--- a/mercurial/keepalive.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/keepalive.py	Mon Jan 09 20:16:57 2012 -0600
@@ -9,10 +9,8 @@
 #   Lesser General Public License for more details.
 #
 #   You should have received a copy of the GNU Lesser General Public
-#   License along with this library; if not, write to the
-#      Free Software Foundation, Inc.,
-#      59 Temple Place, Suite 330,
-#      Boston, MA  02111-1307  USA
+#   License along with this library; if not, see
+#   <http://www.gnu.org/licenses/>.
 
 # This file is part of urlgrabber, a high-level cross-protocol url-grabber
 # Copyright 2002-2004 Michael D. Stenner, Ryan Tomayko
--- a/mercurial/localrepo.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/localrepo.py	Mon Jan 09 20:16:57 2012 -0600
@@ -8,7 +8,7 @@
 from node import bin, hex, nullid, nullrev, short
 from i18n import _
 import repo, changegroup, subrepo, discovery, pushkey
-import changelog, dirstate, filelog, manifest, context, bookmarks
+import changelog, dirstate, filelog, manifest, context, bookmarks, phases
 import lock, transaction, store, encoding
 import scmutil, util, extensions, hook, error, revset
 import match as matchmod
@@ -36,6 +36,7 @@
         self.wopener = scmutil.opener(self.root)
         self.baseui = baseui
         self.ui = baseui.copy()
+        self._dirtyphases = False
 
         try:
             self.ui.readconfig(self.join("hgrc"), self.root)
@@ -171,6 +172,25 @@
     def _writebookmarks(self, marks):
       bookmarks.write(self)
 
+    @filecache('phaseroots')
+    def _phaseroots(self):
+        self._dirtyphases = False
+        phaseroots = phases.readroots(self)
+        phases.filterunknown(self, phaseroots)
+        return phaseroots
+
+    @propertycache
+    def _phaserev(self):
+        cache = [0] * len(self)
+        for phase in phases.trackedphases:
+            roots = map(self.changelog.rev, self._phaseroots[phase])
+            if roots:
+                for rev in roots:
+                    cache[rev] = phase
+                for rev in self.changelog.descendants(*roots):
+                    cache[rev] = phase
+        return cache
+
     @filecache('00changelog.i', True)
     def changelog(self):
         c = changelog.changelog(self.sopener)
@@ -221,15 +241,18 @@
         for i in xrange(len(self)):
             yield i
 
+    def revs(self, expr, *args):
+        '''Return a list of revisions matching the given revset'''
+        expr = revset.formatspec(expr, *args)
+        m = revset.match(None, expr)
+        return [r for r in m(self, range(len(self)))]
+
     def set(self, expr, *args):
         '''
         Yield a context for each matching revision, after doing arg
         replacement via revset.formatspec
         '''
-
-        expr = revset.formatspec(expr, *args)
-        m = revset.match(None, expr)
-        for r in m(self, range(len(self))):
+        for r in self.revs(expr, *args):
             yield self[r]
 
     def url(self):
@@ -738,10 +761,16 @@
             util.copyfile(bkname, self.join('journal.bookmarks'))
         else:
             self.opener.write('journal.bookmarks', '')
+        phasesname = self.sjoin('phaseroots')
+        if os.path.exists(phasesname):
+            util.copyfile(phasesname, self.sjoin('journal.phaseroots'))
+        else:
+            self.sopener.write('journal.phaseroots', '')
 
         return (self.sjoin('journal'), self.join('journal.dirstate'),
                 self.join('journal.branch'), self.join('journal.desc'),
-                self.join('journal.bookmarks'))
+                self.join('journal.bookmarks'),
+                self.sjoin('journal.phaseroots'))
 
     def recover(self):
         lock = self.lock()
@@ -806,6 +835,9 @@
         if os.path.exists(self.join('undo.bookmarks')):
             util.rename(self.join('undo.bookmarks'),
                         self.join('bookmarks'))
+        if os.path.exists(self.sjoin('undo.phaseroots')):
+            util.rename(self.sjoin('undo.phaseroots'),
+                        self.sjoin('phaseroots'))
         self.invalidate()
 
         parentgone = (parents[0] not in self.changelog.nodemap or
@@ -881,6 +913,14 @@
             acquirefn()
         return l
 
+    def _afterlock(self, callback):
+        """add a callback to the current repository lock.
+
+        The callback will be executed on lock release."""
+        l = self._lockref and self._lockref()
+        if l:
+            l.postrelease.append(callback)
+
     def lock(self, wait=True):
         '''Lock the repository store (.hg/store) and return a weak reference
         to the lock. Use this before modifying the store (e.g. committing or
@@ -892,6 +932,8 @@
 
         def unlock():
             self.store.write()
+            if self._dirtyphases:
+                phases.writeroots(self)
             for k, ce in self._filecache.items():
                 if k == 'dirstate':
                     continue
@@ -1210,6 +1252,15 @@
             self.hook('pretxncommit', throw=True, node=hex(n), parent1=xp1,
                       parent2=xp2, pending=p)
             self.changelog.finalize(trp)
+            # set the new commit is proper phase
+            targetphase = self.ui.configint('phases', 'new-commit', 1)
+            if targetphase:
+                # retract boundary do not alter parent changeset.
+                # if a parent have higher the resulting phase will
+                # be compliant anyway
+                #
+                # if minimal phase was 0 we don't need to retract anything
+                phases.retractboundary(self, targetphase, [n])
             tr.close()
 
             if self._branchcache:
@@ -1464,6 +1515,7 @@
             common, fetch, rheads = tmp
             if not fetch:
                 self.ui.status(_("no changes found\n"))
+                added = []
                 result = 0
             else:
                 if heads is None and list(common) == [nullid]:
@@ -1483,8 +1535,26 @@
                                            "changegroupsubset."))
                 else:
                     cg = remote.changegroupsubset(fetch, heads, 'pull')
-                result = self.addchangegroup(cg, 'pull', remote.url(),
-                                             lock=lock)
+                clstart = len(self.changelog)
+                result = self.addchangegroup(cg, 'pull', remote.url())
+                clend = len(self.changelog)
+                added = [self.changelog.node(r) for r in xrange(clstart, clend)]
+
+
+            # Get remote phases data from remote
+            remotephases = remote.listkeys('phases')
+            publishing = bool(remotephases.get('publishing', False))
+            if remotephases and not publishing:
+                # remote is new and unpublishing
+                subset = common + added
+                rheads, rroots = phases.analyzeremotephases(self, subset,
+                                                            remotephases)
+                for phase, boundary in enumerate(rheads):
+                    phases.advanceboundary(self, phase, boundary)
+            else:
+                # Remote is old or publishing all common changesets
+                # should be seen as public
+                phases.advanceboundary(self, 0, common + added)
         finally:
             lock.release()
 
@@ -1519,24 +1589,65 @@
         if not unbundle:
             lock = remote.lock()
         try:
-            cg, remote_heads = discovery.prepush(self, remote, force, revs,
-                                                 newbranch)
-            ret = remote_heads
-            if cg is not None:
-                if unbundle:
-                    # local repo finds heads on server, finds out what
-                    # revs it must push. once revs transferred, if server
-                    # finds it has different heads (someone else won
-                    # commit/push race), server aborts.
-                    if force:
-                        remote_heads = ['force']
-                    # ssh: return remote's addchangegroup()
-                    # http: return remote's addchangegroup() or 0 for error
-                    ret = remote.unbundle(cg, remote_heads, 'push')
+            # get local lock as we might write phase data
+            locallock = self.lock()
+            try:
+                cg, remote_heads, fut = discovery.prepush(self, remote, force,
+                                                           revs, newbranch)
+                ret = remote_heads
+                # create a callback for addchangegroup.
+                # If will be used branch of the conditionnal too.
+                if cg is not None:
+                    if unbundle:
+                        # local repo finds heads on server, finds out what
+                        # revs it must push. once revs transferred, if server
+                        # finds it has different heads (someone else won
+                        # commit/push race), server aborts.
+                        if force:
+                            remote_heads = ['force']
+                        # ssh: return remote's addchangegroup()
+                        # http: return remote's addchangegroup() or 0 for error
+                        ret = remote.unbundle(cg, remote_heads, 'push')
+                    else:
+                        # we return an integer indicating remote head count change
+                        ret = remote.addchangegroup(cg, 'push', self.url())
+
+                # even when we don't push, exchanging phase data is useful
+                remotephases = remote.listkeys('phases')
+                if not remotephases: # old server or public only repo
+                    phases.advanceboundary(self, 0, fut)
+                    # don't push any phase data as there is nothing to push
                 else:
-                    # we return an integer indicating remote head count change
-                    ret = remote.addchangegroup(cg, 'push', self.url(),
-                                                lock=lock)
+                    ana = phases.analyzeremotephases(self, fut, remotephases)
+                    rheads, rroots = ana
+                    ### Apply remote phase on local
+                    if remotephases.get('publishing', False):
+                        phases.advanceboundary(self, 0, fut)
+                    else: # publish = False
+                        for phase, rpheads in enumerate(rheads):
+                            phases.advanceboundary(self, phase, rpheads)
+                    ### Apply local phase on remote
+                    #
+                    # XXX If push failed we should use strict common and not
+                    # future to avoir pushing phase data on unknown changeset.
+                    # This is to done later.
+                    futctx = [self[n] for n in fut if n != nullid]
+                    for phase in phases.trackedphases[::-1]:
+                        prevphase = phase -1
+                        # get all candidate for head in previous phase
+                        inprev = [ctx for ctx in futctx
+                                      if ctx.phase() == prevphase]
+                        for newremotehead in  self.set('heads(%ld & (%ln::))',
+                                              inprev, rroots[phase]):
+                            r = remote.pushkey('phases',
+                                               newremotehead.hex(),
+                                               str(phase), str(prevphase))
+                            if not r:
+                                self.ui.warn(_('updating phase of %s'
+                                               'to %s failed!\n')
+                                                % (newremotehead, prevphase))
+            finally:
+                locallock.release()
         finally:
             if lock is not None:
                 lock.release()
@@ -1796,12 +1907,10 @@
 
         return changegroup.unbundle10(util.chunkbuffer(gengroup()), 'UN')
 
-    def addchangegroup(self, source, srctype, url, emptyok=False, lock=None):
+    def addchangegroup(self, source, srctype, url, emptyok=False):
         """Add the changegroup returned by source.read() to this repo.
         srctype is a string like 'push', 'pull', or 'unbundle'.  url is
         the URL of the repo where this changegroup is coming from.
-        If lock is not None, the function takes ownership of the lock
-        and releases it after the changegroup is added.
 
         Return an integer summarizing the change to this repo:
         - nothing changed or no source: 0
@@ -1943,26 +2052,35 @@
                           node=hex(cl.node(clstart)), source=srctype,
                           url=url, pending=p)
 
+            added = [cl.node(r) for r in xrange(clstart, clend)]
+            publishing = self.ui.configbool('phases', 'publish', True)
+            if publishing and srctype == 'push':
+                # Old server can not push the boundary themself.
+                # This clause ensure pushed changeset are alway marked as public
+                phases.advanceboundary(self, 0, added)
+            elif srctype != 'strip': # strip should not touch boundary at all
+                phases.retractboundary(self, 1, added)
+
             # make changelog see real files again
             cl.finalize(trp)
 
             tr.close()
+
+            if changesets > 0:
+                def runhooks():
+                    # forcefully update the on-disk branch cache
+                    self.ui.debug("updating the branch cache\n")
+                    self.updatebranchcache()
+                    self.hook("changegroup", node=hex(cl.node(clstart)),
+                              source=srctype, url=url)
+
+                    for n in added:
+                        self.hook("incoming", node=hex(n), source=srctype,
+                                  url=url)
+                self._afterlock(runhooks)
+
         finally:
             tr.release()
-            if lock:
-                lock.release()
-
-        if changesets > 0:
-            # forcefully update the on-disk branch cache
-            self.ui.debug("updating the branch cache\n")
-            self.updatebranchcache()
-            self.hook("changegroup", node=hex(cl.node(clstart)),
-                      source=srctype, url=url)
-
-            for i in xrange(clstart, clend):
-                self.hook("incoming", node=hex(cl.node(i)),
-                          source=srctype, url=url)
-
         # never return 0 here:
         if dh < 0:
             return dh - 1
--- a/mercurial/lock.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/lock.py	Mon Jan 09 20:16:57 2012 -0600
@@ -35,6 +35,7 @@
         self.timeout = timeout
         self.releasefn = releasefn
         self.desc = desc
+        self.postrelease  = []
         self.lock()
 
     def __del__(self):
@@ -119,6 +120,10 @@
             return locker
 
     def release(self):
+        """release the lock and execute callback function if any
+
+        If the lock have been aquired multiple time, the actual release is
+        delayed to the last relase call."""
         if self.held > 1:
             self.held -= 1
         elif self.held == 1:
@@ -129,9 +134,10 @@
                 util.unlink(self.f)
             except OSError:
                 pass
+            for callback in self.postrelease:
+                callback()
 
 def release(*locks):
     for lock in locks:
         if lock is not None:
             lock.release()
-
--- a/mercurial/mail.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/mail.py	Mon Jan 09 20:16:57 2012 -0600
@@ -7,7 +7,7 @@
 
 from i18n import _
 import util, encoding
-import os, smtplib, socket, quopri
+import os, smtplib, socket, quopri, time
 import email.Header, email.MIMEText, email.Utils
 
 _oldheaderinit = email.Header.Header.__init__
@@ -93,15 +93,29 @@
             os.path.basename(program.split(None, 1)[0]),
             util.explainexit(ret)[0]))
 
-def connect(ui):
+def _mbox(mbox, sender, recipients, msg):
+    '''write mails to mbox'''
+    fp = open(mbox, 'ab+')
+    # Should be time.asctime(), but Windows prints 2-characters day
+    # of month instead of one. Make them print the same thing.
+    date = time.strftime('%a %b %d %H:%M:%S %Y', time.localtime())
+    fp.write('From %s %s\n' % (sender, date))
+    fp.write(msg)
+    fp.write('\n\n')
+    fp.close()
+
+def connect(ui, mbox=None):
     '''make a mail connection. return a function to send mail.
     call as sendmail(sender, list-of-recipients, msg).'''
+    if mbox:
+        open(mbox, 'wb').close()
+        return lambda s, r, m: _mbox(mbox, s, r, m)
     if ui.config('email', 'method', 'smtp') == 'smtp':
         return _smtp(ui)
     return lambda s, r, m: _sendmail(ui, s, r, m)
 
-def sendmail(ui, sender, recipients, msg):
-    send = connect(ui)
+def sendmail(ui, sender, recipients, msg, mbox=None):
+    send = connect(ui, mbox=mbox)
     return send(sender, recipients, msg)
 
 def validateconfig(ui):
@@ -117,14 +131,9 @@
                                'but not in PATH') % method)
 
 def mimetextpatch(s, subtype='plain', display=False):
-    '''If patch in utf-8 transfer-encode it.'''
-
-    enc = None
-    for line in s.splitlines():
-        if len(line) > 950:
-            s = quopri.encodestring(s)
-            enc = "quoted-printable"
-            break
+    '''Return MIME message suitable for a patch.
+    Charset will be detected as utf-8 or (possibly fake) us-ascii.
+    Transfer encodings will be used if necessary.'''
 
     cs = 'us-ascii'
     if not display:
@@ -138,7 +147,20 @@
                 # We'll go with us-ascii as a fallback.
                 pass
 
-    msg = email.MIMEText.MIMEText(s, subtype, cs)
+    return mimetextqp(s, subtype, cs)
+
+def mimetextqp(body, subtype, charset):
+    '''Return MIME message.
+    Qouted-printable transfer encoding will be used if necessary.
+    '''
+    enc = None
+    for line in body.splitlines():
+        if len(line) > 950:
+            body = quopri.encodestring(body)
+            enc = "quoted-printable"
+            break
+
+    msg = email.MIMEText.MIMEText(body, subtype, charset)
     if enc:
         del msg['Content-Transfer-Encoding']
         msg['Content-Transfer-Encoding'] = enc
@@ -230,4 +252,4 @@
     cs = 'us-ascii'
     if not display:
         s, cs = _encode(ui, s, charsets)
-    return email.MIMEText.MIMEText(s, 'plain', cs)
+    return mimetextqp(s, 'plain', cs)
--- a/mercurial/manifest.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/manifest.py	Mon Jan 09 20:16:57 2012 -0600
@@ -6,7 +6,7 @@
 # GNU General Public License version 2 or any later version.
 
 from i18n import _
-import mdiff, parsers, error, revlog
+import mdiff, parsers, error, revlog, util
 import array, struct
 
 class manifestdict(dict):
@@ -164,7 +164,7 @@
             dline = [""]
             start = 0
             # zero copy representation of addlist as a buffer
-            addbuf = buffer(addlist)
+            addbuf = util.buffer(addlist)
 
             # start with a readonly loop that finds the offset of
             # each line and creates the deltas
@@ -196,7 +196,7 @@
             # apply the delta to the addlist, and get a delta for addrevision
             cachedelta = (self.rev(p1), addlistdelta(addlist, delta))
             arraytext = addlist
-            text = buffer(arraytext)
+            text = util.buffer(arraytext)
 
         n = self.addrevision(text, transaction, link, p1, p2, cachedelta)
         self._mancache = (n, map, arraytext)
--- a/mercurial/mdiff.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/mdiff.py	Mon Jan 09 20:16:57 2012 -0600
@@ -67,14 +67,81 @@
 
 def wsclean(opts, text, blank=True):
     if opts.ignorews:
-        text = re.sub('[ \t\r]+', '', text)
+        text = bdiff.fixws(text, 1)
     elif opts.ignorewsamount:
-        text = re.sub('[ \t\r]+', ' ', text)
-        text = text.replace(' \n', '\n')
+        text = bdiff.fixws(text, 0)
     if blank and opts.ignoreblanklines:
         text = re.sub('\n+', '\n', text).strip('\n')
     return text
 
+def splitblock(base1, lines1, base2, lines2, opts):
+    # The input lines matches except for interwoven blank lines. We
+    # transform it into a sequence of matching blocks and blank blocks.
+    lines1 = [(wsclean(opts, l) and 1 or 0) for l in lines1]
+    lines2 = [(wsclean(opts, l) and 1 or 0) for l in lines2]
+    s1, e1 = 0, len(lines1)
+    s2, e2 = 0, len(lines2)
+    while s1 < e1 or s2 < e2:
+        i1, i2, btype = s1, s2, '='
+        if (i1 >= e1 or lines1[i1] == 0
+            or i2 >= e2 or lines2[i2] == 0):
+            # Consume the block of blank lines
+            btype = '~'
+            while i1 < e1 and lines1[i1] == 0:
+                i1 += 1
+            while i2 < e2 and lines2[i2] == 0:
+                i2 += 1
+        else:
+            # Consume the matching lines
+            while i1 < e1 and lines1[i1] == 1 and lines2[i2] == 1:
+                i1 += 1
+                i2 += 1
+        yield [base1 + s1, base1 + i1, base2 + s2, base2 + i2], btype
+        s1 = i1
+        s2 = i2
+
+def allblocks(text1, text2, opts=None, lines1=None, lines2=None, refine=False):
+    """Return (block, type) tuples, where block is an mdiff.blocks
+    line entry. type is '=' for blocks matching exactly one another
+    (bdiff blocks), '!' for non-matching blocks and '~' for blocks
+    matching only after having filtered blank lines. If refine is True,
+    then '~' blocks are refined and are only made of blank lines.
+    line1 and line2 are text1 and text2 split with splitnewlines() if
+    they are already available.
+    """
+    if opts is None:
+        opts = defaultopts
+    if opts.ignorews or opts.ignorewsamount:
+        text1 = wsclean(opts, text1, False)
+        text2 = wsclean(opts, text2, False)
+    diff = bdiff.blocks(text1, text2)
+    for i, s1 in enumerate(diff):
+        # The first match is special.
+        # we've either found a match starting at line 0 or a match later
+        # in the file.  If it starts later, old and new below will both be
+        # empty and we'll continue to the next match.
+        if i > 0:
+            s = diff[i - 1]
+        else:
+            s = [0, 0, 0, 0]
+        s = [s[1], s1[0], s[3], s1[2]]
+
+        # bdiff sometimes gives huge matches past eof, this check eats them,
+        # and deals with the special first match case described above
+        if s[0] != s[1] or s[2] != s[3]:
+            type = '!'
+            if opts.ignoreblanklines:
+                if lines1 is None:
+                    lines1 = splitnewlines(text1)
+                if lines2 is None:
+                    lines2 = splitnewlines(text2)
+                old = wsclean(opts, "".join(lines1[s[0]:s[1]]))
+                new = wsclean(opts, "".join(lines2[s[2]:s[3]]))
+                if old == new:
+                    type = '~'
+            yield s, type
+        yield s1, '='
+
 def diffline(revs, a, b, opts):
     parts = ['diff']
     if opts.git:
@@ -100,6 +167,9 @@
         return ""
     epoch = util.datestr((0, 0))
 
+    fn1 = util.pconvert(fn1)
+    fn2 = util.pconvert(fn2)
+
     if not opts.text and (util.binary(a) or util.binary(b)):
         if a and b and len(a) == len(b) and a == b:
             return ""
@@ -197,39 +267,15 @@
     # below finds the spaces between those matching sequences and translates
     # them into diff output.
     #
-    if opts.ignorews or opts.ignorewsamount:
-        t1 = wsclean(opts, t1, False)
-        t2 = wsclean(opts, t2, False)
-
-    diff = bdiff.blocks(t1, t2)
     hunk = None
-    for i, s1 in enumerate(diff):
-        # The first match is special.
-        # we've either found a match starting at line 0 or a match later
-        # in the file.  If it starts later, old and new below will both be
-        # empty and we'll continue to the next match.
-        if i > 0:
-            s = diff[i - 1]
-        else:
-            s = [0, 0, 0, 0]
+    for s, stype in allblocks(t1, t2, opts, l1, l2):
+        if stype != '!':
+            continue
         delta = []
-        a1 = s[1]
-        a2 = s1[0]
-        b1 = s[3]
-        b2 = s1[2]
-
+        a1, a2, b1, b2 = s
         old = l1[a1:a2]
         new = l2[b1:b2]
 
-        # bdiff sometimes gives huge matches past eof, this check eats them,
-        # and deals with the special first match case described above
-        if not old and not new:
-            continue
-
-        if opts.ignoreblanklines:
-            if wsclean(opts, "".join(old)) == wsclean(opts, "".join(new)):
-                continue
-
         astart = contextstart(a1)
         bstart = contextstart(b1)
         prev = None
@@ -272,7 +318,7 @@
 def patch(a, bin):
     if len(a) == 0:
         # skip over trivial delta header
-        return buffer(bin, 12)
+        return util.buffer(bin, 12)
     return mpatch.patches(a, [bin])
 
 # similar to difflib.SequenceMatcher.get_matching_blocks
--- a/mercurial/merge.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/merge.py	Mon Jan 09 20:16:57 2012 -0600
@@ -183,13 +183,14 @@
         pa = p1.p1()
     elif pa and repo.ui.configbool("merge", "followcopies", True):
         dirs = repo.ui.configbool("merge", "followdirs", True)
-        copy, diverge = copies.copies(repo, p1, p2, pa, dirs)
+        copy, diverge = copies.mergecopies(repo, p1, p2, pa, dirs)
         for of, fl in diverge.iteritems():
             act("divergent renames", "dr", of, fl)
 
     repo.ui.note(_("resolving manifests\n"))
-    repo.ui.debug(" overwrite %s partial %s\n" % (overwrite, bool(partial)))
-    repo.ui.debug(" ancestor %s local %s remote %s\n" % (pa, p1, p2))
+    repo.ui.debug(" overwrite: %s, partial: %s\n"
+                  % (bool(overwrite), bool(partial)))
+    repo.ui.debug(" ancestor: %s, local: %s, remote: %s\n" % (pa, p1, p2))
 
     m1, m2, ma = p1.manifest(), p2.manifest(), pa.manifest()
     copied = set(copy.values())
@@ -527,11 +528,12 @@
                                    " has no effect"))
             elif pa == p1:
                 if p1.branch() == p2.branch():
-                    raise util.Abort(_("nothing to merge (use 'hg update'"
-                                       " or check 'hg heads')"))
+                    raise util.Abort(_("nothing to merge"),
+                                     hint=_("use 'hg update' "
+                                            "or check 'hg heads'"))
             if not force and (wc.files() or wc.deleted()):
-                raise util.Abort(_("outstanding uncommitted changes "
-                                   "(use 'hg status' to list changes)"))
+                raise util.Abort(_("outstanding uncommitted changes"),
+                                 hint=_("use 'hg status' to list changes"))
             for s in wc.substate:
                 if wc.sub(s).dirty():
                     raise util.Abort(_("outstanding uncommitted changes in "
--- a/mercurial/patch.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/patch.py	Mon Jan 09 20:16:57 2012 -0600
@@ -566,8 +566,8 @@
         return self.changed | self.removed
 
 # @@ -start,len +start,len @@ or @@ -start +start @@ if len is 1
-unidesc = re.compile('@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@')
-contextdesc = re.compile('(---|\*\*\*) (\d+)(,(\d+))? (---|\*\*\*)')
+unidesc = re.compile('@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@')
+contextdesc = re.compile('(?:---|\*\*\*) (\d+)(?:,(\d+))? (?:---|\*\*\*)')
 eolmodes = ['strict', 'crlf', 'lf', 'auto']
 
 class patchfile(object):
@@ -830,7 +830,7 @@
         m = unidesc.match(self.desc)
         if not m:
             raise PatchError(_("bad hunk #%d") % self.number)
-        self.starta, foo, self.lena, self.startb, foo2, self.lenb = m.groups()
+        self.starta, self.lena, self.startb, self.lenb = m.groups()
         if self.lena is None:
             self.lena = 1
         else:
@@ -857,7 +857,7 @@
         m = contextdesc.match(self.desc)
         if not m:
             raise PatchError(_("bad hunk #%d") % self.number)
-        foo, self.starta, foo2, aend, foo3 = m.groups()
+        self.starta, aend = m.groups()
         self.starta = int(self.starta)
         if aend is None:
             aend = self.starta
@@ -890,7 +890,7 @@
         m = contextdesc.match(l)
         if not m:
             raise PatchError(_("bad hunk #%d") % self.number)
-        foo, self.startb, foo2, bend, foo3 = m.groups()
+        self.startb, bend = m.groups()
         self.startb = int(self.startb)
         if bend is None:
             bend = self.startb
@@ -1527,10 +1527,10 @@
 class GitDiffRequired(Exception):
     pass
 
-def diffopts(ui, opts=None, untrusted=False):
+def diffopts(ui, opts=None, untrusted=False, section='diff'):
     def get(key, name=None, getter=ui.configbool):
         return ((opts and opts.get(key)) or
-                getter('diff', name or key, None, untrusted=untrusted))
+                getter(section, name or key, None, untrusted=untrusted))
     return mdiff.diffopts(
         text=opts and opts.get('text'),
         git=get('git'),
@@ -1600,7 +1600,7 @@
 
     copy = {}
     if opts.git or opts.upgrade:
-        copy = copies.copies(repo, ctx1, ctx2, repo[nullid])[0]
+        copy = copies.pathcopies(ctx1, ctx2)
 
     difffn = lambda opts, losedata: trydiff(repo, revs, ctx1, ctx2,
                  modified, added, removed, copy, getfilectx, opts, losedata, prefix)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/phases.py	Mon Jan 09 20:16:57 2012 -0600
@@ -0,0 +1,282 @@
+""" Mercurial phases support code
+
+    ---
+
+    Copyright 2011 Pierre-Yves David <pierre-yves.david@ens-lyon.org>
+                   Logilab SA        <contact@logilab.fr>
+                   Augie Fackler     <durin42@gmail.com>
+
+    This software may be used and distributed according to the terms of the
+    GNU General Public License version 2 or any later version.
+
+    ---
+
+This module implements most phase logic in mercurial.
+
+
+Basic Concept
+=============
+
+A 'changeset phases' is an indicator that tells us how a changeset is
+manipulated and communicated. The details of each phase is described below,
+here we describe the properties they have in common.
+
+Like bookmarks, phases are not stored in history and thus are not permanent and
+leave no audit trail.
+
+First, no changeset can be in two phases at once. Phases are ordered, so they
+can be considered from lowest to highest. The default, lowest phase is 'public'
+- this is the normal phase of existing changesets. A child changeset can not be
+in a lower phase than its parents.
+
+These phases share a hierarchy of traits:
+
+            immutable shared
+    public:     X        X
+    draft:               X
+    secret:
+
+local commits are draft by default
+
+Phase movement and exchange
+============================
+
+Phase data are exchanged by pushkey on pull and push. Some server have a
+publish option set, we call them publishing server. Pushing to such server make
+draft changeset publish.
+
+A small list of fact/rules define the exchange of phase:
+
+* old client never changes server states
+* pull never changes server states
+* publish and old server csets are seen as public by client
+
+* Any secret changeset seens in another repository is lowered to at least draft
+
+
+Here is the final table summing up the 49 possible usecase of phase exchange:
+
+                           server
+                  old     publish      non-publish
+                 N   X    N   D   P    N   D   P
+    old client
+    pull
+     N           -   X/X  -   X/D X/P  -   X/D X/P
+     X           -   X/X  -   X/D X/P  -   X/D X/P
+    push
+     X           X/X X/X  X/P X/P X/P  X/D X/D X/P
+    new client
+    pull
+     N           -   P/X  -   P/D P/P  -   D/D P/P
+     D           -   P/X  -   P/D P/P  -   D/D P/P
+     P           -   P/X  -   P/D P/P  -   P/D P/P
+    push
+     D           P/X P/X  P/P P/P P/P  D/D D/D P/P
+     P           P/X P/X  P/P P/P P/P  P/P P/P P/P
+
+Legend:
+
+    A/B = final state on client / state on server
+
+    * N = new/not present,
+    * P = public,
+    * D = draft,
+    * X = not tracked (ie: the old client or server has no internal way of
+          recording the phase.)
+
+    passive = only pushes
+
+
+    A cell here can be read like this:
+
+    "When a new client pushes a draft changeset (D) to a publishing server
+    where it's not present (N), it's marked public on both sides (P/P)."
+
+Note: old client behave as publish server with Draft only content
+- other people see it as public
+- content is pushed as draft
+
+"""
+
+import errno
+from node import nullid, bin, hex, short
+from i18n import _
+
+allphases = range(3)
+trackedphases = allphases[1:]
+
+def readroots(repo):
+    """Read phase roots from disk"""
+    roots = [set() for i in allphases]
+    roots[0].add(nullid)
+    try:
+        f = repo.sopener('phaseroots')
+        try:
+            for line in f:
+                phase, nh = line.strip().split()
+                roots[int(phase)].add(bin(nh))
+        finally:
+            f.close()
+    except IOError, inst:
+        if inst.errno != errno.ENOENT:
+            raise
+    return roots
+
+def writeroots(repo):
+    """Write phase roots from disk"""
+    f = repo.sopener('phaseroots', 'w', atomictemp=True)
+    try:
+        for phase, roots in enumerate(repo._phaseroots):
+            for h in roots:
+                f.write('%i %s\n' % (phase, hex(h)))
+        repo._dirtyphases = False
+    finally:
+        f.close()
+
+def filterunknown(repo, phaseroots=None):
+    """remove unknown nodes from the phase boundary
+
+    no data is lost as unknown node only old data for their descentants
+    """
+    if phaseroots is None:
+        phaseroots = repo._phaseroots
+    for phase, nodes in enumerate(phaseroots):
+        missing = [node for node in nodes if node not in repo]
+        if missing:
+            for mnode in missing:
+                msg = _('Removing unknown node %(n)s from %(p)i-phase boundary')
+                repo.ui.debug(msg, {'n': short(mnode), 'p': phase})
+            nodes.symmetric_difference_update(missing)
+            repo._dirtyphases = True
+
+def advanceboundary(repo, targetphase, nodes):
+    """Add nodes to a phase changing other nodes phases if necessary.
+
+    This function move boundary *forward* this means that all nodes are set
+    in the target phase or kept in a *lower* phase.
+
+    Simplify boundary to contains phase roots only."""
+    delroots = [] # set of root deleted by this path
+    for phase in xrange(targetphase + 1, len(allphases)):
+        # filter nodes that are not in a compatible phase already
+        # XXX rev phase cache might have been invalidated by a previous loop
+        # XXX we need to be smarter here
+        nodes = [n for n in nodes if repo[n].phase() >= phase]
+        if not nodes:
+            break # no roots to move anymore
+        roots = repo._phaseroots[phase]
+        olds = roots.copy()
+        ctxs = list(repo.set('roots((%ln::) - (%ln::%ln))', olds, olds, nodes))
+        roots.clear()
+        roots.update(ctx.node() for ctx in ctxs)
+        if olds != roots:
+            # invalidate cache (we probably could be smarter here
+            if '_phaserev' in vars(repo):
+                del repo._phaserev
+            repo._dirtyphases = True
+            # some roots may need to be declared for lower phases
+            delroots.extend(olds - roots)
+        # declare deleted root in the target phase
+        if targetphase != 0:
+            retractboundary(repo, targetphase, delroots)
+
+
+def retractboundary(repo, targetphase, nodes):
+    """Set nodes back to a phase changing other nodes phases if necessary.
+
+    This function move boundary *backward* this means that all nodes are set
+    in the target phase or kept in a *higher* phase.
+
+    Simplify boundary to contains phase roots only."""
+    currentroots = repo._phaseroots[targetphase]
+    newroots = [n for n in nodes if repo[n].phase() < targetphase]
+    if newroots:
+        currentroots.update(newroots)
+        ctxs = repo.set('roots(%ln::)', currentroots)
+        currentroots.intersection_update(ctx.node() for ctx in ctxs)
+        if '_phaserev' in vars(repo):
+            del repo._phaserev
+        repo._dirtyphases = True
+
+
+def listphases(repo):
+    """List phases root for serialisation over pushkey"""
+    keys = {}
+    for phase in trackedphases:
+        for root in repo._phaseroots[phase]:
+            keys[hex(root)] = '%i' % phase
+    if repo.ui.configbool('phases', 'publish', True):
+        # Add an extra data to let remote know we are a publishing repo.
+        # Publishing repo can't just pretend they are old repo. When pushing to
+        # a publishing repo, the client still need to push phase boundary
+        #
+        # Push do not only push changeset. It also push phase data. New
+        # phase data may apply to common changeset which won't be push (as they
+        # are common).  Here is a very simple example:
+        #
+        # 1) repo A push changeset X as draft to repo B
+        # 2) repo B make changeset X public
+        # 3) repo B push to repo A. X is not pushed but the data that X as now
+        #    public should
+        #
+        # The server can't handle it on it's own as it has no idea of client
+        # phase data.
+        keys['publishing'] = 'True'
+    return keys
+
+def pushphase(repo, nhex, oldphasestr, newphasestr):
+    """List phases root for serialisation over pushkey"""
+    lock = repo.lock()
+    try:
+        currentphase = repo[nhex].phase()
+        newphase = abs(int(newphasestr)) # let's avoid negative index surprise
+        oldphase = abs(int(oldphasestr)) # let's avoid negative index surprise
+        if currentphase == oldphase and newphase < oldphase:
+            advanceboundary(repo, newphase, [bin(nhex)])
+            return 1
+        else:
+            return 0
+    finally:
+        lock.release()
+
+def visibleheads(repo):
+    """return the set of visible head of this repo"""
+    # XXX we want a cache on this
+    sroots = repo._phaseroots[2]
+    if sroots:
+        # XXX very slow revset. storing heads or secret "boundary" would help.
+        revset = repo.set('heads(not (%ln::))', sroots)
+
+        vheads = [ctx.node() for ctx in revset]
+        if not vheads:
+            vheads.append(nullid)
+    else:
+        vheads = repo.heads()
+    return vheads
+
+def analyzeremotephases(repo, subset, roots):
+    """Compute phases heads and root in a subset of node from root dict
+
+    * subset is heads of the subset
+    * roots is {<nodeid> => phase} mapping. key and value are string.
+
+    Accept unknown element input
+    """
+    # build list from dictionary
+    phaseroots = [[] for p in allphases]
+    for nhex, phase in roots.iteritems():
+        if nhex == 'publishing': # ignore data related to publish option
+            continue
+        node = bin(nhex)
+        phase = int(phase)
+        if node in repo:
+            phaseroots[phase].append(node)
+    # compute heads
+    phaseheads = [[] for p in allphases]
+    for phase in allphases[:-1]:
+        toproof = phaseroots[phase + 1]
+        revset = repo.set('heads((%ln + parents(%ln)) - (%ln::%ln))',
+                          subset, toproof, toproof, subset)
+        phaseheads[phase].extend(c.node() for c in revset)
+    return phaseheads, phaseroots
+
--- a/mercurial/posix.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/posix.py	Mon Jan 09 20:16:57 2012 -0600
@@ -238,6 +238,38 @@
     # Fallback to the likely inadequate Python builtin function.
     realpath = os.path.realpath
 
+if sys.platform == 'cygwin':
+    # workaround for cygwin, in which mount point part of path is
+    # treated as case sensitive, even though underlying NTFS is case
+    # insensitive.
+
+    # default mount points
+    cygwinmountpoints = sorted([
+            "/usr/bin",
+            "/usr/lib",
+            "/cygdrive",
+            ], reverse=True)
+
+    # use upper-ing as normcase as same as NTFS workaround
+    def normcase(path):
+        pathlen = len(path)
+        if (pathlen == 0) or (path[0] != os.sep):
+            # treat as relative
+            return encodingupper(path)
+
+        # to preserve case of mountpoint part
+        for mp in cygwinmountpoints:
+            if not path.startswith(mp):
+                continue
+
+            mplen = len(mp)
+            if mplen == pathlen: # mount point itself
+                return mp
+            if path[mplen] == os.sep:
+                return mp + encodingupper(path[mplen:])
+
+        return encodingupper(path)
+
 def shellquote(s):
     if os.sys.platform == 'OpenVMS':
         return '"%s"' % s
@@ -406,6 +438,8 @@
     def cacheable(self):
         return bool(self.stat.st_ino)
 
+    __hash__ = object.__hash__
+
     def __eq__(self, other):
         try:
             return self.stat == other.stat
--- a/mercurial/pure/bdiff.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/pure/bdiff.py	Mon Jan 09 20:16:57 2012 -0600
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2 or any later version.
 
-import struct, difflib
+import struct, difflib, re
 
 def splitnewlines(text):
     '''like str.splitlines, but only split on newlines.'''
@@ -78,3 +78,10 @@
     d = _normalizeblocks(an, bn, d)
     return [(i, i + n, j, j + n) for (i, j, n) in d]
 
+def fixws(text, allws):
+    if allws:
+        text = re.sub('[ \t\r]+', '', text)
+    else:
+        text = re.sub('[ \t\r]+', ' ', text)
+        text = text.replace(' \n', '\n')
+    return text
--- a/mercurial/pushkey.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/pushkey.py	Mon Jan 09 20:16:57 2012 -0600
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2 or any later version.
 
-import bookmarks
+import bookmarks, phases
 
 def _nslist(repo):
     n = {}
@@ -14,7 +14,9 @@
     return n
 
 _namespaces = {"namespaces": (lambda *x: False, _nslist),
-               "bookmarks": (bookmarks.pushbookmark, bookmarks.listbookmarks)}
+               "bookmarks": (bookmarks.pushbookmark, bookmarks.listbookmarks),
+               "phases": (phases.pushphase, phases.listphases),
+              }
 
 def register(namespace, pushkey, listkeys):
     _namespaces[namespace] = (pushkey, listkeys)
--- a/mercurial/repair.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/repair.py	Mon Jan 09 20:16:57 2012 -0600
@@ -6,7 +6,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2 or any later version.
 
-from mercurial import changegroup, bookmarks
+from mercurial import changegroup, bookmarks, phases
 from mercurial.node import short
 from mercurial.i18n import _
 import os
@@ -145,7 +145,9 @@
         for m in updatebm:
             bm[m] = repo['.'].node()
         bookmarks.write(repo)
-
+        # remove potential unknown phase
+        # XXX using to_strip data would be faster
+        phases.filterunknown(repo)
     except:
         if backupfile:
             ui.warn(_("strip failed, full bundle stored in '%s'\n")
--- a/mercurial/revset.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/revset.py	Mon Jan 09 20:16:57 2012 -0600
@@ -11,6 +11,7 @@
 import bookmarks as bookmarksmod
 import match as matchmod
 from i18n import _
+import encoding
 
 elements = {
     "(": (20, ("group", 1, ")"), ("func", 1, ")")),
@@ -233,8 +234,8 @@
     Alias for ``user(string)``.
     """
     # i18n: "author" is a keyword
-    n = getstring(x, _("author requires a string")).lower()
-    return [r for r in subset if n in repo[r].user().lower()]
+    n = encoding.lower(getstring(x, _("author requires a string")))
+    return [r for r in subset if n in encoding.lower(repo[r].user())]
 
 def bisect(repo, subset, x):
     """``bisect(string)``
@@ -376,11 +377,11 @@
     Search commit message for string. The match is case-insensitive.
     """
     # i18n: "desc" is a keyword
-    ds = getstring(x, _("desc requires a string")).lower()
+    ds = encoding.lower(getstring(x, _("desc requires a string")))
     l = []
     for r in subset:
         c = repo[r]
-        if ds in c.description().lower():
+        if ds in encoding.lower(c.description()):
             l.append(r)
     return l
 
@@ -522,12 +523,12 @@
     string. The match is case-insensitive.
     """
     # i18n: "keyword" is a keyword
-    kw = getstring(x, _("keyword requires a string")).lower()
+    kw = encoding.lower(getstring(x, _("keyword requires a string")))
     l = []
     for r in subset:
         c = repo[r]
         t = " ".join(c.files() + [c.user(), c.description()])
-        if kw in t.lower():
+        if kw in encoding.lower(t):
             l.append(r)
     return l
 
@@ -1107,7 +1108,7 @@
             return '(0-0)' # a minimal way to represent an empty set
         if l == 1:
             return argtype(t, s[0])
-        m = l / 2
+        m = l // 2
         return '(%s or %s)' % (listexp(s[:m], t), listexp(s[m:], t))
 
     ret = ''
@@ -1127,7 +1128,7 @@
                 # a list of some type
                 pos += 1
                 d = expr[pos]
-                ret += listexp(args[arg], d)
+                ret += listexp(list(args[arg]), d)
                 arg += 1
             else:
                 raise util.Abort('unexpected revspec format character %s' % d)
--- a/mercurial/scmutil.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/scmutil.py	Mon Jan 09 20:16:57 2012 -0600
@@ -103,7 +103,7 @@
                 if p in lparts[1:]:
                     pos = lparts.index(p)
                     base = os.path.join(*parts[:pos])
-                    raise util.Abort(_('path %r is inside nested repo %r')
+                    raise util.Abort(_("path '%s' is inside nested repo %r")
                                      % (path, base))
 
         normparts = util.splitpath(normpath)
@@ -133,7 +133,7 @@
                 elif (stat.S_ISDIR(st.st_mode) and
                       os.path.isdir(os.path.join(curpath, '.hg'))):
                     if not self.callback or not self.callback(curpath):
-                        raise util.Abort(_('path %r is inside nested repo %r') %
+                        raise util.Abort(_("path '%s' is inside nested repo %r") %
                                          (path, prefix))
             prefixes.append(normprefix)
             parts.pop()
@@ -313,8 +313,8 @@
             try:
                 name_st = os.stat(name)
             except OSError:
-                break
-            if util.samestat(name_st, root_st):
+                name_st = None
+            if name_st and util.samestat(name_st, root_st):
                 if not rel:
                     # name was actually the same as root (maybe a symlink)
                     return ''
--- a/mercurial/setdiscovery.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/setdiscovery.py	Mon Jan 09 20:16:57 2012 -0600
@@ -9,6 +9,7 @@
 from node import nullid
 from i18n import _
 import random, collections, util, dagutil
+import phases
 
 def _updatesample(dag, nodes, sample, always, quicksamplesize=0):
     # if nodes is empty we scan the entire graph
@@ -99,7 +100,7 @@
     sample = ownheads
     if remote.local():
         # stopgap until we have a proper localpeer that supports batch()
-        srvheadhashes = remote.heads()
+        srvheadhashes = phases.visibleheads(remote)
         yesno = remote.known(dag.externalizeall(sample))
     elif remote.capable('batch'):
         batch = remote.batch()
--- a/mercurial/simplemerge.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/simplemerge.py	Mon Jan 09 20:16:57 2012 -0600
@@ -11,8 +11,7 @@
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
 
 # mbp: "you know that thing where cvs gives you conflict markers?"
 # s: "i hate that."
--- a/mercurial/sshrepo.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/sshrepo.py	Mon Jan 09 20:16:57 2012 -0600
@@ -5,6 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2 or any later version.
 
+import re
 from i18n import _
 import util, error, wireproto
 
@@ -18,6 +19,12 @@
         if self.repo:
             self.release()
 
+def _serverquote(s):
+    '''quote a string for the remote shell ... which we assume is sh'''
+    if re.match('[a-zA-Z0-9@%_+=:,./-]*$', s):
+        return s
+    return "'%s'" % s.replace("'", "'\\''")
+
 class sshrepository(wireproto.wirerepository):
     def __init__(self, ui, path, create=False):
         self._url = path
@@ -40,9 +47,9 @@
         args = util.sshargs(sshcmd, self.host, self.user, self.port)
 
         if create:
-            cmd = '%s %s "%s init %s"'
-            cmd = cmd % (sshcmd, args, remotecmd, self.path)
-
+            cmd = '%s %s %s' % (sshcmd, args,
+                util.shellquote("%s init %s" %
+                    (_serverquote(remotecmd), _serverquote(self.path))))
             ui.note(_('running %s\n') % cmd)
             res = util.system(cmd)
             if res != 0:
@@ -57,11 +64,11 @@
         # cleanup up previous run
         self.cleanup()
 
-        cmd = '%s %s "%s -R %s serve --stdio"'
-        cmd = cmd % (sshcmd, args, remotecmd, self.path)
-
+        cmd = '%s %s %s' % (sshcmd, args,
+            util.shellquote("%s -R %s serve --stdio" %
+                (_serverquote(remotecmd), _serverquote(self.path))))
+        ui.note(_('running %s\n') % cmd)
         cmd = util.quotecommand(cmd)
-        ui.note(_('running %s\n') % cmd)
         self.pipeo, self.pipei, self.pipee = util.popen3(cmd)
 
         # skip any noise generated by remote shell
--- a/mercurial/sshserver.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/sshserver.py	Mon Jan 09 20:16:57 2012 -0600
@@ -142,8 +142,8 @@
 
         self.sendresponse("")
         cg = changegroup.unbundle10(self.fin, "UN")
-        r = self.repo.addchangegroup(cg, 'serve', self._client(),
-                                     lock=self.lock)
+        r = self.repo.addchangegroup(cg, 'serve', self._client())
+        self.lock.release()
         return str(r)
 
     def _client(self):
--- a/mercurial/store.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/store.py	Mon Jan 09 20:16:57 2012 -0600
@@ -232,7 +232,7 @@
         mode = None
     return mode
 
-_data = 'data 00manifest.d 00manifest.i 00changelog.d 00changelog.i'
+_data = 'data 00manifest.d 00manifest.i 00changelog.d 00changelog.i phaseroots'
 
 class basicstore(object):
     '''base class for local repository stores'''
@@ -409,7 +409,7 @@
             self.fncache.rewrite(existing)
 
     def copylist(self):
-        d = ('data dh fncache'
+        d = ('data dh fncache phaseroots'
              ' 00manifest.d 00manifest.i 00changelog.d 00changelog.i')
         return (['requires', '00changelog.i'] +
                 ['store/' + f for f in d.split()])
--- a/mercurial/subrepo.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/subrepo.py	Mon Jan 09 20:16:57 2012 -0600
@@ -303,7 +303,7 @@
         """merge currently-saved state with the new state."""
         raise NotImplementedError
 
-    def push(self, force):
+    def push(self, opts):
         """perform whatever action is analogous to 'hg push'
 
         This may be a no-op on some systems.
@@ -353,6 +353,15 @@
                         unit=_('files'), total=total)
         ui.progress(_('archiving (%s)') % relpath, None)
 
+    def walk(self, match):
+        '''
+        walk recursively through the directory tree, finding all files
+        matched by the match function
+        '''
+        pass
+
+    def forget(self, files):
+        pass
 
 class hgsubrepo(abstractsubrepo):
     def __init__(self, ctx, path, state):
@@ -475,7 +484,8 @@
                 self._repo.ui.status(_('pulling subrepo %s from %s\n')
                                      % (subrelpath(self), srcurl))
                 self._repo.pull(other)
-            bookmarks.updatefromremote(self._repo.ui, self._repo, other)
+            bookmarks.updatefromremote(self._repo.ui, self._repo, other,
+                                       srcurl)
 
     def get(self, state, overwrite=False):
         self._get(state)
@@ -509,19 +519,23 @@
         else:
             mergefunc()
 
-    def push(self, force):
+    def push(self, opts):
+        force = opts.get('force')
+        newbranch = opts.get('new_branch')
+        ssh = opts.get('ssh')
+
         # push subrepos depth-first for coherent ordering
         c = self._repo['']
         subs = c.substate # only repos that are committed
         for s in sorted(subs):
-            if not c.sub(s).push(force):
+            if not c.sub(s).push(opts):
                 return False
 
         dsturl = _abssource(self._repo, True)
         self._repo.ui.status(_('pushing subrepo %s to %s\n') %
             (subrelpath(self), dsturl))
-        other = hg.peer(self._repo.ui, {}, dsturl)
-        return self._repo.push(other, force)
+        other = hg.peer(self._repo.ui, {'ssh': ssh}, dsturl)
+        return self._repo.push(other, force, newbranch=newbranch)
 
     def outgoing(self, ui, dest, opts):
         return hg.outgoing(ui, self._repo, _abssource(self._repo, True), opts)
@@ -543,6 +557,13 @@
         ctx = self._repo[rev]
         return ctx.flags(name)
 
+    def walk(self, match):
+        ctx = self._repo[None]
+        return ctx.walk(match)
+
+    def forget(self, files):
+        ctx = self._repo[None]
+        ctx.forget(files)
 
 class svnsubrepo(abstractsubrepo):
     def __init__(self, ctx, path, state):
@@ -714,7 +735,7 @@
             if _updateprompt(self._ui, self, dirty, self._wcrev(), new):
                 self.get(state, False)
 
-    def push(self, force):
+    def push(self, opts):
         # push is a no-op for SVN
         return True
 
@@ -1008,7 +1029,9 @@
         else:
             mergefunc()
 
-    def push(self, force):
+    def push(self, opts):
+        force = opts.get('force')
+
         if not self._state[1]:
             return True
         if self._gitmissing():
--- a/mercurial/templatekw.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/templatekw.py	Mon Jan 09 20:16:57 2012 -0600
@@ -275,6 +275,10 @@
     """
     return ctx.hex()
 
+def showphase(repo, ctx, templ, **args):
+    """:rev: Integer. The changeset phase."""
+    return ctx.phase()
+
 def showrev(repo, ctx, templ, **args):
     """:rev: Integer. The repository-local changeset revision number."""
     return ctx.rev()
@@ -312,6 +316,7 @@
     'latesttagdistance': showlatesttagdistance,
     'manifest': showmanifest,
     'node': shownode,
+    'phase': showphase,
     'rev': showrev,
     'tags': showtags,
 }
--- a/mercurial/util.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/util.py	Mon Jan 09 20:16:57 2012 -0600
@@ -77,6 +77,11 @@
 
 # Python compatibility
 
+_notset = object()
+
+def safehasattr(thing, attr):
+    return getattr(thing, attr, _notset) is not _notset
+
 def sha1(s=''):
     '''
     Low-overhead wrapper around Python's SHA support
@@ -90,10 +95,6 @@
 
     return _fastsha1(s)
 
-_notset = object()
-def safehasattr(thing, attr):
-    return getattr(thing, attr, _notset) is not _notset
-
 def _fastsha1(s=''):
     # This function will import sha1 from hashlib or sha (whichever is
     # available) and overwrite itself with it on the first call.
@@ -106,18 +107,15 @@
     _fastsha1 = sha1 = _sha1
     return _sha1(s)
 
-import __builtin__
-
-if sys.version_info[0] < 3:
-    def fakebuffer(sliceable, offset=0):
-        return sliceable[offset:]
-else:
-    def fakebuffer(sliceable, offset=0):
-        return memoryview(sliceable)[offset:]
 try:
-    buffer
+    buffer = buffer
 except NameError:
-    __builtin__.buffer = fakebuffer
+    if sys.version_info[0] < 3:
+        def buffer(sliceable, offset=0):
+            return sliceable[offset:]
+    else:
+        def buffer(sliceable, offset=0):
+            return memoryview(sliceable)[offset:]
 
 import subprocess
 closefds = os.name == 'posix'
@@ -616,20 +614,17 @@
 def fspath(name, root):
     '''Get name in the case stored in the filesystem
 
-    The name is either relative to root, or it is an absolute path starting
-    with root. Note that this function is unnecessary, and should not be
+    The name should be relative to root, and be normcase-ed for efficiency.
+
+    Note that this function is unnecessary, and should not be
     called, for case-sensitive filesystems (simply because it's expensive).
 
-    Both name and root should be normcase-ed.
+    The root should be normcase-ed, too.
     '''
-    # If name is absolute, make it relative
-    if name.startswith(root):
-        l = len(root)
-        if name[l] == os.sep or name[l] == os.altsep:
-            l = l + 1
-        name = name[l:]
-
-    if not os.path.lexists(os.path.join(root, name)):
+    def find(p, contents):
+        for n in contents:
+            if normcase(n) == p:
+                return n
         return None
 
     seps = os.sep
@@ -649,14 +644,15 @@
             _fspathcache[dir] = os.listdir(dir)
         contents = _fspathcache[dir]
 
-        lenp = len(part)
-        for n in contents:
-            if lenp == len(n) and normcase(n) == part:
-                result.append(n)
-                break
-        else:
-            # Cannot happen, as the file exists!
-            result.append(part)
+        found = find(part, contents)
+        if not found:
+            # retry "once per directory" per "dirstate.walk" which
+            # may take place for each patches of "hg qpush", for example
+            contents = os.listdir(dir)
+            _fspathcache[dir] = contents
+            found = find(part, contents)
+
+        result.append(found or part)
         dir = os.path.join(dir, part)
 
     return ''.join(result)
@@ -1502,7 +1498,7 @@
     """
 
     _safechars = "!~*'()+"
-    _safepchars = "/!~*'()+"
+    _safepchars = "/!~*'()+:"
     _matchscheme = re.compile(r'^[a-zA-Z0-9+.\-]+:').match
 
     def __init__(self, path, parsequery=True, parsefragment=True):
@@ -1614,8 +1610,8 @@
 
         Examples:
 
-        >>> str(url('http://user:pw@host:80/?foo#bar'))
-        'http://user:pw@host:80/?foo#bar'
+        >>> str(url('http://user:pw@host:80/c:/bob?fo:oo#ba:ar'))
+        'http://user:pw@host:80/c:/bob?fo:oo#ba:ar'
         >>> str(url('http://user:pw@host:80/?foo=bar&baz=42'))
         'http://user:pw@host:80/?foo=bar&baz=42'
         >>> str(url('http://user:pw@host:80/?foo=bar%3dbaz'))
@@ -1637,7 +1633,7 @@
         >>> str(url('file:///tmp/foo/bar'))
         'file:///tmp/foo/bar'
         >>> str(url('file:///c:/tmp/foo/bar'))
-        'file:///c%3A/tmp/foo/bar'
+        'file:///c:/tmp/foo/bar'
         >>> print url(r'bundle:foo\bar')
         bundle:foo\bar
         """
--- a/mercurial/windows.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/windows.py	Mon Jan 09 20:16:57 2012 -0600
@@ -26,7 +26,7 @@
 unlink = win32.unlink
 
 nulldev = 'NUL:'
-umask = 002
+umask = 0022
 
 # wrap osutil.posixfile to provide friendlier exceptions
 def posixfile(name, mode='r', buffering=-1):
--- a/mercurial/wireproto.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/mercurial/wireproto.py	Mon Jan 09 20:16:57 2012 -0600
@@ -10,6 +10,7 @@
 from node import bin, hex
 import changegroup as changegroupmod
 import repo, error, encoding, util, store
+import phases
 
 # abstract batching support
 
@@ -239,11 +240,14 @@
                      old=encoding.fromlocal(old),
                      new=encoding.fromlocal(new)), f
         d = f.value
+        d, output = d.split('\n', 1)
         try:
             d = bool(int(d))
         except ValueError:
             raise error.ResponseError(
                 _('push failed (unexpected response):'), d)
+        for l in output.splitlines(True):
+            self.ui.status(_('remote: '), l)
         yield d
 
     @batchable
@@ -446,7 +450,7 @@
     return streamres(proto.groupchunks(cg))
 
 def heads(repo, proto):
-    h = repo.heads()
+    h = phases.visibleheads(repo)
     return encodelist(h) + "\n"
 
 def hello(repo, proto):
@@ -574,8 +578,7 @@
             gen = changegroupmod.readbundle(fp, None)
 
             try:
-                r = repo.addchangegroup(gen, 'serve', proto._client(),
-                                        lock=lock)
+                r = repo.addchangegroup(gen, 'serve', proto._client())
             except util.Abort, inst:
                 sys.stderr.write("abort: %s\n" % inst)
         finally:
--- a/setup.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/setup.py	Mon Jan 09 20:16:57 2012 -0600
@@ -44,7 +44,7 @@
     pass
 
 if isironpython:
-    print "warning: IronPython detected (no bz2 support)"
+    sys.stderr.write("warning: IronPython detected (no bz2 support)\n")
 else:
     try:
         import bz2
@@ -68,6 +68,19 @@
 from distutils.sysconfig import get_python_inc
 from distutils.version import StrictVersion
 
+convert2to3 = '--c2to3' in sys.argv
+if convert2to3:
+    try:
+        from distutils.command.build_py import build_py_2to3 as build_py
+        from lib2to3.refactor import get_fixers_from_package as getfixers
+    except ImportError:
+        if sys.version_info[0] < 3:
+            raise SystemExit("--c2to3 is only compatible with python3.")
+        raise
+    sys.path.append('contrib')
+elif sys.version_info[0] >= 3:
+    raise SystemExit("setup.py with python3 needs --c2to3 (experimental)")
+
 scripts = ['hg']
 if os.name == 'nt':
     scripts.append('contrib/win32/hg.bat')
@@ -108,6 +121,8 @@
 try:
     import py2exe
     py2exeloaded = True
+    # import py2exe's patched Distribution class
+    from distutils.core import Distribution
 except ImportError:
     py2exeloaded = False
 
@@ -186,6 +201,17 @@
 except ImportError:
     version = 'unknown'
 
+class hgbuild(build):
+    # Insert hgbuildmo first so that files in mercurial/locale/ are found
+    # when build_py is run next.
+    sub_commands = [('build_mo', None),
+    # We also need build_ext before build_py. Otherwise, when 2to3 is called (in
+    # build_py), it will not find osutil & friends, thinking that those modules are
+    # global and, consequently, making a mess, now that all module imports are
+    # global.
+                    ('build_ext', build.has_ext_modules),
+                   ] + build.sub_commands
+
 class hgbuildmo(build):
 
     description = "build translations (.mo files)"
@@ -217,13 +243,20 @@
             self.make_file([pofile], mobuildfile, spawn, (cmd,))
 
 
-# Insert hgbuildmo first so that files in mercurial/locale/ are found
-# when build_py is run next.
-build.sub_commands.insert(0, ('build_mo', None))
+class hgdist(Distribution):
+    pure = 0
 
-Distribution.pure = 0
-Distribution.global_options.append(('pure', None, "use pure (slow) Python "
-                                    "code instead of C extensions"))
+    global_options = Distribution.global_options + \
+                     [('pure', None, "use pure (slow) Python "
+                        "code instead of C extensions"),
+                      ('c2to3', None, "(experimental!) convert "
+                        "code with 2to3"),
+                     ]
+
+    def has_ext_modules(self):
+        # self.ext_modules is emptied in hgbuildpy.finalize_options which is
+        # too late for some cases
+        return not self.pure and Distribution.has_ext_modules(self)
 
 class hgbuildext(build_ext):
 
@@ -237,6 +270,9 @@
                      ext.name)
 
 class hgbuildpy(build_py):
+    if convert2to3:
+        fixer_names = sorted(set(getfixers("lib2to3.fixes") +
+                                 getfixers("hgfixes")))
 
     def finalize_options(self):
         build_py.finalize_options(self)
@@ -327,7 +363,7 @@
             fp.close()
 
             # skip binary files
-            if '\0' in data:
+            if b('\0') in data:
                 continue
 
             data = data.replace('@LIBDIR@', libdir.encode('string_escape'))
@@ -335,7 +371,8 @@
             fp.write(data)
             fp.close()
 
-cmdclass = {'build_mo': hgbuildmo,
+cmdclass = {'build': hgbuild,
+            'build_mo': hgbuildmo,
             'build_ext': hgbuildext,
             'build_py': hgbuildpy,
             'build_hgextindex': buildhgextindex,
@@ -435,6 +472,7 @@
       data_files=datafiles,
       package_data=packagedata,
       cmdclass=cmdclass,
+      distclass=hgdist,
       options=dict(py2exe=dict(packages=['hgext', 'email']),
                    bdist_mpkg=dict(zipdist=True,
                                    license='COPYING',
--- a/tests/dummyssh	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/dummyssh	Mon Jan 09 20:16:57 2012 -0600
@@ -16,5 +16,9 @@
     log.write(" %d:%s" % (i+1, arg))
 log.write("\n")
 log.close()
-r = os.system(sys.argv[2])
+hgcmd = sys.argv[2]
+if os.name == 'nt':
+    # hack to make simple unix single quote quoting work on windows
+    hgcmd = hgcmd.replace("'", '"')
+r = os.system(hgcmd)
 sys.exit(bool(r))
--- a/tests/heredoctest.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/heredoctest.py	Mon Jan 09 20:16:57 2012 -0600
@@ -1,16 +1,19 @@
-import doctest, tempfile, os, sys
-
-if __name__ == "__main__":
-    if 'TERM' in os.environ:
-        del os.environ['TERM']
-
-    fd, name = tempfile.mkstemp(suffix='hg-tst')
+import sys
 
-    try:
-        os.write(fd, sys.stdin.read())
-        os.close(fd)
-        failures, _ = doctest.testfile(name, module_relative=False)
-        if failures:
-            sys.exit(1)
-    finally:
-        os.remove(name)
+globalvars = {}
+localvars = {}
+lines = sys.stdin.readlines()
+while lines:
+    l = lines.pop(0)
+    if l.startswith('SALT'):
+        print l[:-1]
+    elif l.startswith('>>> '):
+        snippet = l[4:]
+        while lines and lines[0].startswith('... '):
+            l = lines.pop(0)
+            snippet += "\n" + l[4:]
+        c = compile(snippet, '<heredoc>', 'single')
+        try:
+            exec c in globalvars, localvars
+        except Exception, inst:
+            print repr(inst)
--- a/tests/hghave	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/hghave	Mon Jan 09 20:16:57 2012 -0600
@@ -45,7 +45,7 @@
 
 def has_cvs():
     re = r'Concurrent Versions System.*?server'
-    return matchoutput('cvs --version 2>&1', re)
+    return matchoutput('cvs --version 2>&1', re) and not has_msys()
 
 def has_darcs():
     return matchoutput('darcs --version', r'2\.[2-9]', True)
@@ -161,7 +161,7 @@
     return matchoutput('p4 -V', r'Rev\. P4/') and matchoutput('p4d -V', r'Rev\. P4D/')
 
 def has_symlink():
-    return hasattr(os, "symlink")
+    return hasattr(os, "symlink") # FIXME: should also check file system and os
 
 def has_tla():
     return matchoutput('tla --version 2>&1', r'The GNU Arch Revision')
@@ -209,6 +209,21 @@
     except ImportError:
         return False
 
+def has_windows():
+    return os.name == 'nt'
+
+def has_system_sh():
+    return os.name != 'nt'
+
+def has_serve():
+    return os.name != 'nt' # gross approximation
+
+def has_tic():
+    return matchoutput('test -x "`which tic`"', '')
+
+def has_msys():
+    return os.getenv('MSYSTEM')
+
 checks = {
     "baz": (has_baz, "GNU Arch baz client"),
     "bzr": (has_bzr, "Canonical's Bazaar client"),
@@ -231,14 +246,19 @@
     "p4": (has_p4, "Perforce server and client"),
     "pyflakes": (has_pyflakes, "Pyflakes python linter"),
     "pygments": (has_pygments, "Pygments source highlighting library"),
+    "serve": (has_serve, "platform and python can manage 'hg serve -d'"),
     "ssl": (has_ssl, "python >= 2.6 ssl module and python OpenSSL"),
     "svn": (has_svn, "subversion client and admin tools"),
     "svn13": (has_svn13, "subversion client and admin tools >= 1.3"),
     "svn15": (has_svn15, "subversion client and admin tools >= 1.5"),
     "svn-bindings": (has_svn_bindings, "subversion python bindings"),
     "symlink": (has_symlink, "symbolic links"),
+    "system-sh": (has_system_sh, "system() uses sh"),
+    "tic": (has_tic, "terminfo compiler"),
     "tla": (has_tla, "GNU Arch tla client"),
     "unix-permissions": (has_unix_permissions, "unix-style permissions"),
+    "windows": (has_windows, "Windows"),
+    "msys": (has_msys, "Windows with MSYS"),
 }
 
 def list_features():
--- a/tests/run-tests.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/run-tests.py	Mon Jan 09 20:16:57 2012 -0600
@@ -87,7 +87,7 @@
 SKIPPED_STATUS = 80
 SKIPPED_PREFIX = 'skipped: '
 FAILED_PREFIX  = 'hghave check failed: '
-PYTHON = sys.executable
+PYTHON = sys.executable.replace('\\', '/')
 IMPL_PATH = 'PYTHONPATH'
 if 'java' in sys.platform:
     IMPL_PATH = 'JYTHONPATH'
@@ -508,7 +508,7 @@
     return run(cmd, wd, options, replacements)
 
 def shtest(test, wd, options, replacements):
-    cmd = '"%s"' % test
+    cmd = '%s "%s"' % (options.shell, test)
     vlog("# Running", cmd)
     return run(cmd, wd, options, replacements)
 
@@ -521,43 +521,105 @@
 def stringescape(s):
     return escapesub(escapef, s)
 
-def transformtst(lines):
-    inblock = False
-    for l in lines:
-        if inblock:
-            if l.startswith('  $ ') or not l.startswith('  '):
-                inblock = False
-                yield '  > EOF\n'
-                yield l
-            else:
-                yield '  > ' + l[2:]
+def rematch(el, l):
+    try:
+        # ensure that the regex matches to the end of the string
+        return re.match(el + r'\Z', l)
+    except re.error:
+        # el is an invalid regex
+        return False
+
+def globmatch(el, l):
+    # The only supported special characters are * and ? plus / which also
+    # matches \ on windows. Escaping of these caracters is supported.
+    i, n = 0, len(el)
+    res = ''
+    while i < n:
+        c = el[i]
+        i += 1
+        if c == '\\' and el[i] in '*?\\/':
+            res += el[i - 1:i + 1]
+            i += 1
+        elif c == '*':
+            res += '.*'
+        elif c == '?':
+            res += '.'
+        elif c == '/' and os.name == 'nt':
+            res += '[/\\\\]'
         else:
-            if l.startswith('  >>> '):
-                inblock = True
-                yield '  $ %s -m heredoctest <<EOF\n' % PYTHON
-                yield '  > ' + l[2:]
-            else:
-                yield l
-    if inblock:
-        yield '  > EOF\n'
+            res += re.escape(c)
+    return rematch(res, l)
+
+def linematch(el, l):
+    if el == l: # perfect match (fast)
+        return True
+    if (el and
+        (el.endswith(" (re)\n") and rematch(el[:-6] + '\n', l) or
+         el.endswith(" (glob)\n") and globmatch(el[:-8] + '\n', l) or
+         el.endswith(" (esc)\n") and
+             (el[:-7].decode('string-escape') + '\n' == l or
+              el[:-7].decode('string-escape').replace('\r', '') +
+                  '\n' == l and os.name == 'nt'))):
+        return True
+    return False
 
 def tsttest(test, wd, options, replacements):
-    t = open(test)
-    out = []
-    script = []
+    # We generate a shell script which outputs unique markers to line
+    # up script results with our source. These markers include input
+    # line number and the last return code
     salt = "SALT" + str(time.time())
+    def addsalt(line, inpython):
+        if inpython:
+            script.append('%s %d 0\n' % (salt, line))
+        else:
+            script.append('echo %s %s $?\n' % (salt, line))
 
-    pos = prepos = -1
+    # After we run the shell script, we re-unify the script output
+    # with non-active parts of the source, with synchronization by our
+    # SALT line number markers. The after table contains the
+    # non-active components, ordered by line number
     after = {}
+    pos = prepos = -1
+
+    # Expected shellscript output
     expected = {}
-    for n, l in enumerate(transformtst(t)):
+
+    # We keep track of whether or not we're in a Python block so we
+    # can generate the surrounding doctest magic
+    inpython = False
+
+    f = open(test)
+    t = f.readlines()
+    f.close()
+
+    script = []
+    if os.getenv('MSYSTEM'):
+        script.append('alias pwd="pwd -W"\n')
+    for n, l in enumerate(t):
         if not l.endswith('\n'):
             l += '\n'
-        if l.startswith('  $ '): # commands
+        if l.startswith('  >>> '): # python inlines
             after.setdefault(pos, []).append(l)
             prepos = pos
             pos = n
-            script.append('echo %s %s $?\n' % (salt, n))
+            if not inpython:
+                # we've just entered a Python block, add the header
+                inpython = True
+                addsalt(prepos, False) # make sure we report the exit code
+                script.append('%s -m heredoctest <<EOF\n' % PYTHON)
+            addsalt(n, True)
+            script.append(l[2:])
+        if l.startswith('  ... '): # python inlines
+            after.setdefault(prepos, []).append(l)
+            script.append(l[2:])
+        elif l.startswith('  $ '): # commands
+            if inpython:
+                script.append("EOF\n")
+                inpython = False
+            after.setdefault(pos, []).append(l)
+            prepos = pos
+            pos = n
+            addsalt(n, False)
             script.append(l[4:])
         elif l.startswith('  > '): # continuations
             after.setdefault(prepos, []).append(l)
@@ -566,21 +628,24 @@
             # queue up a list of expected results
             expected.setdefault(pos, []).append(l[2:])
         else:
+            if inpython:
+                script.append("EOF\n")
+                inpython = False
             # non-command/result - queue up for merged output
             after.setdefault(pos, []).append(l)
 
-    t.close()
+    if inpython:
+        script.append("EOF\n")
+    addsalt(n + 1, False)
 
-    script.append('echo %s %s $?\n' % (salt, n + 1))
-
+    # Write out the script and execute it
     fd, name = tempfile.mkstemp(suffix='hg-tst')
-
     try:
         for l in script:
             os.write(fd, l)
         os.close(fd)
 
-        cmd = '"%s" "%s"' % (options.shell, name)
+        cmd = '%s "%s"' % (options.shell, name)
         vlog("# Running", cmd)
         exitcode, output = run(cmd, wd, options, replacements)
         # do not merge output if skipped, return hghave message instead
@@ -590,32 +655,7 @@
     finally:
         os.remove(name)
 
-    def rematch(el, l):
-        try:
-            # ensure that the regex matches to the end of the string
-            return re.match(el + r'\Z', l)
-        except re.error:
-            # el is an invalid regex
-            return False
-
-    def globmatch(el, l):
-        # The only supported special characters are * and ?. Escaping is
-        # supported.
-        i, n = 0, len(el)
-        res = ''
-        while i < n:
-            c = el[i]
-            i += 1
-            if c == '\\' and el[i] in '*?\\':
-                res += el[i - 1:i + 1]
-                i += 1
-            elif c == '*':
-                res += '.*'
-            elif c == '?':
-                res += '.'
-            else:
-                res += re.escape(c)
-        return rematch(res, l)
+    # Merge the script output back into a unified test
 
     pos = -1
     postout = []
@@ -627,20 +667,16 @@
 
         if lout:
             if lcmd:
+                # output block had no trailing newline, clean up
                 lout += ' (no-eol)\n'
 
+            # find the expected output at the current position
             el = None
             if pos in expected and expected[pos]:
                 el = expected[pos].pop(0)
 
-            if el == lout: # perfect match (fast)
-                postout.append("  " + lout)
-            elif (el and
-                  (el.endswith(" (re)\n") and rematch(el[:-6] + '\n', lout) or
-                   el.endswith(" (glob)\n") and globmatch(el[:-8] + '\n', lout)
-                   or el.endswith(" (esc)\n") and
-                      el.decode('string-escape') == l)):
-                postout.append("  " + el) # fallback regex/glob/esc match
+            if linematch(el, lout):
+                postout.append("  " + el)
             else:
                 if needescape(lout):
                     lout = stringescape(lout.rstrip('\n')) + " (esc)\n"
@@ -652,6 +688,7 @@
             if ret != 0:
                 postout.append("  [%s]\n" % ret)
             if pos in after:
+                # merge in non-active test bits
                 postout += after.pop(pos)
             pos = int(lcmd.split()[0])
 
@@ -832,15 +869,26 @@
 
     # Make a tmp subdirectory to work in
     testtmp = os.environ["TESTTMP"] = os.environ["HOME"] = \
-        os.path.join(HGTMP, os.path.basename(test))
+        os.path.join(HGTMP, os.path.basename(test)).replace('\\', '/')
 
-    os.mkdir(testtmp)
-    ret, out = runner(testpath, testtmp, options, [
-        (re.escape(testtmp), '$TESTTMP'),
+    replacements = [
         (r':%s\b' % options.port, ':$HGPORT'),
         (r':%s\b' % (options.port + 1), ':$HGPORT1'),
         (r':%s\b' % (options.port + 2), ':$HGPORT2'),
-        ])
+        ]
+    if os.name == 'nt':
+        replacements.append((r'\r\n', '\n'))
+        replacements.append(
+            (''.join(c.isalpha() and '[%s%s]' % (c.lower(), c.upper()) or
+                     c in '/\\' and r'[/\\]' or
+                     c.isdigit() and c or
+                     '\\' + c
+                     for c in testtmp), '$TESTTMP'))
+    else:
+        replacements.append((re.escape(testtmp), '$TESTTMP'))
+
+    os.mkdir(testtmp)
+    ret, out = runner(testpath, testtmp, options, replacements)
     vlog("# Ret was:", ret)
 
     mark = '.'
@@ -853,7 +901,7 @@
         refout = None                   # to match "out is None"
     elif os.path.exists(ref):
         f = open(ref, "r")
-        refout = list(transformtst(splitnewlines(f.read())))
+        refout = list(splitnewlines(f.read()))
         f.close()
     else:
         refout = []
--- a/tests/test-acl.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-acl.t	Mon Jan 09 20:16:57 2012 -0600
@@ -868,10 +868,10 @@
   added 3 changesets with 3 changes to 3 files
   calling hook pretxnchangegroup.acl: hgext.acl.hook
   acl: checking access for user "barney"
-  error: pretxnchangegroup.acl hook raised an exception: [Errno 2] No such file or directory: '../acl.config'
+  error: pretxnchangegroup.acl hook raised an exception: [Errno 2] *: '../acl.config' (glob)
   transaction abort!
   rollback completed
-  abort: No such file or directory: ../acl.config
+  abort: *: ../acl.config (glob)
   no rollback information available
   0:6675d58eff77
   
--- a/tests/test-add.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-add.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" no-windows || exit 80
+
   $ hg init a
   $ cd a
   $ echo a > a
@@ -86,7 +88,7 @@
   $ hg merge
   merging a
   warning: conflicts during merge.
-  merging a failed!
+  merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
@@ -121,11 +123,11 @@
   ? a.orig
 
   $ hg add c && echo "unexpected addition of missing file"
-  c: No such file or directory
+  c: * (glob)
   [1]
   $ echo c > c
   $ hg add d c && echo "unexpected addition of missing file"
-  d: No such file or directory
+  d: * (glob)
   [1]
   $ hg st
   M a
--- a/tests/test-addremove-similar.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-addremove-similar.t	Mon Jan 09 20:16:57 2012 -0600
@@ -81,7 +81,7 @@
   $ hg addremove -s80
   removing d/a
   adding d/b
-  recording removal of d/a as rename to d/b (100% similar)
+  recording removal of d/a as rename to d/b (100% similar) (glob)
   $ hg debugstate
   r   0          0 1970-01-01 00:00:00 d/a
   a   0         -1 unset               d/b
@@ -91,10 +91,10 @@
 no copies found here (since the target isn't in d
 
   $ hg addremove -s80 d
-  removing d/b
+  removing d/b (glob)
 
 copies here
 
   $ hg addremove -s80
   adding c
-  recording removal of d/a as rename to c (100% similar)
+  recording removal of d/a as rename to c (100% similar) (glob)
--- a/tests/test-addremove.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-addremove.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" no-windows || exit 80
+
   $ hg init rep
   $ cd rep
   $ mkdir dir
--- a/tests/test-alias.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-alias.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" system-sh || exit 80
+
   $ HGFOO=BAR; export HGFOO
   $ cat >> $HGRCPATH <<EOF
   > [extensions]
--- a/tests/test-annotate.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-annotate.t	Mon Jan 09 20:16:57 2012 -0600
@@ -2,7 +2,8 @@
 
 init
 
-  $ hg init
+  $ hg init repo
+  $ cd repo
 
 commit
 
@@ -253,3 +254,56 @@
   $ hg ann nosuchfile
   abort: nosuchfile: no such file in rev e9e6b4fa872f
   [255]
+
+Test annotate with whitespace options
+
+  $ cd ..
+  $ hg init repo-ws
+  $ cd repo-ws
+  $ cat > a <<EOF
+  > aa
+  > 
+  > b b
+  > EOF
+  $ hg ci -Am "adda"
+  adding a
+  $ cat > a <<EOF
+  > a  a
+  > 
+  >  
+  > b  b
+  > EOF
+  $ hg ci -m "changea"
+
+Annotate with no option
+
+  $ hg annotate a
+  1: a  a
+  0: 
+  1:  
+  1: b  b
+
+Annotate with --ignore-space-change
+
+  $ hg annotate --ignore-space-change a
+  1: a  a
+  1: 
+  0:  
+  0: b  b
+
+Annotate with --ignore-all-space
+
+  $ hg annotate --ignore-all-space a
+  0: a  a
+  0: 
+  1:  
+  0: b  b
+
+Annotate with --ignore-blank-lines (similar to no options case)
+
+  $ hg annotate --ignore-blank-lines a
+  1: a  a
+  0: 
+  1:  
+  1: b  b
+
--- a/tests/test-archive.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-archive.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
   $ hg init test
   $ cd test
   $ echo foo>foo
--- a/tests/test-audit-path.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-audit-path.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,9 +1,11 @@
+  $ "$TESTDIR/hghave" symlink || exit 80
+
   $ hg init
 
 should fail
 
   $ hg add .hg/00changelog.i
-  abort: path contains illegal component: .hg/00changelog.i
+  abort: path contains illegal component: .hg/00changelog.i (glob)
   [255]
 
   $ mkdir a
@@ -16,7 +18,7 @@
 should fail
 
   $ hg add b/b
-  abort: path 'b/b' traverses symbolic link 'b'
+  abort: path 'b/b' traverses symbolic link 'b' (glob)
   [255]
 
 should succeed
@@ -26,7 +28,7 @@
 should still fail - maybe
 
   $ hg add b/b
-  abort: path 'b/b' traverses symbolic link 'b'
+  abort: path 'b/b' traverses symbolic link 'b' (glob)
   [255]
 
 unbundle tampered bundle
@@ -78,5 +80,5 @@
   $ hg manifest -r4
   /tmp/test
   $ hg update -Cr4
-  abort: No such file or directory: $TESTTMP/target//tmp/test
+  abort: *: $TESTTMP/target//tmp/test (glob)
   [255]
--- a/tests/test-backout.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-backout.t	Mon Jan 09 20:16:57 2012 -0600
@@ -48,8 +48,8 @@
   $ hg backout -d '3 0' --merge tip --tool=true
   removing a
   changeset 3:7f6d0f120113 backs out changeset 2:de31bdc76c0d
-  $ cat a 2>/dev/null || echo cat: a: No such file or directory
-  cat: a: No such file or directory
+  $ test -f a
+  [1]
 
 across branch
 
--- a/tests/test-bad-pull.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-bad-pull.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,9 +1,11 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
   $ hg clone http://localhost:$HGPORT/ copy
   abort: error: Connection refused
   [255]
 
-  $ test -d copy || echo copy: No such file or directory
-  copy: No such file or directory
+  $ test -d copy
+  [1]
 
   $ cat > dumb.py <<EOF
   > import BaseHTTPServer, SimpleHTTPServer, os, signal
--- a/tests/test-bdiff.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-bdiff.py	Mon Jan 09 20:16:57 2012 -0600
@@ -50,3 +50,17 @@
 showdiff("x\n\nx\n\nx\n\nx\n\nz\n", "x\n\nx\n\ny\n\nx\n\ny\n\nx\n\nz\n")
 
 print "done"
+
+def testfixws(a, b, allws):
+    c = bdiff.fixws(a, allws)
+    if c != b:
+        print "*** fixws", repr(a), repr(b), allws
+        print "got:"
+        print repr(c)
+
+testfixws(" \ta\r b\t\n", "ab\n", 1)
+testfixws(" \ta\r b\t\n", " a b\n", 0)
+testfixws("", "", 1)
+testfixws("", "", 0)
+
+print "done"
--- a/tests/test-bdiff.py.out	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-bdiff.py.out	Mon Jan 09 20:16:57 2012 -0600
@@ -21,3 +21,4 @@
 6 6 'y\n\n'
 9 9 'y\n\n'
 done
+done
--- a/tests/test-bisect.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-bisect.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" system-sh || exit 80
+
   $ hg init
 
 
--- a/tests/test-bisect3.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-bisect3.t	Mon Jan 09 20:16:57 2012 -0600
@@ -14,15 +14,15 @@
   $ hg add a
   $ hg ci -u test -d '0 0' -m '0'
   $ echo '1' >a
-  $ hg ci -u test -d '0 1' -m '1'
+  $ hg ci -u test -d '1 0' -m '1'
 
 branch 2-3
 
   $ echo '2' >b
   $ hg add b
-  $ hg ci -u test -d '0 2' -m '2'
+  $ hg ci -u test -d '2 0' -m '2'
   $ echo '3' >b
-  $ hg ci -u test -d '0 3' -m '3'
+  $ hg ci -u test -d '3 0' -m '3'
 
 branch 4-8
 
@@ -30,30 +30,30 @@
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ echo '4' >c
   $ hg add c
-  $ hg ci -u test -d '0 4' -m '4'
+  $ hg ci -u test -d '4 0' -m '4'
   created new head
   $ echo '5' >c
-  $ hg ci -u test -d '0 5' -m '5'
+  $ hg ci -u test -d '5 0' -m '5'
   $ echo '6' >c
-  $ hg ci -u test -d '0 6' -m '6'
+  $ hg ci -u test -d '6 0' -m '6'
   $ echo '7' >c
-  $ hg ci -u test -d '0 7' -m '7'
+  $ hg ci -u test -d '7 0' -m '7'
   $ echo '8' >c
-  $ hg ci -u test -d '0 8' -m '8'
+  $ hg ci -u test -d '8 0' -m '8'
 
 merge
 
   $ hg merge -r 3
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
-  $ hg ci -u test -d '0 9' -m '9=8+3'
+  $ hg ci -u test -d '9 0' -m '9=8+3'
 
   $ echo '10' >a
-  $ hg ci -u test -d '0 10' -m '10'
+  $ hg ci -u test -d '10 0' -m '10'
   $ echo '11' >a
-  $ hg ci -u test -d '0 11' -m '11'
+  $ hg ci -u test -d '11 0' -m '11'
   $ echo '12' >a
-  $ hg ci -u test -d '0 12' -m '12'
+  $ hg ci -u test -d '12 0' -m '12'
 
 unrelated branch
 
@@ -61,10 +61,10 @@
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ echo '13' >d
   $ hg add d
-  $ hg ci -u test -d '0 13' -m '13'
+  $ hg ci -u test -d '13 0' -m '13'
   created new head
   $ echo '14' >d
-  $ hg ci -u test -d '0 14' -m '14'
+  $ hg ci -u test -d '14 0' -m '14'
 
 mark changesets
 
@@ -72,140 +72,140 @@
   $ hg bisect --good 4
   $ hg bisect --good 6
   $ hg bisect --bad 12
-  Testing changeset 9:8bcbdb072033 (6 changesets remaining, ~2 tests)
+  Testing changeset 9:2197c557e14c (6 changesets remaining, ~2 tests)
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg bisect --bad 10
-  Testing changeset 8:3cd112f87d77 (4 changesets remaining, ~2 tests)
+  Testing changeset 8:e74a86251f58 (4 changesets remaining, ~2 tests)
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg bisect --skip 7
-  Testing changeset 8:3cd112f87d77 (4 changesets remaining, ~2 tests)
+  Testing changeset 8:e74a86251f58 (4 changesets remaining, ~2 tests)
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
 test template
 
   $ hg log --template '{rev}:{node|short} {bisect}\n'
-  14:cecd84203acc 
-  13:86f7c8cdb6df 
-  12:a76089b5f47c bad
-  11:5c3eb122d29c bad (implicit)
-  10:b097cef2be03 bad
-  9:8bcbdb072033 untested
-  8:3cd112f87d77 untested
-  7:577e237a73bd skipped
-  6:e597fa2707c5 good
-  5:b9cea37a76bc good (implicit)
-  4:da6b357259d7 good
-  3:e7f031aee8ca ignored
-  2:b1ad1b6bcc5c ignored
-  1:37f42ae8b45e good (implicit)
+  14:cbf2f3105bbf 
+  13:e07efca37c43 
+  12:98c6b56349c0 bad
+  11:03f491376e63 bad (implicit)
+  10:c012b15e2409 bad
+  9:2197c557e14c untested
+  8:e74a86251f58 untested
+  7:a5f87041c899 skipped
+  6:7d997bedcd8d good
+  5:2dd1875f1028 good (implicit)
+  4:2a1daef14cd4 good
+  3:8417d459b90c ignored
+  2:e1355ee1f23e ignored
+  1:ce7c85e06a9f good (implicit)
   0:b4e73ffab476 good (implicit)
   $ hg log --template '{bisect|shortbisect} {rev}:{node|short}\n'
-    14:cecd84203acc
-    13:86f7c8cdb6df
-  B 12:a76089b5f47c
-  B 11:5c3eb122d29c
-  B 10:b097cef2be03
-  U 9:8bcbdb072033
-  U 8:3cd112f87d77
-  S 7:577e237a73bd
-  G 6:e597fa2707c5
-  G 5:b9cea37a76bc
-  G 4:da6b357259d7
-  I 3:e7f031aee8ca
-  I 2:b1ad1b6bcc5c
-  G 1:37f42ae8b45e
+    14:cbf2f3105bbf
+    13:e07efca37c43
+  B 12:98c6b56349c0
+  B 11:03f491376e63
+  B 10:c012b15e2409
+  U 9:2197c557e14c
+  U 8:e74a86251f58
+  S 7:a5f87041c899
+  G 6:7d997bedcd8d
+  G 5:2dd1875f1028
+  G 4:2a1daef14cd4
+  I 3:8417d459b90c
+  I 2:e1355ee1f23e
+  G 1:ce7c85e06a9f
   G 0:b4e73ffab476
 
 test style
 
   $ hg log --style bisect
-  changeset:   14:cecd84203acc
+  changeset:   14:cbf2f3105bbf
   bisect:      
   tag:         tip
   user:        test
-  date:        Wed Dec 31 23:59:46 1969 -0000
+  date:        Thu Jan 01 00:00:14 1970 +0000
   summary:     14
   
-  changeset:   13:86f7c8cdb6df
+  changeset:   13:e07efca37c43
   bisect:      
-  parent:      3:e7f031aee8ca
+  parent:      3:8417d459b90c
   user:        test
-  date:        Wed Dec 31 23:59:47 1969 -0000
+  date:        Thu Jan 01 00:00:13 1970 +0000
   summary:     13
   
-  changeset:   12:a76089b5f47c
+  changeset:   12:98c6b56349c0
   bisect:      bad
   user:        test
-  date:        Wed Dec 31 23:59:48 1969 -0000
+  date:        Thu Jan 01 00:00:12 1970 +0000
   summary:     12
   
-  changeset:   11:5c3eb122d29c
+  changeset:   11:03f491376e63
   bisect:      bad (implicit)
   user:        test
-  date:        Wed Dec 31 23:59:49 1969 -0000
+  date:        Thu Jan 01 00:00:11 1970 +0000
   summary:     11
   
-  changeset:   10:b097cef2be03
+  changeset:   10:c012b15e2409
   bisect:      bad
   user:        test
-  date:        Wed Dec 31 23:59:50 1969 -0000
+  date:        Thu Jan 01 00:00:10 1970 +0000
   summary:     10
   
-  changeset:   9:8bcbdb072033
+  changeset:   9:2197c557e14c
   bisect:      untested
-  parent:      8:3cd112f87d77
-  parent:      3:e7f031aee8ca
+  parent:      8:e74a86251f58
+  parent:      3:8417d459b90c
   user:        test
-  date:        Wed Dec 31 23:59:51 1969 -0000
+  date:        Thu Jan 01 00:00:09 1970 +0000
   summary:     9=8+3
   
-  changeset:   8:3cd112f87d77
+  changeset:   8:e74a86251f58
   bisect:      untested
   user:        test
-  date:        Wed Dec 31 23:59:52 1969 -0000
+  date:        Thu Jan 01 00:00:08 1970 +0000
   summary:     8
   
-  changeset:   7:577e237a73bd
+  changeset:   7:a5f87041c899
   bisect:      skipped
   user:        test
-  date:        Wed Dec 31 23:59:53 1969 -0000
+  date:        Thu Jan 01 00:00:07 1970 +0000
   summary:     7
   
-  changeset:   6:e597fa2707c5
+  changeset:   6:7d997bedcd8d
   bisect:      good
   user:        test
-  date:        Wed Dec 31 23:59:54 1969 -0000
+  date:        Thu Jan 01 00:00:06 1970 +0000
   summary:     6
   
-  changeset:   5:b9cea37a76bc
+  changeset:   5:2dd1875f1028
   bisect:      good (implicit)
   user:        test
-  date:        Wed Dec 31 23:59:55 1969 -0000
+  date:        Thu Jan 01 00:00:05 1970 +0000
   summary:     5
   
-  changeset:   4:da6b357259d7
+  changeset:   4:2a1daef14cd4
   bisect:      good
-  parent:      1:37f42ae8b45e
+  parent:      1:ce7c85e06a9f
   user:        test
-  date:        Wed Dec 31 23:59:56 1969 -0000
+  date:        Thu Jan 01 00:00:04 1970 +0000
   summary:     4
   
-  changeset:   3:e7f031aee8ca
+  changeset:   3:8417d459b90c
   bisect:      ignored
   user:        test
-  date:        Wed Dec 31 23:59:57 1969 -0000
+  date:        Thu Jan 01 00:00:03 1970 +0000
   summary:     3
   
-  changeset:   2:b1ad1b6bcc5c
+  changeset:   2:e1355ee1f23e
   bisect:      ignored
   user:        test
-  date:        Wed Dec 31 23:59:58 1969 -0000
+  date:        Thu Jan 01 00:00:02 1970 +0000
   summary:     2
   
-  changeset:   1:37f42ae8b45e
+  changeset:   1:ce7c85e06a9f
   bisect:      good (implicit)
   user:        test
-  date:        Wed Dec 31 23:59:59 1969 -0000
+  date:        Thu Jan 01 00:00:01 1970 +0000
   summary:     1
   
   changeset:   0:b4e73ffab476
@@ -215,18 +215,18 @@
   summary:     0
   
   $ hg log --quiet --style bisect
-    14:cecd84203acc
-    13:86f7c8cdb6df
-  B 12:a76089b5f47c
-  B 11:5c3eb122d29c
-  B 10:b097cef2be03
-  U 9:8bcbdb072033
-  U 8:3cd112f87d77
-  S 7:577e237a73bd
-  G 6:e597fa2707c5
-  G 5:b9cea37a76bc
-  G 4:da6b357259d7
-  I 3:e7f031aee8ca
-  I 2:b1ad1b6bcc5c
-  G 1:37f42ae8b45e
+    14:cbf2f3105bbf
+    13:e07efca37c43
+  B 12:98c6b56349c0
+  B 11:03f491376e63
+  B 10:c012b15e2409
+  U 9:2197c557e14c
+  U 8:e74a86251f58
+  S 7:a5f87041c899
+  G 6:7d997bedcd8d
+  G 5:2dd1875f1028
+  G 4:2a1daef14cd4
+  I 3:8417d459b90c
+  I 2:e1355ee1f23e
+  G 1:ce7c85e06a9f
   G 0:b4e73ffab476
--- a/tests/test-bookmarks-pushpull.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-bookmarks-pushpull.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
 initialize
 
   $ hg init a
@@ -32,6 +34,7 @@
      Y                         0:4e3505fd9583
   $ hg debugpushkey ../a namespaces
   bookmarks	
+  phases	
   namespaces	
   $ hg debugpushkey ../a bookmarks
   Y	4e3505fd95835d721066b76e75dbb8cc554d7f77
@@ -108,17 +111,18 @@
      foo                       -1:000000000000
      foobar                    -1:000000000000
 
-  $ hg pull ../a
-  pulling from ../a
+  $ hg pull --config paths.foo=../a foo
+  pulling from $TESTTMP/a
   searching for changes
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
-  not updating divergent bookmark X
+  divergent bookmark X stored as X@foo
   (run 'hg heads' to see heads, 'hg merge' to merge)
   $ hg book
    * X                         1:9b140be10808
+     X@foo                     2:0d2164f0ce0d
      Y                         0:4e3505fd9583
      foo                       -1:000000000000
      foobar                    -1:000000000000
@@ -148,6 +152,7 @@
 
   $ hg debugpushkey http://localhost:$HGPORT/ namespaces 
   bookmarks	
+  phases	
   namespaces	
   $ hg debugpushkey http://localhost:$HGPORT/ bookmarks
   Y	4e3505fd95835d721066b76e75dbb8cc554d7f77
@@ -173,7 +178,7 @@
   $ hg pull -B Z http://localhost:$HGPORT/
   pulling from http://localhost:$HGPORT/
   no changes found
-  not updating divergent bookmark X
+  divergent bookmark X stored as X@1
   importing bookmark Z
   $ hg clone http://localhost:$HGPORT/ cloned-bookmarks
   requesting all changes
--- a/tests/test-bundle.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-bundle.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" system-sh || exit 80
+
 Setting up test
 
   $ hg init test
@@ -375,7 +377,7 @@
 Outgoing -R does-not-exist.hg vs partial2 in partial
 
   $ hg -R bundle://../does-not-exist.hg outgoing ../partial2
-  abort: No such file or directory: ../does-not-exist.hg
+  abort: *: ../does-not-exist.hg (glob)
   [255]
   $ cd ..
 
@@ -408,7 +410,7 @@
 recurse infinitely (issue 2528)
 
   $ hg clone full.hg ''
-  abort: No such file or directory
+  abort: * (glob)
   [255]
 
 test for http://mercurial.selenic.com/bts/issue216
--- a/tests/test-check-code-hg.py	Sun Jan 08 23:09:35 2012 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-# Pass all working directory files through check-code.py
-
-import sys, os, imp
-rootdir = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..'))
-if not os.path.isdir(os.path.join(rootdir, '.hg')):
-    sys.stderr.write('skipped: cannot check code on non-repository sources\n')
-    sys.exit(80)
-
-checkpath = os.path.join(rootdir, 'contrib/check-code.py')
-checkcode = imp.load_source('checkcode', checkpath)
-
-from mercurial import hg, ui
-u = ui.ui()
-repo = hg.repository(u, rootdir)
-checked = 0
-wctx = repo[None]
-for f in wctx:
-    # ignore removed and unknown files
-    if f not in wctx:
-        continue
-    checked += 1
-    checkcode.checkfile(os.path.join(rootdir, f))
-if not checked:
-    sys.stderr.write('no file checked!\n')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-check-code-hg.t	Mon Jan 09 20:16:57 2012 -0600
@@ -0,0 +1,573 @@
+  $ check_code="$TESTDIR"/../contrib/check-code.py
+  $ cd "$TESTDIR"/..
+
+  $ "$check_code" `hg manifest` || echo 'FAILURE IS NOT AN OPTION!!!'
+
+  $ "$check_code" --warnings --nolineno `hg manifest`
+  contrib/check-code.py:0:
+   > #    (r'^\s+[^_ \n][^_. \n]+_[^_\n]+\s*=', "don't use underbars in identifiers"),
+   warning: line over 80 characters
+  contrib/perf.py:0:
+   >         except:
+   warning: naked except clause
+  contrib/perf.py:0:
+   >     #timer(lambda: sum(map(len, repo.dirstate.status(m, [], False, False, False))))
+   warning: line over 80 characters
+  contrib/perf.py:0:
+   >     except:
+   warning: naked except clause
+  contrib/setup3k.py:0:
+   >         except:
+   warning: naked except clause
+  contrib/setup3k.py:0:
+   >     except:
+   warning: naked except clause
+  contrib/setup3k.py:0:
+   > except:
+   warning: naked except clause
+   warning: naked except clause
+   warning: naked except clause
+  contrib/shrink-revlog.py:0:
+   >                    '(You can delete those files when you are satisfied that your\n'
+   warning: line over 80 characters
+  contrib/shrink-revlog.py:0:
+   >                 ('', 'sort', 'reversepostorder', 'name of sort algorithm to use'),
+   warning: line over 80 characters
+  contrib/shrink-revlog.py:0:
+   >                [('', 'revlog', '', _('index (.i) file of the revlog to shrink')),
+   warning: line over 80 characters
+  contrib/shrink-revlog.py:0:
+   >         except:
+   warning: naked except clause
+  doc/gendoc.py:0:
+   >                "together with Mercurial. Help for other extensions is available "
+   warning: line over 80 characters
+  hgext/bugzilla.py:0:
+   >                 raise util.Abort(_('cannot find bugzilla user id for %s or %s') %
+   warning: line over 80 characters
+  hgext/bugzilla.py:0:
+   >             bzdir = self.ui.config('bugzilla', 'bzdir', '/var/www/html/bugzilla')
+   warning: line over 80 characters
+  hgext/convert/__init__.py:0:
+   >           ('', 'ancestors', '', _('show current changeset in ancestor branches')),
+   warning: line over 80 characters
+  hgext/convert/bzr.py:0:
+   >         except:
+   warning: naked except clause
+  hgext/convert/common.py:0:
+   >             except:
+   warning: naked except clause
+  hgext/convert/common.py:0:
+   >         except:
+   warning: naked except clause
+   warning: naked except clause
+  hgext/convert/convcmd.py:0:
+   >         except:
+   warning: naked except clause
+  hgext/convert/cvs.py:0:
+   >                                 # /1 :pserver:user@example.com:2401/cvsroot/foo Ah<Z
+   warning: line over 80 characters
+  hgext/convert/cvsps.py:0:
+   >                     assert len(branches) == 1, 'unknown branch: %s' % e.mergepoint
+   warning: line over 80 characters
+  hgext/convert/cvsps.py:0:
+   >                     ui.write('Ancestors: %s\n' % (','.join(r)))
+   warning: unwrapped ui message
+  hgext/convert/cvsps.py:0:
+   >                     ui.write('Parent: %d\n' % cs.parents[0].id)
+   warning: unwrapped ui message
+  hgext/convert/cvsps.py:0:
+   >                     ui.write('Parents: %s\n' %
+   warning: unwrapped ui message
+  hgext/convert/cvsps.py:0:
+   >                 except:
+   warning: naked except clause
+  hgext/convert/cvsps.py:0:
+   >                 ui.write('Branchpoints: %s \n' % ', '.join(branchpoints))
+   warning: unwrapped ui message
+  hgext/convert/cvsps.py:0:
+   >             ui.write('Author: %s\n' % cs.author)
+   warning: unwrapped ui message
+  hgext/convert/cvsps.py:0:
+   >             ui.write('Branch: %s\n' % (cs.branch or 'HEAD'))
+   warning: unwrapped ui message
+  hgext/convert/cvsps.py:0:
+   >             ui.write('Date: %s\n' % util.datestr(cs.date,
+   warning: unwrapped ui message
+  hgext/convert/cvsps.py:0:
+   >             ui.write('Log:\n')
+   warning: unwrapped ui message
+  hgext/convert/cvsps.py:0:
+   >             ui.write('Members: \n')
+   warning: unwrapped ui message
+  hgext/convert/cvsps.py:0:
+   >             ui.write('PatchSet %d \n' % cs.id)
+   warning: unwrapped ui message
+  hgext/convert/cvsps.py:0:
+   >             ui.write('Tag%s: %s \n' % (['', 's'][len(cs.tags) > 1],
+   warning: unwrapped ui message
+  hgext/convert/git.py:0:
+   >             except:
+   warning: naked except clause
+  hgext/convert/git.py:0:
+   >             fh = self.gitopen('git diff-tree --name-only --root -r %s "%s^%s" --'
+   warning: line over 80 characters
+  hgext/convert/hg.py:0:
+   >             # detect missing revlogs and abort on errors or populate self.ignored
+   warning: line over 80 characters
+  hgext/convert/hg.py:0:
+   >             except:
+   warning: naked except clause
+   warning: naked except clause
+  hgext/convert/hg.py:0:
+   >         except:
+   warning: naked except clause
+  hgext/convert/monotone.py:0:
+   >             except:
+   warning: naked except clause
+  hgext/convert/monotone.py:0:
+   >         except:
+   warning: naked except clause
+  hgext/convert/subversion.py:0:
+   >                 raise util.Abort(_('svn: branch has no revision %s') % to_revnum)
+   warning: line over 80 characters
+  hgext/convert/subversion.py:0:
+   >             except:
+   warning: naked except clause
+  hgext/convert/subversion.py:0:
+   >         args = [self.baseurl, relpaths, start, end, limit, discover_changed_paths,
+   warning: line over 80 characters
+  hgext/convert/subversion.py:0:
+   >         self.trunkname = self.ui.config('convert', 'svn.trunk', 'trunk').strip('/')
+   warning: line over 80 characters
+  hgext/convert/subversion.py:0:
+   >     except:
+   warning: naked except clause
+  hgext/convert/subversion.py:0:
+   > def get_log_child(fp, url, paths, start, end, limit=0, discover_changed_paths=True,
+   warning: line over 80 characters
+  hgext/eol.py:0:
+   >     if ui.configbool('eol', 'fix-trailing-newline', False) and s and s[-1] != '\n':
+   warning: line over 80 characters
+   warning: line over 80 characters
+  hgext/gpg.py:0:
+   >                 except:
+   warning: naked except clause
+  hgext/hgcia.py:0:
+   > except:
+   warning: naked except clause
+  hgext/hgk.py:0:
+   >         ui.write("%s%s\n" % (prefix, description.replace('\n', nlprefix).strip()))
+   warning: line over 80 characters
+  hgext/hgk.py:0:
+   >         ui.write("parent %s\n" % p)
+   warning: unwrapped ui message
+  hgext/hgk.py:0:
+   >         ui.write('k=%s\nv=%s\n' % (name, value))
+   warning: unwrapped ui message
+  hgext/hgk.py:0:
+   >     ui.write("author %s %s %s\n" % (ctx.user(), int(date[0]), date[1]))
+   warning: unwrapped ui message
+  hgext/hgk.py:0:
+   >     ui.write("branch %s\n\n" % ctx.branch())
+   warning: unwrapped ui message
+  hgext/hgk.py:0:
+   >     ui.write("committer %s %s %s\n" % (committer, int(date[0]), date[1]))
+   warning: unwrapped ui message
+  hgext/hgk.py:0:
+   >     ui.write("revision %d\n" % ctx.rev())
+   warning: unwrapped ui message
+  hgext/hgk.py:0:
+   >     ui.write("tree %s\n" % short(ctx.changeset()[0])) # use ctx.node() instead ??
+   warning: line over 80 characters
+   warning: unwrapped ui message
+  hgext/highlight/__init__.py:0:
+   >     extensions.wrapfunction(webcommands, '_filerevision', filerevision_highlight)
+   warning: line over 80 characters
+  hgext/highlight/__init__.py:0:
+   >     return ['/* pygments_style = %s */\n\n' % pg_style, fmter.get_style_defs('')]
+   warning: line over 80 characters
+  hgext/inotify/__init__.py:0:
+   >             if self._inotifyon and not ignored and not subrepos and not self._dirty:
+   warning: line over 80 characters
+  hgext/inotify/server.py:0:
+   >                     except:
+   warning: naked except clause
+  hgext/inotify/server.py:0:
+   >             except:
+   warning: naked except clause
+  hgext/keyword.py:0:
+   >     ui.note("hg ci -m '%s'\n" % msg)
+   warning: unwrapped ui message
+  hgext/largefiles/overrides.py:0:
+   >             # When we call orig below it creates the standins but we don't add them
+   warning: line over 80 characters
+  hgext/largefiles/reposetup.py:0:
+   >                             if os.path.exists(self.wjoin(lfutil.standin(lfile))):
+   warning: line over 80 characters
+  hgext/mq.py:0:
+   >                     raise util.Abort(_("%s does not have a parent recorded" % root))
+   warning: line over 80 characters
+  hgext/mq.py:0:
+   >                     raise util.Abort(_("cannot push --exact with applied patches"))
+   warning: line over 80 characters
+  hgext/mq.py:0:
+   >                     raise util.Abort(_("cannot use --exact and --move together"))
+   warning: line over 80 characters
+  hgext/mq.py:0:
+   >                     self.ui.warn(_('Tag %s overrides mq patch of the same name\n')
+   warning: line over 80 characters
+  hgext/mq.py:0:
+   >                 except:
+   warning: naked except clause
+   warning: naked except clause
+  hgext/mq.py:0:
+   >             except:
+   warning: naked except clause
+   warning: naked except clause
+   warning: naked except clause
+   warning: naked except clause
+  hgext/mq.py:0:
+   >             raise util.Abort(_('cannot mix -l/--list with options or arguments'))
+   warning: line over 80 characters
+  hgext/mq.py:0:
+   >             raise util.Abort(_('qfold cannot fold already applied patch %s') % p)
+   warning: line over 80 characters
+  hgext/mq.py:0:
+   >           ('', 'move', None, _('reorder patch series and apply only the patch'))],
+   warning: line over 80 characters
+  hgext/mq.py:0:
+   >           ('U', 'noupdate', None, _('do not update the new working directories')),
+   warning: line over 80 characters
+  hgext/mq.py:0:
+   >           ('e', 'exact', None, _('apply the target patch to its recorded parent')),
+   warning: line over 80 characters
+   (too many errors, giving up)
+  hgext/notify.py:0:
+   >                 ui.note(_('notify: suppressing notification for merge %d:%s\n') %
+   warning: line over 80 characters
+  hgext/patchbomb.py:0:
+   >                                                   binnode, seqno=idx, total=total)
+   warning: line over 80 characters
+  hgext/patchbomb.py:0:
+   >             except:
+   warning: naked except clause
+  hgext/patchbomb.py:0:
+   >             ui.write('Subject: %s\n' % subj)
+   warning: unwrapped ui message
+  hgext/patchbomb.py:0:
+   >         p = mail.mimetextpatch('\n'.join(patchlines), 'x-patch', opts.get('test'))
+   warning: line over 80 characters
+  hgext/patchbomb.py:0:
+   >         ui.write('From: %s\n' % sender)
+   warning: unwrapped ui message
+  hgext/record.py:0:
+   >                                   ignoreblanklines=opts.get('ignore_blank_lines'))
+   warning: line over 80 characters
+  hgext/record.py:0:
+   >                                   ignorewsamount=opts.get('ignore_space_change'),
+   warning: line over 80 characters
+  hgext/zeroconf/__init__.py:0:
+   >             publish(name, desc, path, util.getport(u.config("web", "port", 8000)))
+   warning: line over 80 characters
+  hgext/zeroconf/__init__.py:0:
+   >     except:
+   warning: naked except clause
+   warning: naked except clause
+  mercurial/bundlerepo.py:0:
+   >       is a bundlerepo for the obtained bundle when the original "other" is remote.
+   warning: line over 80 characters
+  mercurial/bundlerepo.py:0:
+   >     "local" is a local repo from which to obtain the actual incoming changesets; it
+   warning: line over 80 characters
+  mercurial/bundlerepo.py:0:
+   >     tmp = discovery.findcommonincoming(repo, other, heads=onlyheads, force=force)
+   warning: line over 80 characters
+  mercurial/commands.py:0:
+   >                  "     size " + basehdr + "   link     p1     p2       nodeid\n")
+   warning: line over 80 characters
+  mercurial/commands.py:0:
+   >                 raise util.Abort('cannot use localheads with old style discovery')
+   warning: line over 80 characters
+  mercurial/commands.py:0:
+   >                 ui.note('branch %s\n' % data)
+   warning: unwrapped ui message
+  mercurial/commands.py:0:
+   >                 ui.note('node %s\n' % str(data))
+   warning: unwrapped ui message
+  mercurial/commands.py:0:
+   >                 ui.note('tag %s\n' % name)
+   warning: unwrapped ui message
+  mercurial/commands.py:0:
+   >                 ui.write("unpruned common: %s\n" % " ".join([short(n)
+   warning: unwrapped ui message
+  mercurial/commands.py:0:
+   >                 yield 'n', (r, list(set(p for p in cl.parentrevs(r) if p != -1)))
+   warning: line over 80 characters
+  mercurial/commands.py:0:
+   >                 yield 'n', (r, list(set(p for p in rlog.parentrevs(r) if p != -1)))
+   warning: line over 80 characters
+  mercurial/commands.py:0:
+   >             except:
+   warning: naked except clause
+  mercurial/commands.py:0:
+   >             raise util.Abort(_('tag names cannot consist entirely of whitespace'))
+   warning: line over 80 characters
+  mercurial/commands.py:0:
+   >             ui.status(_("(run 'hg heads .' to see heads, 'hg merge' to merge)\n"))
+   warning: line over 80 characters
+  mercurial/commands.py:0:
+   >             ui.write("format: id, p1, p2, cset, delta base, len(delta)\n")
+   warning: unwrapped ui message
+  mercurial/commands.py:0:
+   >             ui.write("local is subset\n")
+   warning: unwrapped ui message
+  mercurial/commands.py:0:
+   >             ui.write("remote is subset\n")
+   warning: unwrapped ui message
+  mercurial/commands.py:0:
+   >             ui.write('    other            : ' + fmt2 % pcfmt(numoprev, numprev))
+   warning: line over 80 characters
+   (too many errors, giving up)
+  mercurial/commandserver.py:0:
+   >         # the ui here is really the repo ui so take its baseui so we don't end up
+   warning: line over 80 characters
+  mercurial/context.py:0:
+   >                 return self._manifestdelta[path], self._manifestdelta.flags(path)
+   warning: line over 80 characters
+  mercurial/dagparser.py:0:
+   >             raise util.Abort(_("invalid character in dag description: %s...") % s)
+   warning: line over 80 characters
+  mercurial/dagparser.py:0:
+   >         >>> dagtext([('n', (0, [-1])), ('C', 'my command line'), ('n', (1, [0]))])
+   warning: line over 80 characters
+  mercurial/dirstate.py:0:
+   >                 if not st is None and not getkind(st.st_mode) in (regkind, lnkkind):
+   warning: line over 80 characters
+  mercurial/discovery.py:0:
+   >                     repo.ui.note(_("new remote heads on branch '%s'\n") % branch)
+   warning: line over 80 characters
+  mercurial/discovery.py:0:
+   >     If onlyheads is given, only nodes ancestral to nodes in onlyheads (inclusive)
+   warning: line over 80 characters
+  mercurial/discovery.py:0:
+   >     common, _any, _hds = commoninc or findcommonincoming(repo, other, force=force)
+   warning: line over 80 characters
+  mercurial/discovery.py:0:
+   > def findcommonoutgoing(repo, other, onlyheads=None, force=False, commoninc=None):
+   warning: line over 80 characters
+  mercurial/dispatch.py:0:
+   >                                                 " (.hg not found)") % os.getcwd())
+   warning: line over 80 characters
+  mercurial/dispatch.py:0:
+   >         aliases, entry = cmdutil.findcmd(cmd, cmdtable, lui.config("ui", "strict"))
+   warning: line over 80 characters
+  mercurial/dispatch.py:0:
+   >         except:
+   warning: naked except clause
+  mercurial/dispatch.py:0:
+   >         return lambda: runcommand(lui, None, cmd, args[:1], ui, options, d, [], {})
+   warning: line over 80 characters
+  mercurial/dispatch.py:0:
+   >     def __init__(self, args, ui=None, repo=None, fin=None, fout=None, ferr=None):
+   warning: line over 80 characters
+  mercurial/dispatch.py:0:
+   >     except:
+   warning: naked except clause
+  mercurial/hg.py:0:
+   >     except:
+   warning: naked except clause
+  mercurial/hgweb/hgweb_mod.py:0:
+   >             self.maxshortchanges = int(self.config("web", "maxshortchanges", 60))
+   warning: line over 80 characters
+  mercurial/keepalive.py:0:
+   >         except:
+   warning: naked except clause
+  mercurial/keepalive.py:0:
+   >     except:
+   warning: naked except clause
+  mercurial/localrepo.py:0:
+   >                                      hint=_("use --subrepos for recursive commit"))
+   warning: line over 80 characters
+  mercurial/localrepo.py:0:
+   >                         # we return an integer indicating remote head count change
+   warning: line over 80 characters
+  mercurial/localrepo.py:0:
+   >                     raise util.Abort(_("empty or missing revlog for %s") % fname)
+   warning: line over 80 characters
+   warning: line over 80 characters
+  mercurial/localrepo.py:0:
+   >                 if self._tagscache.tagtypes and name in self._tagscache.tagtypes:
+   warning: line over 80 characters
+  mercurial/localrepo.py:0:
+   >                 self.hook("precommit", throw=True, parent1=hookp1, parent2=hookp2)
+   warning: line over 80 characters
+  mercurial/localrepo.py:0:
+   >             # new requirements = old non-format requirements + new format-related
+   warning: line over 80 characters
+  mercurial/localrepo.py:0:
+   >             except:
+   warning: naked except clause
+  mercurial/localrepo.py:0:
+   >         """return status of files between two nodes or node and working directory
+   warning: line over 80 characters
+  mercurial/localrepo.py:0:
+   >         '''Returns a tagscache object that contains various tags related caches.'''
+   warning: line over 80 characters
+  mercurial/manifest.py:0:
+   >             return "".join(struct.pack(">lll", start, end, len(content)) + content
+   warning: line over 80 characters
+  mercurial/merge.py:0:
+   >                 subrepo.submerge(repo, wctx, mctx, wctx.ancestor(mctx), overwrite)
+   warning: line over 80 characters
+  mercurial/patch.py:0:
+   >                  modified, added, removed, copy, getfilectx, opts, losedata, prefix)
+   warning: line over 80 characters
+  mercurial/patch.py:0:
+   >         diffhelpers.addlines(lr, self.hunk, self.lena, self.lenb, self.a, self.b)
+   warning: line over 80 characters
+  mercurial/patch.py:0:
+   >         output.append(_(' %d files changed, %d insertions(+), %d deletions(-)\n')
+   warning: line over 80 characters
+  mercurial/patch.py:0:
+   >     except:
+   warning: naked except clause
+  mercurial/pure/base85.py:0:
+   >             raise OverflowError('Base85 overflow in hunk starting at byte %d' % i)
+   warning: line over 80 characters
+  mercurial/pure/mpatch.py:0:
+   >         frags.extend(reversed(new))                    # what was left at the end
+   warning: line over 80 characters
+  mercurial/repair.py:0:
+   >         except:
+   warning: naked except clause
+  mercurial/repair.py:0:
+   >     except:
+   warning: naked except clause
+  mercurial/revset.py:0:
+   >         elif c.isalnum() or c in '._' or ord(c) > 127: # gather up a symbol/keyword
+   warning: line over 80 characters
+  mercurial/revset.py:0:
+   >     Changesets that are the Nth ancestor (first parents only) of a changeset in set.
+   warning: line over 80 characters
+  mercurial/scmutil.py:0:
+   >                         raise util.Abort(_("path '%s' is inside nested repo %r") %
+   warning: line over 80 characters
+  mercurial/scmutil.py:0:
+   >             "requires features '%s' (upgrade Mercurial)") % "', '".join(missings))
+   warning: line over 80 characters
+  mercurial/scmutil.py:0:
+   >         elif repo.dirstate[abs] != 'r' and (not good or not os.path.lexists(target)
+   warning: line over 80 characters
+  mercurial/setdiscovery.py:0:
+   >     # treat remote heads (and maybe own heads) as a first implicit sample response
+   warning: line over 80 characters
+  mercurial/setdiscovery.py:0:
+   >     undecided = dag.nodeset() # own nodes where I don't know if remote knows them
+   warning: line over 80 characters
+  mercurial/similar.py:0:
+   >         repo.ui.progress(_('searching for similar files'), i, total=len(removed))
+   warning: line over 80 characters
+  mercurial/simplemerge.py:0:
+   >         for zmatch, zend, amatch, aend, bmatch, bend in self.find_sync_regions():
+   warning: line over 80 characters
+  mercurial/sshrepo.py:0:
+   >             self._abort(error.RepoError(_("no suitable response from remote hg")))
+   warning: line over 80 characters
+  mercurial/sshrepo.py:0:
+   >         except:
+   warning: naked except clause
+  mercurial/subrepo.py:0:
+   >                 other, self._repo = hg.clone(self._repo._subparent.ui, {}, other,
+   warning: line over 80 characters
+  mercurial/subrepo.py:0:
+   >         msg = (_(' subrepository sources for %s differ (in checked out version)\n'
+   warning: line over 80 characters
+  mercurial/transaction.py:0:
+   >             except:
+   warning: naked except clause
+  mercurial/ui.py:0:
+   >                 traceback.print_exception(exc[0], exc[1], exc[2], file=self.ferr)
+   warning: line over 80 characters
+  mercurial/url.py:0:
+   >             conn = httpsconnection(host, port, keyfile, certfile, *args, **kwargs)
+   warning: line over 80 characters
+  mercurial/util.py:0:
+   >             except:
+   warning: naked except clause
+  mercurial/util.py:0:
+   >     except:
+   warning: naked except clause
+  mercurial/verify.py:0:
+   >                     except:
+   warning: naked except clause
+  mercurial/verify.py:0:
+   >                 except:
+   warning: naked except clause
+  mercurial/wireproto.py:0:
+   >         # Assuming the future to be filled with the result from the batched request
+   warning: line over 80 characters
+  mercurial/wireproto.py:0:
+   >         '''remote must support _submitbatch(encbatch) and _submitone(op, encargs)'''
+   warning: line over 80 characters
+  mercurial/wireproto.py:0:
+   >     All methods invoked on instances of this class are simply queued and return a
+   warning: line over 80 characters
+  mercurial/wireproto.py:0:
+   >     The decorator returns a function which wraps this coroutine as a plain method,
+   warning: line over 80 characters
+  setup.py:0:
+   >                 raise SystemExit("Python headers are required to build Mercurial")
+   warning: line over 80 characters
+  setup.py:0:
+   >         except:
+   warning: naked except clause
+  setup.py:0:
+   >     # build_py), it will not find osutil & friends, thinking that those modules are
+   warning: line over 80 characters
+  setup.py:0:
+   >     except:
+   warning: naked except clause
+   warning: naked except clause
+  setup.py:0:
+   >     isironpython = platform.python_implementation().lower().find("ironpython") != -1
+   warning: line over 80 characters
+  setup.py:0:
+   > except:
+   warning: naked except clause
+   warning: naked except clause
+   warning: naked except clause
+  tests/autodiff.py:0:
+   >         ui.write('data lost for: %s\n' % fn)
+   warning: unwrapped ui message
+  tests/run-tests.py:0:
+   >     except:
+   warning: naked except clause
+  tests/test-commandserver.py:0:
+   >                         'hooks.pre-identify=python:test-commandserver.hook', 'id'],
+   warning: line over 80 characters
+  tests/test-commandserver.py:0:
+   >     # the cached repo local hgrc contains ui.foo=bar, so showconfig should show it
+   warning: line over 80 characters
+  tests/test-commandserver.py:0:
+   >     print '%c, %r' % (ch, re.sub('encoding: [a-zA-Z0-9-]+', 'encoding: ***', data))
+   warning: line over 80 characters
+  tests/test-filecache.py:0:
+   >     except:
+   warning: naked except clause
+  tests/test-filecache.py:0:
+   > if subprocess.call(['python', '%s/hghave' % os.environ['TESTDIR'], 'cacheable']):
+   warning: line over 80 characters
+  tests/test-ui-color.py:0:
+   > testui.warn('warning\n')
+   warning: unwrapped ui message
+  tests/test-ui-color.py:0:
+   > testui.write('buffered\n')
+   warning: unwrapped ui message
+  tests/test-walkrepo.py:0:
+   >         print "Found %d repositories when I should have found 2" % (len(reposet),)
+   warning: line over 80 characters
+  tests/test-walkrepo.py:0:
+   >         print "Found %d repositories when I should have found 3" % (len(reposet),)
+   warning: line over 80 characters
+  [1]
--- a/tests/test-check-code.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-check-code.t	Mon Jan 09 20:16:57 2012 -0600
@@ -132,3 +132,11 @@
    object comparison with literal
   [1]
 
+  $ cat > warning.py <<EOF
+  > except:
+  > EOF
+  $ "$check_code" warning.py --warning --nolineno
+  warning.py:0:
+   > except:
+   warning: naked except clause
+  [1]
--- a/tests/test-clone-cgi.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-clone-cgi.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" no-msys || exit 80 # MSYS will translate web paths as if they were file paths
+
 This is a test of the wire protocol over CGI-based hgweb.
 initialize repository
 
--- a/tests/test-clone-failure.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-clone-failure.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" unix-permissions || exit 80
+
 No local source
 
   $ hg clone a b
--- a/tests/test-clone-pull-corruption.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-clone-pull-corruption.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" system-sh || exit 80
+
 Corrupt an hg repo with a pull started during an aborted commit
 Create two repos, so that one of them can pull from the other one.
 
--- a/tests/test-clone.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-clone.t	Mon Jan 09 20:16:57 2012 -0600
@@ -10,7 +10,7 @@
 
 Create a non-inlined filelog:
 
-  $ python -c 'for x in range(10000): print x' >> data1
+  $ python -c 'file("data1", "wb").write("".join("%s\n" % x for x in range(10000)))'
   $ for j in 0 1 2 3 4 5 6 7 8 9; do
   >   cat data1 >> b
   >   hg commit -m test
@@ -43,7 +43,7 @@
 Invalid dest '' must abort:
 
   $ hg clone . ''
-  abort: No such file or directory
+  abort: * (glob)
   [255]
 
 No update, with debug option:
@@ -85,7 +85,7 @@
 
   $ hg clone -q -U --config 'paths.foobar=a#0' foobar f
   $ hg -R f showconfig paths.default
-  $TESTTMP/a#0
+  $TESTTMP/a#0 (glob)
 
 Use --pull:
 
@@ -107,7 +107,7 @@
 Invalid dest '' with --pull must abort (issue2528):
 
   $ hg clone --pull a ''
-  abort: No such file or directory
+  abort: * (glob)
   [255]
 
 Clone to '.':
--- a/tests/test-command-template.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-command-template.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" unix-permissions || exit 80
+
   $ hg init a
   $ cd a
   $ echo a > a
--- a/tests/test-commandserver.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-commandserver.py	Mon Jan 09 20:16:57 2012 -0600
@@ -26,6 +26,7 @@
         return channel, server.stdout.read(length)
 
 def runcommand(server, args, output=sys.stdout, error=sys.stderr, input=None):
+    print ' runcommand', ' '.join(args)
     server.stdin.write('runcommand\n')
     writeblock(server, '\0'.join(args))
 
@@ -52,6 +53,9 @@
                 return
 
 def check(func, repopath=None):
+    print
+    print 'testing %s:' % func.__name__
+    print
     server = connect(repopath)
     try:
         return func(server)
@@ -124,7 +128,7 @@
     """ check that --cwd doesn't persist between requests """
     readchannel(server)
     os.mkdir('foo')
-    f = open('foo/bar', 'w')
+    f = open('foo/bar', 'wb')
     f.write('a')
     f.close()
     runcommand(server, ['--cwd', 'foo', 'st', 'bar'])
@@ -141,7 +145,7 @@
 
     # but not for this repo
     runcommand(server, ['init', 'foo'])
-    runcommand(server, ['-R', 'foo', 'showconfig'])
+    runcommand(server, ['-R', 'foo', 'showconfig', 'ui', 'defaults'])
     shutil.rmtree('foo')
 
 def hook(**args):
@@ -156,7 +160,10 @@
 
 def outsidechanges(server):
     readchannel(server)
-    os.system('echo a >> a && hg ci -Am2')
+    f = open('a', 'ab')
+    f.write('a\n')
+    f.close()
+    os.system('hg ci -Am2')
     runcommand(server, ['tip'])
 
 def bookmarks(server):
--- a/tests/test-commandserver.py.out	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-commandserver.py.out	Mon Jan 09 20:16:57 2012 -0600
@@ -1,6 +1,17 @@
+
+testing hellomessage:
+
 o, 'capabilities: getencoding runcommand\nencoding: ***'
+ runcommand id
 000000000000 tip
 abort: unknown command unknowncommand
+
+testing unknowncommand:
+
+
+testing checkruncommand:
+
+ runcommand 
 Mercurial Distributed SCM
 
 basic commands:
@@ -24,44 +35,85 @@
  update     update working directory (or switch revisions)
 
 use "hg help" for the full list of commands or "hg -v" for details
+ runcommand id --quiet
 000000000000
+ runcommand id
 000000000000 tip
+ runcommand id --config ui.quiet=True
 000000000000
+ runcommand id
 000000000000 tip
+
+testing inputeof:
+
 server exit code = 1
+
+testing serverinput:
+
+ runcommand import -
 applying patch from stdin
+ runcommand log
 changeset:   0:eff892de26ec
 tag:         tip
 user:        test
 date:        Thu Jan 01 00:00:00 1970 +0000
 summary:     1
 
+
+testing cwd:
+
+ runcommand --cwd foo st bar
 ? bar
+ runcommand st foo/bar
 ? foo/bar
+
+testing localhgrc:
+
+ runcommand showconfig
 bundle.mainreporoot=$TESTTMP
 defaults.backout=-d "0 0"
 defaults.commit=-d "0 0"
 defaults.tag=-d "0 0"
 ui.slash=True
 ui.foo=bar
-bundle.mainreporoot=$TESTTMP/foo
+ runcommand init foo
+ runcommand -R foo showconfig ui defaults
 defaults.backout=-d "0 0"
 defaults.commit=-d "0 0"
 defaults.tag=-d "0 0"
 ui.slash=True
+
+testing hookoutput:
+
+ runcommand --config hooks.pre-identify=python:test-commandserver.hook id
 hook talking
 now try to read something: 'some input'
 eff892de26ec tip
+
+testing outsidechanges:
+
+ runcommand tip
 changeset:   1:d3a0a68be6de
 tag:         tip
 user:        test
 date:        Thu Jan 01 00:00:00 1970 +0000
 summary:     2
 
+
+testing bookmarks:
+
+ runcommand bookmarks
 no bookmarks set
+ runcommand bookmarks
    bm1                       1:d3a0a68be6de
    bm2                       1:d3a0a68be6de
+ runcommand bookmarks
  * bm1                       1:d3a0a68be6de
    bm2                       1:d3a0a68be6de
 
+testing tagscache:
+
+ runcommand id -t -r 0
+
+ runcommand id -t -r 0
 foo
--- a/tests/test-commit-unresolved.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-commit-unresolved.t	Mon Jan 09 20:16:57 2012 -0600
@@ -29,7 +29,7 @@
   $ hg merge
   merging A
   warning: conflicts during merge.
-  merging A failed!
+  merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
   1 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
--- a/tests/test-commit.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-commit.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" symlink || exit 80
+
 commit date test
 
   $ hg init test
@@ -43,7 +45,7 @@
   $ mkdir dir
   $ echo boo > dir/file
   $ hg add
-  adding dir/file
+  adding dir/file (glob)
   $ hg -v commit -m commit-9 dir
   dir/file
   committed changeset 2:d2a76177cb42
@@ -71,7 +73,7 @@
   $ cd ..
 
   $ hg commit -m commit-14 does-not-exist
-  abort: does-not-exist: No such file or directory
+  abort: does-not-exist: * (glob)
   [255]
   $ ln -s foo baz
   $ hg commit -m commit-15 baz
@@ -113,8 +115,8 @@
   $ mkdir bar
   $ echo bar > bar/bar
   $ hg add
-  adding bar/bar
-  adding foo/foo
+  adding bar/bar (glob)
+  adding foo/foo (glob)
   $ hg ci -m commit-subdir-1 foo
   $ hg ci -m commit-subdir-2 bar
 
--- a/tests/test-conflict.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-conflict.t	Mon Jan 09 20:16:57 2012 -0600
@@ -13,7 +13,7 @@
   $ hg merge 1
   merging a
   warning: conflicts during merge.
-  merging a failed!
+  merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
--- a/tests/test-contrib.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-contrib.t	Mon Jan 09 20:16:57 2012 -0600
@@ -107,7 +107,7 @@
 Test shrink-revlog:
   $ cd repo-a
   $ hg --config extensions.shrink=$CONTRIBDIR/shrink-revlog.py shrink
-  shrinking $TESTTMP/repo-a/.hg/store/00manifest.i
+  shrinking $TESTTMP/repo-a/.hg/store/00manifest.i (glob)
   reading revs
   sorting revs
   writing revs
@@ -115,8 +115,8 @@
   new file size:          324 bytes (   0.0 MiB)
   shrinkage: 0.0% (1.0x)
   note: old revlog saved in:
-    $TESTTMP/repo-a/.hg/store/00manifest.i.old
-    $TESTTMP/repo-a/.hg/store/00manifest.d.old
+    $TESTTMP/repo-a/.hg/store/00manifest.i.old (glob)
+    $TESTTMP/repo-a/.hg/store/00manifest.d.old (glob)
   (You can delete those files when you are satisfied that your
   repository is still sane.  Running 'hg verify' is strongly recommended.)
   $ hg verify
--- a/tests/test-convert-authormap.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-convert-authormap.t	Mon Jan 09 20:16:57 2012 -0600
@@ -27,7 +27,7 @@
   sorting...
   converting...
   0 foo
-  Writing author map file $TESTTMP/new/.hg/authormap
+  Writing author map file $TESTTMP/new/.hg/authormap (glob)
   $ cat new/.hg/authormap
   user name=Long User Name
   $ hg -Rnew log
@@ -44,7 +44,7 @@
   $ hg init new
   $ mv authormap.txt new/.hg/authormap
   $ hg convert orig new
-  Ignoring bad line in author map file $TESTTMP/new/.hg/authormap: this line is ignored
+  Ignoring bad line in author map file $TESTTMP/new/.hg/authormap: this line is ignored (glob)
   scanning source...
   sorting...
   converting...
--- a/tests/test-convert-bzr.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-convert-bzr.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" symlink execbit || exit 80
 
   $ . "$TESTDIR/bzr-definitions"
 
--- a/tests/test-convert-hg-source.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-convert-hg-source.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" execbit || exit 80
 
   $ cat >> $HGRCPATH <<EOF
   > [extensions]
--- a/tests/test-convert-svn-sink.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-convert-svn-sink.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,5 +1,4 @@
-
-  $ "$TESTDIR/hghave" svn13 no-outer-repo || exit 80
+  $ "$TESTDIR/hghave" svn13 no-outer-repo symlink execbit || exit 80
 
   $ fixpath()
   > {
@@ -417,7 +416,7 @@
   $ hg --cwd b merge
   merging b
   warning: conflicts during merge.
-  merging b failed!
+  merging b incomplete! (edit conflicts, then use 'hg resolve --mark')
   2 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
--- a/tests/test-convert-tla.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-convert-tla.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,5 +1,5 @@
 
-  $ "$TESTDIR/hghave" tla || exit 80
+  $ "$TESTDIR/hghave" tla symlink || exit 80
   $ tla my-id "mercurial <mercurial@selenic.com>"
   $ echo "[extensions]" >> $HGRCPATH
   $ echo "convert=" >> $HGRCPATH
--- a/tests/test-convert.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-convert.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" unix-permissions || exit 80
 
   $ cat >> $HGRCPATH <<EOF
   > [extensions]
--- a/tests/test-copy-move-merge.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-copy-move-merge.t	Mon Jan 09 20:16:57 2012 -0600
@@ -29,8 +29,8 @@
      b -> a *
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor b8bf91eeebbc local add3f11052fa+ remote 17c05bb7fcb6
+   overwrite: False, partial: False
+   ancestor: b8bf91eeebbc, local: add3f11052fa+, remote: 17c05bb7fcb6
    a: remote moved to c -> m
    a: remote moved to b -> m
   preserving a for resolve of b
--- a/tests/test-debugcomplete.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-debugcomplete.t	Mon Jan 09 20:16:57 2012 -0600
@@ -189,7 +189,7 @@
 Show all commands + options
   $ hg debugcommands
   add: include, exclude, subrepos, dry-run
-  annotate: rev, follow, no-follow, text, user, file, date, number, changeset, line-number, include, exclude
+  annotate: rev, follow, no-follow, text, user, file, date, number, changeset, line-number, ignore-all-space, ignore-space-change, ignore-blank-lines, include, exclude
   clone: noupdate, updaterev, rev, branch, pull, uncompressed, ssh, remotecmd, insecure
   commit: addremove, close-branch, include, exclude, message, logfile, date, user, subrepos
   diff: rev, change, text, git, nodates, show-function, reverse, ignore-all-space, ignore-space-change, ignore-blank-lines, unified, stat, include, exclude, subrepos
@@ -247,7 +247,7 @@
   grep: print0, all, text, follow, ignore-case, files-with-matches, line-number, rev, user, date, include, exclude
   heads: rev, topo, active, closed, style, template
   help: extension, command
-  identify: rev, num, id, branch, tags, bookmarks
+  identify: rev, num, id, branch, tags, bookmarks, ssh, remotecmd, insecure
   import: strip, base, edit, force, no-commit, bypass, exact, import-branch, message, logfile, date, user, similarity
   incoming: force, newest-first, bundle, rev, bookmarks, branch, patch, git, limit, no-merges, stat, style, template, ssh, remotecmd, insecure, subrepos
   locate: rev, print0, fullpath, include, exclude
--- a/tests/test-default-push.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-default-push.t	Mon Jan 09 20:16:57 2012 -0600
@@ -18,7 +18,7 @@
 Push should push to 'default' when 'default-push' not set:
 
   $ hg --cwd b push
-  pushing to $TESTTMP/a
+  pushing to $TESTTMP/a (glob)
   searching for changes
   adding changesets
   adding manifests
@@ -29,7 +29,7 @@
 
   $ echo 'default-push = ../c' >> b/.hg/hgrc
   $ hg --cwd b push
-  pushing to $TESTTMP/c
+  pushing to $TESTTMP/c (glob)
   searching for changes
   adding changesets
   adding manifests
--- a/tests/test-diff-color.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-diff-color.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" execbit || exit 80
+
 Setup
 
   $ echo "[color]" >> $HGRCPATH
@@ -74,7 +76,7 @@
 
 record
 
-  $ chmod 0755 a
+  $ chmod +x a
   $ hg record --color=always -m moda a <<EOF
   > y
   > y
--- a/tests/test-diff-hashes.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-diff-hashes.t	Mon Jan 09 20:16:57 2012 -0600
@@ -2,8 +2,8 @@
   $ cd a
 
   $ hg diff inexistent1 inexistent2
-  inexistent1: No such file or directory
-  inexistent2: No such file or directory
+  inexistent1: * (glob)
+  inexistent2: * (glob)
 
   $ echo bar > foo
   $ hg add foo
--- a/tests/test-diff-newlines.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-diff-newlines.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,6 +1,6 @@
   $ hg init
 
-  $ python -c 'print "confuse str.splitlines\nembedded\rnewline"' > a
+  $ python -c 'file("a", "wb").write("confuse str.splitlines\nembedded\rnewline\n")'
   $ hg ci -Ama -d '1 0'
   adding a
 
--- a/tests/test-diff-upgrade.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-diff-upgrade.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" execbit || exit 80
 
   $ echo "[extensions]" >> $HGRCPATH
   $ echo "autodiff=$TESTDIR/autodiff.py" >> $HGRCPATH
--- a/tests/test-dirstate.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-dirstate.t	Mon Jan 09 20:16:57 2012 -0600
@@ -11,9 +11,9 @@
   adding a/b/c/d/y
   adding a/b/c/d/z
   $ hg mv a z
-  moving a/b/c/d/x to z/b/c/d/x
-  moving a/b/c/d/y to z/b/c/d/y
-  moving a/b/c/d/z to z/b/c/d/z
+  moving a/b/c/d/x to z/b/c/d/x (glob)
+  moving a/b/c/d/y to z/b/c/d/y (glob)
+  moving a/b/c/d/z to z/b/c/d/z (glob)
   $ cd ..
 
 Issue1790: dirstate entry locked into unset if file mtime is set into
--- a/tests/test-double-merge.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-double-merge.t	Mon Jan 09 20:16:57 2012 -0600
@@ -33,8 +33,8 @@
      bar -> foo *
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor e6dc8efe11cc local 6a0df1dad128+ remote 484bf6903104
+   overwrite: False, partial: False
+   ancestor: e6dc8efe11cc, local: 6a0df1dad128+, remote: 484bf6903104
    foo: versions differ -> m
    foo: remote copied to bar -> m
   preserving foo for resolve of bar
--- a/tests/test-encoding.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-encoding.t	Mon Jan 09 20:16:57 2012 -0600
@@ -235,7 +235,8 @@
 hg log (dolphin)
 
   $ HGENCODING=dolphin hg log
-  abort: unknown encoding: dolphin, please check your locale settings
+  abort: unknown encoding: dolphin
+  (please check your locale settings)
   [255]
   $ HGENCODING=ascii hg branch `cat latin-1-tag`
   abort: decoding near '\xe9': 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)! (esc)
--- a/tests/test-eol.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-eol.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" unix-permissions || exit 80
+
 Test EOL extension
 
   $ cat >> $HGRCPATH <<EOF
--- a/tests/test-extdiff.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-extdiff.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" symlink execbit || exit 80
+
   $ echo "[extensions]" >> $HGRCPATH
   $ echo "extdiff=" >> $HGRCPATH
 
--- a/tests/test-extension.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-extension.t	Mon Jan 09 20:16:57 2012 -0600
@@ -473,7 +473,7 @@
   > cmdtable = None
   > EOF
   $ hg --config extensions.path=./path.py help foo > /dev/null
-  warning: error finding commands in $TESTTMP/hgext/forest.py
+  warning: error finding commands in $TESTTMP/hgext/forest.py (glob)
   hg: unknown command 'foo'
-  warning: error finding commands in $TESTTMP/hgext/forest.py
+  warning: error finding commands in $TESTTMP/hgext/forest.py (glob)
   [255]
--- a/tests/test-fetch.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-fetch.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
   $ echo "[extensions]" >> $HGRCPATH
   $ echo "fetch=" >> $HGRCPATH
 
--- a/tests/test-filecache.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-filecache.py	Mon Jan 09 20:16:57 2012 -0600
@@ -1,6 +1,6 @@
 import sys, os, subprocess
 
-if subprocess.call(['%s/hghave' % os.environ['TESTDIR'], 'cacheable']):
+if subprocess.call(['python', '%s/hghave' % os.environ['TESTDIR'], 'cacheable']):
     sys.exit(80)
 
 from mercurial import util, scmutil, extensions
--- a/tests/test-flags.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-flags.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" execbit || exit 80
+
   $ umask 027
 
   $ hg init test1
--- a/tests/test-fncache.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-fncache.t	Mon Jan 09 20:16:57 2012 -0600
@@ -14,7 +14,7 @@
   $ mkdir a.i
   $ echo "some other text" > a.i/b
   $ hg add
-  adding a.i/b
+  adding a.i/b (glob)
   $ hg ci -m second
   $ cat .hg/store/fncache | sort
   data/a.i
@@ -25,7 +25,7 @@
   $ mkdir a.i.hg
   $ echo "yet another text" > a.i.hg/c
   $ hg add
-  adding a.i.hg/c
+  adding a.i.hg/c (glob)
   $ hg ci -m third
   $ cat .hg/store/fncache | sort
   data/a.i
@@ -74,12 +74,14 @@
   .hg/data/tst.d.hg/foo.i
   .hg/dirstate
   .hg/last-message.txt
+  .hg/phaseroots
   .hg/requires
   .hg/undo
   .hg/undo.bookmarks
   .hg/undo.branch
   .hg/undo.desc
   .hg/undo.dirstate
+  .hg/undo.phaseroots
   $ cd ..
 
 Non fncache repo:
@@ -102,7 +104,9 @@
   .hg/store/data
   .hg/store/data/tst.d.hg
   .hg/store/data/tst.d.hg/_foo.i
+  .hg/store/phaseroots
   .hg/store/undo
+  .hg/store/undo.phaseroots
   .hg/undo.bookmarks
   .hg/undo.branch
   .hg/undo.desc
--- a/tests/test-getbundle.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-getbundle.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
 = Test the getbundle() protocol function =
 
--- a/tests/test-git-export.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-git-export.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" execbit || exit 80
+
   $ hg init
   $ echo start > start
   $ hg ci -Amstart
--- a/tests/test-globalopts.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-globalopts.t	Mon Jan 09 20:16:57 2012 -0600
@@ -136,16 +136,16 @@
   abort: option --cwd may not be abbreviated!
   [255]
   $ hg --rep a tip
-  abort: Option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
+  abort: option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
   [255]
   $ hg --repositor a tip
-  abort: Option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
+  abort: option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
   [255]
   $ hg -qR a tip
-  abort: Option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
+  abort: option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
   [255]
   $ hg -qRa tip
-  abort: Option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
+  abort: option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
   [255]
 
 Testing --cwd:
--- a/tests/test-graft.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-graft.t	Mon Jan 09 20:16:57 2012 -0600
@@ -101,19 +101,11 @@
      b -> a *
     checking for directory renames
   resolving manifests
-   overwrite False partial False
-   ancestor 68795b066622 local d2e44c99fd3f+ remote 5d205f8b35b6
+   overwrite: False, partial: False
+   ancestor: 68795b066622, local: d2e44c99fd3f+, remote: 5d205f8b35b6
    b: local copied/moved to a -> m
   preserving b for resolve of b
   updating: b 1/1 files (100.00%)
-    searching for copies back to rev 1
-    unmatched files in local:
-     a
-    unmatched files in other:
-     b
-    all copies found (* = to merge, ! = divergent):
-     b -> a *
-    checking for directory renames
   b
    b: searching for copy revision for a
    b: copy a:b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3
@@ -122,25 +114,19 @@
     unmatched files in local:
      a.orig
   resolving manifests
-   overwrite False partial False
-   ancestor 4c60f11aa304 local 6f5ea6ac8b70+ remote 97f8bfe72746
+   overwrite: False, partial: False
+   ancestor: 4c60f11aa304, local: 6f5ea6ac8b70+, remote: 97f8bfe72746
    e: remote is newer -> g
   updating: e 1/1 files (100.00%)
   getting e
-    searching for copies back to rev 1
-    unmatched files in local:
-     c
-    all copies found (* = to merge, ! = divergent):
-     c -> b *
-    checking for directory renames
   e
   grafting revision 4
     searching for copies back to rev 1
     unmatched files in local:
      a.orig
   resolving manifests
-   overwrite False partial False
-   ancestor 4c60f11aa304 local 77eb504366ab+ remote 9c233e8e184d
+   overwrite: False, partial: False
+   ancestor: 4c60f11aa304, local: 77eb504366ab+, remote: 9c233e8e184d
    e: versions differ -> m
    d: remote is newer -> g
   preserving e for resolve of e
@@ -151,13 +137,7 @@
   merging e
   my e@77eb504366ab+ other e@9c233e8e184d ancestor e@68795b066622
   warning: conflicts during merge.
-  merging e failed!
-    searching for copies back to rev 1
-    unmatched files in local:
-     c
-    all copies found (* = to merge, ! = divergent):
-     c -> b *
-    checking for directory renames
+  merging e incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts, can't continue
   (use hg resolve and hg graft --continue)
   [255]
--- a/tests/test-hardlinks.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-hardlinks.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" no-windows || exit 80
+
   $ cat > nlinks.py <<EOF
   > import os, sys
   > for f in sorted(sys.stdin.readlines()):
@@ -45,7 +47,9 @@
   1 r1/.hg/store/data/d1/f2.i
   1 r1/.hg/store/data/f1.i
   1 r1/.hg/store/fncache
+  1 r1/.hg/store/phaseroots
   1 r1/.hg/store/undo
+  1 r1/.hg/store/undo.phaseroots
 
 
 Create hardlinked clone r2:
@@ -73,7 +77,9 @@
   2 r1/.hg/store/data/d1/f2.i
   2 r1/.hg/store/data/f1.i
   2 r1/.hg/store/fncache
+  1 r1/.hg/store/phaseroots
   1 r1/.hg/store/undo
+  1 r1/.hg/store/undo.phaseroots
 
   $ nlinksdir r2/.hg/store
   2 r2/.hg/store/00changelog.i
@@ -90,7 +96,9 @@
   1 r3/.hg/store/data/d1/f2.i
   1 r3/.hg/store/data/f1.i
   1 r3/.hg/store/fncache
+  1 r3/.hg/store/phaseroots
   1 r3/.hg/store/undo
+  1 r3/.hg/store/undo.phaseroots
 
 
 Create a non-inlined filelog in r3:
@@ -110,7 +118,9 @@
   1 r3/.hg/store/data/d1/f2.i
   1 r3/.hg/store/data/f1.i
   1 r3/.hg/store/fncache
+  1 r3/.hg/store/phaseroots
   1 r3/.hg/store/undo
+  1 r3/.hg/store/undo.phaseroots
 
 Push to repo r1 should break up most hardlinks in r2:
 
@@ -193,7 +203,9 @@
   2 r4/.hg/store/data/d1/f2.i
   2 r4/.hg/store/data/f1.i
   2 r4/.hg/store/fncache
+  2 r4/.hg/store/phaseroots
   2 r4/.hg/store/undo
+  2 r4/.hg/store/undo.phaseroots
   2 r4/.hg/undo.bookmarks
   2 r4/.hg/undo.branch
   2 r4/.hg/undo.desc
@@ -222,7 +234,9 @@
   2 r4/.hg/store/data/d1/f2.i
   2 r4/.hg/store/data/f1.i
   2 r4/.hg/store/fncache
+  2 r4/.hg/store/phaseroots
   2 r4/.hg/store/undo
+  2 r4/.hg/store/undo.phaseroots
   2 r4/.hg/undo.bookmarks
   2 r4/.hg/undo.branch
   2 r4/.hg/undo.desc
--- a/tests/test-hgignore.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-hgignore.t	Mon Jan 09 20:16:57 2012 -0600
@@ -44,7 +44,7 @@
 
   $ echo "*.o" > .hgignore
   $ hg status
-  abort: $TESTTMP/.hgignore: invalid pattern (relre): *.o
+  abort: $TESTTMP/.hgignore: invalid pattern (relre): *.o (glob)
   [255]
 
   $ echo ".*\.o" > .hgignore
@@ -88,7 +88,7 @@
 
   $ echo "syntax: invalid" > .hgignore
   $ hg status
-  $TESTTMP/.hgignore: ignoring invalid syntax 'invalid'
+  $TESTTMP/.hgignore: ignoring invalid syntax 'invalid' (glob)
   A dir/b.o
   ? .hgignore
   ? a.c
--- a/tests/test-hgrc.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-hgrc.t	Mon Jan 09 20:16:57 2012 -0600
@@ -26,12 +26,12 @@
   $ cd foobar
   $ cat .hg/hgrc
   [paths]
-  default = $TESTTMP/foo%bar
+  default = $TESTTMP/foo%bar (glob)
   $ hg paths
-  default = $TESTTMP/foo%bar
+  default = $TESTTMP/foo%bar (glob)
   $ hg showconfig
-  bundle.mainreporoot=$TESTTMP/foobar
-  paths.default=$TESTTMP/foo%bar
+  bundle.mainreporoot=$TESTTMP/foobar (glob)
+  paths.default=$TESTTMP/foo%bar (glob)
   $ cd ..
 
 issue1829: wrong indentation
--- a/tests/test-hgweb-commands.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-hgweb-commands.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
 An attempt at more fully testing the hgweb web interface.
 The following things are tested elsewhere and are therefore omitted:
 - archive, tested in test-archive
--- a/tests/test-hgweb-descend-empties.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-hgweb-descend-empties.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
 Test chains of near empty directories, terminating 3 different ways:
 - a1: file at level 4 (deepest)
 - b1: two dirs at level 3
--- a/tests/test-hgweb-diffs.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-hgweb-diffs.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve execbit || exit 80
+
 setting up repo
 
   $ hg init test
@@ -10,7 +12,7 @@
 
 change permissions for git diffs
 
-  $ chmod 755 a
+  $ chmod +x a
   $ hg ci -Amb
 
 set up hgweb
--- a/tests/test-hgweb-empty.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-hgweb-empty.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
 Some tests for hgweb in an empty repository
 
   $ hg init test
--- a/tests/test-hgweb-filelog.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-hgweb-filelog.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
   $ hg init test
   $ cd test
--- a/tests/test-hgweb-raw.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-hgweb-raw.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
 Test raw style of hgweb
 
   $ hg init test
--- a/tests/test-hgweb-removed.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-hgweb-removed.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
 setting up repo
 
   $ hg init test
--- a/tests/test-hgweb.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-hgweb.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
 Some tests for hgweb. Tests static files, plain files and different 404's.
 
   $ hg init test
--- a/tests/test-hgwebdir.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-hgwebdir.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
 Tests some basic hgwebdir functionality. Tests setting up paths and
 collection, different forms of 404s and the subdirectory support.
 
--- a/tests/test-hgwebdirsym.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-hgwebdirsym.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,6 +1,6 @@
 Tests whether or not hgwebdir properly handles various symlink topologies.
 
-  $ "$TESTDIR/hghave" symlink || exit 80
+  $ "$TESTDIR/hghave" serve symlink || exit 80
   $ hg init a
   $ echo a > a/a
   $ hg --cwd a ci -Ama -d'1 0'
--- a/tests/test-highlight.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-highlight.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,5 +1,5 @@
 
-  $ "$TESTDIR/hghave" pygments || exit 80
+  $ "$TESTDIR/hghave" pygments serve || exit 80
   $ cat <<EOF >> $HGRCPATH
   > [extensions]
   > highlight =
--- a/tests/test-hook.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-hook.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" system-sh || exit 80
+
 commit hooks can see env vars
 
   $ hg init a
@@ -66,7 +68,7 @@
 test generic hooks
 
   $ hg id
-  pre-identify hook: HG_ARGS=id HG_OPTS={'bookmarks': None, 'branch': None, 'id': None, 'num': None, 'rev': '', 'tags': None} HG_PATS=[] 
+  pre-identify hook: HG_ARGS=id HG_OPTS={'bookmarks': None, 'branch': None, 'id': None, 'insecure': None, 'num': None, 'remotecmd': '', 'rev': '', 'ssh': '', 'tags': None} HG_PATS=[] 
   warning: pre-identify hook exited with status 1
   [1]
   $ hg cat b
@@ -177,6 +179,7 @@
   pushing to ../a
   searching for changes
   no changes found
+  pushkey hook: HG_KEY=07f3376c1e655977439df2a814e3cc14b27abac2 HG_NAMESPACE=phases HG_NEW=0 HG_OLD=1 HG_RET=1 
   exporting bookmark foo
   pushkey hook: HG_KEY=foo HG_NAMESPACE=bookmarks HG_NEW=0000000000000000000000000000000000000000 HG_RET=1 
   $ cd ../a
@@ -190,6 +193,7 @@
   pulling from ../a
   listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'} 
   no changes found
+  listkeys hook: HG_NAMESPACE=phases HG_VALUES={'539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10': '1', 'publishing': 'True'} 
   listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'} 
   importing bookmark bar
   $ cd ../a
@@ -203,6 +207,7 @@
   pushing to ../a
   searching for changes
   no changes found
+  listkeys hook: HG_NAMESPACE=phases HG_VALUES={'539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10': '1', 'publishing': 'True'} 
   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
--- a/tests/test-http-branchmap.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-http-branchmap.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
   $ hgserve() {
   >     hg serve -a localhost -p $HGPORT1 -d --pid-file=hg.pid -E errors.log -v $@
--- a/tests/test-http-clone-r.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-http-clone-r.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
 creating 'remote
 
   $ hg init remote
--- a/tests/test-http-proxy.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-http-proxy.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
   $ hg init a
   $ cd a
@@ -104,17 +105,21 @@
   * - - [*] "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=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=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=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=bookmarks (glob)
 
--- a/tests/test-http.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-http.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
   $ hg init test
   $ cd test
--- a/tests/test-https.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-https.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,6 +1,6 @@
 Proper https client requires the built-in ssl from Python 2.6.
 
-  $ "$TESTDIR/hghave" ssl || exit 80
+  $ "$TESTDIR/hghave" serve ssl || exit 80
 
 Certificates created with:
  printf '.\n.\n.\n.\n.\nlocalhost\nhg@localhost\n' | \
@@ -118,9 +118,9 @@
   adding manifests
   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)
   updating to branch default
   4 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  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)
   $ hg verify -R copy-pull
   checking changesets
   checking manifests
@@ -146,8 +146,8 @@
   adding manifests
   adding file changes
   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 ..
 
--- a/tests/test-hup.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-hup.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,6 +1,6 @@
 Test hangup signal in the middle of transaction
 
-  $ "$TESTDIR/hghave" fifo || exit 80
+  $ "$TESTDIR/hghave" serve fifo || exit 80
   $ hg init
   $ mkfifo p
   $ hg serve --stdio < p &
@@ -17,4 +17,4 @@
   rollback completed
   killed!
   $ echo .hg/* .hg/store/*
-  .hg/00changelog.i .hg/journal.bookmarks .hg/journal.branch .hg/journal.desc .hg/journal.dirstate .hg/requires .hg/store .hg/store/00changelog.i .hg/store/00changelog.i.a
+  .hg/00changelog.i .hg/journal.bookmarks .hg/journal.branch .hg/journal.desc .hg/journal.dirstate .hg/requires .hg/store .hg/store/00changelog.i .hg/store/00changelog.i.a .hg/store/journal.phaseroots
--- a/tests/test-identify.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-identify.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,4 +1,4 @@
-  $ "$TESTDIR/hghave" no-outer-repo || exit 80
+  $ "$TESTDIR/hghave" no-outer-repo serve || exit 80
 
 no repo
 
--- a/tests/test-import-bypass.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-import-bypass.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" symlink execbit || exit 80
+
   $ echo "[extensions]" >> $HGRCPATH
   $ echo "purge=" >> $HGRCPATH
   $ echo "graphlog=" >> $HGRCPATH
--- a/tests/test-import-git.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-import-git.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" symlink || exit 80
 
   $ hg init
 
--- a/tests/test-import.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-import.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" unix-permissions || exit 80
+
   $ hg init a
   $ mkdir a/d1
   $ mkdir a/d1/d2
@@ -233,7 +235,7 @@
   > msg.set_payload('email commit message\n' + patch)
   > msg['Subject'] = 'email patch'
   > msg['From'] = 'email patcher'
-  > sys.stdout.write(msg.as_string())
+  > file(sys.argv[2], 'wb').write(msg.as_string())
   > EOF
 
 
@@ -246,7 +248,7 @@
   added 1 changesets with 2 changes to 2 files
   updating to branch default
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ python mkmsg.py diffed-tip.patch > msg.patch
+  $ python mkmsg.py diffed-tip.patch msg.patch
   $ hg --cwd b import ../msg.patch
   applying ../msg.patch
   $ hg --cwd b tip | grep email
@@ -308,7 +310,8 @@
   added 1 changesets with 2 changes to 2 files
   updating to branch default
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ python mkmsg.py exported-tip.patch | hg --cwd b import -
+  $ python mkmsg.py exported-tip.patch msg.patch
+  $ cat msg.patch | hg --cwd b import -
   applying patch from stdin
   $ hg --cwd b tip | grep second
   summary:     second change
@@ -325,7 +328,7 @@
   > msg.set_payload('email patch\n\nnext line\n---\n' + patch)
   > msg['Subject'] = '[PATCH] email patch'
   > msg['From'] = 'email patcher'
-  > sys.stdout.write(msg.as_string())
+  > file(sys.argv[2], 'wb').write(msg.as_string())
   > EOF
 
 
@@ -338,7 +341,8 @@
   added 1 changesets with 2 changes to 2 files
   updating to branch default
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ python mkmsg2.py diffed-tip.patch | hg --cwd b import -
+  $ python mkmsg2.py diffed-tip.patch msg.patch
+  $ cat msg.patch | hg --cwd b import -
   applying patch from stdin
   $ hg --cwd b tip --template '{desc}\n'
   email patch
--- a/tests/test-incoming-outgoing.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-incoming-outgoing.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
   $ hg init test
   $ cd test
   $ for i in 0 1 2 3 4 5 6 7 8; do
--- a/tests/test-inherit-mode.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-inherit-mode.t	Mon Jan 09 20:16:57 2012 -0600
@@ -76,7 +76,9 @@
   00660 ./.hg/store/data/dir/bar.i
   00660 ./.hg/store/data/foo.i
   00660 ./.hg/store/fncache
+  00660 ./.hg/store/phaseroots
   00660 ./.hg/store/undo
+  00660 ./.hg/store/undo.phaseroots
   00660 ./.hg/undo.bookmarks
   00660 ./.hg/undo.branch
   00660 ./.hg/undo.desc
@@ -118,6 +120,7 @@
   00660 ../push/.hg/store/data/foo.i
   00660 ../push/.hg/store/fncache
   00660 ../push/.hg/store/undo
+  00660 ../push/.hg/store/undo.phaseroots
   00660 ../push/.hg/undo.bookmarks
   00660 ../push/.hg/undo.branch
   00660 ../push/.hg/undo.desc
--- a/tests/test-init.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-init.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" no-windows || exit 80
+
 This test tries to exercise the ssh functionality with a dummy script
 
   $ checknewrepo()
--- a/tests/test-install.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-install.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,8 +1,8 @@
 hg debuginstall
   $ hg debuginstall
   Checking encoding (ascii)...
-  Checking installed modules (*/mercurial)... (glob)
-  Checking templates (*/mercurial/templates)... (glob)
+  Checking installed modules (*mercurial)... (glob)
+  Checking templates (*mercurial?templates)... (glob)
   Checking commit editor...
   Checking username...
   No problems detected
@@ -10,8 +10,8 @@
 hg debuginstall with no username
   $ HGUSER= hg debuginstall
   Checking encoding (ascii)...
-  Checking installed modules (*/mercurial)... (glob)
-  Checking templates (*/mercurial/templates)... (glob)
+  Checking installed modules (*mercurial)... (glob)
+  Checking templates (*mercurial?templates)... (glob)
   Checking commit editor...
   Checking username...
    no username supplied (see "hg help config")
--- a/tests/test-interhg.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-interhg.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
   $ hg init test
   $ cd test
 
--- a/tests/test-issue1089.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-issue1089.t	Mon Jan 09 20:16:57 2012 -0600
@@ -7,7 +7,7 @@
   adding a/b
 
   $ hg rm a
-  removing a/b
+  removing a/b (glob)
   $ hg ci -m m a
 
   $ mkdir a b
@@ -16,7 +16,7 @@
   adding a/b
 
   $ hg rm a
-  removing a/b
+  removing a/b (glob)
   $ cd b
 
 Relative delete:
--- a/tests/test-issue1502.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-issue1502.t	Mon Jan 09 20:16:57 2012 -0600
@@ -13,7 +13,7 @@
   $ echo "bar" > foo1/a && hg -R foo1 commit -m "edit a in foo1"
   $ echo "hi" > foo/a && hg -R foo commit -m "edited a foo"
   $ hg -R foo1 pull -u
-  pulling from $TESTTMP/foo
+  pulling from $TESTTMP/foo (glob)
   searching for changes
   adding changesets
   adding manifests
@@ -29,7 +29,7 @@
 
   $ echo "there" >> foo/a && hg -R foo commit -m "edited a again"
   $ hg -R foo1 pull
-  pulling from $TESTTMP/foo
+  pulling from $TESTTMP/foo (glob)
   searching for changes
   adding changesets
   adding manifests
--- a/tests/test-issue1802.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-issue1802.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" execbit || exit 80
+
 Create extension that can disable exec checks:
 
   $ cat > noexec.py <<EOF
@@ -53,8 +55,8 @@
     unmatched files in local:
      b
   resolving manifests
-   overwrite None partial False
-   ancestor a03b0deabf2b local d6fa54f68ae1+ remote 2d8bcf2dda39
+   overwrite: False, partial: False
+   ancestor: a03b0deabf2b, local: d6fa54f68ae1+, remote: 2d8bcf2dda39
    a: update permissions -> e
   updating: a 1/1 files (100.00%)
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
--- a/tests/test-issue522.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-issue522.t	Mon Jan 09 20:16:57 2012 -0600
@@ -29,8 +29,8 @@
     unmatched files in local:
      bar
   resolving manifests
-   overwrite None partial False
-   ancestor bbd179dfa0a7 local 71766447bdbb+ remote 4d9e78aaceee
+   overwrite: False, partial: False
+   ancestor: bbd179dfa0a7, local: 71766447bdbb+, remote: 4d9e78aaceee
    foo: remote is newer -> g
   updating: foo 1/1 files (100.00%)
   getting foo
--- a/tests/test-issue612.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-issue612.t	Mon Jan 09 20:16:57 2012 -0600
@@ -7,7 +7,7 @@
   adding src/a.c
 
   $ hg mv src source
-  moving src/a.c to source/a.c
+  moving src/a.c to source/a.c (glob)
 
   $ hg ci -Ammove
 
--- a/tests/test-issue660.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-issue660.t	Mon Jan 09 20:16:57 2012 -0600
@@ -67,9 +67,9 @@
 
   $ hg revert --all
   undeleting a
-  forgetting a/a
+  forgetting a/a (glob)
   forgetting b
-  undeleting b/b
+  undeleting b/b (glob)
 
   $ hg st
 
--- a/tests/test-issue672.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-issue672.t	Mon Jan 09 20:16:57 2012 -0600
@@ -32,8 +32,8 @@
      1a -> 1 
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor 81f4b099af3d local c64f439569a9+ remote c12dcd37c90a
+   overwrite: False, partial: False
+   ancestor: 81f4b099af3d, local: c64f439569a9+, remote: c12dcd37c90a
    1: other deleted -> r
    1a: remote created -> g
   updating: 1 1/2 files (50.00%)
@@ -63,8 +63,8 @@
      1a -> 1 *
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor c64f439569a9 local e327dca35ac8+ remote 746e9549ea96
+   overwrite: False, partial: False
+   ancestor: c64f439569a9, local: e327dca35ac8+, remote: 746e9549ea96
    1a: local copied/moved to 1 -> m
   preserving 1a for resolve of 1a
   updating: 1a 1/1 files (100.00%)
@@ -86,8 +86,8 @@
      1a -> 1 *
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor c64f439569a9 local 746e9549ea96+ remote e327dca35ac8
+   overwrite: False, partial: False
+   ancestor: c64f439569a9, local: 746e9549ea96+, remote: e327dca35ac8
    1: remote moved to 1a -> m
   preserving 1 for resolve of 1a
   removing 1
--- a/tests/test-journal-exists.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-journal-exists.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" unix-permissions || exit 80
+
   $ hg init
   $ echo a > a
   $ hg ci -Am0
--- a/tests/test-keyword.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-keyword.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" symlink unix-permissions serve || exit 80
+
   $ cat <<EOF >> $HGRCPATH
   > [extensions]
   > keyword =
@@ -208,7 +210,7 @@
   Message-Id: <hg.a2392c293916*> (glob)
   To: Test
   
-  changeset a2392c293916 in $TESTTMP/Test
+  changeset a2392c293916 in $TESTTMP/Test (glob)
   details: $TESTTMP/Test?cmd=changeset;node=a2392c293916
   description:
   	addsym
@@ -231,7 +233,7 @@
   Message-Id: <hg.ef63ca68695b*> (glob)
   To: Test
   
-  changeset ef63ca68695b in $TESTTMP/Test
+  changeset ef63ca68695b in $TESTTMP/Test (glob)
   details: $TESTTMP/Test?cmd=changeset;node=ef63ca68695b
   description:
   	absym
@@ -307,8 +309,10 @@
 
 record chunk
 
-  $ python -c \
-  > 'l=open("a").readlines();l.insert(1,"foo\n");l.append("bar\n");open("a","w").writelines(l);'
+  >>> lines = open('a').readlines()
+  >>> lines.insert(1, 'foo\n')
+  >>> lines.append('bar\n')
+  >>> open('a', 'w').writelines(lines)
   $ hg record -d '1 10' -m rectest a<<EOF
   > y
   > y
@@ -797,7 +801,7 @@
   > default = ../Test
   > EOF
   $ hg incoming
-  comparing with $TESTTMP/Test
+  comparing with $TESTTMP/Test (glob)
   searching for changes
   changeset:   2:bb948857c743
   tag:         tip
@@ -807,8 +811,9 @@
   
 Imported patch should not be rejected
 
-  $ python -c \
-  > 'import re; s=re.sub("(Id.*)","\\1 rejecttest",open("a").read()); open("a","wb").write(s);'
+  >>> import re
+  >>> text = re.sub(r'(Id.*)', r'\1 rejecttest', open('a').read())
+  >>> open('a', 'wb').write(text)
   $ hg --debug commit -m'rejects?' -d '3 0' -u 'User Name <user@example.com>'
   a
   overwriting a expanding keywords
@@ -974,7 +979,7 @@
   $ hg merge
   merging m
   warning: conflicts during merge.
-  merging m failed!
+  merging m incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
--- a/tests/test-known.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-known.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
 = Test the known() protocol function =
 
--- a/tests/test-largefiles-small-disk.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-largefiles-small-disk.t	Mon Jan 09 20:16:57 2012 -0600
@@ -65,4 +65,3 @@
 The largefile is not created in .hg/largefiles:
 
   $ ls bob/.hg/largefiles
-  dirstate
--- a/tests/test-largefiles.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-largefiles.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,12 +1,20 @@
+  $ "$TESTDIR/hghave" symlink unix-permissions serve || exit 80
+  $ USERCACHE=`pwd`/cache; export USERCACHE
+  $ mkdir -p ${USERCACHE}
   $ cat >> $HGRCPATH <<EOF
   > [extensions]
   > largefiles=
   > purge=
   > rebase=
   > transplant=
+  > [phases]
+  > publish=False
   > [largefiles]
   > minsize=2
   > patterns=glob:**.dat
+  > usercache=${USERCACHE}
+  > [hooks]
+  > precommit=echo "Invoking status precommit hook"; hg status
   > EOF
 
 Create the repo with a couple of revisions of both large and normal
@@ -23,22 +31,21 @@
   $ hg add normal1 sub/normal2
   $ hg add --large large1 sub/large2
   $ hg commit -m "add files"
+  Invoking status precommit hook
+  A large1
+  A normal1
+  A sub/large2
+  A sub/normal2
   $ echo normal11 > normal1
   $ echo normal22 > sub/normal2
   $ echo large11 > large1
   $ echo large22 > sub/large2
-  $ hg st
+  $ hg commit -m "edit files"
+  Invoking status precommit hook
   M large1
   M normal1
   M sub/large2
   M sub/normal2
-  $ hg sum
-  parent: 0:30d30fe6a5be tip
-   add files
-  branch: default
-  commit: 4 modified
-  update: (current)
-  $ hg commit -m "edit files"
   $ hg sum --large
   parent: 1:ce8896473775 tip
    edit files
@@ -62,6 +69,9 @@
  
   $ hg remove normal1 large1
   $ hg commit -m "remove files"
+  Invoking status precommit hook
+  R large1
+  R normal1
   $ ls
   sub
   $ echo "testlargefile" > large1-test
@@ -81,10 +91,10 @@
 
   $ hg cp sub/normal2 normal1
   $ hg cp sub/large2 large1
-  $ hg st
+  $ hg commit -m "copy files"
+  Invoking status precommit hook
   A large1
   A normal1
-  $ hg commit -m "copy files"
   $ cat normal1
   normal22
   $ cat large1
@@ -97,6 +107,15 @@
   $ hg mv sub/normal2 sub/normal4
   $ hg mv sub/large2 sub/large4
   $ hg commit -m "move files"
+  Invoking status precommit hook
+  A large3
+  A normal3
+  A sub/large4
+  A sub/normal4
+  R large1
+  R normal1
+  R sub/large2
+  R sub/normal2
   $ cat normal3
   normal22
   $ cat large3
@@ -166,6 +185,11 @@
   $ echo normal4 > sub/normal4
   $ echo large4 > sub/large4
   $ hg commit normal3 large3 sub/normal4 sub/large4 -m "edit files again"
+  Invoking status precommit hook
+  M large3
+  M normal3
+  M sub/large4
+  M sub/normal4
   $ cat normal3
   normal3
   $ cat large3
@@ -184,6 +208,11 @@
   $ echo large44 > sub/large4
   $ cd sub
   $ hg commit -m "edit files yet again"
+  Invoking status precommit hook
+  M large3
+  M normal3
+  M sub/large4
+  M sub/normal4
   $ cat ../normal3
   normal33
   $ cat ../large3
@@ -212,8 +241,8 @@
   $ echo large6 > sub2/large6
   $ echo large7 > sub2/large7
   $ hg add --large sub2
-  adding sub2/large6 as a largefile
-  adding sub2/large7 as a largefile
+  adding sub2/large6 as a largefile (glob)
+  adding sub2/large7 as a largefile (glob)
   $ hg st
   M large3
   A large5
@@ -248,7 +277,8 @@
 Test forget on largefiles.
 
   $ hg forget large3 large5 test.dat reallylarge ratherlarge medium
-  $ hg st
+  $ hg commit -m "add/edit more largefiles"
+  Invoking status precommit hook
   A sub2/large6
   A sub2/large7
   R large3
@@ -258,7 +288,6 @@
   ? ratherlarge
   ? reallylarge
   ? test.dat
-  $ hg commit -m "add/edit more largefiles"
   $ hg st
   ? large3
   ? large5
@@ -279,6 +308,20 @@
   $ cat sub2/large7
   large7
 
+Test addremove: verify that files that should be added as largfiles are added as
+such and that already-existing largfiles are not added as normal files by
+accident.
+
+  $ rm normal3
+  $ rm sub/large4
+  $ echo "testing addremove with patterns" > testaddremove.dat
+  $ echo "normaladdremove" > normaladdremove
+  $ hg addremove
+  removing sub/large4
+  adding testaddremove.dat as a largefile
+  removing normal3
+  adding normaladdremove
+
 Clone a largefiles repo.
 
   $ hg clone . ../b
@@ -356,10 +399,16 @@
   $ echo large4-modified > sub/large4
   $ echo normal3-modified > normal3
   $ hg commit -m "modify normal file and largefile in repo b"
+  Invoking status precommit hook
+  M normal3
+  M sub/large4
   $ cd ../d
   $ echo large6-modified > sub2/large6
   $ echo normal4-modified > sub/normal4
   $ hg commit -m "modify normal file largefile in repo d"
+  Invoking status precommit hook
+  M sub/normal4
+  M sub2/large6
   $ cd ..
   $ hg clone d e
   updating to branch default
@@ -376,6 +425,9 @@
   added 1 changesets with 2 changes to 2 files (+1 heads)
   getting changed largefiles
   1 largefiles updated, 0 removed
+  Invoking status precommit hook
+  M sub/normal4
+  M sub2/large6
   saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg
   nothing to rebase
   $ hg log --template '{rev}:{node|short}  {desc|firstline}\n'
@@ -411,59 +463,21 @@
   $ hg rebase
   getting changed largefiles
   1 largefiles updated, 0 removed
+  Invoking status precommit hook
+  M sub/normal4
+  M sub2/large6
   saved backup bundle to $TESTTMP/e/.hg/strip-backup/f574fb32bb45-backup.hg
-  $ hg log
-  changeset:   9:598410d3eb9a
-  tag:         tip
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     modify normal file largefile in repo d
-  
-  changeset:   8:a381d2c8c80e
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     modify normal file and largefile in repo b
-  
-  changeset:   7:daea875e9014
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     add/edit more largefiles
-  
-  changeset:   6:4355d653f84f
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     edit files yet again
-  
-  changeset:   5:9d5af5072dbd
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     edit files again
-  
-  changeset:   4:74c02385b94c
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     move files
-  
-  changeset:   3:9e8fbc4bce62
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     copy files
-  
-  changeset:   2:51a0ae4d5864
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     remove files
-  
-  changeset:   1:ce8896473775
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     edit files
-  
-  changeset:   0:30d30fe6a5be
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     add files
-  
+  $ hg log --template '{rev}:{node|short}  {desc|firstline}\n'
+  9:598410d3eb9a  modify normal file largefile in repo d
+  8:a381d2c8c80e  modify normal file and largefile in repo b
+  7:daea875e9014  add/edit more largefiles
+  6:4355d653f84f  edit files yet again
+  5:9d5af5072dbd  edit files again
+  4:74c02385b94c  move files
+  3:9e8fbc4bce62  copy files
+  2:51a0ae4d5864  remove files
+  1:ce8896473775  edit files
+  0:30d30fe6a5be  add files
   $ cat normal3
   normal3-modified
   $ cat sub/normal4
@@ -479,63 +493,24 @@
 
   $ echo large4-modified-again > sub/large4 
   $ hg commit -m "Modify large4 again"
+  Invoking status precommit hook
+  M sub/large4
   $ hg rollback
   repository tip rolled back to revision 9 (undo commit)
   working directory now based on revision 9
   $ hg st
   M sub/large4
-  $ hg log
-  changeset:   9:598410d3eb9a
-  tag:         tip
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     modify normal file largefile in repo d
-  
-  changeset:   8:a381d2c8c80e
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     modify normal file and largefile in repo b
-  
-  changeset:   7:daea875e9014
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     add/edit more largefiles
-  
-  changeset:   6:4355d653f84f
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     edit files yet again
-  
-  changeset:   5:9d5af5072dbd
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     edit files again
-  
-  changeset:   4:74c02385b94c
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     move files
-  
-  changeset:   3:9e8fbc4bce62
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     copy files
-  
-  changeset:   2:51a0ae4d5864
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     remove files
-  
-  changeset:   1:ce8896473775
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     edit files
-  
-  changeset:   0:30d30fe6a5be
-  user:        test
-  date:        Thu Jan 01 00:00:00 1970 +0000
-  summary:     add files
-  
+  $ hg log --template '{rev}:{node|short}  {desc|firstline}\n'
+  9:598410d3eb9a  modify normal file largefile in repo d
+  8:a381d2c8c80e  modify normal file and largefile in repo b
+  7:daea875e9014  add/edit more largefiles
+  6:4355d653f84f  edit files yet again
+  5:9d5af5072dbd  edit files again
+  4:74c02385b94c  move files
+  3:9e8fbc4bce62  copy files
+  2:51a0ae4d5864  remove files
+  1:ce8896473775  edit files
+  0:30d30fe6a5be  add files
   $ cat sub/large4
   large4-modified-again
 
@@ -581,8 +556,8 @@
 # XXX we don't really want to report that we're reverting the standin;
 # that's just an implementation detail. But I don't see an obvious fix. ;-(
   $ hg revert sub
-  reverting .hglf/sub/large4
-  reverting sub/normal4
+  reverting .hglf/sub/large4 (glob)
+  reverting sub/normal4 (glob)
   $ hg status
   M normal3
   A sub2/large8
@@ -594,8 +569,8 @@
   $ cat sub/large4
   large4-modified
   $ hg revert -a --no-backup
-  undeleting .hglf/sub2/large6
-  forgetting .hglf/sub2/large8
+  undeleting .hglf/sub2/large6 (glob)
+  forgetting .hglf/sub2/large8 (glob)
   reverting normal3
   $ hg status
   ? sub/large4.orig
@@ -609,11 +584,11 @@
 
 revert some files to an older revision
   $ hg revert --no-backup -r 8 sub2
-  reverting .hglf/sub2/large6
+  reverting .hglf/sub2/large6 (glob)
   $ cat sub2/large6
   large6
   $ hg revert --no-backup sub2
-  reverting .hglf/sub2/large6
+  reverting .hglf/sub2/large6 (glob)
   $ hg status
 
 "verify --large" actually verifies largefiles
@@ -643,6 +618,8 @@
   $ cd f
   $ echo "large4-merge-test" > sub/large4
   $ hg commit -m "Modify large4 to test merge"
+  Invoking status precommit hook
+  M sub/large4
   $ hg pull ../e
   pulling from ../e
   searching for changes
@@ -660,6 +637,10 @@
   getting changed largefiles
   1 largefiles updated, 0 removed
   $ hg commit -m "Merge repos e and f"
+  Invoking status precommit hook
+  M normal3
+  M sub/normal4
+  M sub2/large6
   $ cat normal3
   normal3-modified
   $ cat sub/normal4
@@ -676,9 +657,13 @@
   $ echo large > large
   $ hg add --large large
   $ hg commit -m 'add largefile'
+  Invoking status precommit hook
+  A large
   $ hg update -q ".^"
   $ echo change >> normal3
   $ hg commit -m 'some change'
+  Invoking status precommit hook
+  M normal3
   created new head
   $ hg merge
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -743,10 +728,10 @@
 Test that renaming a largefile results in correct output for status
 
   $ hg rename sub/large4 large4-renamed
-  $ hg st
+  $ hg commit -m "test rename output"
+  Invoking status precommit hook
   A large4-renamed
   R sub/large4
-  $ hg commit -m "test rename output"
   $ cat large4-renamed
   large4-modified
   $ cd sub2
@@ -762,7 +747,9 @@
   $ hg init
   $ echo c1 > f1
   $ hg add f1
-  $ hg com -m "m1"
+  $ hg commit -m "m1"
+  Invoking status precommit hook
+  A f1
   $ cd ..
   $ hg serve -R r1 -d -p $HGPORT --pid-file hg.pid
   $ cat hg.pid >> $DAEMON_PIDS
@@ -793,7 +780,9 @@
   $ hg init
   $ echo c1 > f1
   $ hg add --large f1
-  $ hg com -m "m1"
+  $ hg commit -m "m1"
+  Invoking status precommit hook
+  A f1
   $ cd ..
   $ hg serve -R r4 -d -p $HGPORT2 --pid-file hg.pid
   $ cat hg.pid >> $DAEMON_PIDS
@@ -823,7 +812,9 @@
   $ hg init
   $ echo c1 > f1
   $ hg add f1
-  $ hg com -m "m1"
+  $ hg commit -m "m1"
+  Invoking status precommit hook
+  A f1
   $ cat >> .hg/hgrc <<!
   > [web]
   > push_ssl = false
@@ -836,7 +827,9 @@
   $ cd r7
   $ echo c2 > f2
   $ hg add --large f2
-  $ hg com -m "m2"
+  $ hg commit -m "m2"
+  Invoking status precommit hook
+  A f2
   $ hg --config extensions.largefiles=! -R ../r6 serve -d -p $HGPORT --pid-file ../hg.pid
   $ cat ../hg.pid >> $DAEMON_PIDS
   $ hg push http://localhost:$HGPORT
@@ -846,6 +839,21 @@
   [255]
   $ cd ..
 
+putlfile errors are shown (issue3123)
+Corrupt the cached largefile in r7
+  $ echo corruption > $USERCACHE/4cdac4d8b084d0b599525cf732437fb337d422a8
+  $ hg init empty
+  $ hg serve -R empty -d -p $HGPORT1 --pid-file hg.pid \
+  >   --config 'web.allow_push=*' --config web.push_ssl=False
+  $ cat hg.pid >> $DAEMON_PIDS
+  $ hg push -R r7 http://localhost:$HGPORT1
+  pushing to http://localhost:$HGPORT1/
+  searching for changes
+  remote: largefiles: failed to put 4cdac4d8b084d0b599525cf732437fb337d422a8 into store: largefile contents do not match hash
+  abort: remotestore: could not put $TESTTMP/r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8 to remote store http://localhost:$HGPORT1/
+  [255]
+  $ rm -rf empty
+
 Clone a local repository owned by another user
 We have to simulate that here by setting $HOME and removing write permissions
   $ ORIGHOME="$HOME"
@@ -857,6 +865,8 @@
   $ dd if=/dev/urandom bs=1k count=11k > a-large-file 2> /dev/null
   $ hg add --large a-large-file
   $ hg commit -m "Add a large file"
+  Invoking status precommit hook
+  A a-large-file
   $ cd ..
   $ chmod -R a-w pubrepo
   $ cd ..
@@ -874,6 +884,7 @@
   getting changed largefiles
   1 largefiles updated, 0 removed
   $ cd ..
+  $ chmod -R u+w alice/pubrepo
   $ HOME="$ORIGHOME"
 
 Symlink to a large largefile should behave the same as a symlink to a normal file
@@ -882,9 +893,13 @@
   $ dd if=/dev/zero bs=1k count=10k of=largefile 2>/dev/null
   $ hg add --large largefile
   $ hg commit -m "commit a large file"
+  Invoking status precommit hook
+  A largefile
   $ ln -s largefile largelink
   $ hg add largelink
   $ hg commit -m "commit a large symlink"
+  Invoking status precommit hook
+  A largelink
   $ rm -f largelink
   $ hg up >/dev/null
   $ test -f largelink
--- a/tests/test-lfconvert.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-lfconvert.t	Mon Jan 09 20:16:57 2012 -0600
@@ -84,8 +84,8 @@
   $ hg commit -q -m"remove large, normal3"
   $ hg merge
   merging sub/maybelarge.dat and stuff/maybelarge.dat to stuff/maybelarge.dat
-  warning: $TESTTMP/bigfile-repo/stuff/maybelarge.dat looks like a binary file.
-  merging stuff/maybelarge.dat failed!
+  warning: $TESTTMP/bigfile-repo/stuff/maybelarge.dat looks like a binary file. (glob)
+  merging stuff/maybelarge.dat incomplete! (edit conflicts, then use 'hg resolve --mark')
   merging sub/normal2 and stuff/normal2 to stuff/normal2
   0 files updated, 1 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
@@ -171,7 +171,7 @@
   $ hg share -q -U bigfile-repo shared
   $ printf 'bogus' > shared/.hg/sharedpath
   $ hg lfconvert shared foo
-  abort: .hg/sharedpath points to nonexistent directory $TESTTMP/bogus!
+  abort: .hg/sharedpath points to nonexistent directory $TESTTMP/bogus! (glob)
   [255]
   $ hg lfconvert bigfile-repo largefiles-repo
   initializing destination largefiles-repo
--- a/tests/test-locate.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-locate.t	Mon Jan 09 20:16:57 2012 -0600
@@ -88,33 +88,33 @@
   $ rm -r t
 
   $ hg locate 't/**'
-  t/b
-  t/e.h
-  t/x
+  t/b (glob)
+  t/e.h (glob)
+  t/x (glob)
 
   $ mkdir otherdir
   $ cd otherdir
 
   $ hg locate b
-  ../b
-  ../t/b
+  ../b (glob)
+  ../t/b (glob)
   $ hg locate '*.h'
-  ../t.h
-  ../t/e.h
+  ../t.h (glob)
+  ../t/e.h (glob)
   $ hg locate path:t/x
-  ../t/x
+  ../t/x (glob)
   $ hg locate 're:.*\.h$'
-  ../t.h
-  ../t/e.h
+  ../t.h (glob)
+  ../t/e.h (glob)
   $ hg locate -r 0 b
-  ../b
-  ../t/b
+  ../b (glob)
+  ../t/b (glob)
   $ hg locate -r 0 '*.h'
-  ../t.h
-  ../t/e.h
+  ../t.h (glob)
+  ../t/e.h (glob)
   $ hg locate -r 0 path:t/x
-  ../t/x
+  ../t/x (glob)
   $ hg locate -r 0 're:.*\.h$'
-  ../t.h
-  ../t/e.h
+  ../t.h (glob)
+  ../t/e.h (glob)
 
--- a/tests/test-lock-badness.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-lock-badness.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" unix-permissions || exit 80
+
   $ hg init a
   $ echo a > a/a
   $ hg -R a ci -A -m a
--- a/tests/test-log.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-log.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" execbit || exit 80
+
   $ hg init a
 
   $ cd a
@@ -921,7 +923,7 @@
   $ hg merge 7
   merging foo
   warning: conflicts during merge.
-  merging foo failed!
+  merging foo incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
@@ -932,7 +934,7 @@
   $ hg merge 4
   merging foo
   warning: conflicts during merge.
-  merging foo failed!
+  merging foo incomplete! (edit conflicts, then use 'hg resolve --mark')
   1 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
@@ -1157,3 +1159,56 @@
   $ hg log --template='{rev}:{node}\n' --hidden
   1:a765632148dc55d38c35c4f247c618701886cb2f
   0:9f758d63dcde62d547ebfb08e1e7ee96535f2b05
+
+clear extensions configuration
+  $ echo '[extensions]' >> $HGRCPATH
+  $ echo "hidden=!" >> $HGRCPATH
+  $ cd ..
+
+test -u/-k for problematic encoding
+# unicode: cp932:
+# u30A2    0x83 0x41(= 'A')
+# u30C2    0x83 0x61(= 'a')
+
+  $ hg init problematicencoding
+  $ cd problematicencoding
+
+  $ python > setup.sh <<EOF
+  > print u'''
+  > echo a > text
+  > hg add text
+  > hg --encoding utf-8 commit -u '\u30A2' -m none
+  > echo b > text
+  > hg --encoding utf-8 commit -u '\u30C2' -m none
+  > echo c > text
+  > hg --encoding utf-8 commit -u none -m '\u30A2'
+  > echo d > text
+  > hg --encoding utf-8 commit -u none -m '\u30C2'
+  > '''.encode('utf-8')
+  > EOF
+  $ sh < setup.sh
+
+test in problematic encoding
+  $ python > test.sh <<EOF
+  > print u'''
+  > hg --encoding cp932 log --template '{rev}\\n' -u '\u30A2'
+  > echo ====
+  > hg --encoding cp932 log --template '{rev}\\n' -u '\u30C2'
+  > echo ====
+  > hg --encoding cp932 log --template '{rev}\\n' -k '\u30A2'
+  > echo ====
+  > hg --encoding cp932 log --template '{rev}\\n' -k '\u30C2'
+  > '''.encode('cp932')
+  > EOF
+  $ sh < test.sh
+  0
+  ====
+  1
+  ====
+  2
+  0
+  ====
+  3
+  1
+
+  $ cd ..
--- a/tests/test-manifest.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-manifest.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" symlink || exit 80
+
 Source bundle was generated with the following script:
 
 # hg init
--- a/tests/test-merge-commit.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-merge-commit.t	Mon Jan 09 20:16:57 2012 -0600
@@ -69,8 +69,8 @@
   $ hg --debug merge 3
     searching for copies back to rev 1
   resolving manifests
-   overwrite None partial False
-   ancestor 0f2ff26688b9 local 2263c1be0967+ remote 0555950ead28
+   overwrite: False, partial: False
+   ancestor: 0f2ff26688b9, local: 2263c1be0967+, remote: 0555950ead28
    bar: versions differ -> m
   preserving bar for resolve of bar
   updating: bar 1/1 files (100.00%)
@@ -156,8 +156,8 @@
   $ hg --debug merge 3
     searching for copies back to rev 1
   resolving manifests
-   overwrite None partial False
-   ancestor 0f2ff26688b9 local 2263c1be0967+ remote 3ffa6b9e35f0
+   overwrite: False, partial: False
+   ancestor: 0f2ff26688b9, local: 2263c1be0967+, remote: 3ffa6b9e35f0
    bar: versions differ -> m
   preserving bar for resolve of bar
   updating: bar 1/1 files (100.00%)
--- a/tests/test-merge-default.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-merge-default.t	Mon Jan 09 20:16:57 2012 -0600
@@ -66,7 +66,7 @@
 Should fail because at tip:
 
   $ hg merge
-  abort: there is nothing to merge
+  abort: nothing to merge
   [255]
 
   $ hg up 0
@@ -75,7 +75,8 @@
 Should fail because there is only one head:
 
   $ hg merge
-  abort: there is nothing to merge - use "hg update" instead
+  abort: nothing to merge
+  (use 'hg update' instead)
   [255]
 
   $ hg up 3
--- a/tests/test-merge-force.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-merge-force.t	Mon Jan 09 20:16:57 2012 -0600
@@ -19,7 +19,8 @@
 Should fail, since there are deleted files:
 
   $ hg merge
-  abort: outstanding uncommitted changes (use 'hg status' to list changes)
+  abort: outstanding uncommitted changes
+  (use 'hg status' to list changes)
   [255]
 
 Should succeed with --force:
--- a/tests/test-merge-local.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-merge-local.t	Mon Jan 09 20:16:57 2012 -0600
@@ -63,7 +63,7 @@
   merging zzz1_merge_ok
   merging zzz2_merge_bad
   warning: conflicts during merge.
-  merging zzz2_merge_bad failed!
+  merging zzz2_merge_bad incomplete! (edit conflicts, then use 'hg resolve --mark')
   2 files updated, 1 files merged, 3 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges
   [1]
@@ -88,7 +88,7 @@
   merging zzz1_merge_ok
   merging zzz2_merge_bad
   warning: conflicts during merge.
-  merging zzz2_merge_bad failed!
+  merging zzz2_merge_bad incomplete! (edit conflicts, then use 'hg resolve --mark')
   3 files updated, 1 files merged, 2 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges
   [1]
@@ -97,7 +97,7 @@
   merging zzz1_merge_ok
   merging zzz2_merge_bad
   warning: conflicts during merge.
-  merging zzz2_merge_bad failed!
+  merging zzz2_merge_bad incomplete! (edit conflicts, then use 'hg resolve --mark')
   2 files updated, 1 files merged, 3 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges
   [1]
--- a/tests/test-merge-prompt.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-merge-prompt.t	Mon Jan 09 20:16:57 2012 -0600
@@ -77,7 +77,7 @@
 
   $ status
   --- status ---
-  file2: No such file or directory
+  file2: * (glob)
   C file1
   --- file1 ---
   1
@@ -133,7 +133,7 @@
 
   $ status
   --- status ---
-  file2: No such file or directory
+  file2: * (glob)
   C file1
   --- file1 ---
   1
--- a/tests/test-merge-revert2.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-merge-revert2.t	Mon Jan 09 20:16:57 2012 -0600
@@ -45,7 +45,7 @@
   $ hg update
   merging file1
   warning: conflicts during merge.
-  merging file1 failed!
+  merging file1 incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges
   [1]
--- a/tests/test-merge-symlinks.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-merge-symlinks.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" symlink || exit 80
 
   $ cat > echo.py <<EOF
   > #!/usr/bin/env python
--- a/tests/test-merge-tools.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-merge-tools.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" system-sh || exit 80
+
 test merge-tools configuration - mostly exercising filemerge.py
 
   $ unset HGMERGE # make sure HGMERGE doesn't interfere with the test
@@ -66,7 +68,7 @@
   $ PATH="$BINDIR" $PYTHON "$BINDIR"/hg merge -r 2
   merging f
   warning: conflicts during merge.
-  merging f failed!
+  merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
@@ -101,6 +103,32 @@
   M f
   ? f.orig
 
+unexecutable file in $PATH shouldn't be found:
+
+  $ touch false
+  $ hg up -qC 1
+  $ PATH="`pwd`:$BINDIR" $PYTHON "$BINDIR"/hg merge -r 2
+  merging f
+  warning: conflicts during merge.
+  merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
+  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+  use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
+  [1]
+  $ rm false
+
+executable directory in $PATH shouldn't be found:
+
+  $ mkdir false
+  $ hg up -qC 1
+  $ PATH="`pwd`:$BINDIR" $PYTHON "$BINDIR"/hg merge -r 2
+  merging f
+  warning: conflicts during merge.
+  merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
+  0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+  use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
+  [1]
+  $ rmdir false
+
 true with higher .priority gets precedence:
 
   $ echo "true.priority=1" >> .hg/hgrc
--- a/tests/test-merge-types.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-merge-types.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" symlink execbit || exit 80
+
   $ hg init
 
   $ echo a > a
@@ -17,8 +19,8 @@
   $ hg merge --debug
     searching for copies back to rev 1
   resolving manifests
-   overwrite None partial False
-   ancestor c334dc3be0da local 521a1e40188f+ remote 3574f3e69b1c
+   overwrite: False, partial: False
+   ancestor: c334dc3be0da, local: 521a1e40188f+, remote: 3574f3e69b1c
    conflicting flags for a
   (n)one, e(x)ec or sym(l)ink? n
    a: update permissions -> e
@@ -45,8 +47,8 @@
   $ hg merge --debug
     searching for copies back to rev 1
   resolving manifests
-   overwrite None partial False
-   ancestor c334dc3be0da local 3574f3e69b1c+ remote 521a1e40188f
+   overwrite: False, partial: False
+   ancestor: c334dc3be0da, local: 3574f3e69b1c+, remote: 521a1e40188f
    conflicting flags for a
   (n)one, e(x)ec or sym(l)ink? n
    a: remote is newer -> g
--- a/tests/test-merge1.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-merge1.t	Mon Jan 09 20:16:57 2012 -0600
@@ -108,7 +108,8 @@
   $ echo This is file b22 > b
 merge fails
   $ hg merge 2
-  abort: outstanding uncommitted changes (use 'hg status' to list changes)
+  abort: outstanding uncommitted changes
+  (use 'hg status' to list changes)
   [255]
 merge expected!
   $ hg merge -f 2
@@ -144,7 +145,8 @@
   $ echo This is file b33 > b
 merge of b should fail
   $ hg merge 2
-  abort: outstanding uncommitted changes (use 'hg status' to list changes)
+  abort: outstanding uncommitted changes
+  (use 'hg status' to list changes)
   [255]
 merge of b expected
   $ hg merge -f 2
--- a/tests/test-merge7.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-merge7.t	Mon Jan 09 20:16:57 2012 -0600
@@ -45,7 +45,7 @@
   $ hg merge
   merging test.txt
   warning: conflicts during merge.
-  merging test.txt failed!
+  merging test.txt incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
@@ -81,8 +81,8 @@
   $ hg merge --debug
     searching for copies back to rev 1
   resolving manifests
-   overwrite None partial False
-   ancestor 96b70246a118 local 50c3a7e29886+ remote 40d11a4173a8
+   overwrite: False, partial: False
+   ancestor: 96b70246a118, local: 50c3a7e29886+, remote: 40d11a4173a8
    test.txt: versions differ -> m
   preserving test.txt for resolve of test.txt
   updating: test.txt 1/1 files (100.00%)
@@ -90,7 +90,7 @@
   merging test.txt
   my test.txt@50c3a7e29886+ other test.txt@40d11a4173a8 ancestor test.txt@96b70246a118
   warning: conflicts during merge.
-  merging test.txt failed!
+  merging test.txt incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
--- a/tests/test-merge9.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-merge9.t	Mon Jan 09 20:16:57 2012 -0600
@@ -83,7 +83,7 @@
   $ hg resolve -a
   merging bar
   warning: conflicts during merge.
-  merging bar failed!
+  merging bar incomplete! (edit conflicts, then use 'hg resolve --mark')
   [1]
 
 after
--- a/tests/test-mq-merge.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-mq-merge.t	Mon Jan 09 20:16:57 2012 -0600
@@ -56,7 +56,7 @@
 Save the patch queue so we can merge it later:
 
   $ hg qsave -c -e
-  copy $TESTTMP/t/.hg/patches to $TESTTMP/t/.hg/patches.1
+  copy $TESTTMP/t/.hg/patches to $TESTTMP/t/.hg/patches.1 (glob)
   $ checkundo
 
 Update b and commit in an "update" changeset:
@@ -76,7 +76,7 @@
   b
 
   $ hg qpush -a -m
-  merging with queue at: $TESTTMP/t/.hg/patches.1
+  merging with queue at: $TESTTMP/t/.hg/patches.1 (glob)
   applying rm_a
   now at: rm_a
 
@@ -115,14 +115,14 @@
 Create the reference queue:
 
   $ hg qsave -c -e -n refqueue
-  copy $TESTTMP/t2/.hg/patches to $TESTTMP/t2/.hg/refqueue
+  copy $TESTTMP/t2/.hg/patches to $TESTTMP/t2/.hg/refqueue (glob)
   $ hg up -C 1
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
 
 Merge:
 
   $ HGMERGE=internal:other hg qpush -a -m -n refqueue
-  merging with queue at: $TESTTMP/t2/.hg/refqueue
+  merging with queue at: $TESTTMP/t2/.hg/refqueue (glob)
   applying patcha
   patching file a
   Hunk #1 FAILED at 0
@@ -149,13 +149,11 @@
   -b
   +a
   +c
-  diff --git a/a b/aa
-  copy from a
-  copy to aa
-  --- a/a
+  diff --git a/aa b/aa
+  new file mode 100644
+  --- /dev/null
   +++ b/aa
-  @@ -1,1 +1,1 @@
-  -b
+  @@ -0,0 +1,1 @@
   +a
 
 Check patcha2 is still a regular patch:
--- a/tests/test-mq-qclone-http.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-mq-qclone-http.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
   $ echo "[extensions]" >> $HGRCPATH
   $ echo "mq=" >> $HGRCPATH
--- a/tests/test-mq-qdelete.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-mq-qdelete.t	Mon Jan 09 20:16:57 2012 -0600
@@ -188,7 +188,9 @@
   $ echo > .hg/patches/series # remove 4.diff and 5.diff from series to confuse mq
   $ echo hup >>  base
   $ hg qnew -f -d '1 0' -m 6 6.diff
+  $ echo pup > base
   $ hg qfinish -a
+  warning: uncommitted changes in the working directory
   revision 2b1c98802260 refers to unknown patches: 5.diff
   revision 33a6861311c0 refers to unknown patches: 4.diff
 
--- a/tests/test-mq-qimport-fail-cleanup.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-mq-qimport-fail-cleanup.t	Mon Jan 09 20:16:57 2012 -0600
@@ -32,3 +32,9 @@
 
   $ hg qseries
   b.patch
+
+  $ hg pull -q -r 0 . # update phase
+  $ hg qimport -r 0
+  abort: revision 0 is not mutable
+  (see "hg help phases" for details)
+  [255]
--- a/tests/test-mq-qimport.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-mq-qimport.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
   $ cat > writelines.py <<EOF
   > import sys
--- a/tests/test-mq-qnew.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-mq-qnew.t	Mon Jan 09 20:16:57 2012 -0600
@@ -123,7 +123,7 @@
   A series
   A uncommitted.patch
   % qnew missing
-  abort: missing: No such file or directory
+  abort: missing: * (glob)
   % qnew -m
   foo bar
   
@@ -155,7 +155,7 @@
   created new head
   merging a
   warning: conflicts during merge.
-  merging a failed!
+  merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   abort: cannot manage merge changesets
@@ -190,7 +190,7 @@
   A series
   A uncommitted.patch
   % qnew missing
-  abort: missing: No such file or directory
+  abort: missing: * (glob)
   % qnew -m
   # HG changeset patch
   # Parent 
@@ -228,7 +228,7 @@
   created new head
   merging a
   warning: conflicts during merge.
-  merging a failed!
+  merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   abort: cannot manage merge changesets
--- a/tests/test-mq-safety.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-mq-safety.t	Mon Jan 09 20:16:57 2012 -0600
@@ -39,7 +39,7 @@
   abort: popping would remove a revision not managed by this patch queue
   [255]
   $ hg qpop -n patches
-  using patch queue: $TESTTMP/repo/.hg/patches
+  using patch queue: $TESTTMP/repo/.hg/patches (glob)
   abort: popping would remove a revision not managed by this patch queue
   [255]
   $ hg qrefresh
--- a/tests/test-mq.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-mq.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" execbit || exit 80
+
   $ checkundo()
   > {
   >     if [ -f .hg/store/undo ]; then
@@ -135,7 +137,7 @@
   guards
   $ cat .hg/patches/series
   $ hg qinit -c
-  abort: repository $TESTTMP/d/.hg/patches already exists!
+  abort: repository $TESTTMP/d/.hg/patches already exists! (glob)
   [255]
   $ cd ..
 
@@ -154,8 +156,8 @@
   $ echo status >> .hg/patches/.hgignore
   $ echo bleh >> .hg/patches/.hgignore
   $ hg qinit -c
-  adding .hg/patches/A
-  adding .hg/patches/B
+  adding .hg/patches/A (glob)
+  adding .hg/patches/B (glob)
   $ hg -R .hg/patches status
   A .hgignore
   A A
@@ -1191,7 +1193,7 @@
 
   $ cd qclonesource
   $ hg qinit -c
-  adding .hg/patches/patch1
+  adding .hg/patches/patch1 (glob)
   $ hg qci -m checkpoint
   $ qlog
   main repo:
@@ -1392,3 +1394,46 @@
   patch queue now empty
   $ cd ..
 
+
+test case preservation through patch pushing especially on case
+insensitive filesystem
+
+  $ hg init casepreserve
+  $ cd casepreserve
+
+  $ hg qnew add-file1
+  $ echo a > TeXtFiLe.TxT
+  $ hg add TeXtFiLe.TxT
+  $ hg qrefresh
+
+  $ hg qnew add-file2
+  $ echo b > AnOtHeRFiLe.TxT
+  $ hg add AnOtHeRFiLe.TxT
+  $ hg qrefresh
+
+  $ hg qnew modify-file
+  $ echo c >> AnOtHeRFiLe.TxT
+  $ hg qrefresh
+
+  $ hg qapplied
+  add-file1
+  add-file2
+  modify-file
+  $ hg qpop -a
+  popping modify-file
+  popping add-file2
+  popping add-file1
+  patch queue now empty
+
+this qpush causes problems below, if case preservation on case
+insensitive filesystem is not enough:
+(1) unexpected "adding ..." messages are shown
+(2) patching fails in modification of (1) files
+
+  $ hg qpush -a
+  applying add-file1
+  applying add-file2
+  applying modify-file
+  now at: modify-file
+
+  $ cd ..
--- a/tests/test-mv-cp-st-diff.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-mv-cp-st-diff.t	Mon Jan 09 20:16:57 2012 -0600
@@ -560,6 +560,7 @@
   
   - parent to root: --rev . --rev 0
   M a
+    b
   R b
   
   diff --git a/a b/a
@@ -611,6 +612,7 @@
   
   - parent to branch: --rev . --rev 2
   M a
+    b
   A x/y
   R b
   
@@ -906,6 +908,7 @@
   
   - parent to root: --rev . --rev 0
   M a
+    b
   R b
   R c
   
@@ -975,6 +978,7 @@
   
   - parent to branch: --rev . --rev 2
   M a
+    b
   A x/y
   R b
   R c
@@ -1138,7 +1142,7 @@
   updating to branch default
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   created new head
-  moving x/x to y/x
+  moving x/x to y/x (glob)
   ** directory move **
   ** hg mv x y / add y/x x1 / add y/x x2
   - working to parent: 
--- a/tests/test-nested-repo.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-nested-repo.t	Mon Jan 09 20:16:57 2012 -0600
@@ -11,16 +11,16 @@
 Should fail:
 
   $ hg st b/x
-  abort: path 'b/x' is inside nested repo 'b'
+  abort: path 'b/x' is inside nested repo 'b' (glob)
   [255]
   $ hg add b/x
-  abort: path 'b/x' is inside nested repo 'b'
+  abort: path 'b/x' is inside nested repo 'b' (glob)
   [255]
 
 Should fail:
 
   $ hg add b b/x
-  abort: path 'b/x' is inside nested repo 'b'
+  abort: path 'b/x' is inside nested repo 'b' (glob)
   [255]
   $ hg st
 
@@ -34,7 +34,7 @@
 Should fail:
 
   $ hg mv a b
-  abort: path 'b/a' is inside nested repo 'b'
+  abort: path 'b/a' is inside nested repo 'b' (glob)
   [255]
   $ hg st
 
--- a/tests/test-newcgi.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-newcgi.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" no-msys || exit 80 # MSYS will translate web paths as if they were file paths
+
 This tests if CGI files from after d0db3462d568 but
 before d74fc8dec2b4 still work.
 
--- a/tests/test-newercgi.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-newercgi.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" no-msys || exit 80 # MSYS will translate web paths as if they were file paths
+
 This is a rudimentary test of the CGI files as of d74fc8dec2b4.
 
   $ hg init test
--- a/tests/test-notify-changegroup.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-notify-changegroup.t	Mon Jan 09 20:16:57 2012 -0600
@@ -56,11 +56,11 @@
   Message-Id: <*> (glob)
   To: baz, foo@bar
   
-  changeset cb9a9f314b8b in $TESTTMP/a
+  changeset cb9a9f314b8b in $TESTTMP/a (glob)
   details: $TESTTMP/a?cmd=changeset;node=cb9a9f314b8b
   summary: a
   
-  changeset ba677d0156c1 in $TESTTMP/a
+  changeset ba677d0156c1 in $TESTTMP/a (glob)
   details: $TESTTMP/a?cmd=changeset;node=ba677d0156c1
   summary: b
   
@@ -107,11 +107,11 @@
   Message-Id: <*> (glob)
   To: baz, foo@bar
   
-  changeset cb9a9f314b8b in $TESTTMP/a
+  changeset cb9a9f314b8b in $TESTTMP/a (glob)
   details: $TESTTMP/a?cmd=changeset;node=cb9a9f314b8b
   summary: a
   
-  changeset ba677d0156c1 in $TESTTMP/a
+  changeset ba677d0156c1 in $TESTTMP/a (glob)
   details: $TESTTMP/a?cmd=changeset;node=ba677d0156c1
   summary: b
   
@@ -124,3 +124,91 @@
   +a
   +a
   (run 'hg update' to get a working copy)
+
+Check that using the first committer as the author of a changeset works:
+Check that the config option works.
+Check that the first committer is indeed used for "From:".
+Check that the merge user is NOT used for "From:"
+
+Create new file
+
+  $ echo a > b/b
+  $ echo b >> b/b
+  $ echo c >> b/b
+  $ hg --traceback --cwd b commit -Amnewfile -u committer_1
+  adding b
+
+commit as one user
+
+  $ echo x > b/b
+  $ echo b >> b/b
+  $ echo c >> b/b
+  $ hg --traceback --cwd b commit -Amx -u committer_2
+
+commit as other user, change file so we can do an (automatic) merge
+
+  $ hg --cwd b up 2
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ echo a > b/b
+  $ echo b >> b/b
+  $ echo y >> b/b
+  $ hg --traceback --cwd b commit -Amy -u committer_3
+  created new head
+
+merge as a different user
+
+  $ hg --cwd b merge --config notify.fromauthor=True
+  merging b
+  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+
+  $ hg --traceback --cwd b commit -Am "merged"
+
+push
+
+  $ hg --traceback --cwd b --config notify.fromauthor=True push ../a 2>&1 |
+  >     python -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),'
+  pushing to ../a
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 4 changesets with 4 changes to 1 files
+  Content-Type: text/plain; charset="us-ascii"
+  MIME-Version: 1.0
+  Content-Transfer-Encoding: 7bit
+  Date: * (glob)
+  Subject: * (glob)
+  From: committer_1
+  X-Hg-Notification: changeset 84e487dddc58
+  Message-Id: <*> (glob)
+  To: baz, foo@bar
+  
+  changeset 84e487dddc58 in $TESTTMP/a (glob)
+  details: $TESTTMP/a?cmd=changeset;node=84e487dddc58
+  summary: newfile
+  
+  changeset b29c7a2b6b0c in $TESTTMP/a (glob)
+  details: $TESTTMP/a?cmd=changeset;node=b29c7a2b6b0c
+  summary: x
+  
+  changeset 0957c7d64886 in $TESTTMP/a (glob)
+  details: $TESTTMP/a?cmd=changeset;node=0957c7d64886
+  summary: y
+  
+  changeset 485b4e6b0249 in $TESTTMP/a (glob)
+  details: $TESTTMP/a?cmd=changeset;node=485b4e6b0249
+  summary: merged
+  
+  diffs (7 lines):
+  
+  diff -r ba677d0156c1 -r 485b4e6b0249 b
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/b	Thu Jan 01 00:00:00 1970 +0000
+  @@ -0,0 +1,3 @@
+  +x
+  +b
+  +y
+  $ hg --cwd a rollback
+  repository tip rolled back to revision 1 (undo push)
+
--- a/tests/test-notify.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-notify.t	Mon Jan 09 20:16:57 2012 -0600
@@ -113,6 +113,14 @@
   notify.merge
     If True, send notifications for merge changesets. Default: True.
   
+  notify.mbox
+    If set, append mails to this mbox file instead of sending. Default: None.
+  
+  notify.fromauthor
+    If set, use the first committer of the changegroup for the "From" field of
+    the notification mail. If not set, take the user from the pushing repo.
+    Default: False.
+  
   If set, the following entries will also be used to customize the
   notifications:
   
@@ -173,7 +181,7 @@
   Message-Id: <*> (glob)
   To: baz, foo@bar
   
-  changeset 0647d048b600 in $TESTTMP/b
+  changeset 0647d048b600 in $TESTTMP/b (glob)
   details: $TESTTMP/b?cmd=changeset;node=0647d048b600
   description: b
   
@@ -350,7 +358,7 @@
   description: merge
   (run 'hg update' to get a working copy)
 
-truncate multi-byte subject
+non-ascii content and truncation of multi-byte subject
 
   $ cat <<EOF >> $HGRCPATH
   > [notify]
@@ -395,3 +403,67 @@
    a
   +a
   (run 'hg update' to get a working copy)
+
+long lines
+
+  $ cat <<EOF >> $HGRCPATH
+  > [notify]
+  > maxsubject = 67
+  > test = False
+  > mbox = mbox
+  > EOF
+  $ python -c 'file("a/a", "ab").write("no" * 500 + "\n")'
+  $ hg --cwd a commit -A -m "long line"
+  $ hg --traceback --cwd b pull ../a
+  pulling from ../a
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  notify: sending 2 subscribers 1 changes
+  (run 'hg update' to get a working copy)
+  $ python -c 'import sys,re; print re.sub("\n\t", " ", file("b/mbox").read()),'
+  From test@test.com ... ... .. ..:..:.. .... (re)
+  Content-Type: text/plain; charset="us-ascii"
+  MIME-Version: 1.0
+  Content-Transfer-Encoding: quoted-printable
+  X-Test: foo
+  Date: * (glob)
+  Subject: long line
+  From: test@test.com
+  X-Hg-Notification: changeset e0be44cf638b
+  Message-Id: <hg.e0be44cf638b.*.*@*> (glob)
+  To: baz@test.com, foo@bar
+  
+  changeset e0be44cf638b in b
+  description: long line
+  diffstat:
+  
+   a |  1 +
+   1 files changed, 1 insertions(+), 0 deletions(-)
+  
+  diffs (8 lines):
+  
+  diff -r 7ea05ad269dc -r e0be44cf638b a
+  --- a/a	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a	Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,3 +1,4 @@
+   a
+   a
+   a
+  +nonononononononononononononononononononononononononononononononononononono=
+  nononononononononononononononononononononononononononononononononononononon=
+  ononononononononononononononononononononononononononononononononononononono=
+  nononononononononononononononononononononononononononononononononononononon=
+  ononononononononononononononononononononononononononononononononononononono=
+  nononononononononononononononononononononononononononononononononononononon=
+  ononononononononononononononononononononononononononononononononononononono=
+  nononononononononononononononononononononononononononononononononononononon=
+  ononononononononononononononononononononononononononononononononononononono=
+  nononononononononononononononononononononononononononononononononononononon=
+  ononononononononononononononononononononononononononononononononononononono=
+  nononononononononononononononononononononononononononononononononononononon=
+  ononononononononononononononononononononononononononononononononononononono=
+  nonononononononononononono
+  
--- a/tests/test-oldcgi.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-oldcgi.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" no-msys || exit 80 # MSYS will translate web paths as if they were file paths
+
 This tests if CGI files from before d0db3462d568 still work.
 
   $ hg init test
--- a/tests/test-patchbomb.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-patchbomb.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,11 +1,5 @@
-  $ fixheaders()
-  > {
-  >     sed -e 's/\(Message-Id:.*@\).*/\1/'  \
-  >         -e 's/\(In-Reply-To:.*@\).*/\1/' \
-  >         -e 's/\(References:.*@\).*/\1/'  \
-  >         -e 's/\(User-Agent:.*\)\/.*/\1/'  \
-  >         -e 's/===.*/===/'
-  > }
+  $ "$TESTDIR/hghave" system-sh || exit 80
+
   $ echo "[extensions]" >> $HGRCPATH
   $ echo "patchbomb=" >> $HGRCPATH
 
@@ -25,7 +19,7 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716.60@* (glob)
+  Message-Id: <8580ff50825a50c8f716.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
@@ -80,7 +74,7 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2] test
-  Message-Id: <patchbomb\.120@[^>]*> (re)
+  Message-Id: <patchbomb.120@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:02:00 +0000
   From: quux
@@ -94,9 +88,9 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 1 of 2] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716\.121@[^>]*> (re)
-  In-Reply-To: <patchbomb\.120@[^>]*> (re)
-  References: <patchbomb\.120@[^>]*> (re)
+  Message-Id: <8580ff50825a50c8f716.121@*> (glob)
+  In-Reply-To: <patchbomb.120@*> (glob)
+  References: <patchbomb.120@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:02:01 +0000
   From: quux
@@ -122,9 +116,9 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 2 of 2] b
   X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
-  Message-Id: <97d72e5f12c7e84f8506\.122@[^>]*> (re)
-  In-Reply-To: <patchbomb\.120@[^>]*> (re)
-  References: <patchbomb\.120@[^>]*> (re)
+  Message-Id: <97d72e5f12c7e84f8506.122@*> (glob)
+  In-Reply-To: <patchbomb.120@*> (glob)
+  References: <patchbomb.120@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:02:02 +0000
   From: quux
@@ -167,20 +161,20 @@
   Write the introductory message for the patch series.
   
   
-  writing [                                             ] 0/3
-  writing [                                             ] 0/3
+  sending [                                             ] 0/3
+  sending [                                             ] 0/3
                                                               
                                                               
-  writing [==============>                              ] 1/3
-  writing [==============>                              ] 1/3
+  sending [==============>                              ] 1/3
+  sending [==============>                              ] 1/3
                                                               
                                                               
-  writing [=============================>               ] 2/3
-  writing [=============================>               ] 2/3
+  sending [=============================>               ] 2/3
+  sending [=============================>               ] 2/3
                                                               \r (esc)
-  Writing [PATCH 0 of 2] test ...
-  Writing [PATCH 1 of 2] a ...
-  Writing [PATCH 2 of 2] b ...
+  Sending [PATCH 0 of 2] test ...
+  Sending [PATCH 1 of 2] a ...
+  Sending [PATCH 2 of 2] b ...
   
 
   $ cd ..
@@ -200,22 +194,22 @@
 
 test bundle and description:
   $ hg email --date '1970-1-1 0:3' -n -f quux -t foo \
-  >  -c bar -s test -r tip -b --desc description | fixheaders
+  >  -c bar -s test -r tip -b --desc description
   searching for changes
   1 changesets found
   
   Displaying test ...
-  Content-Type: multipart/mixed; boundary="===
+  Content-Type: multipart/mixed; boundary="===*" (glob)
   MIME-Version: 1.0
   Subject: test
-  Message-Id: <patchbomb.180@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <patchbomb.180@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:03:00 +0000
   From: quux
   To: foo
   Cc: bar
   
-  --===
+  --===* (glob)
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
@@ -224,7 +218,7 @@
   
   description
   
-  --===
+  --===* (glob)
   Content-Type: application/x-mercurial-bundle
   MIME-Version: 1.0
   Content-Disposition: attachment; filename="bundle.hg"
@@ -237,86 +231,27 @@
   SlIBpFisgGkyRjX//TMtfcUAEsGu56+YnE1OlTZmzKm8BSu2rvo4rHAYYaadIFFuTy0LYgIkgLVD
   sgVa2F19D1tx9+hgbAygLgQwaIqcDdgA4BjQgIiz/AEP72++llgDKhKducqodGE4B0ETqF3JFOFC
   Q70eyNw=
-  --===
+  --===*-- (glob)
 
 utf-8 patch:
   $ python -c 'fp = open("utf", "wb"); fp.write("h\xC3\xB6mma!\n"); fp.close();'
-  $ hg commit -A -d '4 0' -m 'charset=utf-8; content-transfer-encoding: base64'
+  $ hg commit -A -d '4 0' -m 'utf-8 content'
   adding description
   adding utf
 
 no mime encoding for email --test:
-  $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | fixheaders > mailtest
-
-md5sum of 8-bit output:
-  $ $TESTDIR/md5sum.py mailtest
-  e726c29b3008e77994c7572563e57c34  mailtest
-
-  $ rm mailtest
-
-mime encoded mbox (base64):
-  $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
+  $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n
   This patch series consists of 1 patches.
   
   
-  Writing [PATCH] charset=utf-8; content-transfer-encoding: base64 ...
-
-  $ cat mbox
-  From quux Thu Jan 01 00:04:01 1970
-  Content-Type: text/plain; charset="utf-8"
-  MIME-Version: 1.0
-  Content-Transfer-Encoding: base64
-  Subject: [PATCH] charset=utf-8; content-transfer-encoding: base64
-  X-Mercurial-Node: c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
-  Message-Id: <c3c9e37db9f4fe4882cd.240@* (glob)
-  User-Agent: Mercurial-patchbomb/* (glob)
-  Date: Thu, 01 Jan 1970 00:04:00 +0000
-  From: quux
-  To: foo
-  Cc: bar
-  
-  IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIHRlc3QKIyBEYXRlIDQgMAojIE5vZGUgSUQgYzNj
-  OWUzN2RiOWY0ZmU0ODgyY2RhMzliYWY0MmZlZDZiYWQ4YjE1YQojIFBhcmVudCAgZmYyYzlmYTIw
-  MThiMTVmYTc0YjMzMzYzYmRhOTUyNzMyM2UyYTk5ZgpjaGFyc2V0PXV0Zi04OyBjb250ZW50LXRy
-  YW5zZmVyLWVuY29kaW5nOiBiYXNlNjQKCmRpZmYgLXIgZmYyYzlmYTIwMThiIC1yIGMzYzllMzdk
-  YjlmNCBkZXNjcmlwdGlvbgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
-  MDAwMAorKysgYi9kZXNjcmlwdGlvbglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAKQEAg
-  LTAsMCArMSwzIEBACithIG11bHRpbGluZQorCitkZXNjcmlwdGlvbgpkaWZmIC1yIGZmMmM5ZmEy
-  MDE4YiAtciBjM2M5ZTM3ZGI5ZjQgdXRmCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
-  MCAxOTcwICswMDAwCisrKyBiL3V0ZglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAKQEAg
-  LTAsMCArMSwxIEBACitow7ZtbWEhCg==
-  
-  
-  $ rm mbox
-
-mime encoded mbox (quoted-printable):
-  $ python -c 'fp = open("qp", "wb"); fp.write("%s\nfoo\n\nbar\n" % ("x" * 1024)); fp.close();'
-  $ hg commit -A -d '4 0' -m 'charset=utf-8; content-transfer-encoding: quoted-printable'
-  adding qp
-
-no mime encoding for email --test:
-  $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | \
-  >  fixheaders > mailtest
-md5sum of qp output:
-  $ $TESTDIR/md5sum.py mailtest
-  0402c7d033e04044e423bb04816f9dae  mailtest
-  $ rm mailtest
-
-mime encoded mbox (quoted-printable):
-  $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
-  This patch series consists of 1 patches.
-  
-  
-  Writing [PATCH] charset=utf-8; content-transfer-encoding: quoted-printable ...
-  $ cat mbox | fixheaders
-  From quux Thu Jan 01 00:04:01 1970
+  Displaying [PATCH] utf-8 content ...
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
-  Content-Transfer-Encoding: quoted-printable
-  Subject: [PATCH] charset=utf-8; content-transfer-encoding: quoted-printable
-  X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
-  Message-Id: <c655633f8c87700bb38c.240@
-  User-Agent: Mercurial-patchbomb
+  Content-Transfer-Encoding: 8bit
+  Subject: [PATCH] utf-8 content
+  X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f
+  Message-Id: <909a00e13e9d78b575ae.240@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:04:00 +0000
   From: quux
   To: foo
@@ -325,13 +260,162 @@
   # HG changeset patch
   # User test
   # Date 4 0
-  # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
-  # Parent  c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
-  charset=3Dutf-8; content-transfer-encoding: quoted-printable
+  # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f
+  # Parent  ff2c9fa2018b15fa74b33363bda9527323e2a99f
+  utf-8 content
+  
+  diff -r ff2c9fa2018b -r 909a00e13e9d description
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/description	Thu Jan 01 00:00:04 1970 +0000
+  @@ -0,0 +1,3 @@
+  +a multiline
+  +
+  +description
+  diff -r ff2c9fa2018b -r 909a00e13e9d utf
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/utf	Thu Jan 01 00:00:04 1970 +0000
+  @@ -0,0 +1,1 @@
+  +h\xc3\xb6mma! (esc)
+  
+
+mime encoded mbox (base64):
+  $ hg email --date '1970-1-1 0:4' -f 'Q <quux>' -t foo -c bar -r tip -m mbox
+  This patch series consists of 1 patches.
+  
+  
+  Sending [PATCH] utf-8 content ...
+
+  $ cat mbox
+  From quux ... ... .. ..:..:.. .... (re)
+  Content-Type: text/plain; charset="utf-8"
+  MIME-Version: 1.0
+  Content-Transfer-Encoding: base64
+  Subject: [PATCH] utf-8 content
+  X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f
+  Message-Id: <909a00e13e9d78b575ae.240@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
+  Date: Thu, 01 Jan 1970 00:04:00 +0000
+  From: Q <quux>
+  To: foo
+  Cc: bar
+  
+  IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIHRlc3QKIyBEYXRlIDQgMAojIE5vZGUgSUQgOTA5
+  YTAwZTEzZTlkNzhiNTc1YWVlZTIzZGRkYmFkYTQ2ZDVhMTQzZgojIFBhcmVudCAgZmYyYzlmYTIw
+  MThiMTVmYTc0YjMzMzYzYmRhOTUyNzMyM2UyYTk5Zgp1dGYtOCBjb250ZW50CgpkaWZmIC1yIGZm
+  MmM5ZmEyMDE4YiAtciA5MDlhMDBlMTNlOWQgZGVzY3JpcHRpb24KLS0tIC9kZXYvbnVsbAlUaHUg
+  SmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvZGVzY3JpcHRpb24JVGh1IEphbiAwMSAw
+  MDowMDowNCAxOTcwICswMDAwCkBAIC0wLDAgKzEsMyBAQAorYSBtdWx0aWxpbmUKKworZGVzY3Jp
+  cHRpb24KZGlmZiAtciBmZjJjOWZhMjAxOGIgLXIgOTA5YTAwZTEzZTlkIHV0ZgotLS0gL2Rldi9u
+  dWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi91dGYJVGh1IEphbiAwMSAw
+  MDowMDowNCAxOTcwICswMDAwCkBAIC0wLDAgKzEsMSBAQAoraMO2bW1hIQo=
+  
+  
+  $ python -c 'print open("mbox").read().split("\n\n")[1].decode("base64")'
+  # HG changeset patch
+  # User test
+  # Date 4 0
+  # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f
+  # Parent  ff2c9fa2018b15fa74b33363bda9527323e2a99f
+  utf-8 content
+  
+  diff -r ff2c9fa2018b -r 909a00e13e9d description
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/description	Thu Jan 01 00:00:04 1970 +0000
+  @@ -0,0 +1,3 @@
+  +a multiline
+  +
+  +description
+  diff -r ff2c9fa2018b -r 909a00e13e9d utf
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/utf	Thu Jan 01 00:00:04 1970 +0000
+  @@ -0,0 +1,1 @@
+  +h\xc3\xb6mma! (esc)
   
-  diff -r c3c9e37db9f4 -r c655633f8c87 qp
+  $ rm mbox
+
+mime encoded mbox (quoted-printable):
+  $ python -c 'fp = open("long", "wb"); fp.write("%s\nfoo\n\nbar\n" % ("x" * 1024)); fp.close();'
+  $ hg commit -A -d '4 0' -m 'long line'
+  adding long
+
+no mime encoding for email --test:
+  $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n
+  This patch series consists of 1 patches.
+  
+  
+  Displaying [PATCH] long line ...
+  Content-Type: text/plain; charset="us-ascii"
+  MIME-Version: 1.0
+  Content-Transfer-Encoding: quoted-printable
+  Subject: [PATCH] long line
+  X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  Message-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
+  Date: Thu, 01 Jan 1970 00:04:00 +0000
+  From: quux
+  To: foo
+  Cc: bar
+  
+  # HG changeset patch
+  # User test
+  # Date 4 0
+  # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  # Parent  909a00e13e9d78b575aeee23dddbada46d5a143f
+  long line
+  
+  diff -r 909a00e13e9d -r a2ea8fc83dd8 long
   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/qp	Thu Jan 01 00:00:04 1970 +0000
+  +++ b/long	Thu Jan 01 00:00:04 1970 +0000
+  @@ -0,0 +1,4 @@
+  +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
+  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
+  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
+  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
+  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
+  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
+  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
+  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
+  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
+  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
+  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
+  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
+  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
+  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+  +foo
+  +
+  +bar
+  
+
+mime encoded mbox (quoted-printable):
+  $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
+  This patch series consists of 1 patches.
+  
+  
+  Sending [PATCH] long line ...
+  $ cat mbox
+  From quux ... ... .. ..:..:.. .... (re)
+  Content-Type: text/plain; charset="us-ascii"
+  MIME-Version: 1.0
+  Content-Transfer-Encoding: quoted-printable
+  Subject: [PATCH] long line
+  X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  Message-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
+  Date: Thu, 01 Jan 1970 00:04:00 +0000
+  From: quux
+  To: foo
+  Cc: bar
+  
+  # HG changeset patch
+  # User test
+  # Date 4 0
+  # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  # Parent  909a00e13e9d78b575aeee23dddbada46d5a143f
+  long line
+  
+  diff -r 909a00e13e9d -r a2ea8fc83dd8 long
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/long	Thu Jan 01 00:00:04 1970 +0000
   @@ -0,0 +1,4 @@
   +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
@@ -357,7 +441,7 @@
 
 iso-8859-1 patch:
   $ python -c 'fp = open("isolatin", "wb"); fp.write("h\xF6mma!\n"); fp.close();'
-  $ hg commit -A -d '5 0' -m 'charset=us-ascii; content-transfer-encoding: 8bit'
+  $ hg commit -A -d '5 0' -m 'isolatin 8-bit encoding'
   adding isolatin
 
 fake ascii mbox:
@@ -365,16 +449,38 @@
   This patch series consists of 1 patches.
   
   
-  Writing [PATCH] charset=us-ascii; content-transfer-encoding: 8bit ...
-  $ fixheaders < mbox > mboxfix
-
-md5sum of 8-bit output:
-  $ $TESTDIR/md5sum.py mboxfix
-  9ea043d8fc43a71045114508baed144b  mboxfix
+  Sending [PATCH] isolatin 8-bit encoding ...
+  $ cat mbox
+  From quux ... ... .. ..:..:.. .... (re)
+  Content-Type: text/plain; charset="us-ascii"
+  MIME-Version: 1.0
+  Content-Transfer-Encoding: 8bit
+  Subject: [PATCH] isolatin 8-bit encoding
+  X-Mercurial-Node: 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
+  Message-Id: <240fb913fc1b7ff15ddb.300@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
+  Date: Thu, 01 Jan 1970 00:05:00 +0000
+  From: quux
+  To: foo
+  Cc: bar
+  
+  # HG changeset patch
+  # User test
+  # Date 5 0
+  # Node ID 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
+  # Parent  a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  isolatin 8-bit encoding
+  
+  diff -r a2ea8fc83dd8 -r 240fb913fc1b isolatin
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/isolatin	Thu Jan 01 00:00:05 1970 +0000
+  @@ -0,0 +1,1 @@
+  +h\xf6mma! (esc)
+  
+  
 
 test diffstat for single patch:
-  $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y -r 2 | \
-  >  fixheaders
+  $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y -r 2
   This patch series consists of 1 patches.
   
   
@@ -395,8 +501,8 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
-  Message-Id: <ff2c9fa2018b15fa74b3.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -422,7 +528,7 @@
 
 test diffstat for multiple patches:
   $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y \
-  >  -r 0:1 | fixheaders
+  >  -r 0:1
   This patch series consists of 2 patches.
   
   
@@ -452,8 +558,8 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2] test
-  Message-Id: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -470,10 +576,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 1 of 2] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716.61@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <8580ff50825a50c8f716.61@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
@@ -502,10 +608,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 2 of 2] b
   X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
-  Message-Id: <97d72e5f12c7e84f8506.62@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
@@ -530,24 +636,23 @@
   
 
 test inline for single patch:
-  $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
-  >  fixheaders
+  $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2
   This patch series consists of 1 patches.
   
   
   Displaying [PATCH] test ...
-  Content-Type: multipart/mixed; boundary="===
+  Content-Type: multipart/mixed; boundary="===*" (glob)
   MIME-Version: 1.0
   Subject: [PATCH] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
-  Message-Id: <ff2c9fa2018b15fa74b3.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
   
-  --===
+  --===* (glob)
   Content-Type: text/x-patch; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
@@ -566,28 +671,27 @@
   @@ -0,0 +1,1 @@
   +c
   
-  --===
+  --===*-- (glob)
 
 
 test inline for single patch (quoted-printable):
-  $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 4 | \
-  >  fixheaders
+  $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 4
   This patch series consists of 1 patches.
   
   
   Displaying [PATCH] test ...
-  Content-Type: multipart/mixed; boundary="===
+  Content-Type: multipart/mixed; boundary="===*" (glob)
   MIME-Version: 1.0
   Subject: [PATCH] test
-  X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
-  Message-Id: <c655633f8c87700bb38c.60@
-  User-Agent: Mercurial-patchbomb
+  X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  Message-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
   
-  --===
+  --===* (glob)
   Content-Type: text/x-patch; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: quoted-printable
@@ -596,13 +700,13 @@
   # HG changeset patch
   # User test
   # Date 4 0
-  # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
-  # Parent  c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
-  charset=3Dutf-8; content-transfer-encoding: quoted-printable
+  # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  # Parent  909a00e13e9d78b575aeee23dddbada46d5a143f
+  long line
   
-  diff -r c3c9e37db9f4 -r c655633f8c87 qp
+  diff -r 909a00e13e9d -r a2ea8fc83dd8 long
   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/qp	Thu Jan 01 00:00:04 1970 +0000
+  +++ b/long	Thu Jan 01 00:00:04 1970 +0000
   @@ -0,0 +1,4 @@
   +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
@@ -622,11 +726,11 @@
   +
   +bar
   
-  --===
+  --===*-- (glob)
 
 test inline for multiple patches:
   $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
-  >  -r 0:1 -r 4 | fixheaders
+  >  -r 0:1 -r 4
   This patch series consists of 3 patches.
   
   
@@ -638,8 +742,8 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 3] test
-  Message-Id: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -647,20 +751,20 @@
   
   
   Displaying [PATCH 1 of 3] a ...
-  Content-Type: multipart/mixed; boundary="===
+  Content-Type: multipart/mixed; boundary="===*" (glob)
   MIME-Version: 1.0
   Subject: [PATCH 1 of 3] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716.61@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <8580ff50825a50c8f716.61@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
   Cc: bar
   
-  --===
+  --===* (glob)
   Content-Type: text/x-patch; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
@@ -679,22 +783,22 @@
   @@ -0,0 +1,1 @@
   +a
   
-  --===
+  --===*-- (glob)
   Displaying [PATCH 2 of 3] b ...
-  Content-Type: multipart/mixed; boundary="===
+  Content-Type: multipart/mixed; boundary="===*" (glob)
   MIME-Version: 1.0
   Subject: [PATCH 2 of 3] b
   X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
-  Message-Id: <97d72e5f12c7e84f8506.62@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
   Cc: bar
   
-  --===
+  --===* (glob)
   Content-Type: text/x-patch; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
@@ -713,23 +817,22 @@
   @@ -0,0 +1,1 @@
   +b
   
-  --===
-  Displaying [PATCH 3 of 3] charset=utf-8; content-transfer-encoding: quoted-printable ...
-  Content-Type: multipart/mixed; boundary="===
+  --===*-- (glob)
+  Displaying [PATCH 3 of 3] long line ...
+  Content-Type: multipart/mixed; boundary="===*" (glob)
   MIME-Version: 1.0
-  Subject: [PATCH 3 of 3] charset=utf-8;
-   content-transfer-encoding: quoted-printable
-  X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
-  Message-Id: <c655633f8c87700bb38c.63@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Subject: [PATCH 3 of 3] long line
+  X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  Message-Id: <a2ea8fc83dd8b93cfd86.63@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:03 +0000
   From: quux
   To: foo
   Cc: bar
   
-  --===
+  --===* (glob)
   Content-Type: text/x-patch; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: quoted-printable
@@ -738,13 +841,13 @@
   # HG changeset patch
   # User test
   # Date 4 0
-  # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
-  # Parent  c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
-  charset=3Dutf-8; content-transfer-encoding: quoted-printable
+  # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  # Parent  909a00e13e9d78b575aeee23dddbada46d5a143f
+  long line
   
-  diff -r c3c9e37db9f4 -r c655633f8c87 qp
+  diff -r 909a00e13e9d -r a2ea8fc83dd8 long
   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/qp	Thu Jan 01 00:00:04 1970 +0000
+  +++ b/long	Thu Jan 01 00:00:04 1970 +0000
   @@ -0,0 +1,4 @@
   +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
@@ -764,27 +867,26 @@
   +
   +bar
   
-  --===
+  --===*-- (glob)
 
 test attach for single patch:
-  $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 2 | \
-  >  fixheaders
+  $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 2
   This patch series consists of 1 patches.
   
   
   Displaying [PATCH] test ...
-  Content-Type: multipart/mixed; boundary="===
+  Content-Type: multipart/mixed; boundary="===*" (glob)
   MIME-Version: 1.0
   Subject: [PATCH] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
-  Message-Id: <ff2c9fa2018b15fa74b3.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
   
-  --===
+  --===* (glob)
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
@@ -793,7 +895,7 @@
   
   
   
-  --===
+  --===* (glob)
   Content-Type: text/x-patch; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
@@ -812,27 +914,26 @@
   @@ -0,0 +1,1 @@
   +c
   
-  --===
+  --===*-- (glob)
 
 test attach for single patch (quoted-printable):
-  $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 4 | \
-  >  fixheaders
+  $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 4
   This patch series consists of 1 patches.
   
   
   Displaying [PATCH] test ...
-  Content-Type: multipart/mixed; boundary="===
+  Content-Type: multipart/mixed; boundary="===*" (glob)
   MIME-Version: 1.0
   Subject: [PATCH] test
-  X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
-  Message-Id: <c655633f8c87700bb38c.60@
-  User-Agent: Mercurial-patchbomb
+  X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  Message-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
   
-  --===
+  --===* (glob)
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
@@ -841,7 +942,7 @@
   
   
   
-  --===
+  --===* (glob)
   Content-Type: text/x-patch; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: quoted-printable
@@ -850,13 +951,13 @@
   # HG changeset patch
   # User test
   # Date 4 0
-  # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
-  # Parent  c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
-  charset=3Dutf-8; content-transfer-encoding: quoted-printable
+  # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  # Parent  909a00e13e9d78b575aeee23dddbada46d5a143f
+  long line
   
-  diff -r c3c9e37db9f4 -r c655633f8c87 qp
+  diff -r 909a00e13e9d -r a2ea8fc83dd8 long
   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/qp	Thu Jan 01 00:00:04 1970 +0000
+  +++ b/long	Thu Jan 01 00:00:04 1970 +0000
   @@ -0,0 +1,4 @@
   +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
@@ -876,11 +977,11 @@
   +
   +bar
   
-  --===
+  --===*-- (glob)
 
 test attach for multiple patches:
   $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a \
-  >  -r 0:1 -r 4 | fixheaders
+  >  -r 0:1 -r 4
   This patch series consists of 3 patches.
   
   
@@ -892,8 +993,8 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 3] test
-  Message-Id: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -901,20 +1002,20 @@
   
   
   Displaying [PATCH 1 of 3] a ...
-  Content-Type: multipart/mixed; boundary="===
+  Content-Type: multipart/mixed; boundary="===*" (glob)
   MIME-Version: 1.0
   Subject: [PATCH 1 of 3] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716.61@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <8580ff50825a50c8f716.61@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
   Cc: bar
   
-  --===
+  --===* (glob)
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
@@ -923,7 +1024,7 @@
   
   
   
-  --===
+  --===* (glob)
   Content-Type: text/x-patch; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
@@ -942,22 +1043,22 @@
   @@ -0,0 +1,1 @@
   +a
   
-  --===
+  --===*-- (glob)
   Displaying [PATCH 2 of 3] b ...
-  Content-Type: multipart/mixed; boundary="===
+  Content-Type: multipart/mixed; boundary="===*" (glob)
   MIME-Version: 1.0
   Subject: [PATCH 2 of 3] b
   X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
-  Message-Id: <97d72e5f12c7e84f8506.62@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
   Cc: bar
   
-  --===
+  --===* (glob)
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
@@ -966,7 +1067,7 @@
   
   
   
-  --===
+  --===* (glob)
   Content-Type: text/x-patch; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
@@ -985,23 +1086,22 @@
   @@ -0,0 +1,1 @@
   +b
   
-  --===
-  Displaying [PATCH 3 of 3] charset=utf-8; content-transfer-encoding: quoted-printable ...
-  Content-Type: multipart/mixed; boundary="===
+  --===*-- (glob)
+  Displaying [PATCH 3 of 3] long line ...
+  Content-Type: multipart/mixed; boundary="===*" (glob)
   MIME-Version: 1.0
-  Subject: [PATCH 3 of 3] charset=utf-8;
-   content-transfer-encoding: quoted-printable
-  X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
-  Message-Id: <c655633f8c87700bb38c.63@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Subject: [PATCH 3 of 3] long line
+  X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  Message-Id: <a2ea8fc83dd8b93cfd86.63@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:03 +0000
   From: quux
   To: foo
   Cc: bar
   
-  --===
+  --===* (glob)
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
@@ -1010,7 +1110,7 @@
   
   
   
-  --===
+  --===* (glob)
   Content-Type: text/x-patch; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: quoted-printable
@@ -1019,13 +1119,13 @@
   # HG changeset patch
   # User test
   # Date 4 0
-  # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
-  # Parent  c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
-  charset=3Dutf-8; content-transfer-encoding: quoted-printable
+  # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  # Parent  909a00e13e9d78b575aeee23dddbada46d5a143f
+  long line
   
-  diff -r c3c9e37db9f4 -r c655633f8c87 qp
+  diff -r 909a00e13e9d -r a2ea8fc83dd8 long
   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/qp	Thu Jan 01 00:00:04 1970 +0000
+  +++ b/long	Thu Jan 01 00:00:04 1970 +0000
   @@ -0,0 +1,4 @@
   +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
@@ -1045,11 +1145,11 @@
   +
   +bar
   
-  --===
+  --===*-- (glob)
 
 test intro for single patch:
   $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
-  >  -r 2 | fixheaders
+  >  -r 2
   This patch series consists of 1 patches.
   
   
@@ -1061,8 +1161,8 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 1] test
-  Message-Id: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -1075,10 +1175,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 1 of 1] c
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
-  Message-Id: <ff2c9fa2018b15fa74b3.61@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <ff2c9fa2018b15fa74b3.61@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
@@ -1101,7 +1201,7 @@
 test --desc without --intro for a single patch:
   $ echo foo > intro.text
   $ hg email --date '1970-1-1 0:1' -n --desc intro.text -f quux -t foo -c bar \
-  >  -s test -r 2 | fixheaders
+  >  -s test -r 2
   This patch series consists of 1 patches.
   
   
@@ -1110,8 +1210,8 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 1] test
-  Message-Id: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -1125,10 +1225,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 1 of 1] c
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
-  Message-Id: <ff2c9fa2018b15fa74b3.61@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <ff2c9fa2018b15fa74b3.61@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
@@ -1150,7 +1250,7 @@
 
 test intro for multiple patches:
   $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
-  >  -r 0:1 | fixheaders
+  >  -r 0:1
   This patch series consists of 2 patches.
   
   
@@ -1162,8 +1262,8 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2] test
-  Message-Id: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -1176,10 +1276,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 1 of 2] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716.61@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <8580ff50825a50c8f716.61@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
@@ -1204,10 +1304,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 2 of 2] b
   X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
-  Message-Id: <97d72e5f12c7e84f8506.62@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
@@ -1229,7 +1329,7 @@
 
 test reply-to via config:
   $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \
-  >  --config patchbomb.reply-to='baz@example.com' | fixheaders
+  >  --config patchbomb.reply-to='baz@example.com'
   This patch series consists of 1 patches.
   
   
@@ -1239,8 +1339,8 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
-  Message-Id: <ff2c9fa2018b15fa74b3.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -1263,7 +1363,7 @@
 
 test reply-to via command line:
   $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \
-  >  --reply-to baz --reply-to fred | fixheaders
+  >  --reply-to baz --reply-to fred
   This patch series consists of 1 patches.
   
   
@@ -1273,8 +1373,8 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
-  Message-Id: <ff2c9fa2018b15fa74b3.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -1301,24 +1401,23 @@
   $ hg tag -r2 two two.diff
 
 test inline for single named patch:
-  $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
-  >  fixheaders
+  $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2
   This patch series consists of 1 patches.
   
   
   Displaying [PATCH] test ...
-  Content-Type: multipart/mixed; boundary="===
+  Content-Type: multipart/mixed; boundary="===*" (glob)
   MIME-Version: 1.0
   Subject: [PATCH] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
-  Message-Id: <ff2c9fa2018b15fa74b3.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
   
-  --===
+  --===* (glob)
   Content-Type: text/x-patch; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
@@ -1337,11 +1436,10 @@
   @@ -0,0 +1,1 @@
   +c
   
-  --===
+  --===*-- (glob)
 
 test inline for multiple named/unnamed patches:
-  $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 0:1 | \
-  >  fixheaders
+  $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 0:1
   This patch series consists of 2 patches.
   
   
@@ -1353,8 +1451,8 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2] test
-  Message-Id: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -1362,20 +1460,20 @@
   
   
   Displaying [PATCH 1 of 2] a ...
-  Content-Type: multipart/mixed; boundary="===
+  Content-Type: multipart/mixed; boundary="===*" (glob)
   MIME-Version: 1.0
   Subject: [PATCH 1 of 2] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716.61@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <8580ff50825a50c8f716.61@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
   Cc: bar
   
-  --===
+  --===* (glob)
   Content-Type: text/x-patch; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
@@ -1394,22 +1492,22 @@
   @@ -0,0 +1,1 @@
   +a
   
-  --===
+  --===*-- (glob)
   Displaying [PATCH 2 of 2] b ...
-  Content-Type: multipart/mixed; boundary="===
+  Content-Type: multipart/mixed; boundary="===*" (glob)
   MIME-Version: 1.0
   Subject: [PATCH 2 of 2] b
   X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
-  Message-Id: <97d72e5f12c7e84f8506.62@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
   Cc: bar
   
-  --===
+  --===* (glob)
   Content-Type: text/x-patch; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
@@ -1428,12 +1526,12 @@
   @@ -0,0 +1,1 @@
   +b
   
-  --===
+  --===*-- (glob)
 
 
 test inreplyto:
   $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
-  >  -r tip | fixheaders
+  >  -r tip
   This patch series consists of 1 patches.
   
   
@@ -1442,11 +1540,11 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b
-  X-Mercurial-Node: e317db6a6f288748d1f6cb064f3810fcba66b1b6
-  Message-Id: <e317db6a6f288748d1f6.60@
+  X-Mercurial-Node: 7aead2484924c445ad8ce2613df91f52f9e502ed
+  Message-Id: <7aead2484924c445ad8c.60@*> (glob)
   In-Reply-To: <baz>
   References: <baz>
-  User-Agent: Mercurial-patchbomb
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -1455,11 +1553,11 @@
   # HG changeset patch
   # User test
   # Date 0 0
-  # Node ID e317db6a6f288748d1f6cb064f3810fcba66b1b6
-  # Parent  eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
+  # Node ID 7aead2484924c445ad8ce2613df91f52f9e502ed
+  # Parent  045ca29b1ea20e4940411e695e20e521f2f0f98e
   Added tag two, two.diff for changeset ff2c9fa2018b
   
-  diff -r eae5fcf795ee -r e317db6a6f28 .hgtags
+  diff -r 045ca29b1ea2 -r 7aead2484924 .hgtags
   --- a/.hgtags	Thu Jan 01 00:00:00 1970 +0000
   +++ b/.hgtags	Thu Jan 01 00:00:00 1970 +0000
   @@ -2,3 +2,5 @@
@@ -1471,7 +1569,7 @@
   
 no intro message in non-interactive mode
   $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
-  >  -r 0:1 | fixheaders
+  >  -r 0:1
   This patch series consists of 2 patches.
   
   Subject: [PATCH 0 of 2] 
@@ -1482,10 +1580,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 1 of 2] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716.60@
+  Message-Id: <8580ff50825a50c8f716.60@*> (glob)
   In-Reply-To: <baz>
   References: <baz>
-  User-Agent: Mercurial-patchbomb
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -1510,10 +1608,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 2 of 2] b
   X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
-  Message-Id: <97d72e5f12c7e84f8506.61@
-  In-Reply-To: <8580ff50825a50c8f716.60@
-  References: <8580ff50825a50c8f716.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <97d72e5f12c7e84f8506.61@*> (glob)
+  In-Reply-To: <8580ff50825a50c8f716.60@*> (glob)
+  References: <8580ff50825a50c8f716.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
@@ -1536,7 +1634,7 @@
 
 
   $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
-  >  -s test -r 0:1 | fixheaders
+  >  -s test -r 0:1
   This patch series consists of 2 patches.
   
   
@@ -1548,10 +1646,10 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2] test
-  Message-Id: <patchbomb.60@
+  Message-Id: <patchbomb.60@*> (glob)
   In-Reply-To: <baz>
   References: <baz>
-  User-Agent: Mercurial-patchbomb
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -1564,10 +1662,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 1 of 2] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716.61@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <8580ff50825a50c8f716.61@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
@@ -1592,10 +1690,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 2 of 2] b
   X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
-  Message-Id: <97d72e5f12c7e84f8506.62@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
@@ -1617,7 +1715,7 @@
 
 test single flag for single patch:
   $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
-  >  -r 2 | fixheaders
+  >  -r 2
   This patch series consists of 1 patches.
   
   
@@ -1627,8 +1725,8 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH fooFlag] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
-  Message-Id: <ff2c9fa2018b15fa74b3.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -1650,7 +1748,7 @@
 
 test single flag for multiple patches:
   $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
-  >  -r 0:1 | fixheaders
+  >  -r 0:1
   This patch series consists of 2 patches.
   
   
@@ -1662,8 +1760,8 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2 fooFlag] test
-  Message-Id: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -1676,10 +1774,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 1 of 2 fooFlag] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716.61@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <8580ff50825a50c8f716.61@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
@@ -1704,10 +1802,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 2 of 2 fooFlag] b
   X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
-  Message-Id: <97d72e5f12c7e84f8506.62@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
@@ -1729,7 +1827,7 @@
 
 test mutiple flags for single patch:
   $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
-  >  -c bar -s test -r 2 | fixheaders
+  >  -c bar -s test -r 2
   This patch series consists of 1 patches.
   
   
@@ -1739,8 +1837,8 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH fooFlag barFlag] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
-  Message-Id: <ff2c9fa2018b15fa74b3.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -1762,7 +1860,7 @@
 
 test multiple flags for multiple patches:
   $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
-  >  -c bar -s test -r 0:1 | fixheaders
+  >  -c bar -s test -r 0:1
   This patch series consists of 2 patches.
   
   
@@ -1774,8 +1872,8 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2 fooFlag barFlag] test
-  Message-Id: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -1788,10 +1886,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 1 of 2 fooFlag barFlag] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716.61@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <8580ff50825a50c8f716.61@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
@@ -1816,10 +1914,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 2 of 2 fooFlag barFlag] b
   X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
-  Message-Id: <97d72e5f12c7e84f8506.62@
-  In-Reply-To: <patchbomb.60@
-  References: <patchbomb.60@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
+  In-Reply-To: <patchbomb.60@*> (glob)
+  References: <patchbomb.60@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
@@ -1846,16 +1944,16 @@
   This patch series consists of 1 patches.
   
   
-  Writing [PATCH] test ...
-  $ fixheaders < tmp.mbox
-  From quux Tue Jan 01 00:01:01 1980
+  Sending [PATCH] test ...
+  $ cat < tmp.mbox
+  From quux ... ... .. ..:..:.. .... (re)
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH] test
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716.315532860@
-  User-Agent: Mercurial-patchbomb
+  Message-Id: <8580ff50825a50c8f716.315532860@*> (glob)
+  User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:00 +0000
   From: quux
   To: spam <spam>, eggs, toast
@@ -1886,16 +1984,16 @@
   
   Cc: 
   
-  Writing [PATCH] test ...
+  Sending [PATCH] test ...
 
   $ cat tmp.mbox
-  From quux Tue Jan 01 00:01:01 1980
+  From quux ... ... .. ..:..:.. .... (re)
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH] test
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716.315532860@* (glob)
+  Message-Id: <8580ff50825a50c8f716.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:00 +0000
   From: quux
@@ -1943,7 +2041,7 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 8] test
-  Message-Id: <patchbomb.315532860@* (glob)
+  Message-Id: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:00 +0000
   From: test
@@ -1956,9 +2054,9 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 1 of 8] c
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
-  Message-Id: <ff2c9fa2018b15fa74b3.315532861@* (glob)
-  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
-  References: <patchbomb\.315532860@[^>]*> (re)
+  Message-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
+  In-Reply-To: <patchbomb.315532860@*> (glob)
+  References: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:01 +0000
   From: test
@@ -1977,15 +2075,15 @@
   @@ -0,0 +1,1 @@
   +c
   
-  Displaying [PATCH 2 of 8] charset=utf-8; content-transfer-encoding: base64 ...
+  Displaying [PATCH 2 of 8] utf-8 content ...
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 8bit
-  Subject: [PATCH 2 of 8] charset=utf-8; content-transfer-encoding: base64
-  X-Mercurial-Node: c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
-  Message-Id: <c3c9e37db9f4fe4882cd.315532862@* (glob)
-  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
-  References: <patchbomb\.315532860@[^>]*> (re)
+  Subject: [PATCH 2 of 8] utf-8 content
+  X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f
+  Message-Id: <909a00e13e9d78b575ae.315532862@*> (glob)
+  In-Reply-To: <patchbomb.315532860@*> (glob)
+  References: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:02 +0000
   From: test
@@ -1994,33 +2092,32 @@
   # HG changeset patch
   # User test
   # Date 4 0
-  # Node ID c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
+  # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f
   # Parent  ff2c9fa2018b15fa74b33363bda9527323e2a99f
-  charset=utf-8; content-transfer-encoding: base64
+  utf-8 content
   
-  diff -r ff2c9fa2018b -r c3c9e37db9f4 description
+  diff -r ff2c9fa2018b -r 909a00e13e9d description
   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   +++ b/description	Thu Jan 01 00:00:04 1970 +0000
   @@ -0,0 +1,3 @@
   +a multiline
   +
   +description
-  diff -r ff2c9fa2018b -r c3c9e37db9f4 utf
+  diff -r ff2c9fa2018b -r 909a00e13e9d utf
   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   +++ b/utf	Thu Jan 01 00:00:04 1970 +0000
   @@ -0,0 +1,1 @@
   +h\xc3\xb6mma! (esc)
   
-  Displaying [PATCH 3 of 8] charset=utf-8; content-transfer-encoding: quoted-printable ...
+  Displaying [PATCH 3 of 8] long line ...
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: quoted-printable
-  Subject: [PATCH 3 of 8] charset=utf-8;
-   content-transfer-encoding: quoted-printable
-  X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
-  Message-Id: <c655633f8c87700bb38c.315532863@* (glob)
-  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
-  References: <patchbomb\.315532860@[^>]*> (re)
+  Subject: [PATCH 3 of 8] long line
+  X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  Message-Id: <a2ea8fc83dd8b93cfd86.315532863@*> (glob)
+  In-Reply-To: <patchbomb.315532860@*> (glob)
+  References: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:03 +0000
   From: test
@@ -2029,13 +2126,13 @@
   # HG changeset patch
   # User test
   # Date 4 0
-  # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
-  # Parent  c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
-  charset=3Dutf-8; content-transfer-encoding: quoted-printable
+  # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  # Parent  909a00e13e9d78b575aeee23dddbada46d5a143f
+  long line
   
-  diff -r c3c9e37db9f4 -r c655633f8c87 qp
+  diff -r 909a00e13e9d -r a2ea8fc83dd8 long
   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/qp	Thu Jan 01 00:00:04 1970 +0000
+  +++ b/long	Thu Jan 01 00:00:04 1970 +0000
   @@ -0,0 +1,4 @@
   +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
@@ -2055,15 +2152,15 @@
   +
   +bar
   
-  Displaying [PATCH 4 of 8] charset=us-ascii; content-transfer-encoding: 8bit ...
+  Displaying [PATCH 4 of 8] isolatin 8-bit encoding ...
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 8bit
-  Subject: [PATCH 4 of 8] charset=us-ascii; content-transfer-encoding: 8bit
-  X-Mercurial-Node: 22d0f96be12f5945fd67d101af58f7bc8263c835
-  Message-Id: <22d0f96be12f5945fd67.315532864@* (glob)
-  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
-  References: <patchbomb\.315532860@[^>]*> (re)
+  Subject: [PATCH 4 of 8] isolatin 8-bit encoding
+  X-Mercurial-Node: 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
+  Message-Id: <240fb913fc1b7ff15ddb.315532864@*> (glob)
+  In-Reply-To: <patchbomb.315532860@*> (glob)
+  References: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:04 +0000
   From: test
@@ -2072,11 +2169,11 @@
   # HG changeset patch
   # User test
   # Date 5 0
-  # Node ID 22d0f96be12f5945fd67d101af58f7bc8263c835
-  # Parent  c655633f8c87700bb38cc6a59a2753bdc5a6c376
-  charset=us-ascii; content-transfer-encoding: 8bit
+  # Node ID 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
+  # Parent  a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
+  isolatin 8-bit encoding
   
-  diff -r c655633f8c87 -r 22d0f96be12f isolatin
+  diff -r a2ea8fc83dd8 -r 240fb913fc1b isolatin
   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   +++ b/isolatin	Thu Jan 01 00:00:05 1970 +0000
   @@ -0,0 +1,1 @@
@@ -2087,10 +2184,10 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 5 of 8] Added tag zero, zero.foo for changeset 8580ff50825a
-  X-Mercurial-Node: dd9c2b4b8a8a0934d5523c15f2c119b362360903
-  Message-Id: <dd9c2b4b8a8a0934d552.315532865@* (glob)
-  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
-  References: <patchbomb\.315532860@[^>]*> (re)
+  X-Mercurial-Node: 5d5ef15dfe5e7bd3a4ee154b5fff76c7945ec433
+  Message-Id: <5d5ef15dfe5e7bd3a4ee.315532865@*> (glob)
+  In-Reply-To: <patchbomb.315532860@*> (glob)
+  References: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:05 +0000
   From: test
@@ -2099,11 +2196,11 @@
   # HG changeset patch
   # User test
   # Date 0 0
-  # Node ID dd9c2b4b8a8a0934d5523c15f2c119b362360903
-  # Parent  22d0f96be12f5945fd67d101af58f7bc8263c835
+  # Node ID 5d5ef15dfe5e7bd3a4ee154b5fff76c7945ec433
+  # Parent  240fb913fc1b7ff15ddb9f33e73d82bf5277c720
   Added tag zero, zero.foo for changeset 8580ff50825a
   
-  diff -r 22d0f96be12f -r dd9c2b4b8a8a .hgtags
+  diff -r 240fb913fc1b -r 5d5ef15dfe5e .hgtags
   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   +++ b/.hgtags	Thu Jan 01 00:00:00 1970 +0000
   @@ -0,0 +1,2 @@
@@ -2115,10 +2212,10 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 6 of 8] Added tag one, one.patch for changeset 97d72e5f12c7
-  X-Mercurial-Node: eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
-  Message-Id: <eae5fcf795eee29d0e45.315532866@* (glob)
-  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
-  References: <patchbomb\.315532860@[^>]*> (re)
+  X-Mercurial-Node: 045ca29b1ea20e4940411e695e20e521f2f0f98e
+  Message-Id: <045ca29b1ea20e494041.315532866@*> (glob)
+  In-Reply-To: <patchbomb.315532860@*> (glob)
+  References: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:06 +0000
   From: test
@@ -2127,11 +2224,11 @@
   # HG changeset patch
   # User test
   # Date 0 0
-  # Node ID eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
-  # Parent  dd9c2b4b8a8a0934d5523c15f2c119b362360903
+  # Node ID 045ca29b1ea20e4940411e695e20e521f2f0f98e
+  # Parent  5d5ef15dfe5e7bd3a4ee154b5fff76c7945ec433
   Added tag one, one.patch for changeset 97d72e5f12c7
   
-  diff -r dd9c2b4b8a8a -r eae5fcf795ee .hgtags
+  diff -r 5d5ef15dfe5e -r 045ca29b1ea2 .hgtags
   --- a/.hgtags	Thu Jan 01 00:00:00 1970 +0000
   +++ b/.hgtags	Thu Jan 01 00:00:00 1970 +0000
   @@ -1,2 +1,4 @@
@@ -2145,10 +2242,10 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 7 of 8] Added tag two, two.diff for changeset ff2c9fa2018b
-  X-Mercurial-Node: e317db6a6f288748d1f6cb064f3810fcba66b1b6
-  Message-Id: <e317db6a6f288748d1f6.315532867@* (glob)
-  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
-  References: <patchbomb\.315532860@[^>]*> (re)
+  X-Mercurial-Node: 7aead2484924c445ad8ce2613df91f52f9e502ed
+  Message-Id: <7aead2484924c445ad8c.315532867@*> (glob)
+  In-Reply-To: <patchbomb.315532860@*> (glob)
+  References: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:07 +0000
   From: test
@@ -2157,11 +2254,11 @@
   # HG changeset patch
   # User test
   # Date 0 0
-  # Node ID e317db6a6f288748d1f6cb064f3810fcba66b1b6
-  # Parent  eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
+  # Node ID 7aead2484924c445ad8ce2613df91f52f9e502ed
+  # Parent  045ca29b1ea20e4940411e695e20e521f2f0f98e
   Added tag two, two.diff for changeset ff2c9fa2018b
   
-  diff -r eae5fcf795ee -r e317db6a6f28 .hgtags
+  diff -r 045ca29b1ea2 -r 7aead2484924 .hgtags
   --- a/.hgtags	Thu Jan 01 00:00:00 1970 +0000
   +++ b/.hgtags	Thu Jan 01 00:00:00 1970 +0000
   @@ -2,3 +2,5 @@
@@ -2177,9 +2274,9 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 8 of 8] d
   X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
-  Message-Id: <2f9fa9b998c5fe3ac2bd\.315532868[^>]*> (re)
-  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
-  References: <patchbomb\.315532860@[^>]*> (re)
+  Message-Id: <2f9fa9b998c5fe3ac2bd.315532868@*> (glob)
+  In-Reply-To: <patchbomb.315532860@*> (glob)
+  References: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:08 +0000
   From: test
@@ -2215,7 +2312,7 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH] test
   X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
-  Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@* (glob)
+  Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:00 +0000
   From: test
--- a/tests/test-paths.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-paths.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" no-msys || exit 80 # MSYS will translate /foo/bar as if it was a real file path
+
   $ hg init a
   $ hg clone a b
   updating to branch default
@@ -7,29 +9,29 @@
   $ echo 'dupe = ../b' >> .hg/hgrc
   $ echo 'expand = $SOMETHING/bar' >> .hg/hgrc
   $ hg in dupe
-  comparing with $TESTTMP/b
+  comparing with $TESTTMP/b (glob)
   no changes found
   [1]
   $ cd ..
   $ hg -R a in dupe
-  comparing with $TESTTMP/b
+  comparing with $TESTTMP/b (glob)
   no changes found
   [1]
   $ cd a
   $ hg paths
-  dupe = $TESTTMP/b
-  expand = $TESTTMP/a/$SOMETHING/bar
+  dupe = $TESTTMP/b (glob)
+  expand = $TESTTMP/a/$SOMETHING/bar (glob)
   $ SOMETHING=foo hg paths
-  dupe = $TESTTMP/b
-  expand = $TESTTMP/a/foo/bar
+  dupe = $TESTTMP/b (glob)
+  expand = $TESTTMP/a/foo/bar (glob)
   $ SOMETHING=/foo hg paths
-  dupe = $TESTTMP/b
+  dupe = $TESTTMP/b (glob)
   expand = /foo/bar
   $ hg paths -q
   dupe
   expand
   $ hg paths dupe
-  $TESTTMP/b
+  $TESTTMP/b (glob)
   $ hg paths -q dupe
   $ hg paths unknown
   not found!
--- a/tests/test-pending.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-pending.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" system-sh || exit 80
+
 Verify that pending changesets are seen by pretxn* hooks but not by other
 processes that access the destination repo while the hooks are running.
 
--- a/tests/test-permissions.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-permissions.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" unix-permissions || exit 80
+
   $ hg init t
   $ cd t
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-phases-exchange.t	Mon Jan 09 20:16:57 2012 -0600
@@ -0,0 +1,609 @@
+  $ cat >> $HGRCPATH <<EOF
+  > [extensions]
+  > graphlog=
+  > EOF
+  $ alias hgph='hg log --template "{rev} {phase} {desc} - {node|short}\n"'
+
+  $ mkcommit() {
+  >    echo "$1" > "$1"
+  >    hg add "$1"
+  >    message="$1"
+  >    shift
+  >    hg ci -m "$message" $*
+  > }
+
+  $ hg init alpha
+  $ cd alpha
+  $ mkcommit a-A
+  $ mkcommit a-B
+  $ mkcommit a-C
+  $ mkcommit a-D
+  $ hgph
+  3 1 a-D - b555f63b6063
+  2 1 a-C - 54acac6f23ab
+  1 1 a-B - 548a3d25dbf0
+  0 1 a-A - 054250a37db4
+
+  $ hg init ../beta
+  $ hg push -r 1 ../beta
+  pushing to ../beta
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 2 changes to 2 files
+  $ hgph
+  3 1 a-D - b555f63b6063
+  2 1 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+
+  $ cd ../beta
+  $ hgph
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+  $ hg up -q
+  $ mkcommit b-A
+  $ hgph
+  2 1 b-A - f54f1bb90ff3
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+  $ hg pull ../alpha
+  pulling from ../alpha
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 2 changes to 2 files (+1 heads)
+  (run 'hg heads' to see heads, 'hg merge' to merge)
+  $ hgph
+  4 0 a-D - b555f63b6063
+  3 0 a-C - 54acac6f23ab
+  2 1 b-A - f54f1bb90ff3
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+
+pull did not updated ../alpha state.
+push from alpha to beta should update phase even if nothing is transfered
+
+  $ cd ../alpha
+  $ hgph # not updated by remote pull
+  3 1 a-D - b555f63b6063
+  2 1 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+  $ hg push ../beta
+  pushing to ../beta
+  searching for changes
+  no changes found
+  $ hgph
+  3 0 a-D - b555f63b6063
+  2 0 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+
+update must update phase of common changeset too
+
+  $ hg pull ../beta # getting b-A
+  pulling from ../beta
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files (+1 heads)
+  (run 'hg heads' to see heads, 'hg merge' to merge)
+
+  $ cd ../beta
+  $ hgph # not updated by remote pull
+  4 0 a-D - b555f63b6063
+  3 0 a-C - 54acac6f23ab
+  2 1 b-A - f54f1bb90ff3
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+  $ hg pull ../alpha
+  pulling from ../alpha
+  searching for changes
+  no changes found
+  $ hgph
+  4 0 a-D - b555f63b6063
+  3 0 a-C - 54acac6f23ab
+  2 0 b-A - f54f1bb90ff3
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+
+Publish configuration option
+----------------------------
+
+Pull
+````
+
+changegroup are added without phase movement
+
+  $ hg bundle -a ../base.bundle
+  5 changesets found
+  $ cd ..
+  $ hg init mu
+  $ cd mu
+  $ cat > .hg/hgrc << EOF
+  > [phases]
+  > publish=0
+  > EOF
+  $ hg unbundle ../base.bundle
+  adding changesets
+  adding manifests
+  adding file changes
+  added 5 changesets with 5 changes to 5 files (+1 heads)
+  (run 'hg heads' to see heads, 'hg merge' to merge)
+  $ hgph
+  4 1 a-D - b555f63b6063
+  3 1 a-C - 54acac6f23ab
+  2 1 b-A - f54f1bb90ff3
+  1 1 a-B - 548a3d25dbf0
+  0 1 a-A - 054250a37db4
+  $ cd ..
+
+Pulling from publish=False to publish=False does not move boundary.
+
+  $ hg init nu
+  $ cd nu
+  $ cat > .hg/hgrc << EOF
+  > [phases]
+  > publish=0
+  > EOF
+  $ hg pull ../mu -r 54acac6f23ab
+  pulling from ../mu
+  adding changesets
+  adding manifests
+  adding file changes
+  added 3 changesets with 3 changes to 3 files
+  (run 'hg update' to get a working copy)
+  $ hgph
+  2 1 a-C - 54acac6f23ab
+  1 1 a-B - 548a3d25dbf0
+  0 1 a-A - 054250a37db4
+
+Even for common
+
+  $ hg pull ../mu -r f54f1bb90ff3
+  pulling from ../mu
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files (+1 heads)
+  (run 'hg heads' to see heads, 'hg merge' to merge)
+  $ hgph
+  3 1 b-A - f54f1bb90ff3
+  2 1 a-C - 54acac6f23ab
+  1 1 a-B - 548a3d25dbf0
+  0 1 a-A - 054250a37db4
+
+
+Pulling from Publish=True to Publish=False move boundary in common set.
+we are in nu
+
+  $ hg pull ../alpha -r b555f63b6063
+  pulling from ../alpha
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  (run 'hg update' to get a working copy)
+  $ hgph
+  4 0 a-D - b555f63b6063
+  3 0 b-A - f54f1bb90ff3
+  2 0 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+
+pulling from Publish=False to publish=False with some public
+
+  $ hg up -q f54f1bb90ff3
+  $ mkcommit n-A
+  $ mkcommit n-B
+  $ hgph
+  6 1 n-B - 145e75495359
+  5 1 n-A - d6bcb4f74035
+  4 0 a-D - b555f63b6063
+  3 0 b-A - f54f1bb90ff3
+  2 0 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+  $ cd ../mu
+  $ hg pull ../nu
+  pulling from ../nu
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 2 changes to 2 files
+  (run 'hg update' to get a working copy)
+  $ hgph
+  6 1 n-B - 145e75495359
+  5 1 n-A - d6bcb4f74035
+  4 0 a-D - b555f63b6063
+  3 0 a-C - 54acac6f23ab
+  2 0 b-A - f54f1bb90ff3
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+  $ cd ..
+
+pulling into publish=True
+
+  $ cd alpha
+  $ hgph
+  4 0 b-A - f54f1bb90ff3
+  3 0 a-D - b555f63b6063
+  2 0 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+  $ hg pull ../mu
+  pulling from ../mu
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 2 changes to 2 files
+  (run 'hg update' to get a working copy)
+  $ hgph
+  6 1 n-B - 145e75495359
+  5 1 n-A - d6bcb4f74035
+  4 0 b-A - f54f1bb90ff3
+  3 0 a-D - b555f63b6063
+  2 0 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+  $ cd ..
+
+pulling back into original repo
+
+  $ cd nu
+  $ hg pull ../alpha
+  pulling from ../alpha
+  searching for changes
+  no changes found
+  $ hgph
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 a-D - b555f63b6063
+  3 0 b-A - f54f1bb90ff3
+  2 0 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+
+Push
+````
+
+(inserted)
+
+Test that phase are pushed even when they are nothing to pus
+(this might be tested later bu are very convenient to not alter too much test)
+
+Push back to alpha
+
+  $ hg push ../alpha # from nu
+  pushing to ../alpha
+  searching for changes
+  no changes found
+  $ cd ..
+  $ cd alpha
+  $ hgph
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 b-A - f54f1bb90ff3
+  3 0 a-D - b555f63b6063
+  2 0 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+
+(end insertion)
+
+
+initial setup
+
+  $ hg glog # of alpha
+  o  changeset:   6:145e75495359
+  |  tag:         tip
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     n-B
+  |
+  o  changeset:   5:d6bcb4f74035
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     n-A
+  |
+  o  changeset:   4:f54f1bb90ff3
+  |  parent:      1:548a3d25dbf0
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     b-A
+  |
+  | @  changeset:   3:b555f63b6063
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     a-D
+  | |
+  | o  changeset:   2:54acac6f23ab
+  |/   user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     a-C
+  |
+  o  changeset:   1:548a3d25dbf0
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     a-B
+  |
+  o  changeset:   0:054250a37db4
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     a-A
+  
+  $ mkcommit a-E
+  $ mkcommit a-F
+  $ mkcommit a-G
+  $ hg up d6bcb4f74035 -q
+  $ mkcommit a-H
+  created new head
+  $ hgph
+  10 1 a-H - 967b449fbc94
+  9 1 a-G - 3e27b6f1eee1
+  8 1 a-F - b740e3e5c05d
+  7 1 a-E - e9f537e46dea
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 b-A - f54f1bb90ff3
+  3 0 a-D - b555f63b6063
+  2 0 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+
+Pushing to Publish=False (unknown changeset)
+
+  $ hg push ../mu -r b740e3e5c05d # a-F
+  pushing to ../mu
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 2 changes to 2 files
+  $ hgph
+  10 1 a-H - 967b449fbc94
+  9 1 a-G - 3e27b6f1eee1
+  8 1 a-F - b740e3e5c05d
+  7 1 a-E - e9f537e46dea
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 b-A - f54f1bb90ff3
+  3 0 a-D - b555f63b6063
+  2 0 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+
+  $ cd ../mu
+  $ hgph # d6bcb4f74035 and 145e75495359 changed because common is too smart
+  8 1 a-F - b740e3e5c05d
+  7 1 a-E - e9f537e46dea
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 a-D - b555f63b6063
+  3 0 a-C - 54acac6f23ab
+  2 0 b-A - f54f1bb90ff3
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+
+Pushing to Publish=True (unknown changeset)
+
+  $ hg push ../beta -r b740e3e5c05d
+  pushing to ../beta
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 2 changes to 2 files
+  $ hgph # again d6bcb4f74035 and 145e75495359 changed because common is too smart
+  8 0 a-F - b740e3e5c05d
+  7 0 a-E - e9f537e46dea
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 a-D - b555f63b6063
+  3 0 a-C - 54acac6f23ab
+  2 0 b-A - f54f1bb90ff3
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+
+Pushing to Publish=True (common changeset)
+
+  $ cd ../beta
+  $ hg push ../alpha
+  pushing to ../alpha
+  searching for changes
+  no changes found
+  $ hgph
+  6 0 a-F - b740e3e5c05d
+  5 0 a-E - e9f537e46dea
+  4 0 a-D - b555f63b6063
+  3 0 a-C - 54acac6f23ab
+  2 0 b-A - f54f1bb90ff3
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+  $ cd ../alpha
+  $ hgph # e9f537e46dea and b740e3e5c05d should have been sync to 0
+  10 1 a-H - 967b449fbc94
+  9 1 a-G - 3e27b6f1eee1
+  8 0 a-F - b740e3e5c05d
+  7 0 a-E - e9f537e46dea
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 b-A - f54f1bb90ff3
+  3 0 a-D - b555f63b6063
+  2 0 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+
+Pushing to Publish=False (common changeset that change phase + unknown one)
+
+  $ hg push ../mu -r 967b449fbc94 -f
+  pushing to ../mu
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files (+1 heads)
+  $ hgph
+  10 1 a-H - 967b449fbc94
+  9 1 a-G - 3e27b6f1eee1
+  8 0 a-F - b740e3e5c05d
+  7 0 a-E - e9f537e46dea
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 b-A - f54f1bb90ff3
+  3 0 a-D - b555f63b6063
+  2 0 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+  $ cd ../mu
+  $ hgph # d6bcb4f74035 should have changed phase
+  >      # again d6bcb4f74035 and 145e75495359 changed because common was too smart
+  9 1 a-H - 967b449fbc94
+  8 0 a-F - b740e3e5c05d
+  7 0 a-E - e9f537e46dea
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 a-D - b555f63b6063
+  3 0 a-C - 54acac6f23ab
+  2 0 b-A - f54f1bb90ff3
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+
+
+Pushing to Publish=True (common changeset from publish=False)
+
+(in mu)
+  $ hg push ../alpha
+  pushing to ../alpha
+  searching for changes
+  no changes found
+  $ hgph
+  9 0 a-H - 967b449fbc94
+  8 0 a-F - b740e3e5c05d
+  7 0 a-E - e9f537e46dea
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 a-D - b555f63b6063
+  3 0 a-C - 54acac6f23ab
+  2 0 b-A - f54f1bb90ff3
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+  $ hgph -R ../alpha # a-H should have been synced to 0
+  10 0 a-H - 967b449fbc94
+  9 1 a-G - 3e27b6f1eee1
+  8 0 a-F - b740e3e5c05d
+  7 0 a-E - e9f537e46dea
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 b-A - f54f1bb90ff3
+  3 0 a-D - b555f63b6063
+  2 0 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+
+
+Discovery locally secret changeset on a remote repository:
+
+- should make it non-secret
+
+  $ cd ../alpha
+  $ mkcommit A-secret --config phases.new-commit=2
+  $ hgph
+  11 2 A-secret - 435b5d83910c
+  10 0 a-H - 967b449fbc94
+  9 1 a-G - 3e27b6f1eee1
+  8 0 a-F - b740e3e5c05d
+  7 0 a-E - e9f537e46dea
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 b-A - f54f1bb90ff3
+  3 0 a-D - b555f63b6063
+  2 0 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+  $ hg bundle --base 'parents(.)' -r . ../secret-bundle.hg
+  1 changesets found
+  $ hg -R ../mu unbundle ../secret-bundle.hg
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  (run 'hg update' to get a working copy)
+  $ hgph -R ../mu
+  10 1 A-secret - 435b5d83910c
+  9 0 a-H - 967b449fbc94
+  8 0 a-F - b740e3e5c05d
+  7 0 a-E - e9f537e46dea
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 a-D - b555f63b6063
+  3 0 a-C - 54acac6f23ab
+  2 0 b-A - f54f1bb90ff3
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+  $ hg pull ../mu
+  pulling from ../mu
+  searching for changes
+  no changes found
+  $ hgph
+  11 1 A-secret - 435b5d83910c
+  10 0 a-H - 967b449fbc94
+  9 1 a-G - 3e27b6f1eee1
+  8 0 a-F - b740e3e5c05d
+  7 0 a-E - e9f537e46dea
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 b-A - f54f1bb90ff3
+  3 0 a-D - b555f63b6063
+  2 0 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+  $ cd ..
+Test Clone behavior
+
+A. Clone without secret changeset
+
+1.  cloning non-publishing repository
+
+(Phase should be preserved°
+
+  $ hg clone -U mu Tau
+  $ hgph -R Tau
+  10 1 A-secret - 435b5d83910c
+  9 0 a-H - 967b449fbc94
+  8 0 a-F - b740e3e5c05d
+  7 0 a-E - e9f537e46dea
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 a-D - b555f63b6063
+  3 0 a-C - 54acac6f23ab
+  2 0 b-A - f54f1bb90ff3
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
+
+2. cloning publishing repository
+
+(everything should be public)
+
+  $ hg clone -U alpha Upsilon
+  $ hgph -R Upsilon
+  11 0 A-secret - 435b5d83910c
+  10 0 a-H - 967b449fbc94
+  9 0 a-G - 3e27b6f1eee1
+  8 0 a-F - b740e3e5c05d
+  7 0 a-E - e9f537e46dea
+  6 0 n-B - 145e75495359
+  5 0 n-A - d6bcb4f74035
+  4 0 b-A - f54f1bb90ff3
+  3 0 a-D - b555f63b6063
+  2 0 a-C - 54acac6f23ab
+  1 0 a-B - 548a3d25dbf0
+  0 0 a-A - 054250a37db4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-phases.t	Mon Jan 09 20:16:57 2012 -0600
@@ -0,0 +1,136 @@
+  $ alias hglog='hg log --template "{rev} {phase} {desc}\n"'
+  $ mkcommit() {
+  >    echo "$1" > "$1"
+  >    hg add "$1"
+  >    message="$1"
+  >    shift
+  >    hg ci -m "$message" $*
+  > }
+
+  $ hg init initialrepo
+  $ cd initialrepo
+  $ mkcommit A
+
+New commit are draft by default
+
+  $ hglog
+  0 1 A
+
+Following commit are draft too
+
+  $ mkcommit B
+
+  $ hglog
+  1 1 B
+  0 1 A
+
+Draft commit are properly created over public one:
+
+  $ hg pull -q . # XXX use the dedicated phase command once available
+  $ hglog
+  1 0 B
+  0 0 A
+
+  $ mkcommit C
+  $ mkcommit D
+
+  $ hglog
+  3 1 D
+  2 1 C
+  1 0 B
+  0 0 A
+
+Test creating changeset as secret
+
+  $ mkcommit E --config phases.new-commit=2
+  $ hglog
+  4 2 E
+  3 1 D
+  2 1 C
+  1 0 B
+  0 0 A
+
+Test the secret property is inherited
+
+  $ mkcommit H
+  $ hglog
+  5 2 H
+  4 2 E
+  3 1 D
+  2 1 C
+  1 0 B
+  0 0 A
+
+Even on merge
+
+  $ hg up -q 1
+  $ mkcommit "B'"
+  created new head
+  $ hglog
+  6 1 B'
+  5 2 H
+  4 2 E
+  3 1 D
+  2 1 C
+  1 0 B
+  0 0 A
+  $ hg merge 4 # E
+  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg ci -m "merge B' and E"
+  $ hglog
+  7 2 merge B' and E
+  6 1 B'
+  5 2 H
+  4 2 E
+  3 1 D
+  2 1 C
+  1 0 B
+  0 0 A
+
+Test secret changeset are not pushed
+
+  $ hg init ../push-dest
+  $ hg push ../push-dest -f # force because we push multiple heads
+  pushing to ../push-dest
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 5 changesets with 5 changes to 5 files (+1 heads)
+  $ hglog
+  7 2 merge B' and E
+  6 0 B'
+  5 2 H
+  4 2 E
+  3 0 D
+  2 0 C
+  1 0 B
+  0 0 A
+  $ cd ../push-dest
+  $ hglog
+  4 0 B'
+  3 0 D
+  2 0 C
+  1 0 B
+  0 0 A
+  $ cd ..
+
+Test secret changeset are not pull
+
+  $ hg init pull-dest
+  $ cd pull-dest
+  $ hg pull ../initialrepo
+  pulling from ../initialrepo
+  requesting all changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 5 changesets with 5 changes to 5 files (+1 heads)
+  (run 'hg heads' to see heads, 'hg merge' to merge)
+  $ hglog
+  4 0 B'
+  3 0 D
+  2 0 C
+  1 0 B
+  0 0 A
--- a/tests/test-pull-http.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-pull-http.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
   $ hg init test
   $ cd test
--- a/tests/test-pull-permission.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-pull-permission.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" unix-permissions || exit 80
+
   $ hg init a
   $ cd a
   $ echo foo > b
--- a/tests/test-pull-r.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-pull-r.t	Mon Jan 09 20:16:57 2012 -0600
@@ -43,7 +43,7 @@
   2:effea6de0384
   1:ed1b79f46b9a
   $ hg pull
-  pulling from $TESTTMP/repo2
+  pulling from $TESTTMP/repo2 (glob)
   searching for changes
   adding changesets
   adding manifests
--- a/tests/test-pull.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-pull.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
   $ hg init test
   $ cd test
 
--- a/tests/test-push-cgi.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-push-cgi.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" no-msys || exit 80 # MSYS will translate web paths as if they were file paths
+
 This is a test of the push wire protocol over CGI-based hgweb.
 
 initialize repository
--- a/tests/test-push-http.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-push-http.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
   $ hg init test
   $ cd test
@@ -27,6 +28,8 @@
   pushing to http://localhost:$HGPORT/
   searching for changes
   remote: ssl required
+  remote: ssl required
+  updating phase of ba677d0156c1to 0 failed!
   % serve errors
 
 expect authorization error
--- a/tests/test-push-validation.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-push-validation.t	Mon Jan 09 20:16:57 2012 -0600
@@ -40,7 +40,7 @@
 Expected to fail:
 
   $ hg push
-  pushing to $TESTTMP/test
+  pushing to $TESTTMP/test (glob)
   searching for changes
   adding changesets
   adding manifests
--- a/tests/test-qrecord.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-qrecord.t	Mon Jan 09 20:16:57 2012 -0600
@@ -107,7 +107,7 @@
 
   $ echo "mq=nonexistant" >> $HGRCPATH
   $ hg help qrecord
-  *** failed to import extension mq from nonexistant: [Errno 2] No such file or directory
+  *** failed to import extension mq from nonexistant: [Errno 2] * (glob)
   hg qrecord [OPTION]... PATCH [FILE]...
   
   interactively record a new patch
--- a/tests/test-rebase-abort.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebase-abort.t	Mon Jan 09 20:16:57 2012 -0600
@@ -3,6 +3,9 @@
   > graphlog=
   > rebase=
   > 
+  > [phases]
+  > publish=False
+  > 
   > [alias]
   > tglog = log -G --template "{rev}: '{desc}' {branches}\n"
   > EOF
@@ -49,7 +52,7 @@
   $ hg rebase -s 3 -d 2
   merging common
   warning: conflicts during merge.
-  merging common failed!
+  merging common incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
@@ -117,7 +120,7 @@
   $ hg rebase -b 4 -d 2
   merging c
   warning: conflicts during merge.
-  merging c failed!
+  merging c incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
--- a/tests/test-rebase-bookmarks.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebase-bookmarks.t	Mon Jan 09 20:16:57 2012 -0600
@@ -3,6 +3,9 @@
   > graphlog=
   > rebase=
   > 
+  > [phases]
+  > publish=False
+  > 
   > [alias]
   > tglog = log -G --template "{rev}: '{desc}' bookmarks: {bookmarks}\n"
   > EOF
--- a/tests/test-rebase-cache.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebase-cache.t	Mon Jan 09 20:16:57 2012 -0600
@@ -3,6 +3,9 @@
   > graphlog=
   > rebase=
   > 
+  > [phases]
+  > publish=False
+  > 
   > [alias]
   > tglog  = log -G --template "{rev}: '{desc}' {branches}\n"
   > theads = heads --template "{rev}: '{desc}' {branches}\n"
--- a/tests/test-rebase-check-restore.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebase-check-restore.t	Mon Jan 09 20:16:57 2012 -0600
@@ -3,6 +3,9 @@
   > graphlog=
   > rebase=
   > 
+  > [phases]
+  > publish=False
+  > 
   > [alias]
   > tglog = log -G --template "{rev}: '{desc}' {branches}\n"
   > EOF
@@ -64,7 +67,7 @@
   $ hg rebase -s 1 -d 4 --keep
   merging A
   warning: conflicts during merge.
-  merging A failed!
+  merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
@@ -116,7 +119,7 @@
   $ hg rebase -s 5 -d 4 --keepbranches
   merging A
   warning: conflicts during merge.
-  merging A failed!
+  merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
--- a/tests/test-rebase-collapse.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebase-collapse.t	Mon Jan 09 20:16:57 2012 -0600
@@ -3,6 +3,9 @@
   > graphlog=
   > rebase=
   > 
+  > [phases]
+  > publish=False
+  > 
   > [alias]
   > tglog = log -G --template "{rev}: '{desc}' {branches}\n"
   > EOF
--- a/tests/test-rebase-conflicts.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebase-conflicts.t	Mon Jan 09 20:16:57 2012 -0600
@@ -3,6 +3,9 @@
   > graphlog=
   > rebase=
   > 
+  > [phases]
+  > publish=False
+  > 
   > [alias]
   > tglog = log -G --template "{rev}: '{desc}' {branches}\n"
   > EOF
@@ -58,7 +61,7 @@
   $ hg rebase -s 3 -d 2
   merging common
   warning: conflicts during merge.
-  merging common failed!
+  merging common incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
--- a/tests/test-rebase-detach.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebase-detach.t	Mon Jan 09 20:16:57 2012 -0600
@@ -3,6 +3,9 @@
   > graphlog=
   > rebase=
   > 
+  > [phases]
+  > publish=False
+  > 
   > [alias]
   > tglog = log -G --template "{rev}: '{desc}' {branches}\n"
   > EOF
@@ -283,7 +286,7 @@
   
 
   $ hg rebase -d 5 -s 7
-  saved backup bundle to $TESTTMP/a5/.hg/strip-backup/13547172c9c0-backup.hg
+  saved backup bundle to $TESTTMP/a5/.hg/strip-backup/13547172c9c0-backup.hg (glob)
   $ hg tglog
   @  8: 'D'
   |
@@ -367,12 +370,12 @@
   $ hg rebase -s 8 -d 7 --detach --config ui.merge=internal:fail
   merging H
   warning: conflicts during merge.
-  merging H failed!
+  merging H incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
   $ hg resolve --all -t internal:local
   $ hg rebase -c
-  saved backup bundle to $TESTTMP/a7/.hg/strip-backup/6215fafa5447-backup.hg
+  saved backup bundle to $TESTTMP/a7/.hg/strip-backup/6215fafa5447-backup.hg (glob)
   $ hg tglog
   @  8: 'H2'
   |
--- a/tests/test-rebase-interruptions.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebase-interruptions.t	Mon Jan 09 20:16:57 2012 -0600
@@ -3,6 +3,9 @@
   > graphlog=
   > rebase=
   > 
+  > [phases]
+  > publish=False
+  > 
   > [alias]
   > tglog = log -G --template "{rev}: '{desc}' {branches}\n"
   > EOF
@@ -56,7 +59,7 @@
   $ hg rebase -s 1 -d 4
   merging A
   warning: conflicts during merge.
-  merging A failed!
+  merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
@@ -88,7 +91,7 @@
   $ hg rebase --continue
   merging A
   warning: conflicts during merge.
-  merging A failed!
+  merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
@@ -142,7 +145,7 @@
   $ hg rebase -s 1 -d 4
   merging A
   warning: conflicts during merge.
-  merging A failed!
+  merging A incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
--- a/tests/test-rebase-issue-noparam-single-rev.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebase-issue-noparam-single-rev.t	Mon Jan 09 20:16:57 2012 -0600
@@ -3,6 +3,9 @@
   > graphlog=
   > rebase=
   > 
+  > [phases]
+  > publish=False
+  > 
   > [alias]
   > tglog = log -G --template "{rev}: '{desc}' {branches}\n"
   > EOF
--- a/tests/test-rebase-mq-skip.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebase-mq-skip.t	Mon Jan 09 20:16:57 2012 -0600
@@ -7,6 +7,9 @@
   > rebase=
   > mq=
   > 
+  > [phases]
+  > publish=False
+  > 
   > [alias]
   > tglog = log -G --template "{rev}: '{desc}' tags: {tags}\n"
   > EOF
--- a/tests/test-rebase-mq.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebase-mq.t	Mon Jan 09 20:16:57 2012 -0600
@@ -62,7 +62,7 @@
   $ hg rebase -s 2 -d 1
   merging f
   warning: conflicts during merge.
-  merging f failed!
+  merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
@@ -73,7 +73,7 @@
   $ hg rebase -c
   merging f
   warning: conflicts during merge.
-  merging f failed!
+  merging f incomplete! (edit conflicts, then use 'hg resolve --mark')
   abort: unresolved conflicts (see hg resolve, then hg rebase --continue)
   [255]
 
--- a/tests/test-rebase-named-branches.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebase-named-branches.t	Mon Jan 09 20:16:57 2012 -0600
@@ -3,6 +3,9 @@
   > graphlog=
   > rebase=
   > 
+  > [phases]
+  > publish=False
+  > 
   > [alias]
   > tglog = log -G --template "{rev}: '{desc}' {branches}\n"
   > EOF
--- a/tests/test-rebase-parameters.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebase-parameters.t	Mon Jan 09 20:16:57 2012 -0600
@@ -3,6 +3,9 @@
   > graphlog=
   > rebase=
   > 
+  > [phases]
+  > publish=False
+  > 
   > [alias]
   > tglog = log -G --template "{rev}: '{desc}' {branches}\n"
   > EOF
--- a/tests/test-rebase-pull.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebase-pull.t	Mon Jan 09 20:16:57 2012 -0600
@@ -48,7 +48,7 @@
 Now b has one revision to be pulled from a:
 
   $ hg pull --rebase
-  pulling from $TESTTMP/a
+  pulling from $TESTTMP/a (glob)
   searching for changes
   adding changesets
   adding manifests
@@ -68,7 +68,7 @@
 Re-run:
 
   $ hg pull --rebase
-  pulling from $TESTTMP/a
+  pulling from $TESTTMP/a (glob)
   searching for changes
   no changes found
 
@@ -78,7 +78,7 @@
   $ cd ../c
 
   $ hg pull --rebase
-  pulling from $TESTTMP/a
+  pulling from $TESTTMP/a (glob)
   searching for changes
   adding changesets
   adding manifests
@@ -94,7 +94,7 @@
 pull --rebase --update should ignore --update:
 
   $ hg pull --rebase --update
-  pulling from $TESTTMP/a
+  pulling from $TESTTMP/a (glob)
   searching for changes
   no changes found
 
@@ -103,7 +103,7 @@
   $ hg up -q 1
 
   $ hg pull --rebase
-  pulling from $TESTTMP/a
+  pulling from $TESTTMP/a (glob)
   searching for changes
   no changes found
 
--- a/tests/test-rebase-scenario-global.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebase-scenario-global.t	Mon Jan 09 20:16:57 2012 -0600
@@ -3,6 +3,9 @@
   > graphlog=
   > rebase=
   > 
+  > [phases]
+  > publish=False
+  > 
   > [alias]
   > tglog = log -G --template "{rev}: '{desc}' {branches}\n"
   > EOF
@@ -251,7 +254,7 @@
 C onto A - rebase onto an ancestor:
 
   $ hg rebase -d 0 -s 2
-  saved backup bundle to $TESTTMP/a7/.hg/strip-backup/5fddd98957c8-backup.hg
+  saved backup bundle to $TESTTMP/a7/.hg/strip-backup/5fddd98957c8-backup.hg (glob)
   $ hg tglog
   @  7: 'D'
   |
@@ -269,6 +272,16 @@
   |/
   o  0: 'A'
   
+
+Check rebasing public changeset
+
+  $ hg pull --config phases.publish=True -q -r 6 . # update phase of 6
+  $ hg rebase -d 5 -b 6
+  abort: Can't rebase immutable changeset e1c4361dd923
+  (see hg help phases for details)
+  [255]
+
+  $ hg rebase -d 5 -b 6 --keep
   $ cd ..
 
 Test for revset
@@ -473,7 +486,7 @@
   $ hg clone -q -u . ah ah5
   $ cd ah5
   $ hg rebase -r '6::' -d 2
-  saved backup bundle to $TESTTMP/ah5/.hg/strip-backup/3d8a618087a7-backup.hg
+  saved backup bundle to $TESTTMP/ah5/.hg/strip-backup/3d8a618087a7-backup.hg (glob)
   $ hg tglog
   @  8: 'I'
   |
--- a/tests/test-rebuildstate.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rebuildstate.t	Mon Jan 09 20:16:57 2012 -0600
@@ -17,8 +17,8 @@
 state dump after
 
   $ hg debugstate --nodates | sort
-  n 666         -1 bar
-  n 666         -1 foo
+  n 644         -1 bar
+  n 644         -1 foo
 
 status
 
--- a/tests/test-record.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-record.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" execbit || exit 80
+
 Set up a repo
 
   $ echo "[ui]" >> $HGRCPATH
--- a/tests/test-relink.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-relink.t	Mon Jan 09 20:16:57 2012 -0600
@@ -39,7 +39,7 @@
 don't sit forever trying to double-lock the source repo
 
   $ hg relink .
-  relinking $TESTTMP/repo/.hg/store to $TESTTMP/repo/.hg/store
+  relinking $TESTTMP/repo/.hg/store to $TESTTMP/repo/.hg/store (glob)
   there is nothing to relink
 
 
--- a/tests/test-remove.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-remove.t	Mon Jan 09 20:16:57 2012 -0600
@@ -196,8 +196,8 @@
 
   $ rm test/bar
   $ remove test
-  removing test/bar
-  removing test/foo
+  removing test/bar (glob)
+  removing test/foo (glob)
   exit code: 0
   R test/bar
   R test/foo
@@ -208,8 +208,8 @@
 
   $ rm test/bar
   $ remove -f test
-  removing test/bar
-  removing test/foo
+  removing test/bar (glob)
+  removing test/foo (glob)
   exit code: 0
   R test/bar
   R test/foo
@@ -220,8 +220,8 @@
 
   $ rm test/bar
   $ remove -A test
-  not removing test/foo: file still exists (use -f to force removal)
-  removing test/bar
+  not removing test/foo: file still exists (use -f to force removal) (glob)
+  removing test/bar (glob)
   exit code: 1
   R test/bar
   ./foo
@@ -232,8 +232,8 @@
 
   $ rm test/bar
   $ remove -Af test
-  removing test/bar
-  removing test/foo
+  removing test/bar (glob)
+  removing test/foo (glob)
   exit code: 0
   R test/bar
   R test/foo
@@ -250,7 +250,7 @@
   adding issue1861/b/c/y
   adding issue1861/x
   $ hg rm issue1861/b
-  removing issue1861/b/c/y
+  removing issue1861/b/c/y (glob)
   $ hg ci -m remove
   $ ls issue1861
   x
--- a/tests/test-rename-dir-merge.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rename-dir-merge.t	Mon Jan 09 20:16:57 2012 -0600
@@ -11,8 +11,8 @@
   $ hg co -C 0
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg mv a b
-  moving a/a to b/a
-  moving a/b to b/b
+  moving a/a to b/a (glob)
+  moving a/b to b/b (glob)
   $ hg ci -m "1 mv a/ b/"
 
   $ hg co -C 0
@@ -39,8 +39,8 @@
     file a/c -> b/c
     file a/d -> b/d
   resolving manifests
-   overwrite None partial False
-   ancestor f9b20c0d4c51 local ce36d17b18fb+ remote 397f8b00a740
+   overwrite: False, partial: False
+   ancestor: f9b20c0d4c51, local: ce36d17b18fb+, remote: 397f8b00a740
    a/d: remote renamed directory to b/d -> d
    a/c: remote renamed directory to b/c -> d
    a/b: other deleted -> r
@@ -75,7 +75,7 @@
   ? b/d
   $ hg ci -m "3 merge 2+1"
   $ hg debugrename b/c
-  b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88
+  b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88 (glob)
 
   $ hg co -C 1
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
@@ -94,8 +94,8 @@
     dir a/ -> b/
     file a/c -> b/c
   resolving manifests
-   overwrite None partial False
-   ancestor f9b20c0d4c51 local 397f8b00a740+ remote ce36d17b18fb
+   overwrite: False, partial: False
+   ancestor: f9b20c0d4c51, local: 397f8b00a740+, remote: ce36d17b18fb
    None: local renamed directory to b/c -> d
   updating:None 1/1 files (100.00%)
   getting a/c to b/c
@@ -111,7 +111,7 @@
   $ hg ci -m "4 merge 1+2"
   created new head
   $ hg debugrename b/c
-  b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88
+  b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88 (glob)
 
 
 Second scenario with two repos:
@@ -122,7 +122,7 @@
   $ mkdir a
   $ echo foo > a/f
   $ hg add a
-  adding a/f
+  adding a/f (glob)
   $ hg ci -m "a/f == foo"
   $ cd ..
 
@@ -131,7 +131,7 @@
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ cd r2
   $ hg mv a b
-  moving a/f to b/f
+  moving a/f to b/f (glob)
   $ echo foo1 > b/f
   $ hg ci -m" a -> b, b/f == foo1"
   $ cd ..
@@ -140,7 +140,7 @@
   $ mkdir a/aa
   $ echo bar > a/aa/g
   $ hg add a/aa
-  adding a/aa/g
+  adding a/aa/g (glob)
   $ hg ci -m "a/aa/g"
   $ hg pull ../r2
   pulling from ../r2
--- a/tests/test-rename-merge1.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rename-merge1.t	Mon Jan 09 20:16:57 2012 -0600
@@ -35,8 +35,8 @@
     checking for directory renames
    a2: divergent renames -> dr
   resolving manifests
-   overwrite None partial False
-   ancestor af1939970a1c local 044f8520aeeb+ remote 85c198ef2f6c
+   overwrite: False, partial: False
+   ancestor: af1939970a1c, local: 044f8520aeeb+, remote: 85c198ef2f6c
    a: remote moved to b -> m
    b2: remote created -> g
   preserving a for resolve of b
--- a/tests/test-rename-merge2.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rename-merge2.t	Mon Jan 09 20:16:57 2012 -0600
@@ -84,8 +84,8 @@
      b -> a *
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local e300d1c794ec+ remote 4ce40f5aca24
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: e300d1c794ec+, remote: 4ce40f5aca24
    rev: versions differ -> m
    a: remote copied to b -> m
   preserving a for resolve of b
@@ -119,8 +119,8 @@
      b -> a *
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 86a2aa42fc76+ remote f4db7e329e71
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 86a2aa42fc76+, remote: f4db7e329e71
    a: remote is newer -> g
    b: local copied/moved to a -> m
    rev: versions differ -> m
@@ -157,8 +157,8 @@
      b -> a *
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local e300d1c794ec+ remote bdb19105162a
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: e300d1c794ec+, remote: bdb19105162a
    rev: versions differ -> m
    a: remote moved to b -> m
   preserving a for resolve of b
@@ -192,8 +192,8 @@
      b -> a *
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 02963e448370+ remote f4db7e329e71
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 02963e448370+, remote: f4db7e329e71
    b: local copied/moved to a -> m
    rev: versions differ -> m
   preserving b for resolve of b
@@ -226,8 +226,8 @@
      b -> a 
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 94b33a1b7f2d+ remote 4ce40f5aca24
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: 4ce40f5aca24
    rev: versions differ -> m
    b: remote created -> g
   preserving rev for resolve of rev
@@ -256,8 +256,8 @@
      b -> a 
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 86a2aa42fc76+ remote 97c705ade336
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 97c705ade336
    rev: versions differ -> m
   preserving rev for resolve of rev
   updating: rev 1/1 files (100.00%)
@@ -283,8 +283,8 @@
      b -> a 
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 94b33a1b7f2d+ remote bdb19105162a
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: bdb19105162a
    a: other deleted -> r
    rev: versions differ -> m
    b: remote created -> g
@@ -315,8 +315,8 @@
      b -> a 
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 02963e448370+ remote 97c705ade336
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 02963e448370+, remote: 97c705ade336
    rev: versions differ -> m
   preserving rev for resolve of rev
   updating: rev 1/1 files (100.00%)
@@ -336,8 +336,8 @@
   --------------
     searching for copies back to rev 1
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 62e7bf090eba+ remote 49b6d8032493
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 62e7bf090eba+, remote: 49b6d8032493
    b: versions differ -> m
    rev: versions differ -> m
   preserving b for resolve of b
@@ -375,8 +375,8 @@
     checking for directory renames
    a: divergent renames -> dr
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 02963e448370+ remote fe905ef2c33e
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 02963e448370+, remote: fe905ef2c33e
    rev: versions differ -> m
    c: remote created -> g
   preserving rev for resolve of rev
@@ -404,8 +404,8 @@
   --------------
     searching for copies back to rev 1
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 86a2aa42fc76+ remote af30c7647fc7
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 86a2aa42fc76+, remote: af30c7647fc7
    b: versions differ -> m
    rev: versions differ -> m
   preserving b for resolve of b
@@ -432,8 +432,8 @@
   --------------
     searching for copies back to rev 1
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 59318016310c+ remote bdb19105162a
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a
    a: other deleted -> r
    b: versions differ -> m
    rev: versions differ -> m
@@ -462,8 +462,8 @@
   --------------
     searching for copies back to rev 1
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 86a2aa42fc76+ remote 8dbce441892a
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a
    a: remote is newer -> g
    b: versions differ -> m
    rev: versions differ -> m
@@ -493,8 +493,8 @@
   --------------
     searching for copies back to rev 1
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 59318016310c+ remote bdb19105162a
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a
    a: other deleted -> r
    b: versions differ -> m
    rev: versions differ -> m
@@ -523,8 +523,8 @@
   --------------
     searching for copies back to rev 1
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 86a2aa42fc76+ remote 8dbce441892a
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a
    a: remote is newer -> g
    b: versions differ -> m
    rev: versions differ -> m
@@ -554,8 +554,8 @@
   --------------
     searching for copies back to rev 1
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 0b76e65c8289+ remote 4ce40f5aca24
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 0b76e65c8289+, remote: 4ce40f5aca24
    b: versions differ -> m
    rev: versions differ -> m
   preserving b for resolve of b
@@ -582,8 +582,8 @@
   --------------
     searching for copies back to rev 1
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 02963e448370+ remote 8dbce441892a
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 02963e448370+, remote: 8dbce441892a
    b: versions differ -> m
    rev: versions differ -> m
   remote changed a which local deleted
@@ -615,8 +615,8 @@
   --------------
     searching for copies back to rev 1
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 0b76e65c8289+ remote bdb19105162a
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 0b76e65c8289+, remote: bdb19105162a
    local changed a which remote deleted
   use (c)hanged version or (d)elete? c
    a: prompt keep -> a
@@ -652,8 +652,8 @@
      b -> a *
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local e300d1c794ec+ remote 49b6d8032493
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: e300d1c794ec+, remote: 49b6d8032493
    rev: versions differ -> m
    a: remote moved to b -> m
   preserving a for resolve of b
@@ -686,8 +686,8 @@
      b -> a *
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 62e7bf090eba+ remote f4db7e329e71
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 62e7bf090eba+, remote: f4db7e329e71
    b: local copied/moved to a -> m
    rev: versions differ -> m
   preserving b for resolve of b
@@ -724,8 +724,8 @@
      b -> a *
     checking for directory renames
   resolving manifests
-   overwrite None partial False
-   ancestor 924404dff337 local 02963e448370+ remote 2b958612230f
+   overwrite: False, partial: False
+   ancestor: 924404dff337, local: 02963e448370+, remote: 2b958612230f
    b: local copied/moved to a -> m
    rev: versions differ -> m
    c: remote created -> g
--- a/tests/test-rename.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rename.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" symlink || exit 80
+
   $ hg init
   $ mkdir d1 d1/d11 d2
   $ echo d1/a > d1/a
@@ -69,7 +71,7 @@
 rename --after a single file to a nonexistant target filename
 
   $ hg rename --after d1/a dummy
-  d1/a: not recording move - dummy does not exist
+  d1/a: not recording move - dummy does not exist (glob)
 
 move a single file to an existing directory
 
@@ -119,10 +121,10 @@
 rename directory d1 as d3
 
   $ hg rename d1/ d3
-  moving d1/a to d3/a
-  moving d1/b to d3/b
-  moving d1/ba to d3/ba
-  moving d1/d11/a1 to d3/d11/a1
+  moving d1/a to d3/a (glob)
+  moving d1/b to d3/b (glob)
+  moving d1/ba to d3/ba (glob)
+  moving d1/d11/a1 to d3/d11/a1 (glob)
   $ hg status -C
   A d3/a
     d1/a
@@ -144,10 +146,10 @@
 
   $ mv d1 d3
   $ hg rename --after d1 d3
-  moving d1/a to d3/a
-  moving d1/b to d3/b
-  moving d1/ba to d3/ba
-  moving d1/d11/a1 to d3/d11/a1
+  moving d1/a to d3/a (glob)
+  moving d1/b to d3/b (glob)
+  moving d1/ba to d3/ba (glob)
+  moving d1/d11/a1 to d3/d11/a1 (glob)
   $ hg status -C
   A d3/a
     d1/a
@@ -168,7 +170,7 @@
 move a directory using a relative path
 
   $ (cd d2; mkdir d3; hg rename ../d1/d11 d3)
-  moving ../d1/d11/a1 to d3/d11/a1
+  moving ../d1/d11/a1 to d3/d11/a1 (glob)
   $ hg status -C
   A d2/d3/d11/a1
     d1/d11/a1
@@ -180,7 +182,7 @@
 move --after a directory using a relative path
 
   $ (cd d2; mkdir d3; mv ../d1/d11 d3; hg rename --after ../d1/d11 d3)
-  moving ../d1/d11/a1 to d3/d11/a1
+  moving ../d1/d11/a1 to d3/d11/a1 (glob)
   $ hg status -C
   A d2/d3/d11/a1
     d1/d11/a1
@@ -192,7 +194,7 @@
 move directory d1/d11 to an existing directory d2 (removes empty d1)
 
   $ hg rename d1/d11/ d2
-  moving d1/d11/a1 to d2/d11/a1
+  moving d1/d11/a1 to d2/d11/a1 (glob)
   $ hg status -C
   A d2/d11/a1
     d1/d11/a1
@@ -205,11 +207,11 @@
 
   $ mkdir d3
   $ hg rename d1 d2 d3
-  moving d1/a to d3/d1/a
-  moving d1/b to d3/d1/b
-  moving d1/ba to d3/d1/ba
-  moving d1/d11/a1 to d3/d1/d11/a1
-  moving d2/b to d3/d2/b
+  moving d1/a to d3/d1/a (glob)
+  moving d1/b to d3/d1/b (glob)
+  moving d1/ba to d3/d1/ba (glob)
+  moving d1/d11/a1 to d3/d1/d11/a1 (glob)
+  moving d2/b to d3/d2/b (glob)
   $ hg status -C
   A d3/d1/a
     d1/a
@@ -235,11 +237,11 @@
   $ mkdir d3
   $ mv d1 d2 d3
   $ hg rename --after d1 d2 d3
-  moving d1/a to d3/d1/a
-  moving d1/b to d3/d1/b
-  moving d1/ba to d3/d1/ba
-  moving d1/d11/a1 to d3/d1/d11/a1
-  moving d2/b to d3/d2/b
+  moving d1/a to d3/d1/a (glob)
+  moving d1/b to d3/d1/b (glob)
+  moving d1/ba to d3/d1/ba (glob)
+  moving d1/d11/a1 to d3/d1/d11/a1 (glob)
+  moving d2/b to d3/d2/b (glob)
   $ hg status -C
   A d3/d1/a
     d1/a
@@ -265,7 +267,7 @@
 
   $ hg rename d1/* d2
   d2/b: not overwriting - file exists
-  moving d1/d11/a1 to d2/d11/a1
+  moving d1/d11/a1 to d2/d11/a1 (glob)
   $ hg status -C
   A d2/a
     d1/a
@@ -306,10 +308,10 @@
 
   $ mkdir d2/d21
   $ hg rename 'glob:d1/**' d2/d21
-  moving d1/a to d2/d21/a
-  moving d1/b to d2/d21/b
-  moving d1/ba to d2/d21/ba
-  moving d1/d11/a1 to d2/d21/a1
+  moving d1/a to d2/d21/a (glob)
+  moving d1/b to d2/d21/b (glob)
+  moving d1/ba to d2/d21/ba (glob)
+  moving d1/d11/a1 to d2/d21/a1 (glob)
   $ hg status -C
   A d2/d21/a
     d1/a
@@ -332,10 +334,10 @@
   $ mkdir d2/d21
   $ mv d1/a d1/d11/a1 d2/d21
   $ hg rename --after 'glob:d1/**' d2/d21
-  moving d1/a to d2/d21/a
-  d1/b: not recording move - d2/d21/b does not exist
-  d1/ba: not recording move - d2/d21/ba does not exist
-  moving d1/d11/a1 to d2/d21/a1
+  moving d1/a to d2/d21/a (glob)
+  d1/b: not recording move - d2/d21/b does not exist (glob)
+  d1/ba: not recording move - d2/d21/ba does not exist (glob)
+  moving d1/d11/a1 to d2/d21/a1 (glob)
   $ hg status -C
   A d2/d21/a
     d1/a
@@ -351,8 +353,8 @@
 
   $ mkdir d2/d21
   $ hg rename 're:d1/([^a][^/]*/)*a.*' d2/d21
-  moving d1/a to d2/d21/a
-  moving d1/d11/a1 to d2/d21/a1
+  moving d1/a to d2/d21/a (glob)
+  moving d1/d11/a1 to d2/d21/a1 (glob)
   $ hg status -C
   A d2/d21/a
     d1/a
@@ -413,7 +415,7 @@
 
   $ mkdir d3
   $ hg rename d1/* d2/* d3
-  moving d1/d11/a1 to d3/d11/a1
+  moving d1/d11/a1 to d3/d11/a1 (glob)
   d3/b: not overwriting - d2/b collides with d1/b
   $ hg status -C
   A d3/a
@@ -439,7 +441,7 @@
   moving a to ../d3/d1/a
   moving b to ../d3/d1/b
   moving ba to ../d3/d1/ba
-  moving d11/a1 to ../d3/d1/d11/a1
+  moving d11/a1 to ../d3/d1/d11/a1 (glob)
   $ hg status -C
   A d3/d1/a
     d1/a
@@ -465,7 +467,7 @@
   moving a to ../d3/a
   moving b to ../d3/b
   moving ba to ../d3/ba
-  moving d11/a1 to ../d3/d11/a1
+  moving d11/a1 to ../d3/d11/a1 (glob)
   $ hg status -C
   A d3/a
     d1/a
@@ -486,9 +488,9 @@
 move the parent tree with "hg rename .."
 
   $ (cd d1/d11; hg rename .. ../../d3)
-  moving ../a to ../../d3/a
-  moving ../b to ../../d3/b
-  moving ../ba to ../../d3/ba
+  moving ../a to ../../d3/a (glob)
+  moving ../b to ../../d3/b (glob)
+  moving ../ba to ../../d3/ba (glob)
   moving a1 to ../../d3/d11/a1
   $ hg status -C
   A d3/a
@@ -511,9 +513,9 @@
 
   $ hg remove d1/b
   $ hg rename d1 d3
-  moving d1/a to d3/a
-  moving d1/ba to d3/ba
-  moving d1/d11/a1 to d3/d11/a1
+  moving d1/a to d3/a (glob)
+  moving d1/ba to d3/ba (glob)
+  moving d1/d11/a1 to d3/d11/a1 (glob)
   $ hg status -C
   A d3/a
     d1/a
@@ -587,7 +589,7 @@
 check illegal path components
 
   $ hg rename d1/d11/a1 .hg/foo
-  abort: path contains illegal component: .hg/foo
+  abort: path contains illegal component: .hg/foo (glob)
   [255]
   $ hg status -C
   $ hg rename d1/d11/a1 ../foo
@@ -597,7 +599,7 @@
 
   $ mv d1/d11/a1 .hg/foo
   $ hg rename --after d1/d11/a1 .hg/foo
-  abort: path contains illegal component: .hg/foo
+  abort: path contains illegal component: .hg/foo (glob)
   [255]
   $ hg status -C
   ! d1/d11/a1
@@ -606,17 +608,17 @@
   $ rm .hg/foo
 
   $ hg rename d1/d11/a1 .hg
-  abort: path contains illegal component: .hg/a1
+  abort: path contains illegal component: .hg/a1 (glob)
   [255]
   $ hg status -C
   $ hg rename d1/d11/a1 ..
-  abort: ../a1 not under root
+  abort: ../a1 not under root (glob)
   [255]
   $ hg status -C
 
   $ mv d1/d11/a1 .hg
   $ hg rename --after d1/d11/a1 .hg
-  abort: path contains illegal component: .hg/a1
+  abort: path contains illegal component: .hg/a1 (glob)
   [255]
   $ hg status -C
   ! d1/d11/a1
@@ -625,7 +627,7 @@
   $ rm .hg/a1
 
   $ (cd d1/d11; hg rename ../../d2/b ../../.hg/foo)
-  abort: path contains illegal component: .hg/foo
+  abort: path contains illegal component: .hg/foo (glob)
   [255]
   $ hg status -C
   $ (cd d1/d11; hg rename ../../d2/b ../../../foo)
--- a/tests/test-repair-strip.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-repair-strip.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" unix-permissions || exit 80
 
   $ echo "[extensions]" >> $HGRCPATH
   $ echo "mq=">> $HGRCPATH
--- a/tests/test-revert.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-revert.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" execbit || exit 80
+
   $ hg init repo
   $ cd repo
   $ echo 123 > a
@@ -80,7 +82,7 @@
 should not find b
 
   $ hg status b
-  b: No such file or directory
+  b: * (glob)
 
 should show a c e
 
@@ -214,11 +216,11 @@
   $ echo foo > newdir/newfile
   $ hg add newdir/newfile
   $ hg revert b newdir
-  reverting b/b
-  forgetting newdir/newfile
+  reverting b/b (glob)
+  forgetting newdir/newfile (glob)
   $ echo foobar > b/b
   $ hg revert .
-  reverting b/b
+  reverting b/b (glob)
 
 
 reverting a rename target should revert the source
@@ -259,8 +261,8 @@
 
   $ hg revert -a --no-backup
   reverting ignored
-  reverting ignoreddir/file
-  undeleting ignoreddir/removed
+  reverting ignoreddir/file (glob)
+  undeleting ignoreddir/removed (glob)
   undeleting removed
   $ hg st -mardi
 
--- a/tests/test-revset-outgoing.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-revset-outgoing.t	Mon Jan 09 20:16:57 2012 -0600
@@ -40,7 +40,7 @@
   $ cd b
   $ cat .hg/hgrc
   [paths]
-  default = $TESTTMP/a#stable
+  default = $TESTTMP/a#stable (glob)
 
   $ echo red >> a
   $ hg ci -qm3
@@ -61,7 +61,7 @@
   
 
   $ hg tout
-  comparing with $TESTTMP/a
+  comparing with $TESTTMP/a (glob)
   searching for changes
   2:1d4099801a4e: '3' stable
 
@@ -80,11 +80,11 @@
 
   $ cat .hg/hgrc
   [paths]
-  default = $TESTTMP/a#stable
+  default = $TESTTMP/a#stable (glob)
   green = ../a#default
 
   $ hg tout green
-  comparing with $TESTTMP/a
+  comparing with $TESTTMP/a (glob)
   searching for changes
   3:f0461977a3db: '4' 
 
--- a/tests/test-revset.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-revset.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" no-msys || exit 80 # MSYS will translate /a/b/c/ as if it was a real file path
+
   $ HGENCODING=utf-8
   $ export HGENCODING
 
@@ -473,3 +475,61 @@
   $ log 'max(1 or 2) and not 2'
   $ log 'min(1 or 2) and not 1'
   $ log 'last(1 or 2, 1) and not 2'
+
+  $ cd ..
+
+test author/desc/keyword in problematic encoding
+# unicode: cp932:
+# u30A2    0x83 0x41(= 'A')
+# u30C2    0x83 0x61(= 'a')
+
+  $ hg init problematicencoding
+  $ cd problematicencoding
+
+  $ python > setup.sh <<EOF
+  > print u'''
+  > echo a > text
+  > hg add text
+  > hg --encoding utf-8 commit -u '\u30A2' -m none
+  > echo b > text
+  > hg --encoding utf-8 commit -u '\u30C2' -m none
+  > echo c > text
+  > hg --encoding utf-8 commit -u none -m '\u30A2'
+  > echo d > text
+  > hg --encoding utf-8 commit -u none -m '\u30C2'
+  > '''.encode('utf-8')
+  > EOF
+  $ sh < setup.sh
+
+test in problematic encoding
+  $ python > test.sh <<EOF
+  > print u'''
+  > hg --encoding cp932 log --template '{rev}\\n' -r 'author(\u30A2)'
+  > echo ====
+  > hg --encoding cp932 log --template '{rev}\\n' -r 'author(\u30C2)'
+  > echo ====
+  > hg --encoding cp932 log --template '{rev}\\n' -r 'desc(\u30A2)'
+  > echo ====
+  > hg --encoding cp932 log --template '{rev}\\n' -r 'desc(\u30C2)'
+  > echo ====
+  > hg --encoding cp932 log --template '{rev}\\n' -r 'keyword(\u30A2)'
+  > echo ====
+  > hg --encoding cp932 log --template '{rev}\\n' -r 'keyword(\u30C2)'
+  > '''.encode('cp932')
+  > EOF
+  $ sh < test.sh
+  0
+  ====
+  1
+  ====
+  2
+  ====
+  3
+  ====
+  0
+  2
+  ====
+  1
+  3
+
+  $ cd ..
--- a/tests/test-rollback.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-rollback.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
 setup repo
   $ hg init t
   $ cd t
--- a/tests/test-run-tests.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-run-tests.t	Mon Jan 09 20:16:57 2012 -0600
@@ -16,6 +16,11 @@
   $ foo
   bar
 
+Return codes before inline python:
+
+  $ false
+  [1]
+
 Doctest commands:
 
   >>> print 'foo'
@@ -28,7 +33,7 @@
   y
   z
   >>> print
-  <BLANKLINE>
+  
 
 Regular expressions:
 
--- a/tests/test-schemes.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-schemes.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
   $ cat <<EOF >> $HGRCPATH
   > [extensions]
--- a/tests/test-serve.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-serve.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
   $ hgserve()
   > {
--- a/tests/test-share.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-share.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
   $ echo "[extensions]"      >> $HGRCPATH
   $ echo "share = "          >> $HGRCPATH
@@ -26,14 +27,14 @@
 Some sed versions appends newline, some don't, and some just fails
 
   $ cat .hg/sharedpath; echo
-  $TESTTMP/repo1/.hg
+  $TESTTMP/repo1/.hg (glob)
 
 trailing newline on .hg/sharedpath is ok
   $ hg tip -q
   0:d3873e73d99e
   $ echo '' >> .hg/sharedpath
   $ cat .hg/sharedpath
-  $TESTTMP/repo1/.hg
+  $TESTTMP/repo1/.hg (glob)
   $ hg tip -q
   0:d3873e73d99e
 
--- a/tests/test-simplemerge.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-simplemerge.py	Mon Jan 09 20:16:57 2012 -0600
@@ -11,8 +11,7 @@
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
 
 import unittest
 from unittest import TestCase
--- a/tests/test-ssh.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-ssh.t	Mon Jan 09 20:16:57 2012 -0600
@@ -165,6 +165,7 @@
   $ cd ../local
   $ hg debugpushkey --config ui.ssh="python $TESTDIR/dummyssh" ssh://user@dummy/remote namespaces
   bookmarks	
+  phases	
   namespaces	
   $ hg book foo -r 0
   $ hg out -B
@@ -266,6 +267,14 @@
   [255]
 
   $ cd ..
+
+Test remote paths with spaces (issue2983):
+
+  $ hg init --ssh "python $TESTDIR/dummyssh" "ssh://user@dummy/a repo"
+  $ hg -R 'a repo' tag tag
+  $ hg id --ssh "python $TESTDIR/dummyssh" "ssh://user@dummy/a repo"
+  3fb238f49e8c
+
   $ cat dummylog
   Got arguments 1:user@dummy 2:hg -R nonexistent serve --stdio
   Got arguments 1:user@dummy 2:hg -R /$TESTTMP/nonexistent serve --stdio
@@ -288,3 +297,6 @@
   Got arguments 1:user@dummy 2:hg -R remote serve --stdio
   changegroup-in-remote hook: HG_NODE=1383141674ec756a6056f6a9097618482fe0f4a6 HG_SOURCE=serve HG_URL=remote:ssh:127.0.0.1 
   Got arguments 1:user@dummy 2:hg -R remote serve --stdio
+  Got arguments 1:user@dummy 2:hg init 'a repo'
+  Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio
+  Got arguments 1:user@dummy 2:hg -R 'a repo' serve --stdio
--- a/tests/test-static-http.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-static-http.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
   $ hg clone http://localhost:$HGPORT/ copy
   abort: error: Connection refused
--- a/tests/test-status-color.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-status-color.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" tic || exit 80
+
   $ echo "[extensions]" >> $HGRCPATH
   $ echo "color=" >> $HGRCPATH
   $ echo "[color]" >> $HGRCPATH
@@ -134,7 +136,7 @@
 hg status modified added removed deleted unknown never-existed ignored:
 
   $ hg status --color=always modified added removed deleted unknown never-existed ignored
-  never-existed: No such file or directory
+  never-existed: * (glob)
   \x1b[0;32;1mA added\x1b[0m (esc)
   \x1b[0;31;1mR removed\x1b[0m (esc)
   \x1b[0;36;1;4m! deleted\x1b[0m (esc)
@@ -280,10 +282,10 @@
   $ hg merge
   merging a
   warning: conflicts during merge.
-  merging a failed!
+  merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
   merging b
   warning: conflicts during merge.
-  merging b failed!
+  merging b incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 2 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   [1]
--- a/tests/test-status.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-status.t	Mon Jan 09 20:16:57 2012 -0600
@@ -127,7 +127,7 @@
 hg status modified added removed deleted unknown never-existed ignored:
 
   $ hg status modified added removed deleted unknown never-existed ignored
-  never-existed: No such file or directory
+  never-existed: * (glob)
   A added
   R removed
   ! deleted
@@ -263,9 +263,9 @@
     modified
   R removed
 
-hg status -A --change 1:
+hg status -A --change 1 and revset:
 
-  $ hg status -A --change 1
+  $ hg status -A --change '1|1'
   M modified
   A added
   A copied
--- a/tests/test-subrepo-deep-nested-change.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-subrepo-deep-nested-change.t	Mon Jan 09 20:16:57 2012 -0600
@@ -3,7 +3,7 @@
   $ hg init sub2
   $ echo sub2 > sub2/sub2
   $ hg add -R sub2
-  adding sub2/sub2
+  adding sub2/sub2 (glob)
   $ hg commit -R sub2 -m "sub2 import"
 
 Preparing the 'sub1' repo which depends on the subrepo 'sub2'
@@ -15,8 +15,8 @@
   updating to branch default
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg add -R sub1
-  adding sub1/.hgsub
-  adding sub1/sub1
+  adding sub1/.hgsub (glob)
+  adding sub1/sub1 (glob)
   $ hg commit -R sub1 -m "sub1 import"
   committing subrepository sub2
 
@@ -30,8 +30,8 @@
   cloning subrepo sub2 from $TESTTMP/sub2
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg add -R main
-  adding main/.hgsub
-  adding main/main
+  adding main/.hgsub (glob)
+  adding main/main (glob)
   $ hg commit -R main -m "main import"
   committing subrepository sub1
 
@@ -51,7 +51,7 @@
   $ hg clone main cloned
   updating to branch default
   cloning subrepo sub1 from $TESTTMP/sub1
-  cloning subrepo sub1/sub2 from $TESTTMP/sub2
+  cloning subrepo sub1/sub2 from $TESTTMP/sub2 (glob)
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
 Checking cloned repo ids
@@ -79,7 +79,7 @@
   $ echo modified > cloned/sub1/sub2/sub2
   $ hg commit --subrepos -m "deep nested modif should trigger a commit" -R cloned
   committing subrepository sub1
-  committing subrepository sub1/sub2
+  committing subrepository sub1/sub2 (glob)
 
 Checking modified node ids
 
--- a/tests/test-subrepo-paths.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-subrepo-paths.t	Mon Jan 09 20:16:57 2012 -0600
@@ -55,5 +55,5 @@
   > .* = \1
   > EOF
   $ hg debugsub
-  abort: bad subrepository pattern in $TESTTMP/outer/.hg/hgrc:2: invalid group reference
+  abort: bad subrepository pattern in $TESTTMP/outer/.hg/hgrc:2: invalid group reference (glob)
   [255]
--- a/tests/test-subrepo-recursion.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-subrepo-recursion.t	Mon Jan 09 20:16:57 2012 -0600
@@ -23,10 +23,10 @@
   $ hg add -S .hgsub
   $ hg add -S foo/.hgsub
   $ hg add -S foo/bar
-  adding foo/bar/z.txt
+  adding foo/bar/z.txt (glob)
   $ hg add -S
   adding x.txt
-  adding foo/y.txt
+  adding foo/y.txt (glob)
 
 Test recursive status without committing anything:
 
@@ -67,7 +67,7 @@
 
   $ hg commit -m 0-0-0 --config ui.commitsubrepos=No --subrepos
   committing subrepository foo
-  committing subrepository foo/bar
+  committing subrepository foo/bar (glob)
 
   $ cd foo
   $ echo y2 >> y.txt
@@ -186,7 +186,7 @@
   $ rm -r dir
   $ hg commit --subrepos -m 2-3-2
   committing subrepository foo
-  committing subrepository foo/bar
+  committing subrepository foo/bar (glob)
 
 Log with the relationships between repo and its subrepo:
 
@@ -265,10 +265,10 @@
   archiving (foo) [====================================>] 3/3
   archiving (foo) [====================================>] 3/3
                                                               
-  archiving (foo/bar) [                                 ] 0/1
-  archiving (foo/bar) [                                 ] 0/1
-  archiving (foo/bar) [================================>] 1/1
-  archiving (foo/bar) [================================>] 1/1
+  archiving (foo/bar) [                                 ] 0/1 (glob)
+  archiving (foo/bar) [                                 ] 0/1 (glob)
+  archiving (foo/bar) [================================>] 1/1 (glob)
+  archiving (foo/bar) [================================>] 1/1 (glob)
                                                               \r (esc)
   $ find ../archive | sort
   ../archive
@@ -305,10 +305,10 @@
   archiving (foo) [====================================>] 3/3
   archiving (foo) [====================================>] 3/3
                                                               
-  archiving (foo/bar) [                                 ] 0/1
-  archiving (foo/bar) [                                 ] 0/1
-  archiving (foo/bar) [================================>] 1/1
-  archiving (foo/bar) [================================>] 1/1
+  archiving (foo/bar) [                                 ] 0/1 (glob)
+  archiving (foo/bar) [                                 ] 0/1 (glob)
+  archiving (foo/bar) [================================>] 1/1 (glob)
+  archiving (foo/bar) [================================>] 1/1 (glob)
                                                               \r (esc)
 
 Test archiving a revision that references a subrepo that is not yet
@@ -336,13 +336,13 @@
   archiving (foo) [====================================>] 3/3
   archiving (foo) [====================================>] 3/3
                                                               
-  archiving (foo/bar) [                                 ] 0/1
-  archiving (foo/bar) [                                 ] 0/1
-  archiving (foo/bar) [================================>] 1/1
-  archiving (foo/bar) [================================>] 1/1
+  archiving (foo/bar) [                                 ] 0/1 (glob)
+  archiving (foo/bar) [                                 ] 0/1 (glob)
+  archiving (foo/bar) [================================>] 1/1 (glob)
+  archiving (foo/bar) [================================>] 1/1 (glob)
                                                               
   cloning subrepo foo from $TESTTMP/repo/foo
-  cloning subrepo foo/bar from $TESTTMP/repo/foo/bar
+  cloning subrepo foo/bar from $TESTTMP/repo/foo/bar (glob)
   
 The newly cloned subrepos contain no working copy:
 
@@ -365,7 +365,7 @@
   $ echo f > foo/f
   $ hg archive --subrepos -r tip archive
   cloning subrepo foo from $TESTTMP/empty/foo
-  abort: destination '$TESTTMP/almost-empty/foo' is not empty
+  abort: destination '$TESTTMP/almost-empty/foo' is not empty (glob)
   [255]
 
 Clone and test outgoing:
@@ -374,11 +374,11 @@
   $ hg clone repo repo2
   updating to branch default
   cloning subrepo foo from $TESTTMP/repo/foo
-  cloning subrepo foo/bar from $TESTTMP/repo/foo/bar
+  cloning subrepo foo/bar from $TESTTMP/repo/foo/bar (glob)
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ cd repo2
   $ hg outgoing -S
-  comparing with $TESTTMP/repo
+  comparing with $TESTTMP/repo (glob)
   searching for changes
   no changes found
   comparing with $TESTTMP/repo/foo
@@ -404,7 +404,7 @@
   $ hg commit --subrepos -m 3-4-2
   committing subrepository foo
   $ hg outgoing -S
-  comparing with $TESTTMP/repo
+  comparing with $TESTTMP/repo (glob)
   searching for changes
   changeset:   3:2655b8ecc4ee
   tag:         tip
@@ -434,7 +434,7 @@
 Test incoming:
 
   $ hg incoming -S
-  comparing with $TESTTMP/repo2
+  comparing with $TESTTMP/repo2 (glob)
   searching for changes
   changeset:   3:2655b8ecc4ee
   tag:         tip
--- a/tests/test-subrepo-relative-path.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-subrepo-relative-path.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,9 +1,11 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
 Preparing the subrepository 'sub'
 
   $ hg init sub
   $ echo sub > sub/sub
   $ hg add -R sub
-  adding sub/sub
+  adding sub/sub (glob)
   $ hg commit -R sub -m "sub import"
 
 Preparing the 'main' repo which depends on the subrepo 'sub'
@@ -15,8 +17,8 @@
   updating to branch default
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg add -R main
-  adding main/.hgsub
-  adding main/main
+  adding main/.hgsub (glob)
+  adding main/main (glob)
   $ hg commit -R main -m "main import"
   committing subrepository sub
 
--- a/tests/test-subrepo.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-subrepo.t	Mon Jan 09 20:16:57 2012 -0600
@@ -49,7 +49,7 @@
 
   $ hg revert -a
   $ hg revert -R s -a -C
-  reverting s/a
+  reverting s/a (glob)
 
 Issue2022: update -C
 
@@ -92,7 +92,7 @@
   update: (current)
   $ hg ci -m2
   committing subrepository s
-  committing subrepository s/ss
+  committing subrepository s/ss (glob)
   $ hg sum
   parent: 2:df30734270ae tip
    2
@@ -147,7 +147,7 @@
   $ hg init t
   $ echo t > t/t
   $ hg -R t add t
-  adding t/t
+  adding t/t (glob)
 
 5
 
@@ -199,16 +199,16 @@
   $ hg merge 6 --debug # test change
     searching for copies back to rev 2
   resolving manifests
-   overwrite None partial False
-   ancestor 1f14a2e2d3ec local f0d2028bf86d+ remote 1831e14459c4
+   overwrite: False, partial: False
+   ancestor: 1f14a2e2d3ec, local: f0d2028bf86d+, remote: 1831e14459c4
    .hgsubstate: versions differ -> m
   updating: .hgsubstate 1/1 files (100.00%)
   subrepo merge f0d2028bf86d+ 1831e14459c4 1f14a2e2d3ec
     subrepo t: other changed, get t:6747d179aa9a688023c4b0cad32e4c92bb7f34ad:hg
   getting subrepo t
   resolving manifests
-   overwrite True partial False
-   ancestor 60ca1237c194+ local 60ca1237c194+ remote 6747d179aa9a
+   overwrite: True, partial: False
+   ancestor: 60ca1237c194+, local: 60ca1237c194+, remote: 6747d179aa9a
    t: remote is newer -> g
   updating: t 1/1 files (100.00%)
   getting t
@@ -227,8 +227,8 @@
   $ HGMERGE=internal:merge hg merge --debug 7 # test conflict
     searching for copies back to rev 2
   resolving manifests
-   overwrite None partial False
-   ancestor 1831e14459c4 local e45c8b14af55+ remote f94576341bcf
+   overwrite: False, partial: False
+   ancestor: 1831e14459c4, local: e45c8b14af55+, remote: f94576341bcf
    .hgsubstate: versions differ -> m
   updating: .hgsubstate 1/1 files (100.00%)
   subrepo merge e45c8b14af55+ f94576341bcf 1831e14459c4
@@ -236,8 +236,8 @@
   merging subrepo t
     searching for copies back to rev 2
   resolving manifests
-   overwrite None partial False
-   ancestor 6747d179aa9a local 20a0db6fbf6c+ remote 7af322bc1198
+   overwrite: False, partial: False
+   ancestor: 6747d179aa9a, local: 20a0db6fbf6c+, remote: 7af322bc1198
    t: versions differ -> m
   preserving t for resolve of t
   updating: t 1/1 files (100.00%)
@@ -245,7 +245,7 @@
   merging t
   my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a
   warning: conflicts during merge.
-  merging t failed!
+  merging t incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -265,9 +265,9 @@
   $ cd ..
   $ hg clone t tc
   updating to branch default
-  cloning subrepo s from $TESTTMP/sub/t/s
-  cloning subrepo s/ss from $TESTTMP/sub/t/s/ss
-  cloning subrepo t from $TESTTMP/sub/t/t
+  cloning subrepo s from $TESTTMP/sub/t/s (glob)
+  cloning subrepo s/ss from $TESTTMP/sub/t/s/ss (glob)
+  cloning subrepo t from $TESTTMP/sub/t/t (glob)
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ cd tc
   $ hg debugsub
@@ -284,14 +284,14 @@
   $ hg ci -m11
   committing subrepository t
   $ hg push
-  pushing to $TESTTMP/sub/t
-  pushing subrepo s/ss to $TESTTMP/sub/t/s/ss
+  pushing to $TESTTMP/sub/t (glob)
+  pushing subrepo s/ss to $TESTTMP/sub/t/s/ss (glob)
   searching for changes
   no changes found
-  pushing subrepo s to $TESTTMP/sub/t/s
+  pushing subrepo s to $TESTTMP/sub/t/s (glob)
   searching for changes
   no changes found
-  pushing subrepo t to $TESTTMP/sub/t/t
+  pushing subrepo t to $TESTTMP/sub/t/t (glob)
   searching for changes
   adding changesets
   adding manifests
@@ -309,27 +309,27 @@
   $ hg ci -m12
   committing subrepository s
   $ hg push
-  pushing to $TESTTMP/sub/t
-  pushing subrepo s/ss to $TESTTMP/sub/t/s/ss
+  pushing to $TESTTMP/sub/t (glob)
+  pushing subrepo s/ss to $TESTTMP/sub/t/s/ss (glob)
   searching for changes
   no changes found
-  pushing subrepo s to $TESTTMP/sub/t/s
+  pushing subrepo s to $TESTTMP/sub/t/s (glob)
   searching for changes
   abort: push creates new remote head 12a213df6fa9!
   (did you forget to merge? use push -f to force)
   [255]
   $ hg push -f
-  pushing to $TESTTMP/sub/t
-  pushing subrepo s/ss to $TESTTMP/sub/t/s/ss
+  pushing to $TESTTMP/sub/t (glob)
+  pushing subrepo s/ss to $TESTTMP/sub/t/s/ss (glob)
   searching for changes
   no changes found
-  pushing subrepo s to $TESTTMP/sub/t/s
+  pushing subrepo s to $TESTTMP/sub/t/s (glob)
   searching for changes
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
-  pushing subrepo t to $TESTTMP/sub/t/t
+  pushing subrepo t to $TESTTMP/sub/t/t (glob)
   searching for changes
   no changes found
   searching for changes
@@ -351,7 +351,7 @@
 
   $ cd ../tc
   $ hg pull
-  pulling from $TESTTMP/sub/t
+  pulling from $TESTTMP/sub/t (glob)
   searching for changes
   adding changesets
   adding manifests
@@ -362,7 +362,7 @@
 should pull t
 
   $ hg up
-  pulling subrepo t from $TESTTMP/sub/t/t
+  pulling subrepo t from $TESTTMP/sub/t/t (glob)
   searching for changes
   adding changesets
   adding manifests
@@ -509,15 +509,15 @@
   $ echo test > testdelete/nested/foo
   $ echo test > testdelete/nested2/foo
   $ hg -R testdelete/nested add
-  adding testdelete/nested/foo
+  adding testdelete/nested/foo (glob)
   $ hg -R testdelete/nested2 add
-  adding testdelete/nested2/foo
+  adding testdelete/nested2/foo (glob)
   $ hg -R testdelete/nested ci -m test
   $ hg -R testdelete/nested2 ci -m test
   $ echo nested = nested > testdelete/.hgsub
   $ echo nested2 = nested2 >> testdelete/.hgsub
   $ hg -R testdelete add
-  adding testdelete/.hgsub
+  adding testdelete/.hgsub (glob)
   $ hg -R testdelete ci -m "nested 1 & 2 added"
   committing subrepository nested
   committing subrepository nested2
@@ -536,19 +536,19 @@
   $ hg init nested_absolute
   $ echo test > nested_absolute/foo
   $ hg -R nested_absolute add
-  adding nested_absolute/foo
+  adding nested_absolute/foo (glob)
   $ hg -R nested_absolute ci -mtest
   $ cd mercurial
   $ hg init nested_relative
   $ echo test2 > nested_relative/foo2
   $ hg -R nested_relative add
-  adding nested_relative/foo2
+  adding nested_relative/foo2 (glob)
   $ hg -R nested_relative ci -mtest2
   $ hg init main
   $ echo "nested_relative = ../nested_relative" > main/.hgsub
   $ echo "nested_absolute = `pwd`/nested_absolute" >> main/.hgsub
   $ hg -R main add
-  adding main/.hgsub
+  adding main/.hgsub (glob)
   $ hg -R main ci -m "add subrepos"
   committing subrepository nested_absolute
   committing subrepository nested_relative
@@ -577,7 +577,7 @@
   committing subrepository s
   $ hg clone repo repo2
   updating to branch default
-  cloning subrepo s from $TESTTMP/sub/repo/s
+  cloning subrepo s from $TESTTMP/sub/repo/s (glob)
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg -q -R repo2 pull -u
   $ echo 1 > repo2/s/a
@@ -611,10 +611,10 @@
   $ echo sub/repo = sub/repo > .hgsub
   $ hg add .hgsub
   $ hg ci -mtest
-  committing subrepository sub/repo
+  committing subrepository sub/repo (glob)
   $ echo test >> sub/repo/foo
   $ hg ci -mtest
-  committing subrepository sub/repo
+  committing subrepository sub/repo (glob)
   $ cd ..
 
 Create repo without default path, pull top repo, and see what happens on update
@@ -629,7 +629,7 @@
   added 2 changesets with 3 changes to 2 files
   (run 'hg update' to get a working copy)
   $ hg -R issue1852b update
-  abort: default path for subrepository sub/repo not found
+  abort: default path for subrepository sub/repo not found (glob)
   [255]
 
 Pull -u now doesn't help
@@ -648,14 +648,14 @@
   adding manifests
   adding file changes
   added 1 changesets with 2 changes to 2 files
-  cloning subrepo sub/repo from issue1852a/sub/repo
+  cloning subrepo sub/repo from issue1852a/sub/repo (glob)
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
 Try to push from the other side
 
   $ hg -R issue1852a push `pwd`/issue1852c
   pushing to $TESTTMP/sub/issue1852c
-  pushing subrepo sub/repo to $TESTTMP/sub/issue1852c/sub/repo
+  pushing subrepo sub/repo to $TESTTMP/sub/issue1852c/sub/repo (glob)
   searching for changes
   no changes found
   searching for changes
@@ -900,3 +900,136 @@
   @@ -1,2 +0,0 @@
   -fc627a69481fcbe5f1135069e8a3881c023e4cf5 s
   -e95bcfa18a358dc4936da981ebf4147b4cad1362 t
+
+Test behavior of add for explicit path in subrepo:
+  $ cd ..
+  $ hg init explicit
+  $ cd explicit
+  $ echo s = s > .hgsub
+  $ hg add .hgsub
+  $ hg init s
+  $ hg ci -m0
+  committing subrepository s
+Adding with an explicit path in a subrepo adds the file
+  $ echo c1 > f1
+  $ echo c2 > s/f2
+  $ hg st -S
+  ? f1
+  ? s/f2
+  $ hg add s/f2
+  $ hg st -S
+  A s/f2
+  ? f1
+  $ hg ci -R s -m0
+  $ hg ci -Am1
+  adding f1
+  committing subrepository s
+Adding with an explicit path in a subrepo with -S has the same behavior
+  $ echo c3 > f3
+  $ echo c4 > s/f4
+  $ hg st -S
+  ? f3
+  ? s/f4
+  $ hg add -S s/f4
+  $ hg st -S
+  A s/f4
+  ? f3
+  $ hg ci -R s -m1
+  $ hg ci -Ama2
+  adding f3
+  committing subrepository s
+Adding without a path or pattern silently ignores subrepos
+  $ echo c5 > f5
+  $ echo c6 > s/f6
+  $ echo c7 > s/f7
+  $ hg st -S
+  ? f5
+  ? s/f6
+  ? s/f7
+  $ hg add
+  adding f5
+  $ hg st -S
+  A f5
+  ? s/f6
+  ? s/f7
+  $ hg ci -R s -Am2
+  adding f6
+  adding f7
+  $ hg ci -m3
+  committing subrepository s
+Adding without a path or pattern with -S also adds files in subrepos
+  $ echo c8 > f8
+  $ echo c9 > s/f9
+  $ echo c10 > s/f10
+  $ hg st -S
+  ? f8
+  ? s/f10
+  ? s/f9
+  $ hg add -S
+  adding f8
+  adding s/f10 (glob)
+  adding s/f9 (glob)
+  $ hg st -S
+  A f8
+  A s/f10
+  A s/f9
+  $ hg ci -R s -m3
+  $ hg ci -m4
+  committing subrepository s
+Adding with a pattern silently ignores subrepos
+  $ echo c11 > fm11
+  $ echo c12 > fn12
+  $ echo c13 > s/fm13
+  $ echo c14 > s/fn14
+  $ hg st -S
+  ? fm11
+  ? fn12
+  ? s/fm13
+  ? s/fn14
+  $ hg add 'glob:**fm*'
+  adding fm11
+  $ hg st -S
+  A fm11
+  ? fn12
+  ? s/fm13
+  ? s/fn14
+  $ hg ci -R s -Am4
+  adding fm13
+  adding fn14
+  $ hg ci -Am5
+  adding fn12
+  committing subrepository s
+Adding with a pattern with -S also adds matches in subrepos
+  $ echo c15 > fm15
+  $ echo c16 > fn16
+  $ echo c17 > s/fm17
+  $ echo c18 > s/fn18
+  $ hg st -S
+  ? fm15
+  ? fn16
+  ? s/fm17
+  ? s/fn18
+  $ hg add -S 'glob:**fm*'
+  adding fm15
+  adding s/fm17 (glob)
+  $ hg st -S
+  A fm15
+  A s/fm17
+  ? fn16
+  ? s/fn18
+  $ hg ci -R s -Am5
+  adding fn18
+  $ hg ci -Am6
+  adding fn16
+  committing subrepository s
+
+Test behavior of forget for explicit path in subrepo:
+Forgetting an explicit path in a subrepo untracks the file
+  $ echo c19 > s/f19
+  $ hg add s/f19
+  $ hg st -S
+  A s/f19
+  $ hg forget s/f19
+  $ hg st -S
+  ? s/f19
+  $ rm s/f19
--- a/tests/test-symlink-placeholder.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-symlink-placeholder.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" symlink || exit 80
+
 Create extension that can disable symlink support:
 
   $ cat > nolink.py <<EOF
--- a/tests/test-symlinks.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-symlinks.t	Mon Jan 09 20:16:57 2012 -0600
@@ -168,11 +168,12 @@
   ? foo
   $ hg status ../link
   ? foo
+  $ hg add foo
+  $ hg cp foo "$TESTTMP/link/bar"
+  foo has not been committed yet, so no copy data will be stored for bar.
   $ cd ..
 
 
-
-
   $ hg init b
   $ cd b
   $ ln -s nothing dangling
--- a/tests/test-tag.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-tag.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" system-sh || exit 80
+
   $ hg init test
   $ cd test
 
--- a/tests/test-tags.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-tags.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" unix-permissions || exit 80
+
 Helper functions:
 
   $ cacheexists() {
--- a/tests/test-transplant.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-transplant.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
   $ cat <<EOF >> $HGRCPATH
   > [extensions]
   > transplant=
--- a/tests/test-treediscovery-legacy.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-treediscovery-legacy.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
 Tests discovery against servers without getbundle support:
 
   $ cat >> $HGRCPATH <<EOF
--- a/tests/test-treediscovery.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-treediscovery.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" serve || exit 80
+
 Tests discovery against servers without getbundle support:
 
   $ CAP=getbundle
--- a/tests/test-unbundlehash.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-unbundlehash.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
 Test wire protocol unbundle with hashed heads (capability: unbundlehash)
 
--- a/tests/test-up-local-change.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-up-local-change.t	Mon Jan 09 20:16:57 2012 -0600
@@ -44,8 +44,8 @@
     unmatched files in other:
      b
   resolving manifests
-   overwrite False partial False
-   ancestor c19d34741b0a local c19d34741b0a+ remote 1e71731e6fbb
+   overwrite: False, partial: False
+   ancestor: c19d34741b0a, local: c19d34741b0a+, remote: 1e71731e6fbb
    a: versions differ -> m
    b: remote created -> g
   preserving a for resolve of a
@@ -65,8 +65,8 @@
   
   $ hg --debug up 0
   resolving manifests
-   overwrite False partial False
-   ancestor 1e71731e6fbb local 1e71731e6fbb+ remote c19d34741b0a
+   overwrite: False, partial: False
+   ancestor: 1e71731e6fbb, local: 1e71731e6fbb+, remote: c19d34741b0a
    a: versions differ -> m
    b: other deleted -> r
   preserving a for resolve of a
@@ -84,7 +84,8 @@
   summary:     1
   
   $ hg --debug merge
-  abort: there is nothing to merge - use "hg update" instead
+  abort: nothing to merge
+  (use 'hg update' instead)
   [255]
   $ hg parents
   changeset:   0:c19d34741b0a
@@ -97,8 +98,8 @@
     unmatched files in other:
      b
   resolving manifests
-   overwrite False partial False
-   ancestor c19d34741b0a local c19d34741b0a+ remote 1e71731e6fbb
+   overwrite: False, partial: False
+   ancestor: c19d34741b0a, local: c19d34741b0a+, remote: 1e71731e6fbb
    a: versions differ -> m
    b: remote created -> g
   preserving a for resolve of a
@@ -169,13 +170,14 @@
   abort: crosses branches (merge branches or use --clean to discard changes)
   [255]
   $ hg --debug merge
-  abort: outstanding uncommitted changes (use 'hg status' to list changes)
+  abort: outstanding uncommitted changes
+  (use 'hg status' to list changes)
   [255]
   $ hg --debug merge -f
     searching for copies back to rev 1
   resolving manifests
-   overwrite False partial False
-   ancestor c19d34741b0a local 1e71731e6fbb+ remote 83c51d0caff4
+   overwrite: False, partial: False
+   ancestor: c19d34741b0a, local: 1e71731e6fbb+, remote: 83c51d0caff4
    a: versions differ -> m
    b: versions differ -> m
   preserving a for resolve of a
--- a/tests/test-update-issue1456.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-update-issue1456.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" execbit || exit 80
+
   $ rm -rf a
   $ hg init a
   $ cd a
--- a/tests/test-update-renames.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-update-renames.t	Mon Jan 09 20:16:57 2012 -0600
@@ -21,7 +21,7 @@
   $ hg up
   merging a and b to b
   warning: conflicts during merge.
-  merging b failed!
+  merging b incomplete! (edit conflicts, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
   use 'hg resolve' to retry unresolved file merges
   [1]
--- a/tests/test-update-reverse.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-update-reverse.t	Mon Jan 09 20:16:57 2012 -0600
@@ -66,8 +66,8 @@
 
   $ hg update --debug -C 1
   resolving manifests
-   overwrite True partial False
-   ancestor 91ebc10ed028+ local 91ebc10ed028+ remote 71a760306caf
+   overwrite: True, partial: False
+   ancestor: 91ebc10ed028+, local: 91ebc10ed028+, remote: 71a760306caf
    side2: other deleted -> r
    side1: other deleted -> r
    main: remote created -> g
--- a/tests/test-url-rev.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-url-rev.t	Mon Jan 09 20:16:57 2012 -0600
@@ -42,7 +42,7 @@
   
   $ cat clone/.hg/hgrc
   [paths]
-  default = $TESTTMP/repo#foo
+  default = $TESTTMP/repo#foo (glob)
 
 Changing original repo:
 
--- a/tests/test-url.py	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-url.py	Mon Jan 09 20:16:57 2012 -0600
@@ -219,7 +219,7 @@
     >>> u
     <url scheme: 'file', path: 'f:oo/bar/baz'>
     >>> str(u)
-    'file:///f%3Aoo/bar/baz'
+    'file:///f:oo/bar/baz'
     >>> u.localpath()
     'f:oo/bar/baz'
 
@@ -227,7 +227,7 @@
     >>> u
     <url scheme: 'file', host: 'localhost', path: 'f:oo/bar/baz'>
     >>> str(u)
-    'file://localhost/f%3Aoo/bar/baz'
+    'file://localhost/f:oo/bar/baz'
     >>> u.localpath()
     'f:oo/bar/baz'
 
--- a/tests/test-walk.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-walk.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,5 @@
+  $ "$TESTDIR/hghave" no-windows || exit 80
+
   $ hg init t
   $ cd t
   $ mkdir -p beans
@@ -272,7 +274,7 @@
   f  mammals/skunk                   mammals/skunk
   $ hg debugwalk 'glob:j*'
   $ hg debugwalk NOEXIST
-  NOEXIST: No such file or directory
+  NOEXIST: * (glob)
 
   $ mkfifo fifo
   $ hg debugwalk fifo
--- a/tests/test-win32text.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-win32text.t	Mon Jan 09 20:16:57 2012 -0600
@@ -112,7 +112,7 @@
   abort: pretxncommit.crlf hook failed
   [255]
   $ hg revert -a
-  forgetting d/f2
+  forgetting d/f2 (glob)
   $ rm d/f2
 
   $ hg rem f
@@ -177,10 +177,10 @@
 
   $ for x in a b c d; do echo content > dupe/$x; done
   $ hg -R dupe add
-  adding dupe/a
-  adding dupe/b
-  adding dupe/c
-  adding dupe/d
+  adding dupe/a (glob)
+  adding dupe/b (glob)
+  adding dupe/c (glob)
+  adding dupe/d (glob)
   $ python unix2dos.py dupe/b dupe/c dupe/d
   $ hg -R dupe ci -m a dupe/a
   $ hg -R dupe ci -m b/c dupe/[bc]
@@ -385,7 +385,7 @@
   WARNING: f4.bat already has CRLF line endings
   and does not need EOL conversion by the win32text plugin.
   Before your next commit, please reconsider your encode/decode settings in 
-  Mercurial.ini or $TESTTMP/t/.hg/hgrc.
+  Mercurial.ini or $TESTTMP/t/.hg/hgrc. (glob)
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ cat bin
   hello\x00\r (esc)
--- a/tests/test-wireproto.t	Sun Jan 08 23:09:35 2012 +0800
+++ b/tests/test-wireproto.t	Mon Jan 09 20:16:57 2012 -0600
@@ -1,3 +1,4 @@
+  $ "$TESTDIR/hghave" serve || exit 80
 
 Test wire protocol argument passing