# HG changeset patch # User Pierre-Yves David # Date 1438626867 25200 # Node ID 35e8d7139224de57da7ef004f3f3a1419145818c # Parent eabba9c75061254ff62827f92df0f32491c74b3d# Parent 79f0cb97d7537a7c2948f8f9b0a89148825a3a1d merge with stable diff -r eabba9c75061 -r 35e8d7139224 .hgsigs --- a/.hgsigs Fri Jun 26 18:45:29 2015 -0500 +++ b/.hgsigs Mon Aug 03 11:34:27 2015 -0700 @@ -109,3 +109,5 @@ 8cc6036bca532e06681c5a8fa37efaa812de67b5 0 iQIVAwUAVUP0xCBXgaxoKi1yAQLIChAAme3kg1Z0V8t5PnWKDoIvscIeAsD2s6EhMy1SofmdZ4wvYD1VmGC6TgXMCY7ssvRBhxqwG3GxwYpwELASuw2GYfVot2scN7+b8Hs5jHtkQevKbxarYni+ZI9mw/KldnJixD1yW3j+LoJFh/Fu6GD2yrfGIhimFLozcwUu3EbLk7JzyHSn7/8NFjLJz0foAYfcbowU9/BFwNVLrQPnsUbWcEifsq5bYso9MBO9k+25yLgqHoqMbGpJcgjubNy1cWoKnlKS+lOJl0/waAk+aIjHXMzFpRRuJDjxEZn7V4VdV5d23nrBTcit1BfMzga5df7VrLPVRbom1Bi0kQ0BDeDex3hHNqHS5X+HSrd/njzP1xp8twG8hTE+njv85PWoGBTo1eUGW/esChIJKA5f3/F4B9ErgBNNOKnYmRgxixd562OWAwAQZK0r0roe2H/Mfg2VvgxT0kHd22NQLoAv0YI4jcXcCFrnV/80vHUQ8AsAYAbkLcz1jkfk3YwYDP8jbJCqcwJRt9ialYKJwvXlEe0TMeGdq7EjCO0z/pIpu82k2R/C0FtCFih3bUvJEmWoVVx8UGkDDQEORLbzxQCt0IOiQGFcoCCxgQmL0x9ZoljCWg5vZuuhU4uSOuRTuM+aa4xoLkeOcvgGRSOXrqfkV8JpWKoJB4dmY2qSuxw8LsAAzK0= ed18f4acf435a2824c6f49fba40f42b9df5da7ad 0 iQIVAwUAVWy9mCBXgaxoKi1yAQIm+Q/+I/tV8DC51d4f/6T5OR+motlIx9U5za5p9XUUzfp3tzSY2PutVko/FclajVdFekZsK5pUzlh/GZhfe1jjyEEIr3UC3yWk8hMcvvS+2UDmfy81QxN7Uf0kz4mZOlME6d/fYDzf4cDKkkCXoec3kyZBw7L84mteUcrJoyb5K3fkQBrK5CG/CV7+uZN6b9+quKjtDhDEkAyc6phNanzWNgiHGucEbNgXsKM01HmV1TnN4GXTKx8y2UDalIJOPyes2OWHggibMHbaNnGnwSBAK+k29yaQ5FD0rsA+q0j3TijA1NfqvtluNEPbFOx/wJV4CxonYad93gWyEdgU34LRqqw1bx7PFUvew2/T3TJsxQLoCt67OElE7ScG8evuNEe8/4r3LDnzYFx7QMP5r5+B7PxVpj/DT+buS16BhYS8pXMMqLynFOQkX5uhEM7mNC0JTXQsBMHSDAcizVDrdFCF2OSfQjLpUfFP1VEWX7EInqj7hZrd+GE7TfBD8/rwSBSkkCX2aa9uKyt6Ius1GgQUuEETskAUvvpsNBzZxtvGpMMhqQLGlJYnBbhOmsbOyTSnXU66KJ5e/H3O0KRrF09i74v30DaY4uIH8xG6KpSkfw5s/oiLCtagfc0goUvvojk9pACDR3CKM/jVC63EVp2oUcjT72jUgSLxBgi7siLD8IW86wc= 540cd0ddac49c1125b2e013aa2ff18ecbd4dd954 0 iQIVAwUAVZRtzSBXgaxoKi1yAQJVLhAAtfn+8OzHIp6wRC4NUbkImAJRLsNTRPKeRSWPCF5O5XXQ84hp+86qjhndIE6mcJSAt4cVP8uky6sEa8ULd6b3ACRBvtgZtsecA9S/KtRjyE9CKr8nP+ogBNqJPaYlTz9RuwGedOd+8I9lYgsnRjfaHSByNMX08WEHtWqAWhSkAz/HO32ardS38cN97fckCgQtA8v7c77nBT7vcw4epgxyUQvMUxUhqmCVVhVfz8JXa5hyJxFrOtqgaVuQ1B5Y/EKxcyZT+JNHPtu3V1uc1awS/w16CEPstNBSFHax5MuT9UbY0mV2ZITP99EkM+vdomh82VHdnMo0i7Pz7XF45ychD4cteroO9gGqDDt9j7hd1rubBX1bfkPsd/APJlyeshusyTj+FqsUD/HDlvM9LRjY1HpU7i7yAlLQQ3851XKMLUPNFYu2r3bo8Wt/CCHtJvB4wYuH+7Wo3muudpU01ziJBxQrUWwPbUrG+7LvO1iEEVxB8l+8Vq0mU3Te7lJi1kGetm6xHNbtvQip5P2YUqvv+lLo/K8KoJDxsh63Y01JGwdmUDb8mnFlRx4J7hQJaoNEvz3cgnc4X8gDJD8sUOjGOPnbtz2QwTY+zj/5+FdLxWDCxNrHX5vvkVdJHcCqEfVvQTKfDMOUeKuhjI7GD7t3xRPfUxq19jjoLPe7aqn1Z1s= +96a38d44ba093bd1d1ecfd34119e94056030278b 0 iQIVAwUAVarUUyBXgaxoKi1yAQIfJw/+MG/0736F/9IvzgCTF6omIC+9kS8JH0n/JBGPhpbPAHK4xxjhOOz6m3Ia3c3HNoy+I6calwU6YV7k5dUzlyLhM0Z5oYpdrH+OBNxDEsD5SfhclfR63MK1kmgtD33izijsZ++6a+ZaVfyxpMTksKOktWSIDD63a5b/avb6nKY64KwJcbbeXPdelxvXV7TXYm0GvWc46BgvrHOJpYHCDaXorAn6BMq7EQF8sxdNK4GVMNMVk1njve0HOg3Kz8llPB/7QmddZXYLFGmWqICyUn1IsJDfePxzh8sOYVCbxAgitTJHJJmmH5gzVzw7t7ljtmxSJpcUGQJB2MphejmNFGfgvJPB9c6xOCfUqDjxN5m24V+UYesZntpfgs3lpfvE7785IpVnf6WfKG4PKty01ome/joHlDlrRTekKMlpiBapGMfv8EHvPBrOA+5yAHNfKsmcyCcjD1nvXYZ2/X9qY35AhdcBuNkyp55oPDOdtYIHfnOIxlYMKG1dusDx3Z4eveF0lQTzfRVoE5w+k9A2Ov3Zx0aiSkFFevJjrq5QBfs9dAiT8JYgBmWhaJzCtJm12lQirRMKR/br88Vwt/ry/UVY9cereMNvRYUGOGfC8CGGDCw4WDD+qWvyB3mmrXVuMlXxQRIZRJy5KazaQXsBWuIsx4kgGqC5Uo+yzpiQ1VMuCyI= +21aa1c313b05b1a85f8ffa1120d51579ddf6bf24 0 iQIVAwUAVbuouCBXgaxoKi1yAQL2ng//eI1w51F4YkDiUAhrZuc8RE/chEd2o4F6Jyu9laA03vbim598ntqGjX3+UkOyTQ/zGVeZfW2cNG8zkJjSLk138DHCYl2YPPD/yxqMOJp/a7U34+HrA0aE5Y2pcfx+FofZHRvRtt40UCngicjKivko8au7Ezayidpa/vQbc6dNvGrwwk4KMgOP2HYIfHgCirR5UmaWtNpzlLhf9E7JSNL5ZXij3nt6AgEPyn0OvmmOLyUARO/JTJ6vVyLEtwiXg7B3sF5RpmyFDhrkZ+MbFHgL4k/3y9Lb97WaZl8nXJIaNPOTPJqkApFY/56S12PKYK4js2OgU+QsX1XWvouAhEx6CC6Jk9EHhr6+9qxYFhBJw7RjbswUG6LvJy/kBe+Ei5UbYg9dATf3VxQ6Gqs19lebtzltERH2yNwaHyVeqqakPSonOaUyxGMRRosvNHyrTTor38j8d27KksgpocXzBPZcc1MlS3vJg2nIwZlc9EKM9z5R0J1KAi1Z/+xzBjiGRYg5EZY6ElAw30eCjGta7tXlBssJiKeHut7QTLxCZHQuX1tKxDDs1qlXlGCMbrFqo0EiF9hTssptRG3ZyLwMdzEjnh4ki6gzONZKDI8uayAS3N+CEtWcGUtiA9OwuiFXTwodmles/Mh14LEhiVZoDK3L9TPcY22o2qRuku/6wq6QKsg= diff -r eabba9c75061 -r 35e8d7139224 .hgtags --- a/.hgtags Fri Jun 26 18:45:29 2015 -0500 +++ b/.hgtags Mon Aug 03 11:34:27 2015 -0700 @@ -122,3 +122,5 @@ 8cc6036bca532e06681c5a8fa37efaa812de67b5 3.4 ed18f4acf435a2824c6f49fba40f42b9df5da7ad 3.4.1 540cd0ddac49c1125b2e013aa2ff18ecbd4dd954 3.4.2 +96a38d44ba093bd1d1ecfd34119e94056030278b 3.5-rc +21aa1c313b05b1a85f8ffa1120d51579ddf6bf24 3.5 diff -r eabba9c75061 -r 35e8d7139224 contrib/win32/mercurial.iss --- a/contrib/win32/mercurial.iss Fri Jun 26 18:45:29 2015 -0500 +++ b/contrib/win32/mercurial.iss Mon Aug 03 11:34:27 2015 -0700 @@ -70,15 +70,15 @@ Source: contrib\win32\postinstall.txt; DestDir: {app}; DestName: ReleaseNotes.txt Source: dist\hg.exe; DestDir: {app}; AfterInstall: Touch('{app}\hg.exe.local') #if ARCH == "x64" -Source: dist\*.dll; Destdir: {app} -Source: dist\*.pyd; Destdir: {app} +Source: dist\lib\*.dll; Destdir: {app}\lib +Source: dist\lib\*.pyd; Destdir: {app}\lib #else +Source: dist\w9xpopen.exe; DestDir: {app} +#endif Source: dist\python*.dll; Destdir: {app}; Flags: skipifsourcedoesntexist Source: dist\msvc*.dll; DestDir: {app}; Flags: skipifsourcedoesntexist -Source: dist\w9xpopen.exe; DestDir: {app} -#endif Source: dist\Microsoft.VC*.CRT.manifest; DestDir: {app}; Flags: skipifsourcedoesntexist -Source: dist\library.zip; DestDir: {app} +Source: dist\lib\library.zip; DestDir: {app}\lib Source: dist\add_path.exe; DestDir: {app} Source: doc\*.html; DestDir: {app}\Docs Source: doc\style.css; DestDir: {app}\Docs diff -r eabba9c75061 -r 35e8d7139224 hgext/convert/__init__.py --- a/hgext/convert/__init__.py Fri Jun 26 18:45:29 2015 -0500 +++ b/hgext/convert/__init__.py Mon Aug 03 11:34:27 2015 -0700 @@ -192,6 +192,9 @@ (forces target IDs to change). It takes a boolean argument and defaults to False. + :convert.hg.startrev: specify the initial Mercurial revision. + The default is 0. + :convert.hg.revs: revset specifying the source revisions to convert. CVS Source @@ -323,8 +326,11 @@ usually should specify a target directory, because otherwise the target may be named ``...-hg``. - It is possible to limit the amount of source history to be - converted by specifying an initial Perforce revision: + The following options can be set with ``--config``: + + :convert.p4.encoding: specify the encoding to use when decoding standard + output of the Perforce command line tool. The default is default system + encoding. :convert.p4.startrev: specify initial Perforce revision (a Perforce changelist number). diff -r eabba9c75061 -r 35e8d7139224 hgext/convert/p4.py --- a/hgext/convert/p4.py Fri Jun 26 18:45:29 2015 -0500 +++ b/hgext/convert/p4.py Mon Aug 03 11:34:27 2015 -0700 @@ -39,6 +39,9 @@ class p4_source(converter_source): def __init__(self, ui, path, revs=None): + # avoid import cycle + import convcmd + super(p4_source, self).__init__(ui, path, revs=revs) if "/" in path and not path.startswith('//'): @@ -54,7 +57,8 @@ self.tags = {} self.lastbranch = {} self.parent = {} - self.encoding = "latin_1" + self.encoding = self.ui.config('convert', 'p4.encoding', + default=convcmd.orig_encoding) self.depotname = {} # mapping from local name to depot name self.localname = {} # mapping from depot name to local name self.re_type = re.compile( @@ -216,7 +220,7 @@ stdout = util.popen(cmd, mode='rb') mode = None - contents = "" + contents = [] keywords = None for d in loaditer(stdout): @@ -252,7 +256,7 @@ keywords = self.re_keywords elif code == "text" or code == "binary": - contents += data + contents.append(data) lasterror = None @@ -262,6 +266,8 @@ if mode is None: return None, None + contents = ''.join(contents) + if keywords: contents = keywords.sub("$\\1$", contents) if mode == "l" and contents.endswith("\n"): diff -r eabba9c75061 -r 35e8d7139224 hgext/extdiff.py --- a/hgext/extdiff.py Fri Jun 26 18:45:29 2015 -0500 +++ b/hgext/extdiff.py Mon Aug 03 11:34:27 2015 -0700 @@ -101,12 +101,8 @@ matchfn=scmutil.matchfiles(repo, files), subrepos=listsubrepos) - ctx = repo[node] for fn in sorted(files): wfn = util.pconvert(fn) - if wfn not in ctx: - # File doesn't exist; could be a bogus modify - continue ui.note(' %s\n' % wfn) if node is None: diff -r eabba9c75061 -r 35e8d7139224 hgext/highlight/highlight.py --- a/hgext/highlight/highlight.py Fri Jun 26 18:45:29 2015 -0500 +++ b/hgext/highlight/highlight.py Mon Aug 03 11:34:27 2015 -0700 @@ -51,12 +51,9 @@ except (ClassNotFound, ValueError): lexer = TextLexer(stripnl=False) - formatter = HtmlFormatter(style=style) + formatter = HtmlFormatter(nowrap=True, style=style) colorized = highlight(text, lexer, formatter) - # strip wrapping div - colorized = colorized[:colorized.find('\n')] - colorized = colorized[colorized.find('
') + 5:]
     coloriter = (s.encode(encoding.encoding, 'replace')
                  for s in colorized.splitlines())
 
diff -r eabba9c75061 -r 35e8d7139224 hgext/transplant.py
--- a/hgext/transplant.py	Fri Jun 26 18:45:29 2015 -0500
+++ b/hgext/transplant.py	Mon Aug 03 11:34:27 2015 -0700
@@ -125,9 +125,10 @@
         diffopts = patch.difffeatureopts(self.ui, opts)
         diffopts.git = True
 
-        lock = wlock = tr = None
+        lock = wlock = tr = dsguard = None
         try:
             wlock = repo.wlock()
+            dsguard = cmdutil.dirstateguard(repo, 'transplant')
             lock = repo.lock()
             tr = repo.transaction('transplant')
             for rev in revs:
@@ -200,6 +201,7 @@
                             # Do not rollback, it is up to the user to
                             # fix the merge or cancel everything
                             tr.close()
+                            dsguard.close()
                             raise
                         if n and domerge:
                             self.ui.status(_('%s merged at %s\n') % (revstr,
@@ -212,6 +214,7 @@
                         if patchfile:
                             os.unlink(patchfile)
             tr.close()
+            dsguard.close()
             if pulls:
                 exchange.pull(repo, source.peer(), heads=pulls)
                 merge.update(repo, pulls[-1], False, False, None)
@@ -220,7 +223,10 @@
             self.transplants.write()
             if tr:
                 tr.release()
-            lock.release()
+            if lock:
+                lock.release()
+            if dsguard:
+                dsguard.release()
             wlock.release()
 
     def filter(self, filter, node, changelog, patchfile):
diff -r eabba9c75061 -r 35e8d7139224 i18n/ja.po
--- a/i18n/ja.po	Fri Jun 26 18:45:29 2015 -0500
+++ b/i18n/ja.po	Mon Aug 03 11:34:27 2015 -0700
@@ -114,6 +114,7 @@
 # platform              稼働環境
 # pop(patch)            (パッチの)適用解除
 # progress (, in)       未完了(interrupted rebase/graft/histedit/transplant)
+# programming error     内部エラー
 # pruned                xxxxx (obsoleted with no successors) xxxxxx
 # pull                  (追加リビジョンの)取り込み
 # push                  (追加リビジョンの)反映
@@ -159,8 +160,8 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-06-01 09:53+0900\n"
-"PO-Revision-Date: 2015-06-01 10:28+0900\n"
+"POT-Creation-Date: 2015-07-30 18:57+0900\n"
+"PO-Revision-Date: 2015-07-31 18:37+0900\n"
 "Last-Translator: Japanese translation team \n"
 "Language-Team: Japanese\n"
 "Language: ja\n"
@@ -1428,6 +1429,9 @@
 msgid "must specify revision to censor"
 msgstr "検閲対象リビジョンを指定してください"
 
+msgid "can only specify an explicit filename"
+msgstr "明示的なファイル名以外は指定できません"
+
 msgid "cannot censor file with no history"
 msgstr "履歴のないファイルは検閲できません"
 
@@ -1792,8 +1796,8 @@
 "  resolve.unresolved = red bold\n"
 "  resolve.resolved = green bold"
 
-msgid "  bookmarks.current = green"
-msgstr "  bookmarks.current = green"
+msgid "  bookmarks.active = green"
+msgstr "  bookmarks.active = green"
 
 msgid ""
 "  branches.active = none\n"
@@ -2543,6 +2547,13 @@
 "        効果を持ちません。 デフォルト値は False。"
 
 msgid ""
+"    :convert.git.remoteprefix: remote refs are converted as bookmarks with\n"
+"        ``convert.git.remoteprefix`` as a prefix followed by a /. The "
+"default\n"
+"        is 'remote'."
+msgstr ""
+
+msgid ""
 "    Perforce Source\n"
 "    ###############"
 msgstr ""
@@ -2585,6 +2596,43 @@
 "    Mercurial 形式への変換\n"
 "    ######################"
 
+msgid ""
+"    The Mercurial destination will recognize Mercurial subrepositories in "
+"the\n"
+"    destination directory, and update the .hgsubstate file automatically if "
+"the\n"
+"    destination subrepositories contain the //.hg/shamap file.\n"
+"    Converting a repository with subrepositories requires converting a "
+"single\n"
+"    repository at a time, from the bottom up."
+msgstr ""
+"    Mercurial 形式への変換で、 変換先ディレクトリ配下のサブリポジトリに、\n"
+"    //.hg/shamap がある場合、 親リポジトリの .hgsubstate は、\n"
+"    自動的に更新されます。 サブリポジトリを含むリポジトリの変換は、\n"
+"    個々のリポジトリの変換を、 ボトムアップで実施してください。"
+
+msgid ""
+"       An example showing how to convert a repository with subrepositories::"
+msgstr "       サブリポジトリを含むリポジトリの変換例を示します::"
+
+msgid ""
+"         # so convert knows the type when it sees a non empty destination\n"
+"         $ hg init converted"
+msgstr ""
+"         # 変換先 converted が hg init 済みであることから\n"
+"         # converted への hg convert 実行の際には\n"
+"         # 変換先形式 (= Mercurial形式) が自動的に特定されます\n"
+"         $ hg init converted"
+
+msgid ""
+"         $ hg convert orig/sub1 converted/sub1\n"
+"         $ hg convert orig/sub2 converted/sub2\n"
+"         $ hg convert orig converted"
+msgstr ""
+"         $ hg convert orig/sub1 converted/sub1\n"
+"         $ hg convert orig/sub2 converted/sub2\n"
+"         $ hg convert orig converted"
+
 msgid "    The following options are supported:"
 msgstr "    以下のオプションを指定できます:"
 
@@ -2604,11 +2652,38 @@
 
 msgid ""
 "    :convert.hg.usebranchnames: preserve branch names. The default is\n"
-"        True.\n"
-"    "
+"        True."
 msgstr ""
 "    :convert.hg.usebranchnames: 変換元におけるブランチ名の維持の要否。\n"
-"        デフォルト値は True。\n"
+"        デフォルト値は True。"
+
+msgid ""
+"    :convert.hg.sourcename: records the given string as a 'convert_source' "
+"extra\n"
+"        value on each commit made in the target repository. The default is "
+"None."
+msgstr ""
+"    :convert.hg.sourcename: 指定文字列を extra メタデータ 'convert_source'\n"
+"        として変換先の各リビジョンに記録します。 デフォルト値: 無指定"
+
+msgid ""
+"    All Destinations\n"
+"    ################"
+msgstr ""
+"    全変換先形式共通\n"
+"    ################"
+
+msgid "    All destination types accept the following options:"
+msgstr "    以下のオプションは、 全ての変換先形式に対して氏愛知可能です:"
+
+msgid ""
+"    :convert.skiptags: does not convert tags from the source repo to the "
+"target\n"
+"        repo. The default is False.\n"
+"    "
+msgstr ""
+"    :convert.skiptags: 変換元から変換先へのタグ情報の反映を抑止します。\n"
+"        デフォルト値: False\n"
 "    "
 
 msgid "only return changes on specified branches"
@@ -2828,6 +2903,9 @@
 msgid "%s does not look like a CVS checkout"
 msgstr "%s は CVS 作業領域ではないと思われます"
 
+msgid "cvs source does not support specifying multiple revs"
+msgstr "cvs 形式からの変換では、複数リビジョン指定は未サポートです"
+
 #, python-format
 msgid "revision %s is not a patchset number"
 msgstr "リビジョン %s はパッチセット番号ではありません"
@@ -2992,6 +3070,10 @@
 msgstr "git のヘッドが取得できません"
 
 #, python-format
+msgid "cannot retrieve git head \"%s\""
+msgstr "git のヘッド \"%s\" 取得できません"
+
+#, python-format
 msgid "cannot read %r object at %s"
 msgstr "%r オブジェクトが %s から読み込めません"
 
@@ -3000,8 +3082,12 @@
 msgstr "%r オブジェクトが %s から読み込めません: 想定外のサイズ"
 
 #, python-format
-msgid "cannot read submodules config file in %s"
-msgstr "%s におけるサブモジュールの設定ファイルが読み込めません"
+msgid "warning: cannot read submodules config file in %s\n"
+msgstr "警告: %s におけるサブモジュールの設定ファイルが読み込めません\n"
+
+#, python-format
+msgid "warning: unable to parse .gitmodules in %s\n"
+msgstr "警告: %s における .gitmodules の解析に失敗\n"
 
 msgid "convert from git do not support --full"
 msgstr "git からの変換では --full は未サポートです"
@@ -3053,6 +3139,14 @@
 msgid "pulling from %s into %s\n"
 msgstr "%s から %s に取り込み中\n"
 
+#, python-format
+msgid "no \".hgsubstate\" updates will be made for \"%s\"\n"
+msgstr "\"%s\" の \".hgsubstate\" は更新されません\n"
+
+#, python-format
+msgid "%s is missing from %s/.hg/shamap\n"
+msgstr "%s は %s/.hg/shamap 中にはありません\n"
+
 msgid "filtering out empty revision\n"
 msgstr "空リビジョンの除外中\n"
 
@@ -3070,6 +3164,9 @@
 "変換先リポジトリにリビジョン %s がありません(clonebranches=true での検索は未"
 "実装です)"
 
+msgid "mercurial source does not support specifying multiple revisions"
+msgstr "mercurial 形式からの変換では、複数リビジョン指定は未サポートです"
+
 #, python-format
 msgid "%s is not a valid start revision"
 msgstr "%s は正しい開始リビジョンではありません"
@@ -3081,6 +3178,9 @@
 msgid "ignoring: %s\n"
 msgstr "例外を無視: %s\n"
 
+msgid "monotone source does not support specifying multiple revs"
+msgstr "monotone 形式からの変換では、複数リビジョン指定は未サポートです"
+
 #, python-format
 msgid "%s does not look like a monotone repository"
 msgstr "%s は monotone 形式ではないと思われます"
@@ -3131,12 +3231,19 @@
 msgid "%s does not look like a P4 repository"
 msgstr "%s は P4 形式ではないと思われます"
 
+msgid "p4 source does not support specifying multiple revisions"
+msgstr "p4 形式からの変換では、複数リビジョン指定は未サポートです"
+
 msgid "reading p4 views\n"
 msgstr "p4 ビューの読み込み中\n"
 
 msgid "collecting p4 changelists\n"
 msgstr "p4 チェンジリストの収集中\n"
 
+#, python-format
+msgid "cannot find source for copied file: %s@%s\n"
+msgstr "複製元ファイルが見つかりません: %s@%s\n"
+
 msgid "convert from p4 do not support --full"
 msgstr "p4 からの変換では --full は未サポートです"
 
@@ -3175,6 +3282,9 @@
 msgid "%s does not look like a Subversion repository to libsvn version %s"
 msgstr "%s は subversion 形式ではないと思われます (libsvn バージョン %s)"
 
+msgid "subversion source does not support specifying multiple revisions"
+msgstr "subversion 形式からの変換では、複数リビジョン指定は未サポートです"
+
 #, python-format
 msgid "svn: revision %s is not an integer"
 msgstr "svn: リビジョン %s が数字ではありません"
@@ -3910,6 +4020,13 @@
 "    親リビジョンが null の場合は tip が対象になります。"
 
 msgid ""
+"    The ``gpg.cmd`` config setting can be used to specify the command\n"
+"    to run. A default key can be specified with ``gpg.key``."
+msgstr ""
+"    ``gpg.cmd`` 設定により、 使用するコマンドを指定可能です。\n"
+"    デフォルトの鍵は ``gpg.key`` で指定可能です。"
+
+msgid ""
 "    See :hg:`help dates` for a list of formats valid for -d/--date.\n"
 "    "
 msgstr ""
@@ -4139,10 +4256,10 @@
 
 msgid ""
 "  [hgk]\n"
-"  path=/location/of/hgk"
+"  path = /location/of/hgk"
 msgstr ""
 "  [hgk]\n"
-"  path=/location/of/hgk"
+"  path = /location/of/hgk"
 
 msgid ""
 "hgk can make use of the extdiff extension to visualize revisions.\n"
@@ -4591,6 +4708,10 @@
 msgid "%s: empty changeset\n"
 msgstr "%s: 空のリビジョン\n"
 
+#, python-format
+msgid "cannot fold into public change %s"
+msgstr "public フェーズのリビジョン %s への併合はできません"
+
 msgid ""
 "Make changes as needed, you may commit or record as needed now.\n"
 "When you are finished, run hg histedit --continue to resume."
@@ -4738,8 +4859,11 @@
 msgstr "マージを含む履歴は histedit の対象に指定できません"
 
 #, python-format
-msgid "cannot edit immutable changeset: %s"
-msgstr "改変不能なリビジョンがあります: %s"
+msgid "cannot edit public changeset: %s"
+msgstr "public フェーズのリビジョンは改変できません: %s"
+
+msgid "see \"hg help phases\" for details"
+msgstr "詳細は \"hg help phases\" 参照"
 
 #, python-format
 msgid "malformed line \"%s\""
@@ -5457,9 +5581,12 @@
 msgstr "リビジョンの変換中"
 
 #, python-format
-msgid "missing largefile '%s' from revision %s"
+msgid "missing largefile for '%s' in %s"
 msgstr "大容量ファイル '%s' (リビジョン %s 由来) がありません"
 
+msgid "all largefiles must be present locally"
+msgstr "全ての大容量ファイルがローカルリポジトリに存在している必要があります"
+
 #, python-format
 msgid "renamed/copied largefile %s becomes symlink"
 msgstr "改名/複製対象の大容量ファイル %s がシンボリックリンク化されています"
@@ -6058,8 +6185,8 @@
 msgstr "パッチ名の最初の文字に \"%s\" は使用できません"
 
 #, python-format
-msgid "\"%s\" cannot be used in the name of a patch"
-msgstr "\"%s\" を含む名前はパッチ名に使用できません"
+msgid "%r cannot be used in the name of a patch"
+msgstr "%r を含む名前はパッチ名に使用できません"
 
 #, python-format
 msgid "\"%s\" already exists as a directory"
@@ -6174,11 +6301,8 @@
 msgid "popping would remove a revision not managed by this patch queue"
 msgstr "管理対象外のリビジョンが解除対象に指定されました"
 
-msgid "popping would remove an immutable revision"
-msgstr "適用解除対象は改変不能リビジョンです"
-
-msgid "see \"hg help phases\" for details"
-msgstr "詳細は \"hg help phases\" 参照"
+msgid "popping would remove a public revision"
+msgstr "適用解除対象は public フェーズのリビジョンです"
 
 msgid "deletions found between repo revs"
 msgstr "リビジョン間で削除が検出されました"
@@ -6193,8 +6317,8 @@
 msgid "cannot refresh a revision with children"
 msgstr "ヘッド以外は qrefresh の対象に指定できません"
 
-msgid "cannot refresh immutable revision"
-msgstr "改変不能リビジョンは qrefresh できません"
+msgid "cannot refresh public revision"
+msgstr "public フェーズのリビジョンは qrefresh できません"
 
 msgid ""
 "refresh interrupted while patch was popped! (revert --all, qpush to "
@@ -8161,96 +8285,17 @@
 msgid "writing"
 msgstr "書き出し中"
 
-msgid "show progress bars for some actions"
-msgstr "処理における進捗率の表示"
-
-msgid ""
-"This extension uses the progress information logged by hg commands\n"
-"to draw progress bars that are as informative as possible. Some progress\n"
-"bars only offer indeterminate information, while others have a definite\n"
-"end point."
-msgstr ""
-"本エクステンションは、 hg コマンドからの進捗情報を元に、\n"
-"可能な限り有益な進捗率を表示します。 多くの処理での進捗率表示が、\n"
-"明確な処理総量に基づいている一方で、 いくつかの処理においては、\n"
-"不確定な情報に基づいた進捗率を表示する場合もあります。"
-
-msgid "The following settings are available::"
-msgstr "指定可能な設定は以下の通りです::"
-
-msgid ""
-"  [progress]\n"
-"  delay = 3 # number of seconds (float) before showing the progress bar\n"
-"  changedelay = 1 # changedelay: minimum delay before showing a new topic.\n"
-"                  # If set to less than 3 * refresh, that value will\n"
-"                  # be used instead.\n"
-"  refresh = 0.1 # time in seconds between refreshes of the progress bar\n"
-"  format = topic bar number estimate # format of the progress bar\n"
-"  width =  # if set, the maximum width of the progress information\n"
-"                 # (that is, min(width, term width) will be used)\n"
-"  clear-complete = True # clear the progress bar after it's done\n"
-"  disable = False # if true, don't show a progress bar\n"
-"  assume-tty = False # if true, ALWAYS show a progress bar, unless\n"
-"                     # disable is given"
-msgstr ""
-"  [progress]\n"
-"  delay = 3 # 進捗率表示までの猶予秒数 (浮動小数指定)\n"
-"  changedelay = 1 # 新規トピック表示までの最小猶予時間。\n"
-"                  # 3 * refresh よりも小さい値の場合は、\n"
-"                  # この設定は無視されます。\n"
-"  refresh = 0.1 # 進捗率表示更新間隔の秒数\n"
-"  format = topic bar number estimate # 進捗率表示の形式指定\n"
-"  width =  # 進捗率表示の最大カラム数\n"
-"                 # (width 設定と画面幅の小さい方が有効になります)\n"
-"  clear-complete = True # 実行完了時の進捗率表示クリアの有無\n"
-"  disable = False # 真値が設定された場合、進捗率は表示されません\n"
-"  assume-tty = False # 真値が設定された場合、 disable が指定されない限り\n"
-"                     # 常に進捗率が表示されます"
-
-msgid ""
-"Valid entries for the format field are topic, bar, number, unit,\n"
-"estimate, speed, and item. item defaults to the last 20 characters of\n"
-"the item, but this can be changed by adding either ``-`` which\n"
-"would take the last num characters, or ``+`` for the first num\n"
-"characters.\n"
-msgstr ""
-"format 指定で有効な要素は topic bar number unit estimate speed item\n"
-"です。 デフォルトの item は末尾 20 文字ですが、 ``-`` (末尾 num\n"
-"文字) や ``+`` (冒頭 num 文字) 指定の追加で変更可能です。\n"
-
-#. i18n: format XX seconds as "XXs"
-#, python-format
-msgid "%02ds"
-msgstr "%02d秒"
-
-#. i18n: format X minutes and YY seconds as "XmYYs"
-#, python-format
-msgid "%dm%02ds"
-msgstr "%d分%02d秒"
-
-#. i18n: format X hours and YY minutes as "XhYYm"
-#, python-format
-msgid "%dh%02dm"
-msgstr "%d時間%02d分"
-
-#. i18n: format X days and YY hours as "XdYYh"
-#, python-format
-msgid "%dd%02dh"
-msgstr "%d日%02d時間"
-
-#. i18n: format X weeks and YY days as "XwYYd"
-#, python-format
-msgid "%dw%02dd"
-msgstr "%d週%02d日"
-
-#. i18n: format X years and YY weeks as "XyYYw"
-#, python-format
-msgid "%dy%02dw"
-msgstr "%d年%02d週"
-
-#, python-format
-msgid "%d %s/sec"
-msgstr "%d %s/秒"
+msgid "show progress bars for some actions (DEPRECATED)"
+msgstr "処理における進捗率の表示 (非推奨)"
+
+msgid ""
+"This extension has been merged into core, you can remove it from your "
+"config.\n"
+"See hg help config.progress for configuration options.\n"
+msgstr ""
+"本エクステンションは、 本体機能に取り込まれましたので、設定ファイルから\n"
+"progress 有効化設定を削除可能です。 進捗表示の設定詳細に関しては\n"
+"'hg help config.progress' を参照してください。\n"
 
 msgid "command to delete untracked files from the working directory"
 msgstr "作業領域中の未登録ファイルを削除するコマンド"
@@ -8670,8 +8715,8 @@
 msgstr "移動の必要はありません\n"
 
 #, python-format
-msgid "can't rebase immutable changeset %s"
-msgstr "改変不能なリビジョン %s は移動できません"
+msgid "can't rebase public changeset %s"
+msgstr "public フェーズのリビジョン %s は移動できません"
 
 #, python-format
 msgid "reopening closed branch head %s\n"
@@ -8741,8 +8786,8 @@
 msgstr "実施中の rebase による移動はありません"
 
 #, python-format
-msgid "warning: can't clean up immutable changesets %s\n"
-msgstr "警告: 改変不能なリビジョン %s は破棄できません\n"
+msgid "warning: can't clean up public changesets %s\n"
+msgstr "警告: public フェーズのリビジョン %s は破棄できません\n"
 
 msgid "warning: new changesets detected on target branch, can't strip\n"
 msgstr "警告: 想定外の新規リビジョン追加により、対象ブランチを破棄できません\n"
@@ -8850,6 +8895,10 @@
 msgid "    This command is not available when committing a merge."
 msgstr "    本コマンドをマージのコミットに使用することはできません。"
 
+#, python-format
+msgid "running non-interactively, use %s instead"
+msgstr "非対話的に実行する場合は、%s を使用してください"
+
 msgid "hg qrecord [OPTION]... PATCH [FILE]..."
 msgstr "hg qrecord [OPTION]... PATCH [FILE]..."
 
@@ -9056,6 +9105,77 @@
 msgid "share a common history between several working directories"
 msgstr "複数作業領域による履歴情報領域の共有"
 
+msgid ""
+"Automatic Pooled Storage for Clones\n"
+"-----------------------------------"
+msgstr ""
+"複製時の履歴管理情報の共有領域自動作成\n"
+"--------------------------------------"
+
+msgid ""
+"When this extension is active, :hg:`clone` can be configured to\n"
+"automatically share/pool storage across multiple clones. This\n"
+"mode effectively converts :hg:`clone` to :hg:`clone` + :hg:`share`.\n"
+"The benefit of using this mode is the automatic management of\n"
+"store paths and intelligent pooling of related repositories."
+msgstr ""
+"本エクステンションが有効な場合、 :hg:`clone` でのリポジトリ複製の際に、\n"
+"複数のローカルリポジトリ間で、 履歴情報を共有するための履歴共有領域が、\n"
+"自動的に作成できるようになります (※ 訳注: 実際の共有領域の作成の有無は、\n"
+"後述する ``share.pool`` 設定の有無に応じます)。 この場合、 :hg:`clone` は\n"
+":hg:`clone` + :hg:`share` 相当を (効率的に) 実施します。 この機能により、\n"
+"由来の同じリポジトリの履歴管理情報が、 効率的に共有管理されます。"
+
+msgid "The following ``share.`` config options influence this feature:"
+msgstr "以下の ``share.`` セクション設定が、この機能を制御します:"
+
+msgid ""
+"``share.pool``\n"
+"    Filesystem path where shared repository data will be stored. When\n"
+"    defined, :hg:`clone` will automatically use shared repository\n"
+"    storage instead of creating a store inside each clone."
+msgstr ""
+"``share.pool``\n"
+"    共有用履歴情報管理領域の作成先ディレクトリパス。 この値の設定時は、\n"
+"    :hg:`clone` 時に、 各複製リポジトリ毎に履歴情報管理領域を作成せずに、\n"
+"    このディレクトリ配下の履歴管理領域を、 共有するようになります\n"
+"    (※ 訳注: 対応する管理領域が無い場合は、 この配下に作成した上で、\n"
+"    clone 先リポジトリから、 その領域を共有するようにします)"
+
+msgid ""
+"``share.poolnaming``\n"
+"    How directory names in ``share.pool`` are constructed."
+msgstr ""
+"``share.poolnaming``\n"
+"    ``share.pool`` 配下での履歴管理領域の命名方式。"
+
+msgid ""
+"    \"identity\" means the name is derived from the first changeset in the\n"
+"    repository. In this mode, different remotes share storage if their\n"
+"    root/initial changeset is identical. In this mode, the local shared\n"
+"    repository is an aggregate of all encountered remote repositories."
+msgstr ""
+"    \"identity\" が設定されている場合、 ``share.pool`` 配下において、\n"
+"    各履歴管理領域を作成/参照する際の、 識別用ディレクトリ名として、\n"
+"    履歴の最初のリビジョンのハッシュ値が使用されます。 この設定の場合、\n"
+"    最初のリビジョンが一致するなら、 異なるリモートリポジトリの複製でも、\n"
+"    同一管理領域を共有します。 共有管理領域には、 同一由来のリポジトリの、\n"
+"    履歴情報が集約されることになります。"
+
+msgid ""
+"    \"remote\" means the name is derived from the source repository's\n"
+"    path or URL. In this mode, storage is only shared if the path or URL\n"
+"    requested in the :hg:`clone` command matches exactly to a repository\n"
+"    that was cloned before."
+msgstr ""
+"    \"remote\" が設定されている場合、 共有用履歴管理領域の作成/参照には、\n"
+"    複製元のパスや URL が使用されます (※ 訳注: 実際には、「複製元のパスや\n"
+"    URL」から算出したハッシュ値)。 :hg:`clone` に指定した複製元のパスや\n"
+"    URL が一致した場合のみ、 履歴管理領域が共有されます。"
+
+msgid "    The default naming mode is \"identity.\"\n"
+msgstr "    デフォルトの設定は \"identity.\" です。\n"
+
 msgid "do not create a working directory"
 msgstr "作業領域へのファイルの取り出しを抑止します"
 
@@ -9178,6 +9298,14 @@
 msgid "no shelved changes specified!"
 msgstr "退避情報名が無指定です!"
 
+#, python-format
+msgid "--%s expects a single shelf"
+msgstr "--%s には単一退避情報のみが指定できます"
+
+#, python-format
+msgid "cannot find shelf %s"
+msgstr "退避情報 %s が見つかりません"
+
 msgid "working directory parents do not match unshelve state"
 msgstr "作業領域の親リビジョンが、復旧開始時点と異なります"
 
@@ -9222,8 +9350,11 @@
 
 msgid ""
 "    If a shelved change is applied successfully, the bundle that\n"
-"    contains the shelved changes is deleted afterwards."
-msgstr "    退避内容の復旧が完了したなら、 対応する退避情報は破棄されます。"
+"    contains the shelved changes is moved to a backup location\n"
+"    (.hg/shelve-backup)."
+msgstr ""
+"    退避内容を復旧し終えた後、 退避情報はバックアップ領域に移動されます\n"
+"    (.hg/shelve-backup)。"
 
 msgid ""
 "    Since you can restore a shelved change on top of an arbitrary\n"
@@ -9231,23 +9362,43 @@
 "    between your changes and the commits you are unshelving onto. If\n"
 "    this occurs, you must resolve the conflict, then use\n"
 "    ``--continue`` to complete the unshelve operation. (The bundle\n"
-"    will not be deleted until you successfully complete the unshelve.)"
+"    will not be moved until you successfully complete the unshelve.)"
 msgstr ""
 "    任意の時点で退避内容を復旧できるため、 作業領域の親リビジョンと、\n"
 "    退避内容の組み合わせ次第では、 変更内容が衝突するかもしれません。\n"
 "    その場合は、 衝突解消後に :hg:`unshelve --continue` を実行して、\n"
 "    復旧処理を完了させてください。 (復旧処理が完了するまでは、\n"
-"    退避情報は破棄されません)"
+"    退避情報はバックアップ領域に移動されません)"
 
 msgid ""
 "    (Alternatively, you can use ``--abort`` to abandon an unshelve\n"
 "    that causes a conflict. This reverts the unshelved changes, and\n"
-"    does not delete the bundle.)\n"
-"    "
+"    leaves the bundle in place.)"
 msgstr ""
 "    (:hg:`unshelve --abort` 実行により、 衝突が発生した復旧処理を、\n"
 "    中止することもできます。 その場合、 作業領域中の変更は破棄されますが、\n"
-"    退避情報は保持されます)\n"
+"    退避情報は保持されます)"
+
+msgid ""
+"    After a successful unshelve, the shelved changes are stored in a\n"
+"    backup directory. Only the N most recent backups are kept. N\n"
+"    defaults to 10 but can be overridden using the ``shelve.maxbackups``\n"
+"    configuration option."
+msgstr ""
+"    退避内容を復旧し終えた後、 退避情報はバックアップ領域で保持されます。\n"
+"    バックアップ領域に保持される退避情報の最大数は ``shelve.maxbackups``\n"
+"    設定で指定できます(デフォルト値: 10)"
+
+msgid ""
+"       Timestamp in seconds is used to decide order of backups. More\n"
+"       than ``maxbackups`` backups are kept, if same timestamp\n"
+"       prevents from deciding exact order of them, for safety.\n"
+"    "
+msgstr ""
+"       バックアップの順序は、 タイムスタンプ (単位:秒) で判定します。\n"
+"       複数の退避情報が、 同一のタイムスタンプを持つ場合は、\n"
+"       順序を確定できないため、 ``maxbackups`` よりも多くの退避情報が、\n"
+"       バックアップ領域に保持される可能性もあります。\n"
 "    "
 
 msgid "cannot combine abort/continue with naming a shelved change"
@@ -9302,8 +9453,8 @@
 msgid "show patch"
 msgstr "パッチ形式での表示"
 
-msgid "interactive mode, only works while creating a shelve(EXPERIMENTAL)"
-msgstr "対話的な退避対象の選択 (退避実施時のみ指定可能) (実験的実装)"
+msgid "interactive mode, only works while creating a shelve"
+msgstr "対話的な退避対象の選択 (退避実施時のみ指定可能)"
 
 msgid "output diffstat-style summary of changes"
 msgstr "diffstat 形式の変更概要を出力"
@@ -9375,10 +9526,6 @@
 msgid "cannot specify names when using '--cleanup'"
 msgstr "退避情報の名前指定は '--cleanup' と併用できません"
 
-#, python-format
-msgid "option '--%s' may not be used when shelving a change"
-msgstr "オプション '--%s' は変更退避時には指定できません"
-
 msgid "unshelve already in progress"
 msgstr "unshelve による退避情報復旧が未完了です"
 
@@ -10028,10 +10175,6 @@
 msgstr "不正な .hg/bookmarks 記述行: %r\n"
 
 #, python-format
-msgid "branch %s not found"
-msgstr "ブランチ %s が見つかりません"
-
-#, python-format
 msgid "updating to active bookmark %s\n"
 msgstr "アクティブなブックマーク %s への更新中\n"
 
@@ -10040,6 +10183,10 @@
 msgstr "連携先での新規ブックマーク %s を追加中\n"
 
 #, python-format
+msgid "remote bookmark %s points to locally missing %s\n"
+msgstr "連携先のブックマーク %s はリポジトリに存在しない %s を参照\n"
+
+#, python-format
 msgid "importing bookmark %s\n"
 msgstr "ブックマーク %s の取り込み中\n"
 
@@ -10222,9 +10369,8 @@
 msgid "the name '%s' is reserved"
 msgstr "タグ名 '%s' はシステムで予約されています"
 
-#, python-format
-msgid "running non-interactively, use %s instead"
-msgstr "非対話的に実行する場合は、%s を使用してください"
+msgid "running non-interactively"
+msgstr "非対話的な実行中"
 
 msgid "cannot partially commit a merge (use \"hg commit\" instead)"
 msgstr "マージの部分コミットはできません (\"hg commit\" を使用してください)"
@@ -10256,11 +10402,17 @@
 msgid "cannot specify --changelog and --manifest at the same time"
 msgstr "--changelog と --manifest は同時には指定できません"
 
+msgid "cannot specify --changelog and --dir at the same time"
+msgstr "--changelog と --dir は同時には指定できません"
+
 msgid "cannot specify filename with --changelog or --manifest"
 msgstr "--changelog または --manifest とファイル名は同時に指定できません"
 
-msgid "cannot specify --changelog or --manifest without a repository"
-msgstr "--changelog または --manifest の指定はリポジトリ指定が必要です"
+msgid "cannot specify --changelog or --manifest or --dir without a repository"
+msgstr "--changelog/--manifest/--dir 指定時はリポジトリ指定が必要です"
+
+msgid "--dir can only be used on repos with treemanifest enabled"
+msgstr "--dir は treemanifest が有効なリポジトリでのみ使用可能です"
 
 msgid "invalid arguments"
 msgstr "引数が不正です"
@@ -10435,13 +10587,6 @@
 msgstr "%s: '%s' というキーはありません"
 
 #, python-format
-msgid "available styles: %s\n"
-msgstr "利用可能なスタイル: %s\n"
-
-msgid "specify a template"
-msgstr "テンプレートを指定してください"
-
-#, python-format
 msgid "found revision %s from %s\n"
 msgstr "リビジョン %s (%s) が指定日時に合致します\n"
 
@@ -10584,6 +10729,14 @@
 msgid "use 'hg update' to get a consistent checkout"
 msgstr "作業領域内容の整合性を取るには 'hg update' を実行してください"
 
+#, python-format
+msgid "can't close already inactivated backup: %s"
+msgstr "非活性化済みのバックアップは close できません: %s"
+
+#, python-format
+msgid "can't release already inactivated backup: %s"
+msgstr "非活性化済みのバックアップは release できません: %s"
+
 msgid "repository root directory or name of overlay bundle file"
 msgstr "リポジトリのルート位置、 またはバンドルファイルのパス"
 
@@ -11512,11 +11665,14 @@
 
 msgid ""
 "    Use the command :hg:`update` to switch to an existing branch. Use\n"
-"    :hg:`commit --close-branch` to mark this branch as closed."
-msgstr ""
-"    作業領域の内容を既存ブランチのもので更新する場合は :hg:`update` を\n"
-"    使用してください。 現ブランチを閉鎖する場合は\n"
-"    :hg:`commit --close-branch` を使用してください。"
+"    :hg:`commit --close-branch` to mark this branch head as closed.\n"
+"    When all heads of the branch are closed, the branch will be\n"
+"    considered closed."
+msgstr ""
+"    作業領域の内容を既存ブランチの内容で更新する場合は :hg:`update`\n"
+"    を使用します。 現ブランチヘッドを閉鎖する場合は\n"
+"    :hg:`commit --close-branch` を使用します。 当該ブランチにおける、\n"
+"    全ブランチヘッドの閉鎖をもって、 そのブランチの閉鎖とみなします。"
 
 #, python-format
 msgid "reset working directory to branch %s\n"
@@ -11903,8 +12059,8 @@
 msgid "mark new/missing files as added/removed before committing"
 msgstr "新規/不在ファイルを、コミット前に登録/除外対象化"
 
-msgid "mark a branch as closed, hiding it from the branch list"
-msgstr "ブランチを閉鎖し、 ブランチ一覧での表示から除外"
+msgid "mark a branch head as closed"
+msgstr "ブランチヘッドを閉鎖します"
 
 msgid "amend the parent of the working directory"
 msgstr "作業領域の親リビジョンの改変"
@@ -11953,6 +12109,15 @@
 "    入力したメッセージは ``.hg/last-message.txt`` に保存されます。"
 
 msgid ""
+"    The --close-branch flag can be used to mark the current branch\n"
+"    head closed. When all heads of a branch are closed, the branch\n"
+"    will be considered closed and no longer listed."
+msgstr ""
+"    --close-branch 指定により、 現ブランチヘッドが閉鎖されます。\n"
+"    当該ブランチにおける、 全ブランチヘッドの閉鎖をもって、\n"
+"    そのブランチの閉鎖とみなし、 以後は一覧に列挙されません。"
+
+msgid ""
 "    The --amend flag can be used to amend the parent of the\n"
 "    working directory with a new commit that contains the changes\n"
 "    in the parent in addition to those currently reported by :hg:`status`,\n"
@@ -12314,6 +12479,9 @@
 msgid "open manifest"
 msgstr "マニフェストの読み込み"
 
+msgid "open directory manifest"
+msgstr "ディレクトリマニフェストの読み込み"
+
 msgid "-c|-m|FILE REV"
 msgstr "-c|-m|FILE REV"
 
@@ -12664,6 +12832,9 @@
 "    ファイル内容の確認を強制させることができます。\n"
 "    "
 
+msgid "rebuild the fncache file"
+msgstr "fncache ファイルの再構築"
+
 msgid "revision to debug"
 msgstr "デバッグ対象リビジョン"
 
@@ -13113,6 +13284,9 @@
 "    本コマンドでの登録除外は、 現ブランチにおける登録除外のみを意味し、\n"
 "    履歴そのものは保持され続けますし、 作業領域からも削除されません。"
 
+msgid "    To delete the file from the working directory, see :hg:`remove`."
+msgstr "    作業領域中のファイルを削除する場合は :hg:`remove` を使います。"
+
 msgid "    To undo a forget before the next commit, see :hg:`add`."
 msgstr ""
 "    登録除外操作のコミット前取り消しは、 :hg:`help add` を参照して\n"
@@ -13671,6 +13845,18 @@
 "    メタデータのみが記録された、 新規リビジョンを作成します。"
 
 msgid ""
+"    It is possible to use external patch programs to perform the patch\n"
+"    by setting the ``ui.patch`` configuration option. For the default\n"
+"    internal tool, the fuzz can also be configured via ``patch.fuzz``.\n"
+"    See :hg:`help config` for more information about configuration\n"
+"    files and how to use these options."
+msgstr ""
+"    ``ui.patch`` 設定により、 外部プログラムでのパッチ適用も可能です。\n"
+"    デフォルトのパッチ適用で使用される Mercurial の内部処理でも、\n"
+"    ``patch.fuzz`` 設定により fuzz 挙動を制御可能です。 設定ファイルや、\n"
+"    上記設定項目の詳細に関しては :hg:`help config` を参照してください。"
+
+msgid ""
 "    To read a patch from standard input, use \"-\" as the patch name. If\n"
 "    a URL is specified, the patch will be downloaded from it.\n"
 "    See :hg:`help dates` for a list of formats valid for -d/--date."
@@ -13707,6 +13893,22 @@
 msgstr "          hg import --exact proposed-fix.patch"
 
 msgid ""
+"      - use an external tool to apply a patch which is too fuzzy for\n"
+"        the default internal tool."
+msgstr ""
+"      - 内部パッチ適用ツールでは fuzz 要因で適用が難しいパッチを、 \n"
+"        外部パッチツールを使って適用"
+
+msgid "          hg import --config ui.patch=\"patch --merge\" fuzzy.patch"
+msgstr "          hg import --config ui.patch=\"patch --merge\" fuzzy.patch"
+
+msgid "      - change the default fuzzing from 2 to a less strict 7"
+msgstr "      - デフォルトの fuzz 許容量 2 から緩和して 7 に設定"
+
+msgid "          hg import --config ui.fuzz=7 fuzz.patch"
+msgstr "          hg import --config ui.fuzz=7 fuzz.patch"
+
+msgid ""
 "    Returns 0 on success, 1 on partial success (see --partial).\n"
 "    "
 msgstr ""
@@ -14322,9 +14524,6 @@
 msgstr ""
 "    関連情報は :hg:`summary` や :hg:`help revsets` を参照してください。"
 
-msgid "can only specify an explicit filename"
-msgstr "明示的なファイル名以外は指定できません"
-
 #, python-format
 msgid "'%s' not found in manifest!"
 msgstr "'%s' は管理対象ではありません"
@@ -14403,14 +14602,14 @@
 msgid "target revision"
 msgstr "対象リビジョン"
 
-msgid "[-p|-d|-s] [-f] [-r] REV..."
-msgstr "[-p|-d|-s] [-f] [-r] REV..."
+msgid "[-p|-d|-s] [-f] [-r] [REV...]"
+msgstr "[-p|-d|-s] [-f] [-r] [REV...]"
 
 msgid "set or show the current phase name"
 msgstr "現行フェーズ状態の変更または表示"
 
-msgid "    With no argument, show the phase name of specified revisions."
-msgstr "    引数無しの場合、 指定リビジョンのフェーズ名を表示します。"
+msgid "    With no argument, show the phase name of the current revision(s)."
+msgstr "    引数無しの場合、 作業領域の親リビジョンのフェーズ名を表示します。"
 
 msgid ""
 "    With one of -p/--public, -d/--draft or -s/--secret, change the\n"
@@ -14431,11 +14630,16 @@
 
 msgid ""
 "    Returns 0 on success, 1 if no phases were changed or some could not\n"
-"    be changed.\n"
-"    "
+"    be changed."
 msgstr ""
 "    成功時のコマンドの終了値は 0、 フェーズ状態変更が無い、あるいは、\n"
-"    変更に失敗した場合は 1 です。\n"
+"    変更に失敗した場合は 1 です。"
+
+msgid ""
+"    (For more information about the phases concept, see :hg:`help phases`.)\n"
+"    "
+msgstr ""
+"    (フェーズに関する詳細は、 :hg:`help phases` を参照してください)\n"
 "    "
 
 msgid "only one phase can be specified"
@@ -15298,10 +15502,10 @@
 
 msgid ""
 "    This generates a brief summary of the working directory state,\n"
-"    including parents, branch, commit status, and available updates."
-msgstr ""
-"    親リビジョン、 ブランチ、 想定コミット結果や、 作業領域更新候補等を含む\n"
-"    作業領域状態の概要を表示します。"
+"    including parents, branch, commit status, phase and available updates."
+msgstr ""
+"    親リビジョン、 ブランチ、 想定コミット結果、 フェーズ、 \n"
+"    作業領域更新候補等を含む、 作業領域状態の概要を表示します。"
 
 msgid ""
 "    With the --remote option, this will check the default paths for\n"
@@ -15403,6 +15607,18 @@
 msgid "update: %d new changesets, %d branch heads (merge)\n"
 msgstr "update 候補:  %d 個の新規リビジョン、%d 個のブランチヘッド(merge)\n"
 
+#, python-format
+msgid "%d draft"
+msgstr "%d draft リビジョン"
+
+#, python-format
+msgid "%d secret"
+msgstr "%d secret リビジョン"
+
+#, python-format
+msgid "phases: %s\n"
+msgstr "フェーズ:     %s\n"
+
 msgid "1 or more incoming"
 msgstr "取り込み候補リビジョンあり"
 
@@ -15610,12 +15826,12 @@
 msgid ""
 "    Update the repository's working directory to the specified\n"
 "    changeset. If no changeset is specified, update to the tip of the\n"
-"    current named branch and move the current bookmark (see :hg:`help\n"
+"    current named branch and move the active bookmark (see :hg:`help\n"
 "    bookmarks`)."
 msgstr ""
 "    指定されたリビジョン時点の内容で、 作業領域を更新します。\n"
 "    対象リビジョンが指定されない場合、 作業領域と同じ名前付きブランチの、\n"
-"    最新リビジョンで更新した上で、 ブックマークの更新を行います。\n"
+"    最新リビジョンで更新した上で、 アクティブブックマークを更新します。\n"
 "    (詳細は :hg:`help bookmarks` 参照)"
 
 msgid ""
@@ -15700,13 +15916,13 @@
 msgstr "-c/--check と -C/--clean は併用できません"
 
 #, python-format
+msgid "(leaving bookmark %s)\n"
+msgstr "(ブックマーク %s を非アクティブ化中)\n"
+
+#, python-format
 msgid "(activating bookmark %s)\n"
 msgstr "(ブックマーク %s をアクティブ化中)\n"
 
-#, python-format
-msgid "(leaving bookmark %s)\n"
-msgstr "(ブックマーク %s を非アクティブ化中)\n"
-
 msgid "verify the integrity of the repository"
 msgstr "リポジトリの整合性検証"
 
@@ -15864,6 +16080,9 @@
 msgid "the python curses/wcurses module is not available/installed"
 msgstr "Python の curses/wcurses モジュールが利用できません"
 
+msgid "confirm"
+msgstr ""
+
 msgid "starting interactive selection\n"
 msgstr "対話的な選択の開始\n"
 
@@ -15901,6 +16120,9 @@
 msgid "user quit"
 msgstr "ユーザの指示により終了します"
 
+msgid "this diff is too large to be displayed"
+msgstr "差分量が多すぎて表示できません"
+
 #, python-format
 msgid "invalid character in dag description: %s..."
 msgstr "dag 記述に不正な文字が使われています: %s..."
@@ -16070,6 +16292,9 @@
 msgid "abort: remote error:\n"
 msgstr "中止: 連携エラー:\n"
 
+msgid "abort: remote error\n"
+msgstr "中止: 連携エラー\n"
+
 #, python-format
 msgid "abort: %s!\n"
 msgstr "中止: %s!\n"
@@ -16233,6 +16458,13 @@
 "lsprof が利用できません - http://codespeak.net/svn/user/arigo/hack/misc/"
 "lsprof/からインストールしてください"
 
+msgid ""
+"flamegraph not available - install from https://github.com/evanhempel/python-"
+"flamegraph"
+msgstr ""
+"flamegraph が使用できません - https://github.com/evanhempel/python-"
+"flamegraph からインストールしてください"
+
 msgid "statprof not available - install using \"easy_install statprof\""
 msgstr ""
 "statprof が利用できません - \"easy_install statprof\"でインストールしてくださ"
@@ -16305,12 +16537,16 @@
 msgstr "利用可能な共通のバンドル形式バージョンがありません"
 
 #, python-format
+msgid "updating %s to public failed"
+msgstr "%s フェーズの public 化に失敗"
+
+#, python-format
 msgid "server ignored update of %s to public!\n"
 msgstr "連携先で、%s の public 化が無視されました!\n"
 
 #, python-format
 msgid "updating %s to public failed!\n"
-msgstr "%s のフェーズの public 化に失敗!\n"
+msgstr "%s フェーズの public 化に失敗!\n"
 
 #, python-format
 msgid "server ignored bookmark %s update\n"
@@ -16338,6 +16574,23 @@
 msgid "unsupported getbundle arguments: %s"
 msgstr "getbundle プロトコルに未知の引数が指定されました: %s"
 
+msgid "streaming all changes\n"
+msgstr "全変更を転送中\n"
+
+msgid "unexpected response from remote server:"
+msgstr "連携先のサーバから予期しない返信:"
+
+#, python-format
+msgid "%d files to transfer, %s of data\n"
+msgstr "%d 個のファイル転送(データ量 %s)\n"
+
+msgid "clone"
+msgstr "複製"
+
+#, python-format
+msgid "transferred %s in %.1f seconds (%s/sec)\n"
+msgstr "%s を %.1f 秒で送信しました (%s/秒)\n"
+
 #, python-format
 msgid "*** failed to import extension %s from %s: %s\n"
 msgstr "*** %s のインポートに失敗 (%s): %s\n"
@@ -16520,6 +16773,9 @@
 msgid "syntax error"
 msgstr "文法エラー"
 
+msgid "invalid token"
+msgstr "不正な記述"
+
 msgid "missing argument"
 msgstr "引数がありません"
 
@@ -16786,11 +17042,12 @@
 msgid "subrepo requires a pattern or no arguments"
 msgstr "subrepo の引数は、パターン指定か、引数無しです"
 
-msgid "invalid token"
-msgstr "不正な記述"
-
-msgid "custom templates not yet supported"
-msgstr "現在カスタムテンプレートは未サポートです"
+#, python-format
+msgid "available styles: %s\n"
+msgstr "利用可能なスタイル: %s\n"
+
+msgid "specify a template"
+msgstr "テンプレートを指定してください"
 
 msgid "starting revisions are not directly related"
 msgstr "開始リビジョンと直接の関連がありません"
@@ -17861,8 +18118,8 @@
 "        HG: --\n"
 "        HG: user: {author}\\n{ifeq(p2rev, \"-1\", \"\",\n"
 "       \"HG: branch merge\\n\")\n"
-"       }HG: branch '{branch}'\\n{if(currentbookmark,\n"
-"       \"HG: bookmark '{currentbookmark}'\\n\")  }{subrepos %\n"
+"       }HG: branch '{branch}'\\n{if(activebookmark,\n"
+"       \"HG: bookmark '{activebookmark}'\\n\")   }{subrepos %\n"
 "       \"HG: subrepo {subrepo}\\n\"              }{file_adds %\n"
 "       \"HG: added {file}\\n\"                   }{file_mods %\n"
 "       \"HG: changed {file}\\n\"                 }{file_dels %\n"
@@ -17876,8 +18133,8 @@
 "       HG: --\n"
 "       HG: ユーザ: {author}\\n{ifeq(p2rev, \"-1\", \"\",\n"
 "      \"HG: ブランチのマージ\\n\")\n"
-"      }HG: ブランチ '{branch}'\\n{if(currentbookmark,\n"
-"      \"HG: ブックマーク '{currentbookmark}'\\n\")  }{subrepos %\n"
+"      }HG: ブランチ '{branch}'\\n{if(activebookmark,\n"
+"      \"HG: ブックマーク '{activebookmark}'\\n\")  }{subrepos %\n"
 "      \"HG: サブリポジトリ {subrepo}\\n\"           }{file_adds %\n"
 "      \"HG: {file} を追加\\n\"                      }{file_mods %\n"
 "      \"HG: {file} を変更\\n\"                      }{file_dels %\n"
@@ -18411,14 +18668,14 @@
 
 msgid ""
 "  [extensions]\n"
-"  # (the progress extension will get loaded from Mercurial's path)\n"
-"  progress =\n"
+"  # (the color extension will get loaded from Mercurial's path)\n"
+"  color =\n"
 "  # (this extension will get loaded from the file specified)\n"
 "  myfeature = ~/.hgext/myfeature.py"
 msgstr ""
 "  [extensions]\n"
-"  # (progress エクステンションは Mercurial 同梱のものが読み込まれます)\n"
-"  progress =\n"
+"  # (color エクステンションは Mercurial 同梱のものが読み込まれます)\n"
+"  color =\n"
 "  # (以下のエクステンションは指定のパスから読み込まれます)\n"
 "  myfeature = ~/.hgext/myfeature.py"
 
@@ -19403,11 +19660,20 @@
 "    デフォルト値: strict"
 
 msgid ""
-"\n"
+"``fuzz``\n"
+"    The number of lines of 'fuzz' to allow when applying patches. This\n"
+"    controls how much context the patcher is allowed to ignore when\n"
+"    trying to apply a patch.\n"
+"    Default: 2"
+msgstr ""
+"``fuzz``\n"
+"    パッチ適用での 'fuzz' における許容行数。 パッチ適用において、\n"
+"    無視可能なコンテキスト行数を制御できます。 デフォルト値: 2"
+
+msgid ""
 "``paths``\n"
 "---------"
 msgstr ""
-"\n"
 "``paths``\n"
 "---------"
 
@@ -19665,6 +19931,102 @@
 "    詳細プロファイラ ``ls`` 固有の設定。 デフォルト値: 5"
 
 msgid ""
+"``progress``\n"
+"------------"
+msgstr ""
+"``progress``\n"
+"------------"
+
+msgid ""
+"Mercurial commands can draw progress bars that are as informative as\n"
+"possible. Some progress bars only offer indeterminate information, while "
+"others\n"
+"have a definite end point."
+msgstr ""
+"Mercurial コマンドは、 処理の進捗率を表示可能です。 多くの処理において、\n"
+"明確な処理総量に基づいて、 進捗表示が行われますが、 一部の処理では、\n"
+"不確定な情報に基づいた進捗率が表示される場合があります。"
+
+msgid ""
+"``delay``\n"
+"    Number of seconds (float) before showing the progress bar. (default: 3)"
+msgstr ""
+"``delay``\n"
+"    進捗表示開始までの秒数(浮動小数点) (デフォルト値: 3.0)"
+
+msgid ""
+"``changedelay``\n"
+"    Minimum delay before showing a new topic. When set to less than 3 * "
+"refresh,\n"
+"    that value will be used instead. (default: 1)"
+msgstr ""
+"``changedelay``\n"
+"    次のトピック表示までの最小遅延。 refresh の3倍以上の値は無視されます。\n"
+"    (デフォルト値: 1.0)"
+
+msgid ""
+"``refresh``\n"
+"    Time in seconds between refreshes of the progress bar. (default: 0.1)"
+msgstr ""
+"``refresh``\n"
+"    進捗表示更新間隔の秒数 (デフォルト値: 0.1)"
+
+msgid ""
+"``format``\n"
+"    Format of the progress bar."
+msgstr ""
+"``format``\n"
+"    進捗表示の形式指定。"
+
+msgid ""
+"    Valid entries for the format field are ``topic``, ``bar``, ``number``,\n"
+"    ``unit``, ``estimate``, speed, and item. item defaults to the last 20\n"
+"    characters of the item, but this can be changed by adding either ``-"
+"``\n"
+"    which would take the last num characters, or ``+`` for the first "
+"num\n"
+"    characters."
+msgstr ""
+"    format 指定で有効な要素は ``topic`` (現処理内容), ``bar`` (バー表示),\n"
+"    ``number`` (終了数), ``unit`` (対象単位), ``estimate`` (残予想時間),\n"
+"    ``speed`` (処理速度), ``item`` (現処理対象) です。 デフォルトの item\n"
+"    は対象の末尾 20 文字ですが、 ``-`` (末尾 num 文字) や ``+``\n"
+"    (冒頭 num 文字) 指定の追加で変更可能です。"
+
+msgid "    (default: Topic bar number estimate)"
+msgstr "    (デフォルト値: topic bar number estimate)"
+
+msgid ""
+"``width``\n"
+"    If set, the maximum width of the progress information (that is, min"
+"(width,\n"
+"    term width) will be used)"
+msgstr ""
+"``width``\n"
+"    進捗情報表示の最大幅 (画面幅と比較して、 小さい方の値を採用)"
+
+msgid ""
+"``clear-complete``\n"
+"    clear the progress bar after it's done (default to True)"
+msgstr ""
+"``clear-complete``\n"
+"    処理終了後の進捗表示クリアの要否 (デフォルト値: True)"
+
+msgid ""
+"``disable``\n"
+"    If true, don't show a progress bar"
+msgstr ""
+"``disable``\n"
+"    true 設定時は、 進捗表示を抑止"
+
+msgid ""
+"``assume-tty``\n"
+"    If true, ALWAYS show a progress bar, unless disable is given"
+msgstr ""
+"``assume-tty``\n"
+"    true 設定時は、disable による禁止が無い限り、 常に進捗表示を実施"
+
+msgid ""
 "``revsetalias``\n"
 "---------------"
 msgstr ""
@@ -19732,6 +20094,15 @@
 "    データの完全性を確認します。 デフォルト値: False"
 
 msgid ""
+"``maxhttpheaderlen``\n"
+"    Instruct HTTP clients not to send request headers longer than this\n"
+"    many bytes. Default is 1024."
+msgstr ""
+"``maxhttpheaderlen``\n"
+"    HTTP クライアントに対して、 このサイズ以上のヘッダを送信しないように、\n"
+"    指示します (デフォルト値: 1024)"
+
+msgid ""
 "``smtp``\n"
 "--------"
 msgstr ""
@@ -20091,6 +20462,32 @@
 "    文字コード混在による深刻な問題を生じます。"
 
 msgid ""
+"``patch``\n"
+"    An optional external tool that ``hg import`` and some extensions\n"
+"    will use for applying patches. By default Mercurial uses an\n"
+"    internal patch utility. The external tool must work as the common\n"
+"    Unix ``patch`` program. In particular, it must accept a ``-p``\n"
+"    argument to strip patch headers, a ``-d`` argument to specify the\n"
+"    current directory, a file name to patch, and a patch file to take\n"
+"    from stdin."
+msgstr ""
+"``patch``\n"
+"    :hg:`import` やエクステンションによるパッチ適用で使用する外部ツール。\n"
+"    通常のパッチ適用は Mercurial 内部で処理されます。 外部ツールは、\n"
+"    Unix の ``patch`` コマンドと同等の挙動が要求されます。 最低限、\n"
+"    パス指定の冒頭要素除去の ``-p`` 、起点ディレクトリ指定の ``-d``\n"
+"    といったオプションの受理や、 標準入力からのパッチファイル入力が、\n"
+"    必要とされます。"
+
+msgid ""
+"    It is possible to specify a patch tool together with extra\n"
+"    arguments. For example, setting this option to ``patch --merge``\n"
+"    will use the ``patch`` program with its 2-way merge option."
+msgstr ""
+"    外部ツールは固有引数と一緒に指定可能です。 例えば ``patch --merge``\n"
+"    指定により、 2-way マージオプション付きで ``patch`` が実行されます。"
+
+msgid ""
 "``portablefilenames``\n"
 "    Check for portable filenames. Can be ``warn``, ``ignore`` or ``abort``.\n"
 "    Default is ``warn``.\n"
@@ -20134,15 +20531,6 @@
 "    clone/push/pull 処理における遠隔実行コマンド。 デフォルト値: ``hg``"
 
 msgid ""
-"``reportoldssl``\n"
-"    Warn if an SSL certificate is unable to be used due to using Python\n"
-"    2.5 or earlier. True or False. Default is True."
-msgstr ""
-"``reportoldssl``\n"
-"    Python 2.5 以前の使用により、 SSL 証明書の処理ができない場合の、\n"
-"    警告表示の有無を指定する真偽値。 デフォルト値: True"
-
-msgid ""
 "``report_untrusted``\n"
 "    Warn if a ``.hg/hgrc`` file is ignored due to not being owned by a\n"
 "    trusted user or group. True or False. Default is True."
@@ -20485,6 +20873,13 @@
 "    hgweb におけるキャッシュ利用の可否。 デフォルト値: True"
 
 msgid ""
+"``certificate``\n"
+"    Certificate to use when running :hg:`serve`."
+msgstr ""
+"``certificate``\n"
+"    :hg:`serve` 実行時に使用する証明書。"
+
+msgid ""
 "``collapse``\n"
 "    With ``descend`` enabled, repositories in subdirectories are shown at\n"
 "    a single level alongside repositories in the current path. With\n"
@@ -22809,6 +23204,16 @@
 "パターン記述を ``^`` で開始してください。"
 
 msgid ""
+"Subdirectories can have their own .hgignore settings by adding\n"
+"``subinclude:path/to/subdir/.hgignore`` to the root ``.hgignore``. See\n"
+":hg:`help patterns` for details on ``subinclude:`` and ``include:``."
+msgstr ""
+"リポジトリルートの ``.hgignore`` に ``subinclude:path/to/subdir/.hgignore``\n"
+"記述を追加することで、 各サブディレクトリ固有の .hgignore 設定が可能です。\n"
+"``subinclude:`` と ``include:`` の詳細は :hg:`help patterns`\n"
+"を参照してください。"
+
+msgid ""
 "  Patterns specified in other than ``.hgignore`` are always rooted.\n"
 "  Please see :hg:`help patterns` for details."
 msgstr ""
@@ -23424,6 +23829,21 @@
 "file パターンとして扱われます。"
 
 msgid ""
+"To read a set of patterns from a file, use ``include:`` or ``subinclude:``.\n"
+"``include:`` will use all the patterns from the given file and treat them as "
+"if\n"
+"they had been passed in manually.  ``subinclude:`` will only apply the "
+"patterns\n"
+"against files that are under the subinclude file's directory. See :hg:`help\n"
+"hgignore` for details on the format of these files."
+msgstr ""
+"パターン指定をファイルから読み込む場合は、 ``include:`` や ``subinclude:``\n"
+"を使用します。 ``include:`` で読み込まれた内容は、 手動での直接指定と、\n"
+"同じ効果を持ちます。 ``subinclude:`` で読み込まれた内容は、\n"
+"読み込み対象ファイルのディレクトリと、 その配下にのみ適用されます。\n"
+"パターンファイルの形式詳細は :hg:`help hgignore` を参照してください。"
+
+msgid ""
 "All patterns, except for ``glob:`` specified in command line (not for\n"
 "``-I`` or ``-X`` options), can match also against directories: files\n"
 "under matched directories are treated as matched."
@@ -23471,7 +23891,7 @@
 msgstr "  re:.*\\.c$      任意のディレクトリの、 名前が \".c\" で終わるもの"
 
 msgid "File examples::"
-msgstr "ファイル読み込み例::"
+msgstr "一覧指定例::"
 
 msgid ""
 "  listfile:list.txt  read list from list.txt with one file pattern per line\n"
@@ -23480,8 +23900,22 @@
 "  listfile:list.txt  1行 1 file パターンで list.txt から読み込み\n"
 "  listfile0:list.txt null 文字区切りで file パターンを読み込み"
 
-msgid "See also :hg:`help filesets`.\n"
-msgstr ":hg:`help filesets` も参照してください。\n"
+msgid "See also :hg:`help filesets`."
+msgstr ":hg:`help filesets` も参照してください。"
+
+msgid "Include examples::"
+msgstr "ファイル読み込み例::"
+
+msgid ""
+"  include:path/to/mypatternfile    reads patterns to be applied to all "
+"paths\n"
+"  subinclude:path/to/subignorefile reads patterns specifically for paths in "
+"the\n"
+"                                   subdirectory\n"
+msgstr ""
+"  include:path/to/mypatternfile    読み込みパターンはリポジトリ全体に適用\n"
+"  subinclude:path/to/subignorefile 読み込みパターンはサブディレクトリ\n"
+"                                   配下にのみ適用\n"
 
 msgid ""
 "What are phases?\n"
@@ -24222,13 +24656,17 @@
 
 msgid ""
 ":files: files does not recurse into subrepos unless -S/--subrepos is\n"
-"    specified.  Git and Subversion subrepositories are currently\n"
-"    silently ignored."
-msgstr ""
-":files: -S/--subrepos 指定が無い限り、 ファイル一覧表示は、\n"
-"    再帰的には実施されません。 なお、 サブリポジトリが Git または\n"
-"    Subversion 形式の場合、 現状では、 何の表示も無しに、\n"
-"    一覧表示要求を無視します。"
+"    specified.  However, if you specify the full path of a file or\n"
+"    directory in a subrepo, it will be displayed even without\n"
+"    -S/--subrepos being specified.  Git and Subversion subrepositories\n"
+"    are currently silently ignored."
+msgstr ""
+":file: -S/--subrepos 指定が無い限り、 管理対象ファイルの一覧表示は、\n"
+"    再帰的には実施されません。 但し、 -S/--subrepos 指定が無くても、\n"
+"    サブリポジトリ中のファイルへのパスが、 直接指定された場合は、\n"
+"    管理対象一覧表示が実施されます。 なお、 サブリポジトリが\n"
+"    Git/Subversion 形式の場合、 現状では、 何の表示も無しに、\n"
+"    表示要求を無視します。"
 
 msgid ""
 ":forget: forget currently only handles exact file matches in subrepos.\n"
@@ -24443,6 +24881,16 @@
 msgid "- expr % \"{template}\""
 msgstr "- expr % \"{template}\""
 
+msgid ""
+"As seen in the above example, \"{template}\" is interpreted as a template.\n"
+"To prevent it from being interpreted, you can use an escape character "
+"\"\\{\"\n"
+"or a raw string prefix, \"r'...'\"."
+msgstr ""
+"上記例で見られるように、 \"{template}\" はテンプレートとして解釈されます。\n"
+"テンプレートとしての解釈を抑止する場合は、 \"\\{\" で開始するか、\n"
+"文字列指定の冒頭に ``r`` を付けて下さい (例: \"r'...'\")"
+
 msgid "Some sample command line templates:"
 msgstr "コマンドラインでのテンプレート指定例:"
 
@@ -24473,8 +24921,8 @@
 msgid "- Output the description set to a fill-width of 30::"
 msgstr "- コミットログの各行を30桁で揃えて出力::"
 
-msgid "   $ hg log -r 0 --template \"{fill(desc, '30')}\""
-msgstr "   $ hg log -r 0 --template \"{fill(desc, '30')}\""
+msgid "   $ hg log -r 0 --template \"{fill(desc, 30)}\""
+msgstr "   $ hg log -r 0 --template \"{fill(desc, 30)}\""
 
 msgid "- Use a conditional to test for the default branch::"
 msgstr "- default ブランチか否かで表示内容を切り替え::"
@@ -24514,15 +24962,15 @@
 msgid "   $ hg log -r 0 --template \"{join(extras, '\\n')}\\n\""
 msgstr "   $ hg log -r 0 --template \"{join(extras, '\\n')}\\n\""
 
-msgid "- Mark the current bookmark with '*'::"
-msgstr "- 現在アクティブなブックマークに '*' を表示::"
-
-msgid ""
-"   $ hg log --template \"{bookmarks % '{bookmark}{ifeq(bookmark, current, \\"
-"\"*\\\")} '}\\n\""
-msgstr ""
-"   $ hg log --template \"{bookmarks % '{bookmark}{ifeq(bookmark, current, \\"
-"\"*\\\")} '}\\n\""
+msgid "- Mark the active bookmark with '*'::"
+msgstr "- アクティブなブックマークに '*' を表示::"
+
+msgid ""
+"   $ hg log --template \"{bookmarks % '{bookmark}{ifeq(bookmark, active, "
+"'*')} '}\\n\""
+msgstr ""
+"   $ hg log --template \"{bookmarks % '{bookmark}{ifeq(bookmark, active, "
+"'*')} '}\\n\""
 
 msgid "- Mark the working copy parent with '@'::"
 msgstr "- 作業領域の親リビジョンに '@' を表示::"
@@ -24533,16 +24981,15 @@
 msgid "- Show only commit descriptions that start with \"template\"::"
 msgstr "- \"template\" で始まるコミットログのみを表示::"
 
-msgid ""
-"   $ hg log --template \"{startswith(\\\"template\\\", firstline(desc))}\\n\""
-msgstr ""
-"   $ hg log --template \"{startswith(\\\"template\\\", firstline(desc))}\\n\""
+msgid "   $ hg log --template \"{startswith('template', firstline(desc))}\\n\""
+msgstr ""
+"   $ hg log --template \"{startswith('template', firstline(desc))}\\n\""
 
 msgid "- Print the first word of each line of a commit message::"
 msgstr "- コミットログの最初の語のみを表示::"
 
-msgid "   $ hg log --template \"{word(\\\"0\\\", desc)}\\n\"\n"
-msgstr "   $ hg log --template \"{word(\\\"0\\\", desc)}\\n\"\n"
+msgid "   $ hg log --template \"{word(0, desc)}\\n\"\n"
+msgstr "   $ hg log --template \"{word(0, desc)}\\n\"\n"
 
 msgid "Valid URLs are of the form::"
 msgstr "有効な URL 指定は以下の形式です::"
@@ -24713,6 +25160,19 @@
 msgid "updating working directory\n"
 msgstr "作業領域の更新中\n"
 
+msgid ""
+"src repository does not support revision lookup and so doesn't support clone "
+"by revision"
+msgstr "指定の複製元は、 リビジョン指定付き複製が未サポートです"
+
+#, python-format
+msgid "(sharing from existing pooled repository %s)\n"
+msgstr "(既存の共有用履歴管理領域 %s を使用)\n"
+
+#, python-format
+msgid "(sharing from new pooled repository %s)\n"
+msgstr "(共有用履歴管理領域 %s を新規作成)\n"
+
 #, python-format
 msgid "destination directory: %s\n"
 msgstr "複製先ディレクトリ: %s\n"
@@ -24728,10 +25188,11 @@
 msgid "destination '%s' is not empty"
 msgstr "複製先 '%s' は空ではありません"
 
-msgid ""
-"src repository does not support revision lookup and so doesn't support clone "
-"by revision"
-msgstr "指定の複製元は、 リビジョン指定付き複製が未サポートです"
+msgid "(not using pooled storage: remote appears to be empty)\n"
+msgstr "(共有用履歴管理領域は使用しません: 複製元の履歴が空です)\n"
+
+msgid "(not using pooled storage: unable to resolve identity of remote)\n"
+msgstr "(共有用履歴管理領域は使用しません: 複製元の履歴を参照できません)\n"
 
 msgid "clone from remote to remote not supported"
 msgstr "リモートからリモートへの複製は未サポートです"
@@ -24761,6 +25222,13 @@
 msgid "(branch merge, don't forget to commit)\n"
 msgstr "(マージ結果の commit を忘れずに)\n"
 
+msgid "checking subrepo links\n"
+msgstr "サブリポジトリの確認中\n"
+
+#, python-format
+msgid ".hgsubstate is corrupt in revision %s\n"
+msgstr "リビジョン %s における .hgsubstate が不正です\n"
+
 #, python-format
 msgid "websub: invalid pattern for %s: %s\n"
 msgstr "websub: %s のパターンが不正です: %s\n"
@@ -25379,14 +25847,6 @@
 msgstr "http リポジトリの新規作成はできません"
 
 #, python-format
-msgid "ignoring invalid syntax '%s'"
-msgstr "文法不正の '%s' を無視します"
-
-#, python-format
-msgid "skipping unreadable ignore file '%s': %s\n"
-msgstr "読込不可の ignore ファイル '%s' をスキップします: %s\n"
-
-#, python-format
 msgid "repository %s not found"
 msgstr "リポジトリ '%s' が見つかりません"
 
@@ -25529,9 +25989,6 @@
 msgid "committing changelog\n"
 msgstr "変更履歴の記録中\n"
 
-msgid "unexpected response from remote server:"
-msgstr "連携先のサーバから予期しない返信:"
-
 msgid "operation forbidden by server"
 msgstr "その処理はサーバで禁止されています"
 
@@ -25541,20 +25998,6 @@
 msgid "the server sent an unknown error code"
 msgstr "サーバが未知のエラーコードを返却しました"
 
-msgid "streaming all changes\n"
-msgstr "全変更を転送中\n"
-
-#, python-format
-msgid "%d files to transfer, %s of data\n"
-msgstr "%d 個のファイル転送(データ量 %s)\n"
-
-msgid "clone"
-msgstr "複製"
-
-#, python-format
-msgid "transferred %s in %.1f seconds (%s/sec)\n"
-msgstr "%s を %.1f 秒で送信しました (%s/秒)\n"
-
 #, python-format
 msgid "pushkey-abort: %s\n"
 msgstr "pushkey 処理の中止: %s\n"
@@ -25625,6 +26068,14 @@
 msgstr "一覧ファイル(%s)が読み込めません"
 
 #, python-format
+msgid "skipping unreadable pattern file '%s': %s\n"
+msgstr "読込不可のパターンファイル '%s' をスキップします: %s\n"
+
+#, python-format
+msgid "%s: invalid pattern (%s): %s"
+msgstr "%s: 不正パターン (%s): %s"
+
+#, python-format
 msgid "invalid pattern (%s): %s"
 msgstr "不正パターン (%s): %s"
 
@@ -25632,6 +26083,10 @@
 msgstr "不正パターン"
 
 #, python-format
+msgid "%s: ignoring invalid syntax '%s'\n"
+msgstr "%s: 文法不正の '%s' を無視します\n"
+
+#, python-format
 msgid "diff context lines count must be an integer, not %r"
 msgstr "差分コンテキストでの行数指定が不正です: %r"
 
@@ -25706,6 +26161,10 @@
 msgid "getting %s to %s\n"
 msgstr "%s から %s に複製中\n"
 
+#, python-format
+msgid "branch %s not found"
+msgstr "ブランチ %s が見つかりません"
+
 msgid "merging with a working directory ancestor has no effect"
 msgstr "作業領域の祖先とのマージは意味がありません"
 
@@ -25840,6 +26299,22 @@
 msgstr "不正な挿入辞: %s"
 
 #, python-format
+msgid "%(func)s takes at most %(nargs)d arguments"
+msgstr "%(func)s の引数は最大 %(nargs)d 個です"
+
+#, python-format
+msgid "%(func)s got an invalid argument"
+msgstr "%(func)s の引数が不正です"
+
+#, python-format
+msgid "%(func)s got an unexpected keyword argument '%(key)s'"
+msgstr "%(func)s に予期せぬキーワード引数 '%(key)s' が指定されました"
+
+#, python-format
+msgid "%(func)s got multiple values for keyword argument '%(key)s'"
+msgstr "%(func)s のキーワード引数 '%(key)s' が複数の値を持ちます"
+
+#, python-format
 msgid "%d out of %d hunks FAILED -- saving rejects to file %s\n"
 msgstr "%d 個の差分(総数 %d)が適用失敗 -- 却下差分は %s に保存\n"
 
@@ -25889,6 +26364,9 @@
 msgid "%d hunks, %d lines changed\n"
 msgstr "%d 個の差分、 %d 行の変更\n"
 
+msgid "record"
+msgstr ""
+
 msgid ""
 "[Ynesfdaq?]$$ &Yes, record this change$$ &No, skip this change$$ &Edit this "
 "change manually$$ &Skip remaining changes to this file$$ Record remaining "
@@ -25925,6 +26403,10 @@
 "編集作業は中止され、差分はそのまま維持されます。\n"
 
 #, python-format
+msgid "editor exited with exit code %d\n"
+msgstr "エディタが終了コード %d で終了しました\n"
+
+#, python-format
 msgid "examine changes to %s?"
 msgstr "%s の変更点を調べますか?"
 
@@ -26006,6 +26488,10 @@
 msgstr "パス %r はシンボリックリンク '%r' が含まれています"
 
 #, python-format
+msgid "consider using '--cwd %s'"
+msgstr "'--cwd %s' を使ってみては?"
+
+#, python-format
 msgid "%s not under root '%s'"
 msgstr "%s はルートディレクトリ '%s' の配下にはありません"
 
@@ -26039,6 +26525,40 @@
 msgid "killed by signal %d"
 msgstr "シグナル %d で強制終了されました"
 
+#. i18n: format XX seconds as "XXs"
+#, python-format
+msgid "%02ds"
+msgstr "%02d秒"
+
+#. i18n: format X minutes and YY seconds as "XmYYs"
+#, python-format
+msgid "%dm%02ds"
+msgstr "%d分%02d秒"
+
+#. i18n: format X hours and YY minutes as "XhYYm"
+#, python-format
+msgid "%dh%02dm"
+msgstr "%d時間%02d分"
+
+#. i18n: format X days and YY hours as "XdYYh"
+#, python-format
+msgid "%dd%02dh"
+msgstr "%d日%02d時間"
+
+#. i18n: format X weeks and YY days as "XwYYd"
+#, python-format
+msgid "%dw%02dd"
+msgstr "%d週%02d日"
+
+#. i18n: format X years and YY weeks as "XyYYw"
+#, python-format
+msgid "%dy%02dw"
+msgstr "%d年%02d週"
+
+#, python-format
+msgid "%d %s/sec"
+msgstr "%d %s/秒"
+
 #, python-format
 msgid "unknown strip-bundle2-version value %r; should be one of %r\n"
 msgstr "strip-bundle2-version 値 %r は未知の値です; 使用可能候補は %r\n"
@@ -26047,6 +26567,12 @@
 msgid "saved backup bundle to %s\n"
 msgstr "バックアップのバンドルを %s に保存\n"
 
+msgid "programming error: cannot strip from inside a transaction"
+msgstr "内部エラー: トランザクション内では strip 処理を実施できません"
+
+msgid "contact your extension maintainer"
+msgstr "原因と思われるエクステンションの管理者に相談してください"
+
 msgid "adding branch\n"
 msgstr "ブランチを追加中\n"
 
@@ -26062,6 +26588,19 @@
 msgid "strip failed, partial bundle stored in '%s'\n"
 msgstr "リビジョンの除外に失敗: 部分的なバンドルを '%s' に保存\n"
 
+msgid "(not rebuilding fncache because repository does not support fncache)\n"
+msgstr "(fncache 未サポートのリポジトリのため、fncache の再構築は省略)\n"
+
+msgid "changeset"
+msgstr "リビジョン"
+
+#, python-format
+msgid "%d items added, %d removed from fncache\n"
+msgstr "fncache に %d 要素を追加、 %d 要素を削除\n"
+
+msgid "fncache already up to date\n"
+msgstr "fncache は最新の状態です\n"
+
 #, python-format
 msgid "revlog decompress error: %s"
 msgstr "revlog 圧縮の展開エラー: %s"
@@ -26123,6 +26662,10 @@
 msgstr "linkrev -1 なリビジョンを %s に追加しようとしています"
 
 #, python-format
+msgid "%s: size of %d bytes exceeds maximum revlog storage of 2GiB"
+msgstr "%s: 更新後のサイズ %d バイトは履歴ファイルの最大容量 2GiB を超過します"
+
+#, python-format
 msgid "node %s is not censored"
 msgstr "ノード %s は検閲対象ではありません"
 
@@ -26134,9 +26677,8 @@
 msgid "at %s: %s"
 msgstr "文字位置: %s: %s"
 
-#, python-format
-msgid "can't use %s here"
-msgstr "ここでは %s を使用できません"
+msgid "can't use a key-value pair in this context"
+msgstr "ここでは key-value ペアを使用できません"
 
 msgid ""
 "``adds(pattern)``\n"
@@ -26412,17 +26954,6 @@
 msgstr "divergent には引数が指定できません"
 
 msgid ""
-"``draft()``\n"
-"    Changeset in draft phase."
-msgstr ""
-"``draft()``\n"
-"    フェーズが draft なリビジョン群。"
-
-#. i18n: "draft" is a keyword
-msgid "draft takes no arguments"
-msgstr "draft には引数が指定できません"
-
-msgid ""
 "``extinct()``\n"
 "    Obsolete changesets with obsolete descendants only."
 msgstr ""
@@ -26452,8 +26983,8 @@
 "    付きで指定してください。"
 
 #. i18n: "extra" is a keyword
-msgid "extra takes at least 1 and at most 2 arguments"
-msgstr "extra の引数は、 最低1つ、最大2つです"
+msgid "extra takes at least 1 argument"
+msgstr "extra には最低1つの引数が必要です"
 
 #. i18n: "extra" is a keyword
 msgid "first argument to extra must be a string"
@@ -26855,6 +27386,28 @@
 "``parents([set])``\n"
 "    指定リビジョン群または作業領域の、 全親リビジョン群。"
 
+msgid ""
+"``draft()``\n"
+"    Changeset in draft phase."
+msgstr ""
+"``draft()``\n"
+"    フェーズが draft なリビジョン群。"
+
+#. i18n: "draft" is a keyword
+msgid "draft takes no arguments"
+msgstr "draft には引数が指定できません"
+
+msgid ""
+"``secret()``\n"
+"    Changeset in secret phase."
+msgstr ""
+"``secret()``\n"
+"    フェーズが secret なリビジョン群。"
+
+#. i18n: "secret" is a keyword
+msgid "secret takes no arguments"
+msgstr "secret には引数が指定できません"
+
 msgid "^ expects a number 0, 1, or 2"
 msgstr "^ には 0、 1 または 2 を指定してください"
 
@@ -27021,17 +27574,6 @@
 "    全リビジョン。"
 
 msgid ""
-"``secret()``\n"
-"    Changeset in secret phase."
-msgstr ""
-"``secret()``\n"
-"    フェーズが secret なリビジョン群。"
-
-#. i18n: "secret" is a keyword
-msgid "secret takes no arguments"
-msgstr "secret には引数が指定できません"
-
-msgid ""
 "``sort(set[, [-]key...])``\n"
 "    Sort set by keys. The default sort order is ascending, specify a key\n"
 "    as ``-key`` to sort in descending order."
@@ -27278,19 +27820,20 @@
 msgid "no suitable response from remote hg"
 msgstr "指定リポジトリからの応答が不適切"
 
+msgid "check previous remote output"
+msgstr "連携先からの直前の出力を確認してください"
+
 #, python-format
 msgid "push refused: %s"
 msgstr "履歴反映が拒否されました: %s"
 
+#, python-format
+msgid "passphrase for %s: "
+msgstr "%s のパスフレーズ: "
+
 msgid "ssl connection failed"
 msgstr "ssl 接続に失敗"
 
-msgid "Python SSL support not found"
-msgstr "Python の SSL サポート機能が使用できません"
-
-msgid "certificate checking requires Python 2.6"
-msgstr "証明書検証には Python 2.6 が必要です"
-
 msgid "no certificate received"
 msgstr "証明書が指定されていません"
 
@@ -27309,18 +27852,6 @@
 msgstr "web.cacerts が見つかりません: %s"
 
 #, python-format
-msgid "host fingerprint for %s can't be verified (Python too old)"
-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"
-
-#, python-format
 msgid "%s ssl connection error"
 msgstr "%s への ssl 接続に失敗"
 
@@ -27509,6 +28040,14 @@
 msgstr "サブリポジトリ %s の変更取り消し中\n"
 
 #, python-format
+msgid "subrepo '%s' is hidden in revision %s\n"
+msgstr "サブリポジトリ '%s' の参照先はリビジョン %s 時点で不可視です\n"
+
+#, python-format
+msgid "subrepo '%s' not found in revision %s\n"
+msgstr "サブリポジトリ '%s' はリビジョン %s 時点で不在です\n"
+
+#, python-format
 msgid "'svn' executable not found for subrepo '%s'"
 msgstr "サブリポジトリ '%s' に使用する 'svn' コマンドが見つかりません"
 
@@ -27739,6 +28278,18 @@
 "    'Foo Bar'"
 
 msgid ""
+":revescape: Any text. Escapes all \"special\" characters, except @.\n"
+"    Forward slashes are escaped twice to prevent web servers from "
+"prematurely\n"
+"    unescaping them. For example, \"@foo bar/baz\" becomes \"@foo%20bar"
+"%252Fbaz\"."
+msgstr ""
+":revescape: 文字列。 @ 以外の全ての「特殊」文字を変換します。\n"
+"    ウェブサービスによる早期の復号を防ぐため、 スラッシュ (\"/\")    は二重に"
+"変換されます。 例えば \"@foo bar/baz\" は\n"
+"    \"@foo%20bar%252Fbaz\" となります。"
+
+msgid ""
 ":rfc3339date: Date. Returns a date using the Internet date format\n"
 "    specified in RFC 3339: \"2009-08-18T13:00:13+02:00\"."
 msgstr ""
@@ -27828,18 +28379,26 @@
 
 msgid ""
 ":bookmarks: List of strings. Any bookmarks associated with the\n"
-"    changeset."
-msgstr ""
-":bookmarks: 文字列列挙。 当該リビジョンに付与されたブックマークの一覧。"
+"    changeset. Also sets 'active', the name of the active bookmark."
+msgstr ""
+":bookmarks: 文字列列挙。 当該リビジョンに付与されたブックマークの一覧。\n"
+"    アクティブブックマークが存在する場合は 'active' が設定されます。"
 
 msgid ":children: List of strings. The children of the changeset."
 msgstr ":children: 文字列列挙。 リビジョンの子供。"
 
 msgid ""
 ":currentbookmark: String. The active bookmark, if it is\n"
-"    associated with the changeset"
+"    associated with the changeset (DEPRECATED)"
 msgstr ""
 ":currentbookmark: 文字列. アクティブブックマーク (対象リビジョンに対して、\n"
+"    関連付けられている場合のみ) (非推奨)"
+
+msgid ""
+":activebookmark: String. The active bookmark, if it is\n"
+"    associated with the changeset"
+msgstr ""
+":activebookmark: 文字列. アクティブブックマーク (対象リビジョンに対して、\n"
 "    関連付けられている場合のみ)"
 
 msgid ":date: Date information. The date when the changeset was committed."
@@ -27891,14 +28450,20 @@
 "    登録除外ファイルの一覧。"
 
 msgid ""
-":latesttag: String. Most recent global tag in the ancestors of this\n"
-"    changeset."
-msgstr ""
-":latesttag: 文字列。 当該リビジョンの祖先に対して最も最近に付与されたタグ"
+":latesttag: List of strings. The global tags on the most recent globally\n"
+"    tagged ancestor of this changeset."
+msgstr ""
+":latesttag: 文字列列挙。 当該リビジョンの祖先に対して、\n"
+"    最も最近に付与されたグローバルタグの一覧"
 
 msgid ":latesttagdistance: Integer. Longest path to the latest tag."
 msgstr ":latesttagdistance: 整数。 最新タグへの最長パス"
 
+msgid ":changessincelatesttag: Integer. All ancestors not in the latest tag."
+msgstr ""
+":changessincelatesttag: 数値。 最新タグ以降の全祖先リビジョン数。\n"
+"    (※ 訳注: 履歴中に分岐がない場合は latesttagdistance と等価です)"
+
 msgid ""
 ":node: String. The changeset identification hash, as a 40 hexadecimal\n"
 "    digit string."
@@ -27959,6 +28524,12 @@
 ":parents: 文字列列挙。 当該リビジョンの親リビジョンの \"rev:node\" 形式。\n"
 "    親が単一で、 且つリビジョン番号が1つ前の場合は、 何も表示されません。"
 
+msgid "integer literal without digits"
+msgstr "数値の指定がありません"
+
+msgid "unterminated template expansion"
+msgstr "テンプレート定義が終端していません"
+
 #, python-format
 msgid "unknown method '%s'"
 msgstr "未知の処理 '%s' が指定されました"
@@ -28035,6 +28606,20 @@
 msgstr "pad() の引数は2つから4つの間です"
 
 msgid ""
+":indent(text, indentchars[, firstline]): Indents all non-empty lines\n"
+"    with the characters given in the indentchars string. An optional\n"
+"    third parameter will override the indent for the first line only\n"
+"    if present."
+msgstr ""
+":indent(text, indentchars[, firstline]): 空白行以外を indentchars\n"
+"    を使って字下げします。 firstline が指定された場合、 最初の行は、\n"
+"    firstline を使って字下げされます。"
+
+#. i18n: "indent" is a keyword
+msgid "indent() expects two or three arguments"
+msgstr "indent() は2または3の引数が必要です"
+
+msgid ""
 ":get(dict, key): Get an attribute/key from an object. Some keywords\n"
 "    are complex types. This function allows you to obtain the value of an\n"
 "    attribute on these type."
@@ -28165,8 +28750,9 @@
 msgid "word expects two or three arguments, got %d"
 msgstr "word は2または3の引数が必要です (実際の引数は %d 個)"
 
-msgid "Use strings like '3' for numbers passed to word function"
-msgstr "word 関数には '3' のような文字列形式で数値を指定してください"
+#. i18n: "word" is a keyword
+msgid "word expects an integer index"
+msgstr "word にはインデックス値を数値で指定してください"
 
 msgid "unmatched quotes"
 msgstr "引用符の対応関係が不正です"
@@ -28601,8 +29187,9 @@
 msgid "broken revlog! (%s)"
 msgstr "不正な revlog! (%s)"
 
-msgid "missing revlog!"
-msgstr "revlog が見つかりません!"
+#, python-format
+msgid " warning: revlog '%s' not in fncache!"
+msgstr " 警告: 履歴ファイル '%s' は fncache に含まれていません!"
 
 #, python-format
 msgid "%s not in manifests"
@@ -28651,6 +29238,10 @@
 msgid "%d warnings encountered!\n"
 msgstr "警告が %d 件あります!\n"
 
+msgid "hint: run \"hg debugrebuildfncache\" to recover from corrupt fncache\n"
+msgstr ""
+"ヒント: fncache の修復には \"hg debugrebuildfncache\" を実施してください\n"
+
 #, python-format
 msgid "%d integrity errors encountered!\n"
 msgstr "不整合が %d 件あります!\n"
diff -r eabba9c75061 -r 35e8d7139224 i18n/pt_BR.po
--- a/i18n/pt_BR.po	Fri Jun 26 18:45:29 2015 -0500
+++ b/i18n/pt_BR.po	Mon Aug 03 11:34:27 2015 -0700
@@ -1310,6 +1310,9 @@
 msgid "must specify revision to censor"
 msgstr "deve ser especificada uma revisão a ser censurada"
 
+msgid "can only specify an explicit filename"
+msgstr "só é possível especificar um nome de arquivo explícito"
+
 msgid "cannot censor file with no history"
 msgstr "não é possível censurar um arquivo sem histórico"
 
@@ -1681,8 +1684,8 @@
 "  resolve.unresolved = red bold\n"
 "  resolve.resolved = green bold"
 
-msgid "  bookmarks.current = green"
-msgstr "  bookmarks.current = green"
+msgid "  bookmarks.active = green"
+msgstr "  bookmarks.active = green"
 
 msgid ""
 "  branches.active = none\n"
@@ -2465,6 +2468,15 @@
 "        for maior do que 0. O padrão é False."
 
 msgid ""
+"    :convert.git.remoteprefix: remote refs are converted as bookmarks with\n"
+"        ``convert.git.remoteprefix`` as a prefix followed by a /. The default\n"
+"        is 'remote'."
+msgstr ""
+"    :convert.git.remoteprefix: refs remotas são convertidas para marcadores\n"
+"        usando como prefixo ``convert.git.remoteprefix`` seguido de /. O\n"
+"        padrão é 'remote'."
+
+msgid ""
 "    Perforce Source\n"
 "    ###############"
 msgstr ""
@@ -2508,6 +2520,43 @@
 "    Destino Mercurial\n"
 "    #################"
 
+msgid ""
+"    The Mercurial destination will recognize Mercurial subrepositories in the\n"
+"    destination directory, and update the .hgsubstate file automatically if the\n"
+"    destination subrepositories contain the //.hg/shamap file.\n"
+"    Converting a repository with subrepositories requires converting a single\n"
+"    repository at a time, from the bottom up."
+msgstr ""
+"    O destino Mercurial reconhecerá sub-repositórios do Mercurial\n"
+"    no diretório de destino, e atualizará o arquivo .hgsubstate\n"
+"    automaticamente se os sub-repositórios de destino contiverem\n"
+"    o arquivo //.hg/shamap.\n"
+"    A conversão de um repositório com sub-repositórios deve ser\n"
+"    realizada um repositório de cada vez, dos níveis de baixo\n"
+"    para cima."
+
+msgid ""
+"       An example showing how to convert a repository with subrepositories::"
+msgstr ""
+"       Um exemplo que mostra como converter um repositório com sub-"
+"repositórios::"
+
+msgid ""
+"         # so convert knows the type when it sees a non empty destination\n"
+"         $ hg init converted"
+msgstr ""
+"         # para que convert saiba o tipo do destino\n"
+"         $ hg init converted"
+
+msgid ""
+"         $ hg convert orig/sub1 converted/sub1\n"
+"         $ hg convert orig/sub2 converted/sub2\n"
+"         $ hg convert orig converted"
+msgstr ""
+"         $ hg convert orig/sub1 converted/sub1\n"
+"         $ hg convert orig/sub2 converted/sub2\n"
+"         $ hg convert orig converted"
+
 msgid "    The following options are supported:"
 msgstr "    As seguintes opções são suportadas:"
 
@@ -2527,11 +2576,36 @@
 
 msgid ""
 "    :convert.hg.usebranchnames: preserve branch names. The default is\n"
-"        True.\n"
-"    "
+"        True."
 msgstr ""
 "    :convert.hg.usebranchnames: preserva nomes de ramo. O valor\n"
-"        padrão é True.\n"
+"        padrão é True."
+
+msgid ""
+"    :convert.hg.sourcename: records the given string as a 'convert_source' extra\n"
+"        value on each commit made in the target repository. The default is None."
+msgstr ""
+"    :convert.hg.sourcename: grava a string pedida em um valor extra\n"
+"        'convert_source' em cada revisão criada no repositório de\n"
+"        destino. O padrão é None."
+
+msgid ""
+"    All Destinations\n"
+"    ################"
+msgstr ""
+"    Todos os Destinos\n"
+"    #################"
+
+msgid "    All destination types accept the following options:"
+msgstr "    Todos os tipos de destino aceitam as seguintes opções:"
+
+msgid ""
+"    :convert.skiptags: does not convert tags from the source repo to the target\n"
+"        repo. The default is False.\n"
+"    "
+msgstr ""
+"    :convert.skiptags: não converte etiquetas da origem para o repositório\n"
+"        de destino. O padrão é False.\n"
 "    "
 
 msgid "only return changes on specified branches"
@@ -2758,6 +2832,9 @@
 msgid "%s does not look like a CVS checkout"
 msgstr "%s não parece ser uma cópia de trabalho do CVS"
 
+msgid "cvs source does not support specifying multiple revs"
+msgstr "a origem cvs não suporta a especificação de múltiplas revisões"
+
 #, python-format
 msgid "revision %s is not a patchset number"
 msgstr "revisão %s não é um número de patchset"
@@ -2925,6 +3002,10 @@
 msgstr "não é possível recuperar cabeças do git"
 
 #, python-format
+msgid "cannot retrieve git head \"%s\""
+msgstr "não é possível recuperar a cabeça do git \"%s\""
+
+#, python-format
 msgid "cannot read %r object at %s"
 msgstr "não é possível ler objeto %r em %s"
 
@@ -2933,8 +3014,12 @@
 msgstr "não é possível ler objeto %r em %s: tamanho inesperado"
 
 #, python-format
-msgid "cannot read submodules config file in %s"
-msgstr "não é possível ler arquivo de configuração de submódulos em %s"
+msgid "warning: cannot read submodules config file in %s\n"
+msgstr "aviso: não é possível ler arquivo de configuração de submódulos em %s\n"
+
+#, python-format
+msgid "warning: unable to parse .gitmodules in %s\n"
+msgstr "aviso: incapaz de decodificar .gitmodules em %s\n"
 
 msgid "convert from git do not support --full"
 msgstr "a conversão a partir do git não suporta --full"
@@ -2988,6 +3073,14 @@
 msgid "pulling from %s into %s\n"
 msgstr "trazendo de %s para %s\n"
 
+#, python-format
+msgid "no \".hgsubstate\" updates will be made for \"%s\"\n"
+msgstr "nenhuma atualização de \".hgsubstate\" será feita para \"%s\"\n"
+
+#, python-format
+msgid "%s is missing from %s/.hg/shamap\n"
+msgstr "%s está faltando em %s/.hg/shamap\n"
+
 msgid "filtering out empty revision\n"
 msgstr "filtrando revisão vazia\n"
 
@@ -3005,6 +3098,9 @@
 "revisão %s não encontrada no repositório de destino (buscas com "
 "clonebranches=true não foram implementadas)"
 
+msgid "mercurial source does not support specifying multiple revisions"
+msgstr "a origem mercurial não suporta a especificação de múltiplas revisões"
+
 #, python-format
 msgid "%s is not a valid start revision"
 msgstr "%s não é uma revisão inicial válida"
@@ -3016,6 +3112,9 @@
 msgid "ignoring: %s\n"
 msgstr "ignorando: %s\n"
 
+msgid "monotone source does not support specifying multiple revs"
+msgstr "a origem monotone não suporta a especificação de múltiplas revisões"
+
 #, python-format
 msgid "%s does not look like a monotone repository"
 msgstr "%s não parece ser um repositório do Monotone"
@@ -3066,12 +3165,19 @@
 msgid "%s does not look like a P4 repository"
 msgstr "%s não parece ser um repositório do P4"
 
+msgid "p4 source does not support specifying multiple revisions"
+msgstr "a origem p4 não suporta a especificação de múltiplas revisões"
+
 msgid "reading p4 views\n"
 msgstr "lendo 'p4 views'\n"
 
 msgid "collecting p4 changelists\n"
 msgstr "coletando changelists do p4\n"
 
+#, python-format
+msgid "cannot find source for copied file: %s@%s\n"
+msgstr "não é possível localizar a origem do arquivo copiado: %s@%s\n"
+
 msgid "convert from p4 do not support --full"
 msgstr "a conversão a partir do p4 não suporta --full"
 
@@ -3118,6 +3224,9 @@
 msgstr ""
 "%s não parece ser um repositório do Subversion para a libsvn versão %s"
 
+msgid "subversion source does not support specifying multiple revisions"
+msgstr "a origem subversion não suporta a especificação de múltiplas revisões"
+
 #, python-format
 msgid "svn: revision %s is not an integer"
 msgstr "svn: revisão %s não é um inteiro"
@@ -3877,6 +3986,14 @@
 "    nenhuma revisão."
 
 msgid ""
+"    The ``gpg.cmd`` config setting can be used to specify the command\n"
+"    to run. A default key can be specified with ``gpg.key``."
+msgstr ""
+"    A opção de configuração ``gpg.cmd`` pode ser usada para especificar\n"
+"    o comando a ser executado. Uma chave padrão pode ser especificada em\n"
+"    ``gpg.key``."
+
+msgid ""
 "    See :hg:`help dates` for a list of formats valid for -d/--date.\n"
 "    "
 msgstr ""
@@ -4114,10 +4231,10 @@
 
 msgid ""
 "  [hgk]\n"
-"  path=/location/of/hgk"
+"  path = /location/of/hgk"
 msgstr ""
 "  [hgk]\n"
-"  path=/localização/do/hgk"
+"  path = /localização/do/hgk"
 
 msgid ""
 "hgk can make use of the extdiff extension to visualize revisions.\n"
@@ -4565,6 +4682,10 @@
 msgid "%s: empty changeset\n"
 msgstr "%s: revisão vazia\n"
 
+#, python-format
+msgid "cannot fold into public change %s"
+msgstr "não é possível combinar com a revisão pública %s"
+
 msgid ""
 "Make changes as needed, you may commit or record as needed now.\n"
 "When you are finished, run hg histedit --continue to resume."
@@ -4715,8 +4836,11 @@
 msgstr "não é possível editar histórico que contenha mesclagens"
 
 #, python-format
-msgid "cannot edit immutable changeset: %s"
-msgstr "não é possível editar uma revisão imutável: %s"
+msgid "cannot edit public changeset: %s"
+msgstr "não é possível editar uma revisão pública: %s"
+
+msgid "see \"hg help phases\" for details"
+msgstr "veja \"hg help phases\" para mais detalhes"
 
 #, python-format
 msgid "malformed line \"%s\""
@@ -5455,8 +5579,11 @@
 msgstr "convertendo revisões"
 
 #, python-format
-msgid "missing largefile '%s' from revision %s"
-msgstr "largefile '%s' da revisão %s faltando"
+msgid "missing largefile for '%s' in %s"
+msgstr "largefile para '%s' faltando em %s"
+
+msgid "all largefiles must be present locally"
+msgstr "todos os largefiles devem estar presentes localmente"
 
 #, python-format
 msgid "renamed/copied largefile %s becomes symlink"
@@ -6064,8 +6191,8 @@
 msgstr "o nome do patch não pode começar com \"%s\""
 
 #, python-format
-msgid "\"%s\" cannot be used in the name of a patch"
-msgstr "\"%s\" não pode ser usado em um nome de patch"
+msgid "%r cannot be used in the name of a patch"
+msgstr "%r não pode ser usado em um nome de patch"
 
 #, python-format
 msgid "\"%s\" already exists as a directory"
@@ -6181,11 +6308,8 @@
 msgstr ""
 "desempilhar removeria uma revisão não gerenciada por esta fila de patches"
 
-msgid "popping would remove an immutable revision"
-msgstr "qpop removeria uma revisão imutável"
-
-msgid "see \"hg help phases\" for details"
-msgstr "veja \"hg help phases\" para mais detalhes"
+msgid "popping would remove a public revision"
+msgstr "desempilhar removeria uma revisão pública"
 
 msgid "deletions found between repo revs"
 msgstr "remoções encontradas entre revisões do repositório"
@@ -6200,8 +6324,8 @@
 msgid "cannot refresh a revision with children"
 msgstr "não se pode renovar uma revisão com filhos"
 
-msgid "cannot refresh immutable revision"
-msgstr "não se pode renovar uma revisão imutável"
+msgid "cannot refresh public revision"
+msgstr "não se pode renovar uma revisão pública"
 
 msgid ""
 "refresh interrupted while patch was popped! (revert --all, qpush to "
@@ -8206,102 +8330,16 @@
 msgid "writing"
 msgstr "escrevendo"
 
-msgid "show progress bars for some actions"
-msgstr "mostra barras de progresso para algumas ações"
-
-msgid ""
-"This extension uses the progress information logged by hg commands\n"
-"to draw progress bars that are as informative as possible. Some progress\n"
-"bars only offer indeterminate information, while others have a definite\n"
-"end point."
-msgstr ""
-"Esta extensão usa a informação de progresso fornecida por comandos do\n"
-"Mercurial para desenhar barras de progresso que sejam tão informativas\n"
-"quanto possível. Algumas barras de progresso fornecem apenas informação\n"
-"indeterminada, enquanto outras possuem um ponto de encerramento definido."
-
-msgid "The following settings are available::"
-msgstr "As seguintes opções estão disponíveis::"
-
-msgid ""
-"  [progress]\n"
-"  delay = 3 # number of seconds (float) before showing the progress bar\n"
-"  changedelay = 1 # changedelay: minimum delay before showing a new topic.\n"
-"                  # If set to less than 3 * refresh, that value will\n"
-"                  # be used instead.\n"
-"  refresh = 0.1 # time in seconds between refreshes of the progress bar\n"
-"  format = topic bar number estimate # format of the progress bar\n"
-"  width =  # if set, the maximum width of the progress information\n"
-"                 # (that is, min(width, term width) will be used)\n"
-"  clear-complete = True # clear the progress bar after it's done\n"
-"  disable = False # if true, don't show a progress bar\n"
-"  assume-tty = False # if true, ALWAYS show a progress bar, unless\n"
-"                     # disable is given"
-msgstr ""
-"  [progress]\n"
-"  delay = 3 # número de segundos (float) antes que a barra seja mostrada\n"
-"  changedelay = 1 # changedelay: atraso mínimo antes que um novo tópico\n"
-"                  # seja mostrado. Se for definido para menos de\n"
-"                  # 3 * refresh, tal valor será usado em seu lugar.\n"
-"  refresh = 0.1 # tempo em segundos entre atualizações da\n"
-"                # barra de progresso\n"
-"  format = topic bar number estimate # formato da barra de progresso\n"
-"  width =  # se definido, será a largura máxima da informação de\n"
-"                 # progresso (isto é, min(largura, largura do terminal)\n"
-"                 # será usada)\n"
-"  clear-complete = True # limpa a barra de progresso após terminar\n"
-"  disable = False # se 'true', não exibe uma barra de progresso\n"
-"  assume-tty = False # se 'true', SEMPRE exibe uma barra de progressos,\n"
-"                     # a não ser que 'disable' seja 'true'"
-
-msgid ""
-"Valid entries for the format field are topic, bar, number, unit,\n"
-"estimate, speed, and item. item defaults to the last 20 characters of\n"
-"the item, but this can be changed by adding either ``-`` which\n"
-"would take the last num characters, or ``+`` for the first num\n"
-"characters.\n"
-msgstr ""
-"Entradas válidas para o campo format são topic (tópico), bar (barra),\n"
-"number (número), unit (unidade), estimate (estimativa), speed (velocidade)\n"
-"e item (item).\n"
-"item por padrão são os\n"
-"últimos caracteres do item, mas isto pode ser modificado adicionando ou\n"
-"``-``, que consideraria os últimos num caracteres, ou ``+``\n"
-"para os primeiros num caracteres.\n"
-
-#. i18n: format XX seconds as "XXs"
-#, python-format
-msgid "%02ds"
-msgstr "%02ds"
-
-#. i18n: format X minutes and YY seconds as "XmYYs"
-#, python-format
-msgid "%dm%02ds"
-msgstr "%dm%02ds"
-
-#. i18n: format X hours and YY minutes as "XhYYm"
-#, python-format
-msgid "%dh%02dm"
-msgstr "%dh%02dm"
-
-#. i18n: format X days and YY hours as "XdYYh"
-#, python-format
-msgid "%dd%02dh"
-msgstr "%dd%02dh"
-
-#. i18n: format X weeks and YY days as "XwYYd"
-#, python-format
-msgid "%dw%02dd"
-msgstr "%dw%02dd"
-
-#. i18n: format X years and YY weeks as "XyYYw"
-#, python-format
-msgid "%dy%02dw"
-msgstr "%dy%02dw"
-
-#, python-format
-msgid "%d %s/sec"
-msgstr "%d %s/seg"
+msgid "show progress bars for some actions (DEPRECATED)"
+msgstr "mostra barras de progresso para algumas ações (OBSOLETA)"
+
+msgid ""
+"This extension has been merged into core, you can remove it from your config.\n"
+"See hg help config.progress for configuration options.\n"
+msgstr ""
+"Esta extensão foi integrada ao Mercurial, você pode removê-la de sua\n"
+"configuração.\n"
+"Veja hg help config.progress para opções de configuração.\n"
 
 msgid "command to delete untracked files from the working directory"
 msgstr "comando para apagar do diretório de trabalho arquivos não rastreados"
@@ -8739,8 +8777,8 @@
 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"
+msgid "can't rebase public changeset %s"
+msgstr "não é possível rebasear a revisão pública %s"
 
 #, python-format
 msgid "reopening closed branch head %s\n"
@@ -8809,8 +8847,8 @@
 msgstr "nenhum rebaseamento em andamento"
 
 #, python-format
-msgid "warning: can't clean up immutable changesets %s\n"
-msgstr "aviso: não é possível limpar as revisões imutáveis %s\n"
+msgid "warning: can't clean up public changesets %s\n"
+msgstr "aviso: não é possível limpar as revisões públicas %s\n"
 
 msgid "warning: new changesets detected on target branch, can't strip\n"
 msgstr ""
@@ -8925,6 +8963,10 @@
 msgstr ""
 "    Este comando não está disponível para a consolidação de uma mesclagem."
 
+#, python-format
+msgid "running non-interactively, use %s instead"
+msgstr "não está executando interativamente, use %s"
+
 msgid "hg qrecord [OPTION]... PATCH [FILE]..."
 msgstr "hg qrecord [OPÇÃO]... PATCH [ARQUIVO]..."
 
@@ -9135,6 +9177,78 @@
 msgid "share a common history between several working directories"
 msgstr "compartilha histórico comum entre vários diretórios de trabalho"
 
+msgid ""
+"Automatic Pooled Storage for Clones\n"
+"-----------------------------------"
+msgstr ""
+"Armazenamento Compartilhado Automático para Clones\n"
+"--------------------------------------------------"
+
+msgid ""
+"When this extension is active, :hg:`clone` can be configured to\n"
+"automatically share/pool storage across multiple clones. This\n"
+"mode effectively converts :hg:`clone` to :hg:`clone` + :hg:`share`.\n"
+"The benefit of using this mode is the automatic management of\n"
+"store paths and intelligent pooling of related repositories."
+msgstr ""
+"Ao ativar esta extensão, :hg:`clone` pode ser configurado\n"
+"para compartilhar armazenamento entre múltiplos clones.\n"
+"Este modo efetivamente converte :hg:`clone` em :hg:`clone`\n"
+"+ :hg:`share`.\n"
+"Os benefícios do uso desse modo são o gerenciamento automático\n"
+"de caminhos de armazenamento e o agrupamento inteligente de\n"
+"repositórios relacionados."
+
+msgid "The following ``share.`` config options influence this feature:"
+msgstr ""
+"As seguintes opções de configuração ``share.`` influenciam essa "
+"funcionalidade:"
+
+msgid ""
+"``share.pool``\n"
+"    Filesystem path where shared repository data will be stored. When\n"
+"    defined, :hg:`clone` will automatically use shared repository\n"
+"    storage instead of creating a store inside each clone."
+msgstr ""
+"``share.pool``\n"
+"    Caminho do sistema de arquivos onde dados compartilhados dos\n"
+"    repositórios serão armazenados. Se definido, :hg:`clone`\n"
+"    automaticamente usará repositórios compartilhados ao invés\n"
+"    de manter armazenamento separado dentro de cada clone."
+
+msgid ""
+"``share.poolnaming``\n"
+"    How directory names in ``share.pool`` are constructed."
+msgstr ""
+"``share.poolnaming``\n"
+"    Como nomes de diretório em ``share.pool`` são construídos."
+
+msgid ""
+"    \"identity\" means the name is derived from the first changeset in the\n"
+"    repository. In this mode, different remotes share storage if their\n"
+"    root/initial changeset is identical. In this mode, the local shared\n"
+"    repository is an aggregate of all encountered remote repositories."
+msgstr ""
+"    \"identity\" gera o nome a partir da primeira revisão do repositório.\n"
+"    Neste modo, diferentes repositórios remotos compartilharão o\n"
+"    armazenamento se suas revisões iniciais forem idênticas. O\n"
+"    repositório local compartilhado será um agregado de todos os\n"
+"    repositórios remotos encontrados."
+
+msgid ""
+"    \"remote\" means the name is derived from the source repository's\n"
+"    path or URL. In this mode, storage is only shared if the path or URL\n"
+"    requested in the :hg:`clone` command matches exactly to a repository\n"
+"    that was cloned before."
+msgstr ""
+"    \"remote\" gera o nome a partir da URL ou caminho do repositório de\n"
+"    origem. Neste modo, o armazenamento será compartilhado apenas se o\n"
+"    caminho ou URL pedida em :hg:`clone` for idêntico a um repositório\n"
+"    que tenha sido clonado anteriormente."
+
+msgid "    The default naming mode is \"identity.\"\n"
+msgstr "    O modo de nomeação padrão é \"identity\".\n"
+
 msgid "do not create a working directory"
 msgstr "não cria um diretório de trabalho"
 
@@ -9265,6 +9379,14 @@
 msgid "no shelved changes specified!"
 msgstr "nenhuma mudança engavetada foi especificada!"
 
+#, python-format
+msgid "--%s expects a single shelf"
+msgstr "--%s espera uma única \"gaveta\""
+
+#, python-format
+msgid "cannot find shelf %s"
+msgstr "não é possível localizar \"gaveta\" %s"
+
 msgid "working directory parents do not match unshelve state"
 msgstr ""
 "os pais do diretório de trabalho não combinam com o estado do unshelve"
@@ -9311,10 +9433,12 @@
 
 msgid ""
 "    If a shelved change is applied successfully, the bundle that\n"
-"    contains the shelved changes is deleted afterwards."
+"    contains the shelved changes is moved to a backup location\n"
+"    (.hg/shelve-backup)."
 msgstr ""
 "    Se uma mudança engavetada for restaurada com sucesso, o arquivo\n"
-"    bundle que contém essa mudança será removido em seguida."
+"    bundle que contém essa mudança será movido para uma cópia de\n"
+"    segurança (.hg/shelve-backup)."
 
 msgid ""
 "    Since you can restore a shelved change on top of an arbitrary\n"
@@ -9322,25 +9446,48 @@
 "    between your changes and the commits you are unshelving onto. If\n"
 "    this occurs, you must resolve the conflict, then use\n"
 "    ``--continue`` to complete the unshelve operation. (The bundle\n"
-"    will not be deleted until you successfully complete the unshelve.)"
+"    will not be moved until you successfully complete the unshelve.)"
 msgstr ""
 "    Por ser possível restaurar uma mudança engavetada sobre uma\n"
 "    revisão qualquer, uma operação unshelve pode resultar em um\n"
 "    conflito entre as mudanças restauradas e as revisões de\n"
 "    destino. Se isso ocorrer, você deve resolver os conflitos,\n"
 "    e em seguida usar ``--continue`` para completar a operação\n"
-"    unshelve. (O bundle não será removido até que você complete\n"
+"    unshelve. (O bundle não será movido até que você complete\n"
 "    a operação unshelve com sucesso.)"
 
 msgid ""
 "    (Alternatively, you can use ``--abort`` to abandon an unshelve\n"
 "    that causes a conflict. This reverts the unshelved changes, and\n"
-"    does not delete the bundle.)\n"
-"    "
+"    leaves the bundle in place.)"
 msgstr ""
 "    (Alternativamente, vocẽ pode usar ``--abort`` para abandonar\n"
 "    uma operação unshelve que causou um conflito. Isto reverte\n"
-"    as mudanças engavetadas sem remover o bundle.)\n"
+"    as mudanças engavetadas sem mover o bundle.)\n"
+"    "
+
+msgid ""
+"    After a successful unshelve, the shelved changes are stored in a\n"
+"    backup directory. Only the N most recent backups are kept. N\n"
+"    defaults to 10 but can be overridden using the ``shelve.maxbackups``\n"
+"    configuration option."
+msgstr ""
+"    Após uma operação unshelve realizada com sucesso, as mudanças\n"
+"    \"engavetadas\" são preservadas em uma cópia de segurança.\n"
+"    Apenas as últimas N cópias são mantidas.\n"
+"    O valor padrão de N é 10, e pode ser alterado usando a opção\n"
+"    de configuração``shelve.maxbackups``."
+
+msgid ""
+"       Timestamp in seconds is used to decide order of backups. More\n"
+"       than ``maxbackups`` backups are kept, if same timestamp\n"
+"       prevents from deciding exact order of them, for safety.\n"
+"    "
+msgstr ""
+"       O timestamp dos arquivos em segundos é usado para decidir a\n"
+"       ordem das cópias de segurança. Por segurança, um número maior\n"
+"       de cópias do que ``maxbackups`` será preservado, caso um mesmo\n"
+"       timestamp impedir que a ordem exata seja determinada.\n"
 "    "
 
 msgid "cannot combine abort/continue with naming a shelved change"
@@ -9401,8 +9548,8 @@
 msgid "show patch"
 msgstr "mostra o patch"
 
-msgid "interactive mode, only works while creating a shelve(EXPERIMENTAL)"
-msgstr "modo interativo, funciona apenas ao criar uma shelve (EXPERIMENTAL)"
+msgid "interactive mode, only works while creating a shelve"
+msgstr "modo interativo, funciona apenas ao criar uma shelve"
 
 msgid "output diffstat-style summary of changes"
 msgstr "imprime sumário de mudanças no estilo diffstat"
@@ -9478,10 +9625,6 @@
 msgid "cannot specify names when using '--cleanup'"
 msgstr "não se pode especificar nomes ao usar --cleanup"
 
-#, python-format
-msgid "option '--%s' may not be used when shelving a change"
-msgstr "a opção '--%s' não pode ser usada ao engavetar uma mudança"
-
 msgid "unshelve already in progress"
 msgstr "unshelve já está em andamento"
 
@@ -10153,10 +10296,6 @@
 msgstr "linha malformada em .hg/bookmarks: %r\n"
 
 #, python-format
-msgid "branch %s not found"
-msgstr "ramo %s não encontrado"
-
-#, python-format
 msgid "updating to active bookmark %s\n"
 msgstr "atualizando para o marcador ativo %s\n"
 
@@ -10165,6 +10304,10 @@
 msgstr "adicionando marcador remoto %s\n"
 
 #, python-format
+msgid "remote bookmark %s points to locally missing %s\n"
+msgstr "o marcador remoto %s aponta para uma revisão %s faltando no local\n"
+
+#, python-format
 msgid "importing bookmark %s\n"
 msgstr "importando marcador %s\n"
 
@@ -10348,9 +10491,8 @@
 msgid "the name '%s' is reserved"
 msgstr "o nome '%s' é reservado"
 
-#, python-format
-msgid "running non-interactively, use %s instead"
-msgstr "não está executando interativamente, use %s"
+msgid "running non-interactively"
+msgstr "executando de forma não interativa"
 
 msgid "cannot partially commit a merge (use \"hg commit\" instead)"
 msgstr "não é possível consolidar parcialmente uma mesclagem (use \"hg commit\")"
@@ -10382,13 +10524,20 @@
 msgid "cannot specify --changelog and --manifest at the same time"
 msgstr "não é possível especificar simultaneamente --changelog e --manifest"
 
+msgid "cannot specify --changelog and --dir at the same time"
+msgstr "não é possível especificar simultaneamente --changelog e --dir"
+
 msgid "cannot specify filename with --changelog or --manifest"
 msgstr ""
 "não é possível especificar um nome de arquivo com --changelog ou --manifest"
 
-msgid "cannot specify --changelog or --manifest without a repository"
-msgstr ""
-"não é possível especificar --changelog ou --manifest sem um repositório"
+msgid "cannot specify --changelog or --manifest or --dir without a repository"
+msgstr ""
+"não é possível especificar --changelog, --manifest ou --dir sem um "
+"repositório"
+
+msgid "--dir can only be used on repos with treemanifest enabled"
+msgstr "--dir só pode ser usada em repositórios com treemanifest habilitada"
 
 msgid "invalid arguments"
 msgstr "argumentos inválidos"
@@ -10563,13 +10712,6 @@
 msgstr "%s: nenhuma chave nomeada '%s'"
 
 #, python-format
-msgid "available styles: %s\n"
-msgstr "estilos disponíveis: %s\n"
-
-msgid "specify a template"
-msgstr "especifique um modelo"
-
-#, python-format
 msgid "found revision %s from %s\n"
 msgstr "encontrada revisão %s de %s\n"
 
@@ -10717,6 +10859,14 @@
 msgid "use 'hg update' to get a consistent checkout"
 msgstr "use 'hg update' para obter uma cópia de trabalho consistente"
 
+#, python-format
+msgid "can't close already inactivated backup: %s"
+msgstr "não é possível fechar um backup já desativado: %s"
+
+#, python-format
+msgid "can't release already inactivated backup: %s"
+msgstr "não é possível liberar um backup já desativado: %s"
+
 msgid "repository root directory or name of overlay bundle file"
 msgstr ""
 "diretório raiz do repositório ou nome de arquivo de bundle para sobreposição"
@@ -11681,12 +11831,15 @@
 
 msgid ""
 "    Use the command :hg:`update` to switch to an existing branch. Use\n"
-"    :hg:`commit --close-branch` to mark this branch as closed."
+"    :hg:`commit --close-branch` to mark this branch head as closed.\n"
+"    When all heads of the branch are closed, the branch will be\n"
+"    considered closed."
 msgstr ""
 "    Use o comando :hg:`update` para alternar para um ramo existente.\n"
-"    Use :hg:`commit --close-branch` para marcar este ramo como\n"
-"    fechado.\n"
-"    "
+"    Use :hg:`commit --close-branch` para marcar esta cabeça de ramo como\n"
+"    fechada.\n"
+"    O ramo será considerado fechado se todas as suas cabeças estiverem\n"
+"    fechadas."
 
 #, python-format
 msgid "reset working directory to branch %s\n"
@@ -12092,8 +12245,8 @@
 "marca arquivos novos/ausentes como adicionados/removidos antes da "
 "consolidação"
 
-msgid "mark a branch as closed, hiding it from the branch list"
-msgstr "marca um ramo como fechado, escondendo-o da lista de ramos"
+msgid "mark a branch head as closed"
+msgstr "marca uma cabeça de ramo como fechada"
 
 msgid "amend the parent of the working directory"
 msgstr "emenda o pai do diretório de trabalho"
@@ -12143,6 +12296,16 @@
 "    dessa mensagem em ``.hg/last-message.txt``."
 
 msgid ""
+"    The --close-branch flag can be used to mark the current branch\n"
+"    head closed. When all heads of a branch are closed, the branch\n"
+"    will be considered closed and no longer listed."
+msgstr ""
+"    A opção --close-branch pode ser usada para marcar a cabeça de\n"
+"    ramo atual como fechada.\n"
+"    Quando todas as cabeças de um ramo estiverem fechadas, o ramo\n"
+"    será considerado fechado e não será mais listado."
+
+msgid ""
 "    The --amend flag can be used to amend the parent of the\n"
 "    working directory with a new commit that contains the changes\n"
 "    in the parent in addition to those currently reported by :hg:`status`,\n"
@@ -12504,6 +12667,9 @@
 msgid "open manifest"
 msgstr "abre o manifesto"
 
+msgid "open directory manifest"
+msgstr "abre o manifesto do diretório"
+
 msgid "-c|-m|FILE REV"
 msgstr "-c|-m|ARQUIVO REV"
 
@@ -12868,6 +13034,9 @@
 "    de :hg:`status` verifique o conteúdo real dos arquivos.\n"
 "    "
 
+msgid "rebuild the fncache file"
+msgstr "reconstrói o arquivo fncache"
+
 msgid "revision to debug"
 msgstr "revisão a ser depurada"
 
@@ -13337,6 +13506,10 @@
 "    Isto remove arquivos apenas do ramo atual,e não de todo o\n"
 "    histórico do projeto, nem os apaga do diretório de trabalho."
 
+msgid "    To delete the file from the working directory, see :hg:`remove`."
+msgstr ""
+"    Para apagar o arquivo do diretório de trabalho, veja :hg:`remove`."
+
 msgid "    To undo a forget before the next commit, see :hg:`add`."
 msgstr ""
 "    Para desfazer um forget antes da próxima consolidação, veja :hg:`add`."
@@ -13918,6 +14091,20 @@
 "    importando apenas os metadados do patch."
 
 msgid ""
+"    It is possible to use external patch programs to perform the patch\n"
+"    by setting the ``ui.patch`` configuration option. For the default\n"
+"    internal tool, the fuzz can also be configured via ``patch.fuzz``.\n"
+"    See :hg:`help config` for more information about configuration\n"
+"    files and how to use these options."
+msgstr ""
+"    É possível usar programas externos para aplicar o patch\n"
+"    definindo a opção de configuração ``ui.patch``. Para a\n"
+"    ferramenta interna usada por padrão, o nível de fuzz pode\n"
+"    ser configurado usando a opção ``patch.fuzz``.\n"
+"    Veja :hg:`help config` para mais informações sobre arquivos\n"
+"    de configuração e como usar essas opções."
+
+msgid ""
 "    To read a patch from standard input, use \"-\" as the patch name. If\n"
 "    a URL is specified, the patch will be downloaded from it.\n"
 "    See :hg:`help dates` for a list of formats valid for -d/--date."
@@ -13959,6 +14146,22 @@
 msgstr "          hg import --exact proposed-fix.patch"
 
 msgid ""
+"      - use an external tool to apply a patch which is too fuzzy for\n"
+"        the default internal tool."
+msgstr ""
+"      - usa um programa externo para aplicar um patch com contextos\n"
+"        excessivamente diferentes para a ferramenta interna."
+
+msgid "          hg import --config ui.patch=\"patch --merge\" fuzzy.patch"
+msgstr "          hg import --config ui.patch=\"patch --merge\" fuzzy.patch"
+
+msgid "      - change the default fuzzing from 2 to a less strict 7"
+msgstr "      - muda o nível de fuzz de 2 para 7"
+
+msgid "          hg import --config ui.fuzz=7 fuzz.patch"
+msgstr "          hg import --config ui.fuzz=7 fuzz.patch"
+
+msgid ""
 "    Returns 0 on success, 1 on partial success (see --partial).\n"
 "    "
 msgstr ""
@@ -14599,9 +14802,6 @@
 msgstr ""
 "    Veja :hg:`summary` e :hg:`help revsets` para informações relacionadas."
 
-msgid "can only specify an explicit filename"
-msgstr "só é possível especificar um nome de arquivo explícito"
-
 #, python-format
 msgid "'%s' not found in manifest!"
 msgstr "'%s' não encontrado no manifesto!"
@@ -14679,14 +14879,14 @@
 msgid "target revision"
 msgstr "revisão alvo"
 
-msgid "[-p|-d|-s] [-f] [-r] REV..."
-msgstr "[-p|-d|-s] [-f] [-r] REV..."
+msgid "[-p|-d|-s] [-f] [-r] [REV...]"
+msgstr "[-p|-d|-s] [-f] [-r] [REV...]"
 
 msgid "set or show the current phase name"
 msgstr "define ou mostra o nome da fase atual"
 
-msgid "    With no argument, show the phase name of specified revisions."
-msgstr "    Sem parâmetros, mostra o nome da fase das revisões especificadas."
+msgid "    With no argument, show the phase name of the current revision(s)."
+msgstr "    Sem parâmetros, mostra os nomes das fases das revisões atuais."
 
 msgid ""
 "    With one of -p/--public, -d/--draft or -s/--secret, change the\n"
@@ -14709,11 +14909,16 @@
 
 msgid ""
 "    Returns 0 on success, 1 if no phases were changed or some could not\n"
-"    be changed.\n"
-"    "
+"    be changed."
 msgstr ""
 "    Devolve 0 para indicar sucesso, 1 se não houver mudanças de fase\n"
-"    ou se algumas não puderam ser mudadas.\n"
+"    ou se algumas não puderam ser mudadas."
+
+msgid ""
+"    (For more information about the phases concept, see :hg:`help phases`.)\n"
+"    "
+msgstr ""
+"    (Para mais informações sobre o conceito de fases, veja :hg:`help phases`.)\n"
 "    "
 
 msgid "only one phase can be specified"
@@ -15606,10 +15811,10 @@
 
 msgid ""
 "    This generates a brief summary of the working directory state,\n"
-"    including parents, branch, commit status, and available updates."
+"    including parents, branch, commit status, phase and available updates."
 msgstr ""
 "    Isto gera um breve sumário do estado do diretório de trabalho,\n"
-"    incluindo pais, ramo, status de consolidação e atualizações\n"
+"    incluindo pais, ramo, status de consolidação, fase e atualizações\n"
 "    disponíveis."
 
 msgid ""
@@ -15712,6 +15917,18 @@
 msgid "update: %d new changesets, %d branch heads (merge)\n"
 msgstr "atualizações: %d novas revisões, %d cabeças de ramo (merge)\n"
 
+#, python-format
+msgid "%d draft"
+msgstr "%d em fase draft"
+
+#, python-format
+msgid "%d secret"
+msgstr "%d em fase secret"
+
+#, python-format
+msgid "phases: %s\n"
+msgstr "fases: %s\n"
+
 msgid "1 or more incoming"
 msgstr "1 ou mais a serem recebidas"
 
@@ -15927,12 +16144,12 @@
 msgid ""
 "    Update the repository's working directory to the specified\n"
 "    changeset. If no changeset is specified, update to the tip of the\n"
-"    current named branch and move the current bookmark (see :hg:`help\n"
+"    current named branch and move the active bookmark (see :hg:`help\n"
 "    bookmarks`)."
 msgstr ""
 "    Atualiza o diretório de trabalho do repositório para a revisão\n"
 "    pedida. Se não for especificada uma revisão, atualiza para a\n"
-"    última revisão do ramo nomeado atual e move o marcador atual\n"
+"    última revisão do ramo nomeado atual e move o marcador ativo\n"
 "    (veja :hg:`help bookmarks`)."
 
 msgid ""
@@ -16021,13 +16238,13 @@
 msgstr "não se pode especificar ao mesmo tempo -c/--check e -C/--clean"
 
 #, python-format
+msgid "(leaving bookmark %s)\n"
+msgstr "(mantendo marcador %s)\n"
+
+#, python-format
 msgid "(activating bookmark %s)\n"
 msgstr "(ativando marcador %s)\n"
 
-#, python-format
-msgid "(leaving bookmark %s)\n"
-msgstr "(mantendo marcador %s)\n"
-
 msgid "verify the integrity of the repository"
 msgstr "verifica a integridade do repositório"
 
@@ -16187,6 +16404,9 @@
 msgid "the python curses/wcurses module is not available/installed"
 msgstr "o módulo curses/wcurses do Python não está disponível"
 
+msgid "confirm"
+msgstr ""
+
 msgid "starting interactive selection\n"
 msgstr "iniciando seleção interativa\n"
 
@@ -16225,6 +16445,9 @@
 msgid "user quit"
 msgstr "usuário encerrou"
 
+msgid "this diff is too large to be displayed"
+msgstr "o diff é grande demais para ser mostrado"
+
 #, python-format
 msgid "invalid character in dag description: %s..."
 msgstr "caractere inválido na descrição do dag: %s..."
@@ -16402,6 +16625,9 @@
 msgid "abort: remote error:\n"
 msgstr "abortado: erro remoto:\n"
 
+msgid "abort: remote error\n"
+msgstr "abortado: erro remoto\n"
+
 #, python-format
 msgid "abort: %s!\n"
 msgstr "abortado: %s!\n"
@@ -16570,6 +16796,13 @@
 "lsprof não disponível - instale de "
 "http://codespeak.net/svn/user/arigo/hack/misc/lsprof/"
 
+msgid ""
+"flamegraph not available - install from https://github.com/evanhempel"
+"/python-flamegraph"
+msgstr ""
+"flamegraph indisponível - instale de https://github.com/evanhempel/python-"
+"flamegraph"
+
 msgid "statprof not available - install using \"easy_install statprof\""
 msgstr "statprof não está disponível - instale usando \"easy_install statprof\""
 
@@ -16640,6 +16873,10 @@
 msgstr "nenhuma versão de changegroup em comum"
 
 #, python-format
+msgid "updating %s to public failed"
+msgstr "a atualização da fase de %s para pública falhou"
+
+#, python-format
 msgid "server ignored update of %s to public!\n"
 msgstr "o servidor ignorou a atualização de %s para a fase 'public'!\n"
 
@@ -16677,6 +16914,23 @@
 msgid "unsupported getbundle arguments: %s"
 msgstr "argumentos de getbundle não suportados: %s"
 
+msgid "streaming all changes\n"
+msgstr "encadeando todas as mudanças\n"
+
+msgid "unexpected response from remote server:"
+msgstr "resposta inesperada do servidor remoto:"
+
+#, python-format
+msgid "%d files to transfer, %s of data\n"
+msgstr "%d arquivos para transferir, %s de dados\n"
+
+msgid "clone"
+msgstr "clone"
+
+#, python-format
+msgid "transferred %s in %.1f seconds (%s/sec)\n"
+msgstr "transferidos %s em %.1f segundos (%s/s)\n"
+
 #, python-format
 msgid "*** failed to import extension %s from %s: %s\n"
 msgstr "*** falha ao importar a extensão %s de %s: %s\n"
@@ -16857,6 +17111,9 @@
 msgid "syntax error"
 msgstr "erro de sintaxe"
 
+msgid "invalid token"
+msgstr "token inválido"
+
 msgid "missing argument"
 msgstr "argumento faltando"
 
@@ -17123,11 +17380,12 @@
 msgid "subrepo requires a pattern or no arguments"
 msgstr "subrepo requer um padrão ou nenhum argumento"
 
-msgid "invalid token"
-msgstr "token inválido"
-
-msgid "custom templates not yet supported"
-msgstr "modelos personalizados ainda não são suportados"
+#, python-format
+msgid "available styles: %s\n"
+msgstr "estilos disponíveis: %s\n"
+
+msgid "specify a template"
+msgstr "especifique um modelo"
 
 msgid "starting revisions are not directly related"
 msgstr "as revisões iniciais não são diretamente relacionadas"
@@ -18217,8 +18475,8 @@
 "        HG: --\n"
 "        HG: user: {author}\\n{ifeq(p2rev, \"-1\", \"\",\n"
 "       \"HG: branch merge\\n\")\n"
-"       }HG: branch '{branch}'\\n{if(currentbookmark,\n"
-"       \"HG: bookmark '{currentbookmark}'\\n\")  }{subrepos %\n"
+"       }HG: branch '{branch}'\\n{if(activebookmark,\n"
+"       \"HG: bookmark '{activebookmark}'\\n\")   }{subrepos %\n"
 "       \"HG: subrepo {subrepo}\\n\"              }{file_adds %\n"
 "       \"HG: added {file}\\n\"                   }{file_mods %\n"
 "       \"HG: changed {file}\\n\"                 }{file_dels %\n"
@@ -18232,8 +18490,8 @@
 "        HG: --\n"
 "        HG: user: {author}\\n{ifeq(p2rev, \"-1\", \"\",\n"
 "       \"HG: branch merge\\n\")\n"
-"       }HG: branch '{branch}'\\n{if(currentbookmark,\n"
-"       \"HG: bookmark '{currentbookmark}'\\n\")  }{subrepos %\n"
+"       }HG: branch '{branch}'\\n{if(activebookmark,\n"
+"       \"HG: bookmark '{activebookmark}'\\n\")   }{subrepos %\n"
 "       \"HG: subrepo {subrepo}\\n\"              }{file_adds %\n"
 "       \"HG: added {file}\\n\"                   }{file_mods %\n"
 "       \"HG: changed {file}\\n\"                 }{file_dels %\n"
@@ -18787,14 +19045,14 @@
 
 msgid ""
 "  [extensions]\n"
-"  # (the progress extension will get loaded from Mercurial's path)\n"
-"  progress =\n"
+"  # (the color extension will get loaded from Mercurial's path)\n"
+"  color =\n"
 "  # (this extension will get loaded from the file specified)\n"
 "  myfeature = ~/.hgext/myfeature.py"
 msgstr ""
 "  [extensions]\n"
-"  # (a extensão progress será carregada a partir do caminho do Mercurial)\n"
-"  progress =\n"
+"  # (a extensão color será carregada a partir do caminho do Mercurial)\n"
+"  color =\n"
 "  # (esta extensão será carregada do arquivo especificado)\n"
 "  myfeature = ~/.hgext/myfeature.py"
 
@@ -19786,11 +20044,22 @@
 "    Padrão: strict."
 
 msgid ""
-"\n"
+"``fuzz``\n"
+"    The number of lines of 'fuzz' to allow when applying patches. This\n"
+"    controls how much context the patcher is allowed to ignore when\n"
+"    trying to apply a patch.\n"
+"    Default: 2"
+msgstr ""
+"``fuzz``\n"
+"    O número de linhas de 'fuzz' permitidas ao aplicar patches. Isto\n"
+"    controla quanto contexto a aplicação do patch pode ignorar na\n"
+"    tentativa de aplicar um patch.\n"
+"    Padrão: 2"
+
+msgid ""
 "``paths``\n"
 "---------"
 msgstr ""
-"\n"
 "``paths``\n"
 "---------"
 
@@ -20057,6 +20326,105 @@
 "    Padrão: 5."
 
 msgid ""
+"``progress``\n"
+"------------"
+msgstr ""
+"``progress``\n"
+"------------"
+
+msgid ""
+"Mercurial commands can draw progress bars that are as informative as\n"
+"possible. Some progress bars only offer indeterminate information, while others\n"
+"have a definite end point."
+msgstr ""
+"Comandos do Mercurial podem desenhar barras de progresso tão\n"
+"informativas quanto possível. Algumas barras de progresso\n"
+"fornecem apenas informação indeterminada, enquanto outras\n"
+"possuem um ponto de encerramento definido."
+
+msgid ""
+"``delay``\n"
+"    Number of seconds (float) before showing the progress bar. (default: 3)"
+msgstr ""
+"``delay``\n"
+"    Número de segundos (float) antes que a barra seja mostrada.\n"
+"    (padrão: 3)"
+
+msgid ""
+"``changedelay``\n"
+"    Minimum delay before showing a new topic. When set to less than 3 * refresh,\n"
+"    that value will be used instead. (default: 1)"
+msgstr ""
+"``changedelay``\n"
+"    Atraso mínimo antes de mostrar um novo tópico. Se for definido\n"
+"    para menos de 3 * refresh, tal valor será usado em seu lugar.\n"
+"    (padrão: 1)"
+
+msgid ""
+"``refresh``\n"
+"    Time in seconds between refreshes of the progress bar. (default: 0.1)"
+msgstr ""
+"``refresh``\n"
+"    tempo em segundos entre atualizações da barra de progresso.\n"
+"    (padrão: 0.1)"
+
+msgid ""
+"``format``\n"
+"    Format of the progress bar."
+msgstr ""
+"``format``\n"
+"    Formato da barra de progresso."
+
+msgid ""
+"    Valid entries for the format field are ``topic``, ``bar``, ``number``,\n"
+"    ``unit``, ``estimate``, speed, and item. item defaults to the last 20\n"
+"    characters of the item, but this can be changed by adding either ``-``\n"
+"    which would take the last num characters, or ``+`` for the first num\n"
+"    characters."
+msgstr ""
+"    Entradas válidas para o campo format são topic (tópico),\n"
+"    bar (barra), number (número), unit (unidade), estimate\n"
+"    (estimativa), speed (velocidade) e item (item).\n"
+"    Por padrão, item são os últimos 20 caracteres do item,\n"
+"    mas isto pode ser modificado adicionando ``-``, que\n"
+"    consideraria os últimos num caracteres, ou ``+``\n"
+"    para os primeiros num caracteres."
+
+msgid "    (default: Topic bar number estimate)"
+msgstr "    (padrão: Topic bar number estimate)"
+
+msgid ""
+"``width``\n"
+"    If set, the maximum width of the progress information (that is, min(width,\n"
+"    term width) will be used)"
+msgstr ""
+"``width``\n"
+"    Se definido, será a largura máxima da informação de progresso\n"
+"    (isto é, min(largura, largura do terminal) será usada)"
+
+msgid ""
+"``clear-complete``\n"
+"    clear the progress bar after it's done (default to True)"
+msgstr ""
+"``clear-complete``\n"
+"    limpa a barra de progresso após terminar (o padrão é True)"
+
+msgid ""
+"``disable``\n"
+"    If true, don't show a progress bar"
+msgstr ""
+"``disable``\n"
+"    Se 'true', não exibe uma barra de progresso"
+
+msgid ""
+"``assume-tty``\n"
+"    If true, ALWAYS show a progress bar, unless disable is given"
+msgstr ""
+"``assume-tty``\n"
+"    Se 'true', SEMPRE exibe uma barra de progressos, a não ser\n"
+"    que 'disable' seja 'true'"
+
+msgid ""
 "``revsetalias``\n"
 "---------------"
 msgstr ""
@@ -20127,6 +20495,15 @@
 "    estão presentes. O padrão é False."
 
 msgid ""
+"``maxhttpheaderlen``\n"
+"    Instruct HTTP clients not to send request headers longer than this\n"
+"    many bytes. Default is 1024."
+msgstr ""
+"``maxhttpheaderlen``\n"
+"    Instrui clientes HTTP a não enviares cabeçalhos de pedido\n"
+"    contendo mais bytes do que este valor. O padrão é 1024."
+
+msgid ""
 "``smtp``\n"
 "--------"
 msgstr ""
@@ -20485,6 +20862,36 @@
 "    de conflitos podem causar problemas sérios."
 
 msgid ""
+"``patch``\n"
+"    An optional external tool that ``hg import`` and some extensions\n"
+"    will use for applying patches. By default Mercurial uses an\n"
+"    internal patch utility. The external tool must work as the common\n"
+"    Unix ``patch`` program. In particular, it must accept a ``-p``\n"
+"    argument to strip patch headers, a ``-d`` argument to specify the\n"
+"    current directory, a file name to patch, and a patch file to take\n"
+"    from stdin."
+msgstr ""
+"``patch``\n"
+"    Um utilitário externo opcional que ``hg import`` e algumas\n"
+"    extensões usarão para aplicar patches.\n"
+"    Por padrão, o Mercurial usa uma ferramenta interna.\n"
+"    A ferramenta externa deve funcionar da mesma maneira que\n"
+"    o programa Unix ``patch``.\n"
+"    Em particular, deve aceitar um argumento ``-p`` para remover\n"
+"    cabeçalhos do patch, um argumento ``-d`` para especificar o\n"
+"    diretório atual, um nome de arquivo no qual aplicar o patch,\n"
+"    e ler um arquivo de patch a partir da entrada padrão."
+
+msgid ""
+"    It is possible to specify a patch tool together with extra\n"
+"    arguments. For example, setting this option to ``patch --merge``\n"
+"    will use the ``patch`` program with its 2-way merge option."
+msgstr ""
+"    É possível especificar parâmetros extras para a ferramenta de patch.\n"
+"    Por exemplo, definir essa opção como ``patch --merge`` usará o\n"
+"    programa ``patch`` com sua opção de mesclagem de duas vias."
+
+msgid ""
 "``portablefilenames``\n"
 "    Check for portable filenames. Can be ``warn``, ``ignore`` or ``abort``.\n"
 "    Default is ``warn``.\n"
@@ -20528,16 +20935,6 @@
 "    O padrão é ``hg``."
 
 msgid ""
-"``reportoldssl``\n"
-"    Warn if an SSL certificate is unable to be used due to using Python\n"
-"    2.5 or earlier. True or False. Default is True."
-msgstr ""
-"``reportoldssl``\n"
-"    Avisa se um certificado SSL não puder ser usado por falta de\n"
-"    suporte nas versões do Pyton 2.5 ou anteriores. True ou False.\n"
-"    O padrão é True."
-
-msgid ""
 "``report_untrusted``\n"
 "    Warn if a ``.hg/hgrc`` file is ignored due to not being owned by a\n"
 "    trusted user or group. True or False. Default is True."
@@ -20895,6 +21292,13 @@
 "    Habilita suporte a cache na interface hgweb. O padrão é True."
 
 msgid ""
+"``certificate``\n"
+"    Certificate to use when running :hg:`serve`."
+msgstr ""
+"``certificate``\n"
+"    Certificado a ser usado ao executar :hg:`serve`."
+
+msgid ""
 "``collapse``\n"
 "    With ``descend`` enabled, repositories in subdirectories are shown at\n"
 "    a single level alongside repositories in the current path. With\n"
@@ -23293,6 +23697,17 @@
 "partir da raiz, comece-o por ``^``."
 
 msgid ""
+"Subdirectories can have their own .hgignore settings by adding\n"
+"``subinclude:path/to/subdir/.hgignore`` to the root ``.hgignore``. See\n"
+":hg:`help patterns` for details on ``subinclude:`` and ``include:``."
+msgstr ""
+"Subdiretórios podem ter suas próprias configurações .hgignore\n"
+"adicionando ``subinclude:caminho/para/subdir/.hgignore`` ao\n"
+"``.hgignore`` raiz.\n"
+"Veja :hg:`help patterns` para detalhes sobre ``subinclude:``\n"
+"e ``include:``."
+
+msgid ""
 "  Patterns specified in other than ``.hgignore`` are always rooted.\n"
 "  Please see :hg:`help patterns` for details."
 msgstr ""
@@ -23912,6 +24327,21 @@
 "arquivo também é tratada como um padrão de arquivos."
 
 msgid ""
+"To read a set of patterns from a file, use ``include:`` or ``subinclude:``.\n"
+"``include:`` will use all the patterns from the given file and treat them as if\n"
+"they had been passed in manually.  ``subinclude:`` will only apply the patterns\n"
+"against files that are under the subinclude file's directory. See :hg:`help\n"
+"hgignore` for details on the format of these files."
+msgstr ""
+"Para ler um conjunto de padrões de um arquivo, use ``include:``\n"
+"ou ``subinclude:``.\n"
+"``include:`` usará todos os padrões de um arquivo dado, tratando-os\n"
+"como se fossem especificados manualmente.\n"
+"``subinclude:`` aplicará os padrões apenas a arquivos sob o diretório\n"
+"que contém o arquivo incluído.\n"
+"Veja :hg:`help hgignore` para detalhes do formato desses arquivos."
+
+msgid ""
 "All patterns, except for ``glob:`` specified in command line (not for\n"
 "``-I`` or ``-X`` options), can match also against directories: files\n"
 "under matched directories are treated as matched."
@@ -23974,8 +24404,21 @@
 "  listfile:list.txt  lê a lista de list.txt com um padrão por linha\n"
 "  listfile0:list.txt lê a lista de list.txt delimitados por bytes null"
 
-msgid "See also :hg:`help filesets`.\n"
-msgstr "Veja também :hg:`help filesets`.\n"
+msgid "See also :hg:`help filesets`."
+msgstr "Veja também :hg:`help filesets`."
+
+msgid "Include examples::"
+msgstr "Exemplos de padrões de inclusão::"
+
+msgid ""
+"  include:path/to/mypatternfile    reads patterns to be applied to all paths\n"
+"  subinclude:path/to/subignorefile reads patterns specifically for paths in the\n"
+"                                   subdirectory\n"
+msgstr ""
+"  include:caminho/para/arquivo     lê padrões a serem aplicados a todos\n"
+"                                   os caminhos\n"
+"  subinclude:caminho/para/arquivo  lê padrões específicos para caminhos\n"
+"                                   no subdiretório\n"
 
 msgid ""
 "What are phases?\n"
@@ -24758,13 +25201,16 @@
 
 msgid ""
 ":files: files does not recurse into subrepos unless -S/--subrepos is\n"
-"    specified.  Git and Subversion subrepositories are currently\n"
-"    silently ignored."
-msgstr ""
-":files: files não é executado recursivamente em\n"
-"    sub-repositórios, a não ser que -S/--subrepos seja\n"
-"    especificado.\n"
-"    Sub-repositórios do Subversion e do Git são no momento\n"
+"    specified.  However, if you specify the full path of a file or\n"
+"    directory in a subrepo, it will be displayed even without\n"
+"    -S/--subrepos being specified.  Git and Subversion subrepositories\n"
+"    are currently silently ignored."
+msgstr ""
+":files: files não é executado recursivamente em sub-repositórios, a não\n"
+"    ser que -S/--subrepos seja especificado. No entanto, se for\n"
+"    especificado o caminho completo de um arquivo em um sub-repositório,\n"
+"    ele será mostrado mesmo que -S/--subrepos não seja passado.\n"
+"    Sub-repositórios do Subversion e do git são no momento\n"
 "    silenciosamente ignorados."
 
 msgid ""
@@ -24996,6 +25442,15 @@
 msgid "- expr % \"{template}\""
 msgstr "- expr % \"{modelo}\""
 
+msgid ""
+"As seen in the above example, \"{template}\" is interpreted as a template.\n"
+"To prevent it from being interpreted, you can use an escape character \"\\{\"\n"
+"or a raw string prefix, \"r'...'\"."
+msgstr ""
+"Como visto no exemplo acima, \"{modelo}\" é interpretado como um modelo.\n"
+"Para impedir que seja interpretado, você pode usar um caractere de\n"
+"escape \"\\{\" ou um prefixo de string literal \"r'...'\"."
+
 msgid "Some sample command line templates:"
 msgstr "Alguns exemplos de modelos de linha de comando:"
 
@@ -25026,8 +25481,8 @@
 msgid "- Output the description set to a fill-width of 30::"
 msgstr "- Informar as descrições em um campo de largura 30::"
 
-msgid "   $ hg log -r 0 --template \"{fill(desc, '30')}\""
-msgstr "   $ hg log -r 0 --template \"{fill(desc, '30')}\""
+msgid "   $ hg log -r 0 --template \"{fill(desc, 30)}\""
+msgstr "   $ hg log -r 0 --template \"{fill(desc, 30)}\""
 
 msgid "- Use a conditional to test for the default branch::"
 msgstr "- Usar uma conditional para testar pelo ramo default::"
@@ -25063,15 +25518,15 @@
 msgid "   $ hg log -r 0 --template \"{join(extras, '\\n')}\\n\""
 msgstr "   $ hg log -r 0 --template \"{join(extras, '\\n')}\\n\""
 
-msgid "- Mark the current bookmark with '*'::"
-msgstr "- Indica o marcador atual com '*'::"
-
-msgid ""
-"   $ hg log --template \"{bookmarks % '{bookmark}{ifeq(bookmark, current, "
-"\\\"*\\\")} '}\\n\""
-msgstr ""
-"   $ hg log --template \"{bookmarks % '{bookmark}{ifeq(bookmark, current, "
-"\\\"*\\\")} '}\\n\""
+msgid "- Mark the active bookmark with '*'::"
+msgstr "- Indica o marcador ativo com '*'::"
+
+msgid ""
+"   $ hg log --template \"{bookmarks % '{bookmark}{ifeq(bookmark, active, "
+"'*')} '}\\n\""
+msgstr ""
+"   $ hg log --template \"{bookmarks % '{bookmark}{ifeq(bookmark, active, "
+"'*')} '}\\n\""
 
 msgid "- Mark the working copy parent with '@'::"
 msgstr "- Indica o pai do diretório de trabalho com '@'::"
@@ -25082,15 +25537,15 @@
 msgid "- Show only commit descriptions that start with \"template\"::"
 msgstr "- Mostra apenas descrições de revisão que comecem com \"template\"::"
 
-msgid "   $ hg log --template \"{startswith(\\\"template\\\", firstline(desc))}\\n\""
-msgstr "   $ hg log --template \"{startswith(\\\"template\\\", firstline(desc))}\\n\""
+msgid "   $ hg log --template \"{startswith('template', firstline(desc))}\\n\""
+msgstr "   $ hg log --template \"{startswith('template', firstline(desc))}\\n\""
 
 msgid "- Print the first word of each line of a commit message::"
 msgstr ""
 "- Imprime a primeira palavra de cada linha de uma mensagem de consolidação::"
 
-msgid "   $ hg log --template \"{word(\\\"0\\\", desc)}\\n\"\n"
-msgstr "   $ hg log --template \"{word(\\\"0\\\", desc)}\\n\"\n"
+msgid "   $ hg log --template \"{word(0, desc)}\\n\"\n"
+msgstr "   $ hg log --template \"{word(0, desc)}\\n\"\n"
 
 msgid "Valid URLs are of the form::"
 msgstr "URLs válidas são da forma::"
@@ -25261,6 +25716,21 @@
 msgid "updating working directory\n"
 msgstr "atualizando diretório de trabalho\n"
 
+msgid ""
+"src repository does not support revision lookup and so doesn't support clone"
+" by revision"
+msgstr ""
+"repositório de origem não suporta busca de revisões, portanto não suporta "
+"clonar por revisão"
+
+#, python-format
+msgid "(sharing from existing pooled repository %s)\n"
+msgstr "(compartilhando repositório existente %s)\n"
+
+#, python-format
+msgid "(sharing from new pooled repository %s)\n"
+msgstr "(compartilhando novo repositório agrupado %s)\n"
+
 #, python-format
 msgid "destination directory: %s\n"
 msgstr "diretório de destino: %s\n"
@@ -25276,12 +25746,14 @@
 msgid "destination '%s' is not empty"
 msgstr "o destino '%s' não está vazio"
 
-msgid ""
-"src repository does not support revision lookup and so doesn't support clone"
-" by revision"
-msgstr ""
-"repositório de origem não suporta busca de revisões, portanto não suporta "
-"clonar por revisão"
+msgid "(not using pooled storage: remote appears to be empty)\n"
+msgstr ""
+"(desativando armazenamento compartilhado: o remoto parece estar vazio)\n"
+
+msgid "(not using pooled storage: unable to resolve identity of remote)\n"
+msgstr ""
+"(desativando armazenamento compartilhado: incapaz de determinar identidade "
+"do remoto)\n"
 
 msgid "clone from remote to remote not supported"
 msgstr "clone de origem remota para destino remoto não suportado"
@@ -25314,6 +25786,13 @@
 msgid "(branch merge, don't forget to commit)\n"
 msgstr "(mesclagem de ramo, não esqueça de consolidar)\n"
 
+msgid "checking subrepo links\n"
+msgstr "checando links para sub-repositórios\n"
+
+#, python-format
+msgid ".hgsubstate is corrupt in revision %s\n"
+msgstr ".hgsubstate está corrompido na revisão %s\n"
+
 #, python-format
 msgid "websub: invalid pattern for %s: %s\n"
 msgstr "websub: padrão inválido para %s: %s\n"
@@ -25949,14 +26428,6 @@
 msgstr "impossível criar novo repositório http"
 
 #, python-format
-msgid "ignoring invalid syntax '%s'"
-msgstr "ignorando sintaxe inválida '%s'"
-
-#, python-format
-msgid "skipping unreadable ignore file '%s': %s\n"
-msgstr "desconsiderando arquivo ignore ilegível '%s': %s\n"
-
-#, python-format
 msgid "repository %s not found"
 msgstr "repositório %s não encontrado"
 
@@ -26110,9 +26581,6 @@
 msgid "committing changelog\n"
 msgstr "consolidando changelog\n"
 
-msgid "unexpected response from remote server:"
-msgstr "resposta inesperada do servidor remoto:"
-
 msgid "operation forbidden by server"
 msgstr "operação não permitida pelo servidor"
 
@@ -26122,20 +26590,6 @@
 msgid "the server sent an unknown error code"
 msgstr "o servidor enviou um código de erro desconhecido"
 
-msgid "streaming all changes\n"
-msgstr "encadeando todas as mudanças\n"
-
-#, python-format
-msgid "%d files to transfer, %s of data\n"
-msgstr "%d arquivos para transferir, %s de dados\n"
-
-msgid "clone"
-msgstr "clone"
-
-#, python-format
-msgid "transferred %s in %.1f seconds (%s/sec)\n"
-msgstr "transferidos %s em %.1f segundos (%s/s)\n"
-
 #, python-format
 msgid "pushkey-abort: %s\n"
 msgstr "pushkey-abortado: %s\n"
@@ -26209,6 +26663,14 @@
 msgstr "incapaz de ler lista de arquivos (%s)"
 
 #, python-format
+msgid "skipping unreadable pattern file '%s': %s\n"
+msgstr "desconsiderando arquivo de padrões ilegível '%s': %s\n"
+
+#, python-format
+msgid "%s: invalid pattern (%s): %s"
+msgstr "%s: padrão inválido (%s): %s"
+
+#, python-format
 msgid "invalid pattern (%s): %s"
 msgstr "padrão inválido (%s): %s"
 
@@ -26216,6 +26678,10 @@
 msgstr "padrão inválido"
 
 #, python-format
+msgid "%s: ignoring invalid syntax '%s'\n"
+msgstr "%s: ignorando sintaxe inválida '%s'\n"
+
+#, python-format
 msgid "diff context lines count must be an integer, not %r"
 msgstr "o número de linhas de contexto de diff deve ser um inteiro, e não %r"
 
@@ -26292,6 +26758,10 @@
 msgid "getting %s to %s\n"
 msgstr "obtendo %s para %s\n"
 
+#, python-format
+msgid "branch %s not found"
+msgstr "ramo %s não encontrado"
+
 msgid "merging with a working directory ancestor has no effect"
 msgstr ""
 "mesclar com um ancestral do diretório de trabalho não tem nenhum efeito"
@@ -26429,6 +26899,24 @@
 msgstr "não é um infixo: %s"
 
 #, python-format
+msgid "%(func)s takes at most %(nargs)d arguments"
+msgstr "a função %(func)s recebe no máximo %(nargs)d argumentos"
+
+#, python-format
+msgid "%(func)s got an invalid argument"
+msgstr "a função %(func)s recebeu um argumento inválido"
+
+#, python-format
+msgid "%(func)s got an unexpected keyword argument '%(key)s'"
+msgstr "a função %(func)s recebeu um argumento nomeado inesperado '%(key)s'"
+
+#, python-format
+msgid "%(func)s got multiple values for keyword argument '%(key)s'"
+msgstr ""
+"a função %(func)s recebeu múltiplos valores para o argumento nomeado "
+"'%(key)s'"
+
+#, python-format
 msgid "%d out of %d hunks FAILED -- saving rejects to file %s\n"
 msgstr "%d de %d trechos FALHARAM -- gravando rejeitados no arquivo %s\n"
 
@@ -26480,6 +26968,9 @@
 msgid "%d hunks, %d lines changed\n"
 msgstr "%d trechos, %d linhas modificadas\n"
 
+msgid "record"
+msgstr ""
+
 msgid ""
 "[Ynesfdaq?]$$ &Yes, record this change$$ &No, skip this change$$ &Edit this "
 "change manually$$ &Skip remaining changes to this file$$ Record remaining "
@@ -26519,6 +27010,10 @@
 "removidas, a edição será abortada e o trecho não será modificado.\n"
 
 #, python-format
+msgid "editor exited with exit code %d\n"
+msgstr "o editor terminou com o código de saída %d\n"
+
+#, python-format
 msgid "examine changes to %s?"
 msgstr "examinar mudanças em %s?"
 
@@ -26600,6 +27095,10 @@
 msgstr "o caminho %r percorre o link simbólico %r"
 
 #, python-format
+msgid "consider using '--cwd %s'"
+msgstr "considere usar '--cwd %s'"
+
+#, python-format
 msgid "%s not under root '%s'"
 msgstr "%s não está sob a raiz '%s'"
 
@@ -26633,6 +27132,40 @@
 msgid "killed by signal %d"
 msgstr "morto pelo sinal %d"
 
+#. i18n: format XX seconds as "XXs"
+#, python-format
+msgid "%02ds"
+msgstr "%02ds"
+
+#. i18n: format X minutes and YY seconds as "XmYYs"
+#, python-format
+msgid "%dm%02ds"
+msgstr "%dm%02ds"
+
+#. i18n: format X hours and YY minutes as "XhYYm"
+#, python-format
+msgid "%dh%02dm"
+msgstr "%dh%02dm"
+
+#. i18n: format X days and YY hours as "XdYYh"
+#, python-format
+msgid "%dd%02dh"
+msgstr "%dd%02dh"
+
+#. i18n: format X weeks and YY days as "XwYYd"
+#, python-format
+msgid "%dw%02dd"
+msgstr "%dw%02dd"
+
+#. i18n: format X years and YY weeks as "XyYYw"
+#, python-format
+msgid "%dy%02dw"
+msgstr "%dy%02dw"
+
+#, python-format
+msgid "%d %s/sec"
+msgstr "%d %s/seg"
+
 #, python-format
 msgid "unknown strip-bundle2-version value %r; should be one of %r\n"
 msgstr ""
@@ -26642,6 +27175,13 @@
 msgid "saved backup bundle to %s\n"
 msgstr "salvando bundle de segurança em %s\n"
 
+msgid "programming error: cannot strip from inside a transaction"
+msgstr ""
+"erro de programação: não é possível executar strip dentro de uma transação"
+
+msgid "contact your extension maintainer"
+msgstr "contate o mantenedor da extensão"
+
 msgid "adding branch\n"
 msgstr "adicionando ramo\n"
 
@@ -26657,6 +27197,19 @@
 msgid "strip failed, partial bundle stored in '%s'\n"
 msgstr "strip falhou, bundle parcial armazenado em '%s'\n"
 
+msgid "(not rebuilding fncache because repository does not support fncache)\n"
+msgstr "(fncache não reparado porque o repositório não suporta fncache)\n"
+
+msgid "changeset"
+msgstr "revisão"
+
+#, python-format
+msgid "%d items added, %d removed from fncache\n"
+msgstr "%d itens adicionados, %d removidos do fncache\n"
+
+msgid "fncache already up to date\n"
+msgstr "fncache já está atualizado\n"
+
 #, python-format
 msgid "revlog decompress error: %s"
 msgstr "erro de descompressão do revlog: %s"
@@ -26718,6 +27271,11 @@
 msgstr "tentativa de adicionar linkrev -1 a %s"
 
 #, python-format
+msgid "%s: size of %d bytes exceeds maximum revlog storage of 2GiB"
+msgstr ""
+"%s: o tamanho %d bytes excede o armazenamento máximo do revlog de 2GiB"
+
+#, python-format
 msgid "node %s is not censored"
 msgstr "o nó %s não é censurado"
 
@@ -26729,9 +27287,8 @@
 msgid "at %s: %s"
 msgstr "em %s: %s"
 
-#, python-format
-msgid "can't use %s here"
-msgstr "não se pode usar %s aqui"
+msgid "can't use a key-value pair in this context"
+msgstr "não se pode usar um par chave-valor nesse contexto"
 
 msgid ""
 "``adds(pattern)``\n"
@@ -27004,17 +27561,6 @@
 msgstr "divergent não tem argumentos"
 
 msgid ""
-"``draft()``\n"
-"    Changeset in draft phase."
-msgstr ""
-"``draft()``\n"
-"    Revisões na fase \"draft\" (rascunho)."
-
-#. i18n: "draft" is a keyword
-msgid "draft takes no arguments"
-msgstr "draft não tem argumentos"
-
-msgid ""
 "``extinct()``\n"
 "    Obsolete changesets with obsolete descendants only."
 msgstr ""
@@ -27045,8 +27591,8 @@
 "    com `re:` literalmente, use o prefixo `literal:`."
 
 #. i18n: "extra" is a keyword
-msgid "extra takes at least 1 and at most 2 arguments"
-msgstr "extra recebe um ou dois argumentos"
+msgid "extra takes at least 1 argument"
+msgstr "extra recebe pelo menos um argumento"
 
 #. i18n: "extra" is a keyword
 msgid "first argument to extra must be a string"
@@ -27443,6 +27989,28 @@
 "    O conjunto de todos os pais de todas as revisões no conjunto pedido,\n"
 "    ou os pais do diretório de trabalho."
 
+msgid ""
+"``draft()``\n"
+"    Changeset in draft phase."
+msgstr ""
+"``draft()``\n"
+"    Revisões na fase \"draft\" (rascunho)."
+
+#. i18n: "draft" is a keyword
+msgid "draft takes no arguments"
+msgstr "draft não tem argumentos"
+
+msgid ""
+"``secret()``\n"
+"    Changeset in secret phase."
+msgstr ""
+"``secret()``\n"
+"    A revisão está na fase \"secret\" (secreta)."
+
+#. i18n: "secret" is a keyword
+msgid "secret takes no arguments"
+msgstr "secret não tem argumentos"
+
 msgid "^ expects a number 0, 1, or 2"
 msgstr "^ espera o número 0, 1 ou 2"
 
@@ -27612,17 +28180,6 @@
 "    Revisões no conjunto sem revisões pais no conjunto."
 
 msgid ""
-"``secret()``\n"
-"    Changeset in secret phase."
-msgstr ""
-"``secret()``\n"
-"    A revisão está na fase \"secret\" (secreta)."
-
-#. i18n: "secret" is a keyword
-msgid "secret takes no arguments"
-msgstr "secret não tem argumentos"
-
-msgid ""
 "``sort(set[, [-]key...])``\n"
 "    Sort set by keys. The default sort order is ascending, specify a key\n"
 "    as ``-key`` to sort in descending order."
@@ -27877,19 +28434,20 @@
 msgid "no suitable response from remote hg"
 msgstr "nenhuma resposta adequada do hg remoto"
 
+msgid "check previous remote output"
+msgstr "verifique a saída remota anterior"
+
 #, python-format
 msgid "push refused: %s"
 msgstr "envio recusado: %s"
 
+#, python-format
+msgid "passphrase for %s: "
+msgstr "senha para %s: "
+
 msgid "ssl connection failed"
 msgstr "a conexão ssl falhou"
 
-msgid "Python SSL support not found"
-msgstr "suporte do Python a SSL não instalado"
-
-msgid "certificate checking requires Python 2.6"
-msgstr "verificação de certificado exige Python 2.6"
-
 msgid "no certificate received"
 msgstr "nenhum certificado recebido"
 
@@ -27908,23 +28466,6 @@
 msgstr "não foi possível encontrar web.cacerts: %s"
 
 #, python-format
-msgid "host fingerprint for %s can't be verified (Python too old)"
-msgstr ""
-"a impressão digital do host para %s não pode ser verificada (versão do "
-"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 "
-"antiga)\n"
-
-#, python-format
 msgid "%s ssl connection error"
 msgstr "erro de conexão ssl com %s"
 
@@ -28113,6 +28654,14 @@
 msgstr "revertendo sub-repositório %s\n"
 
 #, python-format
+msgid "subrepo '%s' is hidden in revision %s\n"
+msgstr "sub-repositório '%s' oculto na revisão %s\n"
+
+#, python-format
+msgid "subrepo '%s' not found in revision %s\n"
+msgstr "sub-repositório '%s' não encontrado na revisão %s\n"
+
+#, python-format
 msgid "'svn' executable not found for subrepo '%s'"
 msgstr "executável 'svn' não encontrado para o sub-repositório '%s'"
 
@@ -28356,6 +28905,16 @@
 "    'Foo Bar'"
 
 msgid ""
+":revescape: Any text. Escapes all \"special\" characters, except @.\n"
+"    Forward slashes are escaped twice to prevent web servers from prematurely\n"
+"    unescaping them. For example, \"@foo bar/baz\" becomes \"@foo%20bar%252Fbaz\"."
+msgstr ""
+":revescape: Qualquer texto. Codifica todos os caracteres\n"
+"    \"especiais\", exceto @. Barras '/' recebem escapes duplos para\n"
+"    impedir que servidores web retirem os escapes prematuramente.\n"
+"    Por exemplo, \"@foo bar/baz\" se torna \"@foo%20bar%252Fbaz\"."
+
+msgid ""
 ":rfc3339date: Date. Returns a date using the Internet date format\n"
 "    specified in RFC 3339: \"2009-08-18T13:00:13+02:00\"."
 msgstr ""
@@ -28459,18 +29018,26 @@
 
 msgid ""
 ":bookmarks: List of strings. Any bookmarks associated with the\n"
-"    changeset."
-msgstr ""
-":bookmarks: Lista de strings. Quaisquer marcadores associados à revisão."
+"    changeset. Also sets 'active', the name of the active bookmark."
+msgstr ""
+":bookmarks: Lista de strings. Quaisquer marcadores associados à revisão.\n"
+"    Também define 'active', o nome do marcador ativo."
 
 msgid ":children: List of strings. The children of the changeset."
 msgstr ":children: Lista de strings. As revisões filhas da revisão."
 
 msgid ""
 ":currentbookmark: String. The active bookmark, if it is\n"
-"    associated with the changeset"
+"    associated with the changeset (DEPRECATED)"
 msgstr ""
 ":currentbookmark: String. O marcador ativo, se estiver\n"
+"    associado à revisão (OBSOLETO)"
+
+msgid ""
+":activebookmark: String. The active bookmark, if it is\n"
+"    associated with the changeset"
+msgstr ""
+":activebookmark: String. O marcador ativo, se estiver\n"
 "    associado à revisão"
 
 msgid ":date: Date information. The date when the changeset was committed."
@@ -28524,15 +29091,20 @@
 "    adicionados ou removidos por esta revisão."
 
 msgid ""
-":latesttag: String. Most recent global tag in the ancestors of this\n"
-"    changeset."
-msgstr ""
-":latesttag: String. A etiqueta global mais recente nos ancestrais desta\n"
-"    revisão."
+":latesttag: List of strings. The global tags on the most recent globally\n"
+"    tagged ancestor of this changeset."
+msgstr ""
+":latesttag: Lista de strings. As etiquetas globais no ancestral mais\n"
+"    recente desta revisão que possuir etiquetas globais."
 
 msgid ":latesttagdistance: Integer. Longest path to the latest tag."
 msgstr ":latesttagdistance: Inteiro. O caminho mais longo para a latesttag."
 
+msgid ":changessincelatesttag: Integer. All ancestors not in the latest tag."
+msgstr ""
+":changessincelatesttag: Inteiro. Todos os ancestrais que não estão na\n"
+"    etiqueta mais recente."
+
 msgid ""
 ":node: String. The changeset identification hash, as a 40 hexadecimal\n"
 "    digit string."
@@ -28596,6 +29168,12 @@
 "    Se a revisão só tiver um pai \"natural\" (a revisão predecessora),\n"
 "    nada é exibido."
 
+msgid "integer literal without digits"
+msgstr "inteiro literal sem dígitos"
+
+msgid "unterminated template expansion"
+msgstr "expansão de modelo não terminada"
+
 #, python-format
 msgid "unknown method '%s'"
 msgstr "método desconhecido '%s'"
@@ -28674,6 +29252,20 @@
 msgstr "pad() espera de dois a quatro argumentos"
 
 msgid ""
+":indent(text, indentchars[, firstline]): Indents all non-empty lines\n"
+"    with the characters given in the indentchars string. An optional\n"
+"    third parameter will override the indent for the first line only\n"
+"    if present."
+msgstr ""
+":indent(texto, caracteres[, primeiralinha]): Indenta todas as linhas\n"
+"    não vazias com os caracteres pedidos. Se presente, um terceiro\n"
+"    parâmetro opcional sobrepõe a indentação para a primeira linha."
+
+#. i18n: "indent" is a keyword
+msgid "indent() expects two or three arguments"
+msgstr "indent() espera dois ou três argumentos"
+
+msgid ""
 ":get(dict, key): Get an attribute/key from an object. Some keywords\n"
 "    are complex types. This function allows you to obtain the value of an\n"
 "    attribute on these type."
@@ -28806,8 +29398,9 @@
 msgid "word expects two or three arguments, got %d"
 msgstr "word espera dois ou três argumentos, %d recebidos"
 
-msgid "Use strings like '3' for numbers passed to word function"
-msgstr "Use aspas como em '3' para números passados para a função word"
+#. i18n: "word" is a keyword
+msgid "word expects an integer index"
+msgstr "word espera um índice inteiro"
 
 msgid "unmatched quotes"
 msgstr "aspas não combinam"
@@ -29243,8 +29836,9 @@
 msgid "broken revlog! (%s)"
 msgstr "revlog quebrado! (%s)"
 
-msgid "missing revlog!"
-msgstr "revlog faltando!"
+#, python-format
+msgid " warning: revlog '%s' not in fncache!"
+msgstr " warning: o revlog '%s' não está no fncache!"
 
 #, python-format
 msgid "%s not in manifests"
@@ -29293,6 +29887,11 @@
 msgid "%d warnings encountered!\n"
 msgstr "%d avisos encontrados!\n"
 
+msgid "hint: run \"hg debugrebuildfncache\" to recover from corrupt fncache\n"
+msgstr ""
+"dica: execute \"hg debugrebuildfncache\" para recuperar o fncache "
+"corrompido\n"
+
 #, python-format
 msgid "%d integrity errors encountered!\n"
 msgstr "%d erros de integridade encontrados!\n"
@@ -29313,6 +29912,102 @@
 msgid "number of cpus must be an integer"
 msgstr "o número de cpus deve ser um inteiro"
 
+#~ msgid "cannot edit immutable changeset: %s"
+#~ msgstr "não é possível editar uma revisão imutável: %s"
+
+#~ msgid "The following settings are available::"
+#~ msgstr "As seguintes opções estão disponíveis::"
+
+#~ msgid ""
+#~ "  [progress]\n"
+#~ "  delay = 3 # number of seconds (float) before showing the progress bar\n"
+#~ "  changedelay = 1 # changedelay: minimum delay before showing a new topic.\n"
+#~ "                  # If set to less than 3 * refresh, that value will\n"
+#~ "                  # be used instead.\n"
+#~ "  refresh = 0.1 # time in seconds between refreshes of the progress bar\n"
+#~ "  format = topic bar number estimate # format of the progress bar\n"
+#~ "  width =  # if set, the maximum width of the progress information\n"
+#~ "                 # (that is, min(width, term width) will be used)\n"
+#~ "  clear-complete = True # clear the progress bar after it's done\n"
+#~ "  disable = False # if true, don't show a progress bar\n"
+#~ "  assume-tty = False # if true, ALWAYS show a progress bar, unless\n"
+#~ "                     # disable is given"
+#~ msgstr ""
+#~ "  [progress]\n"
+#~ "  delay = 3 # número de segundos (float) antes que a barra seja mostrada\n"
+#~ "  changedelay = 1 # changedelay: atraso mínimo antes que um novo tópico\n"
+#~ "                  # seja mostrado. Se for definido para menos de\n"
+#~ "                  # 3 * refresh, tal valor será usado em seu lugar.\n"
+#~ "  refresh = 0.1 # tempo em segundos entre atualizações da\n"
+#~ "                # barra de progresso\n"
+#~ "  format = topic bar number estimate # formato da barra de progresso\n"
+#~ "  width =  # se definido, será a largura máxima da informação de\n"
+#~ "                 # progresso (isto é, min(largura, largura do terminal)\n"
+#~ "                 # será usada)\n"
+#~ "  clear-complete = True # limpa a barra de progresso após terminar\n"
+#~ "  disable = False # se 'true', não exibe uma barra de progresso\n"
+#~ "  assume-tty = False # se 'true', SEMPRE exibe uma barra de progressos,\n"
+#~ "                     # a não ser que 'disable' seja 'true'"
+
+#~ msgid "option '--%s' may not be used when shelving a change"
+#~ msgstr "a opção '--%s' não pode ser usada ao engavetar uma mudança"
+
+#~ msgid "mark a branch as closed, hiding it from the branch list"
+#~ msgstr "marca um ramo como fechado, escondendo-o da lista de ramos"
+
+#~ msgid "custom templates not yet supported"
+#~ msgstr "modelos personalizados ainda não são suportados"
+
+#~ msgid ""
+#~ "``reportoldssl``\n"
+#~ "    Warn if an SSL certificate is unable to be used due to using Python\n"
+#~ "    2.5 or earlier. True or False. Default is True."
+#~ msgstr ""
+#~ "``reportoldssl``\n"
+#~ "    Avisa se um certificado SSL não puder ser usado por falta de\n"
+#~ "    suporte nas versões do Pyton 2.5 ou anteriores. True ou False.\n"
+#~ "    O padrão é True."
+
+#~ msgid ""
+#~ ":files: files does not recurse into subrepos unless -S/--subrepos is\n"
+#~ "    specified.  Git and Subversion subrepositories are currently\n"
+#~ "    silently ignored."
+#~ msgstr ""
+#~ ":files: files não é executado recursivamente em\n"
+#~ "    sub-repositórios, a não ser que -S/--subrepos seja\n"
+#~ "    especificado.\n"
+#~ "    Sub-repositórios do Subversion e do Git são no momento\n"
+#~ "    silenciosamente ignorados."
+
+#~ msgid "can't use %s here"
+#~ msgstr "não se pode usar %s aqui"
+
+#~ msgid "Python SSL support not found"
+#~ msgstr "suporte do Python a SSL não instalado"
+
+#~ msgid "certificate checking requires Python 2.6"
+#~ msgstr "verificação de certificado exige Python 2.6"
+
+#~ msgid "host fingerprint for %s can't be verified (Python too old)"
+#~ msgstr ""
+#~ "a impressão digital do host para %s não pode ser verificada (versão do "
+#~ "Python muito antiga)"
+
+#~ 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)"
+
+#~ 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 "
+#~ "antiga)\n"
+
+#~ msgid "Use strings like '3' for numbers passed to word function"
+#~ msgstr "Use aspas como em '3' para números passados para a função word"
+
+#~ msgid "missing revlog!"
+#~ msgstr "revlog faltando!"
+
 #~ msgid "hg debug-merge-base REV REV"
 #~ msgstr "hg debug-merge-base REV REV"
 
@@ -29443,8 +30138,5 @@
 #~ "    Se -a/--active for especificado, mostra apenas ramos ativos. Um\n"
 #~ "    ramo é considerado ativo se contém cabeças de repositório."
 
-#~ msgid "grafting revision %s\n"
-#~ msgstr "enxertando revisão %s\n"
-
 #~ msgid "graft for revision %s is empty\n"
 #~ msgstr "o enxerto para a revisão %s é vazio\n"
diff -r eabba9c75061 -r 35e8d7139224 mercurial/dirstate.py
--- a/mercurial/dirstate.py	Fri Jun 26 18:45:29 2015 -0500
+++ b/mercurial/dirstate.py	Mon Aug 03 11:34:27 2015 -0700
@@ -730,6 +730,34 @@
                     else:
                         badfn(ff, inst.strerror)
 
+        # Case insensitive filesystems cannot rely on lstat() failing to detect
+        # a case-only rename.  Prune the stat object for any file that does not
+        # match the case in the filesystem, if there are multiple files that
+        # normalize to the same path.
+        if match.isexact() and self._checkcase:
+            normed = {}
+
+            for f, st in results.iteritems():
+                if st is None:
+                    continue
+
+                nc = util.normcase(f)
+                paths = normed.get(nc)
+
+                if paths is None:
+                    paths = set()
+                    normed[nc] = paths
+
+                paths.add(f)
+
+            for norm, paths in normed.iteritems():
+                if len(paths) > 1:
+                    for path in paths:
+                        folded = self._discoverpath(path, norm, True, None,
+                                                    self._dirfoldmap)
+                        if path != folded:
+                            results[path] = None
+
         return results, dirsfound, dirsnotfound
 
     def walk(self, match, subrepos, unknown, ignored, full=True):
diff -r eabba9c75061 -r 35e8d7139224 mercurial/help.py
--- a/mercurial/help.py	Fri Jun 26 18:45:29 2015 -0500
+++ b/mercurial/help.py	Mon Aug 03 11:34:27 2015 -0700
@@ -166,6 +166,8 @@
     (["hgignore", "ignore"], _("Syntax for Mercurial Ignore Files"),
      loaddoc('hgignore')),
     (["phases"], _("Working with Phases"), loaddoc('phases')),
+    (['scripting'], _('Using Mercurial from scripts and automation'),
+     loaddoc('scripting')),
 ])
 
 # Map topics to lists of callable taking the current topic help and
diff -r eabba9c75061 -r 35e8d7139224 mercurial/help/scripting.txt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/help/scripting.txt	Mon Aug 03 11:34:27 2015 -0700
@@ -0,0 +1,174 @@
+It is common for machines (as opposed to humans) to consume Mercurial.
+This help topic describes some of the considerations for interfacing
+machines with Mercurial.
+
+Choosing an Interface
+=====================
+
+Machines have a choice of several methods to interface with Mercurial.
+These include:
+
+- Executing the ``hg`` process
+- Querying a HTTP server
+- Calling out to a command server
+
+Executing ``hg`` processes is very similar to how humans interact with
+Mercurial in the shell. It should already be familar to you.
+
+:hg:`serve` can be used to start a server. By default, this will start
+a "hgweb" HTTP server. This HTTP server has support for machine-readable
+output, such as JSON. For more, see :hg:`help hgweb`.
+
+:hg:`serve` can also start a "command server." Clients can connect
+to this server and issue Mercurial commands over a special protocol.
+For more details on the command server, including links to client
+libraries, see https://mercurial.selenic.com/wiki/CommandServer.
+
+:hg:`serve` based interfaces (the hgweb and command servers) have the
+advantage over simple ``hg`` process invocations in that they are
+likely more efficient. This is because there is significant overhead
+to spawn new Python processes.
+
+.. tip::
+
+   If you need to invoke several ``hg`` processes in short order and/or
+   performance is important to you, use of a server-based interface
+   is highly recommended.
+
+Environment Variables
+=====================
+
+As documented in :hg:`help environment`, various environment variables
+influence the operation of Mercurial. The following are particularly
+relevant for machines consuming Mercurial:
+
+HGPLAIN
+    If not set, Mercurial's output could be influenced by configuration
+    settings that impact its encoding, verbose mode, localization, etc.
+
+    It is highly recommended for machines to set this variable when
+    invoking ``hg`` processes.
+
+HGENCODING
+   If not set, the locale used by Mercurial will be detected from the
+   environment. If the determined locale does not support display of
+   certain characters, Mercurial may render these character sequences
+   incorrectly (often by using "?" as a placeholder for invalid
+   characters in the current locale).
+
+   Explcitly setting this environment variable is a good practice to
+   guarantee consistent results. "utf-8" is a good choice on UNIX-like
+   environments.
+
+HGRCPATH
+    If not set, Mercurial will inherit config options from config files
+    using the process described in :hg:`help config`. This includes
+    inheriting user or system-wide config files.
+
+    When utmost control over the Mercurial configuration is desired, the
+    value of ``HGRCPATH`` can be set to an explicit file with known good
+    configs. In rare cases, the value can be set to an empty file or the
+    null device (often ``/dev/null``) to bypass loading of any user or
+    system config files. Note that these approaches can have unintended
+    consequences, as the user and system config files often define things
+    like the username and extensions that may be required to interface
+    with a repository.
+
+Consuming Command Output
+========================
+
+It is common for machines to need to parse the output of Mercurial
+commands for relevant data. This section describes the various
+techniques for doing so.
+
+Parsing Raw Command Output
+--------------------------
+
+Likely the simplest and most effective solution for consuming command
+output is to simply invoke ``hg`` commands as you would as a user and
+parse their output.
+
+The output of many commands can easily be parsed with tools like
+``grep``, ``sed``, and ``awk``.
+
+A potential downside with parsing command output is that the output
+of commands can change when Mercurial is upgraded. While Mercurial
+does generally strive for strong backwards compatibility, command
+output does occasionally change. Having tests for your automated
+interactions with ``hg`` commands is generally recommended, but is
+even more important when raw command output parsing is involved.
+
+Using Templates to Control Output
+---------------------------------
+
+Many ``hg`` commands support templatized output via the
+``-T/--template`` argument. For more, see :hg:`help templates`.
+
+Templates are useful for explicitly controlling output so that
+you get exactly the data you want formatted how you want it. For
+example, ``log -T {node}\n`` can be used to print a newline
+delimited list of changeset nodes instead of a human-tailored
+output containing authors, dates, descriptions, etc.
+
+.. tip::
+
+   If parsing raw command output is too complicated, consider
+   using templates to make your life easier.
+
+The ``-T/--template`` argument allows specifying pre-defined styles.
+Mercurial ships with the machine-readable styles ``json`` and ``xml``,
+which provide JSON and XML output, respectively. These are useful for
+producing output that is machine readable as-is.
+
+.. important::
+
+   The ``json`` and ``xml`` styles are considered experimental. While
+   they may be attractive to use for easily obtaining machine-readable
+   output, their behavior may change in subsequent versions.
+
+   These styles may also exhibit unexpected results when dealing with
+   certain encodings. Mercurial treats things like filenames as a
+   series of bytes and normalizing certain byte sequences to JSON
+   or XML with certain encoding settings can lead to surprises.
+
+Command Server Output
+---------------------
+
+If using the command server to interact with Mercurial, you are likely
+using an existing library/API that abstracts implementation details of
+the command server. If so, this interface layer may perform parsing for
+you, saving you the work of implementing it yourself.
+
+Output Verbosity
+----------------
+
+Commands often have varying output verbosity, even when machine
+readable styles are being used (e.g. ``-T json``). Adding
+``-v/--verbose`` and ``--debug`` to the command's arguments can
+increase the amount of data exposed by Mercurial.
+
+An alternate way to get the data you need is by explicitly specifying
+a template.
+
+Other Topics
+============
+
+revsets
+   Revisions sets is a functional query language for selecting a set
+   of revisions. Think of it as SQL for Mercurial repositories. Revsets
+   are useful for querying repositories for specific data.
+
+   See :hg:`help revsets` for more.
+
+share extension
+   The ``share`` extension provides functionality for sharing
+   repository data across several working copies. It can even
+   automatically "pool" storage for logically related repositories when
+   cloning.
+
+   Configuring the ``share`` extension can lead to significant resource
+   utilization reduction, particularly around disk space and the
+   network. This is especially true for continuous integration (CI)
+   environments.
+
+   See :hg:`help -e share` for more.
diff -r eabba9c75061 -r 35e8d7139224 mercurial/localrepo.py
--- a/mercurial/localrepo.py	Fri Jun 26 18:45:29 2015 -0500
+++ b/mercurial/localrepo.py	Mon Aug 03 11:34:27 2015 -0700
@@ -968,6 +968,9 @@
                 _("abandoned transaction found"),
                 hint=_("run 'hg recover' to clean up transaction"))
 
+        # make journal.dirstate contain in-memory changes at this point
+        self.dirstate.write()
+
         idbase = "%.40f#%f" % (random.random(), time.time())
         txnid = 'TXN:' + util.sha1(idbase).hexdigest()
         self.hook('pretxnopen', throw=True, txnname=desc, txnid=txnid)
diff -r eabba9c75061 -r 35e8d7139224 mercurial/match.py
--- a/mercurial/match.py	Fri Jun 26 18:45:29 2015 -0500
+++ b/mercurial/match.py	Mon Aug 03 11:34:27 2015 -0700
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2 or any later version.
 
-import copy, re
+import copy, os, re
 import util, pathutil
 from i18n import _
 
@@ -289,7 +289,8 @@
                 continue
             elif kind == 'include':
                 try:
-                    includepats = readpatternfile(pat, self._warn)
+                    fullpath = os.path.join(root, util.localpath(pat))
+                    includepats = readpatternfile(fullpath, self._warn)
                     for k, p, source in self._normalize(includepats, default,
                                                         root, cwd, auditor):
                         kindpats.append((k, p, source or pat))
diff -r eabba9c75061 -r 35e8d7139224 mercurial/parsers.c
--- a/mercurial/parsers.c	Fri Jun 26 18:45:29 2015 -0500
+++ b/mercurial/parsers.c	Mon Aug 03 11:34:27 2015 -0700
@@ -1156,7 +1156,8 @@
 	if (minrevallphases != -1) {
 		int parents[2];
 		for (i = minrevallphases; i < len; i++) {
-			if (index_get_parents(self, i, parents, len - 1) < 0)
+			if (index_get_parents(self, i, parents,
+					      (int)len - 1) < 0)
 				goto release_phasesetlist;
 			set_phase_from_parents(phases, parents[0], parents[1], i);
 		}
@@ -1256,7 +1257,7 @@
 			continue;
 		}
 
-		if (index_get_parents(self, i, parents, len - 1) < 0)
+		if (index_get_parents(self, i, parents, (int)len - 1) < 0)
 			goto bail;
 		for (j = 0; j < 2; j++) {
 			if (parents[j] >= 0)
diff -r eabba9c75061 -r 35e8d7139224 mercurial/repair.py
--- a/mercurial/repair.py	Fri Jun 26 18:45:29 2015 -0500
+++ b/mercurial/repair.py	Mon Aug 03 11:34:27 2015 -0700
@@ -237,7 +237,7 @@
 
     if 'fncache' not in repo.requirements:
         ui.warn(_('(not rebuilding fncache because repository does not '
-                  'support fncache\n'))
+                  'support fncache)\n'))
         return
 
     lock = repo.lock()
diff -r eabba9c75061 -r 35e8d7139224 mercurial/templates/gitweb/index.tmpl
--- a/mercurial/templates/gitweb/index.tmpl	Fri Jun 26 18:45:29 2015 -0500
+++ b/mercurial/templates/gitweb/index.tmpl	Mon Aug 03 11:34:27 2015 -0700
@@ -22,5 +22,6 @@
 
+
 
 
diff -r eabba9c75061 -r 35e8d7139224 mercurial/templates/monoblue/helptopics.tmpl
--- a/mercurial/templates/monoblue/helptopics.tmpl	Fri Jun 26 18:45:29 2015 -0500
+++ b/mercurial/templates/monoblue/helptopics.tmpl	Mon Aug 03 11:34:27 2015 -0700
@@ -24,7 +24,7 @@
             
  • graph
  • tags
  • bookmarks
  • -
  • branches
  • +
  • branches
  • files
  • help
  • diff -r eabba9c75061 -r 35e8d7139224 mercurial/templates/monoblue/index.tmpl --- a/mercurial/templates/monoblue/index.tmpl Fri Jun 26 18:45:29 2015 -0500 +++ b/mercurial/templates/monoblue/index.tmpl Mon Aug 03 11:34:27 2015 -0700 @@ -35,5 +35,6 @@
    + diff -r eabba9c75061 -r 35e8d7139224 mercurial/templates/monoblue/map --- a/mercurial/templates/monoblue/map Fri Jun 26 18:45:29 2015 -0500 +++ b/mercurial/templates/monoblue/map Mon Aug 03 11:34:27 2015 -0700 @@ -181,7 +181,7 @@ bookmarks = bookmarks.tmpl bookmarkentry = ' - {date|rfc822date} + {date|rfc822date} {bookmark|escape} changeset | diff -r eabba9c75061 -r 35e8d7139224 mercurial/templates/monoblue/summary.tmpl --- a/mercurial/templates/monoblue/summary.tmpl Fri Jun 26 18:45:29 2015 -0500 +++ b/mercurial/templates/monoblue/summary.tmpl Mon Aug 03 11:34:27 2015 -0700 @@ -66,11 +66,11 @@ - +

    Branches

    {branches%branchentry} - +
    ......
    {footer} diff -r eabba9c75061 -r 35e8d7139224 tests/hghave.py --- a/tests/hghave.py Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/hghave.py Mon Aug 03 11:34:27 2015 -0700 @@ -376,3 +376,7 @@ @check("py3k", "running with Python 3.x") def has_py3k(): return 3 == sys.version_info[0] + +@check("pure", "running with pure Python code") +def has_pure(): + return os.environ.get("HGTEST_RUN_TESTS_PURE") == "--pure" diff -r eabba9c75061 -r 35e8d7139224 tests/test-backout.t --- a/tests/test-backout.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-backout.t Mon Aug 03 11:34:27 2015 -0700 @@ -130,6 +130,34 @@ update: (current) phases: 4 draft +Test that 'hg rollback' restores dirstate just before opening +transaction: in-memory dirstate changes should be written into +'.hg/journal.dirstate' as expected. + + $ echo 'removed soon' > b + $ hg commit -A -d '4 0' -m 'prepare for subsequent removing' + adding b + $ echo 'newly added' > c + $ hg add c + $ hg remove b + $ hg commit -d '5 0' -m 'prepare for subsequent backout' + $ touch -t 200001010000 c + $ hg status -A + C c + $ hg debugstate --nodates + n 644 12 set c + $ hg backout -d '6 0' -m 'to be rollback-ed soon' -r . + adding b + removing c + changeset 6:4bfec048029d backs out changeset 5:fac0b729a654 + $ hg rollback -q + $ hg status -A + A b + R c + $ hg debugstate --nodates + a 0 -1 unset b + r 0 0 set c + across branch $ cd .. diff -r eabba9c75061 -r 35e8d7139224 tests/test-casefolding.t --- a/tests/test-casefolding.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-casefolding.t Mon Aug 03 11:34:27 2015 -0700 @@ -143,6 +143,24 @@ $ hg update -q -C 3 $ hg update -q 0 + $ hg up -C -r 2 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg mv A a + $ hg diff -g > rename.diff + $ hg ci -m 'A -> a' + $ hg up -q '.^' + $ hg import rename.diff -m "import rename A -> a" + applying rename.diff + $ hg st + ? rename.diff + $ hg files + a + $ find * | sort + a + rename.diff + + $ rm rename.diff + $ cd .. issue 3342: file in nested directory causes unexpected abort diff -r eabba9c75061 -r 35e8d7139224 tests/test-check-config-hg.t --- a/tests/test-check-config-hg.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-check-config-hg.t Mon Aug 03 11:34:27 2015 -0700 @@ -4,7 +4,7 @@ New errors are not allowed. Warnings are strongly discouraged. - $ hg files "set:(**.py or **.txt) - tests/**" | + $ hg files "set:(**.py or **.txt) - tests/**" | sed 's|\\|/|g' | > xargs python contrib/check-config.py undocumented: convert.cvsps.cache (bool) [True] undocumented: convert.cvsps.fuzz (str) [60] diff -r eabba9c75061 -r 35e8d7139224 tests/test-clone.t --- a/tests/test-clone.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-clone.t Mon Aug 03 11:34:27 2015 -0700 @@ -788,7 +788,7 @@ The destination should point to it $ cat share-dest1a/.hg/sharedpath; echo - $TESTTMP/share/b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1/.hg + $TESTTMP/share/b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1/.hg (glob) The destination should have bookmarks @@ -798,7 +798,7 @@ The default path should be the remote, not the share $ hg -R share-dest1a config paths.default - $TESTTMP/source1a + $TESTTMP/source1a (glob) Clone with existing share dir should result in pull + share @@ -818,7 +818,7 @@ b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1 $ cat share-dest1b/.hg/sharedpath; echo - $TESTTMP/share/b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1/.hg + $TESTTMP/share/b5f04eac9d8f7a6a9fcb070243cccea7dc5ea0c1/.hg (glob) We only get bookmarks from the remote, not everything in the share @@ -829,7 +829,7 @@ Default path should be source, not share. $ hg -R share-dest1b config paths.default - $TESTTMP/source1a + $TESTTMP/source1a (glob) Clone from unrelated repo should result in new share diff -r eabba9c75061 -r 35e8d7139224 tests/test-command-template.t --- a/tests/test-command-template.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-command-template.t Mon Aug 03 11:34:27 2015 -0700 @@ -120,52 +120,32 @@ $ hg log --style default > style.out $ cmp log.out style.out || diff -u log.out style.out $ hg log -T phases > phases.out - $ diff -U 0 log.out phases.out | grep -v '^---\|^+++' - @@ -2,0 +3 @@ + $ diff -U 0 log.out phases.out | egrep -v '^---|^\+\+\+|^@@' +phase: draft - @@ -6,0 +8 @@ +phase: draft - @@ -11,0 +14 @@ +phase: draft - @@ -17,0 +21 @@ +phase: draft - @@ -24,0 +29 @@ +phase: draft - @@ -31,0 +37 @@ +phase: draft - @@ -36,0 +43 @@ +phase: draft - @@ -41,0 +49 @@ +phase: draft - @@ -46,0 +55 @@ +phase: draft - @@ -51,0 +61 @@ +phase: draft $ hg log -v > log.out $ hg log -v --style default > style.out $ cmp log.out style.out || diff -u log.out style.out $ hg log -v -T phases > phases.out - $ diff -U 0 log.out phases.out | grep -v '^---\|^+++' - @@ -2,0 +3 @@ + $ diff -U 0 log.out phases.out | egrep -v '^---|^\+\+\+|^@@' +phase: draft - @@ -7,0 +9 @@ +phase: draft - @@ -15,0 +18 @@ +phase: draft - @@ -24,0 +28 @@ +phase: draft - @@ -33,0 +38 @@ +phase: draft - @@ -43,0 +49 @@ +phase: draft - @@ -50,0 +57 @@ +phase: draft - @@ -58,0 +66 @@ +phase: draft - @@ -66,0 +75 @@ +phase: draft - @@ -77,0 +87 @@ +phase: draft $ hg log -q > log.out @@ -212,52 +192,32 @@ $ hg --color=debug log --style default > style.out $ cmp log.out style.out || diff -u log.out style.out $ hg --color=debug log -T phases > phases.out - $ diff -U 0 log.out phases.out | grep -v '^---\|^+++' - @@ -2,0 +3 @@ + $ diff -U 0 log.out phases.out | egrep -v '^---|^\+\+\+|^@@' +[log.phase|phase: draft] - @@ -6,0 +8 @@ +[log.phase|phase: draft] - @@ -11,0 +14 @@ +[log.phase|phase: draft] - @@ -17,0 +21 @@ +[log.phase|phase: draft] - @@ -24,0 +29 @@ +[log.phase|phase: draft] - @@ -31,0 +37 @@ +[log.phase|phase: draft] - @@ -36,0 +43 @@ +[log.phase|phase: draft] - @@ -41,0 +49 @@ +[log.phase|phase: draft] - @@ -46,0 +55 @@ +[log.phase|phase: draft] - @@ -51,0 +61 @@ +[log.phase|phase: draft] $ hg --color=debug -v log > log.out $ hg --color=debug -v log --style default > style.out $ cmp log.out style.out || diff -u log.out style.out $ hg --color=debug -v log -T phases > phases.out - $ diff -U 0 log.out phases.out | grep -v '^---\|^+++' - @@ -2,0 +3 @@ + $ diff -U 0 log.out phases.out | egrep -v '^---|^\+\+\+|^@@' +[log.phase|phase: draft] - @@ -7,0 +9 @@ +[log.phase|phase: draft] - @@ -15,0 +18 @@ +[log.phase|phase: draft] - @@ -24,0 +28 @@ +[log.phase|phase: draft] - @@ -33,0 +38 @@ +[log.phase|phase: draft] - @@ -43,0 +49 @@ +[log.phase|phase: draft] - @@ -50,0 +57 @@ +[log.phase|phase: draft] - @@ -58,0 +66 @@ +[log.phase|phase: draft] - @@ -66,0 +75 @@ +[log.phase|phase: draft] - @@ -77,0 +87 @@ +[log.phase|phase: draft] $ hg --color=debug -q log > log.out diff -r eabba9c75061 -r 35e8d7139224 tests/test-convert.t --- a/tests/test-convert.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-convert.t Mon Aug 03 11:34:27 2015 -0700 @@ -143,6 +143,8 @@ store original revision ID in changeset (forces target IDs to change). It takes a boolean argument and defaults to False. + convert.hg.startrev + specify the initial Mercurial revision. The default is 0. convert.hg.revs revset specifying the source revisions to convert. @@ -273,9 +275,12 @@ that when a depot path is given you then usually should specify a target directory, because otherwise the target may be named "...-hg". - It is possible to limit the amount of source history to be converted by - specifying an initial Perforce revision: + The following options can be set with "--config": + convert.p4.encoding + specify the encoding to use when decoding standard output of + the Perforce command line tool. The default is default + system encoding. convert.p4.startrev specify initial Perforce revision (a Perforce changelist number). diff -r eabba9c75061 -r 35e8d7139224 tests/test-fncache.t --- a/tests/test-fncache.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-fncache.t Mon Aug 03 11:34:27 2015 -0700 @@ -308,7 +308,7 @@ $ hg --config format.usefncache=false init nofncache $ cd nofncache $ hg debugrebuildfncache - (not rebuilding fncache because repository does not support fncache + (not rebuilding fncache because repository does not support fncache) $ cd .. diff -r eabba9c75061 -r 35e8d7139224 tests/test-globalopts.t --- a/tests/test-globalopts.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-globalopts.t Mon Aug 03 11:34:27 2015 -0700 @@ -355,6 +355,7 @@ phases Working with Phases revisions Specifying Single Revisions revsets Specifying Revision Sets + scripting Using Mercurial from scripts and automation subrepos Subrepositories templating Template Usage urls URL Paths @@ -436,6 +437,7 @@ phases Working with Phases revisions Specifying Single Revisions revsets Specifying Revision Sets + scripting Using Mercurial from scripts and automation subrepos Subrepositories templating Template Usage urls URL Paths diff -r eabba9c75061 -r 35e8d7139224 tests/test-help.t --- a/tests/test-help.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-help.t Mon Aug 03 11:34:27 2015 -0700 @@ -117,6 +117,7 @@ phases Working with Phases revisions Specifying Single Revisions revsets Specifying Revision Sets + scripting Using Mercurial from scripts and automation subrepos Subrepositories templating Template Usage urls URL Paths @@ -192,6 +193,7 @@ phases Working with Phases revisions Specifying Single Revisions revsets Specifying Revision Sets + scripting Using Mercurial from scripts and automation subrepos Subrepositories templating Template Usage urls URL Paths @@ -740,6 +742,7 @@ phases Working with Phases revisions Specifying Single Revisions revsets Specifying Revision Sets + scripting Using Mercurial from scripts and automation subrepos Subrepositories templating Template Usage urls URL Paths @@ -1406,6 +1409,13 @@ Specifying Revision Sets + + scripting + + + Using Mercurial from scripts and automation + + subrepos diff -r eabba9c75061 -r 35e8d7139224 tests/test-hgignore.t --- a/tests/test-hgignore.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-hgignore.t Mon Aug 03 11:34:27 2015 -0700 @@ -1,4 +1,5 @@ - $ hg init + $ hg init ignorerepo + $ cd ignorerepo Issue562: .hgignore requires newline at end: @@ -44,7 +45,7 @@ $ echo "*.o" > .hgignore $ hg status - abort: $TESTTMP/.hgignore: invalid pattern (relre): *.o (glob) + abort: $TESTTMP/ignorerepo/.hgignore: invalid pattern (relre): *.o (glob) [255] $ echo ".*\.o" > .hgignore @@ -69,7 +70,7 @@ $ echo > .hgignore $ cat >> $HGRCPATH << EOF > [ui] - > ignore.other = $TESTTMP/.hg/testhgignore + > ignore.other = $TESTTMP/ignorerepo/.hg/testhgignore > EOF $ echo "glob:**.o" > .hg/testhgignore $ hg status @@ -107,7 +108,7 @@ $ echo "syntax: invalid" > .hgignore $ hg status - $TESTTMP/.hgignore: ignoring invalid syntax 'invalid' (glob) + $TESTTMP/ignorerepo/.hgignore: ignoring invalid syntax 'invalid' (glob) A dir/b.o ? .hgignore ? a.c @@ -185,8 +186,9 @@ Check recursive uses of 'include:' - $ echo "include:nestedignore" >> otherignore - $ echo "glob:*ignore" > nestedignore + $ echo "include:nested/ignore" >> otherignore + $ mkdir nested + $ echo "glob:*ignore" > nested/ignore $ hg status A dir/b.o @@ -198,6 +200,13 @@ $ mv goodignore otherignore +Check using 'include:' while in a non-root directory + + $ cd .. + $ hg -R ignorerepo status + A dir/b.o + $ cd ignorerepo + Check including subincludes $ hg revert -q --all diff -r eabba9c75061 -r 35e8d7139224 tests/test-hgweb-json.t --- a/tests/test-hgweb-json.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-hgweb-json.t Mon Aug 03 11:34:27 2015 -0700 @@ -1086,6 +1086,10 @@ "topic": "revsets" }, { + "summary": "Using Mercurial from scripts and automation", + "topic": "scripting" + }, + { "summary": "Subrepositories", "topic": "subrepos" }, diff -r eabba9c75061 -r 35e8d7139224 tests/test-highlight.t --- a/tests/test-highlight.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-highlight.t Mon Aug 03 11:34:27 2015 -0700 @@ -45,6 +45,7 @@ > p = primes() > print "The first %d primes: %s" % (n, list(islice(p, n))) > EOF + $ echo >> primes.py # to test html markup with an empty line just before EOF $ hg ci -Ama adding primes.py @@ -68,7 +69,7 @@ - test: 853dcd4de2a6 primes.py + test: 06824edf55d0 primes.py @@ -106,7 +107,7 @@

    - view primes.py @ 0:853dcd4de2a6 + view primes.py @ 0:06824edf55d0 tip

    @@ -173,7 +174,8 @@ except (ValueError, IndexError): n = 10 p = primes() - print "The first %d primes: %s" % (n, list(islice(p, n)))
    + print "The first %d primes: %s" % (n, list(islice(p, n))) +
    @@ -240,7 +242,7 @@

    - annotate primes.py @ 0:853dcd4de2a6 + annotate primes.py @ 0:06824edf55d0 tip

    @@ -284,228 +286,235 @@ - test@0 + test@0 1 #!/usr/bin/env python - test@0 + test@0 2 - test@0 + test@0 3 """Fun with generators. Corresponding Haskell implementation: - test@0 + test@0 4 - test@0 + test@0 5 primes = 2 : sieve [3, 5..] - test@0 + test@0 6 where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0] - test@0 + test@0 7 """ - test@0 + test@0 8 - test@0 + test@0 9 from itertools import dropwhile, ifilter, islice, count, chain - test@0 + test@0 10 - test@0 + test@0 11 def primes(): - test@0 + test@0 12 """Generate all primes.""" - test@0 + test@0 13 def sieve(ns): - test@0 + test@0 14 p = ns.next() - test@0 + test@0 15 # It is important to yield *here* in order to stop the - test@0 + test@0 16 # infinite recursion. - test@0 + test@0 17 yield p - test@0 + test@0 18 ns = ifilter(lambda n: n % p != 0, ns) - test@0 + test@0 19 for n in sieve(ns): - test@0 + test@0 20 yield n - test@0 + test@0 21 - test@0 + test@0 22 odds = ifilter(lambda i: i % 2 == 1, count()) - test@0 + test@0 23 return chain([2], sieve(dropwhile(lambda n: n < 3, odds))) - test@0 + test@0 24 - test@0 + test@0 25 if __name__ == "__main__": - test@0 + test@0 26 import sys - test@0 + test@0 27 try: - test@0 + test@0 28 n = int(sys.argv[1]) - test@0 + test@0 29 except (ValueError, IndexError): - test@0 + test@0 30 n = 10 - test@0 + test@0 31 p = primes() - test@0 + test@0 32 print "The first %d primes: %s" % (n, list(islice(p, n))) + + + test@0 + + 33 +
    diff -r eabba9c75061 -r 35e8d7139224 tests/test-parseindex.t --- a/tests/test-parseindex.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-parseindex.t Mon Aug 03 11:34:27 2015 -0700 @@ -62,6 +62,8 @@ Test corrupted p1/p2 fields that could cause SEGV at parsers.c: +#if no-pure + $ mkdir invalidparent $ cd invalidparent @@ -118,3 +120,5 @@ find_deepest: parent out of range $ cd .. + +#endif diff -r eabba9c75061 -r 35e8d7139224 tests/test-subrepo-deep-nested-change.t --- a/tests/test-subrepo-deep-nested-change.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-subrepo-deep-nested-change.t Mon Aug 03 11:34:27 2015 -0700 @@ -143,7 +143,7 @@ $ hg remove sub1/.hgsubstate $ mv sub1/.hgsub sub1/x.hgsub $ hg status -S - warning: subrepo spec file 'sub1/.hgsub' not found (glob) + warning: subrepo spec file 'sub1/.hgsub' not found R sub1/.hgsubstate R sub1/sub2/folder/test.txt ! sub1/.hgsub @@ -172,7 +172,7 @@ Archive wdir() with subrepos $ hg rm main $ hg archive -S -r 'wdir()' ../wdir - $ diff -r . ../wdir | grep -v '\.hg$' + $ diff -r . ../wdir | egrep -v '\.hg$|^Common subdirectories:' Only in ../wdir: .hg_archival.txt $ find ../wdir -type f | sort @@ -524,7 +524,7 @@ $ hg add sub1/sub2 $ hg archive -S -r 'wdir()' ../wdir2 - $ diff -r . ../wdir2 | grep -v '\.hg$' + $ diff -r . ../wdir2 | egrep -v '\.hg$|^Common subdirectories:' Only in ../wdir2: .hg_archival.txt Only in .: .hglf Only in .: foo @@ -563,7 +563,7 @@ $ echo 'mod' > large.bin $ echo 'mod' > sub1/sub2/large.dat $ hg archive -S -r 'wdir()' ../wdir3 - $ diff -r . ../wdir3 | grep -v '\.hg$' + $ diff -r . ../wdir3 | egrep -v '\.hg$|^Common subdirectories' Only in ../wdir3: .hg_archival.txt Only in .: .hglf Only in .: foo diff -r eabba9c75061 -r 35e8d7139224 tests/test-subrepo-missing.t --- a/tests/test-subrepo-missing.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-subrepo-missing.t Mon Aug 03 11:34:27 2015 -0700 @@ -24,7 +24,7 @@ $ cp .hgsubstate .hgsubstate.old >>> file('.hgsubstate', 'wb').write('\ninvalid') $ hg st --subrepos --cwd $TESTTMP -R $TESTTMP/repo - abort: invalid subrepository revision specifier in 'repo/.hgsubstate' line 2 (glob) + abort: invalid subrepository revision specifier in 'repo/.hgsubstate' line 2 [255] $ mv .hgsubstate.old .hgsubstate @@ -45,8 +45,8 @@ $ rm .hgsub $ hg up 0 --cwd $TESTTMP -R $TESTTMP/repo - warning: subrepo spec file 'repo/.hgsub' not found (glob) - warning: subrepo spec file 'repo/.hgsub' not found (glob) + warning: subrepo spec file 'repo/.hgsub' not found + warning: subrepo spec file 'repo/.hgsub' not found 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg st warning: subrepo spec file '.hgsub' not found diff -r eabba9c75061 -r 35e8d7139224 tests/test-transplant.t --- a/tests/test-transplant.t Fri Jun 26 18:45:29 2015 -0500 +++ b/tests/test-transplant.t Mon Aug 03 11:34:27 2015 -0700 @@ -867,6 +867,7 @@ > [hooks] > fakedirstatewritetime = ! > fakepatchtime = ! + > [extensions] > abort = ! > EOF @@ -877,4 +878,41 @@ $ hg status -A r1 M r1 +Test that rollback by unexpected failure after transplanting the first +revision restores dirstate correctly. + + $ hg rollback -q + $ rm -f abort + $ hg update -q -C d11e3596cc1a + $ hg parents -T "{node|short}\n" + d11e3596cc1a + $ hg status -A + C r1 + C r2 + + $ cat >> .hg/hgrc < [hooks] + > # emulate failure at transplanting the 2nd revision + > pretxncommit.abort = test ! -f abort + > EOF + $ hg transplant "22c515968f13::" + applying 22c515968f13 + 22c515968f13 transplanted to * (glob) + applying e38700ba9dd3 + transaction abort! + rollback completed + abort: pretxncommit.abort hook exited with status 1 + [255] + $ cat >> .hg/hgrc < [hooks] + > pretxncommit.abort = ! + > EOF + + $ hg parents -T "{node|short}\n" + d11e3596cc1a + $ hg status -A + M r1 + ? abort + C r2 + $ cd ..