changeset 19115:55154cea5550

merge with stable
author Matt Mackall <mpm@selenic.com>
date Thu, 02 May 2013 12:15:41 -0500
parents 2cad301a7f06 (current diff) 762208a3edab (diff)
children b09acf81abcc
files tests/test-config-case.t
diffstat 52 files changed, 2440 insertions(+), 963 deletions(-) [+]
line wrap: on
line diff
--- a/.hgsigs	Thu Apr 18 16:17:59 2013 -0700
+++ b/.hgsigs	Thu May 02 12:15:41 2013 -0500
@@ -69,3 +69,5 @@
 5b7175377babacce80a6c1e12366d8032a6d4340 0 iD8DBQBRMCYgywK+sNU5EO8RAq1/AKCWKlt9ysibyQgYwoxxIOZv5J8rpwCcDSHQaaf1fFZUTnQsOePwcM2Y/Sg=
 50c922c1b5145dab8baefefb0437d363b6a6c21c 0 iD8DBQBRWnUnywK+sNU5EO8RAuQRAJwM42cJqJPeqJ0jVNdMqKMDqr4dSACeP0cRVGz1gitMuV0x8f3mrZrqc7I=
 8a7bd2dccd44ed571afe7424cd7f95594f27c092 0 iD8DBQBRXfBvywK+sNU5EO8RAn+LAKCsMmflbuXjYRxlzFwId5ptm8TZcwCdGkyLbZcASBOkzQUm/WW1qfknJHU=
+292cd385856d98bacb2c3086f8897bc660c2beea 0 iD8DBQBRcM0BywK+sNU5EO8RAjp4AKCJBykQbvXhKuvLSMxKx3a2TBiXcACfbr/kLg5GlZTF/XDPmY+PyHgI/GM=
+23f785b38af38d2fca6b8f3db56b8007a84cd73a 0 iD8DBQBRgZwNywK+sNU5EO8RAmO4AJ4u2ILGuimRP6MJgE2t65LZ5dAdkACgiENEstIdrlFC80p+sWKD81kKIYI=
--- a/.hgtags	Thu Apr 18 16:17:59 2013 -0700
+++ b/.hgtags	Thu May 02 12:15:41 2013 -0500
@@ -82,3 +82,5 @@
 5b7175377babacce80a6c1e12366d8032a6d4340 2.5.2
 50c922c1b5145dab8baefefb0437d363b6a6c21c 2.5.3
 8a7bd2dccd44ed571afe7424cd7f95594f27c092 2.5.4
+292cd385856d98bacb2c3086f8897bc660c2beea 2.6-rc
+23f785b38af38d2fca6b8f3db56b8007a84cd73a 2.6
--- a/contrib/check-code.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/contrib/check-code.py	Thu May 02 12:15:41 2013 -0500
@@ -74,6 +74,8 @@
     (r'/dev/u?random', "don't use entropy, use /dev/zero"),
     (r'do\s*true;\s*done', "don't use true as loop body, use sleep 0"),
     (r'^( *)\t', "don't use tabs to indent"),
+    (r'sed (-e )?\'(\d+|/[^/]*/)i(?!\\\n)',
+     "put a backslash-escaped newline after sed 'i' command"),
   ],
   # warnings
   [
--- a/contrib/win32/hg.bat	Thu Apr 18 16:17:59 2013 -0700
+++ b/contrib/win32/hg.bat	Thu May 02 12:15:41 2013 -0500
@@ -4,9 +4,14 @@
 setlocal
 set HG=%~f0
 
-rem Use a full path to Python (relative to this script) as the standard Python
-rem install does not put python.exe on the PATH...
+rem Use a full path to Python (relative to this script) if it exists,
+rem as the standard Python install does not put python.exe on the PATH...
+rem Otherwise, expect that python.exe can be found on the PATH.
 rem %~dp0 is the directory of this script
 
-"%~dp0..\python" "%~dp0hg" %*
+if exist "%~dp0..\python.exe" (
+    "%~dp0..\python" "%~dp0hg" %*
+) else (
+    python "%~dp0hg" %*
+)
 endlocal
--- a/hgext/color.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/hgext/color.py	Thu May 02 12:15:41 2013 -0500
@@ -317,6 +317,9 @@
 
 class colorui(uimod.ui):
     def popbuffer(self, labeled=False):
+        if self._colormode is None:
+            return super(colorui, self).popbuffer(labeled)
+
         if labeled:
             return ''.join(self.label(a, label) for a, label
                            in self._buffers.pop())
@@ -324,6 +327,9 @@
 
     _colormode = 'ansi'
     def write(self, *args, **opts):
+        if self._colormode is None:
+            return super(colorui, self).write(*args, **opts)
+
         label = opts.get('label', '')
         if self._buffers:
             self._buffers[-1].extend([(str(a), label) for a in args])
@@ -335,6 +341,9 @@
                 *[self.label(str(a), label) for a in args], **opts)
 
     def write_err(self, *args, **opts):
+        if self._colormode is None:
+            return super(colorui, self).write_err(*args, **opts)
+
         label = opts.get('label', '')
         if self._colormode == 'win32':
             for a in args:
@@ -344,6 +353,9 @@
                 *[self.label(str(a), label) for a in args], **opts)
 
     def label(self, msg, label):
+        if self._colormode is None:
+            return super(colorui, self).label(msg, label)
+
         effects = []
         for l in label.split():
             s = _styles.get(l, '')
@@ -386,8 +398,8 @@
         ui.__class__ = colorui
     def colorcmd(orig, ui_, opts, cmd, cmdfunc):
         mode = _modesetup(ui_, opts)
+        colorui._colormode = mode
         if mode:
-            colorui._colormode = mode
             extstyles()
             configstyles(ui_)
         return orig(ui_, opts, cmd, cmdfunc)
--- a/hgext/largefiles/__init__.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/hgext/largefiles/__init__.py	Thu May 02 12:15:41 2013 -0500
@@ -52,8 +52,8 @@
 If you want to pull largefiles you don't need for update yet, then
 you can use pull with the `--lfrev` option or the :hg:`lfpull` command.
 
-If you know you are pulling from a non-default location and want do
-download all the largefiles that corresponds to the new changesets at
+If you know you are pulling from a non-default location and want to
+download all the largefiles that correspond to the new changesets at
 the same time, then you can pull with `--lfrev "pulled()"`.
 
 If you just want to ensure that you will have the largefiles needed to
--- a/hgext/largefiles/lfcommands.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/hgext/largefiles/lfcommands.py	Thu May 02 12:15:41 2013 -0500
@@ -215,20 +215,12 @@
                         raise util.Abort(_('largefile %s becomes symlink') % f)
 
                 # largefile was modified, update standins
-                fullpath = rdst.wjoin(f)
-                util.makedirs(os.path.dirname(fullpath))
                 m = util.sha1('')
                 m.update(ctx[f].data())
                 hash = m.hexdigest()
                 if f not in lfiletohash or lfiletohash[f] != hash:
-                    try:
-                        fd = open(fullpath, 'wb')
-                        fd.write(ctx[f].data())
-                    finally:
-                        if fd:
-                            fd.close()
+                    rdst.wwrite(f, ctx[f].data(), ctx[f].flags())
                     executable = 'x' in ctx[f].flags()
-                    os.chmod(fullpath, lfutil.getmode(executable))
                     lfutil.writestandin(rdst, lfutil.standin(f), hash,
                         executable)
                     lfiletohash[f] = hash
--- a/hgext/largefiles/lfutil.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/hgext/largefiles/lfutil.py	Thu May 02 12:15:41 2013 -0500
@@ -277,7 +277,7 @@
 
 def writestandin(repo, standin, hash, executable):
     '''write hash to <repo.root>/<standin>'''
-    writehash(hash, repo.wjoin(standin), executable)
+    repo.wwrite(standin, hash + '\n', executable and 'x' or '')
 
 def copyandhash(instream, outfile):
     '''Read bytes from instream (iterable) and write them to outfile,
@@ -301,23 +301,12 @@
     fd.close()
     return hasher.hexdigest()
 
-def writehash(hash, filename, executable):
-    util.makedirs(os.path.dirname(filename))
-    util.writefile(filename, hash + '\n')
-    os.chmod(filename, getmode(executable))
-
 def getexecutable(filename):
     mode = os.stat(filename).st_mode
     return ((mode & stat.S_IXUSR) and
             (mode & stat.S_IXGRP) and
             (mode & stat.S_IXOTH))
 
-def getmode(executable):
-    if executable:
-        return 0755
-    else:
-        return 0644
-
 def urljoin(first, second, *arg):
     def join(left, right):
         if not left.endswith('/'):
--- a/hgext/largefiles/reposetup.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/hgext/largefiles/reposetup.py	Thu May 02 12:15:41 2013 -0500
@@ -8,7 +8,6 @@
 
 '''setup for largefiles repositories: reposetup'''
 import copy
-import types
 import os
 
 from mercurial import context, error, manifest, match as match_, util, \
@@ -27,16 +26,6 @@
     if not repo.local():
         return proto.wirereposetup(ui, repo)
 
-    origclass = localrepo.localrepository
-    repoclass = repo.__class__
-    for name in ('status', 'commitctx', 'commit', 'push'):
-        if (getattr(origclass, name) != getattr(repoclass, name) or
-            isinstance(getattr(repo, name), types.FunctionType)):
-            ui.warn(_('largefiles: repo method %r appears to have already been'
-                    ' wrapped by another extension: '
-                    'largefiles may behave incorrectly\n')
-                    % name)
-
     class lfilesrepo(repo.__class__):
         lfstatus = False
         def status_nolfiles(self, *args, **kwargs):
--- a/i18n/ja.po	Thu Apr 18 16:17:59 2013 -0700
+++ b/i18n/ja.po	Thu May 02 12:15:41 2013 -0500
@@ -50,6 +50,7 @@
 # backout               打ち消し
 # basename              パス名末尾要素
 # binary                バイナリ
+# bisect                二分探索
 # branch                ブランチ
 # bundle( file)         バンドルファイル
 # change                チェンジセット/差分
@@ -143,7 +144,7 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2013-02-28 16:20+0900\n"
+"POT-Creation-Date: 2013-04-30 18:34+0900\n"
 "PO-Revision-Date: 2009-11-16 21:24+0100\n"
 "Last-Translator: Japanese translation team <mercurial-ja@googlegroups.com>\n"
 "Language-Team: Japanese\n"
@@ -610,6 +611,53 @@
 msgstr ""
 "acl: ユーザ \"%s\" はファイル \"%s\" が許可されていません(リビジョン \"%s\")"
 
+msgid "log repository events to a blackbox for debugging"
+msgstr ""
+
+msgid ""
+"Logs event information to .hg/blackbox.log to help debug and diagnose "
+"problems.\n"
+"The events that get logged can be configured via the blackbox.track config "
+"key.\n"
+"Examples:"
+msgstr ""
+
+msgid ""
+"  [blackbox]\n"
+"  track = *"
+msgstr ""
+
+msgid ""
+"  [blackbox]\n"
+"  track = command, commandfinish, commandexception, exthook, pythonhook"
+msgstr ""
+
+msgid ""
+"  [blackbox]\n"
+"  track = incoming"
+msgstr ""
+
+msgid ""
+"  [blackbox]\n"
+"  # limit the size of a log file\n"
+"  maxsize = 1.5 MB\n"
+"  # rotate up to N log files when the current one gets too big\n"
+"  maxfiles = 3"
+msgstr ""
+
+msgid "the number of events to show"
+msgstr "イベント表示数"
+
+msgid "hg blackbox [OPTION]..."
+msgstr "hg blackbox [OPTION]..."
+
+msgid ""
+"view the recent repository events\n"
+"    "
+msgstr ""
+"最新のリポジトリイベントの表示\n"
+"    "
+
 msgid "hooks for integrating with the Bugzilla bug tracker"
 msgstr "Bugzilla バグ管理システムとの連携用フック集"
 
@@ -1753,7 +1801,15 @@
 "                  supported by Mercurial sources."
 msgstr ""
 "    --sourcesort  変換元のリビジョン順序を維持します。 変換元形式が\n"
-"                  Mercurial でのみサポートされています。"
+"                  Mercurial の場合のみサポートされます。"
+
+msgid ""
+"    --closesort   try to move closed revisions as close as possible\n"
+"                  to parent branches, only supported by Mercurial\n"
+"                  sources."
+msgstr ""
+"    --closesort   閉鎖実施リビジョンを、 極力親ブランチ傍に移動します。\n"
+"                  変換元形式が Mercurial の場合のみサポートされます。"
 
 msgid ""
 "    If ``REVMAP`` isn't given, it will be put in a default location\n"
@@ -2245,13 +2301,16 @@
 msgstr "変換時のブランチ名変換用ファイル"
 
 msgid "try to sort changesets by branches"
-msgstr "ブランチによるリビジョンの並び替えを試す"
+msgstr "ブランチによるリビジョンの並び替え"
 
 msgid "try to sort changesets by date"
-msgstr "日付によるリビジョンの並び替えを試す"
+msgstr "日付によるリビジョンの並び替え"
 
 msgid "preserve source changesets order"
-msgstr "元リポジトリでのリビジョンの並び順を尊重"
+msgstr "元リポジトリでのリビジョン順を尊重"
+
+msgid "try to reorder closed revisions"
+msgstr "閉鎖実施リビジョン群の並び替え"
 
 msgid "hg convert [OPTION]... SOURCE [DEST [REVMAP]]"
 msgstr "hg convert [OPTION]... SOURCE [DEST [REVMAP]]"
@@ -2319,7 +2378,7 @@
 
 #, python-format
 msgid "%s is not available in %s anymore"
-msgstr "%s は %s において存在しません"
+msgstr "%s は %s に存在しません"
 
 #, python-format
 msgid "%s.%s symlink has no target"
@@ -2439,6 +2498,9 @@
 msgid "--sourcesort is not supported by this data source"
 msgstr "指定の変換元は --sourcesort が未サポートです"
 
+msgid "--closesort is not supported by this data source"
+msgstr "指定の変換元は --closesort が未サポートです"
+
 #, python-format
 msgid "%s does not look like a CVS checkout"
 msgstr "%s は CVS 作業領域ではないと思われます"
@@ -4177,6 +4239,13 @@
 msgid "%s: empty changeset"
 msgstr "%s: 空のリビジョン"
 
+#, python-format
+msgid "comparing with %s\n"
+msgstr "%s と比較中\n"
+
+msgid "no outgoing ancestors"
+msgstr "反映候補リビジョンがありません"
+
 msgid "Read history edits from the specified file."
 msgstr "履歴改変手順を指定ファイルから読み込み"
 
@@ -4211,13 +4280,6 @@
 msgid "source has mq patches applied"
 msgstr "元リポジトリでは MQ パッチが適用中です"
 
-msgid "only one repo argument allowed with --outgoing"
-msgstr "--outgoing 指定時には、引数は1つしか指定できません"
-
-#, python-format
-msgid "comparing with %s\n"
-msgstr "%s と比較中\n"
-
 msgid "--force only allowed with --outgoing"
 msgstr "--outgoing 指定時のみ --force を指定可能です"
 
@@ -4230,15 +4292,18 @@
 msgid "history edit already in progress, try --continue or --abort"
 msgstr "履歴改変は継続中です。 --continue または --abort を指定してください"
 
+msgid "no revisions allowed with --outgoing"
+msgstr "--outgoing とリビジョン指定は併用できません"
+
+msgid "only one repo argument allowed with --outgoing"
+msgstr "--outgoing 指定時には、引数は1つしか指定できません"
+
 msgid "histedit requires exactly one parent revision"
 msgstr "履歴改変には単一の親リビジョンを指定してください"
 
-msgid "nothing to edit\n"
-msgstr "改変の必要なリビジョンがありません\n"
-
-#, python-format
-msgid "working directory parent is not a descendant of %s"
-msgstr "作業領域の親リビジョンは %s の子孫ではありません"
+#, python-format
+msgid "%s is not an ancestor of working directory"
+msgstr "%s は作業領域の祖先ではありません"
 
 #, python-format
 msgid "update to %s or descendant and run \"hg histedit --continue\" again"
@@ -4252,25 +4317,33 @@
 msgid "cannot edit immutable changeset: %s"
 msgstr "改変不能なリビジョンがあります: %s"
 
-msgid "must specify a rule for each changeset once"
-msgstr "1リビジョン毎に1つのルール指定が必要です"
-
 #, python-format
 msgid "malformed line \"%s\""
 msgstr "不正な行 \"%s\""
 
-msgid "may not use changesets other than the ones listed"
-msgstr "対象範囲以外のリビジョンは指定できません"
-
 #, python-format
 msgid "unknown changeset %s listed"
 msgstr "未知のリビジョン %s が指定されました"
 
+msgid "may not use changesets other than the ones listed"
+msgstr "対象範囲以外のリビジョンは指定できません"
+
+#, python-format
+msgid "duplicated command for changeset %s"
+msgstr "リビジョン %s へのルール指定が複数あります"
+
 #, python-format
 msgid "unknown action \"%s\""
 msgstr "未知の操作 \"%s\" が指定されました"
 
 #, python-format
+msgid "missing rules for changeset %s"
+msgstr "リビジョン %s へのルール指定がありません"
+
+msgid "do you want to use the drop action?"
+msgstr "リビジョンの破棄には drop コマンド指定が必要です"
+
+#, python-format
 msgid "histedit: moving bookmarks %s from %s to %s\n"
 msgstr "histedit: ブックマーク %s を %s から %s に移動中\n"
 
@@ -4874,18 +4947,58 @@
 
 msgid ""
 "When you pull a changeset that affects largefiles from a remote\n"
-"repository, Mercurial behaves as normal. However, when you update to\n"
-"such a revision, any largefiles needed by that revision are downloaded\n"
-"and cached (if they have never been downloaded before). This means\n"
-"that network access may be required to update to changesets you have\n"
-"not previously updated to."
-msgstr ""
-"連携先リポジトリから取り込まれるリビジョンが、 大容量ファイルに対して、\n"
-"影響のあるものである場合、 Mercurial の挙動は通常と変わりません。\n"
-"但し、 当該リビジョンでの作業領域更新の際に、 必要な大容量ファイルが、\n"
-"転送/キャッシュされます (事前入手されていない場合のみ)。 そのため、\n"
-"これまで :hg:`update` 対象になっていないリビジョンを使用する際には、\n"
-"ネットワーク接続を必要とする可能性が生じます。"
+"repository, the largefiles for the changeset will by default not be\n"
+"pulled down. However, when you update to such a revision, any\n"
+"largefiles needed by that revision are downloaded and cached (if\n"
+"they have never been downloaded before). One way to pull largefiles\n"
+"when pulling is thus to use --update, which will update your working\n"
+"copy to the latest pulled revision (and thereby downloading any new\n"
+"largefiles)."
+msgstr ""
+"連携先から取り込むリビジョンが、 大容量ファイルに関するものであっても、\n"
+"特に指定が無ければ、 大容量ファイルはダウンロードされません。 その一方で、\n"
+"大容量ファイルに関係するリビジョンで、 作業領域を更新しようとした場合、\n"
+"必要とされる (且つ未取得な) 大容量ファイルのダウンロードと、\n"
+"キャッシュ領域への格納が実施されます。 履歴取り込みと同時に、\n"
+"大容量ファイルを取得する方法としては、 作業領域を最新リビジョンで更新する\n"
+"--update を、 履歴取り込みの際に指定する方法があります。"
+
+msgid ""
+"If you want to pull largefiles you don't need for update yet, then\n"
+"you can use pull with the `--lfrev` option or the :hg:`lfpull` command."
+msgstr ""
+"作業領域更新では必要とされない大容量ファイルも取得したい場合は、\n"
+"履歴取り込みの際に `--lfrev` を指定するか、 :hg:`lfpull` を使用します。"
+
+msgid ""
+"If you know you are pulling from a non-default location and want to\n"
+"download all the largefiles that correspond to the new changesets at\n"
+"the same time, then you can pull with `--lfrev \"pulled()\"`."
+msgstr ""
+"リビジョン取り込みの際に、 関連する全大容量ファイルを取得したい場合は、\n"
+"`--lfrev \"pulled()\"` を指定してください。"
+
+msgid ""
+"If you just want to ensure that you will have the largefiles needed to\n"
+"merge or rebase with new heads that you are pulling, then you can pull\n"
+"with `--lfrev \"head(pulled())\"` flag to pre-emptively download any "
+"largefiles\n"
+"that are new in the heads you are pulling."
+msgstr ""
+"取得対象大容量ファイルを、 取り込まれた新規ヘッドリビジョンのマージや移動\n"
+"(rebase) に必要なものだけに限定したい場合は、 `--lfrev \"head(pulled())\"`\n"
+"を指定してください。"
+
+msgid ""
+"Keep in mind that network access may now be required to update to\n"
+"changesets that you have not previously updated to. The nature of the\n"
+"largefiles extension means that updating is no longer guaranteed to\n"
+"be a local-only operation."
+msgstr ""
+"関連する大容量ファイルが未取得な場合は、 作業領域更新であっても、\n"
+"ネットワークアクセスが必要になるかもしれない点に留意してください。\n"
+"largefiles エクステンション使用時には、 作業領域更新操作であっても、\n"
+"作業中のリポジトリに閉じた操作ではない可能性があるのです。"
 
 msgid ""
 "If you already have large files tracked by Mercurial without the\n"
@@ -5002,6 +5115,45 @@
 "    --to-normal を指定します。 変換後リポジトリは、 largefiles\n"
 "    エクステンション無しでも使用できます。"
 
+msgid "pull largefiles for the specified revisions from the specified source"
+msgstr "指定リビジョンに関連する大容量ファイルの取り込み"
+
+msgid ""
+"    Pull largefiles that are referenced from local changesets but missing\n"
+"    locally, pulling from a remote repository to the local cache."
+msgstr ""
+"    作業中リポジトリ中にある指定リビジョンに関連する大容量ファイルのうち、\n"
+"    未取得のものを取り込み、 キャッシュ領域に保存します。"
+
+msgid ""
+"    If SOURCE is omitted, the 'default' path will be used.\n"
+"    See :hg:`help urls` for more information."
+msgstr ""
+"    連携先が省略された場合、 'default' パスが連携先として使用されます。\n"
+"    詳細は :hg:`help urls` を参照してください。"
+
+msgid "    .. container:: verbose"
+msgstr "    .. container:: verbose"
+
+msgid "      Some examples:"
+msgstr "      例:"
+
+msgid "      - pull largefiles for all branch heads::"
+msgstr "      - 全名前付きブランチのヘッドに関連する大容量ファイルを取得::"
+
+msgid "          hg lfpull -r \"head() and not closed()\""
+msgstr "          hg lfpull -r \"head() and not closed()\""
+
+msgid "      - pull largefiles on the default branch::"
+msgstr "      - default ブランチのリビジョンに関連する大容量ファイルを取得::"
+
+msgid ""
+"          hg lfpull -r \"branch(default)\"\n"
+"    "
+msgstr ""
+"          hg lfpull -r \"branch(default)\"\n"
+"    "
+
 #, python-format
 msgid "error getting id %s from url %s for file %s: %s\n"
 msgstr "識別子 %s (連携先 %s のファイル %s) に対するエラー: %s\n"
@@ -5014,6 +5166,10 @@
 msgstr "ファイル %s の取得中:%s\n"
 
 #, python-format
+msgid "%s: largefile %s not available from %s\n"
+msgstr "%s: 大容量ファイル %s は %s に存在しません\n"
+
+#, python-format
 msgid "%s: data corruption (expected %s, got %s)\n"
 msgstr "%s: データ破損を検出 (想定ハッシュ値 %s に対して %s)\n"
 
@@ -5094,9 +5250,16 @@
 msgid "%d largefiles updated, %d removed\n"
 msgstr "大容量ファイルの更新数 %d、 削除数 %d\n"
 
-#, python-format
-msgid "largefile %s is not in cache and could not be downloaded"
-msgstr "大容量ファイル %s はキャッシュされておらず、ダウンロードもできません"
+msgid "no revisions specified"
+msgstr "リビジョン指定がありません"
+
+#, python-format
+msgid "pulling largefiles for revision %s\n"
+msgstr "リビジョン %s に関連する大容量ファイルの取得中\n"
+
+#, python-format
+msgid "%d largefiles cached\n"
+msgstr "大容量ファイル %d 個をキャッシュ\n"
 
 msgid "minimum size (MB) for files to be converted as largefiles"
 msgstr "大容量ファイル化するファイルの最小サイズ (MB)"
@@ -5107,6 +5270,12 @@
 msgid "hg lfconvert SOURCE DEST [FILE ...]"
 msgstr "hg lfconvert SOURCE DEST [FILE ...]"
 
+msgid "pull largefiles for these revisions"
+msgstr "指定リビジョンに関連する大容量ファイルを入手"
+
+msgid "-r REV... [-e CMD] [--remotecmd CMD] [SOURCE]"
+msgstr "-r REV... [-e CMD] [--remotecmd CMD] [SOURCE]"
+
 #, python-format
 msgid "largefiles: size must be number (not %s)\n"
 msgstr "largefiles: サイズは数値で指定してください (%s は不正です)\n"
@@ -5130,24 +5299,12 @@
 msgstr "ファイルが手元にありません"
 
 #, python-format
-msgid ""
-"changeset %s: %s missing\n"
-"  (looked for hash %s)\n"
-msgstr ""
-"リビジョン %s: %s が見つかりません\n"
-"  (ハッシュ値 %s を想定)\n"
-
-#, python-format
-msgid ""
-"changeset %s: %s: contents differ\n"
-"  (%s:\n"
-"  expected hash %s,\n"
-"  but got %s)\n"
-msgstr ""
-"リビジョン %s: %s の内容が異なります\n"
-"  (%s:\n"
-"  想定ハッシュ値 %s に対して\n"
-"  実際のハッシュ値は %s)\n"
+msgid "changeset %s: %s references missing %s\n"
+msgstr "リビジョン %s: %s が参照している %s が不在です\n"
+
+#, python-format
+msgid "changeset %s: %s references corrupted %s\n"
+msgstr "リビジョン %s: %s が参照している %s が破損しています\n"
 
 #, python-format
 msgid "%s already a largefile\n"
@@ -5233,12 +5390,8 @@
 msgid "destination largefile already exists"
 msgstr "大容量ファイルの複製先は既に存在します"
 
-msgid "caching new largefiles\n"
-msgstr "新規大容量ファイルのキャッシュ中\n"
-
-#, python-format
-msgid "%d largefiles cached\n"
-msgstr "大容量ファイル %d 個をキャッシュ\n"
+msgid "pulled() only available in --lfrev"
+msgstr "pulled() 述語は --lfrev 指定でのみ有効です"
 
 #, python-format
 msgid "--all-largefiles is incompatible with non-local destination %s"
@@ -5281,6 +5434,10 @@
 msgid "largefiles: %d to upload\n"
 msgstr "largefiles:   %d 個の転送予定ファイル\n"
 
+#, python-format
+msgid "largefile %s is not in cache and could not be downloaded"
+msgstr "大容量ファイル %s はキャッシュされておらず、ダウンロードもできません"
+
 msgid "largefile contents do not match hash"
 msgstr "大容量ファイルの内容が想定ハッシュ値と一致しません"
 
@@ -5321,14 +5478,6 @@
 msgstr "remotestore: ファイル %s を開くことができません: %s"
 
 #, python-format
-msgid "remotestore: largefile %s is invalid"
-msgstr "remotestore: 大容量ファイル %s は無効です"
-
-#, python-format
-msgid "remotestore: largefile %s is missing"
-msgstr "remotestore: 大容量ファイル %s は存在しません"
-
-#, python-format
 msgid "changeset %s: %s: contents differ\n"
 msgstr "リビジョン %s: %s: 内容が異なります\n"
 
@@ -5337,14 +5486,6 @@
 msgstr "リビジョン %s: ファイル %s が不在です\n"
 
 #, python-format
-msgid ""
-"largefiles: repo method %r appears to have already been wrapped by another "
-"extension: largefiles may behave incorrectly\n"
-msgstr ""
-"largefiles: 他のエクステンションが %r 機能を書き換えている模様です:"
-"largefiles が想定外の挙動をする可能性があります\n"
-
-#, python-format
 msgid "file \"%s\" is a largefile standin"
 msgstr "\"%s\" は大容量ファイルの代理ファイルです"
 
@@ -5359,14 +5500,14 @@
 msgstr ""
 "指定サイズ (単位:MB) 以上のファイルを、 大容量ファイルとして追加 (既定値:10)"
 
-msgid "verify largefiles"
-msgstr "大容量ファイルを検証"
-
-msgid "verify all revisions of largefiles not just current"
-msgstr "現リビジョン以外でも、 大容量ファイルに関する検証を実施"
-
-msgid "verify largefile contents not just existence"
-msgstr "大容量ファイルの存在確認以外に、 内容の検証も実施"
+msgid "verify that all largefiles in current revision exists"
+msgstr "現リビジョンの大容量ファイルの存在を検証"
+
+msgid "verify largefiles in all revisions, not just current"
+msgstr "大容量ファイルの検証を全リビジョンで実施"
+
+msgid "verify local largefile contents, not just existence"
+msgstr "大容量ファイルの存在と内容の両方を検証"
 
 msgid "display largefiles dirstate"
 msgstr "大容量ファイルの作業領域状態を表示"
@@ -5374,11 +5515,14 @@
 msgid "display outgoing largefiles"
 msgstr "転送対象大容量ファイルを表示"
 
-msgid "download all pulled versions of largefiles"
-msgstr "取り込みリビジョンにおいて、 大容量ファイルを全て取得"
+msgid "download all pulled versions of largefiles (DEPRECATED)"
+msgstr "取り込みリビジョンに関連する大容量ファイルを全て取得 (非推奨)"
+
+msgid "download largefiles for these revisions"
+msgstr "指定リビジョンに関連する大容量ファイルを取得"
 
 msgid "download all versions of all largefiles"
-msgstr "全リビジョンにおいて、 大容量ファイルを全て取得"
+msgstr "全リビジョンに関連する大容量ファイルを取得"
 
 msgid "manage a stack of patches"
 msgstr "パッチ併用の管理"
@@ -6883,9 +7027,6 @@
 "    この機能は、 上流のリポジトリでパッチが受理された場合や、\n"
 "    パッチ内容を上流リポジトリに反映する場合などに有用です。"
 
-msgid "no revisions specified"
-msgstr "リビジョン指定がありません"
-
 msgid "warning: uncommitted changes in the working directory\n"
 msgstr "警告: 作業領域の変更が未コミットです\n"
 
@@ -8226,6 +8367,9 @@
 msgid "use --keep to keep original changesets"
 msgstr "元リビジョンを維持する場合は --keep を使用してください"
 
+msgid "nothing to rebase\n"
+msgstr "移動の必要はありません\n"
+
 #, python-format
 msgid "can't rebase immutable changeset %s"
 msgstr "改変不能なリビジョン %s は移動できません"
@@ -8233,9 +8377,6 @@
 msgid "see hg help phases for details"
 msgstr "詳細は \"hg help phases\" を参照してください"
 
-msgid "nothing to rebase\n"
-msgstr "移動の必要はありません\n"
-
 msgid "cannot collapse multiple named branches"
 msgstr "複数の名前付きブランチの単一化はできません"
 
@@ -8483,6 +8624,10 @@
 msgid "cannot partially commit a merge (use \"hg commit\" instead)"
 msgstr "マージの部分コミットはできません (\"hg commit\" を使用してください)"
 
+#, python-format
+msgid "error parsing patch: %s"
+msgstr "パッチ解析に失敗: %s"
+
 msgid "no changes to record\n"
 msgstr "記録可能な変更がありません\n"
 
@@ -8668,6 +8813,10 @@
 msgstr "定義済みスキーマは、 同名スキーマ定義により、 上書き可能です。\n"
 
 #, python-format
+msgid "no '://' in scheme url '%s'"
+msgstr "'://' 記述がスキーマ URL '%s' に含まれていません"
+
+#, python-format
 msgid "custom scheme %s:// conflicts with drive letter %s:\\\n"
 msgstr "独自スキーマ %s:// は、 ドライブ文字 %s:\\ と衝突します\n"
 
@@ -8732,8 +8881,13 @@
 msgid "command to transplant changesets from another branch"
 msgstr "別ブランチからのリビジョンの移植"
 
-msgid "This extension allows you to transplant patches from another branch."
-msgstr "本エクステンションは、 別ブランチからのリビジョン移植を可能にします。"
+msgid ""
+"This extension allows you to transplant changes to another parent revision,\n"
+"possibly in another repository. The transplant is done using 'diff' patches."
+msgstr ""
+"本エクステンションにより、 一連のリビジョン群を別な親リビジョン\n"
+"(リポジトリ横断も可能) の先に移植できます。 移植はパッチ形式 ('diff')\n"
+"を元に実施されます (※ 訳注: rebase や graft は 3-way マージで実施)。"
 
 msgid ""
 "Transplanted patches are recorded in .hg/transplant/transplants, as a\n"
@@ -8820,14 +8974,14 @@
 msgid "no such option\n"
 msgstr "そのようなオプションはありません\n"
 
-msgid "pull patches from REPO"
-msgstr "指定リポジトリからの取り込み"
-
-msgid "pull patches from branch BRANCH"
-msgstr "指定ブランチからの取り込み"
-
-msgid "pull all changesets up to BRANCH"
-msgstr "指定ブランチの全てを取り込む"
+msgid "transplant changesets from REPO"
+msgstr "指定リポジトリからのリビジョンの移植"
+
+msgid "use this source changeset as head"
+msgstr "指定リビジョンを移植元のヘッドとみなす"
+
+msgid "pull all changesets up to the --branch revisions"
+msgstr "--branch での指定ブランチの全てを取り込む"
 
 msgid "skip over REV"
 msgstr "指定リビジョンのスキップ"
@@ -8841,8 +8995,8 @@
 msgid "append transplant info to log message"
 msgstr "コミットログへの移植情報の付与"
 
-msgid "continue last transplant session after repair"
-msgstr "中断された直前の移植作業の再開"
+msgid "continue last transplant session after fixing conflicts"
+msgstr "衝突解消後における、中断された直前の移植作業の再開"
 
 msgid "filter changesets through command"
 msgstr "コマンドによるリビジョンのフィルタリング"
@@ -8856,14 +9010,23 @@
 msgid ""
 "    Selected changesets will be applied on top of the current working\n"
 "    directory with the log of the original changeset. The changesets\n"
-"    are copied and will thus appear twice in the history. Use the\n"
-"    rebase extension instead if you want to move a whole branch of\n"
-"    unpublished changesets."
+"    are copied and will thus appear twice in the history with different\n"
+"    identities."
 msgstr ""
 "    移植対象リビジョンは、 作業領域の親リビジョンの子孫として、\n"
 "    コミットログを維持しつつ複製されます。 移植での複製により、\n"
-"    移植対象と同内容のリビジョンは、 履歴上に2回登場することになります。\n"
-"    未公開リビジョンのブランチを、 まとめて移動したい場合は、 rebase\n"
+"    移植対象と同内容のリビジョンが、 履歴上に2回 (識別子はそれぞれ異なる)\n"
+"    登場することになります。"
+
+msgid ""
+"    Consider using the graft command if everything is inside the same\n"
+"    repository - it will use merges and will usually give a better result.\n"
+"    Use the rebase extension if the changesets are unpublished and you want\n"
+"    to move them instead of copying them."
+msgstr ""
+"    移植元/先が同一リポジトリの場合は、 graft の使用を検討しましょう。\n"
+"    graft の内部処理は 3-way マージを使用するため、 多くの場合で transplant\n"
+"    よりも良い結果が得られます。未公開リビジョンの移動の場合は、rebase\n"
 "    エクステンションを使用してください。"
 
 msgid ""
@@ -8885,27 +9048,30 @@
 "    第2引数にはパッチが格納されたファイルが指定されます。"
 
 msgid ""
-"    If --source/-s is specified, selects changesets from the named\n"
-"    repository. If --branch/-b is specified, selects changesets from\n"
-"    the branch holding the named revision, up to that revision. If\n"
-"    --all/-a is specified, all changesets on the branch will be\n"
-"    transplanted, otherwise you will be prompted to select the\n"
-"    changesets you want."
-msgstr ""
-"    --source/-s が指定された場合は、 指定リポジトリが移植元になります。\n"
-"    --branch/-b が指定された場合は、 指定リビジョンを含むブランチの、\n"
-"    指定リビジョンまでが移植元になります。 --all/-a が指定された場合は、\n"
-"    指定ブランチ中の全てのリビジョンが移植対象となり、 それ以外の場合は、\n"
-"    移植候補リビジョンに関して、 移植要否の問い合わせが発生します。"
-
-msgid ""
-"    :hg:`transplant --branch REV --all` will transplant the\n"
-"    selected branch (up to the named revision) onto your current\n"
-"    working directory."
-msgstr ""
-"    :hg:`transplant --branch REV --all` 実行により、\n"
-"    指定された名前付きブランチ (の中の REV までのリビジョン) が、\n"
-"    作業領域の親リビジョンの子として、 移植されます。"
+"    --source/-s specifies another repository to use for selecting "
+"changesets,\n"
+"    just as if it temporarily had been pulled.\n"
+"    If --branch/-b is specified, these revisions will be used as\n"
+"    heads when deciding which changsets to transplant, just as if only\n"
+"    these revisions had been pulled.\n"
+"    If --all/-a is specified, all the revisions up to the heads specified\n"
+"    with --branch will be transplanted."
+msgstr ""
+"    移植対象リビジョンは --source/-s で指定したリポジトリから、\n"
+"    移植時に取り込むことが可能です。 --branch/-b が指定された場合、\n"
+"    指定ブランチのみの取り込みを仮定して、 移植対象が決定されます。\n"
+"    --all/-a が指定された場合は、 指定リビジョンに至る全リビジョンが、\n"
+"    移植対象とみなされます。"
+
+msgid "    Example:"
+msgstr "    実行例:"
+
+msgid ""
+"    - transplant all changes up to REV on top of your current revision::"
+msgstr "      - REV までの全リビジョンを、現リビジョン上に移植::"
+
+msgid "        hg transplant --branch REV --all"
+msgstr "        hg transplant --branch REV --all"
 
 msgid ""
 "    You can optionally mark selected transplanted changesets as merge\n"
@@ -8947,11 +9113,11 @@
 "    --continue/-c` を実行することで、 中断された移植を再開可能です。\n"
 "    "
 
-msgid "--continue is incompatible with branch, all or merge"
+msgid "--continue is incompatible with --branch, --all and --merge"
 msgstr "--continue は --branch、 --all、 --merge と併用できません"
 
-msgid "no source URL, branch tag or revision list provided"
-msgstr "元 URL、 ブランチタグ、 リビジョン一覧のいずれも指定されていません"
+msgid "no source URL, branch revision or revision list provided"
+msgstr "元 URL、 ブランチ名、 リビジョン一覧のいずれも指定されていません"
 
 msgid "--all requires a branch revision"
 msgstr "--all にはブランチリビジョン指定が必要です"
@@ -9240,6 +9406,9 @@
 msgid "archiving"
 msgstr "アーカイブ中"
 
+msgid "no files match the archive pattern"
+msgstr "指定パターンに合致するファイルがありません"
+
 #, python-format
 msgid "malformed line in .hg/bookmarks: %r\n"
 msgstr "不正な .hg/bookmarks 記述行: %r\n"
@@ -9549,6 +9718,10 @@
 msgstr "HG: ブランチ '%s'"
 
 #, python-format
+msgid "HG: bookmark '%s'"
+msgstr "HG: ブックマーク '%s'"
+
+#, python-format
 msgid "HG: subrepo %s"
 msgstr "HG: サブリポジトリ %s"
 
@@ -9570,6 +9743,17 @@
 msgid "empty commit message"
 msgstr "コミットログがありません"
 
+msgid "created new head\n"
+msgstr "新規ヘッドが増えました\n"
+
+#, python-format
+msgid "reopening closed branch head %d\n"
+msgstr "閉鎖済みブランチヘッド %d の再開中\n"
+
+#, python-format
+msgid "committed changeset %d:%s\n"
+msgstr "コミット対象リビジョン %d:%s\n"
+
 #, python-format
 msgid "forgetting %s\n"
 msgstr "%s の追加登録を取り消し中\n"
@@ -9750,9 +9934,6 @@
 msgstr ""
 "    ファイル名指定が無い場合、 作業領域中の全ファイルが対象となります。"
 
-msgid "    .. container:: verbose"
-msgstr "    .. container:: verbose"
-
 msgid ""
 "       An example showing how new (unknown) files are added\n"
 "       automatically by :hg:`add`::"
@@ -10110,7 +10291,7 @@
 msgstr "[-gbsr] [-U] [-c CMD] [REV]"
 
 msgid "subdivision search of changesets"
-msgstr "リビジョンの分割探索"
+msgstr "リビジョンの二分探索"
 
 msgid ""
 "    This command helps to find changesets which introduce problems. To\n"
@@ -10122,7 +10303,7 @@
 "    bad, and bisect will either update to another candidate changeset\n"
 "    or announce that it has found the bad revision."
 msgstr ""
-"    問題発生契機となるリビジョンの特定を補助します。 使用開始の際には、\n"
+"    問題発生契機となるリビジョンを探索します。 使用開始の際には、\n"
 "    問題が発生する既知のリビジョンのうち、 最古のものを bad とマークし、\n"
 "    問題が発生しない既知のリビジョンのうち、 最新のものを good とマーク\n"
 "    します。 本コマンドは、 検証対象リビジョンで作業領域を更新します(-U/\n"
@@ -10153,13 +10334,10 @@
 "    はリビジョンのスキップ、 127 (コマンド不在) は探索中断、\n"
 "    その他の非 0 終了コードは bad とみなされます。"
 
-msgid "      Some examples:"
-msgstr "      例:"
-
 msgid ""
 "      - start a bisection with known bad revision 12, and good revision 34::"
 msgstr ""
-"      - 既知の bad なリビジョン 12 と good なリビジョン 34 から検索開始::"
+"      - 既知の bad なリビジョン 12 と good なリビジョン 34 から探索開始::"
 
 msgid ""
 "          hg bisect --bad 34\n"
@@ -10172,7 +10350,7 @@
 "      - advance the current bisection by marking current revision as good "
 "or\n"
 "        bad::"
-msgstr "      - 現リビジョンを good ないし bad 化して検索状態を進める::"
+msgstr "      - 現リビジョンを good ないし bad 化して探索を継続::"
 
 msgid ""
 "          hg bisect --good\n"
@@ -10206,7 +10384,7 @@
 "          hg bisect --skip '!( file(\"path:foo\") & file(\"path:bar\") )'"
 
 msgid "      - forget the current bisection::"
-msgstr "      - 現行の検索状態をクリア::"
+msgstr "      - 現行の探索状態をクリア::"
 
 msgid "          hg bisect --reset"
 msgstr "          hg bisect --reset"
@@ -10231,7 +10409,7 @@
 msgid ""
 "      - see all changesets whose states are already known in the current\n"
 "        bisection::"
-msgstr "      - 現在の検索において、 状態の判明しているリビジョン全てを表示::"
+msgstr "      - 現在の探索において、 状態の判明しているリビジョン全てを表示::"
 
 msgid "          hg log -r \"bisect(pruned)\""
 msgstr "          hg log -r \"bisect(pruned)\""
@@ -10246,7 +10424,7 @@
 msgstr "          hg log -r \"bisect(current)\""
 
 msgid "      - see all changesets that took part in the current bisection::"
-msgstr "      - 現在の検索対象になっているリビジョン全てを表示::"
+msgstr "      - 現在の探索対象範囲のリビジョン全てを表示::"
 
 msgid "          hg log -r \"bisect(range)\""
 msgstr "          hg log -r \"bisect(range)\""
@@ -10274,7 +10452,7 @@
 "the common ancestor, %s.\n"
 msgstr ""
 "このリビジョンの祖先に対する確認は完全ではありません。\n"
-"共通の祖先 %s から検索を継続する場合、\n"
+"共通の祖先 %s から探索を継続する場合、\n"
 "--extend 付きで \"hg bisect\" を実行してください。\n"
 
 msgid "Due to skipped revisions, the first good revision could be any of:\n"
@@ -10284,10 +10462,10 @@
 msgstr "検証省略により、 最初の bad なリビジョンは以下から選択可能です:\n"
 
 msgid "cannot bisect (no known good revisions)"
-msgstr "分割探索できません(good リビジョンが未指定です)"
+msgstr "二分探索できません(good リビジョンが未指定です)"
 
 msgid "cannot bisect (no known bad revisions)"
-msgstr "分割探索できません(bad リビジョンが未指定です)"
+msgstr "二分探索できません(bad リビジョンが未指定です)"
 
 msgid "(use of 'hg bisect <cmd>' is deprecated)\n"
 msgstr "('hg bisect <cmd>' 形式の実行は推奨されません)\n"
@@ -10408,6 +10586,10 @@
 msgstr "空白文字だけで構成されたタグ名は不正です"
 
 #, python-format
+msgid "moving bookmark '%s' forward from %s\n"
+msgstr "ブックマーク '%s' を %s から前方に移動中\n"
+
+#, python-format
 msgid "bookmark '%s' already exists (use -f to force)"
 msgstr "ブックマーク '%s' は存在します(強制実行する場合は -f を指定)"
 
@@ -10970,18 +11152,12 @@
 "    成功時のコマンドの終了値は 0、 変更が検出できない場合は 1 です。\n"
 "    "
 
-msgid "can only close branch heads"
-msgstr "ブランチヘッドのみ閉鎖できます"
-
 msgid "cannot amend recursively"
 msgstr "サブリポジトリを含む再帰的な改変はできません"
 
 msgid "cannot amend public changesets"
 msgstr "public フェーズのリビジョンは改変できません"
 
-msgid "cannot amend merge changesets"
-msgstr "マージ実施リビジョンは改変できません"
-
 msgid "cannot amend while merging"
 msgstr "マージ実施中の作業領域では改変できません"
 
@@ -10995,17 +11171,6 @@
 msgid "nothing changed (%d missing files, see 'hg status')\n"
 msgstr "変更はありません (%d 個のファイルが不在。 'hg status' で確認を)\n"
 
-msgid "created new head\n"
-msgstr "新規ヘッドが増えました\n"
-
-#, python-format
-msgid "reopening closed branch head %d\n"
-msgstr "閉鎖済みブランチヘッド %d の再開中\n"
-
-#, python-format
-msgid "committed changeset %d:%s\n"
-msgstr "コミット対象リビジョン %d:%s\n"
-
 msgid "record a copy that has already occurred"
 msgstr "手動で複製済みのファイルに対して、 複製の旨を記録"
 
@@ -11393,6 +11558,12 @@
 "    各 ID 毎の既知性を、 0 と 1 で表現したリストが出力されます。\n"
 "    "
 
+msgid "LABEL..."
+msgstr "LABEL..."
+
+msgid "complete \"labels\" - tags, open branch names, bookmark names"
+msgstr ""
+
 msgid "markers flag"
 msgstr "廃止マーカ用フラグ"
 
@@ -11402,9 +11573,37 @@
 msgid "create arbitrary obsolete marker"
 msgstr "任意の廃止状態の設定"
 
-msgid "    With no arguments it it display the list obsolescence marker."
+msgid "    With no arguments, displays the list of obsolescence markers."
 msgstr "    引数指定が無い場合、 廃止マーカを一覧表示します。"
 
+msgid "complete an entire path"
+msgstr "パス全体を補完"
+
+msgid "show only normal files"
+msgstr "通常ファイルのみを表示"
+
+msgid "show only added files"
+msgstr "追加登録されたファイルを表示"
+
+msgid "show only removed files"
+msgstr "登録除外されたファイルを表示"
+
+msgid "FILESPEC..."
+msgstr "FILESPEC..."
+
+msgid "complete part or all of a tracked path"
+msgstr "管理対象ファイルのパスの一部/全部の補完"
+
+msgid ""
+"    This command supports shells that offer path name completion. It\n"
+"    currently completes only files already known to the dirstate."
+msgstr ""
+
+msgid ""
+"    Completion extends only to the next path segment unless\n"
+"    --full is specified, in which case entire paths are used."
+msgstr ""
+
 msgid "REPO NAMESPACE [KEY OLD NEW]"
 msgstr "REPO NAMESPACE [KEY OLD NEW]"
 
@@ -11445,12 +11644,27 @@
 msgid "revision to rebuild to"
 msgstr "再構築対象リビジョン"
 
-msgid "[-r REV] [REV]"
-msgstr "[-r REV] [REV]"
+msgid "[-r REV]"
+msgstr "[-r REV]"
 
 msgid "rebuild the dirstate as it would look like for the given revision"
 msgstr "指定リビジョン時点相当の dirstate の再構築"
 
+msgid "    If no revision is specified the first current parent will be used."
+msgstr "    リビジョン指定が無い場合、 作業領域の第1親指定とみなします。"
+
+msgid ""
+"    The dirstate will be set to the files of the given revision.\n"
+"    The actual working directory content or existing dirstate\n"
+"    information such as adds or removes is not considered."
+msgstr ""
+
+msgid ""
+"    One use of this command is to make the next :hg:`status` invocation\n"
+"    check the actual file content.\n"
+"    "
+msgstr ""
+
 msgid "revision to debug"
 msgstr "デバッグ対象リビジョン"
 
@@ -11520,6 +11734,9 @@
 msgid "revision to check"
 msgstr "確認対象リビジョン"
 
+msgid "[-r REV] [REV]"
+msgstr "[-r REV] [REV]"
+
 msgid "[REV]"
 msgstr "[REV]"
 
@@ -11692,15 +11909,18 @@
 msgid "revisions to export"
 msgstr "対象リビジョン"
 
-msgid "[OPTION]... [-o OUTFILESPEC] [-r] REV..."
-msgstr "[OPTION]... [-o OUTFILESPEC] [-r] REV..."
+msgid "[OPTION]... [-o OUTFILESPEC] [-r] [REV]..."
+msgstr "[OPTION]... [-o OUTFILESPEC] [-r] [REV]..."
 
 msgid "dump the header and diffs for one or more changesets"
 msgstr "1つ以上のリビジョンに対するヘッダおよび変更内容の出力"
 
-msgid "    Print the changeset header and diffs for one or more revisions."
-msgstr ""
-"    1つ以上のリビジョンに対して、 ヘッダ情報および変更内容を表示します。"
+msgid ""
+"    Print the changeset header and diffs for one or more revisions.\n"
+"    If no revision is given, the parent of the working directory is used."
+msgstr ""
+"    指定リビジョンに対して、 ヘッダ情報および変更内容を表示します。\n"
+"    リビジョン指定が無い場合は、 作業領域の第1親指定とみなします。"
 
 msgid ""
 "    The information shown in the changeset header is: author, date,\n"
@@ -12157,128 +12377,6 @@
 "    成功時のコマンド終了値は 0 です。\n"
 "    "
 
-#, python-format
-msgid ""
-"\n"
-"aliases: %s\n"
-msgstr ""
-"\n"
-"別名: %s\n"
-
-msgid "(no help text available)"
-msgstr "(ヘルプはありません)"
-
-#, python-format
-msgid "shell alias for::"
-msgstr "シェルコマンドの別名::"
-
-#, python-format
-msgid "    %s"
-msgstr "   %s"
-
-#, python-format
-msgid "alias for: hg %s"
-msgstr "コマンドの別名: hg %s"
-
-#, python-format
-msgid "%s"
-msgstr "%s"
-
-#, python-format
-msgid "use \"hg help -e %s\" to show help for the %s extension"
-msgstr "\"hg help -e %s\" によってエクステンション %s のヘルプが表示されます"
-
-msgid "options:"
-msgstr "オプション:"
-
-msgid "global options:"
-msgstr "グローバルオプション:"
-
-#, python-format
-msgid ""
-"\n"
-"use \"hg help %s\" to show the full help text\n"
-msgstr ""
-"\n"
-"\"hg help %s\" で詳細なヘルプが表示されます\n"
-
-#, python-format
-msgid "use \"hg -v help %s\" to show more complete help and the global options"
-msgstr "省略されたヘルプの詳細やグローバルオプションの表示は \"hg -v help %s\""
-
-#, python-format
-msgid "use \"hg -v help %s\" to show the global options"
-msgstr "グローバルオプションの表示は \"hg -v help %s\""
-
-msgid "basic commands:"
-msgstr "基本コマンド:"
-
-msgid "list of commands:"
-msgstr "コマンド一覧:"
-
-msgid "no commands defined\n"
-msgstr "コマンドが定義されていません\n"
-
-msgid "enabled extensions:"
-msgstr "有効化されているエクステンション:"
-
-msgid ""
-"\n"
-"additional help topics:"
-msgstr ""
-"\n"
-"追加のヘルプトピック:"
-
-msgid "use \"hg help\" for the full list of commands"
-msgstr "全コマンドの一覧は \"hg help\" で表示されます"
-
-msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
-msgstr ""
-"全コマンドの一覧は \"hg help\" で、 コマンド詳細は \"hg -v\" で表示されます"
-
-#, python-format
-msgid "use \"hg help %s\" to show the full help text"
-msgstr "詳細なヘルプの表示は \"hg help %s\""
-
-#, python-format
-msgid "use \"hg -v help%s\" to show builtin aliases and global options"
-msgstr "組み込み別名およびグローバルオプションの表示は \"hg -v help%s\""
-
-#, python-format
-msgid "use \"hg help -v %s\" to show more complete help"
-msgstr "省略されたヘルプの詳細の表示は \"hg help %s\""
-
-#, python-format
-msgid ""
-"\n"
-"use \"hg help -c %s\" to see help for the %s command\n"
-msgstr ""
-"\n"
-"\"hg help -c %s\" によってコマンド %s のヘルプが表示されます\n"
-
-msgid "no help text available"
-msgstr "ヘルプはありません"
-
-#, python-format
-msgid "%s extension - %s"
-msgstr "%s エクステンション - %s"
-
-msgid "use \"hg help extensions\" for information on enabling extensions\n"
-msgstr "\"hg help extensions\" で有効なエクステンションの情報が表示されます\n"
-
-#, python-format
-msgid "'%s' is provided by the following extension:"
-msgstr "以下のエクステンションにより  '%s' が提供されています:"
-
-msgid "Topics"
-msgstr "トピック"
-
-msgid "Extension Commands"
-msgstr "エクステンション由来のコマンド"
-
-msgid "Mercurial Distributed SCM\n"
-msgstr "Mercurial - 分散構成管理ツール\n"
-
 msgid "identify the specified revision"
 msgstr "当該リビジョンの識別情報を表示"
 
@@ -12496,15 +12594,15 @@
 msgid "cannot use --similarity with --bypass"
 msgstr "--similarity と --bypass は併用できません"
 
-msgid "patch is damaged or loses information"
-msgstr "パッチには破損ないし情報の欠落があります"
-
 msgid "applied to working directory"
 msgstr "作業領域への適用"
 
 msgid "not a Mercurial patch"
 msgstr "Mercurial 向けのパッチではありません"
 
+msgid "patch is damaged or loses information"
+msgstr "パッチには破損ないし情報の欠落があります"
+
 #. i18n: refers to a short changeset id
 #, python-format
 msgid "created %s"
@@ -12791,9 +12889,6 @@
 msgid "list files from all revisions"
 msgstr "関連する全ファイルの表示"
 
-msgid "[-r REV]"
-msgstr "[-r REV]"
-
 msgid "output the current or given revision of the project manifest"
 msgstr "現時点ないし指定時点でのリポジトリマニフェストの出力"
 
@@ -13181,13 +13276,6 @@
 "    最後のリビジョンを ``-r`` の引数にして :hg:`pull -r X` を実行します。"
 
 msgid ""
-"    If SOURCE is omitted, the 'default' path will be used.\n"
-"    See :hg:`help urls` for more information."
-msgstr ""
-"    連携先が省略された場合、 'default' パスが連携先として使用されます。\n"
-"    詳細は :hg:`help urls` を参照してください。"
-
-msgid ""
 "    Returns 0 on success, 1 if an update had unresolved files.\n"
 "    "
 msgstr ""
@@ -13871,12 +13959,6 @@
 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 "削除されたファイル(登録除外は未実施)を表示"
 
@@ -14237,8 +14319,8 @@
 msgid "not at a branch head (use -f to force)"
 msgstr "親リビジョンがブランチのヘッドではありません(強制実行は -f 指定)"
 
-msgid "null revision specified"
-msgstr "null リビジョンが指定されました"
+msgid "cannot tag null revision"
+msgstr "null リビジョンにはタグ付けできません"
 
 msgid "list repository tags"
 msgstr "リポジトリ中のタグ一覧の表示"
@@ -14828,6 +14910,9 @@
 msgid "*** failed to import extension %s: %s\n"
 msgstr "*** %s のインポートに失敗: %s\n"
 
+msgid "(no help text available)"
+msgstr "(ヘルプはありません)"
+
 #, python-format
 msgid "warning: error finding commands in %s\n"
 msgstr "警告: ファイル %s でのコマンド解析中にエラー発生\n"
@@ -15176,6 +15261,17 @@
 msgstr "不明なエンコーディング '%s' が指定されました"
 
 msgid ""
+"``eol(style)``\n"
+"    File contains newlines of the given style (dos, unix, mac). Binary\n"
+"    files are excluded, files with mixed line endings match multiple\n"
+"    styles."
+msgstr ""
+"``eol(style)``\n"
+"    指定形式 (dos, unix, mac) の改行を含むファイル。\n"
+"    バイナリファイルは除外されます。 複数形式が混在するファイルは、\n"
+"    複数の形式指定に合致します。"
+
+msgid ""
 "``copied()``\n"
 "    File that is recorded as being copied."
 msgstr ""
@@ -15212,10 +15308,10 @@
 
 #, python-format
 msgid "unknown bisect kind %s"
-msgstr "未知の分岐種類 %s"
+msgstr "未知の探索種別 %s"
 
 msgid "invalid bisect state"
-msgstr "bisect 状態が不正です"
+msgstr "探索状態が不正です"
 
 #. i18n: bisect changeset status
 msgid "good"
@@ -15241,6 +15337,9 @@
 msgid "bad (implicit)"
 msgstr "bad (推定)"
 
+msgid "enabled extensions:"
+msgstr "有効化されているエクステンション:"
+
 msgid "disabled extensions:"
 msgstr "無効化されているエクステンション:"
 
@@ -15311,6 +15410,122 @@
 msgid "Working with Phases"
 msgstr "フェーズの利用"
 
+#, python-format
+msgid ""
+"\n"
+"aliases: %s\n"
+msgstr ""
+"\n"
+"別名: %s\n"
+
+#, python-format
+msgid "shell alias for::"
+msgstr "シェルコマンドの別名::"
+
+#, python-format
+msgid "    %s"
+msgstr "   %s"
+
+#, python-format
+msgid "alias for: hg %s"
+msgstr "コマンドの別名: hg %s"
+
+#, python-format
+msgid "%s"
+msgstr "%s"
+
+#, python-format
+msgid "use \"hg help -e %s\" to show help for the %s extension"
+msgstr "\"hg help -e %s\" によってエクステンション %s のヘルプが表示されます"
+
+msgid "options:"
+msgstr "オプション:"
+
+msgid "global options:"
+msgstr "グローバルオプション:"
+
+#, python-format
+msgid ""
+"\n"
+"use \"hg help %s\" to show the full help text\n"
+msgstr ""
+"\n"
+"\"hg help %s\" で詳細なヘルプが表示されます\n"
+
+#, python-format
+msgid "use \"hg -v help %s\" to show more complete help and the global options"
+msgstr "省略されたヘルプの詳細やグローバルオプションの表示は \"hg -v help %s\""
+
+#, python-format
+msgid "use \"hg -v help %s\" to show the global options"
+msgstr "グローバルオプションの表示は \"hg -v help %s\""
+
+msgid "basic commands:"
+msgstr "基本コマンド:"
+
+msgid "list of commands:"
+msgstr "コマンド一覧:"
+
+msgid "no commands defined\n"
+msgstr "コマンドが定義されていません\n"
+
+msgid ""
+"\n"
+"additional help topics:"
+msgstr ""
+"\n"
+"追加のヘルプトピック:"
+
+msgid "use \"hg help\" for the full list of commands"
+msgstr "全コマンドの一覧は \"hg help\" で表示されます"
+
+msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
+msgstr ""
+"全コマンドの一覧は \"hg help\" で、 コマンド詳細は \"hg -v\" で表示されます"
+
+#, python-format
+msgid "use \"hg help %s\" to show the full help text"
+msgstr "詳細なヘルプの表示は \"hg help %s\""
+
+#, python-format
+msgid "use \"hg -v help%s\" to show builtin aliases and global options"
+msgstr "組み込み別名およびグローバルオプションの表示は \"hg -v help%s\""
+
+#, python-format
+msgid "use \"hg help -v %s\" to show more complete help"
+msgstr "省略されたヘルプの詳細の表示は \"hg help %s\""
+
+#, python-format
+msgid ""
+"\n"
+"use \"hg help -c %s\" to see help for the %s command\n"
+msgstr ""
+"\n"
+"\"hg help -c %s\" によってコマンド %s のヘルプが表示されます\n"
+
+msgid "no help text available"
+msgstr "ヘルプはありません"
+
+#, python-format
+msgid "%s extension - %s"
+msgstr "%s エクステンション - %s"
+
+msgid "use \"hg help extensions\" for information on enabling extensions\n"
+msgstr "\"hg help extensions\" で有効なエクステンションの情報が表示されます\n"
+
+#, python-format
+msgid "'%s' is provided by the following extension:"
+msgstr "以下のエクステンションにより  '%s' が提供されています:"
+
+msgid "Topics"
+msgstr "トピック"
+
+msgid "Extension Commands"
+msgstr "エクステンション由来のコマンド"
+
+msgid "Mercurial Distributed SCM\n"
+msgstr "Mercurial - 分散構成管理ツール\n"
+
 msgid ""
 "The Mercurial system uses a set of configuration files to control\n"
 "aspects of its behavior."
@@ -16933,12 +17148,12 @@
 
 msgid ""
 "    [hostfingerprints]\n"
-"    hg.intevation.org = 38:76:52:7c:87:26:9a:8f:4a:f8:d3:de:08:45:3b:ea:"
-"d6:4b:ee:cc"
+"    hg.intevation.org = 44:ed:af:1f:97:11:b6:01:7a:48:45:fc:10:3c:b7:f9:"
+"d4:89:2a:9d"
 msgstr ""
 "    [hostfingerprints]\n"
-"    hg.intevation.org = 38:76:52:7c:87:26:9a:8f:4a:f8:d3:de:08:45:3b:ea:"
-"d6:4b:ee:cc"
+"    hg.intevation.org = 44:ed:af:1f:97:11:b6:01:7a:48:45:fc:10:3c:b7:f9:"
+"d4:89:2a:9d"
 
 msgid "This feature is only supported when using Python 2.6 or later."
 msgstr "本機能は、 Python 2.6 以降でのみ使用可能です。"
@@ -17476,18 +17691,24 @@
 "    から1つを指定してください。 デフォルト値: inlinetime"
 
 msgid ""
+"``limit``\n"
+"    Number of lines to show. Specific to the ``ls`` instrumenting profiler.\n"
+"    Default: 30."
+msgstr ""
+"``limit``\n"
+"    表示対象行数。 詳細プロファイラ ``ls`` 固有の設定。 デフォルト値: 30"
+
+msgid ""
 "``nested``\n"
-"    Show at most this number of lines of drill-down info in a tree "
-"structure\n"
-"    after each main entry. This can help explain the difference between "
-"Total\n"
-"    and Inline.\n"
+"    Show at most this number of lines of drill-down info after each main "
+"entry.\n"
+"    This can help explain the difference between Total and Inline.\n"
 "    Specific to the ``ls`` instrumenting profiler.\n"
 "    Default: 5."
 msgstr ""
 "``nested``\n"
-"    個々のメインエントリ以後の、 木構造における掘り下げ (drill-down)\n"
-"    情報表示の、 最大行数。 Total と Inline の差の説明を助けます。\n"
+"    個々のメインエントリ以後の、 掘り下げ (drill-down) 情報表示の、\n"
+"    最大行数。 Total と Inline の差の説明を助けます。\n"
 "    詳細プロファイラ ``ls`` 固有の設定。 デフォルト値: 5"
 
 msgid ""
@@ -17572,14 +17793,16 @@
 "    Host name of mail server, e.g. \"mail.example.com\"."
 msgstr ""
 "``host``\n"
-"    SMTP サーバのホスト名。 設定例: \"mail.example.com\""
+"    メールサーバのホスト名。 設定例: \"mail.example.com\""
 
 msgid ""
 "``port``\n"
-"    Optional. Port to connect to on mail server. Default: 25."
+"    Optional. Port to connect to on mail server. Default: 465 (if\n"
+"    ``tls`` is smtps) or 25 (otherwise)."
 msgstr ""
 "``port``\n"
-"    省略可能。 SMTP サーバのポート番号。 デフォルト値: 25"
+"    省略可能。 メールサーバのポート番号。 デフォルト値: 465 (``tls``\n"
+"    設定が smtps の場合) あるいは 25 (それ以外)"
 
 msgid ""
 "``tls``\n"
@@ -17588,16 +17811,37 @@
 "    smtps or none. Default: none."
 msgstr ""
 "``tls``\n"
-"    省略可能。 SMTP サーバ接続における TLS 接続の有無/方式の指定。\n"
+"    省略可能。 メールサーバ接続における TLS 接続の有無/方式の指定。\n"
 "    starttls、 smtps ないし none。 デフォルト値: none"
 
 msgid ""
+"``verifycert``\n"
+"    Optional. Verification for the certificate of mail server, when\n"
+"    ``tls`` is starttls or smtps. \"strict\", \"loose\" or False. For\n"
+"    \"strict\" or \"loose\", the certificate is verified as same as the\n"
+"    verification for HTTPS connections (see ``[hostfingerprints]`` and\n"
+"    ``[web] cacerts`` also). For \"strict\", sending email is also\n"
+"    aborted, if there is no configuration for mail server in\n"
+"    ``[hostfingerprints]`` and ``[web] cacerts``.  --insecure for\n"
+"    :hg:`email` overwrites this as \"loose\". Default: \"strict\"."
+msgstr ""
+"``verifycert``\n"
+"    省略可能。 ``tls`` 設定が starttls あるいは smtps の場合における、\n"
+"    メールサーバの証明書の検証方式。 \"strict\" \"loose\" あるいは False。\n"
+"    \"strict\" あるいは \"loose\" の場合、HTTPS接続の際と同じ要領で、\n"
+"    証明書が検証されます。(``[hostfingerprints]`` および ``[web] cacerts``\n"
+"    も参照) \"strict\" の場合、 接続先メールサーバに関する設定が\n"
+"    ``[hostfingerprints]`` と ``[web] cacerts`` のいずれにも無い場合も、\n"
+"    メール送信が中断されます。 :hg:`email` に --insecure が指定された場合、\n"
+"    この設定値は \"loose\" で上書きされます。デフォルト値: \"strict\""
+
+msgid ""
 "``username``\n"
 "    Optional. User name for authenticating with the SMTP server.\n"
 "    Default: none."
 msgstr ""
 "``username``\n"
-"    省略可能。 SMTP サーバ接続の認証におけるユーザ名。\n"
+"    省略可能。 メールサーバ接続の認証におけるユーザ名。\n"
 "    デフォルト値: none"
 
 msgid ""
@@ -17607,7 +17851,7 @@
 "    password; non-interactive sessions will fail. Default: none."
 msgstr ""
 "``password``\n"
-"    省略可能。 SMTP サーバ接続の認証におけるパスワード。\n"
+"    省略可能。 メールサーバ接続の認証におけるパスワード。\n"
 "    無指定の場合、 対話的な実行であれば、\n"
 "    パスワード入力プロンプトが表示されますが、\n"
 "    非対話的な実行であれば、 処理が中断されます。\n"
@@ -18499,10 +18743,93 @@
 
 msgid ""
 "``templates``\n"
-"    Where to find the HTML templates. Default is install path.\n"
+"    Where to find the HTML templates. Default is install path."
 msgstr ""
 "``templates``\n"
-"    HTML テンプレートの検索先。 無指定時はインストール先。\n"
+"    HTML テンプレートの検索先。 無指定時はインストール先。"
+
+msgid ""
+"``websub``\n"
+"----------"
+msgstr ""
+"``websub``\n"
+"----------"
+
+msgid ""
+"Web substitution filter definition. You can use this section to\n"
+"define a set of regular expression substitution patterns which\n"
+"let you automatically modify the hgweb server output."
+msgstr ""
+
+msgid ""
+"The default hgweb templates only apply these substitution patterns\n"
+"on the revision description fields. You can apply them anywhere\n"
+"you want when you create your own templates by adding calls to the\n"
+"\"websub\" filter (usually after calling the \"escape\" filter)."
+msgstr ""
+
+msgid ""
+"This can be used, for example, to convert issue references to links\n"
+"to your issue tracker, or to convert \"markdown-like\" syntax into\n"
+"HTML (see the examples below)."
+msgstr ""
+
+msgid ""
+"Each entry in this section names a substitution filter.\n"
+"The value of each entry defines the substitution expression itself.\n"
+"The websub expressions follow the old interhg extension syntax,\n"
+"which in turn imitates the Unix sed replacement syntax::"
+msgstr ""
+
+msgid "    patternname = s/SEARCH_REGEX/REPLACE_EXPRESSION/[i]"
+msgstr "    patternname = s/SEARCH_REGEX/REPLACE_EXPRESSION/[i]"
+
+msgid ""
+"You can use any separator other than \"/\". The final \"i\" is optional\n"
+"and indicates that the search must be case insensitive."
+msgstr ""
+
+msgid "Examples::"
+msgstr "記述例::"
+
+msgid ""
+"    [websub]\n"
+"    issues = s|issue(\\d+)|<a href=\"http://bts.example.org/issue\\1\">issue"
+"\\1</a>|i\n"
+"    italic = s/\\b_(\\S+)_\\b/<i>\\1<\\/i>/\n"
+"    bold = s/\\*\\b(\\S+)\\b\\*/<b>\\1<\\/b>/"
+msgstr ""
+"    [websub]\n"
+"    issues = s|issue(\\d+)|<a href=\"http://bts.example.org/issue\\1\">issue"
+"\\1</a>|i\n"
+"    italic = s/\\b_(\\S+)_\\b/<i>\\1<\\/i>/\n"
+"    bold = s/\\*\\b(\\S+)\\b\\*/<b>\\1<\\/b>/"
+
+msgid ""
+"``worker``\n"
+"----------"
+msgstr ""
+"``worker``\n"
+"----------"
+
+msgid ""
+"Parallel master/worker configuration. We currently perform working\n"
+"directory updates in parallel on Unix-like systems, which greatly\n"
+"helps performance."
+msgstr ""
+"並列実施に関する設定。 現状では、 Unix 系システムにおける作業領域更新で、\n"
+"処理が並列に実施され、大規模リポジトリにおける大幅な性能改善が見込まれます。"
+
+msgid ""
+"``numcpus``\n"
+"    Number of CPUs to use for parallel operations. Default is 4 or the\n"
+"    number of CPUs on the system, whichever is larger. A zero or\n"
+"    negative value is treated as ``use the default``.\n"
+msgstr ""
+"``numcpus``\n"
+"    並列実施に使用可能な CPU 数。 デフォルト値は 4 あるいは\n"
+"    システム上の CPU 数の大きい方の値。 0 あるいは負値は、\n"
+"    『デフォルト値の使用』を意味します。\n"
 
 msgid "Some commands allow the user to specify a date, e.g.:"
 msgstr "以下のコマンドで日時指定が可能です:"
@@ -18530,7 +18857,10 @@
 "- ``2006-12-6``\n"
 "- ``12-6``\n"
 "- ``12/6``\n"
-"- ``12/6/6`` (Dec 6 2006)"
+"- ``12/6/6`` (Dec 6 2006)\n"
+"- ``today`` (midnight)\n"
+"- ``yesterday`` (midnight)\n"
+"- ``now`` - right now"
 msgstr ""
 "- ``Wed Dec 6 13:18:29 2006`` (「ローカルタイムゾーン」を想定)\n"
 "- ``Dec 6 13:18 -0600`` (「今年」を想定、 タイムゾーンはオフセット指定)\n"
@@ -18544,7 +18874,10 @@
 "- ``2006-12-6``\n"
 "- ``12-6``\n"
 "- ``12/6``\n"
-"- ``12/6/6`` (2006年12月6日)"
+"- ``12/6/6`` (2006年12月6日)\n"
+"- ``today`` (当日午前0時)\n"
+"- ``yesterday`` (昨日午前0時)\n"
+"- ``now`` - 現在時刻"
 
 msgid "Lastly, there is Mercurial's internal format:"
 msgstr "最後に、 Mercurial 固有の内部形式を示します:"
@@ -18941,7 +19274,7 @@
 
 msgid ""
 "Mercurial supports a functional language for selecting a set of\n"
-"files. "
+"files."
 msgstr "Mercurial はファイル指定のための問い合わせ言語を提供しています。"
 
 msgid ""
@@ -20513,7 +20846,7 @@
 
 msgid ""
 ".. note::\n"
-"  Patterns specified in ``.hgignore`` are not rooted. \n"
+"  Patterns specified in ``.hgignore`` are not rooted.\n"
 "  Please see :hg:`help hgignore` for details."
 msgstr ""
 ".. note::\n"
@@ -20785,7 +21118,7 @@
 msgid " - resynchronize draft changesets relative to a remote repository::"
 msgstr " - 連携先リポジトリに応じて、リビジョンを draft フェーズ化::"
 
-msgid "     hg phase -fd 'outgoing(URL)' "
+msgid "     hg phase -fd 'outgoing(URL)'"
 msgstr "     hg phase -fd 'outgoing(URL)'"
 
 msgid ""
@@ -21041,7 +21374,7 @@
 msgstr "    hg log -r \"branch(default) and 1.5:: and not merge()\""
 
 msgid "- Open branch heads::"
-msgstr "- 閉鎖 (close) されていないブランチンのヘッド::"
+msgstr "- 閉鎖 (close) されていないブランチのヘッド::"
 
 msgid "    hg log -r \"head() and not closed()\""
 msgstr "    hg log -r \"head() and not closed()\""
@@ -21488,26 +21821,32 @@
 msgid "In addition to filters, there are some basic built-in functions:"
 msgstr "フィルタの他に、 以下の様な基本的な組み込み関数があります:"
 
+msgid "- date(date[, fmt])"
+msgstr "- date(date[, fmt])"
+
+msgid "- fill(text[, width])"
+msgstr "- fill(text[, width])"
+
+msgid "- get(dict, key)"
+msgstr "- get(dict, key)"
+
 msgid "- if(expr, then[, else])"
 msgstr "- if(expr, then[, else])"
 
 msgid "- ifeq(expr, expr, then[, else])"
 msgstr "- ifeq(expr, expr, then[, else])"
 
-msgid "- sub(pat, repl, expr)"
-msgstr "- sub(pat, repl, expr)"
-
 msgid "- join(list, sep)"
 msgstr "- join(list, sep)"
 
 msgid "- label(label, expr)"
 msgstr "- label(label, expr)"
 
-msgid "- date(date[, fmt])"
-msgstr "- date(date[, fmt])"
-
-msgid "- fill(text[, width])"
-msgstr "- fill(text[, width])"
+msgid "- sub(pat, repl, expr)"
+msgstr "- sub(pat, repl, expr)"
+
+msgid "- rstdoc(text, style)"
+msgstr "- rstdoc(text, style)"
 
 msgid "Also, for any expression that returns a list, there is a list operator:"
 msgstr "また、 列挙形式を返す expr に対しては、 以下の様な記述が可能です:"
@@ -21795,6 +22134,14 @@
 msgstr "(マージ結果の commit を忘れずに)\n"
 
 #, python-format
+msgid "websub: invalid pattern for %s: %s\n"
+msgstr "websub: %s のパターンが不正です: %s\n"
+
+#, python-format
+msgid "websub: invalid regexp for %s: %s\n"
+msgstr "websub: %s の正規表現が不正です: %s\n"
+
+#, python-format
 msgid "config file %s not found!"
 msgstr "設定ファイル %s が見つかりません!"
 
@@ -22098,9 +22445,6 @@
 msgid "updating %s to public failed!\n"
 msgstr "%s のフェーズの public 化に失敗!\n"
 
-msgid "failed to push some obsolete markers!\n"
-msgstr "リビジョンの廃止情報の反映に失敗しました!\n"
-
 #, python-format
 msgid "%d changesets found\n"
 msgstr "%d 個のリビジョンがあります\n"
@@ -22174,25 +22518,35 @@
 msgid "transferred %s in %.1f seconds (%s/sec)\n"
 msgstr "%s を %.1f 秒で送信しました(%s/秒)\n"
 
+msgid "SMTPS requires Python 2.6 or later"
+msgstr "SMTPS の利用には Python 2.6 以降が必要です"
+
 msgid "can't use TLS: Python SSL support not installed"
 msgstr "TLS を利用できません: Python SSL サポートがインストールされていません"
 
-msgid "(using smtps)\n"
-msgstr "(SMTP を使用)\n"
-
 msgid "smtp.host not configured - cannot send mail"
 msgstr "設定ファイルに smtp.host 指定がありません - メール送信に失敗"
 
 #, python-format
+msgid "invalid smtp.verifycert configuration: %s"
+msgstr "smtp.verifycert 設定が不正です: %s"
+
+msgid "(using smtps)\n"
+msgstr "(smtps を使用中)\n"
+
+#, python-format
 msgid "sending mail: smtp host %s, port %s\n"
 msgstr "メール送信中: SMTP ホスト %s、 ポート番号 %s\n"
 
 msgid "(using starttls)\n"
-msgstr "(starttls を使用)\n"
+msgstr "(starttls を使用中)\n"
+
+msgid "(verifying remote certificate)\n"
+msgstr "(接続先の証明書を検証中)\n"
 
 #, python-format
 msgid "(authenticating to mail server as %s)\n"
-msgstr "(%s としてメールサーバの認証中)\n"
+msgstr "(メールサーバに %s として認証要求中)\n"
 
 #, python-format
 msgid "sending mail: %s\n"
@@ -22261,7 +22615,7 @@
 
 #, python-format
 msgid ""
-" local changed %s which remote deleted\n"
+"local changed %s which remote deleted\n"
 "use (c)hanged version or (d)elete?"
 msgstr ""
 "変更したファイル %s は別リビジョンで登録除外されています\n"
@@ -22284,9 +22638,6 @@
 msgid "&Deleted"
 msgstr "&Deleted"
 
-msgid "updating"
-msgstr "更新中"
-
 #, python-format
 msgid "update failed to remove %s: %s!\n"
 msgstr "%s の削除に失敗: %s!\n"
@@ -22295,6 +22646,9 @@
 msgid "getting %s\n"
 msgstr "%s を取得しています\n"
 
+msgid "updating"
+msgstr "更新中"
+
 #, python-format
 msgid "getting %s to %s\n"
 msgstr "%s から %s に複製中\n"
@@ -22373,6 +22727,9 @@
 msgid "unexpected old value"
 msgstr "旧値の指定は想定外です"
 
+msgid "failed to push some obsolete markers!\n"
+msgstr "リビジョンの廃止情報の反映に失敗しました!\n"
+
 #, python-format
 msgid "unexpected token: %s"
 msgstr "未知の記述: %s"
@@ -22585,19 +22942,21 @@
 msgstr "adds にはパターンを指定してください"
 
 msgid ""
-"``ancestor(single, single)``\n"
-"    Greatest common ancestor of the two changesets."
-msgstr ""
-"``ancestor(single, single)``\n"
-"    2つのリビジョンに共通な最新の祖先。"
-
-#. i18n: "ancestor" is a keyword
-msgid "ancestor requires two arguments"
-msgstr "ancestor の引数は2つです"
-
-#. i18n: "ancestor" is a keyword
-msgid "ancestor arguments must be single revisions"
-msgstr "ancestor の引数にはそれぞれ単一リビジョンを指定してください"
+"``ancestor(*changeset)``\n"
+"    Greatest common ancestor of the changesets."
+msgstr ""
+"``ancestor(*changeset)``\n"
+"    指定リビジョン郡に共通な最新の祖先。"
+
+msgid ""
+"    Accepts 0 or more changesets.\n"
+"    Will return empty list when passed no args.\n"
+"    Greatest common ancestor of a single changeset is that changeset."
+msgstr ""
+"    任意の数のリビジョンを指定可能です。\n"
+"    リビジョン指定が無い場合、結果は空となります。\n"
+"    1つのリビジョンだけが指定された場合、\n"
+"    そのリビジョン自身が『共通の祖先』とみなされます。"
 
 msgid ""
 "``ancestors(set)``\n"
@@ -23437,10 +23796,6 @@
 msgid "the argument to tag must be a string"
 msgstr "tag には文字列を指定してください"
 
-#, python-format
-msgid "no tags exist that match '%s'"
-msgstr "'%s' に合致するタグはありません"
-
 msgid ""
 "``unstable()``\n"
 "    Non-obsolete changesets with obsolete ancestors."
@@ -23495,6 +23850,9 @@
 msgid "%r cannot be used in a name"
 msgstr "%r は名前定義に使用できません"
 
+msgid "cannot use an integer as a name"
+msgstr "数値だけの名前は使用できません"
+
 #, python-format
 msgid "ui.portablefilenames value is invalid ('%s')"
 msgstr "ui.portablefilenames 値が不正です ('%s')"
@@ -23630,6 +23988,10 @@
 msgstr "ホスト %s のフィンガープリントが検証できません (Python が古いため)"
 
 #, python-format
+msgid "certificate for %s can't be verified (Python too old)"
+msgstr "%s の証明書は検証できません (Python が古いため)"
+
+#, python-format
 msgid "warning: certificate for %s can't be verified (Python too old)\n"
 msgstr "警告: %s の証明書は検証できません (Python が古いため)\n"
 
@@ -23659,11 +24021,18 @@
 "指定してください"
 
 #, python-format
+msgid "%s certificate with fingerprint %s not verified"
+msgstr "%s の証明書のフィンガープリント %s は検証できません"
+
+msgid "check hostfingerprints or web.cacerts config setting"
+msgstr "hostfingerprint または web.cacerts 設定を確認してください"
+
+#, python-format
 msgid ""
 "warning: %s certificate with fingerprint %s not verified (check "
 "hostfingerprints or web.cacerts config setting)\n"
 msgstr ""
-"警告: %s の証明書 (fingerprint は %s) 検証を省略(設定ファイルの "
+"警告: %s の証明書 (フィンガープリントは %s) 検証を省略(設定ファイルの "
 "hostfingerprints ないし web.cacerts 設定を確認してください)\n"
 
 #, python-format
@@ -23774,6 +24143,10 @@
 msgstr "サブリポジトリ %s に %s から取り込み中\n"
 
 #, python-format
+msgid "no changes made to subrepo %s since last push to %s\n"
+msgstr "サブリポジトリ %s は、直前の %s への反映以降の変更がありません\n"
+
+#, python-format
 msgid "pushing subrepo %s to %s\n"
 msgstr "サブリポジトリ %s から %s へ反映中\n"
 
@@ -24019,9 +24392,9 @@
 "    S: skipped, U: untested, I: ignored). Returns single space if `text`\n"
 "    is not a valid bisection status."
 msgstr ""
-":shortbisect: 文字列。 `文字列` を2分探索 (bisect) 状態とみなし、\n"
+":shortbisect: 文字列。 `文字列` を二分探索 (bisect) 状態とみなし、\n"
 "    状態に見合った1文字 (G: good, B: bad, S: skipped, U: untested, I:\n"
-"    ignored) を返します。 `文字列` が2分探索状態として不適切な場合、\n"
+"    ignored) を返します。 `文字列` が二分探索状態として不適切な場合、\n"
 "    空白文字を返します。"
 
 msgid ":shortdate: Date. Returns a date like \"2006-09-18\"."
@@ -24078,7 +24451,7 @@
 msgstr ":author: 文字列。 リビジョンの作者名(記録情報そのまま)。"
 
 msgid ":bisect: String. The changeset bisection status."
-msgstr ":bisect: 文字列。 当該リビジョンの2分探索状態。"
+msgstr ":bisect: 文字列。 当該リビジョンの二分探索状態。"
 
 msgid ""
 ":branch: String. The name of the branch on which the changeset was\n"
@@ -24231,6 +24604,14 @@
 msgid "filter %s expects one argument"
 msgstr "フィルタ %s は引数が1つ必要です"
 
+#. i18n: "get" is a keyword
+msgid "get() expects two arguments"
+msgstr "get() の引数は2つです"
+
+#. i18n: "get" is a keyword
+msgid "get() expects a dict as first argument"
+msgstr "get() の第1引数は辞書でなければなりません"
+
 #. i18n: "join" is a keyword
 msgid "join expects one or two arguments"
 msgstr "join の引数は1つないし2つです"
@@ -24247,6 +24628,10 @@
 msgid "ifeq expects three or four arguments"
 msgstr "ifeq は3ないし4の引数が必要です"
 
+#. i18n: "rstdoc" is a keyword
+msgid "rstdoc expects two arguments"
+msgstr "rstdoc の引数は2つです"
+
 msgid "unmatched quotes"
 msgstr "引用符の対応関係が不正です"
 
@@ -24305,6 +24690,10 @@
 msgid "%s.%s is not an integer ('%s')"
 msgstr "%s.%s の値 ('%s') は整数値ではありません"
 
+#, python-format
+msgid "%s.%s is not a byte quantity ('%s')"
+msgstr "%s.%s の値 ('%s') はバイト数を表す値ではありません"
+
 msgid "enter a commit username:"
 msgstr "コミットするユーザ名を入力してください:"
 
@@ -24328,6 +24717,9 @@
 msgid "password: "
 msgstr "パスワード: "
 
+msgid "cannot create new union repository"
+msgstr ""
+
 msgid "http authorization required"
 msgstr "HTTP 認証に失敗"
 
@@ -24372,6 +24764,15 @@
 msgid "negative timestamp: %d"
 msgstr "負のタイムスタンプ: %d"
 
+msgid "now"
+msgstr "now"
+
+msgid "today"
+msgstr "today"
+
+msgid "yesterday"
+msgstr "yesterday"
+
 #, python-format
 msgid "invalid date: %r"
 msgstr "不正な日付: %r"
@@ -24452,6 +24853,58 @@
 msgid "file:// URLs can only refer to localhost"
 msgstr "file:// URL が参照できるのはローカルホストのみです"
 
+#, python-format
+msgid "%.0f s"
+msgstr "%.0f 秒"
+
+#, python-format
+msgid "%.1f s"
+msgstr "%.1f 秒"
+
+#, python-format
+msgid "%.2f s"
+msgstr "%.2f 秒"
+
+#, python-format
+msgid "%.3f s"
+msgstr "%.3f 秒"
+
+#, python-format
+msgid "%.1f ms"
+msgstr "%.1f ミリ秒"
+
+#, python-format
+msgid "%.2f ms"
+msgstr "%.2f ミリ秒"
+
+#, python-format
+msgid "%.3f ms"
+msgstr "%.3f ミリ秒"
+
+#, python-format
+msgid "%.1f us"
+msgstr "%.1f マイクロ秒"
+
+#, python-format
+msgid "%.2f us"
+msgstr "%.2f マイクロ秒"
+
+#, python-format
+msgid "%.3f us"
+msgstr "%.3f マイクロ秒"
+
+#, python-format
+msgid "%.1f ns"
+msgstr "%.1f ナノ秒"
+
+#, python-format
+msgid "%.2f ns"
+msgstr "%.2f ナノ秒"
+
+#, python-format
+msgid "%.3f ns"
+msgstr "%.3f ナノ秒"
+
 msgid "cannot verify bundle or remote repos"
 msgstr "ローカルリポジトリ以外は検証できません"
 
@@ -24630,3 +25083,6 @@
 
 msgid "push failed:"
 msgstr "履歴反映に失敗:"
+
+msgid "number of cpus must be an integer"
+msgstr "CPU 数は数値でなければなりません"
--- a/i18n/pt_BR.po	Thu Apr 18 16:17:59 2013 -0700
+++ b/i18n/pt_BR.po	Thu May 02 12:15:41 2013 -0500
@@ -31,7 +31,7 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2013-01-21 11:21-0200\n"
+"POT-Creation-Date: 2013-04-20 18:56-0300\n"
 "PO-Revision-Date: 2011-06-28 09:55+0200\n"
 "Last-Translator: Wagner Bruna <wbruna@yahoo.com>\n"
 "Language-Team: Brazilian Portuguese\n"
@@ -498,6 +498,66 @@
 msgid "acl: user \"%s\" not allowed on \"%s\" (changeset \"%s\")"
 msgstr "acl: o acesso do usuário \"%s\" a \"%s\" não foi permitido (revisão \"%s\")"
 
+msgid "log repository events to a blackbox for debugging"
+msgstr "registra eventos do repositório para depuração"
+
+msgid ""
+"Logs event information to .hg/blackbox.log to help debug and diagnose problems.\n"
+"The events that get logged can be configured via the blackbox.track config key.\n"
+"Examples:"
+msgstr ""
+"Registra informação de eventos no arquivo .hg/blackbox.log para auxiliar\n"
+"depuração e diagnóstico de problemas. Os eventos que serão registrados\n"
+"podem ser configurados através da opção de configuração blackbox.track.\n"
+"Exemplos:"
+
+msgid ""
+"  [blackbox]\n"
+"  track = *"
+msgstr ""
+"  [blackbox]\n"
+"  track = *"
+
+msgid ""
+"  [blackbox]\n"
+"  track = command, commandfinish, commandexception, exthook, pythonhook"
+msgstr ""
+"  [blackbox]\n"
+"  track = command, commandfinish, commandexception, exthook, pythonhook"
+
+msgid ""
+"  [blackbox]\n"
+"  track = incoming"
+msgstr ""
+"  [blackbox]\n"
+"  track = incoming"
+
+msgid ""
+"  [blackbox]\n"
+"  # limit the size of a log file\n"
+"  maxsize = 1.5 MB\n"
+"  # rotate up to N log files when the current one gets too big\n"
+"  maxfiles = 3"
+msgstr ""
+"  [blackbox]\n"
+"  # limita o tamanho de um arquivo de log\n"
+"  maxsize = 1.5 MB\n"
+"  # rotaciona até N arquivos de log quando o atual se tornar grande demais\n"
+"  maxfiles = 3"
+
+msgid "the number of events to show"
+msgstr "número de eventos a serem mostrados"
+
+msgid "hg blackbox [OPTION]..."
+msgstr "hg blackbox [OPÇÃO]..."
+
+msgid ""
+"view the recent repository events\n"
+"    "
+msgstr ""
+"visualiza os eventos recentes do repositório\n"
+"    "
+
 msgid "hooks for integrating with the Bugzilla bug tracker"
 msgstr "ganchos para integração com o bug tracker Bugzilla"
 
@@ -1675,6 +1735,15 @@
 "                  suportada apenas pela origem Mercurial."
 
 msgid ""
+"    --closesort   try to move closed revisions as close as possible\n"
+"                  to parent branches, only supported by Mercurial\n"
+"                  sources."
+msgstr ""
+"    --closesort   tenta mover revisões fechadas o mais próximo\n"
+"                  possível de seus ramos pais, opção suportada\n"
+"                  apenas pela origem Mercurial."
+
+msgid ""
 "    If ``REVMAP`` isn't given, it will be put in a default location\n"
 "    (``<dest>/.hg/shamap`` by default). The ``REVMAP`` is a simple\n"
 "    text file that maps each source commit ID to the destination ID\n"
@@ -2190,6 +2259,9 @@
 msgid "preserve source changesets order"
 msgstr "preserva a ordem de revisões da origem"
 
+msgid "try to reorder closed revisions"
+msgstr "tenta reordenar revisões fechadas"
+
 msgid "hg convert [OPTION]... SOURCE [DEST [REVMAP]]"
 msgstr "hg convert [OPÇÃO]... ORIGEM [DESTINO [REVMAP]]"
 
@@ -2380,6 +2452,9 @@
 msgid "--sourcesort is not supported by this data source"
 msgstr "--sourcesort não é suportado para esta origem de dados"
 
+msgid "--closesort is not supported by this data source"
+msgstr "--closesort não é suportado para esta origem de dados"
+
 #, python-format
 msgid "%s does not look like a CVS checkout"
 msgstr "%s não parece ser uma cópia de trabalho do CVS"
@@ -4155,6 +4230,13 @@
 msgid "%s: empty changeset"
 msgstr "%s: revisão vazia"
 
+#, python-format
+msgid "comparing with %s\n"
+msgstr "comparando com %s\n"
+
+msgid "no outgoing ancestors"
+msgstr "nenhum ancestral a ser enviado"
+
 msgid "Read history edits from the specified file."
 msgstr "Lê alterações de histórico a partir do arquivo especificado."
 
@@ -4189,13 +4271,6 @@
 msgid "source has mq patches applied"
 msgstr "a origem tem patches mq aplicados"
 
-msgid "only one repo argument allowed with --outgoing"
-msgstr "apenas um repositório pode ser usado com --outgoing"
-
-#, python-format
-msgid "comparing with %s\n"
-msgstr "comparando com %s\n"
-
 msgid "--force only allowed with --outgoing"
 msgstr "--force só é permitido com --outgoing"
 
@@ -4209,15 +4284,18 @@
 msgstr ""
 "uma edição de histórico já está em progresso, tente --continue ou --abort"
 
+msgid "no revisions allowed with --outgoing"
+msgstr "nenhuma revisão é permitida com --outgoing"
+
+msgid "only one repo argument allowed with --outgoing"
+msgstr "apenas um repositório pode ser usado com --outgoing"
+
 msgid "histedit requires exactly one parent revision"
 msgstr "histedit requer exatamente uma revisão pai"
 
-msgid "nothing to edit\n"
-msgstr "nada para editar\n"
-
-#, python-format
-msgid "working directory parent is not a descendant of %s"
-msgstr "a revisão do diretório de trabalho não é descendente de %s"
+#, python-format
+msgid "%s is not an ancestor of working directory"
+msgstr "%s não é um ancestral do diretório de trabalho"
 
 #, python-format
 msgid "update to %s or descendant and run \"hg histedit --continue\" again"
@@ -4232,25 +4310,33 @@
 msgid "cannot edit immutable changeset: %s"
 msgstr "não é possível editar uma revisão imutável: %s"
 
-msgid "must specify a rule for each changeset once"
-msgstr "é necessário especificar uma vez uma regra para cada revisão"
-
 #, python-format
 msgid "malformed line \"%s\""
 msgstr "linha malformada \"%s\""
 
-msgid "may not use changesets other than the ones listed"
-msgstr "não é possível usar revisões além das listadas"
-
 #, python-format
 msgid "unknown changeset %s listed"
 msgstr "revisão desconhecida %s listada"
 
+msgid "may not use changesets other than the ones listed"
+msgstr "não é possível usar revisões além das listadas"
+
+#, python-format
+msgid "duplicated command for changeset %s"
+msgstr "comando duplicado para a revisão %s"
+
 #, python-format
 msgid "unknown action \"%s\""
 msgstr "ação desconhecida \"%s\""
 
 #, python-format
+msgid "missing rules for changeset %s"
+msgstr "regras faltando para a revisão %s"
+
+msgid "do you want to use the drop action?"
+msgstr "você gostaria de usar a ação drop?"
+
+#, python-format
 msgid "histedit: moving bookmarks %s from %s to %s\n"
 msgstr "histedit: movendo marcadores %s de %s para %s\n"
 
@@ -4867,18 +4953,62 @@
 
 msgid ""
 "When you pull a changeset that affects largefiles from a remote\n"
-"repository, Mercurial behaves as normal. However, when you update to\n"
-"such a revision, any largefiles needed by that revision are downloaded\n"
-"and cached (if they have never been downloaded before). This means\n"
-"that network access may be required to update to changesets you have\n"
-"not previously updated to."
-msgstr ""
-"Ao trazer revisões de um repositório remoto que afetam largefiles, o\n"
-"Mercurial se comporta normalmente. No entanto, ao atualizar para tal\n"
+"repository, the largefiles for the changeset will by default not be\n"
+"pulled down. However, when you update to such a revision, any\n"
+"largefiles needed by that revision are downloaded and cached (if\n"
+"they have never been downloaded before). One way to pull largefiles\n"
+"when pulling is thus to use --update, which will update your working\n"
+"copy to the latest pulled revision (and thereby downloading any new\n"
+"largefiles)."
+msgstr ""
+"Ao trazer revisões de um repositório remoto que afetam largefiles,\n"
+"os largefiles para essas revisões por padrão não serão trazidos.\n"
+"No entanto, ao atualizar para tal\n"
 "revisão, quaisquer largefiles necessárias para tal revisão serão\n"
-"baixadas e guardadas em um cache (se elas nunca foram baixadas antes)\n"
-". Isto quer dizer que acesso à rede pode ser necessário para atualizar\n"
-"para revisões que ainda não estiveram no diretório de trabalho."
+"baixadas e guardadas em um cache (se elas nunca foram baixadas antes).\n"
+"Para trazer os largefiles em uma operação pull, você pode usar a opção\n"
+"--update, que atualizará sua cópia de trabalho para a última revisão\n"
+"trazida (e consequentemente baixará qualquer novo largefile)."
+
+msgid ""
+"If you want to pull largefiles you don't need for update yet, then\n"
+"you can use pull with the `--lfrev` option or the :hg:`lfpull` command."
+msgstr ""
+"Se você quiser baixar largefiles que ainda não são necessários para\n"
+"um update, use a opção `--lfrev` com o comando pull, ou o comando\n"
+":hg:`lfpull`."
+
+msgid ""
+"If you know you are pulling from a non-default location and want to\n"
+"download all the largefiles that correspond to the new changesets at\n"
+"the same time, then you can pull with `--lfrev \"pulled()\"`."
+msgstr ""
+"Se você estiver trazendo revisões de um local não-padrão e quiser\n"
+"ao mesmo tempo baixar todos os largefiles que correspondam a essas\n"
+"revisões, use o comando pull com as opções `--lfrev \"pulled()\"`."
+
+msgid ""
+"If you just want to ensure that you will have the largefiles needed to\n"
+"merge or rebase with new heads that you are pulling, then you can pull\n"
+"with `--lfrev \"head(pulled())\"` flag to pre-emptively download any largefiles\n"
+"that are new in the heads you are pulling."
+msgstr ""
+"Se você quiser apenas garantir que você terá os largefiles necessários\n"
+"para realizar merge ou rebase com as novas cabeças que você estiver\n"
+"trazendo, você pode usar `--lfrev \"head(pulled())\"` com o comando\n"
+"pull para baixar preemptivamente quaisquer largefiles novos nas cabeças\n"
+"trazidas."
+
+msgid ""
+"Keep in mind that network access may now be required to update to\n"
+"changesets that you have not previously updated to. The nature of the\n"
+"largefiles extension means that updating is no longer guaranteed to\n"
+"be a local-only operation."
+msgstr ""
+"Tenha em mente que acesso à rede pode ser necessário para atualizar\n"
+"para revisões para as quais você não atualizou anteriormente. O\n"
+"modo de operação da extensão largefiles implica que não é mais\n"
+"garantido que a operação update seja apenas local."
 
 msgid ""
 "If you already have large files tracked by Mercurial without the\n"
@@ -5003,6 +5133,48 @@
 "    normais; após essa conversão, o repositório DEST poderá ser\n"
 "    usado normalmente, sem a extensão largefiles."
 
+msgid "pull largefiles for the specified revisions from the specified source"
+msgstr ""
+"traz largefiles para as revisões especificadas a partir da origem "
+"especificada"
+
+msgid ""
+"    Pull largefiles that are referenced from local changesets but missing\n"
+"    locally, pulling from a remote repository to the local cache."
+msgstr ""
+"    Traz de um repositório remoto e adiciona ao cache local\n"
+"    largefiles que são referenciadas por revisões locais mas\n"
+"    não estão presentes localmente."
+
+msgid ""
+"    If SOURCE is omitted, the 'default' path will be used.\n"
+"    See :hg:`help urls` for more information."
+msgstr ""
+"    Se ORIGEM for omitida, o caminho 'default' será usado. Veja\n"
+"    :hg:`help urls` para mais informações."
+
+msgid "    .. container:: verbose"
+msgstr "    .. container:: verbose"
+
+msgid "      Some examples:"
+msgstr "      Alguns exemplos::"
+
+msgid "      - pull largefiles for all branch heads::"
+msgstr "      - traz largefiles para todas as cabeças de ramo::"
+
+msgid "          hg lfpull -r \"head() and not closed()\""
+msgstr "          hg lfpull -r \"head() and not closed()\""
+
+msgid "      - pull largefiles on the default branch::"
+msgstr "      - traz largefiles no ramo default::"
+
+msgid ""
+"          hg lfpull -r \"branch(default)\"\n"
+"    "
+msgstr ""
+"          hg lfpull -r \"branch(default)\"\n"
+"    "
+
 #, python-format
 msgid "error getting id %s from url %s for file %s: %s\n"
 msgstr "erro ao obter id %s a partir da url %s para o arquivo %s: %s\n"
@@ -5015,6 +5187,10 @@
 msgstr "obtendo %s:%s\n"
 
 #, python-format
+msgid "%s: largefile %s not available from %s\n"
+msgstr "%s: largefile %s não está disponível em %s\n"
+
+#, python-format
 msgid "%s: data corruption (expected %s, got %s)\n"
 msgstr "%s: corrupção de dados (esperado %s, obtido %s)\n"
 
@@ -5095,9 +5271,16 @@
 msgid "%d largefiles updated, %d removed\n"
 msgstr "%d largefiles atualizados, %d removidos\n"
 
-#, python-format
-msgid "largefile %s is not in cache and could not be downloaded"
-msgstr "o largefile %s não está no cache e não pôde ser baixado"
+msgid "no revisions specified"
+msgstr "nenhuma revisão especificada"
+
+#, python-format
+msgid "pulling largefiles for revision %s\n"
+msgstr "trazendo largefiles para a revisão %s\n"
+
+#, python-format
+msgid "%d largefiles cached\n"
+msgstr "%d largefiles adicionados ao cache\n"
 
 msgid "minimum size (MB) for files to be converted as largefiles"
 msgstr "tamanho mínimo (MB) para arquivos serem convertidos em largefiles"
@@ -5108,6 +5291,12 @@
 msgid "hg lfconvert SOURCE DEST [FILE ...]"
 msgstr "hg lfconvert ORIGEM DEST [ARQUIVO ...]"
 
+msgid "pull largefiles for these revisions"
+msgstr "traz largefiles para estas revisões"
+
+msgid "-r REV... [-e CMD] [--remotecmd CMD] [SOURCE]"
+msgstr "-r REV... [-e CMD] [--remotecmd CMD] [ORIGEM]"
+
 #, python-format
 msgid "largefiles: size must be number (not %s)\n"
 msgstr "largefiles: o tamanho deve ser um número (e não %s)\n"
@@ -5131,24 +5320,12 @@
 msgstr "não é possível obter o arquivo localmente"
 
 #, python-format
-msgid ""
-"changeset %s: %s missing\n"
-"  (looked for hash %s)\n"
-msgstr ""
-"revisão %s: %s faltando\n"
-"  (procurou pelo hash %s)\n"
-
-#, python-format
-msgid ""
-"changeset %s: %s: contents differ\n"
-"  (%s:\n"
-"  expected hash %s,\n"
-"  but got %s)\n"
-msgstr ""
-"revisão %s: %s: o conteúdo é diferente\n"
-"  (%s:\n"
-"  esperado hash %s,\n"
-"  mas obteve %s)\n"
+msgid "changeset %s: %s references missing %s\n"
+msgstr "revisão %s: %s referencia %s faltando\n"
+
+#, python-format
+msgid "changeset %s: %s references corrupted %s\n"
+msgstr "revisão %s: %s referencia %s corrompido\n"
 
 #, python-format
 msgid "%s already a largefile\n"
@@ -5236,12 +5413,8 @@
 msgid "destination largefile already exists"
 msgstr "largefile de destino já existe"
 
-msgid "caching new largefiles\n"
-msgstr "adicionando novos largefiles ao cache\n"
-
-#, python-format
-msgid "%d largefiles cached\n"
-msgstr "%d largefiles adicionados ao cache\n"
+msgid "pulled() only available in --lfrev"
+msgstr "pulled() só está disponível para --lfrev"
 
 #, python-format
 msgid "--all-largefiles is incompatible with non-local destination %s"
@@ -5286,6 +5459,10 @@
 msgid "largefiles: %d to upload\n"
 msgstr "largefiles: %d a serem enviados\n"
 
+#, python-format
+msgid "largefile %s is not in cache and could not be downloaded"
+msgstr "o largefile %s não está no cache e não pôde ser baixado"
+
 msgid "largefile contents do not match hash"
 msgstr "o conteúdo do largefile não combina com o hash"
 
@@ -5326,14 +5503,6 @@
 msgstr "remotestore: não foi possível abrir arquivo %s: %s"
 
 #, python-format
-msgid "remotestore: largefile %s is invalid"
-msgstr "remotestore: largefile %s é inválido"
-
-#, python-format
-msgid "remotestore: largefile %s is missing"
-msgstr "remotestore: largefile %s está faltando"
-
-#, python-format
 msgid "changeset %s: %s: contents differ\n"
 msgstr "revisão %s: %s: o conteúdo está diferente\n"
 
@@ -5342,14 +5511,6 @@
 msgstr "revisão %s: %s faltando\n"
 
 #, python-format
-msgid ""
-"largefiles: repo method %r appears to have already been wrapped by another "
-"extension: largefiles may behave incorrectly\n"
-msgstr ""
-"largefiles: o método %r do repositório parece já ter sido sobreposto\n"
-"por uma outra extensão: largefiles pode se comportar incorretamente\n"
-
-#, python-format
 msgid "file \"%s\" is a largefile standin"
 msgstr "o arquivo \"%s\" é um standin largefile"
 
@@ -5365,14 +5526,15 @@
 "adiciona todos os arquivos acima deste tamanho (em megabytes) como "
 "largefiles (padrão: 10)"
 
-msgid "verify largefiles"
-msgstr "verifica largefiles"
-
-msgid "verify all revisions of largefiles not just current"
-msgstr "verifica todas as revisões de largefiles, não apenas a revisão atual"
-
-msgid "verify largefile contents not just existence"
-msgstr "verifica conteúdos de largefiles, não apenas existência"
+msgid "verify that all largefiles in current revision exists"
+msgstr "verifica se todos os largefiles na revisão atual existem"
+
+msgid "verify largefiles in all revisions, not just current"
+msgstr ""
+"verifica largefiles em todas as revisões, e não apenas na revisão atual"
+
+msgid "verify local largefile contents, not just existence"
+msgstr "verifica conteúdos de largefiles locais, e não apenas sua existência"
 
 msgid "display largefiles dirstate"
 msgstr "mostra o dirstate de largefiles"
@@ -5380,8 +5542,11 @@
 msgid "display outgoing largefiles"
 msgstr "exibe largefiles a serem enviados"
 
-msgid "download all pulled versions of largefiles"
-msgstr "baixa todas as versões trazidas dos largefiles"
+msgid "download all pulled versions of largefiles (DEPRECATED)"
+msgstr "baixa todas as versões trazidas dos largefiles (OBSOLETO)"
+
+msgid "download largefiles for these revisions"
+msgstr "baixa largefiles para estas revisões"
 
 msgid "download all versions of all largefiles"
 msgstr "baixa todas as versões de todos os largefiles"
@@ -6913,9 +7078,6 @@
 "    a um repositório upstream, ou se você pretender enviar essas\n"
 "    mudanças para upstream."
 
-msgid "no revisions specified"
-msgstr "nenhuma revisão especificada"
-
 msgid "warning: uncommitted changes in the working directory\n"
 msgstr "aviso: mudanças não consolidadas no diretório de trabalho\n"
 
@@ -8292,6 +8454,9 @@
 msgid "use --keep to keep original changesets"
 msgstr "use --keep para manter as revisões originais"
 
+msgid "nothing to rebase\n"
+msgstr "nada para rebasear\n"
+
 #, python-format
 msgid "can't rebase immutable changeset %s"
 msgstr "não é possível rebasear a revisão imutável %s"
@@ -8299,9 +8464,6 @@
 msgid "see hg help phases for details"
 msgstr "veja hg help phases para mais detalhes"
 
-msgid "nothing to rebase\n"
-msgstr "nada para rebasear\n"
-
 msgid "cannot collapse multiple named branches"
 msgstr "não é possível colapsar múltiplos ramos nomeados"
 
@@ -8561,6 +8723,10 @@
 msgid "cannot partially commit a merge (use \"hg commit\" instead)"
 msgstr "não é possível consolidar parcialmente uma mesclagem (use \"hg commit\")"
 
+#, python-format
+msgid "error parsing patch: %s"
+msgstr "erro decodificando patch: %s"
+
 msgid "no changes to record\n"
 msgstr "nenhuma mudança a ser gravada\n"
 
@@ -8749,6 +8915,10 @@
 "mesmo nome.\n"
 
 #, python-format
+msgid "no '://' in scheme url '%s'"
+msgstr "nenhum '://' na url da extensão scheme '%s'"
+
+#, python-format
 msgid "custom scheme %s:// conflicts with drive letter %s:\\\n"
 msgstr "esquema personalizado %s:// conflita com a letra de unidade %s:\\\n"
 
@@ -8814,8 +8984,13 @@
 msgid "command to transplant changesets from another branch"
 msgstr "comando para transplantar revisões de um outro ramo"
 
-msgid "This extension allows you to transplant patches from another branch."
-msgstr "Esta extensão lhe permite transplantar patches de outro ramo."
+msgid ""
+"This extension allows you to transplant changes to another parent revision,\n"
+"possibly in another repository. The transplant is done using 'diff' patches."
+msgstr ""
+"Esta extensão possibilita o transplante de mudanças para outra\n"
+"revisão pai, possivelmente em outro repositório. O transplante\n"
+"é realizado usando patches no formato 'diff'."
 
 msgid ""
 "Transplanted patches are recorded in .hg/transplant/transplants, as a\n"
@@ -8902,14 +9077,14 @@
 msgid "no such option\n"
 msgstr "não existe tal opção\n"
 
-msgid "pull patches from REPO"
-msgstr "traz patches do REPOSITÓRIO"
-
-msgid "pull patches from branch BRANCH"
-msgstr "traz patches do ramo RAMO"
-
-msgid "pull all changesets up to BRANCH"
-msgstr "traz todas as revisões até RAMO"
+msgid "transplant changesets from REPO"
+msgstr "transplanta revisões de REPO"
+
+msgid "use this source changeset as head"
+msgstr "usa esta revisão de origem como cabeça"
+
+msgid "pull all changesets up to the --branch revisions"
+msgstr "traz todas as revisões até as revisões do --branch"
 
 msgid "skip over REV"
 msgstr "omite revisão REV"
@@ -8923,8 +9098,8 @@
 msgid "append transplant info to log message"
 msgstr "anexa informações de transplante à mensagem de log"
 
-msgid "continue last transplant session after repair"
-msgstr "continua a última sessão de transplante após reparos"
+msgid "continue last transplant session after fixing conflicts"
+msgstr "continua a última sessão de transplante após a resolução de conflitos"
 
 msgid "filter changesets through command"
 msgstr "filtra revisões através do comando"
@@ -8939,15 +9114,25 @@
 msgid ""
 "    Selected changesets will be applied on top of the current working\n"
 "    directory with the log of the original changeset. The changesets\n"
-"    are copied and will thus appear twice in the history. Use the\n"
-"    rebase extension instead if you want to move a whole branch of\n"
-"    unpublished changesets."
+"    are copied and will thus appear twice in the history with different\n"
+"    identities."
 msgstr ""
 "    As revisões selecionadas serão aplicadas sobre o diretório de\n"
 "    trabalho atual com a descrição da revisão original. As revisões\n"
-"    são copiadas, e portanto aparecerão duas vezes no histórico. Se\n"
-"    ao invés disso você quiser mover um ramo inteiro de revisões não\n"
-"    publicadas, use a extensão rebase."
+"    são copiadas, e portanto aparecerão duas vezes no histórico com\n"
+"    identidades diferentes."
+
+msgid ""
+"    Consider using the graft command if everything is inside the same\n"
+"    repository - it will use merges and will usually give a better result.\n"
+"    Use the rebase extension if the changesets are unpublished and you want\n"
+"    to move them instead of copying them."
+msgstr ""
+"    Se tudo estiver dentro do mesmo repositório, considere usar o\n"
+"    comando graft - ele usará mesclagens para combinar as mudanças,\n"
+"    tipicamente produzindo melhores resultados.\n"
+"    Use a extensão rebase se as revisões não tiverem sido publicadas\n"
+"    e você quiser movê-las ao invés de copiá-las."
 
 msgid ""
 "    If --log is specified, log messages will have a comment appended\n"
@@ -8969,28 +9154,32 @@
 "    changelog em $1 e o patch em $2."
 
 msgid ""
-"    If --source/-s is specified, selects changesets from the named\n"
-"    repository. If --branch/-b is specified, selects changesets from\n"
-"    the branch holding the named revision, up to that revision. If\n"
-"    --all/-a is specified, all changesets on the branch will be\n"
-"    transplanted, otherwise you will be prompted to select the\n"
-"    changesets you want."
-msgstr ""
-"    Se --source/-s for especificado, seleciona revisões do\n"
-"    repositório pedido. Se --branch/-b for especificado, seleciona\n"
-"    revisões do ramo que contém a revisão especificada, até essa\n"
-"    revisão. Se --all/-a for especificado, todas as revisões do\n"
-"    ramo serão transplantadas, de outro modo as revisões a serem\n"
-"    transplantadas serão pedidas interativamente."
-
-msgid ""
-"    :hg:`transplant --branch REV --all` will transplant the\n"
-"    selected branch (up to the named revision) onto your current\n"
-"    working directory."
-msgstr ""
-"    :hg:`transplant --branch REV --all` irá transplantar o ramo\n"
-"    selecionado (até a revisão pedida) no seu diretório de trabalho\n"
-"    atual."
+"    --source/-s specifies another repository to use for selecting changesets,\n"
+"    just as if it temporarily had been pulled.\n"
+"    If --branch/-b is specified, these revisions will be used as\n"
+"    heads when deciding which changsets to transplant, just as if only\n"
+"    these revisions had been pulled.\n"
+"    If --all/-a is specified, all the revisions up to the heads specified\n"
+"    with --branch will be transplanted."
+msgstr ""
+"    --source/-s especifica outro repositório a ser usado para\n"
+"    selecionar revisões, temporariamente como se tivessem sido\n"
+"    trazidas usando pull.\n"
+"    Se --branch/-b for especificado, estas revisões serão usadas\n"
+"    como cabeças ao decidir quais revisões serão transplantadas,\n"
+"    como se apenas essas revisões tivessem sido trazidas.\n"
+"    Se --all/-a for especificado, todas as revisões até as\n"
+"    cabeças especificadas com --branch serão transplantadas."
+
+msgid "    Example:"
+msgstr "    Exemplo:"
+
+msgid ""
+"    - transplant all changes up to REV on top of your current revision::"
+msgstr "    - transplanta todas as mudanças até REV sobre sua revisão atual::"
+
+msgid "        hg transplant --branch REV --all"
+msgstr "        hg transplant --branch REV --all"
 
 msgid ""
 "    You can optionally mark selected transplanted changesets as merge\n"
@@ -9030,10 +9219,10 @@
 "    :hg:`transplant --continue/-c` para retomar o transplante.\n"
 "    "
 
-msgid "--continue is incompatible with branch, all or merge"
-msgstr "--continue é incompatível com branch, all ou merge"
-
-msgid "no source URL, branch tag or revision list provided"
+msgid "--continue is incompatible with --branch, --all and --merge"
+msgstr "--continue é incompatível com --branch, --all e --merge"
+
+msgid "no source URL, branch revision or revision list provided"
 msgstr "URL de origem, nome de ramo ou lista de revisões não fornecidas"
 
 msgid "--all requires a branch revision"
@@ -9337,6 +9526,9 @@
 msgid "archiving"
 msgstr "empacotando"
 
+msgid "no files match the archive pattern"
+msgstr "nenhum arquivo corresponde ao padrão pedido"
+
 #, python-format
 msgid "malformed line in .hg/bookmarks: %r\n"
 msgstr "linha malformada em .hg/bookmarks: %r\n"
@@ -9653,6 +9845,10 @@
 msgstr "HG: ramo '%s'"
 
 #, python-format
+msgid "HG: bookmark '%s'"
+msgstr "HG: marcador '%s'"
+
+#, python-format
 msgid "HG: subrepo %s"
 msgstr "HG: subrepo %s"
 
@@ -9674,6 +9870,17 @@
 msgid "empty commit message"
 msgstr "mensagem de consolidação vazia"
 
+msgid "created new head\n"
+msgstr "nova cabeça criada\n"
+
+#, python-format
+msgid "reopening closed branch head %d\n"
+msgstr "reabrindo cabeça de ramo fechada %d\n"
+
+#, python-format
+msgid "committed changeset %d:%s\n"
+msgstr "consolidada a revisão %d:%s\n"
+
 #, python-format
 msgid "forgetting %s\n"
 msgstr "esquecendo %s\n"
@@ -9863,9 +10070,6 @@
 "    Se nomes não forem dados, adiciona todos os arquivos ao\n"
 "    repositório."
 
-msgid "    .. container:: verbose"
-msgstr "    .. container:: verbose"
-
 msgid ""
 "       An example showing how new (unknown) files are added\n"
 "       automatically by :hg:`add`::"
@@ -10273,9 +10477,6 @@
 "    abortará a bissecção, e qualquer outro código maior que 0\n"
 "    marcará a revisão como ruim."
 
-msgid "      Some examples:"
-msgstr "      Alguns exemplos::"
-
 msgid ""
 "      - start a bisection with known bad revision 12, and good revision 34::"
 msgstr ""
@@ -10536,6 +10737,10 @@
 msgstr "nomes de marcadores não podem conter apenas espaços em branco"
 
 #, python-format
+msgid "moving bookmark '%s' forward from %s\n"
+msgstr "movendo marcador '%s' para frente a partir de %s\n"
+
+#, python-format
 msgid "bookmark '%s' already exists (use -f to force)"
 msgstr "o marcador '%s' já existe (use -f para forçar)"
 
@@ -11112,18 +11317,12 @@
 "    Devolve 0 para indicar sucesso, 1 se nada mudou.\n"
 "    "
 
-msgid "can only close branch heads"
-msgstr "só pode fechar cabeças de ramo"
-
 msgid "cannot amend recursively"
 msgstr "não é possível emendar recursivamente"
 
 msgid "cannot amend public changesets"
 msgstr "não é possível emendar revisões públicas"
 
-msgid "cannot amend merge changesets"
-msgstr "não é possível emendar revisões de mesclagem"
-
 msgid "cannot amend while merging"
 msgstr "não é possível emendar durante uma mesclagem"
 
@@ -11137,17 +11336,6 @@
 msgid "nothing changed (%d missing files, see 'hg status')\n"
 msgstr "nada mudou (%d arquivos faltando, veja 'hg status')\n"
 
-msgid "created new head\n"
-msgstr "nova cabeça criada\n"
-
-#, python-format
-msgid "reopening closed branch head %d\n"
-msgstr "reabrindo cabeça de ramo fechada %d\n"
-
-#, python-format
-msgid "committed changeset %d:%s\n"
-msgstr "consolidada a revisão %d:%s\n"
-
 msgid "record a copy that has already occurred"
 msgstr "grava uma cópia que já ocorreu"
 
@@ -11409,7 +11597,7 @@
 msgstr "aplica o filespec nesta revisão"
 
 msgid "[-r REV] FILESPEC"
-msgstr "[-r REV] FILESPEC"
+msgstr "[-r REV] PADRÃOARQ"
 
 msgid "parse and apply a fileset specification"
 msgstr "interpreta e aplica uma especificação de fileset"
@@ -11539,6 +11727,14 @@
 "    desconhecidos e conhecidos.\n"
 "    "
 
+msgid "LABEL..."
+msgstr "RÓTULO..."
+
+msgid "complete \"labels\" - tags, open branch names, bookmark names"
+msgstr ""
+"completa \"rótulos\" - etiquetas, nomes de ramos abertos, nomes de "
+"marcadores"
+
 msgid "markers flag"
 msgstr "flag de marcação"
 
@@ -11548,6 +11744,43 @@
 msgid "create arbitrary obsolete marker"
 msgstr "cria uma marcação de obsolescência arbitrária"
 
+msgid "    With no arguments, displays the list of obsolescence markers."
+msgstr "    Sem parâmetros, mostra a lista de marcações de obsolescência."
+
+msgid "complete an entire path"
+msgstr "completa um caminho completo"
+
+msgid "show only normal files"
+msgstr "mostra apenas arquivos normais"
+
+msgid "show only added files"
+msgstr "mostra apenas arquivos adicionados"
+
+msgid "show only removed files"
+msgstr "mostra apenas arquivos removidos"
+
+msgid "FILESPEC..."
+msgstr "PADRÃOARQ..."
+
+msgid "complete part or all of a tracked path"
+msgstr "completa todo ou uma parte de um caminho rastreado"
+
+msgid ""
+"    This command supports shells that offer path name completion. It\n"
+"    currently completes only files already known to the dirstate."
+msgstr ""
+"    Este comando suporta shells que ofereçam completação de\n"
+"    nomes de caminhos. Atualmente, apenas arquivos já presentes\n"
+"    no dirstate serão completados."
+
+msgid ""
+"    Completion extends only to the next path segment unless\n"
+"    --full is specified, in which case entire paths are used."
+msgstr ""
+"    A completação por padrão é feita apenas para o próximo segmento\n"
+"    do caminho. Se --full for especificado, são usados caminhos\n"
+"    completos."
+
 msgid "REPO NAMESPACE [KEY OLD NEW]"
 msgstr "REPOSITÓRIO NAMESPACE [CHAVE ANTIGO NOVO]"
 
@@ -11589,12 +11822,35 @@
 msgid "revision to rebuild to"
 msgstr "revisão para a qual reconstruir"
 
-msgid "[-r REV] [REV]"
-msgstr "[-r REV] [REV]"
+msgid "[-r REV]"
+msgstr "[-r REV]"
 
 msgid "rebuild the dirstate as it would look like for the given revision"
 msgstr "reconstrói o dirstate como ele pareceria para a revisão dada"
 
+msgid "    If no revision is specified the first current parent will be used."
+msgstr ""
+"    Se nenhuma revisão for especificada, será usado o primeiro pai do "
+"diretório de trabalho."
+
+msgid ""
+"    The dirstate will be set to the files of the given revision.\n"
+"    The actual working directory content or existing dirstate\n"
+"    information such as adds or removes is not considered."
+msgstr ""
+"    O dirstate será definido para os arquivos da revisão pedida.\n"
+"    O conteúdo real do diretório de trabalho e informações existentes\n"
+"    no dirstate (como adições e remoções) não são considerados."
+
+msgid ""
+"    One use of this command is to make the next :hg:`status` invocation\n"
+"    check the actual file content.\n"
+"    "
+msgstr ""
+"    Um uso para este comando é fazer com que a próxima execução\n"
+"    de :hg:`status` verifique o conteúdo real dos arquivos.\n"
+"    "
+
 msgid "revision to debug"
 msgstr "revisão a ser depurada"
 
@@ -11665,6 +11921,9 @@
 msgid "revision to check"
 msgstr "revisão para verificar"
 
+msgid "[-r REV] [REV]"
+msgstr "[-r REV] [REV]"
+
 msgid "[REV]"
 msgstr "[REV]"
 
@@ -11841,16 +12100,19 @@
 msgid "revisions to export"
 msgstr "revisões a serem exportadas"
 
-msgid "[OPTION]... [-o OUTFILESPEC] [-r] REV..."
-msgstr "[OPÇÃO]... [-o PADRÃOARQSAÍDA] [-r] REV..."
+msgid "[OPTION]... [-o OUTFILESPEC] [-r] [REV]..."
+msgstr "[OPÇÃO]... [-o PADRÃOARQSAÍDA] [-r] [REV]..."
 
 msgid "dump the header and diffs for one or more changesets"
 msgstr "exibe o cabeçalho e diffs para uma ou mais revisões"
 
-msgid "    Print the changeset header and diffs for one or more revisions."
-msgstr ""
-"    Imprime o cabeçalho de revisão e diffs para uma ou mais\n"
-"    revisões."
+msgid ""
+"    Print the changeset header and diffs for one or more revisions.\n"
+"    If no revision is given, the parent of the working directory is used."
+msgstr ""
+"    Imprime o conteúdo dos arquivos especificados na revisão pedida.\n"
+"    Se a revisão não for pedida, será usado o pai do diretório de\n"
+"    trabalho."
 
 msgid ""
 "    The information shown in the changeset header is: author, date,\n"
@@ -12324,132 +12586,6 @@
 "    Devolve 0 para indicar sucesso.\n"
 "    "
 
-#, python-format
-msgid ""
-"\n"
-"aliases: %s\n"
-msgstr ""
-"\n"
-"apelidos: %s\n"
-
-msgid "(no help text available)"
-msgstr "(texto de ajuda não disponível)"
-
-#, python-format
-msgid "shell alias for::"
-msgstr "apelido de shell para::"
-
-#, python-format
-msgid "    %s"
-msgstr "    %s"
-
-#, python-format
-msgid "alias for: hg %s"
-msgstr "apelido para: hg %s"
-
-#, python-format
-msgid "%s"
-msgstr "%s"
-
-#, python-format
-msgid "use \"hg help -e %s\" to show help for the %s extension"
-msgstr "use \"hg help -e %s\" para mostrar a ajuda para a extensão %s"
-
-msgid "options:"
-msgstr "opções:"
-
-msgid "global options:"
-msgstr "opções globais:"
-
-#, python-format
-msgid ""
-"\n"
-"use \"hg help %s\" to show the full help text\n"
-msgstr ""
-"\n"
-"use \"hg help %s\" para mostrar o texto completo de ajuda\n"
-
-#, python-format
-msgid "use \"hg -v help %s\" to show more complete help and the global options"
-msgstr ""
-"use \"hg -v help %s\" para mostrar um texto de ajuda mais completo e opções "
-"globais"
-
-#, python-format
-msgid "use \"hg -v help %s\" to show the global options"
-msgstr "use \"hg -v help %s\" para mostrar opções globais"
-
-msgid "basic commands:"
-msgstr "comandos básicos:"
-
-msgid "list of commands:"
-msgstr "lista de comandos:"
-
-msgid "no commands defined\n"
-msgstr "nenhum comando definido\n"
-
-msgid "enabled extensions:"
-msgstr "extensões habilitadas:"
-
-msgid ""
-"\n"
-"additional help topics:"
-msgstr ""
-"\n"
-"tópicos adicionais de ajuda:"
-
-msgid "use \"hg help\" for the full list of commands"
-msgstr "use \"hg help\" para a lista completa de comandos"
-
-msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
-msgstr "use \"hg help\" para a lista completa de comandos ou \"hg -v\" para detalhes"
-
-#, python-format
-msgid "use \"hg help %s\" to show the full help text"
-msgstr "use \"hg help %s\" para mostrar o texto completo de ajuda"
-
-#, python-format
-msgid "use \"hg -v help%s\" to show builtin aliases and global options"
-msgstr ""
-"use \"hg -v help%s\" para mostrar apelidos pré-definidos de comandos e "
-"opções globais"
-
-#, python-format
-msgid "use \"hg help -v %s\" to show more complete help"
-msgstr "use \"hg help -v %s\" para mostrar um texto de ajuda mais completo"
-
-#, python-format
-msgid ""
-"\n"
-"use \"hg help -c %s\" to see help for the %s command\n"
-msgstr ""
-"\n"
-"use \"hg help -c %s\" para mostrar a ajuda do comando %s\n"
-
-msgid "no help text available"
-msgstr "texto de ajuda não disponível"
-
-#, python-format
-msgid "%s extension - %s"
-msgstr "extensão %s - %s"
-
-msgid "use \"hg help extensions\" for information on enabling extensions\n"
-msgstr ""
-"use \"hg help extensions\" para informações sobre como habilitar extensões\n"
-
-#, python-format
-msgid "'%s' is provided by the following extension:"
-msgstr "'%s' é fornecido pela seguinte extensão:"
-
-msgid "Topics"
-msgstr "Tópicos"
-
-msgid "Extension Commands"
-msgstr "Comandos de Extensões"
-
-msgid "Mercurial Distributed SCM\n"
-msgstr "Sistema de controle de versão distribuído Mercurial\n"
-
 msgid "identify the specified revision"
 msgstr "identifica a revisão especificada"
 
@@ -12679,15 +12815,15 @@
 msgid "cannot use --similarity with --bypass"
 msgstr "não se pode usar --similarity com --bypass"
 
-msgid "patch is damaged or loses information"
-msgstr "o patch está danificado ou perde informação"
-
 msgid "applied to working directory"
 msgstr "aplicado no diretório de trabalho"
 
 msgid "not a Mercurial patch"
 msgstr "não é um patch do Mercurial"
 
+msgid "patch is damaged or loses information"
+msgstr "o patch está danificado ou perde informação"
+
 #. i18n: refers to a short changeset id
 #, python-format
 msgid "created %s"
@@ -12987,9 +13123,6 @@
 msgid "list files from all revisions"
 msgstr "lista os arquivos de todas as revisões"
 
-msgid "[-r REV]"
-msgstr "[-r REV]"
-
 msgid "output the current or given revision of the project manifest"
 msgstr "mostra a revisão atual ou pedida do manifesto do projeto"
 
@@ -13392,13 +13525,6 @@
 "    revisão listada por :hg:`incoming`."
 
 msgid ""
-"    If SOURCE is omitted, the 'default' path will be used.\n"
-"    See :hg:`help urls` for more information."
-msgstr ""
-"    Se ORIGEM for omitida, o caminho 'default' será usado. Veja\n"
-"    :hg:`help urls` para mais informações."
-
-msgid ""
 "    Returns 0 on success, 1 if an update had unresolved files.\n"
 "    "
 msgstr ""
@@ -14106,12 +14232,6 @@
 msgid "show only modified files"
 msgstr "mostra apenas arquivos modificados"
 
-msgid "show only added files"
-msgstr "mostra apenas arquivos adicionados"
-
-msgid "show only removed files"
-msgstr "mostra apenas arquivos removidos"
-
 msgid "show only deleted (but tracked) files"
 msgstr "mostra apenas arquivos removidos (mas rastreados)"
 
@@ -14482,8 +14602,8 @@
 msgid "not at a branch head (use -f to force)"
 msgstr "não está em uma cabeça de ramo (use -f para forçar)"
 
-msgid "null revision specified"
-msgstr "foi especificada a revisão nula"
+msgid "cannot tag null revision"
+msgstr "não é possível adicionar uma etiqueta na revisão nula"
 
 msgid "list repository tags"
 msgstr "lista as etiquetas do repositório"
@@ -15089,6 +15209,9 @@
 msgid "*** failed to import extension %s: %s\n"
 msgstr "*** falha ao importar a extensão %s: %s\n"
 
+msgid "(no help text available)"
+msgstr "(texto de ajuda não disponível)"
+
 #, python-format
 msgid "warning: error finding commands in %s\n"
 msgstr "aviso: erro ao localizar comandos em %s\n"
@@ -15438,6 +15561,18 @@
 msgstr "codificação desconhecida '%s'"
 
 msgid ""
+"``eol(style)``\n"
+"    File contains newlines of the given style (dos, unix, mac). Binary\n"
+"    files are excluded, files with mixed line endings match multiple\n"
+"    styles."
+msgstr ""
+"``eol(estilo)``\n"
+"    O arquivo contém quebras de linha no estilo especificado\n"
+"    (dos, unix, mac). Arquivos binários são excluídos; arquivos\n"
+"    contendo quebras de linha misturadas são incluídos em cada\n"
+"    um dos estilos correspondentes."
+
+msgid ""
 "``copied()``\n"
 "    File that is recorded as being copied."
 msgstr ""
@@ -15503,6 +15638,9 @@
 msgid "bad (implicit)"
 msgstr "ruim (implicitamente)"
 
+msgid "enabled extensions:"
+msgstr "extensões habilitadas:"
+
 msgid "disabled extensions:"
 msgstr "extensões desabilitadas:"
 
@@ -15573,6 +15711,126 @@
 msgid "Working with Phases"
 msgstr "Trabalhando Com Fases"
 
+#, python-format
+msgid ""
+"\n"
+"aliases: %s\n"
+msgstr ""
+"\n"
+"apelidos: %s\n"
+
+#, python-format
+msgid "shell alias for::"
+msgstr "apelido de shell para::"
+
+#, python-format
+msgid "    %s"
+msgstr "    %s"
+
+#, python-format
+msgid "alias for: hg %s"
+msgstr "apelido para: hg %s"
+
+#, python-format
+msgid "%s"
+msgstr "%s"
+
+#, python-format
+msgid "use \"hg help -e %s\" to show help for the %s extension"
+msgstr "use \"hg help -e %s\" para mostrar a ajuda para a extensão %s"
+
+msgid "options:"
+msgstr "opções:"
+
+msgid "global options:"
+msgstr "opções globais:"
+
+#, python-format
+msgid ""
+"\n"
+"use \"hg help %s\" to show the full help text\n"
+msgstr ""
+"\n"
+"use \"hg help %s\" para mostrar o texto completo de ajuda\n"
+
+#, python-format
+msgid "use \"hg -v help %s\" to show more complete help and the global options"
+msgstr ""
+"use \"hg -v help %s\" para mostrar um texto de ajuda mais completo e opções "
+"globais"
+
+#, python-format
+msgid "use \"hg -v help %s\" to show the global options"
+msgstr "use \"hg -v help %s\" para mostrar opções globais"
+
+msgid "basic commands:"
+msgstr "comandos básicos:"
+
+msgid "list of commands:"
+msgstr "lista de comandos:"
+
+msgid "no commands defined\n"
+msgstr "nenhum comando definido\n"
+
+msgid ""
+"\n"
+"additional help topics:"
+msgstr ""
+"\n"
+"tópicos adicionais de ajuda:"
+
+msgid "use \"hg help\" for the full list of commands"
+msgstr "use \"hg help\" para a lista completa de comandos"
+
+msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
+msgstr "use \"hg help\" para a lista completa de comandos ou \"hg -v\" para detalhes"
+
+#, python-format
+msgid "use \"hg help %s\" to show the full help text"
+msgstr "use \"hg help %s\" para mostrar o texto completo de ajuda"
+
+#, python-format
+msgid "use \"hg -v help%s\" to show builtin aliases and global options"
+msgstr ""
+"use \"hg -v help%s\" para mostrar apelidos pré-definidos de comandos e "
+"opções globais"
+
+#, python-format
+msgid "use \"hg help -v %s\" to show more complete help"
+msgstr "use \"hg help -v %s\" para mostrar um texto de ajuda mais completo"
+
+#, python-format
+msgid ""
+"\n"
+"use \"hg help -c %s\" to see help for the %s command\n"
+msgstr ""
+"\n"
+"use \"hg help -c %s\" para mostrar a ajuda do comando %s\n"
+
+msgid "no help text available"
+msgstr "texto de ajuda não disponível"
+
+#, python-format
+msgid "%s extension - %s"
+msgstr "extensão %s - %s"
+
+msgid "use \"hg help extensions\" for information on enabling extensions\n"
+msgstr ""
+"use \"hg help extensions\" para informações sobre como habilitar extensões\n"
+
+#, python-format
+msgid "'%s' is provided by the following extension:"
+msgstr "'%s' é fornecido pela seguinte extensão:"
+
+msgid "Topics"
+msgstr "Tópicos"
+
+msgid "Extension Commands"
+msgstr "Comandos de Extensões"
+
+msgid "Mercurial Distributed SCM\n"
+msgstr "Sistema de controle de versão distribuído Mercurial\n"
+
 msgid ""
 "The Mercurial system uses a set of configuration files to control\n"
 "aspects of its behavior."
@@ -17217,10 +17475,10 @@
 
 msgid ""
 "    [hostfingerprints]\n"
-"    hg.intevation.org = 38:76:52:7c:87:26:9a:8f:4a:f8:d3:de:08:45:3b:ea:d6:4b:ee:cc"
+"    hg.intevation.org = 44:ed:af:1f:97:11:b6:01:7a:48:45:fc:10:3c:b7:f9:d4:89:2a:9d"
 msgstr ""
 "    [hostfingerprints]\n"
-"    hg.intevation.org = 38:76:52:7c:87:26:9a:8f:4a:f8:d3:de:08:45:3b:ea:d6:4b:ee:cc"
+"    hg.intevation.org = 44:ed:af:1f:97:11:b6:01:7a:48:45:fc:10:3c:b7:f9:d4:89:2a:9d"
 
 msgid "This feature is only supported when using Python 2.6 or later."
 msgstr ""
@@ -17776,16 +18034,24 @@
 "    Padrão: inlinetime."
 
 msgid ""
+"``limit``\n"
+"    Number of lines to show. Specific to the ``ls`` instrumenting profiler.\n"
+"    Default: 30."
+msgstr ""
+"``limit``\n"
+"    Número de linhas mostradas. Específico do profiler de instrumentação ``ls``.\n"
+"    Padrão: 30."
+
+msgid ""
 "``nested``\n"
-"    Show at most this number of lines of drill-down info in a tree structure\n"
-"    after each main entry. This can help explain the difference between Total\n"
-"    and Inline.\n"
+"    Show at most this number of lines of drill-down info after each main entry.\n"
+"    This can help explain the difference between Total and Inline.\n"
 "    Specific to the ``ls`` instrumenting profiler.\n"
 "    Default: 5."
 msgstr ""
 "``nested``\n"
-"    Mostra no máximo este número de linhas de informações em uma\n"
-"    estrutura de árvore após cada entrada principal. Isto pode\n"
+"    Mostra no máximo este número de linhas de informações\n"
+"    após cada entrada principal. Isto pode\n"
 "    ajudar a explicar a diferença entre Total e Inline.\n"
 "    Específico do profiler de instrumentação ``ls``.\n"
 "    Padrão: 5."
@@ -17879,10 +18145,12 @@
 
 msgid ""
 "``port``\n"
-"    Optional. Port to connect to on mail server. Default: 25."
+"    Optional. Port to connect to on mail server. Default: 465 (if\n"
+"    ``tls`` is smtps) or 25 (otherwise)."
 msgstr ""
 "``port``\n"
-"    Opcional. Porta usada pelo servidor de emails. Padrão: 25."
+"    Opcional. Porta usada pelo servidor de emails. O valor padrão é\n"
+"    465 se ``tls`` = smtps, ou 25 caso contrário."
 
 msgid ""
 "``tls``\n"
@@ -17894,6 +18162,29 @@
 "    emails: starttls, smtps ou none. Padrão: none."
 
 msgid ""
+"``verifycert``\n"
+"    Optional. Verification for the certificate of mail server, when\n"
+"    ``tls`` is starttls or smtps. \"strict\", \"loose\" or False. For\n"
+"    \"strict\" or \"loose\", the certificate is verified as same as the\n"
+"    verification for HTTPS connections (see ``[hostfingerprints]`` and\n"
+"    ``[web] cacerts`` also). For \"strict\", sending email is also\n"
+"    aborted, if there is no configuration for mail server in\n"
+"    ``[hostfingerprints]`` and ``[web] cacerts``.  --insecure for\n"
+"    :hg:`email` overwrites this as \"loose\". Default: \"strict\"."
+msgstr ""
+"``verifycert``\n"
+"    Opcional. Verificação do certificado do servidor de emails, se\n"
+"    ``tls`` for starttls ou smtps. Pode ser \"strict\", \"loose\" ou False.\n"
+"    Para \"strict\" ou \"loose\", o certificado será verificado da mesma\n"
+"    maneira que para conexões HTTPS (veja ``[hostfingerprints]`` e\n"
+"    ``[web] cacerts``).\n"
+"    Para \"strict\", o envio de emails também será abortado, se não\n"
+"    houver configuração para o servidor de emails em\n"
+"    ``[hostfingerprints]`` e ``[web] cacerts``.\n"
+"    A opção --insecure de :hg:`email` força o valor \"loose\".\n"
+"    O padrão é \"strict\"."
+
+msgid ""
 "``username``\n"
 "    Optional. User name for authenticating with the SMTP server.\n"
 "    Default: none."
@@ -18825,10 +19116,110 @@
 
 msgid ""
 "``templates``\n"
-"    Where to find the HTML templates. Default is install path.\n"
+"    Where to find the HTML templates. Default is install path."
 msgstr ""
 "``templates``\n"
-"    Onde modelos HTML são encontrados. O padrão é o caminho de instalação.\n"
+"    Onde modelos HTML são encontrados. O padrão é o caminho de instalação."
+
+msgid ""
+"``websub``\n"
+"----------"
+msgstr ""
+"``websub``\n"
+"----------"
+
+msgid ""
+"Web substitution filter definition. You can use this section to\n"
+"define a set of regular expression substitution patterns which\n"
+"let you automatically modify the hgweb server output."
+msgstr ""
+"Definições de filtros de substituição para web. Nesta seção você\n"
+"pode definir um conjunto de substituições por expressões regulares\n"
+"para modificação automática da saída do servidor hgweb."
+
+msgid ""
+"The default hgweb templates only apply these substitution patterns\n"
+"on the revision description fields. You can apply them anywhere\n"
+"you want when you create your own templates by adding calls to the\n"
+"\"websub\" filter (usually after calling the \"escape\" filter)."
+msgstr ""
+"Os modelos padrão do hgweb aplicam estas substituições apenas\n"
+"nos campos de descrição de revisões. Ao criar seus próprios\n"
+"modelos, você pode aplicá-los em outros locais adicionando\n"
+"chamadas ao filtro \"websub\" (tipicamente após chamar o\n"
+"filtro \"escape\")."
+
+msgid ""
+"This can be used, for example, to convert issue references to links\n"
+"to your issue tracker, or to convert \"markdown-like\" syntax into\n"
+"HTML (see the examples below)."
+msgstr ""
+"Isto pode ser usado por exemplo para converter referências para um\n"
+"tíquete em links para o seu rastreador de tíquetes, ou converter\n"
+"sintaxe \"markdown\" em HTML (veja exemplos abaixo)."
+
+msgid ""
+"Each entry in this section names a substitution filter.\n"
+"The value of each entry defines the substitution expression itself.\n"
+"The websub expressions follow the old interhg extension syntax,\n"
+"which in turn imitates the Unix sed replacement syntax::"
+msgstr ""
+"Cada entrada nesta seção dá nome a um filtro de substituição.\n"
+"O valor de cada entrada define a própria expressão de substituição.\n"
+"As expressões websub usam a sintaxe da antiga extensão interhg,\n"
+"que por sua vez imita a sintaxe de substituição do comando sed do Unix::"
+
+msgid "    patternname = s/SEARCH_REGEX/REPLACE_EXPRESSION/[i]"
+msgstr "    nomedopadrao = s/EXPRESSAO_DE_BUSCA/EXPRESSAO_DE_SUBSTITUICAO/[i]"
+
+msgid ""
+"You can use any separator other than \"/\". The final \"i\" is optional\n"
+"and indicates that the search must be case insensitive."
+msgstr ""
+"Além de \"/\", você pode usar qualquer outro separador. O \"i\"\n"
+"final é opcional e indica que a busca não deve ser sensível a\n"
+"maiúsculas e minúsculas."
+
+msgid "Examples::"
+msgstr "Exemplos::"
+
+msgid ""
+"    [websub]\n"
+"    issues = s|issue(\\d+)|<a href=\"http://bts.example.org/issue\\1\">issue\\1</a>|i\n"
+"    italic = s/\\b_(\\S+)_\\b/<i>\\1<\\/i>/\n"
+"    bold = s/\\*\\b(\\S+)\\b\\*/<b>\\1<\\/b>/"
+msgstr ""
+"    [websub]\n"
+"    issues = s|issue(\\d+)|<a href=\"http://bts.example.org/issue\\1\">issue\\1</a>|i\n"
+"    italic = s/\\b_(\\S+)_\\b/<i>\\1<\\/i>/\n"
+"    bold = s/\\*\\b(\\S+)\\b\\*/<b>\\1<\\/b>/"
+
+msgid ""
+"``worker``\n"
+"----------"
+msgstr ""
+"``worker``\n"
+"----------"
+
+msgid ""
+"Parallel master/worker configuration. We currently perform working\n"
+"directory updates in parallel on Unix-like systems, which greatly\n"
+"helps performance."
+msgstr ""
+"Configuração master/worker em paralelo. Em sistemas semelhantes ao\n"
+"Unix, atualizações do diretório de trabalho são feitas com processos\n"
+"paralelos, o que melhora consideravelmente o desempenho."
+
+msgid ""
+"``numcpus``\n"
+"    Number of CPUs to use for parallel operations. Default is 4 or the\n"
+"    number of CPUs on the system, whichever is larger. A zero or\n"
+"    negative value is treated as ``use the default``.\n"
+msgstr ""
+"``numcpus``\n"
+"    Número de CPUs a serem usadas para operações em paralelo. O padrão\n"
+"    é o maior valor entre 4 e o número de CPUs no sistema. Zero ou\n"
+"    negativo indicam o uso do valor padrão.\n"
 
 msgid "Some commands allow the user to specify a date, e.g.:"
 msgstr "Alguns comandos permitem ao usuário especificar uma data, como:"
@@ -18856,7 +19247,10 @@
 "- ``2006-12-6``\n"
 "- ``12-6``\n"
 "- ``12/6``\n"
-"- ``12/6/6`` (Dec 6 2006)"
+"- ``12/6/6`` (Dec 6 2006)\n"
+"- ``today`` (midnight)\n"
+"- ``yesterday`` (midnight)\n"
+"- ``now`` - right now"
 msgstr ""
 "- ``Wed Dec 6 13:18:29 2006`` (assumido fuso horário local)\n"
 "- ``Dec 6 13:18 -0600`` (ano atual, defasagem de horário local fornecida)\n"
@@ -18870,7 +19264,10 @@
 "- ``2006-12-6``\n"
 "- ``12-6``\n"
 "- ``12/6``\n"
-"- ``12/6/6`` (Dec 6 2006)"
+"- ``12/6/6`` (Dec 6 2006)\n"
+"- ``today`` (hoje, à meia noite)\n"
+"- ``yesterday`` (ontem, à meia noite)\n"
+"- ``now`` - neste momento"
 
 msgid "Lastly, there is Mercurial's internal format:"
 msgstr "E por fim, há um formato interno do Mercurial:"
@@ -19273,7 +19670,7 @@
 
 msgid ""
 "Mercurial supports a functional language for selecting a set of\n"
-"files. "
+"files."
 msgstr ""
 "O Mercurial suporta uma linguagem funcional para selecionar um conjunto\n"
 "de arquivos."
@@ -20900,7 +21297,7 @@
 
 msgid ""
 ".. note::\n"
-"  Patterns specified in ``.hgignore`` are not rooted. \n"
+"  Patterns specified in ``.hgignore`` are not rooted.\n"
 "  Please see :hg:`help hgignore` for details."
 msgstr ""
 ".. note::\n"
@@ -21190,8 +21587,8 @@
 " - sincroniza novamente revisões de rascunho relativas a um repositório "
 "remoto::"
 
-msgid "     hg phase -fd 'outgoing(URL)' "
-msgstr "     hg phase -fd 'outgoing(URL)' "
+msgid "     hg phase -fd 'outgoing(URL)'"
+msgstr "     hg phase -fd 'outgoing(URL)'"
 
 msgid ""
 "See :hg:`help phase` for more information on manually manipulating phases.\n"
@@ -21932,26 +22329,32 @@
 msgid "In addition to filters, there are some basic built-in functions:"
 msgstr "Além de filtros, há algumas funções básicas disponíveis:"
 
+msgid "- date(date[, fmt])"
+msgstr "- date(data[, formato])"
+
+msgid "- fill(text[, width])"
+msgstr "- fill(texto[, comprimento])"
+
+msgid "- get(dict, key)"
+msgstr "- get(dicionário, chave)"
+
 msgid "- if(expr, then[, else])"
 msgstr "- if(expr, então[, senão])"
 
 msgid "- ifeq(expr, expr, then[, else])"
 msgstr "- ifeq(expr, expr, então[, senão])"
 
-msgid "- sub(pat, repl, expr)"
-msgstr "- sub(padrão, substituição, expr)"
-
 msgid "- join(list, sep)"
 msgstr "- join(lista, separador)"
 
 msgid "- label(label, expr)"
 msgstr "- label(label, expr)"
 
-msgid "- date(date[, fmt])"
-msgstr "- date(data[, formato])"
-
-msgid "- fill(text[, width])"
-msgstr "- fill(texto[, comprimento])"
+msgid "- sub(pat, repl, expr)"
+msgstr "- sub(padrão, substituição, expr)"
+
+msgid "- rstdoc(text, style)"
+msgstr "- rstdoc(texto, estilo)"
 
 msgid ""
 "Also, for any expression that returns a list, there is a list operator:"
@@ -22243,6 +22646,14 @@
 msgstr "(mesclagem de ramo, não esqueça de consolidar)\n"
 
 #, python-format
+msgid "websub: invalid pattern for %s: %s\n"
+msgstr "websub: padrão inválido para %s: %s\n"
+
+#, python-format
+msgid "websub: invalid regexp for %s: %s\n"
+msgstr "websub: expressão regular inválida para %s: %s\n"
+
+#, python-format
 msgid "config file %s not found!"
 msgstr "arquivo de configuração %s não encontrado!"
 
@@ -22540,6 +22951,12 @@
 msgstr "o destino não suporta push"
 
 #, python-format
+msgid "cannot lock source repo, skipping local %s phase update\n"
+msgstr ""
+"não é possível travar o repositório de origem, a mudança local para fase "
+"'%s' não será feita\n"
+
+#, python-format
 msgid "push includes obsolete changeset: %s!"
 msgstr "push inclui uma revisão obsoleta: %s!"
 
@@ -22559,9 +22976,6 @@
 msgid "updating %s to public failed!\n"
 msgstr "a atualização da fase de %s para pública falhou!\n"
 
-msgid "failed to push some obsolete markers!\n"
-msgstr "erro ao enviar algumas marcações de obsolescência!\n"
-
 #, python-format
 msgid "%d changesets found\n"
 msgstr "%d revisões encontradas\n"
@@ -22635,15 +23049,22 @@
 msgid "transferred %s in %.1f seconds (%s/sec)\n"
 msgstr "transferidos %s em %.1f segundos (%s/s)\n"
 
+msgid "SMTPS requires Python 2.6 or later"
+msgstr "SMTPS exige Python 2.6 ou posterior"
+
 msgid "can't use TLS: Python SSL support not installed"
 msgstr "impossível usar TLS: suporte Python a SSL não instalado"
 
+msgid "smtp.host not configured - cannot send mail"
+msgstr "servidor smtp não configurado - impossível enviar e-mail"
+
+#, python-format
+msgid "invalid smtp.verifycert configuration: %s"
+msgstr "configuração smtp.verifycert inválida: %s"
+
 msgid "(using smtps)\n"
 msgstr "(usando smtps)\n"
 
-msgid "smtp.host not configured - cannot send mail"
-msgstr "servidor smtp não configurado - impossível enviar e-mail"
-
 #, python-format
 msgid "sending mail: smtp host %s, port %s\n"
 msgstr "enviando e-mail: servidor smtp %s, porta %s\n"
@@ -22651,6 +23072,9 @@
 msgid "(using starttls)\n"
 msgstr "(usando starttls)\n"
 
+msgid "(verifying remote certificate)\n"
+msgstr "(verificando certificado remoto)\n"
+
 #, python-format
 msgid "(authenticating to mail server as %s)\n"
 msgstr "(autenticando com o servidor de e-mail como %s)\n"
@@ -22727,10 +23151,10 @@
 
 #, python-format
 msgid ""
-" local changed %s which remote deleted\n"
+"local changed %s which remote deleted\n"
 "use (c)hanged version or (d)elete?"
 msgstr ""
-" local alterou %s, que a remota removeu\n"
+"local alterou %s, que a remota removeu\n"
 "use (c) a versão alterada, ou (d) apague?"
 
 msgid "&Changed"
@@ -22750,9 +23174,6 @@
 msgid "&Deleted"
 msgstr "(&D) apagada"
 
-msgid "updating"
-msgstr "atualizando"
-
 #, python-format
 msgid "update failed to remove %s: %s!\n"
 msgstr "update falhou ao remover %s: %s!\n"
@@ -22761,6 +23182,9 @@
 msgid "getting %s\n"
 msgstr "obtendo %s\n"
 
+msgid "updating"
+msgstr "atualizando"
+
 #, python-format
 msgid "getting %s to %s\n"
 msgstr "obtendo %s para %s\n"
@@ -22845,6 +23269,9 @@
 msgid "unexpected old value"
 msgstr "valor antigo inesperado"
 
+msgid "failed to push some obsolete markers!\n"
+msgstr "erro ao enviar algumas marcações de obsolescência!\n"
+
 #, python-format
 msgid "unexpected token: %s"
 msgstr "token inesperado: %s"
@@ -23059,19 +23486,20 @@
 msgstr "adds requer um padrão"
 
 msgid ""
-"``ancestor(single, single)``\n"
-"    Greatest common ancestor of the two changesets."
-msgstr ""
-"``ancestor(revisão, revisão)``\n"
-"    Maior ancestral comum das duas revisões."
-
-#. i18n: "ancestor" is a keyword
-msgid "ancestor requires two arguments"
-msgstr "ancestor requer dois argumentos"
-
-#. i18n: "ancestor" is a keyword
-msgid "ancestor arguments must be single revisions"
-msgstr "os argumentos de ancestor devem ser revisões únicas"
+"``ancestor(*changeset)``\n"
+"    Greatest common ancestor of the changesets."
+msgstr ""
+"``ancestor(*revisões)``\n"
+"    Maior ancestral comum das revisões."
+
+msgid ""
+"    Accepts 0 or more changesets.\n"
+"    Will return empty list when passed no args.\n"
+"    Greatest common ancestor of a single changeset is that changeset."
+msgstr ""
+"    Aceita 0 ou mais revisões.\n"
+"    Se não forem passadas revisões, devolve uma lista vazia.\n"
+"    O maior ancestral comum de uma única revisão é a própria revisão."
 
 msgid ""
 "``ancestors(set)``\n"
@@ -23911,10 +24339,6 @@
 msgid "the argument to tag must be a string"
 msgstr "o argumento de tag deve ser uma string"
 
-#, python-format
-msgid "no tags exist that match '%s'"
-msgstr "não existem etiquetas que correspondem a '%s'"
-
 msgid ""
 "``unstable()``\n"
 "    Non-obsolete changesets with obsolete ancestors."
@@ -23968,6 +24392,9 @@
 msgid "%r cannot be used in a name"
 msgstr "\"%s\" não pode ser usado em um nome"
 
+msgid "cannot use an integer as a name"
+msgstr "um inteiro não pode ser usado como um nome"
+
 #, python-format
 msgid "ui.portablefilenames value is invalid ('%s')"
 msgstr "o valor de ui.portablefilenames é inválido ('%s')"
@@ -24109,6 +24536,11 @@
 "Python muito antiga)"
 
 #, python-format
+msgid "certificate for %s can't be verified (Python too old)"
+msgstr ""
+"o certificado %s não pode ser verificado (versão do Python muito antiga)"
+
+#, python-format
 msgid "warning: certificate for %s can't be verified (Python too old)\n"
 msgstr ""
 "aviso: certificado %s não pode ser verificado (versão do Python muito "
@@ -24140,6 +24572,14 @@
 "inseguro"
 
 #, python-format
+msgid "%s certificate with fingerprint %s not verified"
+msgstr ""
+"o certificado para o host %s com impressão digital %s não foi verificado"
+
+msgid "check hostfingerprints or web.cacerts config setting"
+msgstr "verifique as configurações hostfingerprints ou web.cacerts"
+
+#, python-format
 msgid ""
 "warning: %s certificate with fingerprint %s not verified (check "
 "hostfingerprints or web.cacerts config setting)\n"
@@ -24257,6 +24697,10 @@
 msgstr "trazendo sub-repositório %s de %s\n"
 
 #, python-format
+msgid "no changes made to subrepo %s since last push to %s\n"
+msgstr "nenhuma mudança no sub-repositório %s desde o último push para %s\n"
+
+#, python-format
 msgid "pushing subrepo %s to %s\n"
 msgstr "enviando sub-repositório %s para %s\n"
 
@@ -24747,6 +25191,14 @@
 msgid "filter %s expects one argument"
 msgstr "o filtro %s espera um argumento"
 
+#. i18n: "get" is a keyword
+msgid "get() expects two arguments"
+msgstr "get() exige dois argumentos"
+
+#. i18n: "get" is a keyword
+msgid "get() expects a dict as first argument"
+msgstr "get() exige um dicionário como primeiro argumento"
+
 #. i18n: "join" is a keyword
 msgid "join expects one or two arguments"
 msgstr "join exige um ou dois argumentos"
@@ -24763,6 +25215,10 @@
 msgid "ifeq expects three or four arguments"
 msgstr "ifeq espera três ou quatro argumentos"
 
+#. i18n: "rstdoc" is a keyword
+msgid "rstdoc expects two arguments"
+msgstr "rstdoc exige dois argumentos"
+
 msgid "unmatched quotes"
 msgstr "aspas não combinam"
 
@@ -24821,6 +25277,10 @@
 msgid "%s.%s is not an integer ('%s')"
 msgstr "%s.%s não é um inteiro ('%s')"
 
+#, python-format
+msgid "%s.%s is not a byte quantity ('%s')"
+msgstr "%s.%s não é uma quantidade de bytes ('%s')"
+
 msgid "enter a commit username:"
 msgstr "entre o nome do usuário para consolidação:"
 
@@ -24844,6 +25304,9 @@
 msgid "password: "
 msgstr "senha: "
 
+msgid "cannot create new union repository"
+msgstr "não é possível criar novo repositório de união"
+
 msgid "http authorization required"
 msgstr "autorização http requerida"
 
@@ -24888,6 +25351,15 @@
 msgid "negative timestamp: %d"
 msgstr "timestamp negativo: %d"
 
+msgid "now"
+msgstr "now"
+
+msgid "today"
+msgstr "today"
+
+msgid "yesterday"
+msgstr "yesterday"
+
 #, python-format
 msgid "invalid date: %r"
 msgstr "data inválida: %r"
@@ -24968,6 +25440,58 @@
 msgid "file:// URLs can only refer to localhost"
 msgstr "URLs file:// só podem se referir a localhost"
 
+#, python-format
+msgid "%.0f s"
+msgstr "%.0f s"
+
+#, python-format
+msgid "%.1f s"
+msgstr "%.1f s"
+
+#, python-format
+msgid "%.2f s"
+msgstr "%.2f s"
+
+#, python-format
+msgid "%.3f s"
+msgstr "%.3f s"
+
+#, python-format
+msgid "%.1f ms"
+msgstr "%.1f ms"
+
+#, python-format
+msgid "%.2f ms"
+msgstr "%.2f ms"
+
+#, python-format
+msgid "%.3f ms"
+msgstr "%.3f ms"
+
+#, python-format
+msgid "%.1f us"
+msgstr "%.1f us"
+
+#, python-format
+msgid "%.2f us"
+msgstr "%.2f us"
+
+#, python-format
+msgid "%.3f us"
+msgstr "%.3f us"
+
+#, python-format
+msgid "%.1f ns"
+msgstr "%.1f ns"
+
+#, python-format
+msgid "%.2f ns"
+msgstr "%.2f ns"
+
+#, python-format
+msgid "%.3f ns"
+msgstr "%.3f ns"
+
 msgid "cannot verify bundle or remote repos"
 msgstr "impossível verificar bundle ou repositório remoto"
 
@@ -25146,3 +25670,6 @@
 
 msgid "push failed:"
 msgstr "o push falhou:"
+
+msgid "number of cpus must be an integer"
+msgstr "o número de cpus deve ser um inteiro"
--- a/mercurial/bookmarks.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/mercurial/bookmarks.py	Thu May 02 12:15:41 2013 -0500
@@ -171,6 +171,7 @@
     return deleted
 
 def update(repo, parents, node):
+    deletefrom = parents
     marks = repo._bookmarks
     update = False
     cur = repo._bookmarkcurrent
@@ -180,11 +181,15 @@
     if marks[cur] in parents:
         old = repo[marks[cur]]
         new = repo[node]
+        divs = [repo[b] for b in marks
+                if b.split('@', 1)[0] == cur.split('@', 1)[0]]
+        anc = repo.changelog.ancestors([new.rev()])
+        deletefrom = [b.node() for b in divs if b.rev() in anc or b == new]
         if old.descendant(new):
             marks[cur] = new.node()
             update = True
 
-    if deletedivergent(repo, parents, cur):
+    if deletedivergent(repo, deletefrom, cur):
         update = True
 
     if update:
--- a/mercurial/commands.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/mercurial/commands.py	Thu May 02 12:15:41 2013 -0500
@@ -816,6 +816,19 @@
                     return
                 anc = repo.changelog.ancestors([repo[target].rev()])
                 bmctx = repo[marks[mark]]
+                divs = [repo[b].node() for b in marks
+                        if b.split('@', 1)[0] == mark.split('@', 1)[0]]
+
+                # allow resolving a single divergent bookmark even if moving
+                # the bookmark across branches when a revision is specified
+                # that contains a divergent bookmark
+                if bmctx.rev() not in anc and target in divs:
+                    bookmarks.deletedivergent(repo, [target], mark)
+                    return
+
+                deletefrom = [b for b in divs
+                              if repo[b].rev() in anc or b == target]
+                bookmarks.deletedivergent(repo, deletefrom, mark)
                 if bmctx.rev() in anc:
                     ui.status(_("moving bookmark '%s' forward from %s\n") %
                               (mark, short(bmctx.node())))
@@ -867,7 +880,7 @@
             tgt = scmutil.revsingle(repo, rev).node()
         checkconflict(repo, mark, force, tgt)
         marks[mark] = tgt
-        if not inactive and cur == marks[mark]:
+        if not inactive and cur == marks[mark] and not rev:
             bookmarks.setcurrent(repo, mark)
         elif cur != tgt and mark == repo._bookmarkcurrent:
             bookmarks.setcurrent(repo, None)
--- a/mercurial/config.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/mercurial/config.py	Thu May 02 12:15:41 2013 -0500
@@ -44,6 +44,7 @@
     def __init__(self, data=None):
         self._data = {}
         self._source = {}
+        self._unset = []
         if data:
             for k in data._data:
                 self._data[k] = data[k].copy()
@@ -58,6 +59,10 @@
         for d in self.sections():
             yield d
     def update(self, src):
+        for s, n in src._unset:
+            if s in self and n in self._data[s]:
+                del self._data[s][n]
+                del self._source[(s, n)]
         for s in src:
             if s not in self:
                 self._data[s] = sortdict()
@@ -173,6 +178,7 @@
                     continue
                 if self.get(section, name) is not None:
                     del self._data[section][name]
+                self._unset.append((section, name))
                 continue
 
             raise error.ParseError(l.rstrip(), ("%s:%s" % (src, line)))
--- a/mercurial/dirstate.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/mercurial/dirstate.py	Thu May 02 12:15:41 2013 -0500
@@ -59,8 +59,9 @@
     @propertycache
     def _foldmap(self):
         f = {}
-        for name in self._map:
-            f[util.normcase(name)] = name
+        for name, s in self._map.iteritems():
+            if s[0] != 'r':
+                f[util.normcase(name)] = name
         for name in self._dirs:
             f[util.normcase(name)] = name
         f['.'] = '.' # prevents useless util.fspath() invocation
--- a/mercurial/dispatch.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/mercurial/dispatch.py	Thu May 02 12:15:41 2013 -0500
@@ -485,6 +485,22 @@
 
     The values are listed in the order they appear in args.
     The options and values are removed from args.
+
+    >>> args = ['x', '--cwd', 'foo', 'y']
+    >>> _earlygetopt(['--cwd'], args), args
+    (['foo'], ['x', 'y'])
+
+    >>> args = ['x', '--cwd=bar', 'y']
+    >>> _earlygetopt(['--cwd'], args), args
+    (['bar'], ['x', 'y'])
+
+    >>> args = ['x', '-R', 'foo', 'y']
+    >>> _earlygetopt(['-R'], args), args
+    (['foo'], ['x', 'y'])
+
+    >>> args = ['x', '-Rbar', 'y']
+    >>> _earlygetopt(['-R'], args), args
+    (['bar'], ['x', 'y'])
     """
     try:
         argcount = args.index("--")
@@ -494,14 +510,22 @@
     values = []
     pos = 0
     while pos < argcount:
-        if args[pos] in aliases:
-            if pos + 1 >= argcount:
-                # ignore and let getopt report an error if there is no value
-                break
+        fullarg = arg = args[pos]
+        equals = arg.find('=')
+        if equals > -1:
+            arg = arg[:equals]
+        if arg in aliases:
             del args[pos]
-            values.append(args.pop(pos))
-            argcount -= 2
-        elif args[pos][:2] in shortopts:
+            if equals > -1:
+                values.append(fullarg[equals + 1:])
+                argcount -= 1
+            else:
+                if pos + 1 >= argcount:
+                    # ignore and let getopt report an error if there is no value
+                    break
+                values.append(args.pop(pos))
+                argcount -= 2
+        elif arg[:2] in shortopts:
             # short option can have no following space, e.g. hg log -Rfoo
             values.append(args.pop(pos)[2:])
             argcount -= 1
--- a/mercurial/hgweb/webutil.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/mercurial/hgweb/webutil.py	Thu May 02 12:15:41 2013 -0500
@@ -51,11 +51,14 @@
 
     def __nonzero__(self):
         """return True if any revision to navigate over"""
+        return self._first() is not None
+
+    def _first(self):
+        """return the minimum non-filtered changeset or None"""
         try:
-            self._revlog.node(0)
-            return True
-        except error.RepoError:
-            return False
+            return iter(self._revlog).next()
+        except StopIteration:
+            return None
 
     def hex(self, rev):
         return hex(self._revlog.node(rev))
@@ -85,7 +88,8 @@
             targets.append(pos - f)
         targets.sort()
 
-        navbefore = [("(0)", self.hex(0))]
+        first = self._first()
+        navbefore = [("(%i)" % first, self.hex(first))]
         navafter = []
         for rev in targets:
             if rev not in self._revlog:
--- a/mercurial/localrepo.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/mercurial/localrepo.py	Thu May 02 12:15:41 2013 -0500
@@ -1762,8 +1762,31 @@
         if not remote.canpush():
             raise util.Abort(_("destination does not support push"))
         unfi = self.unfiltered()
+        def localphasemove(nodes, phase=phases.public):
+            """move <nodes> to <phase> in the local source repo"""
+            if locallock is not None:
+                phases.advanceboundary(self, phase, nodes)
+            else:
+                # repo is not locked, do not change any phases!
+                # Informs the user that phases should have been moved when
+                # applicable.
+                actualmoves = [n for n in nodes if phase < self[n].phase()]
+                phasestr = phases.phasenames[phase]
+                if actualmoves:
+                    self.ui.status(_('cannot lock source repo, skipping local'
+                                     ' %s phase update\n') % phasestr)
         # get local lock as we might write phase data
-        locallock = self.lock()
+        locallock = None
+        try:
+            locallock = self.lock()
+        except IOError, err:
+            if err.errno != errno.EACCES:
+                raise
+            # source repo cannot be locked.
+            # We do not abort the push, but just disable the local phase
+            # synchronisation.
+            msg = 'cannot lock source repository: %s\n' % err
+            self.ui.debug(msg)
         try:
             self.checkpush(force, revs)
             lock = None
@@ -1883,17 +1906,17 @@
                     # on the remote.
                     remotephases = {'publishing': 'True'}
                 if not remotephases: # old server or public only repo
-                    phases.advanceboundary(self, phases.public, cheads)
+                    localphasemove(cheads)
                     # don't push any phase data as there is nothing to push
                 else:
                     ana = phases.analyzeremotephases(self, cheads, remotephases)
                     pheads, droots = ana
                     ### Apply remote phase on local
                     if remotephases.get('publishing', False):
-                        phases.advanceboundary(self, phases.public, cheads)
+                        localphasemove(cheads)
                     else: # publish = False
-                        phases.advanceboundary(self, phases.public, pheads)
-                        phases.advanceboundary(self, phases.draft, cheads)
+                        localphasemove(pheads)
+                        localphasemove(cheads, phases.draft)
                     ### Apply local phase on remote
 
                     # Get the list of all revs draft on remote by public here.
@@ -1915,7 +1938,8 @@
                 if lock is not None:
                     lock.release()
         finally:
-            locallock.release()
+            if locallock is not None:
+                locallock.release()
 
         self.ui.debug("checking for updated bookmarks\n")
         rb = remote.listkeys('bookmarks')
--- a/mercurial/match.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/mercurial/match.py	Thu May 02 12:15:41 2013 -0500
@@ -344,7 +344,7 @@
             r.append('/'.join(root) or '.')
         elif kind in ('relpath', 'path'):
             r.append(name or '.')
-        elif kind == 'relglob':
+        else: # relglob, re, relre
             r.append('.')
     return r
 
--- a/mercurial/merge.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/mercurial/merge.py	Thu May 02 12:15:41 2013 -0500
@@ -110,54 +110,6 @@
         raise util.Abort(_("untracked files in working directory differ "
                            "from files in requested revision"))
 
-def _remains(f, m, ma, workingctx=False):
-    """check whether specified file remains after merge.
-
-    It is assumed that specified file is not contained in the manifest
-    of the other context.
-    """
-    if f in ma:
-        n = m[f]
-        if n != ma[f]:
-            return True # because it is changed locally
-            # even though it doesn't remain, if "remote deleted" is
-            # chosen in manifestmerge()
-        elif workingctx and n[20:] == "a":
-            return True # because it is added locally (linear merge specific)
-        else:
-            return False # because it is removed remotely
-    else:
-        return True # because it is added locally
-
-def _checkcollision(mctx, extractxs):
-    "check for case folding collisions in the destination context"
-    folded = {}
-    for fn in mctx:
-        fold = util.normcase(fn)
-        if fold in folded:
-            raise util.Abort(_("case-folding collision between %s and %s")
-                             % (fn, folded[fold]))
-        folded[fold] = fn
-
-    if extractxs:
-        wctx, actx = extractxs
-        # class to delay looking up copy mapping
-        class pathcopies(object):
-            @util.propertycache
-            def map(self):
-                # {dst@mctx: src@wctx} copy mapping
-                return copies.pathcopies(wctx, mctx)
-        pc = pathcopies()
-
-        for fn in wctx:
-            fold = util.normcase(fn)
-            mfn = folded.get(fold, None)
-            if (mfn and mfn != fn and pc.map.get(mfn) != fn and
-                _remains(fn, wctx.manifest(), actx.manifest(), True) and
-                _remains(mfn, mctx.manifest(), actx.manifest())):
-                raise util.Abort(_("case-folding collision between %s and %s")
-                                 % (mfn, fn))
-
 def _forgetremoved(wctx, mctx, branchmerge):
     """
     Forget removed files
@@ -186,6 +138,62 @@
 
     return actions
 
+def _checkcollision(repo, wmf, actions, prompts):
+    # build provisional merged manifest up
+    pmmf = set(wmf)
+
+    def addop(f, args):
+        pmmf.add(f)
+    def removeop(f, args):
+        pmmf.discard(f)
+    def nop(f, args):
+        pass
+
+    def renameop(f, args):
+        f2, fd, flags = args
+        if f:
+            pmmf.discard(f)
+        pmmf.add(fd)
+    def mergeop(f, args):
+        f2, fd, move = args
+        if move:
+            pmmf.discard(f)
+        pmmf.add(fd)
+
+    opmap = {
+        "a": addop,
+        "d": renameop,
+        "dr": nop,
+        "e": nop,
+        "f": addop, # untracked file should be kept in working directory
+        "g": addop,
+        "m": mergeop,
+        "r": removeop,
+        "rd": nop,
+    }
+    for f, m, args, msg in actions:
+        op = opmap.get(m)
+        assert op, m
+        op(f, args)
+
+    opmap = {
+        "cd": addop,
+        "dc": addop,
+    }
+    for f, m in prompts:
+        op = opmap.get(m)
+        assert op, m
+        op(f, None)
+
+    # check case-folding collision in provisional merged manifest
+    foldmap = {}
+    for f in sorted(pmmf):
+        fold = util.normcase(f)
+        if fold in foldmap:
+            raise util.Abort(_("case-folding collision between %s and %s")
+                             % (f, foldmap[fold]))
+        foldmap[fold] = f
+
 def manifestmerge(repo, wctx, p2, pa, branchmerge, force, partial,
                   acceptremote=False):
     """
@@ -342,6 +350,14 @@
         raise util.Abort(_("untracked files in working directory differ "
                            "from files in requested revision"))
 
+    if not util.checkcase(repo.path):
+        # check collision between files only in p2 for clean update
+        if (not branchmerge and
+            (force or not wctx.dirty(missing=True, branch=False))):
+            _checkcollision(repo, m2, [], [])
+        else:
+            _checkcollision(repo, m1, actions, prompts)
+
     for f, m in sorted(prompts):
         if m == "cd":
             if acceptremote:
@@ -455,8 +471,10 @@
 
     numupdates = len(actions)
     workeractions = [a for a in actions if a[1] in 'gr']
-    updated = len([a for a in workeractions if a[1] == 'g'])
-    removed = len([a for a in workeractions if a[1] == 'r'])
+    updateactions = [a for a in workeractions if a[1] == 'g']
+    updated = len(updateactions)
+    removeactions = [a for a in workeractions if a[1] == 'r']
+    removed = len(removeactions)
     actions = [a for a in actions if a[1] not in 'gr']
 
     hgsub = [a[1] for a in workeractions if a[0] == '.hgsubstate']
@@ -465,7 +483,13 @@
 
     z = 0
     prog = worker.worker(repo.ui, 0.001, getremove, (repo, mctx, overwrite),
-                         workeractions)
+                         removeactions)
+    for i, item in prog:
+        z += i
+        repo.ui.progress(_('updating'), z, item=item, total=numupdates,
+                         unit=_('files'))
+    prog = worker.worker(repo.ui, 0.001, getremove, (repo, mctx, overwrite),
+                         updateactions)
     for i, item in prog:
         z += i
         repo.ui.progress(_('updating'), z, item=item, total=numupdates,
@@ -533,14 +557,6 @@
                      acceptremote=False):
     "Calculate the actions needed to merge mctx into tctx"
     actions = []
-    folding = not util.checkcase(repo.path)
-    if folding:
-        # collision check is not needed for clean update
-        if (not branchmerge and
-            (force or not tctx.dirty(missing=True, branch=False))):
-            _checkcollision(mctx, None)
-        else:
-            _checkcollision(mctx, (tctx, ancestor))
     actions += manifestmerge(repo, tctx, mctx,
                              ancestor,
                              branchmerge, force,
--- a/mercurial/scmutil.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/mercurial/scmutil.py	Thu May 02 12:15:41 2013 -0500
@@ -41,6 +41,8 @@
         ui.status(_("no changes found\n"))
 
 def checknewlabel(repo, lbl, kind):
+    # Do not use the "kind" parameter in ui output.
+    # It makes strings difficult to translate.
     if lbl in ['tip', '.', 'null']:
         raise util.Abort(_("the name '%s' is reserved") % lbl)
     for c in (':', '\0', '\n', '\r'):
@@ -48,7 +50,7 @@
             raise util.Abort(_("%r cannot be used in a name") % c)
     try:
         int(lbl)
-        raise util.Abort(_("a %s cannot have an integer as its name") % kind)
+        raise util.Abort(_("cannot use an integer as a name"))
     except ValueError:
         pass
 
--- a/mercurial/tags.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/mercurial/tags.py	Thu May 02 12:15:41 2013 -0500
@@ -132,9 +132,10 @@
         if (bnode != anode and anode in bhist and
             (bnode not in ahist or len(bhist) > len(ahist))):
             anode = bnode
+        else:
+            tagtypes[name] = tagtype
         ahist.extend([n for n in bhist if n not in ahist])
         alltags[name] = anode, ahist
-        tagtypes[name] = tagtype
 
 
 # The tag cache only stores info about heads, not the tag contents
--- a/mercurial/templater.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/mercurial/templater.py	Thu May 02 12:15:41 2013 -0500
@@ -299,7 +299,7 @@
     text = stringify(args[0][0](context, mapping, args[0][1]))
     style = stringify(args[1][0](context, mapping, args[1][1]))
 
-    return minirst.format(text, style=style)
+    return minirst.format(text, style=style, keep=['verbose'])
 
 methods = {
     "string": lambda e, c: (runstring, e[1]),
--- a/mercurial/templates/static/style-gitweb.css	Thu Apr 18 16:17:59 2013 -0700
+++ b/mercurial/templates/static/style-gitweb.css	Thu May 02 12:15:41 2013 -0500
@@ -1,4 +1,4 @@
-body { font-family: sans-serif; font-size: 12px; margin:0px; border:solid #d9d8d1; border-width:1px; margin:10px; }
+body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; }
 a { color:#0000cc; }
 a:hover, a:visited, a:active { color:#880000; }
 div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
--- a/mercurial/templates/static/style.css	Thu Apr 18 16:17:59 2013 -0700
+++ b/mercurial/templates/static/style.css	Thu May 02 12:15:41 2013 -0500
@@ -14,13 +14,13 @@
   background-color: #666;
   padding: 2pt;
   color: white;
-  font-family: sans;
+  font-family: sans-serif;
   font-weight: bold;
 }
 .navigate a {
   background-color: #ccc;
   padding: 2pt;
-  font-family: sans;
+  font-family: sans-serif;
   color: black;
 }
 
--- a/mercurial/ui.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/mercurial/ui.py	Thu May 02 12:15:41 2013 -0500
@@ -663,7 +663,8 @@
         if not self.interactive():
             return default
         try:
-            return getpass.getpass(prompt or _('password: '))
+            self.write(self.label(prompt or _('password: '), 'ui.prompt'))
+            return getpass.getpass('')
         except EOFError:
             raise util.Abort(_('response expected'))
     def status(self, *msg, **opts):
--- a/tests/hghave.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/hghave.py	Thu May 02 12:15:41 2013 -0500
@@ -274,6 +274,9 @@
 def has_msys():
     return os.getenv('MSYSTEM')
 
+def has_aix():
+    return sys.platform.startswith("aix")
+
 checks = {
     "true": (lambda: True, "yak shaving"),
     "false": (lambda: False, "nail clipper"),
@@ -314,4 +317,5 @@
     "unix-permissions": (has_unix_permissions, "unix-style permissions"),
     "windows": (has_windows, "Windows"),
     "msys": (has_msys, "Windows with MSYS"),
+    "aix": (has_aix, "AIX"),
 }
--- a/tests/test-blackbox.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-blackbox.t	Thu May 02 12:15:41 2013 -0500
@@ -64,6 +64,8 @@
 
   $ hg rollback
   repository tip rolled back to revision 1 (undo pull)
+
+#if unix-permissions
   $ chmod 000 .hg/blackbox.log
   $ hg --debug incoming
   warning: cannot write to blackbox.log: Permission denied
@@ -85,6 +87,7 @@
   c
   
   
+#endif
   $ hg pull
   pulling from $TESTTMP/blackboxtest (glob)
   searching for changes
@@ -95,12 +98,13 @@
   (run 'hg update' to get a working copy)
 
 a failure reading from the log is fine
-
+#if unix-permissions
   $ hg blackbox -l 3
   abort: Permission denied: $TESTTMP/blackboxtest2/.hg/blackbox.log
   [255]
 
   $ chmod 600 .hg/blackbox.log
+#endif
 
 backup bundles get logged
 
--- a/tests/test-bookmarks-current.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-bookmarks-current.t	Thu May 02 12:15:41 2013 -0500
@@ -91,14 +91,19 @@
   $ hg update tip
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
-set bookmark Y using -r .
+set bookmark Y using -r . but make sure that the active
+bookmark is not activated
 
   $ hg bookmark -r . Y
 
-list bookmarks
+list bookmarks, Y should not be active
 
   $ hg bookmark
-   * Y                         0:719295282060
+     Y                         0:719295282060
+
+now, activate Y
+
+  $ hg up -q Y
 
 set bookmark Z using -i
 
@@ -133,21 +138,27 @@
      X                         0:719295282060
      Z                         0:719295282060
 
-bare update moves the active bookmark forward
+bare update moves the active bookmark forward and clear the divergent bookmarks
 
   $ echo a > a
   $ hg ci -Am1
   adding a
+  $ echo b >> a
+  $ hg ci -Am2
+  $ hg bookmark X@1 -r 1
+  $ hg bookmark X@2 -r 2
   $ hg update X
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg bookmarks
    * X                         0:719295282060
+     X@1                       1:cc586d725fbe
+     X@2                       2:49e1c4e84c58
      Z                         0:719295282060
   $ hg update
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   updating bookmark X
   $ hg bookmarks
-   * X                         1:cc586d725fbe
+   * X                         2:49e1c4e84c58
      Z                         0:719295282060
 
 test deleting .hg/bookmarks.current when explicitly updating
--- a/tests/test-bookmarks-rebase.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-bookmarks-rebase.t	Thu May 02 12:15:41 2013 -0500
@@ -26,6 +26,7 @@
 
   $ hg bookmark -r 1 one
   $ hg bookmark -r 3 two
+  $ hg up -q two
 
 bookmark list
 
--- a/tests/test-bookmarks.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-bookmarks.t	Thu May 02 12:15:41 2013 -0500
@@ -157,6 +157,7 @@
 bookmarks from a revset
   $ hg bookmark -r '.^1' REVSET
   $ hg bookmark -r ':tip' TIP
+  $ hg up -q TIP
   $ hg bookmarks
      REVSET                    0:f7b1eb17ad24
    * TIP                       2:db815d6d32e6
@@ -260,7 +261,7 @@
 bookmark with integer name
 
   $ hg bookmark 10
-  abort: a bookmark cannot have an integer as its name
+  abort: cannot use an integer as a name
   [255]
 
 incompatible options
@@ -590,3 +591,40 @@
      date:        Thu Jan 01 00:00:00 1970 +0000
      summary:     0
   
+
+test clearing divergent bookmarks of linear ancestors
+
+  $ hg bookmark Z -r 0
+  $ hg bookmark Z@1 -r 1
+  $ hg bookmark Z@2 -r 2
+  $ hg bookmark Z@3 -r 3
+  $ hg book
+     Z                         0:f7b1eb17ad24
+     Z@1                       1:925d80f479bb
+     Z@2                       2:db815d6d32e6
+     Z@3                       3:9ba5f110a0b3
+   * four                      3:9ba5f110a0b3
+     should-end-on-two         2:db815d6d32e6
+  $ hg bookmark Z
+  moving bookmark 'Z' forward from f7b1eb17ad24
+  $ hg book
+   * Z                         3:9ba5f110a0b3
+     Z@1                       1:925d80f479bb
+     four                      3:9ba5f110a0b3
+     should-end-on-two         2:db815d6d32e6
+
+test clearing only a single divergent bookmark across branches
+
+  $ hg book foo -r 1
+  $ hg book foo@1 -r 0
+  $ hg book foo@2 -r 2
+  $ hg book foo@3 -r 3
+  $ hg book foo -r foo@3
+  $ hg book
+   * Z                         3:9ba5f110a0b3
+     Z@1                       1:925d80f479bb
+     foo                       3:9ba5f110a0b3
+     foo@1                     0:f7b1eb17ad24
+     foo@2                     2:db815d6d32e6
+     four                      3:9ba5f110a0b3
+     should-end-on-two         2:db815d6d32e6
--- a/tests/test-casecollision-merge.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-casecollision-merge.t	Thu May 02 12:15:41 2013 -0500
@@ -16,38 +16,110 @@
 
   $ echo a > a
   $ hg add a
+  $ echo b > b
+  $ hg add b
   $ hg commit -m '#0'
+  $ hg tag -l A
   $ hg rename a tmp
   $ hg rename tmp A
   $ hg commit -m '#1'
-  $ hg update 0
-  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ echo 'modified at #2' > a
+  $ hg tag -l B
+  $ hg update -q 0
+  $ touch x
+  $ hg add x
   $ hg commit -m '#2'
   created new head
+  $ hg tag -l C
 
-  $ hg merge
-  merging a and A to A
-  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
-  (branch merge, don't forget to commit)
+  $ hg merge -q
+  $ hg status -A
+  M A
+  R a
+  C b
+  C x
+
+  $ hg update -q --clean 1
+  $ hg merge -q
+  $ hg status -A
+  M x
+  C A
+  C b
+  $ hg commit -m '(D)'
+  $ hg tag -l D
+
+additional test for issue3452:
+
+| this assumes the history below.
+|
+|  (A) -- (C) -- (E) -------
+|      \      \             \
+|       \      \             \
+|         (B) -- (D) -- (F) -- (G)
+|
+|   A: add file 'a'
+|   B: rename from 'a' to 'A'
+|   C: add 'x' (or operation other than modification of 'a')
+|   D: merge C into B
+|   E: modify 'a'
+|   F: modify 'A'
+|   G: merge E into F
+|
+| issue3452 occurs when (B) is recorded before (C)
+
+  $ hg update -q --clean C
+  $ echo "modify 'a' at (E)" > a
+  $ echo "modify 'b' at (E)" > b
+  $ hg commit -m '(E)'
+  created new head
+  $ hg tag -l E
+
+  $ hg update -q --clean D
+  $ echo "modify 'A' at (F)" > A
+  $ hg commit -m '(F)'
+  $ hg tag -l F
+
+  $ hg merge -q --tool internal:other E
   $ hg status -A
   M A
     a
-  R a
+  M b
+  C x
   $ cat A
-  modified at #2
+  modify 'a' at (E)
+
+test also the case that (B) is recorded after (C), to prevent
+regression by changes in the future.
+
+to avoid unexpected (successful) behavior by filelog unification,
+target file is not 'a'/'A' but 'b'/'B' in this case.
+
+  $ hg update -q --clean A
+  $ hg rename b tmp
+  $ hg rename tmp B
+  $ hg commit -m '(B1)'
+  created new head
+  $ hg tag -l B1
 
-  $ hg update --clean 1
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg merge
-  merging A and a to A
-  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
-  (branch merge, don't forget to commit)
+  $ hg merge -q C
   $ hg status -A
-  M A
-    a
-  $ cat A
-  modified at #2
+  M x
+  C B
+  C a
+  $ hg commit -m '(D1)'
+  $ hg tag -l D1
+
+  $ echo "modify 'B' at (F1)" > B
+  $ hg commit -m '(F1)'
+  $ hg tag -l F1
+
+  $ hg merge -q --tool internal:other E
+  $ hg status -A
+  M B
+    b
+  M a
+  C x
+  $ cat B
+  modify 'b' at (E)
 
   $ cd ..
 
@@ -74,7 +146,7 @@
   $ hg commit -m '#4'
 
   $ hg merge
-  abort: case-folding collision between A and a
+  abort: case-folding collision between a and A
   [255]
   $ hg parents --template '{rev}\n'
   4
--- a/tests/test-config-case.t	Thu Apr 18 16:17:59 2013 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-hide outer repo
-  $ hg init
-
-  $ echo '[Section]' >> $HGRCPATH
-  $ echo 'KeY = Case Sensitive' >> $HGRCPATH
-  $ echo 'key = lower case' >> $HGRCPATH
-
-  $ hg showconfig Section
-  Section.KeY=Case Sensitive
-  Section.key=lower case
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-config.t	Thu May 02 12:15:41 2013 -0500
@@ -0,0 +1,44 @@
+hide outer repo
+  $ hg init
+
+Test case sensitive configuration
+
+  $ echo '[Section]' >> $HGRCPATH
+  $ echo 'KeY = Case Sensitive' >> $HGRCPATH
+  $ echo 'key = lower case' >> $HGRCPATH
+
+  $ hg showconfig Section
+  Section.KeY=Case Sensitive
+  Section.key=lower case
+
+Test "%unset"
+
+  $ cat >> $HGRCPATH <<EOF
+  > [unsettest]
+  > local-hgrcpath = should be unset (HGRCPATH)
+  > %unset local-hgrcpath
+  > 
+  > global = should be unset (HGRCPATH)
+  > 
+  > both = should be unset (HGRCPATH)
+  > 
+  > set-after-unset = should be unset (HGRCPATH)
+  > EOF
+
+  $ cat >> .hg/hgrc <<EOF
+  > [unsettest]
+  > local-hgrc = should be unset (.hg/hgrc)
+  > %unset local-hgrc
+  > 
+  > %unset global
+  > 
+  > both = should be unset (.hg/hgrc)
+  > %unset both
+  > 
+  > set-after-unset = should be unset (.hg/hgrc)
+  > %unset set-after-unset
+  > set-after-unset = should be set (.hg/hgrc)
+  > EOF
+
+  $ hg showconfig unsettest
+  unsettest.set-after-unset=should be set (.hg/hgrc)
--- a/tests/test-dirstate.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-dirstate.t	Thu May 02 12:15:41 2013 -0500
@@ -55,8 +55,9 @@
 
 Test modulo storage/comparison of absurd dates:
 
+#if no-aix
   $ touch -t 195001011200 a
   $ hg st
   $ hg debugstate
   n 644          2 2018-01-19 15:14:08 a
-
+#endif
--- a/tests/test-doctest.py	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-doctest.py	Thu May 02 12:15:41 2013 -0500
@@ -27,6 +27,9 @@
 import mercurial.url
 doctest.testmod(mercurial.url)
 
+import mercurial.dispatch
+doctest.testmod(mercurial.dispatch)
+
 import mercurial.encoding
 doctest.testmod(mercurial.encoding)
 
--- a/tests/test-help.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-help.t	Thu May 02 12:15:41 2013 -0500
@@ -1525,6 +1525,20 @@
   If no names are given, add all files to the repository.
   </p>
   <p>
+  An example showing how new (unknown) files are added
+  automatically by &quot;hg add&quot;:
+  </p>
+  <pre>
+  \$ ls (re)
+  foo.c
+  \$ hg status (re)
+  ? foo.c
+  \$ hg add (re)
+  adding foo.c
+  \$ hg status (re)
+  A foo.c
+  </pre>
+  <p>
   Returns 0 if all files are successfully added.
   </p>
   <p>
@@ -1677,6 +1691,50 @@
   files, see &quot;hg forget&quot;.
   </p>
   <p>
+  -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 from the working directory.
+  </p>
+  <p>
+  The following table details the behavior of remove for different
+  file states (columns) and option combinations (rows). The file
+  states are Added [A], Clean [C], Modified [M] and Missing [!]
+  (as reported by &quot;hg status&quot;). The actions are Warn, Remove
+  (from branch) and Delete (from disk):
+  </p>
+  <table>
+  <tr><td></td>
+  <td>A</td>
+  <td>C</td>
+  <td>M</td>
+  <td>!</td></tr>
+  <tr><td>none</td>
+  <td>W</td>
+  <td>RD</td>
+  <td>W</td>
+  <td>R</td></tr>
+  <tr><td>-f</td>
+  <td>R</td>
+  <td>RD</td>
+  <td>RD</td>
+  <td>R</td></tr>
+  <tr><td>-A</td>
+  <td>W</td>
+  <td>W</td>
+  <td>W</td>
+  <td>R</td></tr>
+  <tr><td>-Af</td>
+  <td>R</td>
+  <td>R</td>
+  <td>R</td>
+  <td>R</td></tr>
+  </table>
+  <p>
+  Note that remove never deletes files in Added [A] state from the
+  working directory, not even if option --force is specified.
+  </p>
+  <p>
   Returns 0 on success, 1 if any warnings encountered.
   </p>
   <p>
--- a/tests/test-hgweb-commands.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-hgweb-commands.t	Thu May 02 12:15:41 2013 -0500
@@ -1178,13 +1178,13 @@
     background-color: #666;
     padding: 2pt;
     color: white;
-    font-family: sans;
+    font-family: sans-serif;
     font-weight: bold;
   }
   .navigate a {
     background-color: #ccc;
     padding: 2pt;
-    font-family: sans;
+    font-family: sans-serif;
     color: black;
   }
   
@@ -1436,4 +1436,99 @@
   
   error: unknown revision '4'
 
+filtered '0' changeset
+
+(create new root)
+  $ hg up null
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ echo 'babar' > jungle
+  $ hg add jungle
+  $ hg ci -m 'Babar is in the jungle!'
+  created new head
+  $ hg graft 0::
+  grafting revision 0
+  grafting revision 1
+  grafting revision 2
+  grafting revision 3
+  grafting revision 4
+  grafting revision 5
+(turning the initial root secret (filtered))
+  $ hg phase --force --secret 0
+  $ PATH_INFO=/graph/; export PATH_INFO
+  $ QUERY_STRING=''
+  $ python hgweb.cgi | grep Status
+  Status: 200 Script output follows\r (esc)
+(check rendered revision)
+  $ QUERY_STRING='style=raw'
+  $ python hgweb.cgi | grep -v ETag
+  Status: 200 Script output follows\r (esc)
+  Content-Type: text/plain; charset=ascii\r (esc)
+  \r (esc)
+  
+  # HG graph
+  # Node ID 1d9b947fef1fbb382a95c11a8f5a67e9a10b5026
+  # Rows shown 7
+  
+  changeset:   1d9b947fef1f
+  user:        test
+  date:        1970-01-01
+  summary:     5
+  branch:      default
+  tag:         tip
+  
+  node:        (0, 0) (color 1)
+  edge:        (0, 0) -> (0, 1) (color 1)
+  
+  changeset:   0cfd435fd222
+  user:        test
+  date:        1970-01-01
+  summary:     4
+  
+  node:        (0, 1) (color 1)
+  edge:        (0, 1) -> (0, 2) (color 1)
+  
+  changeset:   6768b9939e82
+  user:        test
+  date:        1970-01-01
+  summary:     3
+  
+  node:        (0, 2) (color 1)
+  edge:        (0, 2) -> (0, 3) (color 1)
+  
+  changeset:   05b0497fd125
+  user:        test
+  date:        1970-01-01
+  summary:     2
+  
+  node:        (0, 3) (color 1)
+  edge:        (0, 3) -> (0, 4) (color 1)
+  
+  changeset:   9c102df67cfb
+  user:        test
+  date:        1970-01-01
+  summary:     1
+  
+  node:        (0, 4) (color 1)
+  edge:        (0, 4) -> (0, 5) (color 1)
+  
+  changeset:   3ebcd7db11bf
+  user:        test
+  date:        1970-01-01
+  summary:     0
+  
+  node:        (0, 5) (color 1)
+  edge:        (0, 5) -> (0, 6) (color 1)
+  
+  changeset:   c5e9bd96ae01
+  user:        test
+  date:        1970-01-01
+  summary:     Babar is in the jungle!
+  
+  node:        (0, 6) (color 1)
+  
+  
+
+
+
   $ cd ..
+
--- a/tests/test-hgweb-empty.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-hgweb-empty.t	Thu May 02 12:15:41 2013 -0500
@@ -70,7 +70,7 @@
   <div class="navigate">
   <a href="/shortlog/-1?revcount=30">less</a>
   <a href="/shortlog/-1?revcount=120">more</a>
-  | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a> 
+  | rev -1: 
   </div>
   
   <table class="bigtable">
@@ -85,7 +85,7 @@
   <div class="navigate">
   <a href="/shortlog/-1?revcount=30">less</a>
   <a href="/shortlog/-1?revcount=120">more</a>
-  | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a> 
+  | rev -1: 
   </div>
   
   </div>
@@ -97,6 +97,8 @@
   </body>
   </html>
   
+  $ echo babar
+  babar
   $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log')
   200 Script output follows
   
@@ -161,7 +163,7 @@
   <div class="navigate">
   <a href="/shortlog/-1?revcount=5">less</a>
   <a href="/shortlog/-1?revcount=20">more</a>
-  | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a> 
+  | rev -1: 
   </div>
   
   <table class="bigtable">
@@ -176,7 +178,7 @@
   <div class="navigate">
   <a href="/shortlog/-1?revcount=5">less</a>
   <a href="/shortlog/-1?revcount=20">more</a>
-  | rev -1: <a href="/shortlog/000000000000">(0)</a> <a href="/shortlog/tip">tip</a> 
+  | rev -1: 
   </div>
   
   </div>
@@ -250,7 +252,7 @@
   <div class="navigate">
   <a href="/graph/-1?revcount=30">less</a>
   <a href="/graph/-1?revcount=120">more</a>
-  | rev -1: <a href="/graph/000000000000">(0)</a> <a href="/graph/tip">tip</a> 
+  | rev -1: 
   </div>
   
   <noscript><p>The revision graph only works with JavaScript-enabled browsers.</p></noscript>
@@ -320,7 +322,7 @@
   <div class="navigate">
   <a href="/graph/-1?revcount=30">less</a>
   <a href="/graph/-1?revcount=120">more</a>
-  | rev -1: <a href="/graph/000000000000">(0)</a> <a href="/graph/tip">tip</a> 
+  | rev -1: 
   </div>
   
   </div>
--- a/tests/test-hgweb.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-hgweb.t	Thu May 02 12:15:41 2013 -0500
@@ -312,10 +312,10 @@
 
   $ "$TESTDIR/get-with-headers.py" --twice localhost:$HGPORT 'static/style-gitweb.css' - date etag server
   200 Script output follows
-  content-length: 4619
+  content-length: 4607
   content-type: text/css
   
-  body { font-family: sans-serif; font-size: 12px; margin:0px; border:solid #d9d8d1; border-width:1px; margin:10px; }
+  body { font-family: sans-serif; font-size: 12px; border:solid #d9d8d1; border-width:1px; margin:10px; }
   a { color:#0000cc; }
   a:hover, a:visited, a:active { color:#880000; }
   div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
--- a/tests/test-issue672.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-issue672.t	Thu May 02 12:15:41 2013 -0500
@@ -37,6 +37,7 @@
    1: other deleted -> r
    1a: remote created -> g
   removing 1
+  updating: 1 1/2 files (50.00%)
   getting 1a
   updating: 1a 2/2 files (100.00%)
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
--- a/tests/test-largefiles.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-largefiles.t	Thu May 02 12:15:41 2013 -0500
@@ -180,34 +180,6 @@
   $ cat sub/large4
   large22
 
-Test repo method wrapping detection
-
-  $ cat > $TESTTMP/wrapping1.py <<EOF
-  > from hgext import largefiles
-  > def reposetup(ui, repo):
-  >     class derived(repo.__class__):
-  >         def push(self, *args, **kwargs):
-  >             return super(derived, self).push(*args, **kwargs)
-  >     repo.__class__ = derived
-  >     largefiles.reposetup(ui, repo)
-  > uisetup = largefiles.uisetup
-  > EOF
-  $ hg --config extensions.largefiles=$TESTTMP/wrapping1.py status
-  largefiles: repo method 'push' appears to have already been wrapped by another extension: largefiles may behave incorrectly
-
-  $ cat > $TESTTMP/wrapping2.py <<EOF
-  > from hgext import largefiles
-  > def reposetup(ui, repo):
-  >     orgpush = repo.push
-  >     def push(*args, **kwargs):
-  >         return orgpush(*args, **kwargs)
-  >     repo.push = push
-  >     largefiles.reposetup(ui, repo)
-  > uisetup = largefiles.uisetup
-  > EOF
-  $ hg --config extensions.largefiles=$TESTTMP/wrapping2.py status
-  largefiles: repo method 'push' appears to have already been wrapped by another extension: largefiles may behave incorrectly
-
 Test copies and moves from a directory other than root (issue3516)
 
   $ cd ..
--- a/tests/test-mq-strip.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-mq-strip.t	Thu May 02 12:15:41 2013 -0500
@@ -427,9 +427,25 @@
   $ hg add b
   $ hg commit -mb
   $ touch c
+
+... with a clean working dir
+
   $ hg add c
   $ hg rm bar
   $ hg commit -mc
+  $ hg status
+  $ hg strip --keep tip
+  saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob)
+  $ hg status
+  ! bar
+  ? c
+
+... with a dirty working dir
+
+  $ hg add c
+  $ hg rm bar
+  $ hg commit -mc
+  $ hg status
   $ echo b > b
   $ echo d > d
   $ hg strip --keep tip
--- a/tests/test-phases-exchange.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-phases-exchange.t	Thu May 02 12:15:41 2013 -0500
@@ -1062,5 +1062,43 @@
   |
   o  0 public a-A - 054250a37db4
   
+
+Pushing From an unlockable repo
+--------------------------------
+(issue3684)
+
+Unability to lock the source repo should not prevent the push. It will prevent
+the retrieval of remote phase during push. For example, pushing to a publishing
+server won't turn changeset public.
+
+1. Test that push is not prevented
+
+  $ hg init Phi
+  $ cd Upsilon
+  $ chmod -R -w .hg
+  $ hg push ../Phi
+  pushing to ../Phi
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 14 changesets with 14 changes to 14 files (+3 heads)
+  $ chmod -R +w .hg
+
+2. Test that failed phases movement are reported
+
+  $ hg phase --force --draft 3
+  $ chmod -R -w .hg
+  $ hg push ../Phi
+  pushing to ../Phi
+  searching for changes
+  no changes found
+  cannot lock source repo, skipping local public phase update
+  [1]
+  $ chmod -R +w .hg
+  $ hgph Upsilon
+
+  $ cd ..
+
   $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
 
--- a/tests/test-record.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-record.t	Thu May 02 12:15:41 2013 -0500
@@ -1039,7 +1039,8 @@
 Editing patch (and ignoring trailing text)
 
   $ cat > editor.sh << '__EOF__'
-  > sed -e 7d -e '5s/^-/ /' -e '/^# ---/itrailing\nditto' "$1" > tmp
+  > sed -e 7d -e '5s/^-/ /' -e '/^# ---/i\
+  > trailing\nditto' "$1" > tmp
   > mv tmp "$1"
   > __EOF__
   $ cat > editedfile << '__EOF__'
@@ -1204,7 +1205,8 @@
 random text in random positions is still an error
 
   $ cat > editor.sh << '__EOF__'
-  > sed -e '/^@/iother' "$1" > tmp
+  > sed -e '/^@/i\
+  > other' "$1" > tmp
   > mv tmp "$1"
   > __EOF__
   $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg record <<EOF
--- a/tests/test-rename-dir-merge.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-rename-dir-merge.t	Thu May 02 12:15:41 2013 -0500
@@ -46,6 +46,7 @@
    b/b: remote created -> g
   removing a/a
   removing a/b
+  updating: a/b 2/5 files (40.00%)
   getting b/a
   getting b/b
   updating: b/b 4/5 files (80.00%)
--- a/tests/test-rename-merge2.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-rename-merge2.t	Thu May 02 12:15:41 2013 -0500
@@ -290,6 +290,7 @@
    rev: versions differ -> m
     preserving rev for resolve of rev
   removing a
+  updating: a 1/3 files (33.33%)
   getting b
   updating: b 2/3 files (66.67%)
   updating: rev 3/3 files (100.00%)
--- a/tests/test-status-color.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-status-color.t	Thu May 02 12:15:41 2013 -0500
@@ -109,6 +109,25 @@
   \x1b[0;35;1;4m? \x1b[0m\x1b[0;35;1;4m../1/in_b_1\x1b[0m (esc)
   \x1b[0;35;1;4m? \x1b[0m\x1b[0;35;1;4min_b_2\x1b[0m (esc)
   \x1b[0;35;1;4m? \x1b[0m\x1b[0;35;1;4m../in_b\x1b[0m (esc)
+
+Make sure --color=never works
+  $ hg status --color=never
+  ? a/1/in_a_1
+  ? a/in_a
+  ? b/1/in_b_1
+  ? b/2/in_b_2
+  ? b/in_b
+  ? in_root
+
+Make sure ui.formatted=False works
+  $ hg status --config ui.formatted=False
+  ? a/1/in_a_1
+  ? a/in_a
+  ? b/1/in_b_1
+  ? b/2/in_b_2
+  ? b/in_b
+  ? in_root
+
   $ cd ..
 
   $ hg init repo2
--- a/tests/test-status.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-status.t	Thu May 02 12:15:41 2013 -0500
@@ -100,6 +100,13 @@
   ? ../1/in_b_1
   ? in_b_2
   ? ../in_b
+
+combining patterns with root and patterns without a root works
+
+  $ hg st a/in_a re:.*b$
+  ? a/in_a
+  ? b/in_b
+
   $ cd ..
 
   $ hg init repo2
--- a/tests/test-tags.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-tags.t	Thu May 02 12:15:41 2013 -0500
@@ -381,4 +381,26 @@
   localtag                           0:bbd179dfa0a7 local
   globaltag                          0:bbd179dfa0a7
 
+Test for issue3911
+
+  $ hg tag -r 0 -l localtag2
+  $ hg tag -l --remove localtag2
+  $ hg tags -v
+  tip                                1:a0b6fe111088
+  localtag                           0:bbd179dfa0a7 local
+  globaltag                          0:bbd179dfa0a7
+
+  $ hg tag -r 1 -f localtag
+  $ hg tags -v
+  tip                                2:5c70a037bb37
+  localtag                           1:a0b6fe111088
+  globaltag                          0:bbd179dfa0a7
+
+  $ hg tag -r 1 localtag2
+  $ hg tags -v
+  tip                                3:bbfb8cd42be2
+  localtag2                          1:a0b6fe111088
+  localtag                           1:a0b6fe111088
+  globaltag                          0:bbd179dfa0a7
+
   $ cd ..
--- a/tests/test-unionrepo.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-unionrepo.t	Thu May 02 12:15:41 2013 -0500
@@ -25,7 +25,9 @@
   $ hg clone -q repo1 --rev 0 repo2
   $ cd repo2
   $ touch repo2-1
-  $ sed '1irepo2-1 at top' f > f.tmp
+  $ sed '1i\
+  > repo2-1 at top
+  > ' f > f.tmp
   $ mv f.tmp f
   $ hg ci -Aqmrepo2-1
   $ touch repo2-2
--- a/tests/test-update-reverse.t	Thu Apr 18 16:17:59 2013 -0700
+++ b/tests/test-update-reverse.t	Thu May 02 12:15:41 2013 -0500
@@ -73,6 +73,7 @@
    main: remote created -> g
   removing side1
   removing side2
+  updating: side2 2/3 files (66.67%)
   getting main
   updating: main 3/3 files (100.00%)
   1 files updated, 0 files merged, 2 files removed, 0 files unresolved