changeset 8037:ffbebfb6b8d4

Merge with crew-stable
author Patrick Mezard <pmezard@gmail.com>
date Wed, 08 Apr 2009 23:24:22 +0200
parents 15725dbc900f (diff) dbcf5d52fcf5 (current diff)
children 2ee6769afe82
files hgext/convert/bzr.py
diffstat 152 files changed, 24843 insertions(+), 12573 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Wed Apr 08 23:17:33 2009 +0200
+++ b/Makefile	Wed Apr 08 23:24:22 2009 +0200
@@ -2,6 +2,7 @@
 export PREFIX
 PYTHON=python
 PURE=
+PYTHON_FILES:=$(shell find mercurial hgext doc -name '*.py')
 
 help:
 	@echo 'Commonly used make targets:'
@@ -76,7 +77,9 @@
 test-%:
 	cd tests && $(PYTHON) run-tests.py $(TESTFLAGS) $@
 
-update-pot:
+update-pot: i18n/hg.pot
+
+i18n/hg.pot: $(PYTHON_FILES)
 	mkdir -p i18n
 	pygettext -d hg -p i18n --docstrings \
 	  mercurial/commands.py hgext/*.py hgext/*/__init__.py
@@ -86,10 +89,13 @@
         # parse these them even though they are not marked for
         # translation. Extracting with an explicit encoding of
         # ISO-8859-1 will make xgettext "parse" and ignore them.
-	find mercurial hgext doc -name '*.py' | xargs \
+	echo $^ | xargs \
 	  xgettext --from-code ISO-8859-1 --join --sort-by-file \
 	  -d hg -p i18n -o hg.pot
 
+%.po: i18n/hg.pot
+	msgmerge --no-location --update $@ $^
+
 .PHONY: help all local build doc clean install install-bin install-doc \
 	install-home install-home-bin install-home-doc dist dist-notests tests \
 	update-pot
--- a/contrib/perf.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/contrib/perf.py	Wed Apr 08 23:24:22 2009 +0200
@@ -1,7 +1,7 @@
 # perf.py - performance test routines
 
 from mercurial.i18n import _
-from mercurial import cmdutil, match
+from mercurial import cmdutil, match, commands
 import time, os, sys
 
 def timer(func):
@@ -101,6 +101,18 @@
 def perflookup(ui, repo, rev):
     timer(lambda: len(repo.lookup(rev)))
 
+def perflog(ui, repo):
+    ui.pushbuffer()
+    timer(lambda: commands.log(ui, repo, rev=[], date='', user=''))
+    ui.popbuffer()
+
+def perftemplating(ui, repo):
+    ui.pushbuffer()
+    timer(lambda: commands.log(ui, repo, rev=[], date='', user='',
+                               template='{date|shortdate} [{rev}:{node|short}]'
+                               ' {author|person}: {desc|firstline}\n'))
+    ui.popbuffer()
+
 cmdtable = {
     'perflookup': (perflookup, []),
     'perfparents': (perfparents, []),
@@ -113,5 +125,7 @@
     'perftags': (perftags, []),
     'perfdirstate': (perfdirstate, []),
     'perfdirstatedirs': (perfdirstate, []),
+    'perflog': (perflog, []),
+    'perftemplating': (perftemplating, []),
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/python-hook-examples.py	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,22 @@
+'''
+Examples of useful python hooks for Mercurial.
+'''
+from mercurial import patch, util
+
+def diffstat(ui, repo, **kwargs):
+    '''Example usage:
+
+    [hooks]
+    commit.diffstat = python:/path/to/this/file.py:diffstat
+    changegroup.diffstat = python:/path/to/this/file.py:diffstat
+    '''
+    if kwargs.get('parent2'):
+        return
+    node = kwargs['node']
+    first = repo[node].parents()[0].node()
+    if 'url' in kwargs:
+        last = repo['tip'].node()
+    else:
+        last = node
+    diff = patch.diff(repo, first, last)
+    ui.write(patch.diffstat(util.iterlines(diff)))
--- a/doc/hgrc.5.txt	Wed Apr 08 23:17:33 2009 +0200
+++ b/doc/hgrc.5.txt	Wed Apr 08 23:24:22 2009 +0200
@@ -475,6 +475,7 @@
   The syntax for Python hooks is as follows:
 
     hookname = python:modulename.submodule.callable
+    hookname = python:/path/to/python/module.py:callable
 
   Python hooks are run within the Mercurial process. Each hook is
   called with at least three keyword arguments: a ui object (keyword
@@ -537,6 +538,29 @@
     Optional. Directory or URL to use when pushing if no destination
     is specified.
 
+[[profiling]]
+profiling::
+  Specifies profiling format and file output.
+  In this section description, 'profiling data' stands for the raw data
+  collected during profiling, while 'profiling report' stands for a
+  statistical text report generated from the profiling data.
+  The profiling is done using lsprof.
+  format;;
+    Profiling format.
+    Default: text.
+    text;;
+      Generate a profiling report.
+      When saving to a file, it should be noted that only the report is saved,
+      and the profiling data is not kept.
+    kcachegrind;;
+      Format profiling data for kcachegrind use:
+      when saving to a file, the generated file can directly be loaded
+      into kcachegrind.
+  output;;
+    File path where profiling data or report should be saved.
+    If the file exists, it is replaced.
+    Default: None, data is printed on stderr
+
 [[server]]
 server::
   Controls generic server settings.
--- a/hgext/bookmarks.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/bookmarks.py	Wed Apr 08 23:24:22 2009 +0200
@@ -15,14 +15,15 @@
 It is possible to use bookmark names in every revision lookup (e.g. hg
 merge, hg update).
 
-The bookmark extension offers the possiblity to have a more git-like experience
-by adding the following configuration option to your .hgrc:
+The bookmark extension offers the possiblity to have a more git-like
+experience by adding the following configuration option to your .hgrc:
 
 [bookmarks]
 track.current = True
 
-This will cause bookmarks to track the bookmark that you are currently on, and
-just updates it. This is similar to git's approach of branching.
+This will cause bookmarks to track the bookmark that you are currently
+on, and just updates it. This is similar to git's approach of
+branching.
 '''
 
 from mercurial.i18n import _
@@ -115,8 +116,8 @@
 
     Bookmarks are pointers to certain commits that move when
     commiting. Bookmarks are local. They can be renamed, copied and
-    deleted. It is possible to use bookmark names in 'hg merge' and 'hg
-    update' to update to a given bookmark.
+    deleted. It is possible to use bookmark names in 'hg merge' and
+    'hg update' to update to a given bookmark.
 
     You can use 'hg bookmark NAME' to set a bookmark on the current
     tip with the given name. If you specify a revision using -r REV
--- a/hgext/bugzilla.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/bugzilla.py	Wed Apr 08 23:24:22 2009 +0200
@@ -8,69 +8,76 @@
 '''Bugzilla integration
 
 This hook extension adds comments on bugs in Bugzilla when changesets
-that refer to bugs by Bugzilla ID are seen. The hook does not change bug
-status.
+that refer to bugs by Bugzilla ID are seen. The hook does not change
+bug status.
 
-The hook updates the Bugzilla database directly. Only Bugzilla installations
-using MySQL are supported.
+The hook updates the Bugzilla database directly. Only Bugzilla
+installations using MySQL are supported.
 
-The hook relies on a Bugzilla script to send bug change notification emails.
-That script changes between Bugzilla versions; the 'processmail' script used
-prior to 2.18 is replaced in 2.18 and subsequent versions by
-'config/sendbugmail.pl'. Note that these will be run by Mercurial as the user
-pushing the change; you will need to ensure the Bugzilla install file
-permissions are set appropriately.
+The hook relies on a Bugzilla script to send bug change notification
+emails. That script changes between Bugzilla versions; the
+'processmail' script used prior to 2.18 is replaced in 2.18 and
+subsequent versions by 'config/sendbugmail.pl'. Note that these will
+be run by Mercurial as the user pushing the change; you will need to
+ensure the Bugzilla install file permissions are set appropriately.
 
 Configuring the extension:
 
     [bugzilla]
-    host       Hostname of the MySQL server holding the Bugzilla database.
+
+    host       Hostname of the MySQL server holding the Bugzilla
+               database.
     db         Name of the Bugzilla database in MySQL. Default 'bugs'.
     user       Username to use to access MySQL server. Default 'bugs'.
     password   Password to use to access MySQL server.
     timeout    Database connection timeout (seconds). Default 5.
-    version    Bugzilla version. Specify '3.0' for Bugzilla versions 3.0 and
-               later, '2.18' for Bugzilla versions from 2.18 and '2.16' for
-               versions prior to 2.18.
+    version    Bugzilla version. Specify '3.0' for Bugzilla versions
+               3.0 and later, '2.18' for Bugzilla versions from 2.18
+               and '2.16' for versions prior to 2.18.
     bzuser     Fallback Bugzilla user name to record comments with, if
                changeset committer cannot be found as a Bugzilla user.
     bzdir      Bugzilla install directory. Used by default notify.
                Default '/var/www/html/bugzilla'.
     notify     The command to run to get Bugzilla to send bug change
-               notification emails. Substitutes from a map with 3 keys,
-               'bzdir', 'id' (bug id) and 'user' (committer bugzilla email).
-               Default depends on version; from 2.18 it is
-               "cd %(bzdir)s && perl -T contrib/sendbugmail.pl %(id)s %(user)s".
-    regexp     Regular expression to match bug IDs in changeset commit message.
-               Must contain one "()" group. The default expression matches
-               'Bug 1234', 'Bug no. 1234', 'Bug number 1234',
-               'Bugs 1234,5678', 'Bug 1234 and 5678' and variations thereof.
-               Matching is case insensitive.
+               notification emails. Substitutes from a map with 3
+               keys, 'bzdir', 'id' (bug id) and 'user' (committer
+               bugzilla email). Default depends on version; from 2.18
+               it is "cd %(bzdir)s && perl -T contrib/sendbugmail.pl
+               %(id)s %(user)s".
+    regexp     Regular expression to match bug IDs in changeset commit
+               message. Must contain one "()" group. The default
+               expression matches 'Bug 1234', 'Bug no. 1234', 'Bug
+               number 1234', 'Bugs 1234,5678', 'Bug 1234 and 5678' and
+               variations thereof. Matching is case insensitive.
     style      The style file to use when formatting comments.
     template   Template to use when formatting comments. Overrides
                style if specified. In addition to the usual Mercurial
                keywords, the extension specifies:
                    {bug}       The Bugzilla bug ID.
-                   {root}      The full pathname of the Mercurial repository.
-                   {webroot}   Stripped pathname of the Mercurial repository.
-                   {hgweb}     Base URL for browsing Mercurial repositories.
+                   {root}      The full pathname of the Mercurial
+                               repository.
+                   {webroot}   Stripped pathname of the Mercurial
+                               repository.
+                   {hgweb}     Base URL for browsing Mercurial
+                               repositories.
                Default 'changeset {node|short} in repo {root} refers '
                        'to bug {bug}.\\ndetails:\\n\\t{desc|tabindent}'
     strip      The number of slashes to strip from the front of {root}
                to produce {webroot}. Default 0.
-    usermap    Path of file containing Mercurial committer ID to Bugzilla user
-               ID mappings. If specified, the file should contain one mapping
-               per line, "committer"="Bugzilla user". See also the
-               [usermap] section.
+    usermap    Path of file containing Mercurial committer ID to
+               Bugzilla user ID mappings. If specified, the file
+               should contain one mapping per line,
+               "committer"="Bugzilla user". See also the [usermap]
+               section.
 
     [usermap]
-    Any entries in this section specify mappings of Mercurial committer ID
-    to Bugzilla user ID. See also [bugzilla].usermap.
+    Any entries in this section specify mappings of Mercurial
+    committer ID to Bugzilla user ID. See also [bugzilla].usermap.
     "committer"="Bugzilla user"
 
     [web]
-    baseurl    Base URL for browsing Mercurial repositories. Reference from
-               templates as {hgweb}.
+    baseurl    Base URL for browsing Mercurial repositories. Reference
+               from templates as {hgweb}.
 
 Activating the extension:
 
@@ -83,9 +90,9 @@
 
 Example configuration:
 
-This example configuration is for a collection of Mercurial repositories
-in /var/local/hg/repos/ used with a local Bugzilla 3.2 installation in
-/opt/bugzilla-3.2.
+This example configuration is for a collection of Mercurial
+repositories in /var/local/hg/repos/ used with a local Bugzilla 3.2
+installation in /opt/bugzilla-3.2.
 
     [bugzilla]
     host=localhost
--- a/hgext/children.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/children.py	Wed Apr 08 23:24:22 2009 +0200
@@ -13,13 +13,13 @@
 
 
 def children(ui, repo, file_=None, **opts):
-    """show the children of the given or working dir revision
+    """show the children of the given or working directory revision
 
-    Print the children of the working directory's revisions.
-    If a revision is given via --rev, the children of that revision
-    will be printed. If a file argument is given, revision in
-    which the file was last changed (after the working directory
-    revision or the argument to --rev if given) is printed.
+    Print the children of the working directory's revisions. If a
+    revision is given via --rev, the children of that revision will be
+    printed. If a file argument is given, revision in which the file
+    was last changed (after the working directory revision or the
+    argument to --rev if given) is printed.
     """
     rev = opts.get('rev')
     if file_:
@@ -35,7 +35,7 @@
 cmdtable = {
     "children":
         (children,
-         [('r', 'rev', '', _('show children of the specified rev')),
+         [('r', 'rev', '', _('show children of the specified revision')),
          ] + templateopts,
          _('hg children [-r REV] [FILE]')),
 }
--- a/hgext/churn.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/churn.py	Wed Apr 08 23:24:22 2009 +0200
@@ -9,7 +9,7 @@
 
 from mercurial.i18n import _
 from mercurial import patch, cmdutil, util, templater
-import os, sys
+import sys
 import time, datetime
 
 def maketemplater(ui, repo, tmpl):
@@ -21,9 +21,10 @@
     t.use_template(tmpl)
     return t
 
-def changedlines(ui, repo, ctx1, ctx2):
+def changedlines(ui, repo, ctx1, ctx2, fns):
     lines = 0
-    diff = ''.join(patch.diff(repo, ctx1.node(), ctx2.node()))
+    fmatch = cmdutil.match(repo, pats=fns)
+    diff = ''.join(patch.diff(repo, ctx1.node(), ctx2.node(), fmatch))
     for l in diff.split('\n'):
         if (l.startswith("+") and not l.startswith("+++ ") or
             l.startswith("-") and not l.startswith("--- ")):
@@ -71,7 +72,7 @@
                 continue
 
             ctx1 = parents[0]
-            lines = changedlines(ui, repo, ctx1, ctx)
+            lines = changedlines(ui, repo, ctx1, ctx, fns)
             rate[key] = rate.get(key, 0) + lines
 
         if opts.get('progress'):
@@ -92,9 +93,9 @@
 def churn(ui, repo, *pats, **opts):
     '''graph count of revisions grouped by template
 
-    Will graph count of changed lines or revisions grouped by template or
-    alternatively by date, if dateformat is used. In this case it will override
-    template.
+    Will graph count of changed lines or revisions grouped by template
+    or alternatively by date, if dateformat is used. In this case it
+    will override template.
 
     By default statistics are counted for number of changed lines.
 
@@ -149,7 +150,7 @@
     "churn":
         (churn,
          [('r', 'rev', [], _('count rate for the specified revision or range')),
-          ('d', 'date', '', _('count rate for revs matching date spec')),
+          ('d', 'date', '', _('count rate for revisions matching date spec')),
           ('t', 'template', '{author|email}', _('template to group changesets')),
           ('f', 'dateformat', '',
               _('strftime-compatible format for grouping by date')),
--- a/hgext/color.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/color.py	Wed Apr 08 23:24:22 2009 +0200
@@ -18,15 +18,16 @@
 
 '''add color output to status, qseries, and diff-related commands
 
-This extension modifies the status command to add color to its output to
-reflect file status, the qseries command to add color to reflect patch status
-(applied, unapplied, missing), and to diff-related commands to highlight
-additions, removals, diff headers, and trailing whitespace.
+This extension modifies the status command to add color to its output
+to reflect file status, the qseries command to add color to reflect
+patch status (applied, unapplied, missing), and to diff-related
+commands to highlight additions, removals, diff headers, and trailing
+whitespace.
 
-Other effects in addition to color, like bold and underlined text, are also
-available.  Effects are rendered with the ECMA-48 SGR control function (aka
-ANSI escape codes).  This module also provides the render_text function,
-which can be used to add effects to any text.
+Other effects in addition to color, like bold and underlined text, are
+also available. Effects are rendered with the ECMA-48 SGR control
+function (aka ANSI escape codes). This module also provides the
+render_text function, which can be used to add effects to any text.
 
 To enable this extension, add this to your .hgrc file:
 [extensions]
--- a/hgext/convert/__init__.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/convert/__init__.py	Wed Apr 08 23:24:22 2009 +0200
@@ -8,6 +8,7 @@
 
 import convcmd
 import cvsps
+import subversion
 from mercurial import commands
 from mercurial.i18n import _
 
@@ -31,32 +32,32 @@
     - Mercurial [hg]
     - Subversion [svn] (history on branches is not preserved)
 
-    If no revision is given, all revisions will be converted. Otherwise,
-    convert will only import up to the named revision (given in a format
-    understood by the source).
+    If no revision is given, all revisions will be converted.
+    Otherwise, convert will only import up to the named revision
+    (given in a format understood by the source).
 
     If no destination directory name is specified, it defaults to the
-    basename of the source with '-hg' appended.  If the destination
+    basename of the source with '-hg' appended. If the destination
     repository doesn't exist, it will be created.
 
     If <REVMAP> isn't given, it will be put in a default location
-    (<dest>/.hg/shamap by default).  The <REVMAP> is a simple text
-    file that maps each source commit ID to the destination ID for
-    that revision, like so:
+    (<dest>/.hg/shamap by default). The <REVMAP> is a simple text file
+    that maps each source commit ID to the destination ID for that
+    revision, like so:
     <source ID> <destination ID>
 
-    If the file doesn't exist, it's automatically created.  It's updated
-    on each commit copied, so convert-repo can be interrupted and can
-    be run repeatedly to copy new commits.
+    If the file doesn't exist, it's automatically created. It's
+    updated on each commit copied, so convert-repo can be interrupted
+    and can be run repeatedly to copy new commits.
 
-    The [username mapping] file is a simple text file that maps each source
-    commit author to a destination commit author. It is handy for source SCMs
-    that use unix logins to identify authors (eg: CVS). One line per author
-    mapping and the line format is:
+    The [username mapping] file is a simple text file that maps each
+    source commit author to a destination commit author. It is handy
+    for source SCMs that use unix logins to identify authors (eg:
+    CVS). One line per author mapping and the line format is:
     srcauthor=whatever string you want
 
     The filemap is a file that allows filtering and remapping of files
-    and directories.  Comment lines start with '#'.  Each line can
+    and directories. Comment lines start with '#'. Each line can
     contain one of the following directives:
 
       include path/to/file
@@ -67,32 +68,33 @@
 
     The 'include' directive causes a file, or all files under a
     directory, to be included in the destination repository, and the
-    exclusion of all other files and dirs not explicitely included.
+    exclusion of all other files and directories not explicitely included.
     The 'exclude' directive causes files or directories to be omitted.
-    The 'rename' directive renames a file or directory.  To rename from a
-    subdirectory into the root of the repository, use '.' as the path to
-    rename to.
+    The 'rename' directive renames a file or directory. To rename from
+    a subdirectory into the root of the repository, use '.' as the
+    path to rename to.
 
     The splicemap is a file that allows insertion of synthetic
-    history, letting you specify the parents of a revision.  This is
+    history, letting you specify the parents of a revision. This is
     useful if you want to e.g. give a Subversion merge two parents, or
-    graft two disconnected series of history together.  Each entry
+    graft two disconnected series of history together. Each entry
     contains a key, followed by a space, followed by one or two
-    values, separated by spaces.  The key is the revision ID in the
-    source revision control system whose parents should be modified
-    (same format as a key in .hg/shamap).  The values are the revision
-    IDs (in either the source or destination revision control system)
-    that should be used as the new parents for that node.
+    comma-separated values. The key is the revision ID in the source
+    revision control system whose parents should be modified (same
+    format as a key in .hg/shamap). The values are the revision IDs
+    (in either the source or destination revision control system) that
+    should be used as the new parents for that node.
 
     Mercurial Source
     -----------------
 
-    --config convert.hg.ignoreerrors=False (boolean)
+    --config convert.hg.ignoreerrors=False    (boolean)
         ignore integrity errors when reading. Use it to fix Mercurial
         repositories with missing revlogs, by converting from and to
         Mercurial.
-    --config convert.hg.saverev=False          (boolean)
-        store original revision ID in changeset (forces target IDs to change)
+    --config convert.hg.saverev=False         (boolean)
+        store original revision ID in changeset (forces target IDs to
+        change)
     --config convert.hg.startrev=0            (hg revision identifier)
         convert start revision and its descendants
 
@@ -101,11 +103,11 @@
 
     CVS source will use a sandbox (i.e. a checked-out copy) from CVS
     to indicate the starting point of what will be converted. Direct
-    access to the repository files is not needed, unless of course
-    the repository is :local:. The conversion uses the top level
-    directory in the sandbox to find the CVS repository, and then uses
-    CVS rlog commands to find files to convert. This means that unless
-    a filemap is given, all files under the starting directory will be
+    access to the repository files is not needed, unless of course the
+    repository is :local:. The conversion uses the top level directory
+    in the sandbox to find the CVS repository, and then uses CVS rlog
+    commands to find files to convert. This means that unless a
+    filemap is given, all files under the starting directory will be
     converted, and that any directory reorganisation in the CVS
     sandbox is ignored.
 
@@ -121,34 +123,37 @@
     Internal cvsps is selected by setting
         --config convert.cvsps=builtin
     and has a few more configurable options:
-        --config convert.cvsps.fuzz=60   (integer)
-            Specify the maximum time (in seconds) that is allowed between
-            commits with identical user and log message in a single
-            changeset. When very large files were checked in as part
-            of a changeset then the default may not be long enough.
+        --config convert.cvsps.fuzz=60        (integer)
+            Specify the maximum time (in seconds) that is allowed
+            between commits with identical user and log message in a
+            single changeset. When very large files were checked in as
+            part of a changeset then the default may not be long
+            enough.
         --config convert.cvsps.mergeto='{{mergetobranch ([-\w]+)}}'
-            Specify a regular expression to which commit log messages are
-            matched. If a match occurs, then the conversion process will
-            insert a dummy revision merging the branch on which this log
-            message occurs to the branch indicated in the regex.
+            Specify a regular expression to which commit log messages
+            are matched. If a match occurs, then the conversion
+            process will insert a dummy revision merging the branch on
+            which this log message occurs to the branch indicated in
+            the regex.
         --config convert.cvsps.mergefrom='{{mergefrombranch ([-\w]+)}}'
-            Specify a regular expression to which commit log messages are
-            matched. If a match occurs, then the conversion process will
-            add the most recent revision on the branch indicated in the
-            regex as the second parent of the changeset.
+            Specify a regular expression to which commit log messages
+            are matched. If a match occurs, then the conversion
+            process will add the most recent revision on the branch
+            indicated in the regex as the second parent of the
+            changeset.
 
-    The hgext/convert/cvsps wrapper script allows the builtin changeset
-    merging code to be run without doing a conversion. Its parameters and
-    output are similar to that of cvsps 2.1.
+    The hgext/convert/cvsps wrapper script allows the builtin
+    changeset merging code to be run without doing a conversion. Its
+    parameters and output are similar to that of cvsps 2.1.
 
     Subversion Source
     -----------------
 
     Subversion source detects classical trunk/branches/tags layouts.
     By default, the supplied "svn://repo/path/" source URL is
-    converted as a single branch. If "svn://repo/path/trunk" exists
-    it replaces the default branch. If "svn://repo/path/branches"
-    exists, its subdirectories are listed as possible branches. If
+    converted as a single branch. If "svn://repo/path/trunk" exists it
+    replaces the default branch. If "svn://repo/path/branches" exists,
+    its subdirectories are listed as possible branches. If
     "svn://repo/path/tags" exists, it is looked for tags referencing
     converted branches. Default "trunk", "branches" and "tags" values
     can be overriden with following options. Set them to paths
@@ -172,16 +177,17 @@
     Perforce Source
     ---------------
 
-    The Perforce (P4) importer can be given a p4 depot path or a client
-    specification as source. It will convert all files in the source to
-    a flat Mercurial repository, ignoring labels, branches and integrations.
-    Note that when a depot path is given you then usually should specify a
-    target directory, because otherwise the target may be named ...-hg.
+    The Perforce (P4) importer can be given a p4 depot path or a
+    client specification as source. It will convert all files in the
+    source to a flat Mercurial repository, ignoring labels, branches
+    and integrations. Note that when a depot path is given you then
+    usually should specify a target directory, because otherwise the
+    target may be named ...-hg.
 
-    It is possible to limit the amount of source history to be converted
-    by specifying an initial Perforce revision.
+    It is possible to limit the amount of source history to be
+    converted by specifying an initial Perforce revision.
 
-    --config convert.p4.startrev=0           (perforce changelist number)
+    --config convert.p4.startrev=0            (perforce changelist number)
         specify initial Perforce revision.
 
 
@@ -199,17 +205,19 @@
     return convcmd.convert(ui, src, dest, revmapfile, **opts)
 
 def debugsvnlog(ui, **opts):
-    return convcmd.debugsvnlog(ui, **opts)
+    return subversion.debugsvnlog(ui, **opts)
 
 def debugcvsps(ui, *args, **opts):
     '''create changeset information from CVS
 
-    This command is intended as a debugging tool for the CVS to Mercurial
-    converter, and can be used as a direct replacement for cvsps.
+    This command is intended as a debugging tool for the CVS to
+    Mercurial converter, and can be used as a direct replacement for
+    cvsps.
 
-    Hg debugcvsps reads the CVS rlog for current directory (or any named
-    directory) in the CVS repository, and converts the log to a series of
-    changesets based on matching commit log entries and dates.'''
+    Hg debugcvsps reads the CVS rlog for current directory (or any
+    named directory) in the CVS repository, and converts the log to a
+    series of changesets based on matching commit log entries and
+    dates.'''
     return cvsps.debugcvsps(ui, *args, **opts)
 
 commands.norepo += " convert debugsvnlog debugcvsps"
--- a/hgext/convert/bzr.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/convert/bzr.py	Wed Apr 08 23:24:22 2009 +0200
@@ -27,15 +27,15 @@
     def __init__(self, ui, path, rev=None):
         super(bzr_source, self).__init__(ui, path, rev=rev)
 
+        if not os.path.exists(os.path.join(path, '.bzr')):
+            raise NoRepo('%s does not look like a Bazaar repo' % path)
+
         try:
             # access bzrlib stuff
             branch
         except NameError:
             raise NoRepo('Bazaar modules could not be loaded')
 
-        if not os.path.exists(os.path.join(path, '.bzr')):
-            raise NoRepo('%s does not look like a Bazaar repo' % path)
-
         path = os.path.abspath(path)
         self.branch = branch.Branch.open(path)
         self.sourcerepo = self.branch.repository
--- a/hgext/convert/convcmd.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/convert/convcmd.py	Wed Apr 08 23:24:22 2009 +0200
@@ -10,7 +10,7 @@
 from darcs import darcs_source
 from git import convert_git
 from hg import mercurial_source, mercurial_sink
-from subversion import debugsvnlog, svn_source, svn_sink
+from subversion import svn_source, svn_sink
 from monotone import monotone_source
 from gnuarch import gnuarch_source
 from bzr import bzr_source
@@ -18,7 +18,7 @@
 import filemap
 
 import os, shutil
-from mercurial import hg, util
+from mercurial import hg, util, encoding
 from mercurial.i18n import _
 
 orig_encoding = 'ascii'
@@ -188,33 +188,38 @@
     def writeauthormap(self):
         authorfile = self.authorfile
         if authorfile:
-           self.ui.status(_('Writing author map file %s\n') % authorfile)
-           ofile = open(authorfile, 'w+')
-           for author in self.authors:
-               ofile.write("%s=%s\n" % (author, self.authors[author]))
-           ofile.close()
+            self.ui.status(_('Writing author map file %s\n') % authorfile)
+            ofile = open(authorfile, 'w+')
+            for author in self.authors:
+                ofile.write("%s=%s\n" % (author, self.authors[author]))
+            ofile.close()
 
     def readauthormap(self, authorfile):
         afile = open(authorfile, 'r')
         for line in afile:
-            if line.strip() == '':
+
+            line = line.strip()
+            if not line or line.startswith('#'):
                 continue
+
             try:
                 srcauthor, dstauthor = line.split('=', 1)
-                srcauthor = srcauthor.strip()
-                dstauthor = dstauthor.strip()
-                if srcauthor in self.authors and dstauthor != self.authors[srcauthor]:
-                    self.ui.status(
-                        _('Overriding mapping for author %s, was %s, will be %s\n')
-                        % (srcauthor, self.authors[srcauthor], dstauthor))
-                else:
-                    self.ui.debug(_('mapping author %s to %s\n')
-                                  % (srcauthor, dstauthor))
-                    self.authors[srcauthor] = dstauthor
-            except IndexError:
-                self.ui.warn(
-                    _('Ignoring bad line in author map file %s: %s\n')
-                    % (authorfile, line.rstrip()))
+            except ValueError:
+                msg = _('Ignoring bad line in author map file %s: %s\n')
+                self.ui.warn(msg % (authorfile, line.rstrip()))
+                continue
+
+            srcauthor = srcauthor.strip()
+            dstauthor = dstauthor.strip()
+            if self.authors.get(srcauthor) in (None, dstauthor):
+                msg = _('mapping author %s to %s\n')
+                self.ui.debug(msg % (srcauthor, dstauthor))
+                self.authors[srcauthor] = dstauthor
+                continue
+
+            m = _('overriding mapping for author %s, was %s, will be %s\n')
+            self.ui.status(m % (srcauthor, self.authors[srcauthor], dstauthor))
+
         afile.close()
 
     def cachecommit(self, rev):
@@ -275,7 +280,7 @@
                 if "\n" in desc:
                     desc = desc.splitlines()[0]
                 # convert log message to local encoding without using
-                # tolocal() because util._encoding conver() use it as
+                # tolocal() because encoding.encoding conver() use it as
                 # 'utf-8'
                 self.ui.status("%d %s\n" % (num, recode(desc)))
                 self.ui.note(_("source: %s\n") % recode(c))
@@ -308,8 +313,8 @@
 
 def convert(ui, src, dest=None, revmapfile=None, **opts):
     global orig_encoding
-    orig_encoding = util._encoding
-    util._encoding = 'UTF-8'
+    orig_encoding = encoding.encoding
+    encoding.encoding = 'UTF-8'
 
     if not dest:
         dest = hg.defaultdest(src) + "-hg"
--- a/hgext/convert/cvs.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/convert/cvs.py	Wed Apr 08 23:24:22 2009 +0200
@@ -327,7 +327,7 @@
                 elif line.startswith("E "):
                     self.ui.warn(_("cvs server: %s\n") % line[2:])
                 elif line.startswith("Remove"):
-                    l = self.readp.readline()
+                    self.readp.readline()
                 else:
                     raise util.Abort(_("unknown CVS response: %s") % line)
 
--- a/hgext/convert/cvsps.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/convert/cvsps.py	Wed Apr 08 23:24:22 2009 +0200
@@ -34,6 +34,7 @@
         .revision  - revision number as tuple
         .tags      - list of tags on the file
         .synthetic - is this a synthetic "file ... added on ..." revision?
+        .mergepoint- the branch that has been merged from (if present in rlog output)
     '''
     def __init__(self, **entries):
         self.__dict__.update(entries)
@@ -105,7 +106,7 @@
     re_31 = re.compile('----------------------------$')
     re_32 = re.compile('=============================================================================$')
     re_50 = re.compile('revision ([\\d.]+)(\s+locked by:\s+.+;)?$')
-    re_60 = re.compile(r'date:\s+(.+);\s+author:\s+(.+);\s+state:\s+(.+?);(\s+lines:\s+(\+\d+)?\s+(-\d+)?;)?')
+    re_60 = re.compile(r'date:\s+(.+);\s+author:\s+(.+);\s+state:\s+(.+?);(\s+lines:\s+(\+\d+)?\s+(-\d+)?;)?(.*mergepoint:\s+([^;]+);)?')
     re_70 = re.compile('branches: (.+);$')
 
     file_added_re = re.compile(r'file [^/]+ was (initially )?added on branch')
@@ -187,6 +188,7 @@
 
     # state machine begins here
     tags = {}     # dictionary of revisions on current file with their tags
+    branchmap = {} # mapping between branch names and revision numbers
     state = 0
     store = False # set when a new record can be appended
 
@@ -244,6 +246,7 @@
         elif state == 2:
             # expect 'symbolic names'
             if re_20.match(line):
+                branchmap = {}
                 state = 3
 
         elif state == 3:
@@ -261,6 +264,7 @@
                 if rev not in tags:
                     tags[rev] = []
                 tags[rev].append(match.group(1))
+                branchmap[match.group(1)] = match.group(2)
 
             elif re_31.match(line):
                 state = 5
@@ -311,6 +315,18 @@
                 e.lines = (0, int(match.group(6)))
             else:
                 e.lines = None
+
+            if match.group(7): # cvsnt mergepoint
+                myrev = match.group(8).split('.')
+                if len(myrev) == 2: # head
+                    e.mergepoint = 'HEAD'
+                else:
+                    myrev = '.'.join(myrev[:-2] + ['0', myrev[-2]])
+                    branches = [b for b in branchmap if branchmap[b] == myrev]
+                    assert len(branches) == 1, 'unknown branch: %s' % e.mergepoint
+                    e.mergepoint = branches[0]
+            else:
+                e.mergepoint = None
             e.comment = []
             state = 7
 
@@ -354,7 +370,7 @@
               e.revision[-1] == 1 and      # 1.1 or 1.1.x.1
               len(e.comment) == 1 and
               file_added_re.match(e.comment[0])):
-            ui.debug(_('found synthetic rev in %s: %r\n')
+            ui.debug(_('found synthetic revision in %s: %r\n')
                      % (e.rcs, e.comment[0]))
             e.synthetic = True
 
@@ -420,6 +436,7 @@
         .parents   - list of one or two parent changesets
         .tags      - list of tags on this changeset
         .synthetic - from synthetic revision "file ... added on branch ..."
+        .mergepoint- the branch that has been merged from (if present in rlog output)
     '''
     def __init__(self, **entries):
         self.__dict__.update(entries)
@@ -448,7 +465,8 @@
                    (c.date[0] + c.date[1]) + fuzz) and
                   e.file not in files):
             c = changeset(comment=e.comment, author=e.author,
-                          branch=e.branch, date=e.date, entries=[])
+                          branch=e.branch, date=e.date, entries=[],
+                          mergepoint=getattr(e, 'mergepoint', None))
             changesets.append(c)
             files = {}
             if len(changesets) % 100 == 0:
@@ -470,7 +488,8 @@
         #   "File file4 was added on branch ..." (synthetic, 1 entry)
         #   "Add file3 and file4 to fix ..."     (real, 2 entries)
         # Hence the check for 1 entry here.
-        c.synthetic = (len(c.entries) == 1 and c.entries[0].synthetic)
+        synth = getattr(c.entries[0], 'synthetic', None)
+        c.synthetic = (len(c.entries) == 1 and synth)
 
     # Sort files in each changeset
 
@@ -595,14 +614,20 @@
             if p is not None:
                 c.parents.append(p)
 
+        if c.mergepoint:
+            if c.mergepoint == 'HEAD':
+                c.mergepoint = None
+            c.parents.append(changesets[branches[c.mergepoint]])
+
         if mergefrom:
             m = mergefrom.search(c.comment)
             if m:
                 m = m.group(1)
                 if m == 'HEAD':
                     m = None
-                if m in branches and c.branch != m:
-                    c.parents.append(changesets[branches[m]])
+                candidate = changesets[branches[m]]
+                if m in branches and c.branch != m and not candidate.synthetic:
+                    c.parents.append(candidate)
 
         if mergeto:
             m = mergeto.search(c.comment)
--- a/hgext/convert/darcs.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/convert/darcs.py	Wed Apr 08 23:24:22 2009 +0200
@@ -24,6 +24,9 @@
 
         # check for _darcs, ElementTree, _darcs/inventory so that we can
         # easily skip test-convert-darcs if ElementTree is not around
+        if not os.path.exists(os.path.join(path, '_darcs', 'inventories')):
+            raise NoRepo("%s does not look like a darcs repo" % path)
+
         if not os.path.exists(os.path.join(path, '_darcs')):
             raise NoRepo("%s does not look like a darcs repo" % path)
 
@@ -32,9 +35,6 @@
         if ElementTree is None:
             raise util.Abort(_("Python ElementTree module is not available"))
 
-        if not os.path.exists(os.path.join(path, '_darcs', 'inventories')):
-            raise NoRepo("%s does not look like a darcs repo" % path)
-
         self.path = os.path.realpath(path)
 
         self.lastrev = None
--- a/hgext/convert/filemap.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/convert/filemap.py	Wed Apr 08 23:24:22 2009 +0200
@@ -69,7 +69,7 @@
         for pre, suf in rpairs(name):
             try:
                 return mapping[pre], pre, suf
-            except KeyError, err:
+            except KeyError:
                 pass
         return '', name, ''
 
--- a/hgext/convert/git.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/convert/git.py	Wed Apr 08 23:24:22 2009 +0200
@@ -84,7 +84,6 @@
         message = c[end+2:]
         message = self.recode(message)
         l = c[:end].splitlines()
-        manifest = l[0].split()[1]
         parents = []
         for e in l[1:]:
             n, v = e.split(" ", 1)
--- a/hgext/convert/gnuarch.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/convert/gnuarch.py	Wed Apr 08 23:24:22 2009 +0200
@@ -279,7 +279,7 @@
             # Commit revision origin when dealing with a branch or tag
             if catlog.has_key('Continuation-of'):
                 self.changes[rev].continuationof = self.recode(catlog['Continuation-of'])
-        except Exception, err:
+        except Exception:
             raise util.Abort(_('could not parse cat-log of %s') % rev)
 
     def _parsechangeset(self, data, rev):
--- a/hgext/convert/hg.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/convert/hg.py	Wed Apr 08 23:24:22 2009 +0200
@@ -42,7 +42,7 @@
                 if not self.repo.local():
                     raise NoRepo(_('%s is not a local Mercurial repo') % path)
                 self.created.append(path)
-            except error.RepoError, err:
+            except error.RepoError:
                 ui.print_exc()
                 raise NoRepo("could not create hg repo %s as sink" % path)
         self.lock = None
@@ -142,7 +142,7 @@
             p2 = parents.pop(0)
             ctx = context.memctx(self.repo, (p1, p2), text, files.keys(), getfilectx,
                                  commit.author, commit.date, extra)
-            a = self.repo.commitctx(ctx)
+            self.repo.commitctx(ctx)
             text = "(octopus merge fixup)\n"
             p2 = hex(self.repo.changelog.tip())
 
@@ -155,35 +155,33 @@
         return p2
 
     def puttags(self, tags):
-         try:
-             parentctx = self.repo[self.tagsbranch]
-             tagparent = parentctx.node()
-         except error.RepoError, inst:
-             parentctx = None
-             tagparent = nullid
+        try:
+            parentctx = self.repo[self.tagsbranch]
+            tagparent = parentctx.node()
+        except error.RepoError:
+            parentctx = None
+            tagparent = nullid
 
-         try:
-             oldlines = util.sort(parentctx['.hgtags'].data().splitlines(1))
-         except:
-             oldlines = []
+        try:
+            oldlines = util.sort(parentctx['.hgtags'].data().splitlines(1))
+        except:
+            oldlines = []
 
-         newlines = util.sort([("%s %s\n" % (tags[tag], tag)) for tag in tags])
-
-         if newlines == oldlines:
-             return None
-         data = "".join(newlines)
-
-         def getfilectx(repo, memctx, f):
+        newlines = util.sort([("%s %s\n" % (tags[tag], tag)) for tag in tags])
+        if newlines == oldlines:
+            return None
+        data = "".join(newlines)
+        def getfilectx(repo, memctx, f):
             return context.memfilectx(f, data, False, False, None)
 
-         self.ui.status(_("updating tags\n"))
-         date = "%s 0" % int(time.mktime(time.gmtime()))
-         extra = {'branch': self.tagsbranch}
-         ctx = context.memctx(self.repo, (tagparent, None), "update tags",
-                              [".hgtags"], getfilectx, "convert-repo", date,
-                              extra)
-         self.repo.commitctx(ctx)
-         return hex(self.repo.changelog.tip())
+        self.ui.status(_("updating tags\n"))
+        date = "%s 0" % int(time.mktime(time.gmtime()))
+        extra = {'branch': self.tagsbranch}
+        ctx = context.memctx(self.repo, (tagparent, None), "update tags",
+                             [".hgtags"], getfilectx, "convert-repo", date,
+                             extra)
+        self.repo.commitctx(ctx)
+        return hex(self.repo.changelog.tip())
 
     def setfilemapmode(self, active):
         self.filemapmode = active
--- a/hgext/convert/monotone.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/convert/monotone.py	Wed Apr 08 23:24:22 2009 +0200
@@ -1,8 +1,8 @@
 # monotone support for the convert extension
 
-import os, re, time
+import os, re
 from mercurial import util
-from common import NoRepo, MissingTool, commit, converter_source, checktool
+from common import NoRepo, commit, converter_source, checktool
 from common import commandline
 from mercurial.i18n import _
 
@@ -14,6 +14,10 @@
         self.ui = ui
         self.path = path
 
+        norepo = NoRepo (_("%s does not look like a monotone repo") % path)
+        if not os.path.exists(os.path.join(path, '_MTN')):
+            raise norepo
+
         # regular expressions for parsing monotone output
         space    = r'\s*'
         name     = r'\s+"((?:\\"|[^"])*)"\s*'
@@ -39,10 +43,6 @@
         self.files = None
         self.dirs  = None
 
-        norepo = NoRepo (_("%s does not look like a monotone repo") % path)
-        if not os.path.exists(path):
-            raise norepo
-
         checktool('mtn', abort=False)
 
         # test if there are any revisions
@@ -111,9 +111,8 @@
     def mtnrenamefiles(self, files, fromdir, todir):
         renamed = {}
         for tofile in files:
-            suffix = tofile.lstrip(todir)
-            if todir + suffix == tofile:
-                renamed[tofile] = (fromdir + suffix).lstrip("/")
+            if tofile.startswith(todir):
+                renamed[tofile] = fromdir + tofile[len(todir):]
         return renamed
 
 
@@ -155,7 +154,9 @@
                 if self.mtnisdir(toname, rev):
                     renamed = self.mtnrenamefiles(self.files, fromname, toname)
                     for tofile, fromfile in renamed.items():
-                        self.ui.debug (_("copying file in renamed dir from '%s' to '%s'") % (fromfile, tofile), '\n')
+                        self.ui.debug (_("copying file in renamed directory "
+                                         "from '%s' to '%s'")
+                                       % (fromfile, tofile), '\n')
                         files[tofile] = rev
                     for fromfile in renamed.values():
                         files[fromfile] = rev
--- a/hgext/convert/p4.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/convert/p4.py	Wed Apr 08 23:24:22 2009 +0200
@@ -10,7 +10,7 @@
 from mercurial import util
 from mercurial.i18n import _
 
-from common import commit, converter_source, checktool
+from common import commit, converter_source, checktool, NoRepo
 import marshal
 
 def loaditer(f):
@@ -28,7 +28,10 @@
     def __init__(self, ui, path, rev=None):
         super(p4_source, self).__init__(ui, path, rev=rev)
 
-        checktool('p4')
+        if not path.startswith('//'):
+            raise NoRepo('%s does not look like a P4 repo' % path)
+
+        checktool('p4', abort=False)
 
         self.p4changes = {}
         self.heads = {}
--- a/hgext/convert/subversion.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/convert/subversion.py	Wed Apr 08 23:24:22 2009 +0200
@@ -152,6 +152,12 @@
     def __init__(self, ui, url, rev=None):
         super(svn_source, self).__init__(ui, url, rev=rev)
 
+        if not (url.startswith('svn://') or url.startswith('svn+ssh://') or
+                (os.path.exists(url) and
+                 os.path.exists(os.path.join(url, '.svn'))) or
+                 (url.startswith('file://'))):
+            raise NoRepo("%s does not look like a Subversion repo" % url)
+
         try:
             SubversionException
         except NameError:
@@ -177,7 +183,7 @@
             if at >= 0:
                 latest = int(url[at+1:])
                 url = url[:at]
-        except ValueError, e:
+        except ValueError:
             pass
         self.url = geturl(url)
         self.encoding = 'UTF-8' # Subversion is always nominal UTF-8
@@ -194,7 +200,7 @@
             self.commits = {}
             self.paths = {}
             self.uuid = svn.ra.get_uuid(self.ra).decode(self.encoding)
-        except SubversionException, e:
+        except SubversionException:
             ui.print_exc()
             raise NoRepo("%s does not look like a Subversion repo" % self.url)
 
@@ -215,7 +221,7 @@
 
         try:
             self.get_blacklist()
-        except IOError, e:
+        except IOError:
             pass
 
         self.head = self.latest(self.module, latest)
@@ -246,7 +252,7 @@
             svn.client.ls(self.url.rstrip('/') + '/' + urllib.quote(path),
                                  optrev, False, self.ctx)
             return True
-        except SubversionException, err:
+        except SubversionException:
             return False
 
     def getheads(self):
@@ -438,7 +444,7 @@
                 pendings = remainings
                 tagspath = srctagspath
 
-        except SubversionException, (inst, num):
+        except SubversionException:
             self.ui.note(_('no tags found at revision %d\n') % start)
         return tags
 
@@ -533,7 +539,7 @@
                 try:
                     svn_rev = int(line.strip())
                     blacklist.add(svn_rev)
-                except ValueError, e:
+                except ValueError:
                     pass # not an integer or a comment
 
     def is_blacklisted(self, svn_rev):
@@ -1103,7 +1109,7 @@
         for f, v in files:
             try:
                 data = source.getfile(f, v)
-            except IOError, inst:
+            except IOError:
                 self.delete.append(f)
             else:
                 e = source.getmode(f, v)
--- a/hgext/extdiff.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/extdiff.py	Wed Apr 08 23:24:22 2009 +0200
@@ -7,7 +7,7 @@
 
 '''
 The `extdiff' Mercurial extension allows you to use external programs
-to compare revisions, or revision with working dir.  The external diff
+to compare revisions, or revision with working directory. The external diff
 programs are called with a configurable set of options and two
 non-option arguments: paths to directories containing snapshots of
 files to compare.
@@ -34,15 +34,15 @@
   meld =
 
   # add new command called vimdiff, runs gvimdiff with DirDiff plugin
-  #(see http://www.vim.org/scripts/script.php?script_id=102)
+  # (see http://www.vim.org/scripts/script.php?script_id=102)
   # Non english user, be sure to put "let g:DirDiffDynamicDiffText = 1" in
   # your .vimrc
   vimdiff = gvim -f '+next' '+execute "DirDiff" argv(0) argv(1)'
 
-You can use -I/-X and list of file or directory names like normal
-"hg diff" command.  The `extdiff' extension makes snapshots of only
-needed files, so running the external diff program will actually be
-pretty fast (at least faster than having to compare the entire tree).
+You can use -I/-X and list of file or directory names like normal "hg
+diff" command. The `extdiff' extension makes snapshots of only needed
+files, so running the external diff program will actually be pretty
+fast (at least faster than having to compare the entire tree).
 '''
 
 from mercurial.i18n import _
@@ -85,7 +85,7 @@
         dirname = "root"
     base = os.path.join(tmproot, dirname)
     os.mkdir(base)
-    ui.note(_('making snapshot of %d files from working dir\n') %
+    ui.note(_('making snapshot of %d files from working directory\n') %
             (len(files)))
 
     fns_and_mtime = []
@@ -191,19 +191,19 @@
     '''use external program to diff repository (or selected files)
 
     Show differences between revisions for the specified files, using
-    an external program.  The default program used is diff, with
+    an external program. The default program used is diff, with
     default options "-Npru".
 
-    To select a different program, use the -p option.  The program
-    will be passed the names of two directories to compare.  To pass
-    additional options to the program, use the -o option.  These will
+    To select a different program, use the -p option. The program will
+    be passed the names of two directories to compare. To pass
+    additional options to the program, use the -o option. These will
     be passed before the names of the directories to compare.
 
-    When two revision arguments are given, then changes are
-    shown between those revisions. If only one revision is
-    specified then that revision is compared to the working
-    directory, and, when no revisions are specified, the
-    working directory files are compared to its parent.'''
+    When two revision arguments are given, then changes are shown
+    between those revisions. If only one revision is specified then
+    that revision is compared to the working directory, and, when no
+    revisions are specified, the working directory files are compared
+    to its parent.'''
     program = opts['program'] or 'diff'
     if opts['program']:
         option = opts['option']
--- a/hgext/fetch.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/fetch.py	Wed Apr 08 23:24:22 2009 +0200
@@ -16,13 +16,14 @@
     This finds all changes from the repository at the specified path
     or URL and adds them to the local repository.
 
-    If the pulled changes add a new branch head, the head is automatically
-    merged, and the result of the merge is committed.  Otherwise, the
-    working directory is updated to include the new changes.
+    If the pulled changes add a new branch head, the head is
+    automatically merged, and the result of the merge is committed.
+    Otherwise, the working directory is updated to include the new
+    changes.
 
     When a merge occurs, the newly pulled changes are assumed to be
-    "authoritative".  The head of the new changes is used as the first
-    parent, with local changes as the second.  To switch the merge
+    "authoritative". The head of the new changes is used as the first
+    parent, with local changes as the second. To switch the merge
     order, use --switch-parent.
 
     See 'hg help dates' for a list of formats valid for -d/--date.
--- a/hgext/graphlog.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/graphlog.py	Wed Apr 08 23:24:22 2009 +0200
@@ -12,13 +12,12 @@
 '''
 
 import os
-import sys
 from mercurial.cmdutil import revrange, show_changeset
-from mercurial.commands import templateopts, logopts, remoteopts
+from mercurial.commands import templateopts
 from mercurial.i18n import _
 from mercurial.node import nullrev
 from mercurial import bundlerepo, changegroup, cmdutil, commands, extensions
-from mercurial import hg, ui, url, util
+from mercurial import hg, url, util
 
 def revisions(repo, start, stop):
     """cset DAG generator yielding (rev, node, [parents]) tuples
@@ -385,8 +384,6 @@
 
         chlist = other.changelog.nodesbetween(incoming, revs)[0]
         revdag = graphrevs(other, chlist, opts)
-        other_parents = []
-        displayer = show_changeset(ui, other, opts, buffered=True)
         graphdag = graphabledag(ui, repo, revdag, opts)
         ascii(ui, grapher(graphdag))
 
--- a/hgext/hgk.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/hgk.py	Wed Apr 08 23:24:22 2009 +0200
@@ -7,17 +7,17 @@
 '''browsing the repository in a graphical way
 
 The hgk extension allows browsing the history of a repository in a
-graphical way. It requires Tcl/Tk version 8.4 or later. (Tcl/Tk is
-not distributed with Mercurial.)
+graphical way. It requires Tcl/Tk version 8.4 or later. (Tcl/Tk is not
+distributed with Mercurial.)
 
 hgk consists of two parts: a Tcl script that does the displaying and
 querying of information, and an extension to mercurial named hgk.py,
 which provides hooks for hgk to get information. hgk can be found in
 the contrib directory, and hgk.py can be found in the hgext directory.
 
-To load the hgext.py extension, add it to your .hgrc file (you have
-to use your global $HOME/.hgrc file, not one in a repository). You
-can specify an absolute path:
+To load the hgext.py extension, add it to your .hgrc file (you have to
+use your global $HOME/.hgrc file, not one in a repository). You can
+specify an absolute path:
 
   [extensions]
   hgk=/usr/local/lib/hgk.py
@@ -29,8 +29,8 @@
   hgk=
 
 The hg view command will launch the hgk Tcl script. For this command
-to work, hgk must be in your search path. Alternately, you can
-specify the path to hgk in your .hgrc file:
+to work, hgk must be in your search path. Alternately, you can specify
+the path to hgk in your .hgrc file:
 
   [hgk]
   path=/location/of/hgk
--- a/hgext/highlight/highlight.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/highlight/highlight.py	Wed Apr 08 23:24:22 2009 +0200
@@ -6,7 +6,7 @@
 from mercurial import demandimport
 demandimport.ignore.extend(['pkgutil', 'pkg_resources', '__main__',])
 
-from mercurial import util
+from mercurial import util, encoding
 from mercurial.templatefilters import filters
 
 from pygments import highlight
@@ -30,19 +30,19 @@
         return
 
     # avoid UnicodeDecodeError in pygments
-    text = util.tolocal(text)
+    text = encoding.tolocal(text)
 
     # To get multi-line strings right, we can't format line-by-line
     try:
         lexer = guess_lexer_for_filename(fctx.path(), text[:1024],
-                                         encoding=util._encoding)
+                                         encoding=encoding.encoding)
     except (ClassNotFound, ValueError):
         try:
-            lexer = guess_lexer(text[:1024], encoding=util._encoding)
+            lexer = guess_lexer(text[:1024], encoding=encoding.encoding)
         except (ClassNotFound, ValueError):
-            lexer = TextLexer(encoding=util._encoding)
+            lexer = TextLexer(encoding=encoding.encoding)
 
-    formatter = HtmlFormatter(style=style, encoding=util._encoding)
+    formatter = HtmlFormatter(style=style, encoding=encoding.encoding)
 
     colorized = highlight(text, lexer, formatter)
     # strip wrapping div
--- a/hgext/inotify/linux/__init__.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/inotify/linux/__init__.py	Wed Apr 08 23:24:22 2009 +0200
@@ -27,7 +27,7 @@
     def read_value():
         try:
             return int(open(procfs_path + '/' + name).read())
-        except OSError, err:
+        except OSError:
             return None
 
     read_value.__doc__ = '''Return the value of the %s setting from /proc.
--- a/hgext/inotify/server.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/inotify/server.py	Wed Apr 08 23:24:22 2009 +0200
@@ -304,6 +304,11 @@
                         dd[fn] = status
             else:
                 d.pop(fn, None)
+        elif not status:
+            # a directory is being removed, check its contents
+            for subfile, b in oldstatus.copy().iteritems():
+                self.updatestatus(wfn + '/' + subfile, None)
+
 
     def check_deleted(self, key):
         # Files that had been deleted but were present in the dirstate
@@ -473,8 +478,7 @@
 
         if evt.mask & inotify.IN_ISDIR:
             self.scan(wpath)
-        else:
-            self.schedule_work(wpath, 'd')
+        self.schedule_work(wpath, 'd')
 
     def process_modify(self, wpath, evt):
         if self.ui.debugflag:
--- a/hgext/keyword.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/keyword.py	Wed Apr 08 23:24:22 2009 +0200
@@ -11,8 +11,8 @@
 #
 # There are many good reasons why this is not needed in a distributed
 # SCM, still it may be useful in very small projects based on single
-# files (like LaTeX packages), that are mostly addressed to an audience
-# not running a version control system.
+# files (like LaTeX packages), that are mostly addressed to an
+# audience not running a version control system.
 #
 # For in-depth discussion refer to
 # <http://www.selenic.com/mercurial/wiki/index.cgi/KeywordPlan>.
@@ -34,15 +34,15 @@
 
 '''keyword expansion in local repositories
 
-This extension expands RCS/CVS-like or self-customized $Keywords$
-in tracked text files selected by your configuration.
+This extension expands RCS/CVS-like or self-customized $Keywords$ in
+tracked text files selected by your configuration.
 
-Keywords are only expanded in local repositories and not stored in
-the change history. The mechanism can be regarded as a convenience
-for the current user or for archive distribution.
+Keywords are only expanded in local repositories and not stored in the
+change history. The mechanism can be regarded as a convenience for the
+current user or for archive distribution.
 
-Configuration is done in the [keyword] and [keywordmaps] sections
-of hgrc files.
+Configuration is done in the [keyword] and [keywordmaps] sections of
+hgrc files.
 
 Example:
 
@@ -52,26 +52,28 @@
     x*    = ignore
 
 Note: the more specific you are in your filename patterns
-      the less you lose speed in huge repos.
+      the less you lose speed in huge repositories.
 
 For [keywordmaps] template mapping and expansion demonstration and
 control run "hg kwdemo".
 
 An additional date template filter {date|utcdate} is provided.
 
-The default template mappings (view with "hg kwdemo -d") can be replaced
-with customized keywords and templates.
-Again, run "hg kwdemo" to control the results of your config changes.
+The default template mappings (view with "hg kwdemo -d") can be
+replaced with customized keywords and templates. Again, run "hg
+kwdemo" to control the results of your config changes.
 
 Before changing/disabling active keywords, run "hg kwshrink" to avoid
-the risk of inadvertedly storing expanded keywords in the change history.
+the risk of inadvertedly storing expanded keywords in the change
+history.
 
 To force expansion after enabling it, or a configuration change, run
 "hg kwexpand".
 
-Also, when committing with the record extension or using mq's qrecord, be aware
-that keywords cannot be updated. Again, run "hg kwexpand" on the files in
-question to update keyword expansions after all changes have been checked in.
+Also, when committing with the record extension or using mq's qrecord,
+be aware that keywords cannot be updated. Again, run "hg kwexpand" on
+the files in question to update keyword expansions after all changes
+have been checked in.
 
 Expansions spanning more than one line and incremental expansions,
 like CVS' $Log$, are not supported. A keyword template map
@@ -276,11 +278,11 @@
 def demo(ui, repo, *args, **opts):
     '''print [keywordmaps] configuration and an expansion example
 
-    Show current, custom, or default keyword template maps
-    and their expansion.
+    Show current, custom, or default keyword template maps and their
+    expansion.
 
-    Extend current configuration by specifying maps as arguments
-    and optionally by reading from an additional hgrc file.
+    Extend current configuration by specifying maps as arguments and
+    optionally by reading from an additional hgrc file.
 
     Override current keyword template maps with "default" option.
     '''
@@ -297,7 +299,7 @@
     fn = 'demo.txt'
     branchname = 'demobranch'
     tmpdir = tempfile.mkdtemp('', 'kwdemo.')
-    ui.note(_('creating temporary repo at %s\n') % tmpdir)
+    ui.note(_('creating temporary repository at %s\n') % tmpdir)
     repo = localrepo.localrepository(ui, tmpdir, True)
     ui.setconfig('keyword', fn, '')
     if args or opts.get('rcfile'):
@@ -351,7 +353,7 @@
     fmt = ui.verbose and ' in %s' % path or ''
     demostatus('%s keywords expanded%s' % (kwstatus, fmt))
     ui.write(repo.wread(fn))
-    ui.debug(_('\nremoving temporary repo %s\n') % tmpdir)
+    ui.debug(_('\nremoving temporary repository %s\n') % tmpdir)
     shutil.rmtree(tmpdir, ignore_errors=True)
 
 def expand(ui, repo, *pats, **opts):
@@ -367,9 +369,9 @@
 def files(ui, repo, *pats, **opts):
     '''print files currently configured for keyword expansion
 
-    Crosscheck which files in working directory are potential targets for
-    keyword expansion.
-    That is, files matched by [keyword] config patterns but not symlinks.
+    Crosscheck which files in working directory are potential targets
+    for keyword expansion. That is, files matched by [keyword] config
+    patterns but not symlinks.
     '''
     kwt = kwtools['templater']
     status = _status(ui, repo, kwt, opts.get('untracked'), *pats, **opts)
@@ -389,8 +391,8 @@
 def shrink(ui, repo, *pats, **opts):
     '''revert expanded keywords in working directory
 
-    Run before changing/disabling active keywords
-    or if you experience problems with "hg import" or "hg merge".
+    Run before changing/disabling active keywords or if you experience
+    problems with "hg import" or "hg merge".
 
     kwshrink refuses to run if given files contain local changes.
     '''
--- a/hgext/mq.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/mq.py	Wed Apr 08 23:24:22 2009 +0200
@@ -8,11 +8,11 @@
 '''patch management and development
 
 This extension lets you work with a stack of patches in a Mercurial
-repository.  It manages two stacks of patches - all known patches, and
+repository. It manages two stacks of patches - all known patches, and
 applied patches (subset of known patches).
 
 Known patches are represented as patch files in the .hg/patches
-directory.  Applied patches are both patch files and changesets.
+directory. Applied patches are both patch files and changesets.
 
 Common tasks (use "hg help command" for more details):
 
@@ -1624,14 +1624,16 @@
 def delete(ui, repo, *patches, **opts):
     """remove patches from queue
 
-    The patches must not be applied, unless they are arguments to
-    the --rev parameter. At least one patch or revision is required.
+    The patches must not be applied, unless they are arguments to the
+    --rev parameter. At least one patch or revision is required.
 
     With --rev, mq will stop managing the named revisions (converting
-    them to regular mercurial changesets). The qfinish command should be
-    used as an alternative for qdel -r, as the latter option is deprecated.
+    them to regular mercurial changesets). The qfinish command should
+    be used as an alternative for qdel -r, as the latter option is
+    deprecated.
 
-    With --keep, the patch files are preserved in the patch directory."""
+    With --keep, the patch files are preserved in the patch
+    directory."""
     q = repo.mq
     q.delete(repo, patches, opts)
     q.save_dirty()
@@ -1662,23 +1664,25 @@
 def qimport(ui, repo, *filename, **opts):
     """import a patch
 
-    The patch is inserted into the series after the last applied patch.
-    If no patches have been applied, qimport prepends the patch
+    The patch is inserted into the series after the last applied
+    patch. If no patches have been applied, qimport prepends the patch
     to the series.
 
     The patch will have the same name as its source file unless you
     give it a new one with --name.
 
-    You can register an existing patch inside the patch directory
-    with the --existing flag.
+    You can register an existing patch inside the patch directory with
+    the --existing flag.
 
-    With --force, an existing patch of the same name will be overwritten.
+    With --force, an existing patch of the same name will be
+    overwritten.
 
     An existing changeset may be placed under mq control with --rev
     (e.g. qimport --rev tip -n patch will place tip under mq control).
     With --git, patches imported with --rev will use the git diff
     format. See the diffs help topic for information on why this is
-    important for preserving rename/copy information and permission changes.
+    important for preserving rename/copy information and permission
+    changes.
     """
     q = repo.mq
     q.qimport(repo, filename, patchname=opts['name'],
@@ -1691,10 +1695,10 @@
     """init a new queue repository
 
     The queue repository is unversioned by default. If -c is
-    specified, qinit will create a separate nested repository
-    for patches (qinit -c may also be run later to convert
-    an unversioned patch repository into a versioned one).
-    You can use qcommit to commit changes to this queue repository."""
+    specified, qinit will create a separate nested repository for
+    patches (qinit -c may also be run later to convert an unversioned
+    patch repository into a versioned one). You can use qcommit to
+    commit changes to this queue repository."""
     q = repo.mq
     r = q.init(repo, create=opts['create_repo'])
     q.save_dirty()
@@ -1716,14 +1720,14 @@
 def clone(ui, source, dest=None, **opts):
     '''clone main and patch repository at same time
 
-    If source is local, destination will have no patches applied.  If
+    If source is local, destination will have no patches applied. If
     source is remote, this command can not check if patches are
     applied in source, so cannot guarantee that patches are not
-    applied in destination.  If you clone remote repository, be sure
+    applied in destination. If you clone remote repository, be sure
     before that it has no patches applied.
 
     Source patch repository is looked for in <src>/.hg/patches by
-    default.  Use -p <url> to change.
+    default. Use -p <url> to change.
 
     The patch directory must be a nested mercurial repository, as
     would be created by qinit -c.
@@ -1742,7 +1746,7 @@
     else:
         patchespath = patchdir(sr)
     try:
-        pr = hg.repository(ui, patchespath)
+        hg.repository(ui, patchespath)
     except error.RepoError:
         raise util.Abort(_('versioned patch repository not found'
                            ' (see qinit -c)'))
@@ -1761,22 +1765,23 @@
             qbase = sr.lookup('qbase')
         except error.RepoError:
             pass
-    ui.note(_('cloning main repo\n'))
+    ui.note(_('cloning main repository\n'))
     sr, dr = hg.clone(ui, sr.url(), dest,
                       pull=opts['pull'],
                       rev=destrev,
                       update=False,
                       stream=opts['uncompressed'])
-    ui.note(_('cloning patch repo\n'))
-    spr, dpr = hg.clone(ui, opts['patches'] or patchdir(sr), patchdir(dr),
-                        pull=opts['pull'], update=not opts['noupdate'],
-                        stream=opts['uncompressed'])
+    ui.note(_('cloning patch repository\n'))
+    hg.clone(ui, opts['patches'] or patchdir(sr), patchdir(dr),
+             pull=opts['pull'], update=not opts['noupdate'],
+             stream=opts['uncompressed'])
     if dr.local():
         if qbase:
-            ui.note(_('stripping applied patches from destination repo\n'))
+            ui.note(_('stripping applied patches from destination '
+                      'repository\n'))
             dr.mq.strip(dr, qbase, update=False, backup=None)
         if not opts['noupdate']:
-            ui.note(_('updating destination repo\n'))
+            ui.note(_('updating destination repository\n'))
             hg.update(dr, dr.changelog.tip())
 
 def commit(ui, repo, *pats, **opts):
@@ -1834,18 +1839,19 @@
 def new(ui, repo, patch, *args, **opts):
     """create a new patch
 
-    qnew creates a new patch on top of the currently-applied patch (if any).
-    It will refuse to run if there are any outstanding changes unless -f is
-    specified, in which case the patch will be initialized with them. You
-    may also use -I, -X, and/or a list of files after the patch name to add
-    only changes to matching files to the new patch, leaving the rest as
-    uncommitted modifications.
+    qnew creates a new patch on top of the currently-applied patch (if
+    any). It will refuse to run if there are any outstanding changes
+    unless -f is specified, in which case the patch will be
+    initialized with them. You may also use -I, -X, and/or a list of
+    files after the patch name to add only changes to matching files
+    to the new patch, leaving the rest as uncommitted modifications.
 
     -u and -d can be used to set the (given) user and date, respectively.
     -U and -D set user to current user and date to current date.
 
-    -e, -m or -l set the patch header as well as the commit message. If none
-    is specified, the header is empty and the commit message is '[mq]: PATCH'.
+    -e, -m or -l set the patch header as well as the commit message.
+    If none is specified, the header is empty and the commit message
+    is '[mq]: PATCH'.
 
     Use the --git option to keep the patch in the git extended diff
     format. Read the diffs help topic for more information on why this
@@ -1868,16 +1874,17 @@
 def refresh(ui, repo, *pats, **opts):
     """update the current patch
 
-    If any file patterns are provided, the refreshed patch will contain only
-    the modifications that match those patterns; the remaining modifications
-    will remain in the working directory.
+    If any file patterns are provided, the refreshed patch will
+    contain only the modifications that match those patterns; the
+    remaining modifications will remain in the working directory.
 
-    If --short is specified, files currently included in the patch will
-    be refreshed just like matched files and remain in the patch.
+    If --short is specified, files currently included in the patch
+    will be refreshed just like matched files and remain in the patch.
 
-    hg add/remove/copy/rename work as usual, though you might want to use
-    git-style patches (--git or [diff] git=1) to track copies and renames.
-    See the diffs help topic for more information on the git diff format.
+    hg add/remove/copy/rename work as usual, though you might want to
+    use git-style patches (--git or [diff] git=1) to track copies and
+    renames. See the diffs help topic for more information on the git
+    diff format.
     """
     q = repo.mq
     message = cmdutil.logmessage(opts)
@@ -1898,13 +1905,15 @@
 def diff(ui, repo, *pats, **opts):
     """diff of the current patch and subsequent modifications
 
-    Shows a diff which includes the current patch as well as any changes which
-    have been made in the working directory since the last refresh (thus
-    showing what the current patch would become after a qrefresh).
+    Shows a diff which includes the current patch as well as any
+    changes which have been made in the working directory since the
+    last refresh (thus showing what the current patch would become
+    after a qrefresh).
 
-    Use 'hg diff' if you only want to see the changes made since the last
-    qrefresh, or 'hg export qtip' if you want to see changes made by the
-    current patch without including changes made since the qrefresh.
+    Use 'hg diff' if you only want to see the changes made since the
+    last qrefresh, or 'hg export qtip' if you want to see changes made
+    by the current patch without including changes made since the
+    qrefresh.
     """
     repo.mq.diff(repo, pats, opts)
     return 0
@@ -1915,12 +1924,12 @@
     Patches must not yet be applied. Each patch will be successively
     applied to the current patch in the order given. If all the
     patches apply successfully, the current patch will be refreshed
-    with the new cumulative patch, and the folded patches will
-    be deleted. With -k/--keep, the folded patch files will not
-    be removed afterwards.
+    with the new cumulative patch, and the folded patches will be
+    deleted. With -k/--keep, the folded patch files will not be
+    removed afterwards.
 
-    The header for each folded patch will be concatenated with
-    the current patch header, separated by a line of '* * *'."""
+    The header for each folded patch will be concatenated with the
+    current patch header, separated by a line of '* * *'."""
 
     q = repo.mq
 
@@ -2069,7 +2078,8 @@
 def push(ui, repo, patch=None, **opts):
     """push the next patch onto the stack
 
-    When --force is applied, all local changes in patched files will be lost.
+    When --force is applied, all local changes in patched files will
+    be lost.
     """
     q = repo.mq
     mergeq = None
@@ -2091,8 +2101,9 @@
 def pop(ui, repo, patch=None, **opts):
     """pop the current patch off the stack
 
-    By default, pops off the top of the patch stack. If given a patch name,
-    keeps popping off patches until the named patch is at the top of the stack.
+    By default, pops off the top of the patch stack. If given a patch
+    name, keeps popping off patches until the named patch is at the
+    top of the stack.
     """
     localupdate = True
     if opts['name']:
@@ -2167,7 +2178,7 @@
     q.save_dirty()
 
 def restore(ui, repo, rev, **opts):
-    """restore the queue state saved by a rev"""
+    """restore the queue state saved by a revision"""
     rev = repo.lookup(rev)
     q = repo.mq
     q.restore(repo, rev, delete=opts['delete'],
@@ -2208,8 +2219,9 @@
 def strip(ui, repo, rev, **opts):
     """strip a revision and all its descendants from the repository
 
-    If one of the working dir's parent revisions is stripped, the working
-    directory will be updated to the parent of the stripped revision.
+    If one of the working directory's parent revisions is stripped, the
+    working directory will be updated to the parent of the stripped
+    revision.
     """
     backup = 'all'
     if opts['backup']:
@@ -2235,33 +2247,34 @@
     '''set or print guarded patches to push
 
     Use the qguard command to set or print guards on patch, then use
-    qselect to tell mq which guards to use. A patch will be pushed if it
-    has no guards or any positive guards match the currently selected guard,
-    but will not be pushed if any negative guards match the current guard.
-    For example:
+    qselect to tell mq which guards to use. A patch will be pushed if
+    it has no guards or any positive guards match the currently
+    selected guard, but will not be pushed if any negative guards
+    match the current guard. For example:
 
         qguard foo.patch -stable    (negative guard)
         qguard bar.patch +stable    (positive guard)
         qselect stable
 
     This activates the "stable" guard. mq will skip foo.patch (because
-    it has a negative match) but push bar.patch (because it
-    has a positive match).
+    it has a negative match) but push bar.patch (because it has a
+    positive match).
 
     With no arguments, prints the currently active guards.
     With one argument, sets the active guard.
 
     Use -n/--none to deactivate guards (no other arguments needed).
-    When no guards are active, patches with positive guards are skipped
-    and patches with negative guards are pushed.
+    When no guards are active, patches with positive guards are
+    skipped and patches with negative guards are pushed.
 
     qselect can change the guards on applied patches. It does not pop
-    guarded patches by default. Use --pop to pop back to the last applied
-    patch that is not guarded. Use --reapply (which implies --pop) to push
-    back to the current patch afterwards, but skip guarded patches.
+    guarded patches by default. Use --pop to pop back to the last
+    applied patch that is not guarded. Use --reapply (which implies
+    --pop) to push back to the current patch afterwards, but skip
+    guarded patches.
 
-    Use -s/--series to print a list of all guards in the series file (no
-    other arguments needed). Use -v for more information.'''
+    Use -s/--series to print a list of all guards in the series file
+    (no other arguments needed). Use -v for more information.'''
 
     q = repo.mq
     guards = q.active()
@@ -2336,16 +2349,18 @@
 def finish(ui, repo, *revrange, **opts):
     """move applied patches into repository history
 
-    Finishes the specified revisions (corresponding to applied patches) by
-    moving them out of mq control into regular repository history.
+    Finishes the specified revisions (corresponding to applied
+    patches) by moving them out of mq control into regular repository
+    history.
 
     Accepts a revision range or the --applied option. If --applied is
     specified, all applied mq revisions are removed from mq control.
     Otherwise, the given revisions must be at the base of the stack of
     applied patches.
 
-    This can be especially useful if your changes have been applied to an
-    upstream repository, or if you are about to push your changes to upstream.
+    This can be especially useful if your changes have been applied to
+    an upstream repository, or if you are about to push your changes
+    to upstream.
     """
     if not opts['applied'] and not revrange:
         raise util.Abort(_('no revisions specified'))
@@ -2466,7 +2481,7 @@
           ('U', 'noupdate', None, _('do not update the new working directories')),
           ('', 'uncompressed', None,
            _('use uncompressed transfer (fast over LAN)')),
-          ('p', 'patches', '', _('location of source patch repo')),
+          ('p', 'patches', '', _('location of source patch repository')),
          ] + commands.remoteopts,
          _('hg qclone [OPTION]... SOURCE [DEST]')),
     "qcommit|qci":
@@ -2500,7 +2515,7 @@
     'qheader': (header, [], _('hg qheader [PATCH]')),
     "^qimport":
         (qimport,
-         [('e', 'existing', None, _('import file in patch dir')),
+         [('e', 'existing', None, _('import file in patch directory')),
           ('n', 'name', '', _('patch file name')),
           ('f', 'force', None, _('overwrite existing files')),
           ('r', 'rev', [], _('place existing revisions under mq control')),
@@ -2553,7 +2568,7 @@
     "qrestore":
         (restore,
          [('d', 'delete', None, _('delete save entry')),
-          ('u', 'update', None, _('update queue working dir'))],
+          ('u', 'update', None, _('update queue working directory'))],
          _('hg qrestore [-d] [-u] REV')),
     "qsave":
         (save,
--- a/hgext/notify.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/notify.py	Wed Apr 08 23:24:22 2009 +0200
@@ -59,13 +59,12 @@
    # key is glob pattern, value is ","-separated list of subscriber emails
    pattern = user@host
 
- glob patterns are matched against path to repo root.
+ glob patterns are matched against path to repository root.
 
- if you like, you can put notify config file in repo that users can
- push changes to, they can manage their own subscriptions.'''
+ if you like, you can put notify config file in repository that users
+ can push changes to, they can manage their own subscriptions.'''
 
 from mercurial.i18n import _
-from mercurial.node import bin, short
 from mercurial import patch, cmdutil, templater, util, mail
 import email.Parser, fnmatch, socket, time
 
@@ -269,7 +268,7 @@
     ctx = repo[node]
 
     if not n.subs:
-        ui.debug(_('notify: no subscribers to repo %s\n') % n.root)
+        ui.debug(_('notify: no subscribers to repository %s\n') % n.root)
         return
     if n.skipsource(source):
         ui.debug(_('notify: changes have source "%s" - skipping\n') % source)
--- a/hgext/pager.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/pager.py	Wed Apr 08 23:24:22 2009 +0200
@@ -19,12 +19,11 @@
   [pager]
   pager = LESS='FSRX' less
 
-If no pager is set, the pager extensions uses the environment
-variable $PAGER. If neither pager.pager, nor $PAGER is set, no pager
-is used.
+If no pager is set, the pager extensions uses the environment variable
+$PAGER. If neither pager.pager, nor $PAGER is set, no pager is used.
 
-If you notice "BROKEN PIPE" error messages, you can disable them
-by setting:
+If you notice "BROKEN PIPE" error messages, you can disable them by
+setting:
 
   [pager]
   quiet = True
@@ -35,15 +34,16 @@
   [pager]
   ignore = version, help, update
 
-You can also enable the pager only for certain commands using pager.attend:
+You can also enable the pager only for certain commands using
+pager.attend:
 
   [pager]
   attend = log
 
 If pager.attend is present, pager.ignore will be ignored.
 
-To ignore global commands like "hg version" or "hg help", you have to specify
-them in the global .hgrc
+To ignore global commands like "hg version" or "hg help", you have to
+specify them in the global .hgrc
 '''
 
 import sys, os, signal
--- a/hgext/parentrevspec.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/parentrevspec.py	Wed Apr 08 23:24:22 2009 +0200
@@ -7,8 +7,8 @@
 '''\
 use suffixes to refer to ancestor revisions
 
-This extension allows you to use git-style suffixes to refer to
-the ancestors of a specific revision.
+This extension allows you to use git-style suffixes to refer to the
+ancestors of a specific revision.
 
 For example, if you can refer to a revision as "foo", then:
 
@@ -23,7 +23,6 @@
   foo~1 = foo^1 = foo^ = first parent of foo
   foo~2 = foo^1^1 = foo^^ = first parent of first parent of foo
 '''
-import mercurial.repo
 from mercurial import error
 
 def reposetup(ui, repo):
--- a/hgext/patchbomb.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/patchbomb.py	Wed Apr 08 23:24:22 2009 +0200
@@ -1,11 +1,11 @@
 '''sending Mercurial changesets as a series of patch emails
 
-The series is started off with a "[PATCH 0 of N]" introduction,
-which describes the series as a whole.
+The series is started off with a "[PATCH 0 of N]" introduction, which
+describes the series as a whole.
 
-Each patch email has a Subject line of "[PATCH M of N] ...", using
-the first line of the changeset description as the subject text.
-The message contains two or three body parts:
+Each patch email has a Subject line of "[PATCH M of N] ...", using the
+first line of the changeset description as the subject text. The
+message contains two or three body parts:
 
   The remainder of the changeset description.
 
@@ -14,18 +14,20 @@
   The patch itself, as generated by "hg export".
 
 Each message refers to all of its predecessors using the In-Reply-To
-and References headers, so they will show up as a sequence in
-threaded mail and news readers, and in mail archives.
+and References headers, so they will show up as a sequence in threaded
+mail and news readers, and in mail archives.
 
 For each changeset, you will be prompted with a diffstat summary and
-the changeset summary, so you can be sure you are sending the right changes.
+the changeset summary, so you can be sure you are sending the right
+changes.
 
 To enable this extension:
 
   [extensions]
   hgext.patchbomb =
 
-To configure other defaults, add a section like this to your hgrc file:
+To configure other defaults, add a section like this to your hgrc
+file:
 
   [email]
   from = My Name <my@email>
@@ -37,24 +39,24 @@
 as a patchbomb.
 
 To avoid sending patches prematurely, it is a good idea to first run
-the "email" command with the "-n" option (test only).  You will be
+the "email" command with the "-n" option (test only). You will be
 prompted for an email recipient address, a subject an an introductory
-message describing the patches of your patchbomb.  Then when all is
+message describing the patches of your patchbomb. Then when all is
 done, patchbomb messages are displayed. If PAGER environment variable
-is set, your pager will be fired up once for each patchbomb message, so
-you can verify everything is alright.
+is set, your pager will be fired up once for each patchbomb message,
+so you can verify everything is alright.
 
-The "-m" (mbox) option is also very useful.  Instead of previewing
-each patchbomb message in a pager or sending the messages directly,
-it will create a UNIX mailbox file with the patch emails.  This
-mailbox file can be previewed with any mail user agent which supports
-UNIX mbox files, e.g. with mutt:
+The "-m" (mbox) option is also very useful. Instead of previewing each
+patchbomb message in a pager or sending the messages directly, it will
+create a UNIX mailbox file with the patch emails. This mailbox file
+can be previewed with any mail user agent which supports UNIX mbox
+files, e.g. with mutt:
 
   % mutt -R -f mbox
 
 When you are previewing the patchbomb messages, you can use `formail'
-(a utility that is commonly installed as part of the procmail package),
-to send each message out:
+(a utility that is commonly installed as part of the procmail
+package), to send each message out:
 
   % formail -s sendmail -bm -t < mbox
 
@@ -62,9 +64,9 @@
 
 You can also either configure the method option in the email section
 to be a sendmail compatable mailer or fill out the [smtp] section so
-that the patchbomb extension can automatically send patchbombs directly
-from the commandline. See the [email] and [smtp] sections in hgrc(5)
-for details.'''
+that the patchbomb extension can automatically send patchbombs
+directly from the commandline. See the [email] and [smtp] sections in
+hgrc(5) for details.'''
 
 import os, errno, socket, tempfile, cStringIO
 import email.MIMEMultipart, email.MIMEBase
@@ -173,23 +175,23 @@
     '''send changesets by email
 
     By default, diffs are sent in the format generated by hg export,
-    one per message.  The series starts with a "[PATCH 0 of N]"
+    one per message. The series starts with a "[PATCH 0 of N]"
     introduction, which describes the series as a whole.
 
     Each patch email has a Subject line of "[PATCH M of N] ...", using
     the first line of the changeset description as the subject text.
-    The message contains two or three body parts.  First, the rest of
-    the changeset description.  Next, (optionally) if the diffstat
+    The message contains two or three body parts. First, the rest of
+    the changeset description. Next, (optionally) if the diffstat
     program is installed, the result of running diffstat on the patch.
     Finally, the patch itself, as generated by "hg export".
 
-    With --outgoing, emails will be generated for patches not
-    found in the destination repository (or only those which are
-    ancestors of the specified revisions if any are provided)
+    With --outgoing, emails will be generated for patches not found in
+    the destination repository (or only those which are ancestors of
+    the specified revisions if any are provided)
 
-    With --bundle, changesets are selected as for --outgoing,
-    but a single email containing a binary Mercurial bundle as an
-    attachment will be sent.
+    With --bundle, changesets are selected as for --outgoing, but a
+    single email containing a binary Mercurial bundle as an attachment
+    will be sent.
 
     Examples:
 
@@ -208,8 +210,8 @@
     hg email -b -r 3000       # bundle of all ancestors of 3000 not in default
     hg email -b -r 3000 DEST  # bundle of all ancestors of 3000 not in DEST
 
-    Before using this command, you will need to enable email in your hgrc.
-    See the [email] section in hgrc(5) for details.
+    Before using this command, you will need to enable email in your
+    hgrc. See the [email] section in hgrc(5) for details.
     '''
 
     _charsets = mail._charsets(ui)
@@ -230,8 +232,8 @@
     def getpatches(revs):
         for r in cmdutil.revrange(repo, revs):
             output = cStringIO.StringIO()
-            p = patch.export(repo, [r], fp=output,
-                             opts=patch.diffopts(ui, opts))
+            patch.export(repo, [r], fp=output,
+                         opts=patch.diffopts(ui, opts))
             yield output.getvalue().split('\n')
 
     def getbundle(dest):
@@ -344,8 +346,9 @@
             msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
         datapart = email.MIMEBase.MIMEBase('application', 'x-mercurial-bundle')
         datapart.set_payload(bundle)
+        bundlename = '%s.hg' % opts.get('bundlename', 'bundle')
         datapart.add_header('Content-Disposition', 'attachment',
-                            filename='bundle.hg')
+                            filename=bundlename)
         email.Encoders.encode_base64(datapart)
         msg.attach(datapart)
         msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
@@ -381,7 +384,7 @@
 
     ui.write('\n')
 
-    parent = None
+    parent = opts.get('in_reply_to') or None
 
     sender_addr = email.Utils.parseaddr(sender)[1]
     sender = mail.addressencode(ui, sender, _charsets, opts.get('test'))
@@ -455,6 +458,8 @@
            _('write messages to mbox file instead of sending them')),
           ('s', 'subject', '',
            _('subject of first message (intro or single patch)')),
+          ('', 'in-reply-to', '',
+           _('"message identifier to reply to"')),
           ('t', 'to', [], _('email addresses of recipients')),
          ]
 
@@ -468,6 +473,8 @@
            _('send changes not found in the target repository')),
           ('b', 'bundle', None,
            _('send changes not in target as a binary bundle')),
+          ('', 'bundlename', 'bundle',
+           _('file name of the bundle attachment')),
           ('r', 'rev', [], _('a revision to send')),
           ('', 'force', None,
            _('run even when remote repository is unrelated (with -b)')),
--- a/hgext/purge.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/purge.py	Wed Apr 08 23:24:22 2009 +0200
@@ -34,13 +34,13 @@
 def purge(ui, repo, *dirs, **opts):
     '''removes files not tracked by Mercurial
 
-    Delete files not known to Mercurial. This is useful to test local and
-    uncommitted changes in an otherwise-clean source tree.
+    Delete files not known to Mercurial. This is useful to test local
+    and uncommitted changes in an otherwise-clean source tree.
 
     This means that purge will delete:
      - Unknown files: files marked with "?" by "hg status"
-     - Empty directories: in fact Mercurial ignores directories unless they
-       contain files under source control managment
+     - Empty directories: in fact Mercurial ignores directories unless
+       they contain files under source control managment
     But it will leave untouched:
      - Modified and unmodified tracked files
      - Ignored files (unless --all is specified)
@@ -49,9 +49,10 @@
     If directories are given on the command line, only files in these
     directories are considered.
 
-    Be careful with purge, as you could irreversibly delete some files you
-    forgot to add to the repository. If you only want to print the list of
-    files that this program would delete, use the --print option.
+    Be careful with purge, as you could irreversibly delete some files
+    you forgot to add to the repository. If you only want to print the
+    list of files that this program would delete, use the --print
+    option.
     '''
     act = not opts['print']
     eol = '\n'
--- a/hgext/rebase.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/rebase.py	Wed Apr 08 23:24:22 2009 +0200
@@ -7,14 +7,15 @@
 
 '''move sets of revisions to a different ancestor
 
-This extension lets you rebase changesets in an existing Mercurial repository.
+This extension lets you rebase changesets in an existing Mercurial
+repository.
 
 For more information:
 http://www.selenic.com/mercurial/wiki/index.cgi/RebaseProject
 '''
 
 from mercurial import util, repair, merge, cmdutil, commands, error
-from mercurial import extensions, ancestor
+from mercurial import extensions, ancestor, copies, patch
 from mercurial.commands import templateopts
 from mercurial.node import nullrev
 from mercurial.i18n import _
@@ -26,7 +27,6 @@
 
     def newancestor(a, b, pfunc):
         ancestor.ancestor = oldancestor
-        anc = ancestor.ancestor(a, b, pfunc)
         if b == rev:
             return repo[rev].parents()[0].rev()
         return ancestor.ancestor(a, b, pfunc)
@@ -41,12 +41,12 @@
 def rebase(ui, repo, **opts):
     """move changeset (and descendants) to a different branch
 
-    Rebase uses repeated merging to graft changesets from one part of history
-    onto another. This can be useful for linearizing local changes relative to
-    a master development tree.
+    Rebase uses repeated merging to graft changesets from one part of
+    history onto another. This can be useful for linearizing local
+    changes relative to a master development tree.
 
-    If a rebase is interrupted to manually resolve a merge, it can be continued
-    with --continue or aborted with --abort.
+    If a rebase is interrupted to manually resolve a merge, it can be
+    continued with --continue or aborted with --abort.
     """
     originalwd = target = None
     external = nullrev
@@ -65,12 +65,8 @@
         abortf = opts.get('abort')
         collapsef = opts.get('collapse', False)
         extrafn = opts.get('extrafn')
-        if opts.get('keepbranches', None):
-            if extrafn:
-                raise error.ParseError(
-                    'rebase', _('cannot use both keepbranches and extrafn'))
-            def extrafn(ctx, extra):
-                extra['branch'] = ctx.branch()
+        keepf = opts.get('keep', False)
+        keepbranchesf = opts.get('keepbranches', False)
 
         if contf or abortf:
             if contf and abortf:
@@ -84,7 +80,8 @@
                 raise error.ParseError('rebase',
                     _('abort and continue do not allow specifying revisions'))
 
-            originalwd, target, state, collapsef, external = restorestatus(repo)
+            (originalwd, target, state, collapsef, keepf,
+                                keepbranchesf, external) = restorestatus(repo)
             if abortf:
                 abort(repo, originalwd, target, state)
                 return
@@ -100,14 +97,21 @@
                 repo.ui.status(_('nothing to rebase\n'))
                 return
 
+        if keepbranchesf:
+            if extrafn:
+                raise error.ParseError(
+                    'rebase', _('cannot use both keepbranches and extrafn'))
+            def extrafn(ctx, extra):
+                extra['branch'] = ctx.branch()
+
         # Rebase
         targetancestors = list(repo.changelog.ancestors(target))
         targetancestors.append(target)
 
         for rev in util.sort(state):
             if state[rev] == -1:
-                storestatus(repo, originalwd, target, state, collapsef,
-                                                                external)
+                storestatus(repo, originalwd, target, state, collapsef, keepf,
+                                                    keepbranchesf, external)
                 rebasenode(repo, rev, target, state, skipped, targetancestors,
                                                        collapsef, extrafn)
         ui.note(_('rebase merging completed\n'))
@@ -121,7 +125,7 @@
         if 'qtip' in repo.tags():
             updatemq(repo, state, skipped, **opts)
 
-        if not opts.get('keep'):
+        if not keepf:
             # Remove no more useful revisions
             if (util.set(repo.changelog.descendants(min(state)))
                                                     - util.set(state.keys())):
@@ -207,7 +211,18 @@
     else: # we have an interrupted rebase
         repo.ui.debug(_('resuming interrupted rebase\n'))
 
-
+    # Keep track of renamed files in the revision that is going to be rebased
+    # Here we simulate the copies and renames in the source changeset
+    cop, diver = copies.copies(repo, repo[rev], repo[target], repo[p2], True)
+    m1 = repo[rev].manifest()
+    m2 = repo[target].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:
+                    repo.dirstate.remove(v)
+                
     newrev = concludenode(repo, rev, p1, p2, state, collapse,
                           extrafn=extrafn)
 
@@ -250,6 +265,14 @@
             p2 = P2n
     return p1, p2
 
+def isagitpatch(repo, patchname):
+    'Return true if the given patch is in git format'
+    mqpatch = os.path.join(repo.mq.path, patchname)
+    for line in patch.linereader(file(mqpatch, 'rb')):
+        if line.startswith('diff --git'):
+            return True
+    return False
+
 def updatemq(repo, state, skipped, **opts):
     'Update rebased mq patches - finalize and then import them'
     mqrebase = {}
@@ -257,7 +280,7 @@
         if repo[p.rev].rev() in state:
             repo.ui.debug(_('revision %d is an mq patch (%s), finalize it.\n') %
                                         (repo[p.rev].rev(), p.name))
-            mqrebase[repo[p.rev].rev()] = p.name
+            mqrebase[repo[p.rev].rev()] = (p.name, isagitpatch(repo, p.name))
 
     if mqrebase:
         repo.mq.finish(repo, mqrebase.keys())
@@ -269,18 +292,21 @@
         for rev in mq:
             if rev not in skipped:
                 repo.ui.debug(_('import mq patch %d (%s)\n')
-                              % (state[rev], mqrebase[rev]))
-                repo.mq.qimport(repo, (), patchname=mqrebase[rev],
-                            git=opts.get('git', False),rev=[str(state[rev])])
+                              % (state[rev], mqrebase[rev][0]))
+                repo.mq.qimport(repo, (), patchname=mqrebase[rev][0],
+                            git=mqrebase[rev][1],rev=[str(state[rev])])
         repo.mq.save_dirty()
 
-def storestatus(repo, originalwd, target, state, collapse, external):
+def storestatus(repo, originalwd, target, state, collapse, keep, keepbranches,
+                                                                external):
     'Store the current status to allow recovery'
     f = repo.opener("rebasestate", "w")
     f.write(repo[originalwd].hex() + '\n')
     f.write(repo[target].hex() + '\n')
     f.write(repo[external].hex() + '\n')
     f.write('%d\n' % int(collapse))
+    f.write('%d\n' % int(keep))
+    f.write('%d\n' % int(keepbranches))
     for d, v in state.iteritems():
         oldrev = repo[d].hex()
         newrev = repo[v].hex()
@@ -310,11 +336,15 @@
                 external = repo[l].rev()
             elif i == 3:
                 collapse = bool(int(l))
+            elif i == 4:
+                keep = bool(int(l))
+            elif i == 5:
+                keepbranches = bool(int(l))
             else:
                 oldrev, newrev = l.split(':')
                 state[repo[oldrev].rev()] = repo[newrev].rev()
         repo.ui.debug(_('rebase status resumed\n'))
-        return originalwd, target, state, collapse, external
+        return originalwd, target, state, collapse, keep, keepbranches, external
     except IOError, err:
         if err.errno != errno.ENOENT:
             raise
@@ -337,11 +367,10 @@
 
 def buildstate(repo, dest, src, base, collapse):
     'Define which revisions are going to be rebased and where'
-    state = {}
     targetancestors = util.set()
 
     if not dest:
-         # Destination defaults to the latest revision in the current branch
+        # Destination defaults to the latest revision in the current branch
         branch = repo[None].branch()
         dest = repo[branch].rev()
     else:
@@ -429,15 +458,15 @@
 "rebase":
         (rebase,
         [
-        ('', 'keep', False, _('keep original revisions')),
-        ('', 'keepbranches', False, _('keep original branches')),
         ('s', 'source', '', _('rebase from a given revision')),
         ('b', 'base', '', _('rebase from the base of a given revision')),
         ('d', 'dest', '', _('rebase onto a given revision')),
         ('', 'collapse', False, _('collapse the rebased revisions')),
+        ('', 'keep', False, _('keep original revisions')),
+        ('', 'keepbranches', False, _('keep original branches')),
         ('c', 'continue', False, _('continue an interrupted rebase')),
         ('a', 'abort', False, _('abort an interrupted rebase')),] +
          templateopts,
-        _('hg rebase [-s rev | -b rev] [-d rev] [--collapse] | [-c] | [-a] | '
-                                                                '[--keep]')),
+        _('hg rebase [-s REV | -b REV] [-d REV] [--collapse] [--keep] '
+                            '[--keepbranches] | [-c] | [-a]')),
 }
--- a/hgext/record.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/record.py	Wed Apr 08 23:24:22 2009 +0200
@@ -302,6 +302,7 @@
             elif r == _('q'):
                 raise util.Abort(_('user quit'))
             return r
+    pos, total = 0, len(chunks) - 1
     while chunks:
         chunk = chunks.pop()
         if isinstance(chunk, header):
@@ -327,8 +328,10 @@
             # new hunk
             if resp_file[0] is None and resp_all[0] is None:
                 chunk.pretty(ui)
-            r = prompt(_('record this change to %r?') %
-                       chunk.filename())
+            r = total == 1 and prompt(_('record this change to %r?') %
+                                      chunk.filename()) \
+                           or  prompt(_('record change %d/%d to %r?') %
+                                      (pos, total, chunk.filename()))
             if r == _('y'):
                 if fixoffset:
                     chunk = copy.copy(chunk)
@@ -336,6 +339,7 @@
                 applied[chunk.filename()].append(chunk)
             else:
                 fixoffset += chunk.removed - chunk.added
+        pos = pos + 1
     return reduce(operator.add, [h for h in applied.itervalues()
                                  if h[0].special() or len(h) > 1], [])
 
@@ -349,7 +353,7 @@
 
     You will be prompted for whether to record changes to each
     modified file, and for files with multiple changes, for each
-    change to use.  For each query, the following responses are
+    change to use. For each query, the following responses are
     possible:
 
     y - record this change
--- a/hgext/transplant.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/transplant.py	Wed Apr 08 23:24:22 2009 +0200
@@ -9,8 +9,8 @@
 
 This extension allows you to transplant patches from another branch.
 
-Transplanted patches are recorded in .hg/transplant/transplants, as a map
-from a changeset hash to its hash in the source repository.
+Transplanted patches are recorded in .hg/transplant/transplants, as a
+map from a changeset hash to its hash in the source repository.
 '''
 
 from mercurial.i18n import _
@@ -216,8 +216,8 @@
             try:
                 files = {}
                 try:
-                    fuzz = patch.patch(patchfile, self.ui, cwd=repo.root,
-                                       files=files)
+                    patch.patch(patchfile, self.ui, cwd=repo.root,
+                                files=files)
                     if not files:
                         self.ui.warn(_('%s: empty changeset')
                                      % revlog.hex(node))
@@ -439,8 +439,8 @@
     (transplanted from CHANGESETHASH)
 
     You can rewrite the changelog message with the --filter option.
-    Its argument will be invoked with the current changelog message
-    as $1 and the patch as $2.
+    Its argument will be invoked with the current changelog message as
+    $1 and the patch as $2.
 
     If --source is specified, selects changesets from the named
     repository. If --branch is specified, selects changesets from the
@@ -448,19 +448,21 @@
     is specified, all changesets on the branch will be transplanted,
     otherwise you will be prompted to select the changesets you want.
 
-    hg transplant --branch REVISION --all will rebase the selected branch
-    (up to the named revision) onto your current working directory.
+    hg transplant --branch REVISION --all will rebase the selected
+    branch (up to the named revision) onto your current working
+    directory.
 
-    You can optionally mark selected transplanted changesets as
-    merge changesets. You will not be prompted to transplant any
-    ancestors of a merged transplant, and you can merge descendants
-    of them normally instead of transplanting them.
+    You can optionally mark selected transplanted changesets as merge
+    changesets. You will not be prompted to transplant any ancestors
+    of a merged transplant, and you can merge descendants of them
+    normally instead of transplanting them.
 
     If no merges or revisions are provided, hg transplant will start
     an interactive changeset browser.
 
-    If a changeset application fails, you can fix the merge by hand and
-    then resume where you left off by calling hg transplant --continue.
+    If a changeset application fails, you can fix the merge by hand
+    and then resume where you left off by calling hg transplant
+    --continue.
     '''
     def getremotechanges(repo, url):
         sourcerepo = ui.expandpath(url)
--- a/hgext/win32mbcs.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/win32mbcs.py	Wed Apr 08 23:24:22 2009 +0200
@@ -10,18 +10,18 @@
 #
 """allow to use MBCS path with problematic encoding.
 
-Some MBCS encodings are not good for some path operations
-(i.e. splitting path, case conversion, etc.) with its encoded bytes.
-We call such a encoding (i.e. shift_jis and big5) as "problematic
-encoding".  This extension can be used to fix the issue with those
-encodings by wrapping some functions to convert to unicode string
-before path operation.
+Some MBCS encodings are not good for some path operations (i.e.
+splitting path, case conversion, etc.) with its encoded bytes. We call
+such a encoding (i.e. shift_jis and big5) as "problematic encoding".
+This extension can be used to fix the issue with those encodings by
+wrapping some functions to convert to unicode string before path
+operation.
 
 This extension is usefull for:
  * Japanese Windows users using shift_jis encoding.
  * Chinese Windows users using big5 encoding.
- * All users who use a repository with one of problematic encodings
-   on case-insensitive file system.
+ * All users who use a repository with one of problematic encodings on
+   case-insensitive file system.
 
 This extension is not needed for:
  * Any user who use only ascii chars in path.
@@ -29,71 +29,73 @@
 
 Note that there are some limitations on using this extension:
  * You should use single encoding in one repository.
- * You should set same encoding for the repository by locale or HGENCODING.
+ * You should set same encoding for the repository by locale or
+   HGENCODING.
 
 To use this extension, enable the extension in .hg/hgrc or ~/.hgrc:
 
   [extensions]
   hgext.win32mbcs =
 
-Path encoding conversion are done between unicode and util._encoding
-which is decided by mercurial from current locale setting or HGENCODING.
+Path encoding conversion are done between unicode and
+encoding.encoding which is decided by mercurial from current locale
+setting or HGENCODING.
 
 """
 
 import os
 from mercurial.i18n import _
-from mercurial import util
+from mercurial import util, encoding
 
 def decode(arg):
-   if isinstance(arg, str):
-       uarg = arg.decode(util._encoding)
-       if arg == uarg.encode(util._encoding):
-           return uarg
-       raise UnicodeError("Not local encoding")
-   elif isinstance(arg, tuple):
-       return tuple(map(decode, arg))
-   elif isinstance(arg, list):
-       return map(decode, arg)
-   return arg
+    if isinstance(arg, str):
+        uarg = arg.decode(encoding.encoding)
+        if arg == uarg.encode(encoding.encoding):
+            return uarg
+        raise UnicodeError("Not local encoding")
+    elif isinstance(arg, tuple):
+        return tuple(map(decode, arg))
+    elif isinstance(arg, list):
+        return map(decode, arg)
+    return arg
 
 def encode(arg):
-   if isinstance(arg, unicode):
-       return arg.encode(util._encoding)
-   elif isinstance(arg, tuple):
-       return tuple(map(encode, arg))
-   elif isinstance(arg, list):
-       return map(encode, arg)
-   return arg
+    if isinstance(arg, unicode):
+        return arg.encode(encoding.encoding)
+    elif isinstance(arg, tuple):
+        return tuple(map(encode, arg))
+    elif isinstance(arg, list):
+        return map(encode, arg)
+    return arg
 
 def wrapper(func, args):
-   # check argument is unicode, then call original
-   for arg in args:
-       if isinstance(arg, unicode):
-           return func(*args)
+    # check argument is unicode, then call original
+    for arg in args:
+        if isinstance(arg, unicode):
+            return func(*args)
 
-   try:
-       # convert arguments to unicode, call func, then convert back
-       return encode(func(*decode(args)))
-   except UnicodeError:
-       # If not encoded with util._encoding, report it then
-       # continue with calling original function.
-      raise util.Abort(_("[win32mbcs] filename conversion fail with"
-                         " %s encoding\n") % (util._encoding))
+    try:
+        # convert arguments to unicode, call func, then convert back
+        return encode(func(*decode(args)))
+    except UnicodeError:
+        # If not encoded with encoding.encoding, report it then
+        # continue with calling original function.
+        raise util.Abort(_("[win32mbcs] filename conversion fail with"
+                         " %s encoding\n") % (encoding.encoding))
 
 def wrapname(name):
-   idx = name.rfind('.')
-   module = name[:idx]
-   name = name[idx+1:]
-   module = eval(module)
-   func = getattr(module, name)
-   def f(*args):
-       return wrapper(func, args)
-   try:
-      f.__name__ = func.__name__                # fail with python23
-   except Exception:
-      pass
-   setattr(module, name, f)
+    idx = name.rfind('.')
+    module = name[:idx]
+    name = name[idx+1:]
+    module = eval(module)
+    func = getattr(module, name)
+    def f(*args):
+        return wrapper(func, args)
+    try:
+        f.__name__ = func.__name__                # fail with python23
+    except Exception:
+        pass
+    setattr(module, name, f)
 
 # List of functions to be wrapped.
 # NOTE: os.path.dirname() and os.path.basename() are safe because
@@ -109,14 +111,15 @@
  shift_jisx0213 shiftjisx0213 sjisx0213 s_jisx0213'''
 
 def reposetup(ui, repo):
-   # TODO: decide use of config section for this extension
-   if not os.path.supports_unicode_filenames:
-       ui.warn(_("[win32mbcs] cannot activate on this platform.\n"))
-       return
+    # TODO: decide use of config section for this extension
+    if not os.path.supports_unicode_filenames:
+        ui.warn(_("[win32mbcs] cannot activate on this platform.\n"))
+        return
 
-   # fake is only for relevant environment.
-   if util._encoding.lower() in problematic_encodings.split():
-       for f in funcs.split():
-           wrapname(f)
-       ui.debug(_("[win32mbcs] activated with encoding: %s\n") % util._encoding)
+    # fake is only for relevant environment.
+    if encoding.encoding.lower() in problematic_encodings.split():
+        for f in funcs.split():
+            wrapname(f)
+        ui.debug(_("[win32mbcs] activated with encoding: %s\n")
+                 % encoding.encoding)
 
--- a/hgext/win32text.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/win32text.py	Wed Apr 08 23:24:22 2009 +0200
@@ -14,21 +14,22 @@
 # ** = cleverdecode:
 # # or ** = macdecode:
 #
-# If not doing conversion, to make sure you do not commit CRLF/CR by accident:
+# If not doing conversion, to make sure you do not commit CRLF/CR by
+# accident:
 #
 # [hooks]
 # pretxncommit.crlf = python:hgext.win32text.forbidcrlf
 # # or pretxncommit.cr = python:hgext.win32text.forbidcr
 #
-# To do the same check on a server to prevent CRLF/CR from being pushed or
-# pulled:
+# To do the same check on a server to prevent CRLF/CR from being
+# pushed or pulled:
 #
 # [hooks]
 # pretxnchangegroup.crlf = python:hgext.win32text.forbidcrlf
 # # or pretxnchangegroup.cr = python:hgext.win32text.forbidcr
 
 from mercurial.i18n import _
-from mercurial.node import bin, short
+from mercurial.node import short
 from mercurial import util
 import re
 
--- a/hgext/zeroconf/Zeroconf.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/zeroconf/Zeroconf.py	Wed Apr 08 23:24:22 2009 +0200
@@ -19,7 +19,7 @@
     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
-	
+
 """
 
 """0.12 update - allow selection of binding interface
@@ -101,7 +101,7 @@
 _BROWSER_TIME = 500
 
 # Some DNS constants
-	
+
 _MDNS_ADDR = '224.0.0.251'
 _MDNS_PORT = 5353;
 _DNS_PORT = 53;
@@ -208,7 +208,7 @@
 
 class DNSEntry(object):
 	"""A DNS entry"""
-	
+
 	def __init__(self, name, type, clazz):
 		self.key = string.lower(name)
 		self.name = name
@@ -256,7 +256,7 @@
 
 class DNSQuestion(DNSEntry):
 	"""A DNS question entry"""
-	
+
 	def __init__(self, name, type, clazz):
 		if not name.endswith(".local."):
 			raise NonLocalNameException
@@ -273,7 +273,7 @@
 
 class DNSRecord(DNSEntry):
 	"""A DNS record - like a DNS entry, but has a TTL"""
-	
+
 	def __init__(self, name, type, clazz, ttl):
 		DNSEntry.__init__(self, name, type, clazz)
 		self.ttl = ttl
@@ -334,7 +334,7 @@
 
 class DNSAddress(DNSRecord):
 	"""A DNS address record"""
-	
+
 	def __init__(self, name, type, clazz, ttl, address):
 		DNSRecord.__init__(self, name, type, clazz, ttl)
 		self.address = address
@@ -378,10 +378,10 @@
 	def __repr__(self):
 		"""String representation"""
 		return self.cpu + " " + self.os
-	
+
 class DNSPointer(DNSRecord):
 	"""A DNS pointer record"""
-	
+
 	def __init__(self, name, type, clazz, ttl, alias):
 		DNSRecord.__init__(self, name, type, clazz, ttl)
 		self.alias = alias
@@ -402,7 +402,7 @@
 
 class DNSText(DNSRecord):
 	"""A DNS text record"""
-	
+
 	def __init__(self, name, type, clazz, ttl, text):
 		DNSRecord.__init__(self, name, type, clazz, ttl)
 		self.text = text
@@ -426,7 +426,7 @@
 
 class DNSService(DNSRecord):
 	"""A DNS service record"""
-	
+
 	def __init__(self, name, type, clazz, ttl, priority, weight, port, server):
 		DNSRecord.__init__(self, name, type, clazz, ttl)
 		self.priority = priority
@@ -453,7 +453,7 @@
 
 class DNSIncoming(object):
 	"""Object representation of an incoming DNS packet"""
-	
+
 	def __init__(self, data):
 		"""Constructor from string holding bytes of packet"""
 		self.offset = 0
@@ -464,7 +464,7 @@
 		self.numAnswers = 0
 		self.numAuthorities = 0
 		self.numAdditionals = 0
-		
+
 		self.readHeader()
 		self.readQuestions()
 		self.readOthers()
@@ -491,7 +491,7 @@
 			name = self.readName()
 			info = struct.unpack(format, self.data[self.offset:self.offset+length])
 			self.offset += length
-			
+
 			question = DNSQuestion(name, info[0], info[1])
 			self.questions.append(question)
 
@@ -561,7 +561,7 @@
 
 			if rec is not None:
 				self.answers.append(rec)
-				
+
 	def isQuery(self):
 		"""Returns true if this is a query"""
 		return (self.flags & _FLAGS_QR_MASK) == _FLAGS_QR_QUERY
@@ -574,7 +574,7 @@
 		"""Reads a UTF-8 string of a given length from the packet"""
 		result = self.data[offset:offset+len].decode('utf-8')
 		return result
-		
+
 	def readName(self):
 		"""Reads a domain name from the packet"""
 		result = ''
@@ -607,11 +607,11 @@
 			self.offset = off
 
 		return result
-	
-		
+
+
 class DNSOutgoing(object):
 	"""Object representation of an outgoing packet"""
-	
+
 	def __init__(self, flags, multicast = 1):
 		self.finished = 0
 		self.id = 0
@@ -620,7 +620,7 @@
 		self.names = {}
 		self.data = []
 		self.size = 12
-		
+
 		self.questions = []
 		self.answers = []
 		self.authorities = []
@@ -660,7 +660,7 @@
 		format = '!H'
 		self.data.insert(index, struct.pack(format, value))
 		self.size += 2
-		
+
 	def writeShort(self, value):
 		"""Writes an unsigned short to the packet"""
 		format = '!H'
@@ -739,7 +739,7 @@
 		self.size += 2
 		record.write(self)
 		self.size -= 2
-		
+
 		length = len(''.join(self.data[index:]))
 		self.insertShort(index, length) # Here is the short we adjusted for
 
@@ -758,7 +758,7 @@
 				self.writeRecord(authority, 0)
 			for additional in self.additionals:
 				self.writeRecord(additional, 0)
-		
+
 			self.insertShort(0, len(self.additionals))
 			self.insertShort(0, len(self.authorities))
 			self.insertShort(0, len(self.answers))
@@ -773,7 +773,7 @@
 
 class DNSCache(object):
 	"""A cache of DNS entries"""
-	
+
 	def __init__(self):
 		self.cache = {}
 
@@ -866,12 +866,11 @@
 					pass
 
 	def getReaders(self):
-		result = []
 		self.condition.acquire()
 		result = self.readers.keys()
 		self.condition.release()
 		return result
-	
+
 	def addReader(self, reader, socket):
 		self.condition.acquire()
 		self.readers[socket] = reader
@@ -896,7 +895,7 @@
 
 	It requires registration with an Engine object in order to have
 	the read() method called when a socket is availble for reading."""
-	
+
 	def __init__(self, zeroconf):
 		self.zeroconf = zeroconf
 		self.zeroconf.engine.addReader(self, self.zeroconf.socket)
@@ -923,7 +922,7 @@
 class Reaper(threading.Thread):
 	"""A Reaper is used by this module to remove cache entries that
 	have expired."""
-	
+
 	def __init__(self, zeroconf):
 		threading.Thread.__init__(self)
 		self.zeroconf = zeroconf
@@ -947,7 +946,7 @@
 	The listener object will have its addService() and
 	removeService() methods called when this browser
 	discovers changes in the services availability."""
-	
+
 	def __init__(self, zeroconf, type, listener):
 		"""Creates a browser for a specific type"""
 		threading.Thread.__init__(self)
@@ -958,7 +957,7 @@
 		self.nextTime = currentTimeMillis()
 		self.delay = _BROWSER_TIME
 		self.list = []
-		
+
 		self.done = 0
 
 		self.zeroconf.addListener(self, DNSQuestion(self.type, _TYPE_PTR, _CLASS_IN))
@@ -1018,11 +1017,11 @@
 
 			if event is not None:
 				event(self.zeroconf)
-				
+
 
 class ServiceInfo(object):
 	"""Service information"""
-	
+
 	def __init__(self, type, name, address=None, port=None, weight=0, priority=0, properties=None, server=None):
 		"""Create a service description.
 
@@ -1088,7 +1087,7 @@
 				index += 1
 				strs.append(text[index:index+length])
 				index += length
-			
+
 			for s in strs:
 				eindex = s.find('=')
 				if eindex == -1:
@@ -1111,7 +1110,7 @@
 		except:
 			traceback.print_exc()
 			self.properties = None
-			
+
 	def getType(self):
 		"""Type accessor"""
 		return self.type
@@ -1201,7 +1200,7 @@
 			result = 1
 		finally:
 			zeroconf.removeListener(self)
-			
+
 		return result
 
 	def __eq__(self, other):
@@ -1226,7 +1225,7 @@
 				result += self.text[:17] + "..."
 		result += "]"
 		return result
-				
+
 
 class Zeroconf(object):
 	"""Implementation of Zeroconf Multicast DNS Service Discovery
@@ -1266,7 +1265,7 @@
 			# the SO_REUSE* options have been set, so ignore it
 			#
 			pass
-		#self.socket.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_IF, socket.inet_aton(self.intf) + socket.inet_aton('0.0.0.0')) 
+		#self.socket.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_IF, socket.inet_aton(self.intf) + socket.inet_aton('0.0.0.0'))
 		self.socket.setsockopt(socket.SOL_IP, socket.IP_ADD_MEMBERSHIP, socket.inet_aton(_MDNS_ADDR) + socket.inet_aton('0.0.0.0'))
 
 		self.listeners = []
@@ -1277,7 +1276,7 @@
 		self.cache = DNSCache()
 
 		self.condition = threading.Condition()
-		
+
 		self.engine = Engine(self)
 		self.listener = Listener(self)
 		self.reaper = Reaper(self)
@@ -1472,7 +1471,7 @@
 						record = entry
 			else:
 				self.cache.add(record)
-				
+
 			self.updateRecord(now, record)
 
 	def handleQuery(self, msg, addr, port):
@@ -1486,14 +1485,14 @@
 			out = DNSOutgoing(_FLAGS_QR_RESPONSE | _FLAGS_AA, 0)
 			for question in msg.questions:
 				out.addQuestion(question)
-		
+
 		for question in msg.questions:
 			if question.type == _TYPE_PTR:
 				if question.name == "_services._dns-sd._udp.local.":
 					for stype in self.servicetypes.keys():
 						if out is None:
 							out = DNSOutgoing(_FLAGS_QR_RESPONSE | _FLAGS_AA)
-						out.addAnswer(msg, DNSPointer("_services._dns-sd._udp.local.", _TYPE_PTR, _CLASS_IN, _DNS_TTL, stype))						
+						out.addAnswer(msg, DNSPointer("_services._dns-sd._udp.local.", _TYPE_PTR, _CLASS_IN, _DNS_TTL, stype))
 				for service in self.services.values():
 					if question.name == service.type:
 						if out is None:
@@ -1503,16 +1502,16 @@
 				try:
 					if out is None:
 						out = DNSOutgoing(_FLAGS_QR_RESPONSE | _FLAGS_AA)
-					
+
 					# Answer A record queries for any service addresses we know
 					if question.type == _TYPE_A or question.type == _TYPE_ANY:
 						for service in self.services.values():
 							if service.server == question.name.lower():
 								out.addAnswer(msg, DNSAddress(question.name, _TYPE_A, _CLASS_IN | _CLASS_UNIQUE, _DNS_TTL, service.address))
-					
+
 					service = self.services.get(question.name.lower(), None)
 					if not service: continue
-					
+
 					if question.type == _TYPE_SRV or question.type == _TYPE_ANY:
 						out.addAnswer(msg, DNSService(question.name, _TYPE_SRV, _CLASS_IN | _CLASS_UNIQUE, _DNS_TTL, service.priority, service.weight, service.port, service.server))
 					if question.type == _TYPE_TXT or question.type == _TYPE_ANY:
@@ -1521,7 +1520,7 @@
 						out.addAdditionalAnswer(DNSAddress(service.server, _TYPE_A, _CLASS_IN | _CLASS_UNIQUE, _DNS_TTL, service.address))
 				except:
 					traceback.print_exc()
-				
+
 		if out is not None and out.answers:
 			out.id = msg.id
 			self.send(out, addr, port)
@@ -1531,7 +1530,7 @@
 		# This is a quick test to see if we can parse the packets we generate
 		#temp = DNSIncoming(out.packet())
 		try:
-			bytes_sent = self.socket.sendto(out.packet(), 0, (addr, port))
+			self.socket.sendto(out.packet(), 0, (addr, port))
 		except:
 			# Ignore this, it may be a temporary loss of network connection
 			pass
@@ -1546,11 +1545,11 @@
 			self.unregisterAllServices()
 			self.socket.setsockopt(socket.SOL_IP, socket.IP_DROP_MEMBERSHIP, socket.inet_aton(_MDNS_ADDR) + socket.inet_aton('0.0.0.0'))
 			self.socket.close()
-			
+
 # Test a few module features, including service registration, service
 # query (for Zoe), and service unregistration.
 
-if __name__ == '__main__':	
+if __name__ == '__main__':
 	print "Multicast DNS Service Discovery for Python, version", __version__
 	r = Zeroconf()
 	print "1. Testing registration of a service..."
--- a/hgext/zeroconf/__init__.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/hgext/zeroconf/__init__.py	Wed Apr 08 23:24:22 2009 +0200
@@ -8,17 +8,18 @@
 
 '''zeroconf support for mercurial repositories
 
-Zeroconf enabled repositories will be announced in a network without the need
-to configure a server or a service. They can be discovered without knowing
-their actual IP address.
+Zeroconf enabled repositories will be announced in a network without
+the need to configure a server or a service. They can be discovered
+without knowing their actual IP address.
 
-To use the zeroconf extension add the following entry to your hgrc file:
+To use the zeroconf extension add the following entry to your hgrc
+file:
 
 [extensions]
 hgext.zeroconf =
 
-To allow other people to discover your repository using run "hg serve" in your
-repository.
+To allow other people to discover your repository using run "hg serve"
+in your repository.
 
  $ cd test
  $ hg serve
@@ -77,8 +78,9 @@
         ip = getip()
         localip = socket.inet_aton(ip)
 
-    parts = socket.gethostname().split('.')
-    host = parts[0] + ".local"
+    hostname = socket.gethostname().split('.')[0]
+    host = hostname + ".local"
+    name = "%s-%s" % (hostname, name)
 
     # advertise to browsers
     svc = Zeroconf.ServiceInfo('_http._tcp.local.',
@@ -130,7 +132,7 @@
 def getzcpaths():
     server = Zeroconf.Zeroconf()
     l = listener()
-    browser = Zeroconf.ServiceBrowser(server, "_hg._tcp.local.", l)
+    Zeroconf.ServiceBrowser(server, "_hg._tcp.local.", l)
     time.sleep(1)
     server.close()
     for v in l.found.values():
--- a/i18n/da.po	Wed Apr 08 23:17:33 2009 +0200
+++ b/i18n/da.po	Wed Apr 08 23:24:22 2009 +0200
@@ -4,19 +4,21 @@
 #
 # Translation dictionary:
 #
-# changeset      ændring
-# merge          sammenføje
-# patch          rettelse
-# repo(sitory)   arkiv
-# revision       revision
-# tag            mærkat
+# changeset           ændring
+# commit              arkivering
+# merge               sammenføje
+# patch               rettelse
+# repo(sitory)        arkiv
+# revision            revision
+# tag                 mærkat
+# working directory   arbejdskatalog
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-22 22:02+0100\n"
-"PO-Revision-Date: 2009-02-22 22:05+0100\n"
+"POT-Creation-Date: 2009-04-08 00:41+0200\n"
+"PO-Revision-Date: 2009-04-08 00:44+0200\n"
 "Last-Translator:  <mg@daimi.au.dk>\n"
 "Language-Team: Danish\n"
 "MIME-Version: 1.0\n"
@@ -123,16 +125,15 @@
 "It is possible to use bookmark names in every revision lookup (e.g. hg\n"
 "merge, hg update).\n"
 "\n"
-"The bookmark extension offers the possiblity to have a more git-like "
-"experience\n"
-"by adding the following configuration option to your .hgrc:\n"
+"The bookmark extension offers the possiblity to have a more git-like\n"
+"experience by adding the following configuration option to your .hgrc:\n"
 "\n"
 "[bookmarks]\n"
 "track.current = True\n"
 "\n"
-"This will cause bookmarks to track the bookmark that you are currently on, "
-"and\n"
-"just updates it. This is similar to git's approach of branching.\n"
+"This will cause bookmarks to track the bookmark that you are currently\n"
+"on, and just updates it. This is similar to git's approach of\n"
+"branching.\n"
 msgstr ""
 
 msgid ""
@@ -179,8 +180,8 @@
 "\n"
 "    Bookmarks are pointers to certain commits that move when\n"
 "    commiting. Bookmarks are local. They can be renamed, copied and\n"
-"    deleted. It is possible to use bookmark names in 'hg merge' and 'hg\n"
-"    update' to update to a given bookmark.\n"
+"    deleted. It is possible to use bookmark names in 'hg merge' and\n"
+"    'hg update' to update to a given bookmark.\n"
 "\n"
 "    You can use 'hg bookmark NAME' to set a bookmark on the current\n"
 "    tip with the given name. If you specify a revision using -r REV\n"
@@ -241,91 +242,83 @@
 msgid "rename a given bookmark"
 msgstr ""
 
-msgid "hg bookmarks [-d] [-m NAME] [-r NAME] [NAME]"
+msgid "hg bookmarks [-f] [-d] [-m NAME] [-r REV] [NAME]"
 msgstr ""
 
 msgid ""
 "Bugzilla integration\n"
 "\n"
 "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 bug\n"
-"status.\n"
-"\n"
-"The hook updates the Bugzilla database directly. Only Bugzilla "
-"installations\n"
-"using MySQL are supported.\n"
-"\n"
-"The hook relies on a Bugzilla script to send bug change notification "
-"emails.\n"
-"That script changes between Bugzilla versions; the 'processmail' script "
-"used\n"
-"prior to 2.18 is replaced in 2.18 and subsequent versions by\n"
-"'config/sendbugmail.pl'. Note that these will be run by Mercurial as the "
-"user\n"
-"pushing the change; you will need to ensure the Bugzilla install file\n"
-"permissions are set appropriately.\n"
+"that refer to bugs by Bugzilla ID are seen. The hook does not change\n"
+"bug status.\n"
+"\n"
+"The hook updates the Bugzilla database directly. Only Bugzilla\n"
+"installations using MySQL are supported.\n"
+"\n"
+"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.\n"
 "\n"
 "Configuring the extension:\n"
 "\n"
 "    [bugzilla]\n"
-"    host       Hostname of the MySQL server holding the Bugzilla database.\n"
+"\n"
+"    host       Hostname of the MySQL server holding the Bugzilla\n"
+"               database.\n"
 "    db         Name of the Bugzilla database in MySQL. Default 'bugs'.\n"
 "    user       Username to use to access MySQL server. Default 'bugs'.\n"
 "    password   Password to use to access MySQL server.\n"
 "    timeout    Database connection timeout (seconds). Default 5.\n"
-"    version    Bugzilla version. Specify '3.0' for Bugzilla versions 3.0 "
-"and\n"
-"               later, '2.18' for Bugzilla versions from 2.18 and '2.16' for\n"
-"               versions prior to 2.18.\n"
+"    version    Bugzilla version. Specify '3.0' for Bugzilla versions\n"
+"               3.0 and later, '2.18' for Bugzilla versions from 2.18\n"
+"               and '2.16' for versions prior to 2.18.\n"
 "    bzuser     Fallback Bugzilla user name to record comments with, if\n"
 "               changeset committer cannot be found as a Bugzilla user.\n"
 "    bzdir      Bugzilla install directory. Used by default notify.\n"
 "               Default '/var/www/html/bugzilla'.\n"
 "    notify     The command to run to get Bugzilla to send bug change\n"
-"               notification emails. Substitutes from a map with 3 keys,\n"
-"               'bzdir', 'id' (bug id) and 'user' (committer bugzilla "
-"email).\n"
-"               Default depends on version; from 2.18 it is\n"
-"               \"cd %(bzdir)s && perl -T contrib/sendbugmail.pl %(id)s %"
-"(user)s\".\n"
-"    regexp     Regular expression to match bug IDs in changeset commit "
-"message.\n"
-"               Must contain one \"()\" group. The default expression "
-"matches\n"
-"               'Bug 1234', 'Bug no. 1234', 'Bug number 1234',\n"
-"               'Bugs 1234,5678', 'Bug 1234 and 5678' and variations "
-"thereof.\n"
-"               Matching is case insensitive.\n"
+"               notification emails. Substitutes from a map with 3\n"
+"               keys, 'bzdir', 'id' (bug id) and 'user' (committer\n"
+"               bugzilla email). Default depends on version; from 2.18\n"
+"               it is \"cd %(bzdir)s && perl -T contrib/sendbugmail.pl\n"
+"               %(id)s %(user)s\".\n"
+"    regexp     Regular expression to match bug IDs in changeset commit\n"
+"               message. Must contain one \"()\" group. The default\n"
+"               expression matches 'Bug 1234', 'Bug no. 1234', 'Bug\n"
+"               number 1234', 'Bugs 1234,5678', 'Bug 1234 and 5678' and\n"
+"               variations thereof. Matching is case insensitive.\n"
 "    style      The style file to use when formatting comments.\n"
 "    template   Template to use when formatting comments. Overrides\n"
 "               style if specified. In addition to the usual Mercurial\n"
 "               keywords, the extension specifies:\n"
 "                   {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.\n"
+"                   {root}      The full pathname of the Mercurial\n"
+"                               repository.\n"
+"                   {webroot}   Stripped pathname of the Mercurial\n"
+"                               repository.\n"
+"                   {hgweb}     Base URL for browsing Mercurial\n"
+"                               repositories.\n"
 "               Default 'changeset {node|short} in repo {root} refers '\n"
 "                       'to bug {bug}.\\ndetails:\\n\\t{desc|tabindent}'\n"
 "    strip      The number of slashes to strip from the front of {root}\n"
 "               to produce {webroot}. Default 0.\n"
-"    usermap    Path of file containing Mercurial committer ID to Bugzilla "
-"user\n"
-"               ID mappings. If specified, the file should contain one "
-"mapping\n"
-"               per line, \"committer\"=\"Bugzilla user\". See also the\n"
-"               [usermap] section.\n"
+"    usermap    Path of file containing Mercurial committer ID to\n"
+"               Bugzilla user ID mappings. If specified, the file\n"
+"               should contain one mapping per line,\n"
+"               \"committer\"=\"Bugzilla user\". See also the [usermap]\n"
+"               section.\n"
 "\n"
 "    [usermap]\n"
-"    Any entries in this section specify mappings of Mercurial committer ID\n"
-"    to Bugzilla user ID. See also [bugzilla].usermap.\n"
+"    Any entries in this section specify mappings of Mercurial\n"
+"    committer ID to Bugzilla user ID. See also [bugzilla].usermap.\n"
 "    \"committer\"=\"Bugzilla user\"\n"
 "\n"
 "    [web]\n"
-"    baseurl    Base URL for browsing Mercurial repositories. Reference from\n"
-"               templates as {hgweb}.\n"
+"    baseurl    Base URL for browsing Mercurial repositories. Reference\n"
+"               from templates as {hgweb}.\n"
 "\n"
 "Activating the extension:\n"
 "\n"
@@ -338,9 +331,9 @@
 "\n"
 "Example configuration:\n"
 "\n"
-"This example configuration is for a collection of Mercurial repositories\n"
-"in /var/local/hg/repos/ used with a local Bugzilla 3.2 installation in\n"
-"/opt/bugzilla-3.2.\n"
+"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.\n"
 "\n"
 "    [bugzilla]\n"
 "    host=localhost\n"
@@ -504,17 +497,25 @@
 msgstr ""
 
 msgid ""
-"show the children of the given or working dir revision\n"
-"\n"
-"    Print the children of the working directory's revisions.\n"
-"    If a revision is given via --rev, the children of that revision\n"
-"    will be printed. If a file argument is given, revision in\n"
-"    which the file was last changed (after the working directory\n"
-"    revision or the argument to --rev if given) is printed.\n"
-"    "
-msgstr ""
-
-msgid "show children of the specified rev"
+"show the children of the given or working directory revision\n"
+"\n"
+"    Print the children of the working directory's revisions. If a\n"
+"    revision is given via --rev, the children of that revision will be\n"
+"    printed. If a file argument is given, revision in which the file\n"
+"    was last changed (after the working directory revision or the\n"
+"    argument to --rev if given) is printed.\n"
+"    "
+msgstr ""
+"vis forældrene til arbejdskataloget eller en revision\n"
+"\n"
+"    Udskriv arbejdskatalogets forældrerevisioner. Hvis en revision\n"
+"    angivet med --rev, så udskrives forældren til denne revision. Hvis\n"
+"    en fil er angivet, udskrives revisionen i hvilken filen sidst blev\n"
+"    ændret (før arbejdskatalogets revision eller argumentet til --rev,\n"
+"    hvis givet).\n"
+"    "
+
+msgid "show children of the specified revision"
 msgstr ""
 
 msgid "hg children [-r REV] [FILE]"
@@ -537,10 +538,9 @@
 msgid ""
 "graph count of revisions grouped by template\n"
 "\n"
-"    Will graph count of changed lines or revisions grouped by template or\n"
-"    alternatively by date, if dateformat is used. In this case it will "
-"override\n"
-"    template.\n"
+"    Will graph count of changed lines or revisions grouped by template\n"
+"    or alternatively by date, if dateformat is used. In this case it\n"
+"    will override template.\n"
 "\n"
 "    By default statistics are counted for number of changed lines.\n"
 "\n"
@@ -596,7 +596,7 @@
 msgid "count rate for the specified revision or range"
 msgstr "lav statistik for de specificerede revisioner"
 
-msgid "count rate for revs matching date spec"
+msgid "count rate for revisions matching date spec"
 msgstr "lav statistik for revisioner som matcher dato specifikationen"
 
 msgid "template to group changesets"
@@ -623,16 +623,16 @@
 msgid ""
 "add color output to status, qseries, and diff-related commands\n"
 "\n"
-"This extension modifies the status command to add color to its output to\n"
-"reflect file status, the qseries command to add color to reflect patch "
-"status\n"
-"(applied, unapplied, missing), and to diff-related commands to highlight\n"
-"additions, removals, diff headers, and trailing whitespace.\n"
-"\n"
-"Other effects in addition to color, like bold and underlined text, are also\n"
-"available.  Effects are rendered with the ECMA-48 SGR control function (aka\n"
-"ANSI escape codes).  This module also provides the render_text function,\n"
-"which can be used to add effects to any text.\n"
+"This extension modifies the status command to add color to its output\n"
+"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.\n"
+"\n"
+"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"
+"function (aka ANSI escape codes). This module also provides the\n"
+"render_text function, which can be used to add effects to any text.\n"
 "\n"
 "To enable this extension, add this to your .hgrc file:\n"
 "[extensions]\n"
@@ -712,38 +712,38 @@
 "    - Monotone [mtn]\n"
 "    - GNU Arch [gnuarch]\n"
 "    - Bazaar [bzr]\n"
+"    - Perforce [p4]\n"
 "\n"
 "    Accepted destination formats [identifiers]:\n"
 "    - Mercurial [hg]\n"
 "    - Subversion [svn] (history on branches is not preserved)\n"
 "\n"
-"    If no revision is given, all revisions will be converted. Otherwise,\n"
-"    convert will only import up to the named revision (given in a format\n"
-"    understood by the source).\n"
+"    If no revision is given, all revisions will be converted.\n"
+"    Otherwise, convert will only import up to the named revision\n"
+"    (given in a format understood by the source).\n"
 "\n"
 "    If no destination directory name is specified, it defaults to the\n"
-"    basename of the source with '-hg' appended.  If the destination\n"
+"    basename of the source with '-hg' appended. If the destination\n"
 "    repository doesn't exist, it will be created.\n"
 "\n"
 "    If <REVMAP> isn't given, it will be put in a default location\n"
-"    (<dest>/.hg/shamap by default).  The <REVMAP> is a simple text\n"
-"    file that maps each source commit ID to the destination ID for\n"
-"    that revision, like so:\n"
+"    (<dest>/.hg/shamap by default). The <REVMAP> is a simple text file\n"
+"    that maps each source commit ID to the destination ID for that\n"
+"    revision, like so:\n"
 "    <source ID> <destination ID>\n"
 "\n"
-"    If the file doesn't exist, it's automatically created.  It's updated\n"
-"    on each commit copied, so convert-repo can be interrupted and can\n"
-"    be run repeatedly to copy new commits.\n"
-"\n"
-"    The [username mapping] file is a simple text file that maps each source\n"
-"    commit author to a destination commit author. It is handy for source "
-"SCMs\n"
-"    that use unix logins to identify authors (eg: CVS). One line per author\n"
-"    mapping and the line format is:\n"
+"    If the file doesn't exist, it's automatically created. It's\n"
+"    updated on each commit copied, so convert-repo can be interrupted\n"
+"    and can be run repeatedly to copy new commits.\n"
+"\n"
+"    The [username mapping] file is a simple text file that maps each\n"
+"    source commit author to a destination commit author. It is handy\n"
+"    for source SCMs that use unix logins to identify authors (eg:\n"
+"    CVS). One line per author mapping and the line format is:\n"
 "    srcauthor=whatever string you want\n"
 "\n"
 "    The filemap is a file that allows filtering and remapping of files\n"
-"    and directories.  Comment lines start with '#'.  Each line can\n"
+"    and directories. Comment lines start with '#'. Each line can\n"
 "    contain one of the following directives:\n"
 "\n"
 "      include path/to/file\n"
@@ -754,32 +754,33 @@
 "\n"
 "    The 'include' directive causes a file, or all files under a\n"
 "    directory, to be included in the destination repository, and the\n"
-"    exclusion of all other files and dirs not explicitely included.\n"
+"    exclusion of all other files and directories not explicitely included.\n"
 "    The 'exclude' directive causes files or directories to be omitted.\n"
-"    The 'rename' directive renames a file or directory.  To rename from a\n"
-"    subdirectory into the root of the repository, use '.' as the path to\n"
-"    rename to.\n"
+"    The 'rename' directive renames a file or directory. To rename from\n"
+"    a subdirectory into the root of the repository, use '.' as the\n"
+"    path to rename to.\n"
 "\n"
 "    The splicemap is a file that allows insertion of synthetic\n"
-"    history, letting you specify the parents of a revision.  This is\n"
+"    history, letting you specify the parents of a revision. This is\n"
 "    useful if you want to e.g. give a Subversion merge two parents, or\n"
-"    graft two disconnected series of history together.  Each entry\n"
+"    graft two disconnected series of history together. Each entry\n"
 "    contains a key, followed by a space, followed by one or two\n"
-"    values, separated by spaces.  The key is the revision ID in the\n"
-"    source revision control system whose parents should be modified\n"
-"    (same format as a key in .hg/shamap).  The values are the revision\n"
-"    IDs (in either the source or destination revision control system)\n"
-"    that should be used as the new parents for that node.\n"
+"    comma-separated values. The key is the revision ID in the source\n"
+"    revision control system whose parents should be modified (same\n"
+"    format as a key in .hg/shamap). The values are the revision IDs\n"
+"    (in either the source or destination revision control system) that\n"
+"    should be used as the new parents for that node.\n"
 "\n"
 "    Mercurial Source\n"
 "    -----------------\n"
 "\n"
-"    --config convert.hg.ignoreerrors=False (boolean)\n"
+"    --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=True          (boolean)\n"
-"        allow target to preserve source revision ID\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\n"
 "\n"
@@ -788,11 +789,11 @@
 "\n"
 "    CVS source will use a sandbox (i.e. a checked-out copy) from CVS\n"
 "    to indicate the starting point of what will be converted. Direct\n"
-"    access to the repository files is not needed, unless of course\n"
-"    the repository is :local:. The conversion uses the top level\n"
-"    directory in the sandbox to find the CVS repository, and then uses\n"
-"    CVS rlog commands to find files to convert. This means that unless\n"
-"    a filemap is given, all files under the starting directory will be\n"
+"    access to the repository files is not needed, unless of course the\n"
+"    repository is :local:. The conversion uses the top level directory\n"
+"    in the sandbox to find the CVS repository, and then uses CVS rlog\n"
+"    commands to find files to convert. This means that unless a\n"
+"    filemap is given, all files under the starting directory will be\n"
 "    converted, and that any directory reorganisation in the CVS\n"
 "    sandbox is ignored.\n"
 "\n"
@@ -808,34 +809,37 @@
 "    Internal cvsps is selected by setting\n"
 "        --config convert.cvsps=builtin\n"
 "    and has a few more configurable options:\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\n"
-"            of a changeset then the default may not be long enough.\n"
+"        --config convert.cvsps.fuzz=60        (integer)\n"
+"            Specify the maximum time (in seconds) that is allowed\n"
+"            between commits with identical user and log message in a\n"
+"            single changeset. When very large files were checked in as\n"
+"            part of a changeset then the default may not be long\n"
+"            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"
+"            Specify a regular expression to which commit log messages\n"
+"            are matched. If a match occurs, then the conversion\n"
+"            process will insert a dummy revision merging the branch on\n"
+"            which this log message occurs to the branch indicated in\n"
+"            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"
-"\n"
-"    The hgext/convert/cvsps wrapper script allows the builtin changeset\n"
-"    merging code to be run without doing a conversion. Its parameters and\n"
-"    output are similar to that of cvsps 2.1.\n"
+"            Specify a regular expression to which commit log messages\n"
+"            are matched. If a match occurs, then the conversion\n"
+"            process will add the most recent revision on the branch\n"
+"            indicated in the regex as the second parent of the\n"
+"            changeset.\n"
+"\n"
+"    The hgext/convert/cvsps wrapper script allows the builtin\n"
+"    changeset merging code to be run without doing a conversion. Its\n"
+"    parameters and output are similar to that of cvsps 2.1.\n"
 "\n"
 "    Subversion Source\n"
 "    -----------------\n"
 "\n"
 "    Subversion source detects classical trunk/branches/tags layouts.\n"
 "    By default, the supplied \"svn://repo/path/\" source URL is\n"
-"    converted as a single branch. If \"svn://repo/path/trunk\" exists\n"
-"    it replaces the default branch. If \"svn://repo/path/branches\"\n"
-"    exists, its subdirectories are listed as possible branches. If\n"
+"    converted as a single branch. If \"svn://repo/path/trunk\" exists it\n"
+"    replaces the default branch. If \"svn://repo/path/branches\" exists,\n"
+"    its subdirectories are listed as possible branches. If\n"
 "    \"svn://repo/path/tags\" exists, it is looked for tags referencing\n"
 "    converted branches. Default \"trunk\", \"branches\" and \"tags\" values\n"
 "    can be overriden with following options. Set them to paths\n"
@@ -856,6 +860,23 @@
 "    --config convert.svn.startrev=0           (svn revision number)\n"
 "        specify start Subversion revision.\n"
 "\n"
+"    Perforce Source\n"
+"    ---------------\n"
+"\n"
+"    The Perforce (P4) importer can be given a p4 depot path or a\n"
+"    client specification as source. It will convert all files in the\n"
+"    source to a flat Mercurial repository, ignoring labels, branches\n"
+"    and integrations. Note that when a depot path is given you then\n"
+"    usually should specify a target directory, because otherwise the\n"
+"    target may be named ...-hg.\n"
+"\n"
+"    It is possible to limit the amount of source history to be\n"
+"    converted by specifying an initial Perforce revision.\n"
+"\n"
+"    --config convert.p4.startrev=0            (perforce changelist number)\n"
+"        specify initial Perforce revision.\n"
+"\n"
+"\n"
 "    Mercurial Destination\n"
 "    ---------------------\n"
 "\n"
@@ -872,12 +893,14 @@
 msgid ""
 "create changeset information from CVS\n"
 "\n"
-"    This command is intended as a debugging tool for the CVS to Mercurial\n"
-"    converter, and can be used as a direct replacement for cvsps.\n"
-"\n"
-"    Hg debugcvsps reads the CVS rlog for current directory (or any named\n"
-"    directory) in the CVS repository, and converts the log to a series of\n"
-"    changesets based on matching commit log entries and dates."
+"    This command is intended as a debugging tool for the CVS to\n"
+"    Mercurial converter, and can be used as a direct replacement for\n"
+"    cvsps.\n"
+"\n"
+"    Hg debugcvsps reads the CVS rlog for current directory (or any\n"
+"    named directory) in the CVS repository, and converts the log to a\n"
+"    series of changesets based on matching commit log entries and\n"
+"    dates."
 msgstr ""
 
 msgid "username mapping filename"
@@ -989,7 +1012,7 @@
 msgstr ""
 
 #, python-format
-msgid "Overriding mapping for author %s, was %s, will be %s\n"
+msgid "Ignoring bad line in author map file %s: %s\n"
 msgstr ""
 
 #, python-format
@@ -997,7 +1020,7 @@
 msgstr ""
 
 #, python-format
-msgid "Ignoring bad line in author map file %s: %s\n"
+msgid "overriding mapping for author %s, was %s, will be %s\n"
 msgstr ""
 
 #, python-format
@@ -1086,6 +1109,10 @@
 msgstr ""
 
 #, python-format
+msgid "found synthetic revision in %s: %r\n"
+msgstr ""
+
+#, python-format
 msgid "writing cvs log cache %s\n"
 msgstr ""
 
@@ -1096,6 +1123,9 @@
 msgid "creating changesets\n"
 msgstr "opretter ændringer\n"
 
+msgid "synthetic changeset cannot have multiple parents"
+msgstr ""
+
 #, python-format
 msgid "%d changeset entries\n"
 msgstr "%d ændringer\n"
@@ -1200,7 +1230,13 @@
 msgstr ""
 
 #, python-format
-msgid "copying file in renamed dir from '%s' to '%s'"
+msgid "copying file in renamed directory from '%s' to '%s'"
+msgstr ""
+
+msgid "reading p4 views\n"
+msgstr ""
+
+msgid "collecting p4 changelists\n"
 msgstr ""
 
 msgid "Subversion python bindings could not be loaded"
@@ -1350,7 +1386,7 @@
 msgid ""
 "\n"
 "The `extdiff' Mercurial extension allows you to use external programs\n"
-"to compare revisions, or revision with working dir.  The external diff\n"
+"to compare revisions, or revision with working directory. The external diff\n"
 "programs are called with a configurable set of options and two\n"
 "non-option arguments: paths to directories containing snapshots of\n"
 "files to compare.\n"
@@ -1377,16 +1413,16 @@
 "  meld =\n"
 "\n"
 "  # add new command called vimdiff, runs gvimdiff with DirDiff plugin\n"
-"  #(see http://www.vim.org/scripts/script.php?script_id=102)\n"
+"  # (see http://www.vim.org/scripts/script.php?script_id=102)\n"
 "  # Non english user, be sure to put \"let g:DirDiffDynamicDiffText = 1\" "
 "in\n"
 "  # your .vimrc\n"
 "  vimdiff = gvim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)'\n"
 "\n"
-"You can use -I/-X and list of file or directory names like normal\n"
-"\"hg diff\" command.  The `extdiff' extension makes snapshots of only\n"
-"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"
+"You can use -I/-X and list of file or directory names like normal \"hg\n"
+"diff\" command. The `extdiff' extension makes snapshots of only needed\n"
+"files, so running the external diff program will actually be pretty\n"
+"fast (at least faster than having to compare the entire tree).\n"
 msgstr ""
 
 msgid "snapshot files as of some revision"
@@ -1403,7 +1439,7 @@
 msgstr ""
 
 #, python-format
-msgid "making snapshot of %d files from working dir\n"
+msgid "making snapshot of %d files from working directory\n"
 msgstr ""
 
 msgid ""
@@ -1434,19 +1470,19 @@
 "use external program to diff repository (or selected files)\n"
 "\n"
 "    Show differences between revisions for the specified files, using\n"
-"    an external program.  The default program used is diff, with\n"
+"    an external program. The default program used is diff, with\n"
 "    default options \"-Npru\".\n"
 "\n"
-"    To select a different program, use the -p option.  The program\n"
-"    will be passed the names of two directories to compare.  To pass\n"
-"    additional options to the program, use the -o option.  These will\n"
+"    To select a different program, use the -p option. The program will\n"
+"    be passed the names of two directories to compare. To pass\n"
+"    additional options to the program, use the -o option. These will\n"
 "    be passed before the names of the directories to compare.\n"
 "\n"
-"    When two revision arguments are given, then changes are\n"
-"    shown between those revisions. If only one revision is\n"
-"    specified then that revision is compared to the working\n"
-"    directory, and, when no revisions are specified, the\n"
-"    working directory files are compared to its parent."
+"    When two revision arguments are given, then changes are shown\n"
+"    between those revisions. If only one revision is specified then\n"
+"    that revision is compared to the working directory, and, when no\n"
+"    revisions are specified, the working directory files are compared\n"
+"    to its parent."
 msgstr ""
 
 msgid "comparison program to run"
@@ -1477,13 +1513,14 @@
 "    This finds all changes from the repository at the specified path\n"
 "    or URL and adds them to the local repository.\n"
 "\n"
-"    If the pulled changes add a new branch head, the head is automatically\n"
-"    merged, and the result of the merge is committed.  Otherwise, the\n"
-"    working directory is updated to include the new changes.\n"
+"    If the pulled changes add a new branch head, the head is\n"
+"    automatically merged, and the result of the merge is committed.\n"
+"    Otherwise, the working directory is updated to include the new\n"
+"    changes.\n"
 "\n"
 "    When a merge occurs, the newly pulled changes are assumed to be\n"
-"    \"authoritative\".  The head of the new changes is used as the first\n"
-"    parent, with local changes as the second.  To switch the merge\n"
+"    \"authoritative\". The head of the new changes is used as the first\n"
+"    parent, with local changes as the second. To switch the merge\n"
 "    order, use --switch-parent.\n"
 "\n"
 "    See 'hg help dates' for a list of formats valid for -d/--date.\n"
@@ -1501,7 +1538,7 @@
 msgstr ""
 
 msgid "working directory is missing some files"
-msgstr "arbejdsbiblioteket mangler nogle filer"
+msgstr "arbejdskataloget mangler nogle filer"
 
 msgid ""
 "multiple heads in this branch (use \"hg heads .\" and \"hg merge\" to merge)"
@@ -1835,17 +1872,17 @@
 "browsing the repository in a graphical way\n"
 "\n"
 "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\n"
-"not distributed with Mercurial.)\n"
+"graphical way. It requires Tcl/Tk version 8.4 or later. (Tcl/Tk is not\n"
+"distributed with Mercurial.)\n"
 "\n"
 "hgk consists of two parts: a Tcl script that does the displaying and\n"
 "querying of information, and an extension to mercurial named hgk.py,\n"
 "which provides hooks for hgk to get information. hgk can be found in\n"
 "the contrib directory, and hgk.py can be found in the hgext directory.\n"
 "\n"
-"To load the hgext.py extension, add it to your .hgrc file (you have\n"
-"to use your global $HOME/.hgrc file, not one in a repository). You\n"
-"can specify an absolute path:\n"
+"To load the hgext.py extension, add it to your .hgrc file (you have to\n"
+"use your global $HOME/.hgrc file, not one in a repository). You can\n"
+"specify an absolute path:\n"
 "\n"
 "  [extensions]\n"
 "  hgk=/usr/local/lib/hgk.py\n"
@@ -1857,8 +1894,8 @@
 "  hgk=\n"
 "\n"
 "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\n"
-"specify the path to hgk in your .hgrc file:\n"
+"to work, hgk must be in your search path. Alternately, you can specify\n"
+"the path to hgk in your .hgrc file:\n"
 "\n"
 "  [hgk]\n"
 "  path=/location/of/hgk\n"
@@ -2150,15 +2187,15 @@
 msgid ""
 "keyword expansion in local repositories\n"
 "\n"
-"This extension expands RCS/CVS-like or self-customized $Keywords$\n"
-"in tracked text files selected by your configuration.\n"
-"\n"
-"Keywords are only expanded in local repositories and not stored in\n"
-"the change history. The mechanism can be regarded as a convenience\n"
-"for the current user or for archive distribution.\n"
-"\n"
-"Configuration is done in the [keyword] and [keywordmaps] sections\n"
-"of hgrc files.\n"
+"This extension expands RCS/CVS-like or self-customized $Keywords$ in\n"
+"tracked text files selected by your configuration.\n"
+"\n"
+"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.\n"
+"\n"
+"Configuration is done in the [keyword] and [keywordmaps] sections of\n"
+"hgrc files.\n"
 "\n"
 "Example:\n"
 "\n"
@@ -2168,28 +2205,28 @@
 "    x*    = ignore\n"
 "\n"
 "Note: the more specific you are in your filename patterns\n"
-"      the less you lose speed in huge repos.\n"
+"      the less you lose speed in huge repositories.\n"
 "\n"
 "For [keywordmaps] template mapping and expansion demonstration and\n"
 "control run \"hg kwdemo\".\n"
 "\n"
 "An additional date template filter {date|utcdate} is provided.\n"
 "\n"
-"The default template mappings (view with \"hg kwdemo -d\") can be replaced\n"
-"with customized keywords and templates.\n"
-"Again, run \"hg kwdemo\" to control the results of your config changes.\n"
+"The default template mappings (view with \"hg kwdemo -d\") can be\n"
+"replaced with customized keywords and templates. Again, run \"hg\n"
+"kwdemo\" to control the results of your config changes.\n"
 "\n"
 "Before changing/disabling active keywords, run \"hg kwshrink\" to avoid\n"
-"the risk of inadvertedly storing expanded keywords in the change history.\n"
+"the risk of inadvertedly storing expanded keywords in the change\n"
+"history.\n"
 "\n"
 "To force expansion after enabling it, or a configuration change, run\n"
 "\"hg kwexpand\".\n"
 "\n"
-"Also, when committing with the record extension or using mq's qrecord, be "
-"aware\n"
-"that keywords cannot be updated. Again, run \"hg kwexpand\" on the files in\n"
-"question to update keyword expansions after all changes have been checked "
-"in.\n"
+"Also, when committing with the record extension or using mq's qrecord,\n"
+"be aware that keywords cannot be updated. Again, run \"hg kwexpand\" on\n"
+"the files in question to update keyword expansions after all changes\n"
+"have been checked in.\n"
 "\n"
 "Expansions spanning more than one line and incremental expansions,\n"
 "like CVS' $Log$, are not supported. A keyword template map\n"
@@ -2272,11 +2309,11 @@
 msgid ""
 "print [keywordmaps] configuration and an expansion example\n"
 "\n"
-"    Show current, custom, or default keyword template maps\n"
-"    and their expansion.\n"
-"\n"
-"    Extend current configuration by specifying maps as arguments\n"
-"    and optionally by reading from an additional hgrc file.\n"
+"    Show current, custom, or default keyword template maps and their\n"
+"    expansion.\n"
+"\n"
+"    Extend current configuration by specifying maps as arguments and\n"
+"    optionally by reading from an additional hgrc file.\n"
 "\n"
 "    Override current keyword template maps with \"default\" option.\n"
 "    "
@@ -2289,7 +2326,7 @@
 msgstr ""
 
 #, python-format
-msgid "creating temporary repo at %s\n"
+msgid "creating temporary repository at %s\n"
 msgstr ""
 
 #, python-format
@@ -2304,7 +2341,7 @@
 #, python-format
 msgid ""
 "\n"
-"removing temporary repo %s\n"
+"removing temporary repository %s\n"
 msgstr ""
 
 msgid ""
@@ -2319,17 +2356,17 @@
 msgid ""
 "print files currently configured for keyword expansion\n"
 "\n"
-"    Crosscheck which files in working directory are potential targets for\n"
-"    keyword expansion.\n"
-"    That is, files matched by [keyword] config patterns but not symlinks.\n"
+"    Crosscheck which files in working directory are potential targets\n"
+"    for keyword expansion. That is, files matched by [keyword] config\n"
+"    patterns but not symlinks.\n"
 "    "
 msgstr ""
 
 msgid ""
 "revert expanded keywords in working directory\n"
 "\n"
-"    Run before changing/disabling active keywords\n"
-"    or if you experience problems with \"hg import\" or \"hg merge\".\n"
+"    Run before changing/disabling active keywords or if you experience\n"
+"    problems with \"hg import\" or \"hg merge\".\n"
 "\n"
 "    kwshrink refuses to run if given files contain local changes.\n"
 "    "
@@ -2396,11 +2433,11 @@
 "patch management and development\n"
 "\n"
 "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"
+"repository. It manages two stacks of patches - all known patches, and\n"
 "applied patches (subset of known patches).\n"
 "\n"
 "Known patches are represented as patch files in the .hg/patches\n"
-"directory.  Applied patches are both patch files and changesets.\n"
+"directory. Applied patches are both patch files and changesets.\n"
 "\n"
 "Common tasks (use \"hg help command\" for more details):\n"
 "\n"
@@ -2659,7 +2696,7 @@
 msgstr ""
 
 msgid "cleaning up working directory..."
-msgstr "rydder op i arbejdsbiblioteket..."
+msgstr "rydder op i arbejdskataloget..."
 
 #, python-format
 msgid "errors during apply, please fix and refresh %s\n"
@@ -2806,14 +2843,16 @@
 msgid ""
 "remove patches from queue\n"
 "\n"
-"    The patches must not be applied, unless they are arguments to\n"
-"    the --rev parameter. At least one patch or revision is required.\n"
+"    The patches must not be applied, unless they are arguments to the\n"
+"    --rev parameter. At least one patch or revision is required.\n"
 "\n"
 "    With --rev, mq will stop managing the named revisions (converting\n"
-"    them to regular mercurial changesets). The qfinish command should be\n"
-"    used as an alternative for qdel -r, as the latter option is deprecated.\n"
-"\n"
-"    With --keep, the patch files are preserved in the patch directory."
+"    them to regular mercurial changesets). The qfinish command should\n"
+"    be used as an alternative for qdel -r, as the latter option is\n"
+"    deprecated.\n"
+"\n"
+"    With --keep, the patch files are preserved in the patch\n"
+"    directory."
 msgstr ""
 
 msgid "print the patches already applied"
@@ -2825,24 +2864,25 @@
 msgid ""
 "import a patch\n"
 "\n"
-"    The patch is inserted into the series after the last applied patch.\n"
-"    If no patches have been applied, qimport prepends the patch\n"
+"    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.\n"
 "\n"
 "    The patch will have the same name as its source file unless you\n"
 "    give it a new one with --name.\n"
 "\n"
-"    You can register an existing patch inside the patch directory\n"
-"    with the --existing flag.\n"
-"\n"
-"    With --force, an existing patch of the same name will be overwritten.\n"
+"    You can register an existing patch inside the patch directory with\n"
+"    the --existing flag.\n"
+"\n"
+"    With --force, an existing patch of the same name will be\n"
+"    overwritten.\n"
 "\n"
 "    An existing changeset may be placed under mq control with --rev\n"
 "    (e.g. qimport --rev tip -n patch will place tip under mq control).\n"
 "    With --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 "
-"changes.\n"
+"    important for preserving rename/copy information and permission\n"
+"    changes.\n"
 "    "
 msgstr ""
 
@@ -2850,23 +2890,23 @@
 "init a new queue repository\n"
 "\n"
 "    The queue repository is unversioned by default. If -c is\n"
-"    specified, qinit will create a separate nested repository\n"
-"    for patches (qinit -c may also be run later to convert\n"
-"    an unversioned patch repository into a versioned one).\n"
-"    You can use qcommit to commit changes to this queue repository."
+"    specified, qinit will create a separate nested repository for\n"
+"    patches (qinit -c may also be run later to convert an unversioned\n"
+"    patch repository into a versioned one). You can use qcommit to\n"
+"    commit changes to this queue repository."
 msgstr ""
 
 msgid ""
 "clone main and patch repository at same time\n"
 "\n"
-"    If source is local, destination will have no patches applied.  If\n"
+"    If source is local, destination will have no patches applied. If\n"
 "    source is remote, this command can not check if patches are\n"
 "    applied in source, so cannot guarantee that patches are not\n"
-"    applied in destination.  If you clone remote repository, be sure\n"
+"    applied in destination. If you clone remote repository, be sure\n"
 "    before that it has no patches applied.\n"
 "\n"
 "    Source patch repository is looked for in <src>/.hg/patches by\n"
-"    default.  Use -p <url> to change.\n"
+"    default. Use -p <url> to change.\n"
 "\n"
 "    The patch directory must be a nested mercurial repository, as\n"
 "    would be created by qinit -c.\n"
@@ -2876,16 +2916,16 @@
 msgid "versioned patch repository not found (see qinit -c)"
 msgstr "versionsstyret arkiv til rettelser blev ikke fundet (se qinit -c)"
 
-msgid "cloning main repo\n"
+msgid "cloning main repository\n"
 msgstr "kloner hovedarkiv\n"
 
-msgid "cloning patch repo\n"
+msgid "cloning patch repository\n"
 msgstr "kloner rettelsesarkiv\n"
 
-msgid "stripping applied patches from destination repo\n"
-msgstr ""
-
-msgid "updating destination repo\n"
+msgid "stripping applied patches from destination repository\n"
+msgstr ""
+
+msgid "updating destination repository\n"
 msgstr ""
 
 msgid "commit changes in the queue repository"
@@ -2912,21 +2952,19 @@
 msgid ""
 "create a new patch\n"
 "\n"
-"    qnew creates a new patch on top of the currently-applied patch (if "
-"any).\n"
-"    It will refuse to run if there are any outstanding changes unless -f is\n"
-"    specified, in which case the patch will be initialized with them. You\n"
-"    may also use -I, -X, and/or a list of files after the patch name to add\n"
-"    only changes to matching files to the new patch, leaving the rest as\n"
-"    uncommitted modifications.\n"
+"    qnew creates a new patch on top of the currently-applied patch (if\n"
+"    any). It will refuse to run if there are any outstanding changes\n"
+"    unless -f is specified, in which case the patch will be\n"
+"    initialized with them. You may also use -I, -X, and/or a list of\n"
+"    files after the patch name to add only changes to matching files\n"
+"    to the new patch, leaving the rest as uncommitted modifications.\n"
 "\n"
 "    -u and -d can be used to set the (given) user and date, respectively.\n"
 "    -U and -D set user to current user and date to current date.\n"
 "\n"
-"    -e, -m or -l set the patch header as well as the commit message. If "
-"none\n"
-"    is specified, the header is empty and the commit message is '[mq]: "
-"PATCH'.\n"
+"    -e, -m or -l set the patch header as well as the commit message.\n"
+"    If none is specified, the header is empty and the commit message\n"
+"    is '[mq]: PATCH'.\n"
 "\n"
 "    Use the --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"
@@ -2938,18 +2976,17 @@
 msgid ""
 "update the current patch\n"
 "\n"
-"    If any file patterns are provided, the refreshed patch will contain "
-"only\n"
-"    the modifications that match those patterns; the remaining "
-"modifications\n"
-"    will remain in the working directory.\n"
-"\n"
-"    If --short is specified, files currently included in the patch will\n"
-"    be refreshed just like matched files and remain in the patch.\n"
-"\n"
-"    hg add/remove/copy/rename work as usual, though you might want to use\n"
-"    git-style patches (--git or [diff] git=1) to track copies and renames.\n"
-"    See the diffs help topic for more information on the git diff format.\n"
+"    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.\n"
+"\n"
+"    If --short is specified, files currently included in the patch\n"
+"    will be refreshed just like matched files and remain in the patch.\n"
+"\n"
+"    hg add/remove/copy/rename work as usual, though you might want to\n"
+"    use git-style patches (--git or [diff] git=1) to track copies and\n"
+"    renames. See the diffs help topic for more information on the git\n"
+"    diff format.\n"
 "    "
 msgstr ""
 
@@ -2959,14 +2996,15 @@
 msgid ""
 "diff of the current patch and subsequent modifications\n"
 "\n"
-"    Shows a diff which includes the current patch as well as any changes "
-"which\n"
-"    have been made in the working directory since the last refresh (thus\n"
-"    showing what the current patch would become after a qrefresh).\n"
-"\n"
-"    Use 'hg diff' if you only want to see the changes made since the last\n"
-"    qrefresh, or 'hg export qtip' if you want to see changes made by the\n"
-"    current patch without including changes made since the qrefresh.\n"
+"    Shows a diff which includes the current patch as well as any\n"
+"    changes which have been made in the working directory since the\n"
+"    last refresh (thus showing what the current patch would become\n"
+"    after a qrefresh).\n"
+"\n"
+"    Use 'hg diff' if you only want to see the changes made since the\n"
+"    last qrefresh, or 'hg export qtip' if you want to see changes made\n"
+"    by the current patch without including changes made since the\n"
+"    qrefresh.\n"
 "    "
 msgstr ""
 
@@ -2976,12 +3014,12 @@
 "    Patches must not yet be applied. Each patch will be successively\n"
 "    applied to the current patch in the order given. If all the\n"
 "    patches apply successfully, the current patch will be refreshed\n"
-"    with the new cumulative patch, and the folded patches will\n"
-"    be deleted. With -k/--keep, the folded patch files will not\n"
-"    be removed afterwards.\n"
-"\n"
-"    The header for each folded patch will be concatenated with\n"
-"    the current patch header, separated by a line of '* * *'."
+"    with the new cumulative patch, and the folded patches will be\n"
+"    deleted. With -k/--keep, the folded patch files will not be\n"
+"    removed afterwards.\n"
+"\n"
+"    The header for each folded patch will be concatenated with the\n"
+"    current patch header, separated by a line of '* * *'."
 msgstr ""
 
 msgid "qfold requires at least one patch name"
@@ -3039,8 +3077,8 @@
 msgid ""
 "push the next patch onto the stack\n"
 "\n"
-"    When --force is applied, all local changes in patched files will be "
-"lost.\n"
+"    When --force is applied, all local changes in patched files will\n"
+"    be lost.\n"
 "    "
 msgstr ""
 
@@ -3054,9 +3092,9 @@
 msgid ""
 "pop the current patch off the stack\n"
 "\n"
-"    By default, pops off the top of the patch stack. If given a patch name,\n"
-"    keeps popping off patches until the named patch is at the top of the "
-"stack.\n"
+"    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.\n"
 "    "
 msgstr ""
 
@@ -3079,7 +3117,7 @@
 msgid "A patch named %s already exists in the series file"
 msgstr ""
 
-msgid "restore the queue state saved by a rev"
+msgid "restore the queue state saved by a revision"
 msgstr ""
 
 msgid "save current queue state"
@@ -3100,8 +3138,9 @@
 msgid ""
 "strip a revision and all its descendants from the repository\n"
 "\n"
-"    If one of the working dir's parent revisions is stripped, the working\n"
-"    directory will be updated to the parent of the stripped revision.\n"
+"    If one of the working directory's parent revisions is stripped, the\n"
+"    working directory will be updated to the parent of the stripped\n"
+"    revision.\n"
 "    "
 msgstr ""
 
@@ -3109,34 +3148,34 @@
 "set or print guarded patches to push\n"
 "\n"
 "    Use the qguard command to set or print guards on patch, then use\n"
-"    qselect to tell mq which guards to use. A patch will be pushed if it\n"
-"    has no guards or any positive guards match the currently selected "
-"guard,\n"
-"    but will not be pushed if any negative guards match the current guard.\n"
-"    For example:\n"
+"    qselect to tell mq which guards to use. A patch will be pushed if\n"
+"    it has no guards or any positive guards match the currently\n"
+"    selected guard, but will not be pushed if any negative guards\n"
+"    match the current guard. For example:\n"
 "\n"
 "        qguard foo.patch -stable    (negative guard)\n"
 "        qguard bar.patch +stable    (positive guard)\n"
 "        qselect stable\n"
 "\n"
 "    This activates the \"stable\" guard. mq will skip foo.patch (because\n"
-"    it has a negative match) but push bar.patch (because it\n"
-"    has a positive match).\n"
+"    it has a negative match) but push bar.patch (because it has a\n"
+"    positive match).\n"
 "\n"
 "    With no arguments, prints the currently active guards.\n"
 "    With one argument, sets the active guard.\n"
 "\n"
 "    Use -n/--none to deactivate guards (no other arguments needed).\n"
-"    When no guards are active, patches with positive guards are skipped\n"
-"    and patches with negative guards are pushed.\n"
+"    When no guards are active, patches with positive guards are\n"
+"    skipped and patches with negative guards are pushed.\n"
 "\n"
 "    qselect can change the guards on applied patches. It does not pop\n"
-"    guarded patches by default. Use --pop to pop back to the last applied\n"
-"    patch that is not guarded. Use --reapply (which implies --pop) to push\n"
-"    back to the current patch afterwards, but skip guarded patches.\n"
-"\n"
-"    Use -s/--series to print a list of all guards in the series file (no\n"
-"    other arguments needed). Use -v for more information."
+"    guarded patches by default. Use --pop to pop back to the last\n"
+"    applied patch that is not guarded. Use --reapply (which implies\n"
+"    --pop) to push back to the current patch afterwards, but skip\n"
+"    guarded patches.\n"
+"\n"
+"    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 ""
 
 msgid "guards deactivated\n"
@@ -3171,17 +3210,18 @@
 msgid ""
 "move applied patches into repository history\n"
 "\n"
-"    Finishes the specified revisions (corresponding to applied patches) by\n"
-"    moving them out of mq control into regular repository history.\n"
+"    Finishes the specified revisions (corresponding to applied\n"
+"    patches) by moving them out of mq control into regular repository\n"
+"    history.\n"
 "\n"
 "    Accepts a revision range or the --applied option. If --applied is\n"
 "    specified, all applied mq revisions are removed from mq control.\n"
 "    Otherwise, the given revisions must be at the base of the stack of\n"
 "    applied patches.\n"
 "\n"
-"    This can be especially useful if your changes have been applied to an\n"
-"    upstream repository, or if you are about to push your changes to "
-"upstream.\n"
+"    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.\n"
 "    "
 msgstr ""
 
@@ -3220,7 +3260,7 @@
 msgid "use uncompressed transfer (fast over LAN)"
 msgstr ""
 
-msgid "location of source patch repo"
+msgid "location of source patch repository"
 msgstr ""
 
 msgid "hg qclone [OPTION]... SOURCE [DEST]"
@@ -3268,7 +3308,7 @@
 msgid "hg qheader [PATCH]"
 msgstr ""
 
-msgid "import file in patch dir"
+msgid "import file in patch directory"
 msgstr ""
 
 msgid "patch file name"
@@ -3370,7 +3410,7 @@
 msgid "delete save entry"
 msgstr ""
 
-msgid "update queue working dir"
+msgid "update queue working directory"
 msgstr ""
 
 msgid "hg qrestore [-d] [-u] REV"
@@ -3494,10 +3534,10 @@
 "emails\n"
 "   pattern = user@host\n"
 "\n"
-" glob patterns are matched against path to repo root.\n"
-"\n"
-" if you like, you can put notify config file in repo that users can\n"
-" push changes to, they can manage their own subscriptions."
+" glob patterns are matched against path to repository root.\n"
+"\n"
+" if you like, you can put notify config file in repository that users\n"
+" can push changes to, they can manage their own subscriptions."
 msgstr ""
 
 msgid "email notification class."
@@ -3551,7 +3591,7 @@
 msgstr ""
 
 #, python-format
-msgid "notify: no subscribers to repo %s\n"
+msgid "notify: no subscribers to repository %s\n"
 msgstr ""
 
 #, python-format
@@ -3566,12 +3606,11 @@
 "  [pager]\n"
 "  pager = LESS='FSRX' less\n"
 "\n"
-"If no pager is set, the pager extensions uses the environment\n"
-"variable $PAGER. If neither pager.pager, nor $PAGER is set, no pager\n"
-"is used.\n"
-"\n"
-"If you notice \"BROKEN PIPE\" error messages, you can disable them\n"
-"by setting:\n"
+"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.\n"
+"\n"
+"If you notice \"BROKEN PIPE\" error messages, you can disable them by\n"
+"setting:\n"
 "\n"
 "  [pager]\n"
 "  quiet = True\n"
@@ -3582,23 +3621,23 @@
 "  [pager]\n"
 "  ignore = version, help, update\n"
 "\n"
-"You can also enable the pager only for certain commands using pager.attend:\n"
+"You can also enable the pager only for certain commands using\n"
+"pager.attend:\n"
 "\n"
 "  [pager]\n"
 "  attend = log\n"
 "\n"
 "If pager.attend is present, pager.ignore will be ignored.\n"
 "\n"
-"To ignore global commands like \"hg version\" or \"hg help\", you have to "
-"specify\n"
-"them in the global .hgrc\n"
+"To ignore global commands like \"hg version\" or \"hg help\", you have to\n"
+"specify them in the global .hgrc\n"
 msgstr ""
 
 msgid ""
 "use suffixes to refer to ancestor revisions\n"
 "\n"
-"This extension allows you to use git-style suffixes to refer to\n"
-"the ancestors of a specific revision.\n"
+"This extension allows you to use git-style suffixes to refer to the\n"
+"ancestors of a specific revision.\n"
 "\n"
 "For example, if you can refer to a revision as \"foo\", then:\n"
 "\n"
@@ -3617,12 +3656,12 @@
 msgid ""
 "sending Mercurial changesets as a series of patch emails\n"
 "\n"
-"The series is started off with a \"[PATCH 0 of N]\" introduction,\n"
-"which describes the series as a whole.\n"
-"\n"
-"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 body parts:\n"
+"The series is started off with a \"[PATCH 0 of N]\" introduction, which\n"
+"describes the series as a whole.\n"
+"\n"
+"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:\n"
 "\n"
 "  The remainder of the changeset description.\n"
 "\n"
@@ -3631,11 +3670,11 @@
 "  The patch itself, as generated by \"hg export\".\n"
 "\n"
 "Each message refers to all of its predecessors using the In-Reply-To\n"
-"and References headers, so they will show up as a sequence in\n"
-"threaded mail and news readers, and in mail archives.\n"
+"and References headers, so they will show up as a sequence in threaded\n"
+"mail and news readers, and in mail archives.\n"
 "\n"
 "For each changeset, you will be prompted with a diffstat summary and\n"
-"the changeset summary, so you can be sure you are sending the right "
+"the changeset summary, so you can be sure you are sending the right\n"
 "changes.\n"
 "\n"
 "To enable this extension:\n"
@@ -3643,7 +3682,8 @@
 "  [extensions]\n"
 "  hgext.patchbomb =\n"
 "\n"
-"To configure other defaults, add a section like this to your hgrc file:\n"
+"To configure other defaults, add a section like this to your hgrc\n"
+"file:\n"
 "\n"
 "  [email]\n"
 "  from = My Name <my@email>\n"
@@ -3655,24 +3695,24 @@
 "as a patchbomb.\n"
 "\n"
 "To avoid sending patches prematurely, it is a good idea to first run\n"
-"the \"email\" command with the \"-n\" option (test only).  You will be\n"
+"the \"email\" command with the \"-n\" option (test only). You will be\n"
 "prompted for an email recipient address, a subject an an introductory\n"
-"message describing the patches of your patchbomb.  Then when all is\n"
+"message describing the patches of your patchbomb. Then when all is\n"
 "done, patchbomb messages are displayed. If PAGER environment variable\n"
-"is set, your pager will be fired up once for each patchbomb message, so\n"
-"you can verify everything is alright.\n"
-"\n"
-"The \"-m\" (mbox) option is also very useful.  Instead of previewing\n"
-"each patchbomb message in a pager or sending the messages directly,\n"
-"it will create a UNIX mailbox file with the patch emails.  This\n"
-"mailbox file can be previewed with any mail user agent which supports\n"
-"UNIX mbox files, i.e. with mutt:\n"
+"is set, your pager will be fired up once for each patchbomb message,\n"
+"so you can verify everything is alright.\n"
+"\n"
+"The \"-m\" (mbox) option is also very useful. Instead of previewing each\n"
+"patchbomb message in a pager or sending the messages directly, it will\n"
+"create a UNIX mailbox file with the patch emails. This mailbox file\n"
+"can be previewed with any mail user agent which supports UNIX mbox\n"
+"files, e.g. with mutt:\n"
 "\n"
 "  % mutt -R -f mbox\n"
 "\n"
 "When you are previewing the patchbomb messages, you can use `formail'\n"
-"(a utility that is commonly installed as part of the procmail package),\n"
-"to send each message out:\n"
+"(a utility that is commonly installed as part of the procmail\n"
+"package), to send each message out:\n"
 "\n"
 "  % formail -s sendmail -bm -t < mbox\n"
 "\n"
@@ -3680,9 +3720,9 @@
 "\n"
 "You can also either configure the method option in the email section\n"
 "to be a sendmail compatable mailer or fill out the [smtp] section so\n"
-"that the patchbomb extension can automatically send patchbombs directly\n"
-"from the commandline. See the [email] and [smtp] sections in hgrc(5)\n"
-"for details."
+"that the patchbomb extension can automatically send patchbombs\n"
+"directly from the commandline. See the [email] and [smtp] sections in\n"
+"hgrc(5) for details."
 msgstr ""
 
 msgid "Please enter a valid value.\n"
@@ -3698,23 +3738,23 @@
 "send changesets by email\n"
 "\n"
 "    By default, diffs are sent in the format generated by hg export,\n"
-"    one per message.  The series starts with a \"[PATCH 0 of N]\"\n"
+"    one per message. The series starts with a \"[PATCH 0 of N]\"\n"
 "    introduction, which describes the series as a whole.\n"
 "\n"
 "    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 body parts.  First, the rest of\n"
-"    the changeset description.  Next, (optionally) if the diffstat\n"
+"    The message contains two or three body parts. First, the rest of\n"
+"    the changeset description. Next, (optionally) if the diffstat\n"
 "    program is installed, the result of running diffstat on the patch.\n"
 "    Finally, the patch itself, as generated by \"hg export\".\n"
 "\n"
-"    With --outgoing, emails will be generated for patches not\n"
-"    found in the destination repository (or only those which are\n"
-"    ancestors of the specified revisions if any are provided)\n"
-"\n"
-"    With --bundle, changesets are selected as for --outgoing,\n"
-"    but a single email containing a binary Mercurial bundle as an\n"
-"    attachment will be sent.\n"
+"    With --outgoing, emails will be generated for patches not found in\n"
+"    the destination repository (or only those which are ancestors of\n"
+"    the specified revisions if any are provided)\n"
+"\n"
+"    With --bundle, changesets are selected as for --outgoing, but a\n"
+"    single email containing a binary Mercurial bundle as an attachment\n"
+"    will be sent.\n"
 "\n"
 "    Examples:\n"
 "\n"
@@ -3734,8 +3774,8 @@
 "default\n"
 "    hg email -b -r 3000 DEST  # bundle of all ancestors of 3000 not in DEST\n"
 "\n"
-"    Before using this command, you will need to enable email in your hgrc.\n"
-"    See the [email] section in hgrc(5) for details.\n"
+"    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 ""
 
@@ -3784,7 +3824,7 @@
 msgid "send patches as inline attachments"
 msgstr ""
 
-msgid "email addresses of blind copy recipients"
+msgid "email addresses of blind carbon copy recipients"
 msgstr ""
 
 msgid "email addresses of copy recipients"
@@ -3823,6 +3863,9 @@
 msgid "send changes not in target as a binary bundle"
 msgstr ""
 
+msgid "file name of the bundle attachment"
+msgstr ""
+
 msgid "a revision to send"
 msgstr ""
 
@@ -3841,13 +3884,13 @@
 msgid ""
 "removes files not tracked by Mercurial\n"
 "\n"
-"    Delete files not known to Mercurial. This is useful to test local and\n"
-"    uncommitted changes in an otherwise-clean source tree.\n"
+"    Delete files not known to Mercurial. This is useful to test local\n"
+"    and uncommitted changes in an otherwise-clean source tree.\n"
 "\n"
 "    This means that purge will delete:\n"
 "     - Unknown files: files marked with \"?\" by \"hg status\"\n"
-"     - Empty directories: in fact Mercurial ignores directories unless they\n"
-"       contain files under source control managment\n"
+"     - Empty directories: in fact Mercurial ignores directories unless\n"
+"       they contain files under source control managment\n"
 "    But it will leave untouched:\n"
 "     - Modified and unmodified tracked files\n"
 "     - Ignored files (unless --all is specified)\n"
@@ -3856,9 +3899,10 @@
 "    If directories are given on the command line, only files in these\n"
 "    directories are considered.\n"
 "\n"
-"    Be careful with purge, as you could irreversibly delete some files you\n"
-"    forgot to add to the repository. If you only want to print the list of\n"
-"    files that this program would delete, use the --print option.\n"
+"    Be careful with purge, as you could irreversibly delete some files\n"
+"    you forgot to add to the repository. If you only want to print the\n"
+"    list of files that this program would delete, use the --print\n"
+"    option.\n"
 "    "
 msgstr ""
 
@@ -3896,7 +3940,7 @@
 msgid ""
 "move sets of revisions to a different ancestor\n"
 "\n"
-"This extension lets you rebase changesets in an existing Mercurial "
+"This extension lets you rebase changesets in an existing Mercurial\n"
 "repository.\n"
 "\n"
 "For more information:\n"
@@ -3912,19 +3956,13 @@
 msgid ""
 "move changeset (and descendants) to a different branch\n"
 "\n"
-"    Rebase uses repeated merging to graft changesets from one part of "
-"history\n"
-"    onto another. This can be useful for linearizing local changes relative "
-"to\n"
-"    a master development tree.\n"
-"\n"
-"    If a rebase is interrupted to manually resolve a merge, it can be "
-"continued\n"
-"    with --continue or aborted with --abort.\n"
-"    "
-msgstr ""
-
-msgid "cannot use both keepbranches and extrafn"
+"    Rebase uses repeated merging to graft changesets from one part of\n"
+"    history onto another. This can be useful for linearizing local\n"
+"    changes relative to a master development tree.\n"
+"\n"
+"    If a rebase is interrupted to manually resolve a merge, it can be\n"
+"    continued with --continue or aborted with --abort.\n"
+"    "
 msgstr ""
 
 msgid "cannot use both abort and continue"
@@ -3942,6 +3980,9 @@
 msgid "nothing to rebase\n"
 msgstr ""
 
+msgid "cannot use both keepbranches and extrafn"
+msgstr ""
+
 msgid "rebase merging completed\n"
 msgstr ""
 
@@ -4007,6 +4048,9 @@
 msgid "cannot use revision %d as base, result would have 3 parents"
 msgstr ""
 
+msgid "Return true if the given patch is in git format"
+msgstr ""
+
 msgid "Update rebased mq patches - finalize and then import them"
 msgstr ""
 
@@ -4082,12 +4126,6 @@
 msgid "rebase working directory to branch head"
 msgstr ""
 
-msgid "keep original revisions"
-msgstr ""
-
-msgid "keep original branches"
-msgstr ""
-
 msgid "rebase from a given revision"
 msgstr ""
 
@@ -4100,6 +4138,12 @@
 msgid "collapse the rebased revisions"
 msgstr ""
 
+msgid "keep original revisions"
+msgstr ""
+
+msgid "keep original branches"
+msgstr ""
+
 msgid "continue an interrupted rebase"
 msgstr ""
 
@@ -4107,7 +4151,8 @@
 msgstr ""
 
 msgid ""
-"hg rebase [-s rev | -b rev] [-d rev] [--collapse] | [-c] | [-a] | [--keep]"
+"hg rebase [-s rev | -b rev] [-d rev] [--collapse] [--keep] [--keepbranches] "
+"| [-c] | [-a]"
 msgstr ""
 
 msgid "interactive change selection during commit or qrefresh"
@@ -4221,6 +4266,10 @@
 msgid "record this change to %r?"
 msgstr ""
 
+#, python-format
+msgid "record change %d/%d to %r?"
+msgstr ""
+
 msgid ""
 "interactively select changes to commit\n"
 "\n"
@@ -4231,7 +4280,7 @@
 "\n"
 "    You will be prompted for whether to record changes to each\n"
 "    modified file, and for files with multiple changes, for each\n"
-"    change to use.  For each query, the following responses are\n"
+"    change to use. For each query, the following responses are\n"
 "    possible:\n"
 "\n"
 "    y - record this change\n"
@@ -4305,8 +4354,8 @@
 "\n"
 "This extension allows you to transplant patches from another branch.\n"
 "\n"
-"Transplanted patches are recorded in .hg/transplant/transplants, as a map\n"
-"from a changeset hash to its hash in the source repository.\n"
+"Transplanted patches are recorded in .hg/transplant/transplants, as a\n"
+"map from a changeset hash to its hash in the source repository.\n"
 msgstr ""
 
 msgid ""
@@ -4398,8 +4447,8 @@
 "    (transplanted from CHANGESETHASH)\n"
 "\n"
 "    You can rewrite the changelog message with the --filter option.\n"
-"    Its argument will be invoked with the current changelog message\n"
-"    as $1 and the patch as $2.\n"
+"    Its argument will be invoked with the current changelog message as\n"
+"    $1 and the patch as $2.\n"
 "\n"
 "    If --source is specified, selects changesets from the named\n"
 "    repository. If --branch is specified, selects changesets from the\n"
@@ -4407,19 +4456,21 @@
 "    is specified, all changesets on the branch will be transplanted,\n"
 "    otherwise you will be prompted to select the changesets you want.\n"
 "\n"
-"    hg transplant --branch REVISION --all will rebase the selected branch\n"
-"    (up to the named revision) onto your current working directory.\n"
-"\n"
-"    You can optionally mark selected transplanted changesets as\n"
-"    merge changesets. You will not be prompted to transplant any\n"
-"    ancestors of a merged transplant, and you can merge descendants\n"
-"    of them normally instead of transplanting them.\n"
+"    hg transplant --branch REVISION --all will rebase the selected\n"
+"    branch (up to the named revision) onto your current working\n"
+"    directory.\n"
+"\n"
+"    You can optionally mark selected transplanted changesets as merge\n"
+"    changesets. You will not be prompted to transplant any ancestors\n"
+"    of a merged transplant, and you can merge descendants of them\n"
+"    normally instead of transplanting them.\n"
 "\n"
 "    If no merges or revisions are provided, hg transplant will start\n"
 "    an interactive changeset browser.\n"
 "\n"
-"    If a changeset application fails, you can fix the merge by hand and\n"
-"    then resume where you left off by calling hg transplant --continue.\n"
+"    If a changeset application fails, you can fix the merge by hand\n"
+"    and then resume where you left off by calling hg transplant\n"
+"    --continue.\n"
 "    "
 msgstr ""
 
@@ -4475,18 +4526,18 @@
 msgid ""
 "allow to use MBCS path with problematic encoding.\n"
 "\n"
-"Some MBCS encodings are not good for some path operations\n"
-"(i.e. splitting path, case conversion, etc.) with its encoded bytes.\n"
-"We call such a encoding (i.e. shift_jis and big5) as \"problematic\n"
-"encoding\".  This extension can be used to fix the issue with those\n"
-"encodings by wrapping some functions to convert to unicode string\n"
-"before path operation.\n"
+"Some MBCS encodings are not good for some path operations (i.e.\n"
+"splitting path, case conversion, etc.) with its encoded bytes. We call\n"
+"such a encoding (i.e. shift_jis and big5) as \"problematic encoding\".\n"
+"This extension can be used to fix the issue with those encodings by\n"
+"wrapping some functions to convert to unicode string before path\n"
+"operation.\n"
 "\n"
 "This extension is usefull for:\n"
 " * Japanese Windows users using shift_jis encoding.\n"
 " * Chinese Windows users using big5 encoding.\n"
-" * All users who use a repository with one of problematic encodings\n"
-"   on case-insensitive file system.\n"
+" * All users who use a repository with one of problematic encodings on\n"
+"   case-insensitive file system.\n"
 "\n"
 "This extension is not needed for:\n"
 " * Any user who use only ascii chars in path.\n"
@@ -4494,15 +4545,17 @@
 "\n"
 "Note that there are some limitations on using this extension:\n"
 " * You should use single encoding in one repository.\n"
-" * You should set same encoding for the repository by locale or HGENCODING.\n"
+" * You should set same encoding for the repository by locale or\n"
+"   HGENCODING.\n"
 "\n"
 "To use this extension, enable the extension in .hg/hgrc or ~/.hgrc:\n"
 "\n"
 "  [extensions]\n"
 "  hgext.win32mbcs =\n"
 "\n"
-"Path encoding conversion are done between unicode and util._encoding\n"
-"which is decided by mercurial from current locale setting or HGENCODING.\n"
+"Path encoding conversion are done between unicode and\n"
+"encoding.encoding which is decided by mercurial from current locale\n"
+"setting or HGENCODING.\n"
 "\n"
 msgstr ""
 
@@ -4555,19 +4608,18 @@
 msgid ""
 "zeroconf support for mercurial repositories\n"
 "\n"
-"Zeroconf enabled repositories will be announced in a network without the "
-"need\n"
-"to configure a server or a service. They can be discovered without knowing\n"
-"their actual IP address.\n"
-"\n"
-"To use the zeroconf extension add the following entry to your hgrc file:\n"
+"Zeroconf enabled repositories will be announced in a network without\n"
+"the need to configure a server or a service. They can be discovered\n"
+"without knowing their actual IP address.\n"
+"\n"
+"To use the zeroconf extension add the following entry to your hgrc\n"
+"file:\n"
 "\n"
 "[extensions]\n"
 "hgext.zeroconf =\n"
 "\n"
-"To allow other people to discover your repository using run \"hg serve\" in "
-"your\n"
-"repository.\n"
+"To allow other people to discover your repository using run \"hg serve\"\n"
+"in your repository.\n"
 "\n"
 " $ cd test\n"
 " $ hg serve\n"
@@ -4626,7 +4678,7 @@
 
 #, python-format
 msgid "can't read commit message '%s': %s"
-msgstr "Kan ikke lase commit besked '%s': %s"
+msgstr "Kan ikke læse arkiveringsbesked '%s': %s"
 
 msgid "limit must be a positive integer"
 msgstr ""
@@ -4678,8 +4730,12 @@
 msgstr "%s: kan ikke kopiere - %s\n"
 
 #, python-format
-msgid "%s %s to %s\n"
-msgstr "%s: %s til %s\n"
+msgid "moving %s to %s\n"
+msgstr ""
+
+#, python-format
+msgid "copying %s to %s\n"
+msgstr ""
 
 #, python-format
 msgid "%s has not been committed yet, so no copy data will be stored for %s.\n"
@@ -4808,33 +4864,35 @@
 msgid ""
 "add the specified files on the next commit\n"
 "\n"
-"    Schedule files to be version controlled and added to the repository.\n"
+"    Schedule files to be version controlled and added to the\n"
+"    repository.\n"
 "\n"
 "    The files will be added to the repository at the next commit. To\n"
 "    undo an add before that, see hg revert.\n"
 "\n"
-"    If no names are given, add all files in the repository.\n"
-"    "
-msgstr ""
-"tilføj de angivne filer ved næste commit\n"
+"    If no names are given, add all files to the repository.\n"
+"    "
+msgstr ""
+"tilføj de angivne filer ved næste arkivering\n"
 "\n"
 "    Opskriv filer til at blive versionsstyret og tilføjet til arkivet.\n"
 "\n"
-"    Filerne vil bliver tilføjet til arkivet ved næste commit. For at\n"
-"    omgøre en tilføjelse før det, se hg revert.\n"
-"\n"
-"    Hvis der ikke er angivet nogen navne tilføjes alle filer i\n"
+"    Filerne vil bliver tilføjet til arkivet ved næste arkivering. For\n"
+"    at omgøre en tilføjelse før det, se hg revert.\n"
+"\n"
+"    Hvis der ikke er angivet nogen navne tilføjes alle filer til\n"
 "    arkivet.\n"
 "    "
 
 msgid ""
 "add all new files, delete all missing files\n"
 "\n"
-"    Add all new files and remove all missing files from the repository.\n"
-"\n"
-"    New files are ignored if they match any of the patterns in .hgignore. "
-"As\n"
-"    with add, these changes take effect at the next commit.\n"
+"    Add all new files and remove all missing files from the\n"
+"    repository.\n"
+"\n"
+"    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.\n"
 "\n"
 "    Use the -s option to detect renamed files. With a parameter > 0,\n"
 "    this compares every removed file with every added file and records\n"
@@ -4853,18 +4911,28 @@
 msgid ""
 "show changeset information per file line\n"
 "\n"
-"    List changes in files, showing the revision id responsible for each "
-"line\n"
-"\n"
-"    This command is useful to discover who did a change or when a change "
-"took\n"
-"    place.\n"
+"    List changes in files, showing the revision id responsible for\n"
+"    each line\n"
+"\n"
+"    This command is useful to discover who did a change or when a\n"
+"    change took place.\n"
 "\n"
 "    Without the -a option, annotate will avoid processing files it\n"
 "    detects as binary. With -a, annotate will generate an annotation\n"
 "    anyway, probably with undesirable results.\n"
 "    "
 msgstr ""
+"vis information om ændringer pr linie\n"
+"\n"
+"    Vis ændringer i filer ved at vise revisions ID'et som er\n"
+"    ansvarligt for hver linie\n"
+"\n"
+"    Denne kommando er nyttig til at opdage hvem der lavede en ændring\n"
+"    og hvornår en ændring blev foretaget.\n"
+"\n"
+"    Uden -a tilvalget vil annotate undgå at behandle filer som den\n"
+"    detekterer som binære. Med -a vil annotate generere en annotering\n"
+"    alligevel, sandsynligvis med et uønsket resultat."
 
 msgid "at least one file name or pattern required"
 msgstr ""
@@ -4882,8 +4950,8 @@
 "    By default, the revision used is the parent of the working\n"
 "    directory; use \"-r\" to specify a different revision.\n"
 "\n"
-"    To specify the type of archive to create, use \"-t\". Valid\n"
-"    types are:\n"
+"    To specify the type of archive to create, use \"-t\". Valid types\n"
+"    are:\n"
 "\n"
 "    \"files\" (default): a directory full of files\n"
 "    \"tar\": tar archive, uncompressed\n"
@@ -4893,11 +4961,11 @@
 "    \"zip\": zip archive, compressed using deflate\n"
 "\n"
 "    The exact name of the destination archive or directory is given\n"
-"    using a format string; see \"hg help export\" for details.\n"
+"    using a format string; see 'hg help export' for details.\n"
 "\n"
 "    Each member added to an archive file has a directory prefix\n"
-"    prepended. Use \"-p\" to specify a format string for the prefix.\n"
-"    The default is the basename of the archive, with suffixes removed.\n"
+"    prepended. Use \"-p\" to specify a format string for the prefix. The\n"
+"    default is the basename of the archive, with suffixes removed.\n"
 "    "
 msgstr ""
 
@@ -4922,13 +4990,30 @@
 "\n"
 "    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\n"
-"    hand. The result of this merge is not committed, as for a normal\n"
-"    merge.\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.\n"
 "\n"
 "    See 'hg help dates' for a list of formats valid for -d/--date.\n"
 "    "
 msgstr ""
+"omgør effekten af tidligere ændringer\n"
+"\n"
+"    Arkiverer de omgjorte ændringer som en ny ændring. Den nye ændring\n"
+"    er et barn af den omgjorte ændring.\n"
+"\n"
+"    Hvis du omgør en ændring som ikke er spidsen, så vil et der blive\n"
+"    lavet et nyt hoved. Dette hoved vil være den nye spids og du bør\n"
+"    sammenføje denne omgjorte ændring med et andet hoved (det\n"
+"    nuværende hoved som standard).\n"
+"\n"
+"    Med --merge tilvalget vil forældren til arbejdskataloget bliver\n"
+"    husket og det nye hoved vil blive sammenføjet med denne ændring\n"
+"    bagefter. Dette sparer dig for at lave sammenføjningen selv.\n"
+"    Resultatet af denne sammenføjning er ikke arkiveret, som ved en\n"
+"    normal sammenføjning.\n"
+"\n"
+"    Se 'hg help dates' for en liste af gyldige formater til -d/--date.\n"
+"    "
 
 msgid "please specify just one revision"
 msgstr "angiv venligst kun en revision"
@@ -4973,27 +5058,23 @@
 msgid ""
 "subdivision search of changesets\n"
 "\n"
-"    This command helps to find changesets which introduce problems.\n"
-"    To use, mark the earliest changeset you know exhibits the problem\n"
-"    as bad, then mark the latest changeset which is free from the\n"
-"    problem as good. Bisect will update your working directory to a\n"
-"    revision for testing (unless the --noupdate option is specified).\n"
-"    Once you have performed tests, mark the working directory as bad\n"
-"    or good and bisect will either update to another candidate changeset\n"
-"    or announce that it has found the bad revision.\n"
+"    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 --noupdate option is specified). Once you\n"
+"    have performed tests, mark the working directory as bad or good\n"
+"    and bisect will either update to another candidate changeset or\n"
+"    announce that it has found the bad revision.\n"
 "\n"
 "    As a shortcut, you can also use the revision argument to mark a\n"
 "    revision as good or bad without checking it out first.\n"
 "\n"
-"    If you supply a command it will be used for automatic bisection. Its "
-"exit\n"
-"    status will be used as flag to mark revision as bad or good. In case "
-"exit\n"
-"    status is 0 the revision is marked as good, 125 - skipped, 127 (command "
-"not\n"
-"    found) - bisection will be aborted and any other status bigger than 0 "
-"will\n"
-"    mark revision as bad.\n"
+"    If you supply a command it will be used for automatic bisection.\n"
+"    Its exit status will be used as flag to mark revision as bad or\n"
+"    good. In case exit status is 0 the revision is marked as good, 125\n"
+"    - skipped, 127 (command not found) - bisection will be aborted;\n"
+"    any other status bigger than 0 will mark revision as bad.\n"
 "    "
 msgstr ""
 
@@ -5037,14 +5118,16 @@
 "set or show the current branch name\n"
 "\n"
 "    With no argument, show the current branch name. With one argument,\n"
-"    set the working directory branch name (the branch does not exist in\n"
-"    the repository until the next commit).\n"
-"\n"
-"    Unless --force is specified, branch will not let you set a\n"
-"    branch name that shadows an existing branch.\n"
+"    set the working directory branch name (the branch does not exist\n"
+"    in the repository until the next commit). It is recommended to use\n"
+"    the 'default' branch as your primary development branch.\n"
+"\n"
+"    Unless --force is specified, branch will not let you set a branch\n"
+"    name that shadows an existing branch.\n"
 "\n"
 "    Use --clean to reset the working directory branch to that of the\n"
-"    parent of the working directory, negating a previous branch change.\n"
+"    parent of the working directory, negating a previous branch\n"
+"    change.\n"
 "\n"
 "    Use the command 'hg update' to switch to an existing branch.\n"
 "    "
@@ -5077,7 +5160,7 @@
 "create a changegroup file\n"
 "\n"
 "    Generate a compressed changegroup file collecting changesets not\n"
-"    found in the other repository.\n"
+"    known to be in another repository.\n"
 "\n"
 "    If no destination repository is specified the destination is\n"
 "    assumed to have all the nodes specified by one or more --base\n"
@@ -5085,10 +5168,10 @@
 "    --all (or --base null). To change the compression method applied,\n"
 "    use the -t option (by default, bundles are compressed using bz2).\n"
 "\n"
-"    The bundle file can then be transferred using conventional means and\n"
-"    applied to another repository with the unbundle or pull command.\n"
-"    This is useful when direct push and pull are not available or when\n"
-"    exporting an entire repository is undesirable.\n"
+"    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.\n"
 "\n"
 "    Applying bundles preserves all changeset contents including\n"
 "    permissions, copy/rename information, and revision history.\n"
@@ -5104,8 +5187,8 @@
 msgid ""
 "output the current or given revision of files\n"
 "\n"
-"    Print the specified files as they were at the given revision.\n"
-"    If no revision is given, the parent of the working directory is used,\n"
+"    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.\n"
 "\n"
 "    Output may be to a file, in which case the name of the file is\n"
@@ -5113,7 +5196,7 @@
 "    for the export command, with the following additions:\n"
 "\n"
 "    %s   basename of file being printed\n"
-"    %d   dirname of file being printed, or '.' if in repo root\n"
+"    %d   dirname of file being printed, or '.' if in repository root\n"
 "    %p   root-relative path name of file being printed\n"
 "    "
 msgstr ""
@@ -5129,6 +5212,23 @@
 "    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.\n"
 "\n"
+"    If you use the -r option to clone up to a specific revision, no\n"
+"    subsequent revisions (including subsequent tags) will be present\n"
+"    in the cloned repository. This option implies --pull, even on\n"
+"    local repositories.\n"
+"\n"
+"    By default, clone will check out the head of the 'default' branch.\n"
+"    If the -U option is used, the new clone will contain only a\n"
+"    repository (.hg) and no working copy (the working copy parent is\n"
+"    the null revision).\n"
+"\n"
+"    See 'hg help urls' for valid source format details.\n"
+"\n"
+"    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"
+"    Look at the help text for URLs for important details about ssh://\n"
+"    URLs.\n"
+"\n"
 "    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 checked out files). Some\n"
@@ -5141,33 +5241,69 @@
 "\n"
 "      $ cp -al REPO REPOCLONE\n"
 "\n"
-"    This is the fastest way to clone, but it is not always safe.  The\n"
+"    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"
+"    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.\n"
 "\n"
-"    If you use the -r option to clone up to a specific revision, no\n"
-"    subsequent revisions will be present in the cloned repository.\n"
-"    This option implies --pull, even on local repositories.\n"
-"\n"
-"    If the -U option is used, the new clone will contain only a repository\n"
-"    (.hg) and no working copy (the working copy parent is the null "
-"revision).\n"
-"\n"
-"    See 'hg help urls' for valid source format details.\n"
-"\n"
-"    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"
-"    Look at the help text for urls for important details about ssh:// URLs.\n"
-"    "
-msgstr ""
+"    "
+msgstr ""
+"lav en kopi af et eksisterende arkiv\n"
+"\n"
+"    Lav en kopi af et eksisterende arkiv i en ny mappe.\n"
+"\n"
+"    Hvis der ikke angivet et navn til destinationen, så bruges\n"
+"    grundnavnet for kilden.\n"
+"\n"
+"    Placeringen af kilden tilføjes til det nye arkivs .hg/hgrc fil som\n"
+"    den nye standard for fremtidige kald til 'hg pull'.\n"
+"\n"
+"    Hvis du bruger -r tilvalget for at klone op til en specifik\n"
+"    revision, så vil ingen efterfølgende revisioner (inklusiv\n"
+"    efterfølgende mærkater) findes i det klonede arkiv. Denne\n"
+"    valgmulighed medfører --pull, selv ved lokale arkiver.\n"
+"\n"
+"    Som udgangspunkt vil clone hente hovedet af 'default' grenen. Hvis\n"
+"    -U tilvalget bruges vil den nye klon kun indeholde et arkiv (.hg)\n"
+"    og intet arbejdskatalog (arbejdskatalogets forældre er sat til nul\n"
+"    revisionen).\n"
+"\n"
+"    Se 'hg help urls' for detaljer om gyldige formatter for kilden.\n"
+"\n"
+"    Det er muligt at specificere en ssh:// URL som destination, men\n"
+"    der vil ikke bliver oprettet nogen .hg/hgrc fil eller noget\n"
+"    arbejdskatalog på den anden side. Se hjælpeteksten for URLer for\n"
+"    vigtige detaljer om ssh:// URLer.\n"
+"\n"
+"    Af effektivitetsgrunde bruges hårde lænker ved kloning når kilden\n"
+"    og destinationen er på det samme filsystem (bemærk at dette kun\n"
+"    gælder for arkivdata og ikke for de udhentede filer). Nogle\n"
+"    filsystemer, såsom AFS, implementerer ikke hårde lænker korrekt,\n"
+"    men rapporterer ingen fejl. I disse tilfælde skal --pull bruges\n"
+"    for at undgå hårde lænker.\n"
+"\n"
+"    I nogle tilfælde kan man klone arkiver og udhentede filer med\n"
+"\n"
+"      $ cp -al ARKIV ARKIVKLON\n"
+"\n"
+"    Dette er den hurtigste måde at klone på, men det er ikke altid\n"
+"    sikkert. Operationen er ikke atomisk (det er op til dig at sikre\n"
+"    at ARKIV ikke bliver modificeret undervejs) og du skal selv sørge\n"
+"    for at din tekstbehandler bryder hårde lænker (Emacs og de fleste\n"
+"    Linux Kernel værktøjer gør det). Dette er desuden ikke kompatibelt\n"
+"    med visse udvidelser som placerer deres metadata under .hg mappen,\n"
+"    såsom mq.\n"
+"\n"
+"    "
 
 msgid ""
 "commit the specified files or all outstanding changes\n"
 "\n"
-"    Commit changes to the given files into the repository.\n"
+"    Commit changes to the given files into the repository. Unlike a\n"
+"    centralized RCS, this operation is a local operation. See hg push\n"
+"    for means to actively distribute your changes.\n"
 "\n"
 "    If a list of files is omitted, all changes reported by \"hg status\"\n"
 "    will be committed.\n"
@@ -5175,12 +5311,29 @@
 "    If you are committing the result of a merge, do not provide any\n"
 "    file names or -I/-X filters.\n"
 "\n"
-"    If no commit message is specified, the configured editor is started to\n"
-"    enter a message.\n"
+"    If no commit message is specified, the configured editor is\n"
+"    started to prompt you for a message.\n"
 "\n"
 "    See 'hg help dates' for a list of formats valid for -d/--date.\n"
 "    "
 msgstr ""
+"arkiver de specificerede filer eller alle udestående ændringer\n"
+"\n"
+"    Arkiver ændringer i de angivne filer ind i arkivet. Dette er en\n"
+"    lokal operation, i modsætning til et centraliseret RCS. Se hg push\n"
+"    for en måde til aktivt distribuere dine ændringer.\n"
+"\n"
+"    Hvis en liste af filer udelades vil alle ændringer rapporteret af\n"
+"    \"hg status\" blive arkiveret.\n"
+"\n"
+"    Hvis du arkiverer resultatet af en sammenføjning, undlad da at\n"
+"    angive filnavne eller -I/-X filtre.\n"
+"\n"
+"    Hvis der ikke angives en arkiveringsbesked, så starten den\n"
+"    konfigurerede editor for at bede dig om en besked.\n"
+"\n"
+"    Se 'hg help dates' for en liste af gyldige formater til -d/--date.\n"
+"    "
 
 msgid "created new head\n"
 msgstr "lavede et nyt hoved\n"
@@ -5194,13 +5347,13 @@
 "\n"
 "    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"
-"    there can only be one source.\n"
+"    the source must be a single file.\n"
 "\n"
 "    By default, this command copies the contents of files as they\n"
 "    stand in the working directory. If invoked with --after, the\n"
 "    operation is recorded, but no copying is performed.\n"
 "\n"
-"    This command takes effect in the next commit. To undo a copy\n"
+"    This command takes effect with the next commit. To undo a copy\n"
 "    before that, see hg revert.\n"
 "    "
 msgstr ""
@@ -5397,9 +5550,32 @@
 "    probably with undesirable results.\n"
 "\n"
 "    Use the --git option to generate diffs in the git extended diff\n"
-"    format. Read the diffs help topic for more information.\n"
-"    "
-msgstr ""
+"    format. For more information, read 'hg help diffs'.\n"
+"    "
+msgstr ""
+"find ændringer i hele arkivet (eller udvalgte filer)\n"
+"\n"
+"    Vis ændringer mellem revisioner for de udvalgte filer.\n"
+"\n"
+"    Ændringerne mellem filerne vises i unified diff-formatet.\n"
+"\n"
+"    BEMÆRK: diff kan generere overraskende resultater for\n"
+"    sammenføjninger, idet den som udgangspunkt vil sammenligne med\n"
+"    arbejdskatalogets første forældre, hvis der ikke angivet en\n"
+"    revision.\n"
+"\n"
+"    Når der gives to revisioner som argumenter, så vises ændringer\n"
+"    mellem disse. Hvis der kun angives en revision, så sammenlignes\n"
+"    denne revision med arbejdskataloget, og når der ikke angives nogen\n"
+"    revisioner, så sammenlignes arbejdskataloget med dennes forældre.\n"
+"\n"
+"    Uden -a tilvalget vil diff undgå at generere ændringer for filer\n"
+"    som den detekterer som binære. Med -a vil diff generere ændringer\n"
+"    alligevel, sandsynligvis med uønskede resultater.\n"
+"\n"
+"    Brug --git tilvalget for at generere ændringer i det udvidede git\n"
+"    diff-format. For mere information, læs hg help diffs.\n"
+"    "
 
 msgid ""
 "dump the header and diffs for one or more changesets\n"
@@ -5409,8 +5585,9 @@
 "    The information shown in the changeset header is: author,\n"
 "    changeset hash, parent(s) and commit comment.\n"
 "\n"
-"    NOTE: export may generate unexpected diff output for merge changesets,\n"
-"    as it will compare the merge changeset against its first parent only.\n"
+"    NOTE: export may generate unexpected diff output for merge\n"
+"    changesets, as it will compare the merge changeset against its\n"
+"    first parent only.\n"
 "\n"
 "    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:\n"
@@ -5431,10 +5608,45 @@
 "    Use the --git option to generate diffs in the git extended diff\n"
 "    format. Read the diffs help topic for more information.\n"
 "\n"
-"    With the --switch-parent option, the diff will be against the second\n"
-"    parent. It can be useful to review a merge.\n"
-"    "
-msgstr ""
+"    With the --switch-parent option, the diff will be against the\n"
+"    second parent. It can be useful to review a merge.\n"
+"    "
+msgstr ""
+"dump hovedet og ændringerne for en eller flere ændringer\n"
+"\n"
+"    Udskriv ændrings-hovedet og ændringerne for en eller flere\n"
+"    revisioner.\n"
+"\n"
+"    Informationen som vises i ændrings-hovedet er: forfatter,\n"
+"    ændringshash, forældrene og arkiveringsbeskeden.\n"
+"\n"
+"    BEMÆRK: export kan generere uventet diff uddata for\n"
+"    sammenføjningsændringer idet den kun vil sammenligne\n"
+"    sammenføjningsændringen med dennes første forældre.\n"
+"\n"
+"    Uddata kan gemmes i en fil, og filnavnet er givet ved en\n"
+"    format-streng. Formatteringsreglerne er som følger:\n"
+"\n"
+"    %%   litteral % tegn\n"
+"    %H   ændringshash (40 byte heksadecimal)\n"
+"    %N   antallet af rettelser som bliver genereret\n"
+"    %R   revisionnummer for ændringen\n"
+"    %b   grundnavn for det eksporterede arkiv\n"
+"    %h   kortform ændringshash (12 byte heksadecimal)\n"
+"    %n   nul-fyldt sekvensnummer, startende ved 1\n"
+"    %r   nul-fyldt revisionsnummer for ændringen\n"
+"\n"
+"    Uden -a tilvalget vil annotate undgå at behandle filer som den\n"
+"    detekterer som binære. Med -a vil annotate generere en annotering\n"
+"    alligevel, sandsynligvis med et uønsket resultat.\n"
+"\n"
+"    Brug --git tilvalget for at generere ændringer i det udvidede git\n"
+"    diff-format. For mere information, læs hg help diffs.\n"
+"\n"
+"    Med --switch-parent tilvalget vil ændringerne blive beregnet i\n"
+"    forhold til den anden forældre. Dette kan være nyttigt til at\n"
+"    gennemse en sammenføjning.\n"
+"    "
 
 msgid "export requires at least one changeset"
 msgstr ""
@@ -5452,8 +5664,8 @@
 "\n"
 "    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\n"
-"    a match appears.\n"
+"    working directory. It always prints the revision number in which a\n"
+"    match appears.\n"
 "\n"
 "    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"
@@ -5499,7 +5711,8 @@
 "\n"
 "    With no arguments, print a list of commands and short help.\n"
 "\n"
-"    Given a topic, extension, or command name, print help for that topic."
+"    Given a topic, extension, or command name, print help for that\n"
+"    topic."
 msgstr ""
 
 msgid "global options:"
@@ -5587,14 +5800,15 @@
 msgid ""
 "identify the working copy or specified revision\n"
 "\n"
-"    With no revision, print a summary of the current state of the repo.\n"
+"    With no revision, print a summary of the current state of the\n"
+"    repository.\n"
 "\n"
 "    With a path, do a lookup in another repository.\n"
 "\n"
-"    This summary identifies the repository state using one or two parent\n"
-"    hash identifiers, followed by a \"+\" if there are uncommitted changes\n"
-"    in the working directory, a list of tags for this revision and a branch\n"
-"    name for non-default branches.\n"
+"    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.\n"
 "    "
 msgstr ""
 
@@ -5613,21 +5827,21 @@
 "    text/plain body parts before first diff are added to commit\n"
 "    message.\n"
 "\n"
-"    If the imported patch was generated by hg export, user and description\n"
-"    from patch override values from message headers and body. Values\n"
-"    given on command line with -m and -u override these.\n"
-"\n"
-"    If --exact is specified, import will set the working directory\n"
-"    to the parent of each patch before applying it, and will abort\n"
-"    if the resulting changeset has a different ID than the one\n"
-"    recorded in the patch. This may happen due to character set\n"
-"    problems or other deficiencies in the text patch format.\n"
+"    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 and -u override these.\n"
+"\n"
+"    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.\n"
 "\n"
 "    With --similarity, hg will attempt to discover renames and copies\n"
 "    in the patch in the same way as 'addremove'.\n"
 "\n"
-"    To read a patch from standard input, use patch name \"-\".\n"
-"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"    To read a patch from standard input, use patch name \"-\". See 'hg\n"
+"    help dates' for a list of formats valid for -d/--date.\n"
 "    "
 msgstr ""
 
@@ -5655,11 +5869,11 @@
 "show new changesets found in source\n"
 "\n"
 "    Show new changesets found in the specified path/URL or the default\n"
-"    pull location. These are the changesets that would be pulled if a pull\n"
-"    was requested.\n"
-"\n"
-"    For remote repository, using --bundle avoids downloading the changesets\n"
-"    twice if the incoming is followed by a pull.\n"
+"    pull location. These are the changesets that would be pulled if a\n"
+"    pull was requested.\n"
+"\n"
+"    For remote repository, using --bundle avoids downloading the\n"
+"    changesets twice if the incoming is followed by a pull.\n"
 "\n"
 "    See pull for valid source format details.\n"
 "    "
@@ -5677,6 +5891,17 @@
 "    See 'hg help urls' for more information.\n"
 "    "
 msgstr ""
+"opret et nyt arkiv i det givne katalog\n"
+"\n"
+"    Initialiser et nyt arkiv i det givne katalog. Hvis det givne\n"
+"    katalog ikke findes vil det blive oprettet.\n"
+"\n"
+"    Hvis intet katalog er angivet vil det nuværende katalog bliver\n"
+"    anvendt.\n"
+"\n"
+"    Det er muligt at angive en ssh:// URL som destination.\n"
+"    Se 'hg help urls' for mere information.\n"
+"    "
 
 msgid ""
 "locate files matching specific patterns\n"
@@ -5722,8 +5947,8 @@
 "    files and full commit message is shown.\n"
 "\n"
 "    NOTE: log -p may generate unexpected diff output for merge\n"
-"    changesets, as it will compare the merge changeset against its\n"
-"    first parent only. Also, the files: list will only reflect files\n"
+"    changesets, as it will only compare the merge changeset against\n"
+"    its first parent. Also, the files: list will only reflect files\n"
 "    that are different from BOTH parents.\n"
 "\n"
 "    "
@@ -5740,32 +5965,47 @@
 "output the current or given revision of the project manifest\n"
 "\n"
 "    Print a list of version controlled files for the given revision.\n"
-"    If no revision is given, the parent of the working directory is used,\n"
-"    or tip if no revision is checked out.\n"
-"\n"
-"    The manifest is the list of files being version controlled. If no "
-"revision\n"
-"    is given then the first parent of the working directory is used.\n"
-"\n"
-"    With -v flag, print file permissions, symlink and executable bits. With\n"
-"    --debug flag, print file revision hashes.\n"
+"    If no revision is given, the first parent of the working directory\n"
+"    is used, or tip if no revision is checked out.\n"
+"\n"
+"    With -v flag, print file permissions, symlink and executable bits.\n"
+"    With --debug flag, print file revision hashes.\n"
 "    "
 msgstr ""
 
 msgid ""
 "merge working directory with another revision\n"
 "\n"
-"    Merge the contents of the current working directory and the\n"
-"    requested revision. Files that changed between either parent are\n"
-"    marked as changed for the next commit and a commit must be\n"
-"    performed before any further updates are allowed.\n"
+"    The contents of the current working directory is updated with all\n"
+"    changes made in the requested revision since the last common\n"
+"    predecessor revision.\n"
+"\n"
+"    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 are allowed. The next commit has two parents.\n"
 "\n"
 "    If no revision is specified, the working directory's parent is a\n"
-"    head revision, and the current branch contains exactly one other head,\n"
-"    the other head is merged with by default. Otherwise, an explicit\n"
-"    revision to merge with must be provided.\n"
-"    "
-msgstr ""
+"    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 to merge with must be provided.\n"
+"    "
+msgstr ""
+"sammenføj arbejdskataloget med en anden revision\n"
+"\n"
+"    Indholdet af det nuværende arbejdskatalog opdateres med alle\n"
+"    ændringer lavet i den ønskede revision siden den sidste fælles\n"
+"    foregående revision.\n"
+"\n"
+"    Filer som ændrede sig i forhold til en af forældrene bliver\n"
+"    markeret som ændret med hensyn til næste arkivering, og\n"
+"    arkiveringen skal laves før yderligere opdateringer er tilladt.\n"
+"    Den næste arkiverede ændring får to forældre.\n"
+"\n"
+"    Hvis ingen revision angives og arbejdskatalogets forældre er en\n"
+"    hovedrevision og den nuværende gren indeholder præcis et andet\n"
+"    hoved, så sammenføjes der med dette hoved som standard. Ellers\n"
+"    skal en eksplicit revision angives.\n"
+"    "
 
 #, python-format
 msgid "branch '%s' has %d heads - please merge with an explicit rev"
@@ -5790,25 +6030,32 @@
 msgid ""
 "show changesets not found in destination\n"
 "\n"
-"    Show changesets not found in the specified destination repository or\n"
-"    the default push location. These are the changesets that would be "
-"pushed\n"
-"    if a push was requested.\n"
+"    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.\n"
 "\n"
 "    See pull for valid destination format details.\n"
 "    "
 msgstr ""
 
 msgid ""
-"show the parents of the working dir or revision\n"
-"\n"
-"    Print the working directory's parent revisions. If a\n"
-"    revision is given via --rev, the parent of that revision\n"
-"    will be printed. If a file argument is given, revision in\n"
-"    which the file was last changed (before the working directory\n"
-"    revision or the argument to --rev if given) is printed.\n"
-"    "
-msgstr ""
+"show the parents of the working directory or revision\n"
+"\n"
+"    Print the working directory's parent revisions. If a revision is\n"
+"    given via --rev, the parent of that revision will be printed. If a\n"
+"    file argument is given, revision in which the file was last\n"
+"    changed (before the working directory revision or the argument to\n"
+"    --rev if given) is printed.\n"
+"    "
+msgstr ""
+"vis forældrene til arbejdskataloget eller en revision\n"
+"\n"
+"    Udskriv arbejdskatalogets forældrerevisioner. Hvis en revision\n"
+"    angivet med --rev, så udskrives forældren til denne revision. Hvis\n"
+"    en fil er angivet, udskrives revisionen i hvilken filen sidst blev\n"
+"    ændret (før arbejdskatalogets revision eller argumentet til --rev,\n"
+"    hvis givet).\n"
+"    "
 
 msgid "can only specify an explicit file name"
 msgstr ""
@@ -5820,8 +6067,8 @@
 msgid ""
 "show aliases for remote repositories\n"
 "\n"
-"    Show definition of symbolic path name NAME. If no name is given, show\n"
-"    definition of available names.\n"
+"    Show definition of symbolic path name NAME. If no name is given,\n"
+"    show definition of available names.\n"
 "\n"
 "    Path names are defined in the [paths] section of /etc/mercurial/hgrc\n"
 "    and $HOME/.hgrc. If run inside a repository, .hg/hgrc is used, too.\n"
@@ -5845,16 +6092,34 @@
 msgid ""
 "pull changes from the specified source\n"
 "\n"
-"    Pull changes from a remote repository to a local one.\n"
+"    Pull changes from a remote repository to the local one.\n"
 "\n"
 "    This finds all changes from the repository at the specified path\n"
 "    or URL and adds them to the local repository. By default, this\n"
 "    does not update the copy of the project in the working directory.\n"
 "\n"
+"    Use hg incoming if you want to see what will be added by the next\n"
+"    pull without actually adding the changes to the repository.\n"
+"\n"
 "    If SOURCE is omitted, the 'default' path will be used.\n"
 "    See 'hg help urls' for more information.\n"
 "    "
 msgstr ""
+"hent ændringer fra den angivne kilde\n"
+"\n"
+"    Hiver ændringer fra et fjert arkiv til det lokale.\n"
+"\n"
+"    Dette finder alle ændringer fra arkivet på den specificerede sti\n"
+"    eller URL og tilføjer dem til det lokale arkiv. Som standard\n"
+"    opdateres arbejdskataloget ikke.\n"
+"\n"
+"    Brug hg incoming hvis du vil se hvad der vil blive tilføjet til\n"
+"    arkivet ved næste pull, men uden rent faktisk at tilføje\n"
+"    ændringerne til arkivet.\n"
+"\n"
+"    Hvis KILDE udelades, så bruges 'default' stien.\n"
+"    Se 'hg help urls' for mere information.\n"
+"    "
 
 msgid ""
 "Other repository doesn't support revision lookup, so a rev cannot be "
@@ -5866,23 +6131,44 @@
 "\n"
 "    Push changes from the local repository to the given destination.\n"
 "\n"
-"    This is the symmetrical operation for pull. It helps to move\n"
-"    changes from the current repository to a different one. If the\n"
-"    destination is local this is identical to a pull in that directory\n"
-"    from the current one.\n"
+"    This is the symmetrical operation for pull. It moves changes from\n"
+"    the current repository to a different one. If the destination is\n"
+"    local this is identical to a pull in that directory from the\n"
+"    current one.\n"
 "\n"
 "    By default, push will refuse to run if it detects the result would\n"
 "    increase the number of remote heads. This generally indicates the\n"
 "    the client has forgotten to pull and merge before pushing.\n"
 "\n"
-"    If -r is used, the named changeset and all its ancestors will be pushed\n"
-"    to the remote repository.\n"
-"\n"
-"    Look at the help text for urls for important details about ssh:// URLs.\n"
-"    If DESTINATION is omitted, a default path will be used.\n"
+"    If -r is used, the named revision and all its ancestors will be\n"
+"    pushed to the remote repository.\n"
+"\n"
+"    Look at the help text for URLs for important details about ssh://\n"
+"    URLs. If DESTINATION is omitted, a default path will be used.\n"
 "    See 'hg help urls' for more information.\n"
 "    "
 msgstr ""
+"skub ændringer til den angivne destination\n"
+"\n"
+"    Skubber ændringer fra det lokale arkiv til den givne destination.\n"
+"\n"
+"    Dette er den symmetriske operation for pull. Den flytter ændringer\n"
+"    fra det nuværende arkiv til et andet. Hvis destinationen er lokal,\n"
+"    så er dette identisk til et pull i destinationen af det nuværende\n"
+"    arkiv.\n"
+"\n"
+"    Som standard vil push nægte af køre hvis den detekterer at den vil\n"
+"    øge antallet af hoveder i destinationen. Dette indikerer normalt\n"
+"    at klienten har glemt at henge og sammenføje ændringerne før\n"
+"    skubningen.\n"
+"\n"
+"    Hvis -r bruges, så vil den navngivne revision og alle dets\n"
+"    forfædre bliver skubbet til det andet arkiv.\n"
+"\n"
+"    Se hjælpeteksten for URL'er for vigtige detaljer om ssh:// URL'er.\n"
+"    Hvis DESTINATION udelades vil en standard sti blive brugt.\n"
+"    Se 'hg help urls' for mere information.\n"
+"    "
 
 #, python-format
 msgid "pushing to %s\n"
@@ -5910,8 +6196,9 @@
 "\n"
 "    Recover from an interrupted commit or pull.\n"
 "\n"
-"    This command tries to fix the repository status after an interrupted\n"
-"    operation. It should only be necessary when Mercurial suggests it.\n"
+"    This command tries to fix the repository status after an\n"
+"    interrupted operation. It should only be necessary when Mercurial\n"
+"    suggests it.\n"
 "    "
 msgstr ""
 
@@ -5920,15 +6207,17 @@
 "\n"
 "    Schedule the indicated files for removal from the repository.\n"
 "\n"
-"    This only removes files from the current branch, not from the entire\n"
-"    project history. -A can be used to remove only files that have already\n"
-"    been deleted, -f can be used to force deletion, and -Af can be used\n"
-"    to remove files from the next revision without deleting them.\n"
-"\n"
-"    The following table details the behavior of remove for different file\n"
-"    states (columns) and option combinations (rows). The file states are\n"
-"    Added, Clean, Modified and Missing (as reported by hg status). The\n"
-"    actions are Warn, Remove (from branch) and Delete (from disk).\n"
+"    This only removes files from the current branch, not from the\n"
+"    entire project history. -A can be used to remove only files that\n"
+"    have already been deleted, -f can be used to force deletion, and\n"
+"    -Af can be used to remove files from the next revision without\n"
+"    deleting them.\n"
+"\n"
+"    The following table details the behavior of remove for different\n"
+"    file states (columns) and option combinations (rows). The file\n"
+"    states are Added, Clean, Modified and Missing (as reported by hg\n"
+"    status). The actions are Warn, Remove (from branch) and Delete\n"
+"    (from disk).\n"
 "\n"
 "           A  C  M  !\n"
 "    none   W  RD W  R\n"
@@ -5940,6 +6229,31 @@
 "    To undo a remove before that, see hg revert.\n"
 "    "
 msgstr ""
+"fjern de angivne filer ved næste arkivering\n"
+"\n"
+"    Planlæg de angivne filer til sletning fra arkivet.\n"
+"\n"
+"    Dette fjerner kun filerne fra den nuværende gren, ikke fra hele\n"
+"    projektets historie. -A kan bruges til kun at fjerne filer som\n"
+"    allerede er slettet, -f kan bruges for at gennemtvinge en\n"
+"    sletning, og -Af kan bruges til at fjerne filer fra næste revision\n"
+"    uden at slette dem.\n"
+"\n"
+"    Den følgende tabel viser opførslen af remove for forskellige\n"
+"    tilstande af filer (søjler) og kombinationer af tilvalg (rækker).\n"
+"    Filtilstandene er Added, Clean, Modified og Missing (som\n"
+"    rapporteret af hg status). Handlingerne er Warn, Remove (fra gren)\n"
+"    og Delete (fra disk).\n"
+"\n"
+"           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\n"
+"\n"
+"    Denne kommando planlægger filerne til at blive fjernet ved næste\n"
+"    arkivering. For at omgøre en fjernelse før det, se hg revert.\n"
+"    "
 
 msgid "no files specified"
 msgstr ""
@@ -5960,15 +6274,15 @@
 msgid ""
 "rename files; equivalent of copy + remove\n"
 "\n"
-"    Mark dest as copies of sources; mark sources for deletion. If\n"
-"    dest is a directory, copies are put in that directory. If dest is\n"
-"    a file, there can only be one source.\n"
+"    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.\n"
 "\n"
 "    By default, this command copies the contents of files as they\n"
-"    stand in the working directory. If invoked with --after, the\n"
+"    exist in the working directory. If invoked with --after, the\n"
 "    operation is recorded, but no copying is performed.\n"
 "\n"
-"    This command takes effect in the next commit. To undo a rename\n"
+"    This command takes effect at the next commit. To undo a rename\n"
 "    before that, see hg revert.\n"
 "    "
 msgstr ""
@@ -5980,8 +6294,13 @@
 "    revisions preserved from the last update or merge. To attempt to\n"
 "    resolve all unresolved files, use the -a switch.\n"
 "\n"
+"    If a conflict is resolved manually, please note that the changes\n"
+"    will be overwritten if the merge is retried with resolve. The -m\n"
+"    switch should be used to mark the file as resolved.\n"
+"\n"
 "    This command will also allow listing resolved files and manually\n"
-"    marking and unmarking files as resolved.\n"
+"    marking and unmarking files as resolved. All files must be marked\n"
+"    as resolved before the new commits are permitted.\n"
 "\n"
 "    The codes used to show the status of files are:\n"
 "    U = unresolved\n"
@@ -6001,10 +6320,10 @@
 "filerne"
 
 msgid ""
-"restore individual files or dirs to an earlier state\n"
+"restore individual files or directories to an earlier state\n"
 "\n"
 "    (use update -r to check out earlier revisions, revert does not\n"
-"    change the working dir parents)\n"
+"    change the working directory parents)\n"
 "\n"
 "    With no revision specified, revert the named files or directories\n"
 "    to the contents they had in the parent of the working directory.\n"
@@ -6013,10 +6332,10 @@
 "    working directory has two parents, you must explicitly specify the\n"
 "    revision to revert to.\n"
 "\n"
-"    Using the -r option, revert the given files or directories to their\n"
-"    contents as of a specific revision. This can be helpful to \"roll\n"
-"    back\" some or all of an earlier change.\n"
-"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"    Using the -r option, revert the given files or directories to\n"
+"    their contents as of a specific revision. This can be helpful to\n"
+"    \"roll back\" some or all of an earlier change. See 'hg help dates'\n"
+"    for a list of formats valid for -d/--date.\n"
 "\n"
 "    Revert modifies the working directory. It does not commit any\n"
 "    changes, or change the parent of the working directory. If you\n"
@@ -6024,8 +6343,8 @@
 "    directory, the reverted files will thus appear modified\n"
 "    afterwards.\n"
 "\n"
-"    If a file has been deleted, it is restored. If the executable\n"
-"    mode of a file was changed, it is reset.\n"
+"    If a file has been deleted, it is restored. If the executable mode\n"
+"    of a file was changed, it is reset.\n"
 "\n"
 "    If names are given, all files matching the names are reverted.\n"
 "    If no arguments are given, no files are reverted.\n"
@@ -6096,7 +6415,7 @@
 msgstr ""
 
 msgid ""
-"print the root (top) of the current working dir\n"
+"print the root (top) of the current working directory\n"
 "\n"
 "    Print the root directory of the current repository.\n"
 "    "
@@ -6111,6 +6430,13 @@
 "    stderr. Use the \"-A\" and \"-E\" options to log to files.\n"
 "    "
 msgstr ""
+"eksporter arkivet via HTTP\n"
+"\n"
+"    Start en lokal HTTP arkivbrowser og -server.\n"
+"\n"
+"    Som standard logger serveren forespørgsler til stdout og fejl til\n"
+"    stderr. Brug \"-A\" og \"-E\" tilvalgene til at logge til filer.\n"
+"    "
 
 #, python-format
 msgid "listening at http://%s%s/%s (bound to %s:%d)\n"
@@ -6126,7 +6452,7 @@
 "    with \"show only ...\" are given, the options -mardu are used.\n"
 "\n"
 "    Option -q/--quiet hides untracked (unknown and ignored) files\n"
-"    unless explicitly requested with -u/--unknown or -i/-ignored.\n"
+"    unless explicitly requested with -u/--unknown or -i/--ignored.\n"
 "\n"
 "    NOTE: status may appear to disagree with diff if permissions have\n"
 "    changed or a merge has occurred. The standard diff format does not\n"
@@ -6141,12 +6467,44 @@
 "    A = added\n"
 "    R = removed\n"
 "    C = clean\n"
-"    ! = deleted, but still tracked\n"
+"    ! = missing, but still tracked\n"
 "    ? = not tracked\n"
 "    I = ignored\n"
 "      = the previous added file was copied from here\n"
 "    "
 msgstr ""
+"vis ændrede filer i arbejdskataloget\n"
+"\n"
+"    Vis status for filer i arkivet. Hvis der angivet navne, så vil kun\n"
+"    disse filer blive vist. Filer som er rene eller ignorerede eller\n"
+"    kilden i en kopierings/flytnings operation vises ikke med mindre\n"
+"    -c (clean), -i (ignored), -C (copies) eller -A er angivet. Med\n"
+"    mindre tilvalgene beskrevet med \"vis kun ...\" bruges, så bruges\n"
+"    -mardu tilvalgene.\n"
+"\n"
+"    Tilvalget -q/--quiet skjuler filer som ikke bliver fulgt (ukendte\n"
+"    eller ignorerede filer) med mindre disse eksplicit vælges med\n"
+"    -u/--unknown eller -i/--ignored.\n"
+"\n"
+"    BEMÆRK: status kan tilsyneladende være forskellig fra diff hvis\n"
+"    rettigheder er blevet ændret eller hvis en sammenføjning har\n"
+"    fundet sted. Det normale diff-format rapporterer ikke ændringer i\n"
+"    rettigheder og diff rapporterer kun ænringer relativt til en\n"
+"    sammenføjningsforældre.\n"
+"\n"
+"    Hvis der angivet en revision bruges denne som en basisrevision.\n"
+"    Hvis der angives to revisioner, da vises forskellene mellem dem.\n"
+"\n"
+"    Koderne som bruges til at vise status for filerne er:\n"
+"    M = ændret\n"
+"    A = tilføjet\n"
+"    R = fjernet\n"
+"    C = ren\n"
+"    ! = mangler, men følges stadig\n"
+"    ? = følges ikke\n"
+"    I = ignoreret\n"
+"      = den foregående fil blev kopieret herfra\n"
+"    "
 
 msgid ""
 "add one or more tags for the current or given revision\n"
@@ -6157,8 +6515,8 @@
 "    very useful to compare different revisions, to go back to significant\n"
 "    earlier versions or to mark branch points as releases, etc.\n"
 "\n"
-"    If no revision is given, the parent of the working directory is used,\n"
-"    or tip if no revision is checked out.\n"
+"    If no revision is given, the parent of the working directory is\n"
+"    used, or tip if no revision is checked out.\n"
 "\n"
 "    To facilitate version control, distribution, and merging of tags,\n"
 "    they are stored as a file named \".hgtags\" which is managed\n"
@@ -6185,7 +6543,11 @@
 msgstr ""
 
 #, python-format
-msgid "tag '%s' is not a %s tag"
+msgid "tag '%s' is not a global tag"
+msgstr ""
+
+#, python-format
+msgid "tag '%s' is not a local tag"
 msgstr ""
 
 #, python-format
@@ -6203,8 +6565,8 @@
 msgid ""
 "list repository tags\n"
 "\n"
-"    This lists both regular and local tags. When the -v/--verbose switch\n"
-"    is used, a third column \"local\" is printed for local tags.\n"
+"    This lists both regular and local tags. When the -v/--verbose\n"
+"    switch is used, a third column \"local\" is printed for local tags.\n"
 "    "
 msgstr ""
 "vis arkivmærkater\n"
@@ -6238,31 +6600,62 @@
 msgid ""
 "update working directory\n"
 "\n"
-"    Update the repository's working directory to the specified revision,\n"
-"    or the tip of the current branch if none is specified. Use null as\n"
-"    the revision to remove the working copy (like 'hg clone -U').\n"
-"\n"
-"    When the working dir contains no uncommitted changes, it will be\n"
-"    replaced by the state of the requested revision from the repo.  When\n"
-"    the requested revision is on a different branch, the working dir\n"
-"    will additionally be switched to that branch.\n"
+"    Update the repository's working directory to the specified\n"
+"    revision, or the tip of the current branch if none is specified.\n"
+"    Use null as the revision to remove the working copy (like 'hg\n"
+"    clone -U').\n"
+"\n"
+"    When the working directory contains no uncommitted changes, it\n"
+"    will be replaced by the state of the requested revision from the\n"
+"    repository. When the requested revision is on a different branch,\n"
+"    the working directory will additionally be switched to that\n"
+"    branch.\n"
 "\n"
 "    When there are uncommitted changes, use option -C to discard them,\n"
-"    forcibly replacing the state of the working dir with the requested\n"
-"    revision.\n"
+"    forcibly replacing the state of the working directory with the\n"
+"    requested revision.\n"
 "\n"
 "    When there are uncommitted changes and option -C is not used, and\n"
 "    the parent revision and requested revision are on the same branch,\n"
 "    and one of them is an ancestor of the other, then the new working\n"
 "    directory will contain the requested revision merged with the\n"
-"    uncommitted changes.  Otherwise, the update will fail with a\n"
+"    uncommitted changes. Otherwise, the update will fail with a\n"
 "    suggestion to use 'merge' or 'update -C' instead.\n"
 "\n"
-"    If you want to update just one file to an older revision, use revert.\n"
+"    If you want to update just one file to an older revision, use\n"
+"    revert.\n"
 "\n"
 "    See 'hg help dates' for a list of formats valid for --date.\n"
 "    "
 msgstr ""
+"opdater arbejdskataloget\n"
+"\n"
+"    Opdater arkivets arbejdskatalog til den angivne revision, eller\n"
+"    spidsen af den nuværende gren hvis ingen revision er angivet. Brug\n"
+"    null som revision for at fjerne arbejdskataloget (ligesom 'hg\n"
+"    clone -U').\n"
+"\n"
+"    Hvis arbejdskataloget ikke indeholder nogen uarkiverede ændringer,\n"
+"    da vil det blive erstattet af den ønskede revision fra arkivet.\n"
+"    Hvis den ønskede revision er på en anden gren, så vil\n"
+"    arbejdskataloget yderligere blive skiftet til denne gren.\n"
+"\n"
+"    Hvis der er uarkiverede ændringer kan -C tilvalget bruges for at\n"
+"    kassere dem og sætte tilstanden af arbejdskataloget lig tilstanden\n"
+"    i den ønskede revision.\n"
+"\n"
+"    Hvis der er uarkiverede ændringer, og -C tilvalget ikke bruges, og\n"
+"    forældrerevisionen og den ønskede revision begge er på samme gren,\n"
+"    og en af dem er en forfar til den anden, så vil det nye\n"
+"    arbejdskatalog indeholde den ønskede revision sammenføjet med de\n"
+"    uarkiverede ændringer. Ellers vil opdateringen fejle med et\n"
+"    forslag til at bruge 'merge' eller 'update -C' i stedet.\n"
+"\n"
+"    Hvis du vil opdatere blot en enkelt fil til en ældre revision,\n"
+"    brug da revert.\n"
+"\n"
+"    Se 'hg help dates' for en liste af gyldige formater til --date.\n"
+"    "
 
 msgid ""
 "verify the integrity of the repository\n"
@@ -6285,7 +6678,7 @@
 
 msgid ""
 "\n"
-"Copyright (C) 2005-2008 Matt Mackall <mpm@selenic.com> and others\n"
+"Copyright (C) 2005-2009 Matt Mackall <mpm@selenic.com> 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 ""
@@ -6294,7 +6687,7 @@
 msgstr ""
 
 msgid "change working directory"
-msgstr "skift arbejdsbibliotek"
+msgstr "skift arbejdskatalog"
 
 msgid "do not prompt, assume 'yes' for any required answers"
 msgstr "spørg ikke, antag alle svar er 'ja'"
@@ -6354,10 +6747,10 @@
 msgstr "ekskluder navne som matcher det givne mønster"
 
 msgid "use <text> as commit message"
-msgstr "brug <tekst> som commit-besked"
+msgstr "brug <tekst> som arkiveringsbesked"
 
 msgid "read commit message from <file>"
-msgstr "læs commit-beskeden fra <fil>"
+msgstr "læs arkiveringsbeskeden fra <fil>"
 
 msgid "record datecode as commit date"
 msgstr ""
@@ -6545,6 +6938,9 @@
 msgid "[INDEX] REV1 REV2"
 msgstr ""
 
+msgid "[COMMAND]"
+msgstr "[KOMMANDO]"
+
 msgid "show the command options"
 msgstr ""
 
@@ -6614,7 +7010,7 @@
 msgid "ignore case when matching"
 msgstr ""
 
-msgid "print only filenames and revs that match"
+msgid "print only filenames and revisions that match"
 msgstr ""
 
 msgid "print matching line numbers"
@@ -6638,7 +7034,7 @@
 msgid "[TOPIC]"
 msgstr ""
 
-msgid "identify the specified rev"
+msgid "identify the specified revision"
 msgstr ""
 
 msgid "show local revision number"
@@ -6709,7 +7105,7 @@
 msgid "only follow the first parent of merge changesets"
 msgstr ""
 
-msgid "show revs matching date spec"
+msgid "show revisions matching date spec"
 msgstr ""
 
 msgid "show copied files"
@@ -6718,13 +7114,13 @@
 msgid "do case-insensitive search for a keyword"
 msgstr ""
 
-msgid "include revs where files were removed"
+msgid "include revisions where files were removed"
 msgstr ""
 
 msgid "show only merges"
 msgstr ""
 
-msgid "revs committed by user"
+msgid "revisions committed by user"
 msgstr ""
 
 msgid "show only changesets within the given named branch"
@@ -6757,7 +7153,7 @@
 msgid "[-M] [-p] [-n] [-f] [-r REV]... [DEST]"
 msgstr ""
 
-msgid "show parents from the specified rev"
+msgid "show parents from the specified revision"
 msgstr ""
 
 msgid "hg parents [-r REV] [FILE]"
@@ -6832,10 +7228,10 @@
 msgid "prefix path to serve from (default: server root)"
 msgstr ""
 
-msgid "name to show in web pages (default: working dir)"
-msgstr ""
-
-msgid "name of the webdir config file (serve more than one repo)"
+msgid "name to show in web pages (default: working directory)"
+msgstr ""
+
+msgid "name of the webdir config file (serve more than one repository)"
 msgstr ""
 
 msgid "for remote clients"
@@ -7243,15 +7639,15 @@
 "    \"1165432709 0\" (Wed Dec 6 13:18:29 2006 UTC)\n"
 "\n"
 "    This is the internal representation format for dates. unixtime is\n"
-"    the number of seconds since the epoch (1970-01-01 00:00 UTC). offset\n"
-"    is the offset of the local timezone, in seconds west of UTC (negative\n"
-"    if the timezone is east of UTC).\n"
+"    the number of seconds since the epoch (1970-01-01 00:00 UTC).\n"
+"    offset is the offset of the local timezone, in seconds west of UTC\n"
+"    (negative if the timezone is east of UTC).\n"
 "\n"
 "    The log command also accepts date ranges:\n"
 "\n"
-"    \"<{date}\" - on or before a given date\n"
-"    \">{date}\" - on or after a given date\n"
-"    \"{date} to {date}\" - a date range, inclusive\n"
+"    \"<{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 ""
@@ -7287,8 +7683,8 @@
 "\n"
 "    Kommandoen log accepterer også datointervaller:\n"
 "\n"
-"    \"<{date}\" - på eller før den angivne dato\n"
-"    \">{date}\" - på eller efter den angivne dato\n"
+"    \"<{date}\" - på eller før den angivne dato/tidspunkt\n"
+"    \">{date}\" - på eller efter den angivne dato/tidspunkt\n"
 "    \"{date} to {date}\" - et datointerval, inklusiv endepunkterne\n"
 "    \"-{days}\" - indenfor et angivet antal dage, fra dags dato\n"
 "    "
@@ -7306,16 +7702,16 @@
 "\n"
 "    Alternate pattern notations must be specified explicitly.\n"
 "\n"
-"    To use a plain path name without any pattern matching, start a\n"
-"    name with \"path:\".  These path names must match completely, from\n"
-"    the root of the current repository.\n"
-"\n"
-"    To use an extended glob, start a name with \"glob:\".  Globs are\n"
-"    rooted at the current directory; a glob such as \"*.c\" will match\n"
-"    files ending in \".c\" in the current directory only.\n"
+"    To use a plain path name without any pattern matching, start it\n"
+"    with \"path:\". These path names must completely match starting at\n"
+"    the current repository root.\n"
+"\n"
+"    To use an extended glob, start a name with \"glob:\". Globs are\n"
+"    rooted at the current directory; a glob such as \"*.c\" will only\n"
+"    match files in the current directory ending with \".c\".\n"
 "\n"
 "    The supported glob syntax extensions are \"**\" to match any string\n"
-"    across path separators, and \"{a,b}\" to mean \"a or b\".\n"
+"    across path separators and \"{a,b}\" to mean \"a or b\".\n"
 "\n"
 "    To use a Perl/Python regular expression, start a name with \"re:\".\n"
 "    Regexp pattern matching is anchored at the root of the repository.\n"
@@ -7330,11 +7726,11 @@
 "\n"
 "    glob:*.c       any name ending in \".c\" in the current directory\n"
 "    *.c            any name ending in \".c\" in the current directory\n"
-"    **.c           any name ending in \".c\" in the current directory, or\n"
-"                   any subdirectory\n"
+"    **.c           any name ending in \".c\" in any subdirectory of the\n"
+"                   current directory including itself.\n"
 "    foo/*.c        any name ending in \".c\" in the directory foo\n"
-"    foo/**.c       any name ending in \".c\" in the directory foo, or any\n"
-"                   subdirectory\n"
+"    foo/**.c       any name ending in \".c\" in any subdirectory of foo\n"
+"                   including itself.\n"
 "\n"
 "    Regexp examples:\n"
 "\n"
@@ -7349,12 +7745,14 @@
 msgid ""
 "\n"
 "HG::\n"
-"    Path to the 'hg' executable, automatically passed when running hooks,\n"
-"    extensions or external tools. If unset or empty, an executable named\n"
-"    'hg' (with com/exe/bat/cmd extension on Windows) is searched.\n"
+"    Path to the 'hg' executable, automatically passed when running\n"
+"    hooks, extensions or external tools. If unset or empty, this is\n"
+"    the hg executable's name if it's frozen, or an executable named\n"
+"    'hg' (with %PATHEXT% [defaulting to COM/EXE/BAT/CMD] extensions on\n"
+"    Windows) is searched.\n"
 "\n"
 "HGEDITOR::\n"
-"    This is the name of the editor to use when committing. See EDITOR.\n"
+"    This is the name of the editor to run when committing. See EDITOR.\n"
 "\n"
 "    (deprecated, use .hgrc)\n"
 "\n"
@@ -7366,8 +7764,8 @@
 "\n"
 "HGENCODINGMODE::\n"
 "    This sets Mercurial's behavior for handling unknown characters\n"
-"    while transcoding user inputs. The default is \"strict\", which\n"
-"    causes Mercurial to abort if it can't translate a character. Other\n"
+"    while transcoding user input. The default is \"strict\", which\n"
+"    causes Mercurial to abort if it can't map a character. Other\n"
 "    settings include \"replace\", which replaces unknown characters, and\n"
 "    \"ignore\", which drops them. This setting can be overridden with\n"
 "    the --encodingmode command-line option.\n"
@@ -7380,41 +7778,47 @@
 "    (deprecated, use .hgrc)\n"
 "\n"
 "HGRCPATH::\n"
-"    A list of files or directories to search for hgrc files.  Item\n"
-"    separator is \":\" on Unix, \";\" on Windows.  If HGRCPATH is not set,\n"
-"    platform default search path is used.  If empty, only .hg/hgrc of\n"
-"    current repository is read.\n"
-"\n"
-"    For each element in path, if a directory, all entries in directory\n"
-"    ending with \".rc\" are added to path.  Else, element itself is\n"
-"    added to path.\n"
+"    A list of files or directories to search for hgrc files. Item\n"
+"    separator is \":\" on Unix, \";\" on Windows. If HGRCPATH is not set,\n"
+"    platform default search path is used. If empty, only the .hg/hgrc\n"
+"    from the current repository is read.\n"
+"\n"
+"    For each element in HGRCPATH:\n"
+"    * if it's a directory, all files ending with .rc are added\n"
+"    * otherwise, the file itself will be added\n"
 "\n"
 "HGUSER::\n"
-"    This is the string used for the author of a commit.\n"
+"    This is the string used as the author of a commit. If not set,\n"
+"    available values will be considered in this order:\n"
+"\n"
+"    * HGUSER (deprecated)\n"
+"    * hgrc files from the HGRCPATH\n"
+"    * EMAIL\n"
+"    * interactive prompt\n"
+"    * LOGNAME (with '@hostname' appended)\n"
 "\n"
 "    (deprecated, use .hgrc)\n"
 "\n"
 "EMAIL::\n"
-"    If HGUSER is not set, this will be used as the author for a commit.\n"
+"    May be used as the author of a commit; see HGUSER.\n"
 "\n"
 "LOGNAME::\n"
-"    If neither HGUSER nor EMAIL is set, LOGNAME will be used (with\n"
-"    '@hostname' appended) as the author value for a commit.\n"
+"    May be used as the author of a commit; see HGUSER.\n"
 "\n"
 "VISUAL::\n"
 "    This is the name of the editor to use when committing. See EDITOR.\n"
 "\n"
 "EDITOR::\n"
-"    Sometimes Mercurial needs to open a text file in an editor\n"
-"    for a user to modify, for example when writing commit messages.\n"
-"    The editor it uses is determined by looking at the environment\n"
+"    Sometimes Mercurial needs to open a text file in an editor for a\n"
+"    user to modify, for example when writing commit messages. The\n"
+"    editor it uses is determined by looking at the environment\n"
 "    variables HGEDITOR, VISUAL and EDITOR, in that order. The first\n"
 "    non-empty one is chosen. If all of them are empty, the editor\n"
 "    defaults to 'vi'.\n"
 "\n"
 "PYTHONPATH::\n"
-"    This is used by Python to find imported modules and may need to be set\n"
-"    appropriately if Mercurial is not installed system-wide.\n"
+"    This is used by Python to find imported modules and may need to be\n"
+"    set appropriately if this Mercurial is not installed system-wide.\n"
 "    "
 msgstr ""
 
@@ -7423,12 +7827,13 @@
 
 msgid ""
 "\n"
-"    Mercurial accepts several notations for identifying individual\n"
-"    revisions.\n"
-"\n"
-"    A plain integer is treated as a revision number. Negative\n"
-"    integers are treated as offsets from the tip, with -1 denoting the\n"
-"    tip.\n"
+"    Mercurial supports several ways to specify individual revisions.\n"
+"\n"
+"    A plain integer is treated as a revision number. Negative integers\n"
+"    are treated as topological offsets from the tip, with -1 denoting\n"
+"    the tip. As such, negative numbers are only useful if you've\n"
+"    memorized your local tree numbers and want to save typing a single\n"
+"    digit. This editor suggests copy and paste.\n"
 "\n"
 "    A 40-digit hexadecimal string is treated as a unique revision\n"
 "    identifier.\n"
@@ -7436,7 +7841,7 @@
 "    A hexadecimal string less than 40 characters long is treated as a\n"
 "    unique revision identifier, and referred to as a short-form\n"
 "    identifier. A short-form identifier is only valid if it is the\n"
-"    prefix of one full-length identifier.\n"
+"    prefix of exactly one full-length identifier.\n"
 "\n"
 "    Any other string is treated as a tag name, which is a symbolic\n"
 "    name associated with a revision identifier. Tag names may not\n"
@@ -7449,9 +7854,9 @@
 "    revision of an empty repository, and the parent of revision 0.\n"
 "\n"
 "    The reserved name \".\" indicates the working directory parent. If\n"
-"    no working directory is checked out, it is equivalent to null.\n"
-"    If an uncommitted merge is in progress, \".\" is the revision of\n"
-"    the first parent.\n"
+"    no working directory is checked out, it is equivalent to null. If\n"
+"    an uncommitted merge is in progress, \".\" is the revision of the\n"
+"    first parent.\n"
 "    "
 msgstr ""
 
@@ -7461,20 +7866,20 @@
 msgid ""
 "\n"
 "    When Mercurial accepts more than one revision, they may be\n"
-"    specified individually, or provided as a continuous range,\n"
-"    separated by the \":\" character.\n"
+"    specified individually, or provided as a topologically continuous\n"
+"    range, separated by the \":\" character.\n"
 "\n"
 "    The syntax of range notation is [BEGIN]:[END], where BEGIN and END\n"
 "    are revision identifiers. Both BEGIN and END are optional. If\n"
 "    BEGIN is not specified, it defaults to revision number 0. If END\n"
-"    is not specified, it defaults to the tip. The range \":\" thus\n"
-"    means \"all revisions\".\n"
+"    is not specified, it defaults to the tip. The range \":\" thus means\n"
+"    \"all revisions\".\n"
 "\n"
 "    If BEGIN is greater than END, revisions are treated in reverse\n"
 "    order.\n"
 "\n"
 "    A range acts as a closed interval. This means that a range of 3:5\n"
-"    gives 3, 4 and 5. Similarly, a range of 4:2 gives 4, 3, and 2.\n"
+"    gives 3, 4 and 5. Similarly, a range of 9:6 gives 9, 8, 7, and 6.\n"
 "    "
 msgstr ""
 
@@ -7483,35 +7888,37 @@
 
 msgid ""
 "\n"
-"    Mercurial's default format for showing changes between two versions\n"
-"    of a file is compatible with the unified format of GNU diff, which\n"
-"    can be used by GNU patch and many other standard tools.\n"
+"    Mercurial's default format for showing changes between two\n"
+"    versions of a file is compatible with the unified format of GNU\n"
+"    diff, which can be used by GNU patch and many other standard\n"
+"    tools.\n"
 "\n"
 "    While this standard format is often enough, it does not encode the\n"
 "    following information:\n"
 "\n"
-"     - executable status\n"
+"     - executable status and other permission bits\n"
 "     - copy or rename information\n"
 "     - changes in binary files\n"
 "     - creation or deletion of empty files\n"
 "\n"
 "    Mercurial also supports the extended diff format from the git VCS\n"
 "    which addresses these limitations. The git diff format is not\n"
-"    produced by default because there are very few tools which\n"
+"    produced by default because a few widespread tools still do not\n"
 "    understand this format.\n"
 "\n"
 "    This means that when generating diffs from a Mercurial repository\n"
 "    (e.g. with \"hg export\"), you should be careful about things like\n"
 "    file copies and renames or other things mentioned above, because\n"
-"    when applying a standard diff to a different repository, this extra\n"
-"    information is lost. Mercurial's internal operations (like push and\n"
-"    pull) are not affected by this, because they use an internal binary\n"
-"    format for communicating changes.\n"
+"    when applying a standard diff to a different repository, this\n"
+"    extra information is lost. Mercurial's internal operations (like\n"
+"    push and pull) are not affected by this, because they use an\n"
+"    internal binary format for communicating changes.\n"
 "\n"
 "    To make Mercurial produce the git extended diff format, use the\n"
-"    --git option available for many commands, or set 'git = True' in the\n"
-"    [diff] section of your hgrc. You do not need to set this option when\n"
-"    importing diffs in this format or using them in the mq extension.\n"
+"    --git option available for many commands, or set 'git = True' in\n"
+"    the [diff] section of your hgrc. You do not need to set this\n"
+"    option when importing diffs in this format or using them in the mq\n"
+"    extension.\n"
 "    "
 msgstr ""
 
@@ -7521,49 +7928,52 @@
 msgid ""
 "\n"
 "    Mercurial allows you to customize output of commands through\n"
-"    templates. You can either pass in a template from the command line,\n"
-"    via the --template option, or select an existing template-style (--"
-"style).\n"
-"\n"
-"    You can customize output for any \"log-like\" command: log, outgoing,\n"
-"    incoming, tip, parents, heads and glog are all template-enabled.\n"
+"    templates. You can either pass in a template from the command\n"
+"    line, via the --template option, or select an existing\n"
+"    template-style (--style).\n"
+"\n"
+"    You can customize output for any \"log-like\" command: log,\n"
+"    outgoing, incoming, tip, parents, heads and glog.\n"
 "\n"
 "    Three styles are packaged with Mercurial: default (the style used\n"
-"    when no explicit preference is passed), compact and changelog. Usage:\n"
+"    when no explicit preference is passed), compact and changelog.\n"
+"    Usage:\n"
 "\n"
 "        $ hg log -r1 --style changelog\n"
 "\n"
-"    A template is a piece of text, with markup to invoke variable "
-"expansion:\n"
+"    A template is a piece of text, with markup to invoke variable\n"
+"    expansion:\n"
 "\n"
 "        $ hg log -r1 --template \"{node}\\n\"\n"
 "        b56ce7b07c52de7d5fd79fb89701ea538af65746\n"
 "\n"
 "    Strings in curly braces are called keywords. The availability of\n"
-"    keywords depends on the exact context of the templater. These keywords\n"
-"    are usually available for templating a log-like command:\n"
+"    keywords depends on the exact context of the templater. These\n"
+"    keywords are usually available for templating a log-like command:\n"
 "\n"
 "    - author: String. The unmodified author of the changeset.\n"
 "    - branches: String. The name of the branch on which the changeset\n"
 "          was committed. Will be empty if the branch name was default.\n"
 "    - date: Date information. The date when the changeset was committed.\n"
 "    - desc: String. The text of the changeset description.\n"
+"    - diffstat: String. Statistics of changes with the following\n"
+"          format: \"modified files: +added/-removed lines\"\n"
 "    - files: List of strings. All files modified, added, or removed by\n"
 "          this changeset.\n"
 "    - file_adds: List of strings. Files added by this changeset.\n"
 "    - file_mods: List of strings. Files modified by this changeset.\n"
 "    - file_dels: List of strings. Files removed by this changeset.\n"
-"    - node: String. The changeset identification hash, as a 40-character\n"
-"          hexadecimal string.\n"
+"    - node: String. The changeset identification hash, as a\n"
+"          40-character hexadecimal string.\n"
 "    - parents: List of strings. The parents of the changeset.\n"
 "    - rev: Integer. The repository-local changeset revision number.\n"
 "    - tags: List of strings. Any tags associated with the changeset.\n"
 "\n"
 "    The \"date\" keyword does not produce human-readable output. If you\n"
-"    want to use a date in your output, you can use a filter to process it.\n"
-"    Filters are functions which return a string based on the input "
-"variable.\n"
-"    You can also use a chain of filters to get the wanted output:\n"
+"    want to use a date in your output, you can use a filter to process\n"
+"    it. Filters are functions which return a string based on the input\n"
+"    variable. You can also use a chain of filters to get the desired\n"
+"    output:\n"
 "\n"
 "       $ hg tip --template \"{date|isodate}\\n\"\n"
 "       2008-08-21 18:22 +0000\n"
@@ -7572,15 +7982,21 @@
 "\n"
 "    - addbreaks: Any text. Add an XHTML \"<br />\" tag before the end of\n"
 "          every line except the last.\n"
-"    - age: Date. Returns a human-readable age for the given date.\n"
+"    - age: Date. Returns a human-readable date/time difference between\n"
+"          the given date/time and the current date/time.\n"
 "    - basename: Any text. Treats the text as a path, and returns the\n"
-"          basename. For example, \"foo/bar/baz\" becomes \"baz\".\n"
-"    - date: Date. Returns a date in a Unix date command format, including\n"
+"          last component of the path after splitting by the path\n"
+"          separator (ignoring trailing seprators). For example,\n"
+"          \"foo/bar/baz\" becomes \"baz\" and \"foo/bar//\" becomes \"bar"
+"\".\n"
+"    - date: Date. Returns a date in a Unix date format, including\n"
 "          the timezone: \"Mon Sep 04 15:13:13 2006 0700\".\n"
-"    - domain: Any text. Finds the first string that looks like an email\n"
-"          address, and extracts just the domain component.\n"
-"    - email: Any text. Extracts the first string that looks like an email\n"
-"          address.\n"
+"    - domain: Any text. Finds the first string that looks like an\n"
+"          email address, and extracts just the domain component.\n"
+"          Example: 'User <user@example.com>' becomes 'example.com'.\n"
+"    - email: Any text. Extracts the first string that looks like an\n"
+"          email address. Example: 'User <user@example.com>' becomes\n"
+"          'user@example.com'.\n"
 "    - escape: Any text. Replaces the special XML/XHTML characters \"&\",\n"
 "          \"<\" and \">\" with XML entities.\n"
 "    - fill68: Any text. Wraps the text to fit in 68 columns.\n"
@@ -7589,24 +8005,24 @@
 "    - hgdate: Date. Returns the date as a pair of numbers:\n"
 "          \"1157407993 25200\" (Unix timestamp, timezone offset).\n"
 "    - isodate: Date. Returns the date in ISO 8601 format.\n"
-"    - obfuscate: Any text. Returns the input text rendered as a sequence\n"
-"          of XML entities.\n"
+"    - obfuscate: Any text. Returns the input text rendered as a\n"
+"          sequence of XML entities.\n"
 "    - person: Any text. Returns the text before an email address.\n"
 "    - rfc822date: Date. Returns a date using the same format used\n"
 "          in email headers.\n"
-"    - short: Changeset hash. Returns the short form of a changeset hash,\n"
-"          i.e. a 12-byte hexadecimal string.\n"
-"    - shortdate: Date. Returns a date like \"2006-09-04\".\n"
+"    - short: Changeset hash. Returns the short form of a changeset\n"
+"          hash, i.e. a 12-byte hexadecimal string.\n"
+"    - shortdate: Date. Returns a date like \"2006-09-18\".\n"
 "    - strip: Any text. Strips all leading and trailing whitespace.\n"
-"    - tabindent: Any text. Returns the text, with every line except the\n"
-"          first starting with a tab character.\n"
-"    - urlescape: Any text. Escapes all \"special\" characters. For example,\n"
-"          \"foo bar\" becomes \"foo%20bar\".\n"
+"    - tabindent: Any text. Returns the text, with every line except\n"
+"          the first starting with a tab character.\n"
+"    - urlescape: Any text. Escapes all \"special\" characters. For\n"
+"          example, \"foo bar\" becomes \"foo%20bar\".\n"
 "    - user: Any text. Returns the user portion of an email address.\n"
 "    "
 msgstr ""
 
-msgid "Url Paths"
+msgid "URL Paths"
 msgstr "URL-stier"
 
 msgid ""
@@ -7623,45 +8039,48 @@
 "    'hg incoming --bundle').\n"
 "\n"
 "    An optional identifier after # indicates a particular branch, tag,\n"
-"    or changeset to deal with in the remote repository.\n"
+"    or changeset to use from the remote repository.\n"
 "\n"
 "    Some features, such as pushing to http:// and https:// URLs are\n"
-"    only possible if the feature is explicitly enabled on the\n"
-"    remote Mercurial server.\n"
+"    only possible if the feature is explicitly enabled on the remote\n"
+"    Mercurial server.\n"
 "\n"
 "    Some notes about using SSH with Mercurial:\n"
-"    - SSH requires an accessible shell account on the destination machine\n"
-"      and a copy of hg in the remote path or specified with as remotecmd.\n"
+"    - SSH requires an accessible shell account on the destination\n"
+"      machine and a copy of hg in the remote path or specified with as\n"
+"      remotecmd.\n"
 "    - path is relative to the remote user's home directory by default.\n"
 "      Use an extra slash at the start of a path to specify an absolute "
 "path:\n"
 "        ssh://example.com//tmp/repository\n"
-"    - Mercurial doesn't use its own compression via SSH; the right thing\n"
-"      to do is to configure it in your ~/.ssh/config, e.g.:\n"
+"    - Mercurial doesn't use its own compression via SSH; the right\n"
+"      thing to do is to configure it in your ~/.ssh/config, e.g.:\n"
 "        Host *.mylocalnetwork.example.com\n"
 "          Compression no\n"
 "        Host *\n"
 "          Compression yes\n"
-"      Alternatively specify \"ssh -C\" as your ssh command in your hgrc or\n"
-"      with the --ssh command line option.\n"
-"\n"
-"    These urls can all be stored in your hgrc with path aliases under the\n"
-"    [paths] section like so:\n"
+"      Alternatively specify \"ssh -C\" as your ssh command in your hgrc\n"
+"      or with the --ssh command line option.\n"
+"\n"
+"    These URLs can all be stored in your hgrc with path aliases under\n"
+"    the [paths] section like so:\n"
 "    [paths]\n"
 "    alias1 = URL1\n"
 "    alias2 = URL2\n"
 "    ...\n"
 "\n"
-"    You can then use the alias for any command that uses a url (for example\n"
-"    'hg pull alias1' would pull from the 'alias1' path).\n"
-"\n"
-"    Two path aliases are more important because they are used as defaults\n"
-"    when you do not provide the url to a command:\n"
+"    You can then use the alias for any command that uses a URL (for\n"
+"    example 'hg pull alias1' would pull from the 'alias1' path).\n"
+"\n"
+"    Two path aliases are special because they are used as defaults\n"
+"    when you do not provide the URL to a command:\n"
 "\n"
 "    default:\n"
-"      When you create a repository with hg clone, the clone command saves\n"
-"      the location of the source repository as the 'default' path. This is\n"
-"      then used when you omit a path from the push and pull commands.\n"
+"      When you create a repository with hg clone, the clone command\n"
+"      saves the location of the source repository as the new\n"
+"      repository's 'default' path. This is then used when you omit\n"
+"      path from push- and pull-like commands (including incoming and\n"
+"      outgoing).\n"
 "\n"
 "    default-push:\n"
 "      The push command will look for a path named 'default-push', and\n"
@@ -7677,6 +8096,10 @@
 msgid "destination '%s' already exists"
 msgstr ""
 
+#, python-format
+msgid "destination '%s' is not empty"
+msgstr ""
+
 msgid ""
 "src repository does not support revision lookup and so doesn't support clone "
 "by revision"
@@ -7686,7 +8109,7 @@
 msgstr ""
 
 msgid "updating working directory\n"
-msgstr "opdaterer arbejdsbibliotek\n"
+msgstr "opdaterer arbejdskatalog\n"
 
 msgid "updated"
 msgstr "opdateret"
@@ -7707,6 +8130,11 @@
 msgid "use 'hg resolve' to retry unresolved file merges\n"
 msgstr ""
 
+msgid ""
+"use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to "
+"abandon\n"
+msgstr ""
+
 msgid "(branch merge, don't forget to commit)\n"
 msgstr ""
 
@@ -7717,7 +8145,7 @@
 msgid "SSL support is unavailable"
 msgstr "understøttelse for SSL er ikke tilstede"
 
-msgid "IPv6 not available on this system"
+msgid "IPv6 is not available on this system"
 msgstr "IPv6 er ikke til rådighed på dette system"
 
 #, python-format
@@ -7813,8 +8241,8 @@
 msgstr "den rigtige URL er %s\n"
 
 #, python-format
-msgid "Requested URL: '%s'\n"
-msgstr ""
+msgid "requested URL: '%s'\n"
+msgstr "forespurgt URL: '%s'\n"
 
 #, python-format
 msgid "'%s' does not appear to be an hg repository"
@@ -7929,7 +8357,7 @@
 
 #, python-format
 msgid "working directory of %s"
-msgstr "arbejdsbibliotek for %s"
+msgstr "arbejdskatalog for %s"
 
 #, python-format
 msgid " %s: searching for copy revision for %s\n"
@@ -8251,10 +8679,6 @@
 msgstr "henter %s\n"
 
 #, python-format
-msgid "moving %s to %s\n"
-msgstr ""
-
-#, python-format
 msgid "getting %s to %s\n"
 msgstr ""
 
@@ -8363,6 +8787,21 @@
 msgstr ""
 
 #, python-format
+msgid "exited with status %d"
+msgstr "afsluttede med status %d"
+
+#, python-format
+msgid "killed by signal %d"
+msgstr "dræbt af signal %d"
+
+#, python-format
+msgid "stopped by signal %d"
+msgstr "stoppet af signal %d"
+
+msgid "invalid exit code"
+msgstr "ugyldig returkode"
+
+#, python-format
 msgid "saving bundle to %s\n"
 msgstr ""
 
@@ -8389,6 +8828,10 @@
 msgid "index %s unknown format %d"
 msgstr ""
 
+#, python-format
+msgid "index %s is corrupted"
+msgstr "indeks %s er ødelagt"
+
 msgid "no node"
 msgstr ""
 
@@ -8533,7 +8976,7 @@
 msgstr ""
 
 msgid "enter a commit username:"
-msgstr "angiv et commit brugernavn:"
+msgstr "angiv et arkiveringsbrugernavn:"
 
 #, python-format
 msgid "No username found, using '%s' instead\n"
@@ -8584,10 +9027,6 @@
 msgstr "http godkendelse: bruger %s, kodeord %s\n"
 
 #, python-format
-msgid "%s, please check your locale settings"
-msgstr "%s, tjek venligst dine sprogindstillinger"
-
-#, python-format
 msgid "command '%s' failed: %s"
 msgstr "kommandoen '%s' fejlede: %s"
 
@@ -8606,24 +9045,6 @@
 msgid "Hardlinks not supported"
 msgstr "Hardlinks er ikke supporteret"
 
-msgid "user name not available - set USERNAME environment variable"
-msgstr "der er ikke noget brugernavn - sæt USERNAME miljøvariabel"
-
-#, python-format
-msgid "exited with status %d"
-msgstr "afsluttede med status %d"
-
-#, python-format
-msgid "killed by signal %d"
-msgstr "dræbt af signal %d"
-
-#, python-format
-msgid "stopped by signal %d"
-msgstr "stoppet af signal %d"
-
-msgid "invalid exit code"
-msgstr "ugyldig returkode"
-
 #, python-format
 msgid "could not symlink to %r: %s"
 msgstr "kunne ikke lave et symbolsk link til %r: %s"
@@ -8711,7 +9132,11 @@
 msgstr "advarsel: '%s' bruger revlog format 0"
 
 #, python-format
-msgid "rev %d point to %s changeset %d"
+msgid "rev %d points to nonexistent changeset %d"
+msgstr ""
+
+#, python-format
+msgid "rev %d points to unexpected changeset %d"
 msgstr ""
 
 #, python-format
@@ -8775,6 +9200,10 @@
 msgid "cannot decode filename '%s'"
 msgstr "kan ikke dekode filnavn '%s'"
 
+#, python-format
+msgid "broken revlog! (%s)"
+msgstr ""
+
 msgid "missing revlog!"
 msgstr "manglende revlog!"
 
@@ -8825,3 +9254,6 @@
 #, python-format
 msgid "(first damaged changeset appears to be %d)\n"
 msgstr "(første beskadigede ændring er tilsyneladende %d)\n"
+
+msgid "user name not available - set USERNAME environment variable"
+msgstr "der er ikke noget brugernavn - sæt USERNAME miljøvariabel"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/i18n/de.po	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,9946 @@
+# German translations for Mercurial
+# Deutsche Übersetzungen für Mercurial
+# Copyright (C) 2009 Matt Mackall and others
+#
+# Übersetzungen
+# =============
+# branch	Zweig/Verzweigung
+# bundle	Bündel
+# change	Änderung
+# changeset	Änderungssatz
+# check out	auschecken
+# commit	Version
+# commit (v)	übertragen
+# deprecated	veraltet
+# hook		Aktion
+# merge		zusammenführen
+# notation	Schreibweise
+# repository	Projektarchiv
+#
+# Die Koordination der Übersetzung erfolgt auf http://bitbucket.org/tobidope/mercurial-german-translation
+msgid ""
+msgstr ""
+"Project-Id-Version: Mercurial\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-04-03 21:50+0200\n"
+"PO-Revision-Date: 2009-04-04 10:49+0200\n"
+"Last-Translator: Tobias Bell <tobias.bell@gmail.com>\n"
+"Language-Team: German (Tobias Bell, Fabian Kreutz, Lutz Horn)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#, python-format
+msgid " (default: %s)"
+msgstr " (Standard: %s)"
+
+msgid "OPTIONS"
+msgstr "OPTIONEN"
+
+msgid "COMMANDS"
+msgstr "BEFEHLE"
+
+msgid "    options:\n"
+msgstr "    Optionen:\n"
+
+#, python-format
+msgid ""
+"    aliases: %s\n"
+"\n"
+msgstr ""
+"    Aliase: %s\n"
+"\n"
+
+# Nicht übersetzen
+msgid "return tuple of (match function, list enabled)."
+msgstr ""
+
+#, python-format
+msgid "acl: %s not enabled\n"
+msgstr "acl: %s nicht aktiviert\n"
+
+#, python-format
+msgid "acl: %s enabled, %d entries for user %s\n"
+msgstr "acl: %s aktiviert, %d Einträge für Nutzer %s\n"
+
+#, python-format
+msgid "config error - hook type \"%s\" cannot stop incoming changesets"
+msgstr ""
+"Konfigurationsfehler - Aktionstyp \"%s\" kann hereinkommende Änderungssätze\n"
+"nicht stoppen"
+
+#, python-format
+msgid "acl: changes have source \"%s\" - skipping\n"
+msgstr "acl: Änderungen haben die Quelle \"%s\" - überspringe\n"
+
+#, python-format
+msgid "acl: user %s denied on %s\n"
+msgstr "acl: Benutzer %s nicht berechtigt für %s\n"
+
+#, python-format
+msgid "acl: access denied for changeset %s"
+msgstr "acl: Zugriff verweigert auf die Version %s"
+
+#, python-format
+msgid "acl: user %s not allowed on %s\n"
+msgstr "acl: Benutzer %s hat keinen Zugriff auf %s\n"
+
+#, python-format
+msgid "acl: allowing changeset %s\n"
+msgstr "acl: Gestatte Version %s\n"
+
+msgid ""
+"allow user-defined command aliases\n"
+"\n"
+"To use, create entries in your hgrc of the form\n"
+"\n"
+"[alias]\n"
+"mycmd = cmd --args\n"
+msgstr ""
+"Ermöglicht benutzerdefinierte Befehls-Aliase\n"
+"\n"
+"Um sie zu nutzen, erzeuge Einträge folgender Form in deiner hgrc\n"
+"\n"
+"[alias]\n"
+"mycmd = cmd --args\n"
+
+# Nicht übersetzen
+msgid ""
+"defer command lookup until needed, so that extensions loaded\n"
+"    after alias can be aliased"
+msgstr ""
+
+#, python-format
+msgid "*** [alias] %s: command %s is unknown"
+msgstr "*** [alias] %s: Befehl %s ist unbekannt"
+
+#, python-format
+msgid "*** [alias] %s: command %s is ambiguous"
+msgstr "*** [alias] %s: Befehl %s ist zweideutig"
+
+#, python-format
+msgid "*** [alias] %s: circular dependency on %s"
+msgstr "*** [alias] %s: zirkuläre Abhängigkeit auf %s"
+
+#, python-format
+msgid "*** [alias] %s: no definition\n"
+msgstr "*** [alias] %s: nicht definiert\n"
+
+# Nicht übersetzen
+msgid ""
+"mercurial bookmarks\n"
+"\n"
+"Mercurial bookmarks are local moveable pointers to changesets. Every\n"
+"bookmark 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 is forwarded to the new changeset.\n"
+"\n"
+"It is possible to use bookmark names in every revision lookup (e.g. hg\n"
+"merge, hg update).\n"
+"\n"
+"The bookmark extension offers the possiblity to have a more git-like "
+"experience\n"
+"by adding the following configuration option to your .hgrc:\n"
+"\n"
+"[bookmarks]\n"
+"track.current = True\n"
+"\n"
+"This will cause bookmarks to track the bookmark that you are currently on, "
+"and\n"
+"just updates it. This is similar to git's approach of branching.\n"
+msgstr ""
+
+# Nicht übersetzen
+msgid ""
+"Parse .hg/bookmarks file and return a dictionary\n"
+"\n"
+"    Bookmarks are stored as {HASH}\\s{NAME}\\n (localtags format) values\n"
+"    in the .hg/bookmarks file. They are read by the parse() method and\n"
+"    returned as a dictionary with name => hash values.\n"
+"\n"
+"    The parsed dictionary is cached until a write() operation is done.\n"
+"    "
+msgstr ""
+
+# Nicht übersetzen
+msgid ""
+"Write bookmarks\n"
+"\n"
+"    Write the given bookmark => hash dictionary to the .hg/bookmarks file\n"
+"    in a format equal to those of localtags.\n"
+"\n"
+"    We also store a backup of the previous state in undo.bookmarks that\n"
+"    can be copied back on rollback.\n"
+"    "
+msgstr ""
+
+# Nicht übersetzen
+msgid ""
+"Get the current bookmark\n"
+"\n"
+"    If we use gittishsh branches we have a current bookmark that\n"
+"    we are on. This function returns the name of the bookmark. It\n"
+"    is stored in .hg/bookmarks.current\n"
+"    "
+msgstr ""
+
+# Nicht übersetzen
+msgid ""
+"Set the name of the bookmark that we are currently on\n"
+"\n"
+"    Set the name of the bookmark that we are on (hg update <bookmark>).\n"
+"    The name is recoreded in .hg/bookmarks.current\n"
+"    "
+msgstr ""
+
+msgid ""
+"mercurial bookmarks\n"
+"\n"
+"    Bookmarks are pointers to certain commits that move when\n"
+"    commiting. Bookmarks are local. They can be renamed, copied and\n"
+"    deleted. It is possible to use bookmark names in 'hg merge' and 'hg\n"
+"    update' to update to a given bookmark.\n"
+"\n"
+"    You can use 'hg bookmark NAME' to set a bookmark on the current\n"
+"    tip with the given name. If you specify a revision using -r REV\n"
+"    (where REV may be an existing bookmark), the bookmark is set to\n"
+"    that revision.\n"
+"    "
+msgstr ""
+"mercurial bookmarks (Lesezeichen)\n"
+"\n"
+"    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.\n"
+"\n"
+"    Du kannst 'hg bookmark NAME' aufrufen, um ein Lesezeichen mit dem\n"
+"    angegeben Namen auf der aktuellen Spitze (tip) zu setzen. Bei Angabe "
+"einer\n"
+"    Revision mit -r REV (REV kann ein vorhandenes Lesezeichen sein) wird "
+"das\n"
+"    Lesezeichen auf dieser Revision gesetzt.\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 "a bookmark cannot have the name of an existing branch"
+msgstr ""
+"Ein Lesezeichen darf nicht denselben Namen wie ein existierender Zweig haben"
+
+# Nicht übersetzen
+msgid ""
+"Strip bookmarks if revisions are stripped using\n"
+"    the mercurial.strip method. This usually happens during\n"
+"    qpush and qpop"
+msgstr ""
+
+# Nicht übersetzen
+msgid ""
+"Add a revision to the repository and\n"
+"            move the bookmark"
+msgstr ""
+
+# Nicht übersetzen
+msgid "Merge bookmarks with normal tags"
+msgstr ""
+
+# Nicht übersetzen
+msgid ""
+"Set the current bookmark\n"
+"\n"
+"    If the user updates to a bookmark we update the .hg/bookmarks.current\n"
+"    file.\n"
+"    "
+msgstr ""
+
+msgid "force"
+msgstr "erzwinge"
+
+msgid "revision"
+msgstr "Revision"
+
+msgid "delete a given bookmark"
+msgstr "Löscht ein gegebenes Lesezeichen"
+
+msgid "rename a given bookmark"
+msgstr "Benennt ein gegebenes Lesezeichen um"
+
+msgid "hg bookmarks [-f] [-d] [-m NAME] [-r REV] [NAME]"
+msgstr ""
+
+msgid ""
+"Bugzilla integration\n"
+"\n"
+"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 bug\n"
+"status.\n"
+"\n"
+"The hook updates the Bugzilla database directly. Only Bugzilla "
+"installations\n"
+"using MySQL are supported.\n"
+"\n"
+"The hook relies on a Bugzilla script to send bug change notification "
+"emails.\n"
+"That script changes between Bugzilla versions; the 'processmail' script "
+"used\n"
+"prior to 2.18 is replaced in 2.18 and subsequent versions by\n"
+"'config/sendbugmail.pl'. Note that these will be run by Mercurial as the "
+"user\n"
+"pushing the change; you will need to ensure the Bugzilla install file\n"
+"permissions are set appropriately.\n"
+"\n"
+"Configuring the extension:\n"
+"\n"
+"    [bugzilla]\n"
+"    host       Hostname of the MySQL server holding the Bugzilla database.\n"
+"    db         Name of the Bugzilla database in MySQL. Default 'bugs'.\n"
+"    user       Username to use to access MySQL server. Default 'bugs'.\n"
+"    password   Password to use to access MySQL server.\n"
+"    timeout    Database connection timeout (seconds). Default 5.\n"
+"    version    Bugzilla version. Specify '3.0' for Bugzilla versions 3.0 "
+"and\n"
+"               later, '2.18' for Bugzilla versions from 2.18 and '2.16' for\n"
+"               versions prior to 2.18.\n"
+"    bzuser     Fallback Bugzilla user name to record comments with, if\n"
+"               changeset committer cannot be found as a Bugzilla user.\n"
+"    bzdir      Bugzilla install directory. Used by default notify.\n"
+"               Default '/var/www/html/bugzilla'.\n"
+"    notify     The command to run to get Bugzilla to send bug change\n"
+"               notification emails. Substitutes from a map with 3 keys,\n"
+"               'bzdir', 'id' (bug id) and 'user' (committer bugzilla "
+"email).\n"
+"               Default depends on version; from 2.18 it is\n"
+"               \"cd %(bzdir)s && perl -T contrib/sendbugmail.pl %(id)s %"
+"(user)s\".\n"
+"    regexp     Regular expression to match bug IDs in changeset commit "
+"message.\n"
+"               Must contain one \"()\" group. The default expression "
+"matches\n"
+"               'Bug 1234', 'Bug no. 1234', 'Bug number 1234',\n"
+"               'Bugs 1234,5678', 'Bug 1234 and 5678' and variations "
+"thereof.\n"
+"               Matching is case insensitive.\n"
+"    style      The style file to use when formatting comments.\n"
+"    template   Template to use when formatting comments. Overrides\n"
+"               style if specified. In addition to the usual Mercurial\n"
+"               keywords, the extension specifies:\n"
+"                   {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.\n"
+"               Default 'changeset {node|short} in repo {root} refers '\n"
+"                       'to bug {bug}.\\ndetails:\\n\\t{desc|tabindent}'\n"
+"    strip      The number of slashes to strip from the front of {root}\n"
+"               to produce {webroot}. Default 0.\n"
+"    usermap    Path of file containing Mercurial committer ID to Bugzilla "
+"user\n"
+"               ID mappings. If specified, the file should contain one "
+"mapping\n"
+"               per line, \"committer\"=\"Bugzilla user\". See also the\n"
+"               [usermap] section.\n"
+"\n"
+"    [usermap]\n"
+"    Any entries in this section specify mappings of Mercurial committer ID\n"
+"    to Bugzilla user ID. See also [bugzilla].usermap.\n"
+"    \"committer\"=\"Bugzilla user\"\n"
+"\n"
+"    [web]\n"
+"    baseurl    Base URL for browsing Mercurial repositories. Reference from\n"
+"               templates as {hgweb}.\n"
+"\n"
+"Activating the extension:\n"
+"\n"
+"    [extensions]\n"
+"    hgext.bugzilla =\n"
+"\n"
+"    [hooks]\n"
+"    # run bugzilla hook on every change pulled or pushed in here\n"
+"    incoming.bugzilla = python:hgext.bugzilla.hook\n"
+"\n"
+"Example configuration:\n"
+"\n"
+"This example configuration is for a collection of Mercurial repositories\n"
+"in /var/local/hg/repos/ used with a local Bugzilla 3.2 installation in\n"
+"/opt/bugzilla-3.2.\n"
+"\n"
+"    [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\n"
+"\n"
+"    [web]\n"
+"    baseurl=http://dev.domain.com/hg\n"
+"\n"
+"    [usermap]\n"
+"    user@emaildomain.com=user.name@bugzilladomain.com\n"
+"\n"
+"Commits add a comment to the Bugzilla bug record of the form:\n"
+"\n"
+"    Changeset 3b16791d6642 in repository-name.\n"
+"    http://dev.domain.com/hg/repository-name/rev/3b16791d6642\n"
+"\n"
+"    Changeset commit comment. Bug 1234.\n"
+msgstr ""
+
+msgid "support for bugzilla version 2.16."
+msgstr "Unterstützung für Bugzilla-Version 2.16"
+
+#, python-format
+msgid "connecting to %s:%s as %s, password %s\n"
+msgstr "Verbinde mit %s:%s als %s, Passwort %s\n"
+
+msgid "run a query."
+msgstr ""
+
+#, python-format
+msgid "query: %s %s\n"
+msgstr ""
+
+#, python-format
+msgid "failed query: %s %s\n"
+msgstr ""
+
+msgid "get identity of longdesc field"
+msgstr ""
+
+msgid "unknown database schema"
+msgstr ""
+
+msgid "filter not-existing bug ids from list."
+msgstr ""
+
+msgid "filter bug ids from list that already refer to this changeset."
+msgstr ""
+
+#, python-format
+msgid "bug %d already knows about changeset %s\n"
+msgstr ""
+
+msgid "tell bugzilla to send mail."
+msgstr ""
+
+msgid "telling bugzilla to send mail:\n"
+msgstr ""
+
+#, python-format
+msgid "  bug %s\n"
+msgstr ""
+
+#, python-format
+msgid "running notify command %s\n"
+msgstr ""
+
+#, python-format
+msgid "bugzilla notify command %s"
+msgstr ""
+
+msgid "done\n"
+msgstr "erledigt\n"
+
+msgid "look up numeric bugzilla user id."
+msgstr ""
+
+#, python-format
+msgid "looking up user %s\n"
+msgstr ""
+
+msgid "map name of committer to bugzilla user name."
+msgstr ""
+
+msgid ""
+"see if committer is a registered bugzilla user. Return\n"
+"        bugzilla username and userid if so. If not, return default\n"
+"        bugzilla username and userid."
+msgstr ""
+
+#, python-format
+msgid "cannot find bugzilla user id for %s"
+msgstr ""
+
+#, python-format
+msgid "cannot find bugzilla user id for %s or %s"
+msgstr ""
+
+msgid ""
+"add comment to bug. try adding comment as committer of\n"
+"        changeset, otherwise as default bugzilla user."
+msgstr ""
+
+msgid "support for bugzilla 2.18 series."
+msgstr ""
+
+msgid "support for bugzilla 3.0 series."
+msgstr ""
+
+msgid ""
+"return object that knows how to talk to bugzilla version in\n"
+"        use."
+msgstr ""
+
+#, python-format
+msgid "bugzilla version %s not supported"
+msgstr ""
+
+msgid ""
+"find valid bug ids that are referred to in changeset\n"
+"        comments and that do not already have references to this\n"
+"        changeset."
+msgstr ""
+
+msgid "update bugzilla bug with reference to changeset."
+msgstr ""
+
+msgid ""
+"strip leading prefix of repo root and turn into\n"
+"            url-safe path."
+msgstr ""
+
+msgid ""
+"changeset {node|short} in repo {root} refers to bug {bug}.\n"
+"details:\n"
+"\t{desc|tabindent}"
+msgstr ""
+
+msgid ""
+"add comment to bugzilla for each changeset that refers to a\n"
+"    bugzilla bug id. only add a comment once per bug, so same change\n"
+"    seen multiple times does not fill bug with duplicate data."
+msgstr ""
+
+#, python-format
+msgid "python mysql support not available: %s"
+msgstr ""
+
+#, python-format
+msgid "hook type %s does not pass a changeset id"
+msgstr ""
+
+#, python-format
+msgid "database error: %s"
+msgstr ""
+
+msgid ""
+"show the children of the given or working dir revision\n"
+"\n"
+"    Print the children of the working directory's revisions.\n"
+"    If a revision is given via --rev, the children of that revision\n"
+"    will be printed. If a file argument is given, revision in\n"
+"    which the file was last changed (after the working directory\n"
+"    revision or the argument to --rev if given) is printed.\n"
+"    "
+msgstr ""
+"Zeigt die Kinder der übergebenen Revision oder des Arbeitsverzeichnisses an\n"
+"\n"
+"    Zeigt die Kinder der Revision des Arbeitsverzeichnisses an.\n"
+"    Wenn eine Revision durch --rev angegeben wird, werden die Kinder dieser\n"
+"    Revision angezeigt. Wenn eine Datei als Argument angegeben wird, zeige "
+"die\n"
+"    Revision an, in der die Datei zuletzt geändert wurde (nachfolgend der\n"
+"    Revision des Arbeitsverzeichnisses oder wenn angegeben dem Argument von\n"
+"    --rev).\n"
+"    "
+
+msgid "show children of the specified rev"
+msgstr "Zeigt die Kinder der übergebenen Revision"
+
+msgid "hg children [-r REV] [FILE]"
+msgstr "hg children [-r REV] [DATEI]"
+
+msgid "command to show certain statistics about revision history"
+msgstr ""
+
+msgid "Calculate stats"
+msgstr ""
+
+#, python-format
+msgid "Revision %d is a merge, ignoring...\n"
+msgstr "Revision %d ist eine Zusammenführung, wird ignoriert...\n"
+
+#, python-format
+msgid "\rgenerating stats: %d%%"
+msgstr ""
+
+msgid ""
+"graph count of revisions grouped by template\n"
+"\n"
+"    Will graph count of changed lines or revisions grouped by template or\n"
+"    alternatively by date, if dateformat is used. In this case it will "
+"override\n"
+"    template.\n"
+"\n"
+"    By default statistics are counted for number of changed lines.\n"
+"\n"
+"    Examples:\n"
+"\n"
+"      # display count of changed lines for every committer\n"
+"      hg churn -t '{author|email}'\n"
+"\n"
+"      # display daily activity graph\n"
+"      hg churn -f '%H' -s -c\n"
+"\n"
+"      # display activity of developers by month\n"
+"      hg churn -f '%Y-%m' -s -c\n"
+"\n"
+"      # display count of lines changed in every year\n"
+"      hg churn -f '%Y' -s\n"
+"\n"
+"    The map file format used to specify aliases is fairly simple:\n"
+"\n"
+"    <alias email> <actual email>"
+msgstr ""
+
+#, python-format
+msgid "assuming %i character terminal\n"
+msgstr ""
+
+msgid "count rate for the specified revision or range"
+msgstr ""
+
+msgid "count rate for revs matching date spec"
+msgstr ""
+
+msgid "template to group changesets"
+msgstr ""
+
+msgid "strftime-compatible format for grouping by date"
+msgstr ""
+
+msgid "count rate by number of changesets"
+msgstr ""
+
+msgid "sort by key (default: sort by count)"
+msgstr ""
+
+msgid "file with email aliases"
+msgstr ""
+
+msgid "show progress"
+msgstr ""
+
+msgid "hg churn [-d DATE] [-r REV] [--aliases FILE] [--progress] [FILE]"
+msgstr ""
+
+msgid ""
+"add color output to status, qseries, and diff-related commands\n"
+"\n"
+"This extension modifies the status command to add color to its output to\n"
+"reflect file status, the qseries command to add color to reflect patch "
+"status\n"
+"(applied, unapplied, missing), and to diff-related commands to highlight\n"
+"additions, removals, diff headers, and trailing whitespace.\n"
+"\n"
+"Other effects in addition to color, like bold and underlined text, are also\n"
+"available.  Effects are rendered with the ECMA-48 SGR control function (aka\n"
+"ANSI escape codes).  This module also provides the render_text function,\n"
+"which can be used to add effects to any text.\n"
+"\n"
+"To enable this extension, add this to your .hgrc file:\n"
+"[extensions]\n"
+"color =\n"
+"\n"
+"Default effects my be overriden from the .hgrc file:\n"
+"\n"
+"[color]\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\n"
+"\n"
+"# 'none' turns off all effects\n"
+"status.clean = none\n"
+"status.copied = none\n"
+"\n"
+"qseries.applied = blue bold underline\n"
+"qseries.unapplied = black bold\n"
+"qseries.missing = red bold\n"
+"\n"
+"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\n"
+msgstr ""
+
+msgid "Wrap text in commands to turn on each effect."
+msgstr ""
+
+msgid "run the status command with colored output"
+msgstr ""
+
+msgid "run the qseries command with colored output"
+msgstr ""
+
+msgid "wrap ui.write for colored diff output"
+msgstr ""
+
+msgid "wrap cmdutil.changeset_printer.showpatch with colored output"
+msgstr ""
+
+msgid "run the diff command with colored output"
+msgstr ""
+
+msgid "Initialize the extension."
+msgstr ""
+
+msgid "patch in command to command table and load effect map"
+msgstr ""
+
+msgid "when to colorize (always, auto, or never)"
+msgstr "Wann soll eingefärbt werden (always, auto oder never)"
+
+msgid "don't colorize output"
+msgstr "Keine Färbung der Ausgabe"
+
+msgid "converting foreign VCS repositories to Mercurial"
+msgstr ""
+
+msgid ""
+"convert a foreign SCM repository to a Mercurial one.\n"
+"\n"
+"    Accepted source formats [identifiers]:\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"
+"    Accepted destination formats [identifiers]:\n"
+"    - Mercurial [hg]\n"
+"    - Subversion [svn] (history on branches is not preserved)\n"
+"\n"
+"    If no revision is given, all revisions will be converted. Otherwise,\n"
+"    convert will only import up to the named revision (given in a format\n"
+"    understood by the source).\n"
+"\n"
+"    If no destination directory name is specified, it defaults to the\n"
+"    basename of the source with '-hg' appended.  If the destination\n"
+"    repository doesn't exist, it will be created.\n"
+"\n"
+"    If <REVMAP> isn't given, it will be put in a default location\n"
+"    (<dest>/.hg/shamap by default).  The <REVMAP> is a simple text\n"
+"    file that maps each source commit ID to the destination ID for\n"
+"    that revision, like so:\n"
+"    <source ID> <destination ID>\n"
+"\n"
+"    If the file doesn't exist, it's automatically created.  It's updated\n"
+"    on each commit copied, so convert-repo can be interrupted and can\n"
+"    be run repeatedly to copy new commits.\n"
+"\n"
+"    The [username mapping] file is a simple text file that maps each source\n"
+"    commit author to a destination commit author. It is handy for source "
+"SCMs\n"
+"    that use unix logins to identify authors (eg: CVS). One line per author\n"
+"    mapping and the line format is:\n"
+"    srcauthor=whatever string you want\n"
+"\n"
+"    The filemap is a file that allows filtering and remapping of files\n"
+"    and directories.  Comment lines start with '#'.  Each line can\n"
+"    contain one of the following directives:\n"
+"\n"
+"      include path/to/file\n"
+"\n"
+"      exclude path/to/file\n"
+"\n"
+"      rename from/file to/file\n"
+"\n"
+"    The 'include' directive causes a file, or all files under a\n"
+"    directory, to be included in the destination repository, and the\n"
+"    exclusion of all other files and dirs not explicitely included.\n"
+"    The 'exclude' directive causes files or directories to be omitted.\n"
+"    The 'rename' directive renames a file or directory.  To rename from a\n"
+"    subdirectory into the root of the repository, use '.' as the path to\n"
+"    rename to.\n"
+"\n"
+"    The splicemap is a file that allows insertion of synthetic\n"
+"    history, letting you specify the parents of a revision.  This is\n"
+"    useful if you want to e.g. give a Subversion merge two parents, or\n"
+"    graft two disconnected series of history together.  Each entry\n"
+"    contains a key, followed by a space, followed by one or two\n"
+"    comma-separated values.  The key is the revision ID in the\n"
+"    source revision control system whose parents should be modified\n"
+"    (same format as a key in .hg/shamap).  The values are the revision\n"
+"    IDs (in either the source or destination revision control system)\n"
+"    that should be used as the new parents for that node.\n"
+"\n"
+"    Mercurial Source\n"
+"    -----------------\n"
+"\n"
+"    --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 "
+"change)\n"
+"    --config convert.hg.startrev=0            (hg revision identifier)\n"
+"        convert start revision and its descendants\n"
+"\n"
+"    CVS Source\n"
+"    ----------\n"
+"\n"
+"    CVS source will use a sandbox (i.e. a checked-out copy) from CVS\n"
+"    to indicate the starting point of what will be converted. Direct\n"
+"    access to the repository files is not needed, unless of course\n"
+"    the repository is :local:. The conversion uses the top level\n"
+"    directory in the sandbox to find the CVS repository, and then uses\n"
+"    CVS rlog commands to find files to convert. This means that unless\n"
+"    a filemap is given, all files under the starting directory will be\n"
+"    converted, and that any directory reorganisation in the CVS\n"
+"    sandbox is ignored.\n"
+"\n"
+"    Because CVS does not have changesets, it is necessary to collect\n"
+"    individual commits to CVS and merge them into changesets. CVS\n"
+"    source uses its internal changeset merging code by default but can\n"
+"    be configured to call the external 'cvsps' program by setting:\n"
+"        --config convert.cvsps='cvsps -A -u --cvs-direct -q'\n"
+"    This is a legacy option and may be removed in future.\n"
+"\n"
+"    The options shown are the defaults.\n"
+"\n"
+"    Internal cvsps is selected by setting\n"
+"        --config convert.cvsps=builtin\n"
+"    and has a few more configurable options:\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\n"
+"            of a 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"
+"\n"
+"    The hgext/convert/cvsps wrapper script allows the builtin changeset\n"
+"    merging code to be run without doing a conversion. Its parameters and\n"
+"    output are similar to that of cvsps 2.1.\n"
+"\n"
+"    Subversion Source\n"
+"    -----------------\n"
+"\n"
+"    Subversion source detects classical trunk/branches/tags layouts.\n"
+"    By default, the supplied \"svn://repo/path/\" source URL is\n"
+"    converted as a single branch. If \"svn://repo/path/trunk\" exists\n"
+"    it replaces the default branch. If \"svn://repo/path/branches\"\n"
+"    exists, its subdirectories are listed as possible branches. If\n"
+"    \"svn://repo/path/tags\" exists, it is looked for tags referencing\n"
+"    converted branches. Default \"trunk\", \"branches\" and \"tags\" values\n"
+"    can be overriden with following options. Set them to paths\n"
+"    relative to the source URL, or leave them blank to disable\n"
+"    autodetection.\n"
+"\n"
+"    --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\n"
+"\n"
+"    Source history can be retrieved starting at a specific revision,\n"
+"    instead of being integrally converted. Only single branch\n"
+"    conversions are supported.\n"
+"\n"
+"    --config convert.svn.startrev=0           (svn revision number)\n"
+"        specify start Subversion revision.\n"
+"\n"
+"    Perforce Source\n"
+"    ---------------\n"
+"\n"
+"    The Perforce (P4) importer can be given a p4 depot path or a client\n"
+"    specification as source. It will convert all files in the source to\n"
+"    a flat Mercurial repository, ignoring labels, branches and "
+"integrations.\n"
+"    Note that when a depot path is given you then usually should specify a\n"
+"    target directory, because otherwise the target may be named ...-hg.\n"
+"\n"
+"    It is possible to limit the amount of source history to be converted\n"
+"    by specifying an initial Perforce revision.\n"
+"\n"
+"    --config convert.p4.startrev=0           (perforce changelist number)\n"
+"        specify initial Perforce revision.\n"
+"\n"
+"\n"
+"    Mercurial Destination\n"
+"    ---------------------\n"
+"\n"
+"    --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\n"
+"\n"
+"    "
+msgstr ""
+
+msgid ""
+"create changeset information from CVS\n"
+"\n"
+"    This command is intended as a debugging tool for the CVS to Mercurial\n"
+"    converter, and can be used as a direct replacement for cvsps.\n"
+"\n"
+"    Hg debugcvsps reads the CVS rlog for current directory (or any named\n"
+"    directory) in the CVS repository, and converts the log to a series of\n"
+"    changesets based on matching commit log entries and dates."
+msgstr ""
+
+msgid "username mapping filename"
+msgstr ""
+
+msgid "destination repository type"
+msgstr ""
+
+msgid "remap file names using contents of file"
+msgstr ""
+
+msgid "import up to target revision REV"
+msgstr ""
+
+msgid "source repository type"
+msgstr ""
+
+msgid "splice synthesized history into place"
+msgstr ""
+
+msgid "try to sort changesets by date"
+msgstr ""
+
+msgid "hg convert [OPTION]... SOURCE [DEST [REVMAP]]"
+msgstr ""
+
+msgid "only return changes on specified branches"
+msgstr ""
+
+msgid "prefix to remove from file names"
+msgstr ""
+
+msgid "only return changes after or between specified tags"
+msgstr ""
+
+msgid "update cvs log cache"
+msgstr ""
+
+msgid "create new cvs log cache"
+msgstr ""
+
+msgid "set commit time fuzz in seconds"
+msgstr ""
+
+msgid "specify cvsroot"
+msgstr ""
+
+msgid "show parent changesets"
+msgstr ""
+
+msgid "show current changeset in ancestor branches"
+msgstr ""
+
+msgid "ignored for compatibility"
+msgstr ""
+
+msgid "hg debugcvsps [OPTION]... [PATH]..."
+msgstr ""
+
+#, python-format
+msgid "%s is not a valid revision in current branch"
+msgstr ""
+
+#, python-format
+msgid "%s is not available in %s anymore"
+msgstr ""
+
+#, python-format
+msgid "cannot find required \"%s\" tool"
+msgstr ""
+
+#, python-format
+msgid "running: %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s error:\n"
+msgstr ""
+
+#, python-format
+msgid "%s %s"
+msgstr ""
+
+#, python-format
+msgid "could not open map file %r: %s"
+msgstr ""
+
+#, python-format
+msgid "%s: missing or unsupported repository"
+msgstr ""
+
+#, python-format
+msgid "convert: %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s: unknown repository type"
+msgstr ""
+
+#, python-format
+msgid "cycle detected between %s and %s"
+msgstr ""
+
+msgid "not all revisions were sorted"
+msgstr ""
+
+#, python-format
+msgid "Writing author map file %s\n"
+msgstr ""
+
+#, python-format
+msgid "Overriding mapping for author %s, was %s, will be %s\n"
+msgstr ""
+
+#, python-format
+msgid "mapping author %s to %s\n"
+msgstr ""
+
+#, python-format
+msgid "Ignoring bad line in author map file %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid "spliced in %s as parents of %s\n"
+msgstr ""
+
+msgid "scanning source...\n"
+msgstr ""
+
+msgid "sorting...\n"
+msgstr ""
+
+msgid "converting...\n"
+msgstr ""
+
+#, python-format
+msgid "source: %s\n"
+msgstr ""
+
+#, python-format
+msgid "assuming destination %s\n"
+msgstr ""
+
+#, python-format
+msgid "revision %s is not a patchset number or date"
+msgstr ""
+
+msgid "using builtin cvsps\n"
+msgstr ""
+
+#, python-format
+msgid "connecting to %s\n"
+msgstr ""
+
+msgid "CVS pserver authentication failed"
+msgstr ""
+
+msgid "server sucks"
+msgstr ""
+
+#, python-format
+msgid "%d bytes missing from remote file"
+msgstr ""
+
+#, python-format
+msgid "cvs server: %s\n"
+msgstr ""
+
+#, python-format
+msgid "unknown CVS response: %s"
+msgstr ""
+
+msgid "collecting CVS rlog\n"
+msgstr ""
+
+#, python-format
+msgid "reading cvs log cache %s\n"
+msgstr ""
+
+#, python-format
+msgid "cache has %d log entries\n"
+msgstr ""
+
+#, python-format
+msgid "error reading cache: %r\n"
+msgstr ""
+
+#, python-format
+msgid "running %s\n"
+msgstr ""
+
+#, python-format
+msgid "prefix=%r directory=%r root=%r\n"
+msgstr ""
+
+msgid "RCS file must be followed by working file"
+msgstr ""
+
+msgid "must have at least some revisions"
+msgstr ""
+
+msgid "expected revision number"
+msgstr ""
+
+msgid "revision must be followed by date line"
+msgstr ""
+
+#, python-format
+msgid "found synthetic rev in %s: %r\n"
+msgstr "Synthetische Revision gefundein in %s: %r\n"
+
+#, python-format
+msgid "writing cvs log cache %s\n"
+msgstr ""
+
+#, python-format
+msgid "%d log entries\n"
+msgstr ""
+
+msgid "creating changesets\n"
+msgstr ""
+
+msgid "synthetic changeset cannot have multiple parents"
+msgstr ""
+
+#, python-format
+msgid "%d changeset entries\n"
+msgstr ""
+
+msgid "Python ElementTree module is not available"
+msgstr ""
+
+#, python-format
+msgid "cleaning up %s\n"
+msgstr ""
+
+msgid "internal calling inconsistency"
+msgstr ""
+
+msgid "errors in filemap"
+msgstr ""
+
+#, python-format
+msgid "%s:%d: %r already in %s list\n"
+msgstr ""
+
+#, python-format
+msgid "%s:%d: unknown directive %r\n"
+msgstr ""
+
+msgid "source repository doesn't support --filemap"
+msgstr ""
+
+#, python-format
+msgid "%s does not look like a GNU Arch repo"
+msgstr ""
+
+msgid "cannot find a GNU Arch tool"
+msgstr ""
+
+#, python-format
+msgid "analyzing tree version %s...\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"tree analysis stopped because it points to an unregistered archive %s...\n"
+msgstr ""
+
+#, python-format
+msgid "applying revision %s...\n"
+msgstr ""
+
+#, python-format
+msgid "computing changeset between %s and %s...\n"
+msgstr ""
+
+#, python-format
+msgid "obtaining revision %s...\n"
+msgstr ""
+
+#, python-format
+msgid "analysing revision %s...\n"
+msgstr ""
+
+#, python-format
+msgid "could not parse cat-log of %s"
+msgstr ""
+
+#, python-format
+msgid "%s is not a local Mercurial repo"
+msgstr ""
+
+#, python-format
+msgid "initializing destination %s repository\n"
+msgstr ""
+
+msgid "run hg sink pre-conversion action\n"
+msgstr ""
+
+msgid "run hg sink post-conversion action\n"
+msgstr ""
+
+#, python-format
+msgid "pulling from %s into %s\n"
+msgstr ""
+
+msgid "updating tags\n"
+msgstr ""
+
+#, python-format
+msgid "%s is not a valid start revision"
+msgstr ""
+
+#, python-format
+msgid "ignoring: %s\n"
+msgstr ""
+
+msgid "run hg source pre-conversion action\n"
+msgstr ""
+
+msgid "run hg source post-conversion action\n"
+msgstr ""
+
+#, python-format
+msgid "%s does not look like a monotone repo"
+msgstr ""
+
+#, python-format
+msgid "copying file in renamed dir from '%s' to '%s'"
+msgstr ""
+
+msgid "reading p4 views\n"
+msgstr ""
+
+msgid "collecting p4 changelists\n"
+msgstr ""
+
+msgid "Subversion python bindings could not be loaded"
+msgstr ""
+
+#, python-format
+msgid "Subversion python bindings %d.%d found, 1.4 or later required"
+msgstr ""
+
+msgid "Subversion python bindings are too old, 1.4 or later required"
+msgstr ""
+
+#, python-format
+msgid "svn: revision %s is not an integer"
+msgstr ""
+
+#, python-format
+msgid "svn: start revision %s is not an integer"
+msgstr ""
+
+#, python-format
+msgid "no revision found in module %s"
+msgstr ""
+
+#, python-format
+msgid "expected %s to be at %r, but not found"
+msgstr ""
+
+#, python-format
+msgid "found %s at %r\n"
+msgstr ""
+
+#, python-format
+msgid "ignoring empty branch %s\n"
+msgstr ""
+
+#, python-format
+msgid "found branch %s at %d\n"
+msgstr ""
+
+msgid "svn: start revision is not supported with with more than one branch"
+msgstr ""
+
+#, python-format
+msgid "svn: no revision found after start revision %d"
+msgstr ""
+
+#, python-format
+msgid "no tags found at revision %d\n"
+msgstr ""
+
+#, python-format
+msgid "ignoring foreign branch %r\n"
+msgstr ""
+
+#, python-format
+msgid "%s not found up to revision %d"
+msgstr ""
+
+#, python-format
+msgid "branch renamed from %s to %s at %d\n"
+msgstr ""
+
+#, python-format
+msgid "reparent to %s\n"
+msgstr ""
+
+#, python-format
+msgid "copied to %s from %s@%s\n"
+msgstr ""
+
+#, python-format
+msgid "gone from %s\n"
+msgstr ""
+
+#, python-format
+msgid "found parent directory %s\n"
+msgstr ""
+
+#, python-format
+msgid "base, entry %s %s\n"
+msgstr ""
+
+msgid "munge-o-matic\n"
+msgstr ""
+
+#, python-format
+msgid "info: %s %s %s %s\n"
+msgstr ""
+
+#, python-format
+msgid "unknown path in revision %d: %s\n"
+msgstr ""
+
+#, python-format
+msgid "mark %s came from %s:%d\n"
+msgstr ""
+
+#, python-format
+msgid "parsing revision %d (%d changes)\n"
+msgstr ""
+
+#, python-format
+msgid "found parent of branch %s at %d: %s\n"
+msgstr ""
+
+msgid "no copyfrom path, don't know what to do.\n"
+msgstr ""
+
+#, python-format
+msgid "fetching revision log for \"%s\" from %d to %d\n"
+msgstr ""
+
+#, python-format
+msgid "skipping blacklisted revision %d\n"
+msgstr ""
+
+#, python-format
+msgid "revision %d has no entries\n"
+msgstr ""
+
+#, python-format
+msgid "svn: branch has no revision %s"
+msgstr ""
+
+#, python-format
+msgid "%r is not under %r, ignoring\n"
+msgstr ""
+
+#, python-format
+msgid "initializing svn repo %r\n"
+msgstr ""
+
+#, python-format
+msgid "initializing svn wc %r\n"
+msgstr ""
+
+msgid "unexpected svn output:\n"
+msgstr ""
+
+msgid "unable to cope with svn output"
+msgstr ""
+
+msgid "XXX TAGS NOT IMPLEMENTED YET\n"
+msgstr ""
+
+msgid ""
+"\n"
+"The `extdiff' Mercurial extension allows you to use external programs\n"
+"to compare revisions, or revision with working dir.  The external diff\n"
+"programs are called with a configurable set of options and two\n"
+"non-option arguments: paths to directories containing snapshots of\n"
+"files to compare.\n"
+"\n"
+"To enable this extension:\n"
+"\n"
+"  [extensions]\n"
+"  hgext.extdiff =\n"
+"\n"
+"The `extdiff' extension also allows to configure new diff commands, so\n"
+"you do not need to type \"hg extdiff -p kdiff3\" always.\n"
+"\n"
+"  [extdiff]\n"
+"  # add new command that runs GNU diff(1) in 'context diff' mode\n"
+"  cdiff = gdiff -Nprc5\n"
+"  ## or the old way:\n"
+"  #cmd.cdiff = gdiff\n"
+"  #opts.cdiff = -Nprc5\n"
+"\n"
+"  # add new command called vdiff, runs kdiff3\n"
+"  vdiff = kdiff3\n"
+"\n"
+"  # add new command called meld, runs meld (no need to name twice)\n"
+"  meld =\n"
+"\n"
+"  # add new command called vimdiff, runs gvimdiff with DirDiff plugin\n"
+"  #(see http://www.vim.org/scripts/script.php?script_id=102)\n"
+"  # Non english user, be sure to put \"let g:DirDiffDynamicDiffText = 1\" "
+"in\n"
+"  # your .vimrc\n"
+"  vimdiff = gvim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)'\n"
+"\n"
+"You can use -I/-X and list of file or directory names like normal\n"
+"\"hg diff\" command.  The `extdiff' extension makes snapshots of only\n"
+"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 ""
+
+msgid "snapshot files as of some revision"
+msgstr ""
+
+#, python-format
+msgid "making snapshot of %d files from rev %s\n"
+msgstr ""
+
+msgid ""
+"snapshot files from working directory.\n"
+"    if not using snapshot, -I/-X does not work and recursive diff\n"
+"    in tools like kdiff3 and meld displays too many files."
+msgstr ""
+
+#, python-format
+msgid "making snapshot of %d files from working dir\n"
+msgstr ""
+
+msgid ""
+"Do the actuall diff:\n"
+"\n"
+"    - copy to a temp structure if diffing 2 internal revisions\n"
+"    - copy to a temp structure if diffing working revision with\n"
+"      another one and more than 1 file is changed\n"
+"    - just invoke the diff for a single file in the working dir\n"
+"    "
+msgstr ""
+
+msgid "cannot specify --rev and --change at the same time"
+msgstr "--rev und --change können nicht gleichzeitig angegeben werden"
+
+#, python-format
+msgid "running %r in %s\n"
+msgstr ""
+
+#, python-format
+msgid "file changed while diffing. Overwriting: %s (src: %s)\n"
+msgstr ""
+
+msgid "cleaning up temp directory\n"
+msgstr ""
+
+msgid ""
+"use external program to diff repository (or selected files)\n"
+"\n"
+"    Show differences between revisions for the specified files, using\n"
+"    an external program.  The default program used is diff, with\n"
+"    default options \"-Npru\".\n"
+"\n"
+"    To select a different program, use the -p option.  The program\n"
+"    will be passed the names of two directories to compare.  To pass\n"
+"    additional options to the program, use the -o option.  These will\n"
+"    be passed before the names of the directories to compare.\n"
+"\n"
+"    When two revision arguments are given, then changes are\n"
+"    shown between those revisions. If only one revision is\n"
+"    specified then that revision is compared to the working\n"
+"    directory, and, when no revisions are specified, the\n"
+"    working directory files are compared to its parent."
+msgstr ""
+
+msgid "comparison program to run"
+msgstr ""
+
+msgid "pass option to comparison program"
+msgstr ""
+
+msgid "change made by revision"
+msgstr "Von dieser Revision erzeugte Änderungen"
+
+msgid "hg extdiff [OPT]... [FILE]..."
+msgstr ""
+
+msgid "use closure to save diff command to use"
+msgstr ""
+
+#, python-format
+msgid "hg %s [OPTION]... [FILE]..."
+msgstr ""
+
+msgid "pulling, updating and merging in one command"
+msgstr "Hole, aktualisiere und führe zusammen in einem Befehl"
+
+msgid ""
+"pull changes from a remote repository, merge new changes if needed.\n"
+"\n"
+"    This finds all changes from the repository at the specified path\n"
+"    or URL and adds them to the local repository.\n"
+"\n"
+"    If the pulled changes add a new branch head, the head is automatically\n"
+"    merged, and the result of the merge is committed.  Otherwise, the\n"
+"    working directory is updated to include the new changes.\n"
+"\n"
+"    When a merge occurs, the newly pulled changes are assumed to be\n"
+"    \"authoritative\".  The head of the new changes is used as the first\n"
+"    parent, with local changes as the second.  To switch the merge\n"
+"    order, use --switch-parent.\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"    "
+msgstr ""
+"Holt Änderungen aus einem entfernten Projektarchiv, führt neue Änderungen "
+"zusammen  wenn nötig.\n"
+"\n"
+"    Dies selektiert alle Änderungen des Projektarchivs am angegebenen Pfad\n"
+"    oder der URL und fügt sie dem lokalen Projektarchiv hinzu.\n"
+"\n"
+"    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.\n"
+"\n"
+"    Sollte eine Zusammenführung ausgelöst werden, gelten die neu geholten\n"
+"    Änderungen als \"führend\"· Der Kopf der neuen Änderungen wird als\n"
+"    erste Vorgängerversion genutzt, die lokalen Änderungen darauffolgend.\n"
+"    Um die Reihenfolge der Zusammenführung zu ändern kann --switch-parent\n"
+"    genutzt werden.\n"
+"\n"
+"    Siehe 'hg help dates' für eine Liste gültiger Datumsformate für -d/--"
+"date.\n"
+"    "
+
+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)"
+
+msgid "outstanding uncommitted merge"
+msgstr "Ausstehende nicht versionierte Zusammenführung"
+
+msgid "outstanding uncommitted changes"
+msgstr "Ausstehende nicht versionierte Änderungen"
+
+msgid "working directory is missing some files"
+msgstr "Im Arbeitsverzeichnis fehlen Dateien"
+
+msgid ""
+"multiple heads in this branch (use \"hg heads .\" and \"hg merge\" to merge)"
+msgstr ""
+"Mehrere Kopfversionen in diesem Zweig (Nutze \"hg heads .\" und \"hg merge"
+"\"\n"
+"um zusammenzuführen)"
+
+#, python-format
+msgid "pulling from %s\n"
+msgstr "Hole von %s\n"
+
+msgid "fetch -r doesn't work for remote repositories yet"
+msgstr "fetch -r funktioniert noch nicht auf entfernten Archiven"
+
+#, python-format
+msgid ""
+"not merging with %d other new branch heads (use \"hg heads .\" and \"hg merge"
+"\" to merge them)\n"
+msgstr ""
+"Führe %d andere neue Zweigköpfe nicht zusammen (Nutze \"hg heads .\" und "
+"\"hg merge\" um sie zusammenzuführen)\n"
+
+#, python-format
+msgid "updating to %d:%s\n"
+msgstr "Aktualisiere auf %d:%s\n"
+
+#, python-format
+msgid "merging with %d:%s\n"
+msgstr "Führe zusammen mit %d:%s\n"
+
+#, python-format
+msgid "Automated merge with %s"
+msgstr "Automatisierte Zusammenführung mit %s"
+
+#, python-format
+msgid "new changeset %d:%s merges remote changes with local\n"
+msgstr ""
+"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"
+
+msgid "edit commit message"
+msgstr "Editiere Versionsmeldung"
+
+msgid "edit commit message (DEPRECATED)"
+msgstr "Editiere Versionsmeldung (VERALTET)"
+
+msgid "switch parents when merging"
+msgstr "Vertauscht Vorgänger bei Zusammenführung"
+
+msgid "hg fetch [SOURCE]"
+msgstr "hg fetch [QUELLE]"
+
+msgid " returns of the good and bad signatures"
+msgstr ""
+
+msgid "error while verifying signature"
+msgstr ""
+
+msgid "create a new gpg instance"
+msgstr ""
+
+msgid ""
+"\n"
+"    walk over every sigs, yields a couple\n"
+"    ((node, version, sig), (filename, linenumber))\n"
+"    "
+msgstr ""
+
+msgid "get the keys who signed a data"
+msgstr ""
+
+#, python-format
+msgid "%s Bad signature from \"%s\"\n"
+msgstr ""
+
+#, python-format
+msgid "%s Note: Signature has expired (signed by: \"%s\")\n"
+msgstr ""
+
+#, python-format
+msgid "%s Note: This key has expired (signed by: \"%s\")\n"
+msgstr ""
+
+msgid "list signed changesets"
+msgstr ""
+
+#, python-format
+msgid "%s:%d node does not exist\n"
+msgstr ""
+
+msgid "verify all the signatures there may be for a particular revision"
+msgstr ""
+
+#, python-format
+msgid "No valid signature for %s\n"
+msgstr ""
+
+msgid "associate a string to a key (username, comment)"
+msgstr ""
+
+msgid ""
+"add a signature for the current or given revision\n"
+"\n"
+"    If no revision is given, the parent of the working directory is used,\n"
+"    or tip if no revision is checked out.\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"    "
+msgstr ""
+
+msgid "uncommitted merge - please provide a specific revision"
+msgstr "Nicht versionierte Zusammenführung - bitte gib eine Revision an"
+
+msgid "Error while signing"
+msgstr ""
+
+msgid ""
+"working copy of .hgsigs is changed (please commit .hgsigs manually or use --"
+"force)"
+msgstr ""
+
+#, python-format
+msgid "Added signature for changeset %s"
+msgstr ""
+
+msgid "map a manifest into some text"
+msgstr ""
+
+msgid "unknown signature version"
+msgstr ""
+
+msgid "make the signature local"
+msgstr ""
+
+msgid "sign even if the sigfile is modified"
+msgstr ""
+
+msgid "do not commit the sigfile after signing"
+msgstr ""
+
+msgid "the key id to sign with"
+msgstr ""
+
+msgid "commit message"
+msgstr ""
+
+msgid "hg sign [OPTION]... [REVISION]..."
+msgstr ""
+
+msgid "hg sigcheck REVISION"
+msgstr ""
+
+msgid "hg sigs"
+msgstr ""
+
+msgid ""
+"show revision graphs in terminal windows\n"
+"\n"
+"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 ""
+
+msgid ""
+"cset DAG generator yielding (rev, node, [parents]) tuples\n"
+"\n"
+"    This generator function walks through the revision history from "
+"revision\n"
+"    start to revision stop (which must be less than or equal to start).\n"
+"    "
+msgstr ""
+
+msgid ""
+"file cset DAG generator yielding (rev, node, [parents]) tuples\n"
+"\n"
+"    This generator function walks through the revision history of a single\n"
+"    file from revision start to revision stop (which must be less than or\n"
+"    equal to start).\n"
+"    "
+msgstr ""
+
+msgid ""
+"grapher for asciigraph on a list of nodes and their parents\n"
+"\n"
+"    nodes must generate tuples (node, parents, char, lines) where\n"
+"     - parents must generate the parents of node, in sorted order,\n"
+"       and max length 2,\n"
+"     - char is the char to print as the node symbol, and\n"
+"     - lines are the lines to display next to the node.\n"
+"    "
+msgstr ""
+
+msgid ""
+"prints an ASCII graph of the DAG returned by the grapher\n"
+"\n"
+"    grapher is a generator that emits tuples with the following elements:\n"
+"\n"
+"      - Character to use as node's symbol.\n"
+"      - List of lines to display as the node's text.\n"
+"      - Column of the current node in the set of ongoing edges.\n"
+"      - Edges; a list of (col, next_col) indicating the edges between\n"
+"        the current node and its parents.\n"
+"      - Number of columns (ongoing edges) in the current revision.\n"
+"      - The difference between the number of columns (ongoing edges)\n"
+"        in the next revision and the number of columns (ongoing edges)\n"
+"        in the current revision. That is: -1 means one column removed;\n"
+"        0 means no columns added or removed; 1 means one column added.\n"
+"    "
+msgstr ""
+
+#, python-format
+msgid "--graph option is incompatible with --%s"
+msgstr ""
+
+msgid ""
+"show revision history alongside an ASCII revision graph\n"
+"\n"
+"    Print a revision history alongside a revision graph drawn with\n"
+"    ASCII characters.\n"
+"\n"
+"    Nodes printed as an @ character are parents of the working\n"
+"    directory.\n"
+"    "
+msgstr ""
+
+msgid ""
+"show the outgoing changesets alongside an ASCII revision graph\n"
+"\n"
+"    Print the outgoing changesets alongside a revision graph drawn with\n"
+"    ASCII characters.\n"
+"\n"
+"    Nodes printed as an @ character are parents of the working\n"
+"    directory.\n"
+"    "
+msgstr ""
+
+#, python-format
+msgid "comparing with %s\n"
+msgstr "Vergleiche mit %s\n"
+
+msgid "no changes found\n"
+msgstr "Keine Änderungen gefunden\n"
+
+msgid ""
+"show the incoming changesets alongside an ASCII revision graph\n"
+"\n"
+"    Print the incoming changesets alongside a revision graph drawn with\n"
+"    ASCII characters.\n"
+"\n"
+"    Nodes printed as an @ character are parents of the working\n"
+"    directory.\n"
+"    "
+msgstr ""
+
+msgid "wrap the command"
+msgstr ""
+
+msgid "show the revision DAG"
+msgstr ""
+
+msgid "limit number of changes displayed"
+msgstr "Begrenzt die Anzahl der angezeigten Änderungen"
+
+msgid "show patch"
+msgstr "Patch anzeigen"
+
+msgid "show the specified revision or range"
+msgstr "Zeigt die angegebene Revision oder Revisionsfolge"
+
+msgid "hg glog [OPTION]... [FILE]"
+msgstr ""
+
+msgid ""
+"CIA notification\n"
+"\n"
+"This is meant to be run as a changegroup or incoming hook.\n"
+"To configure it, set the following options in your hgrc:\n"
+"\n"
+"[cia]\n"
+"# your registered CIA user name\n"
+"user = foo\n"
+"# the name of the project in CIA\n"
+"project = foo\n"
+"# the module (subproject) (optional)\n"
+"#module = foo\n"
+"# 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"
+"# Style to use (optional)\n"
+"#style = foo\n"
+"# The URL of the CIA notification service (optional)\n"
+"# You can use mailto: URLs to send by email, eg\n"
+"# mailto:cia@cia.vc\n"
+"# 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\n"
+"\n"
+"[hooks]\n"
+"# one of these:\n"
+"changegroup.cia = python:hgcia.hook\n"
+"#incoming.cia = python:hgcia.hook\n"
+"\n"
+"[web]\n"
+"# If you want hyperlinks (optional)\n"
+"baseurl = http://server/path/to/repo\n"
+msgstr ""
+
+msgid " A CIA message "
+msgstr ""
+
+msgid " CIA notification class "
+msgstr ""
+
+#, python-format
+msgid "hgcia: sending update to %s\n"
+msgstr ""
+
+msgid " send CIA notification "
+msgstr ""
+
+msgid "email.from must be defined when sending by email"
+msgstr ""
+
+msgid "cia: no user specified"
+msgstr ""
+
+msgid "cia: no project specified"
+msgstr ""
+
+msgid ""
+"browsing the repository in a graphical way\n"
+"\n"
+"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\n"
+"not distributed with Mercurial.)\n"
+"\n"
+"hgk consists of two parts: a Tcl script that does the displaying and\n"
+"querying of information, and an extension to mercurial named hgk.py,\n"
+"which provides hooks for hgk to get information. hgk can be found in\n"
+"the contrib directory, and hgk.py can be found in the hgext directory.\n"
+"\n"
+"To load the hgext.py extension, add it to your .hgrc file (you have\n"
+"to use your global $HOME/.hgrc file, not one in a repository). You\n"
+"can specify an absolute path:\n"
+"\n"
+"  [extensions]\n"
+"  hgk=/usr/local/lib/hgk.py\n"
+"\n"
+"Mercurial can also scan the default python library path for a file\n"
+"named 'hgk.py' if you set hgk empty:\n"
+"\n"
+"  [extensions]\n"
+"  hgk=\n"
+"\n"
+"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\n"
+"specify the path to hgk in your .hgrc file:\n"
+"\n"
+"  [hgk]\n"
+"  path=/location/of/hgk\n"
+"\n"
+"hgk can make use of the extdiff extension to visualize revisions.\n"
+"Assuming you had already configured extdiff vdiff command, just add:\n"
+"\n"
+"  [hgk]\n"
+"  vdiff=vdiff\n"
+"\n"
+"Revisions context menu will now display additional entries to fire\n"
+"vdiff on hovered and selected revisions."
+msgstr ""
+
+msgid "diff trees from two commits"
+msgstr ""
+
+msgid "output common ancestor information"
+msgstr ""
+
+msgid "cat a specific revision"
+msgstr ""
+
+msgid "cat-file: type or revision not supplied\n"
+msgstr ""
+
+msgid "aborting hg cat-file only understands commits\n"
+msgstr ""
+
+msgid "parse given revisions"
+msgstr ""
+
+msgid "print revisions"
+msgstr ""
+
+msgid "print extension options"
+msgstr ""
+
+msgid "start interactive history viewer"
+msgstr ""
+
+msgid "hg view [-l LIMIT] [REVRANGE]"
+msgstr ""
+
+msgid "generate patch"
+msgstr ""
+
+msgid "recursive"
+msgstr ""
+
+msgid "pretty"
+msgstr ""
+
+msgid "stdin"
+msgstr ""
+
+msgid "detect copies"
+msgstr ""
+
+msgid "search"
+msgstr ""
+
+msgid "hg git-diff-tree [OPTION]... NODE1 NODE2 [FILE]..."
+msgstr ""
+
+msgid "hg debug-cat-file [OPTION]... TYPE FILE"
+msgstr ""
+
+msgid "hg debug-config"
+msgstr ""
+
+msgid "hg debug-merge-base node node"
+msgstr ""
+
+msgid "ignored"
+msgstr ""
+
+msgid "hg debug-rev-parse REV"
+msgstr ""
+
+msgid "header"
+msgstr ""
+
+msgid "topo-order"
+msgstr ""
+
+msgid "parents"
+msgstr ""
+
+msgid "max-count"
+msgstr ""
+
+msgid "hg debug-rev-list [options] revs"
+msgstr ""
+
+msgid ""
+"syntax highlighting in hgweb, based on Pygments\n"
+"\n"
+"It depends on the pygments syntax highlighting library:\n"
+"http://pygments.org/\n"
+"\n"
+"To enable the extension add this to hgrc:\n"
+"\n"
+"[extensions]\n"
+"hgext.highlight =\n"
+"\n"
+"There is a single configuration option:\n"
+"\n"
+"[web]\n"
+"pygments_style = <style>\n"
+"\n"
+"The default is 'colorful'.\n"
+"\n"
+"-- Adam Hupp <adam@hupp.org>\n"
+msgstr ""
+
+msgid "inotify-based status acceleration for Linux systems\n"
+msgstr ""
+
+msgid "start an inotify server for this repository"
+msgstr ""
+
+msgid "(found dead inotify server socket; removing it)\n"
+msgstr ""
+
+msgid "(starting inotify server)\n"
+msgstr ""
+
+#, python-format
+msgid "could not start inotify server: %s\n"
+msgstr ""
+
+#, python-format
+msgid "could not talk to new inotify server: %s\n"
+msgstr ""
+
+msgid "(inotify server not running)\n"
+msgstr ""
+
+#, python-format
+msgid "failed to contact inotify server: %s\n"
+msgstr ""
+
+msgid "run server in background"
+msgstr "Server im Hintergrund ausführen"
+
+msgid "used internally by daemon mode"
+msgstr "Wird intern im Server-Modus genutzt"
+
+msgid "minutes to sit idle before exiting"
+msgstr ""
+
+msgid "name of file to write process ID to"
+msgstr "Dateiname für Prozess-ID"
+
+msgid "hg inserve [OPT]..."
+msgstr ""
+
+#, python-format
+msgid "(inotify: received response from incompatible server version %d)\n"
+msgstr ""
+
+msgid "this system does not seem to support inotify"
+msgstr ""
+
+#, python-format
+msgid "*** the current per-user limit on the number of inotify watches is %s\n"
+msgstr ""
+
+msgid "*** this limit is too low to watch every directory in this repository\n"
+msgstr ""
+
+msgid "*** counting directories: "
+msgstr ""
+
+#, python-format
+msgid "found %d\n"
+msgstr ""
+
+#, python-format
+msgid "*** to raise the limit from %d to %d (run as root):\n"
+msgstr ""
+
+#, python-format
+msgid "***  echo %d > %s\n"
+msgstr ""
+
+#, python-format
+msgid "cannot watch %s until inotify watch limit is raised"
+msgstr ""
+
+#, python-format
+msgid "inotify service not available: %s"
+msgstr ""
+
+#, python-format
+msgid "watching %r\n"
+msgstr ""
+
+#, python-format
+msgid "watching directories under %r\n"
+msgstr ""
+
+#, python-format
+msgid "status: %r dir(%d) -> %s\n"
+msgstr ""
+
+#, python-format
+msgid "status: %r %s -> %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s dirstate reload\n"
+msgstr ""
+
+#, python-format
+msgid "%s end dirstate reload\n"
+msgstr ""
+
+msgid "rescanning due to .hgignore change\n"
+msgstr ""
+
+#, python-format
+msgid "%s event: created %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s event: deleted %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s event: modified %s\n"
+msgstr ""
+
+#, python-format
+msgid "filesystem containing %s was unmounted\n"
+msgstr ""
+
+#, python-format
+msgid "%s readable: %d bytes\n"
+msgstr ""
+
+#, python-format
+msgid "%s below threshold - unhooking\n"
+msgstr ""
+
+#, python-format
+msgid "%s reading %d events\n"
+msgstr ""
+
+#, python-format
+msgid "%s hooking back up with %d bytes readable\n"
+msgstr ""
+
+#, python-format
+msgid "%s processing %d deferred events as %d\n"
+msgstr ""
+
+#, python-format
+msgid "could not start server: %s"
+msgstr ""
+
+#, python-format
+msgid "received query from incompatible client version %d\n"
+msgstr ""
+
+#, python-format
+msgid "answering query for %r\n"
+msgstr ""
+
+msgid "finished setup\n"
+msgstr ""
+
+msgid "polling: no timeout\n"
+msgstr ""
+
+#, python-format
+msgid "polling: %sms timeout\n"
+msgstr ""
+
+#, python-format
+msgid "interhg: invalid pattern for %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid "interhg: invalid regexp for %s: %s\n"
+msgstr ""
+
+msgid ""
+"keyword expansion in local repositories\n"
+"\n"
+"This extension expands RCS/CVS-like or self-customized $Keywords$\n"
+"in tracked text files selected by your configuration.\n"
+"\n"
+"Keywords are only expanded in local repositories and not stored in\n"
+"the change history. The mechanism can be regarded as a convenience\n"
+"for the current user or for archive distribution.\n"
+"\n"
+"Configuration is done in the [keyword] and [keywordmaps] sections\n"
+"of hgrc files.\n"
+"\n"
+"Example:\n"
+"\n"
+"    [keyword]\n"
+"    # expand keywords in every python file except those matching \"x*\"\n"
+"    **.py =\n"
+"    x*    = ignore\n"
+"\n"
+"Note: the more specific you are in your filename patterns\n"
+"      the less you lose speed in huge repos.\n"
+"\n"
+"For [keywordmaps] template mapping and expansion demonstration and\n"
+"control run \"hg kwdemo\".\n"
+"\n"
+"An additional date template filter {date|utcdate} is provided.\n"
+"\n"
+"The default template mappings (view with \"hg kwdemo -d\") can be replaced\n"
+"with customized keywords and templates.\n"
+"Again, run \"hg kwdemo\" to control the results of your config changes.\n"
+"\n"
+"Before changing/disabling active keywords, run \"hg kwshrink\" to avoid\n"
+"the risk of inadvertedly storing expanded keywords in the change history.\n"
+"\n"
+"To force expansion after enabling it, or a configuration change, run\n"
+"\"hg kwexpand\".\n"
+"\n"
+"Also, when committing with the record extension or using mq's qrecord, be "
+"aware\n"
+"that keywords cannot be updated. Again, run \"hg kwexpand\" on the files in\n"
+"question to update keyword expansions after all changes have been checked "
+"in.\n"
+"\n"
+"Expansions spanning more than one line and incremental expansions,\n"
+"like CVS' $Log$, are not supported. A keyword template map\n"
+"\"Log = {desc}\" expands to the first line of the changeset description.\n"
+msgstr ""
+
+msgid "Returns hgdate in cvs-like UTC format."
+msgstr ""
+
+msgid ""
+"\n"
+"    Sets up keyword templates, corresponding keyword regex, and\n"
+"    provides keyword substitution functions.\n"
+"    "
+msgstr ""
+
+msgid "Replaces keywords in data with expanded template."
+msgstr ""
+
+msgid "Returns data with keywords expanded."
+msgstr ""
+
+msgid ""
+"Returns true if path matches [keyword] pattern\n"
+"        and is not a symbolic link.\n"
+"        Caveat: localrepository._link fails on Windows."
+msgstr ""
+
+msgid "Overwrites selected files expanding/shrinking keywords."
+msgstr ""
+
+#, python-format
+msgid "overwriting %s %s keywords\n"
+msgstr ""
+
+msgid "Unconditionally removes all keyword substitutions from text."
+msgstr ""
+
+msgid "Returns text with all keyword substitutions removed."
+msgstr ""
+
+msgid "Returns lines with keyword substitutions removed."
+msgstr ""
+
+msgid ""
+"If in restricted mode returns data read from wdir with\n"
+"        keyword substitutions removed."
+msgstr ""
+
+msgid ""
+"\n"
+"    Subclass of filelog to hook into its read, add, cmp methods.\n"
+"    Keywords are \"stored\" unexpanded, and processed on reading.\n"
+"    "
+msgstr ""
+
+msgid "Expands keywords when reading filelog."
+msgstr ""
+
+msgid "Removes keyword substitutions when adding to filelog."
+msgstr ""
+
+msgid "Removes keyword substitutions for comparison."
+msgstr ""
+
+msgid ""
+"Bails out if [keyword] configuration is not active.\n"
+"    Returns status of working directory."
+msgstr ""
+
+msgid "[keyword] patterns cannot match"
+msgstr ""
+
+msgid "no [keyword] patterns configured"
+msgstr ""
+
+msgid "Selects files and passes them to kwtemplater.overwrite."
+msgstr ""
+
+msgid ""
+"print [keywordmaps] configuration and an expansion example\n"
+"\n"
+"    Show current, custom, or default keyword template maps\n"
+"    and their expansion.\n"
+"\n"
+"    Extend current configuration by specifying maps as arguments\n"
+"    and optionally by reading from an additional hgrc file.\n"
+"\n"
+"    Override current keyword template maps with \"default\" option.\n"
+"    "
+msgstr ""
+
+#, python-format
+msgid ""
+"\n"
+"\t%s\n"
+msgstr ""
+
+#, python-format
+msgid "creating temporary repo at %s\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"\n"
+"%s keywords written to %s:\n"
+msgstr ""
+
+msgid "unhooked all commit hooks\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"\n"
+"removing temporary repo %s\n"
+msgstr ""
+
+msgid ""
+"expand keywords in working directory\n"
+"\n"
+"    Run after (re)enabling keyword expansion.\n"
+"\n"
+"    kwexpand refuses to run if given files contain local changes.\n"
+"    "
+msgstr ""
+
+msgid ""
+"print files currently configured for keyword expansion\n"
+"\n"
+"    Crosscheck which files in working directory are potential targets for\n"
+"    keyword expansion.\n"
+"    That is, files matched by [keyword] config patterns but not symlinks.\n"
+"    "
+msgstr ""
+
+msgid ""
+"revert expanded keywords in working directory\n"
+"\n"
+"    Run before changing/disabling active keywords\n"
+"    or if you experience problems with \"hg import\" or \"hg merge\".\n"
+"\n"
+"    kwshrink refuses to run if given files contain local changes.\n"
+"    "
+msgstr ""
+
+msgid ""
+"Collects [keyword] config in kwtools.\n"
+"    Monkeypatches dispatch._parse if needed."
+msgstr ""
+
+msgid "Monkeypatch dispatch._parse to obtain running hg command."
+msgstr ""
+
+msgid ""
+"Sets up repo as kwrepo for keyword substitution.\n"
+"    Overrides file method to return kwfilelog instead of filelog\n"
+"    if file matches user configuration.\n"
+"    Wraps commit to overwrite configured files with updated\n"
+"    keyword substitutions.\n"
+"    Monkeypatches patch and webcommands."
+msgstr ""
+
+msgid ""
+"Monkeypatch/wrap patch.patchfile.__init__ to avoid\n"
+"        rejects or conflicts due to expanded keywords in working dir."
+msgstr ""
+
+msgid ""
+"Monkeypatch patch.diff to avoid expansion except when\n"
+"        comparing against working dir."
+msgstr ""
+
+msgid "Wraps webcommands.x turning off keyword expansion."
+msgstr ""
+
+msgid "show default keyword template maps"
+msgstr ""
+
+msgid "read maps from rcfile"
+msgstr ""
+
+msgid "hg kwdemo [-d] [-f RCFILE] [TEMPLATEMAP]..."
+msgstr ""
+
+msgid "hg kwexpand [OPTION]... [FILE]..."
+msgstr ""
+
+msgid "show keyword status flags of all files"
+msgstr ""
+
+msgid "show files excluded from expansion"
+msgstr ""
+
+msgid "additionally show untracked files"
+msgstr ""
+
+msgid "hg kwfiles [OPTION]... [FILE]..."
+msgstr ""
+
+msgid "hg kwshrink [OPTION]... [FILE]..."
+msgstr ""
+
+msgid ""
+"patch management and development\n"
+"\n"
+"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).\n"
+"\n"
+"Known patches are represented as patch files in the .hg/patches\n"
+"directory.  Applied patches are both patch files and changesets.\n"
+"\n"
+"Common tasks (use \"hg help command\" for more details):\n"
+"\n"
+"prepare repository to work with patches   qinit\n"
+"create new patch                          qnew\n"
+"import existing patch                     qimport\n"
+"\n"
+"print patch series                        qseries\n"
+"print applied patches                     qapplied\n"
+"print name of top applied patch           qtop\n"
+"\n"
+"add known patch to applied stack          qpush\n"
+"remove patch from applied stack           qpop\n"
+"refresh contents of top applied patch     qrefresh\n"
+msgstr ""
+
+msgid ""
+"Update all references to a field in the patch header.\n"
+"        If none found, add it email style."
+msgstr ""
+
+msgid ""
+"Remove existing message, keeping the rest of the comments fields.\n"
+"        If comments contains 'subject: ', message will prepend\n"
+"        the field and a blank line."
+msgstr ""
+
+#, python-format
+msgid "%s appears more than once in %s"
+msgstr ""
+
+msgid "guard cannot be an empty string"
+msgstr ""
+
+#, python-format
+msgid "guard %r starts with invalid character: %r"
+msgstr ""
+
+#, python-format
+msgid "invalid character in guard %r: %r"
+msgstr ""
+
+#, python-format
+msgid "active guards: %s\n"
+msgstr ""
+
+#, python-format
+msgid "guard %r too short"
+msgstr ""
+
+#, python-format
+msgid "guard %r starts with invalid char"
+msgstr ""
+
+#, python-format
+msgid "allowing %s - no guards in effect\n"
+msgstr ""
+
+#, python-format
+msgid "allowing %s - no matching negative guards\n"
+msgstr ""
+
+#, python-format
+msgid "allowing %s - guarded by %r\n"
+msgstr ""
+
+#, python-format
+msgid "skipping %s - guarded by %r\n"
+msgstr ""
+
+#, python-format
+msgid "skipping %s - no matching guards\n"
+msgstr ""
+
+#, python-format
+msgid "error removing undo: %s\n"
+msgstr ""
+
+#, python-format
+msgid "apply failed for patch %s"
+msgstr ""
+
+#, python-format
+msgid "patch didn't work out, merging %s\n"
+msgstr ""
+
+#, python-format
+msgid "update returned %d"
+msgstr ""
+
+msgid "repo commit failed"
+msgstr ""
+
+#, python-format
+msgid "unable to read %s"
+msgstr ""
+
+#, python-format
+msgid "patch %s does not exist\n"
+msgstr ""
+
+#, python-format
+msgid "patch %s is not applied\n"
+msgstr ""
+
+msgid ""
+"Apply patchfile  to the working directory.\n"
+"        patchfile: file name of patch"
+msgstr ""
+
+msgid "patch failed, unable to continue (try -v)\n"
+msgstr ""
+
+#, python-format
+msgid "applying %s\n"
+msgstr "Wende %s an\n"
+
+#, python-format
+msgid "Unable to read %s\n"
+msgstr ""
+
+#, python-format
+msgid "imported patch %s\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"\n"
+"imported patch %s"
+msgstr ""
+
+#, python-format
+msgid "patch %s is empty\n"
+msgstr ""
+
+msgid "patch failed, rejects left in working dir\n"
+msgstr ""
+
+msgid "fuzz found when applying patch, stopping\n"
+msgstr ""
+
+#, python-format
+msgid "revision %d is not managed"
+msgstr ""
+
+#, python-format
+msgid "cannot delete revision %d above applied patches"
+msgstr ""
+
+msgid "qdelete requires at least one revision or patch name"
+msgstr ""
+
+#, python-format
+msgid "cannot delete applied patch %s"
+msgstr ""
+
+#, python-format
+msgid "patch %s not in series file"
+msgstr ""
+
+msgid "no patches applied"
+msgstr ""
+
+msgid "working directory revision is not qtip"
+msgstr ""
+
+msgid "local changes found, refresh first"
+msgstr ""
+
+msgid "local changes found"
+msgstr ""
+
+#, python-format
+msgid "\"%s\" cannot be used as the name of a patch"
+msgstr ""
+
+msgid ""
+"options:\n"
+"           msg: a string or a no-argument function returning a string\n"
+"        "
+msgstr ""
+
+#, python-format
+msgid "patch \"%s\" already exists"
+msgstr ""
+
+#, python-format
+msgid "error unlinking %s\n"
+msgstr ""
+
+msgid "returns (index, rev, patch)"
+msgstr ""
+
+#, python-format
+msgid "patch name \"%s\" is ambiguous:\n"
+msgstr ""
+
+#, python-format
+msgid "patch %s not in series"
+msgstr ""
+
+msgid "(working directory not at tip)\n"
+msgstr ""
+
+msgid "no patches in series\n"
+msgstr ""
+
+#, python-format
+msgid "cannot push to a previous patch: %s"
+msgstr ""
+
+#, python-format
+msgid "qpush: %s is already at the top\n"
+msgstr ""
+
+#, python-format
+msgid "guarded by %r"
+msgstr ""
+
+msgid "no matching guards"
+msgstr ""
+
+#, python-format
+msgid "cannot push '%s' - %s\n"
+msgstr ""
+
+msgid "all patches are currently applied\n"
+msgstr ""
+
+msgid "patch series already fully applied\n"
+msgstr ""
+
+msgid "cleaning up working directory..."
+msgstr ""
+
+#, python-format
+msgid "errors during apply, please fix and refresh %s\n"
+msgstr ""
+
+#, python-format
+msgid "now at: %s\n"
+msgstr ""
+
+#, python-format
+msgid "patch %s is not applied"
+msgstr ""
+
+msgid "no patches applied\n"
+msgstr ""
+
+#, python-format
+msgid "qpop: %s is already at the top\n"
+msgstr ""
+
+msgid "qpop: forcing dirstate update\n"
+msgstr ""
+
+#, python-format
+msgid "trying to pop unknown node %s"
+msgstr ""
+
+msgid "popping would remove a revision not managed by this patch queue"
+msgstr ""
+
+msgid "deletions found between repo revs"
+msgstr ""
+
+msgid "patch queue now empty\n"
+msgstr ""
+
+msgid "cannot refresh a revision with children"
+msgstr ""
+
+msgid ""
+"refresh interrupted while patch was popped! (revert --all, qpush to "
+"recover)\n"
+msgstr ""
+
+msgid "patch queue directory already exists"
+msgstr ""
+
+#, python-format
+msgid "patch %s is not in series file"
+msgstr ""
+
+msgid "No saved patch data found\n"
+msgstr ""
+
+#, python-format
+msgid "restoring status: %s\n"
+msgstr ""
+
+msgid "save entry has children, leaving it alone\n"
+msgstr ""
+
+#, python-format
+msgid "removing save entry %s\n"
+msgstr ""
+
+#, python-format
+msgid "saved queue repository parents: %s %s\n"
+msgstr ""
+
+msgid "queue directory updating\n"
+msgstr ""
+
+msgid "Unable to load queue repository\n"
+msgstr ""
+
+msgid "save: no patches applied, exiting\n"
+msgstr ""
+
+msgid "status is already saved\n"
+msgstr ""
+
+msgid "hg patches saved state"
+msgstr ""
+
+msgid "repo commit failed\n"
+msgstr ""
+
+msgid ""
+"If all_patches is False, return the index of the next pushable patch\n"
+"        in the series, or the series length. If all_patches is True, return "
+"the\n"
+"        index of the first patch past the last applied one.\n"
+"        "
+msgstr ""
+
+#, python-format
+msgid "patch %s is already in the series file"
+msgstr ""
+
+msgid "option \"-r\" not valid when importing files"
+msgstr ""
+
+msgid "option \"-n\" not valid when importing multiple patches"
+msgstr ""
+
+#, python-format
+msgid "revision %d is the root of more than one branch"
+msgstr ""
+
+#, python-format
+msgid "revision %d is already managed"
+msgstr ""
+
+#, python-format
+msgid "revision %d is not the parent of the queue"
+msgstr ""
+
+#, python-format
+msgid "revision %d has unmanaged children"
+msgstr ""
+
+#, python-format
+msgid "cannot import merge revision %d"
+msgstr ""
+
+#, python-format
+msgid "revision %d is not the parent of %d"
+msgstr ""
+
+msgid "-e is incompatible with import from -"
+msgstr ""
+
+#, python-format
+msgid "patch %s does not exist"
+msgstr ""
+
+msgid "need --name to import a patch from -"
+msgstr ""
+
+#, python-format
+msgid "adding %s to series file\n"
+msgstr ""
+
+msgid ""
+"remove patches from queue\n"
+"\n"
+"    The patches must not be applied, unless they are arguments to\n"
+"    the --rev parameter. At least one patch or revision is required.\n"
+"\n"
+"    With --rev, mq will stop managing the named revisions (converting\n"
+"    them to regular mercurial changesets). The qfinish command should be\n"
+"    used as an alternative for qdel -r, as the latter option is deprecated.\n"
+"\n"
+"    With --keep, the patch files are preserved in the patch directory."
+msgstr ""
+
+msgid "print the patches already applied"
+msgstr ""
+
+msgid "print the patches not yet applied"
+msgstr ""
+
+msgid ""
+"import a patch\n"
+"\n"
+"    The patch is inserted into the series after the last applied patch.\n"
+"    If no patches have been applied, qimport prepends the patch\n"
+"    to the series.\n"
+"\n"
+"    The patch will have the same name as its source file unless you\n"
+"    give it a new one with --name.\n"
+"\n"
+"    You can register an existing patch inside the patch directory\n"
+"    with the --existing flag.\n"
+"\n"
+"    With --force, an existing patch of the same name will be overwritten.\n"
+"\n"
+"    An existing changeset may be placed under mq control with --rev\n"
+"    (e.g. qimport --rev tip -n patch will place tip under mq control).\n"
+"    With --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 "
+"changes.\n"
+"    "
+msgstr ""
+
+msgid ""
+"init a new queue repository\n"
+"\n"
+"    The queue repository is unversioned by default. If -c is\n"
+"    specified, qinit will create a separate nested repository\n"
+"    for patches (qinit -c may also be run later to convert\n"
+"    an unversioned patch repository into a versioned one).\n"
+"    You can use qcommit to commit changes to this queue repository."
+msgstr ""
+
+msgid ""
+"clone main and patch repository at same time\n"
+"\n"
+"    If source is local, destination will have no patches applied.  If\n"
+"    source is remote, this command can not check if patches are\n"
+"    applied in source, so cannot guarantee that patches are not\n"
+"    applied in destination.  If you clone remote repository, be sure\n"
+"    before that it has no patches applied.\n"
+"\n"
+"    Source patch repository is looked for in <src>/.hg/patches by\n"
+"    default.  Use -p <url> to change.\n"
+"\n"
+"    The patch directory must be a nested mercurial repository, as\n"
+"    would be created by qinit -c.\n"
+"    "
+msgstr ""
+
+msgid "versioned patch repository not found (see qinit -c)"
+msgstr ""
+
+msgid "cloning main repo\n"
+msgstr ""
+
+msgid "cloning patch repo\n"
+msgstr ""
+
+msgid "stripping applied patches from destination repo\n"
+msgstr ""
+
+msgid "updating destination repo\n"
+msgstr ""
+
+msgid "commit changes in the queue repository"
+msgstr ""
+
+msgid "print the entire series file"
+msgstr ""
+
+msgid "print the name of the current patch"
+msgstr ""
+
+msgid "print the name of the next patch"
+msgstr ""
+
+msgid "all patches applied\n"
+msgstr ""
+
+msgid "print the name of the previous patch"
+msgstr ""
+
+msgid "only one patch applied\n"
+msgstr ""
+
+msgid ""
+"create a new patch\n"
+"\n"
+"    qnew creates a new patch on top of the currently-applied patch (if "
+"any).\n"
+"    It will refuse to run if there are any outstanding changes unless -f is\n"
+"    specified, in which case the patch will be initialized with them. You\n"
+"    may also use -I, -X, and/or a list of files after the patch name to add\n"
+"    only changes to matching files to the new patch, leaving the rest as\n"
+"    uncommitted modifications.\n"
+"\n"
+"    -u and -d can be used to set the (given) user and date, respectively.\n"
+"    -U and -D set user to current user and date to current date.\n"
+"\n"
+"    -e, -m or -l set the patch header as well as the commit message. If "
+"none\n"
+"    is specified, the header is empty and the commit message is '[mq]: "
+"PATCH'.\n"
+"\n"
+"    Use the --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.\n"
+"    "
+msgstr ""
+
+msgid ""
+"update the current patch\n"
+"\n"
+"    If any file patterns are provided, the refreshed patch will contain "
+"only\n"
+"    the modifications that match those patterns; the remaining "
+"modifications\n"
+"    will remain in the working directory.\n"
+"\n"
+"    If --short is specified, files currently included in the patch will\n"
+"    be refreshed just like matched files and remain in the patch.\n"
+"\n"
+"    hg add/remove/copy/rename work as usual, though you might want to use\n"
+"    git-style patches (--git or [diff] git=1) to track copies and renames.\n"
+"    See the diffs help topic for more information on the git diff format.\n"
+"    "
+msgstr ""
+
+msgid "option \"-e\" incompatible with \"-m\" or \"-l\""
+msgstr ""
+
+msgid ""
+"diff of the current patch and subsequent modifications\n"
+"\n"
+"    Shows a diff which includes the current patch as well as any changes "
+"which\n"
+"    have been made in the working directory since the last refresh (thus\n"
+"    showing what the current patch would become after a qrefresh).\n"
+"\n"
+"    Use 'hg diff' if you only want to see the changes made since the last\n"
+"    qrefresh, or 'hg export qtip' if you want to see changes made by the\n"
+"    current patch without including changes made since the qrefresh.\n"
+"    "
+msgstr ""
+
+msgid ""
+"fold the named patches into the current patch\n"
+"\n"
+"    Patches must not yet be applied. Each patch will be successively\n"
+"    applied to the current patch in the order given. If all the\n"
+"    patches apply successfully, the current patch will be refreshed\n"
+"    with the new cumulative patch, and the folded patches will\n"
+"    be deleted. With -k/--keep, the folded patch files will not\n"
+"    be removed afterwards.\n"
+"\n"
+"    The header for each folded patch will be concatenated with\n"
+"    the current patch header, separated by a line of '* * *'."
+msgstr ""
+
+msgid "qfold requires at least one patch name"
+msgstr ""
+
+msgid "No patches applied"
+msgstr ""
+
+#, python-format
+msgid "Skipping already folded patch %s"
+msgstr ""
+
+#, python-format
+msgid "qfold cannot fold already applied patch %s"
+msgstr ""
+
+#, python-format
+msgid "Error folding patch %s"
+msgstr ""
+
+msgid "push or pop patches until named patch is at top of stack"
+msgstr ""
+
+msgid ""
+"set or print guards for a patch\n"
+"\n"
+"    Guards control whether a patch can be pushed. A patch with no\n"
+"    guards is always pushed. A patch with a positive guard (\"+foo\") is\n"
+"    pushed only if the qselect command has activated it. A patch with\n"
+"    a negative guard (\"-foo\") is never pushed if the qselect command\n"
+"    has activated it.\n"
+"\n"
+"    With no arguments, print the currently active guards.\n"
+"    With arguments, set guards for the named patch.\n"
+"    NOTE: Specifying negative guards now requires '--'.\n"
+"\n"
+"    To set guards on another patch:\n"
+"      hg qguard -- other.patch +2.6.17 -stable\n"
+"    "
+msgstr ""
+
+msgid "cannot mix -l/--list with options or arguments"
+msgstr ""
+
+msgid "no patch to work with"
+msgstr ""
+
+#, python-format
+msgid "no patch named %s"
+msgstr ""
+
+msgid "print the header of the topmost or specified patch"
+msgstr ""
+
+msgid ""
+"push the next patch onto the stack\n"
+"\n"
+"    When --force is applied, all local changes in patched files will be "
+"lost.\n"
+"    "
+msgstr ""
+
+msgid "no saved queues found, please use -n\n"
+msgstr ""
+
+#, python-format
+msgid "merging with queue at: %s\n"
+msgstr ""
+
+msgid ""
+"pop the current patch off the stack\n"
+"\n"
+"    By default, pops off the top of the patch stack. If given a patch name,\n"
+"    keeps popping off patches until the named patch is at the top of the "
+"stack.\n"
+"    "
+msgstr ""
+
+#, python-format
+msgid "using patch queue: %s\n"
+msgstr ""
+
+msgid ""
+"rename a patch\n"
+"\n"
+"    With one argument, renames the current patch to PATCH1.\n"
+"    With two arguments, renames PATCH1 to PATCH2."
+msgstr ""
+
+#, python-format
+msgid "%s already exists"
+msgstr ""
+
+#, python-format
+msgid "A patch named %s already exists in the series file"
+msgstr ""
+
+msgid "restore the queue state saved by a rev"
+msgstr ""
+
+msgid "save current queue state"
+msgstr ""
+
+#, python-format
+msgid "destination %s exists and is not a directory"
+msgstr ""
+
+#, python-format
+msgid "destination %s exists, use -f to force"
+msgstr ""
+
+#, python-format
+msgid "copy %s to %s\n"
+msgstr ""
+
+msgid ""
+"strip a revision and all its descendants from the repository\n"
+"\n"
+"    If one of the working dir's parent revisions is stripped, the working\n"
+"    directory will be updated to the parent of the stripped revision.\n"
+"    "
+msgstr ""
+
+msgid ""
+"set or print guarded patches to push\n"
+"\n"
+"    Use the qguard command to set or print guards on patch, then use\n"
+"    qselect to tell mq which guards to use. A patch will be pushed if it\n"
+"    has no guards or any positive guards match the currently selected "
+"guard,\n"
+"    but will not be pushed if any negative guards match the current guard.\n"
+"    For example:\n"
+"\n"
+"        qguard foo.patch -stable    (negative guard)\n"
+"        qguard bar.patch +stable    (positive guard)\n"
+"        qselect stable\n"
+"\n"
+"    This activates the \"stable\" guard. mq will skip foo.patch (because\n"
+"    it has a negative match) but push bar.patch (because it\n"
+"    has a positive match).\n"
+"\n"
+"    With no arguments, prints the currently active guards.\n"
+"    With one argument, sets the active guard.\n"
+"\n"
+"    Use -n/--none to deactivate guards (no other arguments needed).\n"
+"    When no guards are active, patches with positive guards are skipped\n"
+"    and patches with negative guards are pushed.\n"
+"\n"
+"    qselect can change the guards on applied patches. It does not pop\n"
+"    guarded patches by default. Use --pop to pop back to the last applied\n"
+"    patch that is not guarded. Use --reapply (which implies --pop) to push\n"
+"    back to the current patch afterwards, but skip guarded patches.\n"
+"\n"
+"    Use -s/--series to print a list of all guards in the series file (no\n"
+"    other arguments needed). Use -v for more information."
+msgstr ""
+
+msgid "guards deactivated\n"
+msgstr ""
+
+#, python-format
+msgid "number of unguarded, unapplied patches has changed from %d to %d\n"
+msgstr ""
+
+#, python-format
+msgid "number of guarded, applied patches has changed from %d to %d\n"
+msgstr ""
+
+msgid "guards in series file:\n"
+msgstr ""
+
+msgid "no guards in series file\n"
+msgstr ""
+
+msgid "active guards:\n"
+msgstr ""
+
+msgid "no active guards\n"
+msgstr ""
+
+msgid "popping guarded patches\n"
+msgstr ""
+
+msgid "reapplying unguarded patches\n"
+msgstr ""
+
+msgid ""
+"move applied patches into repository history\n"
+"\n"
+"    Finishes the specified revisions (corresponding to applied patches) by\n"
+"    moving them out of mq control into regular repository history.\n"
+"\n"
+"    Accepts a revision range or the --applied option. If --applied is\n"
+"    specified, all applied mq revisions are removed from mq control.\n"
+"    Otherwise, the given revisions must be at the base of the stack of\n"
+"    applied patches.\n"
+"\n"
+"    This can be especially useful if your changes have been applied to an\n"
+"    upstream repository, or if you are about to push your changes to "
+"upstream.\n"
+"    "
+msgstr ""
+
+msgid "no revisions specified"
+msgstr ""
+
+msgid "cannot commit over an applied mq patch"
+msgstr ""
+
+msgid "source has mq patches applied"
+msgstr ""
+
+#, python-format
+msgid "mq status file refers to unknown node %s\n"
+msgstr ""
+
+#, python-format
+msgid "Tag %s overrides mq patch of the same name\n"
+msgstr ""
+
+msgid "cannot import over an applied patch"
+msgstr ""
+
+msgid "print first line of patch header"
+msgstr ""
+
+msgid "hg qapplied [-s] [PATCH]"
+msgstr ""
+
+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 ""
+
+msgid "use uncompressed transfer (fast over LAN)"
+msgstr "Nutzt unkomprimierte Übertragung (schnell im LAN)"
+
+msgid "location of source patch repo"
+msgstr ""
+
+msgid "hg qclone [OPTION]... SOURCE [DEST]"
+msgstr ""
+
+msgid "hg qcommit [OPTION]... [FILE]..."
+msgstr ""
+
+msgid "hg qdiff [OPTION]... [FILE]..."
+msgstr ""
+
+msgid "keep patch file"
+msgstr ""
+
+msgid "stop managing a revision"
+msgstr ""
+
+msgid "hg qdelete [-k] [-r REV]... [PATCH]..."
+msgstr ""
+
+msgid "edit patch header"
+msgstr ""
+
+msgid "keep folded patch files"
+msgstr ""
+
+msgid "hg qfold [-e] [-k] [-m TEXT] [-l FILE] PATCH..."
+msgstr ""
+
+msgid "overwrite any local changes"
+msgstr ""
+
+msgid "hg qgoto [OPTION]... PATCH"
+msgstr ""
+
+msgid "list all patches and guards"
+msgstr ""
+
+msgid "drop all guards"
+msgstr ""
+
+msgid "hg qguard [-l] [-n] -- [PATCH] [+GUARD]... [-GUARD]..."
+msgstr ""
+
+msgid "hg qheader [PATCH]"
+msgstr ""
+
+msgid "import file in patch dir"
+msgstr ""
+
+msgid "patch file name"
+msgstr ""
+
+msgid "overwrite existing files"
+msgstr ""
+
+msgid "place existing revisions under mq control"
+msgstr ""
+
+msgid "use git extended diff format"
+msgstr "Verwende git-erweitertes diff-Format"
+
+msgid "hg qimport [-e] [-n NAME] [-f] [-g] [-r REV]... FILE..."
+msgstr ""
+
+msgid "create queue repository"
+msgstr ""
+
+msgid "hg qinit [-c]"
+msgstr ""
+
+msgid "import uncommitted changes into patch"
+msgstr ""
+
+msgid "add \"From: <current user>\" to patch"
+msgstr ""
+
+msgid "add \"From: <given user>\" to patch"
+msgstr ""
+
+msgid "add \"Date: <current date>\" to patch"
+msgstr ""
+
+msgid "add \"Date: <given date>\" to patch"
+msgstr ""
+
+msgid "hg qnew [-e] [-m TEXT] [-l FILE] [-f] PATCH [FILE]..."
+msgstr ""
+
+msgid "hg qnext [-s]"
+msgstr ""
+
+msgid "hg qprev [-s]"
+msgstr ""
+
+msgid "pop all patches"
+msgstr ""
+
+msgid "queue name to pop"
+msgstr ""
+
+msgid "forget any local changes"
+msgstr ""
+
+msgid "hg qpop [-a] [-n NAME] [-f] [PATCH | INDEX]"
+msgstr ""
+
+msgid "apply if the patch has rejects"
+msgstr ""
+
+msgid "list patch name in commit text"
+msgstr ""
+
+msgid "apply all patches"
+msgstr ""
+
+msgid "merge from another queue"
+msgstr ""
+
+msgid "merge queue name"
+msgstr ""
+
+msgid "hg qpush [-f] [-l] [-a] [-m] [-n NAME] [PATCH | INDEX]"
+msgstr ""
+
+msgid "refresh only files already in the patch and specified files"
+msgstr ""
+
+msgid "add/update \"From: <current user>\" in patch"
+msgstr ""
+
+msgid "add/update \"From: <given user>\" in patch"
+msgstr ""
+
+msgid "update \"Date: <current date>\" in patch (if present)"
+msgstr ""
+
+msgid "update \"Date: <given date>\" in patch (if present)"
+msgstr ""
+
+msgid "hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FILE] [-s] [FILE]..."
+msgstr ""
+
+msgid "hg qrename PATCH1 [PATCH2]"
+msgstr ""
+
+msgid "delete save entry"
+msgstr ""
+
+msgid "update queue working dir"
+msgstr ""
+
+msgid "hg qrestore [-d] [-u] REV"
+msgstr ""
+
+msgid "copy patch directory"
+msgstr ""
+
+msgid "copy directory name"
+msgstr ""
+
+msgid "clear queue status file"
+msgstr ""
+
+msgid "force copy"
+msgstr ""
+
+msgid "hg qsave [-m TEXT] [-l FILE] [-c] [-n NAME] [-e] [-f]"
+msgstr ""
+
+msgid "disable all guards"
+msgstr ""
+
+msgid "list all guards in series file"
+msgstr ""
+
+msgid "pop to before first guarded applied patch"
+msgstr ""
+
+msgid "pop, then reapply patches"
+msgstr ""
+
+msgid "hg qselect [OPTION]... [GUARD]..."
+msgstr ""
+
+msgid "print patches not in series"
+msgstr ""
+
+msgid "hg qseries [-ms]"
+msgstr ""
+
+msgid "force removal with local changes"
+msgstr ""
+
+msgid "bundle unrelated changesets"
+msgstr ""
+
+msgid "no backups"
+msgstr ""
+
+msgid "hg strip [-f] [-b] [-n] REV"
+msgstr ""
+
+msgid "hg qtop [-s]"
+msgstr ""
+
+msgid "hg qunapplied [-s] [PATCH]"
+msgstr ""
+
+msgid "finish all applied changesets"
+msgstr ""
+
+msgid "hg qfinish [-a] [REV...]"
+msgstr ""
+
+msgid ""
+"hook extension to email notifications on commits/pushes\n"
+"\n"
+"Subscriptions can be managed through hgrc. Default mode is to print\n"
+"messages to stdout, for testing and configuring.\n"
+"\n"
+"To use, configure notify extension and enable in hgrc like this:\n"
+"\n"
+"   [extensions]\n"
+"   hgext.notify =\n"
+"\n"
+"   [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"
+"\n"
+"   [notify]\n"
+"   # config items go in here\n"
+"\n"
+" config items:\n"
+"\n"
+" REQUIRED:\n"
+"   config = /path/to/file # file containing subscriptions\n"
+"\n"
+" OPTIONAL:\n"
+"   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"
+"   [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\n"
+"\n"
+" notify config file has same format as regular hgrc. it has two\n"
+" sections so you can express subscriptions in whatever way is handier\n"
+" for you.\n"
+"\n"
+"   [usersubs]\n"
+"   # key is subscriber email, value is \",\"-separated list of glob "
+"patterns\n"
+"   user@host = pattern\n"
+"\n"
+"   [reposubs]\n"
+"   # key is glob pattern, value is \",\"-separated list of subscriber "
+"emails\n"
+"   pattern = user@host\n"
+"\n"
+" glob patterns are matched against path to repo root.\n"
+"\n"
+" if you like, you can put notify config file in repo that users can\n"
+" push changes to, they can manage their own subscriptions."
+msgstr ""
+
+msgid "email notification class."
+msgstr ""
+
+msgid "strip leading slashes from local path, turn into web-safe path."
+msgstr ""
+
+msgid "try to clean up email addresses."
+msgstr ""
+
+msgid "return list of email addresses of subscribers to this repo."
+msgstr ""
+
+msgid "format one changeset."
+msgstr ""
+
+msgid "true if incoming changes from this source should be skipped."
+msgstr ""
+
+msgid "send message."
+msgstr ""
+
+#, python-format
+msgid "%s: %d new changesets"
+msgstr ""
+
+#, python-format
+msgid "notify: sending %d subscribers %d changes\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"\n"
+"diffs (truncated from %d to %d lines):\n"
+"\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"\n"
+"diffs (%d lines):\n"
+"\n"
+msgstr ""
+
+msgid ""
+"send email notifications to interested subscribers.\n"
+"\n"
+"    if used as changegroup hook, send one email for all changesets in\n"
+"    changegroup. else send one email per changeset."
+msgstr ""
+
+#, python-format
+msgid "notify: no subscribers to repo %s\n"
+msgstr ""
+
+#, python-format
+msgid "notify: changes have source \"%s\" - skipping\n"
+msgstr ""
+
+msgid ""
+"browse command output with external pager\n"
+"\n"
+"To set the pager that should be used, set the application variable:\n"
+"\n"
+"  [pager]\n"
+"  pager = LESS='FSRX' less\n"
+"\n"
+"If no pager is set, the pager extensions uses the environment\n"
+"variable $PAGER. If neither pager.pager, nor $PAGER is set, no pager\n"
+"is used.\n"
+"\n"
+"If you notice \"BROKEN PIPE\" error messages, you can disable them\n"
+"by setting:\n"
+"\n"
+"  [pager]\n"
+"  quiet = True\n"
+"\n"
+"You can disable the pager for certain commands by adding them to the\n"
+"pager.ignore list:\n"
+"\n"
+"  [pager]\n"
+"  ignore = version, help, update\n"
+"\n"
+"You can also enable the pager only for certain commands using pager.attend:\n"
+"\n"
+"  [pager]\n"
+"  attend = log\n"
+"\n"
+"If pager.attend is present, pager.ignore will be ignored.\n"
+"\n"
+"To ignore global commands like \"hg version\" or \"hg help\", you have to "
+"specify\n"
+"them in the global .hgrc\n"
+msgstr ""
+
+msgid ""
+"use suffixes to refer to ancestor revisions\n"
+"\n"
+"This extension allows you to use git-style suffixes to refer to\n"
+"the ancestors of a specific revision.\n"
+"\n"
+"For example, if you can refer to a revision as \"foo\", then:\n"
+"\n"
+"- 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\n"
+"\n"
+"- 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 ""
+
+msgid ""
+"sending Mercurial changesets as a series of patch emails\n"
+"\n"
+"The series is started off with a \"[PATCH 0 of N]\" introduction,\n"
+"which describes the series as a whole.\n"
+"\n"
+"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 body parts:\n"
+"\n"
+"  The remainder of the changeset description.\n"
+"\n"
+"  [Optional] The result of running diffstat on the patch.\n"
+"\n"
+"  The patch itself, as generated by \"hg export\".\n"
+"\n"
+"Each message refers to all of its predecessors using the In-Reply-To\n"
+"and References headers, so they will show up as a sequence in\n"
+"threaded mail and news readers, and in mail archives.\n"
+"\n"
+"For each changeset, you will be prompted with a diffstat summary and\n"
+"the changeset summary, so you can be sure you are sending the right "
+"changes.\n"
+"\n"
+"To enable this extension:\n"
+"\n"
+"  [extensions]\n"
+"  hgext.patchbomb =\n"
+"\n"
+"To configure other defaults, add a section like this to your hgrc file:\n"
+"\n"
+"  [email]\n"
+"  from = My Name <my@email>\n"
+"  to = recipient1, recipient2, ...\n"
+"  cc = cc1, cc2, ...\n"
+"  bcc = bcc1, bcc2, ...\n"
+"\n"
+"Then you can use the \"hg email\" command to mail a series of changesets\n"
+"as a patchbomb.\n"
+"\n"
+"To avoid sending patches prematurely, it is a good idea to first run\n"
+"the \"email\" command with the \"-n\" option (test only).  You will be\n"
+"prompted for an email recipient address, a subject an an introductory\n"
+"message describing the patches of your patchbomb.  Then when all is\n"
+"done, patchbomb messages are displayed. If PAGER environment variable\n"
+"is set, your pager will be fired up once for each patchbomb message, so\n"
+"you can verify everything is alright.\n"
+"\n"
+"The \"-m\" (mbox) option is also very useful.  Instead of previewing\n"
+"each patchbomb message in a pager or sending the messages directly,\n"
+"it will create a UNIX mailbox file with the patch emails.  This\n"
+"mailbox file can be previewed with any mail user agent which supports\n"
+"UNIX mbox files, e.g. with mutt:\n"
+"\n"
+"  % mutt -R -f mbox\n"
+"\n"
+"When you are previewing the patchbomb messages, you can use `formail'\n"
+"(a utility that is commonly installed as part of the procmail package),\n"
+"to send each message out:\n"
+"\n"
+"  % formail -s sendmail -bm -t < mbox\n"
+"\n"
+"That should be all. Now your patchbomb is on its way out.\n"
+"\n"
+"You can also either configure the method option in the email section\n"
+"to be a sendmail compatable mailer or fill out the [smtp] section so\n"
+"that the patchbomb extension can automatically send patchbombs directly\n"
+"from the commandline. See the [email] and [smtp] sections in hgrc(5)\n"
+"for details."
+msgstr ""
+
+msgid "Please enter a valid value.\n"
+msgstr ""
+
+msgid "does the diffstat above look okay? "
+msgstr ""
+
+msgid "diffstat rejected"
+msgstr ""
+
+msgid ""
+"send changesets by email\n"
+"\n"
+"    By default, diffs are sent in the format generated by hg export,\n"
+"    one per message.  The series starts with a \"[PATCH 0 of N]\"\n"
+"    introduction, which describes the series as a whole.\n"
+"\n"
+"    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 body parts.  First, the rest of\n"
+"    the changeset description.  Next, (optionally) if the diffstat\n"
+"    program is installed, the result of running diffstat on the patch.\n"
+"    Finally, the patch itself, as generated by \"hg export\".\n"
+"\n"
+"    With --outgoing, emails will be generated for patches not\n"
+"    found in the destination repository (or only those which are\n"
+"    ancestors of the specified revisions if any are provided)\n"
+"\n"
+"    With --bundle, changesets are selected as for --outgoing,\n"
+"    but a single email containing a binary Mercurial bundle as an\n"
+"    attachment will be sent.\n"
+"\n"
+"    Examples:\n"
+"\n"
+"    hg email -r 3000          # send patch 3000 only\n"
+"    hg email -r 3000 -r 3001  # send patches 3000 and 3001\n"
+"    hg email -r 3000:3005     # send patches 3000 through 3005\n"
+"    hg email 3000             # send patch 3000 (deprecated)\n"
+"\n"
+"    hg email -o               # send all patches not in default\n"
+"    hg email -o DEST          # send all patches not in DEST\n"
+"    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\n"
+"\n"
+"    hg email -b               # send bundle of all patches not in default\n"
+"    hg email -b DEST          # send bundle of all patches not in DEST\n"
+"    hg email -b -r 3000       # bundle of all ancestors of 3000 not in "
+"default\n"
+"    hg email -b -r 3000 DEST  # bundle of all ancestors of 3000 not in DEST\n"
+"\n"
+"    Before using this command, you will need to enable email in your hgrc.\n"
+"    See the [email] section in hgrc(5) for details.\n"
+"    "
+msgstr ""
+
+msgid "Return the revisions present locally but not in dest"
+msgstr ""
+
+msgid "specify at least one changeset with -r or -o"
+msgstr ""
+
+msgid "--outgoing mode always on with --bundle; do not re-specify --outgoing"
+msgstr ""
+
+msgid "too many destinations"
+msgstr ""
+
+msgid "use only one form to specify the revision"
+msgstr ""
+
+msgid ""
+"\n"
+"Write the introductory message for the patch series.\n"
+"\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"This patch series consists of %d patches.\n"
+"\n"
+msgstr ""
+
+msgid "Final summary:\n"
+msgstr ""
+
+msgid "Displaying "
+msgstr ""
+
+msgid "Writing "
+msgstr ""
+
+msgid "Sending "
+msgstr ""
+
+msgid "send patches as attachments"
+msgstr ""
+
+msgid "send patches as inline attachments"
+msgstr ""
+
+msgid "email addresses of blind carbon copy recipients"
+msgstr ""
+
+msgid "email addresses of copy recipients"
+msgstr ""
+
+msgid "add diffstat output to messages"
+msgstr ""
+
+msgid "use the given date as the sending date"
+msgstr ""
+
+msgid "use the given file as the series description"
+msgstr ""
+
+msgid "email address of sender"
+msgstr ""
+
+msgid "print messages that would be sent"
+msgstr ""
+
+msgid "write messages to mbox file instead of sending them"
+msgstr ""
+
+msgid "subject of first message (intro or single patch)"
+msgstr ""
+
+msgid "email addresses of recipients"
+msgstr ""
+
+msgid "omit hg patch header"
+msgstr ""
+
+msgid "send changes not found in the target repository"
+msgstr ""
+
+msgid "send changes not in target as a binary bundle"
+msgstr ""
+
+msgid "file name of the bundle attachment"
+msgstr ""
+
+msgid "a revision to send"
+msgstr ""
+
+msgid "run even when remote repository is unrelated (with -b)"
+msgstr ""
+
+msgid "a base changeset to specify instead of a destination (with -b)"
+msgstr ""
+
+msgid "send an introduction email for a single patch"
+msgstr ""
+
+msgid "hg email [OPTION]... [DEST]..."
+msgstr ""
+
+msgid ""
+"removes files not tracked by Mercurial\n"
+"\n"
+"    Delete files not known to Mercurial. This is useful to test local and\n"
+"    uncommitted changes in an otherwise-clean source tree.\n"
+"\n"
+"    This means that purge will delete:\n"
+"     - Unknown files: files marked with \"?\" by \"hg status\"\n"
+"     - Empty directories: in fact Mercurial ignores directories unless they\n"
+"       contain files under source control managment\n"
+"    But it will leave untouched:\n"
+"     - Modified and unmodified tracked files\n"
+"     - Ignored files (unless --all is specified)\n"
+"     - New files added to the repository (with \"hg add\")\n"
+"\n"
+"    If directories are given on the command line, only files in these\n"
+"    directories are considered.\n"
+"\n"
+"    Be careful with purge, as you could irreversibly delete some files you\n"
+"    forgot to add to the repository. If you only want to print the list of\n"
+"    files that this program would delete, use the --print option.\n"
+"    "
+msgstr ""
+
+#, python-format
+msgid "%s cannot be removed"
+msgstr ""
+
+#, python-format
+msgid "warning: %s\n"
+msgstr ""
+
+#, python-format
+msgid "Removing file %s\n"
+msgstr ""
+
+#, python-format
+msgid "Removing directory %s\n"
+msgstr ""
+
+msgid "abort if an error occurs"
+msgstr ""
+
+msgid "purge ignored files too"
+msgstr ""
+
+msgid "print the file names instead of deleting them"
+msgstr ""
+
+msgid "end filenames with NUL, for use with xargs (implies -p)"
+msgstr "Beendet Dateinamen mit NUL zur Nutzung mit xargs (implizert -p)"
+
+msgid "hg purge [OPTION]... [DIR]..."
+msgstr ""
+
+# Nicht übersetzen
+msgid ""
+"move sets of revisions to a different ancestor\n"
+"\n"
+"This extension lets you rebase changesets in an existing Mercurial "
+"repository.\n"
+"\n"
+"For more information:\n"
+"http://www.selenic.com/mercurial/wiki/index.cgi/RebaseProject\n"
+msgstr ""
+
+# Nicht übersetzen
+msgid "return the correct ancestor"
+msgstr ""
+
+msgid "first revision, do not change ancestor\n"
+msgstr "Erste Revision, ändere den Vorgänger nicht\n"
+
+msgid ""
+"move changeset (and descendants) to a different branch\n"
+"\n"
+"    Rebase uses repeated merging to graft changesets from one part of "
+"history\n"
+"    onto another. This can be useful for linearizing local changes relative "
+"to\n"
+"    a master development tree.\n"
+"\n"
+"    If a rebase is interrupted to manually resolve a merge, it can be "
+"continued\n"
+"    with --continue or aborted with --abort.\n"
+"    "
+msgstr ""
+"Verschiebt Versionen (und ihre Nachfolger) auf einen abweichenden Zweig\n"
+"\n"
+"    Rebase nutzt wiederholtes Zusammenführen um Versionen von einem Teil "
+"der\n"
+"    Versionshistorie auf einen anderen zu pfropfen. Dies ist nützlich, um\n"
+"    lokale Änderungen abhängig von einem Hauptentwicklunszweig zu\n"
+"    linearisieren.\n"
+"\n"
+"    Sollte ein Rebase unterbrochen werden, um manuell eine Zusammenführung\n"
+"    auszuführen, kann er mit --continue wieder aufgenommen oder mit --abort\n"
+"    abgebrochen werden.\n"
+"    "
+
+msgid "cannot use both keepbranches and extrafn"
+msgstr "keepbranches und extrafn können nicht gleichzeitig genutzt werden"
+
+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"
+
+msgid "abort and continue do not allow specifying revisions"
+msgstr "abort und continue erlauben die Angabe einer Revision nicht"
+
+msgid "cannot specify both a revision and a base"
+msgstr "Es können nicht revision und base gleichzeitig angegeben werden"
+
+msgid "nothing to rebase\n"
+msgstr "Kein Rebase nötig\n"
+
+msgid "rebase merging completed\n"
+msgstr "Zusammenführungen des Rebase abgeschlossen\n"
+
+msgid "warning: new changesets detected on source branch, not stripping\n"
+msgstr "Warnung: Neue Änderungssätze auf Quellzweig gefunden, lösche nicht\n"
+
+msgid "rebase completed\n"
+msgstr "Rebase abgeschlossen\n"
+
+#, python-format
+msgid "%d revisions have been skipped\n"
+msgstr "%d Revisionen wurden übersprungen\n"
+
+# Nicht übersetzen
+msgid ""
+"Skip commit if collapsing has been required and rev is not the last\n"
+"    revision, commit otherwise\n"
+"    "
+msgstr ""
+
+msgid " set parents\n"
+msgstr " setzt die Vorgänger\n"
+
+# Nicht übersetzen
+msgid "Rebase a single revision"
+msgstr "Rebase einer einzigen Revision"
+
+#, python-format
+msgid "rebasing %d:%s\n"
+msgstr "Rebase von %d:%s\n"
+
+#, python-format
+msgid " future parents are %d and %d\n"
+msgstr " die zukünftigen Vorgänger sind %d und %d\n"
+
+#, python-format
+msgid " update to %d:%s\n"
+msgstr " aktualisiert auf %d:%s\n"
+
+msgid " already in target\n"
+msgstr " bereits auf Ziel\n"
+
+#, python-format
+msgid " merge against %d:%s\n"
+msgstr " Zusammenführung zwischen %d:%s\n"
+
+msgid "fix unresolved conflicts with hg resolve then run hg rebase --continue"
+msgstr ""
+"Behebe ungelöste Konflikte mit hg resolve, dann führe hg rebase --continue "
+"aus"
+
+msgid "resuming interrupted rebase\n"
+msgstr "Nehme unterbrochenen Rebase wieder auf\n"
+
+#, python-format
+msgid "no changes, revision %d skipped\n"
+msgstr "keine Änderungen, Revision %d übersprungen\n"
+
+#, python-format
+msgid "next revision set to %s\n"
+msgstr "nächste Revision auf %s gesetzt\n"
+
+# Nicht übersetzen
+msgid "Return the new parent relationship of the revision that will be rebased"
+msgstr ""
+
+#, python-format
+msgid "cannot use revision %d as base, result would have 3 parents"
+msgstr ""
+"Revision %d kann nicht als Basis genutzt werden, das Ergebnis hätte 3 "
+"Vorgänger"
+
+# Nicht übersetzen
+msgid "Update rebased mq patches - finalize and then import them"
+msgstr ""
+
+#, python-format
+msgid "revision %d is an mq patch (%s), finalize it.\n"
+msgstr "Revision %d ist ein MQ-Patch (%s) und muss finalisiert werden.\n"
+
+#, python-format
+msgid "import mq patch %d (%s)\n"
+msgstr "Importiere MQ Patch %d (%s)\n"
+
+# Nicht übersetzen
+msgid "Store the current status to allow recovery"
+msgstr ""
+
+msgid "rebase status stored\n"
+msgstr "Rebase-Zustand gesichert\n"
+
+# Nicht übersetzen
+msgid "Remove the status files"
+msgstr ""
+
+# Nicht übersetzen
+msgid "Restore a previously stored status"
+msgstr ""
+
+msgid "rebase status resumed\n"
+msgstr "Rebase-Zustand wieder aufgenommen\n"
+
+msgid "no rebase in progress"
+msgstr "Kein vorheriger Rebase zur Wiederaufnahme"
+
+# Nicht übersetzen
+msgid "Restore the repository to its original state"
+msgstr ""
+
+msgid "warning: new changesets detected on target branch, not stripping\n"
+msgstr "Warnung: Neue Änderungssätze auf Zielzweig gefunden, lösche nicht\n"
+
+msgid "rebase aborted\n"
+msgstr "Rebase abgebrochen\n"
+
+# Nicht übersetzen
+msgid "Define which revisions are going to be rebased and where"
+msgstr ""
+
+msgid "cannot rebase onto an applied mq patch"
+msgstr "Rebase kann auf einem angewandten MQ-Patch nicht aufsetzen"
+
+msgid "cannot rebase an ancestor"
+msgstr "Kann Rebase nicht auf einem Vorläufer ausführen"
+
+msgid "cannot rebase a descendant"
+msgstr "Kann Rebase nicht auf einem Nachfolger ausführen"
+
+msgid "already working on current\n"
+msgstr "Arbeite bereits auf der aktuellen Version\n"
+
+msgid "already working on the current branch\n"
+msgstr "Arbeite bereits auf dem aktuellen Zweig\n"
+
+#, python-format
+msgid "rebase onto %d starting from %d\n"
+msgstr "Rebase auf %d beginnend bei %d\n"
+
+msgid "unable to collapse, there is more than one external parent"
+msgstr ""
+"Zusammenfalten nicht möglich, es gibt mehr als einen externen Vorgänger"
+
+# Nicht übersetzen
+msgid "Call rebase after pull if the latter has been invoked with --rebase"
+msgstr ""
+
+msgid "--update and --rebase are not compatible, ignoring the update flag\n"
+msgstr "--update und --rebase sind nicht kompatibel, ignoriere --update\n"
+
+# Nicht übersetzen
+msgid "Replace pull with a decorator to provide --rebase option"
+msgstr ""
+
+msgid "rebase working directory to branch head"
+msgstr "Führt Rebase zu einem Zweigkopf auf dem Arbeitsverzeichnis aus"
+
+msgid "keep original revisions"
+msgstr "Behält die ursprünglichen Revisionen"
+
+msgid "keep original branches"
+msgstr "Behält die ursprünglichen Zweige"
+
+msgid "rebase from a given revision"
+msgstr "Rebase ab einer angegebenen Revision"
+
+msgid "rebase from the base of a given revision"
+msgstr "Rebase ab der Basis einer angegebenen Revision"
+
+msgid "rebase onto a given revision"
+msgstr "Rebase der angegebene Revision"
+
+msgid "collapse the rebased revisions"
+msgstr "Faltet die erzeugten Revisionen nach dem Rebase zusammen"
+
+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] [--collapse] | [-c] | [-a] | [--keep]"
+msgstr ""
+
+# Nicht übersetzen
+msgid "interactive change selection during commit or qrefresh"
+msgstr ""
+
+# Nicht übersetzen
+msgid ""
+"like patch.iterhunks, but yield different events\n"
+"\n"
+"    - ('file',    [header_lines + fromfile + tofile])\n"
+"    - ('context', [context_lines])\n"
+"    - ('hunk',    [hunk_lines])\n"
+"    - ('range',   (-start,len, +start,len, diffp))\n"
+"    "
+msgstr ""
+
+# Nicht übersetzen
+msgid "scan lr while predicate holds"
+msgstr ""
+
+# Nicht übersetzen
+msgid ""
+"patch header\n"
+"\n"
+"    XXX shoudn't we move this to mercurial/patch.py ?\n"
+"    "
+msgstr ""
+
+msgid "this modifies a binary file (all or nothing)\n"
+msgstr "Dies modifiziert eine Binärdatei (alles oder nicht)\n"
+
+msgid "this is a binary file\n"
+msgstr "Dies ist eine Binärdatei\n"
+
+#, python-format
+msgid "%d hunks, %d lines changed\n"
+msgstr "%d Hunks, %d Zeilen geändert\n"
+
+# Nicht übersetzen
+msgid "hunk -> (n+,n-)"
+msgstr ""
+
+# Nicht übersetzen
+msgid ""
+"patch hunk\n"
+"\n"
+"    XXX shouldn't we merge this with patch.hunk ?\n"
+"    "
+msgstr ""
+
+# Nicht übersetzen
+msgid "patch -> [] of hunks "
+msgstr ""
+
+# Nicht übersetzen
+msgid "patch parsing state machine"
+msgstr ""
+
+# Nicht übersetzen
+msgid "Interactively filter patch chunks into applied-only chunks"
+msgstr ""
+
+# Nicht übersetzen
+msgid ""
+"fetch next portion from chunks until a 'header' is seen\n"
+"        NB: header == new-file mark\n"
+"        "
+msgstr ""
+
+# Nicht übersetzen
+msgid ""
+"prompt query, and process base inputs\n"
+"\n"
+"        - y/n for the rest of file\n"
+"        - y/n for the rest\n"
+"        - ? (help)\n"
+"        - q (quit)\n"
+"\n"
+"        else, input is returned to the caller.\n"
+"        "
+msgstr ""
+
+msgid "[Ynsfdaq?]"
+msgstr ""
+
+msgid "y"
+msgstr ""
+
+msgid "?"
+msgstr ""
+
+msgid "y - record this change"
+msgstr "y - übernimmt diese Änderung"
+
+msgid "s"
+msgstr ""
+
+msgid "f"
+msgstr ""
+
+msgid "d"
+msgstr ""
+
+msgid "a"
+msgstr ""
+
+msgid "q"
+msgstr ""
+
+msgid "user quit"
+msgstr "Abbruch durch Benutzer"
+
+#, python-format
+msgid "examine changes to %s?"
+msgstr "Überprüfe Änderungen an %s?"
+
+msgid " and "
+msgstr " und "
+
+#, python-format
+msgid "record this change to %r?"
+msgstr "Übernehme die Änderung an %r?"
+
+#, python-format
+msgid "record change %d/%d to %r?"
+msgstr "Übernehme die Änderung %d/%d an %r?"
+
+msgid ""
+"interactively select changes to commit\n"
+"\n"
+"    If a list of files is omitted, all changes reported by \"hg status\"\n"
+"    will be candidates for recording.\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"\n"
+"    You will be prompted for whether to record changes to each\n"
+"    modified file, and for files with multiple changes, for each\n"
+"    change to use.  For each query, the following responses are\n"
+"    possible:\n"
+"\n"
+"    y - record this change\n"
+"    n - skip this change\n"
+"\n"
+"    s - skip remaining changes to this file\n"
+"    f - record remaining changes to this file\n"
+"\n"
+"    d - done, skip remaining changes and files\n"
+"    a - record all changes to all remaining files\n"
+"    q - quit, recording no changes\n"
+"\n"
+"    ? - display help"
+msgstr ""
+"Interaktive Auswahl von Änderungen zur Übernahme ins Archiv\n"
+"\n"
+"    Falls keine Liste von Dateien übergeben wird, gelten alle von\n"
+"    \"hg status\" gemeldeten Änderungen als Kandidaten für 'record'.\n"
+"\n"
+"    Siehe 'hg help dates' für eine Liste aller gültigen Formate für -d/--\n"
+"\n"
+"    Es erfolgt eine Abfrage für jede Datei, ob Änderungen übernommen\n"
+"    werden sollen, bei Dateien mit mehreren Änderungen für jede einzelne\n"
+"    Änderung. Folgenden Antworten sind bei jeder Anfrage möglich:\n"
+"\n"
+"    y - übernimmt diese Änderung\n"
+"    n - überspringt diese Änderung\n"
+"\n"
+"    s - überspringt verbleibende Änderungen dieser Datei\n"
+"    f - übernimmt verbleibende Änderungen dieser Datei\n"
+"\n"
+"    d - fertig, überspringt verbleibende Änderungen und Dateien\n"
+"    a - übernimmt alle Änderungen aller verbleibenden Dateien\n"
+"    q - beendet ohne Änderungen zu übernehmen\n"
+"\n"
+"    ? - zeigt Hilfe an"
+
+msgid ""
+"interactively record a new patch\n"
+"\n"
+"    see 'hg help qnew' & 'hg help record' for more information and usage\n"
+"    "
+msgstr ""
+"Interaktive Auswahl eines neuen Patches\n"
+"\n"
+"    Siehe 'hg help qnew' & 'hg help record' für weitere Informationen und\n"
+"    die Verwendung\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'"
+
+# Nicht übersetzen
+msgid ""
+"This is generic record driver.\n"
+"\n"
+"        It's job is to interactively filter local changes, and accordingly\n"
+"        prepare working dir into a state, where the job can be delegated to\n"
+"        non-interactive commit command such as 'commit' or 'qrefresh'.\n"
+"\n"
+"        After the actual job is done by non-interactive command, working "
+"dir\n"
+"        state is restored to original.\n"
+"\n"
+"        In the end we'll record intresting changes, and everything else will "
+"be\n"
+"        left in place, so the user can continue his work.\n"
+"        "
+msgstr ""
+
+msgid "no changes to record\n"
+msgstr "Keine Änderungen zu übernehmen\n"
+
+#, python-format
+msgid "backup %r as %r\n"
+msgstr "Sichere %r unter %r\n"
+
+msgid "applying patch\n"
+msgstr "Wende Patch an\n"
+
+msgid "patch failed to apply"
+msgstr "Patch schlug fehl"
+
+#, python-format
+msgid "restoring %r to %r\n"
+msgstr "Wiederherstellung: %r nach %r\n"
+
+msgid "hg record [OPTION]... [FILE]..."
+msgstr "hg record [OPTION]... [DATEI]..."
+
+msgid "hg qrecord [OPTION]... PATCH [FILE]..."
+msgstr "hg qrecord [OPTION]... PATCH [DATEI]..."
+
+msgid ""
+"patch transplanting tool\n"
+"\n"
+"This extension allows you to transplant patches from another branch.\n"
+"\n"
+"Transplanted patches are recorded in .hg/transplant/transplants, as a map\n"
+"from a changeset hash to its hash in the source repository.\n"
+msgstr ""
+
+msgid ""
+"returns True if a node is already an ancestor of parent\n"
+"        or has already been transplanted"
+msgstr ""
+
+msgid "apply the revisions in revmap one by one in revision order"
+msgstr ""
+
+#, python-format
+msgid "skipping already applied revision %s\n"
+msgstr ""
+
+#, python-format
+msgid "skipping merge changeset %s:%s\n"
+msgstr ""
+
+#, python-format
+msgid "%s merged at %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s transplanted to %s\n"
+msgstr ""
+
+msgid "arbitrarily rewrite changeset before applying it"
+msgstr ""
+
+#, python-format
+msgid "filtering %s\n"
+msgstr ""
+
+msgid "filter failed"
+msgstr ""
+
+msgid "apply the patch in patchfile to the repository as a transplant"
+msgstr ""
+
+msgid "can only omit patchfile if merging"
+msgstr ""
+
+#, python-format
+msgid "%s: empty changeset"
+msgstr ""
+
+msgid "Fix up the merge and run hg transplant --continue"
+msgstr ""
+
+msgid "recover last transaction and apply remaining changesets"
+msgstr ""
+
+#, python-format
+msgid "%s transplanted as %s\n"
+msgstr ""
+
+msgid "commit working directory using journal metadata"
+msgstr ""
+
+msgid "transplant log file is corrupt"
+msgstr ""
+
+#, python-format
+msgid "working dir not at transplant parent %s"
+msgstr ""
+
+msgid "commit failed"
+msgstr ""
+
+msgid "journal changelog metadata for later recover"
+msgstr ""
+
+msgid "remove changelog journal"
+msgstr ""
+
+msgid "interactively transplant changesets"
+msgstr ""
+
+msgid "apply changeset? [ynmpcq?]:"
+msgstr ""
+
+msgid ""
+"transplant changesets from another branch\n"
+"\n"
+"    Selected changesets will be applied on top of the current working\n"
+"    directory with the log of the original changeset. If --log is\n"
+"    specified, log messages will have a comment appended of the form:\n"
+"\n"
+"    (transplanted from CHANGESETHASH)\n"
+"\n"
+"    You can rewrite the changelog message with the --filter option.\n"
+"    Its argument will be invoked with the current changelog message\n"
+"    as $1 and the patch as $2.\n"
+"\n"
+"    If --source is specified, selects changesets from the named\n"
+"    repository. If --branch is specified, selects changesets from the\n"
+"    branch holding the named revision, up to that revision. If --all\n"
+"    is specified, all changesets on the branch will be transplanted,\n"
+"    otherwise you will be prompted to select the changesets you want.\n"
+"\n"
+"    hg transplant --branch REVISION --all will rebase the selected branch\n"
+"    (up to the named revision) onto your current working directory.\n"
+"\n"
+"    You can optionally mark selected transplanted changesets as\n"
+"    merge changesets. You will not be prompted to transplant any\n"
+"    ancestors of a merged transplant, and you can merge descendants\n"
+"    of them normally instead of transplanting them.\n"
+"\n"
+"    If no merges or revisions are provided, hg transplant will start\n"
+"    an interactive changeset browser.\n"
+"\n"
+"    If a changeset application fails, you can fix the merge by hand and\n"
+"    then resume where you left off by calling hg transplant --continue.\n"
+"    "
+msgstr ""
+
+msgid "--continue is incompatible with branch, all or merge"
+msgstr ""
+
+msgid "no source URL, branch tag or revision list provided"
+msgstr ""
+
+msgid "--all requires a branch revision"
+msgstr ""
+
+msgid "--all is incompatible with a revision list"
+msgstr ""
+
+msgid "no revision checked out"
+msgstr ""
+
+msgid "outstanding uncommitted merges"
+msgstr ""
+
+msgid "outstanding local changes"
+msgstr ""
+
+msgid "pull patches from REPOSITORY"
+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 FILTER"
+msgstr ""
+
+msgid ""
+"hg transplant [-s REPOSITORY] [-b BRANCH [-a]] [-p REV] [-m REV] [REV]..."
+msgstr ""
+
+msgid ""
+"allow to use MBCS path with problematic encoding.\n"
+"\n"
+"Some MBCS encodings are not good for some path operations\n"
+"(i.e. splitting path, case conversion, etc.) with its encoded bytes.\n"
+"We call such a encoding (i.e. shift_jis and big5) as \"problematic\n"
+"encoding\".  This extension can be used to fix the issue with those\n"
+"encodings by wrapping some functions to convert to unicode string\n"
+"before path operation.\n"
+"\n"
+"This extension is usefull for:\n"
+" * Japanese Windows users using shift_jis encoding.\n"
+" * Chinese Windows users using big5 encoding.\n"
+" * All users who use a repository with one of problematic encodings\n"
+"   on case-insensitive file system.\n"
+"\n"
+"This extension is not needed for:\n"
+" * Any user who use only ascii chars in path.\n"
+" * Any user who do not use any of problematic encodings.\n"
+"\n"
+"Note that there are some limitations on using this extension:\n"
+" * You should use single encoding in one repository.\n"
+" * You should set same encoding for the repository by locale or HGENCODING.\n"
+"\n"
+"To use this extension, enable the extension in .hg/hgrc or ~/.hgrc:\n"
+"\n"
+"  [extensions]\n"
+"  hgext.win32mbcs =\n"
+"\n"
+"Path encoding conversion are done between unicode and util._encoding\n"
+"which is decided by mercurial from current locale setting or HGENCODING.\n"
+"\n"
+msgstr ""
+
+#, python-format
+msgid "[win32mbcs] filename conversion fail with %s encoding\n"
+msgstr ""
+
+msgid "[win32mbcs] cannot activate on this platform.\n"
+msgstr ""
+
+#, python-format
+msgid "[win32mbcs] activated with encoding: %s\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"WARNING: %s already has %s line endings\n"
+"and does not need EOL conversion by the win32text plugin.\n"
+"Before your next commit, please reconsider your encode/decode settings in \n"
+"Mercurial.ini or %s.\n"
+msgstr ""
+
+#, python-format
+msgid "Attempt to commit or push text file(s) using %s line endings\n"
+msgstr ""
+
+#, python-format
+msgid "in %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"\n"
+"To prevent this mistake in your local repository,\n"
+"add to Mercurial.ini or .hg/hgrc:\n"
+"\n"
+"[hooks]\n"
+"pretxncommit.%s = python:hgext.win32text.forbid%s\n"
+"\n"
+"and also consider adding:\n"
+"\n"
+"[extensions]\n"
+"hgext.win32text =\n"
+"[encode]\n"
+"** = %sencode:\n"
+"[decode]\n"
+"** = %sdecode:\n"
+msgstr ""
+
+msgid ""
+"zeroconf support for mercurial repositories\n"
+"\n"
+"Zeroconf enabled repositories will be announced in a network without the "
+"need\n"
+"to configure a server or a service. They can be discovered without knowing\n"
+"their actual IP address.\n"
+"\n"
+"To use the zeroconf extension add the following entry to your hgrc file:\n"
+"\n"
+"[extensions]\n"
+"hgext.zeroconf =\n"
+"\n"
+"To allow other people to discover your repository using run \"hg serve\" in "
+"your\n"
+"repository.\n"
+"\n"
+" $ cd test\n"
+" $ hg serve\n"
+"\n"
+"You can discover zeroconf enabled repositories by running \"hg paths\".\n"
+"\n"
+" $ hg paths\n"
+" zc-test = http://example.com:8000/test\n"
+msgstr ""
+
+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 "invalid changegroup"
+msgstr ""
+
+msgid "unknown parent"
+msgstr "Unbekannte Vorgängerversion"
+
+#, python-format
+msgid "integrity check failed on %s:%d"
+msgstr "Integritätsprüfung fehlgeschlagen bei %s:%d"
+
+#, python-format
+msgid "%s: not a Mercurial bundle file"
+msgstr "%s: keine Mercurial Bündeldatei"
+
+#, python-format
+msgid "%s: unknown bundle version"
+msgstr "%s: unbekannte Bündelversion"
+
+#, python-format
+msgid "%s: unknown bundle compression type"
+msgstr "%s: unbekannte Kompressionsmethode des Bündels"
+
+msgid "cannot create new bundle repository"
+msgstr "Neues Bündelarchiv kann nicht erzeugt werden"
+
+#, python-format
+msgid "premature EOF reading chunk (got %d bytes, expected %d)"
+msgstr "vorzeitiges Dateiende beim Lesen (%d Byte erhalten, %d erwartet)"
+
+#, python-format
+msgid "username %s contains a newline"
+msgstr "Benutzername %s enthält einen Zeilenumbruch"
+
+msgid "options --message and --logfile are mutually exclusive"
+msgstr "Optionen --message und --logfile schließen sich gegenseitig aus"
+
+#, python-format
+msgid "can't read commit message '%s': %s"
+msgstr "Kann Versionsmeldung '%s' nicht lesen: %s"
+
+msgid "limit must be a positive integer"
+msgstr "Log-Grenzwert `limit` muss eine positive Ganzzahl sein"
+
+msgid "limit must be positive"
+msgstr "Log-Grenzwert `limit` muss positiv sein"
+
+msgid "too many revisions specified"
+msgstr "Zu viele Revisionen angegeben"
+
+#, python-format
+msgid "invalid format spec '%%%s' in output file name"
+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: not copying - file is not managed\n"
+msgstr "%s kann nicht kopiert werden - steht nicht unter Versionskontrolle\n"
+
+#, python-format
+msgid "%s: not copying - file has been marked for remove\n"
+msgstr "%s: wird nicht kopiert - ist bereits als zu entfernen markiert\n"
+
+#, python-format
+msgid "%s: not overwriting - %s collides with %s\n"
+msgstr "%s: kann nicht kopiert werden - %s wird von %s blockiert\n"
+
+#, python-format
+msgid "%s: not overwriting - file exists\n"
+msgstr "%s: kann nicht kopiert werden - Datei existiert bereits\n"
+
+#, python-format
+msgid "%s: deleted in working copy\n"
+msgstr "%s: kann nicht kopiert werden - Arbeitskopie ist gelöscht\n"
+
+#, python-format
+msgid "%s: cannot copy - %s\n"
+msgstr "%s: kann nicht kopiert werden - %s\n"
+
+#, python-format
+msgid "moving %s to %s\n"
+msgstr "Verschiebe %s nach %s\n"
+
+#, python-format
+msgid "copying %s to %s\n"
+msgstr "Kopiere %s nach %s\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 "no source or destination specified"
+msgstr "Weder Quelle noch Ziel angegeben"
+
+msgid "no destination specified"
+msgstr "Kein Ziel angegeben"
+
+msgid "with multiple sources, destination must be an existing directory"
+msgstr "Bei mehreren Quelldateien muss das Ziel ein Verzeichnis sein"
+
+#, python-format
+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"
+
+#, python-format
+msgid "changeset:   %d:%s\n"
+msgstr "Änderung:        %d:%s\n"
+
+#, python-format
+msgid "branch:      %s\n"
+msgstr "Zweig    :       %s\n"
+
+#, python-format
+msgid "tag:         %s\n"
+msgstr "Marke:           %s\n"
+
+#, python-format
+msgid "parent:      %d:%s\n"
+msgstr "Vorgänger:       %d:%s\n"
+
+#, python-format
+msgid "manifest:    %d:%s\n"
+msgstr "Manifest:        %d:%s\n"
+
+#, python-format
+msgid "user:        %s\n"
+msgstr "Nutzer:          %s\n"
+
+#, python-format
+msgid "date:        %s\n"
+msgstr "Datum:           %s\n"
+
+msgid "files+:"
+msgstr "Dateien+:"
+
+msgid "files-:"
+msgstr "Dateien-:"
+
+msgid "files:"
+msgstr "Dateien:"
+
+#, python-format
+msgid "files:       %s\n"
+msgstr "Dateien:         %s\n"
+
+#, python-format
+msgid "copies:      %s\n"
+msgstr "Kopien:          %s\n"
+
+#, python-format
+msgid "extra:       %s=%s\n"
+msgstr "Extra:           %s=%s\n"
+
+msgid "description:\n"
+msgstr "Beschreibung:\n"
+
+#, python-format
+msgid "summary:     %s\n"
+msgstr "Zusammenfassung: %s\n"
+
+#, python-format
+msgid "%s: no key named '%s'"
+msgstr "%s: kein Schlüsselwort '%s'"
+
+#, python-format
+msgid "%s: %s"
+msgstr ""
+
+#, python-format
+msgid "Found revision %s from %s\n"
+msgstr "Gefundene Revision %s vom %s\n"
+
+msgid "revision matching date not found"
+msgstr "Keine zum Datum passende Revision gefunden"
+
+#, python-format
+msgid "cannot follow nonexistent file: \"%s\""
+msgstr "Kann fehlender Datei nicht folgen: \"%s\""
+
+#, python-format
+msgid "%s:%s copy source revision cannot be found!\n"
+msgstr "%s:%s Revision des Originals nicht gefunden!\n"
+
+msgid "can only follow copies/renames for explicit file names"
+msgstr ""
+"Kopien/Umbenennungen können nur zu expliziten Dateinamen verfolgt werden"
+
+#, python-format
+msgid "file %s not found!"
+msgstr "Datei %s nicht gefunden!"
+
+#, python-format
+msgid "no match under directory %s!"
+msgstr "Kein Treffer unterhalb des Verzeichnisses %s!"
+
+#, python-format
+msgid "can't commit %s: unsupported file type!"
+msgstr "Kann %s nicht übernehmen: nicht unterstützter Dateityp!"
+
+#, python-format
+msgid "file %s not tracked!"
+msgstr "Datei %s steht nicht unter Versionskontrolle!"
+
+msgid ""
+"add the specified files on the next commit\n"
+"\n"
+"    Schedule files to be version controlled and added to the repository.\n"
+"\n"
+"    The files will be added to the repository at the next commit. To\n"
+"    undo an add before that, see hg revert.\n"
+"\n"
+"    If no names are given, add all files to the repository.\n"
+"    "
+msgstr ""
+"Fügt die angegebenen Dateien der nächsten Version hinzu\n"
+"\n"
+"    Merkt Dateien zur Versionskontrolle im Projektarchiv vor.\n"
+"\n"
+"    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.\n"
+"\n"
+"    Wenn keine Namen angegeben sind, füge alle Dateien dem Projektarchiv\n"
+"    hinzu.\n"
+"    "
+
+msgid ""
+"add all new files, delete all missing files\n"
+"\n"
+"    Add all new files and remove all missing files from the repository.\n"
+"\n"
+"    New files are ignored if they match any of the patterns in .hgignore. "
+"As\n"
+"    with add, these changes take effect at the next commit.\n"
+"\n"
+"    Use the -s option to detect renamed files. With a parameter > 0,\n"
+"    this compares every removed file with every added file and records\n"
+"    those similar enough as renames. This option takes a percentage\n"
+"    between 0 (disabled) and 100 (files must be identical) as its\n"
+"    parameter. Detecting renamed files this way can be expensive.\n"
+"    "
+msgstr ""
+"Fügt alle neuen Dateien hinzu, löscht alle fehlenden Dateien\n"
+"\n"
+"    Füge alle neuen Dateien hinzu und lösche alle fehlenden Dateien aus\n"
+"    dem Projektarchiv.\n"
+"\n"
+"    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).\n"
+"\n"
+"    Nutze die Option -s um umbenannte Dateien zu entdecken. Mit einem\n"
+"    Parameter > 0 wird jede entfernte 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 per file line\n"
+"\n"
+"    List changes in files, showing the revision id responsible for each "
+"line\n"
+"\n"
+"    This command is useful to discover who did a change or when a change "
+"took\n"
+"    place.\n"
+"\n"
+"    Without the -a option, annotate will avoid processing files it\n"
+"    detects as binary. With -a, annotate will generate an annotation\n"
+"    anyway, probably with undesirable results.\n"
+"    "
+msgstr ""
+"Zeigt Änderungssatz (changeset) Informationen pro Dateizeile an\n"
+"\n"
+"    Listet Änderungen in Dateien mit der zugehörigen Revisions-Id für jede\n"
+"    Zeile auf\n"
+"\n"
+"    Dieser Befehl ist nützlich, um herauszufinden wer eine Änderung gemacht\n"
+"    hat oder wann eine Änderung stattgefunden hat.\n"
+"\n"
+"    Ohne die Option -a wird die Verarbeitung von Binärdateien vermieden.\n"
+"    Mit -a werden auch solche Dateien verarbeitet, wahrscheinlich mit "
+"unerwünschtem\n"
+"    Ergebnis.\n"
+"    "
+
+msgid "at least one file name or pattern required"
+msgstr "Zumindest 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 unversioned archive of a repository revision\n"
+"\n"
+"    By default, the revision used is the parent of the working\n"
+"    directory; use \"-r\" to specify a different revision.\n"
+"\n"
+"    To specify the type of archive to create, use \"-t\". Valid\n"
+"    types are:\n"
+"\n"
+"    \"files\" (default): a directory full of files\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\n"
+"\n"
+"    The exact name of the destination archive or directory is given\n"
+"    using a format string; see \"hg help export\" for details.\n"
+"\n"
+"    Each member added to an archive file has a directory prefix\n"
+"    prepended. Use \"-p\" to specify a format string for the prefix.\n"
+"    The default is the basename of the archive, with suffixes removed.\n"
+"    "
+msgstr ""
+"Erzeugt ein unversioniertes Archiv einer Projektarchiv-Revision\n"
+"\n"
+"    Standardmäßig wird die Vorgängerversion der im Arbeitsverzeichnis "
+"gefundenen\n"
+"    verwendet. Eine andere Reversion kann mit \"-r\" angegeben werden.\n"
+"\n"
+"    Um den Typ des Archivs anzugeben, nutze \"-t\". Gültige\n"
+"    Typen sind:\n"
+"\n"
+"    \"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\n"
+"\n"
+"    Der exakte Name des Zielarchivs oder -verzeichnises wird mit\n"
+"    einem Format-String angegeben; siehe \"hg help export\" für Details.\n"
+"\n"
+"    Jedem Element des Archivs wird ein Verzeichnis-Präfix vorangestellt.\n"
+"    Nutze \"-p\" 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\n"
+"\n"
+"    Commit the backed out changes as a new changeset. The new\n"
+"    changeset is a child of the backed out changeset.\n"
+"\n"
+"    If you back out 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 (current one by default).\n"
+"\n"
+"    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\n"
+"    hand. The result of this merge is not committed, as with a normal\n"
+"    merge.\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"    "
+msgstr ""
+"Macht einen vorangegangen Änderungssatzes rückgängig\n"
+"\n"
+"    Bereits vollzogene Änderungen werden noch einmal rückwärts angewendet\n"
+"    und als neuer Änderungssatz (als Kind des rückgängig gemachten) "
+"übernommen.\n"
+"\n"
+"    Soll ein anderer Änderungssatz als die Spitze (tip) zurückgezogen "
+"werden,\n"
+"    so wird ein neuer Kopf erzeugt und dieser ist die neue Spitze.\n"
+"\n"
+"    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.\n"
+"\n"
+"    Siehe 'hg help dates' für eine Liste gültiger Formate für -d/--date.\n"
+"    "
+
+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 back out change on a different branch"
+msgstr "Kann die Änderung auf einem abweichenden Zweig nicht rückgängig machen"
+
+msgid "cannot back out a change with no parents"
+msgstr "Kann eine Änderung ohne Vorgängerversion nicht rückgängig machen"
+
+msgid "cannot back out 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 "Backed out changeset %s"
+msgstr "Änderungssatz %s wurde rückgängig gemacht"
+
+#, 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 "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"
+
+msgid ""
+"subdivision search of changesets\n"
+"\n"
+"    This command helps to find changesets which introduce problems.\n"
+"    To use, mark the earliest changeset you know exhibits the problem\n"
+"    as bad, then mark the latest changeset which is free from the\n"
+"    problem as good. Bisect will update your working directory to a\n"
+"    revision for testing (unless the --noupdate option is specified).\n"
+"    Once you have performed tests, mark the working directory as bad\n"
+"    or good and bisect will either update to another candidate changeset\n"
+"    or announce that it has found the bad revision.\n"
+"\n"
+"    As a shortcut, you can also use the revision argument to mark a\n"
+"    revision as good or bad without checking it out first.\n"
+"\n"
+"    If you supply a command it will be used for automatic bisection. Its "
+"exit\n"
+"    status will be used as flag to mark revision as bad or good. In case "
+"exit\n"
+"    status is 0 the revision is marked as good, 125 - skipped, 127 (command "
+"not\n"
+"    found) - bisection will be aborted; any other status bigger than 0 will\n"
+"    mark revision as bad.\n"
+"    "
+msgstr ""
+"Binäre Suche von Änderungssätzen\n"
+"\n"
+"    Dieser Befehl hilft Änderungssätze zu finden, die Probleme eingeführt "
+"haben.\n"
+"    Dies geschieht, indem eine Revision nach der anderen geladen und "
+"getestet\n"
+"    wird, bis zwei aufeinanderfolgende Revisionen ohne und mit Fehler\n"
+"    gefunden wurden. Das Laden geschieht wie bei einer binären Suche, indem\n"
+"    das Intervall der in Frage kommenden Revisionen immer halbiert wird.\n"
+"\n"
+"    Als Startintervall muss zunächst die letzte als 'gut' bekannte und die\n"
+"    erste 'schlechte' Revision markiert werden. Das Arbeitsverzeichnis wird\n"
+"    dadurch auf eine Revision zum Testen gebracht (es sei denn, die Option\n"
+"    --noupdate ist angegeben). Mit -g (Test erfolgreich = gute Revision) "
+"und\n"
+"    -b (Fehler gefunden = schlechte Revision) wird diese dann markiert und "
+"die\n"
+"    nächste geladen, bzw. das Ziel (die Problemrevision) gemeldet.\n"
+"\n"
+"    Die Markierung kann automatisch durch einem Testprogramm (Option -c) "
+"statt-\n"
+"    finden. Ein Rückgabewert von 0 bedeutet dabei Erfolg, 125 Überspringen\n"
+"    (wie manuell Option -s), 127 Abbruch und jeder andere positive Wert\n"
+"    Fehler (schlechte Revision).\n"
+"    "
+
+#, python-format
+msgid "The first %s revision is:\n"
+msgstr "Die erste %s Revision ist:\n"
+
+#, python-format
+msgid "Due to skipped revisions, the first %s revision could be any of:\n"
+msgstr ""
+"Aufgrund übersprungener Revisionen könnte die erste %s Revision\n"
+"eine der folgenden sein:\n"
+
+msgid "cannot bisect (no known good revisions)"
+msgstr "Kann Suche nicht starten (keine bekannte gute Revision)"
+
+msgid "cannot bisect (no known bad revisions)"
+msgstr "Kann Suche nicht starten (keine bekannte schlechte 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 %s: %s\n"
+msgstr "Änderungssatz %s: %s\n"
+
+#, python-format
+msgid "Testing changeset %s:%s (%s changesets remaining, ~%s tests)\n"
+msgstr "Teste Änderungssatz %s:%s (%s Änderungssätze verbleiben, ~%s Tests)\n"
+
+msgid ""
+"set or show the current branch name\n"
+"\n"
+"    With no argument, show the current branch name. With one argument,\n"
+"    set the working directory branch name (the branch does not exist in\n"
+"    the repository until the next commit).\n"
+"\n"
+"    Unless --force is specified, branch will not let you set a\n"
+"    branch name that shadows an existing branch.\n"
+"\n"
+"    Use --clean to reset the working directory branch to that of the\n"
+"    parent of the working directory, negating a previous branch change.\n"
+"\n"
+"    Use the command 'hg update' to switch to an existing branch.\n"
+"    "
+msgstr ""
+"Setzt oder zeigt den Namen des aktuellen Zweigs\n"
+"\n"
+"    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"
+"\n"
+"    Außer bei Angabe von --force lässt 'hg branch' nicht zu, einen Namen zu\n"
+"    vergeben, der einen existierenden Zweig überdeckt.\n"
+"\n"
+"    Nutze --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.\n"
+"\n"
+"    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"
+
+msgid "a branch of the same name already exists (use --force to override)"
+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\n"
+"\n"
+"    List the repository's named branches, indicating which ones are\n"
+"    inactive. If active is specified, only show active branches.\n"
+"\n"
+"    A branch is considered active if it contains repository heads.\n"
+"\n"
+"    Use the command 'hg update' to switch to an existing branch.\n"
+"    "
+msgstr ""
+"Zeigt alle benannten Zweige des Projektarchiv an\n"
+"\n"
+"    Listet die benannten Zweige des Projektarchiv auf und zeigt an, welche\n"
+"    inaktiv sind. Mit der Option -a werden nur aktive Zweige ausgegeben.\n"
+"\n"
+"    Ein Zweig gilt als aktiv, wenn er Köpfe des Projektarchivs enthält.\n"
+"\n"
+"    Um auf einen anderen (existierenden) Zweig zu wechseln, siehe 'hg "
+"update'.\n"
+"    "
+
+msgid ""
+"create a changegroup file\n"
+"\n"
+"    Generate a compressed changegroup file collecting changesets not\n"
+"    known to be in another repository.\n"
+"\n"
+"    If no destination repository is specified the destination is\n"
+"    assumed to have all the nodes specified by one or more --base\n"
+"    parameters. To create a bundle containing all changesets, use\n"
+"    --all (or --base null). To change the compression method applied,\n"
+"    use the -t option (by default, bundles are compressed using bz2).\n"
+"\n"
+"    The bundle file can then be transferred using conventional means and\n"
+"    applied to another repository with the unbundle or pull command.\n"
+"    This is useful when direct push and pull are not available or when\n"
+"    exporting an entire repository is undesirable.\n"
+"\n"
+"    Applying bundles preserves all changeset contents including\n"
+"    permissions, copy/rename information, and revision history.\n"
+"    "
+msgstr ""
+"Erzeugt eine Datei mit Änderungsgruppen\n"
+"\n"
+"    Erzeuge eine gepackte Datei der Änderungsgruppen, die alle Änderungs-\n"
+"    sätze enthält, die in einem anderen Archiv nicht vorhanden sind.\n"
+"\n"
+"    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"
+"    --all (oder --base null). Die angewendete Kompressionsmethode kann mit\n"
+"    der Option -t gewählt werden (standardmäßig bz2).\n"
+"\n"
+"    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.\n"
+"\n"
+"    Die Anwendung von Bündeln bewahrt die Inhalte aller Änderungssätze,\n"
+"    Berechtigungen, Kopier/Umbennungs-Informationen und die "
+"Revisionshistorie.\n"
+"    "
+
+msgid "--base is incompatible with specifiying 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\n"
+"\n"
+"    Print the specified files as they were at the given revision.\n"
+"    If no revision is given, the parent of the working directory is used,\n"
+"    or tip if no revision is checked out.\n"
+"\n"
+"    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:\n"
+"\n"
+"    %s   basename of file being printed\n"
+"    %d   dirname of file being printed, or '.' if in repo root\n"
+"    %p   root-relative path name of file being printed\n"
+"    "
+msgstr ""
+"Gibt den Inhalt von Dateien in der aktuellen oder angegebenen Revision aus\n"
+"\n"
+"    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. Ansonsten die Spitze, falls keine\n"
+"    Revision geladen ist.\n"
+"\n"
+"    Die Ausgabe kann in eine Datei erfolgen. In diesem Fall wird der Name\n"
+"    der Datei mit einem Formatstring vorgegeben. Die Formatierungsregeln "
+"sind\n"
+"    analog des 'export'-Befehls mit folgenden Ergänzungen:\n"
+"\n"
+"    %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\n"
+"\n"
+"    Create a copy of an existing repository in a new directory.\n"
+"\n"
+"    If no destination directory name is specified, it defaults to the\n"
+"    basename of the source.\n"
+"\n"
+"    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.\n"
+"\n"
+"    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 checked out files). 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.\n"
+"\n"
+"    In some cases, you can clone repositories and checked out files\n"
+"    using full hardlinks with\n"
+"\n"
+"      $ cp -al REPO REPOCLONE\n"
+"\n"
+"    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.\n"
+"\n"
+"    If you use the -r option to clone up to a specific revision, no\n"
+"    subsequent revisions will be present in the cloned repository.\n"
+"    This option implies --pull, even on local repositories.\n"
+"\n"
+"    If the -U option is used, the new clone will contain only a repository\n"
+"    (.hg) and no working copy (the working copy parent is the null "
+"revision).\n"
+"\n"
+"    See 'hg help urls' for valid source format details.\n"
+"\n"
+"    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"
+"    Look at the help text for urls for important details about ssh:// URLs.\n"
+"    "
+msgstr ""
+"Erzeugt eine Kopie eines bestehenden Projektarchivs\n"
+"\n"
+"    Kopiert ein bestehendes Projektarchiv in ein neues Verzeichnis.\n"
+"\n"
+"    Wird kein Zielverzeichnis angegeben, wird der Basisname der Quelle "
+"genutzt.\n"
+"\n"
+"    Die Adresse der Quelle wird der .hg/hgrc Datei des neuen Archivs\n"
+"    als Standard für entfernte Aktionen (pull/push) hinzugefügt.\n"
+"\n"
+"    Aus Effizienzgründen werden 'hardlinks' für das Klonen genutzt, wann "
+"immer\n"
+"    Quelle und Ziel auf dem selben Dateisystem sind (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.\n"
+"\n"
+"    In einigen Fällen können Archiv und Arbeitskopie unter Nutzung\n"
+"    von 'hardlinks' kopiert werden mit\n"
+"\n"
+"      $ cp -al REPO REPOCLONE\n"
+"\n"
+"    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"
+"\n"
+"    Wenn die -r Option zum klonen bis zu einer bestimmten Revision genutzt\n"
+"    wird, werden keine Folgeversionen im geklonten Archiv vorhanden sein.\n"
+"    Diese Option impliziert --pull, auch bei lokalen Archiven.\n"
+"\n"
+"    Bei Nutzung der -U Option wird der Klon zwar das Projektarchiv "
+"enthalten\n"
+"    (.hg) aber keine Arbeitskopie laden (die Vorgängerversion der "
+"Arbeitskopie\n"
+"    ist die 'null'-Revision).\n"
+"\n"
+"    Siehe 'hg help urls' für Details gültiger Quellformate.\n"
+"\n"
+"    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'.\n"
+"    "
+
+msgid ""
+"commit the specified files or all outstanding changes\n"
+"\n"
+"    Commit changes to the given files into the repository.\n"
+"\n"
+"    If a list of files is omitted, all changes reported by \"hg status\"\n"
+"    will be committed.\n"
+"\n"
+"    If you are committing the result of a merge, do not provide any\n"
+"    file names or -I/-X filters.\n"
+"\n"
+"    If no commit message is specified, the configured editor is started to\n"
+"    prompt you for a message.\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"    "
+msgstr ""
+"Übernimmt die vorgemerkten Änderungen und erzeugt eine neue Revision\n"
+"\n"
+"    Erzeugt eine neue Revision mit allen (von \"hg status\" angezeigten) "
+"oder\n"
+"    den angegegebenen geänderten Dateien des Arbeitsverzeichnisses im "
+"Archiv.\n"
+"\n"
+"    Wenn das Ergebnis einer Zusammenführung übernommen werden soll, dürfen\n"
+"    keine Dateinamen oder -I/-X Filter angegeben werden.\n"
+"\n"
+"    Wenn keine Versionsmeldung mit der Option -m angegeben wird, wird der\n"
+"    konfigurierte Editor für eine interaktive Eingabe gestartet.\n"
+"\n"
+"    Siehe 'hg help dates' für eine Liste aller gültigen Formate für -d/--"
+"date.\n"
+"    "
+
+msgid "created new head\n"
+msgstr "neuer Kopf erzeugt\n"
+
+#, python-format
+msgid "committed changeset %d:%s\n"
+msgstr "Änderungssatz %d erzeugt:%s\n"
+
+msgid ""
+"mark files as copied for the next commit\n"
+"\n"
+"    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.\n"
+"\n"
+"    By default, this command copies the contents of files as they\n"
+"    stand in the working directory. If invoked with --after, the\n"
+"    operation is recorded, but no copying is performed.\n"
+"\n"
+"    This command takes effect with the next commit. To undo a copy\n"
+"    before that, see hg revert.\n"
+"    "
+msgstr ""
+"Markiert Dateien als Kopien bereits übernommener Dateien\n"
+"\n"
+"    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.\n"
+"\n"
+"    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 --after/-A als Kopie nachträglich "
+"markiert\n"
+"    werden.\n"
+"\n"
+"    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 "find the ancestor revision of two revisions in a given index"
+msgstr "Finde die Vorgängerversion zweier Revisionen im angegebenen Index"
+
+msgid "There is no Mercurial repository here (.hg not found)"
+msgstr "Es gibt hier kein Mercurial-Archiv (.hg nicht vorhanden)"
+
+msgid "either two or three arguments required"
+msgstr "Entweder zwei oder drei Parameter angeben"
+
+msgid "returns the completion list associated with the given command"
+msgstr "Listet mögliche Kommandos zu gegebener Abkürzung auf"
+
+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\n"
+"\n"
+"    With no args, print names and values of all config items.\n"
+"\n"
+"    With one arg of the form section.name, print just the value of\n"
+"    that config item.\n"
+"\n"
+"    With multiple args, print names and values of all config items\n"
+"    with matching section names."
+msgstr ""
+"Zeigt die kombinierten Konfigurationswerte aller hgrc-Dateien an\n"
+"\n"
+"    Ohne Argumente werden die Namen und Werte aller Konfigurationseinträge\n"
+"    angezeigt.\n"
+"\n"
+"    Mit einem Argument der Form sektion.name wird nur der Wert dieses\n"
+"    Konfigurationseintrages angezeigt.\n"
+"\n"
+"    Mit mehreren Argumenten werden die Namen und Werte aller passenden\n"
+"    Konfigurationseinträge angezeigt."
+
+msgid "only one config item permitted"
+msgstr "Nur ein Konfigurationseintrag ist erlaubt"
+
+msgid ""
+"manually set the parents of the current working directory\n"
+"\n"
+"    This is useful for writing repository conversion tools, but should\n"
+"    be used with care.\n"
+"    "
+msgstr ""
+"Setzt die Vorgängerversionen des Arbeitsverzeichnisses manuell\n"
+"\n"
+"    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 "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 "dump the contents of an index file"
+msgstr ""
+
+msgid "dump an index DAG as a .dot file"
+msgstr ""
+
+msgid "test Mercurial installation"
+msgstr "Tested 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"
+
+msgid "Checking extensions...\n"
+msgstr "Prüfe Erweiterungen...\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"
+
+msgid ""
+" (Current patch tool may be incompatible with patch, or misconfigured. "
+"Please check your .hgrc file)\n"
+msgstr ""
+" (Aktuelles patch Werkzeug könnte mit patch inkompatibel or fehlkonfiguriert "
+"sein. Prüfe die .hgrc Datei!)\n"
+
+msgid ""
+" Internal patcher failure, please report this error to http://www.selenic."
+"com/mercurial/bts\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"
+
+msgid " (specify a commit editor in your .hgrc 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 .hgrc 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)\n"
+"\n"
+"    Show differences between revisions for the specified files.\n"
+"\n"
+"    Differences between files are shown using the unified diff format.\n"
+"\n"
+"    NOTE: diff may generate unexpected results for merges, as it will\n"
+"    default to comparing against the working directory's first parent\n"
+"    changeset if no revisions are specified.\n"
+"\n"
+"    When two revision arguments are given, then changes are shown\n"
+"    between those revisions. If only one revision is specified then\n"
+"    that revision is compared to the working directory, and, when no\n"
+"    revisions are specified, the working directory files are compared\n"
+"    to its parent.\n"
+"\n"
+"    Without the -a option, diff will avoid generating diffs of files\n"
+"    it detects as binary. With -a, diff will generate a diff anyway,\n"
+"    probably with undesirable results.\n"
+"\n"
+"    Use the --git option to generate diffs in the git extended diff\n"
+"    format. For more information, read hg help diffs.\n"
+"    "
+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\n"
+"\n"
+"    Print the changeset header and diffs for one or more revisions.\n"
+"\n"
+"    The information shown in the changeset header is: author,\n"
+"    changeset hash, parent(s) and commit comment.\n"
+"\n"
+"    NOTE: export may generate unexpected diff output for merge changesets,\n"
+"    as it will compare the merge changeset against its first parent only.\n"
+"\n"
+"    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:\n"
+"\n"
+"    %%   literal \"%\" character\n"
+"    %H   changeset hash (40 bytes of hexadecimal)\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 bytes of hexadecimal)\n"
+"    %n   zero-padded sequence number, starting at 1\n"
+"    %r   zero-padded changeset revision number\n"
+"\n"
+"    Without the -a option, export will avoid generating diffs of files\n"
+"    it detects as binary. With -a, export will generate a diff anyway,\n"
+"    probably with undesirable results.\n"
+"\n"
+"    Use the --git option to generate diffs in the git extended diff\n"
+"    format. Read the diffs help topic for more information.\n"
+"\n"
+"    With the --switch-parent option, the diff will be against the second\n"
+"    parent. It can be useful to review a merge.\n"
+"    "
+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 und Versionsmeldung.\n"
+"\n"
+"    HINWEIS: export kann bei Zusammenführungen unerwartete Resultate "
+"anzeigen,\n"
+"    da es nur mit einer (der ersten es sei denn --switch-parent ist "
+"angegeben)\n"
+"    Vorgängerversion vergleicht.\n"
+"\n"
+"    Die Ausgabe kann in eine Datei erfolgen (Option -o). In diesem Fall "
+"wird\n"
+"    der Name 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 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 "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 ""
+"search for a pattern in specified files and revisions\n"
+"\n"
+"    Search revisions of files for a regular expression.\n"
+"\n"
+"    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\n"
+"    a match appears.\n"
+"\n"
+"    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.\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\n"
+"\n"
+"    With no arguments, show all repository head changesets.\n"
+"\n"
+"    If branch or revisions names are given this will show the heads of\n"
+"    the specified branches or the branches those revisions are tagged\n"
+"    with.\n"
+"\n"
+"    Repository \"heads\" are changesets that don't have child\n"
+"    changesets. They are where development generally takes place and\n"
+"    are the usual targets for update and merge operations.\n"
+"\n"
+"    Branch heads are changesets that have a given branch tag, but have\n"
+"    no child changesets with that tag. They are usually where\n"
+"    development on the given branch takes place.\n"
+"    "
+msgstr ""
+"Zeigt die Köpfe des Archivs oder von Entwicklungszweigen\n"
+"\n"
+"    Ohne Argumente werden alle Kopfversionen angezeigt\n"
+"\n"
+"    Wenn Zweig- oder Revisionsnamen angegeben werden, werden die Köpfe\n"
+"    dieser Zweige oder der Zweige, mit denen die Revisionen markiert\n"
+"    wurden, angezeigt.\n"
+"\n"
+"    Die \"Köpfe\" eines Archivs sind Änderungssätze, die keine\n"
+"    Folgeversion haben. Hier findet typischerweise die Entwicklung statt\n"
+"    und diese Versionen sind normalerweise Ziel von Aktualisierungen oder\n"
+"    Zusammenführungen.\n"
+"\n"
+"    Köpfe von Zweigen sind Versionen mit einem Zweignamen, die aber\n"
+"    keine Folgeversionen dieses Namens haben. Hier findet typischerweise\n"
+"    die Entwicklung dieses Zweiges statt.\n"
+"    "
+
+#, python-format
+msgid "no changes on branch %s containing %s are reachable from %s\n"
+msgstr ""
+"Keine Änderungen auf dem Zweig %s, die %s enthalten, sind von %s erreichbar\n"
+
+#, python-format
+msgid "no changes on branch %s are reachable from %s\n"
+msgstr "Keine Änderungen auf dem Zweig %s sind von %s erreichbar\n"
+
+msgid ""
+"show help for a given topic or a help overview\n"
+"\n"
+"    With no arguments, print a list of commands and short help.\n"
+"\n"
+"    Given a topic, extension, or command name, print help for that topic."
+msgstr ""
+"Zeigt die Hilfe für ein gegebenes Thema oder eine Hilfsübersicht\n"
+"\n"
+"    Ohne Parameter wird eine Liste aller Befehle mit Kurzhilfe angezeigt.\n"
+"\n"
+"    Bei Angabe eines Themas, einer Erweiterung oder eines Befehls wird\n"
+"    detaillierte Hilfe zu diesem Thema angezeigt."
+
+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 -v help%s\" to show 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:\n"
+"\n"
+msgstr ""
+"Liste der Befehle:\n"
+"\n"
+
+#, python-format
+msgid ""
+"\n"
+"aliases: %s\n"
+msgstr ""
+"\n"
+"Aliase: %s\n"
+
+msgid "(no help text available)"
+msgstr "(keine Hilfe verfügbar)"
+
+msgid "options:\n"
+msgstr "Optionen:\n"
+
+msgid "no commands defined\n"
+msgstr "keine Befehle definiert\n"
+
+msgid ""
+"\n"
+"enabled extensions:\n"
+"\n"
+msgstr ""
+"\n"
+"Aktive Erweiterungen:\n"
+"\n"
+
+#, python-format
+msgid " %s   %s\n"
+msgstr ""
+
+msgid "no help text available"
+msgstr "keine Hilfe verfügbar"
+
+#, python-format
+msgid "%s extension - %s\n"
+msgstr "%s Erweiterung - %s\n"
+
+msgid "Mercurial Distributed SCM\n"
+msgstr "Mercurial Distributed SCM\n"
+
+msgid ""
+"basic commands:\n"
+"\n"
+msgstr ""
+"Grundlegende Befehle:\n"
+"\n"
+
+msgid ""
+"\n"
+"additional help topics:\n"
+"\n"
+msgstr ""
+"\n"
+"Zusätzliche Hilfethemen:\n"
+"\n"
+
+msgid ""
+"identify the working copy or specified revision\n"
+"\n"
+"    With no revision, print a summary of the current state of the repo.\n"
+"\n"
+"    With a path, do a lookup in another repository.\n"
+"\n"
+"    This summary identifies the repository state using one or two parent\n"
+"    hash identifiers, followed by a \"+\" if there are uncommitted changes\n"
+"    in the working directory, a list of tags for this revision and a branch\n"
+"    name for non-default branches.\n"
+"    "
+msgstr ""
+"Beschreibt die Arbeitskopie oder die angegebene Revision\n"
+"\n"
+"    Ohne Revision wird eine Zusammenfassung des aktuellen Status des\n"
+"    Projektarchivs angezeigt.\n"
+"\n"
+"    Mit einem Pfad wird eine Abfrage auf ein anderes Archiv ausgeführt.\n"
+"\n"
+"    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 ""
+"import an ordered set of patches\n"
+"\n"
+"    Import a list of patches and commit them individually.\n"
+"\n"
+"    If there are outstanding changes in the working directory, import\n"
+"    will abort unless given the -f flag.\n"
+"\n"
+"    You can import a patch straight from a mail message. Even patches\n"
+"    as attachments work (body part must be type text/plain or\n"
+"    text/x-patch to be used). 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.\n"
+"\n"
+"    If the imported patch was generated by hg export, user and description\n"
+"    from patch override values from message headers and body. Values\n"
+"    given on command line with -m and -u override these.\n"
+"\n"
+"    If --exact is specified, import will set the working directory\n"
+"    to the parent of each patch before applying it, and will abort\n"
+"    if the resulting changeset has a different ID than the one\n"
+"    recorded in the patch. This may happen due to character set\n"
+"    problems or other deficiencies in the text patch format.\n"
+"\n"
+"    With --similarity, hg will attempt to discover renames and copies\n"
+"    in the patch in the same way as 'addremove'.\n"
+"\n"
+"    To read a patch from standard input, use patch name \"-\".\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"    "
+msgstr ""
+"Importiert eine Liste von Patches\n"
+"\n"
+"    Wendet die angegebenen Patches nacheinander an und übernimmt die "
+"Änderungen\n"
+"    ins Archiv (es sei denn die Option --no-commit ist angegeben).\n"
+"\n"
+"    Falls aktuell lokale Änderungen im Arbeitsverzeichnis vorliegen, bricht\n"
+"    der Befehl ohne die Option -f/--force ab.\n"
+"\n"
+"    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.\n"
+"\n"
+"    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 und -u überschreiben aber auch diese "
+"Angaben.\n"
+"\n"
+"    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.\n"
+"\n"
+"    Mit der Option --similarity werden Umbenennungen und Kopien auf gleiche\n"
+"    Weise wie mit dem Befehl \"hg addremove\" erkannt.\n"
+"\n"
+"    Um einen Patch von der Standardeingabe zu lesen, kann der Dateiname \"-"
+"\"\n"
+"    verwendet werden. Siehe 'hg help dates' für eine Liste aller gültigen\n"
+"    Formate für -d/--date.\n"
+"    "
+
+msgid "applying patch from stdin\n"
+msgstr "Wende Patch von der Standardeingabe an\n"
+
+msgid "no diffs found"
+msgstr "Keine Diffs gefunden"
+
+#, python-format
+msgid ""
+"message:\n"
+"%s\n"
+msgstr ""
+"Meldung:\n"
+"%s\n"
+
+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 ""
+"show new changesets found in source\n"
+"\n"
+"    Show new changesets found in the specified path/URL or the default\n"
+"    pull location. These are the changesets that would be pulled if a pull\n"
+"    was requested.\n"
+"\n"
+"    For remote repository, using --bundle avoids downloading the changesets\n"
+"    twice if the incoming is followed by a pull.\n"
+"\n"
+"    See pull for valid source format details.\n"
+"    "
+msgstr ""
+"Zeigt neue Revisionen in einer externen Quelle an\n"
+"\n"
+"    Zeigt alle neuen Änderungen an, die durch ein \"hg pull\" von der ange-\n"
+"    gebenen oder Standardquelle geholt werden würden.\n"
+"\n"
+"    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.\n"
+"\n"
+"    Siehe \"hg help pull\" für gültige Angaben für die Quelle.\n"
+"    "
+
+msgid ""
+"create a new repository in the given directory\n"
+"\n"
+"    Initialize a new repository in the given directory. If the given\n"
+"    directory does not exist, it is created.\n"
+"\n"
+"    If no directory is given, the current directory is used.\n"
+"\n"
+"    It is possible to specify an ssh:// URL as the destination.\n"
+"    See 'hg help urls' for more information.\n"
+"    "
+msgstr ""
+"Erzeugt ein neues Projektarchiv im angegebenen Verzeichnis\n"
+"\n"
+"    Initialisiert ein neues Archiv im angegebenen Verzeichnis. Sollte das\n"
+"    angegebene Verzeichnis nicht existieren, wird es angelegt.\n"
+"\n"
+"    Ist kein Zielverzeichnis angegeben, wird das aktuelle genutzt.\n"
+"\n"
+"    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\n"
+"\n"
+"    Print all files under Mercurial control whose names match the\n"
+"    given patterns.\n"
+"\n"
+"    This command searches the entire repository by default. To search\n"
+"    just the current directory and its subdirectories, use\n"
+"    \"--include .\".\n"
+"\n"
+"    If no patterns are given to match, this command prints all file\n"
+"    names.\n"
+"\n"
+"    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\".\n"
+"    This will avoid the problem of \"xargs\" treating single filenames\n"
+"    that contain white space as multiple filenames.\n"
+"    "
+msgstr ""
+"Suche Dateien mit bestimmtem Namen\n"
+"\n"
+"    Gibt alle Dateien im Projektarchiv aus, deren Namen auf ein angegebenes\n"
+"    Muster passen.\n"
+"\n"
+"    Standardmäßig wird das gesamte Archiv durchsucht. Um die Suche auf das\n"
+"    aktuelle Verzeichnis und Unterverzeichnisse zu begrenzen, verwende\n"
+"    \"--include .\".\n"
+"\n"
+"    Ohne angegebenes Suchmuster werden alle Dateinamen ausgegeben.\n"
+"\n"
+"    Um die Ausgabe besser in Verbindung mit \"xargs\" verwenden zu können,\n"
+"    sollte die Option \"-0\" (Null) in beiden Kommandos 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\n"
+"\n"
+"    Print the revision history of the specified files or the entire\n"
+"    project.\n"
+"\n"
+"    File history is shown without following rename or copy history of\n"
+"    files. Use -f/--follow with a file name to follow history across\n"
+"    renames and copies. --follow without a file name will only show\n"
+"    ancestors or descendants of the starting revision. --follow-first\n"
+"    only follows the first parent of merge revisions.\n"
+"\n"
+"    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.\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"\n"
+"    By default this command outputs: changeset id and hash, tags,\n"
+"    non-trivial parents, user, date and time, and a summary for each\n"
+"    commit. When the -v/--verbose switch is used, the list of changed\n"
+"    files and full commit message is shown.\n"
+"\n"
+"    NOTE: log -p may generate unexpected diff output for merge\n"
+"    changesets, as it will only compare the merge changeset against\n"
+"    its first parent. Also, the files: list will only reflect files\n"
+"    that are different from BOTH parents.\n"
+"\n"
+"    "
+msgstr ""
+"Zeigt die Revisionshistorie des Archivs oder von Dateien an\n"
+"\n"
+"    Gibt die Revisionshistorie der angegeben Dateien oder des ganzen\n"
+"    Projektes aus.\n"
+"\n"
+"    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.\n"
+"\n"
+"    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.\n"
+"\n"
+"    Siehe 'hg help dates' für eine Liste gültiger Formate für -d/--date.\n"
+"\n"
+"    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.\n"
+"\n"
+"    HINWEIS: log -p kann ein unerwartetes Diff für "
+"Zusammenführungsversionen\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"
+"\n"
+"    "
+
+# Nicht übersetzen
+msgid ""
+"looks up all renames for a file (up to endrev) the first\n"
+"        time the file is given. It indexes on the changerev and only\n"
+"        parses the manifest if linkrev != changerev.\n"
+"        Returns rename info for fn at changerev rev."
+msgstr ""
+
+msgid ""
+"output the current or given revision of the project manifest\n"
+"\n"
+"    Print a list of version controlled files for the given revision.\n"
+"    If no revision is given, the parent of the working directory is used,\n"
+"    or tip if no revision is checked out.\n"
+"\n"
+"    The manifest is the list of files being version controlled. If no "
+"revision\n"
+"    is given then the first parent of the working directory is used.\n"
+"\n"
+"    With -v flag, print file permissions, symlink and executable bits. With\n"
+"    --debug flag, print file revision hashes.\n"
+"    "
+msgstr ""
+"Gibt das Manifest der angegebenen oder aktuellen Revision aus.\n"
+"\n"
+"    Das Manifest enthält die Liste aller Dateien under Versionskontrolle.\n"
+"    Wenn keine Revision angegeben ist, wird die Vorgängerversion des "
+"Arbeits-\n"
+"    verzeichnisses (bzw. die Spitze, falls dies leer ist) verwendet.\n"
+"\n"
+"    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\n"
+"\n"
+"    Merge the contents of the current working directory and the\n"
+"    requested revision. Files that changed between either parent are\n"
+"    marked as changed for the next commit and a commit must be\n"
+"    performed before any further updates are allowed.\n"
+"\n"
+"    If no revision is specified, the working directory's parent is a\n"
+"    head revision, and the current branch contains exactly one other head,\n"
+"    the other head is merged with by default. Otherwise, an explicit\n"
+"    revision to merge with must be provided.\n"
+"    "
+msgstr ""
+"Führt das Arbeitsverzeichnis mit einer anderen Revision zusammen\n"
+"\n"
+"    Wendet die Änderungen der angegebenen Revision (seit einem gemeinsamen\n"
+"    Vorfahr) im Arbeitsverzeichnis an. Diese müssen mit \"hg commit\" "
+"zunächst\n"
+"    übernommen werden, bevor weitere Änderungen (add, delete, merge) zuge-\n"
+"    lassen werden.\n"
+"\n"
+"    Nach dem Übernehmen hat die neue Revision zwei Vorfahren.\n"
+"\n"
+"    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"
+"    "
+
+#, 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"
+
+#, 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 "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 destination\n"
+"\n"
+"    Show changesets not found in the specified destination repository or\n"
+"    the default push location. These are the changesets that would be "
+"pushed\n"
+"    if a push was requested.\n"
+"\n"
+"    See pull for valid destination format details.\n"
+"    "
+msgstr ""
+"Zeigt Änderungssätze, die nicht im Zielarchiv sind\n"
+"\n"
+"    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.\n"
+"\n"
+"    Siehe Hilfe zu \"push\" für das Format der Zeilangabe.\n"
+"    "
+
+msgid ""
+"show the parents of the working dir or revision\n"
+"\n"
+"    Print the working directory's parent revisions. If a\n"
+"    revision is given via --rev, the parent of that revision\n"
+"    will be printed. If a file argument is given, revision in\n"
+"    which the file was last changed (before the working directory\n"
+"    revision or the argument to --rev if given) is printed.\n"
+"    "
+msgstr ""
+"Zeigt die Vorgänger des Arbeitsverzeichnisses oder einer Revision\n"
+"\n"
+"    Gibt die Vorgängerversion(en) des Arbeitsverzeichnisses aus. Bei\n"
+"    Angabe einer Revision via --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 file name"
+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\n"
+"\n"
+"    Show definition of symbolic path name NAME. If no name is given, show\n"
+"    definition of available names.\n"
+"\n"
+"    Path names are defined in the [paths] section of /etc/mercurial/hgrc\n"
+"    and $HOME/.hgrc. If run inside a repository, .hg/hgrc is used, too.\n"
+"\n"
+"    See 'hg help urls' for more information.\n"
+"    "
+msgstr ""
+"Zeigt Adresse für Aliasnamen von entfernten Projektarchiven an\n"
+"\n"
+"    Zeigt die Adressdefinition des Kurznamens NAME an. Wenn kein Name gegeben\n"
+"    ist, werden alle Alias-Definitionen angezeigt.\n"
+"\n"
+"    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.\n"
+"\n"
+"    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 hingefü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\n"
+"\n"
+"    Pull changes from a remote repository to a local one.\n"
+"\n"
+"    This finds all changes from the repository at the specified path\n"
+"    or URL and adds them to the local repository. By default, this\n"
+"    does not update the copy of the project in the working directory.\n"
+"\n"
+"    If SOURCE is omitted, the 'default' path will be used.\n"
+"    See 'hg help urls' for more information.\n"
+"    "
+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"
+"    Beim Weglassen 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 ""
+"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."
+
+msgid ""
+"push changes to the specified destination\n"
+"\n"
+"    Push changes from the local repository to the given destination.\n"
+"\n"
+"    This is the symmetrical operation for pull. It helps to move\n"
+"    changes from the current repository to a different one. If the\n"
+"    destination is local this is identical to a pull in that directory\n"
+"    from the current one.\n"
+"\n"
+"    By default, push will refuse to run if it detects the result would\n"
+"    increase the number of remote heads. This generally indicates the\n"
+"    the client has forgotten to pull and merge before pushing.\n"
+"\n"
+"    If -r is used, the named changeset and all its ancestors will be pushed\n"
+"    to the remote repository.\n"
+"\n"
+"    Look at the help text for urls for important details about ssh:// URLs.\n"
+"    If DESTINATION is omitted, a default path will be used.\n"
+"    See 'hg help urls' for more information.\n"
+"    "
+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 Über-\n"
+"    tragung die entfernten Änderungen zu holen und zusammenzuführen.\n"
+"    Mit der -f/--force Option kann eine Übertragung erzwungen werden.\n"
+"\n"
+"    Bei Nutzung von -r wird die benannte Revision mit allen Vorgängern in\n"
+"    das entfernte Archiv übertragen.\n"
+"\n"
+"    Beim Weglassen des ZIELs 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 Zielangabe.\n"
+"    "
+
+#, python-format
+msgid "pushing to %s\n"
+msgstr "Übertrage nach %s\n"
+
+msgid ""
+"raw commit interface (DEPRECATED)\n"
+"\n"
+"    (DEPRECATED)\n"
+"    Lowlevel commit, for use in helper scripts.\n"
+"\n"
+"    This command is not intended to be used by normal users, as it is\n"
+"    primarily useful for importing from other SCMs.\n"
+"\n"
+"    This command is now deprecated and will be removed in a future\n"
+"    release, please use debugsetparents and commit instead.\n"
+"    "
+msgstr ""
+"Interner commit Befehl (VERALTET)\n"
+"    "
+
+msgid "(the rawcommit command is deprecated)\n"
+msgstr "(der Befehl rawcommit ist veraltet)\n"
+
+msgid ""
+"roll back an interrupted transaction\n"
+"\n"
+"    Recover from an interrupted commit or pull.\n"
+"\n"
+"    This command tries to fix the repository status after an interrupted\n"
+"    operation. It should only be necessary when Mercurial suggests it.\n"
+"    "
+msgstr ""
+"Setzt eine unterbrochene Transaktion zurück\n"
+"\n"
+"    Setzt ein unterbrochenes Übernehmen (commit) oder Abholen (pull) zurück.\n"
+"\n"
+"    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 ""
+"remove the specified files on the next commit\n"
+"\n"
+"    Schedule the indicated files for removal from the repository.\n"
+"\n"
+"    This only removes files from the current branch, not from the entire\n"
+"    project history. -A can be used to remove only files that have already\n"
+"    been deleted, -f can be used to force deletion, and -Af can be used\n"
+"    to remove files from the next revision without deleting them.\n"
+"\n"
+"    The following table details the behavior of remove for different file\n"
+"    states (columns) and option combinations (rows). The file states are\n"
+"    Added, Clean, Modified and Missing (as reported by hg status). The\n"
+"    actions are Warn, Remove (from branch) and Delete (from disk).\n"
+"\n"
+"           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\n"
+"\n"
+"    This command schedules the files to be removed at the next commit.\n"
+"    To undo a remove before that, see hg revert.\n"
+"    "
+msgstr ""
+"Entfernt die angegebenen Dateien in der nächsten Version\n"
+"\n"
+"    Merkt die benannten Dateien für die Entfernung aus dem Archiv vor.\n"
+"\n"
+"    Dabei werden nur Dateien aus dem aktuellen Zweig gelöscht, nicht aus "
+"der\n"
+"    gesamten Projekthistorie. Option -A kann genutzt werden, um Dateien zu\n"
+"    entfernen, die bereits gelöscht wurden, -f kann genutzt werden, um die\n"
+"    Löschung zu erzwingen. -AF entfernt Dateien aus der nächsten Revision,\n"
+"    ohne sie zu löschen\n"
+"\n"
+"    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).\n"
+"\n"
+"           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\n"
+"\n"
+"    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 "no files specified"
+msgstr "Keine Dateien angegeben"
+
+#, python-format
+msgid "not removing %s: file %s (use -f to force removal)\n"
+msgstr "Entferne nicht %s: Datei %s (Nutze -f um Entfernung zu erzwingen)\n"
+
+msgid "still exists"
+msgstr "Existiert immernoch"
+
+msgid "is modified"
+msgstr "Ist modifiziert"
+
+msgid "has been marked for add"
+msgstr "Wurde als hinzugefügt markiert"
+
+msgid ""
+"rename files; equivalent of copy + remove\n"
+"\n"
+"    Mark dest as copies of sources; mark sources for deletion. If\n"
+"    dest is a directory, copies are put in that directory. If dest is\n"
+"    a file, there can only be one source.\n"
+"\n"
+"    By default, this command copies the contents of files as they\n"
+"    exist in the working directory. If invoked with --after, the\n"
+"    operation is recorded, but no copying is performed.\n"
+"\n"
+"    This command takes effect at the next commit. To undo a rename\n"
+"    before that, see hg revert.\n"
+"    "
+msgstr ""
+"Benennt Dateien um; äquivalent zu \"copy\" und \"remove\"\n"
+"\n"
+"    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.\n"
+"\n"
+"    Normalerweise kopiert dieser Befehl auch den Inhalt der Datei wie sie\n"
+"    im Arbeitsverzeichnis vorliegt. Existiert das Ziel jedoch schon, so "
+"kann\n"
+"    dieses durch Angabe der Option --after/-A als Kopie nachträglich "
+"markiert\n"
+"    werden.\n"
+"\n"
+"    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 ""
+"retry file merges from a merge or update\n"
+"\n"
+"    This command will cleanly retry unresolved file merges using file\n"
+"    revisions preserved from the last update or merge. To attempt to\n"
+"    resolve all unresolved files, use the -a switch.\n"
+"\n"
+"    This command will also allow listing resolved files and manually\n"
+"    marking and unmarking files as resolved.\n"
+"\n"
+"    The codes used to show the status of files are:\n"
+"    U = unresolved\n"
+"    R = resolved\n"
+"    "
+msgstr ""
+"Führt eine lokal geänderte Datei mit Änderungen erneut zusammen\n"
+"\n"
+"    Änderungen, die einen Konflikt erzeugt haben, werden erneut auf die\n"
+"    Version einer Datei angewendet, wie sie vor der konflikterzeugenden Aktion\n"
+"    im Arbeitsverzeichnis vorlag. Dies macht manuelle Versuche, den Konflikt\n"
+"    zu lösen, rückgängig.\n"
+"    Mit der Option --all wird dies an allen markierten Dateien ausgeführt.\n"
+"\n"
+"    Die Optionen --mark und --unmark markieren Konflikte als aufgelöst, bzw.\n"
+"    heben dies wieder auf. Der aktuelle Status wird mit --list angezeigt.\n"
+"\n"
+"    Die verwendeten Zeichen bei --list bedeuten:\n"
+"      U = noch konfliktbehaftet (unresolved)\n"
+"      R = konliktfrei (resolved)\n"
+"    "
+
+msgid "too many options specified"
+msgstr "Zuviele 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 dirs to an earlier state\n"
+"\n"
+"    (use update -r to check out earlier revisions, revert does not\n"
+"    change the working dir parents)\n"
+"\n"
+"    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 the\n"
+"    revision to revert to.\n"
+"\n"
+"    Using the -r option, revert the given files or directories to their\n"
+"    contents as of a specific revision. This can be helpful to \"roll\n"
+"    back\" some or all of an earlier change.\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"\n"
+"    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.\n"
+"\n"
+"    If a file has been deleted, it is restored. If the executable\n"
+"    mode of a file was changed, it is reset.\n"
+"\n"
+"    If names are given, all files matching the names are reverted.\n"
+"    If no arguments are given, no files are reverted.\n"
+"\n"
+"    Modified files are saved with a .orig suffix before reverting.\n"
+"    To disable these backups, use --no-backup.\n"
+"    "
+msgstr ""
+
+msgid "you can't specify a revision and a date"
+msgstr ""
+
+msgid "no files or directories specified; use --all to revert the whole repo"
+msgstr ""
+
+#, python-format
+msgid "forgetting %s\n"
+msgstr ""
+
+#, python-format
+msgid "reverting %s\n"
+msgstr ""
+
+#, python-format
+msgid "undeleting %s\n"
+msgstr ""
+
+#, python-format
+msgid "saving current version of %s as %s\n"
+msgstr ""
+
+#, python-format
+msgid "file not managed: %s\n"
+msgstr ""
+
+#, python-format
+msgid "no changes needed to %s\n"
+msgstr ""
+
+msgid ""
+"roll back the last transaction\n"
+"\n"
+"    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.\n"
+"\n"
+"    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:\n"
+"\n"
+"      commit\n"
+"      import\n"
+"      pull\n"
+"      push (with this repository as destination)\n"
+"      unbundle\n"
+"\n"
+"    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.\n"
+"    "
+msgstr ""
+
+msgid ""
+"print the root (top) of the current working dir\n"
+"\n"
+"    Print the root directory of the current repository.\n"
+"    "
+msgstr ""
+
+msgid ""
+"export the repository via HTTP\n"
+"\n"
+"    Start a local HTTP repository browser and pull server.\n"
+"\n"
+"    By default, the server logs accesses to stdout and errors to\n"
+"    stderr. Use the \"-A\" and \"-E\" options to log to files.\n"
+"    "
+msgstr ""
+"Exportiert das Projektarchiv via HTTP\n"
+"\n"
+"    Startet einen lokalen HTTP Archivbrowser und einen Pull-Server.\n"
+"\n"
+"    Standardmäßig schreibt der Server Zugriffe auf die Standardausgabe\n"
+"    und Fehler auf die Standardfehlerausgabe. Nutze die \"-A\" und \"-E\"\n"
+"    Optionen, um Dateien zu nutzen.\n"
+"    "
+
+#, 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\n"
+"\n"
+"    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"
+"    source of a copy/move operation, are not listed unless -c (clean),\n"
+"    -i (ignored), -C (copies) or -A is given. Unless options described\n"
+"    with \"show only ...\" are given, the options -mardu are used.\n"
+"\n"
+"    Option -q/--quiet hides untracked (unknown and ignored) files\n"
+"    unless explicitly requested with -u/--unknown or -i/-ignored.\n"
+"\n"
+"    NOTE: status may appear to disagree with diff if permissions have\n"
+"    changed or a merge has occurred. The standard diff format does not\n"
+"    report permission changes and diff only reports changes relative\n"
+"    to one merge parent.\n"
+"\n"
+"    If one revision is given, it is used as the base revision.\n"
+"    If two revisions are given, the difference between them is shown.\n"
+"\n"
+"    The codes used to show the status of files are:\n"
+"    M = modified\n"
+"    A = added\n"
+"    R = removed\n"
+"    C = clean\n"
+"    ! = deleted, but still tracked\n"
+"    ? = not tracked\n"
+"    I = ignored\n"
+"      = the previous added file was copied from here\n"
+"    "
+msgstr ""
+"Zeigt geänderte Dateien im Arbeitsverzeichnis an\n"
+"\n"
+"    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/"
+"Verschiebe\n"
+"    Operation sind, außer -c (unverändert), -i (ignoriert), -C (Kopien) "
+"oder\n"
+"    -A wurde angegeben. Außer bei Angabe von Optionen, die mit \"Zeigt "
+"nur ...\"\n"
+"    beschrieben werden, werden die Optionen -mardu genutzt.\n"
+"\n"
+"    Die Option -q/--quiet blendet unüberwachte (unbekannte und ignorierte)\n"
+"    Dateien aus, außer sie werden explizit mit -u/--unknown oder -i/-"
+"ignored\n"
+"    angefordert.\n"
+"\n"
+"    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.\n"
+"\n"
+"    Bei Angabe einer Revision wird diese als Basisrevision genutzt.\n"
+"    Bei Angabe zweier Revisionen werden die Unterschiede zwischen diesen\n"
+"    beiden gezeigt.\n"
+"\n"
+"    Die Kürzel zur Angabe des Status einer Datei sind:\n"
+"    M = modifiziert\n"
+"    A = hinzugefügt (added)\n"
+"    R = entfernt (removed)\n"
+"    C = unverändert (clean)\n"
+"    ! = gelöscht, aber immer noch überwacht\n"
+"    ? = nicht überwacht\n"
+"    I = ignoriert\n"
+"      = die zuvor hinzugefügt Datei wurde von hier kopiert\n"
+"    "
+
+msgid ""
+"add one or more tags for the current or given revision\n"
+"\n"
+"    Name a particular revision using <name>.\n"
+"\n"
+"    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.\n"
+"\n"
+"    If no revision is given, the parent of the working directory is used,\n"
+"    or tip if no revision is checked out.\n"
+"\n"
+"    To facilitate version control, distribution, and merging of tags,\n"
+"    they are stored as a file named \".hgtags\" which is managed\n"
+"    similarly to other project files and can be hand-edited if\n"
+"    necessary. The file '.hg/localtags' is used for local tags (not\n"
+"    shared among repositories).\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"    "
+msgstr ""
+
+msgid "tag names must be unique"
+msgstr ""
+
+#, python-format
+msgid "the name '%s' is reserved"
+msgstr ""
+
+msgid "--rev and --remove are incompatible"
+msgstr ""
+
+#, python-format
+msgid "tag '%s' does not exist"
+msgstr ""
+
+#, python-format
+msgid "tag '%s' is not a %s tag"
+msgstr ""
+
+#, python-format
+msgid "Removed tag %s"
+msgstr ""
+
+#, python-format
+msgid "tag '%s' already exists (use -f to force)"
+msgstr ""
+
+#, python-format
+msgid "Added tag %s for changeset %s"
+msgstr ""
+
+msgid ""
+"list repository tags\n"
+"\n"
+"    This lists both regular and local tags. When the -v/--verbose switch\n"
+"    is used, a third column \"local\" is printed for local tags.\n"
+"    "
+msgstr ""
+
+msgid ""
+"show the tip revision\n"
+"\n"
+"    The tip revision (usually just called the tip) is the most\n"
+"    recently added changeset in the repository, the most recently\n"
+"    changed head.\n"
+"\n"
+"    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.\n"
+"    "
+msgstr ""
+
+msgid ""
+"apply one or more changegroup files\n"
+"\n"
+"    Apply one or more compressed changegroup files generated by the\n"
+"    bundle command.\n"
+"    "
+msgstr ""
+
+msgid ""
+"update working directory\n"
+"\n"
+"    Update the repository's working directory to the specified revision,\n"
+"    or the tip of the current branch if none is specified. Use null as\n"
+"    the revision to remove the working copy (like 'hg clone -U').\n"
+"\n"
+"    When the working dir contains no uncommitted changes, it will be\n"
+"    replaced by the state of the requested revision from the repo.  When\n"
+"    the requested revision is on a different branch, the working dir\n"
+"    will additionally be switched to that branch.\n"
+"\n"
+"    When there are uncommitted changes, use option -C to discard them,\n"
+"    forcibly replacing the state of the working dir with the requested\n"
+"    revision.\n"
+"\n"
+"    When there are uncommitted changes and option -C is not used, and\n"
+"    the parent revision and requested revision are on the same branch,\n"
+"    and one of them is an ancestor of the other, then the new working\n"
+"    directory will contain the requested revision merged with the\n"
+"    uncommitted changes.  Otherwise, the update will fail with a\n"
+"    suggestion to use 'merge' or 'update -C' instead.\n"
+"\n"
+"    If you want to update just one file to an older revision, use revert.\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for --date.\n"
+"    "
+msgstr ""
+"Aktualisiert das Arbeitsverzeichnis\n"
+"    Hebt das Arbeitsverzeichnis auf die angegebene Revision oder die\n"
+"    Spitze des aktuellen Zweiges an, falls sonst nichts angegeben wurde.\n"
+"    Bei der Verwendung von null als Revision wird die Arbeitskopie entfernt\n"
+"    (wie 'hg clone -U').\n"
+"\n"
+"    Wenn das Arbeitsverzeichnis keine unversionierten Änderungen enthält,\n"
+"    wird es durch den Zustand der angeforderten Revision ersetzt. Sollte\n"
+"    die angeforderte Revision aus einem anderen Zweig sein, wird das\n"
+"    Arbeitsverzeichnis zusätzlich auf diesen Zweig umgestellt.\n"
+"\n"
+"    Sollten unversionierte Änderungen vorliegen, muss -C genutzt werden,\n"
+"    um sie zwangsweise mit dem Zustand des Arbeitsverzeichnis der\n"
+"    angeforderten Revision zu ersetzen.\n"
+"\n"
+"    Sollten unversionierte Änderungen vorliegen, -C nicht genutzt werden "
+"und\n"
+"    die Vorgängerversion und die angeforderte Version sind auf dem selben\n"
+"    Zweig und eine ist Vorläufer der anderen, dann wird das neue\n"
+"    Arbeitsverzeichnis die angeforderte Revision in einer Zusammenführung\n"
+"    mit den unversionierten Änderungen enthalten. Anderenfalls wird "
+"'update'\n"
+"    fehlschlagen mit einem Hinweis 'merge' oder 'update -C' stattdessen zu\n"
+"    nutzen.\n"
+"\n"
+"    Sollte nur eine Datei auf eine ältere Revision angehoben werden, kann\n"
+"    'revert' genutzt werden.\n"
+"\n"
+"    Siehe 'hg help dates' für eine Liste gültiger Formate für --date.\n"
+"    "
+
+msgid ""
+"verify the integrity of the repository\n"
+"\n"
+"    Verify the integrity of the current repository.\n"
+"\n"
+"    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.\n"
+"    "
+msgstr ""
+"Sucht ein Muster in angegebenen Dateien und Revisionen\n"
+"\n"
+"    Durchsucht Dateien in der Versionshistorie nach einem gegebenen Muster.\n"
+"\n"
+"    Dieses Kommando 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.\n"
+"\n"
+"    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 "output version and copyright information"
+msgstr ""
+
+#, python-format
+msgid "Mercurial Distributed SCM (version %s)\n"
+msgstr ""
+
+msgid ""
+"\n"
+"Copyright (C) 2005-2009 Matt Mackall <mpm@selenic.com> 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 ""
+
+msgid "repository root directory or symbolic path name"
+msgstr "Wurzel des Archivs oder symbolischer Pfadname"
+
+msgid "change working directory"
+msgstr "Wechselt das Arbeitsverzeichnis"
+
+msgid "do not prompt, assume 'yes' for any required answers"
+msgstr "Keine Abfragen, nimmt 'yes' für jede Nachfrage an"
+
+msgid "suppress output"
+msgstr "Unterdrückung der Ausgabe"
+
+msgid "enable additional output"
+msgstr "Ausgabe weiterer Informationen"
+
+msgid "set/override config option"
+msgstr "Setzt/Überschreibt Konfigurationsoptionen"
+
+msgid "enable debugging output"
+msgstr "Aktiviert Debugausgaben"
+
+msgid "start debugger"
+msgstr "Startet den Debugger"
+
+msgid "set the charset encoding"
+msgstr "Setzt die Zeichenkodierung"
+
+msgid "set the charset encoding mode"
+msgstr "Setzt den Modus der Zeichenkodierung"
+
+msgid "print improved command execution profile"
+msgstr "Gibt erweitertes Ausführungsprofil der Befehle aus"
+
+msgid "print traceback on exception"
+msgstr "Gibt den Traceback einer Exception aus"
+
+msgid "time how long the command takes"
+msgstr "Ausgabe der Dauer des Befehls"
+
+msgid "print command execution profile"
+msgstr "Ausgabe des Ausführungsprofil des Befehls"
+
+msgid "output version information and exit"
+msgstr "Ausgabe der Versionsinformation und beenden"
+
+msgid "display help and exit"
+msgstr "Ausgabe der Hilfe und beenden"
+
+msgid "do not perform actions, just print output"
+msgstr "Führt die Aktionen nicht aus, sondern zeigt nur die Ausgabe"
+
+msgid "specify ssh command to use"
+msgstr "Spezifiziert den zu nutzenden SSH-Befehl"
+
+msgid "specify hg command to run on the remote side"
+msgstr "Spezifiziert den hg-Befehl, der entfernt ausgeführt wird"
+
+msgid "include names matching the given patterns"
+msgstr "Namen hinzufügen, die auf das angegebene Muster passen"
+
+msgid "exclude names matching the given patterns"
+msgstr "Namen ausschließen, die auf das angegebene Muster passen"
+
+msgid "use <text> as commit message"
+msgstr "Nutzt <text> als Versionsmeldung"
+
+msgid "read commit message from <file>"
+msgstr "Liest Versionsmeldung aus <datei>"
+
+msgid "record datecode as commit date"
+msgstr "Protokolliert Datumscode als Versionsdatum"
+
+msgid "record user as committer"
+msgstr "Protokolliert Nutzer als Versionsersteller"
+
+msgid "display using template map file"
+msgstr "Anzeige unter Nutzung der Vorlagenzuordnungsdatei"
+
+msgid "display with template"
+msgstr "Anzeige mit Vorlage"
+
+msgid "do not show merges"
+msgstr "Zeigt keine Zusammenführungen"
+
+msgid "treat all files as text"
+msgstr "Behandelt alle Dateien als Text"
+
+msgid "don't include dates in diff headers"
+msgstr "Fügt Datum nicht im Kopf des Diff an"
+
+msgid "show which function each change is in"
+msgstr "Zeigt die Funktion, in der die Änderung passiert ist"
+
+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"
+
+msgid "guess renamed files by similarity (0<=s<=100)"
+msgstr ""
+
+msgid "[OPTION]... [FILE]..."
+msgstr ""
+
+msgid "annotate the specified revision"
+msgstr "Annotiert die angegebene Revision"
+
+msgid "follow file copies and renames"
+msgstr "Folgt Dateikopien und Umbenennungen"
+
+msgid "list the author (long with -v)"
+msgstr "Listet den Autor auf (lang mit -v)"
+
+msgid "list the date (short with -q)"
+msgstr "Listet das Datum auf (kurz mit -q)"
+
+msgid "list the revision number (default)"
+msgstr "Listet die Revisionsnummer auf (Standard)"
+
+msgid "list the changeset"
+msgstr "Listet den Änderungssatz auf"
+
+msgid "show line number at the first appearance"
+msgstr "Zeigt die Zeilennummer beim ersten Auftreten "
+
+msgid "[-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] FILE..."
+msgstr ""
+
+msgid "do not pass files through decoders"
+msgstr ""
+
+msgid "directory prefix for files in archive"
+msgstr ""
+
+msgid "revision to distribute"
+msgstr ""
+
+msgid "type of distribution to create"
+msgstr ""
+
+msgid "[OPTION]... DEST"
+msgstr ""
+
+msgid "merge with old dirstate parent after backout"
+msgstr ""
+
+msgid "parent to choose when backing out merge"
+msgstr ""
+
+msgid "revision to backout"
+msgstr ""
+
+msgid "[OPTION]... [-r] REV"
+msgstr ""
+
+msgid "reset bisect state"
+msgstr ""
+
+msgid "mark changeset good"
+msgstr ""
+
+msgid "mark changeset bad"
+msgstr ""
+
+msgid "skip testing changeset"
+msgstr ""
+
+msgid "use command to check changeset state"
+msgstr ""
+
+msgid "do not update to target"
+msgstr ""
+
+msgid "[-gbsr] [-c CMD] [REV]"
+msgstr ""
+
+msgid "set branch name even if it shadows an existing branch"
+msgstr ""
+
+msgid "reset branch name to parent branch name"
+msgstr ""
+
+msgid "[-fC] [NAME]"
+msgstr ""
+
+msgid "show only branches that have unmerged heads"
+msgstr ""
+
+msgid "[-a]"
+msgstr ""
+
+msgid "run even when remote repository is unrelated"
+msgstr "Auch ausführen wenn das entfernte Archiv keinen Bezug hat"
+
+msgid "a changeset up to which you would like to bundle"
+msgstr ""
+
+msgid "a base changeset to specify instead of a destination"
+msgstr ""
+
+msgid "bundle all changesets in the repository"
+msgstr ""
+
+msgid "bundle compression type to use"
+msgstr ""
+
+msgid "[-f] [-a] [-r REV]... [--base REV]... FILE [DEST]"
+msgstr "[-f] [-a] [-r REV]... [--base REV]... DATEI [ZIEL]"
+
+msgid "print output to file with formatted name"
+msgstr "Schreibt Ausgabe in Datei mit formatiertem Namen"
+
+msgid "print the given revision"
+msgstr ""
+
+msgid "apply any matching decode filter"
+msgstr ""
+
+msgid "[OPTION]... FILE..."
+msgstr "[OPTION]... DATEI..."
+
+msgid "the clone will only contain a repository (no working copy)"
+msgstr "Der Klon wird nur das Archiv enthalten (keine Arbeitskopie)"
+
+msgid "a changeset you would like to have after cloning"
+msgstr "Der Änderungssatz, der nach dem Klonen vorhanden sein soll"
+
+msgid "[OPTION]... SOURCE [DEST]"
+msgstr "[OPTION]... QUELLE [ZIEL]"
+
+msgid "mark new/missing files as added/removed before committing"
+msgstr "Markiert neue/fehlende Dateien als hinzugefügt/entfernt"
+
+msgid "mark a branch as closed, hiding it from the branch list"
+msgstr "Markiert einen Zweig als beendet und blendet ihn in der Zweigliste aus"
+
+msgid "record a copy that has already occurred"
+msgstr ""
+
+msgid "forcibly copy over an existing managed file"
+msgstr ""
+
+msgid "[OPTION]... [SOURCE]... DEST"
+msgstr "[OPTION]... [QUELLE]... ZIEL"
+
+msgid "[INDEX] REV1 REV2"
+msgstr ""
+
+msgid "[COMMAND]"
+msgstr "[BEFEHL]"
+
+msgid "show the command options"
+msgstr ""
+
+msgid "[-o] CMD"
+msgstr ""
+
+msgid "try extended date formats"
+msgstr ""
+
+msgid "[-e] DATE [RANGE]"
+msgstr ""
+
+msgid "FILE REV"
+msgstr ""
+
+msgid "[PATH]"
+msgstr ""
+
+msgid "FILE"
+msgstr ""
+
+msgid "parent"
+msgstr ""
+
+msgid "file list"
+msgstr ""
+
+msgid "revision to rebuild to"
+msgstr ""
+
+msgid "[-r REV] [REV]"
+msgstr ""
+
+msgid "revision to debug"
+msgstr ""
+
+msgid "[-r REV] FILE"
+msgstr ""
+
+msgid "REV1 [REV2]"
+msgstr ""
+
+msgid "do not display the saved mtime"
+msgstr ""
+
+msgid "[OPTION]..."
+msgstr ""
+
+msgid "[OPTION]... [-r REV1 [-r REV2]] [FILE]..."
+msgstr ""
+
+msgid "diff against the second parent"
+msgstr "Vergleicht mit der zweiten Vorgängerversion"
+
+msgid "[OPTION]... [-o OUTFILESPEC] REV..."
+msgstr ""
+
+msgid "end fields with NUL"
+msgstr ""
+
+msgid "print all revisions that match"
+msgstr ""
+
+msgid "follow changeset history, or file history across copies and renames"
+msgstr ""
+"Folgt der Versionshistorie oder Dateihistorie über Kopien und Umbenennungen "
+"hinweg"
+
+msgid "ignore case when matching"
+msgstr ""
+
+msgid "print only filenames and revs that match"
+msgstr ""
+
+msgid "print matching line numbers"
+msgstr ""
+
+msgid "search in given revision range"
+msgstr ""
+
+msgid "[OPTION]... PATTERN [FILE]..."
+msgstr ""
+
+msgid "show only heads which are descendants of rev"
+msgstr ""
+
+msgid "show only the active heads from open branches"
+msgstr ""
+
+msgid "[-r REV] [REV]..."
+msgstr ""
+
+msgid "[TOPIC]"
+msgstr ""
+
+msgid "identify the specified rev"
+msgstr ""
+
+msgid "show local revision number"
+msgstr ""
+
+msgid "show global revision id"
+msgstr ""
+
+msgid "show branch"
+msgstr ""
+
+msgid "show tags"
+msgstr ""
+
+msgid "[-nibt] [-r REV] [SOURCE]"
+msgstr ""
+
+msgid ""
+"directory strip option for patch. This has the same\n"
+"meaning as the corresponding patch option"
+msgstr ""
+
+msgid "base path"
+msgstr ""
+
+msgid "skip check for outstanding uncommitted changes"
+msgstr ""
+
+msgid "don't commit, just update the working directory"
+msgstr ""
+
+msgid "apply patch to the nodes from which it was generated"
+msgstr ""
+
+msgid "Use any branch information in patch (implied by --exact)"
+msgstr ""
+
+msgid "[OPTION]... PATCH..."
+msgstr ""
+
+msgid "show newest record first"
+msgstr ""
+
+msgid "file to store the bundles into"
+msgstr ""
+
+msgid "a specific revision up to which you would like to pull"
+msgstr "eine bestimmte Revision bis zu der geholt werden soll"
+
+msgid "[-p] [-n] [-M] [-f] [-r REV]... [--bundle FILENAME] [SOURCE]"
+msgstr ""
+
+msgid "[-e CMD] [--remotecmd CMD] [DEST]"
+msgstr ""
+
+msgid "search the repository as it stood at rev"
+msgstr ""
+
+msgid "end filenames with NUL, for use with xargs"
+msgstr "Beendet Dateinamen mit NUL zur Nutzung mit xargs"
+
+msgid "print complete paths from the filesystem root"
+msgstr ""
+
+msgid "[OPTION]... [PATTERN]..."
+msgstr ""
+
+msgid "only follow the first parent of merge changesets"
+msgstr "Folgt nur dem ersten Vorgänger einer Zusammenführungsversion"
+
+msgid "show revs matching date spec"
+msgstr "Zeigt Revisionen passend zur Datums-Spezifikation"
+
+msgid "show copied files"
+msgstr "Zeigt kopierte Dateien"
+
+msgid "do case-insensitive search for a keyword"
+msgstr "Sucht unabhängig von Groß- und Kleinschreibung ein Stichwort"
+
+msgid "include revs where files were removed"
+msgstr "Revisionen hinzufügen, in denen Dateien entfernt wurden"
+
+msgid "show only merges"
+msgstr "Zeigt nur Zusammenführungen"
+
+msgid "revs committed by user"
+msgstr "Revisionen erzeugt vom Nutzer"
+
+msgid "show only changesets within the given named branch"
+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 Nachfolger aus"
+
+msgid "[OPTION]... [FILE]"
+msgstr "[OPTION]... [DATEI]"
+
+msgid "revision to display"
+msgstr ""
+
+msgid "[-r REV]"
+msgstr ""
+
+msgid "force a merge with outstanding changes"
+msgstr "Erzwingt eine Zusammenführung mit den ausstehenden Änderungen"
+
+msgid "revision to merge"
+msgstr "Zusammenzuführende Revision"
+
+msgid "[-f] [[-r] REV]"
+msgstr ""
+
+msgid "a specific revision up to which you would like to push"
+msgstr "eine bestimmte Revision bis zu der ausgeliefert werden soll"
+
+msgid "[-M] [-p] [-n] [-f] [-r REV]... [DEST]"
+msgstr "[-M] [-p] [-n] [-f] [-r REV]... [ZIEL]"
+
+msgid "show parents from the specified rev"
+msgstr "Zeigt die Vorgänger der angegeben Revision"
+
+msgid "hg parents [-r REV] [FILE]"
+msgstr ""
+
+msgid "[NAME]"
+msgstr ""
+
+msgid "update to new tip if changesets were pulled"
+msgstr "Auf die neue Spitze (tip) anheben, falls Änderungssätze geholt wurden"
+
+msgid "[-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]"
+msgstr "[-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [QUELLE]"
+
+msgid "force push"
+msgstr "Erzwingt Auslieferung"
+
+msgid "[-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]"
+msgstr "[-f] [-r REV]... [-e CMD] [--remotecmd CMD] [ZIEL]"
+
+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 "record a rename that has already occurred"
+msgstr ""
+
+msgid "[OPTION]... SOURCE... DEST"
+msgstr ""
+
+msgid "remerge all unresolved files"
+msgstr ""
+
+msgid "list state of files needing merge"
+msgstr ""
+
+msgid "mark files as resolved"
+msgstr ""
+
+msgid "unmark files as resolved"
+msgstr ""
+
+msgid "revert all changes when no arguments given"
+msgstr ""
+
+msgid "tipmost revision matching date"
+msgstr "der Spitze (tip) nächste Revision mit passendem Datum"
+
+msgid "revision to revert to"
+msgstr ""
+
+msgid "do not save backup copies of files"
+msgstr ""
+
+msgid "[OPTION]... [-r REV] [NAME]..."
+msgstr ""
+
+msgid "name of access log file to write to"
+msgstr "Name der Zugriffs-Logdatei"
+
+msgid "name of error log file to write to"
+msgstr "Name der Fehler-Logdatei"
+
+msgid "port to listen on (default: 8000)"
+msgstr "Port auf dem gehorcht wird (Standard: 8000)"
+
+msgid "address to listen on (default: all interfaces)"
+msgstr "Adresse auf der gehorcht wird (Standard: alle Schnittstellen)"
+
+msgid "prefix path to serve from (default: server root)"
+msgstr "Pfadpräfix von dem ausgeliefert wird (Standard: Serverwurzel '/')"
+
+msgid "name to show in web pages (default: working dir)"
+msgstr ""
+"Name der auf der Webseite angezeigt wird (Standard: Arbeitsverzeichnis)"
+
+msgid "name of the webdir config file (serve more than one repo)"
+msgstr "Name der webdir-Konfigurationsdatei (mehr als ein Archiv ausliefern)"
+
+msgid "for remote clients"
+msgstr "für entfernte Klienten"
+
+msgid "web templates to use"
+msgstr "Zu nutzende Web-Vorlagen"
+
+msgid "template style to use"
+msgstr ""
+
+msgid "use IPv6 in addition to IPv4"
+msgstr "Nutzt IPv6 zusätzlich zu IPv4"
+
+msgid "SSL certificate file"
+msgstr "SSL Zertifikatsdatei"
+
+msgid "show untrusted configuration options"
+msgstr ""
+
+msgid "[-u] [NAME]..."
+msgstr ""
+
+msgid "show status of all files"
+msgstr "Zeigt den Status aller Dateien"
+
+msgid "show only modified files"
+msgstr "Zeigt nur modifizierte Dateien"
+
+msgid "show only added files"
+msgstr "Zeigt nur hinzugefügte Dateien"
+
+msgid "show only removed files"
+msgstr "Zeigt nur entfernte Dateien"
+
+msgid "show only deleted (but tracked) files"
+msgstr "Zeigt nur gelöschte (aber überwachte) Dateien"
+
+msgid "show only files without changes"
+msgstr "Zeigt nur Dateien ohne Änderungen"
+
+msgid "show only unknown (not tracked) files"
+msgstr "Zeigt nur unbekannte (nicht überwachte) Dateien"
+
+msgid "show only ignored files"
+msgstr "Zeigt nur ignorierte Dateien"
+
+msgid "hide status prefix"
+msgstr "Verdeckt den Status-Präfix"
+
+msgid "show source of copied files"
+msgstr "Zeigt die Quelle von kopierten Dateien"
+
+msgid "show difference from revision"
+msgstr "Zeigt die Differenz zu einer Revision"
+
+msgid "replace existing tag"
+msgstr ""
+
+msgid "make the tag local"
+msgstr ""
+
+msgid "revision to tag"
+msgstr ""
+
+msgid "remove a tag"
+msgstr ""
+
+msgid "[-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME..."
+msgstr ""
+
+msgid "[-p]"
+msgstr ""
+
+msgid "update to new tip if changesets were unbundled"
+msgstr ""
+
+msgid "[-u] FILE..."
+msgstr ""
+
+msgid "overwrite locally modified files (no backup)"
+msgstr "Überschreibt lokale Modifikationen von Dateien (keine Sicherung)"
+
+msgid "[-C] [-d DATE] [[-r] REV]"
+msgstr "[-C] [-d DATUM] [[-r] REV]"
+
+msgid "not found in manifest"
+msgstr "nicht im Manifest gefunden"
+
+msgid "branch name not in UTF-8!"
+msgstr "Name der Verzweigung nicht in UTF-8!"
+
+#, python-format
+msgid "  searching for copies back to rev %d\n"
+msgstr "  suche Kopien in Revisionen bis %d\n"
+
+#, python-format
+msgid ""
+"  unmatched files in local:\n"
+"   %s\n"
+msgstr ""
+"  Dateien nur in lokaler Version:\n"
+"   %s\n"
+
+#, python-format
+msgid ""
+"  unmatched files in other:\n"
+"   %s\n"
+msgstr ""
+"  Dateien nur in anderer Version:\n"
+"   %s\n"
+
+msgid "  all copies found (* = to merge, ! = divergent):\n"
+msgstr "  alle Kopien gefunden (* = zusammenzuführen, ! = abweichend):\n"
+
+#, python-format
+msgid "   %s -> %s %s\n"
+msgstr ""
+
+msgid "  checking for directory renames\n"
+msgstr "  suche Umbenennungen von Verzeichnissen\n"
+
+#, python-format
+msgid "  dir %s -> %s\n"
+msgstr "  Verzeichnis %s -> %s\n"
+
+#, python-format
+msgid "  file %s -> %s\n"
+msgstr "  Datei %s -> %s\n"
+
+#, 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 ""
+
+#, python-format
+msgid "file %r in dirstate clashes with %r"
+msgstr ""
+
+#, python-format
+msgid "not in dirstate: %s\n"
+msgstr ""
+
+msgid "character device"
+msgstr ""
+
+msgid "block device"
+msgstr ""
+
+msgid "fifo"
+msgstr ""
+
+msgid "socket"
+msgstr ""
+
+msgid "directory"
+msgstr ""
+
+#, python-format
+msgid "%s: unsupported file type (type is %s)\n"
+msgstr ""
+
+#, python-format
+msgid "abort: %s\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"hg: command '%s' is ambiguous:\n"
+"    %s\n"
+msgstr ""
+
+#, python-format
+msgid "timed out waiting for lock held by %s"
+msgstr ""
+
+#, python-format
+msgid "lock held by %s"
+msgstr ""
+
+#, python-format
+msgid "abort: %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid "abort: could not lock %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid "hg %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid "hg: %s\n"
+msgstr ""
+
+#, python-format
+msgid "abort: %s!\n"
+msgstr ""
+
+#, python-format
+msgid "abort: %s"
+msgstr ""
+
+msgid " empty string\n"
+msgstr ""
+
+msgid "killed!\n"
+msgstr ""
+
+#, python-format
+msgid "hg: unknown command '%s'\n"
+msgstr ""
+
+#, python-format
+msgid "abort: could not import module %s!\n"
+msgstr ""
+
+msgid "(did you forget to compile extensions?)\n"
+msgstr ""
+
+msgid "(is your Python install correct?)\n"
+msgstr ""
+
+#, python-format
+msgid "abort: error: %s\n"
+msgstr ""
+
+msgid "broken pipe\n"
+msgstr ""
+
+msgid "interrupted!\n"
+msgstr ""
+
+msgid ""
+"\n"
+"broken pipe\n"
+msgstr ""
+
+msgid "abort: out of memory\n"
+msgstr ""
+
+msgid "** unknown exception encountered, details follow\n"
+msgstr ""
+
+msgid "** report bug details to http://www.selenic.com/mercurial/bts\n"
+msgstr ""
+
+msgid "** or mercurial@selenic.com\n"
+msgstr ""
+
+#, python-format
+msgid "** Mercurial Distributed SCM (version %s)\n"
+msgstr ""
+
+#, python-format
+msgid "** Extensions loaded: %s\n"
+msgstr ""
+
+#, python-format
+msgid "malformed --config option: %s"
+msgstr ""
+
+#, python-format
+msgid "extension '%s' overrides commands: %s\n"
+msgstr ""
+
+msgid "Option --config may not be abbreviated!"
+msgstr ""
+
+msgid "Option --cwd may not be abbreviated!"
+msgstr ""
+
+msgid ""
+"Option -R has to be separated from other options (i.e. not -qR) and --"
+"repository may only be abbreviated as --repo!"
+msgstr ""
+
+#, python-format
+msgid "Time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n"
+msgstr ""
+
+#, python-format
+msgid "repository '%s' is not local"
+msgstr ""
+
+msgid "invalid arguments"
+msgstr ""
+
+msgid "exception raised - generating profile anyway\n"
+msgstr ""
+
+msgid ""
+"lsprof not available - install from http://codespeak.net/svn/user/arigo/hack/"
+"misc/lsprof/"
+msgstr ""
+
+#, python-format
+msgid "*** failed to import extension %s from %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid "*** failed to import extension %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid "couldn't find merge tool %s\n"
+msgstr ""
+
+#, python-format
+msgid "tool %s can't handle symlinks\n"
+msgstr ""
+
+#, python-format
+msgid "tool %s can't handle binary\n"
+msgstr ""
+
+#, python-format
+msgid "tool %s requires a GUI\n"
+msgstr ""
+
+#, python-format
+msgid "picked tool '%s' for %s (binary %s symlink %s)\n"
+msgstr ""
+
+#, python-format
+msgid ""
+" no tool found to merge %s\n"
+"keep (l)ocal or take (o)ther?"
+msgstr ""
+
+msgid "[lo]"
+msgstr ""
+
+msgid "l"
+msgstr ""
+
+#, python-format
+msgid "merging %s and %s to %s\n"
+msgstr ""
+
+#, python-format
+msgid "merging %s\n"
+msgstr ""
+
+#, python-format
+msgid "my %s other %s ancestor %s\n"
+msgstr ""
+
+msgid " premerge successful\n"
+msgstr ""
+
+#, python-format
+msgid ""
+" output file %s appears unchanged\n"
+"was merge successful (yn)?"
+msgstr ""
+
+msgid "[yn]"
+msgstr ""
+
+msgid "n"
+msgstr ""
+
+#, python-format
+msgid "merging %s failed!\n"
+msgstr ""
+
+#, python-format
+msgid "Inconsistent state, %s:%s is good and bad"
+msgstr ""
+
+#, python-format
+msgid "unknown bisect kind %s"
+msgstr ""
+
+msgid "Date Formats"
+msgstr "Datumsformate"
+
+msgid ""
+"\n"
+"    Some commands allow the user to specify a date, e.g.:\n"
+"    * backout, commit, import, tag: Specify the commit date.\n"
+"    * log, revert, update: Select revision(s) by date.\n"
+"\n"
+"    Many date formats are valid. Here are some examples:\n"
+"\n"
+"    \"Wed Dec 6 13:18:29 2006\" (local timezone assumed)\n"
+"    \"Dec 6 13:18 -0600\" (year assumed, time offset provided)\n"
+"    \"Dec 6 13:18 UTC\" (UTC and GMT are aliases for +0000)\n"
+"    \"Dec 6\" (midnight)\n"
+"    \"13:18\" (today assumed)\n"
+"    \"3:39\" (3:39AM assumed)\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)\n"
+"\n"
+"    Lastly, there is Mercurial's internal format:\n"
+"\n"
+"    \"1165432709 0\" (Wed Dec 6 13:18:29 2006 UTC)\n"
+"\n"
+"    This is the internal representation format for dates. unixtime is\n"
+"    the number of seconds since the epoch (1970-01-01 00:00 UTC). offset\n"
+"    is the offset of the local timezone, in seconds west of UTC (negative\n"
+"    if the timezone is east of UTC).\n"
+"\n"
+"    The log command also accepts date ranges:\n"
+"\n"
+"    \"<{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 ""
+"\n"
+"    Einige Befehle erlauben dem Benuter ein Datum anzugeben, z.B.:\n"
+"    * backout, commit, import, tag: Angabe des Versionsdatums.\n"
+"    * log, revert, update: Selektion von Revisionen anhand ihres Datums.\n"
+"\n"
+"    Viele Datumsformate sind erlaubt. Hier einige Beispiele:\n"
+"\n"
+"    \"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)\n"
+"\n"
+"    Schließlich gibt es Mercurials internes Format:\n"
+"\n"
+"    \"1165432709 0\" (Wed Dec 6 13:18:29 2006 UTC)\n"
+"\n"
+"    Dies ist das internationale Darstellungsformat für Daten. Die Unixzeit "
+"(unixtime) ist\n"
+"    die Anzahl von Sekunden seit der UNIX Epoche (1970-01-01 00:00 UTC). "
+"Abgesetzt davon\n"
+"    steht die Verschiebung zur lokalen Zeitzone in Sekunden westlich der UTC "
+"(negativ\n"
+"    wenn die Zeitzone östlich der UTC ist).\n"
+"\n"
+"    Der log-Befehl akkzeptiert auch Datumsbereiche:\n"
+"\n"
+"    \"<{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 dem "
+"heutigen Tag\n"
+"    "
+
+msgid "File Name Patterns"
+msgstr "Dateimuster"
+
+msgid ""
+"\n"
+"    Mercurial accepts several notations for identifying one or more\n"
+"    files at a time.\n"
+"\n"
+"    By default, Mercurial treats filenames as shell-style extended\n"
+"    glob patterns.\n"
+"\n"
+"    Alternate pattern notations must be specified explicitly.\n"
+"\n"
+"    To use a plain path name without any pattern matching, start it\n"
+"    with \"path:\". These path names must completely match starting at\n"
+"    the current repository root.\n"
+"\n"
+"    To use an extended glob, start a name with \"glob:\". Globs are\n"
+"    rooted at the current directory; a glob such as \"*.c\" will only\n"
+"    match files in the current directory ending with \".c\".\n"
+"\n"
+"    The supported glob syntax extensions are \"**\" to match any string\n"
+"    across path separators and \"{a,b}\" to mean \"a or b\".\n"
+"\n"
+"    To use a Perl/Python regular expression, start a name with \"re:\".\n"
+"    Regexp pattern matching is anchored at the root of the repository.\n"
+"\n"
+"    Plain examples:\n"
+"\n"
+"    path:foo/bar   a name bar in a directory named foo in the root of\n"
+"                   the repository\n"
+"    path:path:name a file or directory named \"path:name\"\n"
+"\n"
+"    Glob examples:\n"
+"\n"
+"    glob:*.c       any name ending in \".c\" in the current directory\n"
+"    *.c            any name ending in \".c\" in the current directory\n"
+"    **.c           any name ending in \".c\" in any subdirectory of the\n"
+"                   current directory including itself.\n"
+"    foo/*.c        any name ending in \".c\" in the directory foo\n"
+"    foo/**.c       any name ending in \".c\" in any subdirectory of foo\n"
+"                   including itself.\n"
+"\n"
+"    Regexp examples:\n"
+"\n"
+"    re:.*\\.c$      any name ending in \".c\", anywhere in the repository\n"
+"\n"
+"    "
+msgstr ""
+"\n"
+"    Mercurial akkzeptiert verschiedene Schreibweisen zur Identifikation "
+"einer oder\n"
+"    mehrerer Dateien gleichzeitig.\n"
+"\n"
+"    Standardmäßig behandelt Mercurial Dateinamen wie erweiterte \"Glob\"-"
+"Muster der\n"
+"    Shell (shell-style extended glob patterns).\n"
+"\n"
+"    Andere Schreibweisen von Mustern müssen explizit angegeben werden.\n"
+"\n"
+"    Um einen Dateipfad ohne Mustererkennung zu suchen, beginne mit\n"
+"    \"path:\". Dies Pfadnamen müssen komplett übereinstimmen beginnend ab\n"
+"    der aktuellen Wurzel des Projektarchivs.\n"
+"\n"
+"    Um erweiterete Glob-Muster zu nutzen, muss das Muster mit \"glob:\" "
+"beginnen.\n"
+"    Globs sind am aktuellen Verzeichnis verankert; ein Glob-Muster wie \"*.c"
+"\" stimmt nur\n"
+"    mit Dateien im aktuellen Verzeichnis überein, die mit \".c\" enden.\n"
+"\n"
+"    Die unterstützen Erweiterungen der Glob-Syntax sind \"**\" zur "
+"Übereinstimmung mit\n"
+"    Zeichenketten über Pfadtrenner hinweg und \"{a,b}\" in der Bedeutung \"a "
+"oder b\".\n"
+"\n"
+"    Zur Nutzung von regulären Ausdrücken (Perl/Python) beginne einen Namen "
+"mit \"re:\".\n"
+"    Erkennung mit regulären Ausdrücken wird an der Wurzel des Projektarchivs "
+"verankert.\n"
+"\n"
+"    Pfad-Beispiele:\n"
+"\n"
+"    path:foo/bar   eine Datei bar in einem Verzeichnis foo an der Basis des\n"
+"                   des Projektarchivs\n"
+"    path:path:name eine Datei oder eine Verzeichnis mit dem Namen \"path:name"
+"\"\n"
+"\n"
+"    Glob-Beispiele:\n"
+"\n"
+"    glob:*.c       jeder Name endend mit \".c\" im aktuellen Verzeichnis\n"
+"    *.c            jeder Name endend mit \".c\" im aktuellen Verzeichnis\n"
+"    **.c           jeder Name endend mit \".c\" im aktuellen Verzeichnis "
+"und\n"
+"                   jedem Unterverzeichnis\n"
+"    foo/*.c        jeder Name endend mit \".c\" im Verzeichnis foo\n"
+"    foo/**.c       jeder Name endend mit \".c\" im Verzeichnis foo und "
+"jedem\n"
+"                   Unterverzeichnis.\n"
+"\n"
+"    Reguläre Ausdrücke Beispiele::\n"
+"\n"
+"    re:.*\\.c$      jeder Name endend mit \".c\" überall im Projektarchiv\n"
+"\n"
+"    "
+
+msgid "Environment Variables"
+msgstr "Umgebungsvariablen"
+
+msgid ""
+"\n"
+"HG::\n"
+"    Path to the 'hg' executable, automatically passed when running hooks,\n"
+"    extensions or external tools. If unset or empty, this is the hg\n"
+"    executable's name if it's frozen, or an executable named 'hg'\n"
+"    (with %PATHEXT% [defaulting to COM/EXE/BAT/CMD] extensions on\n"
+"    Windows) is searched.\n"
+"\n"
+"HGEDITOR::\n"
+"    This is the name of the editor to run when committing. See EDITOR.\n"
+"\n"
+"    (deprecated, use .hgrc)\n"
+"\n"
+"HGENCODING::\n"
+"    This overrides the default locale setting detected by Mercurial.\n"
+"    This setting is used to convert data including usernames,\n"
+"    changeset descriptions, tag names, and branches. This setting can\n"
+"    be overridden with the --encoding command-line option.\n"
+"\n"
+"HGENCODINGMODE::\n"
+"    This sets Mercurial's behavior for handling unknown characters\n"
+"    while transcoding user input. The default is \"strict\", which\n"
+"    causes Mercurial to abort if it can't map a character. Other\n"
+"    settings include \"replace\", which replaces unknown characters, and\n"
+"    \"ignore\", which drops them. This setting can be overridden with\n"
+"    the --encodingmode command-line option.\n"
+"\n"
+"HGMERGE::\n"
+"    An executable to use for resolving merge conflicts. The program\n"
+"    will be executed with three arguments: local file, remote file,\n"
+"    ancestor file.\n"
+"\n"
+"    (deprecated, use .hgrc)\n"
+"\n"
+"HGRCPATH::\n"
+"    A list of files or directories to search for hgrc files. Item\n"
+"    separator is \":\" on Unix, \";\" on Windows. If HGRCPATH is not set,\n"
+"    platform default search path is used. If empty, only the .hg/hgrc\n"
+"    from the current repository is read.\n"
+"\n"
+"    For each element in HGRCPATH:\n"
+"    * if it's a directory, all files ending with .rc are added\n"
+"    * otherwise, the file itself will be added\n"
+"\n"
+"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:\n"
+"\n"
+"    * HGUSER (deprecated)\n"
+"    * hgrc files from the HGRCPATH\n"
+"    * EMAIL\n"
+"    * interactive prompt\n"
+"    * LOGNAME (with '@hostname' appended)\n"
+"\n"
+"    (deprecated, use .hgrc)\n"
+"\n"
+"EMAIL::\n"
+"    May be used as the author of a commit; see HGUSER.\n"
+"\n"
+"LOGNAME::\n"
+"    May be used as the author of a commit; see HGUSER.\n"
+"\n"
+"VISUAL::\n"
+"    This is the name of the editor to use when committing. See EDITOR.\n"
+"\n"
+"EDITOR::\n"
+"    Sometimes Mercurial needs to open a text file in an editor\n"
+"    for a user to modify, for example when writing commit messages.\n"
+"    The editor it uses is determined by looking at the environment\n"
+"    variables HGEDITOR, VISUAL and EDITOR, in that order. The first\n"
+"    non-empty one is chosen. If all of them are empty, the editor\n"
+"    defaults to 'vi'.\n"
+"\n"
+"PYTHONPATH::\n"
+"    This is used by Python to find imported modules and may need to be set\n"
+"    appropriately if this Mercurial is not installed system-wide.\n"
+"    "
+msgstr ""
+
+msgid "Specifying Single Revisions"
+msgstr "Angabe Einzelner Revisionen"
+
+msgid ""
+"\n"
+"    Mercurial supports several ways to specify individual\n"
+"    revisions.\n"
+"\n"
+"    A plain integer is treated as a revision number. Negative\n"
+"    integers are treated as topological offsets from the tip, with\n"
+"    -1 denoting the tip. As such, negative numbers are only useful\n"
+"    if you've memorized your local tree numbers and want to save\n"
+"    typing a single digit. This editor suggests copy and paste.\n"
+"\n"
+"    A 40-digit hexadecimal string is treated as a unique revision\n"
+"    identifier.\n"
+"\n"
+"    A hexadecimal string less than 40 characters long is treated as a\n"
+"    unique revision identifier, and referred to as a short-form\n"
+"    identifier. A short-form identifier is only valid if it is the\n"
+"    prefix of exactly one full-length identifier.\n"
+"\n"
+"    Any other string is treated as a tag name, which is a symbolic\n"
+"    name associated with a revision identifier. Tag names may not\n"
+"    contain the \":\" character.\n"
+"\n"
+"    The reserved name \"tip\" is a special tag that always identifies\n"
+"    the most recent revision.\n"
+"\n"
+"    The reserved name \"null\" indicates the null revision. This is the\n"
+"    revision of an empty repository, and the parent of revision 0.\n"
+"\n"
+"    The reserved name \".\" indicates the working directory parent. If\n"
+"    no working directory is checked out, it is equivalent to null.\n"
+"    If an uncommitted merge is in progress, \".\" is the revision of\n"
+"    the first parent.\n"
+"    "
+msgstr ""
+"\n"
+"    Mercurial unterstützt mehrere Arten individuelle Revisionen anzugeben\n"
+"\n"
+"    Eine einfache Ganzzahl wird als Revisionsnummer behandelt. Negative\n"
+"    Zahlen beschreiben den topologischen Abstand von der Spitze (tip), "
+"wobei\n"
+"    -1 die Spitze selbst ist. Daher sind negative Zahlen nur dann nützlich,\n"
+"    wenn man sich die lokalen Revisionsnummern einprägt und das Tippen "
+"einer\n"
+"    Zahl sparen möchte. Der Verfasser empfiehlt 'copy and paste'.\n"
+"\n"
+"    Eine 40-stellige Hexadezimalzahl gilt als eindeutiger Identifikator\n"
+"    einer Revision.\n"
+"\n"
+"    Eine Hexadezimalzahl mit weniger als 40 Zeichen gilt als eindeutiger\n"
+"    Identifikator und wird als Kurzform des Identifikators bezeichnet.\n"
+"    Die Kurzform ist nur dann gültig, wenn sie Präfix exakt einer Langform\n"
+"    eines Identifikators ist.\n"
+"\n"
+"    Jede andere Zeichenfolge wird als Name einer Marke (tag) behandelt.\n"
+"    Dieser symbolische Name verweist auf einen Revisionsidentifikator. "
+"Namen\n"
+"    von Marken dürfen das Zeichen \":\" nicht enthalten.\n"
+"\n"
+"    Der reservierte Name \"tip\" ist eine spezielle Marke die immer auf die\n"
+"    jüngste Revision verweist.\n"
+"\n"
+"    Der reservierte Name \"null\" bezeichnet die null-Revision. Sie ist die\n"
+"    Revision eines leeren Projektarchivs und der Vorgänger der Version 0.\n"
+"\n"
+"    Der reservierte Name \".\" bezeichnete die Vorgängerversion des\n"
+"    Arbeitsverzeichnisses. Falls kein Check-Out des Arbeitsverzeichnisses\n"
+"    vorliegt ist er äquivalent zu null. Falls eine nicht versionierte\n"
+"    Zusammenführung in Bearbeitung ist, bezeichnet \".\" die Revision des\n"
+"    ersten Vorgängers.\n"
+"    "
+
+msgid "Specifying Multiple Revisions"
+msgstr "Angabe Mehrerer Revisionen"
+
+msgid ""
+"\n"
+"    When Mercurial accepts more than one revision, they may be\n"
+"    specified individually, or provided as a topologically continuous\n"
+"    range, separated by the \":\" character.\n"
+"\n"
+"    The syntax of range notation is [BEGIN]:[END], where BEGIN and END\n"
+"    are revision identifiers. Both BEGIN and END are optional. If\n"
+"    BEGIN is not specified, it defaults to revision number 0. If END\n"
+"    is not specified, it defaults to the tip. The range \":\" thus\n"
+"    means \"all revisions\".\n"
+"\n"
+"    If BEGIN is greater than END, revisions are treated in reverse\n"
+"    order.\n"
+"\n"
+"    A range acts as a closed interval. This means that a range of 3:5\n"
+"    gives 3, 4 and 5. Similarly, a range of 9:6 gives 9, 8, 7, and 6.\n"
+"    "
+msgstr ""
+"\n"
+"    Wenn Mercurial mehr als eine Revision annimmt, können sie\n"
+"    einzeln angegeben werden oder als topologisch kontinuierlicher\n"
+"    Bereich getrennt durch das \":\" Zeichen.\n"
+"\n"
+"    Die Syntax der Bereichs-Notation ist [ANFANG]:[ENDE], wobei ANFANG und\n"
+"    ENDE Revisions-Identifikatoren sind. Sowohl ANFANG als auch ENDE sind\n"
+"    optional. Sollte ANFANG nicht angegeben werden, wird standardmäßig die\n"
+"    die Revisionsnummer 0 angenommen. Wenn ENDE nicht angegeben wird, wird\n"
+"    standardmäßig tip genommen. Der Bereich \":\" bedeute daher\n"
+"    \"alle Revisionen\".\n"
+"\n"
+"    Wenn ANFANG größer als ENDE ist, werden die Revisionen in umgekehrter\n"
+"    Reihenfolge betrachtet.\n"
+"\n"
+"    Ein Bereich fungiert als geschlossenes Intervall . Das heißt, dass\n"
+"    der Bereich 3:5 die Revisionen 3, 4 und 5 enthält. Ebenso enthält der\n"
+"    Bereich 9:6 die Revisionen 9, 8, 7 und 6.\n"
+"    "
+
+msgid "Diff Formats"
+msgstr "Diff-Formate"
+
+msgid ""
+"\n"
+"    Mercurial's default format for showing changes between two versions\n"
+"    of a file is compatible with the unified format of GNU diff, which\n"
+"    can be used by GNU patch and many other standard tools.\n"
+"\n"
+"    While this standard format is often enough, it does not encode the\n"
+"    following information:\n"
+"\n"
+"     - executable status and other permission bits\n"
+"     - copy or rename information\n"
+"     - changes in binary files\n"
+"     - creation or deletion of empty files\n"
+"\n"
+"    Mercurial also supports the extended diff format from the git VCS\n"
+"    which addresses these limitations. The git diff format is not\n"
+"    produced by default because a few widespread tools still do not\n"
+"    understand this format.\n"
+"\n"
+"    This means that when generating diffs from a Mercurial repository\n"
+"    (e.g. with \"hg export\"), you should be careful about things like\n"
+"    file copies and renames or other things mentioned above, because\n"
+"    when applying a standard diff to a different repository, this extra\n"
+"    information is lost. Mercurial's internal operations (like push and\n"
+"    pull) are not affected by this, because they use an internal binary\n"
+"    format for communicating changes.\n"
+"\n"
+"    To make Mercurial produce the git extended diff format, use the\n"
+"    --git option available for many commands, or set 'git = True' in the\n"
+"    [diff] section of your hgrc. You do not need to set this option when\n"
+"    importing diffs in this format or using them in the mq extension.\n"
+"    "
+msgstr ""
+
+msgid "Template Usage"
+msgstr "Nutzung von Vorlagen"
+
+msgid ""
+"\n"
+"    Mercurial allows you to customize output of commands through\n"
+"    templates. You can either pass in a template from the command line,\n"
+"    via the --template option, or select an existing template-style (--"
+"style).\n"
+"\n"
+"    You can customize output for any \"log-like\" command: log, outgoing,\n"
+"    incoming, tip, parents, heads and glog.\n"
+"\n"
+"    Three styles are packaged with Mercurial: default (the style used\n"
+"    when no explicit preference is passed), compact and changelog. Usage:\n"
+"\n"
+"        $ hg log -r1 --style changelog\n"
+"\n"
+"    A template is a piece of text, with markup to invoke variable "
+"expansion:\n"
+"\n"
+"        $ hg log -r1 --template \"{node}\\n\"\n"
+"        b56ce7b07c52de7d5fd79fb89701ea538af65746\n"
+"\n"
+"    Strings in curly braces are called keywords. The availability of\n"
+"    keywords depends on the exact context of the templater. These keywords\n"
+"    are usually available for templating a log-like command:\n"
+"\n"
+"    - author: String. The unmodified author of the changeset.\n"
+"    - branches: String. The name of the branch on which the changeset\n"
+"          was committed. Will be empty if the branch name was default.\n"
+"    - date: Date information. The date when the changeset was committed.\n"
+"    - desc: String. The text of the changeset description.\n"
+"    - diffstat: String. Statistics of changes with the following format:\n"
+"          \"modified files: +added/-removed lines\"\n"
+"    - files: List of strings. All files modified, added, or removed by\n"
+"          this changeset.\n"
+"    - file_adds: List of strings. Files added by this changeset.\n"
+"    - file_mods: List of strings. Files modified by this changeset.\n"
+"    - file_dels: List of strings. Files removed by this changeset.\n"
+"    - node: String. The changeset identification hash, as a 40-character\n"
+"          hexadecimal string.\n"
+"    - parents: List of strings. The parents of the changeset.\n"
+"    - rev: Integer. The repository-local changeset revision number.\n"
+"    - tags: List of strings. Any tags associated with the changeset.\n"
+"\n"
+"    The \"date\" keyword does not produce human-readable output. If you\n"
+"    want to use a date in your output, you can use a filter to process it.\n"
+"    Filters are functions which return a string based on the input "
+"variable.\n"
+"    You can also use a chain of filters to get the desired output:\n"
+"\n"
+"       $ hg tip --template \"{date|isodate}\\n\"\n"
+"       2008-08-21 18:22 +0000\n"
+"\n"
+"    List of filters:\n"
+"\n"
+"    - addbreaks: Any text. Add an XHTML \"<br />\" tag before the end of\n"
+"          every line except the last.\n"
+"    - age: Date. Returns a human-readable date/time difference between\n"
+"          the given date/time and the current date/time.\n"
+"    - basename: Any text. Treats the text as a path, and returns the\n"
+"          last component of the path after splitting by the path\n"
+"          separator (ignoring trailing seprators). For example,\n"
+"          \"foo/bar/baz\" becomes \"baz\" and \"foo/bar//\" becomes \"bar"
+"\".\n"
+"    - date: Date. Returns a date in a Unix date format, including\n"
+"          the timezone: \"Mon Sep 04 15:13:13 2006 0700\".\n"
+"    - domain: Any text. Finds the first string that looks like an email\n"
+"          address, and extracts just the domain component.\n"
+"          Example: 'User <user@example.com>' becomes 'example.com'.\n"
+"    - email: Any text. Extracts the first string that looks like an email\n"
+"          address. Example: 'User <user@example.com>' becomes\n"
+"          'user@example.com'.\n"
+"    - escape: Any text. Replaces the special XML/XHTML characters \"&\",\n"
+"          \"<\" and \">\" with XML entities.\n"
+"    - fill68: Any text. Wraps the text to fit in 68 columns.\n"
+"    - fill76: Any text. Wraps the text to fit in 76 columns.\n"
+"    - firstline: Any text. Returns the first line of text.\n"
+"    - hgdate: Date. Returns the date as a pair of numbers:\n"
+"          \"1157407993 25200\" (Unix timestamp, timezone offset).\n"
+"    - isodate: Date. Returns the date in ISO 8601 format.\n"
+"    - obfuscate: Any text. Returns the input text rendered as a sequence\n"
+"          of XML entities.\n"
+"    - person: Any text. Returns the text before an email address.\n"
+"    - rfc822date: Date. Returns a date using the same format used\n"
+"          in email headers.\n"
+"    - short: Changeset hash. Returns the short form of a changeset hash,\n"
+"          i.e. a 12-byte hexadecimal string.\n"
+"    - shortdate: Date. Returns a date like \"2006-09-18\".\n"
+"    - strip: Any text. Strips all leading and trailing whitespace.\n"
+"    - tabindent: Any text. Returns the text, with every line except the\n"
+"          first starting with a tab character.\n"
+"    - urlescape: Any text. Escapes all \"special\" characters. For example,\n"
+"          \"foo bar\" becomes \"foo%20bar\".\n"
+"    - user: Any text. Returns the user portion of an email address.\n"
+"    "
+msgstr ""
+
+msgid "Url Paths"
+msgstr "Url-Pfade"
+
+msgid ""
+"\n"
+"    Valid URLs are of the form:\n"
+"\n"
+"      local/filesystem/path (or file://local/filesystem/path)\n"
+"      http://[user[:pass]@]host[:port]/[path]\n"
+"      https://[user[:pass]@]host[:port]/[path]\n"
+"      ssh://[user[:pass]@]host[:port]/[path]\n"
+"\n"
+"    Paths in the local filesystem can either point to Mercurial\n"
+"    repositories or to bundle files (as created by 'hg bundle' or\n"
+"    'hg incoming --bundle').\n"
+"\n"
+"    An optional identifier after # indicates a particular branch, tag,\n"
+"    or changeset to use from the remote repository.\n"
+"\n"
+"    Some features, such as pushing to http:// and https:// URLs are\n"
+"    only possible if the feature is explicitly enabled on the\n"
+"    remote Mercurial server.\n"
+"\n"
+"    Some notes about using SSH with Mercurial:\n"
+"    - SSH requires an accessible shell account on the destination machine\n"
+"      and a copy of hg in the remote path or specified with as remotecmd.\n"
+"    - path is relative to the remote user's home directory by default.\n"
+"      Use an extra slash at the start of a path to specify an absolute "
+"path:\n"
+"        ssh://example.com//tmp/repository\n"
+"    - Mercurial doesn't use its own compression via SSH; the right thing\n"
+"      to do is to configure it in your ~/.ssh/config, e.g.:\n"
+"        Host *.mylocalnetwork.example.com\n"
+"          Compression no\n"
+"        Host *\n"
+"          Compression yes\n"
+"      Alternatively specify \"ssh -C\" as your ssh command in your hgrc or\n"
+"      with the --ssh command line option.\n"
+"\n"
+"    These urls can all be stored in your hgrc with path aliases under the\n"
+"    [paths] section like so:\n"
+"    [paths]\n"
+"    alias1 = URL1\n"
+"    alias2 = URL2\n"
+"    ...\n"
+"\n"
+"    You can then use the alias for any command that uses a url (for example\n"
+"    'hg pull alias1' would pull from the 'alias1' path).\n"
+"\n"
+"    Two path aliases are special because they are used as defaults\n"
+"    when you do not provide the url to a command:\n"
+"\n"
+"    default:\n"
+"      When you create a repository with hg clone, the clone command saves\n"
+"      the location of the source repository as the new repository's\n"
+"      'default' path. This is then used when you omit path from push-\n"
+"      and pull-like commands (including in and out).\n"
+"\n"
+"    default-push:\n"
+"      The push command will look for a path named 'default-push', and\n"
+"      prefer it over 'default' if both are defined.\n"
+"    "
+msgstr ""
+"\n"
+"    Gültige URLs haben folgende Form:\n"
+"\n"
+"      lokales/dateisystem/pfad (oder file://lokales/dateisystem/pfad)\n"
+"      http://[nutzer[:pass]@]host[:port]/[pfad]\n"
+"      https://[nutzer[:pass]@]host[:port]/[pfad]\n"
+"      ssh://[nutzer[:pass]@]host[:port]/[pfad]\n"
+"\n"
+"    Pfade im lokalen Dateisystem können auf ein Mercurial-Archiv oder\n"
+"    Bündeldateien verweisen (wie sie von 'hg bundle' oder\n"
+"    'hg incoming --bundle' erzeugt werden).\n"
+"\n"
+"    Ein optionaler Bezeichner nach # verweist auf einen bestimmten Zweig, "
+"Tag\n"
+"    oder Änderungssatz des anderen Projektarchivs.\n"
+"\n"
+"    Einige Funktionen, wie das Ausliefern an http:// und https:// URLs, "
+"sind\n"
+"    nur mögliche wenn diese Funktionen explizit auf dem entfernten\n"
+"    Mercurial-Server aktiviert sind.\n"
+"\n"
+"    Einige Hinweise zur Nutzung von SSH mit Mercurial:\n"
+"    - SSH benötigt einen nutzbaren Shell-Zugang auf der Zielmaschine und\n"
+"      eine Kopie von hg im Pfad der entfernten Maschine oder in der "
+"Konfiguration\n"
+"      remotecmd angegeben.\n"
+"    - Der Pfad ist standardmäßig relativ vom Home-Verzeichnis des "
+"entfernten\n"
+"      Nutzer. Nutze einen zusätzlichen Schrägstrich um einen absoluen Pfad\n"
+"      anzugeben:\n"
+"        ssh://example.com//tmp/repository\n"
+"    - Mercurial nutzt nicht eigene Kompressionsmechanismen über SSH:\n"
+"      Hier sollte man die Kompression über ~/.ssh/config aktivieren, z.B.:\n"
+"        Host *.mylocalnetwork.example.com\n"
+"          Compression no\n"
+"        Host *\n"
+"          Compression yes\n"
+"      Alternativ kann \"ssh -C\" als dein SSH-Befehl in der hgrc oder\n"
+"      mit der --ssh Befehlszeilenoption angegeben werden.\n"
+"\n"
+"    Diese URLs können alle in deiner hgrc als Aliase unter der Sektion\n"
+"    [paths] abgelegt werden:\n"
+"    [paths]\n"
+"    alias1 = URL1\n"
+"    alias2 = URL2\n"
+"    ...\n"
+"\n"
+"    Diese Aliase können dann bei jedem Befehl genutzt werden der URLs nutzt\n"
+"    (beispielsweise 'hg pull alias1' würde vom 'alias1' Pfad "
+"herunterladen).\n"
+"\n"
+"    Es gibt zwei besondere Pfad-Aliase, die standardmäßig genutzt\n"
+"    werden wenn einem Befehl keine URL übergeben wurde:\n"
+"\n"
+"    default:\n"
+"      Bei Erstellung eines Projektarchivs mit hg clone, sichert der clone\n"
+"      Befehl die Herkunft des Quellarchivs als 'default'-Pfad des neuen\n"
+"      Archivs. Dieser Pfad wird immer dann genutzt, wenn bei 'push' oder\n"
+"      'pull'-ähnlichen Befehlen der Pfad nicht angegeben wurde (auch bei "
+"'in'\n"
+"      oder 'out').\n"
+"\n"
+"    default-push:\n"
+"      Der 'push'-Befehl sucht nach dem 'default-push'-Alias und zieht\n"
+"      diesen dem 'default'-Alias vor, wenn beide definiert sind.\n"
+"    "
+
+#, python-format
+msgid "destination directory: %s\n"
+msgstr "Zielverzeichnis: %s\n"
+
+#, python-format
+msgid "destination '%s' already exists"
+msgstr "Ziel '%s' existiert bereits"
+
+#, python-format
+msgid "destination '%s' is not empty"
+msgstr "Ziel %s ist nicht leer"
+
+msgid ""
+"src repository does not support revision lookup and so doesn't support clone "
+"by revision"
+msgstr ""
+"Quellarchiv unterstützt keine Revisions-Abfragen und lässt daher das Klonen "
+"bis zu einer Revision nicht zu"
+
+msgid "clone from remote to remote not supported"
+msgstr "Klonen von entferntem Archiv zu entferntem Archiv nicht möglich"
+
+msgid "updating working directory\n"
+msgstr "Aktualisiere Arbeitsverzeichnis\n"
+
+msgid "updated"
+msgstr "aktualisiert"
+
+msgid "merged"
+msgstr "zusammengeführt"
+
+msgid "removed"
+msgstr "entfernt"
+
+msgid "unresolved"
+msgstr "ungelöst"
+
+#, python-format
+msgid "%d files %s"
+msgstr "%d Dateien %s"
+
+msgid "use 'hg resolve' to retry unresolved file merges\n"
+msgstr "Verwende 'hg resolve', um die Zusammenführung erneut zu versuchen\n"
+
+msgid ""
+"use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to "
+"abandon\n"
+msgstr ""
+"Nutze 'hg resolve', um nicht aufgelöste Zusammenführungen zu wiederholen "
+"oder\n"
+"'hg up --clean' um abzubrechen\n"
+
+msgid "(branch merge, don't forget to commit)\n"
+msgstr "(Zweig-Zusammenführung, vergesse nicht 'hg commit' auszuführen)\n"
+
+#, python-format
+msgid "error reading %s/.hg/hgrc: %s\n"
+msgstr ""
+
+msgid "SSL support is unavailable"
+msgstr ""
+
+msgid "IPv6 is not available on this system"
+msgstr ""
+
+#, python-format
+msgid "cannot start server at '%s:%d': %s"
+msgstr ""
+
+#, python-format
+msgid "calling hook %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s hook is invalid (\"%s\" not in a module)"
+msgstr ""
+
+#, python-format
+msgid "%s hook is invalid (import of \"%s\" failed)"
+msgstr ""
+
+#, python-format
+msgid "%s hook is invalid (\"%s\" is not defined)"
+msgstr ""
+
+#, python-format
+msgid "%s hook is invalid (\"%s\" is not callable)"
+msgstr ""
+
+#, python-format
+msgid "error: %s hook failed: %s\n"
+msgstr ""
+
+#, python-format
+msgid "error: %s hook raised an exception: %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s hook failed"
+msgstr ""
+
+#, python-format
+msgid "warning: %s hook failed\n"
+msgstr ""
+
+#, python-format
+msgid "running hook %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s hook %s"
+msgstr ""
+
+#, python-format
+msgid "warning: %s hook %s\n"
+msgstr ""
+
+msgid "connection ended unexpectedly"
+msgstr ""
+
+#, python-format
+msgid "unsupported URL component: \"%s\""
+msgstr ""
+
+#, python-format
+msgid "using %s\n"
+msgstr ""
+
+#, python-format
+msgid "capabilities: %s\n"
+msgstr ""
+
+msgid "operation not supported over http"
+msgstr ""
+
+#, python-format
+msgid "sending %s command\n"
+msgstr ""
+
+#, python-format
+msgid "sending %s bytes\n"
+msgstr ""
+
+msgid "authorization failed"
+msgstr ""
+
+#, python-format
+msgid "http error while sending %s command\n"
+msgstr ""
+
+msgid "http error, possibly caused by proxy setting"
+msgstr ""
+
+#, python-format
+msgid "real URL is %s\n"
+msgstr ""
+
+#, python-format
+msgid "requested URL: '%s'\n"
+msgstr "Angeforderte URL: '%s'\n"
+
+#, python-format
+msgid "'%s' does not appear to be an hg repository"
+msgstr ""
+
+#, python-format
+msgid "'%s' sent a broken Content-Type header (%s)"
+msgstr ""
+
+#, python-format
+msgid "'%s' uses newer protocol %s"
+msgstr ""
+
+msgid "look up remote revision"
+msgstr ""
+
+msgid "unexpected response:"
+msgstr ""
+
+msgid "look up remote changes"
+msgstr ""
+
+msgid "push failed (unexpected response):"
+msgstr "push fehlgeschlagen (Unerwartete Antwort)"
+
+#, python-format
+msgid "push failed: %s"
+msgstr "push fehlgeschlagen: %s"
+
+msgid "Python support for SSL and HTTPS is not installed"
+msgstr "Python Unterstützung für SSL und HTTPS ist nicht installiert"
+
+msgid "cannot create new http repository"
+msgstr "Kann neues HTTP-Projektarchiv nicht erzeugen"
+
+#, python-format
+msgid "%s: ignoring invalid syntax '%s'\n"
+msgstr "%s: Ignoriere ungültige Syntax '%s'\n"
+
+#, python-format
+msgid "skipping unreadable ignore file '%s': %s\n"
+msgstr "Überspringe nicht lesbares  ignore file '%s': %s\n"
+
+#, python-format
+msgid "repository %s not found"
+msgstr "Projektarchiv %s nicht gefunden"
+
+#, python-format
+msgid "repository %s already exists"
+msgstr "Projektarchiv %s existiert bereits"
+
+#, python-format
+msgid "requirement '%s' not supported"
+msgstr "Anforderung '%s' nicht unterstützt"
+
+#, python-format
+msgid "%r cannot be used in a tag name"
+msgstr "%r kann nicht als Name für tag genutzt werden"
+
+msgid "working copy of .hgtags is changed (please commit .hgtags manually)"
+msgstr ""
+"Arbeitskopie von .hgtags wurde geändert (Bitte .hgtags manuell versionieren)"
+
+#, python-format
+msgid "%s, line %s: %s\n"
+msgstr "%s, Zeile %s: %s\n"
+
+msgid "cannot parse entry"
+msgstr "Kann Eintrag nicht parsen"
+
+#, python-format
+msgid "node '%s' is not well formed"
+msgstr "Knoten '%s' ist fehlerhaft"
+
+#, python-format
+msgid "tag '%s' refers to unknown node"
+msgstr "Tag '%s' verweist auf unbekannten Knoten"
+
+#, python-format
+msgid "unknown revision '%s'"
+msgstr "Unbekannte Revision '%s'"
+
+#, python-format
+msgid "filtering %s through %s\n"
+msgstr "Filtere %s bis %s\n"
+
+msgid "journal already exists - run hg recover"
+msgstr "Journal existiert bereits - führe hg recover aus"
+
+msgid "rolling back interrupted transaction\n"
+msgstr "Setze unterbrochene Transaktion zurück\n"
+
+msgid "no interrupted transaction available\n"
+msgstr "Keine unterbrochene Transaktion vorhanden\n"
+
+msgid "rolling back last 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: %s\n"
+
+msgid "no rollback information available\n"
+msgstr "Keine rollback-Information verfügbar\n"
+
+#, python-format
+msgid "waiting for lock on %s held by %r\n"
+msgstr "Warte auf Sperre auf %s gehalten von %r\n"
+
+#, python-format
+msgid "repository %s"
+msgstr "Projektarchiv %s"
+
+#, python-format
+msgid "working directory of %s"
+msgstr "Arbeitsverzeichnis von %s"
+
+#, python-format
+msgid " %s: searching for copy revision for %s\n"
+msgstr " %s: Suche kopierte Revision für %s\n"
+
+#, python-format
+msgid " %s: copy %s:%s\n"
+msgstr " %s: kopiere %s:%s\n"
+
+msgid "cannot partially commit a merge (do not specify files or patterns)"
+msgstr ""
+"Eine Zusammenführung kann nicht teilweise versioniert werden (Gib keine "
+"Dateien oder Muster an)"
+
+#, python-format
+msgid "%s not tracked!\n"
+msgstr "%s nicht versioniert!\n"
+
+msgid "unresolved merge conflicts (see hg resolve)"
+msgstr "Ungelöster Zusammenführungs-Konflikt (siehe hg resolve)"
+
+msgid "nothing changed\n"
+msgstr "Keine Änderung\n"
+
+#, python-format
+msgid "trouble committing %s!\n"
+msgstr "Problem bei Erstellen der neuen Version von %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."
+
+msgid "empty commit message"
+msgstr "Leere Versions-Meldung"
+
+#, python-format
+msgid "%s does not exist!\n"
+msgstr "%s existiert nicht!\n"
+
+#, python-format
+msgid ""
+"%s: files over 10MB may cause memory and performance problems\n"
+"(use 'hg revert %s' to unadd the file)\n"
+msgstr ""
+"%s: Dateien über 10MB können Speicher- und Performance-Probleme auslösen\n"
+"(Nutze 'hg revert %s' um die Datei zu entfernen)\n"
+
+#, python-format
+msgid "%s not added: only files and symlinks supported currently\n"
+msgstr ""
+"%s nicht hinzugefügt: Nur Dateien und symbolische Verknüpfungen werden\n"
+"zur Zeit unterstützt\n"
+
+#, python-format
+msgid "%s already tracked!\n"
+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 removed!\n"
+msgstr "%s nicht entfernt!\n"
+
+#, python-format
+msgid "copy failed: %s is not a file or a symbolic link\n"
+msgstr ""
+"Kopieren fehlgeschlagen: %s ist keine Datei oder eine symbolische "
+"Verknüpfung\n"
+
+msgid "searching for changes\n"
+msgstr "Suche nach Änderungen\n"
+
+#, python-format
+msgid "examining %s:%s\n"
+msgstr "Untersuche %s:%s\n"
+
+msgid "branch already found\n"
+msgstr "Zweig bereits gefunden\n"
+
+#, python-format
+msgid "found incomplete branch %s:%s\n"
+msgstr "Unvollständiger Zweig gefunden %s:%s\n"
+
+#, python-format
+msgid "found new changeset %s\n"
+msgstr "Neue Änderungssätze gefunden %s\n"
+
+#, python-format
+msgid "request %d: %s\n"
+msgstr "Angefordert %d: %s\n"
+
+#, python-format
+msgid "received %s:%s\n"
+msgstr "Erhalten %s:%s\n"
+
+#, python-format
+msgid "narrowing %d:%d %s\n"
+msgstr "Verringere %d:%d %s\n"
+
+#, python-format
+msgid "found new branch changeset %s\n"
+msgstr "Neue Zweigversion gefunden %s\n"
+
+#, python-format
+msgid "narrowed branch search to %s:%s\n"
+msgstr "Zweig-Suche verringert auf %s:%s\n"
+
+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"
+
+msgid "found new changesets starting at "
+msgstr "Neue Änderungssätze gefunden ab"
+
+#, python-format
+msgid "%d total queries\n"
+msgstr "%d Abfragen insgesamt\n"
+
+msgid "common changesets up to "
+msgstr "Gemeinsame Änderungssätze bis zu"
+
+msgid "requesting all changes\n"
+msgstr "Fordere alle Änderungen an\n"
+
+msgid ""
+"Partial pull cannot be done because other repository doesn't support "
+"changegroupsubset."
+msgstr ""
+"Teilweise Holen kann nicht ausgeführt werden, da das andere Projektarchiv "
+"keine Teilmengen von Änderungsgruppen unterstützt."
+
+msgid "abort: push creates new remote heads!\n"
+msgstr "Abbruch: Ausliefern erzeugt neue entfernte Köpfe!\n"
+
+msgid "(did you forget to merge? use push -f to force)\n"
+msgstr "(Hast du vergessen zusammenzuführen? Nutze push -f um zu erzwingen)\n"
+
+msgid "note: unsynced remote changes!\n"
+msgstr "Hinweis: Nicht synchronisierte entfernte Änderungen!\n"
+
+#, python-format
+msgid "%d changesets found\n"
+msgstr "%d Änderungssätze gefunden\n"
+
+msgid "list of changesets:\n"
+msgstr "Liste der Änderungssätze:\n"
+
+#, python-format
+msgid "empty or missing revlog for %s"
+msgstr "Leeres oder fehlendes Revlog für %s"
+
+#, python-format
+msgid "add changeset %s\n"
+msgstr "Füge Änderungssatz hinzu %s\n"
+
+msgid "adding changesets\n"
+msgstr "Füge Änderungssätze hinzu\n"
+
+msgid "received changelog group is empty"
+msgstr "Erhaltene changelog group ist leer"
+
+msgid "adding manifests\n"
+msgstr "Füge Manifeste hinzu\n"
+
+msgid "adding file changes\n"
+msgstr "Füge Dateiänderungen hinzu\n"
+
+#, python-format
+msgid "adding %s revisions\n"
+msgstr "Füge %s Revisionen hinzu\n"
+
+msgid "received file revlog group is empty"
+msgstr "Erhaltene Datei revlog group ist leer"
+
+#, python-format
+msgid " (%+d heads)"
+msgstr " (%+d Köpfe)"
+
+#, python-format
+msgid "added %d changesets with %d changes to %d files%s\n"
+msgstr "Fügte %d Änderungssätze mit %d Änderungen zu %d Dateien%s hinzu\n"
+
+msgid "updating the branch cache\n"
+msgstr "Aktualisiere den Zweig-Cache\n"
+
+msgid "Unexpected response from remote server:"
+msgstr ""
+
+msgid "operation forbidden by server"
+msgstr ""
+
+msgid "locking the remote repository failed"
+msgstr ""
+
+msgid "the server sent an unknown error code"
+msgstr ""
+
+msgid "streaming all changes\n"
+msgstr ""
+
+#, python-format
+msgid "%d files to transfer, %s of data\n"
+msgstr ""
+
+#, python-format
+msgid "adding %s (%s)\n"
+msgstr ""
+
+#, python-format
+msgid "transferred %s in %.1f seconds (%s/sec)\n"
+msgstr ""
+
+msgid "no [smtp]host in hgrc - cannot send mail"
+msgstr ""
+
+#, python-format
+msgid "sending mail: smtp host %s, port %s\n"
+msgstr ""
+
+msgid "can't use TLS: Python SSL support not installed"
+msgstr ""
+
+msgid "(using tls)\n"
+msgstr ""
+
+#, python-format
+msgid "(authenticating to mail server as %s)\n"
+msgstr ""
+
+#, python-format
+msgid "sending mail: %s\n"
+msgstr ""
+
+msgid "smtp specified as email transport, but no smtp host configured"
+msgstr ""
+
+#, python-format
+msgid "%r specified as email transport, but not in PATH"
+msgstr ""
+
+#, python-format
+msgid "ignoring invalid sendcharset: %s\n"
+msgstr ""
+
+#, python-format
+msgid "invalid email address: %s"
+msgstr ""
+
+#, python-format
+msgid "invalid local address: %s"
+msgstr ""
+
+msgid "'\\n' and '\\r' disallowed in filenames"
+msgstr ""
+
+#, python-format
+msgid "failed to remove %s from manifest"
+msgstr ""
+
+#, python-format
+msgid "diff context lines count must be an integer, not %r"
+msgstr ""
+
+#, python-format
+msgid ""
+"untracked file in working directory differs from file in requested revision: "
+"'%s'"
+msgstr ""
+
+#, python-format
+msgid "case-folding collision between %s and %s"
+msgstr ""
+
+msgid "resolving manifests\n"
+msgstr ""
+
+#, python-format
+msgid " overwrite %s partial %s\n"
+msgstr ""
+
+#, python-format
+msgid " ancestor %s local %s remote %s\n"
+msgstr ""
+
+#, python-format
+msgid ""
+" conflicting flags for %s\n"
+"(n)one, e(x)ec or sym(l)ink?"
+msgstr ""
+
+#, python-format
+msgid ""
+" local changed %s which remote deleted\n"
+"use (c)hanged version or (d)elete?"
+msgstr ""
+
+msgid "[cd]"
+msgstr ""
+
+msgid "c"
+msgstr ""
+
+#, python-format
+msgid ""
+"remote changed %s which local deleted\n"
+"use (c)hanged version or leave (d)eleted?"
+msgstr ""
+
+#, python-format
+msgid "preserving %s for resolve of %s\n"
+msgstr ""
+
+#, python-format
+msgid "update failed to remove %s: %s!\n"
+msgstr ""
+
+#, python-format
+msgid "getting %s\n"
+msgstr ""
+
+#, python-format
+msgid "getting %s to %s\n"
+msgstr ""
+
+#, python-format
+msgid "warning: detected divergent renames of %s to:\n"
+msgstr ""
+
+#, python-format
+msgid "branch %s not found"
+msgstr ""
+
+msgid "can't merge with ancestor"
+msgstr ""
+
+msgid "nothing to merge (use 'hg update' or check 'hg heads')"
+msgstr ""
+
+msgid "crosses branches (use 'hg merge' or 'hg update -C' to discard changes)"
+msgstr ""
+
+msgid "crosses branches (use 'hg merge' or 'hg update -C')"
+msgstr ""
+
+msgid "crosses named branches (use 'hg update -C' to discard changes)"
+msgstr ""
+
+#, python-format
+msgid "cannot create %s: destination already exists"
+msgstr ""
+
+#, python-format
+msgid "cannot create %s: unable to create destination directory"
+msgstr ""
+
+#, python-format
+msgid "found patch at byte %d\n"
+msgstr ""
+
+msgid "patch generated by hg export\n"
+msgstr ""
+
+#, python-format
+msgid "unable to find '%s' for patching\n"
+msgstr ""
+
+#, python-format
+msgid "patching file %s\n"
+msgstr ""
+
+#, python-format
+msgid "%d out of %d hunks FAILED -- saving rejects to file %s\n"
+msgstr ""
+
+#, python-format
+msgid "bad hunk #%d %s (%d %d %d %d)"
+msgstr ""
+
+#, python-format
+msgid "file %s already exists\n"
+msgstr ""
+
+#, python-format
+msgid "Hunk #%d succeeded at %d %s(offset %d %s).\n"
+msgstr ""
+
+#, python-format
+msgid "Hunk #%d FAILED at %d\n"
+msgstr ""
+
+#, python-format
+msgid "bad hunk #%d"
+msgstr ""
+
+#, python-format
+msgid "bad hunk #%d old text line %d"
+msgstr ""
+
+msgid "could not extract binary patch"
+msgstr ""
+
+#, python-format
+msgid "binary patch is %d bytes, not %d"
+msgstr ""
+
+#, python-format
+msgid "unable to strip away %d dirs from %s"
+msgstr ""
+
+msgid "undefined source and destination files"
+msgstr ""
+
+#, python-format
+msgid "malformed patch %s %s"
+msgstr ""
+
+#, python-format
+msgid "unsupported parser state: %s"
+msgstr ""
+
+#, python-format
+msgid "patch command failed: %s"
+msgstr ""
+
+#, python-format
+msgid "no valid hunks found; trying with %r instead\n"
+msgstr ""
+
+#, python-format
+msgid "exited with status %d"
+msgstr ""
+
+#, python-format
+msgid "killed by signal %d"
+msgstr ""
+
+#, python-format
+msgid "stopped by signal %d"
+msgstr ""
+
+msgid "invalid exit code"
+msgstr ""
+
+#, python-format
+msgid "saving bundle to %s\n"
+msgstr ""
+
+msgid "adding branch\n"
+msgstr ""
+
+#, python-format
+msgid "cannot %s; remote repository does not support the %r capability"
+msgstr ""
+
+#, python-format
+msgid "unknown compression type %r"
+msgstr ""
+
+#, python-format
+msgid "index %s unknown flags %#04x for format v0"
+msgstr ""
+
+#, python-format
+msgid "index %s unknown flags %#04x for revlogng"
+msgstr ""
+
+#, python-format
+msgid "index %s unknown format %d"
+msgstr ""
+
+msgid "no node"
+msgstr ""
+
+msgid "ambiguous identifier"
+msgstr ""
+
+msgid "no match found"
+msgstr ""
+
+#, python-format
+msgid "incompatible revision flag %x"
+msgstr ""
+
+#, python-format
+msgid "%s not found in the transaction"
+msgstr ""
+
+msgid "unknown base"
+msgstr ""
+
+msgid "consistency error adding group"
+msgstr ""
+
+#, python-format
+msgid "%s looks like a binary file."
+msgstr ""
+
+msgid "can only specify two labels."
+msgstr ""
+
+msgid "warning: conflicts during merge.\n"
+msgstr ""
+
+#, python-format
+msgid "couldn't parse location %s"
+msgstr ""
+
+msgid "could not create remote repo"
+msgstr ""
+
+msgid "remote: "
+msgstr ""
+
+msgid "no suitable response from remote hg"
+msgstr ""
+
+#, python-format
+msgid "push refused: %s"
+msgstr ""
+
+msgid "unsynced changes"
+msgstr ""
+
+msgid "cannot lock static-http repository"
+msgstr ""
+
+msgid "cannot create new static-http repository"
+msgstr ""
+
+#, python-format
+msgid "invalid entry in fncache, line %s"
+msgstr ""
+
+msgid "scanning\n"
+msgstr ""
+
+#, python-format
+msgid "%d files, %d bytes to transfer\n"
+msgstr ""
+
+#, python-format
+msgid "sending %s (%d bytes)\n"
+msgstr ""
+
+msgid "unmatched quotes"
+msgstr ""
+
+#, python-format
+msgid "style not found: %s"
+msgstr ""
+
+#, python-format
+msgid "%s:%s: parse error"
+msgstr ""
+
+#, python-format
+msgid "template file %s: %s"
+msgstr ""
+
+#, python-format
+msgid "Error expanding '%s%%%s'"
+msgstr ""
+
+msgid "transaction abort!\n"
+msgstr ""
+
+#, python-format
+msgid "failed to truncate %s\n"
+msgstr ""
+
+msgid "rollback completed\n"
+msgstr ""
+
+#, 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"
+
+#, python-format
+msgid ""
+"Failed to parse %s\n"
+"%s"
+msgstr ""
+"Fehler beim Parsen von %s\n"
+"%s"
+
+#, python-format
+msgid "Ignored: %s\n"
+msgstr "Ignoriere: %s\n"
+
+#, python-format
+msgid "unable to open %s: %s"
+msgstr "Fehler beim Öffnen %s: %s"
+
+#, python-format
+msgid ""
+"failed to parse %s\n"
+"%s"
+msgstr ""
+"Fehler beim Parsen von %s\n"
+"%s"
+
+#, python-format
+msgid ""
+"Error in configuration section [%s] parameter '%s':\n"
+"%s"
+msgstr ""
+"Fehler in Konfiguration Abschnitt [%s] Eintrag '%s':\n"
+"%s"
+
+#, python-format
+msgid "Ignoring untrusted configuration option %s.%s = %s\n"
+msgstr "Ignoriere nicht vertrauenswürdigen Konfigurationseintrag %s.%s = %s\n"
+
+#, python-format
+msgid ""
+"Error in configuration section [%s]:\n"
+"%s"
+msgstr ""
+"Fehler bei Konfigurationsabschnitt [%s]:\n"
+"%s"
+
+msgid "enter a commit username:"
+msgstr "Gib einen Benutzernamen für die Version ein:"
+
+#, python-format
+msgid "No username found, using '%s' instead\n"
+msgstr "Kein Benutzername gefunden, nutze %s stattdessen\n"
+
+msgid "Please specify a username."
+msgstr "Gib einen Benutzernamen an."
+
+#, python-format
+msgid "username %s contains a newline\n"
+msgstr "Benutzername %s enthält einen Zeilenumbruch\n"
+
+msgid "unrecognized response\n"
+msgstr "Unbekannte Antwort\n"
+
+msgid "response expected"
+msgstr "Antwort erwartet"
+
+msgid "password: "
+msgstr "Passwort: "
+
+msgid "edit failed"
+msgstr "Bearbeiten fehlgeschlagen"
+
+msgid "http authorization required"
+msgstr "HTTP-Autorisation benötigt"
+
+msgid "http authorization required\n"
+msgstr "HTTP-Autorisation benötigt\n"
+
+#, python-format
+msgid "realm: %s\n"
+msgstr "Bereich: %s\n"
+
+#, python-format
+msgid "user: %s\n"
+msgstr "Benutzer: %s\n"
+
+msgid "user:"
+msgstr "Benutzer:"
+
+#, python-format
+msgid "proxying through http://%s:%s\n"
+msgstr "Verwende Proxy http://%s:%s\n"
+
+#, python-format
+msgid "http auth: user %s, password %s\n"
+msgstr "HTTP Auth: Benutzer %s, Passwort%s\n"
+
+#, python-format
+msgid "%s, please check your locale settings"
+msgstr "%s, bitte überprüfe deine locale Einstellungen"
+
+#, python-format
+msgid "command '%s' failed: %s"
+msgstr "Befehl '%s' fehlgeschlagen: %s"
+
+#, python-format
+msgid "path contains illegal component: %s"
+msgstr "Pfad enthält illegalen Teil: %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"
+
+msgid "Hardlinks not supported"
+msgstr "Hardlinks nicht unterstützt"
+
+#, python-format
+msgid "could not symlink to %r: %s"
+msgstr "Konnte symbolische Verknüpfung auf %r nicht erzeugen: %s"
+
+#, python-format
+msgid "invalid date: %r "
+msgstr "Ungültiges Datum: %r "
+
+#, python-format
+msgid "date exceeds 32 bits: %d"
+msgstr "Datum überschreitet 32 Bit: %d"
+
+#, python-format
+msgid "impossible time zone offset: %d"
+msgstr "Unmögliche Zeitzonen Verschiebung: %d"
+
+#, python-format
+msgid "invalid day spec: %s"
+msgstr "Ungültige Angabe des Tages: %s"
+
+#, python-format
+msgid "%.0f GB"
+msgstr ""
+
+#, python-format
+msgid "%.1f GB"
+msgstr ""
+
+#, python-format
+msgid "%.2f GB"
+msgstr ""
+
+#, python-format
+msgid "%.0f MB"
+msgstr ""
+
+#, python-format
+msgid "%.1f MB"
+msgstr ""
+
+#, python-format
+msgid "%.2f MB"
+msgstr ""
+
+#, python-format
+msgid "%.0f KB"
+msgstr ""
+
+#, python-format
+msgid "%.1f KB"
+msgstr ""
+
+#, python-format
+msgid "%.2f KB"
+msgstr ""
+
+#, python-format
+msgid "%.0f bytes"
+msgstr "%.0f Byte"
+
+msgid "cannot verify bundle or remote repos"
+msgstr ""
+
+msgid "interrupted"
+msgstr ""
+
+#, python-format
+msgid "empty or missing %s"
+msgstr ""
+
+#, python-format
+msgid "data length off by %d bytes"
+msgstr ""
+
+#, python-format
+msgid "index contains %d extra bytes"
+msgstr ""
+
+#, python-format
+msgid "warning: `%s' uses revlog format 1"
+msgstr ""
+
+#, python-format
+msgid "warning: `%s' uses revlog format 0"
+msgstr ""
+
+#, python-format
+msgid "rev %d points to nonexistent changeset %d"
+msgstr ""
+
+#, python-format
+msgid "rev %d points to unexpected changeset %d"
+msgstr ""
+
+#, python-format
+msgid " (expected %s)"
+msgstr ""
+
+#, python-format
+msgid "unknown parent 1 %s of %s"
+msgstr ""
+
+#, python-format
+msgid "unknown parent 2 %s of %s"
+msgstr ""
+
+#, python-format
+msgid "checking parents of %s"
+msgstr ""
+
+#, python-format
+msgid "duplicate revision %d (%d)"
+msgstr ""
+
+#, python-format
+msgid "repository uses revlog format %d\n"
+msgstr ""
+
+msgid "checking changesets\n"
+msgstr ""
+
+#, python-format
+msgid "unpacking changeset %s"
+msgstr ""
+
+msgid "checking manifests\n"
+msgstr ""
+
+msgid "file without name in manifest"
+msgstr ""
+
+#, python-format
+msgid "reading manifest delta %s"
+msgstr ""
+
+msgid "crosschecking files in changesets and manifests\n"
+msgstr ""
+
+#, python-format
+msgid "changeset refers to unknown manifest %s"
+msgstr ""
+
+msgid "in changeset but not in manifest"
+msgstr ""
+
+msgid "in manifest but not in changeset"
+msgstr ""
+
+msgid "checking files\n"
+msgstr ""
+
+#, python-format
+msgid "cannot decode filename '%s'"
+msgstr ""
+
+#, python-format
+msgid "broken revlog! (%s)"
+msgstr ""
+
+msgid "missing revlog!"
+msgstr ""
+
+#, python-format
+msgid "%s not in manifests"
+msgstr ""
+
+#, python-format
+msgid "unpacked size is %s, %s expected"
+msgstr ""
+
+#, python-format
+msgid "unpacking %s"
+msgstr "entpacke %s"
+
+#, python-format
+msgid "empty or missing copy source revlog %s:%s"
+msgstr ""
+
+#, python-format
+msgid "warning: %s@%s: copy source revision is nullid %s:%s"
+msgstr ""
+
+#, python-format
+msgid "checking rename of %s"
+msgstr ""
+
+#, python-format
+msgid "%s in manifests not found"
+msgstr ""
+
+#, python-format
+msgid "warning: orphan revlog '%s'"
+msgstr ""
+
+#, python-format
+msgid "%d files, %d changesets, %d total revisions\n"
+msgstr ""
+
+#, python-format
+msgid "%d warnings encountered!\n"
+msgstr ""
+
+#, python-format
+msgid "%d integrity errors encountered!\n"
+msgstr ""
+
+#, python-format
+msgid "(first damaged changeset appears to be %d)\n"
+msgstr ""
+
+msgid "user name not available - set USERNAME environment variable"
+msgstr ""
--- a/i18n/it.po	Wed Apr 08 23:17:33 2009 +0200
+++ b/i18n/it.po	Wed Apr 08 23:24:22 2009 +0200
@@ -5,14 +5,14 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-01 21:10+0100\n"
+"POT-Creation-Date: 2009-03-27 18:18+0100\n"
 "PO-Revision-Date: 2009-03-03 20:05+0100\n"
 "Last-Translator: Stefano Tortarolo <stefano.tortarolo@gmail.com>\n"
 "Language-Team: Italian <Italian>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #, python-format
 msgid " (default: %s)"
@@ -264,6 +264,8 @@
 "    the mercurial.strip method. This usually happens during\n"
 "    qpush and qpop"
 msgstr ""
+"Elimina i segnalibri se revisioni sono rimosse usando il metodo\n"
+"    mercurial.strip. Questo di norma succede durante qpush e qpop"
 
 msgid ""
 "Add a revision to the repository and\n"
@@ -282,6 +284,11 @@
 "    file.\n"
 "    "
 msgstr ""
+"Imposta il segnalibro corrente\n"
+"\n"
+"    Se l'utente fa l'update ad un segnalibro viene aggiornato il file\n"
+"    .hg/bookmarks.current\n"
+"    "
 
 msgid "force"
 msgstr "forza"
@@ -295,8 +302,8 @@
 msgid "rename a given bookmark"
 msgstr "rinomina un dato segnalibro"
 
-msgid "hg bookmarks [-f] [-d] [-m NAME] [-r NAME] [NAME]"
-msgstr "hg bookmarks [-f] [-d] [-m NOME] [-r NOME] [NOME]"
+msgid "hg bookmarks [-f] [-d] [-m NAME] [-r REV] [NAME]"
+msgstr "hg bookmarks [-f] [-d] [-m NOME] [-r REV] [NOME]"
 
 msgid ""
 "Bugzilla integration\n"
@@ -421,22 +428,22 @@
 msgstr ""
 
 msgid "support for bugzilla version 2.16."
-msgstr ""
+msgstr "supporto per la versione di bugzilla 2.16."
 
 #, python-format
 msgid "connecting to %s:%s as %s, password %s\n"
-msgstr ""
+msgstr "sto connettendomi a %s:%s come %s, password %s\n"
 
 msgid "run a query."
-msgstr ""
+msgstr "esegue una query."
 
 #, python-format
 msgid "query: %s %s\n"
-msgstr ""
+msgstr "query: %s %s\n"
 
 #, python-format
 msgid "failed query: %s %s\n"
-msgstr ""
+msgstr "query fallita: %s %s\n"
 
 msgid "get identity of longdesc field"
 msgstr ""
@@ -490,6 +497,9 @@
 "        bugzilla username and userid if so. If not, return default\n"
 "        bugzilla username and userid."
 msgstr ""
+"controlla se il committente è un utente registrato bugzilla. In tal\n"
+"        caso restituisce userid e username bugzilla. Altrimenti\n"
+"        restituisce userid e username bugzilla di default."
 
 #, python-format
 msgid "cannot find bugzilla user id for %s"
@@ -508,7 +518,7 @@
 msgstr "supporto per la serie di bugzilla 2.18."
 
 msgid "support for bugzilla 3.0 series."
-msgstr ""
+msgstr "sopporto per la serie di bugzilla 3.0."
 
 msgid ""
 "return object that knows how to talk to bugzilla version in\n"
@@ -517,7 +527,7 @@
 
 #, python-format
 msgid "bugzilla version %s not supported"
-msgstr ""
+msgstr "versione di bugzilla %s non supportata"
 
 msgid ""
 "find valid bug ids that are referred to in changeset\n"
@@ -526,7 +536,7 @@
 msgstr ""
 
 msgid "update bugzilla bug with reference to changeset."
-msgstr ""
+msgstr "aggiorna il bug bugzilla con riferimento al changeset."
 
 msgid ""
 "strip leading prefix of repo root and turn into\n"
@@ -538,6 +548,9 @@
 "details:\n"
 "\t{desc|tabindent}"
 msgstr ""
+"changeset {node|short} nel repository {root} si riferisce al bug {bug}.\n"
+"dettagli:\n"
+"\t{desc|tabindent}"
 
 msgid ""
 "add comment to bugzilla for each changeset that refers to a\n"
@@ -740,6 +753,7 @@
 "    - Monotone [mtn]\n"
 "    - GNU Arch [gnuarch]\n"
 "    - Bazaar [bzr]\n"
+"    - Perforce [p4]\n"
 "\n"
 "    Accepted destination formats [identifiers]:\n"
 "    - Mercurial [hg]\n"
@@ -806,8 +820,9 @@
 "        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=True          (boolean)\n"
-"        allow target to preserve source revision ID\n"
+"    --config convert.hg.saverev=False          (boolean)\n"
+"        store original revision ID in changeset (forces target IDs to "
+"change)\n"
 "    --config convert.hg.startrev=0            (hg revision identifier)\n"
 "        convert start revision and its descendants\n"
 "\n"
@@ -884,6 +899,23 @@
 "    --config convert.svn.startrev=0           (svn revision number)\n"
 "        specify start Subversion revision.\n"
 "\n"
+"    Perforce Source\n"
+"    ---------------\n"
+"\n"
+"    The Perforce (P4) importer can be given a p4 depot path or a client\n"
+"    specification as source. It will convert all files in the source to\n"
+"    a flat Mercurial repository, ignoring labels, branches and "
+"integrations.\n"
+"    Note that when a depot path is given you then usually should specify a\n"
+"    target directory, because otherwise the target may be named ...-hg.\n"
+"\n"
+"    It is possible to limit the amount of source history to be converted\n"
+"    by specifying an initial Perforce revision.\n"
+"\n"
+"    --config convert.p4.startrev=0           (perforce changelist number)\n"
+"        specify initial Perforce revision.\n"
+"\n"
+"\n"
 "    Mercurial Destination\n"
 "    ---------------------\n"
 "\n"
@@ -948,7 +980,7 @@
 msgstr "crea una nuova cache dei log cvs"
 
 msgid "set commit time fuzz in seconds"
-msgstr ""
+msgstr "imposta il lasso temporale del commit in secondi"
 
 msgid "specify cvsroot"
 msgstr "specifica la cvsroot"
@@ -1030,7 +1062,7 @@
 
 #, python-format
 msgid "spliced in %s as parents of %s\n"
-msgstr ""
+msgstr "inserito %s come genitore di %s\n"
 
 msgid "scanning source...\n"
 msgstr "sto effettuando la scansione della sorgente...\n"
@@ -1114,6 +1146,10 @@
 msgstr "la revisione deve essere seguita da una riga con la data"
 
 #, python-format
+msgid "found synthetic rev in %s: %r\n"
+msgstr "trovata revisione sintetica in %s: %r\n"
+
+#, python-format
 msgid "writing cvs log cache %s\n"
 msgstr "sto scrivendo la cache dei log cvs %s\n"
 
@@ -1124,6 +1160,9 @@
 msgid "creating changesets\n"
 msgstr "sto creando i changeset\n"
 
+msgid "synthetic changeset cannot have multiple parents"
+msgstr "changeset sintetici non possono avere genitori multipli"
+
 #, python-format
 msgid "%d changeset entries\n"
 msgstr "%d voci di changeset\n"
@@ -1167,6 +1206,8 @@
 msgid ""
 "tree analysis stopped because it points to an unregistered archive %s...\n"
 msgstr ""
+"analisi dell'albero interrotta in quanto punta ad un archivio non\n"
+"      registrato %s...\n"
 
 #, python-format
 msgid "applying revision %s...\n"
@@ -1231,6 +1272,12 @@
 msgid "copying file in renamed dir from '%s' to '%s'"
 msgstr ""
 
+msgid "reading p4 views\n"
+msgstr "sto leggendo le viste p4\n"
+
+msgid "collecting p4 changelists\n"
+msgstr "sto raccogliendo le changelist p4\n"
+
 msgid "Subversion python bindings could not be loaded"
 msgstr "Non è stato possibile caricare i binding python per Subversion"
 
@@ -1448,15 +1495,15 @@
 msgstr ""
 
 msgid "cannot specify --rev and --change at the same time"
-msgstr ""
+msgstr "impossibile specificare sia --rev sia --change"
 
 #, python-format
 msgid "running %r in %s\n"
-msgstr ""
+msgstr "sto eseguendo %r in %s\n"
 
 #, python-format
 msgid "file changed while diffing. Overwriting: %s (src: %s)\n"
-msgstr ""
+msgstr "file modificato durante il diff. Sovrascrivo: %s (sorgente: %s)\n"
 
 msgid "cleaning up temp directory\n"
 msgstr "sto ripulendo la directory temporanea\n"
@@ -1544,6 +1591,8 @@
 msgid ""
 "working dir not at branch tip (use \"hg update\" to check out branch tip)"
 msgstr ""
+"directory di lavoro non al tip della branch (usa \"hg update\" per\n"
+"      fare il check out della tip della branch)"
 
 msgid "outstanding uncommitted merge"
 msgstr "c'è un merge in sospeso di cui non si è effettuato il commit"
@@ -1557,6 +1606,8 @@
 msgid ""
 "multiple heads in this branch (use \"hg heads .\" and \"hg merge\" to merge)"
 msgstr ""
+"head multiple in questa branch (usa \"hg heads .\" e \"hg merge\"\n"
+"      per fare il merge"
 
 #, python-format
 msgid "pulling from %s\n"
@@ -1808,7 +1859,7 @@
 
 #, python-format
 msgid "comparing with %s\n"
-msgstr ""
+msgstr "sto confrontando con %s\n"
 
 msgid "no changes found\n"
 msgstr "nessuna modifica trovata\n"
@@ -3422,7 +3473,7 @@
 msgstr "disapplica tutte le patch"
 
 msgid "queue name to pop"
-msgstr ""
+msgstr "nome della coda da disapplicare"
 
 msgid "forget any local changes"
 msgstr "dimentica ogni modifica locale"
@@ -3443,7 +3494,7 @@
 msgstr "effettua il merge da un'altra coda"
 
 msgid "merge queue name"
-msgstr ""
+msgstr "nome della coda del merge"
 
 msgid "hg qpush [-f] [-l] [-a] [-m] [-n NAME] [PATCH | INDEX]"
 msgstr "hg qpush [-f] [-l] [-a] [-m] [-n NOME] [PATCH | INDICE]"
@@ -3470,7 +3521,7 @@
 msgstr "hg qrename PATCH1 [PATCH2]"
 
 msgid "delete save entry"
-msgstr ""
+msgstr "elimina la voce salvata"
 
 msgid "update queue working dir"
 msgstr "aggiorna la directory di lavoro della coda"
@@ -3500,7 +3551,7 @@
 msgstr "elenca tutte le guardie nel file series"
 
 msgid "pop to before first guarded applied patch"
-msgstr ""
+msgstr "disapplica fino alla prima patch con guardia applicata"
 
 msgid "pop, then reapply patches"
 msgstr "disapplica e poi riapplica le patch"
@@ -3603,16 +3654,16 @@
 msgstr ""
 
 msgid "email notification class."
-msgstr ""
+msgstr "classe per la notifica via email."
 
 msgid "strip leading slashes from local path, turn into web-safe path."
 msgstr ""
 
 msgid "try to clean up email addresses."
-msgstr ""
+msgstr "prova a pulire gli indirizzi email."
 
 msgid "return list of email addresses of subscribers to this repo."
-msgstr ""
+msgstr "restituisce gli indirizzi email dei sottoscritti a questo repository"
 
 msgid "format one changeset."
 msgstr "formatta un changeset."
@@ -3630,7 +3681,7 @@
 
 #, python-format
 msgid "notify: sending %d subscribers %d changes\n"
-msgstr ""
+msgstr "notify: sto inviando a %d sottoscritti %d modifiche\n"
 
 #, python-format
 msgid ""
@@ -3638,6 +3689,9 @@
 "diffs (truncated from %d to %d lines):\n"
 "\n"
 msgstr ""
+"\n"
+"diff (troncati da %d linee a %d):\n"
+"\n"
 
 #, python-format
 msgid ""
@@ -3645,6 +3699,9 @@
 "diffs (%d lines):\n"
 "\n"
 msgstr ""
+"\n"
+"diff (%d linee):\n"
+"\n"
 
 msgid ""
 "send email notifications to interested subscribers.\n"
@@ -3792,7 +3849,7 @@
 msgstr "Si prega di inserire un valore valido.\n"
 
 msgid "does the diffstat above look okay? "
-msgstr ""
+msgstr "il diffstat di sopra sembra corretto? "
 
 msgid "diffstat rejected"
 msgstr "diffstat rifiutato"
@@ -3878,13 +3935,13 @@
 msgstr "Sommario finale:\n"
 
 msgid "Displaying "
-msgstr "Sto mostrando"
+msgstr "Sto mostrando "
 
 msgid "Writing "
-msgstr "Sto scrivendo"
+msgstr "Sto scrivendo "
 
 msgid "Sending "
-msgstr "Sto inviando"
+msgstr "Sto inviando "
 
 msgid "send patches as attachments"
 msgstr "invia patch come allegati"
@@ -3931,6 +3988,9 @@
 msgid "send changes not in target as a binary bundle"
 msgstr "invia le modifiche non in target come bundle binario"
 
+msgid "file name of the bundle attachment"
+msgstr "nome del file dell'allegato bundle"
+
 msgid "a revision to send"
 msgstr "una revisione da inviare"
 
@@ -4332,7 +4392,7 @@
 msgstr "?"
 
 msgid "y - record this change"
-msgstr ""
+msgstr "y - registra questa modifica"
 
 msgid "s"
 msgstr "s"
@@ -4361,7 +4421,7 @@
 
 #, python-format
 msgid "record this change to %r?"
-msgstr ""
+msgstr "registrare questa modifica a %r?"
 
 msgid ""
 "interactively select changes to commit\n"
@@ -4845,8 +4905,12 @@
 msgstr "%s: impossibile copiare - %s\n"
 
 #, python-format
-msgid "%s %s to %s\n"
-msgstr "%s %s in %s\n"
+msgid "moving %s to %s\n"
+msgstr "sto spostando %s in %s\n"
+
+#, python-format
+msgid "copying %s to %s\n"
+msgstr "sto copiando %s in %s\n"
 
 #, python-format
 msgid "%s has not been committed yet, so no copy data will be stored for %s.\n"
@@ -4886,7 +4950,7 @@
 
 #, python-format
 msgid "parent:      %d:%s\n"
-msgstr "genitore:      %d:%s\n"
+msgstr "genitore:    %d:%s\n"
 
 #, python-format
 msgid "manifest:    %d:%s\n"
@@ -5228,7 +5292,8 @@
 msgstr "resetto la directory di lavoro alla branch %s\n"
 
 msgid "a branch of the same name already exists (use --force to override)"
-msgstr "una branch con lo stesso nome esiste già (usare --force per sovrascrivere)"
+msgstr ""
+"una branch con lo stesso nome esiste già (usare --force per sovrascrivere)"
 
 #, python-format
 msgid "marked working directory as branch %s\n"
@@ -6096,6 +6161,11 @@
 "        parses the manifest if linkrev != changerev.\n"
 "        Returns rename info for fn at changerev rev."
 msgstr ""
+"cerca tutte le rinomine di un file (fino a endrev) la prima volta che\n"
+"        il file viene fornito. Indicizza su changerev e parsifica solo\n"
+"        il manifesto se linkrev != changerev.\n"
+"        Restituisce le informazioni sulle rinomine per fn alla\n"
+"        revisione changerev."
 
 msgid ""
 "output the current or given revision of the project manifest\n"
@@ -6130,23 +6200,25 @@
 
 #, python-format
 msgid "branch '%s' has %d heads - please merge with an explicit rev"
-msgstr ""
+msgstr "la branch '%s' ha %d head - fare il merge con una revisione esplicita"
 
 #, python-format
 msgid "branch '%s' has one head - please merge with an explicit rev"
-msgstr ""
+msgstr "la branch '%s' ha una head - fare il merge con una revisione esplicita"
 
 msgid "there is nothing to merge"
-msgstr ""
+msgstr "non c'è nulla di cui fare il merge"
 
 #, python-format
 msgid "%s - use \"hg update\" instead"
-msgstr ""
+msgstr "%s - invece usare \"hg update\""
 
 msgid ""
 "working dir not at a head rev - use \"hg update\" or merge with an explicit "
 "rev"
 msgstr ""
+"la directory di lavoro non è una revisione head - usare \"hg update\"\n"
+"o fare il merge con una revisione esplicita"
 
 msgid ""
 "show changesets not found in destination\n"
@@ -6216,10 +6288,10 @@
 msgstr ""
 
 msgid "(run 'hg heads' to see heads, 'hg merge' to merge)\n"
-msgstr ""
+msgstr "(esegui 'hg heads' per vedere le head, 'hg merge' per fare un merge)\n"
 
 msgid "(run 'hg update' to get a working copy)\n"
-msgstr ""
+msgstr "(esegui 'hg update' per ottenere una copia funzionante)\n"
 
 msgid ""
 "pull changes from the specified source\n"
@@ -6233,12 +6305,15 @@
 "    If SOURCE is omitted, the 'default' path will be used.\n"
 "    See 'hg help urls' for more information.\n"
 "    "
-msgstr "effettua il pull delle modifiche dalla sorgente specificata\n"
+msgstr ""
+"effettua il pull delle modifiche dalla sorgente specificata\n"
 "\n"
 "    Effettua il pull di modifiche da un repository remoto in uno locale.\n"
 "\n"
-"    Questo trova tutte le modifiche dal repository al percorso o URL specificato\n"
-"    e le aggiunge al repository locale. Di default non aggiorna la copia del\n"
+"    Questo trova tutte le modifiche dal repository al percorso o URL "
+"specificato\n"
+"    e le aggiunge al repository locale. Di default non aggiorna la copia "
+"del\n"
 "    progetto nella directory di lavoro.\n"
 "\n"
 "    Se SOURCE viene omesso, verrà usato il percorso 'default'.\n"
@@ -6287,7 +6362,8 @@
 "    numerdo di head remote. Questo generalmente indica che il client ha\n"
 "    dimenticato di fare pull e merge prima del push.\n"
 "\n"
-"    Se si usa -r, si farà il push del changeset dato e tutti i suoi antenati\n"
+"    Se si usa -r, si farà il push del changeset dato e tutti i suoi "
+"antenati\n"
 "    verso il repository remoto.\n"
 "\n"
 "    Vedere il testo di aiuto per gli url per importanti dettagli sugli\n"
@@ -6860,15 +6936,15 @@
 
 msgid ""
 "\n"
-"Copyright (C) 2005-2008 Matt Mackall <mpm@selenic.com> and others\n"
+"Copyright (C) 2005-2009 Matt Mackall <mpm@selenic.com> 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-2008 Matt Mackall <mpm@selenic.com> e altri\n"
-"Questo è software libero; vedere i sorgenti per le condizioni di copia. Non "
-"c'è alcuna garanzia;\n"
-"neppure di COMMERCIABILITÀ o IDONEITÀ AD UNO SCOPO PARTICOLARE.\n"
+"Copyright (C) 2005-2009 Matt Mackall <mpm@selenic.com> e altri\n"
+"Questo è software libero; vedere i sorgenti per le condizioni di copia.\n"
+"Non c'è alcuna garanzia; neppure di COMMERCIABILITÀ o IDONEITÀ AD UNO\n"
+"SCOPO PARTICOLARE.\n"
 
 msgid "repository root directory or symbolic path name"
 msgstr "directory radice del repository o nome del percorso simbolico"
@@ -7127,6 +7203,9 @@
 msgid "[INDEX] REV1 REV2"
 msgstr "[INDICE] REV1 REV2"
 
+msgid "[COMMAND]"
+msgstr "[COMANDO]"
+
 msgid "show the command options"
 msgstr "mostra le opzioni dei comandi"
 
@@ -7908,7 +7987,7 @@
 "HG::\n"
 "    Path to the 'hg' executable, automatically passed when running hooks,\n"
 "    extensions or external tools. If unset or empty, this is the hg\n"
-"    exutable's name if it's frozen, or an executable named 'hg'\n"
+"    executable's name if it's frozen, or an executable named 'hg'\n"
 "    (with %PATHEXT% [defaulting to COM/EXE/BAT/CMD] extensions on\n"
 "    Windows) is searched.\n"
 "\n"
@@ -7992,7 +8071,7 @@
 "    revisions.\n"
 "\n"
 "    A plain integer is treated as a revision number. Negative\n"
-"    integers are treated as toplogical offsets from the tip, with\n"
+"    integers are treated as topological offsets from the tip, with\n"
 "    -1 denoting the tip. As such, negative numbers are only useful\n"
 "    if you've memorized your local tree numbers and want to save\n"
 "    typing a single digit. This editor suggests copy and paste.\n"
@@ -8115,6 +8194,8 @@
 "          was committed. Will be empty if the branch name was default.\n"
 "    - date: Date information. The date when the changeset was committed.\n"
 "    - desc: String. The text of the changeset description.\n"
+"    - diffstat: String. Statistics of changes with the following format:\n"
+"          \"modified files: +added/-removed lines\"\n"
 "    - files: List of strings. All files modified, added, or removed by\n"
 "          this changeset.\n"
 "    - file_adds: List of strings. Files added by this changeset.\n"
@@ -8281,6 +8362,13 @@
 msgid "use 'hg resolve' to retry unresolved file merges\n"
 msgstr "usa 'hg resolve' per riprovare i merge sui file non risolti\n"
 
+msgid ""
+"use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to "
+"abandon\n"
+msgstr ""
+"usa 'hg resolve' per riprovare i merge sui file non risolti o\n"
+"'hg up --clean' per abbandonare\n"
+
 msgid "(branch merge, don't forget to commit)\n"
 msgstr "(merge su branch, non dimenticare di effettuare il commit)\n"
 
@@ -8832,10 +8920,6 @@
 msgstr "sto ottenendo %s\n"
 
 #, python-format
-msgid "moving %s to %s\n"
-msgstr "sto spostando %s in %s\n"
-
-#, python-format
 msgid "getting %s to %s\n"
 msgstr "sto ottenendo %s in %s\n"
 
@@ -8945,6 +9029,21 @@
 msgstr ""
 
 #, python-format
+msgid "exited with status %d"
+msgstr "uscito con status %d"
+
+#, python-format
+msgid "killed by signal %d"
+msgstr "ucciso dal segnale %d"
+
+#, python-format
+msgid "stopped by signal %d"
+msgstr "terminato dal segnale %d"
+
+msgid "invalid exit code"
+msgstr "codice d'uscita non valido"
+
+#, python-format
 msgid "saving bundle to %s\n"
 msgstr "sto salvando il bundle in %s\n"
 
@@ -9196,25 +9295,6 @@
 msgid "Hardlinks not supported"
 msgstr "Hardlink non supportati"
 
-msgid "user name not available - set USERNAME environment variable"
-msgstr ""
-"nome utente non disponibile - impostare la variabile d'ambiente USERNAME"
-
-#, python-format
-msgid "exited with status %d"
-msgstr "uscito con status %d"
-
-#, python-format
-msgid "killed by signal %d"
-msgstr "ucciso dal segnale %d"
-
-#, python-format
-msgid "stopped by signal %d"
-msgstr "terminato dal segnale %d"
-
-msgid "invalid exit code"
-msgstr "codice d'uscita non valido"
-
 #, python-format
 msgid "could not symlink to %r: %s"
 msgstr "impossibile creare un link simbolico a %r: %s"
@@ -9365,7 +9445,11 @@
 
 #, python-format
 msgid "cannot decode filename '%s'"
-msgstr ""
+msgstr "impossibile decodificare il nome del file '%s'"
+
+#, python-format
+msgid "broken revlog! (%s)"
+msgstr "revlog danneggiato! (%s)"
 
 msgid "missing revlog!"
 msgstr "revlog mancante!"
@@ -9417,3 +9501,10 @@
 #, python-format
 msgid "(first damaged changeset appears to be %d)\n"
 msgstr "(il primo changeset danneggiato sembra essere %d)\n"
+
+msgid "user name not available - set USERNAME environment variable"
+msgstr ""
+"nome utente non disponibile - impostare la variabile d'ambiente USERNAME"
+
+#~ msgid "%s %s to %s\n"
+#~ msgstr "%s %s in %s\n"
--- a/i18n/ja.po	Wed Apr 08 23:17:33 2009 +0200
+++ b/i18n/ja.po	Wed Apr 08 23:24:22 2009 +0200
@@ -3,7 +3,26 @@
 #
 # Copyright (C) 2009 the Mercurial team
 #
-# Translation dictionary:
+# ========================================
+# 【翻訳作業手順】
+#
+#     ※ 必要に応じて crew リポジトリから最新成果を取得 & hg update
+#     # メッセージ DB の更新
+#     $ make update-pot
+#     # '#: filename:line' 情報を残す場合は --no-location を省略
+#     $ msgmerge --update --no-location i18n/ja.po i18n/hg.pot
+#
+#     ※ 翻訳作業実施(i18n/ja.po の変更)
+#
+#     # 形式確認(置換指定の間違い等)
+#     $ msgfmt --check i18n/ja.po
+#     # '#: filename:line' 情報が残っている場合は取り除く
+#     $ msgcat --no-location -o i18n/ja.po i18n/ja.po
+#
+#     ※ 翻訳成果の公開
+#
+# ========================================
+# 【翻訳用語集】
 #
 # Distributed SCM       分散構成管理ツール
 #
@@ -53,13 +72,14 @@
 # summary               要約(情報)
 # tag                   タグ
 # working directory     作業領域
+# ========================================
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-21 01:58+0900\n"
-"PO-Revision-Date: 2009-02-21 02:00+0900\n"
+"POT-Creation-Date: 2009-03-07 21:22+0900\n"
+"PO-Revision-Date: 2009-03-07 23:30+0900\n"
 "Last-Translator: FUJIWARA Katsunori <foozy@lares.dti.ne.jp>\n"
 "Language-Team: Japanese\n"
 "MIME-Version: 1.0\n"
@@ -281,7 +301,7 @@
 msgid "rename a given bookmark"
 msgstr ""
 
-msgid "hg bookmarks [-d] [-m NAME] [-r NAME] [NAME]"
+msgid "hg bookmarks [-f] [-d] [-m NAME] [-r REV] [NAME]"
 msgstr ""
 
 msgid ""
@@ -726,6 +746,7 @@
 "    - Monotone [mtn]\n"
 "    - GNU Arch [gnuarch]\n"
 "    - Bazaar [bzr]\n"
+"    - Perforce [p4]\n"
 "\n"
 "    Accepted destination formats [identifiers]:\n"
 "    - Mercurial [hg]\n"
@@ -792,8 +813,9 @@
 "        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=True          (boolean)\n"
-"        allow target to preserve source revision ID\n"
+"    --config convert.hg.saverev=False          (boolean)\n"
+"        store original revision ID in changeset (forces target IDs to "
+"change)\n"
 "    --config convert.hg.startrev=0            (hg revision identifier)\n"
 "        convert start revision and its descendants\n"
 "\n"
@@ -870,6 +892,23 @@
 "    --config convert.svn.startrev=0           (svn revision number)\n"
 "        specify start Subversion revision.\n"
 "\n"
+"    Perforce Source\n"
+"    ---------------\n"
+"\n"
+"    The Perforce (P4) importer can be given a p4 depot path or a client\n"
+"    specification as source. It will convert all files in the source to\n"
+"    a flat Mercurial repository, ignoring labels, branches and "
+"integrations.\n"
+"    Note that when a depot path is given you then usually should specify a\n"
+"    target directory, because otherwise the target may be named ...-hg.\n"
+"\n"
+"    It is possible to limit the amount of source history to be converted\n"
+"    by specifying an initial Perforce revision.\n"
+"\n"
+"    --config convert.p4.startrev=0           (perforce changelist number)\n"
+"        specify initial Perforce revision.\n"
+"\n"
+"\n"
 "    Mercurial Destination\n"
 "    ---------------------\n"
 "\n"
@@ -1217,6 +1256,12 @@
 msgid "copying file in renamed dir from '%s' to '%s'"
 msgstr ""
 
+msgid "reading p4 views\n"
+msgstr ""
+
+msgid "collecting p4 changelists\n"
+msgstr ""
+
 msgid "Subversion python bindings could not be loaded"
 msgstr ""
 
@@ -3655,7 +3700,7 @@
 "each patchbomb message in a pager or sending the messages directly,\n"
 "it will create a UNIX mailbox file with the patch emails.  This\n"
 "mailbox file can be previewed with any mail user agent which supports\n"
-"UNIX mbox files, i.e. with mutt:\n"
+"UNIX mbox files, e.g. with mutt:\n"
 "\n"
 "  % mutt -R -f mbox\n"
 "\n"
@@ -3773,7 +3818,7 @@
 msgid "send patches as inline attachments"
 msgstr ""
 
-msgid "email addresses of blind copy recipients"
+msgid "email addresses of blind carbon copy recipients"
 msgstr ""
 
 msgid "email addresses of copy recipients"
@@ -4799,7 +4844,7 @@
 "    The files will be added to the repository at the next commit. To\n"
 "    undo an add before that, see hg revert.\n"
 "\n"
-"    If no names are given, add all files in the repository.\n"
+"    If no names are given, add all files to the repository.\n"
 "    "
 msgstr ""
 "指定されたファイルを次回コミットから構成管理に追加登録\n"
@@ -4957,7 +5002,7 @@
 "    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\n"
-"    hand. The result of this merge is not committed, as for a normal\n"
+"    hand. The result of this merge is not committed, as with a normal\n"
 "    merge.\n"
 "\n"
 "    See 'hg help dates' for a list of formats valid for -d/--date.\n"
@@ -5042,8 +5087,7 @@
 "exit\n"
 "    status is 0 the revision is marked as good, 125 - skipped, 127 (command "
 "not\n"
-"    found) - bisection will be aborted and any other status bigger than 0 "
-"will\n"
+"    found) - bisection will be aborted; any other status bigger than 0 will\n"
 "    mark revision as bad.\n"
 "    "
 msgstr ""
@@ -5171,7 +5215,7 @@
 "create a changegroup file\n"
 "\n"
 "    Generate a compressed changegroup file collecting changesets not\n"
-"    found in the other repository.\n"
+"    known to be in another repository.\n"
 "\n"
 "    If no destination repository is specified the destination is\n"
 "    assumed to have all the nodes specified by one or more --base\n"
@@ -5344,7 +5388,7 @@
 "    file names or -I/-X filters.\n"
 "\n"
 "    If no commit message is specified, the configured editor is started to\n"
-"    enter a message.\n"
+"    prompt you for a message.\n"
 "\n"
 "    See 'hg help dates' for a list of formats valid for -d/--date.\n"
 "    "
@@ -5359,9 +5403,8 @@
 "    \"hg merge\" 結果のコミットの場合、ファイル名ないし -I/-X オプションの\n"
 "    いずれも指定しないでください。\n"
 "\n"
-"    コミットメッセージが指定されない場合、メッセージ入力のためのプログラム"
-"が\n"
-"    設定に従って起動されます。\n"
+"    コミットメッセージが指定されない場合、設定に従ってメッセージ入力用の\n"
+"    プログラムが起動されます。\n"
 "\n"
 "    -d/--date への指定に関しては、'hg help dates' を参照してください。\n"
 "    "
@@ -5378,13 +5421,13 @@
 "\n"
 "    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"
-"    there can only be one source.\n"
+"    the source must be a single file.\n"
 "\n"
 "    By default, this command copies the contents of files as they\n"
 "    stand in the working directory. If invoked with --after, the\n"
 "    operation is recorded, but no copying is performed.\n"
 "\n"
-"    This command takes effect in the next commit. To undo a copy\n"
+"    This command takes effect with the next commit. To undo a copy\n"
 "    before that, see hg revert.\n"
 "    "
 msgstr ""
@@ -5603,7 +5646,7 @@
 "    probably with undesirable results.\n"
 "\n"
 "    Use the --git option to generate diffs in the git extended diff\n"
-"    format. Read the diffs help topic for more information.\n"
+"    format. For more information, read hg help diffs.\n"
 "    "
 msgstr ""
 "作業領域全体(ないし指定ファイル)の差分抽出\n"
@@ -5895,8 +5938,7 @@
 "\n"
 "    パス指定有りでの起動の場合は、他のリポジトリを参照します。\n"
 "\n"
-"    本コマンドの出力する要約情報は、1つないし2つの親リビジョンのハッシュ値"
-"を\n"
+"    本コマンドの出力する要約情報は、1つないし2つの親リビジョンハッシュ値を\n"
 "    使用して、作業領域の状態を識別します。ハッシュ値の後ろには、作業領域に\n"
 "    未コミットの変更がある場合は \"+\"、当該リビジョンに付いているタグの\n"
 "    一覧、default 以外のブランチの場合にはブランチ名が続きます。\n"
@@ -6056,12 +6098,10 @@
 "    持つファイルを特定します。\n"
 "\n"
 "    特に指定が無い場合、本コマンドは構成管理対象となる作業領域中の\n"
-"    全ファイルを検索対象とします。現ディレクトリとそのサブディレクトリのみ"
-"を\n"
+"    全ファイルを検索対象とします。現ディレクトリとサブディレクトリのみを\n"
 "    検索対象とするには、\"--include .\" を使用してください。\n"
 "\n"
-"    パターン指定が無い場合、本コマンドは全ファイルのファイル名を表示しま"
-"す。\n"
+"    パターン指定が無い場合、本コマンドは全てのファイル名を表示します。\n"
 "\n"
 "    本コマンドの出力を \"xargs\" コマンドへと渡す場合、本コマンドと\n"
 "    \"xargs\" コマンドの両方への \"-0\" オプション指定をお勧めします。\n"
@@ -6093,8 +6133,8 @@
 "    files and full commit message is shown.\n"
 "\n"
 "    NOTE: log -p may generate unexpected diff output for merge\n"
-"    changesets, as it will compare the merge changeset against its\n"
-"    first parent only. Also, the files: list will only reflect files\n"
+"    changesets, as it will only compare the merge changeset against\n"
+"    its first parent. Also, the files: list will only reflect files\n"
 "    that are different from BOTH parents.\n"
 "\n"
 "    "
@@ -6104,11 +6144,9 @@
 "    特定のファイルないしリポジトリ全体の変更履歴を表示します。\n"
 "\n"
 "    ファイルの履歴表示では、改名や複製における元ファイルにまでさかのぼった\n"
-"    履歴は表示しません。元ファイルの履歴までさかのぼる場合には、ファイル名"
-"と\n"
+"    履歴は表示しません。元ファイルの履歴までさかのぼる場合は、ファイル名と\n"
 "    一緒に -f/--follow オプションを指定してください。--follow 指定の際に\n"
-"    ファイル名を指定しない場合は、開始リビジョンの先祖ないし子孫のリビジョ"
-"ン\n"
+"    ファイル名を指定しない場合は、開始リビジョンの先祖ないし子孫リビジョン\n"
 "    のみを表示します。--follow-first 指定は、マージリビジョンにおいて\n"
 "    第1親の履歴のみをさかのぼります。\n"
 "\n"
@@ -6119,9 +6157,8 @@
 "    -d/--date への指定に関しては、'hg help dates' を参照してください。\n"
 "\n"
 "    特に指定が無い場合、本コマンドは以下の情報を出力します:\n"
-"    リビジョン番号、ハッシュID、タグ、(リビジョン番号の離れた)親リビジョ"
-"ン、\n"
-"    作成者、作成日時およびコミットログの1行目。\n"
+"    リビジョン番号、ハッシュID、タグ、(リビジョン番号の離れた),\n"
+"    親リビジョン、作成者、作成日時およびコミットログの1行目。\n"
 "    -v/--verbose が指定された場合、変更対象ファイル一覧と、コミットログの\n"
 "    全文が表示されます。\n"
 "\n"
@@ -6478,10 +6515,10 @@
 "    a file, there can only be one source.\n"
 "\n"
 "    By default, this command copies the contents of files as they\n"
-"    stand in the working directory. If invoked with --after, the\n"
+"    exist in the working directory. If invoked with --after, the\n"
 "    operation is recorded, but no copying is performed.\n"
 "\n"
-"    This command takes effect in the next commit. To undo a rename\n"
+"    This command takes effect at the next commit. To undo a rename\n"
 "    before that, see hg revert.\n"
 "    "
 msgstr ""
@@ -6989,7 +7026,7 @@
 
 msgid ""
 "\n"
-"Copyright (C) 2005-2008 Matt Mackall <mpm@selenic.com> and others\n"
+"Copyright (C) 2005-2009 Matt Mackall <mpm@selenic.com> 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 ""
@@ -7951,9 +7988,9 @@
 "\n"
 "    The log command also accepts date ranges:\n"
 "\n"
-"    \"<{date}\" - on or before a given date\n"
-"    \">{date}\" - on or after a given date\n"
-"    \"{date} to {date}\" - a date range, inclusive\n"
+"    \"<{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 ""
@@ -8007,16 +8044,16 @@
 "\n"
 "    Alternate pattern notations must be specified explicitly.\n"
 "\n"
-"    To use a plain path name without any pattern matching, start a\n"
-"    name with \"path:\".  These path names must match completely, from\n"
-"    the root of the current repository.\n"
-"\n"
-"    To use an extended glob, start a name with \"glob:\".  Globs are\n"
-"    rooted at the current directory; a glob such as \"*.c\" will match\n"
-"    files ending in \".c\" in the current directory only.\n"
+"    To use a plain path name without any pattern matching, start it\n"
+"    with \"path:\". These path names must completely match starting at\n"
+"    the current repository root.\n"
+"\n"
+"    To use an extended glob, start a name with \"glob:\". Globs are\n"
+"    rooted at the current directory; a glob such as \"*.c\" will only\n"
+"    match files in the current directory ending with \".c\".\n"
 "\n"
 "    The supported glob syntax extensions are \"**\" to match any string\n"
-"    across path separators, and \"{a,b}\" to mean \"a or b\".\n"
+"    across path separators and \"{a,b}\" to mean \"a or b\".\n"
 "\n"
 "    To use a Perl/Python regular expression, start a name with \"re:\".\n"
 "    Regexp pattern matching is anchored at the root of the repository.\n"
@@ -8031,11 +8068,11 @@
 "\n"
 "    glob:*.c       any name ending in \".c\" in the current directory\n"
 "    *.c            any name ending in \".c\" in the current directory\n"
-"    **.c           any name ending in \".c\" in the current directory, or\n"
-"                   any subdirectory\n"
+"    **.c           any name ending in \".c\" in any subdirectory of the\n"
+"                   current directory including itself.\n"
 "    foo/*.c        any name ending in \".c\" in the directory foo\n"
-"    foo/**.c       any name ending in \".c\" in the directory foo, or any\n"
-"                   subdirectory\n"
+"    foo/**.c       any name ending in \".c\" in any subdirectory of foo\n"
+"                   including itself.\n"
 "\n"
 "    Regexp examples:\n"
 "\n"
@@ -8095,11 +8132,13 @@
 "\n"
 "HG::\n"
 "    Path to the 'hg' executable, automatically passed when running hooks,\n"
-"    extensions or external tools. If unset or empty, an executable named\n"
-"    'hg' (with com/exe/bat/cmd extension on Windows) is searched.\n"
+"    extensions or external tools. If unset or empty, this is the hg\n"
+"    executable's name if it's frozen, or an executable named 'hg'\n"
+"    (with %PATHEXT% [defaulting to COM/EXE/BAT/CMD] extensions on\n"
+"    Windows) is searched.\n"
 "\n"
 "HGEDITOR::\n"
-"    This is the name of the editor to use when committing. See EDITOR.\n"
+"    This is the name of the editor to run when committing. See EDITOR.\n"
 "\n"
 "    (deprecated, use .hgrc)\n"
 "\n"
@@ -8111,8 +8150,8 @@
 "\n"
 "HGENCODINGMODE::\n"
 "    This sets Mercurial's behavior for handling unknown characters\n"
-"    while transcoding user inputs. The default is \"strict\", which\n"
-"    causes Mercurial to abort if it can't translate a character. Other\n"
+"    while transcoding user input. The default is \"strict\", which\n"
+"    causes Mercurial to abort if it can't map a character. Other\n"
 "    settings include \"replace\", which replaces unknown characters, and\n"
 "    \"ignore\", which drops them. This setting can be overridden with\n"
 "    the --encodingmode command-line option.\n"
@@ -8125,26 +8164,32 @@
 "    (deprecated, use .hgrc)\n"
 "\n"
 "HGRCPATH::\n"
-"    A list of files or directories to search for hgrc files.  Item\n"
-"    separator is \":\" on Unix, \";\" on Windows.  If HGRCPATH is not set,\n"
-"    platform default search path is used.  If empty, only .hg/hgrc of\n"
-"    current repository is read.\n"
-"\n"
-"    For each element in path, if a directory, all entries in directory\n"
-"    ending with \".rc\" are added to path.  Else, element itself is\n"
-"    added to path.\n"
+"    A list of files or directories to search for hgrc files. Item\n"
+"    separator is \":\" on Unix, \";\" on Windows. If HGRCPATH is not set,\n"
+"    platform default search path is used. If empty, only the .hg/hgrc\n"
+"    from the current repository is read.\n"
+"\n"
+"    For each element in HGRCPATH:\n"
+"    * if it's a directory, all directories ending with .rc are added\n"
+"    * otherwise, the directory itself will be added\n"
 "\n"
 "HGUSER::\n"
-"    This is the string used for the author of a commit.\n"
+"    This is the string used as the author of a commit. If not set,\n"
+"    available values will be considered in this order:\n"
+"\n"
+"    * HGUSER (deprecated)\n"
+"    * hgrc files from the HGRCPATH\n"
+"    * EMAIL\n"
+"    * interactive prompt\n"
+"    * LOGNAME (with '@hostname' appended)\n"
 "\n"
 "    (deprecated, use .hgrc)\n"
 "\n"
 "EMAIL::\n"
-"    If HGUSER is not set, this will be used as the author for a commit.\n"
+"    May be used as the author of a commit; see HGUSER.\n"
 "\n"
 "LOGNAME::\n"
-"    If neither HGUSER nor EMAIL is set, LOGNAME will be used (with\n"
-"    '@hostname' appended) as the author value for a commit.\n"
+"    May be used as the author of a commit; see HGUSER.\n"
 "\n"
 "VISUAL::\n"
 "    This is the name of the editor to use when committing. See EDITOR.\n"
@@ -8159,14 +8204,16 @@
 "\n"
 "PYTHONPATH::\n"
 "    This is used by Python to find imported modules and may need to be set\n"
-"    appropriately if Mercurial is not installed system-wide.\n"
+"    appropriately if this Mercurial is not installed system-wide.\n"
 "    "
 msgstr ""
 "\n"
 "HG::\n"
 "    'hg' コマンドへのパス。フック/エクステンションないし外部ツールの起動の\n"
-"    際に自動的に設定されます。未設定や空の場合は、'hg' という名前の実行可能\n"
-"    ファイルが検索されます(Windows の場合 com/exe/bat/cmd 等の拡張子付き)。\n"
+"    際に自動的に設定されます。未設定や空の場合は、frozen 形式の\n"
+"    hg 実行可能ファイルの名前か設定されるか、'hg' という名前の実行可能\n"
+"    ファイルが検索されます(Windows の場合、PATHEXT 環境変数に設定された\n"
+"    COM/EXE/BAT/CMD 等の拡張子付き)。\n"
 "\n"
 "HGEDITOR::\n"
 "    コミットの際のメッセージ入力を行うためのエディタの名前。EDITOR 環境変数\n"
@@ -8203,22 +8250,29 @@
 "    読み込み先から読み込まれます。空の値が設定されている場合、\n"
 "    現リポジトリの .hg/hgrc のみが読み込まれます。\n"
 "\n"
-"    指定された一覧の各要素に対して、ディレクトリ指定なら当該ディレクトリ\n"
-"    配下の \".rc\" で終わる名前のファイルが、ファイル指定の場合はその\n"
-"    ファイル自身が、読み込み対象となります。\n"
+"    指定された一覧の各要素に対して、以下のように振舞います:\n"
+"    * ディレクトリなら、配下の \".rc\" で終わる名前のファイルを読み込む\n"
+"    * ファイルなら、そのファイル自身を読み込む\n"
 "\n"
 "HGUSER::\n"
 "    チェンジセット作成者としてコミット時に記録する名前の指定。\n"
+"    作成者名として採用される値の決定順序は以下の通りです。\n"
+"\n"
+"    * HGUSER 環境変数値(推奨されません)\n"
+"    * (HGRCPATH 環境変数で指定される)設定ファイル中の設定\n"
+"    * EMAIL 環境変数値\n"
+"    * 対話的な入力\n"
+"    * LOGNAME 環境変数値('@hostname' が付与されます)\n"
 "\n"
 "    (推奨されない環境変数。設定ファイル経由で指定してください。)\n"
 "\n"
 "EMAIL::\n"
-"    HGUSER 環境変数が設定されていない場合、チェンジセット作成者として\n"
-"    コミット時にこの環境変数値が記録されます。\n"
+"    チェンジセット作成者としてこの環境変数値が記録される可能性があります。\n"
+"    詳細は HGUSER の記述を参照してください。\n"
 "\n"
 "LOGNAME::\n"
-"    HGUSER も EMAIL も共に設定されていない場合、チェンジセット作成者として\n"
-"    コミット時に('@hostname' を追加した)この環境変数値が記録されます。\n"
+"    チェンジセット作成者としてこの環境変数値が記録される可能性があります。\n"
+"    詳細は HGUSER の記述を参照してください。\n"
 "\n"
 "VISUAL::\n"
 "    コミット時のメッセージを編集するエディタ名の指定。EDITOR 環境変数\n"
@@ -8242,12 +8296,14 @@
 
 msgid ""
 "\n"
-"    Mercurial accepts several notations for identifying individual\n"
+"    Mercurial supports several ways to specify individual\n"
 "    revisions.\n"
 "\n"
 "    A plain integer is treated as a revision number. Negative\n"
-"    integers are treated as offsets from the tip, with -1 denoting the\n"
-"    tip.\n"
+"    integers are treated as toplogical offsets from the tip, with\n"
+"    -1 denoting the tip. As such, negative numbers are only useful\n"
+"    if you've memorized your local tree numbers and want to save\n"
+"    typing a single digit. This editor suggests copy and paste.\n"
 "\n"
 "    A 40-digit hexadecimal string is treated as a unique revision\n"
 "    identifier.\n"
@@ -8255,7 +8311,7 @@
 "    A hexadecimal string less than 40 characters long is treated as a\n"
 "    unique revision identifier, and referred to as a short-form\n"
 "    identifier. A short-form identifier is only valid if it is the\n"
-"    prefix of one full-length identifier.\n"
+"    prefix of exactly one full-length identifier.\n"
 "\n"
 "    Any other string is treated as a tag name, which is a symbolic\n"
 "    name associated with a revision identifier. Tag names may not\n"
@@ -8276,14 +8332,16 @@
 "\n"
 "    Mercurial は、個々のリビジョンを識別する記法を幾つか用意しています。\n"
 "\n"
-"    整数値は「リビジョン番号」とみなされます。負値は、tip からの距離を\n"
-"    表します(-1 は tip を表します)。\n"
+"    整数値は、「リビジョン番号」とみなされます。負値は、tip からの距離を\n"
+"    表し、-1 は tip 自身を表します。負値の指定は、手元のリポジトリ中の\n"
+"    履歴遷移を把握している際に、入力を省力化したい場合にのみ有効です。\n"
+"    負値の利用はあまりお勧めできません。\n"
 "\n"
 "    40桁の16進文字列は、一意な「リビジョン識別子」とみなされます。\n"
 "\n"
 "    40桁未満の16進文字列は、一意な「リビジョン識別子」の短縮形式と\n"
-"    みなされます。短縮形式の識別子は、唯一の完全長の識別子と前方一致する\n"
-"    場合にのみ有効です。\n"
+"    みなされます。短縮形式の識別子は、厳密に1つの完全長の識別子とだけ\n"
+"    前方一致する場合にのみ有効です。\n"
 "\n"
 "    それ以外の文字列は、リビジョン識別子に関連付けられた「タグ名」と\n"
 "    みなされます。タグ名は \":\" を含んでいないかもしれない。\n"
@@ -8305,8 +8363,8 @@
 msgid ""
 "\n"
 "    When Mercurial accepts more than one revision, they may be\n"
-"    specified individually, or provided as a continuous range,\n"
-"    separated by the \":\" character.\n"
+"    specified individually, or provided as a topologically continuous\n"
+"    range, separated by the \":\" character.\n"
 "\n"
 "    The syntax of range notation is [BEGIN]:[END], where BEGIN and END\n"
 "    are revision identifiers. Both BEGIN and END are optional. If\n"
@@ -8318,7 +8376,7 @@
 "    order.\n"
 "\n"
 "    A range acts as a closed interval. This means that a range of 3:5\n"
-"    gives 3, 4 and 5. Similarly, a range of 4:2 gives 4, 3, and 2.\n"
+"    gives 3, 4 and 5. Similarly, a range of 9:6 gives 9, 8, 7, and 6.\n"
 "    "
 msgstr ""
 "\n"
@@ -8337,7 +8395,7 @@
 "    とみなされます。\n"
 "\n"
 "    範囲指定は \"閉区間\" とみなされます。つまり、3:5 という範囲指定は\n"
-"    3, 4, 5 の指定と等価です。同様に 4:2 という範囲指定は 4, 3, 2 の指定と\n"
+"    3, 4, 5 の指定と等価です。同様に 9:6 という指定は 9, 8, 7, 6 の指定と\n"
 "    等価です。\n"
 "    "
 
@@ -8353,14 +8411,14 @@
 "    While this standard format is often enough, it does not encode the\n"
 "    following information:\n"
 "\n"
-"     - executable status\n"
+"     - executable status and other permission bits\n"
 "     - copy or rename information\n"
 "     - changes in binary files\n"
 "     - creation or deletion of empty files\n"
 "\n"
 "    Mercurial also supports the extended diff format from the git VCS\n"
 "    which addresses these limitations. The git diff format is not\n"
-"    produced by default because there are very few tools which\n"
+"    produced by default because a few widespread tools still do not\n"
 "    understand this format.\n"
 "\n"
 "    This means that when generating diffs from a Mercurial repository\n"
@@ -8384,15 +8442,15 @@
 "\n"
 "    この標準的な形式は概ね十分なのですが、以下のような情報は含まれません:\n"
 "\n"
-"     - 実行可否(権限設定)\n"
+"     - 実行可否および権限設定\n"
 "     - 複製/改名情報\n"
 "     - バイナリファイルの変更\n"
 "     - 空ファイルの作成/削除\n"
 "\n"
 "    Mercurial は、別の構成管理ツールである git に由来する拡張差分形式にも\n"
 "    対応しており、この形式は従来の差分形式の持つ先の制限を解消しています。\n"
-"    但し、殆どのツールが git 差分形式に対応していないため、Mercurial は\n"
-"    指定が無い場合はこの形式では出力しません。\n"
+"    但し、普及しているツールの幾つかが git 差分形式に対応していないため、\n"
+"    Mercurial は指定が無い場合はこの形式では出力しません。\n"
 "\n"
 "    つまり、Mercurial が(\"hg export\" 等で)生成した標準の差分形式は、\n"
 "    他のリポジトリに対して適用した場合、上述した情報の欠落があることから、\n"
@@ -8418,7 +8476,7 @@
 "style).\n"
 "\n"
 "    You can customize output for any \"log-like\" command: log, outgoing,\n"
-"    incoming, tip, parents, heads and glog are all template-enabled.\n"
+"    incoming, tip, parents, heads and glog.\n"
 "\n"
 "    Three styles are packaged with Mercurial: default (the style used\n"
 "    when no explicit preference is passed), compact and changelog. Usage:\n"
@@ -8455,7 +8513,7 @@
 "    want to use a date in your output, you can use a filter to process it.\n"
 "    Filters are functions which return a string based on the input "
 "variable.\n"
-"    You can also use a chain of filters to get the wanted output:\n"
+"    You can also use a chain of filters to get the desired output:\n"
 "\n"
 "       $ hg tip --template \"{date|isodate}\\n\"\n"
 "       2008-08-21 18:22 +0000\n"
@@ -8464,15 +8522,21 @@
 "\n"
 "    - addbreaks: Any text. Add an XHTML \"<br />\" tag before the end of\n"
 "          every line except the last.\n"
-"    - age: Date. Returns a human-readable age for the given date.\n"
+"    - age: Date. Returns a human-readable date/time difference between\n"
+"          the given date/time and the current date/time.\n"
 "    - basename: Any text. Treats the text as a path, and returns the\n"
-"          basename. For example, \"foo/bar/baz\" becomes \"baz\".\n"
-"    - date: Date. Returns a date in a Unix date command format, including\n"
+"          last component of the path after splitting by the path\n"
+"          separator (ignoring trailing seprators). For example,\n"
+"          \"foo/bar/baz\" becomes \"baz\" and \"foo/bar//\" becomes \"bar"
+"\".\n"
+"    - date: Date. Returns a date in a Unix date format, including\n"
 "          the timezone: \"Mon Sep 04 15:13:13 2006 0700\".\n"
 "    - domain: Any text. Finds the first string that looks like an email\n"
 "          address, and extracts just the domain component.\n"
+"          Example: 'User <user@example.com>' becomes 'example.com'.\n"
 "    - email: Any text. Extracts the first string that looks like an email\n"
-"          address.\n"
+"          address. Example: 'User <user@example.com>' becomes\n"
+"          'user@example.com'.\n"
 "    - escape: Any text. Replaces the special XML/XHTML characters \"&\",\n"
 "          \"<\" and \">\" with XML entities.\n"
 "    - fill68: Any text. Wraps the text to fit in 68 columns.\n"
@@ -8488,7 +8552,7 @@
 "          in email headers.\n"
 "    - short: Changeset hash. Returns the short form of a changeset hash,\n"
 "          i.e. a 12-byte hexadecimal string.\n"
-"    - shortdate: Date. Returns a date like \"2006-09-04\".\n"
+"    - shortdate: Date. Returns a date like \"2006-09-18\".\n"
 "    - strip: Any text. Strips all leading and trailing whitespace.\n"
 "    - tabindent: Any text. Returns the text, with every line except the\n"
 "          first starting with a tab character.\n"
@@ -8515,7 +8579,7 @@
 "    'hg incoming --bundle').\n"
 "\n"
 "    An optional identifier after # indicates a particular branch, tag,\n"
-"    or changeset to deal with in the remote repository.\n"
+"    or changeset to use from the remote repository.\n"
 "\n"
 "    Some features, such as pushing to http:// and https:// URLs are\n"
 "    only possible if the feature is explicitly enabled on the\n"
@@ -8547,13 +8611,14 @@
 "    You can then use the alias for any command that uses a url (for example\n"
 "    'hg pull alias1' would pull from the 'alias1' path).\n"
 "\n"
-"    Two path aliases are more important because they are used as defaults\n"
+"    Two path aliases are special because they are used as defaults\n"
 "    when you do not provide the url to a command:\n"
 "\n"
 "    default:\n"
 "      When you create a repository with hg clone, the clone command saves\n"
-"      the location of the source repository as the 'default' path. This is\n"
-"      then used when you omit a path from the push and pull commands.\n"
+"      the location of the source repository as the new repository's\n"
+"      'default' path. This is then used when you omit path from push-\n"
+"      and pull-like commands (including in and out).\n"
 "\n"
 "    default-push:\n"
 "      The push command will look for a path named 'default-push', and\n"
@@ -8611,9 +8676,10 @@
 "    重要な別名が2つあります。\n"
 "\n"
 "    default:\n"
-"      'hg clone' によって複製した場合、複製元リポジトリの URL が\n"
-"      'default' として保存されます。以後、連携先を省略して 'hg push' や\n"
-"      'hg pull' を実行した際には、この URL が連携先として使用されます。\n"
+"      'hg clone' によって複製した場合、新規リポジトリの 'default' として\n"
+"      複製元リポジトリの URL が保存されます。\n"
+"      以後、連携先を省略して 'hg push' や 'hg pull' に類するコマンドを\n"
+"      実行した際には、この URL が連携先として使用されます。\n"
 "\n"
 "    default-push:\n"
 "      'hg push' は、'default-push' の別名で定義される URL を探します。\n"
@@ -8659,6 +8725,11 @@
 msgid "use 'hg resolve' to retry unresolved file merges\n"
 msgstr ""
 
+msgid ""
+"use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to "
+"abandon\n"
+msgstr ""
+
 msgid "(branch merge, don't forget to commit)\n"
 msgstr ""
 
--- a/i18n/zh.po	Wed Apr 08 23:17:33 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9204 +0,0 @@
-#
-# Chinese (simplified) translation for Mercurial
-# This file is distributed under the same license as Mercurial
-#
-# Copyright (C) 2009 the Mercurial team
-# Dongsheng Song <dongsheng.song@gmail.com>, 2009
-#
-# $Id: zh.po 1185 2009-02-17 15:10:31Z dongsheng.song $
-#
-# Update with pot file:
-#    msgmerge --update zh.po hg.pot
-#    msgfmt --statistics -c zh.po
-#
-# Please test your translation before commit:
-#    python setup.py build_py -c -d . build_ext -i build_mo
-#    LC_ALL=zh_CN.UTF-8 ./hg
-#
-# Please format your translation before commit:
-#    msgcat --width=80 --sort-by-file -o zh_new.po zh.po
-#    mv -f zh_new.po zh.po
-#
-# Please remove '#: filename:line' lines before submit to hg:
-#    msgcat --width=80 --no-location -o zh_new.po zh.po
-#    mv -f zh_new.po zh.po
-#
-# Dictionary:
-# blame             追溯
-# branch            分支
-# changes           改变
-# changeset         改变集
-# checkout          检出
-# remove            移除(从版本库删除)
-# delete            删除(只从文件系统删除)
-# patchset          补丁集
-# pushing to        推到
-# pulling from      拉自
-# rename            改名
-# repository        版本库
-# revert            恢复
-# revision          版本
-# tag               标签
-# tip               顶点
-# undo              撤销
-# unversioned       未版本控制
-# versioned         受版本控制
-# working copy      工作副本
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Mercurial 1.2\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-17 21:43+0800\n"
-"PO-Revision-Date: 2009-02-17 23:05+0800\n"
-"Last-Translator: Dongsheng Song <dongsheng.song@gmail.com>\n"
-"Language-Team: Chinese translation team <i18n-zh@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: pygettext.py 1.5\n"
-"X-Poedit-Language: Chinese\n"
-"X-Poedit-Country: CHINA\n"
-
-#, python-format
-msgid " (default: %s)"
-msgstr " (默认: %s)"
-
-msgid "OPTIONS"
-msgstr "选项"
-
-msgid "COMMANDS"
-msgstr "命令"
-
-msgid "    options:\n"
-msgstr "    选项:\n"
-
-#, python-format
-msgid ""
-"    aliases: %s\n"
-"\n"
-msgstr ""
-"    别名: %s\n"
-"\n"
-
-msgid "return tuple of (match function, list enabled)."
-msgstr "返回 tuple (匹配函数,启用列表)"
-
-#, python-format
-msgid "acl: %s not enabled\n"
-msgstr "acl: 未启用 %s\n"
-
-#, python-format
-msgid "acl: %s enabled, %d entries for user %s\n"
-msgstr "acl: 已启用 %s, %d 项,用户 %s\n"
-
-#, python-format
-msgid "config error - hook type \"%s\" cannot stop incoming changesets"
-msgstr "配置错误 - 钩子类型 \"%s\" 不能终止进入的改变集"
-
-#, python-format
-msgid "acl: changes have source \"%s\" - skipping\n"
-msgstr "acl: 改变源 \"%s\" - 跳过\n"
-
-#, python-format
-msgid "acl: user %s denied on %s\n"
-msgstr "acl: 用户 %s 被拒绝访问 %s\n"
-
-#, python-format
-msgid "acl: access denied for changeset %s"
-msgstr "acl: 拒绝访问改变集 %s"
-
-#, python-format
-msgid "acl: user %s not allowed on %s\n"
-msgstr "acl: 用户 %s 被拒绝访问 %s\n"
-
-#, python-format
-msgid "acl: allowing changeset %s\n"
-msgstr "acl: 允许改变集 %s\n"
-
-msgid ""
-"allow user-defined command aliases\n"
-"\n"
-"To use, create entries in your hgrc of the form\n"
-"\n"
-"[alias]\n"
-"mycmd = cmd --args\n"
-msgstr ""
-"允许用户自定义命令的别名\n"
-"\n"
-"要使用别名,在你的 hgrc 中创建如下格式的条目:\n"
-"\n"
-"[alias]\n"
-"mycmd = cmd --args\n"
-
-msgid ""
-"defer command lookup until needed, so that extensions loaded\n"
-"    after alias can be aliased"
-msgstr "查找命令会推迟到需要时,所以可以在定义别名后加载模块"
-
-#, python-format
-msgid "*** [alias] %s: command %s is unknown"
-msgstr "*** [alias] %s: 未知命令 %s"
-
-#, python-format
-msgid "*** [alias] %s: command %s is ambiguous"
-msgstr "*** [alias] %s: 不明确的命令 %s"
-
-#, python-format
-msgid "*** [alias] %s: circular dependency on %s"
-msgstr "*** [alias] %s: 循环依赖于 %s"
-
-#, python-format
-msgid "*** [alias] %s: no definition\n"
-msgstr "*** [alias] %s: 无定义\n"
-
-msgid ""
-"mercurial bookmarks\n"
-"\n"
-"Mercurial bookmarks are local moveable pointers to changesets. Every\n"
-"bookmark 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 is forwarded to the new changeset.\n"
-"\n"
-"It is possible to use bookmark names in every revision lookup (e.g. hg\n"
-"merge, hg update).\n"
-"\n"
-"The bookmark extension offers the possiblity to have a more git-like "
-"experience\n"
-"by adding the following configuration option to your .hgrc:\n"
-"\n"
-"[bookmarks]\n"
-"track.current = True\n"
-"\n"
-"This will cause bookmarks to track the bookmark that you are currently on, "
-"and\n"
-"just updates it. This is similar to git's approach of branching.\n"
-msgstr ""
-
-msgid ""
-"Parse .hg/bookmarks file and return a dictionary\n"
-"\n"
-"    Bookmarks are stored as {HASH}\\s{NAME}\n"
-" (localtags format) values\n"
-"    in the .hg/bookmarks file. They are read by the parse() method and\n"
-"    returned as a dictionary with name => hash values.\n"
-"\n"
-"    The parsed dictionary is cached until a write() operation is done.\n"
-"    "
-msgstr ""
-
-msgid ""
-"Write bookmarks\n"
-"\n"
-"    Write the given bookmark => hash dictionary to the .hg/bookmarks file\n"
-"    in a format equal to those of localtags.\n"
-"\n"
-"    We also store a backup of the previous state in undo.bookmarks that\n"
-"    can be copied back on rollback.\n"
-"    "
-msgstr ""
-
-msgid ""
-"Get the current bookmark\n"
-"\n"
-"    If we use gittishsh branches we have a current bookmark that\n"
-"    we are on. This function returns the name of the bookmark. It\n"
-"    is stored in .hg/bookmarks.current\n"
-"    "
-msgstr ""
-
-msgid ""
-"Set the name of the bookmark that we are currently on\n"
-"\n"
-"    Set the name of the bookmark that we are on (hg update <bookmark>).\n"
-"    The name is recoreded in .hg/bookmarks.current\n"
-"    "
-msgstr ""
-
-msgid ""
-"mercurial bookmarks\n"
-"\n"
-"    Bookmarks are pointers to certain commits that move when\n"
-"    commiting. Bookmarks are local. They can be renamed, copied and\n"
-"    deleted. It is possible to use bookmark names in 'hg merge' and 'hg\n"
-"    update' to update to a given bookmark.\n"
-"\n"
-"    You can use 'hg bookmark NAME' to set a bookmark on the current\n"
-"    tip with the given name. If you specify a revision using -r REV\n"
-"    (where REV may be an existing bookmark), the bookmark is set to\n"
-"    that revision.\n"
-"    "
-msgstr ""
-
-msgid "a bookmark of this name does not exist"
-msgstr ""
-
-msgid "a bookmark of the same name already exists"
-msgstr ""
-
-msgid "new bookmark name required"
-msgstr ""
-
-msgid "bookmark name required"
-msgstr ""
-
-msgid "bookmark name cannot contain newlines"
-msgstr ""
-
-msgid "a bookmark cannot have the name of an existing branch"
-msgstr ""
-
-msgid ""
-"Strip bookmarks if revisions are stripped using\n"
-"    the mercurial.strip method. This usually happens during\n"
-"    qpush and qpop"
-msgstr ""
-
-msgid ""
-"Add a revision to the repository and\n"
-"            move the bookmark"
-msgstr ""
-
-msgid "Merge bookmarks with normal tags"
-msgstr ""
-
-msgid ""
-"Set the current bookmark\n"
-"\n"
-"    If the user updates to a bookmark we update the .hg/bookmarks.current\n"
-"    file.\n"
-"    "
-msgstr ""
-
-msgid "force"
-msgstr "强制"
-
-msgid "revision"
-msgstr "版本"
-
-msgid "delete a given bookmark"
-msgstr "删除指定书签"
-
-msgid "rename a given bookmark"
-msgstr "改名指定书签"
-
-msgid "hg bookmarks [-d] [-m NAME] [-r NAME] [NAME]"
-msgstr ""
-
-msgid ""
-"Bugzilla integration\n"
-"\n"
-"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 bug\n"
-"status.\n"
-"\n"
-"The hook updates the Bugzilla database directly. Only Bugzilla installations\n"
-"using MySQL are supported.\n"
-"\n"
-"The hook relies on a Bugzilla script to send bug change notification emails.\n"
-"That script changes between Bugzilla versions; the 'processmail' script used\n"
-"prior to 2.18 is replaced in 2.18 and subsequent versions by\n"
-"'config/sendbugmail.pl'. Note that these will be run by Mercurial as the "
-"user\n"
-"pushing the change; you will need to ensure the Bugzilla install file\n"
-"permissions are set appropriately.\n"
-"\n"
-"Configuring the extension:\n"
-"\n"
-"    [bugzilla]\n"
-"    host       Hostname of the MySQL server holding the Bugzilla database.\n"
-"    db         Name of the Bugzilla database in MySQL. Default 'bugs'.\n"
-"    user       Username to use to access MySQL server. Default 'bugs'.\n"
-"    password   Password to use to access MySQL server.\n"
-"    timeout    Database connection timeout (seconds). Default 5.\n"
-"    version    Bugzilla version. Specify '3.0' for Bugzilla versions 3.0 and\n"
-"               later, '2.18' for Bugzilla versions from 2.18 and '2.16' for\n"
-"               versions prior to 2.18.\n"
-"    bzuser     Fallback Bugzilla user name to record comments with, if\n"
-"               changeset committer cannot be found as a Bugzilla user.\n"
-"    bzdir      Bugzilla install directory. Used by default notify.\n"
-"               Default '/var/www/html/bugzilla'.\n"
-"    notify     The command to run to get Bugzilla to send bug change\n"
-"               notification emails. Substitutes from a map with 3 keys,\n"
-"               'bzdir', 'id' (bug id) and 'user' (committer bugzilla email).\n"
-"               Default depends on version; from 2.18 it is\n"
-"               \"cd %(bzdir)s && perl -T contrib/sendbugmail.pl %(id)s %(user)"
-"s\".\n"
-"    regexp     Regular expression to match bug IDs in changeset commit "
-"message.\n"
-"               Must contain one \"()\" group. The default expression matches\n"
-"               'Bug 1234', 'Bug no. 1234', 'Bug number 1234',\n"
-"               'Bugs 1234,5678', 'Bug 1234 and 5678' and variations thereof.\n"
-"               Matching is case insensitive.\n"
-"    style      The style file to use when formatting comments.\n"
-"    template   Template to use when formatting comments. Overrides\n"
-"               style if specified. In addition to the usual Mercurial\n"
-"               keywords, the extension specifies:\n"
-"                   {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.\n"
-"               Default 'changeset {node|short} in repo {root} refers '\n"
-"                       'to bug {bug}.\\ndetails:\\n\\t{desc|tabindent}'\n"
-"    strip      The number of slashes to strip from the front of {root}\n"
-"               to produce {webroot}. Default 0.\n"
-"    usermap    Path of file containing Mercurial committer ID to Bugzilla "
-"user\n"
-"               ID mappings. If specified, the file should contain one "
-"mapping\n"
-"               per line, \"committer\"=\"Bugzilla user\". See also the\n"
-"               [usermap] section.\n"
-"\n"
-"    [usermap]\n"
-"    Any entries in this section specify mappings of Mercurial committer ID\n"
-"    to Bugzilla user ID. See also [bugzilla].usermap.\n"
-"    \"committer\"=\"Bugzilla user\"\n"
-"\n"
-"    [web]\n"
-"    baseurl    Base URL for browsing Mercurial repositories. Reference from\n"
-"               templates as {hgweb}.\n"
-"\n"
-"Activating the extension:\n"
-"\n"
-"    [extensions]\n"
-"    hgext.bugzilla =\n"
-"\n"
-"    [hooks]\n"
-"    # run bugzilla hook on every change pulled or pushed in here\n"
-"    incoming.bugzilla = python:hgext.bugzilla.hook\n"
-"\n"
-"Example configuration:\n"
-"\n"
-"This example configuration is for a collection of Mercurial repositories\n"
-"in /var/local/hg/repos/ used with a local Bugzilla 3.2 installation in\n"
-"/opt/bugzilla-3.2.\n"
-"\n"
-"    [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\n"
-"\n"
-"    [web]\n"
-"    baseurl=http://dev.domain.com/hg\n"
-"\n"
-"    [usermap]\n"
-"    user@emaildomain.com=user.name@bugzilladomain.com\n"
-"\n"
-"Commits add a comment to the Bugzilla bug record of the form:\n"
-"\n"
-"    Changeset 3b16791d6642 in repository-name.\n"
-"    http://dev.domain.com/hg/repository-name/rev/3b16791d6642\n"
-"\n"
-"    Changeset commit comment. Bug 1234.\n"
-msgstr ""
-
-msgid "support for bugzilla version 2.16."
-msgstr "支持 bugzilla 2.16。"
-
-#, python-format
-msgid "connecting to %s:%s as %s, password %s\n"
-msgstr "连接到 %s:%s as %s,密码 %s\n"
-
-msgid "run a query."
-msgstr "运行查询。"
-
-#, python-format
-msgid "query: %s %s\n"
-msgstr "查询: %s %s\n"
-
-#, python-format
-msgid "failed query: %s %s\n"
-msgstr "查询失败: %s %s\n"
-
-msgid "get identity of longdesc field"
-msgstr ""
-
-msgid "unknown database schema"
-msgstr "未知的数据库方案"
-
-msgid "filter not-existing bug ids from list."
-msgstr "从列表中过滤不存在的问题标识。"
-
-msgid "filter bug ids from list that already refer to this changeset."
-msgstr ""
-
-#, python-format
-msgid "bug %d already knows about changeset %s\n"
-msgstr ""
-
-msgid "tell bugzilla to send mail."
-msgstr ""
-
-msgid "telling bugzilla to send mail:\n"
-msgstr ""
-
-#, python-format
-msgid "  bug %s\n"
-msgstr ""
-
-#, python-format
-msgid "running notify command %s\n"
-msgstr ""
-
-#, python-format
-msgid "bugzilla notify command %s"
-msgstr ""
-
-msgid "done\n"
-msgstr "完成\n"
-
-msgid "look up numeric bugzilla user id."
-msgstr ""
-
-#, python-format
-msgid "looking up user %s\n"
-msgstr ""
-
-msgid "map name of committer to bugzilla user name."
-msgstr ""
-
-msgid ""
-"see if committer is a registered bugzilla user. Return\n"
-"        bugzilla username and userid if so. If not, return default\n"
-"        bugzilla username and userid."
-msgstr ""
-
-#, python-format
-msgid "cannot find bugzilla user id for %s"
-msgstr ""
-
-#, python-format
-msgid "cannot find bugzilla user id for %s or %s"
-msgstr ""
-
-msgid ""
-"add comment to bug. try adding comment as committer of\n"
-"        changeset, otherwise as default bugzilla user."
-msgstr ""
-
-msgid "support for bugzilla 2.18 series."
-msgstr ""
-
-msgid "support for bugzilla 3.0 series."
-msgstr ""
-
-msgid ""
-"return object that knows how to talk to bugzilla version in\n"
-"        use."
-msgstr ""
-
-#, python-format
-msgid "bugzilla version %s not supported"
-msgstr ""
-
-msgid ""
-"find valid bug ids that are referred to in changeset\n"
-"        comments and that do not already have references to this\n"
-"        changeset."
-msgstr ""
-
-msgid "update bugzilla bug with reference to changeset."
-msgstr ""
-
-msgid ""
-"strip leading prefix of repo root and turn into\n"
-"            url-safe path."
-msgstr ""
-
-msgid ""
-"changeset {node|short} in repo {root} refers to bug {bug}.\n"
-"details:\n"
-"\t{desc|tabindent}"
-msgstr ""
-
-msgid ""
-"add comment to bugzilla for each changeset that refers to a\n"
-"    bugzilla bug id. only add a comment once per bug, so same change\n"
-"    seen multiple times does not fill bug with duplicate data."
-msgstr ""
-
-#, python-format
-msgid "python mysql support not available: %s"
-msgstr ""
-
-#, python-format
-msgid "hook type %s does not pass a changeset id"
-msgstr ""
-
-#, python-format
-msgid "database error: %s"
-msgstr ""
-
-msgid ""
-"show the children of the given or working dir revision\n"
-"\n"
-"    Print the children of the working directory's revisions.\n"
-"    If a revision is given via --rev, the children of that revision\n"
-"    will be printed. If a file argument is given, revision in\n"
-"    which the file was last changed (after the working directory\n"
-"    revision or the argument to --rev if given) is printed.\n"
-"    "
-msgstr ""
-
-msgid "show children of the specified rev"
-msgstr ""
-
-msgid "hg children [-r REV] [FILE]"
-msgstr ""
-
-msgid "command to show certain statistics about revision history"
-msgstr ""
-
-msgid "Calculate stats"
-msgstr ""
-
-#, python-format
-msgid "Revision %d is a merge, ignoring...\n"
-msgstr ""
-
-#, python-format
-msgid "\rgenerating stats: %d%%"
-msgstr ""
-
-msgid ""
-"graph count of revisions grouped by template\n"
-"\n"
-"    Will graph count of changed lines or revisions grouped by template or\n"
-"    alternatively by date, if dateformat is used. In this case it will "
-"override\n"
-"    template.\n"
-"\n"
-"    By default statistics are counted for number of changed lines.\n"
-"\n"
-"    Examples:\n"
-"\n"
-"      # display count of changed lines for every committer\n"
-"      hg churn -t '{author|email}'\n"
-"\n"
-"      # display daily activity graph\n"
-"      hg churn -f '%H' -s -c\n"
-"\n"
-"      # display activity of developers by month\n"
-"      hg churn -f '%Y-%m' -s -c\n"
-"\n"
-"      # display count of lines changed in every year\n"
-"      hg churn -f '%Y' -s\n"
-"\n"
-"    The map file format used to specify aliases is fairly simple:\n"
-"\n"
-"    <alias email> <actual email>"
-msgstr ""
-
-#, python-format
-msgid "assuming %i character terminal\n"
-msgstr ""
-
-msgid "count rate for the specified revision or range"
-msgstr ""
-
-msgid "count rate for revs matching date spec"
-msgstr ""
-
-msgid "template to group changesets"
-msgstr ""
-
-msgid "strftime-compatible format for grouping by date"
-msgstr ""
-
-msgid "count rate by number of changesets"
-msgstr ""
-
-msgid "sort by key (default: sort by count)"
-msgstr ""
-
-msgid "file with email aliases"
-msgstr ""
-
-msgid "show progress"
-msgstr ""
-
-msgid "hg churn [-d DATE] [-r REV] [--aliases FILE] [--progress] [FILE]"
-msgstr ""
-
-msgid ""
-"add color output to status, qseries, and diff-related commands\n"
-"\n"
-"This extension modifies the status command to add color to its output to\n"
-"reflect file status, the qseries command to add color to reflect patch "
-"status\n"
-"(applied, unapplied, missing), and to diff-related commands to highlight\n"
-"additions, removals, diff headers, and trailing whitespace.\n"
-"\n"
-"Other effects in addition to color, like bold and underlined text, are also\n"
-"available.  Effects are rendered with the ECMA-48 SGR control function (aka\n"
-"ANSI escape codes).  This module also provides the render_text function,\n"
-"which can be used to add effects to any text.\n"
-"\n"
-"To enable this extension, add this to your .hgrc file:\n"
-"[extensions]\n"
-"color =\n"
-"\n"
-"Default effects my be overriden from the .hgrc file:\n"
-"\n"
-"[color]\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\n"
-"\n"
-"# 'none' turns off all effects\n"
-"status.clean = none\n"
-"status.copied = none\n"
-"\n"
-"qseries.applied = blue bold underline\n"
-"qseries.unapplied = black bold\n"
-"qseries.missing = red bold\n"
-"\n"
-"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\n"
-msgstr ""
-
-msgid "Wrap text in commands to turn on each effect."
-msgstr ""
-
-msgid "run the status command with colored output"
-msgstr ""
-
-msgid "run the qseries command with colored output"
-msgstr ""
-
-msgid "wrap ui.write for colored diff output"
-msgstr ""
-
-msgid "wrap cmdutil.changeset_printer.showpatch with colored output"
-msgstr ""
-
-msgid "run the diff command with colored output"
-msgstr ""
-
-msgid "Initialize the extension."
-msgstr ""
-
-msgid "patch in command to command table and load effect map"
-msgstr ""
-
-msgid "when to colorize (always, auto, or never)"
-msgstr ""
-
-msgid "don't colorize output"
-msgstr ""
-
-msgid "converting foreign VCS repositories to Mercurial"
-msgstr ""
-
-msgid ""
-"convert a foreign SCM repository to a Mercurial one.\n"
-"\n"
-"    Accepted source formats [identifiers]:\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"
-"\n"
-"    Accepted destination formats [identifiers]:\n"
-"    - Mercurial [hg]\n"
-"    - Subversion [svn] (history on branches is not preserved)\n"
-"\n"
-"    If no revision is given, all revisions will be converted. Otherwise,\n"
-"    convert will only import up to the named revision (given in a format\n"
-"    understood by the source).\n"
-"\n"
-"    If no destination directory name is specified, it defaults to the\n"
-"    basename of the source with '-hg' appended.  If the destination\n"
-"    repository doesn't exist, it will be created.\n"
-"\n"
-"    If <REVMAP> isn't given, it will be put in a default location\n"
-"    (<dest>/.hg/shamap by default).  The <REVMAP> is a simple text\n"
-"    file that maps each source commit ID to the destination ID for\n"
-"    that revision, like so:\n"
-"    <source ID> <destination ID>\n"
-"\n"
-"    If the file doesn't exist, it's automatically created.  It's updated\n"
-"    on each commit copied, so convert-repo can be interrupted and can\n"
-"    be run repeatedly to copy new commits.\n"
-"\n"
-"    The [username mapping] file is a simple text file that maps each source\n"
-"    commit author to a destination commit author. It is handy for source "
-"SCMs\n"
-"    that use unix logins to identify authors (eg: CVS). One line per author\n"
-"    mapping and the line format is:\n"
-"    srcauthor=whatever string you want\n"
-"\n"
-"    The filemap is a file that allows filtering and remapping of files\n"
-"    and directories.  Comment lines start with '#'.  Each line can\n"
-"    contain one of the following directives:\n"
-"\n"
-"      include path/to/file\n"
-"\n"
-"      exclude path/to/file\n"
-"\n"
-"      rename from/file to/file\n"
-"\n"
-"    The 'include' directive causes a file, or all files under a\n"
-"    directory, to be included in the destination repository, and the\n"
-"    exclusion of all other files and dirs not explicitely included.\n"
-"    The 'exclude' directive causes files or directories to be omitted.\n"
-"    The 'rename' directive renames a file or directory.  To rename from a\n"
-"    subdirectory into the root of the repository, use '.' as the path to\n"
-"    rename to.\n"
-"\n"
-"    The splicemap is a file that allows insertion of synthetic\n"
-"    history, letting you specify the parents of a revision.  This is\n"
-"    useful if you want to e.g. give a Subversion merge two parents, or\n"
-"    graft two disconnected series of history together.  Each entry\n"
-"    contains a key, followed by a space, followed by one or two\n"
-"    values, separated by spaces.  The key is the revision ID in the\n"
-"    source revision control system whose parents should be modified\n"
-"    (same format as a key in .hg/shamap).  The values are the revision\n"
-"    IDs (in either the source or destination revision control system)\n"
-"    that should be used as the new parents for that node.\n"
-"\n"
-"    Mercurial Source\n"
-"    -----------------\n"
-"\n"
-"    --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=True          (boolean)\n"
-"        allow target to preserve source revision ID\n"
-"    --config convert.hg.startrev=0            (hg revision identifier)\n"
-"        convert start revision and its descendants\n"
-"\n"
-"    CVS Source\n"
-"    ----------\n"
-"\n"
-"    CVS source will use a sandbox (i.e. a checked-out copy) from CVS\n"
-"    to indicate the starting point of what will be converted. Direct\n"
-"    access to the repository files is not needed, unless of course\n"
-"    the repository is :local:. The conversion uses the top level\n"
-"    directory in the sandbox to find the CVS repository, and then uses\n"
-"    CVS rlog commands to find files to convert. This means that unless\n"
-"    a filemap is given, all files under the starting directory will be\n"
-"    converted, and that any directory reorganisation in the CVS\n"
-"    sandbox is ignored.\n"
-"\n"
-"    Because CVS does not have changesets, it is necessary to collect\n"
-"    individual commits to CVS and merge them into changesets. CVS\n"
-"    source uses its internal changeset merging code by default but can\n"
-"    be configured to call the external 'cvsps' program by setting:\n"
-"        --config convert.cvsps='cvsps -A -u --cvs-direct -q'\n"
-"    This is a legacy option and may be removed in future.\n"
-"\n"
-"    The options shown are the defaults.\n"
-"\n"
-"    Internal cvsps is selected by setting\n"
-"        --config convert.cvsps=builtin\n"
-"    and has a few more configurable options:\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\n"
-"            of a 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"
-"\n"
-"    The hgext/convert/cvsps wrapper script allows the builtin changeset\n"
-"    merging code to be run without doing a conversion. Its parameters and\n"
-"    output are similar to that of cvsps 2.1.\n"
-"\n"
-"    Subversion Source\n"
-"    -----------------\n"
-"\n"
-"    Subversion source detects classical trunk/branches/tags layouts.\n"
-"    By default, the supplied \"svn://repo/path/\" source URL is\n"
-"    converted as a single branch. If \"svn://repo/path/trunk\" exists\n"
-"    it replaces the default branch. If \"svn://repo/path/branches\"\n"
-"    exists, its subdirectories are listed as possible branches. If\n"
-"    \"svn://repo/path/tags\" exists, it is looked for tags referencing\n"
-"    converted branches. Default \"trunk\", \"branches\" and \"tags\" values\n"
-"    can be overriden with following options. Set them to paths\n"
-"    relative to the source URL, or leave them blank to disable\n"
-"    autodetection.\n"
-"\n"
-"    --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\n"
-"\n"
-"    Source history can be retrieved starting at a specific revision,\n"
-"    instead of being integrally converted. Only single branch\n"
-"    conversions are supported.\n"
-"\n"
-"    --config convert.svn.startrev=0           (svn revision number)\n"
-"        specify start Subversion revision.\n"
-"\n"
-"    Mercurial Destination\n"
-"    ---------------------\n"
-"\n"
-"    --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\n"
-"\n"
-"    "
-msgstr ""
-
-msgid ""
-"create changeset information from CVS\n"
-"\n"
-"    This command is intended as a debugging tool for the CVS to Mercurial\n"
-"    converter, and can be used as a direct replacement for cvsps.\n"
-"\n"
-"    Hg debugcvsps reads the CVS rlog for current directory (or any named\n"
-"    directory) in the CVS repository, and converts the log to a series of\n"
-"    changesets based on matching commit log entries and dates."
-msgstr ""
-
-msgid "username mapping filename"
-msgstr ""
-
-msgid "destination repository type"
-msgstr ""
-
-msgid "remap file names using contents of file"
-msgstr ""
-
-msgid "import up to target revision REV"
-msgstr ""
-
-msgid "source repository type"
-msgstr ""
-
-msgid "splice synthesized history into place"
-msgstr ""
-
-msgid "try to sort changesets by date"
-msgstr ""
-
-msgid "hg convert [OPTION]... SOURCE [DEST [REVMAP]]"
-msgstr ""
-
-msgid "only return changes on specified branches"
-msgstr ""
-
-msgid "prefix to remove from file names"
-msgstr ""
-
-msgid "only return changes after or between specified tags"
-msgstr ""
-
-msgid "update cvs log cache"
-msgstr ""
-
-msgid "create new cvs log cache"
-msgstr ""
-
-msgid "set commit time fuzz in seconds"
-msgstr ""
-
-msgid "specify cvsroot"
-msgstr ""
-
-msgid "show parent changesets"
-msgstr ""
-
-msgid "show current changeset in ancestor branches"
-msgstr ""
-
-msgid "ignored for compatibility"
-msgstr ""
-
-msgid "hg debugcvsps [OPTION]... [PATH]..."
-msgstr ""
-
-#, python-format
-msgid "%s is not a valid revision in current branch"
-msgstr ""
-
-#, python-format
-msgid "%s is not available in %s anymore"
-msgstr ""
-
-#, python-format
-msgid "cannot find required \"%s\" tool"
-msgstr ""
-
-#, python-format
-msgid "running: %s\n"
-msgstr ""
-
-#, python-format
-msgid "%s error:\n"
-msgstr ""
-
-#, python-format
-msgid "%s %s"
-msgstr ""
-
-#, python-format
-msgid "could not open map file %r: %s"
-msgstr ""
-
-#, python-format
-msgid "%s: missing or unsupported repository"
-msgstr ""
-
-#, python-format
-msgid "convert: %s\n"
-msgstr ""
-
-#, python-format
-msgid "%s: unknown repository type"
-msgstr ""
-
-#, python-format
-msgid "cycle detected between %s and %s"
-msgstr ""
-
-msgid "not all revisions were sorted"
-msgstr ""
-
-#, python-format
-msgid "Writing author map file %s\n"
-msgstr ""
-
-#, python-format
-msgid "Overriding mapping for author %s, was %s, will be %s\n"
-msgstr ""
-
-#, python-format
-msgid "mapping author %s to %s\n"
-msgstr ""
-
-#, python-format
-msgid "Ignoring bad line in author map file %s: %s\n"
-msgstr ""
-
-#, python-format
-msgid "spliced in %s as parents of %s\n"
-msgstr ""
-
-msgid "scanning source...\n"
-msgstr ""
-
-msgid "sorting...\n"
-msgstr ""
-
-msgid "converting...\n"
-msgstr ""
-
-#, python-format
-msgid "source: %s\n"
-msgstr ""
-
-#, python-format
-msgid "assuming destination %s\n"
-msgstr ""
-
-#, python-format
-msgid "revision %s is not a patchset number or date"
-msgstr ""
-
-msgid "using builtin cvsps\n"
-msgstr ""
-
-#, python-format
-msgid "connecting to %s\n"
-msgstr ""
-
-msgid "CVS pserver authentication failed"
-msgstr ""
-
-msgid "server sucks"
-msgstr ""
-
-#, python-format
-msgid "%d bytes missing from remote file"
-msgstr ""
-
-#, python-format
-msgid "cvs server: %s\n"
-msgstr ""
-
-#, python-format
-msgid "unknown CVS response: %s"
-msgstr ""
-
-msgid "collecting CVS rlog\n"
-msgstr ""
-
-#, python-format
-msgid "reading cvs log cache %s\n"
-msgstr ""
-
-#, python-format
-msgid "cache has %d log entries\n"
-msgstr ""
-
-#, python-format
-msgid "error reading cache: %r\n"
-msgstr ""
-
-#, python-format
-msgid "running %s\n"
-msgstr ""
-
-#, python-format
-msgid "prefix=%r directory=%r root=%r\n"
-msgstr ""
-
-msgid "RCS file must be followed by working file"
-msgstr ""
-
-msgid "must have at least some revisions"
-msgstr ""
-
-msgid "expected revision number"
-msgstr ""
-
-msgid "revision must be followed by date line"
-msgstr ""
-
-#, python-format
-msgid "writing cvs log cache %s\n"
-msgstr ""
-
-#, python-format
-msgid "%d log entries\n"
-msgstr ""
-
-msgid "creating changesets\n"
-msgstr ""
-
-#, python-format
-msgid "%d changeset entries\n"
-msgstr ""
-
-msgid "Python ElementTree module is not available"
-msgstr ""
-
-#, python-format
-msgid "cleaning up %s\n"
-msgstr ""
-
-msgid "internal calling inconsistency"
-msgstr ""
-
-msgid "errors in filemap"
-msgstr ""
-
-#, python-format
-msgid "%s:%d: %r already in %s list\n"
-msgstr ""
-
-#, python-format
-msgid "%s:%d: unknown directive %r\n"
-msgstr ""
-
-msgid "source repository doesn't support --filemap"
-msgstr ""
-
-#, python-format
-msgid "%s does not look like a GNU Arch repo"
-msgstr ""
-
-msgid "cannot find a GNU Arch tool"
-msgstr ""
-
-#, python-format
-msgid "analyzing tree version %s...\n"
-msgstr ""
-
-#, python-format
-msgid ""
-"tree analysis stopped because it points to an unregistered archive %s...\n"
-msgstr ""
-
-#, python-format
-msgid "applying revision %s...\n"
-msgstr ""
-
-#, python-format
-msgid "computing changeset between %s and %s...\n"
-msgstr ""
-
-#, python-format
-msgid "obtaining revision %s...\n"
-msgstr ""
-
-#, python-format
-msgid "analysing revision %s...\n"
-msgstr ""
-
-#, python-format
-msgid "could not parse cat-log of %s"
-msgstr ""
-
-#, python-format
-msgid "%s is not a local Mercurial repo"
-msgstr "%s 不是本地的水银版本库"
-
-#, python-format
-msgid "initializing destination %s repository\n"
-msgstr "初始化目标版本库 %s\n"
-
-msgid "run hg sink pre-conversion action\n"
-msgstr "执行动作 hg sink pre-conversion\n"
-
-msgid "run hg sink post-conversion action\n"
-msgstr "执行动作 hg sink post-conversion action\n"
-
-#, python-format
-msgid "pulling from %s into %s\n"
-msgstr "自 %s 拉到 %s\n"
-
-msgid "updating tags\n"
-msgstr "正在更新标签\n"
-
-#, python-format
-msgid "%s is not a valid start revision"
-msgstr "%s 不是有效的开始版本"
-
-#, python-format
-msgid "ignoring: %s\n"
-msgstr "忽略: %s\n"
-
-msgid "run hg source pre-conversion action\n"
-msgstr "执行动作 hg source pre-conversion\n"
-
-msgid "run hg source post-conversion action\n"
-msgstr "执行动作 hg source post-conversion\n"
-
-#, python-format
-msgid "%s does not look like a monotone repo"
-msgstr "%s 不像是单纯的 monotone 版本库"
-
-#, python-format
-msgid "copying file in renamed dir from '%s' to '%s'"
-msgstr "从已改名的目录 '%s' 复制文件到 '%s'"
-
-msgid "Subversion python bindings could not be loaded"
-msgstr "不能加载 svn 的 python 绑定"
-
-#, python-format
-msgid "Subversion python bindings %d.%d found, 1.4 or later required"
-msgstr "发现 svn 的 python 绑定版本 %d.%d,需要 1.4 或更新的版本"
-
-msgid "Subversion python bindings are too old, 1.4 or later required"
-msgstr "svn 的 python 绑定太旧,需要 1.4 或更新的版本"
-
-#, python-format
-msgid "svn: revision %s is not an integer"
-msgstr "svn: 版本 %s 不是整数"
-
-#, python-format
-msgid "svn: start revision %s is not an integer"
-msgstr "svn: 开始版本 %s 不是整数"
-
-#, python-format
-msgid "no revision found in module %s"
-msgstr "没有在模块 %s 中发现版本"
-
-#, python-format
-msgid "expected %s to be at %r, but not found"
-msgstr "期望 %s 位于 %r,但是没有发现"
-
-#, python-format
-msgid "found %s at %r\n"
-msgstr "发现 %s 位于 %r\n"
-
-#, python-format
-msgid "ignoring empty branch %s\n"
-msgstr "忽略空的分支 %s\n"
-
-#, python-format
-msgid "found branch %s at %d\n"
-msgstr "发现分支 %s 位于 %d\n"
-
-msgid "svn: start revision is not supported with with more than one branch"
-msgstr "svn: 在给出多于一个分支时不支持开始版本"
-
-#, python-format
-msgid "svn: no revision found after start revision %d"
-msgstr "svn: 在开始版本 %d 之后没有版本"
-
-#, python-format
-msgid "no tags found at revision %d\n"
-msgstr "在版本 %d 没有发现标签\n"
-
-#, python-format
-msgid "ignoring foreign branch %r\n"
-msgstr "忽略外部分支 %r\n"
-
-#, python-format
-msgid "%s not found up to revision %d"
-msgstr "没有发现 %s,一直到版本 %d"
-
-#, python-format
-msgid "branch renamed from %s to %s at %d\n"
-msgstr "分支从 %s 改名为 %s,在 %d\n"
-
-#, python-format
-msgid "reparent to %s\n"
-msgstr ""
-
-#, python-format
-msgid "copied to %s from %s@%s\n"
-msgstr "复制到 %s,自 %s@%s\n"
-
-#, python-format
-msgid "gone from %s\n"
-msgstr "离开 %s\n"
-
-#, python-format
-msgid "found parent directory %s\n"
-msgstr "发现父目录 %s\n"
-
-#, python-format
-msgid "base, entry %s %s\n"
-msgstr "基本,入口 %s %s\n"
-
-msgid "munge-o-matic\n"
-msgstr ""
-
-#, python-format
-msgid "info: %s %s %s %s\n"
-msgstr "信息: %s %s %s %s\n"
-
-#, python-format
-msgid "unknown path in revision %d: %s\n"
-msgstr "版本 %d 有未知路径: %s\n"
-
-#, python-format
-msgid "mark %s came from %s:%d\n"
-msgstr "标记 %s 来自 %s:%d\n"
-
-#, python-format
-msgid "parsing revision %d (%d changes)\n"
-msgstr "解析版本 %d (%d 个改变)\n"
-
-#, python-format
-msgid "found parent of branch %s at %d: %s\n"
-msgstr "发现分支 %s 的父亲,在 %d: %s\n"
-
-msgid "no copyfrom path, don't know what to do.\n"
-msgstr "没有 copyfrom 路径,不知道该怎么办。\n"
-
-#, python-format
-msgid "fetching revision log for \"%s\" from %d to %d\n"
-msgstr "为 \"%s\" 获取版本日志,自 %d 到 %d\n"
-
-#, python-format
-msgid "skipping blacklisted revision %d\n"
-msgstr "忽略黑名单版本 %d\n"
-
-#, python-format
-msgid "revision %d has no entries\n"
-msgstr "版本 %d 没有入口\n"
-
-#, python-format
-msgid "svn: branch has no revision %s"
-msgstr "svn: 分支没有版本 %s"
-
-#, python-format
-msgid "%r is not under %r, ignoring\n"
-msgstr "%r 不在 %r 之下,忽略之\n"
-
-#, python-format
-msgid "initializing svn repo %r\n"
-msgstr "初始化 svn 版本库 %r\n"
-
-#, python-format
-msgid "initializing svn wc %r\n"
-msgstr "初始化 svn 工作副本 %r\n"
-
-msgid "unexpected svn output:\n"
-msgstr "意外的 svn 输出:\n"
-
-msgid "unable to cope with svn output"
-msgstr "不能处理 svn 的输出"
-
-msgid "XXX TAGS NOT IMPLEMENTED YET\n"
-msgstr ""
-
-msgid ""
-"\n"
-"The `extdiff' Mercurial extension allows you to use external programs\n"
-"to compare revisions, or revision with working dir.  The external diff\n"
-"programs are called with a configurable set of options and two\n"
-"non-option arguments: paths to directories containing snapshots of\n"
-"files to compare.\n"
-"\n"
-"To enable this extension:\n"
-"\n"
-"  [extensions]\n"
-"  hgext.extdiff =\n"
-"\n"
-"The `extdiff' extension also allows to configure new diff commands, so\n"
-"you do not need to type \"hg extdiff -p kdiff3\" always.\n"
-"\n"
-"  [extdiff]\n"
-"  # add new command that runs GNU diff(1) in 'context diff' mode\n"
-"  cdiff = gdiff -Nprc5\n"
-"  ## or the old way:\n"
-"  #cmd.cdiff = gdiff\n"
-"  #opts.cdiff = -Nprc5\n"
-"\n"
-"  # add new command called vdiff, runs kdiff3\n"
-"  vdiff = kdiff3\n"
-"\n"
-"  # add new command called meld, runs meld (no need to name twice)\n"
-"  meld =\n"
-"\n"
-"  # add new command called vimdiff, runs gvimdiff with DirDiff plugin\n"
-"  #(see http://www.vim.org/scripts/script.php?script_id=102)\n"
-"  # Non english user, be sure to put \"let g:DirDiffDynamicDiffText = 1\" in\n"
-"  # your .vimrc\n"
-"  vimdiff = gvim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)'\n"
-"\n"
-"You can use -I/-X and list of file or directory names like normal\n"
-"\"hg diff\" command.  The `extdiff' extension makes snapshots of only\n"
-"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 ""
-
-msgid "snapshot files as of some revision"
-msgstr ""
-
-#, python-format
-msgid "making snapshot of %d files from rev %s\n"
-msgstr ""
-
-msgid ""
-"snapshot files from working directory.\n"
-"    if not using snapshot, -I/-X does not work and recursive diff\n"
-"    in tools like kdiff3 and meld displays too many files."
-msgstr ""
-
-#, python-format
-msgid "making snapshot of %d files from working dir\n"
-msgstr ""
-
-msgid ""
-"Do the actuall diff:\n"
-"\n"
-"    - copy to a temp structure if diffing 2 internal revisions\n"
-"    - copy to a temp structure if diffing working revision with\n"
-"      another one and more than 1 file is changed\n"
-"    - just invoke the diff for a single file in the working dir\n"
-"    "
-msgstr ""
-
-msgid "cannot specify --rev and --change at the same time"
-msgstr "不能同时指定 '--rev' 和 '--change'"
-
-#, python-format
-msgid "running %r in %s\n"
-msgstr ""
-
-#, python-format
-msgid "file changed while diffing. Overwriting: %s (src: %s)\n"
-msgstr ""
-
-msgid "cleaning up temp directory\n"
-msgstr ""
-
-msgid ""
-"use external program to diff repository (or selected files)\n"
-"\n"
-"    Show differences between revisions for the specified files, using\n"
-"    an external program.  The default program used is diff, with\n"
-"    default options \"-Npru\".\n"
-"\n"
-"    To select a different program, use the -p option.  The program\n"
-"    will be passed the names of two directories to compare.  To pass\n"
-"    additional options to the program, use the -o option.  These will\n"
-"    be passed before the names of the directories to compare.\n"
-"\n"
-"    When two revision arguments are given, then changes are\n"
-"    shown between those revisions. If only one revision is\n"
-"    specified then that revision is compared to the working\n"
-"    directory, and, when no revisions are specified, the\n"
-"    working directory files are compared to its parent."
-msgstr ""
-
-msgid "comparison program to run"
-msgstr ""
-
-msgid "pass option to comparison program"
-msgstr ""
-
-msgid "change made by revision"
-msgstr "此版本的修改"
-
-msgid "hg extdiff [OPT]... [FILE]..."
-msgstr ""
-
-msgid "use closure to save diff command to use"
-msgstr ""
-
-#, python-format
-msgid "hg %s [OPTION]... [FILE]..."
-msgstr ""
-
-msgid "pulling, updating and merging in one command"
-msgstr ""
-
-msgid ""
-"pull changes from a remote repository, merge new changes if needed.\n"
-"\n"
-"    This finds all changes from the repository at the specified path\n"
-"    or URL and adds them to the local repository.\n"
-"\n"
-"    If the pulled changes add a new branch head, the head is automatically\n"
-"    merged, and the result of the merge is committed.  Otherwise, the\n"
-"    working directory is updated to include the new changes.\n"
-"\n"
-"    When a merge occurs, the newly pulled changes are assumed to be\n"
-"    \"authoritative\".  The head of the new changes is used as the first\n"
-"    parent, with local changes as the second.  To switch the merge\n"
-"    order, use --switch-parent.\n"
-"\n"
-"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
-"    "
-msgstr ""
-
-msgid ""
-"working dir not at branch tip (use \"hg update\" to check out branch tip)"
-msgstr ""
-
-msgid "outstanding uncommitted merge"
-msgstr ""
-
-msgid "outstanding uncommitted changes"
-msgstr ""
-
-msgid "working directory is missing some files"
-msgstr ""
-
-msgid ""
-"multiple heads in this branch (use \"hg heads .\" and \"hg merge\" to merge)"
-msgstr ""
-
-#, python-format
-msgid "pulling from %s\n"
-msgstr "正在拉自 %s\n"
-
-msgid "fetch -r doesn't work for remote repositories yet"
-msgstr ""
-
-#, python-format
-msgid ""
-"not merging with %d other new branch heads (use \"hg heads .\" and \"hg merge"
-"\" to merge them)\n"
-msgstr ""
-
-#, python-format
-msgid "updating to %d:%s\n"
-msgstr ""
-
-#, python-format
-msgid "merging with %d:%s\n"
-msgstr ""
-
-#, python-format
-msgid "Automated merge with %s"
-msgstr ""
-
-#, 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 "指定取得的版本"
-
-msgid "edit commit message"
-msgstr "编辑提交日志"
-
-msgid "edit commit message (DEPRECATED)"
-msgstr "编辑提交日志(不赞成)"
-
-msgid "switch parents when merging"
-msgstr "当合并时切换父亲"
-
-msgid "hg fetch [SOURCE]"
-msgstr ""
-
-msgid " returns of the good and bad signatures"
-msgstr ""
-
-msgid "error while verifying signature"
-msgstr ""
-
-msgid "create a new gpg instance"
-msgstr ""
-
-msgid ""
-"\n"
-"    walk over every sigs, yields a couple\n"
-"    ((node, version, sig), (filename, linenumber))\n"
-"    "
-msgstr ""
-
-msgid "get the keys who signed a data"
-msgstr ""
-
-#, python-format
-msgid "%s Bad signature from \"%s\"\n"
-msgstr ""
-
-#, python-format
-msgid "%s Note: Signature has expired (signed by: \"%s\")\n"
-msgstr ""
-
-#, python-format
-msgid "%s Note: This key has expired (signed by: \"%s\")\n"
-msgstr ""
-
-msgid "list signed changesets"
-msgstr ""
-
-#, python-format
-msgid "%s:%d node does not exist\n"
-msgstr ""
-
-msgid "verify all the signatures there may be for a particular revision"
-msgstr ""
-
-#, python-format
-msgid "No valid signature for %s\n"
-msgstr ""
-
-msgid "associate a string to a key (username, comment)"
-msgstr ""
-
-msgid ""
-"add a signature for the current or given revision\n"
-"\n"
-"    If no revision is given, the parent of the working directory is used,\n"
-"    or tip if no revision is checked out.\n"
-"\n"
-"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
-"    "
-msgstr ""
-
-msgid "uncommitted merge - please provide a specific revision"
-msgstr ""
-
-msgid "Error while signing"
-msgstr ""
-
-msgid ""
-"working copy of .hgsigs is changed (please commit .hgsigs manually or use --"
-"force)"
-msgstr ""
-
-#, python-format
-msgid "Added signature for changeset %s"
-msgstr ""
-
-msgid "map a manifest into some text"
-msgstr ""
-
-msgid "unknown signature version"
-msgstr ""
-
-msgid "make the signature local"
-msgstr ""
-
-msgid "sign even if the sigfile is modified"
-msgstr ""
-
-msgid "do not commit the sigfile after signing"
-msgstr ""
-
-msgid "the key id to sign with"
-msgstr ""
-
-msgid "commit message"
-msgstr ""
-
-msgid "hg sign [OPTION]... [REVISION]..."
-msgstr ""
-
-msgid "hg sigcheck REVISION"
-msgstr ""
-
-msgid "hg sigs"
-msgstr ""
-
-msgid ""
-"show revision graphs in terminal windows\n"
-"\n"
-"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 ""
-
-msgid ""
-"cset DAG generator yielding (rev, node, [parents]) tuples\n"
-"\n"
-"    This generator function walks through the revision history from revision\n"
-"    start to revision stop (which must be less than or equal to start).\n"
-"    "
-msgstr ""
-
-msgid ""
-"file cset DAG generator yielding (rev, node, [parents]) tuples\n"
-"\n"
-"    This generator function walks through the revision history of a single\n"
-"    file from revision start to revision stop (which must be less than or\n"
-"    equal to start).\n"
-"    "
-msgstr ""
-
-msgid ""
-"grapher for asciigraph on a list of nodes and their parents\n"
-"\n"
-"    nodes must generate tuples (node, parents, char, lines) where\n"
-"     - parents must generate the parents of node, in sorted order,\n"
-"       and max length 2,\n"
-"     - char is the char to print as the node symbol, and\n"
-"     - lines are the lines to display next to the node.\n"
-"    "
-msgstr ""
-
-msgid ""
-"prints an ASCII graph of the DAG returned by the grapher\n"
-"\n"
-"    grapher is a generator that emits tuples with the following elements:\n"
-"\n"
-"      - Character to use as node's symbol.\n"
-"      - List of lines to display as the node's text.\n"
-"      - Column of the current node in the set of ongoing edges.\n"
-"      - Edges; a list of (col, next_col) indicating the edges between\n"
-"        the current node and its parents.\n"
-"      - Number of columns (ongoing edges) in the current revision.\n"
-"      - The difference between the number of columns (ongoing edges)\n"
-"        in the next revision and the number of columns (ongoing edges)\n"
-"        in the current revision. That is: -1 means one column removed;\n"
-"        0 means no columns added or removed; 1 means one column added.\n"
-"    "
-msgstr ""
-
-#, python-format
-msgid "--graph option is incompatible with --%s"
-msgstr ""
-
-msgid ""
-"show revision history alongside an ASCII revision graph\n"
-"\n"
-"    Print a revision history alongside a revision graph drawn with\n"
-"    ASCII characters.\n"
-"\n"
-"    Nodes printed as an @ character are parents of the working\n"
-"    directory.\n"
-"    "
-msgstr ""
-
-msgid ""
-"show the outgoing changesets alongside an ASCII revision graph\n"
-"\n"
-"    Print the outgoing changesets alongside a revision graph drawn with\n"
-"    ASCII characters.\n"
-"\n"
-"    Nodes printed as an @ character are parents of the working\n"
-"    directory.\n"
-"    "
-msgstr ""
-
-#, python-format
-msgid "comparing with %s\n"
-msgstr ""
-
-msgid "no changes found\n"
-msgstr "没有发现修改\n"
-
-msgid ""
-"show the incoming changesets alongside an ASCII revision graph\n"
-"\n"
-"    Print the incoming changesets alongside a revision graph drawn with\n"
-"    ASCII characters.\n"
-"\n"
-"    Nodes printed as an @ character are parents of the working\n"
-"    directory.\n"
-"    "
-msgstr ""
-
-msgid "wrap the command"
-msgstr ""
-
-msgid "show the revision DAG"
-msgstr "显示版本分支图"
-
-msgid "limit number of changes displayed"
-msgstr "限制显示的改变集数量"
-
-msgid "show patch"
-msgstr "显示补丁"
-
-msgid "show the specified revision or range"
-msgstr ""
-
-msgid "hg glog [OPTION]... [FILE]"
-msgstr ""
-
-msgid ""
-"CIA notification\n"
-"\n"
-"This is meant to be run as a changegroup or incoming hook.\n"
-"To configure it, set the following options in your hgrc:\n"
-"\n"
-"[cia]\n"
-"# your registered CIA user name\n"
-"user = foo\n"
-"# the name of the project in CIA\n"
-"project = foo\n"
-"# the module (subproject) (optional)\n"
-"#module = foo\n"
-"# 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"
-"# Style to use (optional)\n"
-"#style = foo\n"
-"# The URL of the CIA notification service (optional)\n"
-"# You can use mailto: URLs to send by email, eg\n"
-"# mailto:cia@cia.vc\n"
-"# 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\n"
-"\n"
-"[hooks]\n"
-"# one of these:\n"
-"changegroup.cia = python:hgcia.hook\n"
-"#incoming.cia = python:hgcia.hook\n"
-"\n"
-"[web]\n"
-"# If you want hyperlinks (optional)\n"
-"baseurl = http://server/path/to/repo\n"
-msgstr ""
-
-msgid " A CIA message "
-msgstr ""
-
-msgid " CIA notification class "
-msgstr ""
-
-#, python-format
-msgid "hgcia: sending update to %s\n"
-msgstr ""
-
-msgid " send CIA notification "
-msgstr ""
-
-msgid "email.from must be defined when sending by email"
-msgstr ""
-
-msgid "cia: no user specified"
-msgstr ""
-
-msgid "cia: no project specified"
-msgstr ""
-
-msgid ""
-"browsing the repository in a graphical way\n"
-"\n"
-"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\n"
-"not distributed with Mercurial.)\n"
-"\n"
-"hgk consists of two parts: a Tcl script that does the displaying and\n"
-"querying of information, and an extension to mercurial named hgk.py,\n"
-"which provides hooks for hgk to get information. hgk can be found in\n"
-"the contrib directory, and hgk.py can be found in the hgext directory.\n"
-"\n"
-"To load the hgext.py extension, add it to your .hgrc file (you have\n"
-"to use your global $HOME/.hgrc file, not one in a repository). You\n"
-"can specify an absolute path:\n"
-"\n"
-"  [extensions]\n"
-"  hgk=/usr/local/lib/hgk.py\n"
-"\n"
-"Mercurial can also scan the default python library path for a file\n"
-"named 'hgk.py' if you set hgk empty:\n"
-"\n"
-"  [extensions]\n"
-"  hgk=\n"
-"\n"
-"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\n"
-"specify the path to hgk in your .hgrc file:\n"
-"\n"
-"  [hgk]\n"
-"  path=/location/of/hgk\n"
-"\n"
-"hgk can make use of the extdiff extension to visualize revisions.\n"
-"Assuming you had already configured extdiff vdiff command, just add:\n"
-"\n"
-"  [hgk]\n"
-"  vdiff=vdiff\n"
-"\n"
-"Revisions context menu will now display additional entries to fire\n"
-"vdiff on hovered and selected revisions."
-msgstr ""
-
-msgid "diff trees from two commits"
-msgstr ""
-
-msgid "output common ancestor information"
-msgstr ""
-
-msgid "cat a specific revision"
-msgstr ""
-
-msgid "cat-file: type or revision not supplied\n"
-msgstr ""
-
-msgid "aborting hg cat-file only understands commits\n"
-msgstr ""
-
-msgid "parse given revisions"
-msgstr ""
-
-msgid "print revisions"
-msgstr ""
-
-msgid "print extension options"
-msgstr ""
-
-msgid "start interactive history viewer"
-msgstr ""
-
-msgid "hg view [-l LIMIT] [REVRANGE]"
-msgstr ""
-
-msgid "generate patch"
-msgstr ""
-
-msgid "recursive"
-msgstr ""
-
-msgid "pretty"
-msgstr ""
-
-msgid "stdin"
-msgstr ""
-
-msgid "detect copies"
-msgstr ""
-
-msgid "search"
-msgstr ""
-
-msgid "hg git-diff-tree [OPTION]... NODE1 NODE2 [FILE]..."
-msgstr ""
-
-msgid "hg debug-cat-file [OPTION]... TYPE FILE"
-msgstr ""
-
-msgid "hg debug-config"
-msgstr ""
-
-msgid "hg debug-merge-base node node"
-msgstr ""
-
-msgid "ignored"
-msgstr ""
-
-msgid "hg debug-rev-parse REV"
-msgstr ""
-
-msgid "header"
-msgstr ""
-
-msgid "topo-order"
-msgstr ""
-
-msgid "parents"
-msgstr ""
-
-msgid "max-count"
-msgstr ""
-
-msgid "hg debug-rev-list [options] revs"
-msgstr ""
-
-msgid ""
-"syntax highlighting in hgweb, based on Pygments\n"
-"\n"
-"It depends on the pygments syntax highlighting library:\n"
-"http://pygments.org/\n"
-"\n"
-"To enable the extension add this to hgrc:\n"
-"\n"
-"[extensions]\n"
-"hgext.highlight =\n"
-"\n"
-"There is a single configuration option:\n"
-"\n"
-"[web]\n"
-"pygments_style = <style>\n"
-"\n"
-"The default is 'colorful'.\n"
-"\n"
-"-- Adam Hupp <adam@hupp.org>\n"
-msgstr ""
-
-msgid "inotify-based status acceleration for Linux systems\n"
-msgstr ""
-
-msgid "start an inotify server for this repository"
-msgstr "为此版本库启动服务 'inotify'"
-
-msgid "(found dead inotify server socket; removing it)\n"
-msgstr ""
-
-msgid "(starting inotify server)\n"
-msgstr ""
-
-#, python-format
-msgid "could not start inotify server: %s\n"
-msgstr ""
-
-#, python-format
-msgid "could not talk to new inotify server: %s\n"
-msgstr ""
-
-msgid "(inotify server not running)\n"
-msgstr ""
-
-#, python-format
-msgid "failed to contact inotify server: %s\n"
-msgstr ""
-
-msgid "run server in background"
-msgstr "在后台运行服务"
-
-msgid "used internally by daemon mode"
-msgstr "在后台服务模式内部使用"
-
-msgid "minutes to sit idle before exiting"
-msgstr "空闲几分钟后退出"
-
-msgid "name of file to write process ID to"
-msgstr "写入进程标识符的文件名称"
-
-msgid "hg inserve [OPT]..."
-msgstr ""
-
-#, python-format
-msgid "(inotify: received response from incompatible server version %d)\n"
-msgstr ""
-
-msgid "this system does not seem to support inotify"
-msgstr ""
-
-#, python-format
-msgid "*** the current per-user limit on the number of inotify watches is %s\n"
-msgstr ""
-
-msgid "*** this limit is too low to watch every directory in this repository\n"
-msgstr ""
-
-msgid "*** counting directories: "
-msgstr ""
-
-#, python-format
-msgid "found %d\n"
-msgstr ""
-
-#, python-format
-msgid "*** to raise the limit from %d to %d (run as root):\n"
-msgstr ""
-
-#, python-format
-msgid "***  echo %d > %s\n"
-msgstr ""
-
-#, python-format
-msgid "cannot watch %s until inotify watch limit is raised"
-msgstr ""
-
-#, python-format
-msgid "inotify service not available: %s"
-msgstr ""
-
-#, python-format
-msgid "watching %r\n"
-msgstr ""
-
-#, python-format
-msgid "watching directories under %r\n"
-msgstr ""
-
-#, python-format
-msgid "status: %r dir(%d) -> %s\n"
-msgstr ""
-
-#, python-format
-msgid "status: %r %s -> %s\n"
-msgstr ""
-
-#, python-format
-msgid "%s dirstate reload\n"
-msgstr ""
-
-#, python-format
-msgid "%s end dirstate reload\n"
-msgstr ""
-
-msgid "rescanning due to .hgignore change\n"
-msgstr ""
-
-#, python-format
-msgid "%s event: created %s\n"
-msgstr ""
-
-#, python-format
-msgid "%s event: deleted %s\n"
-msgstr ""
-
-#, python-format
-msgid "%s event: modified %s\n"
-msgstr ""
-
-#, python-format
-msgid "filesystem containing %s was unmounted\n"
-msgstr ""
-
-#, python-format
-msgid "%s readable: %d bytes\n"
-msgstr ""
-
-#, python-format
-msgid "%s below threshold - unhooking\n"
-msgstr ""
-
-#, python-format
-msgid "%s reading %d events\n"
-msgstr ""
-
-#, python-format
-msgid "%s hooking back up with %d bytes readable\n"
-msgstr ""
-
-#, python-format
-msgid "%s processing %d deferred events as %d\n"
-msgstr ""
-
-#, python-format
-msgid "could not start server: %s"
-msgstr ""
-
-#, python-format
-msgid "received query from incompatible client version %d\n"
-msgstr ""
-
-#, python-format
-msgid "answering query for %r\n"
-msgstr ""
-
-msgid "finished setup\n"
-msgstr ""
-
-msgid "polling: no timeout\n"
-msgstr ""
-
-#, python-format
-msgid "polling: %sms timeout\n"
-msgstr ""
-
-#, python-format
-msgid "interhg: invalid pattern for %s: %s\n"
-msgstr ""
-
-#, python-format
-msgid "interhg: invalid regexp for %s: %s\n"
-msgstr ""
-
-msgid ""
-"keyword expansion in local repositories\n"
-"\n"
-"This extension expands RCS/CVS-like or self-customized $Keywords$\n"
-"in tracked text files selected by your configuration.\n"
-"\n"
-"Keywords are only expanded in local repositories and not stored in\n"
-"the change history. The mechanism can be regarded as a convenience\n"
-"for the current user or for archive distribution.\n"
-"\n"
-"Configuration is done in the [keyword] and [keywordmaps] sections\n"
-"of hgrc files.\n"
-"\n"
-"Example:\n"
-"\n"
-"    [keyword]\n"
-"    # expand keywords in every python file except those matching \"x*\"\n"
-"    **.py =\n"
-"    x*    = ignore\n"
-"\n"
-"Note: the more specific you are in your filename patterns\n"
-"      the less you lose speed in huge repos.\n"
-"\n"
-"For [keywordmaps] template mapping and expansion demonstration and\n"
-"control run \"hg kwdemo\".\n"
-"\n"
-"An additional date template filter {date|utcdate} is provided.\n"
-"\n"
-"The default template mappings (view with \"hg kwdemo -d\") can be replaced\n"
-"with customized keywords and templates.\n"
-"Again, run \"hg kwdemo\" to control the results of your config changes.\n"
-"\n"
-"Before changing/disabling active keywords, run \"hg kwshrink\" to avoid\n"
-"the risk of inadvertedly storing expanded keywords in the change history.\n"
-"\n"
-"To force expansion after enabling it, or a configuration change, run\n"
-"\"hg kwexpand\".\n"
-"\n"
-"Also, when committing with the record extension or using mq's qrecord, be "
-"aware\n"
-"that keywords cannot be updated. Again, run \"hg kwexpand\" on the files in\n"
-"question to update keyword expansions after all changes have been checked "
-"in.\n"
-"\n"
-"Expansions spanning more than one line and incremental expansions,\n"
-"like CVS' $Log$, are not supported. A keyword template map\n"
-"\"Log = {desc}\" expands to the first line of the changeset description.\n"
-msgstr ""
-
-msgid "Returns hgdate in cvs-like UTC format."
-msgstr ""
-
-msgid ""
-"\n"
-"    Sets up keyword templates, corresponding keyword regex, and\n"
-"    provides keyword substitution functions.\n"
-"    "
-msgstr ""
-
-msgid "Replaces keywords in data with expanded template."
-msgstr ""
-
-msgid "Returns data with keywords expanded."
-msgstr ""
-
-msgid ""
-"Returns true if path matches [keyword] pattern\n"
-"        and is not a symbolic link.\n"
-"        Caveat: localrepository._link fails on Windows."
-msgstr ""
-
-msgid "Overwrites selected files expanding/shrinking keywords."
-msgstr ""
-
-#, python-format
-msgid "overwriting %s %s keywords\n"
-msgstr ""
-
-msgid "Unconditionally removes all keyword substitutions from text."
-msgstr ""
-
-msgid "Returns text with all keyword substitutions removed."
-msgstr ""
-
-msgid "Returns lines with keyword substitutions removed."
-msgstr ""
-
-msgid ""
-"If in restricted mode returns data read from wdir with\n"
-"        keyword substitutions removed."
-msgstr ""
-
-msgid ""
-"\n"
-"    Subclass of filelog to hook into its read, add, cmp methods.\n"
-"    Keywords are \"stored\" unexpanded, and processed on reading.\n"
-"    "
-msgstr ""
-
-msgid "Expands keywords when reading filelog."
-msgstr ""
-
-msgid "Removes keyword substitutions when adding to filelog."
-msgstr ""
-
-msgid "Removes keyword substitutions for comparison."
-msgstr ""
-
-msgid ""
-"Bails out if [keyword] configuration is not active.\n"
-"    Returns status of working directory."
-msgstr ""
-
-msgid "[keyword] patterns cannot match"
-msgstr ""
-
-msgid "no [keyword] patterns configured"
-msgstr ""
-
-msgid "Selects files and passes them to kwtemplater.overwrite."
-msgstr ""
-
-msgid ""
-"print [keywordmaps] configuration and an expansion example\n"
-"\n"
-"    Show current, custom, or default keyword template maps\n"
-"    and their expansion.\n"
-"\n"
-"    Extend current configuration by specifying maps as arguments\n"
-"    and optionally by reading from an additional hgrc file.\n"
-"\n"
-"    Override current keyword template maps with \"default\" option.\n"
-"    "
-msgstr ""
-
-#, python-format
-msgid ""
-"\n"
-"\t%s\n"
-msgstr ""
-
-#, python-format
-msgid "creating temporary repo at %s\n"
-msgstr ""
-
-#, python-format
-msgid ""
-"\n"
-"%s keywords written to %s:\n"
-msgstr ""
-
-msgid "unhooked all commit hooks\n"
-msgstr ""
-
-#, python-format
-msgid ""
-"\n"
-"removing temporary repo %s\n"
-msgstr ""
-"\n"
-"正在删除临时版本库 %s\n"
-
-msgid ""
-"expand keywords in working directory\n"
-"\n"
-"    Run after (re)enabling keyword expansion.\n"
-"\n"
-"    kwexpand refuses to run if given files contain local changes.\n"
-"    "
-msgstr ""
-
-msgid ""
-"print files currently configured for keyword expansion\n"
-"\n"
-"    Crosscheck which files in working directory are potential targets for\n"
-"    keyword expansion.\n"
-"    That is, files matched by [keyword] config patterns but not symlinks.\n"
-"    "
-msgstr ""
-
-msgid ""
-"revert expanded keywords in working directory\n"
-"\n"
-"    Run before changing/disabling active keywords\n"
-"    or if you experience problems with \"hg import\" or \"hg merge\".\n"
-"\n"
-"    kwshrink refuses to run if given files contain local changes.\n"
-"    "
-msgstr ""
-
-msgid ""
-"Collects [keyword] config in kwtools.\n"
-"    Monkeypatches dispatch._parse if needed."
-msgstr ""
-
-msgid "Monkeypatch dispatch._parse to obtain running hg command."
-msgstr ""
-
-msgid ""
-"Sets up repo as kwrepo for keyword substitution.\n"
-"    Overrides file method to return kwfilelog instead of filelog\n"
-"    if file matches user configuration.\n"
-"    Wraps commit to overwrite configured files with updated\n"
-"    keyword substitutions.\n"
-"    Monkeypatches patch and webcommands."
-msgstr ""
-
-msgid ""
-"Monkeypatch/wrap patch.patchfile.__init__ to avoid\n"
-"        rejects or conflicts due to expanded keywords in working dir."
-msgstr ""
-
-msgid ""
-"Monkeypatch patch.diff to avoid expansion except when\n"
-"        comparing against working dir."
-msgstr ""
-
-msgid "Wraps webcommands.x turning off keyword expansion."
-msgstr ""
-
-msgid "show default keyword template maps"
-msgstr ""
-
-msgid "read maps from rcfile"
-msgstr ""
-
-msgid "hg kwdemo [-d] [-f RCFILE] [TEMPLATEMAP]..."
-msgstr ""
-
-msgid "hg kwexpand [OPTION]... [FILE]..."
-msgstr ""
-
-msgid "show keyword status flags of all files"
-msgstr ""
-
-msgid "show files excluded from expansion"
-msgstr ""
-
-msgid "additionally show untracked files"
-msgstr ""
-
-msgid "hg kwfiles [OPTION]... [FILE]..."
-msgstr ""
-
-msgid "hg kwshrink [OPTION]... [FILE]..."
-msgstr ""
-
-msgid ""
-"patch management and development\n"
-"\n"
-"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).\n"
-"\n"
-"Known patches are represented as patch files in the .hg/patches\n"
-"directory.  Applied patches are both patch files and changesets.\n"
-"\n"
-"Common tasks (use \"hg help command\" for more details):\n"
-"\n"
-"prepare repository to work with patches   qinit\n"
-"create new patch                          qnew\n"
-"import existing patch                     qimport\n"
-"\n"
-"print patch series                        qseries\n"
-"print applied patches                     qapplied\n"
-"print name of top applied patch           qtop\n"
-"\n"
-"add known patch to applied stack          qpush\n"
-"remove patch from applied stack           qpop\n"
-"refresh contents of top applied patch     qrefresh\n"
-msgstr ""
-
-msgid ""
-"Update all references to a field in the patch header.\n"
-"        If none found, add it email style."
-msgstr ""
-
-msgid ""
-"Remove existing message, keeping the rest of the comments fields.\n"
-"        If comments contains 'subject: ', message will prepend\n"
-"        the field and a blank line."
-msgstr ""
-
-#, python-format
-msgid "%s appears more than once in %s"
-msgstr ""
-
-msgid "guard cannot be an empty string"
-msgstr ""
-
-#, python-format
-msgid "guard %r starts with invalid character: %r"
-msgstr ""
-
-#, python-format
-msgid "invalid character in guard %r: %r"
-msgstr ""
-
-#, python-format
-msgid "active guards: %s\n"
-msgstr ""
-
-#, python-format
-msgid "guard %r too short"
-msgstr ""
-
-#, python-format
-msgid "guard %r starts with invalid char"
-msgstr ""
-
-#, python-format
-msgid "allowing %s - no guards in effect\n"
-msgstr ""
-
-#, python-format
-msgid "allowing %s - no matching negative guards\n"
-msgstr ""
-
-#, python-format
-msgid "allowing %s - guarded by %r\n"
-msgstr ""
-
-#, python-format
-msgid "skipping %s - guarded by %r\n"
-msgstr ""
-
-#, python-format
-msgid "skipping %s - no matching guards\n"
-msgstr ""
-
-#, python-format
-msgid "error removing undo: %s\n"
-msgstr ""
-
-#, python-format
-msgid "apply failed for patch %s"
-msgstr ""
-
-#, python-format
-msgid "patch didn't work out, merging %s\n"
-msgstr ""
-
-#, python-format
-msgid "update returned %d"
-msgstr ""
-
-msgid "repo commit failed"
-msgstr ""
-
-#, python-format
-msgid "unable to read %s"
-msgstr ""
-
-#, python-format
-msgid "patch %s does not exist\n"
-msgstr ""
-
-#, python-format
-msgid "patch %s is not applied\n"
-msgstr ""
-
-msgid ""
-"Apply patchfile  to the working directory.\n"
-"        patchfile: file name of patch"
-msgstr ""
-
-msgid "patch failed, unable to continue (try -v)\n"
-msgstr ""
-
-#, python-format
-msgid "applying %s\n"
-msgstr ""
-
-#, python-format
-msgid "Unable to read %s\n"
-msgstr ""
-
-#, python-format
-msgid "imported patch %s\n"
-msgstr ""
-
-#, python-format
-msgid ""
-"\n"
-"imported patch %s"
-msgstr ""
-
-#, python-format
-msgid "patch %s is empty\n"
-msgstr ""
-
-msgid "patch failed, rejects left in working dir\n"
-msgstr ""
-
-msgid "fuzz found when applying patch, stopping\n"
-msgstr ""
-
-#, python-format
-msgid "revision %d is not managed"
-msgstr ""
-
-#, python-format
-msgid "cannot delete revision %d above applied patches"
-msgstr ""
-
-msgid "qdelete requires at least one revision or patch name"
-msgstr ""
-
-#, python-format
-msgid "cannot delete applied patch %s"
-msgstr ""
-
-#, python-format
-msgid "patch %s not in series file"
-msgstr ""
-
-msgid "no patches applied"
-msgstr ""
-
-msgid "working directory revision is not qtip"
-msgstr ""
-
-msgid "local changes found, refresh first"
-msgstr ""
-
-msgid "local changes found"
-msgstr ""
-
-#, python-format
-msgid "\"%s\" cannot be used as the name of a patch"
-msgstr ""
-
-msgid ""
-"options:\n"
-"           msg: a string or a no-argument function returning a string\n"
-"        "
-msgstr ""
-
-#, python-format
-msgid "patch \"%s\" already exists"
-msgstr ""
-
-#, python-format
-msgid "error unlinking %s\n"
-msgstr ""
-
-msgid "returns (index, rev, patch)"
-msgstr ""
-
-#, python-format
-msgid "patch name \"%s\" is ambiguous:\n"
-msgstr ""
-
-#, python-format
-msgid "patch %s not in series"
-msgstr ""
-
-msgid "(working directory not at tip)\n"
-msgstr ""
-
-msgid "no patches in series\n"
-msgstr ""
-
-#, python-format
-msgid "cannot push to a previous patch: %s"
-msgstr ""
-
-#, python-format
-msgid "qpush: %s is already at the top\n"
-msgstr ""
-
-#, python-format
-msgid "guarded by %r"
-msgstr ""
-
-msgid "no matching guards"
-msgstr ""
-
-#, python-format
-msgid "cannot push '%s' - %s\n"
-msgstr ""
-
-msgid "all patches are currently applied\n"
-msgstr ""
-
-msgid "patch series already fully applied\n"
-msgstr ""
-
-msgid "cleaning up working directory..."
-msgstr ""
-
-#, python-format
-msgid "errors during apply, please fix and refresh %s\n"
-msgstr ""
-
-#, python-format
-msgid "now at: %s\n"
-msgstr ""
-
-#, python-format
-msgid "patch %s is not applied"
-msgstr ""
-
-msgid "no patches applied\n"
-msgstr ""
-
-#, python-format
-msgid "qpop: %s is already at the top\n"
-msgstr ""
-
-msgid "qpop: forcing dirstate update\n"
-msgstr ""
-
-#, python-format
-msgid "trying to pop unknown node %s"
-msgstr ""
-
-msgid "popping would remove a revision not managed by this patch queue"
-msgstr ""
-
-msgid "deletions found between repo revs"
-msgstr ""
-
-msgid "patch queue now empty\n"
-msgstr ""
-
-msgid "cannot refresh a revision with children"
-msgstr ""
-
-msgid ""
-"refresh interrupted while patch was popped! (revert --all, qpush to recover)\n"
-msgstr ""
-
-msgid "patch queue directory already exists"
-msgstr ""
-
-#, python-format
-msgid "patch %s is not in series file"
-msgstr ""
-
-msgid "No saved patch data found\n"
-msgstr ""
-
-#, python-format
-msgid "restoring status: %s\n"
-msgstr ""
-
-msgid "save entry has children, leaving it alone\n"
-msgstr ""
-
-#, python-format
-msgid "removing save entry %s\n"
-msgstr ""
-
-#, python-format
-msgid "saved queue repository parents: %s %s\n"
-msgstr ""
-
-msgid "queue directory updating\n"
-msgstr ""
-
-msgid "Unable to load queue repository\n"
-msgstr ""
-
-msgid "save: no patches applied, exiting\n"
-msgstr ""
-
-msgid "status is already saved\n"
-msgstr ""
-
-msgid "hg patches saved state"
-msgstr ""
-
-msgid "repo commit failed\n"
-msgstr ""
-
-msgid ""
-"If all_patches is False, return the index of the next pushable patch\n"
-"        in the series, or the series length. If all_patches is True, return "
-"the\n"
-"        index of the first patch past the last applied one.\n"
-"        "
-msgstr ""
-
-#, python-format
-msgid "patch %s is already in the series file"
-msgstr ""
-
-msgid "option \"-r\" not valid when importing files"
-msgstr ""
-
-msgid "option \"-n\" not valid when importing multiple patches"
-msgstr ""
-
-#, python-format
-msgid "revision %d is the root of more than one branch"
-msgstr ""
-
-#, python-format
-msgid "revision %d is already managed"
-msgstr ""
-
-#, python-format
-msgid "revision %d is not the parent of the queue"
-msgstr ""
-
-#, python-format
-msgid "revision %d has unmanaged children"
-msgstr ""
-
-#, python-format
-msgid "cannot import merge revision %d"
-msgstr ""
-
-#, python-format
-msgid "revision %d is not the parent of %d"
-msgstr ""
-
-msgid "-e is incompatible with import from -"
-msgstr ""
-
-#, python-format
-msgid "patch %s does not exist"
-msgstr ""
-
-msgid "need --name to import a patch from -"
-msgstr ""
-
-#, python-format
-msgid "adding %s to series file\n"
-msgstr ""
-
-msgid ""
-"remove patches from queue\n"
-"\n"
-"    The patches must not be applied, unless they are arguments to\n"
-"    the --rev parameter. At least one patch or revision is required.\n"
-"\n"
-"    With --rev, mq will stop managing the named revisions (converting\n"
-"    them to regular mercurial changesets). The qfinish command should be\n"
-"    used as an alternative for qdel -r, as the latter option is deprecated.\n"
-"\n"
-"    With --keep, the patch files are preserved in the patch directory."
-msgstr ""
-
-msgid "print the patches already applied"
-msgstr ""
-
-msgid "print the patches not yet applied"
-msgstr ""
-
-msgid ""
-"import a patch\n"
-"\n"
-"    The patch is inserted into the series after the last applied patch.\n"
-"    If no patches have been applied, qimport prepends the patch\n"
-"    to the series.\n"
-"\n"
-"    The patch will have the same name as its source file unless you\n"
-"    give it a new one with --name.\n"
-"\n"
-"    You can register an existing patch inside the patch directory\n"
-"    with the --existing flag.\n"
-"\n"
-"    With --force, an existing patch of the same name will be overwritten.\n"
-"\n"
-"    An existing changeset may be placed under mq control with --rev\n"
-"    (e.g. qimport --rev tip -n patch will place tip under mq control).\n"
-"    With --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 changes.\n"
-"    "
-msgstr ""
-"导入补丁\n"
-"\n"
-"    此补丁插入到最近一次应用的补丁序列中。\n"
-"    如果尚无应用补丁,qimport 会插入补丁到序列开始。\n"
-"\n"
-"    除非你使用 '--name' 给出补丁名称,否则就与源文件同名。\n"
-"\n"
-"    你可以使用 '--existing' 注册一个已在补丁目录中的补丁。\n"
-"\n"
-"    使用 '--force' 会覆盖已有的补丁。\n"
-"\n"
-"    可以使用 '--rev' 将已有的改变集置于 mq 控制下(例如 \n"
-"    'qimport --rev tip -n patch' 会将 tip 置于 mq 控制下)。当使用 '--git'\n"
-"    时,'--rev' 导入的补丁将会使用 git 差异格式。参见差异帮助主题,以了解\n"
-"    为什么这对于保留改名/复制信息和权限修改很重要。\n"
-"    "
-
-msgid ""
-"init a new queue repository\n"
-"\n"
-"    The queue repository is unversioned by default. If -c is\n"
-"    specified, qinit will create a separate nested repository\n"
-"    for patches (qinit -c may also be run later to convert\n"
-"    an unversioned patch repository into a versioned one).\n"
-"    You can use qcommit to commit changes to this queue repository."
-msgstr ""
-"初始化队列仓库\n"
-"\n"
-"    默认队列仓库不受版本控制。如果指定了 '-c',那么 qinit 会为补丁创建一个\n"
-"    单独的嵌套版本库(也可以稍后运行 'qinit -c' 来将不受版本控制的补丁仓库\n"
-"    转换成受版本控制)。你可以使用 'qcommit' 提交改变到此队列版本库。"
-
-msgid ""
-"clone main and patch repository at same time\n"
-"\n"
-"    If source is local, destination will have no patches applied.  If\n"
-"    source is remote, this command can not check if patches are\n"
-"    applied in source, so cannot guarantee that patches are not\n"
-"    applied in destination.  If you clone remote repository, be sure\n"
-"    before that it has no patches applied.\n"
-"\n"
-"    Source patch repository is looked for in <src>/.hg/patches by\n"
-"    default.  Use -p <url> to change.\n"
-"\n"
-"    The patch directory must be a nested mercurial repository, as\n"
-"    would be created by qinit -c.\n"
-"    "
-msgstr ""
-
-msgid "versioned patch repository not found (see qinit -c)"
-msgstr ""
-
-msgid "cloning main repo\n"
-msgstr ""
-
-msgid "cloning patch repo\n"
-msgstr ""
-
-msgid "stripping applied patches from destination repo\n"
-msgstr ""
-
-msgid "updating destination repo\n"
-msgstr ""
-
-msgid "commit changes in the queue repository"
-msgstr ""
-
-msgid "print the entire series file"
-msgstr ""
-
-msgid "print the name of the current patch"
-msgstr ""
-
-msgid "print the name of the next patch"
-msgstr ""
-
-msgid "all patches applied\n"
-msgstr ""
-
-msgid "print the name of the previous patch"
-msgstr ""
-
-msgid "only one patch applied\n"
-msgstr ""
-
-msgid ""
-"create a new patch\n"
-"\n"
-"    qnew creates a new patch on top of the currently-applied patch (if any).\n"
-"    It will refuse to run if there are any outstanding changes unless -f is\n"
-"    specified, in which case the patch will be initialized with them. You\n"
-"    may also use -I, -X, and/or a list of files after the patch name to add\n"
-"    only changes to matching files to the new patch, leaving the rest as\n"
-"    uncommitted modifications.\n"
-"\n"
-"    -u and -d can be used to set the (given) user and date, respectively.\n"
-"    -U and -D set user to current user and date to current date.\n"
-"\n"
-"    -e, -m or -l set the patch header as well as the commit message. If none\n"
-"    is specified, the header is empty and the commit message is '[mq]: "
-"PATCH'.\n"
-"\n"
-"    Use the --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.\n"
-"    "
-msgstr ""
-
-msgid ""
-"update the current patch\n"
-"\n"
-"    If any file patterns are provided, the refreshed patch will contain only\n"
-"    the modifications that match those patterns; the remaining modifications\n"
-"    will remain in the working directory.\n"
-"\n"
-"    If --short is specified, files currently included in the patch will\n"
-"    be refreshed just like matched files and remain in the patch.\n"
-"\n"
-"    hg add/remove/copy/rename work as usual, though you might want to use\n"
-"    git-style patches (--git or [diff] git=1) to track copies and renames.\n"
-"    See the diffs help topic for more information on the git diff format.\n"
-"    "
-msgstr ""
-"更新当前补丁\n"
-"\n"
-"    如果提供了文件匹配模式,更新后的补丁只包含匹配这些模式的修改,其它\n"
-"    的修改仍旧在工作目录中。\n"
-"\n"
-"    如果指定了 '--short',只更新已经在补丁中的文件,与文件匹配模式类似。\n"
-"\n"
-"    'hg add/remove/copy/rename' 如常工作,你可能想使用 git 格式补丁(使\n"
-"    用选项 '--git' 或在配置文件的 [diff] 区中设置 git=1)以跟踪复制和改\n"
-"    名。请参见差异帮助主题,以了解关于 git 差异格式的更多信息。\n"
-"    "
-
-msgid "option \"-e\" incompatible with \"-m\" or \"-l\""
-msgstr ""
-
-msgid ""
-"diff of the current patch and subsequent modifications\n"
-"\n"
-"    Shows a diff which includes the current patch as well as any changes "
-"which\n"
-"    have been made in the working directory since the last refresh (thus\n"
-"    showing what the current patch would become after a qrefresh).\n"
-"\n"
-"    Use 'hg diff' if you only want to see the changes made since the last\n"
-"    qrefresh, or 'hg export qtip' if you want to see changes made by the\n"
-"    current patch without including changes made since the qrefresh.\n"
-"    "
-msgstr ""
-"显式当前的补丁和后续的修改\n"
-"\n"
-"    显示当前的补丁和最近一次刷新之后的修改(因而在执行 'qrefresh' 之后就只\n"
-"    显示当前的补丁)。\n"
-"\n"
-"    如果你只想看到最近一次刷新之后的修改请使用 'hg diff',如果你只想看到当\n"
-"    前的补丁请使用 'hg export qtip'。\n"
-"    "
-
-msgid ""
-"fold the named patches into the current patch\n"
-"\n"
-"    Patches must not yet be applied. Each patch will be successively\n"
-"    applied to the current patch in the order given. If all the\n"
-"    patches apply successfully, the current patch will be refreshed\n"
-"    with the new cumulative patch, and the folded patches will\n"
-"    be deleted. With -k/--keep, the folded patch files will not\n"
-"    be removed afterwards.\n"
-"\n"
-"    The header for each folded patch will be concatenated with\n"
-"    the current patch header, separated by a line of '* * *'."
-msgstr ""
-
-msgid "qfold requires at least one patch name"
-msgstr ""
-
-msgid "No patches applied"
-msgstr ""
-
-#, python-format
-msgid "Skipping already folded patch %s"
-msgstr ""
-
-#, python-format
-msgid "qfold cannot fold already applied patch %s"
-msgstr ""
-
-#, python-format
-msgid "Error folding patch %s"
-msgstr ""
-
-msgid "push or pop patches until named patch is at top of stack"
-msgstr ""
-
-msgid ""
-"set or print guards for a patch\n"
-"\n"
-"    Guards control whether a patch can be pushed. A patch with no\n"
-"    guards is always pushed. A patch with a positive guard (\"+foo\") is\n"
-"    pushed only if the qselect command has activated it. A patch with\n"
-"    a negative guard (\"-foo\") is never pushed if the qselect command\n"
-"    has activated it.\n"
-"\n"
-"    With no arguments, print the currently active guards.\n"
-"    With arguments, set guards for the named patch.\n"
-"    NOTE: Specifying negative guards now requires '--'.\n"
-"\n"
-"    To set guards on another patch:\n"
-"      hg qguard -- other.patch +2.6.17 -stable\n"
-"    "
-msgstr ""
-
-msgid "cannot mix -l/--list with options or arguments"
-msgstr ""
-
-msgid "no patch to work with"
-msgstr ""
-
-#, python-format
-msgid "no patch named %s"
-msgstr ""
-
-msgid "print the header of the topmost or specified patch"
-msgstr ""
-
-msgid ""
-"push the next patch onto the stack\n"
-"\n"
-"    When --force is applied, all local changes in patched files will be "
-"lost.\n"
-"    "
-msgstr ""
-"将下个补丁压入堆栈\n"
-"\n"
-"    当指定 '--force' 时,所有在补丁文件中的本地修改都会丢失。\n"
-"    "
-
-msgid "no saved queues found, please use -n\n"
-msgstr ""
-
-#, python-format
-msgid "merging with queue at: %s\n"
-msgstr ""
-
-msgid ""
-"pop the current patch off the stack\n"
-"\n"
-"    By default, pops off the top of the patch stack. If given a patch name,\n"
-"    keeps popping off patches until the named patch is at the top of the "
-"stack.\n"
-"    "
-msgstr ""
-"将当前补丁弹出堆栈\n"
-"\n"
-"    默认将补丁堆栈的顶部弹出。如果指定了补丁名称,那么就会一直弹出,直到此\n"
-"    补丁位于堆栈顶部。\n"
-"    "
-
-#, python-format
-msgid "using patch queue: %s\n"
-msgstr ""
-
-msgid ""
-"rename a patch\n"
-"\n"
-"    With one argument, renames the current patch to PATCH1.\n"
-"    With two arguments, renames PATCH1 to PATCH2."
-msgstr ""
-
-#, python-format
-msgid "%s already exists"
-msgstr ""
-
-#, python-format
-msgid "A patch named %s already exists in the series file"
-msgstr ""
-
-msgid "restore the queue state saved by a rev"
-msgstr ""
-
-msgid "save current queue state"
-msgstr ""
-
-#, python-format
-msgid "destination %s exists and is not a directory"
-msgstr ""
-
-#, python-format
-msgid "destination %s exists, use -f to force"
-msgstr ""
-
-#, python-format
-msgid "copy %s to %s\n"
-msgstr ""
-
-msgid ""
-"strip a revision and all its descendants from the repository\n"
-"\n"
-"    If one of the working dir's parent revisions is stripped, the working\n"
-"    directory will be updated to the parent of the stripped revision.\n"
-"    "
-msgstr ""
-"从版本库删除一个版本以及它的子孙\n"
-"\n"
-"    如果有工作目录的父版本被删除,那么此目录会被更新到已删除版本的父版本。\n"
-"    "
-
-msgid ""
-"set or print guarded patches to push\n"
-"\n"
-"    Use the qguard command to set or print guards on patch, then use\n"
-"    qselect to tell mq which guards to use. A patch will be pushed if it\n"
-"    has no guards or any positive guards match the currently selected guard,\n"
-"    but will not be pushed if any negative guards match the current guard.\n"
-"    For example:\n"
-"\n"
-"        qguard foo.patch -stable    (negative guard)\n"
-"        qguard bar.patch +stable    (positive guard)\n"
-"        qselect stable\n"
-"\n"
-"    This activates the \"stable\" guard. mq will skip foo.patch (because\n"
-"    it has a negative match) but push bar.patch (because it\n"
-"    has a positive match).\n"
-"\n"
-"    With no arguments, prints the currently active guards.\n"
-"    With one argument, sets the active guard.\n"
-"\n"
-"    Use -n/--none to deactivate guards (no other arguments needed).\n"
-"    When no guards are active, patches with positive guards are skipped\n"
-"    and patches with negative guards are pushed.\n"
-"\n"
-"    qselect can change the guards on applied patches. It does not pop\n"
-"    guarded patches by default. Use --pop to pop back to the last applied\n"
-"    patch that is not guarded. Use --reapply (which implies --pop) to push\n"
-"    back to the current patch afterwards, but skip guarded patches.\n"
-"\n"
-"    Use -s/--series to print a list of all guards in the series file (no\n"
-"    other arguments needed). Use -v for more information."
-msgstr ""
-
-msgid "guards deactivated\n"
-msgstr ""
-
-#, python-format
-msgid "number of unguarded, unapplied patches has changed from %d to %d\n"
-msgstr ""
-
-#, python-format
-msgid "number of guarded, applied patches has changed from %d to %d\n"
-msgstr ""
-
-msgid "guards in series file:\n"
-msgstr ""
-
-msgid "no guards in series file\n"
-msgstr ""
-
-msgid "active guards:\n"
-msgstr ""
-
-msgid "no active guards\n"
-msgstr ""
-
-msgid "popping guarded patches\n"
-msgstr ""
-
-msgid "reapplying unguarded patches\n"
-msgstr ""
-
-msgid ""
-"move applied patches into repository history\n"
-"\n"
-"    Finishes the specified revisions (corresponding to applied patches) by\n"
-"    moving them out of mq control into regular repository history.\n"
-"\n"
-"    Accepts a revision range or the --applied option. If --applied is\n"
-"    specified, all applied mq revisions are removed from mq control.\n"
-"    Otherwise, the given revisions must be at the base of the stack of\n"
-"    applied patches.\n"
-"\n"
-"    This can be especially useful if your changes have been applied to an\n"
-"    upstream repository, or if you are about to push your changes to "
-"upstream.\n"
-"    "
-msgstr ""
-
-msgid "no revisions specified"
-msgstr ""
-
-msgid "cannot commit over an applied mq patch"
-msgstr ""
-
-msgid "source has mq patches applied"
-msgstr ""
-
-#, python-format
-msgid "mq status file refers to unknown node %s\n"
-msgstr ""
-
-#, python-format
-msgid "Tag %s overrides mq patch of the same name\n"
-msgstr ""
-
-msgid "cannot import over an applied patch"
-msgstr ""
-
-msgid "print first line of patch header"
-msgstr ""
-
-msgid "hg qapplied [-s] [PATCH]"
-msgstr ""
-
-msgid "use pull protocol to copy metadata"
-msgstr "数用协议 'pull' 来复制元数据"
-
-msgid "do not update the new working directories"
-msgstr ""
-
-msgid "use uncompressed transfer (fast over LAN)"
-msgstr "使用不压缩的传输(在局域网更快)"
-
-msgid "location of source patch repo"
-msgstr ""
-
-msgid "hg qclone [OPTION]... SOURCE [DEST]"
-msgstr ""
-
-msgid "hg qcommit [OPTION]... [FILE]..."
-msgstr ""
-
-msgid "hg qdiff [OPTION]... [FILE]..."
-msgstr ""
-
-msgid "keep patch file"
-msgstr ""
-
-msgid "stop managing a revision"
-msgstr ""
-
-msgid "hg qdelete [-k] [-r REV]... [PATCH]..."
-msgstr ""
-
-msgid "edit patch header"
-msgstr ""
-
-msgid "keep folded patch files"
-msgstr ""
-
-msgid "hg qfold [-e] [-k] [-m TEXT] [-l FILE] PATCH..."
-msgstr ""
-
-msgid "overwrite any local changes"
-msgstr ""
-
-msgid "hg qgoto [OPTION]... PATCH"
-msgstr ""
-
-msgid "list all patches and guards"
-msgstr ""
-
-msgid "drop all guards"
-msgstr ""
-
-msgid "hg qguard [-l] [-n] -- [PATCH] [+GUARD]... [-GUARD]..."
-msgstr ""
-
-msgid "hg qheader [PATCH]"
-msgstr ""
-
-msgid "import file in patch dir"
-msgstr "从补丁目录导入文件"
-
-msgid "patch file name"
-msgstr "补丁文件名称"
-
-msgid "overwrite existing files"
-msgstr "覆盖已有文件"
-
-msgid "place existing revisions under mq control"
-msgstr "将现有的版本置于 mq 控制下"
-
-msgid "use git extended diff format"
-msgstr "使用 git 扩展差异格式"
-
-msgid "hg qimport [-e] [-n NAME] [-f] [-g] [-r REV]... FILE..."
-msgstr ""
-
-msgid "create queue repository"
-msgstr "创建队列版本库"
-
-msgid "hg qinit [-c]"
-msgstr ""
-
-msgid "import uncommitted changes into patch"
-msgstr ""
-
-msgid "add \"From: <current user>\" to patch"
-msgstr ""
-
-msgid "add \"From: <given user>\" to patch"
-msgstr ""
-
-msgid "add \"Date: <current date>\" to patch"
-msgstr ""
-
-msgid "add \"Date: <given date>\" to patch"
-msgstr ""
-
-msgid "hg qnew [-e] [-m TEXT] [-l FILE] [-f] PATCH [FILE]..."
-msgstr ""
-
-msgid "hg qnext [-s]"
-msgstr ""
-
-msgid "hg qprev [-s]"
-msgstr ""
-
-msgid "pop all patches"
-msgstr "弹出全部补丁"
-
-msgid "queue name to pop"
-msgstr "操作的队列名称"
-
-msgid "forget any local changes"
-msgstr "丢弃本地修改"
-
-msgid "hg qpop [-a] [-n NAME] [-f] [PATCH | INDEX]"
-msgstr ""
-
-msgid "apply if the patch has rejects"
-msgstr "强制应用补丁"
-
-msgid "list patch name in commit text"
-msgstr "在提交日志中列出补丁名称"
-
-msgid "apply all patches"
-msgstr "应用所有补丁"
-
-msgid "merge from another queue"
-msgstr "从其它队列合并"
-
-msgid "merge queue name"
-msgstr "合并队列的名称"
-
-msgid "hg qpush [-f] [-l] [-a] [-m] [-n NAME] [PATCH | INDEX]"
-msgstr ""
-
-msgid "refresh only files already in the patch and specified files"
-msgstr "仅当文件已经在补丁或指定文件中时才更新"
-
-msgid "add/update \"From: <current user>\" in patch"
-msgstr "在补丁中增加/更新 \"From: <current user>\""
-
-msgid "add/update \"From: <given user>\" in patch"
-msgstr "在补丁中增加/更新 \"From: <given user>\""
-
-msgid "update \"Date: <current date>\" in patch (if present)"
-msgstr "在补丁中更新 \"Date: <current date>\" (如果存在)"
-
-msgid "update \"Date: <given date>\" in patch (if present)"
-msgstr "在补丁中更新 \"Date: <given date>\" (如果存在)"
-
-msgid "hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FILE] [-s] [FILE]..."
-msgstr ""
-
-msgid "hg qrename PATCH1 [PATCH2]"
-msgstr ""
-
-msgid "delete save entry"
-msgstr ""
-
-msgid "update queue working dir"
-msgstr ""
-
-msgid "hg qrestore [-d] [-u] REV"
-msgstr ""
-
-msgid "copy patch directory"
-msgstr ""
-
-msgid "copy directory name"
-msgstr ""
-
-msgid "clear queue status file"
-msgstr ""
-
-msgid "force copy"
-msgstr ""
-
-msgid "hg qsave [-m TEXT] [-l FILE] [-c] [-n NAME] [-e] [-f]"
-msgstr ""
-
-msgid "disable all guards"
-msgstr ""
-
-msgid "list all guards in series file"
-msgstr ""
-
-msgid "pop to before first guarded applied patch"
-msgstr ""
-
-msgid "pop, then reapply patches"
-msgstr ""
-
-msgid "hg qselect [OPTION]... [GUARD]..."
-msgstr ""
-
-msgid "print patches not in series"
-msgstr ""
-
-msgid "hg qseries [-ms]"
-msgstr ""
-
-msgid "force removal with local changes"
-msgstr "强制删除,纵然有本地修改"
-
-msgid "bundle unrelated changesets"
-msgstr "打包不相关的改变集"
-
-msgid "no backups"
-msgstr "不备份"
-
-msgid "hg strip [-f] [-b] [-n] REV"
-msgstr ""
-
-msgid "hg qtop [-s]"
-msgstr ""
-
-msgid "hg qunapplied [-s] [PATCH]"
-msgstr ""
-
-msgid "finish all applied changesets"
-msgstr ""
-
-msgid "hg qfinish [-a] [REV...]"
-msgstr ""
-
-msgid ""
-"hook extension to email notifications on commits/pushes\n"
-"\n"
-"Subscriptions can be managed through hgrc. Default mode is to print\n"
-"messages to stdout, for testing and configuring.\n"
-"\n"
-"To use, configure notify extension and enable in hgrc like this:\n"
-"\n"
-"   [extensions]\n"
-"   hgext.notify =\n"
-"\n"
-"   [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"
-"\n"
-"   [notify]\n"
-"   # config items go in here\n"
-"\n"
-" config items:\n"
-"\n"
-" REQUIRED:\n"
-"   config = /path/to/file # file containing subscriptions\n"
-"\n"
-" OPTIONAL:\n"
-"   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"
-"   [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\n"
-"\n"
-" notify config file has same format as regular hgrc. it has two\n"
-" sections so you can express subscriptions in whatever way is handier\n"
-" for you.\n"
-"\n"
-"   [usersubs]\n"
-"   # key is subscriber email, value is \",\"-separated list of glob patterns\n"
-"   user@host = pattern\n"
-"\n"
-"   [reposubs]\n"
-"   # key is glob pattern, value is \",\"-separated list of subscriber emails\n"
-"   pattern = user@host\n"
-"\n"
-" glob patterns are matched against path to repo root.\n"
-"\n"
-" if you like, you can put notify config file in repo that users can\n"
-" push changes to, they can manage their own subscriptions."
-msgstr ""
-
-msgid "email notification class."
-msgstr ""
-
-msgid "strip leading slashes from local path, turn into web-safe path."
-msgstr ""
-
-msgid "try to clean up email addresses."
-msgstr ""
-
-msgid "return list of email addresses of subscribers to this repo."
-msgstr ""
-
-msgid "format one changeset."
-msgstr ""
-
-msgid "true if incoming changes from this source should be skipped."
-msgstr ""
-
-msgid "send message."
-msgstr ""
-
-#, python-format
-msgid "%s: %d new changesets"
-msgstr ""
-
-#, python-format
-msgid "notify: sending %d subscribers %d changes\n"
-msgstr ""
-
-#, python-format
-msgid ""
-"\n"
-"diffs (truncated from %d to %d lines):\n"
-"\n"
-msgstr ""
-
-#, python-format
-msgid ""
-"\n"
-"diffs (%d lines):\n"
-"\n"
-msgstr ""
-
-msgid ""
-"send email notifications to interested subscribers.\n"
-"\n"
-"    if used as changegroup hook, send one email for all changesets in\n"
-"    changegroup. else send one email per changeset."
-msgstr ""
-
-#, python-format
-msgid "notify: no subscribers to repo %s\n"
-msgstr ""
-
-#, python-format
-msgid "notify: changes have source \"%s\" - skipping\n"
-msgstr ""
-
-msgid ""
-"browse command output with external pager\n"
-"\n"
-"To set the pager that should be used, set the application variable:\n"
-"\n"
-"  [pager]\n"
-"  pager = LESS='FSRX' less\n"
-"\n"
-"If no pager is set, the pager extensions uses the environment\n"
-"variable $PAGER. If neither pager.pager, nor $PAGER is set, no pager\n"
-"is used.\n"
-"\n"
-"If you notice \"BROKEN PIPE\" error messages, you can disable them\n"
-"by setting:\n"
-"\n"
-"  [pager]\n"
-"  quiet = True\n"
-"\n"
-"You can disable the pager for certain commands by adding them to the\n"
-"pager.ignore list:\n"
-"\n"
-"  [pager]\n"
-"  ignore = version, help, update\n"
-"\n"
-"You can also enable the pager only for certain commands using pager.attend:\n"
-"\n"
-"  [pager]\n"
-"  attend = log\n"
-"\n"
-"If pager.attend is present, pager.ignore will be ignored.\n"
-"\n"
-"To ignore global commands like \"hg version\" or \"hg help\", you have to "
-"specify\n"
-"them in the global .hgrc\n"
-msgstr ""
-
-msgid ""
-"use suffixes to refer to ancestor revisions\n"
-"\n"
-"This extension allows you to use git-style suffixes to refer to\n"
-"the ancestors of a specific revision.\n"
-"\n"
-"For example, if you can refer to a revision as \"foo\", then:\n"
-"\n"
-"- 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\n"
-"\n"
-"- 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 ""
-
-msgid ""
-"sending Mercurial changesets as a series of patch emails\n"
-"\n"
-"The series is started off with a \"[PATCH 0 of N]\" introduction,\n"
-"which describes the series as a whole.\n"
-"\n"
-"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 body parts:\n"
-"\n"
-"  The remainder of the changeset description.\n"
-"\n"
-"  [Optional] The result of running diffstat on the patch.\n"
-"\n"
-"  The patch itself, as generated by \"hg export\".\n"
-"\n"
-"Each message refers to all of its predecessors using the In-Reply-To\n"
-"and References headers, so they will show up as a sequence in\n"
-"threaded mail and news readers, and in mail archives.\n"
-"\n"
-"For each changeset, you will be prompted with a diffstat summary and\n"
-"the changeset summary, so you can be sure you are sending the right changes.\n"
-"\n"
-"To enable this extension:\n"
-"\n"
-"  [extensions]\n"
-"  hgext.patchbomb =\n"
-"\n"
-"To configure other defaults, add a section like this to your hgrc file:\n"
-"\n"
-"  [email]\n"
-"  from = My Name <my@email>\n"
-"  to = recipient1, recipient2, ...\n"
-"  cc = cc1, cc2, ...\n"
-"  bcc = bcc1, bcc2, ...\n"
-"\n"
-"Then you can use the \"hg email\" command to mail a series of changesets\n"
-"as a patchbomb.\n"
-"\n"
-"To avoid sending patches prematurely, it is a good idea to first run\n"
-"the \"email\" command with the \"-n\" option (test only).  You will be\n"
-"prompted for an email recipient address, a subject an an introductory\n"
-"message describing the patches of your patchbomb.  Then when all is\n"
-"done, patchbomb messages are displayed. If PAGER environment variable\n"
-"is set, your pager will be fired up once for each patchbomb message, so\n"
-"you can verify everything is alright.\n"
-"\n"
-"The \"-m\" (mbox) option is also very useful.  Instead of previewing\n"
-"each patchbomb message in a pager or sending the messages directly,\n"
-"it will create a UNIX mailbox file with the patch emails.  This\n"
-"mailbox file can be previewed with any mail user agent which supports\n"
-"UNIX mbox files, i.e. with mutt:\n"
-"\n"
-"  % mutt -R -f mbox\n"
-"\n"
-"When you are previewing the patchbomb messages, you can use `formail'\n"
-"(a utility that is commonly installed as part of the procmail package),\n"
-"to send each message out:\n"
-"\n"
-"  % formail -s sendmail -bm -t < mbox\n"
-"\n"
-"That should be all. Now your patchbomb is on its way out.\n"
-"\n"
-"You can also either configure the method option in the email section\n"
-"to be a sendmail compatable mailer or fill out the [smtp] section so\n"
-"that the patchbomb extension can automatically send patchbombs directly\n"
-"from the commandline. See the [email] and [smtp] sections in hgrc(5)\n"
-"for details."
-msgstr ""
-
-msgid "Please enter a valid value.\n"
-msgstr ""
-
-msgid "does the diffstat above look okay? "
-msgstr ""
-
-msgid "diffstat rejected"
-msgstr ""
-
-msgid ""
-"send changesets by email\n"
-"\n"
-"    By default, diffs are sent in the format generated by hg export,\n"
-"    one per message.  The series starts with a \"[PATCH 0 of N]\"\n"
-"    introduction, which describes the series as a whole.\n"
-"\n"
-"    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 body parts.  First, the rest of\n"
-"    the changeset description.  Next, (optionally) if the diffstat\n"
-"    program is installed, the result of running diffstat on the patch.\n"
-"    Finally, the patch itself, as generated by \"hg export\".\n"
-"\n"
-"    With --outgoing, emails will be generated for patches not\n"
-"    found in the destination repository (or only those which are\n"
-"    ancestors of the specified revisions if any are provided)\n"
-"\n"
-"    With --bundle, changesets are selected as for --outgoing,\n"
-"    but a single email containing a binary Mercurial bundle as an\n"
-"    attachment will be sent.\n"
-"\n"
-"    Examples:\n"
-"\n"
-"    hg email -r 3000          # send patch 3000 only\n"
-"    hg email -r 3000 -r 3001  # send patches 3000 and 3001\n"
-"    hg email -r 3000:3005     # send patches 3000 through 3005\n"
-"    hg email 3000             # send patch 3000 (deprecated)\n"
-"\n"
-"    hg email -o               # send all patches not in default\n"
-"    hg email -o DEST          # send all patches not in DEST\n"
-"    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\n"
-"\n"
-"    hg email -b               # send bundle of all patches not in default\n"
-"    hg email -b DEST          # send bundle of all patches not in DEST\n"
-"    hg email -b -r 3000       # bundle of all ancestors of 3000 not in "
-"default\n"
-"    hg email -b -r 3000 DEST  # bundle of all ancestors of 3000 not in DEST\n"
-"\n"
-"    Before using this command, you will need to enable email in your hgrc.\n"
-"    See the [email] section in hgrc(5) for details.\n"
-"    "
-msgstr ""
-
-msgid "Return the revisions present locally but not in dest"
-msgstr ""
-
-msgid "specify at least one changeset with -r or -o"
-msgstr ""
-
-msgid "--outgoing mode always on with --bundle; do not re-specify --outgoing"
-msgstr ""
-
-msgid "too many destinations"
-msgstr ""
-
-msgid "use only one form to specify the revision"
-msgstr ""
-
-msgid ""
-"\n"
-"Write the introductory message for the patch series.\n"
-"\n"
-msgstr ""
-
-#, python-format
-msgid ""
-"This patch series consists of %d patches.\n"
-"\n"
-msgstr ""
-
-msgid "Final summary:\n"
-msgstr ""
-
-msgid "Displaying "
-msgstr ""
-
-msgid "Writing "
-msgstr ""
-
-msgid "Sending "
-msgstr ""
-
-msgid "send patches as attachments"
-msgstr ""
-
-msgid "send patches as inline attachments"
-msgstr ""
-
-msgid "email addresses of blind copy recipients"
-msgstr ""
-
-msgid "email addresses of copy recipients"
-msgstr ""
-
-msgid "add diffstat output to messages"
-msgstr ""
-
-msgid "use the given date as the sending date"
-msgstr ""
-
-msgid "use the given file as the series description"
-msgstr ""
-
-msgid "email address of sender"
-msgstr ""
-
-msgid "print messages that would be sent"
-msgstr ""
-
-msgid "write messages to mbox file instead of sending them"
-msgstr ""
-
-msgid "subject of first message (intro or single patch)"
-msgstr ""
-
-msgid "email addresses of recipients"
-msgstr ""
-
-msgid "omit hg patch header"
-msgstr ""
-
-msgid "send changes not found in the target repository"
-msgstr ""
-
-msgid "send changes not in target as a binary bundle"
-msgstr ""
-
-msgid "a revision to send"
-msgstr ""
-
-msgid "run even when remote repository is unrelated (with -b)"
-msgstr ""
-
-msgid "a base changeset to specify instead of a destination (with -b)"
-msgstr ""
-
-msgid "send an introduction email for a single patch"
-msgstr ""
-
-msgid "hg email [OPTION]... [DEST]..."
-msgstr ""
-
-msgid ""
-"removes files not tracked by Mercurial\n"
-"\n"
-"    Delete files not known to Mercurial. This is useful to test local and\n"
-"    uncommitted changes in an otherwise-clean source tree.\n"
-"\n"
-"    This means that purge will delete:\n"
-"     - Unknown files: files marked with \"?\" by \"hg status\"\n"
-"     - Empty directories: in fact Mercurial ignores directories unless they\n"
-"       contain files under source control managment\n"
-"    But it will leave untouched:\n"
-"     - Modified and unmodified tracked files\n"
-"     - Ignored files (unless --all is specified)\n"
-"     - New files added to the repository (with \"hg add\")\n"
-"\n"
-"    If directories are given on the command line, only files in these\n"
-"    directories are considered.\n"
-"\n"
-"    Be careful with purge, as you could irreversibly delete some files you\n"
-"    forgot to add to the repository. If you only want to print the list of\n"
-"    files that this program would delete, use the --print option.\n"
-"    "
-msgstr ""
-
-#, python-format
-msgid "%s cannot be removed"
-msgstr ""
-
-#, python-format
-msgid "warning: %s\n"
-msgstr ""
-
-#, python-format
-msgid "Removing file %s\n"
-msgstr "正在删除文件 %s\n"
-
-#, python-format
-msgid "Removing directory %s\n"
-msgstr "正在删除目录 %s\n"
-
-msgid "abort if an error occurs"
-msgstr ""
-
-msgid "purge ignored files too"
-msgstr ""
-
-msgid "print the file names instead of deleting them"
-msgstr ""
-
-msgid "end filenames with NUL, for use with xargs (implies -p)"
-msgstr ""
-
-msgid "hg purge [OPTION]... [DIR]..."
-msgstr ""
-
-msgid ""
-"move sets of revisions to a different ancestor\n"
-"\n"
-"This extension lets you rebase changesets in an existing Mercurial "
-"repository.\n"
-"\n"
-"For more information:\n"
-"http://www.selenic.com/mercurial/wiki/index.cgi/RebaseProject\n"
-msgstr ""
-
-msgid "return the correct ancestor"
-msgstr ""
-
-msgid "first revision, do not change ancestor\n"
-msgstr ""
-
-msgid ""
-"move changeset (and descendants) to a different branch\n"
-"\n"
-"    Rebase uses repeated merging to graft changesets from one part of "
-"history\n"
-"    onto another. This can be useful for linearizing local changes relative "
-"to\n"
-"    a master development tree.\n"
-"\n"
-"    If a rebase is interrupted to manually resolve a merge, it can be "
-"continued\n"
-"    with --continue or aborted with --abort.\n"
-"    "
-msgstr ""
-
-msgid "cannot use both keepbranches and extrafn"
-msgstr ""
-
-msgid "cannot use both abort and continue"
-msgstr ""
-
-msgid "cannot use collapse with continue or abort"
-msgstr ""
-
-msgid "abort and continue do not allow specifying revisions"
-msgstr ""
-
-msgid "cannot specify both a revision and a base"
-msgstr ""
-
-msgid "nothing to rebase\n"
-msgstr ""
-
-msgid "rebase merging completed\n"
-msgstr ""
-
-msgid "warning: new changesets detected on source branch, not stripping\n"
-msgstr ""
-
-msgid "rebase completed\n"
-msgstr ""
-
-#, python-format
-msgid "%d revisions have been skipped\n"
-msgstr ""
-
-msgid ""
-"Skip commit if collapsing has been required and rev is not the last\n"
-"    revision, commit otherwise\n"
-"    "
-msgstr ""
-
-msgid " set parents\n"
-msgstr ""
-
-msgid "Rebase a single revision"
-msgstr ""
-
-#, python-format
-msgid "rebasing %d:%s\n"
-msgstr ""
-
-#, python-format
-msgid " future parents are %d and %d\n"
-msgstr ""
-
-#, python-format
-msgid " update to %d:%s\n"
-msgstr ""
-
-msgid " already in target\n"
-msgstr ""
-
-#, python-format
-msgid " merge against %d:%s\n"
-msgstr ""
-
-msgid "fix unresolved conflicts with hg resolve then run hg rebase --continue"
-msgstr ""
-
-msgid "resuming interrupted rebase\n"
-msgstr ""
-
-#, python-format
-msgid "no changes, revision %d skipped\n"
-msgstr ""
-
-#, python-format
-msgid "next revision set to %s\n"
-msgstr ""
-
-msgid "Return the new parent relationship of the revision that will be rebased"
-msgstr ""
-
-#, python-format
-msgid "cannot use revision %d as base, result would have 3 parents"
-msgstr ""
-
-msgid "Update rebased mq patches - finalize and then import them"
-msgstr ""
-
-#, python-format
-msgid "revision %d is an mq patch (%s), finalize it.\n"
-msgstr ""
-
-#, python-format
-msgid "import mq patch %d (%s)\n"
-msgstr ""
-
-msgid "Store the current status to allow recovery"
-msgstr ""
-
-msgid "rebase status stored\n"
-msgstr ""
-
-msgid "Remove the status files"
-msgstr ""
-
-msgid "Restore a previously stored status"
-msgstr ""
-
-msgid "rebase status resumed\n"
-msgstr ""
-
-msgid "no rebase in progress"
-msgstr ""
-
-msgid "Restore the repository to its original state"
-msgstr ""
-
-msgid "warning: new changesets detected on target branch, not stripping\n"
-msgstr ""
-
-msgid "rebase aborted\n"
-msgstr ""
-
-msgid "Define which revisions are going to be rebased and where"
-msgstr ""
-
-msgid "cannot rebase onto an applied mq patch"
-msgstr ""
-
-msgid "cannot rebase an ancestor"
-msgstr ""
-
-msgid "cannot rebase a descendant"
-msgstr ""
-
-msgid "already working on current\n"
-msgstr ""
-
-msgid "already working on the current branch\n"
-msgstr ""
-
-#, python-format
-msgid "rebase onto %d starting from %d\n"
-msgstr ""
-
-msgid "unable to collapse, there is more than one external parent"
-msgstr ""
-
-msgid "Call rebase after pull if the latter has been invoked with --rebase"
-msgstr ""
-
-msgid "--update and --rebase are not compatible, ignoring the update flag\n"
-msgstr ""
-
-msgid "Replace pull with a decorator to provide --rebase option"
-msgstr ""
-
-msgid "rebase working directory to branch head"
-msgstr ""
-
-msgid "keep original revisions"
-msgstr ""
-
-msgid "keep original branches"
-msgstr ""
-
-msgid "rebase from a given revision"
-msgstr ""
-
-msgid "rebase from the base of a given revision"
-msgstr ""
-
-msgid "rebase onto a given revision"
-msgstr ""
-
-msgid "collapse the rebased revisions"
-msgstr ""
-
-msgid "continue an interrupted rebase"
-msgstr ""
-
-msgid "abort an interrupted rebase"
-msgstr ""
-
-msgid ""
-"hg rebase [-s rev | -b rev] [-d rev] [--collapse] | [-c] | [-a] | [--keep]"
-msgstr ""
-
-msgid "interactive change selection during commit or qrefresh"
-msgstr ""
-
-msgid ""
-"like patch.iterhunks, but yield different events\n"
-"\n"
-"    - ('file',    [header_lines + fromfile + tofile])\n"
-"    - ('context', [context_lines])\n"
-"    - ('hunk',    [hunk_lines])\n"
-"    - ('range',   (-start,len, +start,len, diffp))\n"
-"    "
-msgstr ""
-
-msgid "scan lr while predicate holds"
-msgstr ""
-
-msgid ""
-"patch header\n"
-"\n"
-"    XXX shoudn't we move this to mercurial/patch.py ?\n"
-"    "
-msgstr ""
-
-msgid "this modifies a binary file (all or nothing)\n"
-msgstr ""
-
-msgid "this is a binary file\n"
-msgstr ""
-
-#, python-format
-msgid "%d hunks, %d lines changed\n"
-msgstr ""
-
-msgid "hunk -> (n+,n-)"
-msgstr ""
-
-msgid ""
-"patch hunk\n"
-"\n"
-"    XXX shouldn't we merge this with patch.hunk ?\n"
-"    "
-msgstr ""
-
-msgid "patch -> [] of hunks "
-msgstr ""
-
-msgid "patch parsing state machine"
-msgstr ""
-
-msgid "Interactively filter patch chunks into applied-only chunks"
-msgstr ""
-
-msgid ""
-"fetch next portion from chunks until a 'header' is seen\n"
-"        NB: header == new-file mark\n"
-"        "
-msgstr ""
-
-msgid ""
-"prompt query, and process base inputs\n"
-"\n"
-"        - y/n for the rest of file\n"
-"        - y/n for the rest\n"
-"        - ? (help)\n"
-"        - q (quit)\n"
-"\n"
-"        else, input is returned to the caller.\n"
-"        "
-msgstr ""
-
-msgid "[Ynsfdaq?]"
-msgstr ""
-
-msgid "y"
-msgstr ""
-
-msgid "?"
-msgstr ""
-
-msgid "y - record this change"
-msgstr ""
-
-msgid "s"
-msgstr ""
-
-msgid "f"
-msgstr ""
-
-msgid "d"
-msgstr ""
-
-msgid "a"
-msgstr ""
-
-msgid "q"
-msgstr ""
-
-msgid "user quit"
-msgstr "用户退出"
-
-#, python-format
-msgid "examine changes to %s?"
-msgstr ""
-
-msgid " and "
-msgstr ""
-
-#, python-format
-msgid "record this change to %r?"
-msgstr ""
-
-msgid ""
-"interactively select changes to commit\n"
-"\n"
-"    If a list of files is omitted, all changes reported by \"hg status\"\n"
-"    will be candidates for recording.\n"
-"\n"
-"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
-"\n"
-"    You will be prompted for whether to record changes to each\n"
-"    modified file, and for files with multiple changes, for each\n"
-"    change to use.  For each query, the following responses are\n"
-"    possible:\n"
-"\n"
-"    y - record this change\n"
-"    n - skip this change\n"
-"\n"
-"    s - skip remaining changes to this file\n"
-"    f - record remaining changes to this file\n"
-"\n"
-"    d - done, skip remaining changes and files\n"
-"    a - record all changes to all remaining files\n"
-"    q - quit, recording no changes\n"
-"\n"
-"    ? - display help"
-msgstr ""
-
-msgid ""
-"interactively record a new patch\n"
-"\n"
-"    see 'hg help qnew' & 'hg help record' for more information and usage\n"
-"    "
-msgstr ""
-
-msgid "'mq' extension not loaded"
-msgstr ""
-
-msgid "running non-interactively, use commit instead"
-msgstr ""
-
-msgid ""
-"This is generic record driver.\n"
-"\n"
-"        It's job is to interactively filter local changes, and accordingly\n"
-"        prepare working dir into a state, where the job can be delegated to\n"
-"        non-interactive commit command such as 'commit' or 'qrefresh'.\n"
-"\n"
-"        After the actual job is done by non-interactive command, working dir\n"
-"        state is restored to original.\n"
-"\n"
-"        In the end we'll record intresting changes, and everything else will "
-"be\n"
-"        left in place, so the user can continue his work.\n"
-"        "
-msgstr ""
-
-msgid "no changes to record\n"
-msgstr ""
-
-#, python-format
-msgid "backup %r as %r\n"
-msgstr ""
-
-msgid "applying patch\n"
-msgstr ""
-
-msgid "patch failed to apply"
-msgstr ""
-
-#, python-format
-msgid "restoring %r to %r\n"
-msgstr ""
-
-msgid "hg record [OPTION]... [FILE]..."
-msgstr ""
-
-msgid "hg qrecord [OPTION]... PATCH [FILE]..."
-msgstr ""
-
-msgid ""
-"patch transplanting tool\n"
-"\n"
-"This extension allows you to transplant patches from another branch.\n"
-"\n"
-"Transplanted patches are recorded in .hg/transplant/transplants, as a map\n"
-"from a changeset hash to its hash in the source repository.\n"
-msgstr ""
-
-msgid ""
-"returns True if a node is already an ancestor of parent\n"
-"        or has already been transplanted"
-msgstr ""
-
-msgid "apply the revisions in revmap one by one in revision order"
-msgstr ""
-
-#, python-format
-msgid "skipping already applied revision %s\n"
-msgstr ""
-
-#, python-format
-msgid "skipping merge changeset %s:%s\n"
-msgstr ""
-
-#, python-format
-msgid "%s merged at %s\n"
-msgstr ""
-
-#, python-format
-msgid "%s transplanted to %s\n"
-msgstr ""
-
-msgid "arbitrarily rewrite changeset before applying it"
-msgstr ""
-
-#, python-format
-msgid "filtering %s\n"
-msgstr ""
-
-msgid "filter failed"
-msgstr ""
-
-msgid "apply the patch in patchfile to the repository as a transplant"
-msgstr ""
-
-msgid "can only omit patchfile if merging"
-msgstr ""
-
-#, python-format
-msgid "%s: empty changeset"
-msgstr ""
-
-msgid "Fix up the merge and run hg transplant --continue"
-msgstr ""
-
-msgid "recover last transaction and apply remaining changesets"
-msgstr ""
-
-#, python-format
-msgid "%s transplanted as %s\n"
-msgstr ""
-
-msgid "commit working directory using journal metadata"
-msgstr ""
-
-msgid "transplant log file is corrupt"
-msgstr ""
-
-#, python-format
-msgid "working dir not at transplant parent %s"
-msgstr ""
-
-msgid "commit failed"
-msgstr ""
-
-msgid "journal changelog metadata for later recover"
-msgstr ""
-
-msgid "remove changelog journal"
-msgstr ""
-
-msgid "interactively transplant changesets"
-msgstr ""
-
-msgid "apply changeset? [ynmpcq?]:"
-msgstr ""
-
-msgid ""
-"transplant changesets from another branch\n"
-"\n"
-"    Selected changesets will be applied on top of the current working\n"
-"    directory with the log of the original changeset. If --log is\n"
-"    specified, log messages will have a comment appended of the form:\n"
-"\n"
-"    (transplanted from CHANGESETHASH)\n"
-"\n"
-"    You can rewrite the changelog message with the --filter option.\n"
-"    Its argument will be invoked with the current changelog message\n"
-"    as $1 and the patch as $2.\n"
-"\n"
-"    If --source is specified, selects changesets from the named\n"
-"    repository. If --branch is specified, selects changesets from the\n"
-"    branch holding the named revision, up to that revision. If --all\n"
-"    is specified, all changesets on the branch will be transplanted,\n"
-"    otherwise you will be prompted to select the changesets you want.\n"
-"\n"
-"    hg transplant --branch REVISION --all will rebase the selected branch\n"
-"    (up to the named revision) onto your current working directory.\n"
-"\n"
-"    You can optionally mark selected transplanted changesets as\n"
-"    merge changesets. You will not be prompted to transplant any\n"
-"    ancestors of a merged transplant, and you can merge descendants\n"
-"    of them normally instead of transplanting them.\n"
-"\n"
-"    If no merges or revisions are provided, hg transplant will start\n"
-"    an interactive changeset browser.\n"
-"\n"
-"    If a changeset application fails, you can fix the merge by hand and\n"
-"    then resume where you left off by calling hg transplant --continue.\n"
-"    "
-msgstr ""
-
-msgid "--continue is incompatible with branch, all or merge"
-msgstr ""
-
-msgid "no source URL, branch tag or revision list provided"
-msgstr ""
-
-msgid "--all requires a branch revision"
-msgstr ""
-
-msgid "--all is incompatible with a revision list"
-msgstr ""
-
-msgid "no revision checked out"
-msgstr ""
-
-msgid "outstanding uncommitted merges"
-msgstr ""
-
-msgid "outstanding local changes"
-msgstr ""
-
-msgid "pull patches from REPOSITORY"
-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 FILTER"
-msgstr ""
-
-msgid ""
-"hg transplant [-s REPOSITORY] [-b BRANCH [-a]] [-p REV] [-m REV] [REV]..."
-msgstr ""
-
-msgid ""
-"allow to use MBCS path with problematic encoding.\n"
-"\n"
-"Some MBCS encodings are not good for some path operations\n"
-"(i.e. splitting path, case conversion, etc.) with its encoded bytes.\n"
-"We call such a encoding (i.e. shift_jis and big5) as \"problematic\n"
-"encoding\".  This extension can be used to fix the issue with those\n"
-"encodings by wrapping some functions to convert to unicode string\n"
-"before path operation.\n"
-"\n"
-"This extension is usefull for:\n"
-" * Japanese Windows users using shift_jis encoding.\n"
-" * Chinese Windows users using big5 encoding.\n"
-" * All users who use a repository with one of problematic encodings\n"
-"   on case-insensitive file system.\n"
-"\n"
-"This extension is not needed for:\n"
-" * Any user who use only ascii chars in path.\n"
-" * Any user who do not use any of problematic encodings.\n"
-"\n"
-"Note that there are some limitations on using this extension:\n"
-" * You should use single encoding in one repository.\n"
-" * You should set same encoding for the repository by locale or HGENCODING.\n"
-"\n"
-"To use this extension, enable the extension in .hg/hgrc or ~/.hgrc:\n"
-"\n"
-"  [extensions]\n"
-"  hgext.win32mbcs =\n"
-"\n"
-"Path encoding conversion are done between unicode and util._encoding\n"
-"which is decided by mercurial from current locale setting or HGENCODING.\n"
-"\n"
-msgstr ""
-
-#, python-format
-msgid "[win32mbcs] filename conversion fail with %s encoding\n"
-msgstr ""
-
-msgid "[win32mbcs] cannot activate on this platform.\n"
-msgstr ""
-
-#, python-format
-msgid "[win32mbcs] activated with encoding: %s\n"
-msgstr ""
-
-#, python-format
-msgid ""
-"WARNING: %s already has %s line endings\n"
-"and does not need EOL conversion by the win32text plugin.\n"
-"Before your next commit, please reconsider your encode/decode settings in \n"
-"Mercurial.ini or %s.\n"
-msgstr ""
-
-#, python-format
-msgid "Attempt to commit or push text file(s) using %s line endings\n"
-msgstr ""
-
-#, python-format
-msgid "in %s: %s\n"
-msgstr ""
-
-#, python-format
-msgid ""
-"\n"
-"To prevent this mistake in your local repository,\n"
-"add to Mercurial.ini or .hg/hgrc:\n"
-"\n"
-"[hooks]\n"
-"pretxncommit.%s = python:hgext.win32text.forbid%s\n"
-"\n"
-"and also consider adding:\n"
-"\n"
-"[extensions]\n"
-"hgext.win32text =\n"
-"[encode]\n"
-"** = %sencode:\n"
-"[decode]\n"
-"** = %sdecode:\n"
-msgstr ""
-
-msgid ""
-"zeroconf support for mercurial repositories\n"
-"\n"
-"Zeroconf enabled repositories will be announced in a network without the "
-"need\n"
-"to configure a server or a service. They can be discovered without knowing\n"
-"their actual IP address.\n"
-"\n"
-"To use the zeroconf extension add the following entry to your hgrc file:\n"
-"\n"
-"[extensions]\n"
-"hgext.zeroconf =\n"
-"\n"
-"To allow other people to discover your repository using run \"hg serve\" in "
-"your\n"
-"repository.\n"
-"\n"
-" $ cd test\n"
-" $ hg serve\n"
-"\n"
-"You can discover zeroconf enabled repositories by running \"hg paths\".\n"
-"\n"
-" $ hg paths\n"
-" zc-test = http://example.com:8000/test\n"
-msgstr ""
-
-msgid "archive prefix contains illegal components"
-msgstr ""
-
-msgid "cannot give prefix when archiving to files"
-msgstr ""
-
-#, python-format
-msgid "unknown archive type '%s'"
-msgstr ""
-
-msgid "invalid changegroup"
-msgstr ""
-
-msgid "unknown parent"
-msgstr ""
-
-#, python-format
-msgid "integrity check failed on %s:%d"
-msgstr ""
-
-#, python-format
-msgid "%s: not a Mercurial bundle file"
-msgstr ""
-
-#, python-format
-msgid "%s: unknown bundle version"
-msgstr ""
-
-#, python-format
-msgid "%s: unknown bundle compression type"
-msgstr ""
-
-msgid "cannot create new bundle repository"
-msgstr ""
-
-#, python-format
-msgid "premature EOF reading chunk (got %d bytes, expected %d)"
-msgstr ""
-
-#, python-format
-msgid "username %s contains a newline"
-msgstr ""
-
-msgid "options --message and --logfile are mutually exclusive"
-msgstr ""
-
-#, python-format
-msgid "can't read commit message '%s': %s"
-msgstr ""
-
-msgid "limit must be a positive integer"
-msgstr ""
-
-msgid "limit must be positive"
-msgstr ""
-
-msgid "too many revisions specified"
-msgstr ""
-
-#, python-format
-msgid "invalid format spec '%%%s' in output file name"
-msgstr ""
-
-#, python-format
-msgid "adding %s\n"
-msgstr ""
-
-#, python-format
-msgid "removing %s\n"
-msgstr "正在删除 %s\n"
-
-#, python-format
-msgid "recording removal of %s as rename to %s (%d%% similar)\n"
-msgstr ""
-
-#, python-format
-msgid "%s: not copying - file is not managed\n"
-msgstr ""
-
-#, python-format
-msgid "%s: not copying - file has been marked for remove\n"
-msgstr ""
-
-#, python-format
-msgid "%s: not overwriting - %s collides with %s\n"
-msgstr ""
-
-#, python-format
-msgid "%s: not overwriting - file exists\n"
-msgstr ""
-
-#, python-format
-msgid "%s: deleted in working copy\n"
-msgstr ""
-
-#, python-format
-msgid "%s: cannot copy - %s\n"
-msgstr ""
-
-#, python-format
-msgid "%s %s to %s\n"
-msgstr ""
-
-#, python-format
-msgid "%s has not been committed yet, so no copy data will be stored for %s.\n"
-msgstr ""
-
-msgid "no source or destination specified"
-msgstr ""
-
-msgid "no destination specified"
-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 ""
-
-msgid "(consider using --after)\n"
-msgstr "(考虑使用 --after)\n"
-
-#, python-format
-msgid "changeset:   %d:%s\n"
-msgstr "修改集:      %d:%s\n"
-
-#, python-format
-msgid "branch:      %s\n"
-msgstr "分支:        %s\n"
-
-#, python-format
-msgid "tag:         %s\n"
-msgstr "标签:        %s\n"
-
-#, python-format
-msgid "parent:      %d:%s\n"
-msgstr "父亲:        %d:%s\n"
-
-#, python-format
-msgid "manifest:    %d:%s\n"
-msgstr "清单:        %d:%s\n"
-
-#, python-format
-msgid "user:        %s\n"
-msgstr "用户:        %s\n"
-
-#, python-format
-msgid "date:        %s\n"
-msgstr "日期:        %s\n"
-
-msgid "files+:"
-msgstr "文件+:"
-
-msgid "files-:"
-msgstr "文件-:"
-
-msgid "files:"
-msgstr "文件:"
-
-#, python-format
-msgid "files:       %s\n"
-msgstr "文件:        %s\n"
-
-#, python-format
-msgid "copies:      %s\n"
-msgstr "复制:        %s\n"
-
-#, python-format
-msgid "extra:       %s=%s\n"
-msgstr "额外:        %s=%s\n"
-
-msgid "description:\n"
-msgstr "描述:\n"
-
-#, python-format
-msgid "summary:     %s\n"
-msgstr "摘要:        %s\n"
-
-#, python-format
-msgid "%s: no key named '%s'"
-msgstr ""
-
-#, python-format
-msgid "%s: %s"
-msgstr ""
-
-#, python-format
-msgid "Found revision %s from %s\n"
-msgstr ""
-
-msgid "revision matching date not found"
-msgstr ""
-
-#, python-format
-msgid "cannot follow nonexistent file: \"%s\""
-msgstr ""
-
-#, python-format
-msgid "%s:%s copy source revision cannot be found!\n"
-msgstr ""
-
-msgid "can only follow copies/renames for explicit file names"
-msgstr ""
-
-#, python-format
-msgid "file %s not found!"
-msgstr ""
-
-#, python-format
-msgid "no match under directory %s!"
-msgstr ""
-
-#, python-format
-msgid "can't commit %s: unsupported file type!"
-msgstr ""
-
-#, python-format
-msgid "file %s not tracked!"
-msgstr ""
-
-msgid ""
-"add the specified files on the next commit\n"
-"\n"
-"    Schedule files to be version controlled and added to the repository.\n"
-"\n"
-"    The files will be added to the repository at the next commit. To\n"
-"    undo an add before that, see hg revert.\n"
-"\n"
-"    If no names are given, add all files in the repository.\n"
-"    "
-msgstr ""
-"增加指定文件用于下次提交\n"
-"\n"
-"    调度文件受版本控制,增加到版本库。\n"
-"\n"
-"    这些文件将于下次提交时增加到版本库。要在提交前撤销增加,\n"
-"    请参见 'hg revert'。\n"
-"\n"
-"    如果没有给出文件名称,就增加所有文件到版本库。\n"
-"    "
-
-msgid ""
-"add all new files, delete all missing files\n"
-"\n"
-"    Add all new files and remove all missing files from the repository.\n"
-"\n"
-"    New files are ignored if they match any of the patterns in .hgignore. As\n"
-"    with add, these changes take effect at the next commit.\n"
-"\n"
-"    Use the -s option to detect renamed files. With a parameter > 0,\n"
-"    this compares every removed file with every added file and records\n"
-"    those similar enough as renames. This option takes a percentage\n"
-"    between 0 (disabled) and 100 (files must be identical) as its\n"
-"    parameter. Detecting renamed files this way can be expensive.\n"
-"    "
-msgstr ""
-
-msgid "similarity must be a number"
-msgstr ""
-
-msgid "similarity must be between 0 and 100"
-msgstr ""
-
-msgid ""
-"show changeset information per file line\n"
-"\n"
-"    List changes in files, showing the revision id responsible for each line\n"
-"\n"
-"    This command is useful to discover who did a change or when a change "
-"took\n"
-"    place.\n"
-"\n"
-"    Without the -a option, annotate will avoid processing files it\n"
-"    detects as binary. With -a, annotate will generate an annotation\n"
-"    anyway, probably with undesirable results.\n"
-"    "
-msgstr ""
-"显示指定文件每行的改变集信息\n"
-"\n"
-"    列出文件中的修改,为每行显示版本标识\n"
-"\n"
-"    此命令用于查找谁做出的修改,或者什么时候发生的修改\n"
-"\n"
-"    当没有选项 '-a' 时,annotate 会避免处理检测为二进制的文件\n"
-"    当使用选项 '-a' 时,annotate 会直接产生追溯,可能会有不合需要的结果\n"
-"    "
-
-msgid "at least one file name or pattern required"
-msgstr ""
-
-msgid "at least one of -n/-c is required for -l"
-msgstr ""
-
-#, python-format
-msgid "%s: binary file\n"
-msgstr ""
-
-msgid ""
-"create unversioned archive of a repository revision\n"
-"\n"
-"    By default, the revision used is the parent of the working\n"
-"    directory; use \"-r\" to specify a different revision.\n"
-"\n"
-"    To specify the type of archive to create, use \"-t\". Valid\n"
-"    types are:\n"
-"\n"
-"    \"files\" (default): a directory full of files\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\n"
-"\n"
-"    The exact name of the destination archive or directory is given\n"
-"    using a format string; see \"hg help export\" for details.\n"
-"\n"
-"    Each member added to an archive file has a directory prefix\n"
-"    prepended. Use \"-p\" to specify a format string for the prefix.\n"
-"    The default is the basename of the archive, with suffixes removed.\n"
-"    "
-msgstr ""
-
-msgid "no working directory: please specify a revision"
-msgstr ""
-
-msgid "repository root cannot be destination"
-msgstr ""
-
-msgid "cannot archive plain files to stdout"
-msgstr ""
-
-msgid ""
-"reverse effect of earlier changeset\n"
-"\n"
-"    Commit the backed out changes as a new changeset. The new\n"
-"    changeset is a child of the backed out changeset.\n"
-"\n"
-"    If you back out 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 (current one by default).\n"
-"\n"
-"    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\n"
-"    hand. The result of this merge is not committed, as for a normal\n"
-"    merge.\n"
-"\n"
-"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
-"    "
-msgstr ""
-
-msgid "please specify just one revision"
-msgstr ""
-
-msgid "please specify a revision to backout"
-msgstr ""
-
-msgid "cannot back out change on a different branch"
-msgstr ""
-
-msgid "cannot back out a change with no parents"
-msgstr ""
-
-msgid "cannot back out a merge changeset without --parent"
-msgstr ""
-
-#, python-format
-msgid "%s is not a parent of %s"
-msgstr ""
-
-msgid "cannot use --parent on non-merge changeset"
-msgstr ""
-
-#, python-format
-msgid "Backed out changeset %s"
-msgstr ""
-
-#, python-format
-msgid "changeset %s backs out changeset %s\n"
-msgstr ""
-
-#, python-format
-msgid "merging with changeset %s\n"
-msgstr ""
-
-msgid "the backout changeset is a new head - do not forget to merge\n"
-msgstr ""
-
-msgid "(use \"backout --merge\" if you want to auto-merge)\n"
-msgstr ""
-
-msgid ""
-"subdivision search of changesets\n"
-"\n"
-"    This command helps to find changesets which introduce problems.\n"
-"    To use, mark the earliest changeset you know exhibits the problem\n"
-"    as bad, then mark the latest changeset which is free from the\n"
-"    problem as good. Bisect will update your working directory to a\n"
-"    revision for testing (unless the --noupdate option is specified).\n"
-"    Once you have performed tests, mark the working directory as bad\n"
-"    or good and bisect will either update to another candidate changeset\n"
-"    or announce that it has found the bad revision.\n"
-"\n"
-"    As a shortcut, you can also use the revision argument to mark a\n"
-"    revision as good or bad without checking it out first.\n"
-"\n"
-"    If you supply a command it will be used for automatic bisection. Its "
-"exit\n"
-"    status will be used as flag to mark revision as bad or good. In case "
-"exit\n"
-"    status is 0 the revision is marked as good, 125 - skipped, 127 (command "
-"not\n"
-"    found) - bisection will be aborted and any other status bigger than 0 "
-"will\n"
-"    mark revision as bad.\n"
-"    "
-msgstr ""
-
-#, python-format
-msgid "The first %s revision is:\n"
-msgstr ""
-
-#, python-format
-msgid "Due to skipped revisions, the first %s revision could be any of:\n"
-msgstr ""
-
-msgid "cannot bisect (no known good revisions)"
-msgstr ""
-
-msgid "cannot bisect (no known bad revisions)"
-msgstr ""
-
-msgid "(use of 'hg bisect <cmd>' is deprecated)\n"
-msgstr ""
-
-msgid "incompatible arguments"
-msgstr ""
-
-#, python-format
-msgid "failed to execute %s"
-msgstr ""
-
-#, python-format
-msgid "%s killed"
-msgstr ""
-
-#, python-format
-msgid "Changeset %s: %s\n"
-msgstr ""
-
-#, python-format
-msgid "Testing changeset %s:%s (%s changesets remaining, ~%s tests)\n"
-msgstr ""
-
-msgid ""
-"set or show the current branch name\n"
-"\n"
-"    With no argument, show the current branch name. With one argument,\n"
-"    set the working directory branch name (the branch does not exist in\n"
-"    the repository until the next commit).\n"
-"\n"
-"    Unless --force is specified, branch will not let you set a\n"
-"    branch name that shadows an existing branch.\n"
-"\n"
-"    Use --clean to reset the working directory branch to that of the\n"
-"    parent of the working directory, negating a previous branch change.\n"
-"\n"
-"    Use the command 'hg update' to switch to an existing branch.\n"
-"    "
-msgstr ""
-
-#, python-format
-msgid "reset working directory to branch %s\n"
-msgstr ""
-
-msgid "a branch of the same name already exists (use --force to override)"
-msgstr ""
-
-#, python-format
-msgid "marked working directory as branch %s\n"
-msgstr ""
-
-msgid ""
-"list repository named branches\n"
-"\n"
-"    List the repository's named branches, indicating which ones are\n"
-"    inactive. If active is specified, only show active branches.\n"
-"\n"
-"    A branch is considered active if it contains repository heads.\n"
-"\n"
-"    Use the command 'hg update' to switch to an existing branch.\n"
-"    "
-msgstr ""
-
-msgid ""
-"create a changegroup file\n"
-"\n"
-"    Generate a compressed changegroup file collecting changesets not\n"
-"    found in the other repository.\n"
-"\n"
-"    If no destination repository is specified the destination is\n"
-"    assumed to have all the nodes specified by one or more --base\n"
-"    parameters. To create a bundle containing all changesets, use\n"
-"    --all (or --base null). To change the compression method applied,\n"
-"    use the -t option (by default, bundles are compressed using bz2).\n"
-"\n"
-"    The bundle file can then be transferred using conventional means and\n"
-"    applied to another repository with the unbundle or pull command.\n"
-"    This is useful when direct push and pull are not available or when\n"
-"    exporting an entire repository is undesirable.\n"
-"\n"
-"    Applying bundles preserves all changeset contents including\n"
-"    permissions, copy/rename information, and revision history.\n"
-"    "
-msgstr ""
-
-msgid "--base is incompatible with specifiying a destination"
-msgstr ""
-
-msgid "unknown bundle type specified with --type"
-msgstr ""
-
-msgid ""
-"output the current or given revision of files\n"
-"\n"
-"    Print the specified files as they were at the given revision.\n"
-"    If no revision is given, the parent of the working directory is used,\n"
-"    or tip if no revision is checked out.\n"
-"\n"
-"    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:\n"
-"\n"
-"    %s   basename of file being printed\n"
-"    %d   dirname of file being printed, or '.' if in repo root\n"
-"    %p   root-relative path name of file being printed\n"
-"    "
-msgstr ""
-
-msgid ""
-"make a copy of an existing repository\n"
-"\n"
-"    Create a copy of an existing repository in a new directory.\n"
-"\n"
-"    If no destination directory name is specified, it defaults to the\n"
-"    basename of the source.\n"
-"\n"
-"    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.\n"
-"\n"
-"    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 checked out files). 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.\n"
-"\n"
-"    In some cases, you can clone repositories and checked out files\n"
-"    using full hardlinks with\n"
-"\n"
-"      $ cp -al REPO REPOCLONE\n"
-"\n"
-"    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.\n"
-"\n"
-"    If you use the -r option to clone up to a specific revision, no\n"
-"    subsequent revisions will be present in the cloned repository.\n"
-"    This option implies --pull, even on local repositories.\n"
-"\n"
-"    If the -U option is used, the new clone will contain only a repository\n"
-"    (.hg) and no working copy (the working copy parent is the null "
-"revision).\n"
-"\n"
-"    See 'hg help urls' for valid source format details.\n"
-"\n"
-"    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"
-"    Look at the help text for urls for important details about ssh:// URLs.\n"
-"    "
-msgstr ""
-"复制现有版本库\n"
-"\n"
-"    在新目录创建现有版本库的副本。\n"
-"\n"
-"    如果没有指定目标目录,默认使用源版本库的基本名称。\n"
-"\n"
-"    源版本库的位置增加到新版本库的文件 .hg/hgrc 中,作为未来更新时的默认\n"
-"    位置。\n"
-"\n"
-"    为了效率,在复制时,只要源版本库和目标版本库位于同一文件系统,就会使\n"
-"    用硬链接(注意这只适用于版本库中的数据,不适用于检出的文件)。某些文件\n"
-"    系统,例如 AFS,没有正确实现硬链接,还不报告错误。在这些情况下,请使\n"
-"    用选项 '--pull'来避免硬链接。\n"
-"\n"
-"    在某些情况下,你可以通过下述命令用硬链接复制且检出文件:\n"
-"\n"
-"      $ cp -al REPO REPOCLONE\n"
-"\n"
-"    这是最快速的复制方法,但是不见得总是安全。此操作不是原子的(请确认在你\n"
-"    操作期间版本库未修改),还要确认你的编辑器会破坏硬链接。还有,它与将元\n"
-"    数据放到目录 .hg 中的某些扩展不兼容,例如 mq。\n"
-"\n"
-"    如果你使用选项 '-r' 复制指定版本,那么后来的版本不会在新版本库中出现。\n"
-"    此选项暗示 '--pull',纵然是操作本地版本库。\n"
-"\n"
-"    如果你使用了选项 '-U',那么新仓库只包含版本库(.hg),没有工作副本。\n"
-"\n"
-"    参见 'hg help urls' 以了解有效源格式的详情。\n"
-"\n"
-"    也可以指定位置 'ssh://' 作为目标,但是不会创建文件 .hg/hgrc,并且工作\n"
-"    副本将会创建在远程。参见主题 'urls' 的帮助信息,以了解位置 'ssh://'\n"
-"    的重要详情。\n"
-"    "
-
-msgid ""
-"commit the specified files or all outstanding changes\n"
-"\n"
-"    Commit changes to the given files into the repository.\n"
-"\n"
-"    If a list of files is omitted, all changes reported by \"hg status\"\n"
-"    will be committed.\n"
-"\n"
-"    If you are committing the result of a merge, do not provide any\n"
-"    file names or -I/-X filters.\n"
-"\n"
-"    If no commit message is specified, the configured editor is started to\n"
-"    enter a message.\n"
-"\n"
-"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
-"    "
-msgstr ""
-"提交指定文件的修改或全部修改\n"
-"\n"
-"    将指定文件的修改提交到版本库。\n"
-"\n"
-"    如果省略了文件列表,那么 \"hg status\" 报告的所有修改都被提交。\n"
-"\n"
-"    如果你要提交合并结果,请不要提供任何文件名称或过滤器 '-I/-X'。\n"
-"\n"
-"    如果没有指定提交日志,将会启动配置的编辑器,让你输入信息。\n"
-"\n"
-"    参见 'hg help dates' 以获得 '-d/--date' 的有效格式列表。\n"
-"    "
-
-msgid "created new head\n"
-msgstr ""
-
-#, python-format
-msgid "committed changeset %d:%s\n"
-msgstr "提交修改集 %d:%s\n"
-
-msgid ""
-"mark files as copied for the next commit\n"
-"\n"
-"    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"
-"    there can only be one source.\n"
-"\n"
-"    By default, this command copies the contents of files as they\n"
-"    stand in the working directory. If invoked with --after, the\n"
-"    operation is recorded, but no copying is performed.\n"
-"\n"
-"    This command takes effect in the next commit. To undo a copy\n"
-"    before that, see hg revert.\n"
-"    "
-msgstr ""
-
-msgid "find the ancestor revision of two revisions in a given index"
-msgstr ""
-
-msgid "There is no Mercurial repository here (.hg not found)"
-msgstr ""
-
-msgid "either two or three arguments required"
-msgstr ""
-
-msgid "returns the completion list associated with the given command"
-msgstr ""
-
-msgid "rebuild the dirstate as it would look like for the given revision"
-msgstr ""
-
-msgid "validate the correctness of the current dirstate"
-msgstr ""
-
-#, python-format
-msgid "%s in state %s, but not in manifest1\n"
-msgstr ""
-
-#, python-format
-msgid "%s in state %s, but also in manifest1\n"
-msgstr ""
-
-#, python-format
-msgid "%s in state %s, but not in either manifest\n"
-msgstr ""
-
-#, python-format
-msgid "%s in manifest1, but listed as state %s"
-msgstr ""
-
-msgid ".hg/dirstate inconsistent with current parent's manifest"
-msgstr ""
-
-msgid ""
-"show combined config settings from all hgrc files\n"
-"\n"
-"    With no args, print names and values of all config items.\n"
-"\n"
-"    With one arg of the form section.name, print just the value of\n"
-"    that config item.\n"
-"\n"
-"    With multiple args, print names and values of all config items\n"
-"    with matching section names."
-msgstr ""
-
-msgid "only one config item permitted"
-msgstr ""
-
-msgid ""
-"manually set the parents of the current working directory\n"
-"\n"
-"    This is useful for writing repository conversion tools, but should\n"
-"    be used with care.\n"
-"    "
-msgstr ""
-
-msgid "show the contents of the current dirstate"
-msgstr ""
-
-#, python-format
-msgid "copy: %s -> %s\n"
-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 ""
-
-msgid "dump the contents of an index file"
-msgstr ""
-
-msgid "dump an index DAG as a .dot file"
-msgstr ""
-
-msgid "test Mercurial installation"
-msgstr ""
-
-#, python-format
-msgid "Checking encoding (%s)...\n"
-msgstr ""
-
-msgid " (check that your locale is properly set)\n"
-msgstr ""
-
-msgid "Checking extensions...\n"
-msgstr ""
-
-msgid " One or more extensions could not be found"
-msgstr ""
-
-msgid " (check that you compiled the extensions)\n"
-msgstr ""
-
-msgid "Checking templates...\n"
-msgstr ""
-
-msgid " (templates seem to have been installed incorrectly)\n"
-msgstr ""
-
-msgid "Checking patch...\n"
-msgstr ""
-
-msgid " patch call failed:\n"
-msgstr ""
-
-msgid " unexpected patch output!\n"
-msgstr ""
-
-msgid " patch test failed!\n"
-msgstr ""
-
-msgid ""
-" (Current patch tool may be incompatible with patch, or misconfigured. Please "
-"check your .hgrc file)\n"
-msgstr ""
-
-msgid ""
-" Internal patcher failure, please report this error to http://www.selenic.com/"
-"mercurial/bts\n"
-msgstr ""
-
-msgid "Checking commit editor...\n"
-msgstr ""
-
-msgid " No commit editor set and can't find vi in PATH\n"
-msgstr ""
-
-msgid " (specify a commit editor in your .hgrc file)\n"
-msgstr ""
-
-#, python-format
-msgid " Can't find editor '%s' in PATH\n"
-msgstr ""
-
-msgid "Checking username...\n"
-msgstr ""
-
-msgid " (specify a username in your .hgrc file)\n"
-msgstr ""
-
-msgid "No problems detected\n"
-msgstr ""
-
-#, python-format
-msgid "%s problems detected, please check your install!\n"
-msgstr ""
-
-msgid "dump rename information"
-msgstr ""
-
-#, python-format
-msgid "%s renamed from %s:%s\n"
-msgstr ""
-
-#, python-format
-msgid "%s not renamed\n"
-msgstr ""
-
-msgid "show how files match on given patterns"
-msgstr ""
-
-msgid ""
-"diff repository (or selected files)\n"
-"\n"
-"    Show differences between revisions for the specified files.\n"
-"\n"
-"    Differences between files are shown using the unified diff format.\n"
-"\n"
-"    NOTE: diff may generate unexpected results for merges, as it will\n"
-"    default to comparing against the working directory's first parent\n"
-"    changeset if no revisions are specified.\n"
-"\n"
-"    When two revision arguments are given, then changes are shown\n"
-"    between those revisions. If only one revision is specified then\n"
-"    that revision is compared to the working directory, and, when no\n"
-"    revisions are specified, the working directory files are compared\n"
-"    to its parent.\n"
-"\n"
-"    Without the -a option, diff will avoid generating diffs of files\n"
-"    it detects as binary. With -a, diff will generate a diff anyway,\n"
-"    probably with undesirable results.\n"
-"\n"
-"    Use the --git option to generate diffs in the git extended diff\n"
-"    format. Read the diffs help topic for more information.\n"
-"    "
-msgstr ""
-"在版本库中比较(指定的文件)\n"
-"\n"
-"    显示指定文件在版本间的差异。\n"
-"\n"
-"    文件间的差异使用同一差异格式显示。\n"
-"\n"
-"    注意: 对合并的比较可能会产生不期望的结果,因为没有指定版本时,默认\n"
-"    与工作目录的直接父亲比较。\n"
-"\n"
-"    当给出两个版本参数时,会显示在这些版本间的修改。如果只给出一个版本,\n"
-"    那么它将与工作目录比较。当没有指定版本时,将比较工作目录中的文件与\n"
-"    它的直接父亲。\n"
-"\n"
-"    当没有选项 '-a' 时,将会避免处理检测为二进制的文件。当使用选项 '-a'\n"
-"    时,可能会有不合需要的结果。\n"
-"\n"
-"    使用选项 '--git' 会使用 git 扩展差异格式。请阅读差异帮助主题以了解\n"
-"    更多信息。\n"
-"    "
-
-msgid ""
-"dump the header and diffs for one or more changesets\n"
-"\n"
-"    Print the changeset header and diffs for one or more revisions.\n"
-"\n"
-"    The information shown in the changeset header is: author,\n"
-"    changeset hash, parent(s) and commit comment.\n"
-"\n"
-"    NOTE: export may generate unexpected diff output for merge changesets,\n"
-"    as it will compare the merge changeset against its first parent only.\n"
-"\n"
-"    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:\n"
-"\n"
-"    %%   literal \"%\" character\n"
-"    %H   changeset hash (40 bytes of hexadecimal)\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 bytes of hexadecimal)\n"
-"    %n   zero-padded sequence number, starting at 1\n"
-"    %r   zero-padded changeset revision number\n"
-"\n"
-"    Without the -a option, export will avoid generating diffs of files\n"
-"    it detects as binary. With -a, export will generate a diff anyway,\n"
-"    probably with undesirable results.\n"
-"\n"
-"    Use the --git option to generate diffs in the git extended diff\n"
-"    format. Read the diffs help topic for more information.\n"
-"\n"
-"    With the --switch-parent option, the diff will be against the second\n"
-"    parent. It can be useful to review a merge.\n"
-"    "
-msgstr ""
-"为一个或多个改变集输出标题和差异\n"
-"\n"
-"    为一个或多个版本输出标题和差异。\n"
-"\n"
-"    在改变集标题中显示的信息是: 作者,改变集哈希,父亲和提交日志。\n"
-"\n"
-"    注意: 对于合并改变集,导出可能产生不期望的差异输出,因为它只会将合并\n"
-"    改变集与其第一个父亲比较。\n"
-"\n"
-"    可以输出到文件,这时会使用指定的格式化字符串构造文件名称。格式化规则\n"
-"    如下:\n"
-"\n"
-"    %%   字符 \"%\"\n"
-"    %H   改变集哈希 (40 位十六进制数字)\n"
-"    %N   产生的补丁号\n"
-"    %R   改变集版本号\n"
-"    %b   待导出的版本库的基本名称\n"
-"    %h   短改变集哈希(12 位十六进制数字)\n"
-"    %n   从 1 开始补 0 的序列号\n"
-"    %r   补 0 的改变集版本号\n"
-"\n"
-"    当没有选项 '-a' 时,将会避免处理检测为二进制的文件。当使用选项 '-a'\n"
-"    时,可能会有不合需要的结果。\n"
-"\n"
-"    使用选项 '--git' 会使用 git 扩展差异格式。请阅读差异帮助主题以了解\n"
-"    更多信息。\n"
-"\n"
-"    使用选项 '--switch-parent',将会与第二个父亲比较。对于复审合并很有用。\n"
-"    "
-
-msgid "export requires at least one changeset"
-msgstr ""
-
-msgid "exporting patches:\n"
-msgstr ""
-
-msgid "exporting patch:\n"
-msgstr ""
-
-msgid ""
-"search for a pattern in specified files and revisions\n"
-"\n"
-"    Search revisions of files for a regular expression.\n"
-"\n"
-"    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\n"
-"    a match appears.\n"
-"\n"
-"    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.\n"
-"    "
-msgstr ""
-
-#, python-format
-msgid "grep: invalid match pattern: %s\n"
-msgstr ""
-
-msgid ""
-"show current repository heads or show branch heads\n"
-"\n"
-"    With no arguments, show all repository head changesets.\n"
-"\n"
-"    If branch or revisions names are given this will show the heads of\n"
-"    the specified branches or the branches those revisions are tagged\n"
-"    with.\n"
-"\n"
-"    Repository \"heads\" are changesets that don't have child\n"
-"    changesets. They are where development generally takes place and\n"
-"    are the usual targets for update and merge operations.\n"
-"\n"
-"    Branch heads are changesets that have a given branch tag, but have\n"
-"    no child changesets with that tag. They are usually where\n"
-"    development on the given branch takes place.\n"
-"    "
-msgstr ""
-
-#, python-format
-msgid "no changes on branch %s containing %s are reachable from %s\n"
-msgstr ""
-
-#, python-format
-msgid "no changes on branch %s are reachable from %s\n"
-msgstr ""
-
-msgid ""
-"show help for a given topic or a help overview\n"
-"\n"
-"    With no arguments, print a list of commands and short help.\n"
-"\n"
-"    Given a topic, extension, or command name, print help for that topic."
-msgstr ""
-
-msgid "global options:"
-msgstr "全局选项:"
-
-msgid "use \"hg help\" for the full list of commands"
-msgstr "使用 \"hg help\" 获得全部命令的列表"
-
-msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
-msgstr "使用 \"hg help\" 获得全部命令的列表,或 \"hg -v\" 获得详细信息"
-
-#, python-format
-msgid "use \"hg -v help%s\" to show aliases and global options"
-msgstr "使用 \"hg -v help%s\" 显示别名和全局选项"
-
-#, python-format
-msgid "use \"hg -v help %s\" to show global options"
-msgstr "使用 \"hg -v help %s\" 显示全局选项"
-
-msgid ""
-"list of commands:\n"
-"\n"
-msgstr ""
-"命令列表:\n"
-"\n"
-
-#, python-format
-msgid ""
-"\n"
-"aliases: %s\n"
-msgstr ""
-"\n"
-"别名: %s\n"
-
-msgid "(no help text available)"
-msgstr "(没有可用的帮助信息)"
-
-msgid "options:\n"
-msgstr "选项:\n"
-
-msgid "no commands defined\n"
-msgstr ""
-
-msgid ""
-"\n"
-"enabled extensions:\n"
-"\n"
-msgstr ""
-"\n"
-"启用的扩展:\n"
-"\n"
-
-#, python-format
-msgid " %s   %s\n"
-msgstr ""
-
-msgid "no help text available"
-msgstr "没有可用的帮助信息"
-
-#, python-format
-msgid "%s extension - %s\n"
-msgstr ""
-
-msgid "Mercurial Distributed SCM\n"
-msgstr "分布式软件配置管理工具 - 水银\n"
-
-msgid ""
-"basic commands:\n"
-"\n"
-msgstr ""
-"基本命令:\n"
-"\n"
-
-msgid ""
-"\n"
-"additional help topics:\n"
-"\n"
-msgstr ""
-"\n"
-"额外的帮助主题:\n"
-"\n"
-
-msgid ""
-"identify the working copy or specified revision\n"
-"\n"
-"    With no revision, print a summary of the current state of the repo.\n"
-"\n"
-"    With a path, do a lookup in another repository.\n"
-"\n"
-"    This summary identifies the repository state using one or two parent\n"
-"    hash identifiers, followed by a \"+\" if there are uncommitted changes\n"
-"    in the working directory, a list of tags for this revision and a branch\n"
-"    name for non-default branches.\n"
-"    "
-msgstr ""
-
-msgid ""
-"import an ordered set of patches\n"
-"\n"
-"    Import a list of patches and commit them individually.\n"
-"\n"
-"    If there are outstanding changes in the working directory, import\n"
-"    will abort unless given the -f flag.\n"
-"\n"
-"    You can import a patch straight from a mail message. Even patches\n"
-"    as attachments work (body part must be type text/plain or\n"
-"    text/x-patch to be used). 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.\n"
-"\n"
-"    If the imported patch was generated by hg export, user and description\n"
-"    from patch override values from message headers and body. Values\n"
-"    given on command line with -m and -u override these.\n"
-"\n"
-"    If --exact is specified, import will set the working directory\n"
-"    to the parent of each patch before applying it, and will abort\n"
-"    if the resulting changeset has a different ID than the one\n"
-"    recorded in the patch. This may happen due to character set\n"
-"    problems or other deficiencies in the text patch format.\n"
-"\n"
-"    With --similarity, hg will attempt to discover renames and copies\n"
-"    in the patch in the same way as 'addremove'.\n"
-"\n"
-"    To read a patch from standard input, use patch name \"-\".\n"
-"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
-"    "
-msgstr ""
-
-msgid "applying patch from stdin\n"
-msgstr ""
-
-msgid "no diffs found"
-msgstr ""
-
-#, python-format
-msgid ""
-"message:\n"
-"%s\n"
-msgstr ""
-
-msgid "not a mercurial patch"
-msgstr ""
-
-msgid "patch is damaged or loses information"
-msgstr ""
-
-msgid ""
-"show new changesets found in source\n"
-"\n"
-"    Show new changesets found in the specified path/URL or the default\n"
-"    pull location. These are the changesets that would be pulled if a pull\n"
-"    was requested.\n"
-"\n"
-"    For remote repository, using --bundle avoids downloading the changesets\n"
-"    twice if the incoming is followed by a pull.\n"
-"\n"
-"    See pull for valid source format details.\n"
-"    "
-msgstr ""
-
-msgid ""
-"create a new repository in the given directory\n"
-"\n"
-"    Initialize a new repository in the given directory. If the given\n"
-"    directory does not exist, it is created.\n"
-"\n"
-"    If no directory is given, the current directory is used.\n"
-"\n"
-"    It is possible to specify an ssh:// URL as the destination.\n"
-"    See 'hg help urls' for more information.\n"
-"    "
-msgstr ""
-"在指定目录创建新版本库\n"
-"\n"
-"    在指定目录初始化新版本库。如果指定的目录不存在,那么会被创建。\n"
-"\n"
-"    如果没有指定目录,就使用当前目录。\n"
-"\n"
-"    可以指定位置 'ssh://' 作为目标。参见命令 'hg help urls' 的帮助信息,\n"
-"    以了解位置 'ssh://' 的重要详情。\n"
-"    "
-
-msgid ""
-"locate files matching specific patterns\n"
-"\n"
-"    Print all files under Mercurial control whose names match the\n"
-"    given patterns.\n"
-"\n"
-"    This command searches the entire repository by default. To search\n"
-"    just the current directory and its subdirectories, use\n"
-"    \"--include .\".\n"
-"\n"
-"    If no patterns are given to match, this command prints all file\n"
-"    names.\n"
-"\n"
-"    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\".\n"
-"    This will avoid the problem of \"xargs\" treating single filenames\n"
-"    that contain white space as multiple filenames.\n"
-"    "
-msgstr ""
-
-msgid ""
-"show revision history of entire repository or files\n"
-"\n"
-"    Print the revision history of the specified files or the entire\n"
-"    project.\n"
-"\n"
-"    File history is shown without following rename or copy history of\n"
-"    files. Use -f/--follow with a file name to follow history across\n"
-"    renames and copies. --follow without a file name will only show\n"
-"    ancestors or descendants of the starting revision. --follow-first\n"
-"    only follows the first parent of merge revisions.\n"
-"\n"
-"    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.\n"
-"\n"
-"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
-"\n"
-"    By default this command outputs: changeset id and hash, tags,\n"
-"    non-trivial parents, user, date and time, and a summary for each\n"
-"    commit. When the -v/--verbose switch is used, the list of changed\n"
-"    files and full commit message is shown.\n"
-"\n"
-"    NOTE: log -p may generate unexpected diff output for merge\n"
-"    changesets, as it will compare the merge changeset against its\n"
-"    first parent only. Also, the files: list will only reflect files\n"
-"    that are different from BOTH parents.\n"
-"\n"
-"    "
-msgstr ""
-"显示全部版本库或指定文件的版本历史\n"
-"\n"
-"    显示全部版本库或指定文件的版本历史。\n"
-"\n"
-"    显示文件历史的时候不跟踪改名或复制。对文件名称使用 '-f/--follow'\n"
-"    会跟踪改名或复制的历史。当不给出文件名称时,使用 '--follow' 只显\n"
-"    示开始版本的直系祖先。使用 '--follow-first' 只显示合并版本的第一\n"
-"    个父亲。\n"
-"\n"
-"    如果没有指定版本范围,默认是 'tip:0'。当使用 '--follow' 时,使用\n"
-"    工作目录的父亲作为开始版本。\n"
-"\n"
-"    参见 'hg help dates' 以获得 '-d/--date' 的有效格式列表。\n"
-"\n"
-"    此命令缺省输出: 改变集标识和哈希,标签,父亲,提交者,日期和时间,\n"
-"    以及每次提交的概要信息。当使用选项 '-v/--verbose' 时,会显示文件\n"
-"    变更列表和完整的提交信息。\n"
-"\n"
-"    注意: 对于合并改变集,'log -p' 可能产生不期望的差异输出,因为它只\n"
-"    会将合并改变集与其第一个父亲比较。而且,只显示对所有父亲都不同的\n"
-"    文件列表。\n"
-"\n"
-"    "
-
-msgid ""
-"looks up all renames for a file (up to endrev) the first\n"
-"        time the file is given. It indexes on the changerev and only\n"
-"        parses the manifest if linkrev != changerev.\n"
-"        Returns rename info for fn at changerev rev."
-msgstr ""
-
-msgid ""
-"output the current or given revision of the project manifest\n"
-"\n"
-"    Print a list of version controlled files for the given revision.\n"
-"    If no revision is given, the parent of the working directory is used,\n"
-"    or tip if no revision is checked out.\n"
-"\n"
-"    The manifest is the list of files being version controlled. If no "
-"revision\n"
-"    is given then the first parent of the working directory is used.\n"
-"\n"
-"    With -v flag, print file permissions, symlink and executable bits. With\n"
-"    --debug flag, print file revision hashes.\n"
-"    "
-msgstr ""
-
-msgid ""
-"merge working directory with another revision\n"
-"\n"
-"    Merge the contents of the current working directory and the\n"
-"    requested revision. Files that changed between either parent are\n"
-"    marked as changed for the next commit and a commit must be\n"
-"    performed before any further updates are allowed.\n"
-"\n"
-"    If no revision is specified, the working directory's parent is a\n"
-"    head revision, and the current branch contains exactly one other head,\n"
-"    the other head is merged with by default. Otherwise, an explicit\n"
-"    revision to merge with must be provided.\n"
-"    "
-msgstr ""
-"将工作目录与其它版本合并\n"
-"\n"
-"    将当前工作目录中的内容与指定版本合并。对任一父亲而言改变的文件都会对\n"
-"    下次提交标记为已修改,在提交之前不允许再执行更新。\n"
-"\n"
-"    如果没有指定版本,那么工作目录的父亲是一个合并顶点,另一个在当前分支\n"
-"    中,合并后的内容是新的顶点。否则,必须明确的指定要合并的版本。\n"
-"    "
-
-#, python-format
-msgid "branch '%s' has %d heads - please merge with an explicit rev"
-msgstr ""
-
-#, python-format
-msgid "branch '%s' has one head - please merge with an explicit rev"
-msgstr ""
-
-msgid "there is nothing to merge"
-msgstr ""
-
-#, python-format
-msgid "%s - use \"hg update\" instead"
-msgstr ""
-
-msgid ""
-"working dir not at a head rev - use \"hg update\" or merge with an explicit "
-"rev"
-msgstr ""
-
-msgid ""
-"show changesets not found in destination\n"
-"\n"
-"    Show changesets not found in the specified destination repository or\n"
-"    the default push location. These are the changesets that would be pushed\n"
-"    if a push was requested.\n"
-"\n"
-"    See pull for valid destination format details.\n"
-"    "
-msgstr ""
-
-msgid ""
-"show the parents of the working dir or revision\n"
-"\n"
-"    Print the working directory's parent revisions. If a\n"
-"    revision is given via --rev, the parent of that revision\n"
-"    will be printed. If a file argument is given, revision in\n"
-"    which the file was last changed (before the working directory\n"
-"    revision or the argument to --rev if given) is printed.\n"
-"    "
-msgstr ""
-"显示工作目录或指定版本的父亲\n"
-"\n"
-"    显示工作目录的父亲版本。如果使用 '--rev' 指定版本,就显示此版本的\n"
-"    父亲。如果指定了文件,那么使用此文件最后修改的版本(工作目录的起源\n"
-"    版本,或 '--rev' 指定的版本)。\n"
-"    "
-
-msgid "can only specify an explicit file name"
-msgstr ""
-
-#, python-format
-msgid "'%s' not found in manifest!"
-msgstr ""
-
-msgid ""
-"show aliases for remote repositories\n"
-"\n"
-"    Show definition of symbolic path name NAME. If no name is given, show\n"
-"    definition of available names.\n"
-"\n"
-"    Path names are defined in the [paths] section of /etc/mercurial/hgrc\n"
-"    and $HOME/.hgrc. If run inside a repository, .hg/hgrc is used, too.\n"
-"\n"
-"    See 'hg help urls' for more information.\n"
-"    "
-msgstr ""
-
-msgid "not found!\n"
-msgstr ""
-
-msgid "not updating, since new heads added\n"
-msgstr ""
-
-msgid "(run 'hg heads' to see heads, 'hg merge' to merge)\n"
-msgstr ""
-
-msgid "(run 'hg update' to get a working copy)\n"
-msgstr ""
-
-msgid ""
-"pull changes from the specified source\n"
-"\n"
-"    Pull changes from a remote repository to a local one.\n"
-"\n"
-"    This finds all changes from the repository at the specified path\n"
-"    or URL and adds them to the local repository. By default, this\n"
-"    does not update the copy of the project in the working directory.\n"
-"\n"
-"    If SOURCE is omitted, the 'default' path will be used.\n"
-"    See 'hg help urls' for more information.\n"
-"    "
-msgstr ""
-"从指定版本库取得改变集\n"
-"\n"
-"    从远程版本库取得改变集到本地版本库。\n"
-"\n"
-"    查找位于指定路径或位置的版本库的全部修改,增加到版本版本库。默认不\n"
-"    更新工作目录。\n"
-"\n"
-"    如果没有指定位置,就使用路径 'default'。参见 'hg help urls' 以了解\n"
-"    更多信息。\n"
-"    "
-
-msgid ""
-"Other repository doesn't support revision lookup, so a rev cannot be "
-"specified."
-msgstr ""
-
-msgid ""
-"push changes to the specified destination\n"
-"\n"
-"    Push changes from the local repository to the given destination.\n"
-"\n"
-"    This is the symmetrical operation for pull. It helps to move\n"
-"    changes from the current repository to a different one. If the\n"
-"    destination is local this is identical to a pull in that directory\n"
-"    from the current one.\n"
-"\n"
-"    By default, push will refuse to run if it detects the result would\n"
-"    increase the number of remote heads. This generally indicates the\n"
-"    the client has forgotten to pull and merge before pushing.\n"
-"\n"
-"    If -r is used, the named changeset and all its ancestors will be pushed\n"
-"    to the remote repository.\n"
-"\n"
-"    Look at the help text for urls for important details about ssh:// URLs.\n"
-"    If DESTINATION is omitted, a default path will be used.\n"
-"    See 'hg help urls' for more information.\n"
-"    "
-msgstr ""
-"推送改变到指定位置\n"
-"\n"
-"    从本地版本库推送改变到指定位置。\n"
-"\n"
-"    这是 'pull' 的对称操作。它从当前版本库推送改变到其它版本库。如果目标\n"
-"    是本地版本库,那么此操作与在目标版本库从当前版本库执行 'pull' 操作等\n"
-"    同。\n"
-"\n"
-"    推送默认拒绝导致增加远程版本库顶点数目的操作。这通常表明客户端在推送\n"
-"    之前忘记取得远程版本库的修改,并且合并。\n"
-"\n"
-"    如果使用了选项 '-r',此命名改变集以及其祖先都会被推送到远程版本库。\n"
-"    \n"
-"\n"
-"    参见主题 'urls' 的帮助信息,以了解位置 'ssh://' 的重要详情。如果没有\n"
-"    给出目标位置,那么使用默认路径。参见 'hg help urls' 以了解更多信息。\n"
-"    "
-
-#, python-format
-msgid "pushing to %s\n"
-msgstr "正在推到 %s\n"
-
-msgid ""
-"raw commit interface (DEPRECATED)\n"
-"\n"
-"    (DEPRECATED)\n"
-"    Lowlevel commit, for use in helper scripts.\n"
-"\n"
-"    This command is not intended to be used by normal users, as it is\n"
-"    primarily useful for importing from other SCMs.\n"
-"\n"
-"    This command is now deprecated and will be removed in a future\n"
-"    release, please use debugsetparents and commit instead.\n"
-"    "
-msgstr ""
-
-msgid "(the rawcommit command is deprecated)\n"
-msgstr ""
-
-msgid ""
-"roll back an interrupted transaction\n"
-"\n"
-"    Recover from an interrupted commit or pull.\n"
-"\n"
-"    This command tries to fix the repository status after an interrupted\n"
-"    operation. It should only be necessary when Mercurial suggests it.\n"
-"    "
-msgstr ""
-
-msgid ""
-"remove the specified files on the next commit\n"
-"\n"
-"    Schedule the indicated files for removal from the repository.\n"
-"\n"
-"    This only removes files from the current branch, not from the entire\n"
-"    project history. -A can be used to remove only files that have already\n"
-"    been deleted, -f can be used to force deletion, and -Af can be used\n"
-"    to remove files from the next revision without deleting them.\n"
-"\n"
-"    The following table details the behavior of remove for different file\n"
-"    states (columns) and option combinations (rows). The file states are\n"
-"    Added, Clean, Modified and Missing (as reported by hg status). The\n"
-"    actions are Warn, Remove (from branch) and Delete (from disk).\n"
-"\n"
-"           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\n"
-"\n"
-"    This command schedules the files to be removed at the next commit.\n"
-"    To undo a remove before that, see hg revert.\n"
-"    "
-msgstr ""
-"在下次提交时删除指定文件\n"
-"\n"
-"    调度从版本库删除指定文件。\n"
-"\n"
-"    它只从当前分支删除文件,不删除历史。'-A' 用于只移除已经删除的文\n"
-"    件,'-f' 用于强制删除,'-Af' 用于从下个版本移除文件,但是不删除\n"
-"    它们。\n"
-"\n"
-"    下表给出了删除不同状态(列)文件的行为和可选的组合(行)。文件状态\n"
-"    ('hg status' 报告的状态)是增加(A),干净(C),已修改(M),丢失(!)。\n"
-"    动作是警告(W),移除(R,从分支),以及删除(D,从磁盘)。\n"
-"\n"
-"           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\n"
-"\n"
-"    此命令调度下次提交时删除文件。\n"
-"    要在此之前撤销删除,请参见 'hg revert'。\n"
-"    "
-
-msgid "no files specified"
-msgstr ""
-
-#, python-format
-msgid "not removing %s: file %s (use -f to force removal)\n"
-msgstr ""
-
-msgid "still exists"
-msgstr ""
-
-msgid "is modified"
-msgstr ""
-
-msgid "has been marked for add"
-msgstr ""
-
-msgid ""
-"rename files; equivalent of copy + remove\n"
-"\n"
-"    Mark dest as copies of sources; mark sources for deletion. If\n"
-"    dest is a directory, copies are put in that directory. If dest is\n"
-"    a file, there can only be one source.\n"
-"\n"
-"    By default, this command copies the contents of files as they\n"
-"    stand in the working directory. If invoked with --after, the\n"
-"    operation is recorded, but no copying is performed.\n"
-"\n"
-"    This command takes effect in the next commit. To undo a rename\n"
-"    before that, see hg revert.\n"
-"    "
-msgstr ""
-
-msgid ""
-"retry file merges from a merge or update\n"
-"\n"
-"    This command will cleanly retry unresolved file merges using file\n"
-"    revisions preserved from the last update or merge. To attempt to\n"
-"    resolve all unresolved files, use the -a switch.\n"
-"\n"
-"    This command will also allow listing resolved files and manually\n"
-"    marking and unmarking files as resolved.\n"
-"\n"
-"    The codes used to show the status of files are:\n"
-"    U = unresolved\n"
-"    R = resolved\n"
-"    "
-msgstr ""
-
-msgid "too many options specified"
-msgstr ""
-
-msgid "can't specify --all and patterns"
-msgstr ""
-
-msgid "no files or directories specified; use --all to remerge all files"
-msgstr ""
-
-msgid ""
-"restore individual files or dirs to an earlier state\n"
-"\n"
-"    (use update -r to check out earlier revisions, revert does not\n"
-"    change the working dir parents)\n"
-"\n"
-"    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 the\n"
-"    revision to revert to.\n"
-"\n"
-"    Using the -r option, revert the given files or directories to their\n"
-"    contents as of a specific revision. This can be helpful to \"roll\n"
-"    back\" some or all of an earlier change.\n"
-"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
-"\n"
-"    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.\n"
-"\n"
-"    If a file has been deleted, it is restored. If the executable\n"
-"    mode of a file was changed, it is reset.\n"
-"\n"
-"    If names are given, all files matching the names are reverted.\n"
-"    If no arguments are given, no files are reverted.\n"
-"\n"
-"    Modified files are saved with a .orig suffix before reverting.\n"
-"    To disable these backups, use --no-backup.\n"
-"    "
-msgstr ""
-
-msgid "you can't specify a revision and a date"
-msgstr ""
-
-msgid "no files or directories specified; use --all to revert the whole repo"
-msgstr ""
-
-#, python-format
-msgid "forgetting %s\n"
-msgstr ""
-
-#, python-format
-msgid "reverting %s\n"
-msgstr "正在恢复 %s\n"
-
-#, python-format
-msgid "undeleting %s\n"
-msgstr "正在撤销删除 %s\n"
-
-#, python-format
-msgid "saving current version of %s as %s\n"
-msgstr "保存当前版本的 %s 为 %s\n"
-
-#, python-format
-msgid "file not managed: %s\n"
-msgstr "文件未被控制: %s\n"
-
-#, python-format
-msgid "no changes needed to %s\n"
-msgstr "不需要改变 %s\n"
-
-msgid ""
-"roll back the last transaction\n"
-"\n"
-"    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.\n"
-"\n"
-"    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:\n"
-"\n"
-"      commit\n"
-"      import\n"
-"      pull\n"
-"      push (with this repository as destination)\n"
-"      unbundle\n"
-"\n"
-"    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.\n"
-"    "
-msgstr ""
-
-msgid ""
-"print the root (top) of the current working dir\n"
-"\n"
-"    Print the root directory of the current repository.\n"
-"    "
-msgstr ""
-
-msgid ""
-"export the repository via HTTP\n"
-"\n"
-"    Start a local HTTP repository browser and pull server.\n"
-"\n"
-"    By default, the server logs accesses to stdout and errors to\n"
-"    stderr. Use the \"-A\" and \"-E\" options to log to files.\n"
-"    "
-msgstr ""
-"通过 HTTP 发布版本库\n"
-"\n"
-"    启动本地 HTTP 版本库浏览器和发布服务器。\n"
-"\n"
-"    默认服务器访问日志输出到 stdout,错误日志输出到 stderr。\n"
-"    可以使用选项 \"-A\" 和 \"-E\",将这些日志输出到文件。\n"
-"    "
-
-#, python-format
-msgid "listening at http://%s%s/%s (bound to %s:%d)\n"
-msgstr ""
-
-msgid ""
-"show changed files in the working directory\n"
-"\n"
-"    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"
-"    source of a copy/move operation, are not listed unless -c (clean),\n"
-"    -i (ignored), -C (copies) or -A is given. Unless options described\n"
-"    with \"show only ...\" are given, the options -mardu are used.\n"
-"\n"
-"    Option -q/--quiet hides untracked (unknown and ignored) files\n"
-"    unless explicitly requested with -u/--unknown or -i/-ignored.\n"
-"\n"
-"    NOTE: status may appear to disagree with diff if permissions have\n"
-"    changed or a merge has occurred. The standard diff format does not\n"
-"    report permission changes and diff only reports changes relative\n"
-"    to one merge parent.\n"
-"\n"
-"    If one revision is given, it is used as the base revision.\n"
-"    If two revisions are given, the difference between them is shown.\n"
-"\n"
-"    The codes used to show the status of files are:\n"
-"    M = modified\n"
-"    A = added\n"
-"    R = removed\n"
-"    C = clean\n"
-"    ! = deleted, but still tracked\n"
-"    ? = not tracked\n"
-"    I = ignored\n"
-"      = the previous added file was copied from here\n"
-"    "
-msgstr ""
-"显示工作目录中已改变的文件\n"
-"\n"
-"    显示版本库中的文件状态。如果指定文件名称,只显示匹配的文件。干净的\n"
-"    文件,被忽略的文件,复制/移动的源文件,不会被显示,除非使用了选项\n"
-"    '-c' (干净的),'-i' (被忽略的),'-C' (复制源) 或者 '-A' (全部)。除\n"
-"    非使用了选项 \"只显示 ...\",否则就使用选项 '-mardu'。\n"
-"\n"
-"    选项 '-q/--quiet' 隐藏未跟踪(未知或被忽略)的文件,除非明确地使用选\n"
-"    项 '-u/--unknown' 或 ‘-i/-ignored’。\n"
-"\n"
-"    注意: 如果修改了权限或者执行了合并,'status' 与 'diff' 的显示可能\n"
-"    不一致。标准差异格式不报告权限的改变,'diff' 只报告相对于一个合并\n"
-"    父亲的改变。\n"
-"\n"
-"    如果给出 1 个版本,就用于基础版本。如果给出 2 个版本,就显示其差异。\n"
-"\n"
-"    显示文件状态的代码是:\n"
-"    M = 已修改\n"
-"    A = 已增加\n"
-"    R = 已移除\n"
-"    C = 干净的\n"
-"    ! = 已删除,仍旧被跟踪\n"
-"    ? = 未跟踪\n"
-"    I = 已忽略\n"
-"      = 早先增加的文件自此复制\n"
-"    "
-
-msgid ""
-"add one or more tags for the current or given revision\n"
-"\n"
-"    Name a particular revision using <name>.\n"
-"\n"
-"    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.\n"
-"\n"
-"    If no revision is given, the parent of the working directory is used,\n"
-"    or tip if no revision is checked out.\n"
-"\n"
-"    To facilitate version control, distribution, and merging of tags,\n"
-"    they are stored as a file named \".hgtags\" which is managed\n"
-"    similarly to other project files and can be hand-edited if\n"
-"    necessary. The file '.hg/localtags' is used for local tags (not\n"
-"    shared among repositories).\n"
-"\n"
-"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
-"    "
-msgstr ""
-
-msgid "tag names must be unique"
-msgstr ""
-
-#, python-format
-msgid "the name '%s' is reserved"
-msgstr ""
-
-msgid "--rev and --remove are incompatible"
-msgstr ""
-
-#, python-format
-msgid "tag '%s' does not exist"
-msgstr ""
-
-#, python-format
-msgid "tag '%s' is not a %s tag"
-msgstr ""
-
-#, python-format
-msgid "Removed tag %s"
-msgstr ""
-
-#, python-format
-msgid "tag '%s' already exists (use -f to force)"
-msgstr ""
-
-#, python-format
-msgid "Added tag %s for changeset %s"
-msgstr ""
-
-msgid ""
-"list repository tags\n"
-"\n"
-"    This lists both regular and local tags. When the -v/--verbose switch\n"
-"    is used, a third column \"local\" is printed for local tags.\n"
-"    "
-msgstr ""
-
-msgid ""
-"show the tip revision\n"
-"\n"
-"    The tip revision (usually just called the tip) is the most\n"
-"    recently added changeset in the repository, the most recently\n"
-"    changed head.\n"
-"\n"
-"    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.\n"
-"    "
-msgstr ""
-
-msgid ""
-"apply one or more changegroup files\n"
-"\n"
-"    Apply one or more compressed changegroup files generated by the\n"
-"    bundle command.\n"
-"    "
-msgstr ""
-
-msgid ""
-"update working directory\n"
-"\n"
-"    Update the repository's working directory to the specified revision,\n"
-"    or the tip of the current branch if none is specified. Use null as\n"
-"    the revision to remove the working copy (like 'hg clone -U').\n"
-"\n"
-"    When the working dir contains no uncommitted changes, it will be\n"
-"    replaced by the state of the requested revision from the repo.  When\n"
-"    the requested revision is on a different branch, the working dir\n"
-"    will additionally be switched to that branch.\n"
-"\n"
-"    When there are uncommitted changes, use option -C to discard them,\n"
-"    forcibly replacing the state of the working dir with the requested\n"
-"    revision.\n"
-"\n"
-"    When there are uncommitted changes and option -C is not used, and\n"
-"    the parent revision and requested revision are on the same branch,\n"
-"    and one of them is an ancestor of the other, then the new working\n"
-"    directory will contain the requested revision merged with the\n"
-"    uncommitted changes.  Otherwise, the update will fail with a\n"
-"    suggestion to use 'merge' or 'update -C' instead.\n"
-"\n"
-"    If you want to update just one file to an older revision, use revert.\n"
-"\n"
-"    See 'hg help dates' for a list of formats valid for --date.\n"
-"    "
-msgstr ""
-"更新工作目录\n"
-"\n"
-"    更新工作目录到指定版本,或者到当前分支的顶点。使用 'null' 作为版本可以\n"
-"    删除工作副本(类似于 'hg clone -U')。\n"
-"\n"
-"    当工作目录包含未提交的修改时,它会被版本库中指定版本的状态替换。当请求\n"
-"    的版本位于不同分支时,工作目录会被切换到此分支。\n"
-"\n"
-"    可以使用选项 '-C' 来丢弃未提交的修改,强制使用请求的版本替换工作目录的\n"
-"    状态。\n"
-"\n"
-"    当有未提交的修改,没有使用选项 '-C',父版本和请求版本位于不同分支,并且\n"
-"    其中一个是另一个的祖先时,那么新的工作目录包含请求版本与未提交的修改的\n"
-"    合并结果。否则,更新会失败,建议使用 'merge' 或 'update -C'。\n"
-"\n"
-"    如果你只想更新一个文件到旧版本,请使用 'revert'。\n"
-"\n"
-"    参见 'hg help dates' 以获得 '-d/--date' 的有效格式列表。\n"
-"    "
-
-msgid ""
-"verify the integrity of the repository\n"
-"\n"
-"    Verify the integrity of the current repository.\n"
-"\n"
-"    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.\n"
-"    "
-msgstr ""
-
-msgid "output version and copyright information"
-msgstr "输出版本和版权信息"
-
-#, python-format
-msgid "Mercurial Distributed SCM (version %s)\n"
-msgstr "分布式软件配置管理工具 - 水银 (版本 %s)\n"
-
-msgid ""
-"\n"
-"Copyright (C) 2005-2008 Matt Mackall <mpm@selenic.com> 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"
-"版权所有 (C) 2005-2008 Matt Mackall <mpm@selenic.com> 和其他人。\n"
-"这是自由软件,具体参见版权条款。这里没有任何担保,甚至没有适合\n"
-"特定目的的隐含的担保。\n"
-
-msgid "repository root directory or symbolic path name"
-msgstr "版本库的根目录或符号路径名称"
-
-msgid "change working directory"
-msgstr "改变工作目录"
-
-msgid "do not prompt, assume 'yes' for any required answers"
-msgstr "不再询问,假定所有答案都是 'yes'"
-
-msgid "suppress output"
-msgstr "抑制输出"
-
-msgid "enable additional output"
-msgstr "启用额外的输出"
-
-msgid "set/override config option"
-msgstr "设置/覆盖配置选项"
-
-msgid "enable debugging output"
-msgstr "启用调试输出"
-
-msgid "start debugger"
-msgstr "启动调试器"
-
-msgid "set the charset encoding"
-msgstr "设置字符集编码"
-
-msgid "set the charset encoding mode"
-msgstr "设置字符集编码模式"
-
-msgid "print improved command execution profile"
-msgstr "显示改良的命令执行剖析"
-
-msgid "print traceback on exception"
-msgstr "显示异常的跟踪"
-
-msgid "time how long the command takes"
-msgstr "为命令计时"
-
-msgid "print command execution profile"
-msgstr "显示命令执行的剖析"
-
-msgid "output version information and exit"
-msgstr "显示版本信息后退出"
-
-msgid "display help and exit"
-msgstr "显示帮助后退出"
-
-msgid "do not perform actions, just print output"
-msgstr "不执行操作,只打印输出"
-
-msgid "specify ssh command to use"
-msgstr "指定要使用的 'ssh' 命令"
-
-msgid "specify hg command to run on the remote side"
-msgstr "指定要在远程运行的 'hg' 命令"
-
-msgid "include names matching the given patterns"
-msgstr "包含匹配指定模式的名称"
-
-msgid "exclude names matching the given patterns"
-msgstr "拒绝匹配指定模式的名称"
-
-msgid "use <text> as commit message"
-msgstr "使用 <text> 作为提交日志"
-
-msgid "read commit message from <file>"
-msgstr "从 <file> 读取提交日志"
-
-msgid "record datecode as commit date"
-msgstr "将提供的日期作为提交日期"
-
-msgid "record user as committer"
-msgstr "将提供的用户作为提交者"
-
-msgid "display using template map file"
-msgstr "使用指定的样式显示"
-
-msgid "display with template"
-msgstr "使用指定的模板显示"
-
-msgid "do not show merges"
-msgstr "不显示合并"
-
-msgid "treat all files as text"
-msgstr "将所有文件视为文本文件"
-
-msgid "don't include dates in diff headers"
-msgstr "不要的差异头中包含日期"
-
-msgid "show which function each change is in"
-msgstr "为每个修改显示在什么函数中"
-
-msgid "ignore white space when comparing lines"
-msgstr "当比较行时忽略空白"
-
-msgid "ignore changes in the amount of white space"
-msgstr "忽略空白数量的改变"
-
-msgid "ignore changes whose lines are all blank"
-msgstr "忽略空行的改变"
-
-msgid "number of lines of context to show"
-msgstr "显示几行上下文"
-
-msgid "guess renamed files by similarity (0<=s<=100)"
-msgstr ""
-
-msgid "[OPTION]... [FILE]..."
-msgstr ""
-
-msgid "annotate the specified revision"
-msgstr "追溯指定版本"
-
-msgid "follow file copies and renames"
-msgstr "处理文件复制与改名"
-
-msgid "list the author (long with -v)"
-msgstr "列出作者 (增加 '-v' 会以长格式显示)"
-
-msgid "list the date (short with -q)"
-msgstr "列出日期 (增加 '-q' 会以短格式显示)"
-
-msgid "list the revision number (default)"
-msgstr "列出版本号 (默认)"
-
-msgid "list the changeset"
-msgstr "列出改变集"
-
-msgid "show line number at the first appearance"
-msgstr "列出首次出现时的行号"
-
-msgid "[-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] FILE..."
-msgstr ""
-
-msgid "do not pass files through decoders"
-msgstr ""
-
-msgid "directory prefix for files in archive"
-msgstr ""
-
-msgid "revision to distribute"
-msgstr ""
-
-msgid "type of distribution to create"
-msgstr ""
-
-msgid "[OPTION]... DEST"
-msgstr ""
-
-msgid "merge with old dirstate parent after backout"
-msgstr ""
-
-msgid "parent to choose when backing out merge"
-msgstr ""
-
-msgid "revision to backout"
-msgstr ""
-
-msgid "[OPTION]... [-r] REV"
-msgstr ""
-
-msgid "reset bisect state"
-msgstr ""
-
-msgid "mark changeset good"
-msgstr ""
-
-msgid "mark changeset bad"
-msgstr ""
-
-msgid "skip testing changeset"
-msgstr ""
-
-msgid "use command to check changeset state"
-msgstr ""
-
-msgid "do not update to target"
-msgstr ""
-
-msgid "[-gbsr] [-c CMD] [REV]"
-msgstr ""
-
-msgid "set branch name even if it shadows an existing branch"
-msgstr ""
-
-msgid "reset branch name to parent branch name"
-msgstr ""
-
-msgid "[-fC] [NAME]"
-msgstr ""
-
-msgid "show only branches that have unmerged heads"
-msgstr ""
-
-msgid "[-a]"
-msgstr ""
-
-msgid "run even when remote repository is unrelated"
-msgstr "纵然远程版本库是无关的也要执行"
-
-msgid "a changeset up to which you would like to bundle"
-msgstr ""
-
-msgid "a base changeset to specify instead of a destination"
-msgstr ""
-
-msgid "bundle all changesets in the repository"
-msgstr ""
-
-msgid "bundle compression type to use"
-msgstr ""
-
-msgid "[-f] [-a] [-r REV]... [--base REV]... FILE [DEST]"
-msgstr ""
-
-msgid "print output to file with formatted name"
-msgstr "输出到使用格式化名称的文件中"
-
-msgid "print the given revision"
-msgstr ""
-
-msgid "apply any matching decode filter"
-msgstr ""
-
-msgid "[OPTION]... FILE..."
-msgstr ""
-
-msgid "the clone will only contain a repository (no working copy)"
-msgstr "只复制版本库(没有工作副本)"
-
-msgid "a changeset you would like to have after cloning"
-msgstr "复制后你期望有的改变集"
-
-msgid "[OPTION]... SOURCE [DEST]"
-msgstr ""
-
-msgid "mark new/missing files as added/removed before committing"
-msgstr "在提交之前将'新的/丢失的'文件标记为'已增加/已删除'"
-
-msgid "mark a branch as closed, hiding it from the branch list"
-msgstr "标记一个分支已关闭,不在分支列表中显示"
-
-msgid "record a copy that has already occurred"
-msgstr ""
-
-msgid "forcibly copy over an existing managed file"
-msgstr ""
-
-msgid "[OPTION]... [SOURCE]... DEST"
-msgstr ""
-
-msgid "[INDEX] REV1 REV2"
-msgstr ""
-
-msgid "show the command options"
-msgstr ""
-
-msgid "[-o] CMD"
-msgstr ""
-
-msgid "try extended date formats"
-msgstr ""
-
-msgid "[-e] DATE [RANGE]"
-msgstr ""
-
-msgid "FILE REV"
-msgstr ""
-
-msgid "[PATH]"
-msgstr ""
-
-msgid "FILE"
-msgstr ""
-
-msgid "parent"
-msgstr ""
-
-msgid "file list"
-msgstr ""
-
-msgid "revision to rebuild to"
-msgstr ""
-
-msgid "[-r REV] [REV]"
-msgstr ""
-
-msgid "revision to debug"
-msgstr ""
-
-msgid "[-r REV] FILE"
-msgstr ""
-
-msgid "REV1 [REV2]"
-msgstr ""
-
-msgid "do not display the saved mtime"
-msgstr ""
-
-msgid "[OPTION]..."
-msgstr ""
-
-msgid "[OPTION]... [-r REV1 [-r REV2]] [FILE]..."
-msgstr ""
-
-msgid "diff against the second parent"
-msgstr "与第二个父亲比较"
-
-msgid "[OPTION]... [-o OUTFILESPEC] REV..."
-msgstr ""
-
-msgid "end fields with NUL"
-msgstr ""
-
-msgid "print all revisions that match"
-msgstr ""
-
-msgid "follow changeset history, or file history across copies and renames"
-msgstr "跟踪改变集历史,或者跟踪文件的复制与改名操作"
-
-msgid "ignore case when matching"
-msgstr ""
-
-msgid "print only filenames and revs that match"
-msgstr ""
-
-msgid "print matching line numbers"
-msgstr ""
-
-msgid "search in given revision range"
-msgstr ""
-
-msgid "[OPTION]... PATTERN [FILE]..."
-msgstr ""
-
-msgid "show only heads which are descendants of rev"
-msgstr ""
-
-msgid "show only the active heads from open branches"
-msgstr ""
-
-msgid "[-r REV] [REV]..."
-msgstr ""
-
-msgid "[TOPIC]"
-msgstr ""
-
-msgid "identify the specified rev"
-msgstr ""
-
-msgid "show local revision number"
-msgstr ""
-
-msgid "show global revision id"
-msgstr ""
-
-msgid "show branch"
-msgstr ""
-
-msgid "show tags"
-msgstr ""
-
-msgid "[-nibt] [-r REV] [SOURCE]"
-msgstr ""
-
-msgid ""
-"directory strip option for patch. This has the same\n"
-"meaning as the corresponding patch option"
-msgstr ""
-
-msgid "base path"
-msgstr ""
-
-msgid "skip check for outstanding uncommitted changes"
-msgstr ""
-
-msgid "don't commit, just update the working directory"
-msgstr ""
-
-msgid "apply patch to the nodes from which it was generated"
-msgstr ""
-
-msgid "Use any branch information in patch (implied by --exact)"
-msgstr ""
-
-msgid "[OPTION]... PATCH..."
-msgstr ""
-
-msgid "show newest record first"
-msgstr ""
-
-msgid "file to store the bundles into"
-msgstr ""
-
-msgid "a specific revision up to which you would like to pull"
-msgstr "指定要取得的最高版本"
-
-msgid "[-p] [-n] [-M] [-f] [-r REV]... [--bundle FILENAME] [SOURCE]"
-msgstr ""
-
-msgid "[-e CMD] [--remotecmd CMD] [DEST]"
-msgstr ""
-
-msgid "search the repository as it stood at rev"
-msgstr ""
-
-msgid "end filenames with NUL, for use with xargs"
-msgstr "在文件名称结尾增加 NUL,用于 xargs"
-
-msgid "print complete paths from the filesystem root"
-msgstr ""
-
-msgid "[OPTION]... [PATTERN]..."
-msgstr ""
-
-msgid "only follow the first parent of merge changesets"
-msgstr "只跟踪改变集的第一个父亲"
-
-msgid "show revs matching date spec"
-msgstr "显示匹配日期的版本"
-
-msgid "show copied files"
-msgstr "显示复制的文件"
-
-msgid "do case-insensitive search for a keyword"
-msgstr "对关键字执行不区分大小写的搜索"
-
-msgid "include revs where files were removed"
-msgstr "包含删除文件的版本"
-
-msgid "show only merges"
-msgstr "只显示合并"
-
-msgid "revs committed by user"
-msgstr "指定用户提交的版本"
-
-msgid "show only changesets within the given named branch"
-msgstr "只显示位于指定命名分支中的改变集"
-
-msgid "do not display revision or any of its ancestors"
-msgstr "不显示指定版本或其祖先"
-
-msgid "[OPTION]... [FILE]"
-msgstr ""
-
-msgid "revision to display"
-msgstr ""
-
-msgid "[-r REV]"
-msgstr ""
-
-msgid "force a merge with outstanding changes"
-msgstr "强制与已有修改合并"
-
-msgid "revision to merge"
-msgstr "要合并的版本"
-
-msgid "[-f] [[-r] REV]"
-msgstr ""
-
-msgid "a specific revision up to which you would like to push"
-msgstr "指定你要推送的最高版本"
-
-msgid "[-M] [-p] [-n] [-f] [-r REV]... [DEST]"
-msgstr ""
-
-msgid "show parents from the specified rev"
-msgstr "从指定的版本显示父亲"
-
-msgid "hg parents [-r REV] [FILE]"
-msgstr ""
-
-msgid "[NAME]"
-msgstr ""
-
-msgid "update to new tip if changesets were pulled"
-msgstr "如果有新的改变集,就更新到最新版本"
-
-msgid "[-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]"
-msgstr ""
-
-msgid "force push"
-msgstr "强制推送"
-
-msgid "[-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]"
-msgstr ""
-
-msgid "record delete for missing files"
-msgstr "将丢失的文件视为删除"
-
-msgid "remove (and delete) file even if added or modified"
-msgstr "删除文件,纵然它已被增加或修改"
-
-msgid "record a rename that has already occurred"
-msgstr "记录已经发生的改名"
-
-msgid "[OPTION]... SOURCE... DEST"
-msgstr ""
-
-msgid "remerge all unresolved files"
-msgstr ""
-
-msgid "list state of files needing merge"
-msgstr ""
-
-msgid "mark files as resolved"
-msgstr ""
-
-msgid "unmark files as resolved"
-msgstr ""
-
-msgid "revert all changes when no arguments given"
-msgstr ""
-
-msgid "tipmost revision matching date"
-msgstr "匹配最接近顶点的日期"
-
-msgid "revision to revert to"
-msgstr ""
-
-msgid "do not save backup copies of files"
-msgstr ""
-
-msgid "[OPTION]... [-r REV] [NAME]..."
-msgstr ""
-
-msgid "name of access log file to write to"
-msgstr "记录访问日志的文件名称"
-
-msgid "name of error log file to write to"
-msgstr "记录错误日志的文件名称"
-
-msgid "port to listen on (default: 8000)"
-msgstr "监听的端口(默认: 8000)"
-
-msgid "address to listen on (default: all interfaces)"
-msgstr "监听地址(默认: 所有地址)"
-
-msgid "prefix path to serve from (default: server root)"
-msgstr "服务路径前缀(默认: 服务器根)"
-
-msgid "name to show in web pages (default: working dir)"
-msgstr "在 WEB 页面中显示的名称(默认: 工作目录)"
-
-msgid "name of the webdir config file (serve more than one repo)"
-msgstr "webdir 配置文件的名称(发布多个版本库)"
-
-msgid "for remote clients"
-msgstr "针对远程客户端"
-
-msgid "web templates to use"
-msgstr "使用的 WEB 模板"
-
-msgid "template style to use"
-msgstr "使用的显示样式"
-
-msgid "use IPv6 in addition to IPv4"
-msgstr "同时使用 IPv6 和 IPv4"
-
-msgid "SSL certificate file"
-msgstr "SSL 证书文件"
-
-msgid "show untrusted configuration options"
-msgstr "显示不能信赖的配置选项"
-
-msgid "[-u] [NAME]..."
-msgstr ""
-
-msgid "show status of all files"
-msgstr "显示全部文件的状态"
-
-msgid "show only modified files"
-msgstr "只显示已修改文件的状态"
-
-msgid "show only added files"
-msgstr "只显示已增加文件的状态"
-
-msgid "show only removed files"
-msgstr "只显示已移除文件的状态"
-
-msgid "show only deleted (but tracked) files"
-msgstr "只显示已删除(但被跟踪)文件的状态"
-
-msgid "show only files without changes"
-msgstr "只显示无改动文件的状态"
-
-msgid "show only unknown (not tracked) files"
-msgstr "只显示未知(未被跟踪)文件的状态"
-
-msgid "show only ignored files"
-msgstr "只显示被忽略文件的状态"
-
-msgid "hide status prefix"
-msgstr "隐藏状态前缀"
-
-msgid "show source of copied files"
-msgstr "显示文件的复制源"
-
-msgid "show difference from revision"
-msgstr "显示版本差异"
-
-msgid "replace existing tag"
-msgstr "替换已有的标签"
-
-msgid "make the tag local"
-msgstr "标记标签为本地"
-
-msgid "revision to tag"
-msgstr "标签对应的版本"
-
-msgid "remove a tag"
-msgstr "删除标签"
-
-msgid "[-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME..."
-msgstr ""
-
-msgid "[-p]"
-msgstr ""
-
-msgid "update to new tip if changesets were unbundled"
-msgstr ""
-
-msgid "[-u] FILE..."
-msgstr ""
-
-msgid "overwrite locally modified files (no backup)"
-msgstr "覆盖本地修改的文件(不备份)"
-
-msgid "[-C] [-d DATE] [[-r] REV]"
-msgstr ""
-
-msgid "not found in manifest"
-msgstr ""
-
-msgid "branch name not in UTF-8!"
-msgstr ""
-
-#, python-format
-msgid "  searching for copies back to rev %d\n"
-msgstr ""
-
-#, python-format
-msgid ""
-"  unmatched files in local:\n"
-"   %s\n"
-msgstr ""
-
-#, python-format
-msgid ""
-"  unmatched files in other:\n"
-"   %s\n"
-msgstr ""
-
-msgid "  all copies found (* = to merge, ! = divergent):\n"
-msgstr ""
-
-#, python-format
-msgid "   %s -> %s %s\n"
-msgstr ""
-
-msgid "  checking for directory renames\n"
-msgstr ""
-
-#, python-format
-msgid "  dir %s -> %s\n"
-msgstr ""
-
-#, python-format
-msgid "  file %s -> %s\n"
-msgstr ""
-
-#, python-format
-msgid "'\\n' and '\\r' disallowed in filenames: %r"
-msgstr ""
-
-#, python-format
-msgid "directory %r already in dirstate"
-msgstr ""
-
-#, python-format
-msgid "file %r in dirstate clashes with %r"
-msgstr ""
-
-#, python-format
-msgid "not in dirstate: %s\n"
-msgstr ""
-
-msgid "character device"
-msgstr ""
-
-msgid "block device"
-msgstr ""
-
-msgid "fifo"
-msgstr ""
-
-msgid "socket"
-msgstr ""
-
-msgid "directory"
-msgstr ""
-
-#, python-format
-msgid "%s: unsupported file type (type is %s)\n"
-msgstr ""
-
-#, python-format
-msgid "abort: %s\n"
-msgstr "中止: %s\n"
-
-#, python-format
-msgid ""
-"hg: command '%s' is ambiguous:\n"
-"    %s\n"
-msgstr ""
-
-#, python-format
-msgid "timed out waiting for lock held by %s"
-msgstr ""
-
-#, python-format
-msgid "lock held by %s"
-msgstr ""
-
-#, python-format
-msgid "abort: %s: %s\n"
-msgstr "中止: %s: %s\n"
-
-#, python-format
-msgid "abort: could not lock %s: %s\n"
-msgstr "中止: 不能锁定 %s: %s\n"
-
-#, python-format
-msgid "hg %s: %s\n"
-msgstr ""
-
-#, python-format
-msgid "hg: %s\n"
-msgstr ""
-
-#, python-format
-msgid "abort: %s!\n"
-msgstr "中止: %s!\n"
-
-#, python-format
-msgid "abort: %s"
-msgstr "中止: %s"
-
-msgid " empty string\n"
-msgstr ""
-
-msgid "killed!\n"
-msgstr ""
-
-#, python-format
-msgid "hg: unknown command '%s'\n"
-msgstr "hg: 未知命令 '%s'\n"
-
-#, python-format
-msgid "abort: could not import module %s!\n"
-msgstr "中止: 不能导入模块 %s!\n"
-
-msgid "(did you forget to compile extensions?)\n"
-msgstr "(你是否忘记了编译扩展?)\n"
-
-msgid "(is your Python install correct?)\n"
-msgstr "(你的 Python 安装正确吗?)\n"
-
-#, python-format
-msgid "abort: error: %s\n"
-msgstr "中止: 失败: %s\n"
-
-msgid "broken pipe\n"
-msgstr "坏掉的管道\n"
-
-msgid "interrupted!\n"
-msgstr "中断!\n"
-
-msgid ""
-"\n"
-"broken pipe\n"
-msgstr ""
-"\n"
-"坏掉的管道\n"
-
-msgid "abort: out of memory\n"
-msgstr "中止: 内存不足\n"
-
-msgid "** unknown exception encountered, details follow\n"
-msgstr "** 遇到了未知异常,详细信息如下\n"
-
-msgid "** report bug details to http://www.selenic.com/mercurial/bts\n"
-msgstr "** 报告问题详情到 http://www.selenic.com/mercurial/bts\n"
-
-msgid "** or mercurial@selenic.com\n"
-msgstr "** 或 mercurial@selenic.com\n"
-
-#, python-format
-msgid "** Mercurial Distributed SCM (version %s)\n"
-msgstr "** 分布式软件配置管理工具 - 水银 (版本 %s)\n"
-
-#, python-format
-msgid "** Extensions loaded: %s\n"
-msgstr "** 已加载的扩展: %s\n"
-
-#, python-format
-msgid "malformed --config option: %s"
-msgstr "非法 '--config' 选项: %s"
-
-#, python-format
-msgid "extension '%s' overrides commands: %s\n"
-msgstr "扩展 '%s' 覆盖了命令: %s\n"
-
-msgid "Option --config may not be abbreviated!"
-msgstr "选项 '--config' 不能简短!"
-
-msgid "Option --cwd may not be abbreviated!"
-msgstr "选项 '--cwd' 不能简短!"
-
-msgid ""
-"Option -R has to be separated from other options (i.e. not -qR) and --"
-"repository may only be abbreviated as --repo!"
-msgstr ""
-"选项 -R 必须隔离使用(也就是不能 -qR),并且 --repository 只能简短为 --repo!"
-
-#, python-format
-msgid "Time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n"
-msgstr "时间: 实际 %.3f 秒(用户 %.3f+%.3f 系统 %.3f+%.3f)\n"
-
-#, python-format
-msgid "repository '%s' is not local"
-msgstr "非本地版本库 '%s'"
-
-msgid "invalid arguments"
-msgstr "非法参数"
-
-msgid "exception raised - generating profile anyway\n"
-msgstr ""
-
-msgid ""
-"lsprof not available - install from http://codespeak.net/svn/user/arigo/hack/"
-"misc/lsprof/"
-msgstr ""
-"lsprof 不可用 - 从 http://codespeak.net/svn/user/arigo/hack/misc/lsprof/ 安装"
-
-#, python-format
-msgid "*** failed to import extension %s from %s: %s\n"
-msgstr "*** 加载扩展 '%s',自 '%s': %s\n"
-
-#, python-format
-msgid "*** failed to import extension %s: %s\n"
-msgstr "*** 加载扩展 '%s' 失败: %s\n"
-
-#, python-format
-msgid "couldn't find merge tool %s\n"
-msgstr "不能找到合并工具 '%s'\n"
-
-#, python-format
-msgid "tool %s can't handle symlinks\n"
-msgstr "工具 '%s' 不能处理符号链接\n"
-
-#, python-format
-msgid "tool %s can't handle binary\n"
-msgstr "工具 '%s' 不能处理二进制\n"
-
-#, python-format
-msgid "tool %s requires a GUI\n"
-msgstr "工具 '%s' 需要 GUI\n"
-
-#, python-format
-msgid "picked tool '%s' for %s (binary %s symlink %s)\n"
-msgstr "选择工具 '%s',用于 %s(二进制 %s 符号链接 %s)\n"
-
-#, python-format
-msgid ""
-" no tool found to merge %s\n"
-"keep (l)ocal or take (o)ther?"
-msgstr ""
-" 没有找到工具合并 %s\n"
-"使用本地(l)或者他人(o)的内容?"
-
-msgid "[lo]"
-msgstr ""
-
-msgid "l"
-msgstr ""
-
-#, python-format
-msgid "merging %s and %s to %s\n"
-msgstr ""
-
-#, python-format
-msgid "merging %s\n"
-msgstr ""
-
-#, python-format
-msgid "my %s other %s ancestor %s\n"
-msgstr ""
-
-msgid " premerge successful\n"
-msgstr ""
-
-#, python-format
-msgid ""
-" output file %s appears unchanged\n"
-"was merge successful (yn)?"
-msgstr ""
-
-msgid "[yn]"
-msgstr ""
-
-msgid "n"
-msgstr ""
-
-#, python-format
-msgid "merging %s failed!\n"
-msgstr ""
-
-#, python-format
-msgid "Inconsistent state, %s:%s is good and bad"
-msgstr ""
-
-#, python-format
-msgid "unknown bisect kind %s"
-msgstr ""
-
-msgid "Date Formats"
-msgstr ""
-
-msgid ""
-"\n"
-"    Some commands allow the user to specify a date, e.g.:\n"
-"    * backout, commit, import, tag: Specify the commit date.\n"
-"    * log, revert, update: Select revision(s) by date.\n"
-"\n"
-"    Many date formats are valid. Here are some examples:\n"
-"\n"
-"    \"Wed Dec 6 13:18:29 2006\" (local timezone assumed)\n"
-"    \"Dec 6 13:18 -0600\" (year assumed, time offset provided)\n"
-"    \"Dec 6 13:18 UTC\" (UTC and GMT are aliases for +0000)\n"
-"    \"Dec 6\" (midnight)\n"
-"    \"13:18\" (today assumed)\n"
-"    \"3:39\" (3:39AM assumed)\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)\n"
-"\n"
-"    Lastly, there is Mercurial's internal format:\n"
-"\n"
-"    \"1165432709 0\" (Wed Dec 6 13:18:29 2006 UTC)\n"
-"\n"
-"    This is the internal representation format for dates. unixtime is\n"
-"    the number of seconds since the epoch (1970-01-01 00:00 UTC). offset\n"
-"    is the offset of the local timezone, in seconds west of UTC (negative\n"
-"    if the timezone is east of UTC).\n"
-"\n"
-"    The log command also accepts date ranges:\n"
-"\n"
-"    \"<{date}\" - on or before a given date\n"
-"    \">{date}\" - on or after a given date\n"
-"    \"{date} to {date}\" - a date range, inclusive\n"
-"    \"-{days}\" - within a given number of days of today\n"
-"    "
-msgstr ""
-
-msgid "File Name Patterns"
-msgstr ""
-
-msgid ""
-"\n"
-"    Mercurial accepts several notations for identifying one or more\n"
-"    files at a time.\n"
-"\n"
-"    By default, Mercurial treats filenames as shell-style extended\n"
-"    glob patterns.\n"
-"\n"
-"    Alternate pattern notations must be specified explicitly.\n"
-"\n"
-"    To use a plain path name without any pattern matching, start a\n"
-"    name with \"path:\".  These path names must match completely, from\n"
-"    the root of the current repository.\n"
-"\n"
-"    To use an extended glob, start a name with \"glob:\".  Globs are\n"
-"    rooted at the current directory; a glob such as \"*.c\" will match\n"
-"    files ending in \".c\" in the current directory only.\n"
-"\n"
-"    The supported glob syntax extensions are \"**\" to match any string\n"
-"    across path separators, and \"{a,b}\" to mean \"a or b\".\n"
-"\n"
-"    To use a Perl/Python regular expression, start a name with \"re:\".\n"
-"    Regexp pattern matching is anchored at the root of the repository.\n"
-"\n"
-"    Plain examples:\n"
-"\n"
-"    path:foo/bar   a name bar in a directory named foo in the root of\n"
-"                   the repository\n"
-"    path:path:name a file or directory named \"path:name\"\n"
-"\n"
-"    Glob examples:\n"
-"\n"
-"    glob:*.c       any name ending in \".c\" in the current directory\n"
-"    *.c            any name ending in \".c\" in the current directory\n"
-"    **.c           any name ending in \".c\" in the current directory, or\n"
-"                   any subdirectory\n"
-"    foo/*.c        any name ending in \".c\" in the directory foo\n"
-"    foo/**.c       any name ending in \".c\" in the directory foo, or any\n"
-"                   subdirectory\n"
-"\n"
-"    Regexp examples:\n"
-"\n"
-"    re:.*\\.c$      any name ending in \".c\", anywhere in the repository\n"
-"\n"
-"    "
-msgstr ""
-
-msgid "Environment Variables"
-msgstr ""
-
-msgid ""
-"\n"
-"HG::\n"
-"    Path to the 'hg' executable, automatically passed when running hooks,\n"
-"    extensions or external tools. If unset or empty, an executable named\n"
-"    'hg' (with com/exe/bat/cmd extension on Windows) is searched.\n"
-"\n"
-"HGEDITOR::\n"
-"    This is the name of the editor to use when committing. See EDITOR.\n"
-"\n"
-"    (deprecated, use .hgrc)\n"
-"\n"
-"HGENCODING::\n"
-"    This overrides the default locale setting detected by Mercurial.\n"
-"    This setting is used to convert data including usernames,\n"
-"    changeset descriptions, tag names, and branches. This setting can\n"
-"    be overridden with the --encoding command-line option.\n"
-"\n"
-"HGENCODINGMODE::\n"
-"    This sets Mercurial's behavior for handling unknown characters\n"
-"    while transcoding user inputs. The default is \"strict\", which\n"
-"    causes Mercurial to abort if it can't translate a character. Other\n"
-"    settings include \"replace\", which replaces unknown characters, and\n"
-"    \"ignore\", which drops them. This setting can be overridden with\n"
-"    the --encodingmode command-line option.\n"
-"\n"
-"HGMERGE::\n"
-"    An executable to use for resolving merge conflicts. The program\n"
-"    will be executed with three arguments: local file, remote file,\n"
-"    ancestor file.\n"
-"\n"
-"    (deprecated, use .hgrc)\n"
-"\n"
-"HGRCPATH::\n"
-"    A list of files or directories to search for hgrc files.  Item\n"
-"    separator is \":\" on Unix, \";\" on Windows.  If HGRCPATH is not set,\n"
-"    platform default search path is used.  If empty, only .hg/hgrc of\n"
-"    current repository is read.\n"
-"\n"
-"    For each element in path, if a directory, all entries in directory\n"
-"    ending with \".rc\" are added to path.  Else, element itself is\n"
-"    added to path.\n"
-"\n"
-"HGUSER::\n"
-"    This is the string used for the author of a commit.\n"
-"\n"
-"    (deprecated, use .hgrc)\n"
-"\n"
-"EMAIL::\n"
-"    If HGUSER is not set, this will be used as the author for a commit.\n"
-"\n"
-"LOGNAME::\n"
-"    If neither HGUSER nor EMAIL is set, LOGNAME will be used (with\n"
-"    '@hostname' appended) as the author value for a commit.\n"
-"\n"
-"VISUAL::\n"
-"    This is the name of the editor to use when committing. See EDITOR.\n"
-"\n"
-"EDITOR::\n"
-"    Sometimes Mercurial needs to open a text file in an editor\n"
-"    for a user to modify, for example when writing commit messages.\n"
-"    The editor it uses is determined by looking at the environment\n"
-"    variables HGEDITOR, VISUAL and EDITOR, in that order. The first\n"
-"    non-empty one is chosen. If all of them are empty, the editor\n"
-"    defaults to 'vi'.\n"
-"\n"
-"PYTHONPATH::\n"
-"    This is used by Python to find imported modules and may need to be set\n"
-"    appropriately if Mercurial is not installed system-wide.\n"
-"    "
-msgstr ""
-
-msgid "Specifying Single Revisions"
-msgstr ""
-
-msgid ""
-"\n"
-"    Mercurial accepts several notations for identifying individual\n"
-"    revisions.\n"
-"\n"
-"    A plain integer is treated as a revision number. Negative\n"
-"    integers are treated as offsets from the tip, with -1 denoting the\n"
-"    tip.\n"
-"\n"
-"    A 40-digit hexadecimal string is treated as a unique revision\n"
-"    identifier.\n"
-"\n"
-"    A hexadecimal string less than 40 characters long is treated as a\n"
-"    unique revision identifier, and referred to as a short-form\n"
-"    identifier. A short-form identifier is only valid if it is the\n"
-"    prefix of one full-length identifier.\n"
-"\n"
-"    Any other string is treated as a tag name, which is a symbolic\n"
-"    name associated with a revision identifier. Tag names may not\n"
-"    contain the \":\" character.\n"
-"\n"
-"    The reserved name \"tip\" is a special tag that always identifies\n"
-"    the most recent revision.\n"
-"\n"
-"    The reserved name \"null\" indicates the null revision. This is the\n"
-"    revision of an empty repository, and the parent of revision 0.\n"
-"\n"
-"    The reserved name \".\" indicates the working directory parent. If\n"
-"    no working directory is checked out, it is equivalent to null.\n"
-"    If an uncommitted merge is in progress, \".\" is the revision of\n"
-"    the first parent.\n"
-"    "
-msgstr ""
-
-msgid "Specifying Multiple Revisions"
-msgstr "指定多个版本"
-
-msgid ""
-"\n"
-"    When Mercurial accepts more than one revision, they may be\n"
-"    specified individually, or provided as a continuous range,\n"
-"    separated by the \":\" character.\n"
-"\n"
-"    The syntax of range notation is [BEGIN]:[END], where BEGIN and END\n"
-"    are revision identifiers. Both BEGIN and END are optional. If\n"
-"    BEGIN is not specified, it defaults to revision number 0. If END\n"
-"    is not specified, it defaults to the tip. The range \":\" thus\n"
-"    means \"all revisions\".\n"
-"\n"
-"    If BEGIN is greater than END, revisions are treated in reverse\n"
-"    order.\n"
-"\n"
-"    A range acts as a closed interval. This means that a range of 3:5\n"
-"    gives 3, 4 and 5. Similarly, a range of 4:2 gives 4, 3, and 2.\n"
-"    "
-msgstr ""
-"\n"
-"    当水银接受多个版本时,它们可以单独给出,或者以字符 \":\" 分割的连续范围\n"
-"    格式提供。\n"
-"\n"
-"    范围的语法是 '[BEGIN]:[END]',其中 'BEGIN' 和 'END' 是版本标识。'BEGIN'\n"
-"    和 'END' 都是可选的。'BEGIN' 默认是 0,'END' 默认是 'tip'。因此范围 \":"
-"\"\n"
-"    意味着全部版本。\n"
-"\n"
-"    如果 'BEGIN' 大于 'END',版本视为反序。\n"
-"\n"
-"    范围是闭区间。即范围 '3:5' 是 '3','4','5'。同样,范围 '4:2' 是 '4',\n"
-"    '3','2'。\n"
-"    "
-
-msgid "Diff Formats"
-msgstr "差异格式"
-
-msgid ""
-"\n"
-"    Mercurial's default format for showing changes between two versions\n"
-"    of a file is compatible with the unified format of GNU diff, which\n"
-"    can be used by GNU patch and many other standard tools.\n"
-"\n"
-"    While this standard format is often enough, it does not encode the\n"
-"    following information:\n"
-"\n"
-"     - executable status\n"
-"     - copy or rename information\n"
-"     - changes in binary files\n"
-"     - creation or deletion of empty files\n"
-"\n"
-"    Mercurial also supports the extended diff format from the git VCS\n"
-"    which addresses these limitations. The git diff format is not\n"
-"    produced by default because there are very few tools which\n"
-"    understand this format.\n"
-"\n"
-"    This means that when generating diffs from a Mercurial repository\n"
-"    (e.g. with \"hg export\"), you should be careful about things like\n"
-"    file copies and renames or other things mentioned above, because\n"
-"    when applying a standard diff to a different repository, this extra\n"
-"    information is lost. Mercurial's internal operations (like push and\n"
-"    pull) are not affected by this, because they use an internal binary\n"
-"    format for communicating changes.\n"
-"\n"
-"    To make Mercurial produce the git extended diff format, use the\n"
-"    --git option available for many commands, or set 'git = True' in the\n"
-"    [diff] section of your hgrc. You do not need to set this option when\n"
-"    importing diffs in this format or using them in the mq extension.\n"
-"    "
-msgstr ""
-"\n"
-"    水银显示文件不同版本之间差异的格式与 GNU diff 标准格式兼容,可用于\n"
-"    GNU patch 和许多标准工具。\n"
-"\n"
-"    虽然标准格式在大多数情况下都能满足要求,但是它不包含下述信息:\n"
-"\n"
-"     - 可执行状态\n"
-"     - 复制或改名信息\n"
-"     - 二进制文件的修改\n"
-"     - 创建或删除空文件\n"
-"\n"
-"    水银也支持解决这些限制的 git 扩展差异格式。由于支持 git 差异格式的工具\n"
-"    很少,所以它不是默认格式。\n"
-"\n"
-"    这意味着当从水银版本库(例如 \"hg export\")产生差异时,在其它版本库应用标\n"
-"    准差异时,会丢失文件复制或改名等额外信息,所以你要小心处理。水银的内部\n"
-"    操作(例如 push 和 pull)在传达改变时,使用内部的二进制格式,所以不受影\n"
-"    响。\n"
-"\n"
-"    要让水银产生 git 扩展差异格式,可以对许多命令使用选项 '--git',或者在\n"
-"    你的 hgrc 文件中的节 '[diff]' 中增加 'git = True'。当你从此格式导入时,\n"
-"    或在 mq 扩展中使用时,不需要设置此选项。\n"
-"    "
-
-msgid "Template Usage"
-msgstr "模版用法"
-
-msgid ""
-"\n"
-"    Mercurial allows you to customize output of commands through\n"
-"    templates. You can either pass in a template from the command line,\n"
-"    via the --template option, or select an existing template-style (--"
-"style).\n"
-"\n"
-"    You can customize output for any \"log-like\" command: log, outgoing,\n"
-"    incoming, tip, parents, heads and glog are all template-enabled.\n"
-"\n"
-"    Three styles are packaged with Mercurial: default (the style used\n"
-"    when no explicit preference is passed), compact and changelog. Usage:\n"
-"\n"
-"        $ hg log -r1 --style changelog\n"
-"\n"
-"    A template is a piece of text, with markup to invoke variable expansion:\n"
-"\n"
-"        $ hg log -r1 --template \"{node}\\n\"\n"
-"        b56ce7b07c52de7d5fd79fb89701ea538af65746\n"
-"\n"
-"    Strings in curly braces are called keywords. The availability of\n"
-"    keywords depends on the exact context of the templater. These keywords\n"
-"    are usually available for templating a log-like command:\n"
-"\n"
-"    - author: String. The unmodified author of the changeset.\n"
-"    - branches: String. The name of the branch on which the changeset\n"
-"          was committed. Will be empty if the branch name was default.\n"
-"    - date: Date information. The date when the changeset was committed.\n"
-"    - desc: String. The text of the changeset description.\n"
-"    - files: List of strings. All files modified, added, or removed by\n"
-"          this changeset.\n"
-"    - file_adds: List of strings. Files added by this changeset.\n"
-"    - file_mods: List of strings. Files modified by this changeset.\n"
-"    - file_dels: List of strings. Files removed by this changeset.\n"
-"    - node: String. The changeset identification hash, as a 40-character\n"
-"          hexadecimal string.\n"
-"    - parents: List of strings. The parents of the changeset.\n"
-"    - rev: Integer. The repository-local changeset revision number.\n"
-"    - tags: List of strings. Any tags associated with the changeset.\n"
-"\n"
-"    The \"date\" keyword does not produce human-readable output. If you\n"
-"    want to use a date in your output, you can use a filter to process it.\n"
-"    Filters are functions which return a string based on the input variable.\n"
-"    You can also use a chain of filters to get the wanted output:\n"
-"\n"
-"       $ hg tip --template \"{date|isodate}\\n\"\n"
-"       2008-08-21 18:22 +0000\n"
-"\n"
-"    List of filters:\n"
-"\n"
-"    - addbreaks: Any text. Add an XHTML \"<br />\" tag before the end of\n"
-"          every line except the last.\n"
-"    - age: Date. Returns a human-readable age for the given date.\n"
-"    - basename: Any text. Treats the text as a path, and returns the\n"
-"          basename. For example, \"foo/bar/baz\" becomes \"baz\".\n"
-"    - date: Date. Returns a date in a Unix date command format, including\n"
-"          the timezone: \"Mon Sep 04 15:13:13 2006 0700\".\n"
-"    - domain: Any text. Finds the first string that looks like an email\n"
-"          address, and extracts just the domain component.\n"
-"    - email: Any text. Extracts the first string that looks like an email\n"
-"          address.\n"
-"    - escape: Any text. Replaces the special XML/XHTML characters \"&\",\n"
-"          \"<\" and \">\" with XML entities.\n"
-"    - fill68: Any text. Wraps the text to fit in 68 columns.\n"
-"    - fill76: Any text. Wraps the text to fit in 76 columns.\n"
-"    - firstline: Any text. Returns the first line of text.\n"
-"    - hgdate: Date. Returns the date as a pair of numbers:\n"
-"          \"1157407993 25200\" (Unix timestamp, timezone offset).\n"
-"    - isodate: Date. Returns the date in ISO 8601 format.\n"
-"    - obfuscate: Any text. Returns the input text rendered as a sequence\n"
-"          of XML entities.\n"
-"    - person: Any text. Returns the text before an email address.\n"
-"    - rfc822date: Date. Returns a date using the same format used\n"
-"          in email headers.\n"
-"    - short: Changeset hash. Returns the short form of a changeset hash,\n"
-"          i.e. a 12-byte hexadecimal string.\n"
-"    - shortdate: Date. Returns a date like \"2006-09-04\".\n"
-"    - strip: Any text. Strips all leading and trailing whitespace.\n"
-"    - tabindent: Any text. Returns the text, with every line except the\n"
-"          first starting with a tab character.\n"
-"    - urlescape: Any text. Escapes all \"special\" characters. For example,\n"
-"          \"foo bar\" becomes \"foo%20bar\".\n"
-"    - user: Any text. Returns the user portion of an email address.\n"
-"    "
-msgstr ""
-"\n"
-"    水银允许你通过模版定制命令的输出。你可以通过命令行选项 '--template'\n"
-"    来使用模版,或者选择已有的模版样式(--style)。\n"
-"\n"
-"    你可以定制任意输出与日志信息类似的命令,即: log,outgoing,incoming,\n"
-"    tip,parents,heads 和 glog 这些启用模版的命令。\n"
-"\n"
-"    水银中内置了 3 种样式: default (默认), compact 和 changelog。用法:\n"
-"\n"
-"        $ hg log -r1 --style changelog\n"
-"\n"
-"    模版是文本片断,其中的标记用于变量扩展:\n"
-"\n"
-"        $ hg log -r1 --template \"{node}\\n\"\n"
-"        b56ce7b07c52de7d5fd79fb89701ea538af65746\n"
-"\n"
-"    花括号中的字符串称为关键字。可用的关键字依赖于模版的上下文。下述关键字\n"
-"    可用于输出与日志信息类似的命令:\n"
-"\n"
-"    - author: 字符串。改变集的作者。\n"
-"    - branches: 字符串。改变集的分支。如果分支名称为 'default' 则为空。\n"
-"    - date: 日期信息。改变集的日期。\n"
-"    - desc: 字符串。改变集的描述。\n"
-"    - files: 字符串列表。改变集中被修改、增加和删除的全部文件。\n"
-"    - file_adds: 字符串列表。改变集中被增加的文件。\n"
-"    - file_mods: 字符串列表。改变集中被修改的文件\n"
-"    - file_dels: 字符串列表。改变集中被删除的文件\n"
-"    - node: 字符串。改变集的哈系标识,40 个字符的 16 进制字符串。\n"
-"    - parents: 字符串列表。改变集的父亲。\n"
-"    - rev: 整数。本地版本库的改变集的版本号。\n"
-"    - tags: 字符串列表。改变集的标签。\n"
-"\n"
-"    关键字 \"date\" 不产生人工可读的输出。如果你想在输出中使用日期,可以使用\n"
-"    过滤器来处理它。过滤器是根据输入变量返回字符串的函数。你还可以使用过滤\n"
-"    链来产生需要的输出:\n"
-"\n"
-"       $ hg tip --template \"{date|isodate}\\n\"\n"
-"       2008-08-21 18:22 +0000\n"
-"\n"
-"    过滤器列表:\n"
-"\n"
-"    - addbreaks: 输入任意文本。除了最后一行,在每行的结尾增加 XHTML 标签\n"
-"          \"<br />\"。\n"
-"    - age: 输入日期。返回指定日期的人工可读的字符串。\n"
-"    - basename: 输入任意文本。将输入视为路径,返回基础名称。例如\n"
-"          \"foo/bar/baz\" 成为 \"baz\"。\n"
-"    - date: 输入日期。返回指定日期的 Unix 命令 'date' 格式字符串,包含时\n"
-"          区,例如: \"Mon Sep 04 15:13:13 2006 0700\"。\n"
-"    - domain: 输入任意文本。找到第一个 email 地址,返回其域名。\n"
-"    - email: 输入任意文本。返回第一个 email 地址。\n"
-"    - escape: 输入任意文本。用 XML 实体来封装 XML/XHTML 的特殊字符 \"&\",\n"
-"          \"<\" 和 \">\"。\n"
-"    - fill68: 输入任意文本。格式化为 68 列文本。\n"
-"    - fill76: 输入任意文本。格式化为 76 列文本。\n"
-"    - firstline: 输入任意文本。返回首行。\n"
-"    - hgdate: 输入日期。返回一对数字:\n"
-"          \"1157407993 25200\" (Unix 时戳,时区偏移)。\n"
-"    - isodate: 输入日期。返回 ISO 8601 格式的日期。\n"
-"    - obfuscate: 输入任意文本。返回其 XML 实体序列。\n"
-"    - person: 输入任意文本。返回 email 地址前的文本。\n"
-"    - rfc822date: 输入日期。返回 email 头部使用的日期格式。\n"
-"    - short: 改变集哈系。返回改变集哈系的短格式。例如 12 字符的 16 进制\n"
-"          字符串。\n"
-"    - shortdate: 输入日期。返回格式类似于 \"2006-09-04\"。\n"
-"    - strip: 输入任意文本。删除全部行首与行尾空白。\n"
-"    - tabindent: 输入任意文本。除了首行,在每行的开始增加制表符号。\n"
-"    - urlescape: 输入任意文本。封装全部特殊字符。例如\n"
-"          \"foo bar\" 成为 \"foo%20bar\"。\n"
-"    - user: 输入任意文本。返回 email 地址中的用户名称部分。\n"
-"    "
-
-msgid "Url Paths"
-msgstr "统一资源定位路径"
-
-msgid ""
-"\n"
-"    Valid URLs are of the form:\n"
-"\n"
-"      local/filesystem/path (or file://local/filesystem/path)\n"
-"      http://[user[:pass]@]host[:port]/[path]\n"
-"      https://[user[:pass]@]host[:port]/[path]\n"
-"      ssh://[user[:pass]@]host[:port]/[path]\n"
-"\n"
-"    Paths in the local filesystem can either point to Mercurial\n"
-"    repositories or to bundle files (as created by 'hg bundle' or\n"
-"    'hg incoming --bundle').\n"
-"\n"
-"    An optional identifier after # indicates a particular branch, tag,\n"
-"    or changeset to deal with in the remote repository.\n"
-"\n"
-"    Some features, such as pushing to http:// and https:// URLs are\n"
-"    only possible if the feature is explicitly enabled on the\n"
-"    remote Mercurial server.\n"
-"\n"
-"    Some notes about using SSH with Mercurial:\n"
-"    - SSH requires an accessible shell account on the destination machine\n"
-"      and a copy of hg in the remote path or specified with as remotecmd.\n"
-"    - path is relative to the remote user's home directory by default.\n"
-"      Use an extra slash at the start of a path to specify an absolute path:\n"
-"        ssh://example.com//tmp/repository\n"
-"    - Mercurial doesn't use its own compression via SSH; the right thing\n"
-"      to do is to configure it in your ~/.ssh/config, e.g.:\n"
-"        Host *.mylocalnetwork.example.com\n"
-"          Compression no\n"
-"        Host *\n"
-"          Compression yes\n"
-"      Alternatively specify \"ssh -C\" as your ssh command in your hgrc or\n"
-"      with the --ssh command line option.\n"
-"\n"
-"    These urls can all be stored in your hgrc with path aliases under the\n"
-"    [paths] section like so:\n"
-"    [paths]\n"
-"    alias1 = URL1\n"
-"    alias2 = URL2\n"
-"    ...\n"
-"\n"
-"    You can then use the alias for any command that uses a url (for example\n"
-"    'hg pull alias1' would pull from the 'alias1' path).\n"
-"\n"
-"    Two path aliases are more important because they are used as defaults\n"
-"    when you do not provide the url to a command:\n"
-"\n"
-"    default:\n"
-"      When you create a repository with hg clone, the clone command saves\n"
-"      the location of the source repository as the 'default' path. This is\n"
-"      then used when you omit a path from the push and pull commands.\n"
-"\n"
-"    default-push:\n"
-"      The push command will look for a path named 'default-push', and\n"
-"      prefer it over 'default' if both are defined.\n"
-"    "
-msgstr ""
-"\n"
-"    有效的位置格式:\n"
-"\n"
-"      local/filesystem/path (or file://local/filesystem/path)\n"
-"      http://[user[:pass]@]host[:port]/[path]\n"
-"      https://[user[:pass]@]host[:port]/[path]\n"
-"      ssh://[user[:pass]@]host[:port]/[path]\n"
-"\n"
-"    位于本地文件系统中的路径可以指向版本库,也可以指向打包的文件(被\n"
-"    'hg bundle' 或 'hg incoming --bundle' 创建)。\n"
-"\n"
-"    在 '#' 后面可选的标识符用于指定要取得的分支,标签或改变集。\n"
-"\n"
-"    仅当远程水银服务器显式启用时,才能推到 'http://' 和 'https://'。\n"
-"\n"
-"    在水银中使用 SSH 的一些提示:\n"
-"    - 使用 SSH 时,需要在远程主机上有可登录帐号,远程路径中还需要有\n"
-"      hg,或者有指定的远程命令。\n"
-"    - 默认 'path' 是相对于远程主机上的用户家目录。\n"
-"      可以在路径前增加一个斜线指定绝对路径:\n"
-"        ssh://example.com//tmp/repository\n"
-"    - 水银使用 SSH 时不使用压缩,所以你可以在 ~/.ssh/config 中配置\n"
-"      SSH 执行压缩,例如:\n"
-"        Host *.mylocalnetwork.example.com\n"
-"          Compression no\n"
-"        Host *\n"
-"          Compression yes\n"
-"      另一个方法是在你的 hgrc 中将 \"ssh -C\" 作为你的 ssh 命令,或\n"
-"      用于命令行参数 '--ssh' 中。\n"
-"\n"
-"    这些路径可以在你的 'hgrc' 中的节 '[paths]' 中定义别名:\n"
-"    [paths]\n"
-"    alias1 = URL1\n"
-"    alias2 = URL2\n"
-"    ...\n"
-"\n"
-"    然后你就可以在任意命令中使用这些别名作为路径(例如 'hg pull alias1'\n"
-"    会从 'alias1' 定义的路径取得指定版本)。\n"
-"\n"
-"    因为用于默认路径,所以这 2 个路径别名特别重要:\n"
-"\n"
-"    default:\n"
-"      当你使用 'hg clone' 创建版本库时,此命令会将源版本库的路径保存\n"
-"      为别名 'default',然后你可以对命令 'push' 和 'pull' 省略路径。\n"
-"\n"
-"    default-push:\n"
-"      命令 'push' 会查找别名是 'default-push' 的路径,它覆盖定义 'default'。\n"
-"    "
-
-#, python-format
-msgid "destination directory: %s\n"
-msgstr "目标目录: %s\n"
-
-#, python-format
-msgid "destination '%s' already exists"
-msgstr ""
-
-msgid ""
-"src repository does not support revision lookup and so doesn't support clone "
-"by revision"
-msgstr ""
-
-msgid "clone from remote to remote not supported"
-msgstr ""
-
-msgid "updating working directory\n"
-msgstr "正在更新工作目录\n"
-
-msgid "updated"
-msgstr "已更新"
-
-msgid "merged"
-msgstr "已合并"
-
-msgid "removed"
-msgstr "已删除"
-
-msgid "unresolved"
-msgstr "未解决"
-
-#, python-format
-msgid "%d files %s"
-msgstr "%d 个文件%s"
-
-msgid "use 'hg resolve' to retry unresolved file merges\n"
-msgstr ""
-
-msgid "(branch merge, don't forget to commit)\n"
-msgstr ""
-
-#, python-format
-msgid "error reading %s/.hg/hgrc: %s\n"
-msgstr ""
-
-msgid "SSL support is unavailable"
-msgstr ""
-
-msgid "IPv6 not available on this system"
-msgstr ""
-
-#, python-format
-msgid "cannot start server at '%s:%d': %s"
-msgstr ""
-
-#, python-format
-msgid "calling hook %s: %s\n"
-msgstr ""
-
-#, python-format
-msgid "%s hook is invalid (\"%s\" not in a module)"
-msgstr ""
-
-#, python-format
-msgid "%s hook is invalid (import of \"%s\" failed)"
-msgstr ""
-
-#, python-format
-msgid "%s hook is invalid (\"%s\" is not defined)"
-msgstr ""
-
-#, python-format
-msgid "%s hook is invalid (\"%s\" is not callable)"
-msgstr ""
-
-#, python-format
-msgid "error: %s hook failed: %s\n"
-msgstr ""
-
-#, python-format
-msgid "error: %s hook raised an exception: %s\n"
-msgstr ""
-
-#, python-format
-msgid "%s hook failed"
-msgstr ""
-
-#, python-format
-msgid "warning: %s hook failed\n"
-msgstr ""
-
-#, python-format
-msgid "running hook %s: %s\n"
-msgstr ""
-
-#, python-format
-msgid "%s hook %s"
-msgstr ""
-
-#, python-format
-msgid "warning: %s hook %s\n"
-msgstr ""
-
-msgid "connection ended unexpectedly"
-msgstr ""
-
-#, python-format
-msgid "unsupported URL component: \"%s\""
-msgstr ""
-
-#, python-format
-msgid "using %s\n"
-msgstr "使用 %s\n"
-
-#, python-format
-msgid "capabilities: %s\n"
-msgstr ""
-
-msgid "operation not supported over http"
-msgstr ""
-
-#, python-format
-msgid "sending %s command\n"
-msgstr "发送命令 '%s'\n"
-
-#, python-format
-msgid "sending %s bytes\n"
-msgstr "发送 %s 字节\n"
-
-msgid "authorization failed"
-msgstr "授权失败"
-
-#, python-format
-msgid "http error while sending %s command\n"
-msgstr ""
-
-msgid "http error, possibly caused by proxy setting"
-msgstr ""
-
-#, python-format
-msgid "real URL is %s\n"
-msgstr "实际 URL 是 '%s'\n"
-
-#, python-format
-msgid "Requested URL: '%s'\n"
-msgstr "请求的 URL: '%s'\n"
-
-#, python-format
-msgid "'%s' does not appear to be an hg repository"
-msgstr "'%s' 似乎不是水银版本库"
-
-#, python-format
-msgid "'%s' sent a broken Content-Type header (%s)"
-msgstr ""
-
-#, python-format
-msgid "'%s' uses newer protocol %s"
-msgstr ""
-
-msgid "look up remote revision"
-msgstr ""
-
-msgid "unexpected response:"
-msgstr ""
-
-msgid "look up remote changes"
-msgstr ""
-
-msgid "push failed (unexpected response):"
-msgstr ""
-
-#, python-format
-msgid "push failed: %s"
-msgstr ""
-
-msgid "Python support for SSL and HTTPS is not installed"
-msgstr ""
-
-msgid "cannot create new http repository"
-msgstr ""
-
-#, python-format
-msgid "%s: ignoring invalid syntax '%s'\n"
-msgstr ""
-
-#, python-format
-msgid "skipping unreadable ignore file '%s': %s\n"
-msgstr ""
-
-#, python-format
-msgid "repository %s not found"
-msgstr ""
-
-#, python-format
-msgid "repository %s already exists"
-msgstr "版本库 %s 已存在"
-
-#, python-format
-msgid "requirement '%s' not supported"
-msgstr ""
-
-#, python-format
-msgid "%r cannot be used in a tag name"
-msgstr ""
-
-msgid "working copy of .hgtags is changed (please commit .hgtags manually)"
-msgstr ""
-
-#, python-format
-msgid "%s, line %s: %s\n"
-msgstr ""
-
-msgid "cannot parse entry"
-msgstr ""
-
-#, python-format
-msgid "node '%s' is not well formed"
-msgstr ""
-
-#, python-format
-msgid "tag '%s' refers to unknown node"
-msgstr ""
-
-#, python-format
-msgid "unknown revision '%s'"
-msgstr ""
-
-#, python-format
-msgid "filtering %s through %s\n"
-msgstr ""
-
-msgid "journal already exists - run hg recover"
-msgstr ""
-
-msgid "rolling back interrupted transaction\n"
-msgstr "回滚中断的事务\n"
-
-msgid "no interrupted transaction available\n"
-msgstr ""
-
-msgid "rolling back last transaction\n"
-msgstr "回滚最近的事务\n"
-
-#, python-format
-msgid "Named branch could not be reset, current branch still is: %s\n"
-msgstr ""
-
-msgid "no rollback information available\n"
-msgstr "没有回滚信息可用\n"
-
-#, python-format
-msgid "waiting for lock on %s held by %r\n"
-msgstr ""
-
-#, python-format
-msgid "repository %s"
-msgstr ""
-
-#, python-format
-msgid "working directory of %s"
-msgstr ""
-
-#, python-format
-msgid " %s: searching for copy revision for %s\n"
-msgstr ""
-
-#, python-format
-msgid " %s: copy %s:%s\n"
-msgstr ""
-
-msgid "cannot partially commit a merge (do not specify files or patterns)"
-msgstr ""
-
-#, python-format
-msgid "%s not tracked!\n"
-msgstr "%s 没有被跟踪!\n"
-
-msgid "unresolved merge conflicts (see hg resolve)"
-msgstr "未解决的合并冲突(参见 'hg resolve')"
-
-msgid "nothing changed\n"
-msgstr "没有改变\n"
-
-#, python-format
-msgid "trouble committing %s!\n"
-msgstr "提交 '%s' 出错!\n"
-
-msgid "HG: Enter commit message.  Lines beginning with 'HG:' are removed."
-msgstr "HG: 请输入提交日志。以 'HG:' 开始的行会被删除。"
-
-msgid "empty commit message"
-msgstr "空的提交日志"
-
-#, python-format
-msgid "%s does not exist!\n"
-msgstr "%s 不存在!\n"
-
-#, python-format
-msgid ""
-"%s: files over 10MB may cause memory and performance problems\n"
-"(use 'hg revert %s' to unadd the file)\n"
-msgstr ""
-
-#, python-format
-msgid "%s not added: only files and symlinks supported currently\n"
-msgstr ""
-
-#, python-format
-msgid "%s already tracked!\n"
-msgstr ""
-
-#, python-format
-msgid "%s not added!\n"
-msgstr ""
-
-#, python-format
-msgid "%s still exists!\n"
-msgstr ""
-
-#, python-format
-msgid "%s not removed!\n"
-msgstr ""
-
-#, python-format
-msgid "copy failed: %s is not a file or a symbolic link\n"
-msgstr ""
-
-msgid "searching for changes\n"
-msgstr "正在搜索修改\n"
-
-#, python-format
-msgid "examining %s:%s\n"
-msgstr ""
-
-msgid "branch already found\n"
-msgstr ""
-
-#, python-format
-msgid "found incomplete branch %s:%s\n"
-msgstr ""
-
-#, python-format
-msgid "found new changeset %s\n"
-msgstr ""
-
-#, python-format
-msgid "request %d: %s\n"
-msgstr ""
-
-#, python-format
-msgid "received %s:%s\n"
-msgstr ""
-
-#, python-format
-msgid "narrowing %d:%d %s\n"
-msgstr ""
-
-#, python-format
-msgid "found new branch changeset %s\n"
-msgstr ""
-
-#, python-format
-msgid "narrowed branch search to %s:%s\n"
-msgstr ""
-
-msgid "already have changeset "
-msgstr ""
-
-msgid "warning: repository is unrelated\n"
-msgstr ""
-
-msgid "repository is unrelated"
-msgstr ""
-
-msgid "found new changesets starting at "
-msgstr ""
-
-#, python-format
-msgid "%d total queries\n"
-msgstr ""
-
-msgid "common changesets up to "
-msgstr ""
-
-msgid "requesting all changes\n"
-msgstr "正在请求全部修改\n"
-
-msgid ""
-"Partial pull cannot be done because other repository doesn't support "
-"changegroupsubset."
-msgstr ""
-
-msgid "abort: push creates new remote heads!\n"
-msgstr ""
-
-msgid "(did you forget to merge? use push -f to force)\n"
-msgstr ""
-
-msgid "note: unsynced remote changes!\n"
-msgstr ""
-
-#, python-format
-msgid "%d changesets found\n"
-msgstr "已发现 %d 个改变集\n"
-
-msgid "list of changesets:\n"
-msgstr ""
-
-#, python-format
-msgid "empty or missing revlog for %s"
-msgstr ""
-
-#, python-format
-msgid "add changeset %s\n"
-msgstr ""
-
-msgid "adding changesets\n"
-msgstr "正在增加修改集\n"
-
-msgid "received changelog group is empty"
-msgstr ""
-
-msgid "adding manifests\n"
-msgstr "正在增加清单\n"
-
-msgid "adding file changes\n"
-msgstr "正在增加文件改变\n"
-
-#, python-format
-msgid "adding %s revisions\n"
-msgstr ""
-
-msgid "received file revlog group is empty"
-msgstr ""
-
-#, python-format
-msgid " (%+d heads)"
-msgstr ""
-
-#, python-format
-msgid "added %d changesets with %d changes to %d files%s\n"
-msgstr "已增加 %d 个改变集,包含 %d 个改变,修改了 %d 个文件%s\n"
-
-msgid "updating the branch cache\n"
-msgstr ""
-
-msgid "Unexpected response from remote server:"
-msgstr ""
-
-msgid "operation forbidden by server"
-msgstr ""
-
-msgid "locking the remote repository failed"
-msgstr ""
-
-msgid "the server sent an unknown error code"
-msgstr ""
-
-msgid "streaming all changes\n"
-msgstr ""
-
-#, python-format
-msgid "%d files to transfer, %s of data\n"
-msgstr ""
-
-#, python-format
-msgid "adding %s (%s)\n"
-msgstr ""
-
-#, python-format
-msgid "transferred %s in %.1f seconds (%s/sec)\n"
-msgstr ""
-
-msgid "no [smtp]host in hgrc - cannot send mail"
-msgstr ""
-
-#, python-format
-msgid "sending mail: smtp host %s, port %s\n"
-msgstr ""
-
-msgid "can't use TLS: Python SSL support not installed"
-msgstr ""
-
-msgid "(using tls)\n"
-msgstr ""
-
-#, python-format
-msgid "(authenticating to mail server as %s)\n"
-msgstr ""
-
-#, python-format
-msgid "sending mail: %s\n"
-msgstr ""
-
-msgid "smtp specified as email transport, but no smtp host configured"
-msgstr ""
-
-#, python-format
-msgid "%r specified as email transport, but not in PATH"
-msgstr ""
-
-#, python-format
-msgid "ignoring invalid sendcharset: %s\n"
-msgstr ""
-
-#, python-format
-msgid "invalid email address: %s"
-msgstr ""
-
-#, python-format
-msgid "invalid local address: %s"
-msgstr ""
-
-msgid "'\\n' and '\\r' disallowed in filenames"
-msgstr ""
-
-#, python-format
-msgid "failed to remove %s from manifest"
-msgstr ""
-
-#, python-format
-msgid "diff context lines count must be an integer, not %r"
-msgstr ""
-
-#, python-format
-msgid ""
-"untracked file in working directory differs from file in requested revision: "
-"'%s'"
-msgstr ""
-
-#, python-format
-msgid "case-folding collision between %s and %s"
-msgstr ""
-
-msgid "resolving manifests\n"
-msgstr "正在解析清单\n"
-
-#, python-format
-msgid " overwrite %s partial %s\n"
-msgstr ""
-
-#, python-format
-msgid " ancestor %s local %s remote %s\n"
-msgstr ""
-
-#, python-format
-msgid ""
-" conflicting flags for %s\n"
-"(n)one, e(x)ec or sym(l)ink?"
-msgstr ""
-
-#, python-format
-msgid ""
-" local changed %s which remote deleted\n"
-"use (c)hanged version or (d)elete?"
-msgstr ""
-
-msgid "[cd]"
-msgstr ""
-
-msgid "c"
-msgstr ""
-
-#, python-format
-msgid ""
-"remote changed %s which local deleted\n"
-"use (c)hanged version or leave (d)eleted?"
-msgstr ""
-
-#, python-format
-msgid "preserving %s for resolve of %s\n"
-msgstr ""
-
-#, python-format
-msgid "update failed to remove %s: %s!\n"
-msgstr ""
-
-#, python-format
-msgid "getting %s\n"
-msgstr "正在检出 %s\n"
-
-#, python-format
-msgid "moving %s to %s\n"
-msgstr ""
-
-#, python-format
-msgid "getting %s to %s\n"
-msgstr ""
-
-#, python-format
-msgid "warning: detected divergent renames of %s to:\n"
-msgstr ""
-
-#, python-format
-msgid "branch %s not found"
-msgstr ""
-
-msgid "can't merge with ancestor"
-msgstr ""
-
-msgid "nothing to merge (use 'hg update' or check 'hg heads')"
-msgstr ""
-
-msgid "crosses branches (use 'hg merge' or 'hg update -C' to discard changes)"
-msgstr ""
-
-msgid "crosses branches (use 'hg merge' or 'hg update -C')"
-msgstr ""
-
-msgid "crosses named branches (use 'hg update -C' to discard changes)"
-msgstr ""
-
-#, python-format
-msgid "cannot create %s: destination already exists"
-msgstr ""
-
-#, python-format
-msgid "cannot create %s: unable to create destination directory"
-msgstr ""
-
-#, python-format
-msgid "found patch at byte %d\n"
-msgstr ""
-
-msgid "patch generated by hg export\n"
-msgstr ""
-
-#, python-format
-msgid "unable to find '%s' for patching\n"
-msgstr ""
-
-#, python-format
-msgid "patching file %s\n"
-msgstr ""
-
-#, python-format
-msgid "%d out of %d hunks FAILED -- saving rejects to file %s\n"
-msgstr ""
-
-#, python-format
-msgid "bad hunk #%d %s (%d %d %d %d)"
-msgstr ""
-
-#, python-format
-msgid "file %s already exists\n"
-msgstr ""
-
-#, python-format
-msgid "Hunk #%d succeeded at %d %s(offset %d %s).\n"
-msgstr ""
-
-#, python-format
-msgid "Hunk #%d FAILED at %d\n"
-msgstr ""
-
-#, python-format
-msgid "bad hunk #%d"
-msgstr ""
-
-#, python-format
-msgid "bad hunk #%d old text line %d"
-msgstr ""
-
-msgid "could not extract binary patch"
-msgstr ""
-
-#, python-format
-msgid "binary patch is %d bytes, not %d"
-msgstr ""
-
-#, python-format
-msgid "unable to strip away %d dirs from %s"
-msgstr ""
-
-msgid "undefined source and destination files"
-msgstr ""
-
-#, python-format
-msgid "malformed patch %s %s"
-msgstr ""
-
-#, python-format
-msgid "unsupported parser state: %s"
-msgstr ""
-
-#, python-format
-msgid "patch command failed: %s"
-msgstr ""
-
-#, python-format
-msgid "no valid hunks found; trying with %r instead\n"
-msgstr ""
-
-#, python-format
-msgid "saving bundle to %s\n"
-msgstr ""
-
-msgid "adding branch\n"
-msgstr ""
-
-#, python-format
-msgid "cannot %s; remote repository does not support the %r capability"
-msgstr ""
-
-#, python-format
-msgid "unknown compression type %r"
-msgstr ""
-
-#, python-format
-msgid "index %s unknown flags %#04x for format v0"
-msgstr ""
-
-#, python-format
-msgid "index %s unknown flags %#04x for revlogng"
-msgstr ""
-
-#, python-format
-msgid "index %s unknown format %d"
-msgstr ""
-
-msgid "no node"
-msgstr ""
-
-msgid "ambiguous identifier"
-msgstr ""
-
-msgid "no match found"
-msgstr ""
-
-#, python-format
-msgid "incompatible revision flag %x"
-msgstr ""
-
-#, python-format
-msgid "%s not found in the transaction"
-msgstr ""
-
-msgid "unknown base"
-msgstr ""
-
-msgid "consistency error adding group"
-msgstr ""
-
-#, python-format
-msgid "%s looks like a binary file."
-msgstr ""
-
-msgid "can only specify two labels."
-msgstr ""
-
-msgid "warning: conflicts during merge.\n"
-msgstr ""
-
-#, python-format
-msgid "couldn't parse location %s"
-msgstr ""
-
-msgid "could not create remote repo"
-msgstr ""
-
-msgid "remote: "
-msgstr ""
-
-msgid "no suitable response from remote hg"
-msgstr ""
-
-#, python-format
-msgid "push refused: %s"
-msgstr ""
-
-msgid "unsynced changes"
-msgstr ""
-
-msgid "cannot lock static-http repository"
-msgstr ""
-
-msgid "cannot create new static-http repository"
-msgstr ""
-
-#, python-format
-msgid "invalid entry in fncache, line %s"
-msgstr ""
-
-msgid "scanning\n"
-msgstr "正在扫描\n"
-
-#, python-format
-msgid "%d files, %d bytes to transfer\n"
-msgstr "需要传输 %d 个文件,%d 字节\n"
-
-#, python-format
-msgid "sending %s (%d bytes)\n"
-msgstr "正在发送 %s (%d 字节)\n"
-
-msgid "unmatched quotes"
-msgstr "不匹配的引号"
-
-#, python-format
-msgid "style not found: %s"
-msgstr "没有找到样式: %s"
-
-#, python-format
-msgid "%s:%s: parse error"
-msgstr "%s:%s: 解析出错"
-
-#, python-format
-msgid "template file %s: %s"
-msgstr "模版文件 %s: %s"
-
-#, python-format
-msgid "Error expanding '%s%%%s'"
-msgstr ""
-
-msgid "transaction abort!\n"
-msgstr "事务中止!\n"
-
-#, python-format
-msgid "failed to truncate %s\n"
-msgstr "截断 '%s' 失败\n"
-
-msgid "rollback completed\n"
-msgstr "完成回滚\n"
-
-#, python-format
-msgid "Not trusting file %s from untrusted user %s, group %s\n"
-msgstr ""
-
-#, python-format
-msgid ""
-"Failed to parse %s\n"
-"%s"
-msgstr ""
-"解析 '%s' 失败\n"
-"%s"
-
-#, python-format
-msgid "Ignored: %s\n"
-msgstr ""
-
-#, python-format
-msgid "unable to open %s: %s"
-msgstr ""
-
-#, python-format
-msgid ""
-"failed to parse %s\n"
-"%s"
-msgstr ""
-
-#, python-format
-msgid ""
-"Error in configuration section [%s] parameter '%s':\n"
-"%s"
-msgstr ""
-
-#, python-format
-msgid "Ignoring untrusted configuration option %s.%s = %s\n"
-msgstr ""
-
-#, python-format
-msgid ""
-"Error in configuration section [%s]:\n"
-"%s"
-msgstr ""
-
-msgid "enter a commit username:"
-msgstr ""
-
-#, python-format
-msgid "No username found, using '%s' instead\n"
-msgstr ""
-
-msgid "Please specify a username."
-msgstr ""
-
-#, python-format
-msgid "username %s contains a newline\n"
-msgstr ""
-
-msgid "unrecognized response\n"
-msgstr ""
-
-msgid "response expected"
-msgstr ""
-
-msgid "password: "
-msgstr "密码: "
-
-msgid "edit failed"
-msgstr ""
-
-msgid "http authorization required"
-msgstr "需要 http 授权"
-
-msgid "http authorization required\n"
-msgstr "需要 http 授权\n"
-
-#, python-format
-msgid "realm: %s\n"
-msgstr "领域: %s\n"
-
-#, python-format
-msgid "user: %s\n"
-msgstr "用户: %s\n"
-
-msgid "user:"
-msgstr "用户:"
-
-#, python-format
-msgid "proxying through http://%s:%s\n"
-msgstr ""
-
-#, python-format
-msgid "http auth: user %s, password %s\n"
-msgstr ""
-
-#, python-format
-msgid "%s, please check your locale settings"
-msgstr ""
-
-#, python-format
-msgid "command '%s' failed: %s"
-msgstr ""
-
-#, python-format
-msgid "path contains illegal component: %s"
-msgstr ""
-
-#, python-format
-msgid "path %r is inside repo %r"
-msgstr ""
-
-#, python-format
-msgid "path %r traverses symbolic link %r"
-msgstr ""
-
-msgid "Hardlinks not supported"
-msgstr ""
-
-msgid "user name not available - set USERNAME environment variable"
-msgstr ""
-
-#, python-format
-msgid "exited with status %d"
-msgstr ""
-
-#, python-format
-msgid "killed by signal %d"
-msgstr ""
-
-#, python-format
-msgid "stopped by signal %d"
-msgstr ""
-
-msgid "invalid exit code"
-msgstr ""
-
-#, python-format
-msgid "could not symlink to %r: %s"
-msgstr ""
-
-#, python-format
-msgid "invalid date: %r "
-msgstr ""
-
-#, python-format
-msgid "date exceeds 32 bits: %d"
-msgstr ""
-
-#, python-format
-msgid "impossible time zone offset: %d"
-msgstr ""
-
-#, python-format
-msgid "invalid day spec: %s"
-msgstr ""
-
-#, python-format
-msgid "%.0f GB"
-msgstr ""
-
-#, python-format
-msgid "%.1f GB"
-msgstr ""
-
-#, python-format
-msgid "%.2f GB"
-msgstr ""
-
-#, python-format
-msgid "%.0f MB"
-msgstr ""
-
-#, python-format
-msgid "%.1f MB"
-msgstr ""
-
-#, python-format
-msgid "%.2f MB"
-msgstr ""
-
-#, python-format
-msgid "%.0f KB"
-msgstr ""
-
-#, python-format
-msgid "%.1f KB"
-msgstr ""
-
-#, python-format
-msgid "%.2f KB"
-msgstr ""
-
-#, python-format
-msgid "%.0f bytes"
-msgstr ""
-
-msgid "cannot verify bundle or remote repos"
-msgstr ""
-
-msgid "interrupted"
-msgstr ""
-
-#, python-format
-msgid "empty or missing %s"
-msgstr ""
-
-#, python-format
-msgid "data length off by %d bytes"
-msgstr ""
-
-#, python-format
-msgid "index contains %d extra bytes"
-msgstr ""
-
-#, python-format
-msgid "warning: `%s' uses revlog format 1"
-msgstr ""
-
-#, python-format
-msgid "warning: `%s' uses revlog format 0"
-msgstr ""
-
-#, python-format
-msgid "rev %d point to %s changeset %d"
-msgstr ""
-
-#, python-format
-msgid " (expected %s)"
-msgstr ""
-
-#, python-format
-msgid "unknown parent 1 %s of %s"
-msgstr ""
-
-#, python-format
-msgid "unknown parent 2 %s of %s"
-msgstr ""
-
-#, python-format
-msgid "checking parents of %s"
-msgstr ""
-
-#, python-format
-msgid "duplicate revision %d (%d)"
-msgstr ""
-
-#, python-format
-msgid "repository uses revlog format %d\n"
-msgstr ""
-
-msgid "checking changesets\n"
-msgstr ""
-
-#, python-format
-msgid "unpacking changeset %s"
-msgstr ""
-
-msgid "checking manifests\n"
-msgstr ""
-
-msgid "file without name in manifest"
-msgstr ""
-
-#, python-format
-msgid "reading manifest delta %s"
-msgstr ""
-
-msgid "crosschecking files in changesets and manifests\n"
-msgstr ""
-
-#, python-format
-msgid "changeset refers to unknown manifest %s"
-msgstr ""
-
-msgid "in changeset but not in manifest"
-msgstr ""
-
-msgid "in manifest but not in changeset"
-msgstr ""
-
-msgid "checking files\n"
-msgstr ""
-
-#, python-format
-msgid "cannot decode filename '%s'"
-msgstr ""
-
-msgid "missing revlog!"
-msgstr ""
-
-#, python-format
-msgid "%s not in manifests"
-msgstr ""
-
-#, python-format
-msgid "unpacked size is %s, %s expected"
-msgstr ""
-
-#, python-format
-msgid "unpacking %s"
-msgstr ""
-
-#, python-format
-msgid "empty or missing copy source revlog %s:%s"
-msgstr ""
-
-#, python-format
-msgid "warning: %s@%s: copy source revision is nullid %s:%s"
-msgstr ""
-
-#, python-format
-msgid "checking rename of %s"
-msgstr ""
-
-#, python-format
-msgid "%s in manifests not found"
-msgstr ""
-
-#, python-format
-msgid "warning: orphan revlog '%s'"
-msgstr ""
-
-#, python-format
-msgid "%d files, %d changesets, %d total revisions\n"
-msgstr ""
-
-#, python-format
-msgid "%d warnings encountered!\n"
-msgstr ""
-
-#, python-format
-msgid "%d integrity errors encountered!\n"
-msgstr ""
-
-#, python-format
-msgid "(first damaged changeset appears to be %d)\n"
-msgstr ""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/i18n/zh_CN.po	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,9258 @@
+#
+# Chinese (simplified) translation for Mercurial
+# This file is distributed under the same license as Mercurial
+#
+# Copyright (C) 2009 the Mercurial team
+# Dongsheng Song <dongsheng.song@gmail.com>, 2009
+#
+# $Id: zh.po 1217 2009-03-11 09:20:30Z dongsheng.song@gmail.com $
+#
+# Update with pot file:
+#    msgmerge --update zh_CN.po hg.pot
+#    msgfmt --statistics -c zh_CN.po
+#
+# Please test your translation before commit:
+#    python setup.py build_py -c -d . build_ext -i build_mo
+#    LC_ALL=zh_CN.UTF-8 ./hg
+#
+# Please format your translation before commit:
+#    msgcat --width=80 --sort-by-file -o zh_CN_new.po zh_CN.po
+#    mv -f zh_CN_new.po zh_CN.po
+#
+# Please remove '#: filename:line' lines before submit to hg:
+#    msgcat --width=80 --no-location -o zh_CN_new.po zh_CN.po
+#    mv -f zh_CN_new.po zh_CN.po
+#
+# Dictionary:
+# blame             追溯
+# branch            分支
+# changes           修改
+# changeset         修改集
+# checkout          检出
+# remove            移除(从版本库删除)
+# delete            删除(只从文件系统删除)
+# patchset          补丁集
+# pushing to        推到
+# pulling from      拉自
+# rename            改名
+# repository        版本库
+# revert            恢复
+# revision          版本
+# tag               标签
+# tip               顶点
+# undo              撤销
+# unversioned       未版本控制
+# versioned         受版本控制
+# working copy      工作副本
+# ...
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Mercurial 1.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-03-20 14:26+0800\n"
+"PO-Revision-Date: 2009-03-31 20:38+0200\n"
+"Last-Translator: Dongsheng Song <dongsheng.song@gmail.com>\n"
+"Language-Team: Chinese translation team <i18n-zh@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: pygettext.py 1.5\n"
+"X-Poedit-Language: Chinese\n"
+"X-Poedit-Country: CHINA\n"
+
+#, python-format
+msgid " (default: %s)"
+msgstr " (默认: %s)"
+
+msgid "OPTIONS"
+msgstr "选项"
+
+msgid "COMMANDS"
+msgstr "命令"
+
+msgid "    options:\n"
+msgstr "    选项:\n"
+
+#, python-format
+msgid ""
+"    aliases: %s\n"
+"\n"
+msgstr ""
+"    别名: %s\n"
+"\n"
+
+msgid "return tuple of (match function, list enabled)."
+msgstr "返回 tuple (匹配函数,启用列表)"
+
+#, python-format
+msgid "acl: %s not enabled\n"
+msgstr "acl: 未启用 %s\n"
+
+#, python-format
+msgid "acl: %s enabled, %d entries for user %s\n"
+msgstr "acl: 已启用 %s, %d 项,用户 %s\n"
+
+#, python-format
+msgid "config error - hook type \"%s\" cannot stop incoming changesets"
+msgstr "配置错误 - 钩子类型 \"%s\" 不能终止进入的修改集"
+
+#, python-format
+msgid "acl: changes have source \"%s\" - skipping\n"
+msgstr "acl: 改变源 \"%s\" - 跳过\n"
+
+#, python-format
+msgid "acl: user %s denied on %s\n"
+msgstr "acl: 用户 %s 被拒绝访问 %s\n"
+
+#, python-format
+msgid "acl: access denied for changeset %s"
+msgstr "acl: 拒绝访问修改集 %s"
+
+#, python-format
+msgid "acl: user %s not allowed on %s\n"
+msgstr "acl: 用户 %s 被拒绝访问 %s\n"
+
+#, python-format
+msgid "acl: allowing changeset %s\n"
+msgstr "acl: 允许修改集 %s\n"
+
+msgid ""
+"allow user-defined command aliases\n"
+"\n"
+"To use, create entries in your hgrc of the form\n"
+"\n"
+"[alias]\n"
+"mycmd = cmd --args\n"
+msgstr ""
+"允许用户自定义命令的别名\n"
+"\n"
+"要使用别名,在你的 hgrc 中创建如下格式的条目:\n"
+"\n"
+"[alias]\n"
+"mycmd = cmd --args\n"
+
+msgid ""
+"defer command lookup until needed, so that extensions loaded\n"
+"    after alias can be aliased"
+msgstr "查找命令会推迟到需要时,所以可以在定义别名后加载模块"
+
+#, python-format
+msgid "*** [alias] %s: command %s is unknown"
+msgstr "*** [alias] %s: 未知命令 %s"
+
+#, python-format
+msgid "*** [alias] %s: command %s is ambiguous"
+msgstr "*** [alias] %s: 不明确的命令 %s"
+
+#, python-format
+msgid "*** [alias] %s: circular dependency on %s"
+msgstr "*** [alias] %s: 循环依赖于 %s"
+
+#, python-format
+msgid "*** [alias] %s: no definition\n"
+msgstr "*** [alias] %s: 无定义\n"
+
+msgid ""
+"mercurial bookmarks\n"
+"\n"
+"Mercurial bookmarks are local moveable pointers to changesets. Every\n"
+"bookmark 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 is forwarded to the new changeset.\n"
+"\n"
+"It is possible to use bookmark names in every revision lookup (e.g. hg\n"
+"merge, hg update).\n"
+"\n"
+"The bookmark extension offers the possiblity to have a more git-like "
+"experience\n"
+"by adding the following configuration option to your .hgrc:\n"
+"\n"
+"[bookmarks]\n"
+"track.current = True\n"
+"\n"
+"This will cause bookmarks to track the bookmark that you are currently on, "
+"and\n"
+"just updates it. This is similar to git's approach of branching.\n"
+msgstr ""
+
+msgid ""
+"Parse .hg/bookmarks file and return a dictionary\n"
+"\n"
+"    Bookmarks are stored as {HASH}\\s{NAME}\\n (localtags format) values\n"
+"    in the .hg/bookmarks file. They are read by the parse() method and\n"
+"    returned as a dictionary with name => hash values.\n"
+"\n"
+"    The parsed dictionary is cached until a write() operation is done.\n"
+"    "
+msgstr ""
+
+msgid ""
+"Write bookmarks\n"
+"\n"
+"    Write the given bookmark => hash dictionary to the .hg/bookmarks file\n"
+"    in a format equal to those of localtags.\n"
+"\n"
+"    We also store a backup of the previous state in undo.bookmarks that\n"
+"    can be copied back on rollback.\n"
+"    "
+msgstr ""
+
+msgid ""
+"Get the current bookmark\n"
+"\n"
+"    If we use gittishsh branches we have a current bookmark that\n"
+"    we are on. This function returns the name of the bookmark. It\n"
+"    is stored in .hg/bookmarks.current\n"
+"    "
+msgstr ""
+
+msgid ""
+"Set the name of the bookmark that we are currently on\n"
+"\n"
+"    Set the name of the bookmark that we are on (hg update <bookmark>).\n"
+"    The name is recoreded in .hg/bookmarks.current\n"
+"    "
+msgstr ""
+
+msgid ""
+"mercurial bookmarks\n"
+"\n"
+"    Bookmarks are pointers to certain commits that move when\n"
+"    commiting. Bookmarks are local. They can be renamed, copied and\n"
+"    deleted. It is possible to use bookmark names in 'hg merge' and 'hg\n"
+"    update' to update to a given bookmark.\n"
+"\n"
+"    You can use 'hg bookmark NAME' to set a bookmark on the current\n"
+"    tip with the given name. If you specify a revision using -r REV\n"
+"    (where REV may be an existing bookmark), the bookmark is set to\n"
+"    that revision.\n"
+"    "
+msgstr ""
+
+msgid "a bookmark of this name does not exist"
+msgstr ""
+
+msgid "a bookmark of the same name already exists"
+msgstr ""
+
+msgid "new bookmark name required"
+msgstr ""
+
+msgid "bookmark name required"
+msgstr ""
+
+msgid "bookmark name cannot contain newlines"
+msgstr ""
+
+msgid "a bookmark cannot have the name of an existing branch"
+msgstr ""
+
+msgid ""
+"Strip bookmarks if revisions are stripped using\n"
+"    the mercurial.strip method. This usually happens during\n"
+"    qpush and qpop"
+msgstr ""
+
+msgid ""
+"Add a revision to the repository and\n"
+"            move the bookmark"
+msgstr ""
+
+msgid "Merge bookmarks with normal tags"
+msgstr ""
+
+msgid ""
+"Set the current bookmark\n"
+"\n"
+"    If the user updates to a bookmark we update the .hg/bookmarks.current\n"
+"    file.\n"
+"    "
+msgstr ""
+
+msgid "force"
+msgstr "强制"
+
+msgid "revision"
+msgstr "版本"
+
+msgid "delete a given bookmark"
+msgstr "删除指定书签"
+
+msgid "rename a given bookmark"
+msgstr "改名指定书签"
+
+msgid "hg bookmarks [-f] [-d] [-m NAME] [-r REV] [NAME]"
+msgstr ""
+
+msgid ""
+"Bugzilla integration\n"
+"\n"
+"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 bug\n"
+"status.\n"
+"\n"
+"The hook updates the Bugzilla database directly. Only Bugzilla installations\n"
+"using MySQL are supported.\n"
+"\n"
+"The hook relies on a Bugzilla script to send bug change notification emails.\n"
+"That script changes between Bugzilla versions; the 'processmail' script used\n"
+"prior to 2.18 is replaced in 2.18 and subsequent versions by\n"
+"'config/sendbugmail.pl'. Note that these will be run by Mercurial as the "
+"user\n"
+"pushing the change; you will need to ensure the Bugzilla install file\n"
+"permissions are set appropriately.\n"
+"\n"
+"Configuring the extension:\n"
+"\n"
+"    [bugzilla]\n"
+"    host       Hostname of the MySQL server holding the Bugzilla database.\n"
+"    db         Name of the Bugzilla database in MySQL. Default 'bugs'.\n"
+"    user       Username to use to access MySQL server. Default 'bugs'.\n"
+"    password   Password to use to access MySQL server.\n"
+"    timeout    Database connection timeout (seconds). Default 5.\n"
+"    version    Bugzilla version. Specify '3.0' for Bugzilla versions 3.0 and\n"
+"               later, '2.18' for Bugzilla versions from 2.18 and '2.16' for\n"
+"               versions prior to 2.18.\n"
+"    bzuser     Fallback Bugzilla user name to record comments with, if\n"
+"               changeset committer cannot be found as a Bugzilla user.\n"
+"    bzdir      Bugzilla install directory. Used by default notify.\n"
+"               Default '/var/www/html/bugzilla'.\n"
+"    notify     The command to run to get Bugzilla to send bug change\n"
+"               notification emails. Substitutes from a map with 3 keys,\n"
+"               'bzdir', 'id' (bug id) and 'user' (committer bugzilla email).\n"
+"               Default depends on version; from 2.18 it is\n"
+"               \"cd %(bzdir)s && perl -T contrib/sendbugmail.pl %(id)s %(user)"
+"s\".\n"
+"    regexp     Regular expression to match bug IDs in changeset commit "
+"message.\n"
+"               Must contain one \"()\" group. The default expression matches\n"
+"               'Bug 1234', 'Bug no. 1234', 'Bug number 1234',\n"
+"               'Bugs 1234,5678', 'Bug 1234 and 5678' and variations thereof.\n"
+"               Matching is case insensitive.\n"
+"    style      The style file to use when formatting comments.\n"
+"    template   Template to use when formatting comments. Overrides\n"
+"               style if specified. In addition to the usual Mercurial\n"
+"               keywords, the extension specifies:\n"
+"                   {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.\n"
+"               Default 'changeset {node|short} in repo {root} refers '\n"
+"                       'to bug {bug}.\\ndetails:\\n\\t{desc|tabindent}'\n"
+"    strip      The number of slashes to strip from the front of {root}\n"
+"               to produce {webroot}. Default 0.\n"
+"    usermap    Path of file containing Mercurial committer ID to Bugzilla "
+"user\n"
+"               ID mappings. If specified, the file should contain one "
+"mapping\n"
+"               per line, \"committer\"=\"Bugzilla user\". See also the\n"
+"               [usermap] section.\n"
+"\n"
+"    [usermap]\n"
+"    Any entries in this section specify mappings of Mercurial committer ID\n"
+"    to Bugzilla user ID. See also [bugzilla].usermap.\n"
+"    \"committer\"=\"Bugzilla user\"\n"
+"\n"
+"    [web]\n"
+"    baseurl    Base URL for browsing Mercurial repositories. Reference from\n"
+"               templates as {hgweb}.\n"
+"\n"
+"Activating the extension:\n"
+"\n"
+"    [extensions]\n"
+"    hgext.bugzilla =\n"
+"\n"
+"    [hooks]\n"
+"    # run bugzilla hook on every change pulled or pushed in here\n"
+"    incoming.bugzilla = python:hgext.bugzilla.hook\n"
+"\n"
+"Example configuration:\n"
+"\n"
+"This example configuration is for a collection of Mercurial repositories\n"
+"in /var/local/hg/repos/ used with a local Bugzilla 3.2 installation in\n"
+"/opt/bugzilla-3.2.\n"
+"\n"
+"    [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\n"
+"\n"
+"    [web]\n"
+"    baseurl=http://dev.domain.com/hg\n"
+"\n"
+"    [usermap]\n"
+"    user@emaildomain.com=user.name@bugzilladomain.com\n"
+"\n"
+"Commits add a comment to the Bugzilla bug record of the form:\n"
+"\n"
+"    Changeset 3b16791d6642 in repository-name.\n"
+"    http://dev.domain.com/hg/repository-name/rev/3b16791d6642\n"
+"\n"
+"    Changeset commit comment. Bug 1234.\n"
+msgstr ""
+
+msgid "support for bugzilla version 2.16."
+msgstr "支持 bugzilla 2.16。"
+
+#, python-format
+msgid "connecting to %s:%s as %s, password %s\n"
+msgstr "连接到 %s:%s as %s,密码 %s\n"
+
+msgid "run a query."
+msgstr "运行查询。"
+
+#, python-format
+msgid "query: %s %s\n"
+msgstr "查询: %s %s\n"
+
+#, python-format
+msgid "failed query: %s %s\n"
+msgstr "查询失败: %s %s\n"
+
+msgid "get identity of longdesc field"
+msgstr ""
+
+msgid "unknown database schema"
+msgstr "未知的数据库方案"
+
+msgid "filter not-existing bug ids from list."
+msgstr "从列表中过滤不存在的问题标识。"
+
+msgid "filter bug ids from list that already refer to this changeset."
+msgstr ""
+
+#, python-format
+msgid "bug %d already knows about changeset %s\n"
+msgstr ""
+
+msgid "tell bugzilla to send mail."
+msgstr ""
+
+msgid "telling bugzilla to send mail:\n"
+msgstr ""
+
+#, python-format
+msgid "  bug %s\n"
+msgstr ""
+
+#, python-format
+msgid "running notify command %s\n"
+msgstr ""
+
+#, python-format
+msgid "bugzilla notify command %s"
+msgstr ""
+
+msgid "done\n"
+msgstr "完成\n"
+
+msgid "look up numeric bugzilla user id."
+msgstr ""
+
+#, python-format
+msgid "looking up user %s\n"
+msgstr ""
+
+msgid "map name of committer to bugzilla user name."
+msgstr ""
+
+msgid ""
+"see if committer is a registered bugzilla user. Return\n"
+"        bugzilla username and userid if so. If not, return default\n"
+"        bugzilla username and userid."
+msgstr ""
+
+#, python-format
+msgid "cannot find bugzilla user id for %s"
+msgstr ""
+
+#, python-format
+msgid "cannot find bugzilla user id for %s or %s"
+msgstr ""
+
+msgid ""
+"add comment to bug. try adding comment as committer of\n"
+"        changeset, otherwise as default bugzilla user."
+msgstr ""
+
+msgid "support for bugzilla 2.18 series."
+msgstr ""
+
+msgid "support for bugzilla 3.0 series."
+msgstr ""
+
+msgid ""
+"return object that knows how to talk to bugzilla version in\n"
+"        use."
+msgstr ""
+
+#, python-format
+msgid "bugzilla version %s not supported"
+msgstr ""
+
+msgid ""
+"find valid bug ids that are referred to in changeset\n"
+"        comments and that do not already have references to this\n"
+"        changeset."
+msgstr ""
+
+msgid "update bugzilla bug with reference to changeset."
+msgstr ""
+
+msgid ""
+"strip leading prefix of repo root and turn into\n"
+"            url-safe path."
+msgstr ""
+
+msgid ""
+"changeset {node|short} in repo {root} refers to bug {bug}.\n"
+"details:\n"
+"\t{desc|tabindent}"
+msgstr ""
+
+msgid ""
+"add comment to bugzilla for each changeset that refers to a\n"
+"    bugzilla bug id. only add a comment once per bug, so same change\n"
+"    seen multiple times does not fill bug with duplicate data."
+msgstr ""
+
+#, python-format
+msgid "python mysql support not available: %s"
+msgstr ""
+
+#, python-format
+msgid "hook type %s does not pass a changeset id"
+msgstr ""
+
+#, python-format
+msgid "database error: %s"
+msgstr ""
+
+msgid ""
+"show the children of the given or working dir revision\n"
+"\n"
+"    Print the children of the working directory's revisions.\n"
+"    If a revision is given via --rev, the children of that revision\n"
+"    will be printed. If a file argument is given, revision in\n"
+"    which the file was last changed (after the working directory\n"
+"    revision or the argument to --rev if given) is printed.\n"
+"    "
+msgstr ""
+
+msgid "show children of the specified rev"
+msgstr ""
+
+msgid "hg children [-r REV] [FILE]"
+msgstr ""
+
+msgid "command to show certain statistics about revision history"
+msgstr ""
+
+msgid "Calculate stats"
+msgstr ""
+
+#, python-format
+msgid "Revision %d is a merge, ignoring...\n"
+msgstr ""
+
+#, python-format
+msgid "\rgenerating stats: %d%%"
+msgstr ""
+
+msgid ""
+"graph count of revisions grouped by template\n"
+"\n"
+"    Will graph count of changed lines or revisions grouped by template or\n"
+"    alternatively by date, if dateformat is used. In this case it will "
+"override\n"
+"    template.\n"
+"\n"
+"    By default statistics are counted for number of changed lines.\n"
+"\n"
+"    Examples:\n"
+"\n"
+"      # display count of changed lines for every committer\n"
+"      hg churn -t '{author|email}'\n"
+"\n"
+"      # display daily activity graph\n"
+"      hg churn -f '%H' -s -c\n"
+"\n"
+"      # display activity of developers by month\n"
+"      hg churn -f '%Y-%m' -s -c\n"
+"\n"
+"      # display count of lines changed in every year\n"
+"      hg churn -f '%Y' -s\n"
+"\n"
+"    The map file format used to specify aliases is fairly simple:\n"
+"\n"
+"    <alias email> <actual email>"
+msgstr ""
+
+#, python-format
+msgid "assuming %i character terminal\n"
+msgstr ""
+
+msgid "count rate for the specified revision or range"
+msgstr ""
+
+msgid "count rate for revs matching date spec"
+msgstr ""
+
+msgid "template to group changesets"
+msgstr ""
+
+msgid "strftime-compatible format for grouping by date"
+msgstr ""
+
+msgid "count rate by number of changesets"
+msgstr ""
+
+msgid "sort by key (default: sort by count)"
+msgstr ""
+
+msgid "file with email aliases"
+msgstr ""
+
+msgid "show progress"
+msgstr ""
+
+msgid "hg churn [-d DATE] [-r REV] [--aliases FILE] [--progress] [FILE]"
+msgstr ""
+
+msgid ""
+"add color output to status, qseries, and diff-related commands\n"
+"\n"
+"This extension modifies the status command to add color to its output to\n"
+"reflect file status, the qseries command to add color to reflect patch "
+"status\n"
+"(applied, unapplied, missing), and to diff-related commands to highlight\n"
+"additions, removals, diff headers, and trailing whitespace.\n"
+"\n"
+"Other effects in addition to color, like bold and underlined text, are also\n"
+"available.  Effects are rendered with the ECMA-48 SGR control function (aka\n"
+"ANSI escape codes).  This module also provides the render_text function,\n"
+"which can be used to add effects to any text.\n"
+"\n"
+"To enable this extension, add this to your .hgrc file:\n"
+"[extensions]\n"
+"color =\n"
+"\n"
+"Default effects my be overriden from the .hgrc file:\n"
+"\n"
+"[color]\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\n"
+"\n"
+"# 'none' turns off all effects\n"
+"status.clean = none\n"
+"status.copied = none\n"
+"\n"
+"qseries.applied = blue bold underline\n"
+"qseries.unapplied = black bold\n"
+"qseries.missing = red bold\n"
+"\n"
+"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\n"
+msgstr ""
+
+msgid "Wrap text in commands to turn on each effect."
+msgstr ""
+
+msgid "run the status command with colored output"
+msgstr ""
+
+msgid "run the qseries command with colored output"
+msgstr ""
+
+msgid "wrap ui.write for colored diff output"
+msgstr ""
+
+msgid "wrap cmdutil.changeset_printer.showpatch with colored output"
+msgstr ""
+
+msgid "run the diff command with colored output"
+msgstr ""
+
+msgid "Initialize the extension."
+msgstr ""
+
+msgid "patch in command to command table and load effect map"
+msgstr ""
+
+msgid "when to colorize (always, auto, or never)"
+msgstr ""
+
+msgid "don't colorize output"
+msgstr ""
+
+msgid "converting foreign VCS repositories to Mercurial"
+msgstr ""
+
+msgid ""
+"convert a foreign SCM repository to a Mercurial one.\n"
+"\n"
+"    Accepted source formats [identifiers]:\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"
+"    Accepted destination formats [identifiers]:\n"
+"    - Mercurial [hg]\n"
+"    - Subversion [svn] (history on branches is not preserved)\n"
+"\n"
+"    If no revision is given, all revisions will be converted. Otherwise,\n"
+"    convert will only import up to the named revision (given in a format\n"
+"    understood by the source).\n"
+"\n"
+"    If no destination directory name is specified, it defaults to the\n"
+"    basename of the source with '-hg' appended.  If the destination\n"
+"    repository doesn't exist, it will be created.\n"
+"\n"
+"    If <REVMAP> isn't given, it will be put in a default location\n"
+"    (<dest>/.hg/shamap by default).  The <REVMAP> is a simple text\n"
+"    file that maps each source commit ID to the destination ID for\n"
+"    that revision, like so:\n"
+"    <source ID> <destination ID>\n"
+"\n"
+"    If the file doesn't exist, it's automatically created.  It's updated\n"
+"    on each commit copied, so convert-repo can be interrupted and can\n"
+"    be run repeatedly to copy new commits.\n"
+"\n"
+"    The [username mapping] file is a simple text file that maps each source\n"
+"    commit author to a destination commit author. It is handy for source "
+"SCMs\n"
+"    that use unix logins to identify authors (eg: CVS). One line per author\n"
+"    mapping and the line format is:\n"
+"    srcauthor=whatever string you want\n"
+"\n"
+"    The filemap is a file that allows filtering and remapping of files\n"
+"    and directories.  Comment lines start with '#'.  Each line can\n"
+"    contain one of the following directives:\n"
+"\n"
+"      include path/to/file\n"
+"\n"
+"      exclude path/to/file\n"
+"\n"
+"      rename from/file to/file\n"
+"\n"
+"    The 'include' directive causes a file, or all files under a\n"
+"    directory, to be included in the destination repository, and the\n"
+"    exclusion of all other files and dirs not explicitely included.\n"
+"    The 'exclude' directive causes files or directories to be omitted.\n"
+"    The 'rename' directive renames a file or directory.  To rename from a\n"
+"    subdirectory into the root of the repository, use '.' as the path to\n"
+"    rename to.\n"
+"\n"
+"    The splicemap is a file that allows insertion of synthetic\n"
+"    history, letting you specify the parents of a revision.  This is\n"
+"    useful if you want to e.g. give a Subversion merge two parents, or\n"
+"    graft two disconnected series of history together.  Each entry\n"
+"    contains a key, followed by a space, followed by one or two\n"
+"    values, separated by spaces.  The key is the revision ID in the\n"
+"    source revision control system whose parents should be modified\n"
+"    (same format as a key in .hg/shamap).  The values are the revision\n"
+"    IDs (in either the source or destination revision control system)\n"
+"    that should be used as the new parents for that node.\n"
+"\n"
+"    Mercurial Source\n"
+"    -----------------\n"
+"\n"
+"    --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 "
+"change)\n"
+"    --config convert.hg.startrev=0            (hg revision identifier)\n"
+"        convert start revision and its descendants\n"
+"\n"
+"    CVS Source\n"
+"    ----------\n"
+"\n"
+"    CVS source will use a sandbox (i.e. a checked-out copy) from CVS\n"
+"    to indicate the starting point of what will be converted. Direct\n"
+"    access to the repository files is not needed, unless of course\n"
+"    the repository is :local:. The conversion uses the top level\n"
+"    directory in the sandbox to find the CVS repository, and then uses\n"
+"    CVS rlog commands to find files to convert. This means that unless\n"
+"    a filemap is given, all files under the starting directory will be\n"
+"    converted, and that any directory reorganisation in the CVS\n"
+"    sandbox is ignored.\n"
+"\n"
+"    Because CVS does not have changesets, it is necessary to collect\n"
+"    individual commits to CVS and merge them into changesets. CVS\n"
+"    source uses its internal changeset merging code by default but can\n"
+"    be configured to call the external 'cvsps' program by setting:\n"
+"        --config convert.cvsps='cvsps -A -u --cvs-direct -q'\n"
+"    This is a legacy option and may be removed in future.\n"
+"\n"
+"    The options shown are the defaults.\n"
+"\n"
+"    Internal cvsps is selected by setting\n"
+"        --config convert.cvsps=builtin\n"
+"    and has a few more configurable options:\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\n"
+"            of a 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"
+"\n"
+"    The hgext/convert/cvsps wrapper script allows the builtin changeset\n"
+"    merging code to be run without doing a conversion. Its parameters and\n"
+"    output are similar to that of cvsps 2.1.\n"
+"\n"
+"    Subversion Source\n"
+"    -----------------\n"
+"\n"
+"    Subversion source detects classical trunk/branches/tags layouts.\n"
+"    By default, the supplied \"svn://repo/path/\" source URL is\n"
+"    converted as a single branch. If \"svn://repo/path/trunk\" exists\n"
+"    it replaces the default branch. If \"svn://repo/path/branches\"\n"
+"    exists, its subdirectories are listed as possible branches. If\n"
+"    \"svn://repo/path/tags\" exists, it is looked for tags referencing\n"
+"    converted branches. Default \"trunk\", \"branches\" and \"tags\" values\n"
+"    can be overriden with following options. Set them to paths\n"
+"    relative to the source URL, or leave them blank to disable\n"
+"    autodetection.\n"
+"\n"
+"    --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\n"
+"\n"
+"    Source history can be retrieved starting at a specific revision,\n"
+"    instead of being integrally converted. Only single branch\n"
+"    conversions are supported.\n"
+"\n"
+"    --config convert.svn.startrev=0           (svn revision number)\n"
+"        specify start Subversion revision.\n"
+"\n"
+"    Perforce Source\n"
+"    ---------------\n"
+"\n"
+"    The Perforce (P4) importer can be given a p4 depot path or a client\n"
+"    specification as source. It will convert all files in the source to\n"
+"    a flat Mercurial repository, ignoring labels, branches and integrations.\n"
+"    Note that when a depot path is given you then usually should specify a\n"
+"    target directory, because otherwise the target may be named ...-hg.\n"
+"\n"
+"    It is possible to limit the amount of source history to be converted\n"
+"    by specifying an initial Perforce revision.\n"
+"\n"
+"    --config convert.p4.startrev=0           (perforce changelist number)\n"
+"        specify initial Perforce revision.\n"
+"\n"
+"\n"
+"    Mercurial Destination\n"
+"    ---------------------\n"
+"\n"
+"    --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\n"
+"\n"
+"    "
+msgstr ""
+
+msgid ""
+"create changeset information from CVS\n"
+"\n"
+"    This command is intended as a debugging tool for the CVS to Mercurial\n"
+"    converter, and can be used as a direct replacement for cvsps.\n"
+"\n"
+"    Hg debugcvsps reads the CVS rlog for current directory (or any named\n"
+"    directory) in the CVS repository, and converts the log to a series of\n"
+"    changesets based on matching commit log entries and dates."
+msgstr ""
+
+msgid "username mapping filename"
+msgstr ""
+
+msgid "destination repository type"
+msgstr ""
+
+msgid "remap file names using contents of file"
+msgstr ""
+
+msgid "import up to target revision REV"
+msgstr ""
+
+msgid "source repository type"
+msgstr ""
+
+msgid "splice synthesized history into place"
+msgstr ""
+
+msgid "try to sort changesets by date"
+msgstr ""
+
+msgid "hg convert [OPTION]... SOURCE [DEST [REVMAP]]"
+msgstr ""
+
+msgid "only return changes on specified branches"
+msgstr ""
+
+msgid "prefix to remove from file names"
+msgstr ""
+
+msgid "only return changes after or between specified tags"
+msgstr ""
+
+msgid "update cvs log cache"
+msgstr ""
+
+msgid "create new cvs log cache"
+msgstr ""
+
+msgid "set commit time fuzz in seconds"
+msgstr ""
+
+msgid "specify cvsroot"
+msgstr ""
+
+msgid "show parent changesets"
+msgstr ""
+
+msgid "show current changeset in ancestor branches"
+msgstr ""
+
+msgid "ignored for compatibility"
+msgstr ""
+
+msgid "hg debugcvsps [OPTION]... [PATH]..."
+msgstr ""
+
+#, python-format
+msgid "%s is not a valid revision in current branch"
+msgstr ""
+
+#, python-format
+msgid "%s is not available in %s anymore"
+msgstr ""
+
+#, python-format
+msgid "cannot find required \"%s\" tool"
+msgstr ""
+
+#, python-format
+msgid "running: %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s error:\n"
+msgstr ""
+
+#, python-format
+msgid "%s %s"
+msgstr ""
+
+#, python-format
+msgid "could not open map file %r: %s"
+msgstr ""
+
+#, python-format
+msgid "%s: missing or unsupported repository"
+msgstr ""
+
+#, python-format
+msgid "convert: %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s: unknown repository type"
+msgstr ""
+
+#, python-format
+msgid "cycle detected between %s and %s"
+msgstr ""
+
+msgid "not all revisions were sorted"
+msgstr ""
+
+#, python-format
+msgid "Writing author map file %s\n"
+msgstr ""
+
+#, python-format
+msgid "Overriding mapping for author %s, was %s, will be %s\n"
+msgstr ""
+
+#, python-format
+msgid "mapping author %s to %s\n"
+msgstr ""
+
+#, python-format
+msgid "Ignoring bad line in author map file %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid "spliced in %s as parents of %s\n"
+msgstr ""
+
+msgid "scanning source...\n"
+msgstr ""
+
+msgid "sorting...\n"
+msgstr ""
+
+msgid "converting...\n"
+msgstr ""
+
+#, python-format
+msgid "source: %s\n"
+msgstr ""
+
+#, python-format
+msgid "assuming destination %s\n"
+msgstr ""
+
+#, python-format
+msgid "revision %s is not a patchset number or date"
+msgstr ""
+
+msgid "using builtin cvsps\n"
+msgstr ""
+
+#, python-format
+msgid "connecting to %s\n"
+msgstr ""
+
+msgid "CVS pserver authentication failed"
+msgstr ""
+
+msgid "server sucks"
+msgstr ""
+
+#, python-format
+msgid "%d bytes missing from remote file"
+msgstr ""
+
+#, python-format
+msgid "cvs server: %s\n"
+msgstr ""
+
+#, python-format
+msgid "unknown CVS response: %s"
+msgstr ""
+
+msgid "collecting CVS rlog\n"
+msgstr ""
+
+#, python-format
+msgid "reading cvs log cache %s\n"
+msgstr ""
+
+#, python-format
+msgid "cache has %d log entries\n"
+msgstr ""
+
+#, python-format
+msgid "error reading cache: %r\n"
+msgstr ""
+
+#, python-format
+msgid "running %s\n"
+msgstr ""
+
+#, python-format
+msgid "prefix=%r directory=%r root=%r\n"
+msgstr ""
+
+msgid "RCS file must be followed by working file"
+msgstr ""
+
+msgid "must have at least some revisions"
+msgstr ""
+
+msgid "expected revision number"
+msgstr ""
+
+msgid "revision must be followed by date line"
+msgstr ""
+
+#, python-format
+msgid "writing cvs log cache %s\n"
+msgstr ""
+
+#, python-format
+msgid "%d log entries\n"
+msgstr ""
+
+msgid "creating changesets\n"
+msgstr ""
+
+#, python-format
+msgid "%d changeset entries\n"
+msgstr ""
+
+msgid "Python ElementTree module is not available"
+msgstr ""
+
+#, python-format
+msgid "cleaning up %s\n"
+msgstr ""
+
+msgid "internal calling inconsistency"
+msgstr ""
+
+msgid "errors in filemap"
+msgstr ""
+
+#, python-format
+msgid "%s:%d: %r already in %s list\n"
+msgstr ""
+
+#, python-format
+msgid "%s:%d: unknown directive %r\n"
+msgstr ""
+
+msgid "source repository doesn't support --filemap"
+msgstr ""
+
+#, python-format
+msgid "%s does not look like a GNU Arch repo"
+msgstr ""
+
+msgid "cannot find a GNU Arch tool"
+msgstr ""
+
+#, python-format
+msgid "analyzing tree version %s...\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"tree analysis stopped because it points to an unregistered archive %s...\n"
+msgstr ""
+
+#, python-format
+msgid "applying revision %s...\n"
+msgstr ""
+
+#, python-format
+msgid "computing changeset between %s and %s...\n"
+msgstr ""
+
+#, python-format
+msgid "obtaining revision %s...\n"
+msgstr ""
+
+#, python-format
+msgid "analysing revision %s...\n"
+msgstr ""
+
+#, python-format
+msgid "could not parse cat-log of %s"
+msgstr ""
+
+#, python-format
+msgid "%s is not a local Mercurial repo"
+msgstr "%s 不是本地的水银版本库"
+
+#, python-format
+msgid "initializing destination %s repository\n"
+msgstr "初始化目标版本库 %s\n"
+
+msgid "run hg sink pre-conversion action\n"
+msgstr "执行动作 hg sink pre-conversion\n"
+
+msgid "run hg sink post-conversion action\n"
+msgstr "执行动作 hg sink post-conversion action\n"
+
+#, python-format
+msgid "pulling from %s into %s\n"
+msgstr "自 %s 拉到 %s\n"
+
+msgid "updating tags\n"
+msgstr "正在更新标签\n"
+
+#, python-format
+msgid "%s is not a valid start revision"
+msgstr "%s 不是有效的开始版本"
+
+#, python-format
+msgid "ignoring: %s\n"
+msgstr "忽略: %s\n"
+
+msgid "run hg source pre-conversion action\n"
+msgstr "执行动作 hg source pre-conversion\n"
+
+msgid "run hg source post-conversion action\n"
+msgstr "执行动作 hg source post-conversion\n"
+
+#, python-format
+msgid "%s does not look like a monotone repo"
+msgstr "%s 不像是单纯的 monotone 版本库"
+
+#, python-format
+msgid "copying file in renamed dir from '%s' to '%s'"
+msgstr "从已改名的目录 '%s' 复制文件到 '%s'"
+
+msgid "reading p4 views\n"
+msgstr ""
+
+msgid "collecting p4 changelists\n"
+msgstr "正在搜索 p4 修改集\n"
+
+msgid "Subversion python bindings could not be loaded"
+msgstr "不能加载 svn 的 python 绑定"
+
+#, python-format
+msgid "Subversion python bindings %d.%d found, 1.4 or later required"
+msgstr "发现 svn 的 python 绑定版本 %d.%d,需要 1.4 或更新的版本"
+
+msgid "Subversion python bindings are too old, 1.4 or later required"
+msgstr "svn 的 python 绑定太旧,需要 1.4 或更新的版本"
+
+#, python-format
+msgid "svn: revision %s is not an integer"
+msgstr "svn: 版本 %s 不是整数"
+
+#, python-format
+msgid "svn: start revision %s is not an integer"
+msgstr "svn: 开始版本 %s 不是整数"
+
+#, python-format
+msgid "no revision found in module %s"
+msgstr "没有在模块 %s 中发现版本"
+
+#, python-format
+msgid "expected %s to be at %r, but not found"
+msgstr "期望 %s 位于 %r,但是没有发现"
+
+#, python-format
+msgid "found %s at %r\n"
+msgstr "发现 %s 位于 %r\n"
+
+#, python-format
+msgid "ignoring empty branch %s\n"
+msgstr "忽略空的分支 %s\n"
+
+#, python-format
+msgid "found branch %s at %d\n"
+msgstr "发现分支 %s 位于 %d\n"
+
+msgid "svn: start revision is not supported with with more than one branch"
+msgstr "svn: 在给出多于一个分支时不支持开始版本"
+
+#, python-format
+msgid "svn: no revision found after start revision %d"
+msgstr "svn: 在开始版本 %d 之后没有版本"
+
+#, python-format
+msgid "no tags found at revision %d\n"
+msgstr "在版本 %d 没有发现标签\n"
+
+#, python-format
+msgid "ignoring foreign branch %r\n"
+msgstr "忽略外部分支 %r\n"
+
+#, python-format
+msgid "%s not found up to revision %d"
+msgstr "没有发现 %s,一直到版本 %d"
+
+#, python-format
+msgid "branch renamed from %s to %s at %d\n"
+msgstr "分支从 %s 改名为 %s,在 %d\n"
+
+#, python-format
+msgid "reparent to %s\n"
+msgstr ""
+
+#, python-format
+msgid "copied to %s from %s@%s\n"
+msgstr "复制到 %s,自 %s@%s\n"
+
+#, python-format
+msgid "gone from %s\n"
+msgstr "离开 %s\n"
+
+#, python-format
+msgid "found parent directory %s\n"
+msgstr "发现父目录 %s\n"
+
+#, python-format
+msgid "base, entry %s %s\n"
+msgstr "基本,入口 %s %s\n"
+
+msgid "munge-o-matic\n"
+msgstr ""
+
+#, python-format
+msgid "info: %s %s %s %s\n"
+msgstr "信息: %s %s %s %s\n"
+
+#, python-format
+msgid "unknown path in revision %d: %s\n"
+msgstr "版本 %d 有未知路径: %s\n"
+
+#, python-format
+msgid "mark %s came from %s:%d\n"
+msgstr "标记 %s 来自 %s:%d\n"
+
+#, python-format
+msgid "parsing revision %d (%d changes)\n"
+msgstr "解析版本 %d (%d 个改变)\n"
+
+#, python-format
+msgid "found parent of branch %s at %d: %s\n"
+msgstr "发现分支 %s 的父亲,在 %d: %s\n"
+
+msgid "no copyfrom path, don't know what to do.\n"
+msgstr "没有 copyfrom 路径,不知道该怎么办。\n"
+
+#, python-format
+msgid "fetching revision log for \"%s\" from %d to %d\n"
+msgstr "为 \"%s\" 获取版本日志,自 %d 到 %d\n"
+
+#, python-format
+msgid "skipping blacklisted revision %d\n"
+msgstr "忽略黑名单版本 %d\n"
+
+#, python-format
+msgid "revision %d has no entries\n"
+msgstr "版本 %d 没有入口\n"
+
+#, python-format
+msgid "svn: branch has no revision %s"
+msgstr "svn: 分支没有版本 %s"
+
+#, python-format
+msgid "%r is not under %r, ignoring\n"
+msgstr "%r 不在 %r 之下,忽略之\n"
+
+#, python-format
+msgid "initializing svn repo %r\n"
+msgstr "初始化 svn 版本库 %r\n"
+
+#, python-format
+msgid "initializing svn wc %r\n"
+msgstr "初始化 svn 工作副本 %r\n"
+
+msgid "unexpected svn output:\n"
+msgstr "意外的 svn 输出:\n"
+
+msgid "unable to cope with svn output"
+msgstr "不能处理 svn 的输出"
+
+msgid "XXX TAGS NOT IMPLEMENTED YET\n"
+msgstr ""
+
+msgid ""
+"\n"
+"The `extdiff' Mercurial extension allows you to use external programs\n"
+"to compare revisions, or revision with working dir.  The external diff\n"
+"programs are called with a configurable set of options and two\n"
+"non-option arguments: paths to directories containing snapshots of\n"
+"files to compare.\n"
+"\n"
+"To enable this extension:\n"
+"\n"
+"  [extensions]\n"
+"  hgext.extdiff =\n"
+"\n"
+"The `extdiff' extension also allows to configure new diff commands, so\n"
+"you do not need to type \"hg extdiff -p kdiff3\" always.\n"
+"\n"
+"  [extdiff]\n"
+"  # add new command that runs GNU diff(1) in 'context diff' mode\n"
+"  cdiff = gdiff -Nprc5\n"
+"  ## or the old way:\n"
+"  #cmd.cdiff = gdiff\n"
+"  #opts.cdiff = -Nprc5\n"
+"\n"
+"  # add new command called vdiff, runs kdiff3\n"
+"  vdiff = kdiff3\n"
+"\n"
+"  # add new command called meld, runs meld (no need to name twice)\n"
+"  meld =\n"
+"\n"
+"  # add new command called vimdiff, runs gvimdiff with DirDiff plugin\n"
+"  #(see http://www.vim.org/scripts/script.php?script_id=102)\n"
+"  # Non english user, be sure to put \"let g:DirDiffDynamicDiffText = 1\" in\n"
+"  # your .vimrc\n"
+"  vimdiff = gvim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)'\n"
+"\n"
+"You can use -I/-X and list of file or directory names like normal\n"
+"\"hg diff\" command.  The `extdiff' extension makes snapshots of only\n"
+"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 ""
+
+msgid "snapshot files as of some revision"
+msgstr ""
+
+#, python-format
+msgid "making snapshot of %d files from rev %s\n"
+msgstr ""
+
+msgid ""
+"snapshot files from working directory.\n"
+"    if not using snapshot, -I/-X does not work and recursive diff\n"
+"    in tools like kdiff3 and meld displays too many files."
+msgstr ""
+
+#, python-format
+msgid "making snapshot of %d files from working dir\n"
+msgstr ""
+
+msgid ""
+"Do the actuall diff:\n"
+"\n"
+"    - copy to a temp structure if diffing 2 internal revisions\n"
+"    - copy to a temp structure if diffing working revision with\n"
+"      another one and more than 1 file is changed\n"
+"    - just invoke the diff for a single file in the working dir\n"
+"    "
+msgstr ""
+
+msgid "cannot specify --rev and --change at the same time"
+msgstr "不能同时指定 '--rev' 和 '--change'"
+
+#, python-format
+msgid "running %r in %s\n"
+msgstr ""
+
+#, python-format
+msgid "file changed while diffing. Overwriting: %s (src: %s)\n"
+msgstr ""
+
+msgid "cleaning up temp directory\n"
+msgstr ""
+
+msgid ""
+"use external program to diff repository (or selected files)\n"
+"\n"
+"    Show differences between revisions for the specified files, using\n"
+"    an external program.  The default program used is diff, with\n"
+"    default options \"-Npru\".\n"
+"\n"
+"    To select a different program, use the -p option.  The program\n"
+"    will be passed the names of two directories to compare.  To pass\n"
+"    additional options to the program, use the -o option.  These will\n"
+"    be passed before the names of the directories to compare.\n"
+"\n"
+"    When two revision arguments are given, then changes are\n"
+"    shown between those revisions. If only one revision is\n"
+"    specified then that revision is compared to the working\n"
+"    directory, and, when no revisions are specified, the\n"
+"    working directory files are compared to its parent."
+msgstr ""
+
+msgid "comparison program to run"
+msgstr ""
+
+msgid "pass option to comparison program"
+msgstr ""
+
+msgid "change made by revision"
+msgstr "此版本的修改"
+
+msgid "hg extdiff [OPT]... [FILE]..."
+msgstr ""
+
+msgid "use closure to save diff command to use"
+msgstr ""
+
+#, python-format
+msgid "hg %s [OPTION]... [FILE]..."
+msgstr ""
+
+msgid "pulling, updating and merging in one command"
+msgstr ""
+
+msgid ""
+"pull changes from a remote repository, merge new changes if needed.\n"
+"\n"
+"    This finds all changes from the repository at the specified path\n"
+"    or URL and adds them to the local repository.\n"
+"\n"
+"    If the pulled changes add a new branch head, the head is automatically\n"
+"    merged, and the result of the merge is committed.  Otherwise, the\n"
+"    working directory is updated to include the new changes.\n"
+"\n"
+"    When a merge occurs, the newly pulled changes are assumed to be\n"
+"    \"authoritative\".  The head of the new changes is used as the first\n"
+"    parent, with local changes as the second.  To switch the merge\n"
+"    order, use --switch-parent.\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"    "
+msgstr ""
+
+msgid ""
+"working dir not at branch tip (use \"hg update\" to check out branch tip)"
+msgstr ""
+
+msgid "outstanding uncommitted merge"
+msgstr ""
+
+msgid "outstanding uncommitted changes"
+msgstr ""
+
+msgid "working directory is missing some files"
+msgstr ""
+
+msgid ""
+"multiple heads in this branch (use \"hg heads .\" and \"hg merge\" to merge)"
+msgstr ""
+
+#, python-format
+msgid "pulling from %s\n"
+msgstr "正在拉自 %s\n"
+
+msgid "fetch -r doesn't work for remote repositories yet"
+msgstr ""
+
+#, python-format
+msgid ""
+"not merging with %d other new branch heads (use \"hg heads .\" and \"hg merge"
+"\" to merge them)\n"
+msgstr ""
+
+#, python-format
+msgid "updating to %d:%s\n"
+msgstr ""
+
+#, python-format
+msgid "merging with %d:%s\n"
+msgstr ""
+
+#, python-format
+msgid "Automated merge with %s"
+msgstr ""
+
+#, 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 "指定取得的版本"
+
+msgid "edit commit message"
+msgstr "编辑提交日志"
+
+msgid "edit commit message (DEPRECATED)"
+msgstr "编辑提交日志(不赞成)"
+
+msgid "switch parents when merging"
+msgstr "当合并时切换父亲"
+
+msgid "hg fetch [SOURCE]"
+msgstr ""
+
+msgid " returns of the good and bad signatures"
+msgstr ""
+
+msgid "error while verifying signature"
+msgstr ""
+
+msgid "create a new gpg instance"
+msgstr ""
+
+msgid ""
+"\n"
+"    walk over every sigs, yields a couple\n"
+"    ((node, version, sig), (filename, linenumber))\n"
+"    "
+msgstr ""
+
+msgid "get the keys who signed a data"
+msgstr ""
+
+#, python-format
+msgid "%s Bad signature from \"%s\"\n"
+msgstr ""
+
+#, python-format
+msgid "%s Note: Signature has expired (signed by: \"%s\")\n"
+msgstr ""
+
+#, python-format
+msgid "%s Note: This key has expired (signed by: \"%s\")\n"
+msgstr ""
+
+msgid "list signed changesets"
+msgstr ""
+
+#, python-format
+msgid "%s:%d node does not exist\n"
+msgstr ""
+
+msgid "verify all the signatures there may be for a particular revision"
+msgstr ""
+
+#, python-format
+msgid "No valid signature for %s\n"
+msgstr ""
+
+msgid "associate a string to a key (username, comment)"
+msgstr ""
+
+msgid ""
+"add a signature for the current or given revision\n"
+"\n"
+"    If no revision is given, the parent of the working directory is used,\n"
+"    or tip if no revision is checked out.\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"    "
+msgstr ""
+
+msgid "uncommitted merge - please provide a specific revision"
+msgstr ""
+
+msgid "Error while signing"
+msgstr ""
+
+msgid ""
+"working copy of .hgsigs is changed (please commit .hgsigs manually or use --"
+"force)"
+msgstr ""
+
+#, python-format
+msgid "Added signature for changeset %s"
+msgstr ""
+
+msgid "map a manifest into some text"
+msgstr ""
+
+msgid "unknown signature version"
+msgstr ""
+
+msgid "make the signature local"
+msgstr ""
+
+msgid "sign even if the sigfile is modified"
+msgstr ""
+
+msgid "do not commit the sigfile after signing"
+msgstr ""
+
+msgid "the key id to sign with"
+msgstr ""
+
+msgid "commit message"
+msgstr ""
+
+msgid "hg sign [OPTION]... [REVISION]..."
+msgstr ""
+
+msgid "hg sigcheck REVISION"
+msgstr ""
+
+msgid "hg sigs"
+msgstr ""
+
+msgid ""
+"show revision graphs in terminal windows\n"
+"\n"
+"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 ""
+
+msgid ""
+"cset DAG generator yielding (rev, node, [parents]) tuples\n"
+"\n"
+"    This generator function walks through the revision history from revision\n"
+"    start to revision stop (which must be less than or equal to start).\n"
+"    "
+msgstr ""
+
+msgid ""
+"file cset DAG generator yielding (rev, node, [parents]) tuples\n"
+"\n"
+"    This generator function walks through the revision history of a single\n"
+"    file from revision start to revision stop (which must be less than or\n"
+"    equal to start).\n"
+"    "
+msgstr ""
+
+msgid ""
+"grapher for asciigraph on a list of nodes and their parents\n"
+"\n"
+"    nodes must generate tuples (node, parents, char, lines) where\n"
+"     - parents must generate the parents of node, in sorted order,\n"
+"       and max length 2,\n"
+"     - char is the char to print as the node symbol, and\n"
+"     - lines are the lines to display next to the node.\n"
+"    "
+msgstr ""
+
+msgid ""
+"prints an ASCII graph of the DAG returned by the grapher\n"
+"\n"
+"    grapher is a generator that emits tuples with the following elements:\n"
+"\n"
+"      - Character to use as node's symbol.\n"
+"      - List of lines to display as the node's text.\n"
+"      - Column of the current node in the set of ongoing edges.\n"
+"      - Edges; a list of (col, next_col) indicating the edges between\n"
+"        the current node and its parents.\n"
+"      - Number of columns (ongoing edges) in the current revision.\n"
+"      - The difference between the number of columns (ongoing edges)\n"
+"        in the next revision and the number of columns (ongoing edges)\n"
+"        in the current revision. That is: -1 means one column removed;\n"
+"        0 means no columns added or removed; 1 means one column added.\n"
+"    "
+msgstr ""
+
+#, python-format
+msgid "--graph option is incompatible with --%s"
+msgstr ""
+
+msgid ""
+"show revision history alongside an ASCII revision graph\n"
+"\n"
+"    Print a revision history alongside a revision graph drawn with\n"
+"    ASCII characters.\n"
+"\n"
+"    Nodes printed as an @ character are parents of the working\n"
+"    directory.\n"
+"    "
+msgstr ""
+
+msgid ""
+"show the outgoing changesets alongside an ASCII revision graph\n"
+"\n"
+"    Print the outgoing changesets alongside a revision graph drawn with\n"
+"    ASCII characters.\n"
+"\n"
+"    Nodes printed as an @ character are parents of the working\n"
+"    directory.\n"
+"    "
+msgstr ""
+
+#, python-format
+msgid "comparing with %s\n"
+msgstr ""
+
+msgid "no changes found\n"
+msgstr "没有发现修改\n"
+
+msgid ""
+"show the incoming changesets alongside an ASCII revision graph\n"
+"\n"
+"    Print the incoming changesets alongside a revision graph drawn with\n"
+"    ASCII characters.\n"
+"\n"
+"    Nodes printed as an @ character are parents of the working\n"
+"    directory.\n"
+"    "
+msgstr ""
+
+msgid "wrap the command"
+msgstr ""
+
+msgid "show the revision DAG"
+msgstr "显示版本分支图"
+
+msgid "limit number of changes displayed"
+msgstr "限制显示的修改集数量"
+
+msgid "show patch"
+msgstr "显示补丁"
+
+msgid "show the specified revision or range"
+msgstr ""
+
+msgid "hg glog [OPTION]... [FILE]"
+msgstr ""
+
+msgid ""
+"CIA notification\n"
+"\n"
+"This is meant to be run as a changegroup or incoming hook.\n"
+"To configure it, set the following options in your hgrc:\n"
+"\n"
+"[cia]\n"
+"# your registered CIA user name\n"
+"user = foo\n"
+"# the name of the project in CIA\n"
+"project = foo\n"
+"# the module (subproject) (optional)\n"
+"#module = foo\n"
+"# 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"
+"# Style to use (optional)\n"
+"#style = foo\n"
+"# The URL of the CIA notification service (optional)\n"
+"# You can use mailto: URLs to send by email, eg\n"
+"# mailto:cia@cia.vc\n"
+"# 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\n"
+"\n"
+"[hooks]\n"
+"# one of these:\n"
+"changegroup.cia = python:hgcia.hook\n"
+"#incoming.cia = python:hgcia.hook\n"
+"\n"
+"[web]\n"
+"# If you want hyperlinks (optional)\n"
+"baseurl = http://server/path/to/repo\n"
+msgstr ""
+
+msgid " A CIA message "
+msgstr ""
+
+msgid " CIA notification class "
+msgstr ""
+
+#, python-format
+msgid "hgcia: sending update to %s\n"
+msgstr ""
+
+msgid " send CIA notification "
+msgstr ""
+
+msgid "email.from must be defined when sending by email"
+msgstr ""
+
+msgid "cia: no user specified"
+msgstr ""
+
+msgid "cia: no project specified"
+msgstr ""
+
+msgid ""
+"browsing the repository in a graphical way\n"
+"\n"
+"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\n"
+"not distributed with Mercurial.)\n"
+"\n"
+"hgk consists of two parts: a Tcl script that does the displaying and\n"
+"querying of information, and an extension to mercurial named hgk.py,\n"
+"which provides hooks for hgk to get information. hgk can be found in\n"
+"the contrib directory, and hgk.py can be found in the hgext directory.\n"
+"\n"
+"To load the hgext.py extension, add it to your .hgrc file (you have\n"
+"to use your global $HOME/.hgrc file, not one in a repository). You\n"
+"can specify an absolute path:\n"
+"\n"
+"  [extensions]\n"
+"  hgk=/usr/local/lib/hgk.py\n"
+"\n"
+"Mercurial can also scan the default python library path for a file\n"
+"named 'hgk.py' if you set hgk empty:\n"
+"\n"
+"  [extensions]\n"
+"  hgk=\n"
+"\n"
+"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\n"
+"specify the path to hgk in your .hgrc file:\n"
+"\n"
+"  [hgk]\n"
+"  path=/location/of/hgk\n"
+"\n"
+"hgk can make use of the extdiff extension to visualize revisions.\n"
+"Assuming you had already configured extdiff vdiff command, just add:\n"
+"\n"
+"  [hgk]\n"
+"  vdiff=vdiff\n"
+"\n"
+"Revisions context menu will now display additional entries to fire\n"
+"vdiff on hovered and selected revisions."
+msgstr ""
+
+msgid "diff trees from two commits"
+msgstr ""
+
+msgid "output common ancestor information"
+msgstr ""
+
+msgid "cat a specific revision"
+msgstr ""
+
+msgid "cat-file: type or revision not supplied\n"
+msgstr ""
+
+msgid "aborting hg cat-file only understands commits\n"
+msgstr ""
+
+msgid "parse given revisions"
+msgstr ""
+
+msgid "print revisions"
+msgstr ""
+
+msgid "print extension options"
+msgstr ""
+
+msgid "start interactive history viewer"
+msgstr ""
+
+msgid "hg view [-l LIMIT] [REVRANGE]"
+msgstr ""
+
+msgid "generate patch"
+msgstr ""
+
+msgid "recursive"
+msgstr ""
+
+msgid "pretty"
+msgstr ""
+
+msgid "stdin"
+msgstr ""
+
+msgid "detect copies"
+msgstr ""
+
+msgid "search"
+msgstr ""
+
+msgid "hg git-diff-tree [OPTION]... NODE1 NODE2 [FILE]..."
+msgstr ""
+
+msgid "hg debug-cat-file [OPTION]... TYPE FILE"
+msgstr ""
+
+msgid "hg debug-config"
+msgstr ""
+
+msgid "hg debug-merge-base node node"
+msgstr ""
+
+msgid "ignored"
+msgstr ""
+
+msgid "hg debug-rev-parse REV"
+msgstr ""
+
+msgid "header"
+msgstr ""
+
+msgid "topo-order"
+msgstr ""
+
+msgid "parents"
+msgstr ""
+
+msgid "max-count"
+msgstr ""
+
+msgid "hg debug-rev-list [options] revs"
+msgstr ""
+
+msgid ""
+"syntax highlighting in hgweb, based on Pygments\n"
+"\n"
+"It depends on the pygments syntax highlighting library:\n"
+"http://pygments.org/\n"
+"\n"
+"To enable the extension add this to hgrc:\n"
+"\n"
+"[extensions]\n"
+"hgext.highlight =\n"
+"\n"
+"There is a single configuration option:\n"
+"\n"
+"[web]\n"
+"pygments_style = <style>\n"
+"\n"
+"The default is 'colorful'.\n"
+"\n"
+"-- Adam Hupp <adam@hupp.org>\n"
+msgstr ""
+
+msgid "inotify-based status acceleration for Linux systems\n"
+msgstr ""
+
+msgid "start an inotify server for this repository"
+msgstr "为此版本库启动服务 'inotify'"
+
+msgid "(found dead inotify server socket; removing it)\n"
+msgstr ""
+
+msgid "(starting inotify server)\n"
+msgstr ""
+
+#, python-format
+msgid "could not start inotify server: %s\n"
+msgstr ""
+
+#, python-format
+msgid "could not talk to new inotify server: %s\n"
+msgstr ""
+
+msgid "(inotify server not running)\n"
+msgstr ""
+
+#, python-format
+msgid "failed to contact inotify server: %s\n"
+msgstr ""
+
+msgid "run server in background"
+msgstr "在后台运行服务"
+
+msgid "used internally by daemon mode"
+msgstr "在后台服务模式内部使用"
+
+msgid "minutes to sit idle before exiting"
+msgstr "空闲几分钟后退出"
+
+msgid "name of file to write process ID to"
+msgstr "写入进程标识符的文件名称"
+
+msgid "hg inserve [OPT]..."
+msgstr ""
+
+#, python-format
+msgid "(inotify: received response from incompatible server version %d)\n"
+msgstr ""
+
+msgid "this system does not seem to support inotify"
+msgstr ""
+
+#, python-format
+msgid "*** the current per-user limit on the number of inotify watches is %s\n"
+msgstr ""
+
+msgid "*** this limit is too low to watch every directory in this repository\n"
+msgstr ""
+
+msgid "*** counting directories: "
+msgstr ""
+
+#, python-format
+msgid "found %d\n"
+msgstr ""
+
+#, python-format
+msgid "*** to raise the limit from %d to %d (run as root):\n"
+msgstr ""
+
+#, python-format
+msgid "***  echo %d > %s\n"
+msgstr ""
+
+#, python-format
+msgid "cannot watch %s until inotify watch limit is raised"
+msgstr ""
+
+#, python-format
+msgid "inotify service not available: %s"
+msgstr ""
+
+#, python-format
+msgid "watching %r\n"
+msgstr ""
+
+#, python-format
+msgid "watching directories under %r\n"
+msgstr ""
+
+#, python-format
+msgid "status: %r dir(%d) -> %s\n"
+msgstr ""
+
+#, python-format
+msgid "status: %r %s -> %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s dirstate reload\n"
+msgstr ""
+
+#, python-format
+msgid "%s end dirstate reload\n"
+msgstr ""
+
+msgid "rescanning due to .hgignore change\n"
+msgstr ""
+
+#, python-format
+msgid "%s event: created %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s event: deleted %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s event: modified %s\n"
+msgstr ""
+
+#, python-format
+msgid "filesystem containing %s was unmounted\n"
+msgstr ""
+
+#, python-format
+msgid "%s readable: %d bytes\n"
+msgstr ""
+
+#, python-format
+msgid "%s below threshold - unhooking\n"
+msgstr ""
+
+#, python-format
+msgid "%s reading %d events\n"
+msgstr ""
+
+#, python-format
+msgid "%s hooking back up with %d bytes readable\n"
+msgstr ""
+
+#, python-format
+msgid "%s processing %d deferred events as %d\n"
+msgstr ""
+
+#, python-format
+msgid "could not start server: %s"
+msgstr ""
+
+#, python-format
+msgid "received query from incompatible client version %d\n"
+msgstr ""
+
+#, python-format
+msgid "answering query for %r\n"
+msgstr ""
+
+msgid "finished setup\n"
+msgstr ""
+
+msgid "polling: no timeout\n"
+msgstr ""
+
+#, python-format
+msgid "polling: %sms timeout\n"
+msgstr ""
+
+#, python-format
+msgid "interhg: invalid pattern for %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid "interhg: invalid regexp for %s: %s\n"
+msgstr ""
+
+msgid ""
+"keyword expansion in local repositories\n"
+"\n"
+"This extension expands RCS/CVS-like or self-customized $Keywords$\n"
+"in tracked text files selected by your configuration.\n"
+"\n"
+"Keywords are only expanded in local repositories and not stored in\n"
+"the change history. The mechanism can be regarded as a convenience\n"
+"for the current user or for archive distribution.\n"
+"\n"
+"Configuration is done in the [keyword] and [keywordmaps] sections\n"
+"of hgrc files.\n"
+"\n"
+"Example:\n"
+"\n"
+"    [keyword]\n"
+"    # expand keywords in every python file except those matching \"x*\"\n"
+"    **.py =\n"
+"    x*    = ignore\n"
+"\n"
+"Note: the more specific you are in your filename patterns\n"
+"      the less you lose speed in huge repos.\n"
+"\n"
+"For [keywordmaps] template mapping and expansion demonstration and\n"
+"control run \"hg kwdemo\".\n"
+"\n"
+"An additional date template filter {date|utcdate} is provided.\n"
+"\n"
+"The default template mappings (view with \"hg kwdemo -d\") can be replaced\n"
+"with customized keywords and templates.\n"
+"Again, run \"hg kwdemo\" to control the results of your config changes.\n"
+"\n"
+"Before changing/disabling active keywords, run \"hg kwshrink\" to avoid\n"
+"the risk of inadvertedly storing expanded keywords in the change history.\n"
+"\n"
+"To force expansion after enabling it, or a configuration change, run\n"
+"\"hg kwexpand\".\n"
+"\n"
+"Also, when committing with the record extension or using mq's qrecord, be "
+"aware\n"
+"that keywords cannot be updated. Again, run \"hg kwexpand\" on the files in\n"
+"question to update keyword expansions after all changes have been checked "
+"in.\n"
+"\n"
+"Expansions spanning more than one line and incremental expansions,\n"
+"like CVS' $Log$, are not supported. A keyword template map\n"
+"\"Log = {desc}\" expands to the first line of the changeset description.\n"
+msgstr ""
+
+msgid "Returns hgdate in cvs-like UTC format."
+msgstr ""
+
+msgid ""
+"\n"
+"    Sets up keyword templates, corresponding keyword regex, and\n"
+"    provides keyword substitution functions.\n"
+"    "
+msgstr ""
+
+msgid "Replaces keywords in data with expanded template."
+msgstr ""
+
+msgid "Returns data with keywords expanded."
+msgstr ""
+
+msgid ""
+"Returns true if path matches [keyword] pattern\n"
+"        and is not a symbolic link.\n"
+"        Caveat: localrepository._link fails on Windows."
+msgstr ""
+
+msgid "Overwrites selected files expanding/shrinking keywords."
+msgstr ""
+
+#, python-format
+msgid "overwriting %s %s keywords\n"
+msgstr ""
+
+msgid "Unconditionally removes all keyword substitutions from text."
+msgstr ""
+
+msgid "Returns text with all keyword substitutions removed."
+msgstr ""
+
+msgid "Returns lines with keyword substitutions removed."
+msgstr ""
+
+msgid ""
+"If in restricted mode returns data read from wdir with\n"
+"        keyword substitutions removed."
+msgstr ""
+
+msgid ""
+"\n"
+"    Subclass of filelog to hook into its read, add, cmp methods.\n"
+"    Keywords are \"stored\" unexpanded, and processed on reading.\n"
+"    "
+msgstr ""
+
+msgid "Expands keywords when reading filelog."
+msgstr ""
+
+msgid "Removes keyword substitutions when adding to filelog."
+msgstr ""
+
+msgid "Removes keyword substitutions for comparison."
+msgstr ""
+
+msgid ""
+"Bails out if [keyword] configuration is not active.\n"
+"    Returns status of working directory."
+msgstr ""
+
+msgid "[keyword] patterns cannot match"
+msgstr ""
+
+msgid "no [keyword] patterns configured"
+msgstr ""
+
+msgid "Selects files and passes them to kwtemplater.overwrite."
+msgstr ""
+
+msgid ""
+"print [keywordmaps] configuration and an expansion example\n"
+"\n"
+"    Show current, custom, or default keyword template maps\n"
+"    and their expansion.\n"
+"\n"
+"    Extend current configuration by specifying maps as arguments\n"
+"    and optionally by reading from an additional hgrc file.\n"
+"\n"
+"    Override current keyword template maps with \"default\" option.\n"
+"    "
+msgstr ""
+
+#, python-format
+msgid ""
+"\n"
+"\t%s\n"
+msgstr ""
+
+#, python-format
+msgid "creating temporary repo at %s\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"\n"
+"%s keywords written to %s:\n"
+msgstr ""
+
+msgid "unhooked all commit hooks\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"\n"
+"removing temporary repo %s\n"
+msgstr ""
+"\n"
+"正在删除临时版本库 %s\n"
+
+msgid ""
+"expand keywords in working directory\n"
+"\n"
+"    Run after (re)enabling keyword expansion.\n"
+"\n"
+"    kwexpand refuses to run if given files contain local changes.\n"
+"    "
+msgstr ""
+
+msgid ""
+"print files currently configured for keyword expansion\n"
+"\n"
+"    Crosscheck which files in working directory are potential targets for\n"
+"    keyword expansion.\n"
+"    That is, files matched by [keyword] config patterns but not symlinks.\n"
+"    "
+msgstr ""
+
+msgid ""
+"revert expanded keywords in working directory\n"
+"\n"
+"    Run before changing/disabling active keywords\n"
+"    or if you experience problems with \"hg import\" or \"hg merge\".\n"
+"\n"
+"    kwshrink refuses to run if given files contain local changes.\n"
+"    "
+msgstr ""
+
+msgid ""
+"Collects [keyword] config in kwtools.\n"
+"    Monkeypatches dispatch._parse if needed."
+msgstr ""
+
+msgid "Monkeypatch dispatch._parse to obtain running hg command."
+msgstr ""
+
+msgid ""
+"Sets up repo as kwrepo for keyword substitution.\n"
+"    Overrides file method to return kwfilelog instead of filelog\n"
+"    if file matches user configuration.\n"
+"    Wraps commit to overwrite configured files with updated\n"
+"    keyword substitutions.\n"
+"    Monkeypatches patch and webcommands."
+msgstr ""
+
+msgid ""
+"Monkeypatch/wrap patch.patchfile.__init__ to avoid\n"
+"        rejects or conflicts due to expanded keywords in working dir."
+msgstr ""
+
+msgid ""
+"Monkeypatch patch.diff to avoid expansion except when\n"
+"        comparing against working dir."
+msgstr ""
+
+msgid "Wraps webcommands.x turning off keyword expansion."
+msgstr ""
+
+msgid "show default keyword template maps"
+msgstr ""
+
+msgid "read maps from rcfile"
+msgstr ""
+
+msgid "hg kwdemo [-d] [-f RCFILE] [TEMPLATEMAP]..."
+msgstr ""
+
+msgid "hg kwexpand [OPTION]... [FILE]..."
+msgstr ""
+
+msgid "show keyword status flags of all files"
+msgstr ""
+
+msgid "show files excluded from expansion"
+msgstr ""
+
+msgid "additionally show untracked files"
+msgstr ""
+
+msgid "hg kwfiles [OPTION]... [FILE]..."
+msgstr ""
+
+msgid "hg kwshrink [OPTION]... [FILE]..."
+msgstr ""
+
+msgid ""
+"patch management and development\n"
+"\n"
+"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).\n"
+"\n"
+"Known patches are represented as patch files in the .hg/patches\n"
+"directory.  Applied patches are both patch files and changesets.\n"
+"\n"
+"Common tasks (use \"hg help command\" for more details):\n"
+"\n"
+"prepare repository to work with patches   qinit\n"
+"create new patch                          qnew\n"
+"import existing patch                     qimport\n"
+"\n"
+"print patch series                        qseries\n"
+"print applied patches                     qapplied\n"
+"print name of top applied patch           qtop\n"
+"\n"
+"add known patch to applied stack          qpush\n"
+"remove patch from applied stack           qpop\n"
+"refresh contents of top applied patch     qrefresh\n"
+msgstr ""
+
+msgid ""
+"Update all references to a field in the patch header.\n"
+"        If none found, add it email style."
+msgstr ""
+
+msgid ""
+"Remove existing message, keeping the rest of the comments fields.\n"
+"        If comments contains 'subject: ', message will prepend\n"
+"        the field and a blank line."
+msgstr ""
+
+#, python-format
+msgid "%s appears more than once in %s"
+msgstr ""
+
+msgid "guard cannot be an empty string"
+msgstr ""
+
+#, python-format
+msgid "guard %r starts with invalid character: %r"
+msgstr ""
+
+#, python-format
+msgid "invalid character in guard %r: %r"
+msgstr ""
+
+#, python-format
+msgid "active guards: %s\n"
+msgstr ""
+
+#, python-format
+msgid "guard %r too short"
+msgstr ""
+
+#, python-format
+msgid "guard %r starts with invalid char"
+msgstr ""
+
+#, python-format
+msgid "allowing %s - no guards in effect\n"
+msgstr ""
+
+#, python-format
+msgid "allowing %s - no matching negative guards\n"
+msgstr ""
+
+#, python-format
+msgid "allowing %s - guarded by %r\n"
+msgstr ""
+
+#, python-format
+msgid "skipping %s - guarded by %r\n"
+msgstr ""
+
+#, python-format
+msgid "skipping %s - no matching guards\n"
+msgstr ""
+
+#, python-format
+msgid "error removing undo: %s\n"
+msgstr ""
+
+#, python-format
+msgid "apply failed for patch %s"
+msgstr ""
+
+#, python-format
+msgid "patch didn't work out, merging %s\n"
+msgstr ""
+
+#, python-format
+msgid "update returned %d"
+msgstr ""
+
+msgid "repo commit failed"
+msgstr ""
+
+#, python-format
+msgid "unable to read %s"
+msgstr ""
+
+#, python-format
+msgid "patch %s does not exist\n"
+msgstr ""
+
+#, python-format
+msgid "patch %s is not applied\n"
+msgstr ""
+
+msgid ""
+"Apply patchfile  to the working directory.\n"
+"        patchfile: file name of patch"
+msgstr ""
+
+msgid "patch failed, unable to continue (try -v)\n"
+msgstr ""
+
+#, python-format
+msgid "applying %s\n"
+msgstr ""
+
+#, python-format
+msgid "Unable to read %s\n"
+msgstr ""
+
+#, python-format
+msgid "imported patch %s\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"\n"
+"imported patch %s"
+msgstr ""
+
+#, python-format
+msgid "patch %s is empty\n"
+msgstr ""
+
+msgid "patch failed, rejects left in working dir\n"
+msgstr ""
+
+msgid "fuzz found when applying patch, stopping\n"
+msgstr ""
+
+#, python-format
+msgid "revision %d is not managed"
+msgstr ""
+
+#, python-format
+msgid "cannot delete revision %d above applied patches"
+msgstr ""
+
+msgid "qdelete requires at least one revision or patch name"
+msgstr ""
+
+#, python-format
+msgid "cannot delete applied patch %s"
+msgstr ""
+
+#, python-format
+msgid "patch %s not in series file"
+msgstr ""
+
+msgid "no patches applied"
+msgstr ""
+
+msgid "working directory revision is not qtip"
+msgstr ""
+
+msgid "local changes found, refresh first"
+msgstr ""
+
+msgid "local changes found"
+msgstr ""
+
+#, python-format
+msgid "\"%s\" cannot be used as the name of a patch"
+msgstr ""
+
+msgid ""
+"options:\n"
+"           msg: a string or a no-argument function returning a string\n"
+"        "
+msgstr ""
+
+#, python-format
+msgid "patch \"%s\" already exists"
+msgstr ""
+
+#, python-format
+msgid "error unlinking %s\n"
+msgstr ""
+
+msgid "returns (index, rev, patch)"
+msgstr ""
+
+#, python-format
+msgid "patch name \"%s\" is ambiguous:\n"
+msgstr ""
+
+#, python-format
+msgid "patch %s not in series"
+msgstr ""
+
+msgid "(working directory not at tip)\n"
+msgstr ""
+
+msgid "no patches in series\n"
+msgstr ""
+
+#, python-format
+msgid "cannot push to a previous patch: %s"
+msgstr ""
+
+#, python-format
+msgid "qpush: %s is already at the top\n"
+msgstr ""
+
+#, python-format
+msgid "guarded by %r"
+msgstr ""
+
+msgid "no matching guards"
+msgstr ""
+
+#, python-format
+msgid "cannot push '%s' - %s\n"
+msgstr ""
+
+msgid "all patches are currently applied\n"
+msgstr ""
+
+msgid "patch series already fully applied\n"
+msgstr ""
+
+msgid "cleaning up working directory..."
+msgstr ""
+
+#, python-format
+msgid "errors during apply, please fix and refresh %s\n"
+msgstr ""
+
+#, python-format
+msgid "now at: %s\n"
+msgstr ""
+
+#, python-format
+msgid "patch %s is not applied"
+msgstr ""
+
+msgid "no patches applied\n"
+msgstr ""
+
+#, python-format
+msgid "qpop: %s is already at the top\n"
+msgstr ""
+
+msgid "qpop: forcing dirstate update\n"
+msgstr ""
+
+#, python-format
+msgid "trying to pop unknown node %s"
+msgstr ""
+
+msgid "popping would remove a revision not managed by this patch queue"
+msgstr ""
+
+msgid "deletions found between repo revs"
+msgstr ""
+
+msgid "patch queue now empty\n"
+msgstr ""
+
+msgid "cannot refresh a revision with children"
+msgstr ""
+
+msgid ""
+"refresh interrupted while patch was popped! (revert --all, qpush to recover)\n"
+msgstr ""
+
+msgid "patch queue directory already exists"
+msgstr ""
+
+#, python-format
+msgid "patch %s is not in series file"
+msgstr ""
+
+msgid "No saved patch data found\n"
+msgstr ""
+
+#, python-format
+msgid "restoring status: %s\n"
+msgstr ""
+
+msgid "save entry has children, leaving it alone\n"
+msgstr ""
+
+#, python-format
+msgid "removing save entry %s\n"
+msgstr ""
+
+#, python-format
+msgid "saved queue repository parents: %s %s\n"
+msgstr ""
+
+msgid "queue directory updating\n"
+msgstr ""
+
+msgid "Unable to load queue repository\n"
+msgstr ""
+
+msgid "save: no patches applied, exiting\n"
+msgstr ""
+
+msgid "status is already saved\n"
+msgstr ""
+
+msgid "hg patches saved state"
+msgstr ""
+
+msgid "repo commit failed\n"
+msgstr ""
+
+msgid ""
+"If all_patches is False, return the index of the next pushable patch\n"
+"        in the series, or the series length. If all_patches is True, return "
+"the\n"
+"        index of the first patch past the last applied one.\n"
+"        "
+msgstr ""
+
+#, python-format
+msgid "patch %s is already in the series file"
+msgstr ""
+
+msgid "option \"-r\" not valid when importing files"
+msgstr ""
+
+msgid "option \"-n\" not valid when importing multiple patches"
+msgstr ""
+
+#, python-format
+msgid "revision %d is the root of more than one branch"
+msgstr ""
+
+#, python-format
+msgid "revision %d is already managed"
+msgstr ""
+
+#, python-format
+msgid "revision %d is not the parent of the queue"
+msgstr ""
+
+#, python-format
+msgid "revision %d has unmanaged children"
+msgstr ""
+
+#, python-format
+msgid "cannot import merge revision %d"
+msgstr ""
+
+#, python-format
+msgid "revision %d is not the parent of %d"
+msgstr ""
+
+msgid "-e is incompatible with import from -"
+msgstr ""
+
+#, python-format
+msgid "patch %s does not exist"
+msgstr ""
+
+msgid "need --name to import a patch from -"
+msgstr ""
+
+#, python-format
+msgid "adding %s to series file\n"
+msgstr ""
+
+msgid ""
+"remove patches from queue\n"
+"\n"
+"    The patches must not be applied, unless they are arguments to\n"
+"    the --rev parameter. At least one patch or revision is required.\n"
+"\n"
+"    With --rev, mq will stop managing the named revisions (converting\n"
+"    them to regular mercurial changesets). The qfinish command should be\n"
+"    used as an alternative for qdel -r, as the latter option is deprecated.\n"
+"\n"
+"    With --keep, the patch files are preserved in the patch directory."
+msgstr ""
+
+msgid "print the patches already applied"
+msgstr ""
+
+msgid "print the patches not yet applied"
+msgstr ""
+
+msgid ""
+"import a patch\n"
+"\n"
+"    The patch is inserted into the series after the last applied patch.\n"
+"    If no patches have been applied, qimport prepends the patch\n"
+"    to the series.\n"
+"\n"
+"    The patch will have the same name as its source file unless you\n"
+"    give it a new one with --name.\n"
+"\n"
+"    You can register an existing patch inside the patch directory\n"
+"    with the --existing flag.\n"
+"\n"
+"    With --force, an existing patch of the same name will be overwritten.\n"
+"\n"
+"    An existing changeset may be placed under mq control with --rev\n"
+"    (e.g. qimport --rev tip -n patch will place tip under mq control).\n"
+"    With --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 changes.\n"
+"    "
+msgstr ""
+"导入补丁\n"
+"\n"
+"    此补丁插入到最近一次应用的补丁序列中。\n"
+"    如果尚无应用补丁,qimport 会插入补丁到序列开始。\n"
+"\n"
+"    除非你使用 '--name' 给出补丁名称,否则就与源文件同名。\n"
+"\n"
+"    你可以使用 '--existing' 注册一个已在补丁目录中的补丁。\n"
+"\n"
+"    使用 '--force' 会覆盖已有的补丁。\n"
+"\n"
+"    可以使用 '--rev' 将已有的修改集置于 mq 控制下(例如 \n"
+"    'qimport --rev tip -n patch' 会将 tip 置于 mq 控制下)。当使用 '--git'\n"
+"    时,'--rev' 导入的补丁将会使用 git 差异格式。参见差异帮助主题,以了解\n"
+"    为什么这对于保留改名/复制信息和权限修改很重要。\n"
+"    "
+
+msgid ""
+"init a new queue repository\n"
+"\n"
+"    The queue repository is unversioned by default. If -c is\n"
+"    specified, qinit will create a separate nested repository\n"
+"    for patches (qinit -c may also be run later to convert\n"
+"    an unversioned patch repository into a versioned one).\n"
+"    You can use qcommit to commit changes to this queue repository."
+msgstr ""
+"初始化队列仓库\n"
+"\n"
+"    默认队列仓库不受版本控制。如果指定了 '-c',那么 qinit 会为补丁创建一个\n"
+"    单独的嵌套版本库(也可以稍后运行 'qinit -c' 来将不受版本控制的补丁仓库\n"
+"    转换成受版本控制)。你可以使用 'qcommit' 提交改变到此队列版本库。"
+
+msgid ""
+"clone main and patch repository at same time\n"
+"\n"
+"    If source is local, destination will have no patches applied.  If\n"
+"    source is remote, this command can not check if patches are\n"
+"    applied in source, so cannot guarantee that patches are not\n"
+"    applied in destination.  If you clone remote repository, be sure\n"
+"    before that it has no patches applied.\n"
+"\n"
+"    Source patch repository is looked for in <src>/.hg/patches by\n"
+"    default.  Use -p <url> to change.\n"
+"\n"
+"    The patch directory must be a nested mercurial repository, as\n"
+"    would be created by qinit -c.\n"
+"    "
+msgstr ""
+
+msgid "versioned patch repository not found (see qinit -c)"
+msgstr ""
+
+msgid "cloning main repo\n"
+msgstr ""
+
+msgid "cloning patch repo\n"
+msgstr ""
+
+msgid "stripping applied patches from destination repo\n"
+msgstr ""
+
+msgid "updating destination repo\n"
+msgstr ""
+
+msgid "commit changes in the queue repository"
+msgstr ""
+
+msgid "print the entire series file"
+msgstr ""
+
+msgid "print the name of the current patch"
+msgstr ""
+
+msgid "print the name of the next patch"
+msgstr ""
+
+msgid "all patches applied\n"
+msgstr ""
+
+msgid "print the name of the previous patch"
+msgstr ""
+
+msgid "only one patch applied\n"
+msgstr ""
+
+msgid ""
+"create a new patch\n"
+"\n"
+"    qnew creates a new patch on top of the currently-applied patch (if any).\n"
+"    It will refuse to run if there are any outstanding changes unless -f is\n"
+"    specified, in which case the patch will be initialized with them. You\n"
+"    may also use -I, -X, and/or a list of files after the patch name to add\n"
+"    only changes to matching files to the new patch, leaving the rest as\n"
+"    uncommitted modifications.\n"
+"\n"
+"    -u and -d can be used to set the (given) user and date, respectively.\n"
+"    -U and -D set user to current user and date to current date.\n"
+"\n"
+"    -e, -m or -l set the patch header as well as the commit message. If none\n"
+"    is specified, the header is empty and the commit message is '[mq]: "
+"PATCH'.\n"
+"\n"
+"    Use the --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.\n"
+"    "
+msgstr ""
+
+msgid ""
+"update the current patch\n"
+"\n"
+"    If any file patterns are provided, the refreshed patch will contain only\n"
+"    the modifications that match those patterns; the remaining modifications\n"
+"    will remain in the working directory.\n"
+"\n"
+"    If --short is specified, files currently included in the patch will\n"
+"    be refreshed just like matched files and remain in the patch.\n"
+"\n"
+"    hg add/remove/copy/rename work as usual, though you might want to use\n"
+"    git-style patches (--git or [diff] git=1) to track copies and renames.\n"
+"    See the diffs help topic for more information on the git diff format.\n"
+"    "
+msgstr ""
+"更新当前补丁\n"
+"\n"
+"    如果提供了文件匹配模式,更新后的补丁只包含匹配这些模式的修改,其它\n"
+"    的修改仍旧在工作目录中。\n"
+"\n"
+"    如果指定了 '--short',只更新已经在补丁中的文件,与文件匹配模式类似。\n"
+"\n"
+"    'hg add/remove/copy/rename' 如常工作,你可能想使用 git 格式补丁(使\n"
+"    用选项 '--git' 或在配置文件的 [diff] 区中设置 git=1)以跟踪复制和改\n"
+"    名。请参见差异帮助主题,以了解关于 git 差异格式的更多信息。\n"
+"    "
+
+msgid "option \"-e\" incompatible with \"-m\" or \"-l\""
+msgstr ""
+
+msgid ""
+"diff of the current patch and subsequent modifications\n"
+"\n"
+"    Shows a diff which includes the current patch as well as any changes "
+"which\n"
+"    have been made in the working directory since the last refresh (thus\n"
+"    showing what the current patch would become after a qrefresh).\n"
+"\n"
+"    Use 'hg diff' if you only want to see the changes made since the last\n"
+"    qrefresh, or 'hg export qtip' if you want to see changes made by the\n"
+"    current patch without including changes made since the qrefresh.\n"
+"    "
+msgstr ""
+"显式当前的补丁和后续的修改\n"
+"\n"
+"    显示当前的补丁和最近一次刷新之后的修改(因而在执行 'qrefresh' 之后就只\n"
+"    显示当前的补丁)。\n"
+"\n"
+"    如果你只想看到最近一次刷新之后的修改请使用 'hg diff',如果你只想看到当\n"
+"    前的补丁请使用 'hg export qtip'。\n"
+"    "
+
+msgid ""
+"fold the named patches into the current patch\n"
+"\n"
+"    Patches must not yet be applied. Each patch will be successively\n"
+"    applied to the current patch in the order given. If all the\n"
+"    patches apply successfully, the current patch will be refreshed\n"
+"    with the new cumulative patch, and the folded patches will\n"
+"    be deleted. With -k/--keep, the folded patch files will not\n"
+"    be removed afterwards.\n"
+"\n"
+"    The header for each folded patch will be concatenated with\n"
+"    the current patch header, separated by a line of '* * *'."
+msgstr ""
+
+msgid "qfold requires at least one patch name"
+msgstr ""
+
+msgid "No patches applied"
+msgstr ""
+
+#, python-format
+msgid "Skipping already folded patch %s"
+msgstr ""
+
+#, python-format
+msgid "qfold cannot fold already applied patch %s"
+msgstr ""
+
+#, python-format
+msgid "Error folding patch %s"
+msgstr ""
+
+msgid "push or pop patches until named patch is at top of stack"
+msgstr ""
+
+msgid ""
+"set or print guards for a patch\n"
+"\n"
+"    Guards control whether a patch can be pushed. A patch with no\n"
+"    guards is always pushed. A patch with a positive guard (\"+foo\") is\n"
+"    pushed only if the qselect command has activated it. A patch with\n"
+"    a negative guard (\"-foo\") is never pushed if the qselect command\n"
+"    has activated it.\n"
+"\n"
+"    With no arguments, print the currently active guards.\n"
+"    With arguments, set guards for the named patch.\n"
+"    NOTE: Specifying negative guards now requires '--'.\n"
+"\n"
+"    To set guards on another patch:\n"
+"      hg qguard -- other.patch +2.6.17 -stable\n"
+"    "
+msgstr ""
+
+msgid "cannot mix -l/--list with options or arguments"
+msgstr ""
+
+msgid "no patch to work with"
+msgstr ""
+
+#, python-format
+msgid "no patch named %s"
+msgstr ""
+
+msgid "print the header of the topmost or specified patch"
+msgstr ""
+
+msgid ""
+"push the next patch onto the stack\n"
+"\n"
+"    When --force is applied, all local changes in patched files will be "
+"lost.\n"
+"    "
+msgstr ""
+"将下个补丁压入堆栈\n"
+"\n"
+"    当指定 '--force' 时,所有在补丁文件中的本地修改都会丢失。\n"
+"    "
+
+msgid "no saved queues found, please use -n\n"
+msgstr ""
+
+#, python-format
+msgid "merging with queue at: %s\n"
+msgstr ""
+
+msgid ""
+"pop the current patch off the stack\n"
+"\n"
+"    By default, pops off the top of the patch stack. If given a patch name,\n"
+"    keeps popping off patches until the named patch is at the top of the "
+"stack.\n"
+"    "
+msgstr ""
+"将当前补丁弹出堆栈\n"
+"\n"
+"    默认将补丁堆栈的顶部弹出。如果指定了补丁名称,那么就会一直弹出,直到此\n"
+"    补丁位于堆栈顶部。\n"
+"    "
+
+#, python-format
+msgid "using patch queue: %s\n"
+msgstr ""
+
+msgid ""
+"rename a patch\n"
+"\n"
+"    With one argument, renames the current patch to PATCH1.\n"
+"    With two arguments, renames PATCH1 to PATCH2."
+msgstr ""
+
+#, python-format
+msgid "%s already exists"
+msgstr ""
+
+#, python-format
+msgid "A patch named %s already exists in the series file"
+msgstr ""
+
+msgid "restore the queue state saved by a rev"
+msgstr ""
+
+msgid "save current queue state"
+msgstr ""
+
+#, python-format
+msgid "destination %s exists and is not a directory"
+msgstr ""
+
+#, python-format
+msgid "destination %s exists, use -f to force"
+msgstr ""
+
+#, python-format
+msgid "copy %s to %s\n"
+msgstr ""
+
+msgid ""
+"strip a revision and all its descendants from the repository\n"
+"\n"
+"    If one of the working dir's parent revisions is stripped, the working\n"
+"    directory will be updated to the parent of the stripped revision.\n"
+"    "
+msgstr ""
+"从版本库删除一个版本以及它的子孙\n"
+"\n"
+"    如果有工作目录的父版本被删除,那么此目录会被更新到已删除版本的父版本。\n"
+"    "
+
+msgid ""
+"set or print guarded patches to push\n"
+"\n"
+"    Use the qguard command to set or print guards on patch, then use\n"
+"    qselect to tell mq which guards to use. A patch will be pushed if it\n"
+"    has no guards or any positive guards match the currently selected guard,\n"
+"    but will not be pushed if any negative guards match the current guard.\n"
+"    For example:\n"
+"\n"
+"        qguard foo.patch -stable    (negative guard)\n"
+"        qguard bar.patch +stable    (positive guard)\n"
+"        qselect stable\n"
+"\n"
+"    This activates the \"stable\" guard. mq will skip foo.patch (because\n"
+"    it has a negative match) but push bar.patch (because it\n"
+"    has a positive match).\n"
+"\n"
+"    With no arguments, prints the currently active guards.\n"
+"    With one argument, sets the active guard.\n"
+"\n"
+"    Use -n/--none to deactivate guards (no other arguments needed).\n"
+"    When no guards are active, patches with positive guards are skipped\n"
+"    and patches with negative guards are pushed.\n"
+"\n"
+"    qselect can change the guards on applied patches. It does not pop\n"
+"    guarded patches by default. Use --pop to pop back to the last applied\n"
+"    patch that is not guarded. Use --reapply (which implies --pop) to push\n"
+"    back to the current patch afterwards, but skip guarded patches.\n"
+"\n"
+"    Use -s/--series to print a list of all guards in the series file (no\n"
+"    other arguments needed). Use -v for more information."
+msgstr ""
+
+msgid "guards deactivated\n"
+msgstr ""
+
+#, python-format
+msgid "number of unguarded, unapplied patches has changed from %d to %d\n"
+msgstr ""
+
+#, python-format
+msgid "number of guarded, applied patches has changed from %d to %d\n"
+msgstr ""
+
+msgid "guards in series file:\n"
+msgstr ""
+
+msgid "no guards in series file\n"
+msgstr ""
+
+msgid "active guards:\n"
+msgstr ""
+
+msgid "no active guards\n"
+msgstr ""
+
+msgid "popping guarded patches\n"
+msgstr ""
+
+msgid "reapplying unguarded patches\n"
+msgstr ""
+
+msgid ""
+"move applied patches into repository history\n"
+"\n"
+"    Finishes the specified revisions (corresponding to applied patches) by\n"
+"    moving them out of mq control into regular repository history.\n"
+"\n"
+"    Accepts a revision range or the --applied option. If --applied is\n"
+"    specified, all applied mq revisions are removed from mq control.\n"
+"    Otherwise, the given revisions must be at the base of the stack of\n"
+"    applied patches.\n"
+"\n"
+"    This can be especially useful if your changes have been applied to an\n"
+"    upstream repository, or if you are about to push your changes to "
+"upstream.\n"
+"    "
+msgstr ""
+
+msgid "no revisions specified"
+msgstr ""
+
+msgid "cannot commit over an applied mq patch"
+msgstr ""
+
+msgid "source has mq patches applied"
+msgstr ""
+
+#, python-format
+msgid "mq status file refers to unknown node %s\n"
+msgstr ""
+
+#, python-format
+msgid "Tag %s overrides mq patch of the same name\n"
+msgstr ""
+
+msgid "cannot import over an applied patch"
+msgstr ""
+
+msgid "print first line of patch header"
+msgstr ""
+
+msgid "hg qapplied [-s] [PATCH]"
+msgstr ""
+
+msgid "use pull protocol to copy metadata"
+msgstr "数用协议 'pull' 来复制元数据"
+
+msgid "do not update the new working directories"
+msgstr ""
+
+msgid "use uncompressed transfer (fast over LAN)"
+msgstr "使用不压缩的传输(在局域网更快)"
+
+msgid "location of source patch repo"
+msgstr ""
+
+msgid "hg qclone [OPTION]... SOURCE [DEST]"
+msgstr ""
+
+msgid "hg qcommit [OPTION]... [FILE]..."
+msgstr ""
+
+msgid "hg qdiff [OPTION]... [FILE]..."
+msgstr ""
+
+msgid "keep patch file"
+msgstr ""
+
+msgid "stop managing a revision"
+msgstr ""
+
+msgid "hg qdelete [-k] [-r REV]... [PATCH]..."
+msgstr ""
+
+msgid "edit patch header"
+msgstr ""
+
+msgid "keep folded patch files"
+msgstr ""
+
+msgid "hg qfold [-e] [-k] [-m TEXT] [-l FILE] PATCH..."
+msgstr ""
+
+msgid "overwrite any local changes"
+msgstr ""
+
+msgid "hg qgoto [OPTION]... PATCH"
+msgstr ""
+
+msgid "list all patches and guards"
+msgstr ""
+
+msgid "drop all guards"
+msgstr ""
+
+msgid "hg qguard [-l] [-n] -- [PATCH] [+GUARD]... [-GUARD]..."
+msgstr ""
+
+msgid "hg qheader [PATCH]"
+msgstr ""
+
+msgid "import file in patch dir"
+msgstr "从补丁目录导入文件"
+
+msgid "patch file name"
+msgstr "补丁文件名称"
+
+msgid "overwrite existing files"
+msgstr "覆盖已有文件"
+
+msgid "place existing revisions under mq control"
+msgstr "将现有的版本置于 mq 控制下"
+
+msgid "use git extended diff format"
+msgstr "使用 git 扩展差异格式"
+
+msgid "hg qimport [-e] [-n NAME] [-f] [-g] [-r REV]... FILE..."
+msgstr ""
+
+msgid "create queue repository"
+msgstr "创建队列版本库"
+
+msgid "hg qinit [-c]"
+msgstr ""
+
+msgid "import uncommitted changes into patch"
+msgstr ""
+
+msgid "add \"From: <current user>\" to patch"
+msgstr ""
+
+msgid "add \"From: <given user>\" to patch"
+msgstr ""
+
+msgid "add \"Date: <current date>\" to patch"
+msgstr ""
+
+msgid "add \"Date: <given date>\" to patch"
+msgstr ""
+
+msgid "hg qnew [-e] [-m TEXT] [-l FILE] [-f] PATCH [FILE]..."
+msgstr ""
+
+msgid "hg qnext [-s]"
+msgstr ""
+
+msgid "hg qprev [-s]"
+msgstr ""
+
+msgid "pop all patches"
+msgstr "弹出全部补丁"
+
+msgid "queue name to pop"
+msgstr "操作的队列名称"
+
+msgid "forget any local changes"
+msgstr "丢弃本地修改"
+
+msgid "hg qpop [-a] [-n NAME] [-f] [PATCH | INDEX]"
+msgstr ""
+
+msgid "apply if the patch has rejects"
+msgstr "强制应用补丁"
+
+msgid "list patch name in commit text"
+msgstr "在提交日志中列出补丁名称"
+
+msgid "apply all patches"
+msgstr "应用所有补丁"
+
+msgid "merge from another queue"
+msgstr "从其它队列合并"
+
+msgid "merge queue name"
+msgstr "合并队列的名称"
+
+msgid "hg qpush [-f] [-l] [-a] [-m] [-n NAME] [PATCH | INDEX]"
+msgstr ""
+
+msgid "refresh only files already in the patch and specified files"
+msgstr "仅当文件已经在补丁或指定文件中时才更新"
+
+msgid "add/update \"From: <current user>\" in patch"
+msgstr "在补丁中增加/更新 \"From: <current user>\""
+
+msgid "add/update \"From: <given user>\" in patch"
+msgstr "在补丁中增加/更新 \"From: <given user>\""
+
+msgid "update \"Date: <current date>\" in patch (if present)"
+msgstr "在补丁中更新 \"Date: <current date>\" (如果存在)"
+
+msgid "update \"Date: <given date>\" in patch (if present)"
+msgstr "在补丁中更新 \"Date: <given date>\" (如果存在)"
+
+msgid "hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FILE] [-s] [FILE]..."
+msgstr ""
+
+msgid "hg qrename PATCH1 [PATCH2]"
+msgstr ""
+
+msgid "delete save entry"
+msgstr ""
+
+msgid "update queue working dir"
+msgstr ""
+
+msgid "hg qrestore [-d] [-u] REV"
+msgstr ""
+
+msgid "copy patch directory"
+msgstr ""
+
+msgid "copy directory name"
+msgstr ""
+
+msgid "clear queue status file"
+msgstr ""
+
+msgid "force copy"
+msgstr ""
+
+msgid "hg qsave [-m TEXT] [-l FILE] [-c] [-n NAME] [-e] [-f]"
+msgstr ""
+
+msgid "disable all guards"
+msgstr ""
+
+msgid "list all guards in series file"
+msgstr ""
+
+msgid "pop to before first guarded applied patch"
+msgstr ""
+
+msgid "pop, then reapply patches"
+msgstr ""
+
+msgid "hg qselect [OPTION]... [GUARD]..."
+msgstr ""
+
+msgid "print patches not in series"
+msgstr ""
+
+msgid "hg qseries [-ms]"
+msgstr ""
+
+msgid "force removal with local changes"
+msgstr "强制删除,纵然有本地修改"
+
+msgid "bundle unrelated changesets"
+msgstr "打包不相关的修改集"
+
+msgid "no backups"
+msgstr "不备份"
+
+msgid "hg strip [-f] [-b] [-n] REV"
+msgstr ""
+
+msgid "hg qtop [-s]"
+msgstr ""
+
+msgid "hg qunapplied [-s] [PATCH]"
+msgstr ""
+
+msgid "finish all applied changesets"
+msgstr ""
+
+msgid "hg qfinish [-a] [REV...]"
+msgstr ""
+
+msgid ""
+"hook extension to email notifications on commits/pushes\n"
+"\n"
+"Subscriptions can be managed through hgrc. Default mode is to print\n"
+"messages to stdout, for testing and configuring.\n"
+"\n"
+"To use, configure notify extension and enable in hgrc like this:\n"
+"\n"
+"   [extensions]\n"
+"   hgext.notify =\n"
+"\n"
+"   [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"
+"\n"
+"   [notify]\n"
+"   # config items go in here\n"
+"\n"
+" config items:\n"
+"\n"
+" REQUIRED:\n"
+"   config = /path/to/file # file containing subscriptions\n"
+"\n"
+" OPTIONAL:\n"
+"   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"
+"   [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\n"
+"\n"
+" notify config file has same format as regular hgrc. it has two\n"
+" sections so you can express subscriptions in whatever way is handier\n"
+" for you.\n"
+"\n"
+"   [usersubs]\n"
+"   # key is subscriber email, value is \",\"-separated list of glob patterns\n"
+"   user@host = pattern\n"
+"\n"
+"   [reposubs]\n"
+"   # key is glob pattern, value is \",\"-separated list of subscriber emails\n"
+"   pattern = user@host\n"
+"\n"
+" glob patterns are matched against path to repo root.\n"
+"\n"
+" if you like, you can put notify config file in repo that users can\n"
+" push changes to, they can manage their own subscriptions."
+msgstr ""
+
+msgid "email notification class."
+msgstr ""
+
+msgid "strip leading slashes from local path, turn into web-safe path."
+msgstr ""
+
+msgid "try to clean up email addresses."
+msgstr ""
+
+msgid "return list of email addresses of subscribers to this repo."
+msgstr ""
+
+msgid "format one changeset."
+msgstr ""
+
+msgid "true if incoming changes from this source should be skipped."
+msgstr ""
+
+msgid "send message."
+msgstr ""
+
+#, python-format
+msgid "%s: %d new changesets"
+msgstr ""
+
+#, python-format
+msgid "notify: sending %d subscribers %d changes\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"\n"
+"diffs (truncated from %d to %d lines):\n"
+"\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"\n"
+"diffs (%d lines):\n"
+"\n"
+msgstr ""
+
+msgid ""
+"send email notifications to interested subscribers.\n"
+"\n"
+"    if used as changegroup hook, send one email for all changesets in\n"
+"    changegroup. else send one email per changeset."
+msgstr ""
+
+#, python-format
+msgid "notify: no subscribers to repo %s\n"
+msgstr ""
+
+#, python-format
+msgid "notify: changes have source \"%s\" - skipping\n"
+msgstr ""
+
+msgid ""
+"browse command output with external pager\n"
+"\n"
+"To set the pager that should be used, set the application variable:\n"
+"\n"
+"  [pager]\n"
+"  pager = LESS='FSRX' less\n"
+"\n"
+"If no pager is set, the pager extensions uses the environment\n"
+"variable $PAGER. If neither pager.pager, nor $PAGER is set, no pager\n"
+"is used.\n"
+"\n"
+"If you notice \"BROKEN PIPE\" error messages, you can disable them\n"
+"by setting:\n"
+"\n"
+"  [pager]\n"
+"  quiet = True\n"
+"\n"
+"You can disable the pager for certain commands by adding them to the\n"
+"pager.ignore list:\n"
+"\n"
+"  [pager]\n"
+"  ignore = version, help, update\n"
+"\n"
+"You can also enable the pager only for certain commands using pager.attend:\n"
+"\n"
+"  [pager]\n"
+"  attend = log\n"
+"\n"
+"If pager.attend is present, pager.ignore will be ignored.\n"
+"\n"
+"To ignore global commands like \"hg version\" or \"hg help\", you have to "
+"specify\n"
+"them in the global .hgrc\n"
+msgstr ""
+
+msgid ""
+"use suffixes to refer to ancestor revisions\n"
+"\n"
+"This extension allows you to use git-style suffixes to refer to\n"
+"the ancestors of a specific revision.\n"
+"\n"
+"For example, if you can refer to a revision as \"foo\", then:\n"
+"\n"
+"- 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\n"
+"\n"
+"- 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 ""
+
+msgid ""
+"sending Mercurial changesets as a series of patch emails\n"
+"\n"
+"The series is started off with a \"[PATCH 0 of N]\" introduction,\n"
+"which describes the series as a whole.\n"
+"\n"
+"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 body parts:\n"
+"\n"
+"  The remainder of the changeset description.\n"
+"\n"
+"  [Optional] The result of running diffstat on the patch.\n"
+"\n"
+"  The patch itself, as generated by \"hg export\".\n"
+"\n"
+"Each message refers to all of its predecessors using the In-Reply-To\n"
+"and References headers, so they will show up as a sequence in\n"
+"threaded mail and news readers, and in mail archives.\n"
+"\n"
+"For each changeset, you will be prompted with a diffstat summary and\n"
+"the changeset summary, so you can be sure you are sending the right changes.\n"
+"\n"
+"To enable this extension:\n"
+"\n"
+"  [extensions]\n"
+"  hgext.patchbomb =\n"
+"\n"
+"To configure other defaults, add a section like this to your hgrc file:\n"
+"\n"
+"  [email]\n"
+"  from = My Name <my@email>\n"
+"  to = recipient1, recipient2, ...\n"
+"  cc = cc1, cc2, ...\n"
+"  bcc = bcc1, bcc2, ...\n"
+"\n"
+"Then you can use the \"hg email\" command to mail a series of changesets\n"
+"as a patchbomb.\n"
+"\n"
+"To avoid sending patches prematurely, it is a good idea to first run\n"
+"the \"email\" command with the \"-n\" option (test only).  You will be\n"
+"prompted for an email recipient address, a subject an an introductory\n"
+"message describing the patches of your patchbomb.  Then when all is\n"
+"done, patchbomb messages are displayed. If PAGER environment variable\n"
+"is set, your pager will be fired up once for each patchbomb message, so\n"
+"you can verify everything is alright.\n"
+"\n"
+"The \"-m\" (mbox) option is also very useful.  Instead of previewing\n"
+"each patchbomb message in a pager or sending the messages directly,\n"
+"it will create a UNIX mailbox file with the patch emails.  This\n"
+"mailbox file can be previewed with any mail user agent which supports\n"
+"UNIX mbox files, e.g. with mutt:\n"
+"\n"
+"  % mutt -R -f mbox\n"
+"\n"
+"When you are previewing the patchbomb messages, you can use `formail'\n"
+"(a utility that is commonly installed as part of the procmail package),\n"
+"to send each message out:\n"
+"\n"
+"  % formail -s sendmail -bm -t < mbox\n"
+"\n"
+"That should be all. Now your patchbomb is on its way out.\n"
+"\n"
+"You can also either configure the method option in the email section\n"
+"to be a sendmail compatable mailer or fill out the [smtp] section so\n"
+"that the patchbomb extension can automatically send patchbombs directly\n"
+"from the commandline. See the [email] and [smtp] sections in hgrc(5)\n"
+"for details."
+msgstr ""
+
+msgid "Please enter a valid value.\n"
+msgstr ""
+
+msgid "does the diffstat above look okay? "
+msgstr ""
+
+msgid "diffstat rejected"
+msgstr ""
+
+msgid ""
+"send changesets by email\n"
+"\n"
+"    By default, diffs are sent in the format generated by hg export,\n"
+"    one per message.  The series starts with a \"[PATCH 0 of N]\"\n"
+"    introduction, which describes the series as a whole.\n"
+"\n"
+"    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 body parts.  First, the rest of\n"
+"    the changeset description.  Next, (optionally) if the diffstat\n"
+"    program is installed, the result of running diffstat on the patch.\n"
+"    Finally, the patch itself, as generated by \"hg export\".\n"
+"\n"
+"    With --outgoing, emails will be generated for patches not\n"
+"    found in the destination repository (or only those which are\n"
+"    ancestors of the specified revisions if any are provided)\n"
+"\n"
+"    With --bundle, changesets are selected as for --outgoing,\n"
+"    but a single email containing a binary Mercurial bundle as an\n"
+"    attachment will be sent.\n"
+"\n"
+"    Examples:\n"
+"\n"
+"    hg email -r 3000          # send patch 3000 only\n"
+"    hg email -r 3000 -r 3001  # send patches 3000 and 3001\n"
+"    hg email -r 3000:3005     # send patches 3000 through 3005\n"
+"    hg email 3000             # send patch 3000 (deprecated)\n"
+"\n"
+"    hg email -o               # send all patches not in default\n"
+"    hg email -o DEST          # send all patches not in DEST\n"
+"    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\n"
+"\n"
+"    hg email -b               # send bundle of all patches not in default\n"
+"    hg email -b DEST          # send bundle of all patches not in DEST\n"
+"    hg email -b -r 3000       # bundle of all ancestors of 3000 not in "
+"default\n"
+"    hg email -b -r 3000 DEST  # bundle of all ancestors of 3000 not in DEST\n"
+"\n"
+"    Before using this command, you will need to enable email in your hgrc.\n"
+"    See the [email] section in hgrc(5) for details.\n"
+"    "
+msgstr ""
+
+msgid "Return the revisions present locally but not in dest"
+msgstr ""
+
+msgid "specify at least one changeset with -r or -o"
+msgstr ""
+
+msgid "--outgoing mode always on with --bundle; do not re-specify --outgoing"
+msgstr ""
+
+msgid "too many destinations"
+msgstr ""
+
+msgid "use only one form to specify the revision"
+msgstr ""
+
+msgid ""
+"\n"
+"Write the introductory message for the patch series.\n"
+"\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"This patch series consists of %d patches.\n"
+"\n"
+msgstr ""
+
+msgid "Final summary:\n"
+msgstr ""
+
+msgid "Displaying "
+msgstr ""
+
+msgid "Writing "
+msgstr ""
+
+msgid "Sending "
+msgstr ""
+
+msgid "send patches as attachments"
+msgstr ""
+
+msgid "send patches as inline attachments"
+msgstr ""
+
+msgid "email addresses of blind carbon copy recipients"
+msgstr ""
+
+msgid "email addresses of copy recipients"
+msgstr ""
+
+msgid "add diffstat output to messages"
+msgstr ""
+
+msgid "use the given date as the sending date"
+msgstr ""
+
+msgid "use the given file as the series description"
+msgstr ""
+
+msgid "email address of sender"
+msgstr ""
+
+msgid "print messages that would be sent"
+msgstr ""
+
+msgid "write messages to mbox file instead of sending them"
+msgstr ""
+
+msgid "subject of first message (intro or single patch)"
+msgstr ""
+
+msgid "email addresses of recipients"
+msgstr ""
+
+msgid "omit hg patch header"
+msgstr ""
+
+msgid "send changes not found in the target repository"
+msgstr ""
+
+msgid "send changes not in target as a binary bundle"
+msgstr ""
+
+msgid "a revision to send"
+msgstr ""
+
+msgid "run even when remote repository is unrelated (with -b)"
+msgstr ""
+
+msgid "a base changeset to specify instead of a destination (with -b)"
+msgstr ""
+
+msgid "send an introduction email for a single patch"
+msgstr ""
+
+msgid "hg email [OPTION]... [DEST]..."
+msgstr ""
+
+msgid ""
+"removes files not tracked by Mercurial\n"
+"\n"
+"    Delete files not known to Mercurial. This is useful to test local and\n"
+"    uncommitted changes in an otherwise-clean source tree.\n"
+"\n"
+"    This means that purge will delete:\n"
+"     - Unknown files: files marked with \"?\" by \"hg status\"\n"
+"     - Empty directories: in fact Mercurial ignores directories unless they\n"
+"       contain files under source control managment\n"
+"    But it will leave untouched:\n"
+"     - Modified and unmodified tracked files\n"
+"     - Ignored files (unless --all is specified)\n"
+"     - New files added to the repository (with \"hg add\")\n"
+"\n"
+"    If directories are given on the command line, only files in these\n"
+"    directories are considered.\n"
+"\n"
+"    Be careful with purge, as you could irreversibly delete some files you\n"
+"    forgot to add to the repository. If you only want to print the list of\n"
+"    files that this program would delete, use the --print option.\n"
+"    "
+msgstr ""
+
+#, python-format
+msgid "%s cannot be removed"
+msgstr ""
+
+#, python-format
+msgid "warning: %s\n"
+msgstr ""
+
+#, python-format
+msgid "Removing file %s\n"
+msgstr "正在删除文件 %s\n"
+
+#, python-format
+msgid "Removing directory %s\n"
+msgstr "正在删除目录 %s\n"
+
+msgid "abort if an error occurs"
+msgstr ""
+
+msgid "purge ignored files too"
+msgstr ""
+
+msgid "print the file names instead of deleting them"
+msgstr ""
+
+msgid "end filenames with NUL, for use with xargs (implies -p)"
+msgstr ""
+
+msgid "hg purge [OPTION]... [DIR]..."
+msgstr ""
+
+msgid ""
+"move sets of revisions to a different ancestor\n"
+"\n"
+"This extension lets you rebase changesets in an existing Mercurial "
+"repository.\n"
+"\n"
+"For more information:\n"
+"http://www.selenic.com/mercurial/wiki/index.cgi/RebaseProject\n"
+msgstr ""
+
+msgid "return the correct ancestor"
+msgstr ""
+
+msgid "first revision, do not change ancestor\n"
+msgstr ""
+
+msgid ""
+"move changeset (and descendants) to a different branch\n"
+"\n"
+"    Rebase uses repeated merging to graft changesets from one part of "
+"history\n"
+"    onto another. This can be useful for linearizing local changes relative "
+"to\n"
+"    a master development tree.\n"
+"\n"
+"    If a rebase is interrupted to manually resolve a merge, it can be "
+"continued\n"
+"    with --continue or aborted with --abort.\n"
+"    "
+msgstr ""
+
+msgid "cannot use both keepbranches and extrafn"
+msgstr ""
+
+msgid "cannot use both abort and continue"
+msgstr ""
+
+msgid "cannot use collapse with continue or abort"
+msgstr ""
+
+msgid "abort and continue do not allow specifying revisions"
+msgstr ""
+
+msgid "cannot specify both a revision and a base"
+msgstr ""
+
+msgid "nothing to rebase\n"
+msgstr ""
+
+msgid "rebase merging completed\n"
+msgstr ""
+
+msgid "warning: new changesets detected on source branch, not stripping\n"
+msgstr ""
+
+msgid "rebase completed\n"
+msgstr ""
+
+#, python-format
+msgid "%d revisions have been skipped\n"
+msgstr ""
+
+msgid ""
+"Skip commit if collapsing has been required and rev is not the last\n"
+"    revision, commit otherwise\n"
+"    "
+msgstr ""
+
+msgid " set parents\n"
+msgstr ""
+
+msgid "Rebase a single revision"
+msgstr ""
+
+#, python-format
+msgid "rebasing %d:%s\n"
+msgstr ""
+
+#, python-format
+msgid " future parents are %d and %d\n"
+msgstr ""
+
+#, python-format
+msgid " update to %d:%s\n"
+msgstr ""
+
+msgid " already in target\n"
+msgstr ""
+
+#, python-format
+msgid " merge against %d:%s\n"
+msgstr ""
+
+msgid "fix unresolved conflicts with hg resolve then run hg rebase --continue"
+msgstr ""
+
+msgid "resuming interrupted rebase\n"
+msgstr ""
+
+#, python-format
+msgid "no changes, revision %d skipped\n"
+msgstr ""
+
+#, python-format
+msgid "next revision set to %s\n"
+msgstr ""
+
+msgid "Return the new parent relationship of the revision that will be rebased"
+msgstr ""
+
+#, python-format
+msgid "cannot use revision %d as base, result would have 3 parents"
+msgstr ""
+
+msgid "Update rebased mq patches - finalize and then import them"
+msgstr ""
+
+#, python-format
+msgid "revision %d is an mq patch (%s), finalize it.\n"
+msgstr ""
+
+#, python-format
+msgid "import mq patch %d (%s)\n"
+msgstr ""
+
+msgid "Store the current status to allow recovery"
+msgstr ""
+
+msgid "rebase status stored\n"
+msgstr ""
+
+msgid "Remove the status files"
+msgstr ""
+
+msgid "Restore a previously stored status"
+msgstr ""
+
+msgid "rebase status resumed\n"
+msgstr ""
+
+msgid "no rebase in progress"
+msgstr ""
+
+msgid "Restore the repository to its original state"
+msgstr ""
+
+msgid "warning: new changesets detected on target branch, not stripping\n"
+msgstr ""
+
+msgid "rebase aborted\n"
+msgstr ""
+
+msgid "Define which revisions are going to be rebased and where"
+msgstr ""
+
+msgid "cannot rebase onto an applied mq patch"
+msgstr ""
+
+msgid "cannot rebase an ancestor"
+msgstr ""
+
+msgid "cannot rebase a descendant"
+msgstr ""
+
+msgid "already working on current\n"
+msgstr ""
+
+msgid "already working on the current branch\n"
+msgstr ""
+
+#, python-format
+msgid "rebase onto %d starting from %d\n"
+msgstr ""
+
+msgid "unable to collapse, there is more than one external parent"
+msgstr ""
+
+msgid "Call rebase after pull if the latter has been invoked with --rebase"
+msgstr ""
+
+msgid "--update and --rebase are not compatible, ignoring the update flag\n"
+msgstr ""
+
+msgid "Replace pull with a decorator to provide --rebase option"
+msgstr ""
+
+msgid "rebase working directory to branch head"
+msgstr ""
+
+msgid "keep original revisions"
+msgstr ""
+
+msgid "keep original branches"
+msgstr ""
+
+msgid "rebase from a given revision"
+msgstr ""
+
+msgid "rebase from the base of a given revision"
+msgstr ""
+
+msgid "rebase onto a given revision"
+msgstr ""
+
+msgid "collapse the rebased revisions"
+msgstr ""
+
+msgid "continue an interrupted rebase"
+msgstr ""
+
+msgid "abort an interrupted rebase"
+msgstr ""
+
+msgid ""
+"hg rebase [-s rev | -b rev] [-d rev] [--collapse] | [-c] | [-a] | [--keep]"
+msgstr ""
+
+msgid "interactive change selection during commit or qrefresh"
+msgstr ""
+
+msgid ""
+"like patch.iterhunks, but yield different events\n"
+"\n"
+"    - ('file',    [header_lines + fromfile + tofile])\n"
+"    - ('context', [context_lines])\n"
+"    - ('hunk',    [hunk_lines])\n"
+"    - ('range',   (-start,len, +start,len, diffp))\n"
+"    "
+msgstr ""
+
+msgid "scan lr while predicate holds"
+msgstr ""
+
+msgid ""
+"patch header\n"
+"\n"
+"    XXX shoudn't we move this to mercurial/patch.py ?\n"
+"    "
+msgstr ""
+
+msgid "this modifies a binary file (all or nothing)\n"
+msgstr ""
+
+msgid "this is a binary file\n"
+msgstr ""
+
+#, python-format
+msgid "%d hunks, %d lines changed\n"
+msgstr ""
+
+msgid "hunk -> (n+,n-)"
+msgstr ""
+
+msgid ""
+"patch hunk\n"
+"\n"
+"    XXX shouldn't we merge this with patch.hunk ?\n"
+"    "
+msgstr ""
+
+msgid "patch -> [] of hunks "
+msgstr ""
+
+msgid "patch parsing state machine"
+msgstr ""
+
+msgid "Interactively filter patch chunks into applied-only chunks"
+msgstr ""
+
+msgid ""
+"fetch next portion from chunks until a 'header' is seen\n"
+"        NB: header == new-file mark\n"
+"        "
+msgstr ""
+
+msgid ""
+"prompt query, and process base inputs\n"
+"\n"
+"        - y/n for the rest of file\n"
+"        - y/n for the rest\n"
+"        - ? (help)\n"
+"        - q (quit)\n"
+"\n"
+"        else, input is returned to the caller.\n"
+"        "
+msgstr ""
+
+msgid "[Ynsfdaq?]"
+msgstr ""
+
+msgid "y"
+msgstr ""
+
+msgid "?"
+msgstr ""
+
+msgid "y - record this change"
+msgstr ""
+
+msgid "s"
+msgstr ""
+
+msgid "f"
+msgstr ""
+
+msgid "d"
+msgstr ""
+
+msgid "a"
+msgstr ""
+
+msgid "q"
+msgstr ""
+
+msgid "user quit"
+msgstr "用户退出"
+
+#, python-format
+msgid "examine changes to %s?"
+msgstr ""
+
+msgid " and "
+msgstr ""
+
+#, python-format
+msgid "record this change to %r?"
+msgstr ""
+
+msgid ""
+"interactively select changes to commit\n"
+"\n"
+"    If a list of files is omitted, all changes reported by \"hg status\"\n"
+"    will be candidates for recording.\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"\n"
+"    You will be prompted for whether to record changes to each\n"
+"    modified file, and for files with multiple changes, for each\n"
+"    change to use.  For each query, the following responses are\n"
+"    possible:\n"
+"\n"
+"    y - record this change\n"
+"    n - skip this change\n"
+"\n"
+"    s - skip remaining changes to this file\n"
+"    f - record remaining changes to this file\n"
+"\n"
+"    d - done, skip remaining changes and files\n"
+"    a - record all changes to all remaining files\n"
+"    q - quit, recording no changes\n"
+"\n"
+"    ? - display help"
+msgstr ""
+
+msgid ""
+"interactively record a new patch\n"
+"\n"
+"    see 'hg help qnew' & 'hg help record' for more information and usage\n"
+"    "
+msgstr ""
+
+msgid "'mq' extension not loaded"
+msgstr ""
+
+msgid "running non-interactively, use commit instead"
+msgstr ""
+
+msgid ""
+"This is generic record driver.\n"
+"\n"
+"        It's job is to interactively filter local changes, and accordingly\n"
+"        prepare working dir into a state, where the job can be delegated to\n"
+"        non-interactive commit command such as 'commit' or 'qrefresh'.\n"
+"\n"
+"        After the actual job is done by non-interactive command, working dir\n"
+"        state is restored to original.\n"
+"\n"
+"        In the end we'll record intresting changes, and everything else will "
+"be\n"
+"        left in place, so the user can continue his work.\n"
+"        "
+msgstr ""
+
+msgid "no changes to record\n"
+msgstr ""
+
+#, python-format
+msgid "backup %r as %r\n"
+msgstr ""
+
+msgid "applying patch\n"
+msgstr ""
+
+msgid "patch failed to apply"
+msgstr ""
+
+#, python-format
+msgid "restoring %r to %r\n"
+msgstr ""
+
+msgid "hg record [OPTION]... [FILE]..."
+msgstr ""
+
+msgid "hg qrecord [OPTION]... PATCH [FILE]..."
+msgstr ""
+
+msgid ""
+"patch transplanting tool\n"
+"\n"
+"This extension allows you to transplant patches from another branch.\n"
+"\n"
+"Transplanted patches are recorded in .hg/transplant/transplants, as a map\n"
+"from a changeset hash to its hash in the source repository.\n"
+msgstr ""
+
+msgid ""
+"returns True if a node is already an ancestor of parent\n"
+"        or has already been transplanted"
+msgstr ""
+
+msgid "apply the revisions in revmap one by one in revision order"
+msgstr ""
+
+#, python-format
+msgid "skipping already applied revision %s\n"
+msgstr ""
+
+#, python-format
+msgid "skipping merge changeset %s:%s\n"
+msgstr ""
+
+#, python-format
+msgid "%s merged at %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s transplanted to %s\n"
+msgstr ""
+
+msgid "arbitrarily rewrite changeset before applying it"
+msgstr ""
+
+#, python-format
+msgid "filtering %s\n"
+msgstr ""
+
+msgid "filter failed"
+msgstr ""
+
+msgid "apply the patch in patchfile to the repository as a transplant"
+msgstr ""
+
+msgid "can only omit patchfile if merging"
+msgstr ""
+
+#, python-format
+msgid "%s: empty changeset"
+msgstr ""
+
+msgid "Fix up the merge and run hg transplant --continue"
+msgstr ""
+
+msgid "recover last transaction and apply remaining changesets"
+msgstr ""
+
+#, python-format
+msgid "%s transplanted as %s\n"
+msgstr ""
+
+msgid "commit working directory using journal metadata"
+msgstr ""
+
+msgid "transplant log file is corrupt"
+msgstr ""
+
+#, python-format
+msgid "working dir not at transplant parent %s"
+msgstr ""
+
+msgid "commit failed"
+msgstr ""
+
+msgid "journal changelog metadata for later recover"
+msgstr ""
+
+msgid "remove changelog journal"
+msgstr ""
+
+msgid "interactively transplant changesets"
+msgstr ""
+
+msgid "apply changeset? [ynmpcq?]:"
+msgstr ""
+
+msgid ""
+"transplant changesets from another branch\n"
+"\n"
+"    Selected changesets will be applied on top of the current working\n"
+"    directory with the log of the original changeset. If --log is\n"
+"    specified, log messages will have a comment appended of the form:\n"
+"\n"
+"    (transplanted from CHANGESETHASH)\n"
+"\n"
+"    You can rewrite the changelog message with the --filter option.\n"
+"    Its argument will be invoked with the current changelog message\n"
+"    as $1 and the patch as $2.\n"
+"\n"
+"    If --source is specified, selects changesets from the named\n"
+"    repository. If --branch is specified, selects changesets from the\n"
+"    branch holding the named revision, up to that revision. If --all\n"
+"    is specified, all changesets on the branch will be transplanted,\n"
+"    otherwise you will be prompted to select the changesets you want.\n"
+"\n"
+"    hg transplant --branch REVISION --all will rebase the selected branch\n"
+"    (up to the named revision) onto your current working directory.\n"
+"\n"
+"    You can optionally mark selected transplanted changesets as\n"
+"    merge changesets. You will not be prompted to transplant any\n"
+"    ancestors of a merged transplant, and you can merge descendants\n"
+"    of them normally instead of transplanting them.\n"
+"\n"
+"    If no merges or revisions are provided, hg transplant will start\n"
+"    an interactive changeset browser.\n"
+"\n"
+"    If a changeset application fails, you can fix the merge by hand and\n"
+"    then resume where you left off by calling hg transplant --continue.\n"
+"    "
+msgstr ""
+
+msgid "--continue is incompatible with branch, all or merge"
+msgstr ""
+
+msgid "no source URL, branch tag or revision list provided"
+msgstr ""
+
+msgid "--all requires a branch revision"
+msgstr ""
+
+msgid "--all is incompatible with a revision list"
+msgstr ""
+
+msgid "no revision checked out"
+msgstr ""
+
+msgid "outstanding uncommitted merges"
+msgstr ""
+
+msgid "outstanding local changes"
+msgstr ""
+
+msgid "pull patches from REPOSITORY"
+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 FILTER"
+msgstr ""
+
+msgid ""
+"hg transplant [-s REPOSITORY] [-b BRANCH [-a]] [-p REV] [-m REV] [REV]..."
+msgstr ""
+
+msgid ""
+"allow to use MBCS path with problematic encoding.\n"
+"\n"
+"Some MBCS encodings are not good for some path operations\n"
+"(i.e. splitting path, case conversion, etc.) with its encoded bytes.\n"
+"We call such a encoding (i.e. shift_jis and big5) as \"problematic\n"
+"encoding\".  This extension can be used to fix the issue with those\n"
+"encodings by wrapping some functions to convert to unicode string\n"
+"before path operation.\n"
+"\n"
+"This extension is usefull for:\n"
+" * Japanese Windows users using shift_jis encoding.\n"
+" * Chinese Windows users using big5 encoding.\n"
+" * All users who use a repository with one of problematic encodings\n"
+"   on case-insensitive file system.\n"
+"\n"
+"This extension is not needed for:\n"
+" * Any user who use only ascii chars in path.\n"
+" * Any user who do not use any of problematic encodings.\n"
+"\n"
+"Note that there are some limitations on using this extension:\n"
+" * You should use single encoding in one repository.\n"
+" * You should set same encoding for the repository by locale or HGENCODING.\n"
+"\n"
+"To use this extension, enable the extension in .hg/hgrc or ~/.hgrc:\n"
+"\n"
+"  [extensions]\n"
+"  hgext.win32mbcs =\n"
+"\n"
+"Path encoding conversion are done between unicode and util._encoding\n"
+"which is decided by mercurial from current locale setting or HGENCODING.\n"
+"\n"
+msgstr ""
+
+#, python-format
+msgid "[win32mbcs] filename conversion fail with %s encoding\n"
+msgstr ""
+
+msgid "[win32mbcs] cannot activate on this platform.\n"
+msgstr ""
+
+#, python-format
+msgid "[win32mbcs] activated with encoding: %s\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"WARNING: %s already has %s line endings\n"
+"and does not need EOL conversion by the win32text plugin.\n"
+"Before your next commit, please reconsider your encode/decode settings in \n"
+"Mercurial.ini or %s.\n"
+msgstr ""
+
+#, python-format
+msgid "Attempt to commit or push text file(s) using %s line endings\n"
+msgstr ""
+
+#, python-format
+msgid "in %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"\n"
+"To prevent this mistake in your local repository,\n"
+"add to Mercurial.ini or .hg/hgrc:\n"
+"\n"
+"[hooks]\n"
+"pretxncommit.%s = python:hgext.win32text.forbid%s\n"
+"\n"
+"and also consider adding:\n"
+"\n"
+"[extensions]\n"
+"hgext.win32text =\n"
+"[encode]\n"
+"** = %sencode:\n"
+"[decode]\n"
+"** = %sdecode:\n"
+msgstr ""
+
+msgid ""
+"zeroconf support for mercurial repositories\n"
+"\n"
+"Zeroconf enabled repositories will be announced in a network without the "
+"need\n"
+"to configure a server or a service. They can be discovered without knowing\n"
+"their actual IP address.\n"
+"\n"
+"To use the zeroconf extension add the following entry to your hgrc file:\n"
+"\n"
+"[extensions]\n"
+"hgext.zeroconf =\n"
+"\n"
+"To allow other people to discover your repository using run \"hg serve\" in "
+"your\n"
+"repository.\n"
+"\n"
+" $ cd test\n"
+" $ hg serve\n"
+"\n"
+"You can discover zeroconf enabled repositories by running \"hg paths\".\n"
+"\n"
+" $ hg paths\n"
+" zc-test = http://example.com:8000/test\n"
+msgstr ""
+
+msgid "archive prefix contains illegal components"
+msgstr ""
+
+msgid "cannot give prefix when archiving to files"
+msgstr ""
+
+#, python-format
+msgid "unknown archive type '%s'"
+msgstr ""
+
+msgid "invalid changegroup"
+msgstr ""
+
+msgid "unknown parent"
+msgstr ""
+
+#, python-format
+msgid "integrity check failed on %s:%d"
+msgstr ""
+
+#, python-format
+msgid "%s: not a Mercurial bundle file"
+msgstr ""
+
+#, python-format
+msgid "%s: unknown bundle version"
+msgstr ""
+
+#, python-format
+msgid "%s: unknown bundle compression type"
+msgstr ""
+
+msgid "cannot create new bundle repository"
+msgstr ""
+
+#, python-format
+msgid "premature EOF reading chunk (got %d bytes, expected %d)"
+msgstr ""
+
+#, python-format
+msgid "username %s contains a newline"
+msgstr ""
+
+msgid "options --message and --logfile are mutually exclusive"
+msgstr ""
+
+#, python-format
+msgid "can't read commit message '%s': %s"
+msgstr ""
+
+msgid "limit must be a positive integer"
+msgstr ""
+
+msgid "limit must be positive"
+msgstr ""
+
+msgid "too many revisions specified"
+msgstr ""
+
+#, python-format
+msgid "invalid format spec '%%%s' in output file name"
+msgstr ""
+
+#, python-format
+msgid "adding %s\n"
+msgstr ""
+
+#, python-format
+msgid "removing %s\n"
+msgstr "正在删除 %s\n"
+
+#, python-format
+msgid "recording removal of %s as rename to %s (%d%% similar)\n"
+msgstr ""
+
+#, python-format
+msgid "%s: not copying - file is not managed\n"
+msgstr ""
+
+#, python-format
+msgid "%s: not copying - file has been marked for remove\n"
+msgstr ""
+
+#, python-format
+msgid "%s: not overwriting - %s collides with %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s: not overwriting - file exists\n"
+msgstr ""
+
+#, python-format
+msgid "%s: deleted in working copy\n"
+msgstr ""
+
+#, python-format
+msgid "%s: cannot copy - %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s %s to %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s has not been committed yet, so no copy data will be stored for %s.\n"
+msgstr ""
+
+msgid "no source or destination specified"
+msgstr ""
+
+msgid "no destination specified"
+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 ""
+
+msgid "(consider using --after)\n"
+msgstr "(考虑使用 --after)\n"
+
+#, python-format
+msgid "changeset:   %d:%s\n"
+msgstr "修改集:      %d:%s\n"
+
+#, python-format
+msgid "branch:      %s\n"
+msgstr "分支:        %s\n"
+
+#, python-format
+msgid "tag:         %s\n"
+msgstr "标签:        %s\n"
+
+#, python-format
+msgid "parent:      %d:%s\n"
+msgstr "父亲:        %d:%s\n"
+
+#, python-format
+msgid "manifest:    %d:%s\n"
+msgstr "清单:        %d:%s\n"
+
+#, python-format
+msgid "user:        %s\n"
+msgstr "用户:        %s\n"
+
+#, python-format
+msgid "date:        %s\n"
+msgstr "日期:        %s\n"
+
+msgid "files+:"
+msgstr "文件+:"
+
+msgid "files-:"
+msgstr "文件-:"
+
+msgid "files:"
+msgstr "文件:"
+
+#, python-format
+msgid "files:       %s\n"
+msgstr "文件:        %s\n"
+
+#, python-format
+msgid "copies:      %s\n"
+msgstr "复制:        %s\n"
+
+#, python-format
+msgid "extra:       %s=%s\n"
+msgstr "额外:        %s=%s\n"
+
+msgid "description:\n"
+msgstr "描述:\n"
+
+#, python-format
+msgid "summary:     %s\n"
+msgstr "摘要:        %s\n"
+
+#, python-format
+msgid "%s: no key named '%s'"
+msgstr ""
+
+#, python-format
+msgid "%s: %s"
+msgstr ""
+
+#, python-format
+msgid "Found revision %s from %s\n"
+msgstr ""
+
+msgid "revision matching date not found"
+msgstr ""
+
+#, python-format
+msgid "cannot follow nonexistent file: \"%s\""
+msgstr ""
+
+#, python-format
+msgid "%s:%s copy source revision cannot be found!\n"
+msgstr ""
+
+msgid "can only follow copies/renames for explicit file names"
+msgstr ""
+
+#, python-format
+msgid "file %s not found!"
+msgstr ""
+
+#, python-format
+msgid "no match under directory %s!"
+msgstr ""
+
+#, python-format
+msgid "can't commit %s: unsupported file type!"
+msgstr ""
+
+#, python-format
+msgid "file %s not tracked!"
+msgstr ""
+
+msgid ""
+"add the specified files on the next commit\n"
+"\n"
+"    Schedule files to be version controlled and added to the repository.\n"
+"\n"
+"    The files will be added to the repository at the next commit. To\n"
+"    undo an add before that, see hg revert.\n"
+"\n"
+"    If no names are given, add all files to the repository.\n"
+"    "
+msgstr ""
+"增加指定文件用于下次提交\n"
+"\n"
+"    调度文件受版本控制,增加到版本库。\n"
+"\n"
+"    这些文件将于下次提交时增加到版本库。需要在提交前撤销增加,\n"
+"    参见 'hg revert'。\n"
+"\n"
+"    如果没有给出文件名称,就增加所有文件到版本库。\n"
+"    "
+
+msgid ""
+"add all new files, delete all missing files\n"
+"\n"
+"    Add all new files and remove all missing files from the repository.\n"
+"\n"
+"    New files are ignored if they match any of the patterns in .hgignore. As\n"
+"    with add, these changes take effect at the next commit.\n"
+"\n"
+"    Use the -s option to detect renamed files. With a parameter > 0,\n"
+"    this compares every removed file with every added file and records\n"
+"    those similar enough as renames. This option takes a percentage\n"
+"    between 0 (disabled) and 100 (files must be identical) as its\n"
+"    parameter. Detecting renamed files this way can be expensive.\n"
+"    "
+msgstr ""
+
+msgid "similarity must be a number"
+msgstr ""
+
+msgid "similarity must be between 0 and 100"
+msgstr ""
+
+msgid ""
+"show changeset information per file line\n"
+"\n"
+"    List changes in files, showing the revision id responsible for each line\n"
+"\n"
+"    This command is useful to discover who did a change or when a change "
+"took\n"
+"    place.\n"
+"\n"
+"    Without the -a option, annotate will avoid processing files it\n"
+"    detects as binary. With -a, annotate will generate an annotation\n"
+"    anyway, probably with undesirable results.\n"
+"    "
+msgstr ""
+"显示指定文件每行的修改集信息\n"
+"\n"
+"    列出文件中的修改,为每行显示版本标识\n"
+"\n"
+"    此命令用于查找谁做出的修改,或者什么时候发生的修改\n"
+"\n"
+"    当没有选项 '-a' 时,annotate 会避免处理检测为二进制的文件\n"
+"    当使用选项 '-a' 时,annotate 会直接产生追溯,可能会有不合需要的结果\n"
+"    "
+
+msgid "at least one file name or pattern required"
+msgstr ""
+
+msgid "at least one of -n/-c is required for -l"
+msgstr ""
+
+#, python-format
+msgid "%s: binary file\n"
+msgstr ""
+
+msgid ""
+"create unversioned archive of a repository revision\n"
+"\n"
+"    By default, the revision used is the parent of the working\n"
+"    directory; use \"-r\" to specify a different revision.\n"
+"\n"
+"    To specify the type of archive to create, use \"-t\". Valid\n"
+"    types are:\n"
+"\n"
+"    \"files\" (default): a directory full of files\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\n"
+"\n"
+"    The exact name of the destination archive or directory is given\n"
+"    using a format string; see \"hg help export\" for details.\n"
+"\n"
+"    Each member added to an archive file has a directory prefix\n"
+"    prepended. Use \"-p\" to specify a format string for the prefix.\n"
+"    The default is the basename of the archive, with suffixes removed.\n"
+"    "
+msgstr ""
+
+msgid "no working directory: please specify a revision"
+msgstr ""
+
+msgid "repository root cannot be destination"
+msgstr ""
+
+msgid "cannot archive plain files to stdout"
+msgstr ""
+
+msgid ""
+"reverse effect of earlier changeset\n"
+"\n"
+"    Commit the backed out changes as a new changeset. The new\n"
+"    changeset is a child of the backed out changeset.\n"
+"\n"
+"    If you back out 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 (current one by default).\n"
+"\n"
+"    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\n"
+"    hand. The result of this merge is not committed, as with a normal\n"
+"    merge.\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"    "
+msgstr ""
+
+msgid "please specify just one revision"
+msgstr ""
+
+msgid "please specify a revision to backout"
+msgstr ""
+
+msgid "cannot back out change on a different branch"
+msgstr ""
+
+msgid "cannot back out a change with no parents"
+msgstr ""
+
+msgid "cannot back out a merge changeset without --parent"
+msgstr ""
+
+#, python-format
+msgid "%s is not a parent of %s"
+msgstr ""
+
+msgid "cannot use --parent on non-merge changeset"
+msgstr ""
+
+#, python-format
+msgid "Backed out changeset %s"
+msgstr ""
+
+#, python-format
+msgid "changeset %s backs out changeset %s\n"
+msgstr ""
+
+#, python-format
+msgid "merging with changeset %s\n"
+msgstr ""
+
+msgid "the backout changeset is a new head - do not forget to merge\n"
+msgstr ""
+
+msgid "(use \"backout --merge\" if you want to auto-merge)\n"
+msgstr ""
+
+msgid ""
+"subdivision search of changesets\n"
+"\n"
+"    This command helps to find changesets which introduce problems.\n"
+"    To use, mark the earliest changeset you know exhibits the problem\n"
+"    as bad, then mark the latest changeset which is free from the\n"
+"    problem as good. Bisect will update your working directory to a\n"
+"    revision for testing (unless the --noupdate option is specified).\n"
+"    Once you have performed tests, mark the working directory as bad\n"
+"    or good and bisect will either update to another candidate changeset\n"
+"    or announce that it has found the bad revision.\n"
+"\n"
+"    As a shortcut, you can also use the revision argument to mark a\n"
+"    revision as good or bad without checking it out first.\n"
+"\n"
+"    If you supply a command it will be used for automatic bisection. Its "
+"exit\n"
+"    status will be used as flag to mark revision as bad or good. In case "
+"exit\n"
+"    status is 0 the revision is marked as good, 125 - skipped, 127 (command "
+"not\n"
+"    found) - bisection will be aborted; any other status bigger than 0 will\n"
+"    mark revision as bad.\n"
+"    "
+msgstr ""
+
+#, python-format
+msgid "The first %s revision is:\n"
+msgstr ""
+
+#, python-format
+msgid "Due to skipped revisions, the first %s revision could be any of:\n"
+msgstr ""
+
+msgid "cannot bisect (no known good revisions)"
+msgstr ""
+
+msgid "cannot bisect (no known bad revisions)"
+msgstr ""
+
+msgid "(use of 'hg bisect <cmd>' is deprecated)\n"
+msgstr ""
+
+msgid "incompatible arguments"
+msgstr ""
+
+#, python-format
+msgid "failed to execute %s"
+msgstr ""
+
+#, python-format
+msgid "%s killed"
+msgstr ""
+
+#, python-format
+msgid "Changeset %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid "Testing changeset %s:%s (%s changesets remaining, ~%s tests)\n"
+msgstr ""
+
+msgid ""
+"set or show the current branch name\n"
+"\n"
+"    With no argument, show the current branch name. With one argument,\n"
+"    set the working directory branch name (the branch does not exist in\n"
+"    the repository until the next commit).\n"
+"\n"
+"    Unless --force is specified, branch will not let you set a\n"
+"    branch name that shadows an existing branch.\n"
+"\n"
+"    Use --clean to reset the working directory branch to that of the\n"
+"    parent of the working directory, negating a previous branch change.\n"
+"\n"
+"    Use the command 'hg update' to switch to an existing branch.\n"
+"    "
+msgstr ""
+
+#, python-format
+msgid "reset working directory to branch %s\n"
+msgstr ""
+
+msgid "a branch of the same name already exists (use --force to override)"
+msgstr ""
+
+#, python-format
+msgid "marked working directory as branch %s\n"
+msgstr ""
+
+msgid ""
+"list repository named branches\n"
+"\n"
+"    List the repository's named branches, indicating which ones are\n"
+"    inactive. If active is specified, only show active branches.\n"
+"\n"
+"    A branch is considered active if it contains repository heads.\n"
+"\n"
+"    Use the command 'hg update' to switch to an existing branch.\n"
+"    "
+msgstr ""
+
+msgid ""
+"create a changegroup file\n"
+"\n"
+"    Generate a compressed changegroup file collecting changesets not\n"
+"    known to be in another repository.\n"
+"\n"
+"    If no destination repository is specified the destination is\n"
+"    assumed to have all the nodes specified by one or more --base\n"
+"    parameters. To create a bundle containing all changesets, use\n"
+"    --all (or --base null). To change the compression method applied,\n"
+"    use the -t option (by default, bundles are compressed using bz2).\n"
+"\n"
+"    The bundle file can then be transferred using conventional means and\n"
+"    applied to another repository with the unbundle or pull command.\n"
+"    This is useful when direct push and pull are not available or when\n"
+"    exporting an entire repository is undesirable.\n"
+"\n"
+"    Applying bundles preserves all changeset contents including\n"
+"    permissions, copy/rename information, and revision history.\n"
+"    "
+msgstr ""
+
+msgid "--base is incompatible with specifiying a destination"
+msgstr ""
+
+msgid "unknown bundle type specified with --type"
+msgstr ""
+
+msgid ""
+"output the current or given revision of files\n"
+"\n"
+"    Print the specified files as they were at the given revision.\n"
+"    If no revision is given, the parent of the working directory is used,\n"
+"    or tip if no revision is checked out.\n"
+"\n"
+"    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:\n"
+"\n"
+"    %s   basename of file being printed\n"
+"    %d   dirname of file being printed, or '.' if in repo root\n"
+"    %p   root-relative path name of file being printed\n"
+"    "
+msgstr ""
+
+msgid ""
+"make a copy of an existing repository\n"
+"\n"
+"    Create a copy of an existing repository in a new directory.\n"
+"\n"
+"    If no destination directory name is specified, it defaults to the\n"
+"    basename of the source.\n"
+"\n"
+"    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.\n"
+"\n"
+"    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 checked out files). 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.\n"
+"\n"
+"    In some cases, you can clone repositories and checked out files\n"
+"    using full hardlinks with\n"
+"\n"
+"      $ cp -al REPO REPOCLONE\n"
+"\n"
+"    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.\n"
+"\n"
+"    If you use the -r option to clone up to a specific revision, no\n"
+"    subsequent revisions will be present in the cloned repository.\n"
+"    This option implies --pull, even on local repositories.\n"
+"\n"
+"    If the -U option is used, the new clone will contain only a repository\n"
+"    (.hg) and no working copy (the working copy parent is the null "
+"revision).\n"
+"\n"
+"    See 'hg help urls' for valid source format details.\n"
+"\n"
+"    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"
+"    Look at the help text for urls for important details about ssh:// URLs.\n"
+"    "
+msgstr ""
+"复制现有版本库\n"
+"\n"
+"    在新目录创建现有版本库的副本。\n"
+"\n"
+"    如果没有指定目标目录,默认使用源版本库的基本名称。\n"
+"\n"
+"    源版本库的位置增加到新版本库的文件 .hg/hgrc 中,作为未来更新时的默认\n"
+"    位置。\n"
+"\n"
+"    为了效率,在复制时,只要源版本库和目标版本库位于同一文件系统,就会使\n"
+"    用硬链接(注意这只适用于版本库中的数据,不适用于检出的文件)。某些文件\n"
+"    系统,例如 AFS,没有正确实现硬链接,还不报告错误。在这些情况下,请使\n"
+"    用选项 '--pull'来避免硬链接。\n"
+"\n"
+"    在某些情况下,你可以通过下述命令用硬链接复制且检出文件:\n"
+"\n"
+"      $ cp -al REPO REPOCLONE\n"
+"\n"
+"    这是最快速的复制方法,但是不见得总是安全。此操作不是原子的(请确认在你\n"
+"    操作期间版本库未修改),还要确认你的编辑器会破坏硬链接。还有,它与将元\n"
+"    数据放到目录 .hg 中的某些扩展不兼容,例如 mq。\n"
+"\n"
+"    如果你使用选项 '-r' 复制指定版本,那么后来的版本不会在新版本库中出现。\n"
+"    此选项暗示 '--pull',纵然是操作本地版本库。\n"
+"\n"
+"    如果你使用了选项 '-U',那么新仓库只包含版本库(.hg),没有工作副本。\n"
+"\n"
+"    参见 'hg help urls' 以了解有效源格式的详情。\n"
+"\n"
+"    也可以指定位置 'ssh://' 作为目标,但是不会创建文件 .hg/hgrc,并且工作\n"
+"    副本将会创建在远程。参见主题 'urls' 的帮助信息,以了解位置 'ssh://'\n"
+"    的重要详情。\n"
+"    "
+
+msgid ""
+"commit the specified files or all outstanding changes\n"
+"\n"
+"    Commit changes to the given files into the repository.\n"
+"\n"
+"    If a list of files is omitted, all changes reported by \"hg status\"\n"
+"    will be committed.\n"
+"\n"
+"    If you are committing the result of a merge, do not provide any\n"
+"    file names or -I/-X filters.\n"
+"\n"
+"    If no commit message is specified, the configured editor is started to\n"
+"    prompt you for a message.\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"    "
+msgstr ""
+"提交指定文件的修改或全部修改\n"
+"\n"
+"    将指定文件的修改提交到版本库。\n"
+"\n"
+"    如果省略了文件列表,那么 \"hg status\" 报告的所有修改都被提交。\n"
+"\n"
+"    如果你要提交合并结果,请不要提供任何文件名称或过滤器 '-I/-X'。\n"
+"\n"
+"    如果没有指定提交日志,将会启动配置的编辑器,让你输入信息。\n"
+"\n"
+"    参见 'hg help dates' 以获得 '-d/--date' 的有效格式列表。\n"
+"    "
+
+msgid "created new head\n"
+msgstr "已经创建新顶点\n"
+
+#, python-format
+msgid "committed changeset %d:%s\n"
+msgstr "提交修改集 %d:%s\n"
+
+msgid ""
+"mark files as copied for the next commit\n"
+"\n"
+"    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.\n"
+"\n"
+"    By default, this command copies the contents of files as they\n"
+"    stand in the working directory. If invoked with --after, the\n"
+"    operation is recorded, but no copying is performed.\n"
+"\n"
+"    This command takes effect with the next commit. To undo a copy\n"
+"    before that, see hg revert.\n"
+"    "
+msgstr ""
+
+msgid "find the ancestor revision of two revisions in a given index"
+msgstr ""
+
+msgid "There is no Mercurial repository here (.hg not found)"
+msgstr "此处没有水银版本库(没有找到 .hg)"
+
+msgid "either two or three arguments required"
+msgstr "需要两个或三个参数"
+
+msgid "returns the completion list associated with the given command"
+msgstr ""
+
+msgid "rebuild the dirstate as it would look like for the given revision"
+msgstr ""
+
+msgid "validate the correctness of the current dirstate"
+msgstr ""
+
+#, python-format
+msgid "%s in state %s, but not in manifest1\n"
+msgstr ""
+
+#, python-format
+msgid "%s in state %s, but also in manifest1\n"
+msgstr ""
+
+#, python-format
+msgid "%s in state %s, but not in either manifest\n"
+msgstr ""
+
+#, python-format
+msgid "%s in manifest1, but listed as state %s"
+msgstr ""
+
+msgid ".hg/dirstate inconsistent with current parent's manifest"
+msgstr ""
+
+msgid ""
+"show combined config settings from all hgrc files\n"
+"\n"
+"    With no args, print names and values of all config items.\n"
+"\n"
+"    With one arg of the form section.name, print just the value of\n"
+"    that config item.\n"
+"\n"
+"    With multiple args, print names and values of all config items\n"
+"    with matching section names."
+msgstr ""
+
+msgid "only one config item permitted"
+msgstr ""
+
+msgid ""
+"manually set the parents of the current working directory\n"
+"\n"
+"    This is useful for writing repository conversion tools, but should\n"
+"    be used with care.\n"
+"    "
+msgstr ""
+
+msgid "show the contents of the current dirstate"
+msgstr ""
+
+#, python-format
+msgid "copy: %s -> %s\n"
+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 ""
+
+msgid "dump the contents of an index file"
+msgstr ""
+
+msgid "dump an index DAG as a .dot file"
+msgstr ""
+
+msgid "test Mercurial installation"
+msgstr ""
+
+#, python-format
+msgid "Checking encoding (%s)...\n"
+msgstr ""
+
+msgid " (check that your locale is properly set)\n"
+msgstr ""
+
+msgid "Checking extensions...\n"
+msgstr ""
+
+msgid " One or more extensions could not be found"
+msgstr ""
+
+msgid " (check that you compiled the extensions)\n"
+msgstr ""
+
+msgid "Checking templates...\n"
+msgstr ""
+
+msgid " (templates seem to have been installed incorrectly)\n"
+msgstr ""
+
+msgid "Checking patch...\n"
+msgstr ""
+
+msgid " patch call failed:\n"
+msgstr ""
+
+msgid " unexpected patch output!\n"
+msgstr ""
+
+msgid " patch test failed!\n"
+msgstr ""
+
+msgid ""
+" (Current patch tool may be incompatible with patch, or misconfigured. Please "
+"check your .hgrc file)\n"
+msgstr ""
+
+msgid ""
+" Internal patcher failure, please report this error to http://www.selenic.com/"
+"mercurial/bts\n"
+msgstr ""
+
+msgid "Checking commit editor...\n"
+msgstr ""
+
+msgid " No commit editor set and can't find vi in PATH\n"
+msgstr ""
+
+msgid " (specify a commit editor in your .hgrc file)\n"
+msgstr ""
+
+#, python-format
+msgid " Can't find editor '%s' in PATH\n"
+msgstr ""
+
+msgid "Checking username...\n"
+msgstr ""
+
+msgid " (specify a username in your .hgrc file)\n"
+msgstr ""
+
+msgid "No problems detected\n"
+msgstr ""
+
+#, python-format
+msgid "%s problems detected, please check your install!\n"
+msgstr ""
+
+msgid "dump rename information"
+msgstr ""
+
+#, python-format
+msgid "%s renamed from %s:%s\n"
+msgstr ""
+
+#, python-format
+msgid "%s not renamed\n"
+msgstr ""
+
+msgid "show how files match on given patterns"
+msgstr ""
+
+msgid ""
+"diff repository (or selected files)\n"
+"\n"
+"    Show differences between revisions for the specified files.\n"
+"\n"
+"    Differences between files are shown using the unified diff format.\n"
+"\n"
+"    NOTE: diff may generate unexpected results for merges, as it will\n"
+"    default to comparing against the working directory's first parent\n"
+"    changeset if no revisions are specified.\n"
+"\n"
+"    When two revision arguments are given, then changes are shown\n"
+"    between those revisions. If only one revision is specified then\n"
+"    that revision is compared to the working directory, and, when no\n"
+"    revisions are specified, the working directory files are compared\n"
+"    to its parent.\n"
+"\n"
+"    Without the -a option, diff will avoid generating diffs of files\n"
+"    it detects as binary. With -a, diff will generate a diff anyway,\n"
+"    probably with undesirable results.\n"
+"\n"
+"    Use the --git option to generate diffs in the git extended diff\n"
+"    format. For more information, read hg help diffs.\n"
+"    "
+msgstr ""
+"在版本库中比较(指定的文件)\n"
+"\n"
+"    显示指定文件在版本间的差异。\n"
+"\n"
+"    文件间的差异使用同一差异格式显示。\n"
+"\n"
+"    注意: 对合并的比较可能会产生不期望的结果,因为没有指定版本时,默认\n"
+"    与工作目录的直接父亲比较。\n"
+"\n"
+"    当给出两个版本参数时,会显示在这些版本间的修改。如果只给出一个版本,\n"
+"    那么它将与工作目录比较。当没有指定版本时,将比较工作目录中的文件与\n"
+"    它的直接父亲。\n"
+"\n"
+"    当没有选项 '-a' 时,将会避免处理检测为二进制的文件。当使用选项 '-a'\n"
+"    时,可能会有不合需要的结果。\n"
+"\n"
+"    使用选项 '--git' 会使用 git 扩展差异格式。请阅读 'hg help diffs' 以\n"
+"    了解更多信息。\n"
+"    "
+
+msgid ""
+"dump the header and diffs for one or more changesets\n"
+"\n"
+"    Print the changeset header and diffs for one or more revisions.\n"
+"\n"
+"    The information shown in the changeset header is: author,\n"
+"    changeset hash, parent(s) and commit comment.\n"
+"\n"
+"    NOTE: export may generate unexpected diff output for merge changesets,\n"
+"    as it will compare the merge changeset against its first parent only.\n"
+"\n"
+"    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:\n"
+"\n"
+"    %%   literal \"%\" character\n"
+"    %H   changeset hash (40 bytes of hexadecimal)\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 bytes of hexadecimal)\n"
+"    %n   zero-padded sequence number, starting at 1\n"
+"    %r   zero-padded changeset revision number\n"
+"\n"
+"    Without the -a option, export will avoid generating diffs of files\n"
+"    it detects as binary. With -a, export will generate a diff anyway,\n"
+"    probably with undesirable results.\n"
+"\n"
+"    Use the --git option to generate diffs in the git extended diff\n"
+"    format. Read the diffs help topic for more information.\n"
+"\n"
+"    With the --switch-parent option, the diff will be against the second\n"
+"    parent. It can be useful to review a merge.\n"
+"    "
+msgstr ""
+"为一个或多个修改集输出标题和差异\n"
+"\n"
+"    为一个或多个版本输出标题和差异。\n"
+"\n"
+"    在修改集标题中显示的信息是: 作者,修改集哈希,父亲和提交日志。\n"
+"\n"
+"    注意: 对于合并修改集,导出可能产生不期望的差异输出,因为它只会将合并\n"
+"    修改集与其第一个父亲比较。\n"
+"\n"
+"    可以输出到文件,这时会使用指定的格式化字符串构造文件名称。格式化规则\n"
+"    如下:\n"
+"\n"
+"    %%   字符 \"%\"\n"
+"    %H   修改集哈希 (40 位十六进制数字)\n"
+"    %N   产生的补丁号\n"
+"    %R   修改集版本号\n"
+"    %b   待导出的版本库的基本名称\n"
+"    %h   短修改集哈希(12 位十六进制数字)\n"
+"    %n   从 1 开始补 0 的序列号\n"
+"    %r   补 0 的修改集版本号\n"
+"\n"
+"    当没有选项 '-a' 时,将会避免处理检测为二进制的文件。当使用选项 '-a'\n"
+"    时,可能会有不合需要的结果。\n"
+"\n"
+"    使用选项 '--git' 会使用 git 扩展差异格式。请阅读差异帮助主题以了解\n"
+"    更多信息。\n"
+"\n"
+"    使用选项 '--switch-parent',将会与第二个父亲比较。对于复审合并很有用。\n"
+"    "
+
+msgid "export requires at least one changeset"
+msgstr ""
+
+msgid "exporting patches:\n"
+msgstr ""
+
+msgid "exporting patch:\n"
+msgstr ""
+
+msgid ""
+"search for a pattern in specified files and revisions\n"
+"\n"
+"    Search revisions of files for a regular expression.\n"
+"\n"
+"    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\n"
+"    a match appears.\n"
+"\n"
+"    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.\n"
+"    "
+msgstr ""
+
+#, python-format
+msgid "grep: invalid match pattern: %s\n"
+msgstr ""
+
+msgid ""
+"show current repository heads or show branch heads\n"
+"\n"
+"    With no arguments, show all repository head changesets.\n"
+"\n"
+"    If branch or revisions names are given this will show the heads of\n"
+"    the specified branches or the branches those revisions are tagged\n"
+"    with.\n"
+"\n"
+"    Repository \"heads\" are changesets that don't have child\n"
+"    changesets. They are where development generally takes place and\n"
+"    are the usual targets for update and merge operations.\n"
+"\n"
+"    Branch heads are changesets that have a given branch tag, but have\n"
+"    no child changesets with that tag. They are usually where\n"
+"    development on the given branch takes place.\n"
+"    "
+msgstr ""
+
+#, python-format
+msgid "no changes on branch %s containing %s are reachable from %s\n"
+msgstr ""
+
+#, python-format
+msgid "no changes on branch %s are reachable from %s\n"
+msgstr ""
+
+msgid ""
+"show help for a given topic or a help overview\n"
+"\n"
+"    With no arguments, print a list of commands and short help.\n"
+"\n"
+"    Given a topic, extension, or command name, print help for that topic."
+msgstr ""
+
+msgid "global options:"
+msgstr "全局选项:"
+
+msgid "use \"hg help\" for the full list of commands"
+msgstr "使用 \"hg help\" 获得全部命令的列表"
+
+msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
+msgstr "使用 \"hg help\" 获得全部命令的列表,或 \"hg -v\" 获得详细信息"
+
+#, python-format
+msgid "use \"hg -v help%s\" to show aliases and global options"
+msgstr "使用 \"hg -v help%s\" 显示别名和全局选项"
+
+#, python-format
+msgid "use \"hg -v help %s\" to show global options"
+msgstr "使用 \"hg -v help %s\" 显示全局选项"
+
+msgid ""
+"list of commands:\n"
+"\n"
+msgstr ""
+"命令列表:\n"
+"\n"
+
+#, python-format
+msgid ""
+"\n"
+"aliases: %s\n"
+msgstr ""
+"\n"
+"别名: %s\n"
+
+msgid "(no help text available)"
+msgstr "(没有可用的帮助信息)"
+
+msgid "options:\n"
+msgstr "选项:\n"
+
+msgid "no commands defined\n"
+msgstr ""
+
+msgid ""
+"\n"
+"enabled extensions:\n"
+"\n"
+msgstr ""
+"\n"
+"启用的扩展:\n"
+"\n"
+
+#, python-format
+msgid " %s   %s\n"
+msgstr ""
+
+msgid "no help text available"
+msgstr "没有可用的帮助信息"
+
+#, python-format
+msgid "%s extension - %s\n"
+msgstr ""
+
+msgid "Mercurial Distributed SCM\n"
+msgstr "分布式软件配置管理工具 - 水银\n"
+
+msgid ""
+"basic commands:\n"
+"\n"
+msgstr ""
+"基本命令:\n"
+"\n"
+
+msgid ""
+"\n"
+"additional help topics:\n"
+"\n"
+msgstr ""
+"\n"
+"额外的帮助主题:\n"
+"\n"
+
+msgid ""
+"identify the working copy or specified revision\n"
+"\n"
+"    With no revision, print a summary of the current state of the repo.\n"
+"\n"
+"    With a path, do a lookup in another repository.\n"
+"\n"
+"    This summary identifies the repository state using one or two parent\n"
+"    hash identifiers, followed by a \"+\" if there are uncommitted changes\n"
+"    in the working directory, a list of tags for this revision and a branch\n"
+"    name for non-default branches.\n"
+"    "
+msgstr ""
+
+msgid ""
+"import an ordered set of patches\n"
+"\n"
+"    Import a list of patches and commit them individually.\n"
+"\n"
+"    If there are outstanding changes in the working directory, import\n"
+"    will abort unless given the -f flag.\n"
+"\n"
+"    You can import a patch straight from a mail message. Even patches\n"
+"    as attachments work (body part must be type text/plain or\n"
+"    text/x-patch to be used). 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.\n"
+"\n"
+"    If the imported patch was generated by hg export, user and description\n"
+"    from patch override values from message headers and body. Values\n"
+"    given on command line with -m and -u override these.\n"
+"\n"
+"    If --exact is specified, import will set the working directory\n"
+"    to the parent of each patch before applying it, and will abort\n"
+"    if the resulting changeset has a different ID than the one\n"
+"    recorded in the patch. This may happen due to character set\n"
+"    problems or other deficiencies in the text patch format.\n"
+"\n"
+"    With --similarity, hg will attempt to discover renames and copies\n"
+"    in the patch in the same way as 'addremove'.\n"
+"\n"
+"    To read a patch from standard input, use patch name \"-\".\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"    "
+msgstr ""
+
+msgid "applying patch from stdin\n"
+msgstr ""
+
+msgid "no diffs found"
+msgstr ""
+
+#, python-format
+msgid ""
+"message:\n"
+"%s\n"
+msgstr ""
+
+msgid "not a mercurial patch"
+msgstr ""
+
+msgid "patch is damaged or loses information"
+msgstr ""
+
+msgid ""
+"show new changesets found in source\n"
+"\n"
+"    Show new changesets found in the specified path/URL or the default\n"
+"    pull location. These are the changesets that would be pulled if a pull\n"
+"    was requested.\n"
+"\n"
+"    For remote repository, using --bundle avoids downloading the changesets\n"
+"    twice if the incoming is followed by a pull.\n"
+"\n"
+"    See pull for valid source format details.\n"
+"    "
+msgstr ""
+
+msgid ""
+"create a new repository in the given directory\n"
+"\n"
+"    Initialize a new repository in the given directory. If the given\n"
+"    directory does not exist, it is created.\n"
+"\n"
+"    If no directory is given, the current directory is used.\n"
+"\n"
+"    It is possible to specify an ssh:// URL as the destination.\n"
+"    See 'hg help urls' for more information.\n"
+"    "
+msgstr ""
+"在指定目录创建新版本库\n"
+"\n"
+"    在指定目录初始化新版本库。如果指定的目录不存在,那么会被创建。\n"
+"\n"
+"    如果没有指定目录,就使用当前目录。\n"
+"\n"
+"    可以指定位置 'ssh://' 作为目标。参见命令 'hg help urls' 的帮助信息,\n"
+"    以了解位置 'ssh://' 的重要详情。\n"
+"    "
+
+msgid ""
+"locate files matching specific patterns\n"
+"\n"
+"    Print all files under Mercurial control whose names match the\n"
+"    given patterns.\n"
+"\n"
+"    This command searches the entire repository by default. To search\n"
+"    just the current directory and its subdirectories, use\n"
+"    \"--include .\".\n"
+"\n"
+"    If no patterns are given to match, this command prints all file\n"
+"    names.\n"
+"\n"
+"    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\".\n"
+"    This will avoid the problem of \"xargs\" treating single filenames\n"
+"    that contain white space as multiple filenames.\n"
+"    "
+msgstr ""
+
+msgid ""
+"show revision history of entire repository or files\n"
+"\n"
+"    Print the revision history of the specified files or the entire\n"
+"    project.\n"
+"\n"
+"    File history is shown without following rename or copy history of\n"
+"    files. Use -f/--follow with a file name to follow history across\n"
+"    renames and copies. --follow without a file name will only show\n"
+"    ancestors or descendants of the starting revision. --follow-first\n"
+"    only follows the first parent of merge revisions.\n"
+"\n"
+"    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.\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"\n"
+"    By default this command outputs: changeset id and hash, tags,\n"
+"    non-trivial parents, user, date and time, and a summary for each\n"
+"    commit. When the -v/--verbose switch is used, the list of changed\n"
+"    files and full commit message is shown.\n"
+"\n"
+"    NOTE: log -p may generate unexpected diff output for merge\n"
+"    changesets, as it will only compare the merge changeset against\n"
+"    its first parent. Also, the files: list will only reflect files\n"
+"    that are different from BOTH parents.\n"
+"\n"
+"    "
+msgstr ""
+"显示全部版本库或指定文件的版本历史\n"
+"\n"
+"    显示全部版本库或指定文件的版本历史。\n"
+"\n"
+"    显示文件历史的时候不跟踪改名或复制。对文件名称使用 '-f/--follow'\n"
+"    会跟踪改名或复制的历史。当不给出文件名称时,使用 '--follow' 只显\n"
+"    示开始版本的直系祖先。使用 '--follow-first' 只显示合并版本的第一\n"
+"    个父亲。\n"
+"\n"
+"    如果没有指定版本范围,默认是 'tip:0'。当使用 '--follow' 时,使用\n"
+"    工作目录的父亲作为开始版本。\n"
+"\n"
+"    参见 'hg help dates' 以获得 '-d/--date' 的有效格式列表。\n"
+"\n"
+"    此命令缺省输出: 修改集标识和哈希,标签,父亲,提交者,日期和时间,\n"
+"    以及每次提交的概要信息。当使用选项 '-v/--verbose' 时,会显示文件\n"
+"    变更列表和完整的提交信息。\n"
+"\n"
+"    注意: 对于合并修改集,'log -p' 可能产生不期望的差异输出,因为它只\n"
+"    会将合并修改集与其第一个父亲比较。而且,只显示对所有父亲都不同的\n"
+"    文件列表。\n"
+"\n"
+"    "
+
+msgid ""
+"looks up all renames for a file (up to endrev) the first\n"
+"        time the file is given. It indexes on the changerev and only\n"
+"        parses the manifest if linkrev != changerev.\n"
+"        Returns rename info for fn at changerev rev."
+msgstr ""
+
+msgid ""
+"output the current or given revision of the project manifest\n"
+"\n"
+"    Print a list of version controlled files for the given revision.\n"
+"    If no revision is given, the parent of the working directory is used,\n"
+"    or tip if no revision is checked out.\n"
+"\n"
+"    The manifest is the list of files being version controlled. If no "
+"revision\n"
+"    is given then the first parent of the working directory is used.\n"
+"\n"
+"    With -v flag, print file permissions, symlink and executable bits. With\n"
+"    --debug flag, print file revision hashes.\n"
+"    "
+msgstr ""
+
+msgid ""
+"merge working directory with another revision\n"
+"\n"
+"    Merge the contents of the current working directory and the\n"
+"    requested revision. Files that changed between either parent are\n"
+"    marked as changed for the next commit and a commit must be\n"
+"    performed before any further updates are allowed.\n"
+"\n"
+"    If no revision is specified, the working directory's parent is a\n"
+"    head revision, and the current branch contains exactly one other head,\n"
+"    the other head is merged with by default. Otherwise, an explicit\n"
+"    revision to merge with must be provided.\n"
+"    "
+msgstr ""
+"将工作目录与其它版本合并\n"
+"\n"
+"    将当前工作目录中的内容与指定版本合并。对任一父亲而言改变的文件都会对\n"
+"    下次提交标记为已修改,在提交之前不允许再执行更新。\n"
+"\n"
+"    如果没有指定版本,那么工作目录的父亲是一个合并顶点,另一个在当前分支\n"
+"    中,合并后的内容是新的顶点。否则,必须明确的指定要合并的版本。\n"
+"    "
+
+#, python-format
+msgid "branch '%s' has %d heads - please merge with an explicit rev"
+msgstr ""
+
+#, python-format
+msgid "branch '%s' has one head - please merge with an explicit rev"
+msgstr ""
+
+msgid "there is nothing to merge"
+msgstr ""
+
+#, python-format
+msgid "%s - use \"hg update\" instead"
+msgstr ""
+
+msgid ""
+"working dir not at a head rev - use \"hg update\" or merge with an explicit "
+"rev"
+msgstr ""
+
+msgid ""
+"show changesets not found in destination\n"
+"\n"
+"    Show changesets not found in the specified destination repository or\n"
+"    the default push location. These are the changesets that would be pushed\n"
+"    if a push was requested.\n"
+"\n"
+"    See pull for valid destination format details.\n"
+"    "
+msgstr ""
+
+msgid ""
+"show the parents of the working dir or revision\n"
+"\n"
+"    Print the working directory's parent revisions. If a\n"
+"    revision is given via --rev, the parent of that revision\n"
+"    will be printed. If a file argument is given, revision in\n"
+"    which the file was last changed (before the working directory\n"
+"    revision or the argument to --rev if given) is printed.\n"
+"    "
+msgstr ""
+"显示工作目录或指定版本的父亲\n"
+"\n"
+"    显示工作目录的父亲版本。如果使用 '--rev' 指定版本,就显示此版本的\n"
+"    父亲。如果指定了文件,那么使用此文件最后修改的版本(工作目录的起源\n"
+"    版本,或 '--rev' 指定的版本)。\n"
+"    "
+
+msgid "can only specify an explicit file name"
+msgstr ""
+
+#, python-format
+msgid "'%s' not found in manifest!"
+msgstr ""
+
+msgid ""
+"show aliases for remote repositories\n"
+"\n"
+"    Show definition of symbolic path name NAME. If no name is given, show\n"
+"    definition of available names.\n"
+"\n"
+"    Path names are defined in the [paths] section of /etc/mercurial/hgrc\n"
+"    and $HOME/.hgrc. If run inside a repository, .hg/hgrc is used, too.\n"
+"\n"
+"    See 'hg help urls' for more information.\n"
+"    "
+msgstr ""
+
+msgid "not found!\n"
+msgstr ""
+
+msgid "not updating, since new heads added\n"
+msgstr ""
+
+msgid "(run 'hg heads' to see heads, 'hg merge' to merge)\n"
+msgstr ""
+
+msgid "(run 'hg update' to get a working copy)\n"
+msgstr ""
+
+msgid ""
+"pull changes from the specified source\n"
+"\n"
+"    Pull changes from a remote repository to a local one.\n"
+"\n"
+"    This finds all changes from the repository at the specified path\n"
+"    or URL and adds them to the local repository. By default, this\n"
+"    does not update the copy of the project in the working directory.\n"
+"\n"
+"    If SOURCE is omitted, the 'default' path will be used.\n"
+"    See 'hg help urls' for more information.\n"
+"    "
+msgstr ""
+"从指定版本库取得修改集\n"
+"\n"
+"    从远程版本库取得修改集到本地版本库。\n"
+"\n"
+"    查找位于指定路径或位置的版本库的全部修改,增加到版本版本库。默认不\n"
+"    更新工作目录。\n"
+"\n"
+"    如果没有指定位置,就使用路径 'default'。参见 'hg help urls' 以了解\n"
+"    更多信息。\n"
+"    "
+
+msgid ""
+"Other repository doesn't support revision lookup, so a rev cannot be "
+"specified."
+msgstr ""
+
+msgid ""
+"push changes to the specified destination\n"
+"\n"
+"    Push changes from the local repository to the given destination.\n"
+"\n"
+"    This is the symmetrical operation for pull. It helps to move\n"
+"    changes from the current repository to a different one. If the\n"
+"    destination is local this is identical to a pull in that directory\n"
+"    from the current one.\n"
+"\n"
+"    By default, push will refuse to run if it detects the result would\n"
+"    increase the number of remote heads. This generally indicates the\n"
+"    the client has forgotten to pull and merge before pushing.\n"
+"\n"
+"    If -r is used, the named changeset and all its ancestors will be pushed\n"
+"    to the remote repository.\n"
+"\n"
+"    Look at the help text for urls for important details about ssh:// URLs.\n"
+"    If DESTINATION is omitted, a default path will be used.\n"
+"    See 'hg help urls' for more information.\n"
+"    "
+msgstr ""
+"推送改变到指定位置\n"
+"\n"
+"    从本地版本库推送改变到指定位置。\n"
+"\n"
+"    这是 'pull' 的对称操作。它从当前版本库推送改变到其它版本库。如果目标\n"
+"    是本地版本库,那么此操作与在目标版本库从当前版本库执行 'pull' 操作等\n"
+"    同。\n"
+"\n"
+"    推送默认拒绝导致增加远程版本库顶点数目的操作。这通常表明客户端在推送\n"
+"    之前忘记取得远程版本库的修改,并且合并。\n"
+"\n"
+"    如果使用了选项 '-r',此命名修改集以及其祖先都会被推送到远程版本库。\n"
+"    \n"
+"\n"
+"    参见主题 'urls' 的帮助信息,以了解位置 'ssh://' 的重要详情。如果没有\n"
+"    给出目标位置,那么使用默认路径。参见 'hg help urls' 以了解更多信息。\n"
+"    "
+
+#, python-format
+msgid "pushing to %s\n"
+msgstr "正在推到 %s\n"
+
+msgid ""
+"raw commit interface (DEPRECATED)\n"
+"\n"
+"    (DEPRECATED)\n"
+"    Lowlevel commit, for use in helper scripts.\n"
+"\n"
+"    This command is not intended to be used by normal users, as it is\n"
+"    primarily useful for importing from other SCMs.\n"
+"\n"
+"    This command is now deprecated and will be removed in a future\n"
+"    release, please use debugsetparents and commit instead.\n"
+"    "
+msgstr ""
+
+msgid "(the rawcommit command is deprecated)\n"
+msgstr ""
+
+msgid ""
+"roll back an interrupted transaction\n"
+"\n"
+"    Recover from an interrupted commit or pull.\n"
+"\n"
+"    This command tries to fix the repository status after an interrupted\n"
+"    operation. It should only be necessary when Mercurial suggests it.\n"
+"    "
+msgstr ""
+
+msgid ""
+"remove the specified files on the next commit\n"
+"\n"
+"    Schedule the indicated files for removal from the repository.\n"
+"\n"
+"    This only removes files from the current branch, not from the entire\n"
+"    project history. -A can be used to remove only files that have already\n"
+"    been deleted, -f can be used to force deletion, and -Af can be used\n"
+"    to remove files from the next revision without deleting them.\n"
+"\n"
+"    The following table details the behavior of remove for different file\n"
+"    states (columns) and option combinations (rows). The file states are\n"
+"    Added, Clean, Modified and Missing (as reported by hg status). The\n"
+"    actions are Warn, Remove (from branch) and Delete (from disk).\n"
+"\n"
+"           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\n"
+"\n"
+"    This command schedules the files to be removed at the next commit.\n"
+"    To undo a remove before that, see hg revert.\n"
+"    "
+msgstr ""
+"在下次提交时删除指定文件\n"
+"\n"
+"    调度从版本库删除指定文件。\n"
+"\n"
+"    它只从当前分支删除文件,不删除历史。'-A' 用于只移除已经删除的文\n"
+"    件,'-f' 用于强制删除,'-Af' 用于从下个版本移除文件,但是不删除\n"
+"    它们。\n"
+"\n"
+"    下表给出了删除不同状态(列)文件的行为和可选的组合(行)。文件状态\n"
+"    ('hg status' 报告的状态)是增加(A),干净(C),已修改(M),丢失(!)。\n"
+"    动作是警告(W),移除(R,从分支),以及删除(D,从磁盘)。\n"
+"\n"
+"           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\n"
+"\n"
+"    此命令调度下次提交时删除文件。\n"
+"    要在此之前撤销删除,请参见 'hg revert'。\n"
+"    "
+
+msgid "no files specified"
+msgstr ""
+
+#, python-format
+msgid "not removing %s: file %s (use -f to force removal)\n"
+msgstr ""
+
+msgid "still exists"
+msgstr ""
+
+msgid "is modified"
+msgstr ""
+
+msgid "has been marked for add"
+msgstr ""
+
+msgid ""
+"rename files; equivalent of copy + remove\n"
+"\n"
+"    Mark dest as copies of sources; mark sources for deletion. If\n"
+"    dest is a directory, copies are put in that directory. If dest is\n"
+"    a file, there can only be one source.\n"
+"\n"
+"    By default, this command copies the contents of files as they\n"
+"    exist in the working directory. If invoked with --after, the\n"
+"    operation is recorded, but no copying is performed.\n"
+"\n"
+"    This command takes effect at the next commit. To undo a rename\n"
+"    before that, see hg revert.\n"
+"    "
+msgstr ""
+
+msgid ""
+"retry file merges from a merge or update\n"
+"\n"
+"    This command will cleanly retry unresolved file merges using file\n"
+"    revisions preserved from the last update or merge. To attempt to\n"
+"    resolve all unresolved files, use the -a switch.\n"
+"\n"
+"    This command will also allow listing resolved files and manually\n"
+"    marking and unmarking files as resolved.\n"
+"\n"
+"    The codes used to show the status of files are:\n"
+"    U = unresolved\n"
+"    R = resolved\n"
+"    "
+msgstr ""
+
+msgid "too many options specified"
+msgstr ""
+
+msgid "can't specify --all and patterns"
+msgstr ""
+
+msgid "no files or directories specified; use --all to remerge all files"
+msgstr ""
+
+msgid ""
+"restore individual files or dirs to an earlier state\n"
+"\n"
+"    (use update -r to check out earlier revisions, revert does not\n"
+"    change the working dir parents)\n"
+"\n"
+"    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 the\n"
+"    revision to revert to.\n"
+"\n"
+"    Using the -r option, revert the given files or directories to their\n"
+"    contents as of a specific revision. This can be helpful to \"roll\n"
+"    back\" some or all of an earlier change.\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"\n"
+"    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.\n"
+"\n"
+"    If a file has been deleted, it is restored. If the executable\n"
+"    mode of a file was changed, it is reset.\n"
+"\n"
+"    If names are given, all files matching the names are reverted.\n"
+"    If no arguments are given, no files are reverted.\n"
+"\n"
+"    Modified files are saved with a .orig suffix before reverting.\n"
+"    To disable these backups, use --no-backup.\n"
+"    "
+msgstr ""
+
+msgid "you can't specify a revision and a date"
+msgstr ""
+
+msgid "no files or directories specified; use --all to revert the whole repo"
+msgstr ""
+
+#, python-format
+msgid "forgetting %s\n"
+msgstr ""
+
+#, python-format
+msgid "reverting %s\n"
+msgstr "正在恢复 %s\n"
+
+#, python-format
+msgid "undeleting %s\n"
+msgstr "正在撤销删除 %s\n"
+
+#, python-format
+msgid "saving current version of %s as %s\n"
+msgstr "保存当前版本的 %s 为 %s\n"
+
+#, python-format
+msgid "file not managed: %s\n"
+msgstr "文件未被控制: %s\n"
+
+#, python-format
+msgid "no changes needed to %s\n"
+msgstr "不需要改变 %s\n"
+
+msgid ""
+"roll back the last transaction\n"
+"\n"
+"    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.\n"
+"\n"
+"    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:\n"
+"\n"
+"      commit\n"
+"      import\n"
+"      pull\n"
+"      push (with this repository as destination)\n"
+"      unbundle\n"
+"\n"
+"    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.\n"
+"    "
+msgstr ""
+
+msgid ""
+"print the root (top) of the current working dir\n"
+"\n"
+"    Print the root directory of the current repository.\n"
+"    "
+msgstr ""
+
+msgid ""
+"export the repository via HTTP\n"
+"\n"
+"    Start a local HTTP repository browser and pull server.\n"
+"\n"
+"    By default, the server logs accesses to stdout and errors to\n"
+"    stderr. Use the \"-A\" and \"-E\" options to log to files.\n"
+"    "
+msgstr ""
+"通过 HTTP 发布版本库\n"
+"\n"
+"    启动本地 HTTP 版本库浏览器和发布服务器。\n"
+"\n"
+"    默认服务器访问日志输出到 stdout,错误日志输出到 stderr。\n"
+"    可以使用选项 \"-A\" 和 \"-E\",将这些日志输出到文件。\n"
+"    "
+
+#, python-format
+msgid "listening at http://%s%s/%s (bound to %s:%d)\n"
+msgstr ""
+
+msgid ""
+"show changed files in the working directory\n"
+"\n"
+"    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"
+"    source of a copy/move operation, are not listed unless -c (clean),\n"
+"    -i (ignored), -C (copies) or -A is given. Unless options described\n"
+"    with \"show only ...\" are given, the options -mardu are used.\n"
+"\n"
+"    Option -q/--quiet hides untracked (unknown and ignored) files\n"
+"    unless explicitly requested with -u/--unknown or -i/-ignored.\n"
+"\n"
+"    NOTE: status may appear to disagree with diff if permissions have\n"
+"    changed or a merge has occurred. The standard diff format does not\n"
+"    report permission changes and diff only reports changes relative\n"
+"    to one merge parent.\n"
+"\n"
+"    If one revision is given, it is used as the base revision.\n"
+"    If two revisions are given, the difference between them is shown.\n"
+"\n"
+"    The codes used to show the status of files are:\n"
+"    M = modified\n"
+"    A = added\n"
+"    R = removed\n"
+"    C = clean\n"
+"    ! = deleted, but still tracked\n"
+"    ? = not tracked\n"
+"    I = ignored\n"
+"      = the previous added file was copied from here\n"
+"    "
+msgstr ""
+"显示工作目录中已改变的文件\n"
+"\n"
+"    显示版本库中的文件状态。如果指定文件名称,只显示匹配的文件。干净的\n"
+"    文件,被忽略的文件,复制/移动的源文件,不会被显示,除非使用了选项\n"
+"    '-c' (干净的),'-i' (被忽略的),'-C' (复制源) 或者 '-A' (全部)。除\n"
+"    非使用了选项 \"只显示 ...\",否则就使用选项 '-mardu'。\n"
+"\n"
+"    选项 '-q/--quiet' 隐藏未跟踪(未知或被忽略)的文件,除非明确地使用选\n"
+"    项 '-u/--unknown' 或 ‘-i/-ignored’。\n"
+"\n"
+"    注意: 如果修改了权限或者执行了合并,'status' 与 'diff' 的显示可能\n"
+"    不一致。标准差异格式不报告权限的改变,'diff' 只报告相对于一个合并\n"
+"    父亲的改变。\n"
+"\n"
+"    如果给出 1 个版本,就用于基础版本。如果给出 2 个版本,就显示其差异。\n"
+"\n"
+"    显示文件状态的代码是:\n"
+"    M = 已修改\n"
+"    A = 已增加\n"
+"    R = 已移除\n"
+"    C = 干净的\n"
+"    ! = 已删除,仍旧被跟踪\n"
+"    ? = 未跟踪\n"
+"    I = 已忽略\n"
+"      = 早先增加的文件自此复制\n"
+"    "
+
+msgid ""
+"add one or more tags for the current or given revision\n"
+"\n"
+"    Name a particular revision using <name>.\n"
+"\n"
+"    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.\n"
+"\n"
+"    If no revision is given, the parent of the working directory is used,\n"
+"    or tip if no revision is checked out.\n"
+"\n"
+"    To facilitate version control, distribution, and merging of tags,\n"
+"    they are stored as a file named \".hgtags\" which is managed\n"
+"    similarly to other project files and can be hand-edited if\n"
+"    necessary. The file '.hg/localtags' is used for local tags (not\n"
+"    shared among repositories).\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for -d/--date.\n"
+"    "
+msgstr ""
+
+msgid "tag names must be unique"
+msgstr ""
+
+#, python-format
+msgid "the name '%s' is reserved"
+msgstr ""
+
+msgid "--rev and --remove are incompatible"
+msgstr ""
+
+#, python-format
+msgid "tag '%s' does not exist"
+msgstr ""
+
+#, python-format
+msgid "tag '%s' is not a %s tag"
+msgstr ""
+
+#, python-format
+msgid "Removed tag %s"
+msgstr ""
+
+#, python-format
+msgid "tag '%s' already exists (use -f to force)"
+msgstr ""
+
+#, python-format
+msgid "Added tag %s for changeset %s"
+msgstr ""
+
+msgid ""
+"list repository tags\n"
+"\n"
+"    This lists both regular and local tags. When the -v/--verbose switch\n"
+"    is used, a third column \"local\" is printed for local tags.\n"
+"    "
+msgstr ""
+
+msgid ""
+"show the tip revision\n"
+"\n"
+"    The tip revision (usually just called the tip) is the most\n"
+"    recently added changeset in the repository, the most recently\n"
+"    changed head.\n"
+"\n"
+"    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.\n"
+"    "
+msgstr ""
+
+msgid ""
+"apply one or more changegroup files\n"
+"\n"
+"    Apply one or more compressed changegroup files generated by the\n"
+"    bundle command.\n"
+"    "
+msgstr ""
+
+msgid ""
+"update working directory\n"
+"\n"
+"    Update the repository's working directory to the specified revision,\n"
+"    or the tip of the current branch if none is specified. Use null as\n"
+"    the revision to remove the working copy (like 'hg clone -U').\n"
+"\n"
+"    When the working dir contains no uncommitted changes, it will be\n"
+"    replaced by the state of the requested revision from the repo.  When\n"
+"    the requested revision is on a different branch, the working dir\n"
+"    will additionally be switched to that branch.\n"
+"\n"
+"    When there are uncommitted changes, use option -C to discard them,\n"
+"    forcibly replacing the state of the working dir with the requested\n"
+"    revision.\n"
+"\n"
+"    When there are uncommitted changes and option -C is not used, and\n"
+"    the parent revision and requested revision are on the same branch,\n"
+"    and one of them is an ancestor of the other, then the new working\n"
+"    directory will contain the requested revision merged with the\n"
+"    uncommitted changes.  Otherwise, the update will fail with a\n"
+"    suggestion to use 'merge' or 'update -C' instead.\n"
+"\n"
+"    If you want to update just one file to an older revision, use revert.\n"
+"\n"
+"    See 'hg help dates' for a list of formats valid for --date.\n"
+"    "
+msgstr ""
+"更新工作目录\n"
+"\n"
+"    更新工作目录到指定版本,或者到当前分支的顶点。使用 'null' 作为版本可以\n"
+"    删除工作副本(类似于 'hg clone -U')。\n"
+"\n"
+"    当工作目录包含未提交的修改时,它会被版本库中指定版本的状态替换。当请求\n"
+"    的版本位于不同分支时,工作目录会被切换到此分支。\n"
+"\n"
+"    可以使用选项 '-C' 来丢弃未提交的修改,强制使用请求的版本替换工作目录的\n"
+"    状态。\n"
+"\n"
+"    当有未提交的修改,没有使用选项 '-C',父版本和请求版本位于不同分支,并且\n"
+"    其中一个是另一个的祖先时,那么新的工作目录包含请求版本与未提交的修改的\n"
+"    合并结果。否则,更新会失败,建议使用 'merge' 或 'update -C'。\n"
+"\n"
+"    如果你只想更新一个文件到旧版本,请使用 'revert'。\n"
+"\n"
+"    参见 'hg help dates' 以获得 '-d/--date' 的有效格式列表。\n"
+"    "
+
+msgid ""
+"verify the integrity of the repository\n"
+"\n"
+"    Verify the integrity of the current repository.\n"
+"\n"
+"    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.\n"
+"    "
+msgstr ""
+
+msgid "output version and copyright information"
+msgstr "输出版本和版权信息"
+
+#, python-format
+msgid "Mercurial Distributed SCM (version %s)\n"
+msgstr "分布式软件配置管理工具 - 水银 (版本 %s)\n"
+
+msgid ""
+"\n"
+"Copyright (C) 2005-2009 Matt Mackall <mpm@selenic.com> 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"
+"版权所有 (C) 2005-2009 Matt Mackall <mpm@selenic.com> 和其他人。\n"
+"这是自由软件,具体参见版权条款。这里没有任何担保,甚至没有适合\n"
+"特定目的的隐含的担保。\n"
+
+msgid "repository root directory or symbolic path name"
+msgstr "版本库的根目录或符号路径名称"
+
+msgid "change working directory"
+msgstr "改变工作目录"
+
+msgid "do not prompt, assume 'yes' for any required answers"
+msgstr "不再询问,假定所有答案都是 'yes'"
+
+msgid "suppress output"
+msgstr "抑制输出"
+
+msgid "enable additional output"
+msgstr "启用额外的输出"
+
+msgid "set/override config option"
+msgstr "设置/覆盖配置选项"
+
+msgid "enable debugging output"
+msgstr "启用调试输出"
+
+msgid "start debugger"
+msgstr "启动调试器"
+
+msgid "set the charset encoding"
+msgstr "设置字符集编码"
+
+msgid "set the charset encoding mode"
+msgstr "设置字符集编码模式"
+
+msgid "print improved command execution profile"
+msgstr "显示改良的命令执行剖析"
+
+msgid "print traceback on exception"
+msgstr "显示异常的跟踪"
+
+msgid "time how long the command takes"
+msgstr "为命令计时"
+
+msgid "print command execution profile"
+msgstr "显示命令执行的剖析"
+
+msgid "output version information and exit"
+msgstr "显示版本信息后退出"
+
+msgid "display help and exit"
+msgstr "显示帮助后退出"
+
+msgid "do not perform actions, just print output"
+msgstr "不执行操作,只打印输出"
+
+msgid "specify ssh command to use"
+msgstr "指定要使用的 'ssh' 命令"
+
+msgid "specify hg command to run on the remote side"
+msgstr "指定要在远程运行的 'hg' 命令"
+
+msgid "include names matching the given patterns"
+msgstr "包含匹配指定模式的名称"
+
+msgid "exclude names matching the given patterns"
+msgstr "拒绝匹配指定模式的名称"
+
+msgid "use <text> as commit message"
+msgstr "使用 <text> 作为提交日志"
+
+msgid "read commit message from <file>"
+msgstr "从 <file> 读取提交日志"
+
+msgid "record datecode as commit date"
+msgstr "将提供的日期作为提交日期"
+
+msgid "record user as committer"
+msgstr "将提供的用户作为提交者"
+
+msgid "display using template map file"
+msgstr "使用指定的样式显示"
+
+msgid "display with template"
+msgstr "使用指定的模板显示"
+
+msgid "do not show merges"
+msgstr "不显示合并"
+
+msgid "treat all files as text"
+msgstr "将所有文件视为文本文件"
+
+msgid "don't include dates in diff headers"
+msgstr "不要的差异头中包含日期"
+
+msgid "show which function each change is in"
+msgstr "为每个修改显示在什么函数中"
+
+msgid "ignore white space when comparing lines"
+msgstr "当比较行时忽略空白"
+
+msgid "ignore changes in the amount of white space"
+msgstr "忽略空白数量的改变"
+
+msgid "ignore changes whose lines are all blank"
+msgstr "忽略空行的改变"
+
+msgid "number of lines of context to show"
+msgstr "显示几行上下文"
+
+msgid "guess renamed files by similarity (0<=s<=100)"
+msgstr ""
+
+msgid "[OPTION]... [FILE]..."
+msgstr ""
+
+msgid "annotate the specified revision"
+msgstr "追溯指定版本"
+
+msgid "follow file copies and renames"
+msgstr "处理文件复制与改名"
+
+msgid "list the author (long with -v)"
+msgstr "列出作者 (增加 '-v' 会以长格式显示)"
+
+msgid "list the date (short with -q)"
+msgstr "列出日期 (增加 '-q' 会以短格式显示)"
+
+msgid "list the revision number (default)"
+msgstr "列出版本号 (默认)"
+
+msgid "list the changeset"
+msgstr "列出修改集"
+
+msgid "show line number at the first appearance"
+msgstr "列出首次出现时的行号"
+
+msgid "[-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] FILE..."
+msgstr ""
+
+msgid "do not pass files through decoders"
+msgstr ""
+
+msgid "directory prefix for files in archive"
+msgstr ""
+
+msgid "revision to distribute"
+msgstr ""
+
+msgid "type of distribution to create"
+msgstr ""
+
+msgid "[OPTION]... DEST"
+msgstr ""
+
+msgid "merge with old dirstate parent after backout"
+msgstr ""
+
+msgid "parent to choose when backing out merge"
+msgstr ""
+
+msgid "revision to backout"
+msgstr ""
+
+msgid "[OPTION]... [-r] REV"
+msgstr ""
+
+msgid "reset bisect state"
+msgstr ""
+
+msgid "mark changeset good"
+msgstr ""
+
+msgid "mark changeset bad"
+msgstr ""
+
+msgid "skip testing changeset"
+msgstr ""
+
+msgid "use command to check changeset state"
+msgstr ""
+
+msgid "do not update to target"
+msgstr ""
+
+msgid "[-gbsr] [-c CMD] [REV]"
+msgstr ""
+
+msgid "set branch name even if it shadows an existing branch"
+msgstr ""
+
+msgid "reset branch name to parent branch name"
+msgstr ""
+
+msgid "[-fC] [NAME]"
+msgstr ""
+
+msgid "show only branches that have unmerged heads"
+msgstr ""
+
+msgid "[-a]"
+msgstr ""
+
+msgid "run even when remote repository is unrelated"
+msgstr "纵然远程版本库是无关的也要执行"
+
+msgid "a changeset up to which you would like to bundle"
+msgstr ""
+
+msgid "a base changeset to specify instead of a destination"
+msgstr ""
+
+msgid "bundle all changesets in the repository"
+msgstr ""
+
+msgid "bundle compression type to use"
+msgstr ""
+
+msgid "[-f] [-a] [-r REV]... [--base REV]... FILE [DEST]"
+msgstr ""
+
+msgid "print output to file with formatted name"
+msgstr "输出到使用格式化名称的文件中"
+
+msgid "print the given revision"
+msgstr ""
+
+msgid "apply any matching decode filter"
+msgstr ""
+
+msgid "[OPTION]... FILE..."
+msgstr ""
+
+msgid "the clone will only contain a repository (no working copy)"
+msgstr "只复制版本库(没有工作副本)"
+
+msgid "a changeset you would like to have after cloning"
+msgstr "复制后你期望有的修改集"
+
+msgid "[OPTION]... SOURCE [DEST]"
+msgstr ""
+
+msgid "mark new/missing files as added/removed before committing"
+msgstr "在提交之前将'新的/丢失的'文件标记为'已增加/已删除'"
+
+msgid "mark a branch as closed, hiding it from the branch list"
+msgstr "标记一个分支已关闭,不在分支列表中显示"
+
+msgid "record a copy that has already occurred"
+msgstr ""
+
+msgid "forcibly copy over an existing managed file"
+msgstr ""
+
+msgid "[OPTION]... [SOURCE]... DEST"
+msgstr ""
+
+msgid "[INDEX] REV1 REV2"
+msgstr ""
+
+msgid "show the command options"
+msgstr ""
+
+msgid "[-o] CMD"
+msgstr ""
+
+msgid "try extended date formats"
+msgstr ""
+
+msgid "[-e] DATE [RANGE]"
+msgstr ""
+
+msgid "FILE REV"
+msgstr ""
+
+msgid "[PATH]"
+msgstr ""
+
+msgid "FILE"
+msgstr ""
+
+msgid "parent"
+msgstr ""
+
+msgid "file list"
+msgstr ""
+
+msgid "revision to rebuild to"
+msgstr ""
+
+msgid "[-r REV] [REV]"
+msgstr ""
+
+msgid "revision to debug"
+msgstr ""
+
+msgid "[-r REV] FILE"
+msgstr ""
+
+msgid "REV1 [REV2]"
+msgstr ""
+
+msgid "do not display the saved mtime"
+msgstr ""
+
+msgid "[OPTION]..."
+msgstr ""
+
+msgid "[OPTION]... [-r REV1 [-r REV2]] [FILE]..."
+msgstr ""
+
+msgid "diff against the second parent"
+msgstr "与第二个父亲比较"
+
+msgid "[OPTION]... [-o OUTFILESPEC] REV..."
+msgstr ""
+
+msgid "end fields with NUL"
+msgstr ""
+
+msgid "print all revisions that match"
+msgstr ""
+
+msgid "follow changeset history, or file history across copies and renames"
+msgstr "跟踪修改集历史,或者跟踪文件的复制与改名操作"
+
+msgid "ignore case when matching"
+msgstr ""
+
+msgid "print only filenames and revs that match"
+msgstr ""
+
+msgid "print matching line numbers"
+msgstr ""
+
+msgid "search in given revision range"
+msgstr ""
+
+msgid "[OPTION]... PATTERN [FILE]..."
+msgstr ""
+
+msgid "show only heads which are descendants of rev"
+msgstr ""
+
+msgid "show only the active heads from open branches"
+msgstr ""
+
+msgid "[-r REV] [REV]..."
+msgstr ""
+
+msgid "[TOPIC]"
+msgstr ""
+
+msgid "identify the specified rev"
+msgstr ""
+
+msgid "show local revision number"
+msgstr ""
+
+msgid "show global revision id"
+msgstr ""
+
+msgid "show branch"
+msgstr ""
+
+msgid "show tags"
+msgstr ""
+
+msgid "[-nibt] [-r REV] [SOURCE]"
+msgstr ""
+
+msgid ""
+"directory strip option for patch. This has the same\n"
+"meaning as the corresponding patch option"
+msgstr ""
+
+msgid "base path"
+msgstr ""
+
+msgid "skip check for outstanding uncommitted changes"
+msgstr ""
+
+msgid "don't commit, just update the working directory"
+msgstr ""
+
+msgid "apply patch to the nodes from which it was generated"
+msgstr ""
+
+msgid "Use any branch information in patch (implied by --exact)"
+msgstr ""
+
+msgid "[OPTION]... PATCH..."
+msgstr ""
+
+msgid "show newest record first"
+msgstr ""
+
+msgid "file to store the bundles into"
+msgstr ""
+
+msgid "a specific revision up to which you would like to pull"
+msgstr "指定要取得的最高版本"
+
+msgid "[-p] [-n] [-M] [-f] [-r REV]... [--bundle FILENAME] [SOURCE]"
+msgstr ""
+
+msgid "[-e CMD] [--remotecmd CMD] [DEST]"
+msgstr ""
+
+msgid "search the repository as it stood at rev"
+msgstr ""
+
+msgid "end filenames with NUL, for use with xargs"
+msgstr "在文件名称结尾增加 NUL,用于 xargs"
+
+msgid "print complete paths from the filesystem root"
+msgstr ""
+
+msgid "[OPTION]... [PATTERN]..."
+msgstr ""
+
+msgid "only follow the first parent of merge changesets"
+msgstr "只跟踪修改集的第一个父亲"
+
+msgid "show revs matching date spec"
+msgstr "显示匹配日期的版本"
+
+msgid "show copied files"
+msgstr "显示复制的文件"
+
+msgid "do case-insensitive search for a keyword"
+msgstr "对关键字执行不区分大小写的搜索"
+
+msgid "include revs where files were removed"
+msgstr "包含删除文件的版本"
+
+msgid "show only merges"
+msgstr "只显示合并"
+
+msgid "revs committed by user"
+msgstr "指定用户提交的版本"
+
+msgid "show only changesets within the given named branch"
+msgstr "只显示位于指定命名分支中的修改集"
+
+msgid "do not display revision or any of its ancestors"
+msgstr "不显示指定版本或其祖先"
+
+msgid "[OPTION]... [FILE]"
+msgstr ""
+
+msgid "revision to display"
+msgstr ""
+
+msgid "[-r REV]"
+msgstr ""
+
+msgid "force a merge with outstanding changes"
+msgstr "强制与已有修改合并"
+
+msgid "revision to merge"
+msgstr "要合并的版本"
+
+msgid "[-f] [[-r] REV]"
+msgstr ""
+
+msgid "a specific revision up to which you would like to push"
+msgstr "指定你要推送的最高版本"
+
+msgid "[-M] [-p] [-n] [-f] [-r REV]... [DEST]"
+msgstr ""
+
+msgid "show parents from the specified rev"
+msgstr "从指定的版本显示父亲"
+
+msgid "hg parents [-r REV] [FILE]"
+msgstr ""
+
+msgid "[NAME]"
+msgstr ""
+
+msgid "update to new tip if changesets were pulled"
+msgstr "如果有新的修改集,就更新到最新版本"
+
+msgid "[-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]"
+msgstr ""
+
+msgid "force push"
+msgstr "强制推送"
+
+msgid "[-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]"
+msgstr ""
+
+msgid "record delete for missing files"
+msgstr "将丢失的文件视为删除"
+
+msgid "remove (and delete) file even if added or modified"
+msgstr "删除文件,纵然它已被增加或修改"
+
+msgid "record a rename that has already occurred"
+msgstr "记录已经发生的改名"
+
+msgid "[OPTION]... SOURCE... DEST"
+msgstr ""
+
+msgid "remerge all unresolved files"
+msgstr ""
+
+msgid "list state of files needing merge"
+msgstr ""
+
+msgid "mark files as resolved"
+msgstr ""
+
+msgid "unmark files as resolved"
+msgstr ""
+
+msgid "revert all changes when no arguments given"
+msgstr ""
+
+msgid "tipmost revision matching date"
+msgstr "匹配最接近顶点的日期"
+
+msgid "revision to revert to"
+msgstr ""
+
+msgid "do not save backup copies of files"
+msgstr ""
+
+msgid "[OPTION]... [-r REV] [NAME]..."
+msgstr ""
+
+msgid "name of access log file to write to"
+msgstr "记录访问日志的文件名称"
+
+msgid "name of error log file to write to"
+msgstr "记录错误日志的文件名称"
+
+msgid "port to listen on (default: 8000)"
+msgstr "监听的端口(默认: 8000)"
+
+msgid "address to listen on (default: all interfaces)"
+msgstr "监听地址(默认: 所有地址)"
+
+msgid "prefix path to serve from (default: server root)"
+msgstr "服务路径前缀(默认: 服务器根)"
+
+msgid "name to show in web pages (default: working dir)"
+msgstr "在 WEB 页面中显示的名称(默认: 工作目录)"
+
+msgid "name of the webdir config file (serve more than one repo)"
+msgstr "webdir 配置文件的名称(发布多个版本库)"
+
+msgid "for remote clients"
+msgstr "针对远程客户端"
+
+msgid "web templates to use"
+msgstr "使用的 WEB 模板"
+
+msgid "template style to use"
+msgstr "使用的显示样式"
+
+msgid "use IPv6 in addition to IPv4"
+msgstr "同时使用 IPv6 和 IPv4"
+
+msgid "SSL certificate file"
+msgstr "SSL 证书文件"
+
+msgid "show untrusted configuration options"
+msgstr "显示不能信赖的配置选项"
+
+msgid "[-u] [NAME]..."
+msgstr ""
+
+msgid "show status of all files"
+msgstr "显示全部文件的状态"
+
+msgid "show only modified files"
+msgstr "只显示已修改文件的状态"
+
+msgid "show only added files"
+msgstr "只显示已增加文件的状态"
+
+msgid "show only removed files"
+msgstr "只显示已移除文件的状态"
+
+msgid "show only deleted (but tracked) files"
+msgstr "只显示已删除(但被跟踪)文件的状态"
+
+msgid "show only files without changes"
+msgstr "只显示无改动文件的状态"
+
+msgid "show only unknown (not tracked) files"
+msgstr "只显示未知(未被跟踪)文件的状态"
+
+msgid "show only ignored files"
+msgstr "只显示被忽略文件的状态"
+
+msgid "hide status prefix"
+msgstr "隐藏状态前缀"
+
+msgid "show source of copied files"
+msgstr "显示文件的复制源"
+
+msgid "show difference from revision"
+msgstr "显示版本差异"
+
+msgid "replace existing tag"
+msgstr "替换已有的标签"
+
+msgid "make the tag local"
+msgstr "标记标签为本地"
+
+msgid "revision to tag"
+msgstr "标签对应的版本"
+
+msgid "remove a tag"
+msgstr "删除标签"
+
+msgid "[-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME..."
+msgstr ""
+
+msgid "[-p]"
+msgstr ""
+
+msgid "update to new tip if changesets were unbundled"
+msgstr ""
+
+msgid "[-u] FILE..."
+msgstr ""
+
+msgid "overwrite locally modified files (no backup)"
+msgstr "覆盖本地修改的文件(不备份)"
+
+msgid "[-C] [-d DATE] [[-r] REV]"
+msgstr ""
+
+msgid "not found in manifest"
+msgstr ""
+
+msgid "branch name not in UTF-8!"
+msgstr ""
+
+#, python-format
+msgid "  searching for copies back to rev %d\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"  unmatched files in local:\n"
+"   %s\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"  unmatched files in other:\n"
+"   %s\n"
+msgstr ""
+
+msgid "  all copies found (* = to merge, ! = divergent):\n"
+msgstr ""
+
+#, python-format
+msgid "   %s -> %s %s\n"
+msgstr ""
+
+msgid "  checking for directory renames\n"
+msgstr ""
+
+#, python-format
+msgid "  dir %s -> %s\n"
+msgstr ""
+
+#, python-format
+msgid "  file %s -> %s\n"
+msgstr ""
+
+#, python-format
+msgid "'\\n' and '\\r' disallowed in filenames: %r"
+msgstr ""
+
+#, python-format
+msgid "directory %r already in dirstate"
+msgstr ""
+
+#, python-format
+msgid "file %r in dirstate clashes with %r"
+msgstr ""
+
+#, python-format
+msgid "not in dirstate: %s\n"
+msgstr ""
+
+msgid "character device"
+msgstr ""
+
+msgid "block device"
+msgstr ""
+
+msgid "fifo"
+msgstr ""
+
+msgid "socket"
+msgstr ""
+
+msgid "directory"
+msgstr ""
+
+#, python-format
+msgid "%s: unsupported file type (type is %s)\n"
+msgstr ""
+
+#, python-format
+msgid "abort: %s\n"
+msgstr "中止: %s\n"
+
+#, python-format
+msgid ""
+"hg: command '%s' is ambiguous:\n"
+"    %s\n"
+msgstr ""
+
+#, python-format
+msgid "timed out waiting for lock held by %s"
+msgstr ""
+
+#, python-format
+msgid "lock held by %s"
+msgstr ""
+
+#, python-format
+msgid "abort: %s: %s\n"
+msgstr "中止: %s: %s\n"
+
+#, python-format
+msgid "abort: could not lock %s: %s\n"
+msgstr "中止: 不能锁定 %s: %s\n"
+
+#, python-format
+msgid "hg %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid "hg: %s\n"
+msgstr ""
+
+#, python-format
+msgid "abort: %s!\n"
+msgstr "中止: %s!\n"
+
+#, python-format
+msgid "abort: %s"
+msgstr "中止: %s"
+
+msgid " empty string\n"
+msgstr ""
+
+msgid "killed!\n"
+msgstr ""
+
+#, python-format
+msgid "hg: unknown command '%s'\n"
+msgstr "hg: 未知命令 '%s'\n"
+
+#, python-format
+msgid "abort: could not import module %s!\n"
+msgstr "中止: 不能导入模块 %s!\n"
+
+msgid "(did you forget to compile extensions?)\n"
+msgstr "(你是否忘记了编译扩展?)\n"
+
+msgid "(is your Python install correct?)\n"
+msgstr "(你的 Python 安装正确吗?)\n"
+
+#, python-format
+msgid "abort: error: %s\n"
+msgstr "中止: 失败: %s\n"
+
+msgid "broken pipe\n"
+msgstr "坏掉的管道\n"
+
+msgid "interrupted!\n"
+msgstr "中断!\n"
+
+msgid ""
+"\n"
+"broken pipe\n"
+msgstr ""
+"\n"
+"坏掉的管道\n"
+
+msgid "abort: out of memory\n"
+msgstr "中止: 内存不足\n"
+
+msgid "** unknown exception encountered, details follow\n"
+msgstr "** 遇到了未知异常,详细信息如下\n"
+
+msgid "** report bug details to http://www.selenic.com/mercurial/bts\n"
+msgstr "** 报告问题详情到 http://www.selenic.com/mercurial/bts\n"
+
+msgid "** or mercurial@selenic.com\n"
+msgstr "** 或 mercurial@selenic.com\n"
+
+#, python-format
+msgid "** Mercurial Distributed SCM (version %s)\n"
+msgstr "** 分布式软件配置管理工具 - 水银 (版本 %s)\n"
+
+#, python-format
+msgid "** Extensions loaded: %s\n"
+msgstr "** 已加载的扩展: %s\n"
+
+#, python-format
+msgid "malformed --config option: %s"
+msgstr "非法 '--config' 选项: %s"
+
+#, python-format
+msgid "extension '%s' overrides commands: %s\n"
+msgstr "扩展 '%s' 覆盖了命令: %s\n"
+
+msgid "Option --config may not be abbreviated!"
+msgstr "选项 '--config' 不能简短!"
+
+msgid "Option --cwd may not be abbreviated!"
+msgstr "选项 '--cwd' 不能简短!"
+
+msgid ""
+"Option -R has to be separated from other options (i.e. not -qR) and --"
+"repository may only be abbreviated as --repo!"
+msgstr ""
+"选项 -R 必须隔离使用(也就是不能 -qR),并且 --repository 只能简短为 --repo!"
+
+#, python-format
+msgid "Time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n"
+msgstr "时间: 实际 %.3f 秒(用户 %.3f+%.3f 系统 %.3f+%.3f)\n"
+
+#, python-format
+msgid "repository '%s' is not local"
+msgstr "非本地版本库 '%s'"
+
+msgid "invalid arguments"
+msgstr "非法参数"
+
+msgid "exception raised - generating profile anyway\n"
+msgstr ""
+
+msgid ""
+"lsprof not available - install from http://codespeak.net/svn/user/arigo/hack/"
+"misc/lsprof/"
+msgstr ""
+"lsprof 不可用 - 从 http://codespeak.net/svn/user/arigo/hack/misc/lsprof/ 安装"
+
+#, python-format
+msgid "*** failed to import extension %s from %s: %s\n"
+msgstr "*** 加载扩展 '%s',自 '%s': %s\n"
+
+#, python-format
+msgid "*** failed to import extension %s: %s\n"
+msgstr "*** 加载扩展 '%s' 失败: %s\n"
+
+#, python-format
+msgid "couldn't find merge tool %s\n"
+msgstr "不能找到合并工具 '%s'\n"
+
+#, python-format
+msgid "tool %s can't handle symlinks\n"
+msgstr "工具 '%s' 不能处理符号链接\n"
+
+#, python-format
+msgid "tool %s can't handle binary\n"
+msgstr "工具 '%s' 不能处理二进制\n"
+
+#, python-format
+msgid "tool %s requires a GUI\n"
+msgstr "工具 '%s' 需要 GUI\n"
+
+#, python-format
+msgid "picked tool '%s' for %s (binary %s symlink %s)\n"
+msgstr "选择工具 '%s',用于 %s(二进制 %s 符号链接 %s)\n"
+
+#, python-format
+msgid ""
+" no tool found to merge %s\n"
+"keep (l)ocal or take (o)ther?"
+msgstr ""
+" 没有找到工具合并 %s\n"
+"使用本地(l)或者他人(o)的内容?"
+
+msgid "[lo]"
+msgstr ""
+
+msgid "l"
+msgstr ""
+
+#, python-format
+msgid "merging %s and %s to %s\n"
+msgstr ""
+
+#, python-format
+msgid "merging %s\n"
+msgstr ""
+
+#, python-format
+msgid "my %s other %s ancestor %s\n"
+msgstr ""
+
+msgid " premerge successful\n"
+msgstr ""
+
+#, python-format
+msgid ""
+" output file %s appears unchanged\n"
+"was merge successful (yn)?"
+msgstr ""
+
+msgid "[yn]"
+msgstr ""
+
+msgid "n"
+msgstr ""
+
+#, python-format
+msgid "merging %s failed!\n"
+msgstr ""
+
+#, python-format
+msgid "Inconsistent state, %s:%s is good and bad"
+msgstr ""
+
+#, python-format
+msgid "unknown bisect kind %s"
+msgstr ""
+
+msgid "Date Formats"
+msgstr ""
+
+msgid ""
+"\n"
+"    Some commands allow the user to specify a date, e.g.:\n"
+"    * backout, commit, import, tag: Specify the commit date.\n"
+"    * log, revert, update: Select revision(s) by date.\n"
+"\n"
+"    Many date formats are valid. Here are some examples:\n"
+"\n"
+"    \"Wed Dec 6 13:18:29 2006\" (local timezone assumed)\n"
+"    \"Dec 6 13:18 -0600\" (year assumed, time offset provided)\n"
+"    \"Dec 6 13:18 UTC\" (UTC and GMT are aliases for +0000)\n"
+"    \"Dec 6\" (midnight)\n"
+"    \"13:18\" (today assumed)\n"
+"    \"3:39\" (3:39AM assumed)\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)\n"
+"\n"
+"    Lastly, there is Mercurial's internal format:\n"
+"\n"
+"    \"1165432709 0\" (Wed Dec 6 13:18:29 2006 UTC)\n"
+"\n"
+"    This is the internal representation format for dates. unixtime is\n"
+"    the number of seconds since the epoch (1970-01-01 00:00 UTC). offset\n"
+"    is the offset of the local timezone, in seconds west of UTC (negative\n"
+"    if the timezone is east of UTC).\n"
+"\n"
+"    The log command also accepts date ranges:\n"
+"\n"
+"    \"<{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 ""
+
+msgid "File Name Patterns"
+msgstr ""
+
+msgid ""
+"\n"
+"    Mercurial accepts several notations for identifying one or more\n"
+"    files at a time.\n"
+"\n"
+"    By default, Mercurial treats filenames as shell-style extended\n"
+"    glob patterns.\n"
+"\n"
+"    Alternate pattern notations must be specified explicitly.\n"
+"\n"
+"    To use a plain path name without any pattern matching, start it\n"
+"    with \"path:\". These path names must completely match starting at\n"
+"    the current repository root.\n"
+"\n"
+"    To use an extended glob, start a name with \"glob:\". Globs are\n"
+"    rooted at the current directory; a glob such as \"*.c\" will only\n"
+"    match files in the current directory ending with \".c\".\n"
+"\n"
+"    The supported glob syntax extensions are \"**\" to match any string\n"
+"    across path separators and \"{a,b}\" to mean \"a or b\".\n"
+"\n"
+"    To use a Perl/Python regular expression, start a name with \"re:\".\n"
+"    Regexp pattern matching is anchored at the root of the repository.\n"
+"\n"
+"    Plain examples:\n"
+"\n"
+"    path:foo/bar   a name bar in a directory named foo in the root of\n"
+"                   the repository\n"
+"    path:path:name a file or directory named \"path:name\"\n"
+"\n"
+"    Glob examples:\n"
+"\n"
+"    glob:*.c       any name ending in \".c\" in the current directory\n"
+"    *.c            any name ending in \".c\" in the current directory\n"
+"    **.c           any name ending in \".c\" in any subdirectory of the\n"
+"                   current directory including itself.\n"
+"    foo/*.c        any name ending in \".c\" in the directory foo\n"
+"    foo/**.c       any name ending in \".c\" in any subdirectory of foo\n"
+"                   including itself.\n"
+"\n"
+"    Regexp examples:\n"
+"\n"
+"    re:.*\\.c$      any name ending in \".c\", anywhere in the repository\n"
+"\n"
+"    "
+msgstr ""
+
+msgid "Environment Variables"
+msgstr ""
+
+msgid ""
+"\n"
+"HG::\n"
+"    Path to the 'hg' executable, automatically passed when running hooks,\n"
+"    extensions or external tools. If unset or empty, this is the hg\n"
+"    executable's name if it's frozen, or an executable named 'hg'\n"
+"    (with %PATHEXT% [defaulting to COM/EXE/BAT/CMD] extensions on\n"
+"    Windows) is searched.\n"
+"\n"
+"HGEDITOR::\n"
+"    This is the name of the editor to run when committing. See EDITOR.\n"
+"\n"
+"    (deprecated, use .hgrc)\n"
+"\n"
+"HGENCODING::\n"
+"    This overrides the default locale setting detected by Mercurial.\n"
+"    This setting is used to convert data including usernames,\n"
+"    changeset descriptions, tag names, and branches. This setting can\n"
+"    be overridden with the --encoding command-line option.\n"
+"\n"
+"HGENCODINGMODE::\n"
+"    This sets Mercurial's behavior for handling unknown characters\n"
+"    while transcoding user input. The default is \"strict\", which\n"
+"    causes Mercurial to abort if it can't map a character. Other\n"
+"    settings include \"replace\", which replaces unknown characters, and\n"
+"    \"ignore\", which drops them. This setting can be overridden with\n"
+"    the --encodingmode command-line option.\n"
+"\n"
+"HGMERGE::\n"
+"    An executable to use for resolving merge conflicts. The program\n"
+"    will be executed with three arguments: local file, remote file,\n"
+"    ancestor file.\n"
+"\n"
+"    (deprecated, use .hgrc)\n"
+"\n"
+"HGRCPATH::\n"
+"    A list of files or directories to search for hgrc files. Item\n"
+"    separator is \":\" on Unix, \";\" on Windows. If HGRCPATH is not set,\n"
+"    platform default search path is used. If empty, only the .hg/hgrc\n"
+"    from the current repository is read.\n"
+"\n"
+"    For each element in HGRCPATH:\n"
+"    * if it's a directory, all directories ending with .rc are added\n"
+"    * otherwise, the directory itself will be added\n"
+"\n"
+"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:\n"
+"\n"
+"    * HGUSER (deprecated)\n"
+"    * hgrc files from the HGRCPATH\n"
+"    * EMAIL\n"
+"    * interactive prompt\n"
+"    * LOGNAME (with '@hostname' appended)\n"
+"\n"
+"    (deprecated, use .hgrc)\n"
+"\n"
+"EMAIL::\n"
+"    May be used as the author of a commit; see HGUSER.\n"
+"\n"
+"LOGNAME::\n"
+"    May be used as the author of a commit; see HGUSER.\n"
+"\n"
+"VISUAL::\n"
+"    This is the name of the editor to use when committing. See EDITOR.\n"
+"\n"
+"EDITOR::\n"
+"    Sometimes Mercurial needs to open a text file in an editor\n"
+"    for a user to modify, for example when writing commit messages.\n"
+"    The editor it uses is determined by looking at the environment\n"
+"    variables HGEDITOR, VISUAL and EDITOR, in that order. The first\n"
+"    non-empty one is chosen. If all of them are empty, the editor\n"
+"    defaults to 'vi'.\n"
+"\n"
+"PYTHONPATH::\n"
+"    This is used by Python to find imported modules and may need to be set\n"
+"    appropriately if this Mercurial is not installed system-wide.\n"
+"    "
+msgstr ""
+
+msgid "Specifying Single Revisions"
+msgstr ""
+
+msgid ""
+"\n"
+"    Mercurial supports several ways to specify individual\n"
+"    revisions.\n"
+"\n"
+"    A plain integer is treated as a revision number. Negative\n"
+"    integers are treated as toplogical offsets from the tip, with\n"
+"    -1 denoting the tip. As such, negative numbers are only useful\n"
+"    if you've memorized your local tree numbers and want to save\n"
+"    typing a single digit. This editor suggests copy and paste.\n"
+"\n"
+"    A 40-digit hexadecimal string is treated as a unique revision\n"
+"    identifier.\n"
+"\n"
+"    A hexadecimal string less than 40 characters long is treated as a\n"
+"    unique revision identifier, and referred to as a short-form\n"
+"    identifier. A short-form identifier is only valid if it is the\n"
+"    prefix of exactly one full-length identifier.\n"
+"\n"
+"    Any other string is treated as a tag name, which is a symbolic\n"
+"    name associated with a revision identifier. Tag names may not\n"
+"    contain the \":\" character.\n"
+"\n"
+"    The reserved name \"tip\" is a special tag that always identifies\n"
+"    the most recent revision.\n"
+"\n"
+"    The reserved name \"null\" indicates the null revision. This is the\n"
+"    revision of an empty repository, and the parent of revision 0.\n"
+"\n"
+"    The reserved name \".\" indicates the working directory parent. If\n"
+"    no working directory is checked out, it is equivalent to null.\n"
+"    If an uncommitted merge is in progress, \".\" is the revision of\n"
+"    the first parent.\n"
+"    "
+msgstr ""
+
+msgid "Specifying Multiple Revisions"
+msgstr "指定多个版本"
+
+msgid ""
+"\n"
+"    When Mercurial accepts more than one revision, they may be\n"
+"    specified individually, or provided as a topologically continuous\n"
+"    range, separated by the \":\" character.\n"
+"\n"
+"    The syntax of range notation is [BEGIN]:[END], where BEGIN and END\n"
+"    are revision identifiers. Both BEGIN and END are optional. If\n"
+"    BEGIN is not specified, it defaults to revision number 0. If END\n"
+"    is not specified, it defaults to the tip. The range \":\" thus\n"
+"    means \"all revisions\".\n"
+"\n"
+"    If BEGIN is greater than END, revisions are treated in reverse\n"
+"    order.\n"
+"\n"
+"    A range acts as a closed interval. This means that a range of 3:5\n"
+"    gives 3, 4 and 5. Similarly, a range of 9:6 gives 9, 8, 7, and 6.\n"
+"    "
+msgstr ""
+"\n"
+"    当水银接受多个版本时,它们可以单独给出,或者以字符 \":\" 分割的拓扑连续\n"
+"    范围格式提供。\n"
+"\n"
+"    范围的语法是 '[BEGIN]:[END]',其中 'BEGIN' 和 'END' 是版本标识。'BEGIN'\n"
+"    和 'END' 都是可选的。'BEGIN' 默认是 0,'END' 默认是 'tip'。因此范围 \":"
+"\"\n"
+"    意味着全部版本。\n"
+"\n"
+"    如果 'BEGIN' 大于 'END',版本视为反序。\n"
+"\n"
+"    范围是闭区间。即范围 '3:5' 是 '3','4','5'。同样,范围 '9:6' 是 '9',\n"
+"    '8','7' 和 '6'。\n"
+"    "
+
+msgid "Diff Formats"
+msgstr "差异格式"
+
+msgid ""
+"\n"
+"    Mercurial's default format for showing changes between two versions\n"
+"    of a file is compatible with the unified format of GNU diff, which\n"
+"    can be used by GNU patch and many other standard tools.\n"
+"\n"
+"    While this standard format is often enough, it does not encode the\n"
+"    following information:\n"
+"\n"
+"     - executable status and other permission bits\n"
+"     - copy or rename information\n"
+"     - changes in binary files\n"
+"     - creation or deletion of empty files\n"
+"\n"
+"    Mercurial also supports the extended diff format from the git VCS\n"
+"    which addresses these limitations. The git diff format is not\n"
+"    produced by default because a few widespread tools still do not\n"
+"    understand this format.\n"
+"\n"
+"    This means that when generating diffs from a Mercurial repository\n"
+"    (e.g. with \"hg export\"), you should be careful about things like\n"
+"    file copies and renames or other things mentioned above, because\n"
+"    when applying a standard diff to a different repository, this extra\n"
+"    information is lost. Mercurial's internal operations (like push and\n"
+"    pull) are not affected by this, because they use an internal binary\n"
+"    format for communicating changes.\n"
+"\n"
+"    To make Mercurial produce the git extended diff format, use the\n"
+"    --git option available for many commands, or set 'git = True' in the\n"
+"    [diff] section of your hgrc. You do not need to set this option when\n"
+"    importing diffs in this format or using them in the mq extension.\n"
+"    "
+msgstr ""
+"\n"
+"    水银显示文件不同版本之间差异的格式与 GNU diff 标准格式兼容,可用于\n"
+"    GNU patch 和许多标准工具。\n"
+"\n"
+"    虽然标准格式在大多数情况下都能满足要求,但是它不包含下述信息:\n"
+"\n"
+"     - 可执行状态和其它权限位\n"
+"     - 复制或改名信息\n"
+"     - 二进制文件的修改\n"
+"     - 创建或删除空文件\n"
+"\n"
+"    水银也支持解决这些限制的 git 扩展差异格式。由于一些常用的工具还不支持\n"
+"    此格式,所以它不是默认格式。\n"
+"\n"
+"    这意味着当从水银版本库(例如 \"hg export\")产生差异时,在其它版本库应用标\n"
+"    准差异时,会丢失文件复制或改名等额外信息,所以你要小心处理。水银的内部\n"
+"    操作(例如 push 和 pull)在传达改变时,使用内部的二进制格式,所以不受影\n"
+"    响。\n"
+"\n"
+"    要让水银产生 git 扩展差异格式,可以对许多命令使用选项 '--git',或者在\n"
+"    你的 hgrc 文件中的节 '[diff]' 中增加 'git = True'。当你从此格式导入时,\n"
+"    或在 mq 扩展中使用时,不需要设置此选项。\n"
+"    "
+
+msgid "Template Usage"
+msgstr "模版用法"
+
+msgid ""
+"\n"
+"    Mercurial allows you to customize output of commands through\n"
+"    templates. You can either pass in a template from the command line,\n"
+"    via the --template option, or select an existing template-style (--"
+"style).\n"
+"\n"
+"    You can customize output for any \"log-like\" command: log, outgoing,\n"
+"    incoming, tip, parents, heads and glog.\n"
+"\n"
+"    Three styles are packaged with Mercurial: default (the style used\n"
+"    when no explicit preference is passed), compact and changelog. Usage:\n"
+"\n"
+"        $ hg log -r1 --style changelog\n"
+"\n"
+"    A template is a piece of text, with markup to invoke variable expansion:\n"
+"\n"
+"        $ hg log -r1 --template \"{node}\\n\"\n"
+"        b56ce7b07c52de7d5fd79fb89701ea538af65746\n"
+"\n"
+"    Strings in curly braces are called keywords. The availability of\n"
+"    keywords depends on the exact context of the templater. These keywords\n"
+"    are usually available for templating a log-like command:\n"
+"\n"
+"    - author: String. The unmodified author of the changeset.\n"
+"    - branches: String. The name of the branch on which the changeset\n"
+"          was committed. Will be empty if the branch name was default.\n"
+"    - date: Date information. The date when the changeset was committed.\n"
+"    - desc: String. The text of the changeset description.\n"
+"    - files: List of strings. All files modified, added, or removed by\n"
+"          this changeset.\n"
+"    - file_adds: List of strings. Files added by this changeset.\n"
+"    - file_mods: List of strings. Files modified by this changeset.\n"
+"    - file_dels: List of strings. Files removed by this changeset.\n"
+"    - node: String. The changeset identification hash, as a 40-character\n"
+"          hexadecimal string.\n"
+"    - parents: List of strings. The parents of the changeset.\n"
+"    - rev: Integer. The repository-local changeset revision number.\n"
+"    - tags: List of strings. Any tags associated with the changeset.\n"
+"\n"
+"    The \"date\" keyword does not produce human-readable output. If you\n"
+"    want to use a date in your output, you can use a filter to process it.\n"
+"    Filters are functions which return a string based on the input variable.\n"
+"    You can also use a chain of filters to get the desired output:\n"
+"\n"
+"       $ hg tip --template \"{date|isodate}\\n\"\n"
+"       2008-08-21 18:22 +0000\n"
+"\n"
+"    List of filters:\n"
+"\n"
+"    - addbreaks: Any text. Add an XHTML \"<br />\" tag before the end of\n"
+"          every line except the last.\n"
+"    - age: Date. Returns a human-readable date/time difference between\n"
+"          the given date/time and the current date/time.\n"
+"    - basename: Any text. Treats the text as a path, and returns the\n"
+"          last component of the path after splitting by the path\n"
+"          separator (ignoring trailing seprators). For example,\n"
+"          \"foo/bar/baz\" becomes \"baz\" and \"foo/bar//\" becomes \"bar\".\n"
+"    - date: Date. Returns a date in a Unix date format, including\n"
+"          the timezone: \"Mon Sep 04 15:13:13 2006 0700\".\n"
+"    - domain: Any text. Finds the first string that looks like an email\n"
+"          address, and extracts just the domain component.\n"
+"          Example: 'User <user@example.com>' becomes 'example.com'.\n"
+"    - email: Any text. Extracts the first string that looks like an email\n"
+"          address. Example: 'User <user@example.com>' becomes\n"
+"          'user@example.com'.\n"
+"    - escape: Any text. Replaces the special XML/XHTML characters \"&\",\n"
+"          \"<\" and \">\" with XML entities.\n"
+"    - fill68: Any text. Wraps the text to fit in 68 columns.\n"
+"    - fill76: Any text. Wraps the text to fit in 76 columns.\n"
+"    - firstline: Any text. Returns the first line of text.\n"
+"    - hgdate: Date. Returns the date as a pair of numbers:\n"
+"          \"1157407993 25200\" (Unix timestamp, timezone offset).\n"
+"    - isodate: Date. Returns the date in ISO 8601 format.\n"
+"    - obfuscate: Any text. Returns the input text rendered as a sequence\n"
+"          of XML entities.\n"
+"    - person: Any text. Returns the text before an email address.\n"
+"    - rfc822date: Date. Returns a date using the same format used\n"
+"          in email headers.\n"
+"    - short: Changeset hash. Returns the short form of a changeset hash,\n"
+"          i.e. a 12-byte hexadecimal string.\n"
+"    - shortdate: Date. Returns a date like \"2006-09-18\".\n"
+"    - strip: Any text. Strips all leading and trailing whitespace.\n"
+"    - tabindent: Any text. Returns the text, with every line except the\n"
+"          first starting with a tab character.\n"
+"    - urlescape: Any text. Escapes all \"special\" characters. For example,\n"
+"          \"foo bar\" becomes \"foo%20bar\".\n"
+"    - user: Any text. Returns the user portion of an email address.\n"
+"    "
+msgstr ""
+"\n"
+"    水银允许你通过模版定制命令的输出。你可以通过命令行选项 '--template'\n"
+"    来使用模版,或者选择已有的模版样式(--style)。\n"
+"\n"
+"    你可以定制任意输出与日志信息类似的命令,即: log,outgoing,incoming,\n"
+"    tip,parents,heads 和 glog。\n"
+"\n"
+"    水银中内置了 3 种样式: default (默认), compact 和 changelog。用法:\n"
+"\n"
+"        $ hg log -r1 --style changelog\n"
+"\n"
+"    模版是文本片断,其中的标记用于变量扩展:\n"
+"\n"
+"        $ hg log -r1 --template \"{node}\\n\"\n"
+"        b56ce7b07c52de7d5fd79fb89701ea538af65746\n"
+"\n"
+"    花括号中的字符串称为关键字。可用的关键字依赖于模版的上下文。下述关键字\n"
+"    可用于输出与日志信息类似的命令:\n"
+"\n"
+"    - author: 字符串。修改集的作者。\n"
+"    - branches: 字符串。修改集的分支。如果分支名称为 'default' 则为空。\n"
+"    - date: 日期信息。修改集的日期。\n"
+"    - desc: 字符串。修改集的描述。\n"
+"    - files: 字符串列表。修改集中被修改、增加和删除的全部文件。\n"
+"    - file_adds: 字符串列表。修改集中被增加的文件。\n"
+"    - file_mods: 字符串列表。修改集中被修改的文件\n"
+"    - file_dels: 字符串列表。修改集中被删除的文件\n"
+"    - node: 字符串。修改集的哈系标识,40 个字符的 16 进制字符串。\n"
+"    - parents: 字符串列表。修改集的父亲。\n"
+"    - rev: 整数。本地版本库的修改集的版本号。\n"
+"    - tags: 字符串列表。修改集的标签。\n"
+"\n"
+"    关键字 \"date\" 不产生人工可读的输出。如果你想在输出中使用日期,可以使用\n"
+"    过滤器来处理它。过滤器是根据输入变量返回字符串的函数。你还可以使用过滤\n"
+"    链来产生理想的输出:\n"
+"\n"
+"       $ hg tip --template \"{date|isodate}\\n\"\n"
+"       2008-08-21 18:22 +0000\n"
+"\n"
+"    过滤器列表:\n"
+"\n"
+"    - addbreaks: 输入任意文本。除了最后一行,在每行的结尾增加 XHTML 标签\n"
+"          \"<br />\"。\n"
+"    - age: 输入日期。返回指定日期与当前日期差异的人工可读的字符串。\n"
+"    - basename: 输入任意文本。将输入视为路径,返回被路径分隔符隔开的最后\n"
+"          一个组件的名称(忽略结尾的分隔符)。例如 \"foo/bar/baz\" 成为 \"baz"
+"\",\n"
+"          \"foo/bar//\" 成为 \"bar\"。\n"
+"    - date: 输入日期。返回指定日期的 Unix 日期格式字符串,包含时区,例如: \n"
+"          \"Mon Sep 04 15:13:13 2006 0700\"。\n"
+"    - domain: 输入任意文本。找到第一个 email 地址,返回其域名。例如: \n"
+"          'User <user@example.com>' 成为 'example.com'。\n"
+"    - email: 输入任意文本。返回第一个 email 地址。例如: \n"
+"          'User <user@example.com>' 成为 'user@example.com'。\n"
+"    - escape: 输入任意文本。用 XML 实体来封装 XML/XHTML 的特殊字符 \"&\",\n"
+"          \"<\" 和 \">\"。\n"
+"    - fill68: 输入任意文本。格式化为 68 列文本。\n"
+"    - fill76: 输入任意文本。格式化为 76 列文本。\n"
+"    - firstline: 输入任意文本。返回首行。\n"
+"    - hgdate: 输入日期。返回一对数字:\n"
+"          \"1157407993 25200\" (Unix 时戳,时区偏移)。\n"
+"    - isodate: 输入日期。返回 ISO 8601 格式的日期。\n"
+"    - obfuscate: 输入任意文本。返回其 XML 实体序列。\n"
+"    - person: 输入任意文本。返回 email 地址前的文本。\n"
+"    - rfc822date: 输入日期。返回 email 头部使用的日期格式。\n"
+"    - short: 修改集哈系。返回修改集哈系的短格式。例如 12 字符的 16 进制\n"
+"          字符串。\n"
+"    - shortdate: 输入日期。返回格式类似于 \"2006-09-18\"。\n"
+"    - strip: 输入任意文本。删除全部行首与行尾空白。\n"
+"    - tabindent: 输入任意文本。除了首行,在每行的开始增加制表符号。\n"
+"    - urlescape: 输入任意文本。封装全部特殊字符。例如\n"
+"          \"foo bar\" 成为 \"foo%20bar\"。\n"
+"    - user: 输入任意文本。返回 email 地址中的用户名称部分。\n"
+"    "
+
+msgid "Url Paths"
+msgstr "统一资源定位路径"
+
+msgid ""
+"\n"
+"    Valid URLs are of the form:\n"
+"\n"
+"      local/filesystem/path (or file://local/filesystem/path)\n"
+"      http://[user[:pass]@]host[:port]/[path]\n"
+"      https://[user[:pass]@]host[:port]/[path]\n"
+"      ssh://[user[:pass]@]host[:port]/[path]\n"
+"\n"
+"    Paths in the local filesystem can either point to Mercurial\n"
+"    repositories or to bundle files (as created by 'hg bundle' or\n"
+"    'hg incoming --bundle').\n"
+"\n"
+"    An optional identifier after # indicates a particular branch, tag,\n"
+"    or changeset to use from the remote repository.\n"
+"\n"
+"    Some features, such as pushing to http:// and https:// URLs are\n"
+"    only possible if the feature is explicitly enabled on the\n"
+"    remote Mercurial server.\n"
+"\n"
+"    Some notes about using SSH with Mercurial:\n"
+"    - SSH requires an accessible shell account on the destination machine\n"
+"      and a copy of hg in the remote path or specified with as remotecmd.\n"
+"    - path is relative to the remote user's home directory by default.\n"
+"      Use an extra slash at the start of a path to specify an absolute path:\n"
+"        ssh://example.com//tmp/repository\n"
+"    - Mercurial doesn't use its own compression via SSH; the right thing\n"
+"      to do is to configure it in your ~/.ssh/config, e.g.:\n"
+"        Host *.mylocalnetwork.example.com\n"
+"          Compression no\n"
+"        Host *\n"
+"          Compression yes\n"
+"      Alternatively specify \"ssh -C\" as your ssh command in your hgrc or\n"
+"      with the --ssh command line option.\n"
+"\n"
+"    These urls can all be stored in your hgrc with path aliases under the\n"
+"    [paths] section like so:\n"
+"    [paths]\n"
+"    alias1 = URL1\n"
+"    alias2 = URL2\n"
+"    ...\n"
+"\n"
+"    You can then use the alias for any command that uses a url (for example\n"
+"    'hg pull alias1' would pull from the 'alias1' path).\n"
+"\n"
+"    Two path aliases are special because they are used as defaults\n"
+"    when you do not provide the url to a command:\n"
+"\n"
+"    default:\n"
+"      When you create a repository with hg clone, the clone command saves\n"
+"      the location of the source repository as the new repository's\n"
+"      'default' path. This is then used when you omit path from push-\n"
+"      and pull-like commands (including in and out).\n"
+"\n"
+"    default-push:\n"
+"      The push command will look for a path named 'default-push', and\n"
+"      prefer it over 'default' if both are defined.\n"
+"    "
+msgstr ""
+"\n"
+"    有效的位置格式:\n"
+"\n"
+"      local/filesystem/path (or file://local/filesystem/path)\n"
+"      http://[user[:pass]@]host[:port]/[path]\n"
+"      https://[user[:pass]@]host[:port]/[path]\n"
+"      ssh://[user[:pass]@]host[:port]/[path]\n"
+"\n"
+"    位于本地文件系统中的路径可以指向版本库,也可以指向打包的文件(被\n"
+"    'hg bundle' 或 'hg incoming --bundle' 创建)。\n"
+"\n"
+"    在 '#' 后面可选的标识符用于指定要取得的远程版本库的分支,标签或\n"
+"    修改集。\n"
+"\n"
+"    仅当远程水银服务器显式启用时,才能推到 'http://' 和 'https://'。\n"
+"\n"
+"    在水银中使用 SSH 的一些提示:\n"
+"    - 使用 SSH 时,需要在远程主机上有可登录帐号,远程路径中还需要有\n"
+"      hg,或者有指定的远程命令。\n"
+"    - 默认 'path' 是相对于远程主机上的用户家目录。\n"
+"      可以在路径前增加一个斜线指定绝对路径:\n"
+"        ssh://example.com//tmp/repository\n"
+"    - 水银使用 SSH 时不使用压缩,所以你可以在 ~/.ssh/config 中配置\n"
+"      SSH 执行压缩,例如:\n"
+"        Host *.mylocalnetwork.example.com\n"
+"          Compression no\n"
+"        Host *\n"
+"          Compression yes\n"
+"      另一个方法是在你的 hgrc 中将 \"ssh -C\" 作为你的 ssh 命令,或\n"
+"      用于命令行参数 '--ssh' 中。\n"
+"\n"
+"    这些路径可以在你的 'hgrc' 中的节 '[paths]' 中定义别名:\n"
+"    [paths]\n"
+"    alias1 = URL1\n"
+"    alias2 = URL2\n"
+"    ...\n"
+"\n"
+"    然后你就可以在任意命令中使用这些别名作为路径(例如 'hg pull alias1'\n"
+"    会从 'alias1' 定义的路径取得指定版本)。\n"
+"\n"
+"    因为用于默认路径,所以这 2 个路径别名比较特殊:\n"
+"\n"
+"    default:\n"
+"      当你使用 'hg clone' 创建版本库时,此命令会将源版本库的位置保存\n"
+"      为新版本库的 'default' 路径,然后你可以对类似 'push' 和 'pull'\n"
+"      的命令省略路径(包含进和出)。\n"
+"\n"
+"    default-push:\n"
+"      命令 'push' 会查找别名是 'default-push' 的路径,它覆盖定义 'default'。\n"
+"    "
+
+#, python-format
+msgid "destination directory: %s\n"
+msgstr "目标目录: %s\n"
+
+#, python-format
+msgid "destination '%s' already exists"
+msgstr ""
+
+msgid ""
+"src repository does not support revision lookup and so doesn't support clone "
+"by revision"
+msgstr ""
+
+msgid "clone from remote to remote not supported"
+msgstr ""
+
+msgid "updating working directory\n"
+msgstr "正在更新工作目录\n"
+
+msgid "updated"
+msgstr "已更新"
+
+msgid "merged"
+msgstr "已合并"
+
+msgid "removed"
+msgstr "已删除"
+
+msgid "unresolved"
+msgstr "未解决"
+
+#, python-format
+msgid "%d files %s"
+msgstr "%d 个文件%s"
+
+msgid "use 'hg resolve' to retry unresolved file merges\n"
+msgstr ""
+
+msgid ""
+"use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to "
+"abandon\n"
+msgstr ""
+
+msgid "(branch merge, don't forget to commit)\n"
+msgstr ""
+
+#, python-format
+msgid "error reading %s/.hg/hgrc: %s\n"
+msgstr ""
+
+msgid "SSL support is unavailable"
+msgstr ""
+
+msgid "IPv6 not available on this system"
+msgstr ""
+
+#, python-format
+msgid "cannot start server at '%s:%d': %s"
+msgstr ""
+
+#, python-format
+msgid "calling hook %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s hook is invalid (\"%s\" not in a module)"
+msgstr ""
+
+#, python-format
+msgid "%s hook is invalid (import of \"%s\" failed)"
+msgstr ""
+
+#, python-format
+msgid "%s hook is invalid (\"%s\" is not defined)"
+msgstr ""
+
+#, python-format
+msgid "%s hook is invalid (\"%s\" is not callable)"
+msgstr ""
+
+#, python-format
+msgid "error: %s hook failed: %s\n"
+msgstr ""
+
+#, python-format
+msgid "error: %s hook raised an exception: %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s hook failed"
+msgstr ""
+
+#, python-format
+msgid "warning: %s hook failed\n"
+msgstr ""
+
+#, python-format
+msgid "running hook %s: %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s hook %s"
+msgstr ""
+
+#, python-format
+msgid "warning: %s hook %s\n"
+msgstr ""
+
+msgid "connection ended unexpectedly"
+msgstr ""
+
+#, python-format
+msgid "unsupported URL component: \"%s\""
+msgstr ""
+
+#, python-format
+msgid "using %s\n"
+msgstr "使用 %s\n"
+
+#, python-format
+msgid "capabilities: %s\n"
+msgstr ""
+
+msgid "operation not supported over http"
+msgstr ""
+
+#, python-format
+msgid "sending %s command\n"
+msgstr "发送命令 '%s'\n"
+
+#, python-format
+msgid "sending %s bytes\n"
+msgstr "发送 %s 字节\n"
+
+msgid "authorization failed"
+msgstr "授权失败"
+
+#, python-format
+msgid "http error while sending %s command\n"
+msgstr ""
+
+msgid "http error, possibly caused by proxy setting"
+msgstr ""
+
+#, python-format
+msgid "real URL is %s\n"
+msgstr "实际 URL 是 '%s'\n"
+
+#, python-format
+msgid "Requested URL: '%s'\n"
+msgstr "请求的 URL: '%s'\n"
+
+#, python-format
+msgid "'%s' does not appear to be an hg repository"
+msgstr "'%s' 似乎不是水银版本库"
+
+#, python-format
+msgid "'%s' sent a broken Content-Type header (%s)"
+msgstr ""
+
+#, python-format
+msgid "'%s' uses newer protocol %s"
+msgstr ""
+
+msgid "look up remote revision"
+msgstr ""
+
+msgid "unexpected response:"
+msgstr ""
+
+msgid "look up remote changes"
+msgstr ""
+
+msgid "push failed (unexpected response):"
+msgstr ""
+
+#, python-format
+msgid "push failed: %s"
+msgstr ""
+
+msgid "Python support for SSL and HTTPS is not installed"
+msgstr ""
+
+msgid "cannot create new http repository"
+msgstr ""
+
+#, python-format
+msgid "%s: ignoring invalid syntax '%s'\n"
+msgstr ""
+
+#, python-format
+msgid "skipping unreadable ignore file '%s': %s\n"
+msgstr ""
+
+#, python-format
+msgid "repository %s not found"
+msgstr ""
+
+#, python-format
+msgid "repository %s already exists"
+msgstr "版本库 %s 已存在"
+
+#, python-format
+msgid "requirement '%s' not supported"
+msgstr ""
+
+#, python-format
+msgid "%r cannot be used in a tag name"
+msgstr ""
+
+msgid "working copy of .hgtags is changed (please commit .hgtags manually)"
+msgstr ""
+
+#, python-format
+msgid "%s, line %s: %s\n"
+msgstr ""
+
+msgid "cannot parse entry"
+msgstr ""
+
+#, python-format
+msgid "node '%s' is not well formed"
+msgstr ""
+
+#, python-format
+msgid "tag '%s' refers to unknown node"
+msgstr ""
+
+#, python-format
+msgid "unknown revision '%s'"
+msgstr ""
+
+#, python-format
+msgid "filtering %s through %s\n"
+msgstr ""
+
+msgid "journal already exists - run hg recover"
+msgstr ""
+
+msgid "rolling back interrupted transaction\n"
+msgstr "回滚中断的事务\n"
+
+msgid "no interrupted transaction available\n"
+msgstr ""
+
+msgid "rolling back last transaction\n"
+msgstr "回滚最近的事务\n"
+
+#, python-format
+msgid "Named branch could not be reset, current branch still is: %s\n"
+msgstr ""
+
+msgid "no rollback information available\n"
+msgstr "没有回滚信息可用\n"
+
+#, python-format
+msgid "waiting for lock on %s held by %r\n"
+msgstr ""
+
+#, python-format
+msgid "repository %s"
+msgstr ""
+
+#, python-format
+msgid "working directory of %s"
+msgstr ""
+
+#, python-format
+msgid " %s: searching for copy revision for %s\n"
+msgstr ""
+
+#, python-format
+msgid " %s: copy %s:%s\n"
+msgstr ""
+
+msgid "cannot partially commit a merge (do not specify files or patterns)"
+msgstr ""
+
+#, python-format
+msgid "%s not tracked!\n"
+msgstr "%s 没有被跟踪!\n"
+
+msgid "unresolved merge conflicts (see hg resolve)"
+msgstr "未解决的合并冲突(参见 'hg resolve')"
+
+msgid "nothing changed\n"
+msgstr "没有改变\n"
+
+#, python-format
+msgid "trouble committing %s!\n"
+msgstr "提交 '%s' 出错!\n"
+
+msgid "HG: Enter commit message.  Lines beginning with 'HG:' are removed."
+msgstr "HG: 请输入提交日志。以 'HG:' 开始的行会被删除。"
+
+msgid "empty commit message"
+msgstr "空的提交日志"
+
+#, python-format
+msgid "%s does not exist!\n"
+msgstr "%s 不存在!\n"
+
+#, python-format
+msgid ""
+"%s: files over 10MB may cause memory and performance problems\n"
+"(use 'hg revert %s' to unadd the file)\n"
+msgstr ""
+
+#, python-format
+msgid "%s not added: only files and symlinks supported currently\n"
+msgstr ""
+
+#, python-format
+msgid "%s already tracked!\n"
+msgstr ""
+
+#, python-format
+msgid "%s not added!\n"
+msgstr ""
+
+#, python-format
+msgid "%s still exists!\n"
+msgstr ""
+
+#, python-format
+msgid "%s not removed!\n"
+msgstr ""
+
+#, python-format
+msgid "copy failed: %s is not a file or a symbolic link\n"
+msgstr ""
+
+msgid "searching for changes\n"
+msgstr "正在搜索修改\n"
+
+#, python-format
+msgid "examining %s:%s\n"
+msgstr ""
+
+msgid "branch already found\n"
+msgstr ""
+
+#, python-format
+msgid "found incomplete branch %s:%s\n"
+msgstr ""
+
+#, python-format
+msgid "found new changeset %s\n"
+msgstr ""
+
+#, python-format
+msgid "request %d: %s\n"
+msgstr ""
+
+#, python-format
+msgid "received %s:%s\n"
+msgstr ""
+
+#, python-format
+msgid "narrowing %d:%d %s\n"
+msgstr ""
+
+#, python-format
+msgid "found new branch changeset %s\n"
+msgstr ""
+
+#, python-format
+msgid "narrowed branch search to %s:%s\n"
+msgstr ""
+
+msgid "already have changeset "
+msgstr ""
+
+msgid "warning: repository is unrelated\n"
+msgstr ""
+
+msgid "repository is unrelated"
+msgstr ""
+
+msgid "found new changesets starting at "
+msgstr ""
+
+#, python-format
+msgid "%d total queries\n"
+msgstr ""
+
+msgid "common changesets up to "
+msgstr ""
+
+msgid "requesting all changes\n"
+msgstr "正在请求全部修改\n"
+
+msgid ""
+"Partial pull cannot be done because other repository doesn't support "
+"changegroupsubset."
+msgstr ""
+
+msgid "abort: push creates new remote heads!\n"
+msgstr ""
+
+msgid "(did you forget to merge? use push -f to force)\n"
+msgstr ""
+
+msgid "note: unsynced remote changes!\n"
+msgstr ""
+
+#, python-format
+msgid "%d changesets found\n"
+msgstr "已发现 %d 个修改集\n"
+
+msgid "list of changesets:\n"
+msgstr ""
+
+#, python-format
+msgid "empty or missing revlog for %s"
+msgstr ""
+
+#, python-format
+msgid "add changeset %s\n"
+msgstr ""
+
+msgid "adding changesets\n"
+msgstr "正在增加修改集\n"
+
+msgid "received changelog group is empty"
+msgstr ""
+
+msgid "adding manifests\n"
+msgstr "正在增加清单\n"
+
+msgid "adding file changes\n"
+msgstr "正在增加文件改变\n"
+
+#, python-format
+msgid "adding %s revisions\n"
+msgstr ""
+
+msgid "received file revlog group is empty"
+msgstr ""
+
+#, python-format
+msgid " (%+d heads)"
+msgstr ""
+
+#, python-format
+msgid "added %d changesets with %d changes to %d files%s\n"
+msgstr "已增加 %d 个修改集,包含 %d 个改变,修改了 %d 个文件%s\n"
+
+msgid "updating the branch cache\n"
+msgstr ""
+
+msgid "Unexpected response from remote server:"
+msgstr ""
+
+msgid "operation forbidden by server"
+msgstr ""
+
+msgid "locking the remote repository failed"
+msgstr ""
+
+msgid "the server sent an unknown error code"
+msgstr ""
+
+msgid "streaming all changes\n"
+msgstr ""
+
+#, python-format
+msgid "%d files to transfer, %s of data\n"
+msgstr ""
+
+#, python-format
+msgid "adding %s (%s)\n"
+msgstr ""
+
+#, python-format
+msgid "transferred %s in %.1f seconds (%s/sec)\n"
+msgstr ""
+
+msgid "no [smtp]host in hgrc - cannot send mail"
+msgstr ""
+
+#, python-format
+msgid "sending mail: smtp host %s, port %s\n"
+msgstr ""
+
+msgid "can't use TLS: Python SSL support not installed"
+msgstr ""
+
+msgid "(using tls)\n"
+msgstr ""
+
+#, python-format
+msgid "(authenticating to mail server as %s)\n"
+msgstr ""
+
+#, python-format
+msgid "sending mail: %s\n"
+msgstr ""
+
+msgid "smtp specified as email transport, but no smtp host configured"
+msgstr ""
+
+#, python-format
+msgid "%r specified as email transport, but not in PATH"
+msgstr ""
+
+#, python-format
+msgid "ignoring invalid sendcharset: %s\n"
+msgstr ""
+
+#, python-format
+msgid "invalid email address: %s"
+msgstr ""
+
+#, python-format
+msgid "invalid local address: %s"
+msgstr ""
+
+msgid "'\\n' and '\\r' disallowed in filenames"
+msgstr ""
+
+#, python-format
+msgid "failed to remove %s from manifest"
+msgstr ""
+
+#, python-format
+msgid "diff context lines count must be an integer, not %r"
+msgstr ""
+
+#, python-format
+msgid ""
+"untracked file in working directory differs from file in requested revision: "
+"'%s'"
+msgstr ""
+
+#, python-format
+msgid "case-folding collision between %s and %s"
+msgstr ""
+
+msgid "resolving manifests\n"
+msgstr "正在解析清单\n"
+
+#, python-format
+msgid " overwrite %s partial %s\n"
+msgstr ""
+
+#, python-format
+msgid " ancestor %s local %s remote %s\n"
+msgstr ""
+
+#, python-format
+msgid ""
+" conflicting flags for %s\n"
+"(n)one, e(x)ec or sym(l)ink?"
+msgstr ""
+
+#, python-format
+msgid ""
+" local changed %s which remote deleted\n"
+"use (c)hanged version or (d)elete?"
+msgstr ""
+
+msgid "[cd]"
+msgstr ""
+
+msgid "c"
+msgstr ""
+
+#, python-format
+msgid ""
+"remote changed %s which local deleted\n"
+"use (c)hanged version or leave (d)eleted?"
+msgstr ""
+
+#, python-format
+msgid "preserving %s for resolve of %s\n"
+msgstr ""
+
+#, python-format
+msgid "update failed to remove %s: %s!\n"
+msgstr ""
+
+#, python-format
+msgid "getting %s\n"
+msgstr "正在检出 %s\n"
+
+#, python-format
+msgid "moving %s to %s\n"
+msgstr ""
+
+#, python-format
+msgid "getting %s to %s\n"
+msgstr ""
+
+#, python-format
+msgid "warning: detected divergent renames of %s to:\n"
+msgstr ""
+
+#, python-format
+msgid "branch %s not found"
+msgstr ""
+
+msgid "can't merge with ancestor"
+msgstr ""
+
+msgid "nothing to merge (use 'hg update' or check 'hg heads')"
+msgstr ""
+
+msgid "crosses branches (use 'hg merge' or 'hg update -C' to discard changes)"
+msgstr ""
+
+msgid "crosses branches (use 'hg merge' or 'hg update -C')"
+msgstr ""
+
+msgid "crosses named branches (use 'hg update -C' to discard changes)"
+msgstr ""
+
+#, python-format
+msgid "cannot create %s: destination already exists"
+msgstr ""
+
+#, python-format
+msgid "cannot create %s: unable to create destination directory"
+msgstr ""
+
+#, python-format
+msgid "found patch at byte %d\n"
+msgstr ""
+
+msgid "patch generated by hg export\n"
+msgstr ""
+
+#, python-format
+msgid "unable to find '%s' for patching\n"
+msgstr ""
+
+#, python-format
+msgid "patching file %s\n"
+msgstr ""
+
+#, python-format
+msgid "%d out of %d hunks FAILED -- saving rejects to file %s\n"
+msgstr ""
+
+#, python-format
+msgid "bad hunk #%d %s (%d %d %d %d)"
+msgstr ""
+
+#, python-format
+msgid "file %s already exists\n"
+msgstr ""
+
+#, python-format
+msgid "Hunk #%d succeeded at %d %s(offset %d %s).\n"
+msgstr ""
+
+#, python-format
+msgid "Hunk #%d FAILED at %d\n"
+msgstr ""
+
+#, python-format
+msgid "bad hunk #%d"
+msgstr ""
+
+#, python-format
+msgid "bad hunk #%d old text line %d"
+msgstr ""
+
+msgid "could not extract binary patch"
+msgstr ""
+
+#, python-format
+msgid "binary patch is %d bytes, not %d"
+msgstr ""
+
+#, python-format
+msgid "unable to strip away %d dirs from %s"
+msgstr ""
+
+msgid "undefined source and destination files"
+msgstr ""
+
+#, python-format
+msgid "malformed patch %s %s"
+msgstr ""
+
+#, python-format
+msgid "unsupported parser state: %s"
+msgstr ""
+
+#, python-format
+msgid "patch command failed: %s"
+msgstr ""
+
+#, python-format
+msgid "no valid hunks found; trying with %r instead\n"
+msgstr ""
+
+#, python-format
+msgid "saving bundle to %s\n"
+msgstr ""
+
+msgid "adding branch\n"
+msgstr ""
+
+#, python-format
+msgid "cannot %s; remote repository does not support the %r capability"
+msgstr ""
+
+#, python-format
+msgid "unknown compression type %r"
+msgstr ""
+
+#, python-format
+msgid "index %s unknown flags %#04x for format v0"
+msgstr ""
+
+#, python-format
+msgid "index %s unknown flags %#04x for revlogng"
+msgstr ""
+
+#, python-format
+msgid "index %s unknown format %d"
+msgstr ""
+
+msgid "no node"
+msgstr ""
+
+msgid "ambiguous identifier"
+msgstr ""
+
+msgid "no match found"
+msgstr ""
+
+#, python-format
+msgid "incompatible revision flag %x"
+msgstr ""
+
+#, python-format
+msgid "%s not found in the transaction"
+msgstr ""
+
+msgid "unknown base"
+msgstr ""
+
+msgid "consistency error adding group"
+msgstr ""
+
+#, python-format
+msgid "%s looks like a binary file."
+msgstr ""
+
+msgid "can only specify two labels."
+msgstr ""
+
+msgid "warning: conflicts during merge.\n"
+msgstr ""
+
+#, python-format
+msgid "couldn't parse location %s"
+msgstr ""
+
+msgid "could not create remote repo"
+msgstr ""
+
+msgid "remote: "
+msgstr ""
+
+msgid "no suitable response from remote hg"
+msgstr ""
+
+#, python-format
+msgid "push refused: %s"
+msgstr ""
+
+msgid "unsynced changes"
+msgstr ""
+
+msgid "cannot lock static-http repository"
+msgstr ""
+
+msgid "cannot create new static-http repository"
+msgstr ""
+
+#, python-format
+msgid "invalid entry in fncache, line %s"
+msgstr ""
+
+msgid "scanning\n"
+msgstr "正在扫描\n"
+
+#, python-format
+msgid "%d files, %d bytes to transfer\n"
+msgstr "需要传输 %d 个文件,%d 字节\n"
+
+#, python-format
+msgid "sending %s (%d bytes)\n"
+msgstr "正在发送 %s (%d 字节)\n"
+
+msgid "unmatched quotes"
+msgstr "不匹配的引号"
+
+#, python-format
+msgid "style not found: %s"
+msgstr "没有找到样式: %s"
+
+#, python-format
+msgid "%s:%s: parse error"
+msgstr "%s:%s: 解析出错"
+
+#, python-format
+msgid "template file %s: %s"
+msgstr "模版文件 %s: %s"
+
+#, python-format
+msgid "Error expanding '%s%%%s'"
+msgstr ""
+
+msgid "transaction abort!\n"
+msgstr "事务中止!\n"
+
+#, python-format
+msgid "failed to truncate %s\n"
+msgstr "截断 '%s' 失败\n"
+
+msgid "rollback completed\n"
+msgstr "完成回滚\n"
+
+#, python-format
+msgid "Not trusting file %s from untrusted user %s, group %s\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"Failed to parse %s\n"
+"%s"
+msgstr ""
+"解析 '%s' 失败\n"
+"%s"
+
+#, python-format
+msgid "Ignored: %s\n"
+msgstr ""
+
+#, python-format
+msgid "unable to open %s: %s"
+msgstr ""
+
+#, python-format
+msgid ""
+"failed to parse %s\n"
+"%s"
+msgstr ""
+
+#, python-format
+msgid ""
+"Error in configuration section [%s] parameter '%s':\n"
+"%s"
+msgstr ""
+
+#, python-format
+msgid "Ignoring untrusted configuration option %s.%s = %s\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"Error in configuration section [%s]:\n"
+"%s"
+msgstr ""
+
+msgid "enter a commit username:"
+msgstr ""
+
+#, python-format
+msgid "No username found, using '%s' instead\n"
+msgstr ""
+
+msgid "Please specify a username."
+msgstr ""
+
+#, python-format
+msgid "username %s contains a newline\n"
+msgstr ""
+
+msgid "unrecognized response\n"
+msgstr ""
+
+msgid "response expected"
+msgstr ""
+
+msgid "password: "
+msgstr "密码: "
+
+msgid "edit failed"
+msgstr ""
+
+msgid "http authorization required"
+msgstr "需要 http 授权"
+
+msgid "http authorization required\n"
+msgstr "需要 http 授权\n"
+
+#, python-format
+msgid "realm: %s\n"
+msgstr "领域: %s\n"
+
+#, python-format
+msgid "user: %s\n"
+msgstr "用户: %s\n"
+
+msgid "user:"
+msgstr "用户:"
+
+#, python-format
+msgid "proxying through http://%s:%s\n"
+msgstr ""
+
+#, python-format
+msgid "http auth: user %s, password %s\n"
+msgstr ""
+
+#, python-format
+msgid "%s, please check your locale settings"
+msgstr ""
+
+#, python-format
+msgid "command '%s' failed: %s"
+msgstr ""
+
+#, python-format
+msgid "path contains illegal component: %s"
+msgstr ""
+
+#, python-format
+msgid "path %r is inside repo %r"
+msgstr ""
+
+#, python-format
+msgid "path %r traverses symbolic link %r"
+msgstr ""
+
+msgid "Hardlinks not supported"
+msgstr ""
+
+msgid "user name not available - set USERNAME environment variable"
+msgstr ""
+
+#, python-format
+msgid "exited with status %d"
+msgstr ""
+
+#, python-format
+msgid "killed by signal %d"
+msgstr ""
+
+#, python-format
+msgid "stopped by signal %d"
+msgstr ""
+
+msgid "invalid exit code"
+msgstr ""
+
+#, python-format
+msgid "could not symlink to %r: %s"
+msgstr ""
+
+#, python-format
+msgid "invalid date: %r "
+msgstr ""
+
+#, python-format
+msgid "date exceeds 32 bits: %d"
+msgstr ""
+
+#, python-format
+msgid "impossible time zone offset: %d"
+msgstr ""
+
+#, python-format
+msgid "invalid day spec: %s"
+msgstr ""
+
+#, python-format
+msgid "%.0f GB"
+msgstr ""
+
+#, python-format
+msgid "%.1f GB"
+msgstr ""
+
+#, python-format
+msgid "%.2f GB"
+msgstr ""
+
+#, python-format
+msgid "%.0f MB"
+msgstr ""
+
+#, python-format
+msgid "%.1f MB"
+msgstr ""
+
+#, python-format
+msgid "%.2f MB"
+msgstr ""
+
+#, python-format
+msgid "%.0f KB"
+msgstr ""
+
+#, python-format
+msgid "%.1f KB"
+msgstr ""
+
+#, python-format
+msgid "%.2f KB"
+msgstr ""
+
+#, python-format
+msgid "%.0f bytes"
+msgstr ""
+
+msgid "cannot verify bundle or remote repos"
+msgstr ""
+
+msgid "interrupted"
+msgstr ""
+
+#, python-format
+msgid "empty or missing %s"
+msgstr ""
+
+#, python-format
+msgid "data length off by %d bytes"
+msgstr ""
+
+#, python-format
+msgid "index contains %d extra bytes"
+msgstr ""
+
+#, python-format
+msgid "warning: `%s' uses revlog format 1"
+msgstr ""
+
+#, python-format
+msgid "warning: `%s' uses revlog format 0"
+msgstr ""
+
+#, python-format
+msgid "rev %d point to %s changeset %d"
+msgstr ""
+
+#, python-format
+msgid " (expected %s)"
+msgstr ""
+
+#, python-format
+msgid "unknown parent 1 %s of %s"
+msgstr ""
+
+#, python-format
+msgid "unknown parent 2 %s of %s"
+msgstr ""
+
+#, python-format
+msgid "checking parents of %s"
+msgstr ""
+
+#, python-format
+msgid "duplicate revision %d (%d)"
+msgstr ""
+
+#, python-format
+msgid "repository uses revlog format %d\n"
+msgstr ""
+
+msgid "checking changesets\n"
+msgstr ""
+
+#, python-format
+msgid "unpacking changeset %s"
+msgstr ""
+
+msgid "checking manifests\n"
+msgstr ""
+
+msgid "file without name in manifest"
+msgstr ""
+
+#, python-format
+msgid "reading manifest delta %s"
+msgstr ""
+
+msgid "crosschecking files in changesets and manifests\n"
+msgstr ""
+
+#, python-format
+msgid "changeset refers to unknown manifest %s"
+msgstr ""
+
+msgid "in changeset but not in manifest"
+msgstr ""
+
+msgid "in manifest but not in changeset"
+msgstr ""
+
+msgid "checking files\n"
+msgstr ""
+
+#, python-format
+msgid "cannot decode filename '%s'"
+msgstr ""
+
+#, python-format
+msgid "broken revlog! (%s)"
+msgstr ""
+
+msgid "missing revlog!"
+msgstr ""
+
+#, python-format
+msgid "%s not in manifests"
+msgstr ""
+
+#, python-format
+msgid "unpacked size is %s, %s expected"
+msgstr ""
+
+#, python-format
+msgid "unpacking %s"
+msgstr ""
+
+#, python-format
+msgid "empty or missing copy source revlog %s:%s"
+msgstr ""
+
+#, python-format
+msgid "warning: %s@%s: copy source revision is nullid %s:%s"
+msgstr ""
+
+#, python-format
+msgid "checking rename of %s"
+msgstr ""
+
+#, python-format
+msgid "%s in manifests not found"
+msgstr ""
+
+#, python-format
+msgid "warning: orphan revlog '%s'"
+msgstr ""
+
+#, python-format
+msgid "%d files, %d changesets, %d total revisions\n"
+msgstr ""
+
+#, python-format
+msgid "%d warnings encountered!\n"
+msgstr ""
+
+#, python-format
+msgid "%d integrity errors encountered!\n"
+msgstr ""
+
+#, python-format
+msgid "(first damaged changeset appears to be %d)\n"
+msgstr ""
--- a/mercurial/ancestor.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/ancestor.py	Wed Apr 08 23:24:22 2009 +0200
@@ -19,11 +19,13 @@
         return a
 
     # find depth from root of all ancestors
+    parentcache = {}
     visit = [a, b]
     depth = {}
     while visit:
         vertex = visit[-1]
         pl = pfunc(vertex)
+        parentcache[vertex] = pl
         if not pl:
             depth[vertex] = 0
             visit.pop()
@@ -46,7 +48,7 @@
             if n not in seen:
                 seen[n] = 1
                 yield (d, n)
-                for p in pfunc(n):
+                for p in parentcache[n]:
                     heapq.heappush(h, (depth[p], p))
 
     def generations(vertex):
--- a/mercurial/bundlerepo.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/bundlerepo.py	Wed Apr 08 23:24:22 2009 +0200
@@ -10,10 +10,10 @@
 of the GNU General Public License, incorporated herein by reference.
 """
 
-from node import hex, nullid, short
+from node import nullid
 from i18n import _
 import changegroup, util, os, struct, bz2, zlib, tempfile, shutil, mdiff
-import repo, localrepo, changelog, manifest, filelog, revlog, context, error
+import localrepo, changelog, manifest, filelog, revlog, error
 
 class bundlerevlog(revlog.revlog):
     def __init__(self, opener, indexfile, bundlefile,
@@ -158,7 +158,7 @@
             localrepo.localrepository.__init__(self, ui, path)
         except error.RepoError:
             self._tempparent = tempfile.mkdtemp()
-            tmprepo = localrepo.instance(ui,self._tempparent,1)
+            localrepo.instance(ui,self._tempparent,1)
             localrepo.localrepository.__init__(self, ui, self._tempparent)
 
         if path:
--- a/mercurial/changelog.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/changelog.py	Wed Apr 08 23:24:22 2009 +0200
@@ -7,7 +7,7 @@
 
 from node import bin, hex, nullid
 from i18n import _
-import util, error, revlog
+import util, error, revlog, encoding
 
 def _string_escape(text):
     """
@@ -175,10 +175,10 @@
         if not text:
             return (nullid, "", (0, 0), [], "", {'branch': 'default'})
         last = text.index("\n\n")
-        desc = util.tolocal(text[last + 2:])
+        desc = encoding.tolocal(text[last + 2:])
         l = text[:last].split('\n')
         manifest = bin(l[0])
-        user = util.tolocal(l[1])
+        user = encoding.tolocal(l[1])
 
         extra_data = l[2].split(' ', 2)
         if len(extra_data) != 3:
@@ -205,7 +205,7 @@
         if "\n" in user:
             raise error.RevlogError(_("username %s contains a newline")
                                     % repr(user))
-        user, desc = util.fromlocal(user), util.fromlocal(desc)
+        user, desc = encoding.fromlocal(user), encoding.fromlocal(desc)
 
         if date:
             parseddate = "%d %d" % util.parsedate(date)
--- a/mercurial/cmdutil.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/cmdutil.py	Wed Apr 08 23:24:22 2009 +0200
@@ -7,7 +7,7 @@
 
 from node import hex, nullid, nullrev, short
 from i18n import _
-import os, sys, bisect, stat
+import os, sys, bisect, stat, encoding
 import mdiff, bdiff, util, templater, templatefilters, patch, errno, error
 import match as _match
 
@@ -385,8 +385,10 @@
                     return True # report a failure
 
         if ui.verbose or not exact:
-            action = rename and "moving" or "copying"
-            ui.status(_('%s %s to %s\n') % (action, relsrc, reltarget))
+            if rename:
+                ui.status(_('moving %s to %s\n') % (relsrc, reltarget))
+            else:
+                ui.status(_('copying %s to %s\n') % (relsrc, reltarget))
 
         targets[abstarget] = abssrc
 
@@ -624,7 +626,7 @@
 
         # don't show the default branch name
         if branch != 'default':
-            branch = util.tolocal(branch)
+            branch = encoding.tolocal(branch)
             self.ui.write(_("branch:      %s\n") % branch)
         for tag in self.repo.nodetags(changenode):
             self.ui.write(_("tag:         %s\n") % tag)
@@ -710,13 +712,20 @@
         '''set template string to use'''
         self.t.cache['changeset'] = t
 
+    def _meaningful_parentrevs(self, ctx):
+        """Return list of meaningful (or all if debug) parentrevs for rev.
+        """
+        parents = ctx.parents()
+        if len(parents) > 1:
+            return parents
+        if self.ui.debugflag:
+            return [parents[0], self.repo['null']]
+        if parents[0].rev() >= ctx.rev() - 1:
+            return []
+        return parents
+
     def _show(self, ctx, copies, props):
         '''show a single changeset or file revision'''
-        changenode = ctx.node()
-        rev = ctx.rev()
-
-        log = self.repo.changelog
-        changes = log.read(changenode)
 
         def showlist(name, values, plural=None, **args):
             '''expand set of values.
@@ -780,21 +789,21 @@
                 yield self.t(endname, **args)
 
         def showbranches(**args):
-            branch = changes[5].get("branch")
+            branch = ctx.branch()
             if branch != 'default':
-                branch = util.tolocal(branch)
+                branch = encoding.tolocal(branch)
                 return showlist('branch', [branch], plural='branches', **args)
 
         def showparents(**args):
-            parents = [[('rev', p), ('node', hex(log.node(p)))]
-                       for p in self._meaningful_parentrevs(log, rev)]
+            parents = [[('rev', p.rev()), ('node', p.hex())]
+                       for p in self._meaningful_parentrevs(ctx)]
             return showlist('parent', parents, **args)
 
         def showtags(**args):
-            return showlist('tag', self.repo.nodetags(changenode), **args)
+            return showlist('tag', ctx.tags(), **args)
 
         def showextras(**args):
-            for key, value in util.sort(changes[5].items()):
+            for key, value in util.sort(ctx.extra().items()):
                 args = args.copy()
                 args.update(dict(key=key, value=value))
                 yield self.t('extra', **args)
@@ -806,11 +815,11 @@
         files = []
         def getfiles():
             if not files:
-                files[:] = self.repo.status(
-                    log.parents(changenode)[0], changenode)[:3]
+                files[:] = self.repo.status(ctx.parents()[0].node(),
+                                            ctx.node())[:3]
             return files
         def showfiles(**args):
-            return showlist('file', changes[3], **args)
+            return showlist('file', ctx.files(), **args)
         def showmods(**args):
             return showlist('file_mod', getfiles()[0], **args)
         def showadds(**args):
@@ -819,60 +828,74 @@
             return showlist('file_del', getfiles()[2], **args)
         def showmanifest(**args):
             args = args.copy()
-            args.update(dict(rev=self.repo.manifest.rev(changes[0]),
-                             node=hex(changes[0])))
+            args.update(dict(rev=self.repo.manifest.rev(ctx.changeset()[0]),
+                             node=hex(ctx.changeset()[0])))
             return self.t('manifest', **args)
 
+        def showdiffstat(**args):
+            diff = patch.diff(self.repo, ctx.parents()[0].node(), ctx.node())
+            files, adds, removes = 0, 0, 0
+            for i in patch.diffstatdata(util.iterlines(diff)):
+                files += 1
+                adds += i[1]
+                removes += i[2]
+            return '%s: +%s/-%s' % (files, adds, removes)
+
         defprops = {
-            'author': changes[1],
+            'author': ctx.user(),
             'branches': showbranches,
-            'date': changes[2],
-            'desc': changes[4].strip(),
+            'date': ctx.date(),
+            'desc': ctx.description().strip(),
             'file_adds': showadds,
             'file_dels': showdels,
             'file_mods': showmods,
             'files': showfiles,
             'file_copies': showcopies,
             'manifest': showmanifest,
-            'node': hex(changenode),
+            'node': ctx.hex(),
             'parents': showparents,
-            'rev': rev,
+            'rev': ctx.rev(),
             'tags': showtags,
             'extras': showextras,
+            'diffstat': showdiffstat,
             }
         props = props.copy()
         props.update(defprops)
 
+        # find correct templates for current mode
+
+        tmplmodes = [
+            (True, None),
+            (self.ui.verbose, 'verbose'),
+            (self.ui.quiet, 'quiet'),
+            (self.ui.debugflag, 'debug'),
+        ]
+
+        types = {'header': '', 'changeset': 'changeset'}
+        for mode, postfix  in tmplmodes:
+            for type in types:
+                cur = postfix and ('%s_%s' % (type, postfix)) or type
+                if mode and cur in self.t:
+                    types[type] = cur
+
         try:
-            if self.ui.debugflag and 'header_debug' in self.t:
-                key = 'header_debug'
-            elif self.ui.quiet and 'header_quiet' in self.t:
-                key = 'header_quiet'
-            elif self.ui.verbose and 'header_verbose' in self.t:
-                key = 'header_verbose'
-            elif 'header' in self.t:
-                key = 'header'
-            else:
-                key = ''
-            if key:
-                h = templater.stringify(self.t(key, **props))
+
+            # write header
+            if types['header']:
+                h = templater.stringify(self.t(types['header'], **props))
                 if self.buffered:
-                    self.header[rev] = h
+                    self.header[ctx.rev()] = h
                 else:
                     self.ui.write(h)
-            if self.ui.debugflag and 'changeset_debug' in self.t:
-                key = 'changeset_debug'
-            elif self.ui.quiet and 'changeset_quiet' in self.t:
-                key = 'changeset_quiet'
-            elif self.ui.verbose and 'changeset_verbose' in self.t:
-                key = 'changeset_verbose'
-            else:
-                key = 'changeset'
+
+            # write changeset metadata, then patch if requested
+            key = types['changeset']
             self.ui.write(templater.stringify(self.t(key, **props)))
-            self.showpatch(changenode)
+            self.showpatch(ctx.node())
+
         except KeyError, inst:
-            raise util.Abort(_("%s: no key named '%s'") % (self.t.mapfile,
-                                                           inst.args[0]))
+            msg = _("%s: no key named '%s'")
+            raise util.Abort(msg % (self.t.mapfile, inst.args[0]))
         except SyntaxError, inst:
             raise util.Abort(_('%s: %s') % (self.t.mapfile, inst.args[0]))
 
@@ -893,32 +916,37 @@
         patch = matchfn or matchall(repo)
 
     tmpl = opts.get('template')
-    mapfile = None
+    style = None
     if tmpl:
         tmpl = templater.parsestring(tmpl, quoted=False)
     else:
-        mapfile = opts.get('style')
-        # ui settings
-        if not mapfile:
-            tmpl = ui.config('ui', 'logtemplate')
-            if tmpl:
-                tmpl = templater.parsestring(tmpl)
-            else:
-                mapfile = ui.config('ui', 'style')
+        style = opts.get('style')
+
+    # ui settings
+    if not (tmpl or style):
+        tmpl = ui.config('ui', 'logtemplate')
+        if tmpl:
+            tmpl = templater.parsestring(tmpl)
+        else:
+            style = ui.config('ui', 'style')
+
+    if not (tmpl or style):
+        return changeset_printer(ui, repo, patch, opts, buffered)
 
-    if tmpl or mapfile:
-        if mapfile:
-            if not os.path.split(mapfile)[0]:
-                mapname = (templater.templatepath('map-cmdline.' + mapfile)
-                           or templater.templatepath(mapfile))
-                if mapname: mapfile = mapname
-        try:
-            t = changeset_templater(ui, repo, patch, opts, mapfile, buffered)
-        except SyntaxError, inst:
-            raise util.Abort(inst.args[0])
-        if tmpl: t.use_template(tmpl)
-        return t
-    return changeset_printer(ui, repo, patch, opts, buffered)
+    mapfile = None
+    if style and not tmpl:
+        mapfile = style
+        if not os.path.split(mapfile)[0]:
+            mapname = (templater.templatepath('map-cmdline.' + mapfile)
+                       or templater.templatepath(mapfile))
+            if mapname: mapfile = mapname
+
+    try:
+        t = changeset_templater(ui, repo, patch, opts, mapfile, buffered)
+    except SyntaxError, inst:
+        raise util.Abort(inst.args[0])
+    if tmpl: t.use_template(tmpl)
+    return t
 
 def finddate(ui, repo, date):
     """Find the tipmost changeset that matches the given date spec"""
--- a/mercurial/commands.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/commands.py	Wed Apr 08 23:24:22 2009 +0200
@@ -9,7 +9,7 @@
 from i18n import _, gettext
 import os, re, sys
 import hg, util, revlog, bundlerepo, extensions, copies, context, error
-import difflib, patch, time, help, mdiff, tempfile, url
+import difflib, patch, time, help, mdiff, tempfile, url, encoding
 import archival, changegroup, cmdutil, hgweb.server, sshserver, hbisect
 import merge as merge_
 
@@ -18,7 +18,8 @@
 def add(ui, repo, *pats, **opts):
     """add the specified files on the next commit
 
-    Schedule files to be version controlled and added to the repository.
+    Schedule files to be version controlled and added to the
+    repository.
 
     The files will be added to the repository at the next commit. To
     undo an add before that, see hg revert.
@@ -48,16 +49,19 @@
 def addremove(ui, repo, *pats, **opts):
     """add all new files, delete all missing files
 
-    Add all new files and remove all missing files from the repository.
-
-    New files are ignored if they match any of the patterns in .hgignore. As
-    with add, these changes take effect at the next commit.
-
-    Use the -s option to detect renamed files. With a parameter > 0,
-    this compares every removed file with every added file and records
-    those similar enough as renames. This option takes a percentage
-    between 0 (disabled) and 100 (files must be identical) as its
-    parameter. Detecting renamed files this way can be expensive.
+    Add all new files and remove all missing files from the
+    repository.
+
+    New files are ignored if they match any of the patterns in
+    .hgignore. As with add, these changes take effect at the next
+    commit.
+
+    Use the -s/--similarity option to detect renamed files. With a
+    parameter > 0, this compares every removed file with every added
+    file and records those similar enough as renames. This option
+    takes a percentage between 0 (disabled) and 100 (files must be
+    identical) as its parameter. Detecting renamed files this way can
+    be expensive.
     """
     try:
         sim = float(opts.get('similarity') or 0)
@@ -70,14 +74,15 @@
 def annotate(ui, repo, *pats, **opts):
     """show changeset information per file line
 
-    List changes in files, showing the revision id responsible for each line
-
-    This command is useful to discover who did a change or when a change took
-    place.
-
-    Without the -a option, annotate will avoid processing files it
-    detects as binary. With -a, annotate will generate an annotation
-    anyway, probably with undesirable results.
+    List changes in files, showing the revision id responsible for
+    each line
+
+    This command is useful to discover who did a change or when a
+    change took place.
+
+    Without the -a/--text option, annotate will avoid processing files
+    it detects as binary. With -a, annotate will generate an
+    annotation anyway, probably with undesirable results.
     """
     datefunc = ui.quiet and util.shortdate or util.datestr
     getdate = util.cachefunc(lambda x: datefunc(x[0].date()))
@@ -132,9 +137,9 @@
     '''create unversioned archive of a repository revision
 
     By default, the revision used is the parent of the working
-    directory; use "-r" to specify a different revision.
-
-    To specify the type of archive to create, use "-t". Valid
+    directory; use -r/--rev to specify a different revision.
+
+    To specify the type of archive to create, use -t/--type. Valid
     types are:
 
     "files" (default): a directory full of files
@@ -145,11 +150,12 @@
     "zip": zip archive, compressed using deflate
 
     The exact name of the destination archive or directory is given
-    using a format string; see "hg help export" for details.
+    using a format string; see 'hg help export' for details.
 
     Each member added to an archive file has a directory prefix
-    prepended. Use "-p" to specify a format string for the prefix.
-    The default is the basename of the archive, with suffixes removed.
+    prepended. Use -p/--prefix to specify a format string for the
+    prefix. The default is the basename of the archive, with suffixes
+    removed.
     '''
 
     ctx = repo[opts.get('rev')]
@@ -183,9 +189,8 @@
 
     The --merge option remembers the parent of the working directory
     before starting the backout, then merges the new head with that
-    changeset afterwards. This saves you from doing the merge by
-    hand. The result of this merge is not committed, as with a normal
-    merge.
+    changeset afterwards. This saves you from doing the merge by hand.
+    The result of this merge is not committed, as with a normal merge.
 
     See \'hg help dates\' for a list of formats valid for -d/--date.
     '''
@@ -262,23 +267,23 @@
                reset=None, good=None, bad=None, skip=None, noupdate=None):
     """subdivision search of changesets
 
-    This command helps to find changesets which introduce problems.
-    To use, mark the earliest changeset you know exhibits the problem
-    as bad, then mark the latest changeset which is free from the
-    problem as good. Bisect will update your working directory to a
-    revision for testing (unless the --noupdate option is specified).
-    Once you have performed tests, mark the working directory as bad
-    or good and bisect will either update to another candidate changeset
+    This command helps to find changesets which introduce problems. To
+    use, mark the earliest changeset you know exhibits the problem as
+    bad, then mark the latest changeset which is free from the problem
+    as good. Bisect will update your working directory to a revision
+    for testing (unless the -U/--noupdate option is specified). Once
+    you have performed tests, mark the working directory as bad or
+    good and bisect will either update to another candidate changeset
     or announce that it has found the bad revision.
 
     As a shortcut, you can also use the revision argument to mark a
     revision as good or bad without checking it out first.
 
-    If you supply a command it will be used for automatic bisection. Its exit
-    status will be used as flag to mark revision as bad or good. In case exit
-    status is 0 the revision is marked as good, 125 - skipped, 127 (command not
-    found) - bisection will be aborted; any other status bigger than 0 will
-    mark revision as bad.
+    If you supply a command it will be used for automatic bisection.
+    Its exit status will be used as flag to mark revision as bad or
+    good. In case exit status is 0 the revision is marked as good, 125
+    - skipped, 127 (command not found) - bisection will be aborted;
+    any other status bigger than 0 will mark revision as bad.
     """
     def print_result(nodes, good):
         displayer = cmdutil.show_changeset(ui, repo, {})
@@ -393,14 +398,16 @@
     """set or show the current branch name
 
     With no argument, show the current branch name. With one argument,
-    set the working directory branch name (the branch does not exist in
-    the repository until the next commit).
-
-    Unless --force is specified, branch will not let you set a
+    set the working directory branch name (the branch does not exist
+    in the repository until the next commit). It is recommended to use
+    the 'default' branch as your primary development branch.
+
+    Unless -f/--force is specified, branch will not let you set a
     branch name that shadows an existing branch.
 
-    Use --clean to reset the working directory branch to that of the
-    parent of the working directory, negating a previous branch change.
+    Use -C/--clean to reset the working directory branch to that of
+    the parent of the working directory, negating a previous branch
+    change.
 
     Use the command 'hg update' to switch to an existing branch.
     """
@@ -414,10 +421,10 @@
             if label not in [p.branch() for p in repo.parents()]:
                 raise util.Abort(_('a branch of the same name already exists'
                                    ' (use --force to override)'))
-        repo.dirstate.setbranch(util.fromlocal(label))
+        repo.dirstate.setbranch(encoding.fromlocal(label))
         ui.status(_('marked working directory as branch %s\n') % label)
     else:
-        ui.write("%s\n" % util.tolocal(repo.dirstate.branch()))
+        ui.write("%s\n" % encoding.tolocal(repo.dirstate.branch()))
 
 def branches(ui, repo, active=False):
     """list repository named branches
@@ -430,7 +437,7 @@
     Use the command 'hg update' to switch to an existing branch.
     """
     hexfunc = ui.debugflag and hex or short
-    activebranches = [util.tolocal(repo[n].branch())
+    activebranches = [encoding.tolocal(repo[n].branch())
                             for n in repo.heads(closed=False)]
     branches = util.sort([(tag in activebranches, repo.changelog.rev(node), tag)
                           for tag, node in repo.branchtags().items()])
@@ -448,7 +455,7 @@
                     notice = ' (closed)'
                 else:
                     notice = ' (inactive)'
-                rev = str(node).rjust(31 - util.colwidth(tag))
+                rev = str(node).rjust(31 - encoding.colwidth(tag))
                 data = tag, rev, hexfunc(hn), notice
                 ui.write("%s %s:%s%s\n" % data)
 
@@ -461,13 +468,14 @@
     If no destination repository is specified the destination is
     assumed to have all the nodes specified by one or more --base
     parameters. To create a bundle containing all changesets, use
-    --all (or --base null). To change the compression method applied,
-    use the -t option (by default, bundles are compressed using bz2).
-
-    The bundle file can then be transferred using conventional means and
-    applied to another repository with the unbundle or pull command.
-    This is useful when direct push and pull are not available or when
-    exporting an entire repository is undesirable.
+    -a/--all (or --base null). To change the compression method
+    applied, use the -t/--type option (by default, bundles are
+    compressed using bz2).
+
+    The bundle file can then be transferred using conventional means
+    and applied to another repository with the unbundle or pull
+    command. This is useful when direct push and pull are not
+    available or when exporting an entire repository is undesirable.
 
     Applying bundles preserves all changeset contents including
     permissions, copy/rename information, and revision history.
@@ -528,8 +536,8 @@
 def cat(ui, repo, file1, *pats, **opts):
     """output the current or given revision of files
 
-    Print the specified files as they were at the given revision.
-    If no revision is given, the parent of the working directory is used,
+    Print the specified files as they were at the given revision. If
+    no revision is given, the parent of the working directory is used,
     or tip if no revision is checked out.
 
     Output may be to a file, in which case the name of the file is
@@ -537,7 +545,7 @@
     for the export command, with the following additions:
 
     %s   basename of file being printed
-    %d   dirname of file being printed, or '.' if in repo root
+    %d   dirname of file being printed, or '.' if in repository root
     %p   root-relative path name of file being printed
     """
     ctx = repo[opts.get('rev')]
@@ -563,6 +571,23 @@
     The location of the source is added to the new repository's
     .hg/hgrc file, as the default to be used for future pulls.
 
+    If you use the -r/--rev option to clone up to a specific revision,
+    no subsequent revisions (including subsequent tags) will be
+    present in the cloned repository. This option implies --pull, even
+    on local repositories.
+
+    By default, clone will check out the head of the 'default' branch.
+    If the -U/--noupdate option is used, the new clone will contain
+    only a repository (.hg) and no working copy (the working copy
+    parent is the null revision).
+
+    See 'hg help urls' for valid source format details.
+
+    It is possible to specify an ssh:// URL as the destination, but no
+    .hg/hgrc and working directory will be created on the remote side.
+    Look at the help text for URLs for important details about ssh://
+    URLs.
+
     For efficiency, hardlinks are used for cloning whenever the source
     and destination are on the same filesystem (note this applies only
     to the repository data, not to the checked out files). Some
@@ -575,25 +600,13 @@
 
       $ cp -al REPO REPOCLONE
 
-    This is the fastest way to clone, but it is not always safe.  The
+    This is the fastest way to clone, but it is not always safe. The
     operation is not atomic (making sure REPO is not modified during
     the operation is up to you) and you have to make sure your editor
-    breaks hardlinks (Emacs and most Linux Kernel tools do so).  Also,
+    breaks hardlinks (Emacs and most Linux Kernel tools do so). Also,
     this is not compatible with certain extensions that place their
     metadata under the .hg directory, such as mq.
 
-    If you use the -r option to clone up to a specific revision, no
-    subsequent revisions will be present in the cloned repository.
-    This option implies --pull, even on local repositories.
-
-    If the -U option is used, the new clone will contain only a repository
-    (.hg) and no working copy (the working copy parent is the null revision).
-
-    See 'hg help urls' for valid source format details.
-
-    It is possible to specify an ssh:// URL as the destination, but no
-    .hg/hgrc and working directory will be created on the remote side.
-    Look at the help text for urls for important details about ssh:// URLs.
     """
     cmdutil.setremoteconfig(ui, opts)
     hg.clone(ui, source, dest,
@@ -605,7 +618,9 @@
 def commit(ui, repo, *pats, **opts):
     """commit the specified files or all outstanding changes
 
-    Commit changes to the given files into the repository.
+    Commit changes to the given files into the repository. Unlike a
+    centralized RCS, this operation is a local operation. See hg push
+    for means to actively distribute your changes.
 
     If a list of files is omitted, all changes reported by "hg status"
     will be committed.
@@ -613,8 +628,8 @@
     If you are committing the result of a merge, do not provide any
     file names or -I/-X filters.
 
-    If no commit message is specified, the configured editor is started to
-    prompt you for a message.
+    If no commit message is specified, the configured editor is
+    started to prompt you for a message.
 
     See 'hg help dates' for a list of formats valid for -d/--date.
     """
@@ -653,7 +668,7 @@
     the source must be a single file.
 
     By default, this command copies the contents of files as they
-    stand in the working directory. If invoked with --after, the
+    stand in the working directory. If invoked with -A/--after, the
     operation is recorded, but no copying is performed.
 
     This command takes effect with the next commit. To undo a copy
@@ -683,6 +698,12 @@
     a = r.ancestor(lookup(rev1), lookup(rev2))
     ui.write("%d:%s\n" % (r.rev(a), hex(a)))
 
+def debugcommands(ui, cmd='', *args):
+    for cmd, vals in util.sort(table.iteritems()):
+        cmd = cmd.split('|')[0].strip('^')
+        opts = ', '.join([i[1] for i in vals[1]])
+        ui.write('%s: %s\n' % (cmd, opts))
+
 def debugcomplete(ui, cmd='', **opts):
     """returns the completion list associated with the given command"""
 
@@ -872,9 +893,9 @@
     problems = 0
 
     # encoding
-    ui.status(_("Checking encoding (%s)...\n") % util._encoding)
+    ui.status(_("Checking encoding (%s)...\n") % encoding.encoding)
     try:
-        util.fromlocal("test")
+        encoding.fromlocal("test")
     except util.Abort, inst:
         ui.write(" %s\n" % inst)
         ui.write(_(" (check that your locale is properly set)\n"))
@@ -894,7 +915,7 @@
     ui.status(_("Checking templates...\n"))
     try:
         import templater
-        t = templater.templater(templater.templatepath("map-cmdline.default"))
+        templater.templater(templater.templatepath("map-cmdline.default"))
     except Exception, inst:
         ui.write(" %s\n" % inst)
         ui.write(_(" (templates seem to have been installed incorrectly)\n"))
@@ -1015,12 +1036,12 @@
     revisions are specified, the working directory files are compared
     to its parent.
 
-    Without the -a option, diff will avoid generating diffs of files
-    it detects as binary. With -a, diff will generate a diff anyway,
-    probably with undesirable results.
-
-    Use the --git option to generate diffs in the git extended diff
-    format. For more information, read hg help diffs.
+    Without the -a/--text option, diff will avoid generating diffs of
+    files it detects as binary. With -a, diff will generate a diff
+    anyway, probably with undesirable results.
+
+    Use the -g/--git option to generate diffs in the git extended diff
+    format. For more information, read 'hg help diffs'.
     """
 
     revs = opts.get('rev')
@@ -1048,8 +1069,9 @@
     The information shown in the changeset header is: author,
     changeset hash, parent(s) and commit comment.
 
-    NOTE: export may generate unexpected diff output for merge changesets,
-    as it will compare the merge changeset against its first parent only.
+    NOTE: export may generate unexpected diff output for merge
+    changesets, as it will compare the merge changeset against its
+    first parent only.
 
     Output may be to a file, in which case the name of the file is
     given using a format string. The formatting rules are as follows:
@@ -1063,15 +1085,15 @@
     %n   zero-padded sequence number, starting at 1
     %r   zero-padded changeset revision number
 
-    Without the -a option, export will avoid generating diffs of files
-    it detects as binary. With -a, export will generate a diff anyway,
-    probably with undesirable results.
-
-    Use the --git option to generate diffs in the git extended diff
+    Without the -a/--text option, export will avoid generating diffs
+    of files it detects as binary. With -a, export will generate a
+    diff anyway, probably with undesirable results.
+
+    Use the -g/--git option to generate diffs in the git extended diff
     format. Read the diffs help topic for more information.
 
-    With the --switch-parent option, the diff will be against the second
-    parent. It can be useful to review a merge.
+    With the --switch-parent option, the diff will be against the
+    second parent. It can be useful to review a merge.
     """
     if not changesets:
         raise util.Abort(_("export requires at least one changeset"))
@@ -1091,8 +1113,8 @@
 
     This command behaves differently than Unix grep. It only accepts
     Python/Perl regexps. It searches repository history, not the
-    working directory. It always prints the revision number in which
-    a match appears.
+    working directory. It always prints the revision number in which a
+    match appears.
 
     By default, grep only prints output for the first revision of a
     file in which it finds a match. To get it to print every revision
@@ -1304,7 +1326,8 @@
 
     With no arguments, print a list of commands and short help.
 
-    Given a topic, extension, or command name, print help for that topic."""
+    Given a topic, extension, or command name, print help for that
+    topic."""
     option_lists = []
 
     def addglobalopts(aliases):
@@ -1405,7 +1428,7 @@
             maxlength = 0
             exthelps = []
             for ename, ext in exts:
-                doc = (ext.__doc__ or _('(no help text available)'))
+                doc = (gettext(ext.__doc__) or _('(no help text available)'))
                 ename = ename.split('.')[-1]
                 maxlength = max(len(ename), maxlength)
                 exthelps.append((ename, doc.splitlines(0)[0].strip()))
@@ -1517,14 +1540,15 @@
              rev=None, num=None, id=None, branch=None, tags=None):
     """identify the working copy or specified revision
 
-    With no revision, print a summary of the current state of the repo.
+    With no revision, print a summary of the current state of the
+    repository.
 
     With a path, do a lookup in another repository.
 
-    This summary identifies the repository state using one or two parent
-    hash identifiers, followed by a "+" if there are uncommitted changes
-    in the working directory, a list of tags for this revision and a branch
-    name for non-default branches.
+    This summary identifies the repository state using one or two
+    parent hash identifiers, followed by a "+" if there are
+    uncommitted changes in the working directory, a list of tags for
+    this revision and a branch name for non-default branches.
     """
 
     if not repo and not source:
@@ -1569,7 +1593,7 @@
             output.append(str(ctx.rev()))
 
     if repo.local() and default and not ui.quiet:
-        b = util.tolocal(ctx.branch())
+        b = encoding.tolocal(ctx.branch())
         if b != 'default':
             output.append("(%s)" % b)
 
@@ -1579,7 +1603,7 @@
             output.append(t)
 
     if branch:
-        output.append(util.tolocal(ctx.branch()))
+        output.append(encoding.tolocal(ctx.branch()))
 
     if tags:
         output.extend(ctx.tags())
@@ -1592,7 +1616,7 @@
     Import a list of patches and commit them individually.
 
     If there are outstanding changes in the working directory, import
-    will abort unless given the -f flag.
+    will abort unless given the -f/--force flag.
 
     You can import a patch straight from a mail message. Even patches
     as attachments work (body part must be type text/plain or
@@ -1601,21 +1625,22 @@
     text/plain body parts before first diff are added to commit
     message.
 
-    If the imported patch was generated by hg export, user and description
-    from patch override values from message headers and body. Values
-    given on command line with -m and -u override these.
-
-    If --exact is specified, import will set the working directory
-    to the parent of each patch before applying it, and will abort
-    if the resulting changeset has a different ID than the one
-    recorded in the patch. This may happen due to character set
-    problems or other deficiencies in the text patch format.
-
-    With --similarity, hg will attempt to discover renames and copies
-    in the patch in the same way as 'addremove'.
-
-    To read a patch from standard input, use patch name "-".
-    See 'hg help dates' for a list of formats valid for -d/--date.
+    If the imported patch was generated by hg export, user and
+    description from patch override values from message headers and
+    body. Values given on command line with -m/--message and -u/--user
+    override these.
+
+    If --exact is specified, import will set the working directory to
+    the parent of each patch before applying it, and will abort if the
+    resulting changeset has a different ID than the one recorded in
+    the patch. This may happen due to character set problems or other
+    deficiencies in the text patch format.
+
+    With -s/--similarity, hg will attempt to discover renames and
+    copies in the patch in the same way as 'addremove'.
+
+    To read a patch from standard input, use patch name "-". See 'hg
+    help dates' for a list of formats valid for -d/--date.
     """
     patches = (patch1,) + patches
 
@@ -1690,8 +1715,8 @@
 
                 files = {}
                 try:
-                    fuzz = patch.patch(tmpname, ui, strip=strip, cwd=repo.root,
-                                       files=files)
+                    patch.patch(tmpname, ui, strip=strip, cwd=repo.root,
+                                files=files)
                 finally:
                     files = patch.updatedir(ui, repo, files, similarity=sim/100.)
                 if not opts.get('no_commit'):
@@ -1714,11 +1739,11 @@
     """show new changesets found in source
 
     Show new changesets found in the specified path/URL or the default
-    pull location. These are the changesets that would be pulled if a pull
-    was requested.
-
-    For remote repository, using --bundle avoids downloading the changesets
-    twice if the incoming is followed by a pull.
+    pull location. These are the changesets that would be pulled if a
+    pull was requested.
+
+    For remote repository, using --bundle avoids downloading the
+    changesets twice if the incoming is followed by a pull.
 
     See pull for valid source format details.
     """
@@ -1809,9 +1834,9 @@
     names.
 
     If you want to feed the output of this command into the "xargs"
-    command, use the "-0" option to both this command and "xargs".
-    This will avoid the problem of "xargs" treating single filenames
-    that contain white space as multiple filenames.
+    command, use the -0 option to both this command and "xargs". This
+    will avoid the problem of "xargs" treating single filenames that
+    contain white space as multiple filenames.
     """
     end = opts.get('print0') and '\0' or '\n'
     rev = opts.get('rev') or None
@@ -1853,7 +1878,7 @@
     commit. When the -v/--verbose switch is used, the list of changed
     files and full commit message is shown.
 
-    NOTE: log -p may generate unexpected diff output for merge
+    NOTE: log -p/--patch may generate unexpected diff output for merge
     changesets, as it will only compare the merge changeset against
     its first parent. Also, the files: list will only reflect files
     that are different from BOTH parents.
@@ -1942,12 +1967,7 @@
 
             if opts['user']:
                 changes = get(rev)
-                miss = 0
-                for k in opts['user']:
-                    if k != changes[1]:
-                        miss = 1
-                        break
-                if miss:
+                if not [k for k in opts['user'] if k in changes[1]]:
                     continue
 
             copies = []
@@ -1966,14 +1986,11 @@
     """output the current or given revision of the project manifest
 
     Print a list of version controlled files for the given revision.
-    If no revision is given, the parent of the working directory is used,
-    or tip if no revision is checked out.
-
-    The manifest is the list of files being version controlled. If no revision
-    is given then the first parent of the working directory is used.
-
-    With -v flag, print file permissions, symlink and executable bits. With
-    --debug flag, print file revision hashes.
+    If no revision is given, the first parent of the working directory
+    is used, or tip if no revision is checked out.
+
+    With -v flag, print file permissions, symlink and executable bits.
+    With --debug flag, print file revision hashes.
     """
 
     if rev and node:
@@ -1994,15 +2011,18 @@
 def merge(ui, repo, node=None, force=None, rev=None):
     """merge working directory with another revision
 
-    Merge the contents of the current working directory and the
-    requested revision. Files that changed between either parent are
-    marked as changed for the next commit and a commit must be
-    performed before any further updates are allowed.
+    The contents of the current working directory is updated with all
+    changes made in the requested revision since the last common
+    predecessor revision.
+
+    Files that changed between either parent are marked as changed for
+    the next commit and a commit must be performed before any further
+    updates are allowed. The next commit has two parents.
 
     If no revision is specified, the working directory's parent is a
-    head revision, and the current branch contains exactly one other head,
-    the other head is merged with by default. Otherwise, an explicit
-    revision to merge with must be provided.
+    head revision, and the current branch contains exactly one other
+    head, the other head is merged with by default. Otherwise, an
+    explicit revision to merge with must be provided.
     """
 
     if rev and node:
@@ -2038,9 +2058,9 @@
 def outgoing(ui, repo, dest=None, **opts):
     """show changesets not found in destination
 
-    Show changesets not found in the specified destination repository or
-    the default push location. These are the changesets that would be pushed
-    if a push was requested.
+    Show changesets not found in the specified destination repository
+    or the default push location. These are the changesets that would
+    be pushed if a push was requested.
 
     See pull for valid destination format details.
     """
@@ -2072,13 +2092,13 @@
         displayer.show(repo[n])
 
 def parents(ui, repo, file_=None, **opts):
-    """show the parents of the working dir or revision
-
-    Print the working directory's parent revisions. If a
-    revision is given via --rev, the parent of that revision
-    will be printed. If a file argument is given, revision in
-    which the file was last changed (before the working directory
-    revision or the argument to --rev if given) is printed.
+    """show the parents of the working directory or revision
+
+    Print the working directory's parent revisions. If a revision is
+    given via -r/--rev, the parent of that revision will be printed.
+    If a file argument is given, revision in which the file was last
+    changed (before the working directory revision or the argument to
+    --rev if given) is printed.
     """
     rev = opts.get('rev')
     if rev:
@@ -2114,8 +2134,8 @@
 def paths(ui, repo, search=None):
     """show aliases for remote repositories
 
-    Show definition of symbolic path name NAME. If no name is given, show
-    definition of available names.
+    Show definition of symbolic path name NAME. If no name is given,
+    show definition of available names.
 
     Path names are defined in the [paths] section of /etc/mercurial/hgrc
     and $HOME/.hgrc. If run inside a repository, .hg/hgrc is used, too.
@@ -2149,12 +2169,15 @@
 def pull(ui, repo, source="default", **opts):
     """pull changes from the specified source
 
-    Pull changes from a remote repository to a local one.
+    Pull changes from a remote repository to the local one.
 
     This finds all changes from the repository at the specified path
     or URL and adds them to the local repository. By default, this
     does not update the copy of the project in the working directory.
 
+    Use hg incoming if you want to see what will be added by the next
+    pull without actually adding the changes to the repository.
+
     If SOURCE is omitted, the 'default' path will be used.
     See 'hg help urls' for more information.
     """
@@ -2179,20 +2202,20 @@
 
     Push changes from the local repository to the given destination.
 
-    This is the symmetrical operation for pull. It helps to move
-    changes from the current repository to a different one. If the
-    destination is local this is identical to a pull in that directory
-    from the current one.
+    This is the symmetrical operation for pull. It moves changes from
+    the current repository to a different one. If the destination is
+    local this is identical to a pull in that directory from the
+    current one.
 
     By default, push will refuse to run if it detects the result would
     increase the number of remote heads. This generally indicates the
     the client has forgotten to pull and merge before pushing.
 
-    If -r is used, the named changeset and all its ancestors will be pushed
-    to the remote repository.
-
-    Look at the help text for urls for important details about ssh:// URLs.
-    If DESTINATION is omitted, a default path will be used.
+    If -r/--rev is used, the named revision and all its ancestors will
+    be pushed to the remote repository.
+
+    Look at the help text for URLs for important details about ssh://
+    URLs. If DESTINATION is omitted, a default path will be used.
     See 'hg help urls' for more information.
     """
     dest, revs, checkout = hg.parseurl(
@@ -2239,8 +2262,9 @@
 
     Recover from an interrupted commit or pull.
 
-    This command tries to fix the repository status after an interrupted
-    operation. It should only be necessary when Mercurial suggests it.
+    This command tries to fix the repository status after an
+    interrupted operation. It should only be necessary when Mercurial
+    suggests it.
     """
     if repo.recover():
         return hg.verify(repo)
@@ -2251,15 +2275,17 @@
 
     Schedule the indicated files for removal from the repository.
 
-    This only removes files from the current branch, not from the entire
-    project history. -A can be used to remove only files that have already
-    been deleted, -f can be used to force deletion, and -Af can be used
-    to remove files from the next revision without deleting them.
-
-    The following table details the behavior of remove for different file
-    states (columns) and option combinations (rows). The file states are
-    Added, Clean, Modified and Missing (as reported by hg status). The
-    actions are Warn, Remove (from branch) and Delete (from disk).
+    This only removes files from the current branch, not from the
+    entire project history. -A/--after can be used to remove only
+    files that have already been deleted, -f/--force can be used to
+    force deletion, and -Af can be used to remove files from the next
+    revision without deleting them.
+
+    The following table details the behavior of remove for different
+    file states (columns) and option combinations (rows). The file
+    states are Added, Clean, Modified and Missing (as reported by hg
+    status). The actions are Warn, Remove (from branch) and Delete
+    (from disk).
 
            A  C  M  !
     none   W  RD W  R
@@ -2304,12 +2330,12 @@
 def rename(ui, repo, *pats, **opts):
     """rename files; equivalent of copy + remove
 
-    Mark dest as copies of sources; mark sources for deletion. If
-    dest is a directory, copies are put in that directory. If dest is
-    a file, there can only be one source.
+    Mark dest as copies of sources; mark sources for deletion. If dest
+    is a directory, copies are put in that directory. If dest is a
+    file, there can only be one source.
 
     By default, this command copies the contents of files as they
-    exist in the working directory. If invoked with --after, the
+    exist in the working directory. If invoked with -A/--after, the
     operation is recorded, but no copying is performed.
 
     This command takes effect at the next commit. To undo a rename
@@ -2326,10 +2352,15 @@
 
     This command will cleanly retry unresolved file merges using file
     revisions preserved from the last update or merge. To attempt to
-    resolve all unresolved files, use the -a switch.
+    resolve all unresolved files, use the -a/--all switch.
+
+    If a conflict is resolved manually, please note that the changes
+    will be overwritten if the merge is retried with resolve. The
+    -m/--mark switch should be used to mark the file as resolved.
 
     This command will also allow listing resolved files and manually
-    marking and unmarking files as resolved.
+    marking and unmarking files as resolved. All files must be marked
+    as resolved before the new commits are permitted.
 
     The codes used to show the status of files are:
     U = unresolved
@@ -2372,10 +2403,10 @@
                 util.rename(a + ".resolve", a + ".orig")
 
 def revert(ui, repo, *pats, **opts):
-    """restore individual files or dirs to an earlier state
+    """restore individual files or directories to an earlier state
 
     (use update -r to check out earlier revisions, revert does not
-    change the working dir parents)
+    change the working directory parents)
 
     With no revision specified, revert the named files or directories
     to the contents they had in the parent of the working directory.
@@ -2384,10 +2415,10 @@
     working directory has two parents, you must explicitly specify the
     revision to revert to.
 
-    Using the -r option, revert the given files or directories to their
-    contents as of a specific revision. This can be helpful to "roll
-    back" some or all of an earlier change.
-    See 'hg help dates' for a list of formats valid for -d/--date.
+    Using the -r/--rev option, revert the given files or directories
+    to their contents as of a specific revision. This can be helpful
+    to "roll back" some or all of an earlier change. See 'hg help
+    dates' for a list of formats valid for -d/--date.
 
     Revert modifies the working directory. It does not commit any
     changes, or change the parent of the working directory. If you
@@ -2395,8 +2426,8 @@
     directory, the reverted files will thus appear modified
     afterwards.
 
-    If a file has been deleted, it is restored. If the executable
-    mode of a file was changed, it is reset.
+    If a file has been deleted, it is restored. If the executable mode
+    of a file was changed, it is reset.
 
     If names are given, all files matching the names are reverted.
     If no arguments are given, no files are reverted.
@@ -2435,7 +2466,6 @@
     wlock = repo.wlock()
     try:
         # walk dirstate.
-        files = []
 
         m = cmdutil.match(repo, pats, opts)
         m.bad = lambda x,y: False
@@ -2618,7 +2648,7 @@
     repo.rollback()
 
 def root(ui, repo):
-    """print the root (top) of the current working dir
+    """print the root (top) of the current working directory
 
     Print the root directory of the current repository.
     """
@@ -2630,7 +2660,7 @@
     Start a local HTTP repository browser and pull server.
 
     By default, the server logs accesses to stdout and errors to
-    stderr. Use the "-A" and "-E" options to log to files.
+    stderr. Use the -A and -E options to log to files.
     """
 
     if opts["stdio"]:
@@ -2693,12 +2723,13 @@
 
     Show status of files in the repository. If names are given, only
     files that match are shown. Files that are clean or ignored or
-    source of a copy/move operation, are not listed unless -c (clean),
-    -i (ignored), -C (copies) or -A is given. Unless options described
-    with "show only ..." are given, the options -mardu are used.
+    source of a copy/move operation, are not listed unless -c/--clean,
+    -i/--ignored, -C/--copies or -A/--all is given. Unless options
+    described with "show only ..." are given, the options -mardu are
+    used.
 
     Option -q/--quiet hides untracked (unknown and ignored) files
-    unless explicitly requested with -u/--unknown or -i/-ignored.
+    unless explicitly requested with -u/--unknown or -i/--ignored.
 
     NOTE: status may appear to disagree with diff if permissions have
     changed or a merge has occurred. The standard diff format does not
@@ -2713,7 +2744,7 @@
     A = added
     R = removed
     C = clean
-    ! = deleted, but still tracked
+    ! = missing, but still tracked
     ? = not tracked
     I = ignored
       = the previous added file was copied from here
@@ -2768,8 +2799,8 @@
     very useful to compare different revisions, to go back to significant
     earlier versions or to mark branch points as releases, etc.
 
-    If no revision is given, the parent of the working directory is used,
-    or tip if no revision is checked out.
+    If no revision is given, the parent of the working directory is
+    used, or tip if no revision is checked out.
 
     To facilitate version control, distribution, and merging of tags,
     they are stored as a file named ".hgtags" which is managed
@@ -2798,8 +2829,10 @@
             if not repo.tagtype(n):
                 raise util.Abort(_('tag \'%s\' does not exist') % n)
             if repo.tagtype(n) != expectedtype:
-                raise util.Abort(_('tag \'%s\' is not a %s tag') %
-                                 (n, expectedtype))
+                if expectedtype == 'global':
+                    raise util.Abort(_('tag \'%s\' is not a global tag') % n)
+                else:
+                    raise util.Abort(_('tag \'%s\' is not a local tag') % n)
         rev_ = nullid
         if not message:
             message = _('Removed tag %s') % ', '.join(names)
@@ -2826,8 +2859,8 @@
 def tags(ui, repo):
     """list repository tags
 
-    This lists both regular and local tags. When the -v/--verbose switch
-    is used, a third column "local" is printed for local tags.
+    This lists both regular and local tags. When the -v/--verbose
+    switch is used, a third column "local" is printed for local tags.
     """
 
     l = repo.tagslist()
@@ -2846,7 +2879,7 @@
         except error.LookupError:
             r = "    ?:%s" % hn
         else:
-            spaces = " " * (30 - util.colwidth(t))
+            spaces = " " * (30 - encoding.colwidth(t))
             if ui.verbose:
                 if repo.tagtype(t) == 'local':
                     tagtype = " local"
@@ -2891,29 +2924,32 @@
 def update(ui, repo, node=None, rev=None, clean=False, date=None):
     """update working directory
 
-    Update the repository's working directory to the specified revision,
-    or the tip of the current branch if none is specified. Use null as
-    the revision to remove the working copy (like 'hg clone -U').
-
-    When the working dir contains no uncommitted changes, it will be
-    replaced by the state of the requested revision from the repo.  When
-    the requested revision is on a different branch, the working dir
-    will additionally be switched to that branch.
+    Update the repository's working directory to the specified
+    revision, or the tip of the current branch if none is specified.
+    Use null as the revision to remove the working copy (like 'hg
+    clone -U').
+
+    When the working directory contains no uncommitted changes, it
+    will be replaced by the state of the requested revision from the
+    repository. When the requested revision is on a different branch,
+    the working directory will additionally be switched to that
+    branch.
 
     When there are uncommitted changes, use option -C to discard them,
-    forcibly replacing the state of the working dir with the requested
-    revision.
+    forcibly replacing the state of the working directory with the
+    requested revision.
 
     When there are uncommitted changes and option -C is not used, and
     the parent revision and requested revision are on the same branch,
     and one of them is an ancestor of the other, then the new working
     directory will contain the requested revision merged with the
-    uncommitted changes.  Otherwise, the update will fail with a
+    uncommitted changes. Otherwise, the update will fail with a
     suggestion to use 'merge' or 'update -C' instead.
 
-    If you want to update just one file to an older revision, use revert.
-
-    See 'hg help dates' for a list of formats valid for --date.
+    If you want to update just one file to an older revision, use
+    revert.
+
+    See 'hg help dates' for a list of formats valid for -d/--date.
     """
     if rev and node:
         raise util.Abort(_("please specify just one revision"))
@@ -2967,9 +3003,9 @@
     ('', 'config', [], _('set/override config option')),
     ('', 'debug', None, _('enable debugging output')),
     ('', 'debugger', None, _('start debugger')),
-    ('', 'encoding', util._encoding, _('set the charset encoding')),
-    ('', 'encodingmode', util._encodingmode, _('set the charset encoding mode')),
-    ('', 'lsprof', None, _('print improved command execution profile')),
+    ('', 'encoding', encoding.encoding, _('set the charset encoding')),
+    ('', 'encodingmode', encoding.encodingmode,
+     _('set the charset encoding mode')),
     ('', 'traceback', None, _('print traceback on exception')),
     ('', 'time', None, _('time how long the command takes')),
     ('', 'profile', None, _('print command execution profile')),
@@ -3135,6 +3171,7 @@
          _('[OPTION]... [SOURCE]... DEST')),
     "debugancestor": (debugancestor, [], _('[INDEX] REV1 REV2')),
     "debugcheckstate": (debugcheckstate, []),
+    "debugcommands": (debugcommands, [], _('[COMMAND]')),
     "debugcomplete":
         (debugcomplete,
          [('o', 'options', None, _('show the command options'))],
@@ -3189,7 +3226,7 @@
            _('follow changeset history, or file history across copies and renames')),
           ('i', 'ignore-case', None, _('ignore case when matching')),
           ('l', 'files-with-matches', None,
-           _('print only filenames and revs that match')),
+           _('print only filenames and revisions that match')),
           ('n', 'line-number', None, _('print matching line numbers')),
           ('r', 'rev', [], _('search in given revision range')),
           ('u', 'user', None, _('list the author (long with -v)')),
@@ -3198,7 +3235,7 @@
          _('[OPTION]... PATTERN [FILE]...')),
     "heads":
         (heads,
-         [('r', 'rev', '', _('show only heads which are descendants of rev')),
+         [('r', 'rev', '', _('show only heads which are descendants of REV')),
           ('a', 'active', False,
            _('show only the active heads from open branches')),
          ] + templateopts,
@@ -3206,7 +3243,7 @@
     "help": (help_, [], _('[TOPIC]')),
     "identify|id":
         (identify,
-         [('r', 'rev', '', _('identify the specified rev')),
+         [('r', 'rev', '', _('identify the specified revision')),
           ('n', 'num', None, _('show local revision number')),
           ('i', 'id', None, _('show global revision id')),
           ('b', 'branch', None, _('show branch')),
@@ -3224,7 +3261,7 @@
           ('', 'exact', None,
            _('apply patch to the nodes from which it was generated')),
           ('', 'import-branch', None,
-           _('Use any branch information in patch (implied by --exact)'))] +
+           _('use any branch information in patch (implied by --exact)'))] +
          commitopts + commitopts2 + similarityopts,
          _('[OPTION]... PATCH...')),
     "incoming|in":
@@ -3244,7 +3281,7 @@
          _('[-e CMD] [--remotecmd CMD] [DEST]')),
     "locate":
         (locate,
-         [('r', 'rev', '', _('search the repository as it stood at rev')),
+         [('r', 'rev', '', _('search the repository as it stood at REV')),
           ('0', 'print0', None,
            _('end filenames with NUL, for use with xargs')),
           ('f', 'fullpath', None,
@@ -3257,13 +3294,13 @@
            _('follow changeset history, or file history across copies and renames')),
           ('', 'follow-first', None,
            _('only follow the first parent of merge changesets')),
-          ('d', 'date', '', _('show revs matching date spec')),
+          ('d', 'date', '', _('show revisions matching date spec')),
           ('C', 'copies', None, _('show copied files')),
           ('k', 'keyword', [], _('do case-insensitive search for a keyword')),
           ('r', 'rev', [], _('show the specified revision or range')),
-          ('', 'removed', None, _('include revs where files were removed')),
+          ('', 'removed', None, _('include revisions where files were removed')),
           ('m', 'only-merges', None, _('show only merges')),
-          ('u', 'user', [], _('revs committed by user')),
+          ('u', 'user', [], _('revisions committed by user')),
           ('b', 'only-branch', [],
             _('show only changesets within the given named branch')),
           ('P', 'prune', [], _('do not display revision or any of its ancestors')),
@@ -3290,7 +3327,7 @@
          _('[-M] [-p] [-n] [-f] [-r REV]... [DEST]')),
     "^parents":
         (parents,
-         [('r', 'rev', '', _('show parents from the specified rev')),
+         [('r', 'rev', '', _('show parents from the specified revision')),
          ] + templateopts,
          _('hg parents [-r REV] [FILE]')),
     "paths": (paths, [], _('[NAME]')),
@@ -3354,9 +3391,9 @@
           ('a', 'address', '', _('address to listen on (default: all interfaces)')),
           ('', 'prefix', '', _('prefix path to serve from (default: server root)')),
           ('n', 'name', '',
-           _('name to show in web pages (default: working dir)')),
+           _('name to show in web pages (default: working directory)')),
           ('', 'webdir-conf', '', _('name of the webdir config file'
-                                    ' (serve more than one repo)')),
+                                    ' (serve more than one repository)')),
           ('', 'pid-file', '', _('name of file to write process ID to')),
           ('', 'stdio', None, _('for remote clients')),
           ('t', 'templates', '', _('web templates to use')),
@@ -3417,6 +3454,6 @@
     "version": (version_, []),
 }
 
-norepo = ("clone init version help debugcomplete debugdata"
+norepo = ("clone init version help debugcommands debugcomplete debugdata"
           " debugindex debugindexdot debugdate debuginstall debugfsinfo")
 optionalrepo = ("identify paths serve showconfig debugancestor")
--- a/mercurial/context.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/context.py	Wed Apr 08 23:24:22 2009 +0200
@@ -233,7 +233,7 @@
 
     def __nonzero__(self):
         try:
-            n = self._filenode
+            self._filenode
             return True
         except error.LookupError:
             # file is missing
--- a/mercurial/copies.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/copies.py	Wed Apr 08 23:24:22 2009 +0200
@@ -5,7 +5,6 @@
 # This software may be used and distributed according to the terms
 # of the GNU General Public License, incorporated herein by reference.
 
-from node import nullid, nullrev
 from i18n import _
 import util, heapq
 
--- a/mercurial/dispatch.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/dispatch.py	Wed Apr 08 23:24:22 2009 +0200
@@ -7,8 +7,8 @@
 
 from i18n import _
 import os, sys, atexit, signal, pdb, socket, errno, shlex, time
-import util, commands, hg, lock, fancyopts, extensions, hook, error
-import cmdutil
+import util, commands, hg, fancyopts, extensions, hook, error
+import cmdutil, encoding
 import ui as _ui
 
 def run():
@@ -304,7 +304,7 @@
     # check for fallback encoding
     fallback = lui.config('ui', 'fallbackencoding')
     if fallback:
-        util._fallbackencoding = fallback
+        encoding.fallbackencoding = fallback
 
     fullargs = args
     cmd, func, args, options, cmdoptions = _parse(lui, args)
@@ -319,9 +319,9 @@
             "and --repository may only be abbreviated as --repo!"))
 
     if options["encoding"]:
-        util._encoding = options["encoding"]
+        encoding.encoding = options["encoding"]
     if options["encodingmode"]:
-        util._encodingmode = options["encodingmode"]
+        encoding.encodingmode = options["encodingmode"]
     if options["time"]:
         def get_times():
             t = os.times()
@@ -379,25 +379,22 @@
             raise error.ParseError(cmd, _("invalid arguments"))
 
     if options['profile']:
-        import hotshot, hotshot.stats
-        prof = hotshot.Profile("hg.prof")
-        try:
-            try:
-                return prof.runcall(checkargs)
-            except:
-                try:
-                    ui.warn(_('exception raised - generating '
-                             'profile anyway\n'))
-                except:
-                    pass
-                raise
-        finally:
-            prof.close()
-            stats = hotshot.stats.load("hg.prof")
-            stats.strip_dirs()
-            stats.sort_stats('time', 'calls')
-            stats.print_stats(40)
-    elif options['lsprof']:
+        format = ui.config('profiling', 'format', default='text')
+
+        if not format in ['text', 'kcachegrind']:
+            ui.warn(_("unrecognized profiling format '%s'"
+                        " - Ignored\n") % format)
+            format = 'text'
+
+        output = ui.config('profiling', 'output')
+
+        if output:
+            path = os.path.expanduser(output)
+            path = ui.expandpath(path)
+            ostream = open(path, 'wb')
+        else:
+            ostream = sys.stderr
+
         try:
             from mercurial import lsprof
         except ImportError:
@@ -410,8 +407,18 @@
             return checkargs()
         finally:
             p.disable()
-            stats = lsprof.Stats(p.getstats())
-            stats.sort()
-            stats.pprint(top=10, file=sys.stderr, climit=5)
+
+            if format == 'kcachegrind':
+                import lsprofcalltree
+                calltree = lsprofcalltree.KCacheGrind(p)
+                calltree.output(ostream)
+            else:
+                # format == 'text'
+                stats = lsprof.Stats(p.getstats())
+                stats.sort()
+                stats.pprint(top=10, file=ostream, climit=5)
+
+            if output:
+                ostream.close()
     else:
         return checkargs()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/encoding.py	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,77 @@
+"""
+encoding.py - character transcoding support for Mercurial
+
+ Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
+
+This software may be used and distributed according to the terms of
+the GNU General Public License version 2, incorporated herein by
+reference.
+"""
+
+import sys, unicodedata, locale, os, error
+
+_encodingfixup = {'646': 'ascii', 'ANSI_X3.4-1968': 'ascii'}
+
+try:
+    encoding = os.environ.get("HGENCODING")
+    if sys.platform == 'darwin' and not encoding:
+        # On darwin, getpreferredencoding ignores the locale environment and
+        # always returns mac-roman. We override this if the environment is
+        # not C (has been customized by the user).
+        locale.setlocale(locale.LC_CTYPE, '')
+        encoding = locale.getlocale()[1]
+    if not encoding:
+        encoding = locale.getpreferredencoding() or 'ascii'
+        encoding = _encodingfixup.get(encoding, encoding)
+except locale.Error:
+    encoding = 'ascii'
+encodingmode = os.environ.get("HGENCODINGMODE", "strict")
+fallbackencoding = 'ISO-8859-1'
+
+def tolocal(s):
+    """
+    Convert a string from internal UTF-8 to local encoding
+
+    All internal strings should be UTF-8 but some repos before the
+    implementation of locale support may contain latin1 or possibly
+    other character sets. We attempt to decode everything strictly
+    using UTF-8, then Latin-1, and failing that, we use UTF-8 and
+    replace unknown characters.
+    """
+    for e in ('UTF-8', fallbackencoding):
+        try:
+            u = s.decode(e) # attempt strict decoding
+            return u.encode(encoding, "replace")
+        except LookupError, k:
+            raise error.Abort("%s, please check your locale settings" % k)
+        except UnicodeDecodeError:
+            pass
+    u = s.decode("utf-8", "replace") # last ditch
+    return u.encode(encoding, "replace")
+
+def fromlocal(s):
+    """
+    Convert a string from the local character encoding to UTF-8
+
+    We attempt to decode strings using the encoding mode set by
+    HGENCODINGMODE, which defaults to 'strict'. In this mode, unknown
+    characters will cause an error message. Other modes include
+    'replace', which replaces unknown characters with a special
+    Unicode character, and 'ignore', which drops the character.
+    """
+    try:
+        return s.decode(encoding, encodingmode).encode("utf-8")
+    except UnicodeDecodeError, inst:
+        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)
+
+def colwidth(s):
+    "Find the column width of a UTF-8 string for display"
+    d = s.decode(encoding, 'replace')
+    if hasattr(unicodedata, 'east_asian_width'):
+        w = unicodedata.east_asian_width
+        return sum([w(c) in 'WF' and 2 or 1 for c in d])
+    return len(d)
+
--- a/mercurial/error.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/error.py	Wed Apr 08 23:24:22 2009 +0200
@@ -62,3 +62,6 @@
 
 class SignatureError(Exception):
     pass
+
+class Abort(Exception):
+    """Raised if a command needs to print an error and exit."""
--- a/mercurial/extensions.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/extensions.py	Wed Apr 08 23:24:22 2009 +0200
@@ -28,6 +28,17 @@
                 return v
         raise KeyError(name)
 
+def loadpath(path, module_name):
+    module_name = module_name.replace('.', '_')
+    path = os.path.expanduser(path)
+    if os.path.isdir(path):
+        # module/__init__.py style
+        d, f = os.path.split(path.rstrip('/'))
+        fd, fpath, desc = imp.find_module(f, [d])
+        return imp.load_module(module_name, fd, fpath, desc)
+    else:
+        return imp.load_source(module_name, path)
+
 def load(ui, name, path):
     if name.startswith('hgext.') or name.startswith('hgext/'):
         shortname = name[6:]
@@ -40,14 +51,7 @@
         # the module will be loaded in sys.modules
         # choose an unique name so that it doesn't
         # conflicts with other modules
-        module_name = "hgext_%s" % name.replace('.', '_')
-        if os.path.isdir(path):
-            # module/__init__.py style
-            d, f = os.path.split(path)
-            fd, fpath, desc = imp.find_module(f, [d])
-            mod = imp.load_module(module_name, fd, fpath, desc)
-        else:
-            mod = imp.load_source(module_name, path)
+        mod = loadpath(path, 'hgext.%s' % name)
     else:
         def importh(name):
             mod = __import__(name)
@@ -68,11 +72,10 @@
 
 def loadall(ui):
     result = ui.configitems("extensions")
-    for i, (name, path) in enumerate(result):
+    for (name, path) in result:
         if path:
             if path[0] == '!':
                 continue
-            path = os.path.expanduser(path)
         try:
             load(ui, name, path)
         except KeyboardInterrupt:
--- a/mercurial/filemerge.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/filemerge.py	Wed Apr 08 23:24:22 2009 +0200
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms
 # of the GNU General Public License, incorporated herein by reference.
 
-from node import nullrev, short
+from node import short
 from i18n import _
 import util, os, tempfile, simplemerge, re, filecmp
 
--- a/mercurial/graphmod.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/graphmod.py	Wed Apr 08 23:24:22 2009 +0200
@@ -6,8 +6,7 @@
 # This software may be used and distributed according to the terms of
 # the GNU General Public License, incorporated herein by reference.
 
-from node import nullrev, short
-import ui, hg, util, templatefilters
+from node import nullrev
 
 def graph(repo, start_rev, stop_rev):
     """incremental revision grapher
--- a/mercurial/hbisect.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/hbisect.py	Wed Apr 08 23:24:22 2009 +0200
@@ -78,7 +78,7 @@
     unskipped = [c for c in candidates if (c not in skip) and (c != badrev)]
     if tot == 1 or not unskipped:
         return ([changelog.node(rev) for rev in candidates], 0, good)
-    perfect = tot / 2
+    perfect = tot // 2
 
     # find the best node to test
     best_rev = None
--- a/mercurial/help.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/help.py	Wed Apr 08 23:24:22 2009 +0200
@@ -35,9 +35,9 @@
     "1165432709 0" (Wed Dec 6 13:18:29 2006 UTC)
 
     This is the internal representation format for dates. unixtime is
-    the number of seconds since the epoch (1970-01-01 00:00 UTC). offset
-    is the offset of the local timezone, in seconds west of UTC (negative
-    if the timezone is east of UTC).
+    the number of seconds since the epoch (1970-01-01 00:00 UTC).
+    offset is the offset of the local timezone, in seconds west of UTC
+    (negative if the timezone is east of UTC).
 
     The log command also accepts date ranges:
 
@@ -96,10 +96,10 @@
     (['environment', 'env'], _('Environment Variables'),
      _(r'''
 HG::
-    Path to the 'hg' executable, automatically passed when running hooks,
-    extensions or external tools. If unset or empty, this is the hg
-    executable's name if it's frozen, or an executable named 'hg'
-    (with %PATHEXT% [defaulting to COM/EXE/BAT/CMD] extensions on
+    Path to the 'hg' executable, automatically passed when running
+    hooks, extensions or external tools. If unset or empty, this is
+    the hg executable's name if it's frozen, or an executable named
+    'hg' (with %PATHEXT% [defaulting to COM/EXE/BAT/CMD] extensions on
     Windows) is searched.
 
 HGEDITOR::
@@ -135,8 +135,8 @@
     from the current repository is read.
 
     For each element in HGRCPATH:
-    * if it's a directory, all directories ending with .rc are added
-    * otherwise, the directory itself will be added
+    * if it's a directory, all files ending with .rc are added
+    * otherwise, the file itself will be added
 
 HGUSER::
     This is the string used as the author of a commit. If not set,
@@ -160,28 +160,27 @@
     This is the name of the editor to use when committing. See EDITOR.
 
 EDITOR::
-    Sometimes Mercurial needs to open a text file in an editor
-    for a user to modify, for example when writing commit messages.
-    The editor it uses is determined by looking at the environment
+    Sometimes Mercurial needs to open a text file in an editor for a
+    user to modify, for example when writing commit messages. The
+    editor it uses is determined by looking at the environment
     variables HGEDITOR, VISUAL and EDITOR, in that order. The first
     non-empty one is chosen. If all of them are empty, the editor
     defaults to 'vi'.
 
 PYTHONPATH::
-    This is used by Python to find imported modules and may need to be set
-    appropriately if this Mercurial is not installed system-wide.
+    This is used by Python to find imported modules and may need to be
+    set appropriately if this Mercurial is not installed system-wide.
     ''')),
 
     (['revs', 'revisions'], _('Specifying Single Revisions'),
      _(r'''
-    Mercurial supports several ways to specify individual
-    revisions.
+    Mercurial supports several ways to specify individual revisions.
 
-    A plain integer is treated as a revision number. Negative
-    integers are treated as toplogical offsets from the tip, with
-    -1 denoting the tip. As such, negative numbers are only useful
-    if you've memorized your local tree numbers and want to save
-    typing a single digit. This editor suggests copy and paste.
+    A plain integer is treated as a revision number. Negative integers
+    are treated as topological offsets from the tip, with -1 denoting
+    the tip. As such, negative numbers are only useful if you've
+    memorized your local tree numbers and want to save typing a single
+    digit. This editor suggests copy and paste.
 
     A 40-digit hexadecimal string is treated as a unique revision
     identifier.
@@ -202,9 +201,9 @@
     revision of an empty repository, and the parent of revision 0.
 
     The reserved name "." indicates the working directory parent. If
-    no working directory is checked out, it is equivalent to null.
-    If an uncommitted merge is in progress, "." is the revision of
-    the first parent.
+    no working directory is checked out, it is equivalent to null. If
+    an uncommitted merge is in progress, "." is the revision of the
+    first parent.
     ''')),
 
     (['mrevs', 'multirevs'], _('Specifying Multiple Revisions'),
@@ -216,8 +215,8 @@
     The syntax of range notation is [BEGIN]:[END], where BEGIN and END
     are revision identifiers. Both BEGIN and END are optional. If
     BEGIN is not specified, it defaults to revision number 0. If END
-    is not specified, it defaults to the tip. The range ":" thus
-    means "all revisions".
+    is not specified, it defaults to the tip. The range ":" thus means
+    "all revisions".
 
     If BEGIN is greater than END, revisions are treated in reverse
     order.
@@ -228,9 +227,10 @@
 
     (['diffs'], _('Diff Formats'),
      _(r'''
-    Mercurial's default format for showing changes between two versions
-    of a file is compatible with the unified format of GNU diff, which
-    can be used by GNU patch and many other standard tools.
+    Mercurial's default format for showing changes between two
+    versions of a file is compatible with the unified format of GNU
+    diff, which can be used by GNU patch and many other standard
+    tools.
 
     While this standard format is often enough, it does not encode the
     following information:
@@ -248,59 +248,66 @@
     This means that when generating diffs from a Mercurial repository
     (e.g. with "hg export"), you should be careful about things like
     file copies and renames or other things mentioned above, because
-    when applying a standard diff to a different repository, this extra
-    information is lost. Mercurial's internal operations (like push and
-    pull) are not affected by this, because they use an internal binary
-    format for communicating changes.
+    when applying a standard diff to a different repository, this
+    extra information is lost. Mercurial's internal operations (like
+    push and pull) are not affected by this, because they use an
+    internal binary format for communicating changes.
 
     To make Mercurial produce the git extended diff format, use the
-    --git option available for many commands, or set 'git = True' in the
-    [diff] section of your hgrc. You do not need to set this option when
-    importing diffs in this format or using them in the mq extension.
+    --git option available for many commands, or set 'git = True' in
+    the [diff] section of your hgrc. You do not need to set this
+    option when importing diffs in this format or using them in the mq
+    extension.
     ''')),
     (['templating'], _('Template Usage'),
      _(r'''
     Mercurial allows you to customize output of commands through
-    templates. You can either pass in a template from the command line,
-    via the --template option, or select an existing template-style (--style).
+    templates. You can either pass in a template from the command
+    line, via the --template option, or select an existing
+    template-style (--style).
 
-    You can customize output for any "log-like" command: log, outgoing,
-    incoming, tip, parents, heads and glog.
+    You can customize output for any "log-like" command: log,
+    outgoing, incoming, tip, parents, heads and glog.
 
     Three styles are packaged with Mercurial: default (the style used
-    when no explicit preference is passed), compact and changelog. Usage:
+    when no explicit preference is passed), compact and changelog.
+    Usage:
 
         $ hg log -r1 --style changelog
 
-    A template is a piece of text, with markup to invoke variable expansion:
+    A template is a piece of text, with markup to invoke variable
+    expansion:
 
         $ hg log -r1 --template "{node}\n"
         b56ce7b07c52de7d5fd79fb89701ea538af65746
 
     Strings in curly braces are called keywords. The availability of
-    keywords depends on the exact context of the templater. These keywords
-    are usually available for templating a log-like command:
+    keywords depends on the exact context of the templater. These
+    keywords are usually available for templating a log-like command:
 
     - author: String. The unmodified author of the changeset.
     - branches: String. The name of the branch on which the changeset
           was committed. Will be empty if the branch name was default.
     - date: Date information. The date when the changeset was committed.
     - desc: String. The text of the changeset description.
+    - diffstat: String. Statistics of changes with the following
+          format: "modified files: +added/-removed lines"
     - files: List of strings. All files modified, added, or removed by
           this changeset.
     - file_adds: List of strings. Files added by this changeset.
     - file_mods: List of strings. Files modified by this changeset.
     - file_dels: List of strings. Files removed by this changeset.
-    - node: String. The changeset identification hash, as a 40-character
-          hexadecimal string.
+    - node: String. The changeset identification hash, as a
+          40-character hexadecimal string.
     - parents: List of strings. The parents of the changeset.
     - rev: Integer. The repository-local changeset revision number.
     - tags: List of strings. Any tags associated with the changeset.
 
     The "date" keyword does not produce human-readable output. If you
-    want to use a date in your output, you can use a filter to process it.
-    Filters are functions which return a string based on the input variable.
-    You can also use a chain of filters to get the desired output:
+    want to use a date in your output, you can use a filter to process
+    it. Filters are functions which return a string based on the input
+    variable. You can also use a chain of filters to get the desired
+    output:
 
        $ hg tip --template "{date|isodate}\n"
        2008-08-21 18:22 +0000
@@ -317,11 +324,11 @@
           "foo/bar/baz" becomes "baz" and "foo/bar//" becomes "bar".
     - date: Date. Returns a date in a Unix date format, including
           the timezone: "Mon Sep 04 15:13:13 2006 0700".
-    - domain: Any text. Finds the first string that looks like an email
-          address, and extracts just the domain component.
+    - domain: Any text. Finds the first string that looks like an
+          email address, and extracts just the domain component.
           Example: 'User <user@example.com>' becomes 'example.com'.
-    - email: Any text. Extracts the first string that looks like an email
-          address. Example: 'User <user@example.com>' becomes
+    - email: Any text. Extracts the first string that looks like an
+          email address. Example: 'User <user@example.com>' becomes
           'user@example.com'.
     - escape: Any text. Replaces the special XML/XHTML characters "&",
           "<" and ">" with XML entities.
@@ -331,23 +338,23 @@
     - hgdate: Date. Returns the date as a pair of numbers:
           "1157407993 25200" (Unix timestamp, timezone offset).
     - isodate: Date. Returns the date in ISO 8601 format.
-    - obfuscate: Any text. Returns the input text rendered as a sequence
-          of XML entities.
+    - obfuscate: Any text. Returns the input text rendered as a
+          sequence of XML entities.
     - person: Any text. Returns the text before an email address.
     - rfc822date: Date. Returns a date using the same format used
           in email headers.
-    - short: Changeset hash. Returns the short form of a changeset hash,
-          i.e. a 12-byte hexadecimal string.
+    - short: Changeset hash. Returns the short form of a changeset
+          hash, i.e. a 12-byte hexadecimal string.
     - shortdate: Date. Returns a date like "2006-09-18".
     - strip: Any text. Strips all leading and trailing whitespace.
-    - tabindent: Any text. Returns the text, with every line except the
-          first starting with a tab character.
-    - urlescape: Any text. Escapes all "special" characters. For example,
-          "foo bar" becomes "foo%20bar".
+    - tabindent: Any text. Returns the text, with every line except
+          the first starting with a tab character.
+    - urlescape: Any text. Escapes all "special" characters. For
+          example, "foo bar" becomes "foo%20bar".
     - user: Any text. Returns the user portion of an email address.
     ''')),
 
-    (['urls'], _('Url Paths'),
+    (['urls'], _('URL Paths'),
      _(r'''
     Valid URLs are of the form:
 
@@ -364,42 +371,44 @@
     or changeset to use from the remote repository.
 
     Some features, such as pushing to http:// and https:// URLs are
-    only possible if the feature is explicitly enabled on the
-    remote Mercurial server.
+    only possible if the feature is explicitly enabled on the remote
+    Mercurial server.
 
     Some notes about using SSH with Mercurial:
-    - SSH requires an accessible shell account on the destination machine
-      and a copy of hg in the remote path or specified with as remotecmd.
+    - SSH requires an accessible shell account on the destination
+      machine and a copy of hg in the remote path or specified with as
+      remotecmd.
     - path is relative to the remote user's home directory by default.
       Use an extra slash at the start of a path to specify an absolute path:
         ssh://example.com//tmp/repository
-    - Mercurial doesn't use its own compression via SSH; the right thing
-      to do is to configure it in your ~/.ssh/config, e.g.:
+    - Mercurial doesn't use its own compression via SSH; the right
+      thing to do is to configure it in your ~/.ssh/config, e.g.:
         Host *.mylocalnetwork.example.com
           Compression no
         Host *
           Compression yes
-      Alternatively specify "ssh -C" as your ssh command in your hgrc or
-      with the --ssh command line option.
+      Alternatively specify "ssh -C" as your ssh command in your hgrc
+      or with the --ssh command line option.
 
-    These urls can all be stored in your hgrc with path aliases under the
-    [paths] section like so:
+    These URLs can all be stored in your hgrc with path aliases under
+    the [paths] section like so:
     [paths]
     alias1 = URL1
     alias2 = URL2
     ...
 
-    You can then use the alias for any command that uses a url (for example
-    'hg pull alias1' would pull from the 'alias1' path).
+    You can then use the alias for any command that uses a URL (for
+    example 'hg pull alias1' would pull from the 'alias1' path).
 
     Two path aliases are special because they are used as defaults
-    when you do not provide the url to a command:
+    when you do not provide the URL to a command:
 
     default:
-      When you create a repository with hg clone, the clone command saves
-      the location of the source repository as the new repository's
-      'default' path. This is then used when you omit path from push-
-      and pull-like commands (including in and out).
+      When you create a repository with hg clone, the clone command
+      saves the location of the source repository as the new
+      repository's 'default' path. This is then used when you omit
+      path from push- and pull-like commands (including incoming and
+      outgoing).
 
     default-push:
       The push command will look for a path named 'default-push', and
--- a/mercurial/hg.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/hg.py	Wed Apr 08 23:24:22 2009 +0200
@@ -131,7 +131,10 @@
     source = localpath(source)
 
     if os.path.exists(dest):
-        raise util.Abort(_("destination '%s' already exists") % dest)
+        if not os.path.isdir(dest):
+            raise util.Abort(_("destination '%s' already exists") % dest)
+        elif os.listdir(dest):
+            raise util.Abort(_("destination '%s' is not empty") % dest)
 
     class DirCleanup(object):
         def __init__(self, dir_):
@@ -165,10 +168,14 @@
                 copy = False
 
         if copy:
+            hgdir = os.path.realpath(os.path.join(dest, ".hg"))
             if not os.path.exists(dest):
                 os.mkdir(dest)
+            else:
+                # only clean up directories we create ourselves
+                dir_cleanup.dir_ = hgdir
             try:
-                dest_path = os.path.realpath(os.path.join(dest, ".hg"))
+                dest_path = hgdir
                 os.mkdir(dest_path)
             except OSError, inst:
                 if inst.errno == errno.EEXIST:
--- a/mercurial/hgweb/common.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/hgweb/common.py	Wed Apr 08 23:24:22 2009 +0200
@@ -78,25 +78,6 @@
         else:
             raise ErrorResponse(HTTP_SERVER_ERROR, err.strerror)
 
-def style_map(templatepath, style):
-    """Return path to mapfile for a given style.
-
-    Searches mapfile in the following locations:
-    1. templatepath/style/map
-    2. templatepath/map-style
-    3. templatepath/map
-    """
-    locations = style and [os.path.join(style, "map"), "map-"+style] or []
-    locations.append("map")
-    if isinstance(templatepath, str):
-        templatepath = [templatepath]
-    for path in templatepath:
-        for location in locations:
-            mapfile = os.path.join(path, location)
-            if os.path.isfile(mapfile):
-                return mapfile
-    raise RuntimeError("No hgweb templates found in %r" % templatepath)
-
 def paritygen(stripecount, offset=0):
     """count parity of horizontal stripes for easier reading"""
     if stripecount and offset:
--- a/mercurial/hgweb/hgweb_mod.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/hgweb/hgweb_mod.py	Wed Apr 08 23:24:22 2009 +0200
@@ -6,11 +6,10 @@
 # This software may be used and distributed according to the terms
 # of the GNU General Public License, incorporated herein by reference.
 
-import os, mimetypes
-from mercurial.node import hex, nullid
-from mercurial import ui, hg, util, hook, error
+import os
+from mercurial import ui, hg, util, hook, error, encoding
 from mercurial import templater, templatefilters
-from common import get_mtime, style_map, ErrorResponse
+from common import get_mtime, ErrorResponse
 from common import HTTP_OK, HTTP_BAD_REQUEST, HTTP_NOT_FOUND, HTTP_SERVER_ERROR
 from common import HTTP_UNAUTHORIZED, HTTP_METHOD_NOT_ALLOWED
 from request import wsgirequest
@@ -38,9 +37,7 @@
         self.stripecount = 1
         # a repo owner may set web.templates in .hg/hgrc to get any file
         # readable by the user running the CGI script
-        self.templatepath = self.config("web", "templates",
-                                        templater.templatepath(),
-                                        untrusted=False)
+        self.templatepath = self.config('web', 'templates')
 
     # The CGI scripts are often run by a user different from the repo owner.
     # Trust the settings from the .hg/hgrc files by default.
@@ -66,7 +63,7 @@
             self.maxshortchanges = int(self.config("web", "maxshortchanges", 60))
             self.maxfiles = int(self.config("web", "maxfiles", 10))
             self.allowpull = self.configbool("web", "allowpull", True)
-            self.encoding = self.config("web", "encoding", util._encoding)
+            self.encoding = self.config("web", "encoding", encoding.encoding)
 
     def run(self):
         if not os.environ.get('GATEWAY_INTERFACE', '').startswith("CGI/1."):
@@ -238,7 +235,7 @@
 
         start = req.url[-1] == '?' and '&' or '?'
         sessionvars = webutil.sessionvars(vars, start)
-        mapfile = style_map(self.templatepath, style)
+        mapfile = templater.stylemap(style, self.templatepath)
 
         if not self.reponame:
             self.reponame = (self.config("web", "name")
--- a/mercurial/hgweb/hgwebdir_mod.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/hgweb/hgwebdir_mod.py	Wed Apr 08 23:24:22 2009 +0200
@@ -8,8 +8,8 @@
 
 import os
 from mercurial.i18n import _
-from mercurial import ui, hg, util, templater, templatefilters, error
-from common import ErrorResponse, get_mtime, staticfile, style_map, paritygen,\
+from mercurial import ui, hg, util, templater, templatefilters, error, encoding
+from common import ErrorResponse, get_mtime, staticfile, paritygen,\
                    get_contact, HTTP_OK, HTTP_NOT_FOUND, HTTP_SERVER_ERROR
 from hgweb_mod import hgweb
 from request import wsgirequest
@@ -119,7 +119,7 @@
 
                 virtual = req.env.get("PATH_INFO", "").strip('/')
                 tmpl = self.templater(req)
-                ctype = tmpl('mimetype', encoding=util._encoding)
+                ctype = tmpl('mimetype', encoding=encoding.encoding)
                 ctype = templater.stringify(ctype)
 
                 # a static file
@@ -285,7 +285,7 @@
     def templater(self, req):
 
         def header(**map):
-            yield tmpl('header', encoding=util._encoding, **map)
+            yield tmpl('header', encoding=encoding.encoding, **map)
 
         def footer(**map):
             yield tmpl("footer", **map)
@@ -317,7 +317,7 @@
             style = req.form['style'][0]
         if self.stripecount is None:
             self.stripecount = int(config('web', 'stripes', 1))
-        mapfile = style_map(templater.templatepath(), style)
+        mapfile = templater.stylemap(style)
         tmpl = templater.templater(mapfile, templatefilters.filters,
                                    defaults={"header": header,
                                              "footer": footer,
--- a/mercurial/hgweb/server.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/hgweb/server.py	Wed Apr 08 23:24:22 2009 +0200
@@ -275,7 +275,7 @@
 
         def __init__(self, *args, **kwargs):
             if self.address_family is None:
-                raise error.RepoError(_('IPv6 not available on this system'))
+                raise error.RepoError(_('IPv6 is not available on this system'))
             super(IPv6HTTPServer, self).__init__(*args, **kwargs)
 
     if ssl_cert:
--- a/mercurial/hgweb/webcommands.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/hgweb/webcommands.py	Wed Apr 08 23:24:22 2009 +0200
@@ -7,9 +7,9 @@
 
 import os, mimetypes, re, cgi, copy
 import webutil
-from mercurial import error, archival, templatefilters
-from mercurial.node import short, hex, nullid
-from mercurial.util import binary, datestr
+from mercurial import error, archival, templater, templatefilters
+from mercurial.node import short, hex
+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, util
@@ -172,7 +172,6 @@
             return _search(web, tmpl, hi) # XXX redirect to 404 page?
 
     def changelist(limit=0, **map):
-        cl = web.repo.changelog
         l = [] # build a list in forward order for efficiency
         for i in xrange(start, end):
             ctx = web.repo[i]
@@ -611,7 +610,7 @@
     # readable by the user running the CGI script
     static = web.config("web", "static", None, untrusted=False)
     if not static:
-        tp = web.templatepath
+        tp = web.templatepath or templater.templatepath()
         if isinstance(tp, str):
             tp = [tp]
         static = [os.path.join(p, 'static') for p in tp]
@@ -643,7 +642,7 @@
     tree = list(graphmod.graph(web.repo, rev, downrev))
     canvasheight = (len(tree) + 1) * bg_height - 27;
     data = []
-    for i, (ctx, vtx, edges) in enumerate(tree):
+    for (ctx, vtx, edges) in tree:
         node = short(ctx.node())
         age = templatefilters.age(ctx.date())
         desc = templatefilters.firstline(ctx.description())
--- a/mercurial/hook.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/hook.py	Wed Apr 08 23:24:22 2009 +0200
@@ -7,6 +7,7 @@
 
 from i18n import _
 import util, os, sys
+from mercurial import extensions
 
 def _pythonhook(ui, repo, name, hname, funcname, args, throw):
     '''call python hook. hook is callable object, looked up as
@@ -109,8 +110,13 @@
             if callable(cmd):
                 r = _pythonhook(ui, repo, name, hname, cmd, args, throw) or r
             elif cmd.startswith('python:'):
-                r = _pythonhook(ui, repo, name, hname, cmd[7:].strip(),
-                                args, throw) or r
+                if cmd.count(':') == 2:
+                    path, cmd = cmd[7:].split(':')
+                    mod = extensions.loadpath(path, 'hgkook.%s' % hname)
+                    hookfn = getattr(mod, cmd)
+                else:
+                    hookfn = cmd[7:].strip()
+                r = _pythonhook(ui, repo, name, hname, hookfn, args, throw) or r
             else:
                 r = _exthook(ui, repo, hname, cmd, args, throw) or r
     finally:
--- a/mercurial/httprepo.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/httprepo.py	Wed Apr 08 23:24:22 2009 +0200
@@ -103,7 +103,7 @@
         if not (proto.startswith('application/mercurial-') or
                 proto.startswith('text/plain') or
                 proto.startswith('application/hg-changegroup')):
-            self.ui.debug(_("Requested URL: '%s'\n") % cu)
+            self.ui.debug(_("requested URL: '%s'\n") % cu)
             raise error.RepoError(_("'%s' does not appear to be an hg repository")
                                   % self._url)
 
--- a/mercurial/i18n.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/i18n.py	Wed Apr 08 23:24:22 2009 +0200
@@ -7,7 +7,7 @@
 of the GNU General Public License, incorporated herein by reference.
 """
 
-import gettext, sys, os
+import gettext, sys, os, encoding
 
 # modelled after templater.templatepath:
 if hasattr(sys, 'frozen'):
@@ -37,15 +37,13 @@
     if message is None:
         return message
 
-    # We cannot just run the text through util.tolocal since that
-    # leads to infinite recursion when util._encoding is invalid.
+    # We cannot just run the text through encoding.tolocal since that
+    # leads to infinite recursion when encoding._encoding is invalid.
     try:
         u = t.ugettext(message)
-        return u.encode(util._encoding, "replace")
+        return u.encode(encoding.encoding, "replace")
     except LookupError:
         return message
 
 _ = gettext
 
-# Moved after _ because of circular import.
-import util
--- a/mercurial/keepalive.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/keepalive.py	Wed Apr 08 23:24:22 2009 +0200
@@ -447,7 +447,6 @@
         return value
 
     def readline(self, limit=-1):
-        data = ""
         i = self._rbuf.find('\n')
         while i < 0 and not (0 < limit <= len(self._rbuf)):
             new = self._raw_read(self._rbufsize)
@@ -494,7 +493,7 @@
         HANDLE_ERRORS = i
         try:
             fo = urllib2.urlopen(url)
-            foo = fo.read()
+            fo.read()
             fo.close()
             try: status, reason = fo.status, fo.reason
             except AttributeError: status, reason = None, None
@@ -616,7 +615,7 @@
 def test(url, N=10):
     print "checking error hander (do this on a non-200)"
     try: error_handler(url)
-    except IOError, e:
+    except IOError:
         print "exiting - exception will prevent further tests"
         sys.exit()
     print
--- a/mercurial/localrepo.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/localrepo.py	Wed Apr 08 23:24:22 2009 +0200
@@ -9,7 +9,7 @@
 from i18n import _
 import repo, changegroup
 import changelog, dirstate, filelog, manifest, context, weakref
-import lock, transaction, stat, errno, ui, store
+import lock, transaction, stat, errno, ui, store, encoding
 import os, time, util, extensions, hook, inspect, error
 import match as match_
 import merge as merge_
@@ -160,7 +160,7 @@
         if local:
             try:
                 fp = self.opener('localtags', 'r+')
-            except IOError, err:
+            except IOError:
                 fp = self.opener('localtags', 'a')
             else:
                 prevtags = fp.read()
@@ -174,7 +174,7 @@
         if use_dirstate:
             try:
                 fp = self.wfile('.hgtags', 'rb+')
-            except IOError, err:
+            except IOError:
                 fp = self.wfile('.hgtags', 'ab')
             else:
                 prevtags = fp.read()
@@ -188,7 +188,7 @@
                 fp.write(prevtags)
 
         # committed tags are stored in UTF-8
-        writetags(fp, names, util.fromlocal, prevtags)
+        writetags(fp, names, encoding.fromlocal, prevtags)
 
         if use_dirstate and '.hgtags' not in self.dirstate:
             self.add(['.hgtags'])
@@ -254,7 +254,7 @@
                     warn(_("cannot parse entry"))
                     continue
                 node, key = s
-                key = util.tolocal(key.strip()) # stored in UTF-8
+                key = encoding.tolocal(key.strip()) # stored in UTF-8
                 try:
                     bin_n = bin(node)
                 except TypeError:
@@ -297,7 +297,7 @@
             readtags(f.data().splitlines(), f, "global")
 
         try:
-            data = util.fromlocal(self.opener("localtags").read())
+            data = encoding.fromlocal(self.opener("localtags").read())
             # localtags are stored in the local character set
             # while the internal tag table is stored in UTF-8
             readtags(data.splitlines(), "localtags", "local")
@@ -397,7 +397,7 @@
         # the branch cache is stored on disk as UTF-8, but in the local
         # charset internally
         for k, v in partial.iteritems():
-            self.branchcache[util.tolocal(k)] = v
+            self.branchcache[encoding.tolocal(k)] = v
         return self.branchcache
 
 
@@ -647,7 +647,7 @@
                 except IOError:
                     self.ui.warn(_("Named branch could not be reset, "
                                    "current branch still is: %s\n")
-                                 % util.tolocal(self.dirstate.branch()))
+                                 % encoding.tolocal(self.dirstate.branch()))
                 self.invalidate()
                 self.dirstate.invalidate()
             else:
@@ -943,7 +943,8 @@
                 if p2 != nullid:
                     edittext.append("HG: branch merge")
                 if branchname:
-                    edittext.append("HG: branch '%s'" % util.tolocal(branchname))
+                    edittext.append("HG: branch '%s'"
+                                    % encoding.tolocal(branchname))
                 edittext.extend(["HG: added %s" % f for f in added])
                 edittext.extend(["HG: changed %s" % f for f in updated])
                 edittext.extend(["HG: removed %s" % f for f in removed])
--- a/mercurial/lsprof.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/lsprof.py	Wed Apr 08 23:24:22 2009 +0200
@@ -42,7 +42,6 @@
             d = d[:top]
         cols = "% 12s %12s %11.4f %11.4f   %s\n"
         hcols = "% 12s %12s %12s %12s %s\n"
-        cols2 = "+%12s %12s %11.4f %11.4f +  %s\n"
         file.write(hcols % ("CallCount", "Recursive", "Total(ms)",
                             "Inline(ms)", "module:lineno(function)"))
         count = 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/lsprofcalltree.py	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,90 @@
+"""
+lsprofcalltree.py - lsprof output which is readable by kcachegrind
+
+Authors:
+    * David Allouche <david <at> allouche.net>
+    * Jp Calderone & Itamar Shtull-Trauring
+    * Johan Dahlin
+
+This software may be used and distributed according to the terms
+of the GNU General Public License, incorporated herein by reference.
+"""
+
+import optparse
+import os
+import sys
+
+def label(code):
+    if isinstance(code, str):
+        return '~' + code    # built-in functions ('~' sorts at the end)
+    else:
+        return '%s %s:%d' % (code.co_name,
+                             code.co_filename,
+                             code.co_firstlineno)
+
+class KCacheGrind(object):
+    def __init__(self, profiler):
+        self.data = profiler.getstats()
+        self.out_file = None
+
+    def output(self, out_file):
+        self.out_file = out_file
+        print >> out_file, 'events: Ticks'
+        self._print_summary()
+        for entry in self.data:
+            self._entry(entry)
+
+    def _print_summary(self):
+        max_cost = 0
+        for entry in self.data:
+            totaltime = int(entry.totaltime * 1000)
+            max_cost = max(max_cost, totaltime)
+        print >> self.out_file, 'summary: %d' % (max_cost,)
+
+    def _entry(self, entry):
+        out_file = self.out_file
+
+        code = entry.code
+        #print >> out_file, 'ob=%s' % (code.co_filename,)
+        if isinstance(code, str):
+            print >> out_file, 'fi=~'
+        else:
+            print >> out_file, 'fi=%s' % (code.co_filename,)
+        print >> out_file, 'fn=%s' % (label(code),)
+
+        inlinetime = int(entry.inlinetime * 1000)
+        if isinstance(code, str):
+            print >> out_file, '0 ', inlinetime
+        else:
+            print >> out_file, '%d %d' % (code.co_firstlineno, inlinetime)
+
+        # recursive calls are counted in entry.calls
+        if entry.calls:
+            calls = entry.calls
+        else:
+            calls = []
+
+        if isinstance(code, str):
+            lineno = 0
+        else:
+            lineno = code.co_firstlineno
+
+        for subentry in calls:
+            self._subentry(lineno, subentry)
+        print >> out_file
+
+    def _subentry(self, lineno, subentry):
+        out_file = self.out_file
+        code = subentry.code
+        #print >> out_file, 'cob=%s' % (code.co_filename,)
+        print >> out_file, 'cfn=%s' % (label(code),)
+        if isinstance(code, str):
+            print >> out_file, 'cfi=~'
+            print >> out_file, 'calls=%d 0' % (subentry.callcount,)
+        else:
+            print >> out_file, 'cfi=%s' % (code.co_filename,)
+            print >> out_file, 'calls=%d %d' % (
+                subentry.callcount, code.co_firstlineno)
+
+        totaltime = int(subentry.totaltime * 1000)
+        print >> out_file, '%d %d' % (lineno, totaltime)
--- a/mercurial/mail.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/mail.py	Wed Apr 08 23:24:22 2009 +0200
@@ -8,7 +8,7 @@
 from i18n import _
 import os, smtplib, socket
 import email.Header, email.MIMEText, email.Utils
-import util
+import util, encoding
 
 def _smtp(ui):
     '''build an smtp connection and return a function to send mail'''
@@ -100,8 +100,8 @@
 def _charsets(ui):
     '''Obtains charsets to send mail parts not containing patches.'''
     charsets = [cs.lower() for cs in ui.configlist('email', 'charsets')]
-    fallbacks = [util._fallbackencoding.lower(),
-                 util._encoding.lower(), 'utf-8']
+    fallbacks = [encoding.fallbackencoding.lower(),
+                 encoding.encoding.lower(), 'utf-8']
     for cs in fallbacks: # util.unique does not keep order
         if cs not in charsets:
             charsets.append(cs)
@@ -110,14 +110,14 @@
 def _encode(ui, s, charsets):
     '''Returns (converted) string, charset tuple.
     Finds out best charset by cycling through sendcharsets in descending
-    order. Tries both _encoding and _fallbackencoding for input. Only as
+    order. Tries both encoding and fallbackencoding for input. Only as
     last resort send as is in fake ascii.
     Caveat: Do not use for mail parts containing patches!'''
     try:
         s.decode('ascii')
     except UnicodeDecodeError:
         sendcharsets = charsets or _charsets(ui)
-        for ics in (util._encoding, util._fallbackencoding):
+        for ics in (encoding.encoding, encoding.fallbackencoding):
             try:
                 u = s.decode(ics)
             except UnicodeDecodeError:
--- a/mercurial/patch.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/patch.py	Wed Apr 08 23:24:22 2009 +0200
@@ -8,8 +8,8 @@
 
 from i18n import _
 from node import hex, nullid, short
-import base85, cmdutil, mdiff, util, revlog, diffhelpers, copies
-import cStringIO, email.Parser, os, re, errno, math
+import base85, cmdutil, mdiff, util, diffhelpers, copies
+import cStringIO, email.Parser, os, re, math
 import sys, tempfile, zlib
 
 gitre = re.compile('diff --git a/(.*) b/(.*)')
@@ -910,7 +910,7 @@
                 # else error?
                 # copy/rename + modify should modify target, not source
                 gp = changed.get(bfile)
-                if gp and gp.op in ('COPY', 'DELETE', 'RENAME'):
+                if gp and gp.op in ('COPY', 'DELETE', 'RENAME', 'ADD'):
                     afile = bfile
                     gitworkdone = True
             newfile = True
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/posix.py	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,220 @@
+"""
+posix.py - Posix utility function implementations for Mercurial
+
+ Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
+
+This software may be used and distributed according to the terms of
+the GNU General Public License version 2, incorporated herein by
+reference.
+"""
+
+from i18n import _
+import os, sys, osutil, errno, stat, getpass, pwd, grp
+
+posixfile = file
+nulldev = '/dev/null'
+normpath = os.path.normpath
+samestat = os.path.samestat
+
+umask = os.umask(0)
+os.umask(umask)
+
+def openhardlinks():
+    '''return true if it is safe to hold open file handles to hardlinks'''
+    return True
+
+def rcfiles(path):
+    rcs = [os.path.join(path, 'hgrc')]
+    rcdir = os.path.join(path, 'hgrc.d')
+    try:
+        rcs.extend([os.path.join(rcdir, f)
+                    for f, kind in osutil.listdir(rcdir)
+                    if f.endswith(".rc")])
+    except OSError:
+        pass
+    return rcs
+
+def system_rcpath():
+    path = []
+    # old mod_python does not set sys.argv
+    if len(getattr(sys, 'argv', [])) > 0:
+        path.extend(rcfiles(os.path.dirname(sys.argv[0]) +
+                              '/../etc/mercurial'))
+    path.extend(rcfiles('/etc/mercurial'))
+    return path
+
+def user_rcpath():
+    return [os.path.expanduser('~/.hgrc')]
+
+def parse_patch_output(output_line):
+    """parses the output produced by patch and returns the file name"""
+    pf = output_line[14:]
+    if os.sys.platform == 'OpenVMS':
+        if pf[0] == '`':
+            pf = pf[1:-1] # Remove the quotes
+    else:
+       if pf.startswith("'") and pf.endswith("'") and " " in pf:
+            pf = pf[1:-1] # Remove the quotes
+    return pf
+
+def sshargs(sshcmd, host, user, port):
+    '''Build argument list for ssh'''
+    args = user and ("%s@%s" % (user, host)) or host
+    return port and ("%s -p %s" % (args, port)) or args
+
+def is_exec(f):
+    """check whether a file is executable"""
+    return (os.lstat(f).st_mode & 0100 != 0)
+
+def set_flags(f, l, x):
+    s = os.lstat(f).st_mode
+    if l:
+        if not stat.S_ISLNK(s):
+            # switch file to link
+            data = file(f).read()
+            os.unlink(f)
+            try:
+                os.symlink(data, f)
+            except:
+                # failed to make a link, rewrite file
+                file(f, "w").write(data)
+        # no chmod needed at this point
+        return
+    if stat.S_ISLNK(s):
+        # switch link to file
+        data = os.readlink(f)
+        os.unlink(f)
+        file(f, "w").write(data)
+        s = 0666 & ~umask # avoid restatting for chmod
+
+    sx = s & 0100
+    if x and not sx:
+        # Turn on +x for every +r bit when making a file executable
+        # and obey umask.
+        os.chmod(f, s | (s & 0444) >> 2 & ~umask)
+    elif not x and sx:
+        # Turn off all +x bits
+        os.chmod(f, s & 0666)
+
+def set_binary(fd):
+    pass
+
+def pconvert(path):
+    return path
+
+def localpath(path):
+    return path
+
+def shellquote(s):
+    if os.sys.platform == 'OpenVMS':
+        return '"%s"' % s
+    else:
+        return "'%s'" % s.replace("'", "'\\''")
+
+def quotecommand(cmd):
+    return cmd
+
+def popen(command, mode='r'):
+    return os.popen(command, mode)
+
+def testpid(pid):
+    '''return False if pid dead, True if running or not sure'''
+    if os.sys.platform == 'OpenVMS':
+        return True
+    try:
+        os.kill(pid, 0)
+        return True
+    except OSError, inst:
+        return inst.errno != errno.ESRCH
+
+def explain_exit(code):
+    """return a 2-tuple (desc, code) describing a process's status"""
+    if os.WIFEXITED(code):
+        val = os.WEXITSTATUS(code)
+        return _("exited with status %d") % val, val
+    elif os.WIFSIGNALED(code):
+        val = os.WTERMSIG(code)
+        return _("killed by signal %d") % val, val
+    elif os.WIFSTOPPED(code):
+        val = os.WSTOPSIG(code)
+        return _("stopped by signal %d") % val, val
+    raise ValueError(_("invalid exit code"))
+
+def isowner(fp, st=None):
+    """Return True if the file object f belongs to the current user.
+
+    The return value of a util.fstat(f) may be passed as the st argument.
+    """
+    if st is None:
+        st = fstat(fp)
+    return st.st_uid == os.getuid()
+
+def find_exe(command):
+    '''Find executable for command searching like which does.
+    If command is a basename then PATH is searched for command.
+    PATH isn't searched if command is an absolute or relative path.
+    If command isn't found None is returned.'''
+    if sys.platform == 'OpenVMS':
+        return command
+
+    def findexisting(executable):
+        'Will return executable if existing file'
+        if os.path.exists(executable):
+            return executable
+        return None
+
+    if os.sep in command:
+        return findexisting(command)
+
+    for path in os.environ.get('PATH', '').split(os.pathsep):
+        executable = findexisting(os.path.join(path, command))
+        if executable is not None:
+            return executable
+    return None
+
+def set_signal_handler():
+    pass
+
+def statfiles(files):
+    'Stat each file in files and yield stat or None if file does not exist.'
+    lstat = os.lstat
+    for nf in files:
+        try:
+            st = lstat(nf)
+        except OSError, err:
+            if err.errno not in (errno.ENOENT, errno.ENOTDIR):
+                raise
+            st = None
+        yield st
+
+def getuser():
+    '''return name of current user'''
+    return getpass.getuser()
+
+def expand_glob(pats):
+    '''On Windows, expand the implicit globs in a list of patterns'''
+    return list(pats)
+
+def username(uid=None):
+    """Return the name of the user with the given uid.
+
+    If uid is None, return the name of the current user."""
+
+    if uid is None:
+        uid = os.getuid()
+    try:
+        return pwd.getpwuid(uid)[0]
+    except KeyError:
+        return str(uid)
+
+def groupname(gid=None):
+    """Return the name of the group with the given gid.
+
+    If gid is None, return the name of the current group."""
+
+    if gid is None:
+        gid = os.getgid()
+    try:
+        return grp.getgrgid(gid)[0]
+    except KeyError:
+        return str(gid)
--- a/mercurial/pure/base85.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/pure/base85.py	Wed Apr 08 23:24:22 2009 +0200
@@ -9,6 +9,7 @@
 
 _b85chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
             "abcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~"
+_b85chars2 = [(a + b) for a in _b85chars for b in _b85chars]
 _b85dec = {}
 
 def _mkb85dec():
@@ -22,24 +23,13 @@
     if r:
         text += '\0' * (4 - r)
     longs = len(text) >> 2
-    out = []
     words = struct.unpack('>%dL' % (longs), text)
-    for word in words:
-        # unrolling improved speed by 33%
-        word, r = divmod(word, 85)
-        e = _b85chars[r]
-        word, r = divmod(word, 85)
-        d = _b85chars[r]
-        word, r = divmod(word, 85)
-        c = _b85chars[r]
-        word, r = divmod(word, 85)
-        b = _b85chars[r]
-        word, r = divmod(word, 85)
-        a = _b85chars[r]
 
-        out += (a, b, c, d, e)
+    out = ''.join(_b85chars[(word / 52200625) % 85] +
+                  _b85chars2[(word / 7225) % 7225] +
+                  _b85chars2[word % 7225]
+                  for word in words)
 
-    out = ''.join(out)
     if pad:
         return out
 
--- a/mercurial/pure/bdiff.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/pure/bdiff.py	Wed Apr 08 23:24:22 2009 +0200
@@ -6,7 +6,16 @@
 # of the GNU General Public License, incorporated herein by reference.
 
 import struct, difflib
-# mdiff import moved to bottom due to import cycle
+
+def splitnewlines(text):
+    '''like str.splitlines, but only split on newlines.'''
+    lines = [l + '\n' for l in text.split('\n')]
+    if lines:
+        if lines[-1] == '\n':
+            lines.pop()
+        else:
+            lines[-1] = lines[-1][:-1]
+    return lines
 
 def _normalizeblocks(a, b, blocks):
     prev = None
@@ -59,11 +68,9 @@
     return "".join(bin)
 
 def blocks(a, b):
-    an = mdiff.splitnewlines(a)
-    bn = mdiff.splitnewlines(b)
+    an = splitnewlines(a)
+    bn = splitnewlines(b)
     d = difflib.SequenceMatcher(None, an, bn).get_matching_blocks()
     d = _normalizeblocks(an, bn, d)
     return [(i, i + n, j, j + n) for (i, j, n) in d]
 
-# this breaks an import cycle
-import mdiff
--- a/mercurial/pure/parsers.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/pure/parsers.py	Wed Apr 08 23:24:22 2009 +0200
@@ -5,8 +5,9 @@
 # This software may be used and distributed according to the terms
 # of the GNU General Public License, incorporated herein by reference.
 
-from node import bin, hex, nullid, nullrev
-import revlog, dirstate, struct, util, zlib
+from mercurial.node import bin, nullid, nullrev
+from mercurial import util
+import struct, zlib
 
 _pack = struct.pack
 _unpack = struct.unpack
@@ -24,7 +25,14 @@
             mfdict[f] = bin(n)
 
 def parse_index(data, inline):
-    indexformatng = revlog.indexformatng
+    def gettype(q):
+        return int(q & 0xFFFF)
+
+    def offset_type(offset, type):
+        return long(long(offset) << 16 | type)
+
+    indexformatng = ">Qiiiiii20s12x"
+
     s = struct.calcsize(indexformatng)
     index = []
     cache = None
@@ -52,8 +60,8 @@
             off += s
 
     e = list(index[0])
-    type = revlog.gettype(e[0])
-    e[0] = revlog.offset_type(0, type)
+    type = gettype(e[0])
+    e[0] = offset_type(0, type)
     index[0] = tuple(e)
 
     # add the magic null revision at -1
@@ -64,7 +72,8 @@
 def parse_dirstate(dmap, copymap, st):
     parents = [st[:20], st[20: 40]]
     # deref fields so they will be local in loop
-    e_size = struct.calcsize(dirstate._format)
+    format = ">cllll"
+    e_size = struct.calcsize(format)
     pos1 = 40
     l = len(st)
 
--- a/mercurial/repo.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/repo.py	Wed Apr 08 23:24:22 2009 +0200
@@ -7,6 +7,7 @@
 # of the GNU General Public License, incorporated herein by reference.
 
 from i18n import _
+import error
 
 class repository(object):
     def capable(self, name):
--- a/mercurial/revlog.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/revlog.py	Wed Apr 08 23:24:22 2009 +0200
@@ -10,7 +10,8 @@
 of the GNU General Public License, incorporated herein by reference.
 """
 
-from node import bin, hex, nullid, nullrev, short
+# import stuff from node for others to import from revlog
+from node import bin, hex, nullid, nullrev, short #@UnusedImport
 from i18n import _
 import changegroup, errno, ancestor, mdiff, parsers
 import struct, util, zlib, error
@@ -41,6 +42,8 @@
 def offset_type(offset, type):
     return long(long(offset) << 16 | type)
 
+nullhash = _sha(nullid)
+
 def hash(text, p1, p2):
     """generate a hash from the given text and its parent hashes
 
@@ -48,10 +51,17 @@
     in a manner that makes it easy to distinguish nodes with the same
     content in the revision graph.
     """
-    l = [p1, p2]
-    l.sort()
-    s = _sha(l[0])
-    s.update(l[1])
+    # As of now, if one of the parent node is null, p2 is null
+    if p2 == nullid:
+        # deep copy of a hash is faster than creating one
+        s = nullhash.copy()
+        s.update(p1)
+    else:
+        # none of the parent nodes are nullid
+        l = [p1, p2]
+        l.sort()
+        s = _sha(l[0])
+        s.update(l[1])
     s.update(text)
     return s.digest()
 
@@ -837,7 +847,7 @@
             # odds of a binary node being all hex in ASCII are 1 in 10**25
             try:
                 node = id
-                r = self.rev(node) # quick search the index
+                self.rev(node) # quick search the index
                 return node
             except LookupError:
                 pass # may be partial hex id
@@ -857,7 +867,7 @@
             try:
                 # a full hex nodeid?
                 node = bin(id)
-                r = self.rev(node)
+                self.rev(node)
                 return node
             except (TypeError, LookupError):
                 pass
--- a/mercurial/sshrepo.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/sshrepo.py	Wed Apr 08 23:24:22 2009 +0200
@@ -7,7 +7,7 @@
 
 from node import bin, hex
 from i18n import _
-import repo, os, re, util, error
+import repo, re, util, error
 
 class remotelock(object):
     def __init__(self, repo):
--- a/mercurial/sshserver.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/sshserver.py	Wed Apr 08 23:24:22 2009 +0200
@@ -122,8 +122,6 @@
         self.fout.flush()
 
     def do_changegroupsubset(self):
-        bases = []
-        heads = []
         argmap = dict([self.getarg(), self.getarg()])
         bases = [bin(n) for n in argmap['bases'].split(' ')]
         heads = [bin(n) for n in argmap['heads'].split(' ')]
--- a/mercurial/statichttprepo.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/statichttprepo.py	Wed Apr 08 23:24:22 2009 +0200
@@ -9,7 +9,7 @@
 
 from i18n import _
 import changelog, byterange, url, error
-import repo, localrepo, manifest, util, store
+import localrepo, manifest, util, store
 import urllib, urllib2, errno
 
 class httprangereader(object):
--- a/mercurial/store.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/store.py	Wed Apr 08 23:24:22 2009 +0200
@@ -136,7 +136,7 @@
         # files in .hg/ will be created using this mode
         mode = os.stat(path).st_mode
             # avoid some useless chmods
-        if (0777 & ~util._umask) == (0777 & mode):
+        if (0777 & ~util.umask) == (0777 & mode):
             mode = None
     except OSError:
         mode = None
--- a/mercurial/templatefilters.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/templatefilters.py	Wed Apr 08 23:24:22 2009 +0200
@@ -6,7 +6,7 @@
 # of the GNU General Public License, incorporated herein by reference.
 
 import cgi, re, os, time, urllib, textwrap
-import util, templater
+import util, templater, encoding
 
 agescales = [("second", 1),
              ("minute", 60),
@@ -76,7 +76,7 @@
     return text.replace('\n', '<br/>\n')
 
 def obfuscate(text):
-    text = unicode(text, util._encoding, 'replace')
+    text = unicode(text, encoding.encoding, 'replace')
     return ''.join(['&#%d;' % ord(c) for c in text])
 
 def domain(author):
@@ -129,15 +129,18 @@
     ('\r', '\\r'), ('\f', '\\f'), ('\b', '\\b'),
 ]
 
+def jsonescape(s):
+    for k, v in _escapes:
+        s = s.replace(k, v)
+    return s
+
 def json(obj):
     if obj is None or obj is False or obj is True:
         return {None: 'null', False: 'false', True: 'true'}[obj]
     elif isinstance(obj, int) or isinstance(obj, float):
         return str(obj)
     elif isinstance(obj, str):
-        for k, v in _escapes:
-            obj = obj.replace(k, v)
-        return '"%s"' % obj
+        return '"%s"' % jsonescape(obj)
     elif isinstance(obj, unicode):
         return json(obj.encode('utf-8'))
     elif hasattr(obj, 'keys'):
@@ -169,6 +172,8 @@
     "hgdate": lambda x: "%d %d" % x,
     "isodate": lambda x: util.datestr(x, '%Y-%m-%d %H:%M %1%2'),
     "isodatesec": lambda x: util.datestr(x, '%Y-%m-%d %H:%M:%S %1%2'),
+    "json": json,
+    "jsonescape": jsonescape,
     "obfuscate": obfuscate,
     "permissions": permissions,
     "person": person,
@@ -182,5 +187,4 @@
     "user": lambda x: util.shortuser(x),
     "stringescape": lambda x: x.encode('string_escape'),
     "xmlescape": xmlescape,
-    "json": json,
 }
--- a/mercurial/templater.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/templater.py	Wed Apr 08 23:24:22 2009 +0200
@@ -183,9 +183,32 @@
 
     return normpaths
 
+def stylemap(style, paths=None):
+    """Return path to mapfile for a given style.
+
+    Searches mapfile in the following locations:
+    1. templatepath/style/map
+    2. templatepath/map-style
+    3. templatepath/map
+    """
+
+    if paths is None:
+        paths = templatepath()
+    elif isinstance(paths, str):
+        paths = [templatepath]
+
+    locations = style and [os.path.join(style, "map"), "map-" + style] or []
+    locations.append("map")
+    for path in paths:
+        for location in locations:
+            mapfile = os.path.join(path, location)
+            if os.path.isfile(mapfile):
+                return mapfile
+
+    raise RuntimeError("No hgweb templates found in %r" % paths)
+
 def stringify(thing):
     '''turn nested template iterator into string.'''
-    if hasattr(thing, '__iter__'):
+    if hasattr(thing, '__iter__') and not isinstance(thing, str):
         return "".join([stringify(t) for t in thing if t is not None])
     return str(thing)
-
--- a/mercurial/util.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/util.py	Wed Apr 08 23:24:22 2009 +0200
@@ -13,9 +13,9 @@
 """
 
 from i18n import _
-import cStringIO, errno, getpass, re, shutil, sys, tempfile, traceback, error
-import os, stat, threading, time, calendar, ConfigParser, locale, glob, osutil
-import imp, unicodedata
+import cStringIO, errno, re, shutil, sys, tempfile, traceback, error
+import os, stat, threading, time, calendar, ConfigParser, glob, osutil
+import imp
 
 # Python compatibility
 
@@ -81,71 +81,6 @@
     popen3 = os.popen3
 
 
-_encodingfixup = {'646': 'ascii', 'ANSI_X3.4-1968': 'ascii'}
-
-try:
-    _encoding = os.environ.get("HGENCODING")
-    if sys.platform == 'darwin' and not _encoding:
-        # On darwin, getpreferredencoding ignores the locale environment and
-        # always returns mac-roman. We override this if the environment is
-        # not C (has been customized by the user).
-        locale.setlocale(locale.LC_CTYPE, '')
-        _encoding = locale.getlocale()[1]
-    if not _encoding:
-        _encoding = locale.getpreferredencoding() or 'ascii'
-        _encoding = _encodingfixup.get(_encoding, _encoding)
-except locale.Error:
-    _encoding = 'ascii'
-_encodingmode = os.environ.get("HGENCODINGMODE", "strict")
-_fallbackencoding = 'ISO-8859-1'
-
-def tolocal(s):
-    """
-    Convert a string from internal UTF-8 to local encoding
-
-    All internal strings should be UTF-8 but some repos before the
-    implementation of locale support may contain latin1 or possibly
-    other character sets. We attempt to decode everything strictly
-    using UTF-8, then Latin-1, and failing that, we use UTF-8 and
-    replace unknown characters.
-    """
-    for e in ('UTF-8', _fallbackencoding):
-        try:
-            u = s.decode(e) # attempt strict decoding
-            return u.encode(_encoding, "replace")
-        except LookupError, k:
-            raise Abort(_("%s, please check your locale settings") % k)
-        except UnicodeDecodeError:
-            pass
-    u = s.decode("utf-8", "replace") # last ditch
-    return u.encode(_encoding, "replace")
-
-def fromlocal(s):
-    """
-    Convert a string from the local character encoding to UTF-8
-
-    We attempt to decode strings using the encoding mode set by
-    HGENCODINGMODE, which defaults to 'strict'. In this mode, unknown
-    characters will cause an error message. Other modes include
-    'replace', which replaces unknown characters with a special
-    Unicode character, and 'ignore', which drops the character.
-    """
-    try:
-        return s.decode(_encoding, _encodingmode).encode("utf-8")
-    except UnicodeDecodeError, inst:
-        sub = s[max(0, inst.start-10):inst.start+10]
-        raise Abort("decoding near '%s': %s!" % (sub, inst))
-    except LookupError, k:
-        raise Abort(_("%s, please check your locale settings") % k)
-
-def colwidth(s):
-    "Find the column width of a UTF-8 string for display"
-    d = s.decode(_encoding, 'replace')
-    if hasattr(unicodedata, 'east_asian_width'):
-        w = unicodedata.east_asian_width
-        return sum([w(c) in 'WF' and 2 or 1 for c in d])
-    return len(d)
-
 def version():
     """Return version information if available."""
     try:
@@ -333,28 +268,11 @@
     if buf:
         yield ''.join(buf)
 
-class Abort(Exception):
-    """Raised if a command needs to print an error and exit."""
+Abort = error.Abort
 
 def always(fn): return True
 def never(fn): return False
 
-def expand_glob(pats):
-    '''On Windows, expand the implicit globs in a list of patterns'''
-    if os.name != 'nt':
-        return list(pats)
-    ret = []
-    for p in pats:
-        kind, name = patkind(p, None)
-        if kind is None:
-            globbed = glob.glob(name)
-            if globbed:
-                ret.extend(globbed)
-                continue
-            # if we couldn't expand the glob, just keep it around
-        ret.append(p)
-    return ret
-
 def patkind(name, default):
     """Split a string into an optional pattern kind prefix and the
     actual pattern."""
@@ -858,14 +776,6 @@
         # want to add "foo/bar/baz" before checking if there's a "foo/.hg"
         self.auditeddir.update(prefixes)
 
-def _makelock_file(info, pathname):
-    ld = os.open(pathname, os.O_CREAT | os.O_WRONLY | os.O_EXCL)
-    os.write(ld, info)
-    os.close(ld)
-
-def _readlock_file(pathname):
-    return posixfile(pathname).read()
-
 def nlinks(pathname):
     """Return number of hardlinks for the given file."""
     return os.lstat(pathname).st_nlink
@@ -876,6 +786,50 @@
     def os_link(src, dst):
         raise OSError(0, _("Hardlinks not supported"))
 
+def lookup_reg(key, name=None, scope=None):
+    return None
+
+if os.name == 'nt':
+    from windows import *
+    def expand_glob(pats):
+        '''On Windows, expand the implicit globs in a list of patterns'''
+        ret = []
+        for p in pats:
+            kind, name = patkind(p, None)
+            if kind is None:
+                globbed = glob.glob(name)
+                if globbed:
+                    ret.extend(globbed)
+                    continue
+                # if we couldn't expand the glob, just keep it around
+            ret.append(p)
+        return ret
+else:
+    from posix import *
+
+def makelock(info, pathname):
+    try:
+        return os.symlink(info, pathname)
+    except OSError, why:
+        if why.errno == errno.EEXIST:
+            raise
+    except AttributeError: # no symlink in os
+        pass
+
+    ld = os.open(pathname, os.O_CREAT | os.O_WRONLY | os.O_EXCL)
+    os.write(ld, info)
+    os.close(ld)
+
+def readlock(pathname):
+    try:
+        return os.readlink(pathname)
+    except OSError, why:
+        if why.errno not in (errno.EINVAL, errno.ENOSYS):
+            raise
+    except AttributeError: # no symlink in os
+        pass
+    return posixfile(pathname).read()
+
 def fstat(fp):
     '''stat file object that may not have fileno method.'''
     try:
@@ -883,104 +837,6 @@
     except AttributeError:
         return os.stat(fp.name)
 
-posixfile = file
-
-def openhardlinks():
-    '''return true if it is safe to hold open file handles to hardlinks'''
-    return True
-
-def _statfiles(files):
-    'Stat each file in files and yield stat or None if file does not exist.'
-    lstat = os.lstat
-    for nf in files:
-        try:
-            st = lstat(nf)
-        except OSError, err:
-            if err.errno not in (errno.ENOENT, errno.ENOTDIR):
-                raise
-            st = None
-        yield st
-
-def _statfiles_clustered(files):
-    '''Stat each file in files and yield stat or None if file does not exist.
-    Cluster and cache stat per directory to minimize number of OS stat calls.'''
-    lstat = os.lstat
-    ncase = os.path.normcase
-    sep   = os.sep
-    dircache = {} # dirname -> filename -> status | None if file does not exist
-    for nf in files:
-        nf  = ncase(nf)
-        pos = nf.rfind(sep)
-        if pos == -1:
-            dir, base = '.', nf
-        else:
-            dir, base = nf[:pos+1], nf[pos+1:]
-        cache = dircache.get(dir, None)
-        if cache is None:
-            try:
-                dmap = dict([(ncase(n), s)
-                    for n, k, s in osutil.listdir(dir, True)])
-            except OSError, err:
-                # handle directory not found in Python version prior to 2.5
-                # Python <= 2.4 returns native Windows code 3 in errno
-                # Python >= 2.5 returns ENOENT and adds winerror field
-                # EINVAL is raised if dir is not a directory.
-                if err.errno not in (3, errno.ENOENT, errno.EINVAL,
-                                     errno.ENOTDIR):
-                    raise
-                dmap = {}
-            cache = dircache.setdefault(dir, dmap)
-        yield cache.get(base, None)
-
-if sys.platform == 'win32':
-    statfiles = _statfiles_clustered
-else:
-    statfiles = _statfiles
-
-getuser_fallback = None
-
-def getuser():
-    '''return name of current user'''
-    try:
-        return getpass.getuser()
-    except ImportError:
-        # import of pwd will fail on windows - try fallback
-        if getuser_fallback:
-            return getuser_fallback()
-    # raised if win32api not available
-    raise Abort(_('user name not available - set USERNAME '
-                  'environment variable'))
-
-def username(uid=None):
-    """Return the name of the user with the given uid.
-
-    If uid is None, return the name of the current user."""
-    try:
-        import pwd
-        if uid is None:
-            uid = os.getuid()
-        try:
-            return pwd.getpwuid(uid)[0]
-        except KeyError:
-            return str(uid)
-    except ImportError:
-        return None
-
-def groupname(gid=None):
-    """Return the name of the group with the given gid.
-
-    If gid is None, return the name of the current group."""
-    try:
-        import grp
-        if gid is None:
-            gid = os.getgid()
-        try:
-            return grp.getgrgid(gid)[0]
-        except KeyError:
-            return str(gid)
-    except ImportError:
-        return None
-
 # File system features
 
 def checkcase(path):
@@ -1089,9 +945,6 @@
     except (OSError, AttributeError):
         return False
 
-_umask = os.umask(0)
-os.umask(_umask)
-
 def needbinarypatch():
     """return True if patches should be applied in binary mode by default."""
     return os.name == 'nt'
@@ -1112,382 +965,6 @@
     '''Are we running in a GUI?'''
     return os.name == "nt" or os.name == "mac" or os.environ.get("DISPLAY")
 
-def lookup_reg(key, name=None, scope=None):
-    return None
-
-# Platform specific variants
-if os.name == 'nt':
-    import msvcrt
-    nulldev = 'NUL:'
-
-    class winstdout:
-        '''stdout on windows misbehaves if sent through a pipe'''
-
-        def __init__(self, fp):
-            self.fp = fp
-
-        def __getattr__(self, key):
-            return getattr(self.fp, key)
-
-        def close(self):
-            try:
-                self.fp.close()
-            except: pass
-
-        def write(self, s):
-            try:
-                # This is workaround for "Not enough space" error on
-                # writing large size of data to console.
-                limit = 16000
-                l = len(s)
-                start = 0
-                while start < l:
-                    end = start + limit
-                    self.fp.write(s[start:end])
-                    start = end
-            except IOError, inst:
-                if inst.errno != 0: raise
-                self.close()
-                raise IOError(errno.EPIPE, 'Broken pipe')
-
-        def flush(self):
-            try:
-                return self.fp.flush()
-            except IOError, inst:
-                if inst.errno != errno.EINVAL: raise
-                self.close()
-                raise IOError(errno.EPIPE, 'Broken pipe')
-
-    sys.stdout = winstdout(sys.stdout)
-
-    def _is_win_9x():
-        '''return true if run on windows 95, 98 or me.'''
-        try:
-            return sys.getwindowsversion()[3] == 1
-        except AttributeError:
-            return 'command' in os.environ.get('comspec', '')
-
-    def openhardlinks():
-        return not _is_win_9x and "win32api" in locals()
-
-    def system_rcpath():
-        try:
-            return system_rcpath_win32()
-        except:
-            return [r'c:\mercurial\mercurial.ini']
-
-    def user_rcpath():
-        '''return os-specific hgrc search path to the user dir'''
-        try:
-            path = user_rcpath_win32()
-        except:
-            home = os.path.expanduser('~')
-            path = [os.path.join(home, 'mercurial.ini'),
-                    os.path.join(home, '.hgrc')]
-        userprofile = os.environ.get('USERPROFILE')
-        if userprofile:
-            path.append(os.path.join(userprofile, 'mercurial.ini'))
-            path.append(os.path.join(userprofile, '.hgrc'))
-        return path
-
-    def parse_patch_output(output_line):
-        """parses the output produced by patch and returns the file name"""
-        pf = output_line[14:]
-        if pf[0] == '`':
-            pf = pf[1:-1] # Remove the quotes
-        return pf
-
-    def sshargs(sshcmd, host, user, port):
-        '''Build argument list for ssh or Plink'''
-        pflag = 'plink' in sshcmd.lower() and '-P' or '-p'
-        args = user and ("%s@%s" % (user, host)) or host
-        return port and ("%s %s %s" % (args, pflag, port)) or args
-
-    def testpid(pid):
-        '''return False if pid dead, True if running or not known'''
-        return True
-
-    def set_flags(f, l, x):
-        pass
-
-    def set_binary(fd):
-        # When run without console, pipes may expose invalid
-        # fileno(), usually set to -1.
-        if hasattr(fd, 'fileno') and fd.fileno() >= 0:
-            msvcrt.setmode(fd.fileno(), os.O_BINARY)
-
-    def pconvert(path):
-        return '/'.join(splitpath(path))
-
-    def localpath(path):
-        return path.replace('/', '\\')
-
-    def normpath(path):
-        return pconvert(os.path.normpath(path))
-
-    makelock = _makelock_file
-    readlock = _readlock_file
-
-    def samestat(s1, s2):
-        return False
-
-    # A sequence of backslashes is special iff it precedes a double quote:
-    # - if there's an even number of backslashes, the double quote is not
-    #   quoted (i.e. it ends the quoted region)
-    # - if there's an odd number of backslashes, the double quote is quoted
-    # - in both cases, every pair of backslashes is unquoted into a single
-    #   backslash
-    # (See http://msdn2.microsoft.com/en-us/library/a1y7w461.aspx )
-    # So, to quote a string, we must surround it in double quotes, double
-    # the number of backslashes that preceed double quotes and add another
-    # backslash before every double quote (being careful with the double
-    # quote we've appended to the end)
-    _quotere = None
-    def shellquote(s):
-        global _quotere
-        if _quotere is None:
-            _quotere = re.compile(r'(\\*)("|\\$)')
-        return '"%s"' % _quotere.sub(r'\1\1\\\2', s)
-
-    def quotecommand(cmd):
-        """Build a command string suitable for os.popen* calls."""
-        # The extra quotes are needed because popen* runs the command
-        # through the current COMSPEC. cmd.exe suppress enclosing quotes.
-        return '"' + cmd + '"'
-
-    def popen(command, mode='r'):
-        # Work around "popen spawned process may not write to stdout
-        # under windows"
-        # http://bugs.python.org/issue1366
-        command += " 2> %s" % nulldev
-        return os.popen(quotecommand(command), mode)
-
-    def explain_exit(code):
-        return _("exited with status %d") % code, code
-
-    # if you change this stub into a real check, please try to implement the
-    # username and groupname functions above, too.
-    def isowner(fp, st=None):
-        return True
-
-    def find_exe(command):
-        '''Find executable for command searching like cmd.exe does.
-        If command is a basename then PATH is searched for command.
-        PATH isn't searched if command is an absolute or relative path.
-        An extension from PATHEXT is found and added if not present.
-        If command isn't found None is returned.'''
-        pathext = os.environ.get('PATHEXT', '.COM;.EXE;.BAT;.CMD')
-        pathexts = [ext for ext in pathext.lower().split(os.pathsep)]
-        if os.path.splitext(command)[1].lower() in pathexts:
-            pathexts = ['']
-
-        def findexisting(pathcommand):
-            'Will append extension (if needed) and return existing file'
-            for ext in pathexts:
-                executable = pathcommand + ext
-                if os.path.exists(executable):
-                    return executable
-            return None
-
-        if os.sep in command:
-            return findexisting(command)
-
-        for path in os.environ.get('PATH', '').split(os.pathsep):
-            executable = findexisting(os.path.join(path, command))
-            if executable is not None:
-                return executable
-        return None
-
-    def set_signal_handler():
-        try:
-            set_signal_handler_win32()
-        except NameError:
-            pass
-
-    try:
-        # override functions with win32 versions if possible
-        from util_win32 import *
-        if not _is_win_9x():
-            posixfile = posixfile_nt
-    except ImportError:
-        pass
-
-else:
-    nulldev = '/dev/null'
-
-    def rcfiles(path):
-        rcs = [os.path.join(path, 'hgrc')]
-        rcdir = os.path.join(path, 'hgrc.d')
-        try:
-            rcs.extend([os.path.join(rcdir, f)
-                        for f, kind in osutil.listdir(rcdir)
-                        if f.endswith(".rc")])
-        except OSError:
-            pass
-        return rcs
-
-    def system_rcpath():
-        path = []
-        # old mod_python does not set sys.argv
-        if len(getattr(sys, 'argv', [])) > 0:
-            path.extend(rcfiles(os.path.dirname(sys.argv[0]) +
-                                  '/../etc/mercurial'))
-        path.extend(rcfiles('/etc/mercurial'))
-        return path
-
-    def user_rcpath():
-        return [os.path.expanduser('~/.hgrc')]
-
-    def parse_patch_output(output_line):
-        """parses the output produced by patch and returns the file name"""
-        pf = output_line[14:]
-        if os.sys.platform == 'OpenVMS':
-            if pf[0] == '`':
-                pf = pf[1:-1] # Remove the quotes
-        else:
-           if pf.startswith("'") and pf.endswith("'") and " " in pf:
-                pf = pf[1:-1] # Remove the quotes
-        return pf
-
-    def sshargs(sshcmd, host, user, port):
-        '''Build argument list for ssh'''
-        args = user and ("%s@%s" % (user, host)) or host
-        return port and ("%s -p %s" % (args, port)) or args
-
-    def is_exec(f):
-        """check whether a file is executable"""
-        return (os.lstat(f).st_mode & 0100 != 0)
-
-    def set_flags(f, l, x):
-        s = os.lstat(f).st_mode
-        if l:
-            if not stat.S_ISLNK(s):
-                # switch file to link
-                data = file(f).read()
-                os.unlink(f)
-                try:
-                    os.symlink(data, f)
-                except:
-                    # failed to make a link, rewrite file
-                    file(f, "w").write(data)
-            # no chmod needed at this point
-            return
-        if stat.S_ISLNK(s):
-            # switch link to file
-            data = os.readlink(f)
-            os.unlink(f)
-            file(f, "w").write(data)
-            s = 0666 & ~_umask # avoid restatting for chmod
-
-        sx = s & 0100
-        if x and not sx:
-            # Turn on +x for every +r bit when making a file executable
-            # and obey umask.
-            os.chmod(f, s | (s & 0444) >> 2 & ~_umask)
-        elif not x and sx:
-            # Turn off all +x bits
-            os.chmod(f, s & 0666)
-
-    def set_binary(fd):
-        pass
-
-    def pconvert(path):
-        return path
-
-    def localpath(path):
-        return path
-
-    normpath = os.path.normpath
-    samestat = os.path.samestat
-
-    def makelock(info, pathname):
-        try:
-            os.symlink(info, pathname)
-        except OSError, why:
-            if why.errno == errno.EEXIST:
-                raise
-            else:
-                _makelock_file(info, pathname)
-
-    def readlock(pathname):
-        try:
-            return os.readlink(pathname)
-        except OSError, why:
-            if why.errno in (errno.EINVAL, errno.ENOSYS):
-                return _readlock_file(pathname)
-            else:
-                raise
-
-    def shellquote(s):
-        if os.sys.platform == 'OpenVMS':
-            return '"%s"' % s
-        else:
-            return "'%s'" % s.replace("'", "'\\''")
-
-    def quotecommand(cmd):
-        return cmd
-
-    def popen(command, mode='r'):
-        return os.popen(command, mode)
-
-    def testpid(pid):
-        '''return False if pid dead, True if running or not sure'''
-        if os.sys.platform == 'OpenVMS':
-            return True
-        try:
-            os.kill(pid, 0)
-            return True
-        except OSError, inst:
-            return inst.errno != errno.ESRCH
-
-    def explain_exit(code):
-        """return a 2-tuple (desc, code) describing a process's status"""
-        if os.WIFEXITED(code):
-            val = os.WEXITSTATUS(code)
-            return _("exited with status %d") % val, val
-        elif os.WIFSIGNALED(code):
-            val = os.WTERMSIG(code)
-            return _("killed by signal %d") % val, val
-        elif os.WIFSTOPPED(code):
-            val = os.WSTOPSIG(code)
-            return _("stopped by signal %d") % val, val
-        raise ValueError(_("invalid exit code"))
-
-    def isowner(fp, st=None):
-        """Return True if the file object f belongs to the current user.
-
-        The return value of a util.fstat(f) may be passed as the st argument.
-        """
-        if st is None:
-            st = fstat(fp)
-        return st.st_uid == os.getuid()
-
-    def find_exe(command):
-        '''Find executable for command searching like which does.
-        If command is a basename then PATH is searched for command.
-        PATH isn't searched if command is an absolute or relative path.
-        If command isn't found None is returned.'''
-        if sys.platform == 'OpenVMS':
-            return command
-
-        def findexisting(executable):
-            'Will return executable if existing file'
-            if os.path.exists(executable):
-                return executable
-            return None
-
-        if os.sep in command:
-            return findexisting(command)
-
-        for path in os.environ.get('PATH', '').split(os.pathsep):
-            executable = findexisting(os.path.join(path, command))
-            if executable is not None:
-                return executable
-        return None
-
-    def set_signal_handler():
-        pass
-
 def mktempcopy(name, emptyok=False, createmode=None):
     """Create a temporary file with the same contents from name
 
@@ -1511,7 +988,7 @@
             raise
         st_mode = createmode
         if st_mode is None:
-            st_mode = ~_umask
+            st_mode = ~umask
         st_mode &= 0666
     os.chmod(temp, st_mode)
     if emptyok:
@@ -1838,6 +1315,7 @@
         d["d"] = "28"
         return parsedate(date, extendeddateformats, d)[0]
 
+    date = date.strip()
     if date[0] == "<":
         when = upper(date[1:])
         return lambda x: x <= when
@@ -2018,3 +1496,8 @@
     except ImportError:
         pass
     return 80
+
+def iterlines(iterator):
+    for chunk in iterator:
+        for line in chunk.splitlines():
+            yield line
--- a/mercurial/util_win32.py	Wed Apr 08 23:17:33 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,375 +0,0 @@
-# util_win32.py - utility functions that use win32 API
-#
-# Copyright 2005 Matt Mackall <mpm@selenic.com>
-# Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
-#
-# This software may be used and distributed according to the terms of
-# the GNU General Public License, incorporated herein by reference.
-
-# Mark Hammond's win32all package allows better functionality on
-# Windows.  this module overrides definitions in util.py.  if not
-# available, import of this module will fail, and generic code will be
-# used.
-
-import win32api
-
-import errno, os, sys, pywintypes, win32con, win32file, win32process
-import cStringIO, winerror
-import osutil
-import util
-from win32com.shell import shell,shellcon
-
-class WinError(Exception):
-    winerror_map = {
-        winerror.ERROR_ACCESS_DENIED: errno.EACCES,
-        winerror.ERROR_ACCOUNT_DISABLED: errno.EACCES,
-        winerror.ERROR_ACCOUNT_RESTRICTION: errno.EACCES,
-        winerror.ERROR_ALREADY_ASSIGNED: errno.EBUSY,
-        winerror.ERROR_ALREADY_EXISTS: errno.EEXIST,
-        winerror.ERROR_ARITHMETIC_OVERFLOW: errno.ERANGE,
-        winerror.ERROR_BAD_COMMAND: errno.EIO,
-        winerror.ERROR_BAD_DEVICE: errno.ENODEV,
-        winerror.ERROR_BAD_DRIVER_LEVEL: errno.ENXIO,
-        winerror.ERROR_BAD_EXE_FORMAT: errno.ENOEXEC,
-        winerror.ERROR_BAD_FORMAT: errno.ENOEXEC,
-        winerror.ERROR_BAD_LENGTH: errno.EINVAL,
-        winerror.ERROR_BAD_PATHNAME: errno.ENOENT,
-        winerror.ERROR_BAD_PIPE: errno.EPIPE,
-        winerror.ERROR_BAD_UNIT: errno.ENODEV,
-        winerror.ERROR_BAD_USERNAME: errno.EINVAL,
-        winerror.ERROR_BROKEN_PIPE: errno.EPIPE,
-        winerror.ERROR_BUFFER_OVERFLOW: errno.ENAMETOOLONG,
-        winerror.ERROR_BUSY: errno.EBUSY,
-        winerror.ERROR_BUSY_DRIVE: errno.EBUSY,
-        winerror.ERROR_CALL_NOT_IMPLEMENTED: errno.ENOSYS,
-        winerror.ERROR_CANNOT_MAKE: errno.EACCES,
-        winerror.ERROR_CANTOPEN: errno.EIO,
-        winerror.ERROR_CANTREAD: errno.EIO,
-        winerror.ERROR_CANTWRITE: errno.EIO,
-        winerror.ERROR_CRC: errno.EIO,
-        winerror.ERROR_CURRENT_DIRECTORY: errno.EACCES,
-        winerror.ERROR_DEVICE_IN_USE: errno.EBUSY,
-        winerror.ERROR_DEV_NOT_EXIST: errno.ENODEV,
-        winerror.ERROR_DIRECTORY: errno.EINVAL,
-        winerror.ERROR_DIR_NOT_EMPTY: errno.ENOTEMPTY,
-        winerror.ERROR_DISK_CHANGE: errno.EIO,
-        winerror.ERROR_DISK_FULL: errno.ENOSPC,
-        winerror.ERROR_DRIVE_LOCKED: errno.EBUSY,
-        winerror.ERROR_ENVVAR_NOT_FOUND: errno.EINVAL,
-        winerror.ERROR_EXE_MARKED_INVALID: errno.ENOEXEC,
-        winerror.ERROR_FILENAME_EXCED_RANGE: errno.ENAMETOOLONG,
-        winerror.ERROR_FILE_EXISTS: errno.EEXIST,
-        winerror.ERROR_FILE_INVALID: errno.ENODEV,
-        winerror.ERROR_FILE_NOT_FOUND: errno.ENOENT,
-        winerror.ERROR_GEN_FAILURE: errno.EIO,
-        winerror.ERROR_HANDLE_DISK_FULL: errno.ENOSPC,
-        winerror.ERROR_INSUFFICIENT_BUFFER: errno.ENOMEM,
-        winerror.ERROR_INVALID_ACCESS: errno.EACCES,
-        winerror.ERROR_INVALID_ADDRESS: errno.EFAULT,
-        winerror.ERROR_INVALID_BLOCK: errno.EFAULT,
-        winerror.ERROR_INVALID_DATA: errno.EINVAL,
-        winerror.ERROR_INVALID_DRIVE: errno.ENODEV,
-        winerror.ERROR_INVALID_EXE_SIGNATURE: errno.ENOEXEC,
-        winerror.ERROR_INVALID_FLAGS: errno.EINVAL,
-        winerror.ERROR_INVALID_FUNCTION: errno.ENOSYS,
-        winerror.ERROR_INVALID_HANDLE: errno.EBADF,
-        winerror.ERROR_INVALID_LOGON_HOURS: errno.EACCES,
-        winerror.ERROR_INVALID_NAME: errno.EINVAL,
-        winerror.ERROR_INVALID_OWNER: errno.EINVAL,
-        winerror.ERROR_INVALID_PARAMETER: errno.EINVAL,
-        winerror.ERROR_INVALID_PASSWORD: errno.EPERM,
-        winerror.ERROR_INVALID_PRIMARY_GROUP: errno.EINVAL,
-        winerror.ERROR_INVALID_SIGNAL_NUMBER: errno.EINVAL,
-        winerror.ERROR_INVALID_TARGET_HANDLE: errno.EIO,
-        winerror.ERROR_INVALID_WORKSTATION: errno.EACCES,
-        winerror.ERROR_IO_DEVICE: errno.EIO,
-        winerror.ERROR_IO_INCOMPLETE: errno.EINTR,
-        winerror.ERROR_LOCKED: errno.EBUSY,
-        winerror.ERROR_LOCK_VIOLATION: errno.EACCES,
-        winerror.ERROR_LOGON_FAILURE: errno.EACCES,
-        winerror.ERROR_MAPPED_ALIGNMENT: errno.EINVAL,
-        winerror.ERROR_META_EXPANSION_TOO_LONG: errno.E2BIG,
-        winerror.ERROR_MORE_DATA: errno.EPIPE,
-        winerror.ERROR_NEGATIVE_SEEK: errno.ESPIPE,
-        winerror.ERROR_NOACCESS: errno.EFAULT,
-        winerror.ERROR_NONE_MAPPED: errno.EINVAL,
-        winerror.ERROR_NOT_ENOUGH_MEMORY: errno.ENOMEM,
-        winerror.ERROR_NOT_READY: errno.EAGAIN,
-        winerror.ERROR_NOT_SAME_DEVICE: errno.EXDEV,
-        winerror.ERROR_NO_DATA: errno.EPIPE,
-        winerror.ERROR_NO_MORE_SEARCH_HANDLES: errno.EIO,
-        winerror.ERROR_NO_PROC_SLOTS: errno.EAGAIN,
-        winerror.ERROR_NO_SUCH_PRIVILEGE: errno.EACCES,
-        winerror.ERROR_OPEN_FAILED: errno.EIO,
-        winerror.ERROR_OPEN_FILES: errno.EBUSY,
-        winerror.ERROR_OPERATION_ABORTED: errno.EINTR,
-        winerror.ERROR_OUTOFMEMORY: errno.ENOMEM,
-        winerror.ERROR_PASSWORD_EXPIRED: errno.EACCES,
-        winerror.ERROR_PATH_BUSY: errno.EBUSY,
-        winerror.ERROR_PATH_NOT_FOUND: errno.ENOENT,
-        winerror.ERROR_PIPE_BUSY: errno.EBUSY,
-        winerror.ERROR_PIPE_CONNECTED: errno.EPIPE,
-        winerror.ERROR_PIPE_LISTENING: errno.EPIPE,
-        winerror.ERROR_PIPE_NOT_CONNECTED: errno.EPIPE,
-        winerror.ERROR_PRIVILEGE_NOT_HELD: errno.EACCES,
-        winerror.ERROR_READ_FAULT: errno.EIO,
-        winerror.ERROR_SEEK: errno.EIO,
-        winerror.ERROR_SEEK_ON_DEVICE: errno.ESPIPE,
-        winerror.ERROR_SHARING_BUFFER_EXCEEDED: errno.ENFILE,
-        winerror.ERROR_SHARING_VIOLATION: errno.EACCES,
-        winerror.ERROR_STACK_OVERFLOW: errno.ENOMEM,
-        winerror.ERROR_SWAPERROR: errno.ENOENT,
-        winerror.ERROR_TOO_MANY_MODULES: errno.EMFILE,
-        winerror.ERROR_TOO_MANY_OPEN_FILES: errno.EMFILE,
-        winerror.ERROR_UNRECOGNIZED_MEDIA: errno.ENXIO,
-        winerror.ERROR_UNRECOGNIZED_VOLUME: errno.ENODEV,
-        winerror.ERROR_WAIT_NO_CHILDREN: errno.ECHILD,
-        winerror.ERROR_WRITE_FAULT: errno.EIO,
-        winerror.ERROR_WRITE_PROTECT: errno.EROFS,
-        }
-
-    def __init__(self, err):
-        self.win_errno, self.win_function, self.win_strerror = err
-        if self.win_strerror.endswith('.'):
-            self.win_strerror = self.win_strerror[:-1]
-
-class WinIOError(WinError, IOError):
-    def __init__(self, err, filename=None):
-        WinError.__init__(self, err)
-        IOError.__init__(self, self.winerror_map.get(self.win_errno, 0),
-                         self.win_strerror)
-        self.filename = filename
-
-class WinOSError(WinError, OSError):
-    def __init__(self, err):
-        WinError.__init__(self, err)
-        OSError.__init__(self, self.winerror_map.get(self.win_errno, 0),
-                         self.win_strerror)
-
-def os_link(src, dst):
-    try:
-        win32file.CreateHardLink(dst, src)
-        # CreateHardLink sometimes succeeds on mapped drives but
-        # following nlinks() returns 1. Check it now and bail out.
-        if nlinks(src) < 2:
-            try:
-                win32file.DeleteFile(dst)
-            except:
-                pass
-            # Fake hardlinking error
-            raise WinOSError((18, 'CreateHardLink', 'The system cannot '
-                              'move the file to a different disk drive'))
-    except pywintypes.error, details:
-        raise WinOSError(details)
-    except NotImplementedError: # Another fake error win Win98
-        raise WinOSError((18, 'CreateHardLink', 'Hardlinking not supported'))
-
-def nlinks(pathname):
-    """Return number of hardlinks for the given file."""
-    try:
-        fh = win32file.CreateFile(pathname,
-            win32file.GENERIC_READ, win32file.FILE_SHARE_READ,
-            None, win32file.OPEN_EXISTING, 0, None)
-        res = win32file.GetFileInformationByHandle(fh)
-        fh.Close()
-        return res[7]
-    except pywintypes.error:
-        return os.lstat(pathname).st_nlink
-
-def testpid(pid):
-    '''return True if pid is still running or unable to
-    determine, False otherwise'''
-    try:
-        handle = win32api.OpenProcess(
-            win32con.PROCESS_QUERY_INFORMATION, False, pid)
-        if handle:
-            status = win32process.GetExitCodeProcess(handle)
-            return status == win32con.STILL_ACTIVE
-    except pywintypes.error, details:
-        return details[0] != winerror.ERROR_INVALID_PARAMETER
-    return True
-
-def lookup_reg(key, valname=None, scope=None):
-    ''' Look up a key/value name in the Windows registry.
-
-    valname: value name. If unspecified, the default value for the key
-    is used.
-    scope: optionally specify scope for registry lookup, this can be
-    a sequence of scopes to look up in order. Default (CURRENT_USER,
-    LOCAL_MACHINE).
-    '''
-    try:
-        from _winreg import HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, \
-            QueryValueEx, OpenKey
-    except ImportError:
-        return None
-
-    if scope is None:
-        scope = (HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE)
-    elif not isinstance(scope, (list, tuple)):
-        scope = (scope,)
-    for s in scope:
-        try:
-            val = QueryValueEx(OpenKey(s, key), valname)[0]
-            # never let a Unicode string escape into the wild
-            return util.tolocal(val.encode('UTF-8'))
-        except EnvironmentError:
-            pass
-
-def system_rcpath_win32():
-    '''return default os-specific hgrc search path'''
-    proc = win32api.GetCurrentProcess()
-    try:
-        # This will fail on windows < NT
-        filename = win32process.GetModuleFileNameEx(proc, 0)
-    except:
-        filename = win32api.GetModuleFileName(0)
-    # Use mercurial.ini found in directory with hg.exe
-    progrc = os.path.join(os.path.dirname(filename), 'mercurial.ini')
-    if os.path.isfile(progrc):
-        return [progrc]
-    # else look for a system rcpath in the registry
-    try:
-        value = win32api.RegQueryValue(
-                win32con.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Mercurial')
-        rcpath = []
-        for p in value.split(os.pathsep):
-            if p.lower().endswith('mercurial.ini'):
-                rcpath.append(p)
-            elif os.path.isdir(p):
-                for f, kind in osutil.listdir(p):
-                    if f.endswith('.rc'):
-                        rcpath.append(os.path.join(p, f))
-        return rcpath
-    except pywintypes.error:
-        return []
-
-def user_rcpath_win32():
-    '''return os-specific hgrc search path to the user dir'''
-    userdir = os.path.expanduser('~')
-    if sys.getwindowsversion()[3] != 2 and userdir == '~':
-        # We are on win < nt: fetch the APPDATA directory location and use
-        # the parent directory as the user home dir.
-        appdir = shell.SHGetPathFromIDList(
-            shell.SHGetSpecialFolderLocation(0, shellcon.CSIDL_APPDATA))
-        userdir = os.path.dirname(appdir)
-    return [os.path.join(userdir, 'mercurial.ini'),
-            os.path.join(userdir, '.hgrc')]
-
-class posixfile_nt(object):
-    '''file object with posix-like semantics.  on windows, normal
-    files can not be deleted or renamed if they are open. must open
-    with win32file.FILE_SHARE_DELETE. this flag does not exist on
-    windows < nt, so do not use this class there.'''
-
-    # tried to use win32file._open_osfhandle to pass fd to os.fdopen,
-    # but does not work at all. wrap win32 file api instead.
-
-    def __init__(self, name, mode='rb'):
-        self.closed = False
-        self.name = name
-        self.mode = mode
-        access = 0
-        if 'r' in mode or '+' in mode:
-            access |= win32file.GENERIC_READ
-        if 'w' in mode or 'a' in mode or '+' in mode:
-            access |= win32file.GENERIC_WRITE
-        if 'r' in mode:
-            creation = win32file.OPEN_EXISTING
-        elif 'a' in mode:
-            creation = win32file.OPEN_ALWAYS
-        else:
-            creation = win32file.CREATE_ALWAYS
-        try:
-            self.handle = win32file.CreateFile(name,
-                                               access,
-                                               win32file.FILE_SHARE_READ |
-                                               win32file.FILE_SHARE_WRITE |
-                                               win32file.FILE_SHARE_DELETE,
-                                               None,
-                                               creation,
-                                               win32file.FILE_ATTRIBUTE_NORMAL,
-                                               0)
-        except pywintypes.error, err:
-            raise WinIOError(err, name)
-
-    def __iter__(self):
-        for line in self.readlines():
-            yield line
-
-    def read(self, count=-1):
-        try:
-            cs = cStringIO.StringIO()
-            while count:
-                wincount = int(count)
-                if wincount == -1:
-                    wincount = 1048576
-                val, data = win32file.ReadFile(self.handle, wincount)
-                if not data: break
-                cs.write(data)
-                if count != -1:
-                    count -= len(data)
-            return cs.getvalue()
-        except pywintypes.error, err:
-            raise WinIOError(err)
-
-    def readlines(self, sizehint=None):
-        # splitlines() splits on single '\r' while readlines()
-        # does not. cStringIO has a well behaving readlines() and is fast.
-        return cStringIO.StringIO(self.read()).readlines()
-
-    def write(self, data):
-        try:
-            if 'a' in self.mode:
-                win32file.SetFilePointer(self.handle, 0, win32file.FILE_END)
-            nwrit = 0
-            while nwrit < len(data):
-                val, nwrit = win32file.WriteFile(self.handle, data)
-                data = data[nwrit:]
-        except pywintypes.error, err:
-            raise WinIOError(err)
-
-    def writelines(self, sequence):
-        for s in sequence:
-            self.write(s)
-
-    def seek(self, pos, whence=0):
-        try:
-            win32file.SetFilePointer(self.handle, int(pos), whence)
-        except pywintypes.error, err:
-            raise WinIOError(err)
-
-    def tell(self):
-        try:
-            return win32file.SetFilePointer(self.handle, 0,
-                                            win32file.FILE_CURRENT)
-        except pywintypes.error, err:
-            raise WinIOError(err)
-
-    def close(self):
-        if not self.closed:
-            self.handle = None
-            self.closed = True
-
-    def flush(self):
-        # we have no application-level buffering
-        pass
-
-    def truncate(self, pos=0):
-        try:
-            win32file.SetFilePointer(self.handle, int(pos),
-                                     win32file.FILE_BEGIN)
-            win32file.SetEndOfFile(self.handle)
-        except pywintypes.error, err:
-            raise WinIOError(err)
-
-getuser_fallback = win32api.GetUserName
-
-def set_signal_handler_win32():
-    """Register a termination handler for console events including
-    CTRL+C. python signal handlers do not work well with socket
-    operations.
-    """
-    def handler(event):
-        win32process.ExitProcess(1)
-    win32api.SetConsoleCtrlHandler(handler)
--- a/mercurial/verify.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/mercurial/verify.py	Wed Apr 08 23:24:22 2009 +0200
@@ -72,10 +72,11 @@
     def checkentry(obj, i, node, seen, linkrevs, f):
         lr = obj.linkrev(obj.rev(node))
         if lr < 0 or (havecl and lr not in linkrevs):
-            t = "unexpected"
             if lr < 0 or lr >= len(cl):
-                t = "nonexistent"
-            err(None, _("rev %d point to %s changeset %d") % (i, t, lr), f)
+                msg = _("rev %d points to nonexistent changeset %d")
+            else:
+                msg = _("rev %d points to unexpected changeset %d")
+            err(None, msg % (i, lr), f)
             if linkrevs:
                 warn(_(" (expected %s)") % " ".join(map(str,linkrevs)))
             lr = None # can't be trusted
@@ -219,7 +220,7 @@
                         warn(_("warning: %s@%s: copy source revision is nullid %s:%s")
                             % (f, lr, rp[0], short(rp[1])))
                     else:
-                        rev = fl2.rev(rp[1])
+                        fl2.rev(rp[1])
             except Exception, inst:
                 exc(lr, _("checking rename of %s") % short(n), inst, f)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/win32.py	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,379 @@
+'''
+win32.py - utility functions that use win32 API
+
+Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
+
+This software may be used and distributed according to the terms of
+the GNU General Public License, incorporated herein by reference.
+
+Mark Hammond's win32all package allows better functionality on
+Windows.  this module overrides definitions in util.py.  if not
+available, import of this module will fail, and generic code will be
+used.
+'''
+
+import win32api
+
+import errno, os, sys, pywintypes, win32con, win32file, win32process
+import cStringIO, winerror
+import osutil, encoding
+import util
+from win32com.shell import shell,shellcon
+
+class WinError(Exception):
+    winerror_map = {
+        winerror.ERROR_ACCESS_DENIED: errno.EACCES,
+        winerror.ERROR_ACCOUNT_DISABLED: errno.EACCES,
+        winerror.ERROR_ACCOUNT_RESTRICTION: errno.EACCES,
+        winerror.ERROR_ALREADY_ASSIGNED: errno.EBUSY,
+        winerror.ERROR_ALREADY_EXISTS: errno.EEXIST,
+        winerror.ERROR_ARITHMETIC_OVERFLOW: errno.ERANGE,
+        winerror.ERROR_BAD_COMMAND: errno.EIO,
+        winerror.ERROR_BAD_DEVICE: errno.ENODEV,
+        winerror.ERROR_BAD_DRIVER_LEVEL: errno.ENXIO,
+        winerror.ERROR_BAD_EXE_FORMAT: errno.ENOEXEC,
+        winerror.ERROR_BAD_FORMAT: errno.ENOEXEC,
+        winerror.ERROR_BAD_LENGTH: errno.EINVAL,
+        winerror.ERROR_BAD_PATHNAME: errno.ENOENT,
+        winerror.ERROR_BAD_PIPE: errno.EPIPE,
+        winerror.ERROR_BAD_UNIT: errno.ENODEV,
+        winerror.ERROR_BAD_USERNAME: errno.EINVAL,
+        winerror.ERROR_BROKEN_PIPE: errno.EPIPE,
+        winerror.ERROR_BUFFER_OVERFLOW: errno.ENAMETOOLONG,
+        winerror.ERROR_BUSY: errno.EBUSY,
+        winerror.ERROR_BUSY_DRIVE: errno.EBUSY,
+        winerror.ERROR_CALL_NOT_IMPLEMENTED: errno.ENOSYS,
+        winerror.ERROR_CANNOT_MAKE: errno.EACCES,
+        winerror.ERROR_CANTOPEN: errno.EIO,
+        winerror.ERROR_CANTREAD: errno.EIO,
+        winerror.ERROR_CANTWRITE: errno.EIO,
+        winerror.ERROR_CRC: errno.EIO,
+        winerror.ERROR_CURRENT_DIRECTORY: errno.EACCES,
+        winerror.ERROR_DEVICE_IN_USE: errno.EBUSY,
+        winerror.ERROR_DEV_NOT_EXIST: errno.ENODEV,
+        winerror.ERROR_DIRECTORY: errno.EINVAL,
+        winerror.ERROR_DIR_NOT_EMPTY: errno.ENOTEMPTY,
+        winerror.ERROR_DISK_CHANGE: errno.EIO,
+        winerror.ERROR_DISK_FULL: errno.ENOSPC,
+        winerror.ERROR_DRIVE_LOCKED: errno.EBUSY,
+        winerror.ERROR_ENVVAR_NOT_FOUND: errno.EINVAL,
+        winerror.ERROR_EXE_MARKED_INVALID: errno.ENOEXEC,
+        winerror.ERROR_FILENAME_EXCED_RANGE: errno.ENAMETOOLONG,
+        winerror.ERROR_FILE_EXISTS: errno.EEXIST,
+        winerror.ERROR_FILE_INVALID: errno.ENODEV,
+        winerror.ERROR_FILE_NOT_FOUND: errno.ENOENT,
+        winerror.ERROR_GEN_FAILURE: errno.EIO,
+        winerror.ERROR_HANDLE_DISK_FULL: errno.ENOSPC,
+        winerror.ERROR_INSUFFICIENT_BUFFER: errno.ENOMEM,
+        winerror.ERROR_INVALID_ACCESS: errno.EACCES,
+        winerror.ERROR_INVALID_ADDRESS: errno.EFAULT,
+        winerror.ERROR_INVALID_BLOCK: errno.EFAULT,
+        winerror.ERROR_INVALID_DATA: errno.EINVAL,
+        winerror.ERROR_INVALID_DRIVE: errno.ENODEV,
+        winerror.ERROR_INVALID_EXE_SIGNATURE: errno.ENOEXEC,
+        winerror.ERROR_INVALID_FLAGS: errno.EINVAL,
+        winerror.ERROR_INVALID_FUNCTION: errno.ENOSYS,
+        winerror.ERROR_INVALID_HANDLE: errno.EBADF,
+        winerror.ERROR_INVALID_LOGON_HOURS: errno.EACCES,
+        winerror.ERROR_INVALID_NAME: errno.EINVAL,
+        winerror.ERROR_INVALID_OWNER: errno.EINVAL,
+        winerror.ERROR_INVALID_PARAMETER: errno.EINVAL,
+        winerror.ERROR_INVALID_PASSWORD: errno.EPERM,
+        winerror.ERROR_INVALID_PRIMARY_GROUP: errno.EINVAL,
+        winerror.ERROR_INVALID_SIGNAL_NUMBER: errno.EINVAL,
+        winerror.ERROR_INVALID_TARGET_HANDLE: errno.EIO,
+        winerror.ERROR_INVALID_WORKSTATION: errno.EACCES,
+        winerror.ERROR_IO_DEVICE: errno.EIO,
+        winerror.ERROR_IO_INCOMPLETE: errno.EINTR,
+        winerror.ERROR_LOCKED: errno.EBUSY,
+        winerror.ERROR_LOCK_VIOLATION: errno.EACCES,
+        winerror.ERROR_LOGON_FAILURE: errno.EACCES,
+        winerror.ERROR_MAPPED_ALIGNMENT: errno.EINVAL,
+        winerror.ERROR_META_EXPANSION_TOO_LONG: errno.E2BIG,
+        winerror.ERROR_MORE_DATA: errno.EPIPE,
+        winerror.ERROR_NEGATIVE_SEEK: errno.ESPIPE,
+        winerror.ERROR_NOACCESS: errno.EFAULT,
+        winerror.ERROR_NONE_MAPPED: errno.EINVAL,
+        winerror.ERROR_NOT_ENOUGH_MEMORY: errno.ENOMEM,
+        winerror.ERROR_NOT_READY: errno.EAGAIN,
+        winerror.ERROR_NOT_SAME_DEVICE: errno.EXDEV,
+        winerror.ERROR_NO_DATA: errno.EPIPE,
+        winerror.ERROR_NO_MORE_SEARCH_HANDLES: errno.EIO,
+        winerror.ERROR_NO_PROC_SLOTS: errno.EAGAIN,
+        winerror.ERROR_NO_SUCH_PRIVILEGE: errno.EACCES,
+        winerror.ERROR_OPEN_FAILED: errno.EIO,
+        winerror.ERROR_OPEN_FILES: errno.EBUSY,
+        winerror.ERROR_OPERATION_ABORTED: errno.EINTR,
+        winerror.ERROR_OUTOFMEMORY: errno.ENOMEM,
+        winerror.ERROR_PASSWORD_EXPIRED: errno.EACCES,
+        winerror.ERROR_PATH_BUSY: errno.EBUSY,
+        winerror.ERROR_PATH_NOT_FOUND: errno.ENOENT,
+        winerror.ERROR_PIPE_BUSY: errno.EBUSY,
+        winerror.ERROR_PIPE_CONNECTED: errno.EPIPE,
+        winerror.ERROR_PIPE_LISTENING: errno.EPIPE,
+        winerror.ERROR_PIPE_NOT_CONNECTED: errno.EPIPE,
+        winerror.ERROR_PRIVILEGE_NOT_HELD: errno.EACCES,
+        winerror.ERROR_READ_FAULT: errno.EIO,
+        winerror.ERROR_SEEK: errno.EIO,
+        winerror.ERROR_SEEK_ON_DEVICE: errno.ESPIPE,
+        winerror.ERROR_SHARING_BUFFER_EXCEEDED: errno.ENFILE,
+        winerror.ERROR_SHARING_VIOLATION: errno.EACCES,
+        winerror.ERROR_STACK_OVERFLOW: errno.ENOMEM,
+        winerror.ERROR_SWAPERROR: errno.ENOENT,
+        winerror.ERROR_TOO_MANY_MODULES: errno.EMFILE,
+        winerror.ERROR_TOO_MANY_OPEN_FILES: errno.EMFILE,
+        winerror.ERROR_UNRECOGNIZED_MEDIA: errno.ENXIO,
+        winerror.ERROR_UNRECOGNIZED_VOLUME: errno.ENODEV,
+        winerror.ERROR_WAIT_NO_CHILDREN: errno.ECHILD,
+        winerror.ERROR_WRITE_FAULT: errno.EIO,
+        winerror.ERROR_WRITE_PROTECT: errno.EROFS,
+        }
+
+    def __init__(self, err):
+        self.win_errno, self.win_function, self.win_strerror = err
+        if self.win_strerror.endswith('.'):
+            self.win_strerror = self.win_strerror[:-1]
+
+class WinIOError(WinError, IOError):
+    def __init__(self, err, filename=None):
+        WinError.__init__(self, err)
+        IOError.__init__(self, self.winerror_map.get(self.win_errno, 0),
+                         self.win_strerror)
+        self.filename = filename
+
+class WinOSError(WinError, OSError):
+    def __init__(self, err):
+        WinError.__init__(self, err)
+        OSError.__init__(self, self.winerror_map.get(self.win_errno, 0),
+                         self.win_strerror)
+
+def os_link(src, dst):
+    try:
+        win32file.CreateHardLink(dst, src)
+        # CreateHardLink sometimes succeeds on mapped drives but
+        # following nlinks() returns 1. Check it now and bail out.
+        if nlinks(src) < 2:
+            try:
+                win32file.DeleteFile(dst)
+            except:
+                pass
+            # Fake hardlinking error
+            raise WinOSError((18, 'CreateHardLink', 'The system cannot '
+                              'move the file to a different disk drive'))
+    except pywintypes.error, details:
+        raise WinOSError(details)
+    except NotImplementedError: # Another fake error win Win98
+        raise WinOSError((18, 'CreateHardLink', 'Hardlinking not supported'))
+
+def nlinks(pathname):
+    """Return number of hardlinks for the given file."""
+    try:
+        fh = win32file.CreateFile(pathname,
+            win32file.GENERIC_READ, win32file.FILE_SHARE_READ,
+            None, win32file.OPEN_EXISTING, 0, None)
+        res = win32file.GetFileInformationByHandle(fh)
+        fh.Close()
+        return res[7]
+    except pywintypes.error:
+        return os.lstat(pathname).st_nlink
+
+def testpid(pid):
+    '''return True if pid is still running or unable to
+    determine, False otherwise'''
+    try:
+        handle = win32api.OpenProcess(
+            win32con.PROCESS_QUERY_INFORMATION, False, pid)
+        if handle:
+            status = win32process.GetExitCodeProcess(handle)
+            return status == win32con.STILL_ACTIVE
+    except pywintypes.error, details:
+        return details[0] != winerror.ERROR_INVALID_PARAMETER
+    return True
+
+def lookup_reg(key, valname=None, scope=None):
+    ''' Look up a key/value name in the Windows registry.
+
+    valname: value name. If unspecified, the default value for the key
+    is used.
+    scope: optionally specify scope for registry lookup, this can be
+    a sequence of scopes to look up in order. Default (CURRENT_USER,
+    LOCAL_MACHINE).
+    '''
+    try:
+        from _winreg import HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, \
+            QueryValueEx, OpenKey
+    except ImportError:
+        return None
+
+    if scope is None:
+        scope = (HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE)
+    elif not isinstance(scope, (list, tuple)):
+        scope = (scope,)
+    for s in scope:
+        try:
+            val = QueryValueEx(OpenKey(s, key), valname)[0]
+            # never let a Unicode string escape into the wild
+            return encoding.tolocal(val.encode('UTF-8'))
+        except EnvironmentError:
+            pass
+
+def system_rcpath_win32():
+    '''return default os-specific hgrc search path'''
+    proc = win32api.GetCurrentProcess()
+    try:
+        # This will fail on windows < NT
+        filename = win32process.GetModuleFileNameEx(proc, 0)
+    except:
+        filename = win32api.GetModuleFileName(0)
+    # Use mercurial.ini found in directory with hg.exe
+    progrc = os.path.join(os.path.dirname(filename), 'mercurial.ini')
+    if os.path.isfile(progrc):
+        return [progrc]
+    # else look for a system rcpath in the registry
+    try:
+        value = win32api.RegQueryValue(
+                win32con.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Mercurial')
+        rcpath = []
+        for p in value.split(os.pathsep):
+            if p.lower().endswith('mercurial.ini'):
+                rcpath.append(p)
+            elif os.path.isdir(p):
+                for f, kind in osutil.listdir(p):
+                    if f.endswith('.rc'):
+                        rcpath.append(os.path.join(p, f))
+        return rcpath
+    except pywintypes.error:
+        return []
+
+def user_rcpath_win32():
+    '''return os-specific hgrc search path to the user dir'''
+    userdir = os.path.expanduser('~')
+    if sys.getwindowsversion()[3] != 2 and userdir == '~':
+        # We are on win < nt: fetch the APPDATA directory location and use
+        # the parent directory as the user home dir.
+        appdir = shell.SHGetPathFromIDList(
+            shell.SHGetSpecialFolderLocation(0, shellcon.CSIDL_APPDATA))
+        userdir = os.path.dirname(appdir)
+    return [os.path.join(userdir, 'mercurial.ini'),
+            os.path.join(userdir, '.hgrc')]
+
+class posixfile_nt(object):
+    '''file object with posix-like semantics.  on windows, normal
+    files can not be deleted or renamed if they are open. must open
+    with win32file.FILE_SHARE_DELETE. this flag does not exist on
+    windows < nt, so do not use this class there.'''
+
+    # tried to use win32file._open_osfhandle to pass fd to os.fdopen,
+    # but does not work at all. wrap win32 file api instead.
+
+    def __init__(self, name, mode='rb'):
+        self.closed = False
+        self.name = name
+        self.mode = mode
+        access = 0
+        if 'r' in mode or '+' in mode:
+            access |= win32file.GENERIC_READ
+        if 'w' in mode or 'a' in mode or '+' in mode:
+            access |= win32file.GENERIC_WRITE
+        if 'r' in mode:
+            creation = win32file.OPEN_EXISTING
+        elif 'a' in mode:
+            creation = win32file.OPEN_ALWAYS
+        else:
+            creation = win32file.CREATE_ALWAYS
+        try:
+            self.handle = win32file.CreateFile(name,
+                                               access,
+                                               win32file.FILE_SHARE_READ |
+                                               win32file.FILE_SHARE_WRITE |
+                                               win32file.FILE_SHARE_DELETE,
+                                               None,
+                                               creation,
+                                               win32file.FILE_ATTRIBUTE_NORMAL,
+                                               0)
+        except pywintypes.error, err:
+            raise WinIOError(err, name)
+
+    def __iter__(self):
+        for line in self.readlines():
+            yield line
+
+    def read(self, count=-1):
+        try:
+            cs = cStringIO.StringIO()
+            while count:
+                wincount = int(count)
+                if wincount == -1:
+                    wincount = 1048576
+                val, data = win32file.ReadFile(self.handle, wincount)
+                if not data: break
+                cs.write(data)
+                if count != -1:
+                    count -= len(data)
+            return cs.getvalue()
+        except pywintypes.error, err:
+            raise WinIOError(err)
+
+    def readlines(self, sizehint=None):
+        # splitlines() splits on single '\r' while readlines()
+        # does not. cStringIO has a well behaving readlines() and is fast.
+        return cStringIO.StringIO(self.read()).readlines()
+
+    def write(self, data):
+        try:
+            if 'a' in self.mode:
+                win32file.SetFilePointer(self.handle, 0, win32file.FILE_END)
+            nwrit = 0
+            while nwrit < len(data):
+                val, nwrit = win32file.WriteFile(self.handle, data)
+                data = data[nwrit:]
+        except pywintypes.error, err:
+            raise WinIOError(err)
+
+    def writelines(self, sequence):
+        for s in sequence:
+            self.write(s)
+
+    def seek(self, pos, whence=0):
+        try:
+            win32file.SetFilePointer(self.handle, int(pos), whence)
+        except pywintypes.error, err:
+            raise WinIOError(err)
+
+    def tell(self):
+        try:
+            return win32file.SetFilePointer(self.handle, 0,
+                                            win32file.FILE_CURRENT)
+        except pywintypes.error, err:
+            raise WinIOError(err)
+
+    def close(self):
+        if not self.closed:
+            self.handle = None
+            self.closed = True
+
+    def flush(self):
+        # we have no application-level buffering
+        pass
+
+    def truncate(self, pos=0):
+        try:
+            win32file.SetFilePointer(self.handle, int(pos),
+                                     win32file.FILE_BEGIN)
+            win32file.SetEndOfFile(self.handle)
+        except pywintypes.error, err:
+            raise WinIOError(err)
+
+def getuser():
+    '''return name of current user'''
+    return win32api.GetUserName()
+
+def set_signal_handler_win32():
+    """Register a termination handler for console events including
+    CTRL+C. python signal handlers do not work well with socket
+    operations.
+    """
+    def handler(event):
+        win32process.ExitProcess(1)
+    win32api.SetConsoleCtrlHandler(handler)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/windows.py	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,253 @@
+"""
+windows.py - Windows utility function implementations for Mercurial
+
+ Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
+
+This software may be used and distributed according to the terms of
+the GNU General Public License version 2, incorporated herein by
+reference.
+"""
+
+from i18n import _
+import errno, msvcrt, os, osutil, re, sys, error
+nulldev = 'NUL:'
+
+umask = 002
+
+class winstdout:
+    '''stdout on windows misbehaves if sent through a pipe'''
+
+    def __init__(self, fp):
+        self.fp = fp
+
+    def __getattr__(self, key):
+        return getattr(self.fp, key)
+
+    def close(self):
+        try:
+            self.fp.close()
+        except: pass
+
+    def write(self, s):
+        try:
+            # This is workaround for "Not enough space" error on
+            # writing large size of data to console.
+            limit = 16000
+            l = len(s)
+            start = 0
+            while start < l:
+                end = start + limit
+                self.fp.write(s[start:end])
+                start = end
+        except IOError, inst:
+            if inst.errno != 0: raise
+            self.close()
+            raise IOError(errno.EPIPE, 'Broken pipe')
+
+    def flush(self):
+        try:
+            return self.fp.flush()
+        except IOError, inst:
+            if inst.errno != errno.EINVAL: raise
+            self.close()
+            raise IOError(errno.EPIPE, 'Broken pipe')
+
+sys.stdout = winstdout(sys.stdout)
+
+def _is_win_9x():
+    '''return true if run on windows 95, 98 or me.'''
+    try:
+        return sys.getwindowsversion()[3] == 1
+    except AttributeError:
+        return 'command' in os.environ.get('comspec', '')
+
+def openhardlinks():
+    return not _is_win_9x and "win32api" in locals()
+
+def system_rcpath():
+    try:
+        return system_rcpath_win32()
+    except:
+        return [r'c:\mercurial\mercurial.ini']
+
+def user_rcpath():
+    '''return os-specific hgrc search path to the user dir'''
+    try:
+        path = user_rcpath_win32()
+    except:
+        home = os.path.expanduser('~')
+        path = [os.path.join(home, 'mercurial.ini'),
+                os.path.join(home, '.hgrc')]
+    userprofile = os.environ.get('USERPROFILE')
+    if userprofile:
+        path.append(os.path.join(userprofile, 'mercurial.ini'))
+        path.append(os.path.join(userprofile, '.hgrc'))
+    return path
+
+def parse_patch_output(output_line):
+    """parses the output produced by patch and returns the file name"""
+    pf = output_line[14:]
+    if pf[0] == '`':
+        pf = pf[1:-1] # Remove the quotes
+    return pf
+
+def sshargs(sshcmd, host, user, port):
+    '''Build argument list for ssh or Plink'''
+    pflag = 'plink' in sshcmd.lower() and '-P' or '-p'
+    args = user and ("%s@%s" % (user, host)) or host
+    return port and ("%s %s %s" % (args, pflag, port)) or args
+
+def testpid(pid):
+    '''return False if pid dead, True if running or not known'''
+    return True
+
+def set_flags(f, l, x):
+    pass
+
+def set_binary(fd):
+    # When run without console, pipes may expose invalid
+    # fileno(), usually set to -1.
+    if hasattr(fd, 'fileno') and fd.fileno() >= 0:
+        msvcrt.setmode(fd.fileno(), os.O_BINARY)
+
+def pconvert(path):
+    return '/'.join(path.split(os.sep))
+
+def localpath(path):
+    return path.replace('/', '\\')
+
+def normpath(path):
+    return pconvert(os.path.normpath(path))
+
+def samestat(s1, s2):
+    return False
+
+# A sequence of backslashes is special iff it precedes a double quote:
+# - if there's an even number of backslashes, the double quote is not
+#   quoted (i.e. it ends the quoted region)
+# - if there's an odd number of backslashes, the double quote is quoted
+# - in both cases, every pair of backslashes is unquoted into a single
+#   backslash
+# (See http://msdn2.microsoft.com/en-us/library/a1y7w461.aspx )
+# So, to quote a string, we must surround it in double quotes, double
+# the number of backslashes that preceed double quotes and add another
+# backslash before every double quote (being careful with the double
+# quote we've appended to the end)
+_quotere = None
+def shellquote(s):
+    global _quotere
+    if _quotere is None:
+        _quotere = re.compile(r'(\\*)("|\\$)')
+    return '"%s"' % _quotere.sub(r'\1\1\\\2', s)
+
+def quotecommand(cmd):
+    """Build a command string suitable for os.popen* calls."""
+    # The extra quotes are needed because popen* runs the command
+    # through the current COMSPEC. cmd.exe suppress enclosing quotes.
+    return '"' + cmd + '"'
+
+def popen(command, mode='r'):
+    # Work around "popen spawned process may not write to stdout
+    # under windows"
+    # http://bugs.python.org/issue1366
+    command += " 2> %s" % nulldev
+    return os.popen(quotecommand(command), mode)
+
+def explain_exit(code):
+    return _("exited with status %d") % code, code
+
+# if you change this stub into a real check, please try to implement the
+# username and groupname functions above, too.
+def isowner(fp, st=None):
+    return True
+
+def find_exe(command):
+    '''Find executable for command searching like cmd.exe does.
+    If command is a basename then PATH is searched for command.
+    PATH isn't searched if command is an absolute or relative path.
+    An extension from PATHEXT is found and added if not present.
+    If command isn't found None is returned.'''
+    pathext = os.environ.get('PATHEXT', '.COM;.EXE;.BAT;.CMD')
+    pathexts = [ext for ext in pathext.lower().split(os.pathsep)]
+    if os.path.splitext(command)[1].lower() in pathexts:
+        pathexts = ['']
+
+    def findexisting(pathcommand):
+        'Will append extension (if needed) and return existing file'
+        for ext in pathexts:
+            executable = pathcommand + ext
+            if os.path.exists(executable):
+                return executable
+        return None
+
+    if os.sep in command:
+        return findexisting(command)
+
+    for path in os.environ.get('PATH', '').split(os.pathsep):
+        executable = findexisting(os.path.join(path, command))
+        if executable is not None:
+            return executable
+    return None
+
+def set_signal_handler():
+    try:
+        set_signal_handler_win32()
+    except NameError:
+        pass
+
+def statfiles(files):
+    '''Stat each file in files and yield stat or None if file does not exist.
+    Cluster and cache stat per directory to minimize number of OS stat calls.'''
+    ncase = os.path.normcase
+    sep   = os.sep
+    dircache = {} # dirname -> filename -> status | None if file does not exist
+    for nf in files:
+        nf  = ncase(nf)
+        pos = nf.rfind(sep)
+        if pos == -1:
+            dir, base = '.', nf
+        else:
+            dir, base = nf[:pos+1], nf[pos+1:]
+        cache = dircache.get(dir, None)
+        if cache is None:
+            try:
+                dmap = dict([(ncase(n), s)
+                    for n, k, s in osutil.listdir(dir, True)])
+            except OSError, err:
+                # handle directory not found in Python version prior to 2.5
+                # Python <= 2.4 returns native Windows code 3 in errno
+                # Python >= 2.5 returns ENOENT and adds winerror field
+                # EINVAL is raised if dir is not a directory.
+                if err.errno not in (3, errno.ENOENT, errno.EINVAL,
+                                     errno.ENOTDIR):
+                    raise
+                dmap = {}
+            cache = dircache.setdefault(dir, dmap)
+        yield cache.get(base, None)
+
+def getuser():
+    '''return name of current user'''
+    raise error.Abort(_('user name not available - set USERNAME '
+                       'environment variable'))
+
+def username(uid=None):
+    """Return the name of the user with the given uid.
+
+    If uid is None, return the name of the current user."""
+    return None
+
+def groupname(gid=None):
+    """Return the name of the group with the given gid.
+
+    If gid is None, return the name of the current group."""
+    return None
+
+posixfile = file
+try:
+    # override functions with win32 versions if possible
+    from win32 import *
+    if not _is_win_9x():
+        posixfile = posixfile_nt
+except ImportError:
+    pass
+
--- a/setup.py	Wed Apr 08 23:17:33 2009 +0200
+++ b/setup.py	Wed Apr 08 23:24:22 2009 +0200
@@ -97,10 +97,7 @@
 except ImportError:
     pass
 
-def getversion():
-    if not os.path.exists('.hg'):
-        return None # not in a repository
-
+if os.path.exists('.hg'):
     # execute hg out of this directory with a custom environment which
     # includes the pure Python modules in mercurial/pure
     pypath = os.environ.get('PYTHONPATH', '')
@@ -108,6 +105,7 @@
     os.environ['PYTHONPATH'] = os.pathsep.join(['mercurial', purepath, pypath])
     os.environ['HGRCPATH'] = '' # do not read any config file
     cmd = '%s hg id -it' % sys.executable
+    version = None
 
     try:
         l = os.popen(cmd).read().split()
@@ -122,16 +120,18 @@
         version = l[-1] # latest tag or revision number
         if version.endswith('+'):
             version += time.strftime('%Y%m%d')
-        return version
 
-version = getversion()
-if version:
-    f = file("mercurial/__version__.py", "w")
-    f.write('# this file is autogenerated by setup.py\n')
-    f.write('version = "%s"\n' % version)
-    f.close()
-else:
-    version = "unknown"
+    if version:
+        f = file("mercurial/__version__.py", "w")
+        f.write('# this file is autogenerated by setup.py\n')
+        f.write('version = "%s"\n' % version)
+        f.close()
+
+try:
+    from mercurial import __version__
+    version = __version__.version
+except ImportError:
+    version = 'unknown'
 
 class install_package_data(install_data):
     def finalize_options(self):
@@ -220,7 +220,6 @@
     pass
 
 try:
-    import posix
     ext_modules.append(Extension('mercurial.osutil', ['mercurial/osutil.c']))
 
     if sys.platform == 'linux2' and os.uname()[2] > '2.6':
--- a/templates/paper/error.tmpl	Wed Apr 08 23:17:33 2009 +0200
+++ b/templates/paper/error.tmpl	Wed Apr 08 23:24:22 2009 +0200
@@ -7,7 +7,7 @@
 <div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
-<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <ul>
 <li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
--- a/templates/paper/index.tmpl	Wed Apr 08 23:17:33 2009 +0200
+++ b/templates/paper/index.tmpl	Wed Apr 08 23:24:22 2009 +0200
@@ -6,7 +6,7 @@
 <div class="container">
 <div class="menu">
 <a href="http://www.selenic.com/mercurial/">
-<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <div class="main">
 <h2>Mercurial Repositories</h2>
--- a/tests/test-churn	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-churn	Wed Apr 08 23:24:22 2009 +0200
@@ -20,7 +20,15 @@
 hg ci -m changeca -u user3 -d 12:00 a
 hg ci -m changecb -u user3 -d 12:15 b
 hg ci -Am addc -u user3 -d 12:30
+mkdir -p d/e
+echo abc > d/e/f1.txt
+hg ci -Am "add d/e/f1.txt" -u user1 -d 12:45 d/e/f1.txt
+mkdir -p d/g
+echo def > d/g/f2.txt
+hg ci -Am "add d/g/f2.txt" -u user1 -d 13:00 d/g/f2.txt
 
+echo % churn separate directories
+hg churn d/e
 echo % churn all
 hg churn
 echo % churn up to rev 2
--- a/tests/test-churn.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-churn.out	Wed Apr 08 23:24:22 2009 +0200
@@ -2,22 +2,25 @@
 adding a
 adding b
 adding c
+% churn separate directories
+user1      1 ***************************************************************
 % churn all
 user3      3 ***************************************************************
+user1      3 ***************************************************************
 user2      2 ******************************************
-user1      1 *********************
 % churn up to rev 2
 user2      2 ***************************************************************
 user1      1 *******************************
 % churn with aliases
 alias3      3 **************************************************************
+alias1      3 **************************************************************
 user2       2 *****************************************
-alias1      1 ********************
 % churn with column specifier
 user3      3 ***********************
+user1      3 ***********************
 user2      2 ***************
-user1      1 *******
 % churn by hour
-06      1 **********************
-09      2 ********************************************
-12      3 ******************************************************************
+06      1 ****************
+09      2 *********************************
+12      4 ******************************************************************
+13      1 ****************
--- a/tests/test-clone	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-clone	Wed Apr 08 23:24:22 2009 +0200
@@ -60,4 +60,11 @@
 hg clone --pull a g
 hg -R g verify
 
+echo
+echo % clone to '.'
+mkdir h
+cd h
+hg clone ../a .
+cd ..
+
 exit 0
--- a/tests/test-clone-failure	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-clone-failure	Wed Apr 08 23:24:22 2009 +0200
@@ -43,4 +43,23 @@
 cd ..
 hg clone q
 
+# destination directory not empty
+mkdir a 
+echo stuff > a/a
+hg clone q a
+echo $?
+
+# leave existing directory in place after clone failure
+hg init c
+cd c
+echo c > c
+hg commit -A -m test -d '0 0'
+chmod -rx .hg/store/data
+cd ..
+mkdir d
+hg clone c d 2> err
+echo $?
+test -d d && echo "dir is still here" || echo "dir is gone"
+test -d d/.hg && echo "repo is still here" || echo "repo is gone"
+
 true
--- a/tests/test-clone-failure.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-clone-failure.out	Wed Apr 08 23:24:22 2009 +0200
@@ -4,9 +4,15 @@
 255
 abort: repository a not found!
 255
-abort: destination '../a' already exists
+abort: Permission denied: ../a
 255
 abort: repository a not found!
 255
 destination directory: q
-abort: destination 'q' already exists
+abort: destination 'q' is not empty
+abort: destination 'a' is not empty
+255
+adding c
+255
+dir is still here
+repo is gone
--- a/tests/test-clone.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-clone.out	Wed Apr 08 23:24:22 2009 +0200
@@ -50,3 +50,7 @@
 crosschecking files in changesets and manifests
 checking files
 2 files, 11 changesets, 11 total revisions
+
+% clone to .
+updating working directory
+2 files updated, 0 files merged, 0 files removed, 0 files unresolved
--- a/tests/test-command-template	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-command-template	Wed Apr 08 23:24:22 2009 +0200
@@ -43,15 +43,15 @@
 echo '#  normal'
 hg log > log.out
 hg log --style default > style.out
-diff log.out style.out
+diff -u log.out style.out
 echo '#  verbose'
 hg log -v > log.out
 hg log -v --style default > style.out
-diff log.out style.out
+diff -u log.out style.out
 echo '#  debug'
 hg log --debug > log.out
 hg log --debug --style default > style.out
-diff log.out style.out
+diff -u log.out style.out
 
 echo '# revision with no copies (used to print a traceback)'
 hg tip -v --template '\n'
@@ -93,7 +93,7 @@
 
 echo "# keys work"
 for key in author branches date desc file_adds file_dels file_mods \
-        files manifest node parents rev tags; do
+        files manifest node parents rev tags diffstat; do
     for mode in '' --verbose --debug; do
         hg log $mode --template "$key$mode: {$key}\n"
     done
--- a/tests/test-command-template.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-command-template.out	Wed Apr 08 23:24:22 2009 +0200
@@ -534,6 +534,33 @@
 tags--debug: 
 tags--debug: 
 tags--debug: 
+diffstat: 1: +1/-0
+diffstat: 1: +1/-0
+diffstat: 0: +0/-0
+diffstat: 1: +1/-0
+diffstat: 0: +0/-0
+diffstat: 1: +1/-0
+diffstat: 1: +4/-0
+diffstat: 1: +2/-0
+diffstat: 1: +1/-0
+diffstat--verbose: 1: +1/-0
+diffstat--verbose: 1: +1/-0
+diffstat--verbose: 0: +0/-0
+diffstat--verbose: 1: +1/-0
+diffstat--verbose: 0: +0/-0
+diffstat--verbose: 1: +1/-0
+diffstat--verbose: 1: +4/-0
+diffstat--verbose: 1: +2/-0
+diffstat--verbose: 1: +1/-0
+diffstat--debug: 1: +1/-0
+diffstat--debug: 1: +1/-0
+diffstat--debug: 0: +0/-0
+diffstat--debug: 1: +1/-0
+diffstat--debug: 0: +0/-0
+diffstat--debug: 1: +1/-0
+diffstat--debug: 1: +4/-0
+diffstat--debug: 1: +2/-0
+diffstat--debug: 1: +1/-0
 # filters work
 
 hostname
--- a/tests/test-convert	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-convert	Wed Apr 08 23:24:22 2009 +0200
@@ -44,3 +44,7 @@
 echo 'include b' > filemap
 hg convert --debug --filemap filemap a partialb | \
     grep 'run hg'
+
+echo % converting empty dir should fail "nicely"
+mkdir emptydir
+PATH=$BINDIR hg convert emptydir 2>&1 | sed 's,file://.*/emptydir,.../emptydir,g'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-authormap	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+cat >> $HGRCPATH <<EOF
+[extensions]
+convert=
+EOF
+
+# Prepare orig repo
+hg init orig
+cd orig
+echo foo > foo
+HGUSER='user name' hg ci -qAm 'foo' -d '0 0'
+cd ..
+
+# Explicit --authors
+cat > authormap.txt <<EOF
+user name = Long User Name
+
+# comment
+this line is ignored
+EOF
+
+hg convert --authors authormap.txt orig new
+echo $?
+cat new/.hg/authormap
+
+hg -Rnew log
+rm -rf new
+
+# Implicit .hg/authormap
+hg init new
+mv authormap.txt new/.hg/authormap
+
+hg convert orig new
+echo $?
+
+hg -Rnew log
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-authormap.out	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,27 @@
+initializing destination new repository
+Ignoring bad line in author map file authormap.txt: this line is ignored
+scanning source...
+sorting...
+converting...
+0 foo
+Writing author map file new/.hg/authormap
+0
+user name=Long User Name
+changeset:   0:d89716e88087
+tag:         tip
+user:        Long User Name
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     foo
+
+Ignoring bad line in author map file new/.hg/authormap: this line is ignored
+scanning source...
+sorting...
+converting...
+0 foo
+0
+changeset:   0:d89716e88087
+tag:         tip
+user:        Long User Name
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     foo
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-cvs-builtincvsps-cvsnt-mergepoints	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,78 @@
+#!/bin/bash
+
+"$TESTDIR/hghave" cvs || exit 80
+
+cvscall()
+{
+    cvs -f "$@"
+}
+
+hgcat()
+{
+    hg --cwd src-hg cat -r tip "$1"
+}
+
+echo "[extensions]" >> $HGRCPATH
+echo "convert = " >> $HGRCPATH
+echo "graphlog = " >> $HGRCPATH
+echo "[convert]" >> $HGRCPATH
+echo "cvsps=builtin" >> $HGRCPATH
+
+echo % create cvs repository
+mkdir cvsmaster
+cd cvsmaster
+export CVSROOT=`pwd`
+export CVS_OPTIONS=-f
+cd ..
+
+cvscall -q -d "$CVSROOT" init
+
+cvscall -q checkout -d cvsworktmp .
+cd cvsworktmp
+mkdir foo
+cvscall -q add foo | sed -e 's/Directory .* added to the repository//g'
+cd foo
+echo foo > foo.txt
+cvscall -q add foo.txt 
+cvscall -q ci -m "foo.txt" | sed 's/.*,v.*/checking in/g'
+ 
+cd ../..
+rm -rf cvsworktmp
+
+cvscall -q checkout -d cvswork foo
+
+cd cvswork
+
+cvscall -q rtag -b -R MYBRANCH1 foo
+cvscall -q up -P -r MYBRANCH1
+echo bar > foo.txt
+cvscall -q ci -m "bar" | sed 's/.*,v.*/checking in/g'
+echo baz > foo.txt
+cvscall -q ci -m "baz" | sed 's/.*,v.*/checking in/g'
+
+cvscall -q rtag -b -R -r MYBRANCH1 MYBRANCH1_2 foo
+cvscall -q up -P -r MYBRANCH1_2
+
+echo bazzie > foo.txt
+cvscall -q ci -m "bazzie" | sed 's/.*,v.*/checking in/g'
+
+cvscall -q rtag -b -R MYBRANCH1_1 foo
+cvscall -q up -P -r MYBRANCH1_1
+
+echo quux > foo.txt
+cvscall -q ci -m "quux" | sed 's/.*,v.*/checking in/g'
+cvscall -q up -P -jMYBRANCH1 | sed 's/RCS file: .*,v/merging MYBRANCH1/g'
+echo xyzzy > foo.txt
+cvscall -q ci -m "merge" | sed 's/.*,v.*/checking in/g'
+
+cvscall -q up -P -A
+
+cvscall -q up -P -jMYBRANCH1_2 | sed 's/RCS file: .*,v/merging MYBRANCH1_2/g'
+cvscall -q ci -m "merge" | sed 's/.*,v.*/checking in/g'
+
+REALCVS=`which cvs`
+echo "for x in \$*; do if [ \"\$x\" = \"rlog\" ]; then echo \"RCS file: $CVSROOT/foo/foo.txt,v\"; cat $TESTDIR/test-convert-cvs-builtincvsps-cvsnt-mergepoints.rlog; exit 0; fi; done; $REALCVS \$*" > cvs
+chmod +x cvs
+PATH=.:${PATH} hg debugcvsps --parents foo | sed -e 's/Author:.*/Author:/' -e 's/Date:.*/Date:/'
+
+cd ..
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-cvs-builtincvsps-cvsnt-mergepoints.out	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,138 @@
+% create cvs repository
+U cvsworktmp/CVSROOT/checkoutlist
+U cvsworktmp/CVSROOT/commitinfo
+U cvsworktmp/CVSROOT/config
+U cvsworktmp/CVSROOT/cvswrappers
+U cvsworktmp/CVSROOT/loginfo
+U cvsworktmp/CVSROOT/modules
+U cvsworktmp/CVSROOT/notify
+U cvsworktmp/CVSROOT/postadmin
+U cvsworktmp/CVSROOT/postproxy
+U cvsworktmp/CVSROOT/posttag
+U cvsworktmp/CVSROOT/postwatch
+U cvsworktmp/CVSROOT/preproxy
+U cvsworktmp/CVSROOT/rcsinfo
+U cvsworktmp/CVSROOT/taginfo
+U cvsworktmp/CVSROOT/verifymsg
+
+cvs add: use `cvs commit' to add this file permanently
+checking in
+initial revision: 1.1
+U cvswork/foo.txt
+checking in
+new revision: 1.1.2.1; previous revision: 1.1
+checking in
+new revision: 1.1.2.2; previous revision: 1.1.2.1
+checking in
+new revision: 1.1.2.2.2.1; previous revision: 1.1.2.2
+U foo.txt
+checking in
+new revision: 1.1.4.1; previous revision: 1.1
+rcsmerge: warning: conflicts during merge
+merging MYBRANCH1
+retrieving revision 1.1
+retrieving revision 1.1.2.2
+Merging differences between 1.1 and 1.1.2.2 into foo.txt
+checking in
+new revision: 1.1.4.2; previous revision: 1.1.4.1
+U foo.txt
+merging MYBRANCH1_2
+retrieving revision 1.1
+retrieving revision 1.1.2.2.2.1
+Merging differences between 1.1 and 1.1.2.2.2.1 into foo.txt
+checking in
+new revision: 1.2; previous revision: 1.1
+collecting CVS rlog
+7 log entries
+creating changesets
+7 changeset entries
+---------------------
+PatchSet 1 
+Date:
+Author:
+Branch: HEAD
+Tag: (none) 
+Log:
+foo.txt
+
+Members: 
+	foo.txt:INITIAL->1.1 
+
+---------------------
+PatchSet 2 
+Date:
+Author:
+Branch: MYBRANCH1
+Tag: (none) 
+Parent: 1
+Log:
+bar
+
+Members: 
+	foo.txt:1.1->1.1.2.1 
+
+---------------------
+PatchSet 3 
+Date:
+Author:
+Branch: MYBRANCH1
+Tag: (none) 
+Parent: 2
+Log:
+baz
+
+Members: 
+	foo.txt:1.1.2.1->1.1.2.2 
+
+---------------------
+PatchSet 4 
+Date:
+Author:
+Branch: MYBRANCH1_1
+Tag: (none) 
+Parent: 1
+Log:
+quux
+
+Members: 
+	foo.txt:1.1->1.1.4.1 
+
+---------------------
+PatchSet 5 
+Date:
+Author:
+Branch: MYBRANCH1_2
+Tag: (none) 
+Parent: 3
+Log:
+bazzie
+
+Members: 
+	foo.txt:1.1.2.2->1.1.2.2.2.1 
+
+---------------------
+PatchSet 6 
+Date:
+Author:
+Branch: HEAD
+Tag: (none) 
+Parents: 1,5
+Log:
+merge
+
+Members: 
+	foo.txt:1.1->1.2 
+
+---------------------
+PatchSet 7 
+Date:
+Author:
+Branch: MYBRANCH1_1
+Tag: (none) 
+Parents: 4,3
+Log:
+merge
+
+Members: 
+	foo.txt:1.1.4.1->1.1.4.2 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-cvs-builtincvsps-cvsnt-mergepoints.rlog	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,42 @@
+head: 1.2
+branch:
+locks: strict
+access list:
+symbolic names:
+	MYBRANCH1_2: 1.1.2.2.0.2
+	MYBRANCH1_1: 1.1.0.4
+	MYBRANCH1: 1.1.0.2
+keyword substitution: kv
+total revisions: 8;	selected revisions: 8
+description:
+----------------------------
+revision 1.2
+date: 2009/04/02 07:00:32;  author: user;  state: Exp;  lines: +1 -1;  kopt: kv;  commitid: 14d449d462903487;  mergepoint: 1.1.2.2.2.1;  filename: foo.txt;
+merge
+----------------------------
+revision 1.1
+date: 2009/04/02 06:50:43;  author: user;  state: Exp;  kopt: kv;  commitid: 17ac49d460432d04;  filename: foo.txt;
+branches:  1.1.2;  1.1.4;
+foo.txt
+----------------------------
+revision 1.1.4.2
+date: 2009/04/02 07:02:51;  author: user;  state: Exp;  lines: +1 -0;  kopt: kv;  commitid: 170049d4631b364d;  mergepoint: 1.1.2.2;  filename: foo.txt;
+merge
+----------------------------
+revision 1.1.4.1
+date: 2009/04/02 06:53:42;  author: user;  state: Exp;  lines: +1 -1;  kopt: kv;  commitid: dc849d460f52f49;  filename: foo.txt;
+quux
+----------------------------
+revision 1.1.2.2
+date: 2009/04/02 06:53:20;  author: user;  state: Exp;  lines: +1 -1;  kopt: kv;  commitid: 8ec49d460e02f04;  filename: foo.txt;
+branches:  1.1.2.2.2;
+baz
+----------------------------
+revision 1.1.2.1
+date: 2009/04/02 06:52:38;  author: user;  state: Exp;  lines: +1 -1;  kopt: kv;  commitid: d5049d460b62e7b;  filename: foo.txt;
+bar
+----------------------------
+revision 1.1.2.2.2.1
+date: 2009/04/02 06:55:42;  author: user;  state: Exp;  lines: +1 -1;  kopt: kv;  commitid: 11c849d4616d30d1;  filename: foo.txt;
+bazzie
+=============================================================================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-mtn-rename-directory.out	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,23 @@
+% tedious monotone keys configuration
+% create monotone repository
+mtn: adding dir1 to workspace manifest
+mtn: adding dir1/subdir1 to workspace manifest
+mtn: adding dir1/subdir1/file1 to workspace manifest
+mtn: beginning commit on branch 'com.selenic.test'
+mtn: committed revision 5ed13ff5582d8d1e319f079b694a37d2b45edfc8
+% rename directory
+mtn: skipping dir1, already accounted for in workspace
+mtn: renaming dir1/subdir1 to dir1/subdir2 in workspace manifest
+mtn: beginning commit on branch 'com.selenic.test'
+mtn: committed revision 985204142a822b22ee86b509d61f3c5ab6857d2b
+% convert
+assuming destination repo.mtn-hg
+initializing destination repo.mtn-hg repository
+scanning source...
+sorting...
+converting...
+1 initialize
+0 rename
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+% manifest
+dir1/subdir2/file1
--- a/tests/test-convert.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-convert.out	Wed Apr 08 23:24:22 2009 +0200
@@ -17,32 +17,32 @@
     - Mercurial [hg]
     - Subversion [svn] (history on branches is not preserved)
 
-    If no revision is given, all revisions will be converted. Otherwise,
-    convert will only import up to the named revision (given in a format
-    understood by the source).
+    If no revision is given, all revisions will be converted.
+    Otherwise, convert will only import up to the named revision
+    (given in a format understood by the source).
 
     If no destination directory name is specified, it defaults to the
-    basename of the source with '-hg' appended.  If the destination
+    basename of the source with '-hg' appended. If the destination
     repository doesn't exist, it will be created.
 
     If <REVMAP> isn't given, it will be put in a default location
-    (<dest>/.hg/shamap by default).  The <REVMAP> is a simple text
-    file that maps each source commit ID to the destination ID for
-    that revision, like so:
+    (<dest>/.hg/shamap by default). The <REVMAP> is a simple text file
+    that maps each source commit ID to the destination ID for that
+    revision, like so:
     <source ID> <destination ID>
 
-    If the file doesn't exist, it's automatically created.  It's updated
-    on each commit copied, so convert-repo can be interrupted and can
-    be run repeatedly to copy new commits.
+    If the file doesn't exist, it's automatically created. It's
+    updated on each commit copied, so convert-repo can be interrupted
+    and can be run repeatedly to copy new commits.
 
-    The [username mapping] file is a simple text file that maps each source
-    commit author to a destination commit author. It is handy for source SCMs
-    that use unix logins to identify authors (eg: CVS). One line per author
-    mapping and the line format is:
+    The [username mapping] file is a simple text file that maps each
+    source commit author to a destination commit author. It is handy
+    for source SCMs that use unix logins to identify authors (eg:
+    CVS). One line per author mapping and the line format is:
     srcauthor=whatever string you want
 
     The filemap is a file that allows filtering and remapping of files
-    and directories.  Comment lines start with '#'.  Each line can
+    and directories. Comment lines start with '#'. Each line can
     contain one of the following directives:
 
       include path/to/file
@@ -53,32 +53,33 @@
 
     The 'include' directive causes a file, or all files under a
     directory, to be included in the destination repository, and the
-    exclusion of all other files and dirs not explicitely included.
+    exclusion of all other files and directories not explicitely included.
     The 'exclude' directive causes files or directories to be omitted.
-    The 'rename' directive renames a file or directory.  To rename from a
-    subdirectory into the root of the repository, use '.' as the path to
-    rename to.
+    The 'rename' directive renames a file or directory. To rename from
+    a subdirectory into the root of the repository, use '.' as the
+    path to rename to.
 
     The splicemap is a file that allows insertion of synthetic
-    history, letting you specify the parents of a revision.  This is
+    history, letting you specify the parents of a revision. This is
     useful if you want to e.g. give a Subversion merge two parents, or
-    graft two disconnected series of history together.  Each entry
+    graft two disconnected series of history together. Each entry
     contains a key, followed by a space, followed by one or two
-    values, separated by spaces.  The key is the revision ID in the
-    source revision control system whose parents should be modified
-    (same format as a key in .hg/shamap).  The values are the revision
-    IDs (in either the source or destination revision control system)
-    that should be used as the new parents for that node.
+    comma-separated values. The key is the revision ID in the source
+    revision control system whose parents should be modified (same
+    format as a key in .hg/shamap). The values are the revision IDs
+    (in either the source or destination revision control system) that
+    should be used as the new parents for that node.
 
     Mercurial Source
     -----------------
 
-    --config convert.hg.ignoreerrors=False (boolean)
+    --config convert.hg.ignoreerrors=False    (boolean)
         ignore integrity errors when reading. Use it to fix Mercurial
         repositories with missing revlogs, by converting from and to
         Mercurial.
-    --config convert.hg.saverev=False          (boolean)
-        store original revision ID in changeset (forces target IDs to change)
+    --config convert.hg.saverev=False         (boolean)
+        store original revision ID in changeset (forces target IDs to
+        change)
     --config convert.hg.startrev=0            (hg revision identifier)
         convert start revision and its descendants
 
@@ -87,11 +88,11 @@
 
     CVS source will use a sandbox (i.e. a checked-out copy) from CVS
     to indicate the starting point of what will be converted. Direct
-    access to the repository files is not needed, unless of course
-    the repository is :local:. The conversion uses the top level
-    directory in the sandbox to find the CVS repository, and then uses
-    CVS rlog commands to find files to convert. This means that unless
-    a filemap is given, all files under the starting directory will be
+    access to the repository files is not needed, unless of course the
+    repository is :local:. The conversion uses the top level directory
+    in the sandbox to find the CVS repository, and then uses CVS rlog
+    commands to find files to convert. This means that unless a
+    filemap is given, all files under the starting directory will be
     converted, and that any directory reorganisation in the CVS
     sandbox is ignored.
 
@@ -107,34 +108,37 @@
     Internal cvsps is selected by setting
         --config convert.cvsps=builtin
     and has a few more configurable options:
-        --config convert.cvsps.fuzz=60   (integer)
-            Specify the maximum time (in seconds) that is allowed between
-            commits with identical user and log message in a single
-            changeset. When very large files were checked in as part
-            of a changeset then the default may not be long enough.
+        --config convert.cvsps.fuzz=60        (integer)
+            Specify the maximum time (in seconds) that is allowed
+            between commits with identical user and log message in a
+            single changeset. When very large files were checked in as
+            part of a changeset then the default may not be long
+            enough.
         --config convert.cvsps.mergeto='{{mergetobranch ([-\w]+)}}'
-            Specify a regular expression to which commit log messages are
-            matched. If a match occurs, then the conversion process will
-            insert a dummy revision merging the branch on which this log
-            message occurs to the branch indicated in the regex.
+            Specify a regular expression to which commit log messages
+            are matched. If a match occurs, then the conversion
+            process will insert a dummy revision merging the branch on
+            which this log message occurs to the branch indicated in
+            the regex.
         --config convert.cvsps.mergefrom='{{mergefrombranch ([-\w]+)}}'
-            Specify a regular expression to which commit log messages are
-            matched. If a match occurs, then the conversion process will
-            add the most recent revision on the branch indicated in the
-            regex as the second parent of the changeset.
+            Specify a regular expression to which commit log messages
+            are matched. If a match occurs, then the conversion
+            process will add the most recent revision on the branch
+            indicated in the regex as the second parent of the
+            changeset.
 
-    The hgext/convert/cvsps wrapper script allows the builtin changeset
-    merging code to be run without doing a conversion. Its parameters and
-    output are similar to that of cvsps 2.1.
+    The hgext/convert/cvsps wrapper script allows the builtin
+    changeset merging code to be run without doing a conversion. Its
+    parameters and output are similar to that of cvsps 2.1.
 
     Subversion Source
     -----------------
 
     Subversion source detects classical trunk/branches/tags layouts.
     By default, the supplied "svn://repo/path/" source URL is
-    converted as a single branch. If "svn://repo/path/trunk" exists
-    it replaces the default branch. If "svn://repo/path/branches"
-    exists, its subdirectories are listed as possible branches. If
+    converted as a single branch. If "svn://repo/path/trunk" exists it
+    replaces the default branch. If "svn://repo/path/branches" exists,
+    its subdirectories are listed as possible branches. If
     "svn://repo/path/tags" exists, it is looked for tags referencing
     converted branches. Default "trunk", "branches" and "tags" values
     can be overriden with following options. Set them to paths
@@ -158,16 +162,17 @@
     Perforce Source
     ---------------
 
-    The Perforce (P4) importer can be given a p4 depot path or a client
-    specification as source. It will convert all files in the source to
-    a flat Mercurial repository, ignoring labels, branches and integrations.
-    Note that when a depot path is given you then usually should specify a
-    target directory, because otherwise the target may be named ...-hg.
+    The Perforce (P4) importer can be given a p4 depot path or a
+    client specification as source. It will convert all files in the
+    source to a flat Mercurial repository, ignoring labels, branches
+    and integrations. Note that when a depot path is given you then
+    usually should specify a target directory, because otherwise the
+    target may be named ...-hg.
 
-    It is possible to limit the amount of source history to be converted
-    by specifying an initial Perforce revision.
+    It is possible to limit the amount of source history to be
+    converted by specifying an initial Perforce revision.
 
-    --config convert.p4.startrev=0           (perforce changelist number)
+    --config convert.p4.startrev=0            (perforce changelist number)
         specify initial Perforce revision.
 
 
@@ -226,3 +231,16 @@
 run hg sink pre-conversion action
 run hg sink post-conversion action
 run hg source post-conversion action
+% converting empty dir should fail nicely
+assuming destination emptydir-hg
+initializing destination emptydir-hg repository
+emptydir does not look like a CVS checkout
+emptydir does not look like a Git repo
+emptydir does not look like a Subversion repo
+emptydir is not a local Mercurial repo
+emptydir does not look like a darcs repo
+emptydir does not look like a monotone repo
+emptydir does not look like a GNU Arch repo
+emptydir does not look like a Bazaar repo
+emptydir does not look like a P4 repo
+abort: emptydir: missing or unsupported repository
--- a/tests/test-debugcomplete	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-debugcomplete	Wed Apr 08 23:24:22 2009 +0200
@@ -36,4 +36,8 @@
 echo '% Show an error if we use --options with an ambiguous abbreviation'
 hg debugcomplete --options s
 
+echo
+echo '% Show all commands + options'
+hg debugcommands
+
 exit 0
--- a/tests/test-debugcomplete.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-debugcomplete.out	Wed Apr 08 23:24:22 2009 +0200
@@ -60,6 +60,7 @@
 % Show debug commands if there are no other candidates
 debugancestor
 debugcheckstate
+debugcommands
 debugcomplete
 debugconfig
 debugdata
@@ -96,7 +97,6 @@
 --encoding
 --encodingmode
 --help
---lsprof
 --noninteractive
 --profile
 --quiet
@@ -126,7 +126,6 @@
 --errorlog
 --help
 --ipv6
---lsprof
 --name
 --noninteractive
 --pid-file
@@ -160,3 +159,69 @@
 % Show an error if we use --options with an ambiguous abbreviation
 hg: command 's' is ambiguous:
     serve showconfig status
+
+% Show all commands + options
+add: include, exclude, dry-run
+annotate: rev, follow, text, user, date, number, changeset, line-number, include, exclude
+clone: noupdate, rev, pull, uncompressed, ssh, remotecmd
+commit: addremove, close-branch, include, exclude, message, logfile, date, user
+diff: rev, change, text, git, nodates, show-function, ignore-all-space, ignore-space-change, ignore-blank-lines, unified, include, exclude
+export: output, switch-parent, text, git, nodates
+init: ssh, remotecmd
+log: follow, follow-first, date, copies, keyword, rev, removed, only-merges, user, only-branch, prune, patch, git, limit, no-merges, style, template, include, exclude
+merge: force, rev
+parents: rev, style, template
+pull: update, force, rev, ssh, remotecmd
+push: force, rev, ssh, remotecmd
+remove: after, force, include, exclude
+serve: accesslog, daemon, daemon-pipefds, errorlog, port, address, prefix, name, webdir-conf, pid-file, stdio, templates, style, ipv6, certificate
+status: all, modified, added, removed, deleted, clean, unknown, ignored, no-status, copies, print0, rev, include, exclude
+update: clean, date, rev
+addremove: similarity, include, exclude, dry-run
+archive: no-decode, prefix, rev, type, include, exclude
+backout: merge, parent, rev, include, exclude, message, logfile, date, user
+bisect: reset, good, bad, skip, command, noupdate
+branch: force, clean
+branches: active
+bundle: force, rev, base, all, type, ssh, remotecmd
+cat: output, rev, decode, include, exclude
+copy: after, force, include, exclude, dry-run
+debugancestor: 
+debugcheckstate: 
+debugcommands: 
+debugcomplete: options
+debugdata: 
+debugdate: extended
+debugfsinfo: 
+debugindex: 
+debugindexdot: 
+debuginstall: 
+debugrawcommit: parent, files, message, logfile, date, user
+debugrebuildstate: rev
+debugrename: rev
+debugsetparents: 
+debugstate: nodates
+debugwalk: include, exclude
+grep: print0, all, follow, ignore-case, files-with-matches, line-number, rev, user, date, include, exclude
+heads: rev, active, style, template
+help: 
+identify: rev, num, id, branch, tags
+import: strip, base, force, no-commit, exact, import-branch, message, logfile, date, user, similarity
+incoming: force, newest-first, bundle, rev, patch, git, limit, no-merges, style, template, ssh, remotecmd
+locate: rev, print0, fullpath, include, exclude
+manifest: rev
+outgoing: force, rev, newest-first, patch, git, limit, no-merges, style, template, ssh, remotecmd
+paths: 
+recover: 
+rename: after, force, include, exclude, dry-run
+resolve: all, list, mark, unmark, include, exclude
+revert: all, date, rev, no-backup, include, exclude, dry-run
+rollback: 
+root: 
+showconfig: untrusted
+tag: force, local, rev, remove, message, date, user
+tags: 
+tip: patch, git, style, template
+unbundle: update
+verify: 
+version: 
--- a/tests/test-dispatch.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-dispatch.out	Wed Apr 08 23:24:22 2009 +0200
@@ -5,8 +5,8 @@
 
 output the current or given revision of files
 
-    Print the specified files as they were at the given revision.
-    If no revision is given, the parent of the working directory is used,
+    Print the specified files as they were at the given revision. If
+    no revision is given, the parent of the working directory is used,
     or tip if no revision is checked out.
 
     Output may be to a file, in which case the name of the file is
@@ -14,7 +14,7 @@
     for the export command, with the following additions:
 
     %s   basename of file being printed
-    %d   dirname of file being printed, or '.' if in repo root
+    %d   dirname of file being printed, or '.' if in repository root
     %p   root-relative path name of file being printed
 
 options:
--- a/tests/test-extension.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-extension.out	Wed Apr 08 23:24:22 2009 +0200
@@ -48,7 +48,6 @@
     --debugger        start debugger
     --encoding        set the charset encoding (default: ascii)
     --encodingmode    set the charset encoding mode (default: strict)
-    --lsprof          print improved command execution profile
     --traceback       print traceback on exception
     --time            time how long the command takes
     --profile         print command execution profile
--- a/tests/test-globalopts.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-globalopts.out	Wed Apr 08 23:24:22 2009 +0200
@@ -176,7 +176,7 @@
  manifest     output the current or given revision of the project manifest
  merge        merge working directory with another revision
  outgoing     show changesets not found in destination
- parents      show the parents of the working dir or revision
+ parents      show the parents of the working directory or revision
  paths        show aliases for remote repositories
  pull         pull changes from the specified source
  push         push changes to the specified destination
@@ -184,9 +184,9 @@
  remove       remove the specified files on the next commit
  rename       rename files; equivalent of copy + remove
  resolve      retry file merges from a merge or update
- revert       restore individual files or dirs to an earlier state
+ revert       restore individual files or directories to an earlier state
  rollback     roll back the last transaction
- root         print the root (top) of the current working dir
+ root         print the root (top) of the current working directory
  serve        export the repository via HTTP
  showconfig   show combined config settings from all hgrc files
  status       show changed files in the working directory
@@ -207,7 +207,7 @@
  multirevs    Specifying Multiple Revisions
  diffs        Diff Formats
  templating   Template Usage
- urls         Url Paths
+ urls         URL Paths
 
 use "hg -v help" to show aliases and global options
 Mercurial Distributed SCM
@@ -241,7 +241,7 @@
  manifest     output the current or given revision of the project manifest
  merge        merge working directory with another revision
  outgoing     show changesets not found in destination
- parents      show the parents of the working dir or revision
+ parents      show the parents of the working directory or revision
  paths        show aliases for remote repositories
  pull         pull changes from the specified source
  push         push changes to the specified destination
@@ -249,9 +249,9 @@
  remove       remove the specified files on the next commit
  rename       rename files; equivalent of copy + remove
  resolve      retry file merges from a merge or update
- revert       restore individual files or dirs to an earlier state
+ revert       restore individual files or directories to an earlier state
  rollback     roll back the last transaction
- root         print the root (top) of the current working dir
+ root         print the root (top) of the current working directory
  serve        export the repository via HTTP
  showconfig   show combined config settings from all hgrc files
  status       show changed files in the working directory
@@ -272,7 +272,7 @@
  multirevs    Specifying Multiple Revisions
  diffs        Diff Formats
  templating   Template Usage
- urls         Url Paths
+ urls         URL Paths
 
 use "hg -v help" to show aliases and global options
 %% not tested: --debugger
--- a/tests/test-help.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-help.out	Wed Apr 08 23:24:22 2009 +0200
@@ -11,7 +11,7 @@
  init       create a new repository in the given directory
  log        show revision history of entire repository or files
  merge      merge working directory with another revision
- parents    show the parents of the working dir or revision
+ parents    show the parents of the working directory or revision
  pull       pull changes from the specified source
  push       push changes to the specified destination
  remove     remove the specified files on the next commit
@@ -29,7 +29,7 @@
  init       create a new repository in the given directory
  log        show revision history of entire repository or files
  merge      merge working directory with another revision
- parents    show the parents of the working dir or revision
+ parents    show the parents of the working directory or revision
  pull       pull changes from the specified source
  push       push changes to the specified destination
  remove     remove the specified files on the next commit
@@ -67,7 +67,7 @@
  manifest     output the current or given revision of the project manifest
  merge        merge working directory with another revision
  outgoing     show changesets not found in destination
- parents      show the parents of the working dir or revision
+ parents      show the parents of the working directory or revision
  paths        show aliases for remote repositories
  pull         pull changes from the specified source
  push         push changes to the specified destination
@@ -75,9 +75,9 @@
  remove       remove the specified files on the next commit
  rename       rename files; equivalent of copy + remove
  resolve      retry file merges from a merge or update
- revert       restore individual files or dirs to an earlier state
+ revert       restore individual files or directories to an earlier state
  rollback     roll back the last transaction
- root         print the root (top) of the current working dir
+ root         print the root (top) of the current working directory
  serve        export the repository via HTTP
  showconfig   show combined config settings from all hgrc files
  status       show changed files in the working directory
@@ -98,7 +98,7 @@
  multirevs    Specifying Multiple Revisions
  diffs        Diff Formats
  templating   Template Usage
- urls         Url Paths
+ urls         URL Paths
 
 use "hg -v help" to show aliases and global options
  add          add the specified files on the next commit
@@ -128,7 +128,7 @@
  manifest     output the current or given revision of the project manifest
  merge        merge working directory with another revision
  outgoing     show changesets not found in destination
- parents      show the parents of the working dir or revision
+ parents      show the parents of the working directory or revision
  paths        show aliases for remote repositories
  pull         pull changes from the specified source
  push         push changes to the specified destination
@@ -136,9 +136,9 @@
  remove       remove the specified files on the next commit
  rename       rename files; equivalent of copy + remove
  resolve      retry file merges from a merge or update
- revert       restore individual files or dirs to an earlier state
+ revert       restore individual files or directories to an earlier state
  rollback     roll back the last transaction
- root         print the root (top) of the current working dir
+ root         print the root (top) of the current working directory
  serve        export the repository via HTTP
  showconfig   show combined config settings from all hgrc files
  status       show changed files in the working directory
@@ -159,12 +159,13 @@
  multirevs    Specifying Multiple Revisions
  diffs        Diff Formats
  templating   Template Usage
- urls         Url Paths
+ urls         URL Paths
 hg add [OPTION]... [FILE]...
 
 add the specified files on the next commit
 
-    Schedule files to be version controlled and added to the repository.
+    Schedule files to be version controlled and added to the
+    repository.
 
     The files will be added to the repository at the next commit. To
     undo an add before that, see hg revert.
@@ -183,7 +184,8 @@
 
 add the specified files on the next commit
 
-    Schedule files to be version controlled and added to the repository.
+    Schedule files to be version controlled and added to the
+    repository.
 
     The files will be added to the repository at the next commit. To
     undo an add before that, see hg revert.
@@ -215,12 +217,12 @@
     revisions are specified, the working directory files are compared
     to its parent.
 
-    Without the -a option, diff will avoid generating diffs of files
-    it detects as binary. With -a, diff will generate a diff anyway,
-    probably with undesirable results.
+    Without the -a/--text option, diff will avoid generating diffs of
+    files it detects as binary. With -a, diff will generate a diff
+    anyway, probably with undesirable results.
 
-    Use the --git option to generate diffs in the git extended diff
-    format. For more information, read hg help diffs.
+    Use the -g/--git option to generate diffs in the git extended diff
+    format. For more information, read 'hg help diffs'.
 
 options:
 
@@ -246,12 +248,13 @@
 
     Show status of files in the repository. If names are given, only
     files that match are shown. Files that are clean or ignored or
-    source of a copy/move operation, are not listed unless -c (clean),
-    -i (ignored), -C (copies) or -A is given. Unless options described
-    with "show only ..." are given, the options -mardu are used.
+    source of a copy/move operation, are not listed unless -c/--clean,
+    -i/--ignored, -C/--copies or -A/--all is given. Unless options
+    described with "show only ..." are given, the options -mardu are
+    used.
 
     Option -q/--quiet hides untracked (unknown and ignored) files
-    unless explicitly requested with -u/--unknown or -i/-ignored.
+    unless explicitly requested with -u/--unknown or -i/--ignored.
 
     NOTE: status may appear to disagree with diff if permissions have
     changed or a merge has occurred. The standard diff format does not
@@ -266,7 +269,7 @@
     A = added
     R = removed
     C = clean
-    ! = deleted, but still tracked
+    ! = missing, but still tracked
     ? = not tracked
     I = ignored
       = the previous added file was copied from here
@@ -306,7 +309,7 @@
  init       create a new repository in the given directory
  log        show revision history of entire repository or files
  merge      merge working directory with another revision
- parents    show the parents of the working dir or revision
+ parents    show the parents of the working directory or revision
  pull       pull changes from the specified source
  push       push changes to the specified destination
  remove     remove the specified files on the next commit
@@ -329,7 +332,7 @@
  init       create a new repository in the given directory
  log        show revision history of entire repository or files
  merge      merge working directory with another revision
- parents    show the parents of the working dir or revision
+ parents    show the parents of the working directory or revision
  pull       pull changes from the specified source
  push       push changes to the specified destination
  remove     remove the specified files on the next commit
--- a/tests/test-hgweb-filelog.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-hgweb-filelog.out	Wed Apr 08 23:24:22 2009 +0200
@@ -421,7 +421,7 @@
 <div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
-<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <ul>
 <li><a href="/shortlog">log</a></li>
--- a/tests/test-hgweb.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-hgweb.out	Wed Apr 08 23:24:22 2009 +0200
@@ -36,7 +36,7 @@
 <div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
-<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <ul>
 <li><a href="/shortlog">log</a></li>
@@ -105,7 +105,7 @@
 <div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
-<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <ul>
 <li><a href="/shortlog">log</a></li>
--- a/tests/test-highlight	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-highlight	Wed Apr 08 23:24:22 2009 +0200
@@ -14,7 +14,7 @@
 cp $TESTDIR/get-with-headers.py ./
 
 # check for UnicodeDecodeError with iso-8859-1 file contents
-python -c 'fp = open("isolatin", "w"); fp.write("h\xFCbsch\n"); fp.close();'
+python -c 'fp = open("isolatin.txt", "w"); fp.write("h\xFCbsch\n"); fp.close();'
 
 hg ci -Ama
 
@@ -27,7 +27,7 @@
     | sed "s/class=\"k\"/class=\"kn\"/g"
 
 echo % hgweb filerevision, html
-("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/isolatin') \
+("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/isolatin.txt') \
     | sed "s/class=\"k\"/class=\"kn\"/g"
 
 echo % hgweb fileannotate, html
--- a/tests/test-highlight.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-highlight.out	Wed Apr 08 23:24:22 2009 +0200
@@ -1,5 +1,5 @@
 adding get-with-headers.py
-adding isolatin
+adding isolatin.txt
 % hg serve
 % hgweb filerevision, html
 200 Script output follows
@@ -12,7 +12,7 @@
 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
 <link rel="stylesheet" href="/highlightcss" type="text/css" />
-<title>test: e55e3a42c53a get-with-headers.py</title>
+<title>test: 7c3facd7c58a get-with-headers.py</title>
 </head>
 <body>
 
@@ -23,26 +23,26 @@
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
-<li><a href="/shortlog/e55e3a42c53a">log</a></li>
-<li><a href="/graph/e55e3a42c53a">graph</a></li>
+<li><a href="/shortlog/7c3facd7c58a">log</a></li>
+<li><a href="/graph/7c3facd7c58a">graph</a></li>
 <li><a href="/tags">tags</a></li>
 </ul>
 <ul>
-<li><a href="/rev/e55e3a42c53a">changeset</a></li>
-<li><a href="/file/e55e3a42c53a/">browse</a></li>
+<li><a href="/rev/7c3facd7c58a">changeset</a></li>
+<li><a href="/file/7c3facd7c58a/">browse</a></li>
 </ul>
 <ul>
 <li class="active">file</li>
-<li><a href="/diff/e55e3a42c53a/get-with-headers.py">diff</a></li>
-<li><a href="/annotate/e55e3a42c53a/get-with-headers.py">annotate</a></li>
-<li><a href="/log/e55e3a42c53a/get-with-headers.py">file log</a></li>
-<li><a href="/raw-file/e55e3a42c53a/get-with-headers.py">raw</a></li>
+<li><a href="/diff/7c3facd7c58a/get-with-headers.py">diff</a></li>
+<li><a href="/annotate/7c3facd7c58a/get-with-headers.py">annotate</a></li>
+<li><a href="/log/7c3facd7c58a/get-with-headers.py">file log</a></li>
+<li><a href="/raw-file/7c3facd7c58a/get-with-headers.py">raw</a></li>
 </ul>
 </div>
 
 <div class="main">
 <h2><a href="/">test</a></h2>
-<h3>view get-with-headers.py @ 0:e55e3a42c53a</h3>
+<h3>view get-with-headers.py @ 0:7c3facd7c58a</h3>
 
 <form class="search" action="/log">
 
@@ -97,7 +97,7 @@
 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
 
 <link rel="stylesheet" href="/highlightcss" type="text/css" />
-<title>test: e55e3a42c53a isolatin</title>
+<title>test: 7c3facd7c58a isolatin.txt</title>
 </head>
 <body>
 
@@ -108,26 +108,26 @@
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
-<li><a href="/shortlog/e55e3a42c53a">log</a></li>
-<li><a href="/graph/e55e3a42c53a">graph</a></li>
+<li><a href="/shortlog/7c3facd7c58a">log</a></li>
+<li><a href="/graph/7c3facd7c58a">graph</a></li>
 <li><a href="/tags">tags</a></li>
 </ul>
 <ul>
-<li><a href="/rev/e55e3a42c53a">changeset</a></li>
-<li><a href="/file/e55e3a42c53a/">browse</a></li>
+<li><a href="/rev/7c3facd7c58a">changeset</a></li>
+<li><a href="/file/7c3facd7c58a/">browse</a></li>
 </ul>
 <ul>
 <li class="active">file</li>
-<li><a href="/diff/e55e3a42c53a/isolatin">diff</a></li>
-<li><a href="/annotate/e55e3a42c53a/isolatin">annotate</a></li>
-<li><a href="/log/e55e3a42c53a/isolatin">file log</a></li>
-<li><a href="/raw-file/e55e3a42c53a/isolatin">raw</a></li>
+<li><a href="/diff/7c3facd7c58a/isolatin.txt">diff</a></li>
+<li><a href="/annotate/7c3facd7c58a/isolatin.txt">annotate</a></li>
+<li><a href="/log/7c3facd7c58a/isolatin.txt">file log</a></li>
+<li><a href="/raw-file/7c3facd7c58a/isolatin.txt">raw</a></li>
 </ul>
 </div>
 
 <div class="main">
 <h2><a href="/">test</a></h2>
-<h3>view isolatin @ 0:e55e3a42c53a</h3>
+<h3>view isolatin.txt @ 0:7c3facd7c58a</h3>
 
 <form class="search" action="/log">
 
@@ -193,27 +193,27 @@
 <img src="/static/hglogo.png" alt="mercurial" /></a>
 </div>
 <ul>
-<li><a href="/shortlog/e55e3a42c53a">log</a></li>
-<li><a href="/graph/e55e3a42c53a">graph</a></li>
+<li><a href="/shortlog/7c3facd7c58a">log</a></li>
+<li><a href="/graph/7c3facd7c58a">graph</a></li>
 <li><a href="/tags">tags</a></li>
 </ul>
 
 <ul>
-<li><a href="/rev/e55e3a42c53a">changeset</a></li>
-<li><a href="/file/e55e3a42c53a/">browse</a></li>
+<li><a href="/rev/7c3facd7c58a">changeset</a></li>
+<li><a href="/file/7c3facd7c58a/">browse</a></li>
 </ul>
 <ul>
-<li><a href="/file/e55e3a42c53a/get-with-headers.py">file</a></li>
-<li><a href="/diff/e55e3a42c53a/get-with-headers.py">diff</a></li>
+<li><a href="/file/7c3facd7c58a/get-with-headers.py">file</a></li>
+<li><a href="/diff/7c3facd7c58a/get-with-headers.py">diff</a></li>
 <li class="active">annotate</li>
-<li><a href="/log/e55e3a42c53a/get-with-headers.py">file log</a></li>
-<li><a href="/raw-annotate/e55e3a42c53a/get-with-headers.py">raw</a></li>
+<li><a href="/log/7c3facd7c58a/get-with-headers.py">file log</a></li>
+<li><a href="/raw-annotate/7c3facd7c58a/get-with-headers.py">raw</a></li>
 </ul>
 </div>
 
 <div class="main">
 <h2><a href="/">test</a></h2>
-<h3>annotate get-with-headers.py @ 0:e55e3a42c53a</h3>
+<h3>annotate get-with-headers.py @ 0:7c3facd7c58a</h3>
 
 <form class="search" action="/log">
 
@@ -252,7 +252,7 @@
  <th class="annotate">rev</th>
  <th class="line">&nbsp;&nbsp;line source</th>
 </tr>
-<tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#1" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l1" id="l1">     1</a> <span class="c">#!/usr/bin/env python</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#2" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l2" id="l2">     2</a> </td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#3" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l3" id="l3">     3</a> <span class="n">__doc__</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;This does HTTP get requests given a host:port and path and returns</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#4" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l4" id="l4">     4</a> <span class="s">a subset of the headers plus the body of the result.&quot;&quot;&quot;</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#5" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l5" id="l5">     5</a> </td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#6" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l6" id="l6">     6</a> <span class="kn">import</span> <span class="nn">httplib</span><span class="o">,</span> <span class="nn">sys</span><span class="o">,</span> <span class="nn">re</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#7" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l7" id="l7">     7</a> </td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#8" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l8" id="l8">     8</a> <span class="kn">try</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#9" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l9" id="l9">     9</a>     <span class="kn">import</span> <span class="nn">msvcrt</span><span class="o">,</span> <span class="nn">os</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#10" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l10" id="l10">    10</a>     <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#11" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l11" id="l11">    11</a>     <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#12" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l12" id="l12">    12</a> <span class="kn">except</span> <span class="ne">ImportError</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#13" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l13" id="l13">    13</a>     <span class="kn">pass</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#14" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l14" id="l14">    14</a> </td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#15" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l15" id="l15">    15</a> <span class="n">headers</span> <span class="o">=</span> <span class="p">[</span><span class="n">h</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">3</span><span class="p">:]]</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#16" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l16" id="l16">    16</a> <span class="n">conn</span> <span class="o">=</span> <span class="n">httplib</span><span class="o">.</span><span class="n">HTTPConnection</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#17" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l17" id="l17">    17</a> <span class="n">conn</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="s">&quot;GET&quot;</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">2</span><span class="p">])</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#18" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l18" id="l18">    18</a> <span class="n">response</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">getresponse</span><span class="p">()</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#19" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l19" id="l19">    19</a> <span class="kn">print</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">reason</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#20" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l20" id="l20">    20</a> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#21" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l21" id="l21">    21</a>     <span class="kn">if</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#22" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l22" id="l22">    22</a>         <span class="kn">print</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">))</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#23" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l23" id="l23">    23</a> <span class="kn">print</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#24" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l24" id="l24">    24</a> <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">read</span><span class="p">()</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#25" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l25" id="l25">    25</a> <span class="n">data</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">&#39;\d+ years&#39;</span><span class="p">,</span> <span class="s">&#39;many years&#39;</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#26" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l26" id="l26">    26</a> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#27" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l27" id="l27">    27</a> </td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#28" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l28" id="l28">    28</a> <span class="kn">if</span> <span class="mf">200</span> <span class="o">&lt;=</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">&lt;=</span> <span class="mf">299</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#29" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l29" id="l29">    29</a>     <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/e55e3a42c53a/get-with-headers.py#30" title="e55e3a42c53a: a">test@0</a></td><td class="source"><a href="#l30" id="l30">    30</a> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">1</span><span class="p">)</span></td></tr>
+<tr class="parity0"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#1" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l1" id="l1">     1</a> <span class="c">#!/usr/bin/env python</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#2" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l2" id="l2">     2</a> </td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#3" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l3" id="l3">     3</a> <span class="n">__doc__</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;This does HTTP get requests given a host:port and path and returns</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#4" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l4" id="l4">     4</a> <span class="s">a subset of the headers plus the body of the result.&quot;&quot;&quot;</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#5" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l5" id="l5">     5</a> </td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#6" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l6" id="l6">     6</a> <span class="kn">import</span> <span class="nn">httplib</span><span class="o">,</span> <span class="nn">sys</span><span class="o">,</span> <span class="nn">re</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#7" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l7" id="l7">     7</a> </td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#8" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l8" id="l8">     8</a> <span class="kn">try</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#9" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l9" id="l9">     9</a>     <span class="kn">import</span> <span class="nn">msvcrt</span><span class="o">,</span> <span class="nn">os</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#10" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l10" id="l10">    10</a>     <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#11" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l11" id="l11">    11</a>     <span class="n">msvcrt</span><span class="o">.</span><span class="n">setmode</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">fileno</span><span class="p">(),</span> <span class="n">os</span><span class="o">.</span><span class="n">O_BINARY</span><span class="p">)</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#12" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l12" id="l12">    12</a> <span class="kn">except</span> <span class="ne">ImportError</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#13" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l13" id="l13">    13</a>     <span class="kn">pass</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#14" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l14" id="l14">    14</a> </td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#15" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l15" id="l15">    15</a> <span class="n">headers</span> <span class="o">=</span> <span class="p">[</span><span class="n">h</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">3</span><span class="p">:]]</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#16" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l16" id="l16">    16</a> <span class="n">conn</span> <span class="o">=</span> <span class="n">httplib</span><span class="o">.</span><span class="n">HTTPConnection</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#17" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l17" id="l17">    17</a> <span class="n">conn</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><span class="s">&quot;GET&quot;</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mf">2</span><span class="p">])</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#18" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l18" id="l18">    18</a> <span class="n">response</span> <span class="o">=</span> <span class="n">conn</span><span class="o">.</span><span class="n">getresponse</span><span class="p">()</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#19" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l19" id="l19">    19</a> <span class="kn">print</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">reason</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#20" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l20" id="l20">    20</a> <span class="kn">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">headers</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#21" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l21" id="l21">    21</a>     <span class="kn">if</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#22" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l22" id="l22">    22</a>         <span class="kn">print</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">response</span><span class="o">.</span><span class="n">getheader</span><span class="p">(</span><span class="n">h</span><span class="p">))</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#23" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l23" id="l23">    23</a> <span class="kn">print</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#24" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l24" id="l24">    24</a> <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">read</span><span class="p">()</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#25" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l25" id="l25">    25</a> <span class="n">data</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">&#39;\d+ years&#39;</span><span class="p">,</span> <span class="s">&#39;many years&#39;</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#26" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l26" id="l26">    26</a> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#27" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l27" id="l27">    27</a> </td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#28" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l28" id="l28">    28</a> <span class="kn">if</span> <span class="mf">200</span> <span class="o">&lt;=</span> <span class="n">response</span><span class="o">.</span><span class="n">status</span> <span class="o">&lt;=</span> <span class="mf">299</span><span class="p">:</span></td></tr><tr class="parity0"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#29" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l29" id="l29">    29</a>     <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span></td></tr><tr class="parity1"><td class="annotate"><a href="/annotate/7c3facd7c58a/get-with-headers.py#30" title="7c3facd7c58a: a">test@0</a></td><td class="source"><a href="#l30" id="l30">    30</a> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mf">1</span><span class="p">)</span></td></tr>
 </table>
 </div>
 </div>
--- a/tests/test-import	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-import	Wed Apr 08 23:24:22 2009 +0200
@@ -313,3 +313,22 @@
 hg import --no-commit -v -s 100 ../rename.diff
 hg st -C
 cd ..
+
+
+echo '% add empty file from the end of patch (issue 1495)'
+hg init addemptyend
+cd addemptyend
+touch a
+hg addremove
+hg ci -m "commit"
+cat > a.patch <<EOF
+diff --git a/a b/a
+--- a/a
++++ b/a
+@@ -0,0 +1,1 @@
++a
+diff --git a/b b/b
+new file mode 100644
+EOF
+hg import --no-commit a.patch
+cd ..
--- a/tests/test-import.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-import.out	Wed Apr 08 23:24:22 2009 +0200
@@ -293,3 +293,6 @@
 adding b
 A b
 R a
+% add empty file from the end of patch (issue 1495)
+adding a
+applying a.patch
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-inotify-issue1542	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+"$TESTDIR/hghave" inotify || exit 80
+
+hg init
+
+touch a
+mkdir dir
+touch dir/b
+touch dir/c
+
+echo "[extensions]" >> $HGRCPATH
+echo "inotify=" >> $HGRCPATH
+
+hg add dir/c
+
+echo % inserve
+hg inserve -d --pid-file=hg.pid 2>&1
+cat hg.pid >> "$DAEMON_PIDS"
+
+hg st
+
+echo % moving dir out
+mv dir ../tmp-test-inotify-issue1542
+
+echo % status
+hg st
+
+sleep 1
+echo "Are we able to kill the service? if not, the service died on some error"
+kill `cat hg.pid`
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-inotify-issue1542.out	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,11 @@
+% inserve
+A dir/c
+? a
+? dir/b
+? hg.pid
+% moving dir out
+% status
+! dir/c
+? a
+? hg.pid
+Are we able to kill the service? if not, the service died on some error
--- a/tests/test-keyword.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-keyword.out	Wed Apr 08 23:24:22 2009 +0200
@@ -1,15 +1,15 @@
 % help
 keyword extension - keyword expansion in local repositories
 
-This extension expands RCS/CVS-like or self-customized $Keywords$
-in tracked text files selected by your configuration.
+This extension expands RCS/CVS-like or self-customized $Keywords$ in
+tracked text files selected by your configuration.
 
-Keywords are only expanded in local repositories and not stored in
-the change history. The mechanism can be regarded as a convenience
-for the current user or for archive distribution.
+Keywords are only expanded in local repositories and not stored in the
+change history. The mechanism can be regarded as a convenience for the
+current user or for archive distribution.
 
-Configuration is done in the [keyword] and [keywordmaps] sections
-of hgrc files.
+Configuration is done in the [keyword] and [keywordmaps] sections of
+hgrc files.
 
 Example:
 
@@ -19,26 +19,28 @@
     x*    = ignore
 
 Note: the more specific you are in your filename patterns
-      the less you lose speed in huge repos.
+      the less you lose speed in huge repositories.
 
 For [keywordmaps] template mapping and expansion demonstration and
 control run "hg kwdemo".
 
 An additional date template filter {date|utcdate} is provided.
 
-The default template mappings (view with "hg kwdemo -d") can be replaced
-with customized keywords and templates.
-Again, run "hg kwdemo" to control the results of your config changes.
+The default template mappings (view with "hg kwdemo -d") can be
+replaced with customized keywords and templates. Again, run "hg
+kwdemo" to control the results of your config changes.
 
 Before changing/disabling active keywords, run "hg kwshrink" to avoid
-the risk of inadvertedly storing expanded keywords in the change history.
+the risk of inadvertedly storing expanded keywords in the change
+history.
 
 To force expansion after enabling it, or a configuration change, run
 "hg kwexpand".
 
-Also, when committing with the record extension or using mq's qrecord, be aware
-that keywords cannot be updated. Again, run "hg kwexpand" on the files in
-question to update keyword expansions after all changes have been checked in.
+Also, when committing with the record extension or using mq's qrecord,
+be aware that keywords cannot be updated. Again, run "hg kwexpand" on
+the files in question to update keyword expansions after all changes
+have been checked in.
 
 Expansions spanning more than one line and incremental expansions,
 like CVS' $Log$, are not supported. A keyword template map
--- a/tests/test-log	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-log	Wed Apr 08 23:24:22 2009 +0200
@@ -104,4 +104,18 @@
 echo '% log -r <some unknown node id>'
 hg log -r 1000000000000000000000000000000000000000
 
+cd ..
+
+hg init usertest
+cd usertest
+
+echo a > a
+hg ci -A -m "a" -u "User One <user1@example.org>"
+echo b > b
+hg ci -A -m "b" -u "User Two <user2@example.org>"
+
+hg log -u "User One <user1@example.org>"
+hg log -u "user1" -u "user2"
+hg log -u "user3"
+
 exit 0
--- a/tests/test-log.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-log.out	Wed Apr 08 23:24:22 2009 +0200
@@ -239,3 +239,21 @@
 abort: 00changelog.i@: ambiguous identifier!
 % log -r <some unknown node id>
 abort: unknown revision '1000000000000000000000000000000000000000'!
+adding a
+adding b
+changeset:   0:29a4c94f1924
+user:        User One <user1@example.org>
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     a
+
+changeset:   1:e834b5e69c0e
+tag:         tip
+user:        User Two <user2@example.org>
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     b
+
+changeset:   0:29a4c94f1924
+user:        User One <user1@example.org>
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     a
+
--- a/tests/test-merge-tools	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-merge-tools	Wed Apr 08 23:24:22 2009 +0200
@@ -104,6 +104,24 @@
 echo "# merge-patterns specifies executable with bogus path and gets warning:"
 domerge -r 2 --config merge-patterns.f=true --config merge-tools.true.executable=/bin/nonexistingmergetool
 
+echo
+echo ui.merge overrules priority
+echo
+
+echo "# ui.merge specifies false:"
+domerge -r 2 --config ui.merge=false
+
+echo "# ui.merge specifies internal:fail:"
+domerge -r 2 --config ui.merge=internal:fail
+
+echo "# ui.merge specifies internal:local:"
+domerge -r 2 --config ui.merge=internal:local
+
+echo "# ui.merge specifies internal:other:"
+domerge -r 2 --config ui.merge=internal:other
+
+echo "# ui.merge specifies internal:other but is overruled by pattern for false:"
+domerge -r 2 --config ui.merge=internal:other --config merge-patterns.f=false
 
 echo
 echo Premerge
--- a/tests/test-merge-tools.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-merge-tools.out	Wed Apr 08 23:24:22 2009 +0200
@@ -232,6 +232,90 @@
 ? f.orig
 
 
+ui.merge overrules priority
+
+# ui.merge specifies false:
+[merge-tools]
+false.whatever=
+true.priority=1
+true.executable=cat
+# hg update -C 1
+# hg merge -r 2 --config ui.merge=false
+merging f
+merging f failed!
+0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon
+# cat f
+revision 1
+space
+# hg stat
+M f
+? f.orig
+
+# ui.merge specifies internal:fail:
+[merge-tools]
+false.whatever=
+true.priority=1
+true.executable=cat
+# hg update -C 1
+# hg merge -r 2 --config ui.merge=internal:fail
+0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon
+# cat f
+revision 1
+space
+# hg stat
+M f
+
+# ui.merge specifies internal:local:
+[merge-tools]
+false.whatever=
+true.priority=1
+true.executable=cat
+# hg update -C 1
+# hg merge -r 2 --config ui.merge=internal:local
+0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+(branch merge, don't forget to commit)
+# cat f
+revision 1
+space
+# hg stat
+M f
+
+# ui.merge specifies internal:other:
+[merge-tools]
+false.whatever=
+true.priority=1
+true.executable=cat
+# hg update -C 1
+# hg merge -r 2 --config ui.merge=internal:other
+0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+(branch merge, don't forget to commit)
+# cat f
+revision 2
+space
+# hg stat
+M f
+
+# ui.merge specifies internal:other but is overruled by pattern for false:
+[merge-tools]
+false.whatever=
+true.priority=1
+true.executable=cat
+# hg update -C 1
+# hg merge -r 2 --config ui.merge=internal:other --config merge-patterns.f=false
+merging f
+merging f failed!
+0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon
+# cat f
+revision 1
+space
+# hg stat
+M f
+? f.orig
+
+
 Premerge
 
 # Default is silent simplemerge:
--- a/tests/test-mq.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-mq.out	Wed Apr 08 23:24:22 2009 +0200
@@ -2,11 +2,11 @@
 mq extension - patch management and development
 
 This extension lets you work with a stack of patches in a Mercurial
-repository.  It manages two stacks of patches - all known patches, and
+repository. It manages two stacks of patches - all known patches, and
 applied patches (subset of known patches).
 
 Known patches are represented as patch files in the .hg/patches
-directory.  Applied patches are both patch files and changesets.
+directory. Applied patches are both patch files and changesets.
 
 Common tasks (use "hg help command" for more details):
 
@@ -43,7 +43,7 @@
  qpush        push the next patch onto the stack
  qrefresh     update the current patch
  qrename      rename a patch
- qrestore     restore the queue state saved by a rev
+ qrestore     restore the queue state saved by a revision
  qsave        save current queue state
  qselect      set or print guarded patches to push
  qseries      print the entire series file
--- a/tests/test-notify.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-notify.out	Wed Apr 08 23:24:22 2009 +0200
@@ -52,10 +52,10 @@
    # key is glob pattern, value is ","-separated list of subscriber emails
    pattern = user@host
 
- glob patterns are matched against path to repo root.
+ glob patterns are matched against path to repository root.
 
- if you like, you can put notify config file in repo that users can
- push changes to, they can manage their own subscriptions.
+ if you like, you can put notify config file in repository that users
+ can push changes to, they can manage their own subscriptions.
 
 no commands defined
 % commit
--- a/tests/test-parse-date	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-parse-date	Wed Apr 08 23:24:22 2009 +0200
@@ -43,3 +43,41 @@
 hg debugdate "1000000000 16200"  # -0430
 hg debugdate "Sat Sep 08 21:16:40 2001 +0430"
 hg debugdate "Sat Sep 08 21:16:40 2001 -0430"
+
+#Test date formats with '>' or '<' accompanied by space characters
+hg log -d '>' --template '{date|date}\n'
+hg log -d '<' hg log -d '>' --template '{date|date}\n'
+
+hg log -d ' >' --template '{date|date}\n'
+hg log -d ' <' --template '{date|date}\n'
+
+hg log -d '> ' --template '{date|date}\n'
+hg log -d '< ' --template '{date|date}\n'
+
+hg log -d ' > ' --template '{date|date}\n'
+hg log -d ' < ' --template '{date|date}\n'
+
+
+hg log -d '>02/01' --template '{date|date}\n'
+hg log -d '<02/01' --template '{date|date}\n'
+
+hg log -d ' >02/01' --template '{date|date}\n'
+hg log -d ' <02/01' --template '{date|date}\n'
+
+hg log -d '> 02/01' --template '{date|date}\n'
+hg log -d '< 02/01' --template '{date|date}\n'
+
+hg log -d ' > 02/01' --template '{date|date}\n'
+hg log -d ' < 02/01' --template '{date|date}\n'
+
+hg log -d '>02/01 ' --template '{date|date}\n'
+hg log -d '<02/01 ' --template '{date|date}\n'
+
+hg log -d ' >02/01 ' --template '{date|date}\n'
+hg log -d ' <02/01 ' --template '{date|date}\n'
+
+hg log -d '> 02/01 ' --template '{date|date}\n'
+hg log -d '< 02/01 ' --template '{date|date}\n'
+
+hg log -d ' > 02/01 ' --template '{date|date}\n'
+hg log -d ' < 02/01 ' --template '{date|date}\n'
\ No newline at end of file
--- a/tests/test-parse-date.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-parse-date.out	Wed Apr 08 23:24:22 2009 +0200
@@ -34,3 +34,111 @@
 standard: Sat Sep 08 21:16:40 2001 +0430
 internal: 1000000000 16200
 standard: Sat Sep 08 21:16:40 2001 -0430
+Sun Jan 15 13:30:00 2006 +0500
+Sun Jan 15 13:30:00 2006 -0800
+Sat Jul 15 13:30:00 2006 +0500
+Sat Jul 15 13:30:00 2006 -0700
+Sun Jun 11 00:26:40 2006 -0400
+Sat Apr 15 13:30:00 2006 +0200
+Sat Apr 15 13:30:00 2006 +0000
+Wed Feb 01 13:00:30 2006 -0500
+Wed Feb 01 13:00:30 2006 +0000
+Sun Jan 15 13:30:00 2006 +0500
+Sun Jan 15 13:30:00 2006 -0800
+Sat Jul 15 13:30:00 2006 +0500
+Sat Jul 15 13:30:00 2006 -0700
+Sun Jun 11 00:26:40 2006 -0400
+Sat Apr 15 13:30:00 2006 +0200
+Sat Apr 15 13:30:00 2006 +0000
+Wed Feb 01 13:00:30 2006 -0500
+Wed Feb 01 13:00:30 2006 +0000
+Sun Jan 15 13:30:00 2006 +0500
+Sun Jan 15 13:30:00 2006 -0800
+Sat Jul 15 13:30:00 2006 +0500
+Sat Jul 15 13:30:00 2006 -0700
+Sun Jun 11 00:26:40 2006 -0400
+Sat Apr 15 13:30:00 2006 +0200
+Sat Apr 15 13:30:00 2006 +0000
+Wed Feb 01 13:00:30 2006 -0500
+Wed Feb 01 13:00:30 2006 +0000
+Sun Jan 15 13:30:00 2006 +0500
+Sun Jan 15 13:30:00 2006 -0800
+Sat Jul 15 13:30:00 2006 +0500
+Sat Jul 15 13:30:00 2006 -0700
+Sun Jun 11 00:26:40 2006 -0400
+Sat Apr 15 13:30:00 2006 +0200
+Sat Apr 15 13:30:00 2006 +0000
+Wed Feb 01 13:00:30 2006 -0500
+Wed Feb 01 13:00:30 2006 +0000
+Sun Jan 15 13:30:00 2006 +0500
+Sun Jan 15 13:30:00 2006 -0800
+Sat Jul 15 13:30:00 2006 +0500
+Sat Jul 15 13:30:00 2006 -0700
+Sun Jun 11 00:26:40 2006 -0400
+Sat Apr 15 13:30:00 2006 +0200
+Sat Apr 15 13:30:00 2006 +0000
+Wed Feb 01 13:00:30 2006 -0500
+Wed Feb 01 13:00:30 2006 +0000
+Sun Jan 15 13:30:00 2006 +0500
+Sun Jan 15 13:30:00 2006 -0800
+Sat Jul 15 13:30:00 2006 +0500
+Sat Jul 15 13:30:00 2006 -0700
+Sun Jun 11 00:26:40 2006 -0400
+Sat Apr 15 13:30:00 2006 +0200
+Sat Apr 15 13:30:00 2006 +0000
+Wed Feb 01 13:00:30 2006 -0500
+Wed Feb 01 13:00:30 2006 +0000
+Sun Jan 15 13:30:00 2006 +0500
+Sun Jan 15 13:30:00 2006 -0800
+Sat Jul 15 13:30:00 2006 +0500
+Sat Jul 15 13:30:00 2006 -0700
+Sun Jun 11 00:26:40 2006 -0400
+Sat Apr 15 13:30:00 2006 +0200
+Sat Apr 15 13:30:00 2006 +0000
+Wed Feb 01 13:00:30 2006 -0500
+Wed Feb 01 13:00:30 2006 +0000
+Sun Jan 15 13:30:00 2006 +0500
+Sun Jan 15 13:30:00 2006 -0800
+Sat Jul 15 13:30:00 2006 +0500
+Sat Jul 15 13:30:00 2006 -0700
+Sun Jun 11 00:26:40 2006 -0400
+Sat Apr 15 13:30:00 2006 +0200
+Sat Apr 15 13:30:00 2006 +0000
+Wed Feb 01 13:00:30 2006 -0500
+Wed Feb 01 13:00:30 2006 +0000
+Sun Jan 15 13:30:00 2006 +0500
+Sun Jan 15 13:30:00 2006 -0800
+Sat Jul 15 13:30:00 2006 +0500
+Sat Jul 15 13:30:00 2006 -0700
+Sun Jun 11 00:26:40 2006 -0400
+Sat Apr 15 13:30:00 2006 +0200
+Sat Apr 15 13:30:00 2006 +0000
+Wed Feb 01 13:00:30 2006 -0500
+Wed Feb 01 13:00:30 2006 +0000
+Sun Jan 15 13:30:00 2006 +0500
+Sun Jan 15 13:30:00 2006 -0800
+Sat Jul 15 13:30:00 2006 +0500
+Sat Jul 15 13:30:00 2006 -0700
+Sun Jun 11 00:26:40 2006 -0400
+Sat Apr 15 13:30:00 2006 +0200
+Sat Apr 15 13:30:00 2006 +0000
+Wed Feb 01 13:00:30 2006 -0500
+Wed Feb 01 13:00:30 2006 +0000
+Sun Jan 15 13:30:00 2006 +0500
+Sun Jan 15 13:30:00 2006 -0800
+Sat Jul 15 13:30:00 2006 +0500
+Sat Jul 15 13:30:00 2006 -0700
+Sun Jun 11 00:26:40 2006 -0400
+Sat Apr 15 13:30:00 2006 +0200
+Sat Apr 15 13:30:00 2006 +0000
+Wed Feb 01 13:00:30 2006 -0500
+Wed Feb 01 13:00:30 2006 +0000
+Sun Jan 15 13:30:00 2006 +0500
+Sun Jan 15 13:30:00 2006 -0800
+Sat Jul 15 13:30:00 2006 +0500
+Sat Jul 15 13:30:00 2006 -0700
+Sun Jun 11 00:26:40 2006 -0400
+Sat Apr 15 13:30:00 2006 +0200
+Sat Apr 15 13:30:00 2006 +0000
+Wed Feb 01 13:00:30 2006 -0500
+Wed Feb 01 13:00:30 2006 +0000
--- a/tests/test-patchbomb	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-patchbomb	Wed Apr 08 23:24:22 2009 +0200
@@ -117,3 +117,6 @@
 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i 0:1 | \
   fixheaders
 
+echo "% test inreplyto"
+hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz tip | \
+  fixheaders
--- a/tests/test-patchbomb.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-patchbomb.out	Wed Apr 08 23:24:22 2009 +0200
@@ -837,3 +837,38 @@
 +b
 
 --===
+% test inreplyto
+This patch series consists of 1 patches.
+
+
+Displaying [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b ...
+Content-Type: text/plain; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b
+X-Mercurial-Node: 2c502b2db30e1ddd5e4ecabd68d9002f6c77a5a3
+Message-Id: <2c502b2db30e1ddd5e4e.60@
+In-Reply-To: baz
+References: baz
+Date: Thu, 01 Jan 1970 00:01:00 +0000
+From: quux
+To: foo
+Cc: bar
+
+# HG changeset patch
+# User test
+# Date 0 0
+# Node ID 2c502b2db30e1ddd5e4ecabd68d9002f6c77a5a3
+# Parent  91c0d1bdb4bc9cfd3b38a53a5ec53e9ae412a275
+Added tag two, two.diff for changeset ff2c9fa2018b
+
+diff -r 91c0d1bdb4bc -r 2c502b2db30e .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 @@
+ 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
+ 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
+ 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
++ff2c9fa2018b15fa74b33363bda9527323e2a99f two
++ff2c9fa2018b15fa74b33363bda9527323e2a99f two.diff
+
--- a/tests/test-profile	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-profile	Wed Apr 08 23:24:22 2009 +0200
@@ -3,13 +3,30 @@
 echo % test --time
 hg --time help -q help 2>&1 | grep Time > /dev/null || echo --time failed
 
+hg init a
+cd a
+
 echo % test --profile
-if "$TESTDIR/hghave" -q hotshot; then
-    # hotshot might be missing for licensing issues
-    hg --profile help -q help 2>&1 | grep ncalls > /dev/null || echo --profile failed
+if "$TESTDIR/hghave" -q lsprof; then
+    hg --profile st 2>../out || echo --profile failed
+    grep CallCount < ../out > /dev/null || echo wrong --profile
+
+    hg --profile --config profiling.output=../out st 2>&1 \
+        || echo --profile + output to file failed
+    grep CallCount < ../out > /dev/null \
+        || echo wrong --profile output when saving to a file
+
+    hg --profile --config profiling.format=text st 2>&1 \
+        | grep CallCount > /dev/null || echo --profile format=text failed
+
+    echo "[profiling]" >> $HGRCPATH
+    echo "format=kcachegrind" >> $HGRCPATH
+
+    hg --profile st 2>../out || echo --profile format=kcachegrind failed
+    grep 'events: Ticks' < ../out > /dev/null || echo --profile output is wrong
+
+    hg --profile --config profiling.output=../out st 2>&1 \
+        || echo --profile format=kcachegrind + output to file failed
+    grep 'events: Ticks' < ../out > /dev/null \
+        || echo --profile output is wrong
 fi
-
-echo % test --lsprof
-if "$TESTDIR/hghave" -q lsprof; then
-    hg --lsprof help -q help 2>&1 | grep CallCount > /dev/null || echo --lsprof failed
-fi
--- a/tests/test-profile.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-profile.out	Wed Apr 08 23:24:22 2009 +0200
@@ -1,3 +1,2 @@
 % test --time
 % test --profile
-% test --lsprof
--- a/tests/test-qrecord.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-qrecord.out	Wed Apr 08 23:24:22 2009 +0200
@@ -13,7 +13,7 @@
  init       create a new repository in the given directory
  log        show revision history of entire repository or files
  merge      merge working directory with another revision
- parents    show the parents of the working dir or revision
+ parents    show the parents of the working directory or revision
  pull       pull changes from the specified source
  push       push changes to the specified destination
  remove     remove the specified files on the next commit
@@ -84,12 +84,12 @@
 -2
 +2 2
  3
-record this change to '1.txt'? [Ynsfdaq?]  @@ -3,3 +3,3 @@
+record change 1/6 to '1.txt'? [Ynsfdaq?]  @@ -3,3 +3,3 @@
  3
 -4
 +4 4
  5
-record this change to '1.txt'? [Ynsfdaq?]  diff --git a/2.txt b/2.txt
+record change 2/6 to '1.txt'? [Ynsfdaq?]  diff --git a/2.txt b/2.txt
 1 hunks, 2 lines changed
 examine changes to '2.txt'? [Ynsfdaq?]  @@ -1,5 +1,5 @@
  a
@@ -98,7 +98,7 @@
  c
  d
  e
-record this change to '2.txt'? [Ynsfdaq?]  diff --git a/dir/a.txt b/dir/a.txt
+record change 4/6 to '2.txt'? [Ynsfdaq?]  diff --git a/dir/a.txt b/dir/a.txt
 1 hunks, 2 lines changed
 examine changes to 'dir/a.txt'? [Ynsfdaq?]  
 % after qrecord a.patch 'tip'
@@ -163,7 +163,7 @@
 -4
 +4 4
  5
-record this change to '1.txt'? [Ynsfdaq?]  diff --git a/dir/a.txt b/dir/a.txt
+record change 1/3 to '1.txt'? [Ynsfdaq?]  diff --git a/dir/a.txt b/dir/a.txt
 1 hunks, 2 lines changed
 examine changes to 'dir/a.txt'? [Ynsfdaq?]  @@ -1,4 +1,4 @@
 -hello world
@@ -171,7 +171,7 @@
  
  someone
  up
-record this change to 'dir/a.txt'? [Ynsfdaq?]  
+record change 3/3 to 'dir/a.txt'? [Ynsfdaq?]  
 % after qrecord b.patch 'tip'
 changeset:   2:b056198bf878
 tag:         qtip
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-rebase-check-restore	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,68 @@
+#!/bin/sh
+
+echo "[extensions]" >> $HGRCPATH
+echo "graphlog=" >> $HGRCPATH
+echo "rebase=" >> $HGRCPATH
+
+BASE=`pwd`
+
+addcommit () {
+    echo $1 > $1
+    hg add $1
+    hg commit -d "${2} 0" -u test -m $1
+}
+
+commit () {
+    hg commit -d "${2} 0" -u test -m $1
+}
+
+createrepo () {
+    cd $BASE
+    rm -rf a
+    hg init a
+    cd a
+    addcommit "A" 0
+    addcommit "B" 1
+    echo "C" >> A
+    commit "C" 2
+
+    hg update -C 0
+    echo "D" >> A
+    commit "D" 3
+    addcommit "E" 4
+
+    hg update -C 0
+    hg branch 'notdefault'
+    echo "F" >> A
+    commit "F" 5
+}
+
+echo
+echo "% - Rebasing B onto E - check keep"
+createrepo > /dev/null 2>&1
+hg glog  --template '{rev}:{desc}:{branches}\n'
+hg rebase -s 1 -d 4 --keep 2>&1 | sed 's/\(saving bundle to \).*/\1/'
+
+echo
+echo "% - Solve the conflict and go on"
+echo 'conflict solved' > A
+rm A.orig
+hg resolve -m A
+hg rebase --continue 2>&1 | sed 's/\(saving bundle to \).*/\1/'
+hg glog  --template '{rev}:{desc}:{branches}\n'
+
+echo
+echo "% - Rebase F onto E - check keepbranches"
+createrepo > /dev/null 2>&1
+hg glog  --template '{rev}:{desc}:{branches}\n'
+hg rebase -s 5 -d 4 --keepbranches 2>&1 | sed 's/\(saving bundle to \).*/\1/'
+
+echo
+echo "% - Solve the conflict and go on"
+echo 'conflict solved' > A
+rm A.orig
+hg resolve -m A
+hg rebase --continue 2>&1 | sed 's/\(saving bundle to \).*/\1/'
+hg glog  --template '{rev}:{desc}:{branches}\n'
+
+exit 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-rebase-check-restore.out	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,76 @@
+
+% - Rebasing B onto E - check keep
+@  5:F:notdefault
+|
+| o  4:E:
+| |
+| o  3:D:
+|/
+| o  2:C:
+| |
+| o  1:B:
+|/
+o  0:A:
+
+merging A
+warning: conflicts during merge.
+merging A failed!
+abort: fix unresolved conflicts with hg resolve then run hg rebase --continue
+
+% - Solve the conflict and go on
+rebase completed
+@  7:C:
+|
+o  6:B:
+|
+| o  5:F:notdefault
+| |
+o |  4:E:
+| |
+o |  3:D:
+|/
+| o  2:C:
+| |
+| o  1:B:
+|/
+o  0:A:
+
+
+% - Rebase F onto E - check keepbranches
+@  5:F:notdefault
+|
+| o  4:E:
+| |
+| o  3:D:
+|/
+| o  2:C:
+| |
+| o  1:B:
+|/
+o  0:A:
+
+merging A
+warning: conflicts during merge.
+merging A failed!
+abort: fix unresolved conflicts with hg resolve then run hg rebase --continue
+
+% - Solve the conflict and go on
+saving bundle to 
+adding branch
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 1 changes to 1 files
+rebase completed
+@  5:F:notdefault
+|
+o  4:E:
+|
+o  3:D:
+|
+| o  2:C:
+| |
+| o  1:B:
+|/
+o  0:A:
+
--- a/tests/test-rebase-mq	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-rebase-mq	Wed Apr 08 23:24:22 2009 +0200
@@ -11,6 +11,7 @@
         -e "s/^\(# Node ID\).*/\1/" \
         -e "s/^\(# Parent\).*/\1/" \
         -e "s/^\(diff -r \)\([a-f0-9]* \)\(-r \)\([a-f0-9]* \)/\1x \3y /" \
+        -e "s/^\(diff -r \)\([a-f0-9]* \)/\1x /" \
         -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/" \
         -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/"
 }
@@ -74,3 +75,38 @@
 echo '% And the patch is correct'
 cat .hg/patches/f2.patch | filterpatch
 
+echo
+echo '% Adding one git-style patch and one normal'
+hg qpop -a
+rm -fr .hg/patches
+hg qinit -c
+
+hg up 0
+hg qnew --git f_git.patch
+echo 'mq1' > p
+hg add p
+hg qref --git -m 'P0 (git)'
+
+hg qnew f.patch
+echo 'mq2' > p
+hg qref -m 'P1'
+
+echo '% Git patch'
+cat .hg/patches/f_git.patch  | filterpatch
+
+echo
+echo '% Normal patch'
+cat .hg/patches/f.patch | filterpatch
+
+echo
+echo '% Rebase the applied mq patches'
+hg rebase -s 2 -d 1 --quiet 2>&1 | sed -e 's/\(saving bundle to \).*/\1/'
+
+echo '% And the patches are correct'
+echo '% Git patch'
+cat .hg/patches/f_git.patch  | filterpatch
+
+echo
+echo '% Normal patch'
+cat .hg/patches/f.patch | filterpatch
+
--- a/tests/test-rebase-mq.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-rebase-mq.out	Wed Apr 08 23:24:22 2009 +0200
@@ -77,3 +77,58 @@
 @@ -1,1 +1,1 @@
 -mq1r1
 +mq1r1mq2
+
+% Adding one git-style patch and one normal
+patch queue now empty
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+% Git patch
+P0 (git)
+
+diff --git a/p b/p
+new file mode 100644
+--- /dev/null
++++ b/p
+@@ -0,0 +1,1 @@
++mq1
+
+% Normal patch
+P1
+
+diff -r x p
+--- a/p
++++ b/p
+@@ -1,1 +1,1 @@
+-mq1
++mq2
+
+% Rebase the applied mq patches
+saving bundle to 
+% And the patches are correct
+% Git patch
+# HG changeset patch
+# User test
+# Date
+# Node ID
+# Parent
+P0 (git)
+
+diff --git a/p b/p
+new file mode 100644
+--- /dev/null
++++ b/p
+@@ -0,0 +1,1 @@
++mq1
+
+% Normal patch
+# HG changeset patch
+# User test
+# Date
+# Node ID
+# Parent
+P1
+
+--- a/p
++++ b/p
+@@ -1,1 +1,1 @@
+-mq1
++mq2
--- a/tests/test-rebase-parameters.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-rebase-parameters.out	Wed Apr 08 23:24:22 2009 +0200
@@ -2,25 +2,25 @@
 
 % Use continue and abort
 hg rebase: cannot use both abort and continue
-hg rebase [-s rev | -b rev] [-d rev] [--collapse] | [-c] | [-a] | [--keep]
+hg rebase [-s REV | -b REV] [-d REV] [--collapse] [--keep] [--keepbranches] | [-c] | [-a]
 
 move changeset (and descendants) to a different branch
 
-    Rebase uses repeated merging to graft changesets from one part of history
-    onto another. This can be useful for linearizing local changes relative to
-    a master development tree.
+    Rebase uses repeated merging to graft changesets from one part of
+    history onto another. This can be useful for linearizing local
+    changes relative to a master development tree.
 
-    If a rebase is interrupted to manually resolve a merge, it can be continued
-    with --continue or aborted with --abort.
+    If a rebase is interrupted to manually resolve a merge, it can be
+    continued with --continue or aborted with --abort.
 
 options:
 
-    --keep          keep original revisions
-    --keepbranches  keep original branches
  -s --source        rebase from a given revision
  -b --base          rebase from the base of a given revision
  -d --dest          rebase onto a given revision
     --collapse      collapse the rebased revisions
+    --keep          keep original revisions
+    --keepbranches  keep original branches
  -c --continue      continue an interrupted rebase
  -a --abort         abort an interrupted rebase
     --style         display using template map file
@@ -30,25 +30,25 @@
 
 % Use continue and collapse
 hg rebase: cannot use collapse with continue or abort
-hg rebase [-s rev | -b rev] [-d rev] [--collapse] | [-c] | [-a] | [--keep]
+hg rebase [-s REV | -b REV] [-d REV] [--collapse] [--keep] [--keepbranches] | [-c] | [-a]
 
 move changeset (and descendants) to a different branch
 
-    Rebase uses repeated merging to graft changesets from one part of history
-    onto another. This can be useful for linearizing local changes relative to
-    a master development tree.
+    Rebase uses repeated merging to graft changesets from one part of
+    history onto another. This can be useful for linearizing local
+    changes relative to a master development tree.
 
-    If a rebase is interrupted to manually resolve a merge, it can be continued
-    with --continue or aborted with --abort.
+    If a rebase is interrupted to manually resolve a merge, it can be
+    continued with --continue or aborted with --abort.
 
 options:
 
-    --keep          keep original revisions
-    --keepbranches  keep original branches
  -s --source        rebase from a given revision
  -b --base          rebase from the base of a given revision
  -d --dest          rebase onto a given revision
     --collapse      collapse the rebased revisions
+    --keep          keep original revisions
+    --keepbranches  keep original branches
  -c --continue      continue an interrupted rebase
  -a --abort         abort an interrupted rebase
     --style         display using template map file
@@ -58,25 +58,25 @@
 
 % Use continue/abort and dest/source
 hg rebase: abort and continue do not allow specifying revisions
-hg rebase [-s rev | -b rev] [-d rev] [--collapse] | [-c] | [-a] | [--keep]
+hg rebase [-s REV | -b REV] [-d REV] [--collapse] [--keep] [--keepbranches] | [-c] | [-a]
 
 move changeset (and descendants) to a different branch
 
-    Rebase uses repeated merging to graft changesets from one part of history
-    onto another. This can be useful for linearizing local changes relative to
-    a master development tree.
+    Rebase uses repeated merging to graft changesets from one part of
+    history onto another. This can be useful for linearizing local
+    changes relative to a master development tree.
 
-    If a rebase is interrupted to manually resolve a merge, it can be continued
-    with --continue or aborted with --abort.
+    If a rebase is interrupted to manually resolve a merge, it can be
+    continued with --continue or aborted with --abort.
 
 options:
 
-    --keep          keep original revisions
-    --keepbranches  keep original branches
  -s --source        rebase from a given revision
  -b --base          rebase from the base of a given revision
  -d --dest          rebase onto a given revision
     --collapse      collapse the rebased revisions
+    --keep          keep original revisions
+    --keepbranches  keep original branches
  -c --continue      continue an interrupted rebase
  -a --abort         abort an interrupted rebase
     --style         display using template map file
@@ -86,25 +86,25 @@
 
 % Use source and base
 hg rebase: cannot specify both a revision and a base
-hg rebase [-s rev | -b rev] [-d rev] [--collapse] | [-c] | [-a] | [--keep]
+hg rebase [-s REV | -b REV] [-d REV] [--collapse] [--keep] [--keepbranches] | [-c] | [-a]
 
 move changeset (and descendants) to a different branch
 
-    Rebase uses repeated merging to graft changesets from one part of history
-    onto another. This can be useful for linearizing local changes relative to
-    a master development tree.
+    Rebase uses repeated merging to graft changesets from one part of
+    history onto another. This can be useful for linearizing local
+    changes relative to a master development tree.
 
-    If a rebase is interrupted to manually resolve a merge, it can be continued
-    with --continue or aborted with --abort.
+    If a rebase is interrupted to manually resolve a merge, it can be
+    continued with --continue or aborted with --abort.
 
 options:
 
-    --keep          keep original revisions
-    --keepbranches  keep original branches
  -s --source        rebase from a given revision
  -b --base          rebase from the base of a given revision
  -d --dest          rebase onto a given revision
     --collapse      collapse the rebased revisions
+    --keep          keep original revisions
+    --keepbranches  keep original branches
  -c --continue      continue an interrupted rebase
  -a --abort         abort an interrupted rebase
     --style         display using template map file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-rebase-rename	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+echo "[extensions]" >> $HGRCPATH
+echo "rebase=" >> $HGRCPATH
+echo "[diff]" >> $HGRCPATH
+echo "git=1" >> $HGRCPATH
+
+BASE=`pwd`
+
+cleanoutput () {
+    sed -e 's/\(Rebase status stored to\).*/\1/'  \
+        -e 's/\(Rebase status restored from\).*/\1/' \
+        -e 's/\(saving bundle to \).*/\1/'
+}
+
+hg init repo1
+cd repo1
+echo "a">a
+hg commit -Am "A" --date '0 0'
+echo "b"> b
+hg commit -Am "B" --date '1 0'
+hg up -C 0
+hg mv a a-renamed
+hg commit -m 'rename A' --date '2 0'
+
+echo
+echo '% Rename is tracked'
+hg log -p -r tip --template '{rev}:{desc}\n'
+
+echo '% Rebase the revision containing the rename'
+hg rebase -s 2 -d 1 --quiet 2>&1 | cleanoutput
+
+echo
+echo '% Rename is not lost'
+hg log -p -r tip --template '{rev}:{desc}\n'
+
+cd $BASE
+rm -rf repo1
+hg init repo1
+cd repo1
+echo "a">a
+hg commit -Am "A" --date '0 0'
+echo "b"> b
+hg commit -Am "B" --date '1 0'
+hg up -C 0
+hg cp a a-copied
+hg commit -m 'copy A' --date '2 0'
+
+echo
+echo '% Copy is tracked'
+hg log -p -r tip --template '{rev}:{desc}\n'
+
+echo '% Rebase the revision containing the copy'
+hg rebase -s 2 -d 1 --quiet 2>&1 | cleanoutput
+
+echo
+echo '% Copy is not lost'
+hg log -p -r tip --template '{rev}:{desc}\n'
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-rebase-rename.out	Wed Apr 08 23:24:22 2009 +0200
@@ -0,0 +1,40 @@
+adding a
+adding b
+0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+created new head
+
+% Rename is tracked
+2:rename A
+diff --git a/a b/a-renamed
+rename from a
+rename to a-renamed
+
+% Rebase the revision containing the rename
+saving bundle to 
+
+% Rename is not lost
+2:rename A
+diff --git a/a b/a-renamed
+rename from a
+rename to a-renamed
+
+adding a
+adding b
+0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+created new head
+
+% Copy is tracked
+2:copy A
+diff --git a/a b/a-copied
+copy from a
+copy to a-copied
+
+% Rebase the revision containing the copy
+saving bundle to 
+
+% Copy is not lost
+2:copy A
+diff --git a/a b/a-copied
+copy from a
+copy to a-copied
+
--- a/tests/test-record.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-record.out	Wed Apr 08 23:24:22 2009 +0200
@@ -10,7 +10,7 @@
 
     You will be prompted for whether to record changes to each
     modified file, and for files with multiple changes, for each
-    change to use.  For each query, the following responses are
+    change to use. For each query, the following responses are
     possible:
 
     y - record this change
@@ -215,13 +215,13 @@
  2
  3
  4
-record this change to 'plain'? [Ynsfdaq?]  @@ -8,5 +8,3 @@
+record change 1/2 to 'plain'? [Ynsfdaq?]  @@ -8,5 +8,3 @@
  8
  9
  10
 -11
 -cf81a2760718a74d44c0c2eecb72f659e63a69c5
-record this change to 'plain'? [Ynsfdaq?]  
+record change 2/2 to 'plain'? [Ynsfdaq?]  
 changeset:   11:d09ab1967dab
 tag:         tip
 user:        test
@@ -258,7 +258,7 @@
  7
  8
  9
-record this change to 'plain'? [Ynsfdaq?]  @@ -4,7 +1,7 @@
+record change 1/2 to 'plain'? [Ynsfdaq?]  @@ -4,7 +1,7 @@
  4
  5
  6
@@ -267,7 +267,7 @@
  9
 -10
 +10.new
-record this change to 'plain'? [Ynsfdaq?]  
+record change 2/2 to 'plain'? [Ynsfdaq?]  
 changeset:   12:44516c9708ae
 tag:         tip
 user:        test
@@ -326,7 +326,7 @@
  7
  8
  9
-record this change to 'plain'? [Ynsfdaq?]  @@ -1,7 +4,6 @@
+record change 1/2 to 'plain'? [Ynsfdaq?]  @@ -1,7 +4,6 @@
  4
  5
  6
@@ -334,7 +334,7 @@
  8
  9
 -10.new
-record this change to 'plain'? [Ynsfdaq?]  % add to beginning, middle, end
+record change 2/2 to 'plain'? [Ynsfdaq?]  % add to beginning, middle, end
 % record beginning, middle
 diff --git a/plain b/plain
 3 hunks, 7 lines changed
@@ -344,7 +344,7 @@
 +3
  4
  5
-record this change to 'plain'? [Ynsfdaq?]  @@ -1,6 +4,8 @@
+record change 1/3 to 'plain'? [Ynsfdaq?]  @@ -1,6 +4,8 @@
  4
  5
 +5.new
@@ -353,14 +353,14 @@
  7
  8
  9
-record this change to 'plain'? [Ynsfdaq?]  @@ -3,4 +8,6 @@
+record change 2/3 to 'plain'? [Ynsfdaq?]  @@ -3,4 +8,6 @@
  6
  7
  8
  9
 +10
 +11
-record this change to 'plain'? [Ynsfdaq?]  
+record change 3/3 to 'plain'? [Ynsfdaq?]  
 changeset:   15:c1c639d8b268
 tag:         tip
 user:        test
--- a/tests/test-strict.out	Wed Apr 08 23:17:33 2009 +0200
+++ b/tests/test-strict.out	Wed Apr 08 23:24:22 2009 +0200
@@ -14,7 +14,7 @@
  init       create a new repository in the given directory
  log        show revision history of entire repository or files
  merge      merge working directory with another revision
- parents    show the parents of the working dir or revision
+ parents    show the parents of the working directory or revision
  pull       pull changes from the specified source
  push       push changes to the specified destination
  remove     remove the specified files on the next commit