merge with stable
authorMatt Mackall <mpm@selenic.com>
Fri, 01 May 2015 17:21:10 -0500
changeset 24895 7e67ddd08a2e
parent 24802 2ee10789d66b (current diff)
parent 24894 c48850339988 (diff)
child 24896 9183cb6886ef
merge with stable
--- a/.hgsigs	Thu Apr 16 20:56:43 2015 -0500
+++ b/.hgsigs	Fri May 01 17:21:10 2015 -0500
@@ -105,3 +105,5 @@
 5b4ed033390bf6e2879c8f5c28c84e1ee3b87231 0 iQIVAwUAVPQL9CBXgaxoKi1yAQJIXxAAtD2hWhaKa+lABmCOYG92FE/WdqY/91Xv5atTL8Xeko/MkirIKZiOuxNWX+J34TVevINZSWmMfDSc5TkGxktL9jW/pDB/CXn+CVZpxRabPYFH9HM2K3g8VaTV1MFtV2+feOMDIPCmq5ogMF9/kXjmifiEBrJcFsE82fdexJ3OHoOY4iHFxEhh3GzvNqEQygk4VeU6VYziNvSQj9G//PsK3Bmk7zm5ScsZcMVML3SIYFuej1b1PI1v0N8mmCRooVNBGhD/eA0iLtdh/hSb9s/8UgJ4f9HOcx9zqs8V4i14lpd/fo0+yvFuVrVbWGzrDrk5EKLENhVPwvc1KA32PTQ4Z9u7VQIBIxq3K5lL2VlCMIYc1BSaSQBjuiLm8VdN6iDuf5poNZhk1rvtpQgpxJzh362dlGtR/iTJuLCeW7gCqWUAorLTeHy0bLQ/jSOeTAGys8bUHtlRL4QbnhLbUmJmRYVvCJ+Yt1aTgTSNcoFjoLJarR1169BXgdCA38BgReUL6kB224UJSTzB1hJUyB2LvCWrXZMipZmR99Iwdq7MePD3+AoSIXQNUMY9blxuuF5x7W2ikNXmVWuab4Z8rQRtmGqEuIMBSunxAnZSn+i8057dFKlq+/yGy+WW3RQg+RnLnwZs1zCDTfu98/GT5k5hFpjXZeUWWiOVwQJ5HrqncCw=
 07a92bbd02e5e3a625e0820389b47786b02b2cea 0 iQIVAwUAVPSP9SBXgaxoKi1yAQLkBQ//dRQExJHFepJfZ0gvGnUoYI4APsLmne5XtfeXJ8OtUyC4a6RylxA5BavDWgXwUh9BGhOX2cBSz1fyvzohrPrvNnlBrYKAvOIJGEAiBTXHYTxHINEKPtDF92Uz23T0Rn/wnSvvlbWF7Pvd+0DMJpFDEyr9n6jvVLR7mgxMaCqZbVaB1W/wTwDjni780WgVx8OPUXkLx3/DyarMcIiPeI5UN+FeHDovTsBWFC95msFLm80PMRPuHOejWp65yyEemGujZEPO2D5VVah7fshM2HTz63+bkEBYoqrftuv3vXKBRG78MIrUrKpqxmnCKNKDUUWJ4yk3+NwuOiHlKdly5kZ7MNFaL73XKo8HH287lDWz0lIazs91dQA9a9JOyTsp8YqGtIJGGCbhrUDtiQJ199oBU84mw3VH/EEzm4mPv4sW5fm7BnnoH/a+9vXySc+498rkdLlzFwxrQkWyJ/pFOx4UA3mCtGQK+OSwLPc+X4SRqA4fiyqKxVAL1kpLTSDL3QA82I7GzBaXsxUXzS4nmteMhUyzTdwAhKVydL0gC3d7NmkAFSyRjdGzutUUXshYxg0ywRgYebe8uzJcTj4nNRgaalYLdg3guuDulD+dJmILsrcLmA6KD/pvfDn8PYt+4ZjNIvN2E9GF6uXDu4Ux+AlOTLk9BChxUF8uBX9ev5cvWtQ=
 2e2e9a0750f91a6fe0ad88e4de34f8efefdcab08 0 iQIVAwUAVRw4nyBXgaxoKi1yAQIFExAAkbCPtLjQlJvPaYCL1KhNR+ZVAmn7JrFH3XhvR26RayYbs4NxR3W1BhwhDy9+W+28szEx1kQvmr6t1bXAFywY0tNJOeuLU7uFfmbgAfYgkQ9kpsQNqFYkjbCyftw0S9vX9VOJ9DqUoDWuKfX7VzjkwE9dCfKI5F+dvzxnd6ZFjB85nyHBQuTZlzXl0+csY212RJ2G2j/mzEBVyeZj9l7Rm+1X8AC1xQMWRJGiyd0b7nhYqoOcceeJFAV1t9QO4+gjmkM5kL0orjxTnuVsxPTxcC5ca1BfidPWrZEto3duHWNiATGnCDylxxr52BxCAS+BWePW9J0PROtw1pYaZ9pF4N5X5LSXJzqX7ZiNGckxqIjry09+Tbsa8FS0VkkYBEiGotpuo4Jd05V6qpXfW2JqAfEVo6X6aGvPM2B7ZUtKi30I4J+WprrOP3WgZ/ZWHe1ERYKgjDqisn3t/D40q30WQUeQGltGsOX0Udqma2RjBugO5BHGzJ2yer4GdJXg7q1OMzrjAEuz1IoKvIB/o1pg86quVA4H2gQnL1B8t1M38/DIafyw7mrEY4Z3GL44Reev63XVvDE099Vbhqp7ufwq81Fpq7Xxa5vsr9SJ+8IqqQr8AcYSuK3G3L6BmIuSUAYMRqgl35FWoWkGyZIG5c6K6zI8w5Pb0aGi6Lb2Wfb9zbc=
+e89f909edffad558b56f4affa8239e4832f88de0 0 iQIVAwUAVTBozCBXgaxoKi1yAQLHeg/+IvfpPmG7OSqCoHvMVETYdrqT7lKCwfCQWMFOC/2faWs1n4R/qQNm6ckE5OY888RK8tVQ7ue03Pg/iyWgQlYfS7Njd3WPjS4JsnEBxIvuGkIu6TPIXAUAH0PFTBh0cZEICDpPEVT2X3bPRwDHA+hUE9RrxM5zJ39Fpk/pTYCjQ9UKfEhXlEfka75YB39g2Y/ssaSbn5w/tAAx8sL72Y4G96D4IV2seLHZhB3VQ7UZKThEWn6UdVOoKj+urIwGaBYMeekGVtHSh6fnHOw3EtDO9mQ5HtAz2Bl4CwRYN8eSN+Dwgr+mdk8MWpQQJ+i1A8jUhUp8gn1Pe5GkIH4CWZ9+AvLLnshe2MkVaTT1g7EQk37tFkkdZDRBsOHIvpF71B9pEA1gMUlX4gKgh5YwukgpQlDmFCfY7XmX6eXw9Ub+EckEwYuGMz7Fbwe9J/Ce4DxvgJgq3/cu/jb3bmbewH6tZmcrlqziqqA8GySIwcURnF1c37e7+e7x1jhFJfCWpHzvCusjKhUp9tZsl9Rt1Bo/y41QY+avY7//ymhbwTMKgqjzCYoA+ipF4JfZlFiZF+JhvOSIFb0ltkfdqKD+qOjlkFaglvQU1bpGKLJ6cz4Xk2Jqt5zhcrpyDMGVv9aiWywCK2ZP34RNaJ6ZFwzwdpXihqgkm5dBGoZ4ztFUfmjXzIg=
+8cc6036bca532e06681c5a8fa37efaa812de67b5 0 iQIVAwUAVUP0xCBXgaxoKi1yAQLIChAAme3kg1Z0V8t5PnWKDoIvscIeAsD2s6EhMy1SofmdZ4wvYD1VmGC6TgXMCY7ssvRBhxqwG3GxwYpwELASuw2GYfVot2scN7+b8Hs5jHtkQevKbxarYni+ZI9mw/KldnJixD1yW3j+LoJFh/Fu6GD2yrfGIhimFLozcwUu3EbLk7JzyHSn7/8NFjLJz0foAYfcbowU9/BFwNVLrQPnsUbWcEifsq5bYso9MBO9k+25yLgqHoqMbGpJcgjubNy1cWoKnlKS+lOJl0/waAk+aIjHXMzFpRRuJDjxEZn7V4VdV5d23nrBTcit1BfMzga5df7VrLPVRbom1Bi0kQ0BDeDex3hHNqHS5X+HSrd/njzP1xp8twG8hTE+njv85PWoGBTo1eUGW/esChIJKA5f3/F4B9ErgBNNOKnYmRgxixd562OWAwAQZK0r0roe2H/Mfg2VvgxT0kHd22NQLoAv0YI4jcXcCFrnV/80vHUQ8AsAYAbkLcz1jkfk3YwYDP8jbJCqcwJRt9ialYKJwvXlEe0TMeGdq7EjCO0z/pIpu82k2R/C0FtCFih3bUvJEmWoVVx8UGkDDQEORLbzxQCt0IOiQGFcoCCxgQmL0x9ZoljCWg5vZuuhU4uSOuRTuM+aa4xoLkeOcvgGRSOXrqfkV8JpWKoJB4dmY2qSuxw8LsAAzK0=
--- a/.hgtags	Thu Apr 16 20:56:43 2015 -0500
+++ b/.hgtags	Fri May 01 17:21:10 2015 -0500
@@ -118,3 +118,5 @@
 5b4ed033390bf6e2879c8f5c28c84e1ee3b87231 3.3.1
 07a92bbd02e5e3a625e0820389b47786b02b2cea 3.3.2
 2e2e9a0750f91a6fe0ad88e4de34f8efefdcab08 3.3.3
+e89f909edffad558b56f4affa8239e4832f88de0 3.4-rc
+8cc6036bca532e06681c5a8fa37efaa812de67b5 3.4
--- a/Makefile	Thu Apr 16 20:56:43 2015 -0500
+++ b/Makefile	Fri May 01 17:21:10 2015 -0500
@@ -120,6 +120,7 @@
 	  mercurial/templatefilters.py mercurial/templatekw.py \
 	  mercurial/templater.py \
 	  mercurial/filemerge.py \
+	  mercurial/hgweb/webcommands.py \
 	  $(DOCFILES) > i18n/hg.pot.tmp
         # All strings marked for translation in Mercurial contain
         # ASCII characters only. But some files contain string
--- a/contrib/check-code.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/contrib/check-code.py	Fri May 01 17:21:10 2015 -0500
@@ -301,6 +301,8 @@
      "missing _() in ui message (use () to hide false-positives)"),
     (r'release\(.*wlock, .*lock\)', "wrong lock release order"),
     (r'\b__bool__\b', "__bool__ should be __nonzero__ in Python 2"),
+    (r'os\.path\.join\(.*, *(""|\'\')\)',
+     "use pathutil.normasprefix(path) instead of os.path.join(path, '')"),
   ],
   # warnings
   [
--- a/contrib/win32/mercurial.iss	Thu Apr 16 20:56:43 2015 -0500
+++ b/contrib/win32/mercurial.iss	Fri May 01 17:21:10 2015 -0500
@@ -80,7 +80,6 @@
 Source: dist\Microsoft.VC*.CRT.manifest; DestDir: {app}; Flags: skipifsourcedoesntexist
 Source: dist\library.zip; DestDir: {app}
 Source: dist\add_path.exe; DestDir: {app}
-Source: dist\cacert.pem; Destdir: {app}
 Source: doc\*.html; DestDir: {app}\Docs
 Source: doc\style.css; DestDir: {app}\Docs
 Source: mercurial\help\*.txt; DestDir: {app}\help
@@ -93,7 +92,6 @@
 [INI]
 Filename: {app}\Mercurial.url; Section: InternetShortcut; Key: URL; String: http://mercurial.selenic.com/
 Filename: {app}\default.d\editor.rc; Section: ui; Key: editor; String: notepad
-Filename: {app}\default.d\cacerts.rc; Section: web; Key: cacerts; String: {app}\cacert.pem
 
 [UninstallDelete]
 Type: files; Name: {app}\Mercurial.url
--- a/contrib/wix/guids.wxi	Thu Apr 16 20:56:43 2015 -0500
+++ b/contrib/wix/guids.wxi	Fri May 01 17:21:10 2015 -0500
@@ -44,8 +44,6 @@
   <?define COPYING.guid = {B7801DBA-1C49-4BF4-91AD-33C65F5C7895} ?>
   <?define mercurial.rc.guid = {1D5FAEEE-7E6E-43B1-9F7F-802714316B15} ?>
   <?define mergetools.rc.guid = {E8A1DC29-FF40-4B5F-BD12-80B9F7BF0CCD} ?>
-  <?define paths.rc.guid = {F9ADF21D-5F0B-4934-8CD9-14BE63664721} ?>
-  <?define cacert.pem.guid = {EC1B2630-FE21-46E6-915B-A6545AF703D4} ?>
   <?define ProgramMenuDir.guid = {D5A63320-1238-489B-B68B-CF053E9577CA} ?>
 
 </Include>
--- a/contrib/wix/mercurial.wxs	Thu Apr 16 20:56:43 2015 -0500
+++ b/contrib/wix/mercurial.wxs	Fri May 01 17:21:10 2015 -0500
@@ -82,15 +82,6 @@
               <File Id='mergetools.rc' Name='MergeTools.rc' Source='mercurial\default.d\mergetools.rc'
                     ReadOnly='yes' KeyPath='yes'/>
             </Component>
-            <Component Id='paths.rc' Guid='$(var.paths.rc.guid)' Win64='$(var.IsX64)'>
-              <CreateFolder/>
-              <IniFile Id="ini0" Action="createLine" Directory="HGRCD" Name="Paths.rc"
-                Section="web" Key="cacerts" Value="[INSTALLDIR]hgrc.d\cacert.pem" />
-            </Component>
-            <Component Id='cacert.pem' Guid='$(var.cacert.pem.guid)' Win64='$(var.IsX64)'>
-              <File Id='cacert.pem' Name='cacert.pem' Source='..\misc\cacert.pem'
-                    ReadOnly='yes' KeyPath='yes'/>
-            </Component>
           </Directory>
 
         </Directory>
@@ -132,8 +123,6 @@
         <ComponentRef Id='COPYING' />
         <ComponentRef Id='mercurial.rc' />
         <ComponentRef Id='mergetools.rc' />
-        <ComponentRef Id='paths.rc' />
-        <ComponentRef Id='cacert.pem' />
         <ComponentRef Id='helpFolder' />
         <ComponentGroupRef Id='templatesFolder' />
         <MergeRef Id='VCRuntime' />
--- a/hgext/censor.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/hgext/censor.py	Fri May 01 17:21:10 2015 -0500
@@ -17,19 +17,12 @@
  * Licensed data/code/libraries for which the license has expired
  * Personally Identifiable Information or other private data
 
-Censored file revisions are listed in a tracked file called .hgcensored stored
-in the repository root. The censor command adds an entry to the .hgcensored file
-in the working directory and commits it (much like ``hg tag`` and .hgtags). The
-censored file data is then replaced with a pointer to the new commit, enabling
-verification.
-
 Censored nodes can interrupt mercurial's typical operation whenever the excised
 data needs to be materialized. Some commands, like ``hg cat``/``hg revert``,
 simply fail when asked to produce censored data. Others, like ``hg verify`` and
 ``hg update``, must be capable of tolerating censored data to continue to
 function in a meaningful way. Such commands only tolerate censored file
-revisions if they are allowed by the policy specified by the "censor.allow"
-config option.
+revisions if they are allowed by the "censor.policy=ignore" config option.
 """
 
 from mercurial.node import short
--- a/hgext/color.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/hgext/color.py	Fri May 01 17:21:10 2015 -0500
@@ -445,7 +445,7 @@
             return super(colorui, self).write_err(*args, **opts)
 
         label = opts.get('label', '')
-        if self._bufferstates and self._bufferstates[-1]:
+        if self._bufferstates and self._bufferstates[-1][0]:
             return self.write(*args, **opts)
         if self._colormode == 'win32':
             for a in args:
--- a/hgext/convert/subversion.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/hgext/convert/subversion.py	Fri May 01 17:21:10 2015 -0500
@@ -1293,7 +1293,7 @@
             try:
                 rev = self.commit_re.search(output).group(1)
             except AttributeError:
-                if not files:
+                if parents and not files:
                     return parents[0]
                 self.ui.warn(_('unexpected svn output:\n'))
                 self.ui.warn(output)
--- a/hgext/histedit.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/hgext/histedit.py	Fri May 01 17:21:10 2015 -0500
@@ -145,10 +145,10 @@
 
 Histedit rule lines are truncated to 80 characters by default. You
 can customise this behaviour by setting a different length in your
-configuration file:
+configuration file::
 
-[histedit]
-linelen = 120      # truncate rule lines at 120 characters
+  [histedit]
+  linelen = 120      # truncate rule lines at 120 characters
 """
 
 try:
@@ -246,7 +246,8 @@
         fp.write('%s\n' % self.keep)
         fp.write('%d\n' % len(self.rules))
         for rule in self.rules:
-            fp.write('%s%s\n' % (rule[1], rule[0]))
+            fp.write('%s\n' % rule[0]) # action
+            fp.write('%s\n' % rule[1]) # remainder
         fp.write('%d\n' % len(self.replacements))
         for replacement in self.replacements:
             fp.write('%s%s\n' % (node.hex(replacement[0]), ''.join(node.hex(r)
@@ -276,11 +277,11 @@
         rulelen = int(lines[index])
         index += 1
         for i in xrange(rulelen):
+            ruleaction = lines[index]
+            index += 1
             rule = lines[index]
-            rulehash = rule[:40]
-            ruleaction = rule[40:]
-            rules.append((ruleaction, rulehash))
             index += 1
+            rules.append((ruleaction, rule))
 
         # Replacements
         replacements = []
@@ -412,7 +413,7 @@
             repo.ui.setconfig('ui', 'forcemerge', '', 'histedit')
     return stats
 
-def collapse(repo, first, last, commitopts):
+def collapse(repo, first, last, commitopts, skipprompt=False):
     """collapse the set of revisions from first to last as new one.
 
     Expected commit options are:
@@ -473,7 +474,7 @@
 
     parents = (first.p1().node(), first.p2().node())
     editor = None
-    if not commitopts.get('rollup'):
+    if not skipprompt:
         editor = cmdutil.getcommiteditor(edit=True, editform='histedit.fold')
     new = context.memctx(repo,
                          parents=parents,
@@ -574,7 +575,8 @@
         try:
             phasemin = max(ctx.phase(), oldctx.phase())
             repo.ui.setconfig('phases', 'new-commit', phasemin, 'histedit')
-            n = collapse(repo, ctx, repo[newnode], commitopts)
+            n = collapse(repo, ctx, repo[newnode], commitopts,
+                         skipprompt=self.skipprompt())
         finally:
             repo.ui.restoreconfig(phasebackup)
         if n is None:
@@ -711,7 +713,7 @@
         goal = 'abort'
     elif editplan:
         if util.any((outg, revs, freeargs)):
-            raise util.Abort(_('only --commands argument allowed with'
+            raise util.Abort(_('only --commands argument allowed with '
                                '--edit-plan'))
         goal = 'edit-plan'
     else:
--- a/hgext/largefiles/overrides.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/hgext/largefiles/overrides.py	Fri May 01 17:21:10 2015 -0500
@@ -305,6 +305,9 @@
         pats = set(p)
 
         def fixpats(pat, tostandin=lfutil.standin):
+            if pat.startswith('set:'):
+                return pat
+
             kindpat = match_._patsplit(pat, None)
 
             if kindpat[0] is not None:
@@ -838,6 +841,12 @@
         sourcerepo, destrepo = result
         repo = destrepo.local()
 
+        # When cloning to a remote repo (like through SSH), no repo is available
+        # from the peer.   Therefore the largefiles can't be downloaded and the
+        # hgrc can't be updated.
+        if not repo:
+            return result
+
         # If largefiles is required for this repo, permanently enable it locally
         if 'largefiles' in repo.requirements:
             fp = repo.vfs('hgrc', 'a', text=True)
--- a/hgext/mq.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/hgext/mq.py	Fri May 01 17:21:10 2015 -0500
@@ -822,7 +822,7 @@
             except AbortNoCleanup:
                 tr.close()
                 self.savedirty()
-                return 2, repo.dirstate.p1()
+                raise
             except: # re-raises
                 try:
                     tr.abort()
@@ -880,7 +880,8 @@
                     touched = set(touched) & tobackup
                     if touched and keepchanges:
                         raise AbortNoCleanup(
-                            _("local changes found, refresh first"))
+                            _("conflicting local changes found"),
+                            hint=_("did you forget to qrefresh?"))
                     self.backup(repo, touched, copy=True)
                     tobackup = tobackup - touched
                 (patcherr, files, fuzz) = self.patch(repo, pf)
@@ -1417,6 +1418,8 @@
                 else:
                     ret = self.apply(repo, s, list, all_files=all_files,
                                      tobackup=tobackup, keepchanges=keepchanges)
+            except AbortNoCleanup:
+                raise
             except: # re-raises
                 self.ui.warn(_('cleaning up working directory...'))
                 node = repo.dirstate.p1()
--- a/hgext/rebase.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/hgext/rebase.py	Fri May 01 17:21:10 2015 -0500
@@ -1040,6 +1040,10 @@
             # dropping it
             if 'rev' in opts:
                 del opts['rev']
+            # positional argument from pull conflicts with rebase's own
+            # --source.
+            if 'source' in opts:
+                del opts['source']
             rebase(ui, repo, **opts)
             branch = repo[None].branch()
             dest = repo[branch].rev()
--- a/hgext/shelve.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/hgext/shelve.py	Fri May 01 17:21:10 2015 -0500
@@ -658,7 +658,8 @@
           ('p', 'patch', None,
            _('show patch')),
           ('i', 'interactive', None,
-           _('interactive mode, only works while creating a shelve')),
+           _('interactive mode, only works while creating a shelve'
+                   '(EXPERIMENTAL)')),
           ('', 'stat', None,
            _('output diffstat-style summary of changes'))] + commands.walkopts,
          _('hg shelve [OPTION]... [FILE]...'))
--- a/i18n/ja.po	Thu Apr 16 20:56:43 2015 -0500
+++ b/i18n/ja.po	Fri May 01 17:21:10 2015 -0500
@@ -54,6 +54,7 @@
 # bisect                二分探索
 # branch                ブランチ
 # bundle( file)         バンドルファイル
+# censored( file/node)  検閲対象(ファイル/ノード)
 # change                チェンジセット/差分
 # changegroup( file)    バンドルファイル
 # changeset             リビジョン (or 「チェンジセット」/「変更内容」)
@@ -76,6 +77,7 @@
 # directory             ディレクトリ
 # dirstate              dirstate
 # entry                 エントリ
+# experimental          実験的実装
 # extend(ed)            拡張
 # extension             (Mercurialの)エクステンション
 # fold (revision/patch) (リビジョン/パッチの)併合
@@ -83,6 +85,7 @@
 #                       (... からの相対パスに対して、
 #                        パス先頭からのパターン合致で判定する)
 # graft                 移植
+# handler (of web)      機能
 # hash identifier(s)    ハッシュ値
 # head                  ヘッド
 # head changeset(s)     ヘッド
@@ -104,6 +107,10 @@
 # node                  リビジョン (あるいは「対象」という言い回し)
 # note                  備考
 # patch                 パッチ
+# phase                 フェーズ
+#   draft (,)           draft (※ 予約語扱い)
+#   public (,)          public (※ 予約語扱い)
+#   secret (,)          secret (※ 予約語扱い)
 # platform              稼働環境
 # pop(patch)            (パッチの)適用解除
 # progress (, in)       未完了(interrupted rebase/graft/histedit/transplant)
@@ -111,6 +118,7 @@
 # pull                  (追加リビジョンの)取り込み
 # push                  (追加リビジョンの)反映
 # push(patch)           (パッチの)適用
+# query string argument クエリ文字列引数
 # raise(of exception)   (例外の)発生
 # reject(s)             却下差分
 # remote(host)          遠隔(ホスト)
@@ -135,11 +143,13 @@
 # support(, not)        (未)サポート
 # support(, un)         (未)サポート
 # tag                   タグ
+# tombstone (of censor) 墓碑データ
 # topological xxxx      構造的
 # tracked xxxx          構成管理対象の xxxx
 # tracked, un           未登録
 # type, xxxxx           xxxx 種別
 # unknown xxxx          未知の xxxx (or 構成管理対象外)
+# URL parameter (of web) URL パス要素 (場合によっては単に "引数")
 # user                  ユーザ
 # working copy(of xxx)  作業領域(中の xxx)
 # working directory     作業領域
@@ -149,8 +159,8 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2015-02-28 17:53+0900\n"
-"PO-Revision-Date: 2015-03-01 01:23+0900\n"
+"POT-Creation-Date: 2015-04-29 18:27+0900\n"
+"PO-Revision-Date: 2015-04-29 21:20+0900\n"
 "Last-Translator: Japanese translation team <mercurial-ja@googlegroups.com>\n"
 "Language-Team: Japanese\n"
 "Language: ja\n"
@@ -1347,6 +1357,121 @@
 msgid "Bugzilla error: %s"
 msgstr "Bugzilla エラー: %s"
 
+msgid "erase file content at a given revision"
+msgstr "指定リビジョンのファイル内容の検閲/消去"
+
+msgid ""
+"The censor command instructs Mercurial to erase all content of a file at a "
+"given\n"
+"revision *without updating the changeset hash.* This allows existing history "
+"to\n"
+"remain valid while preventing future clones/pulls from receiving the erased\n"
+"data."
+msgstr ""
+"censor コマンドは、 指定リビジョン時点における、 指定ファイルの内容を、\n"
+"消去しますが、 当該リビジョンの *ハッシュ値は変えない* 点が特徴です。\n"
+"ハッシュ値が変わらないため、 既存の履歴の有効性は維持したままで、\n"
+"消去されたデータが clone/pull 等で伝搬することを防止できます。"
+
+msgid ""
+"Typical uses for censor are due to security or legal requirements, "
+"including::"
+msgstr ""
+"censor コマンドによる検閲/消去が、 必要とされる典型的なケースは、\n"
+"以下のようなデータの扱いで、 セキュリティ的/法的に必要とされるケースです::"
+
+msgid ""
+" * Passwords, private keys, crytographic material\n"
+" * Licensed data/code/libraries for which the license has expired\n"
+" * Personally Identifiable Information or other private data"
+msgstr ""
+" * パスワード、秘密鍵、暗号化情報\n"
+" * 有効期限の切れたライセンスにひも付いた、データ/プログラム/ライブラリ\n"
+" * 個人識別情報、あるいはそれに類する個人情報"
+
+msgid ""
+"Censored file revisions are listed in a tracked file called .hgcensored "
+"stored\n"
+"in the repository root. The censor command adds an entry to the .hgcensored "
+"file\n"
+"in the working directory and commits it (much like ``hg tag`` and .hgtags). "
+"The\n"
+"censored file data is then replaced with a pointer to the new commit, "
+"enabling\n"
+"verification."
+msgstr ""
+
+msgid ""
+"Censored nodes can interrupt mercurial's typical operation whenever the "
+"excised\n"
+"data needs to be materialized. Some commands, like ``hg cat``/``hg "
+"revert``,\n"
+"simply fail when asked to produce censored data. Others, like ``hg verify`` "
+"and\n"
+"``hg update``, must be capable of tolerating censored data to continue to\n"
+"function in a meaningful way. Such commands only tolerate censored file\n"
+"revisions if they are allowed by the policy specified by the \"censor.allow"
+"\"\n"
+"config option.\n"
+msgstr ""
+"検閲によって消去されたファイル内容は、 参照することができなくなります。\n"
+":hg:`cat` や :hg:`revert` 等のコマンドは、 単純に処理が中断されます。\n"
+":hg:`verify` や :hg:`update` 等の場合、 検閲済みのファイルを無視して、\n"
+"処理を継続することもできます。 検閲済みファイルによる中断を回避するには、\n"
+"``[censor] allow`` 設定を有効にしてください。\n"
+
+msgid "REV"
+msgstr "リビジョン"
+
+msgid "censor file from specified revision"
+msgstr "指定リビジョンのファイル内容の検閲"
+
+msgid "TEXT"
+msgstr "テキスト"
+
+msgid "replacement tombstone data"
+msgstr "差し替え用の墓碑 (tombstone) データ"
+
+msgid "-r REV [-t TEXT] [FILE]"
+msgstr "-r REV [-t TEXT] [FILE]"
+
+msgid "must specify file path to censor"
+msgstr "検閲対象ファイルを指定してください"
+
+msgid "must specify revision to censor"
+msgstr "検閲対象リビジョンを指定してください"
+
+msgid "cannot censor file with no history"
+msgstr "履歴のないファイルは検閲できません"
+
+#, python-format
+msgid "invalid revision identifier %s"
+msgstr "リビジョン指定 %s は不正です"
+
+#, python-format
+msgid "file does not exist at revision %s"
+msgstr "指定ファイルはリビジョン %s に存在しません"
+
+#, python-format
+msgid "cannot censor file in heads (%s)"
+msgstr "ヘッドリビジョン (%s) の内容は検閲できません"
+
+msgid "clean/delete and commit first"
+msgstr ""
+
+msgid "cannot censor working directory"
+msgstr "作業領域の親リビジョンの内容は検閲できません"
+
+msgid "clean/delete/update first"
+msgstr ""
+
+#, python-format
+msgid "censor does not support revlog version %d"
+msgstr "revlog バージョン %d では検閲機能を使用できません"
+
+msgid "censor tombstone must be no longer than censored data"
+msgstr "差し替え用の墓碑データは、検閲対象データよりも短くしてください"
+
 msgid "command to display child changesets (DEPRECATED)"
 msgstr "子リビジョン表示のコマンド (非推奨)"
 
@@ -1356,9 +1481,6 @@
 msgstr ""
 "本エクステンションは非推奨です (:hg:`log -r \"children(REV)\"` で代替可能)\n"
 
-msgid "REV"
-msgstr "リビジョン"
-
 msgid "show children of the specified revision"
 msgstr "指定リビジョンの子リビジョンの表示"
 
@@ -1405,6 +1527,9 @@
 msgid "TEMPLATE"
 msgstr "テンプレート"
 
+msgid "template to group changesets (DEPRECATED)"
+msgstr "リビジョン表示をグループ化するためのテンプレート (非推奨)"
+
 msgid "template to group changesets"
 msgstr "リビジョン表示をグループ化するためのテンプレート"
 
@@ -1796,7 +1921,7 @@
 "emit codes that less doesn't understand. You can work around this by\n"
 "either using ansi mode (or auto mode), or by using less -r (which will\n"
 "pass through all terminal control codes, not just color control\n"
-"codes).\n"
+"codes)."
 msgstr ""
 "pager エクステンションでの ``less -R`` 使用と、 terminfo 使用の併用は、\n"
 "稼動環境によっては、 色付けが正しく機能しない可能性があります。\n"
@@ -1804,7 +1929,29 @@
 "が解釈しない色指定制御が terminfo 使用時に除外される場合があるためです。\n"
 "このような場合、 端末指定に ansi (または auto) を用いるか、 ``less -r``\n"
 "(色指定以外の全ての端末制御が、 透過的に伝播されます) を使用することで、\n"
-"状況が改善される可能性があります。\n"
+"状況が改善される可能性があります。"
+
+msgid ""
+"On some systems (such as MSYS in Windows), the terminal may support\n"
+"a different color mode than the pager (activated via the \"pager\"\n"
+"extension). It is possible to define separate modes depending on whether\n"
+"the pager is active::"
+msgstr ""
+"環境によっては、 \"pager\" エクステンションが起動するページャプログラムと、\n"
+"ターミナルソフトの色付け方式が異なる場合があります (Windows 上の MSYS 等)。\n"
+"ページャプログラム起動の有無に応じて、 異なる色付け方式の指定が可能です::"
+
+msgid ""
+"  [color]\n"
+"  mode = auto\n"
+"  pagermode = ansi"
+msgstr ""
+"  [color]\n"
+"  mode = auto\n"
+"  pagermode = ansi"
+
+msgid "If ``pagermode`` is not defined, the ``mode`` will be used.\n"
+msgstr "``pagermode`` が無指定の場合は、 ``mode`` 設定が使用されます。\n"
 
 msgid "no terminfo entry for setab/setaf: reverting to ECMA-48 color\n"
 msgstr ""
@@ -3140,19 +3287,19 @@
 
 msgid ""
 "The extension reads its configuration from a versioned ``.hgeol``\n"
-"configuration file found in the root of the working copy. The\n"
+"configuration file found in the root of the working directory. The\n"
 "``.hgeol`` file use the same syntax as all other Mercurial\n"
 "configuration files. It uses two sections, ``[patterns]`` and\n"
 "``[repository]``."
 msgstr ""
 "本エクステンションは、 作業領域のルート直下のファイル ``.hgeol``\n"
-"(構成管理可能) から設定を読み込みます。 ``.hgeol`` ファイルの文法は、\n"
+"(履歴管理可能) から設定を読み込みます。 ``.hgeol`` ファイルの文法は、\n"
 "他の Mercurial 設定ファイルと同じです。 本設定ファイルでは、\n"
 "``[patterns]`` と ``[repository]`` の2つのセクションを記述可能です。"
 
 msgid ""
 "The ``[patterns]`` section specifies how line endings should be\n"
-"converted between the working copy and the repository. The format is\n"
+"converted between the working directory and the repository. The format is\n"
 "specified by a file pattern. The first match is used, so put more\n"
 "specific patterns first. The available line endings are ``LF``,\n"
 "``CRLF``, and ``BIN``."
@@ -3230,7 +3377,7 @@
 
 msgid ""
 "   The rules will first apply when files are touched in the working\n"
-"   copy, e.g. by updating to null and back to tip to touch all files."
+"   directory, e.g. by updating to null and back to tip to touch all files."
 msgstr ""
 "   変換設定の適用契機は、 作業領域中のファイルに対する最初の更新です。\n"
 "   例えば、 :hg:`update null` 後の :hg:`update tip` により、\n"
@@ -3664,9 +3811,11 @@
 "    成功時のコマンド終了値は 0 です。\n"
 "    "
 
-msgid ""
-"working dir not at branch tip (use \"hg update\" to check out branch tip)"
-msgstr "作業領域はブランチの最新ではありません(\"hg update\" で最新に更新可能)"
+msgid "working directory not at branch tip"
+msgstr "作業領域の親リビジョンはブランチの最新ではありません"
+
+msgid "use \"hg update\" to check out branch tip"
+msgstr "\"hg update\" でブランチの最新に更新可能"
 
 msgid ""
 "multiple heads in this branch (use \"hg heads .\" and \"hg merge\" to merge)"
@@ -3757,9 +3906,6 @@
 msgid "the key id to sign with"
 msgstr "署名に使用する鍵ID"
 
-msgid "TEXT"
-msgstr "テキスト"
-
 msgid "use text as commit message"
 msgstr "指定テキストをコミットログとして使用"
 
@@ -4053,14 +4199,14 @@
 msgid "diff trees from two commits"
 msgstr "2リビジョン間の差分ツリー表示"
 
-msgid "hg debug-merge-base REV REV"
-msgstr "hg debug-merge-base REV REV"
+msgid "REV REV"
+msgstr "REV REV"
 
 msgid "output common ancestor information"
 msgstr "共通の祖先リビジョンの情報表示"
 
-msgid "hg debug-cat-file [OPTION]... TYPE FILE"
-msgstr "hg debug-cat-file [OPTION]... TYPE FILE"
+msgid "[OPTION]... TYPE FILE"
+msgstr "[OPTION]... TYPE FILE"
 
 msgid "cat a specific revision"
 msgstr "指定リビジョン時点の内容表示"
@@ -4071,16 +4217,6 @@
 msgid "aborting hg cat-file only understands commits\n"
 msgstr "中止: catfile は commit 種別でのみ実行可能です\n"
 
-#. i18n: bisect changeset status
-msgid "ignored"
-msgstr "無視"
-
-msgid "hg debug-rev-parse REV"
-msgstr "hg debug-rev-parse REV"
-
-msgid "parse given revisions"
-msgstr "指定リビジョンの解析"
-
 msgid "header"
 msgstr "ヘッダ"
 
@@ -4096,20 +4232,14 @@
 msgid "print revisions"
 msgstr "リビジョンの表示"
 
-msgid "hg debug-config"
-msgstr "hg debug-config"
-
-msgid "print extension options"
-msgstr "エクステンション設定の表示"
-
 msgid "NUM"
 msgstr "数値"
 
 msgid "limit number of changes displayed"
 msgstr "最大表示リビジョン数"
 
-msgid "hg view [-l LIMIT] [REVRANGE]"
-msgstr "hg view [-l LIMIT] [REVRANGE]"
+msgid "[-l LIMIT] [REVRANGE]"
+msgstr "[-l LIMIT] [REVRANGE]"
 
 msgid "start interactive history viewer"
 msgstr "対話的な履歴参照の開始"
@@ -4409,12 +4539,27 @@
 "If you run ``hg histedit --outgoing`` on the clone then it is the same\n"
 "as running ``hg histedit 836302820282``. If you need plan to push to a\n"
 "repository that Mercurial does not detect to be related to the source\n"
-"repo, you can add a ``--force`` option.\n"
+"repo, you can add a ``--force`` option."
 msgstr ""
 "複製『先』のリポジトリで ``hg histedit --outgoing`` を実行した場合、\n"
 "``hg histedit 836302820282`` 実行と同じ結果となります。 Mercurial が、\n"
 "連携先リポジトリとの関連性を、 検出できない場合でも、 ``--force``\n"
-"を指定することで、 元リポジトリとの関連ありとみなすことができます。\n"
+"を指定することで、 元リポジトリとの関連ありとみなすことができます。"
+
+msgid ""
+"Histedit rule lines are truncated to 80 characters by default. You\n"
+"can customise this behaviour by setting a different length in your\n"
+"configuration file::"
+msgstr ""
+"histedit での改変指示行は、 80 カラムでの切り詰めがデフォルトです。\n"
+"以下の設定により、 切り詰めのカラム幅を変更できます::"
+
+msgid ""
+"  [histedit]\n"
+"  linelen = 120      # truncate rule lines at 120 characters\n"
+msgstr ""
+"  [histedit]\n"
+"  linelen = 120      # 改変指示行を 120 カラムで切り詰め\n"
 
 #. i18n: command names and abbreviations must remain untranslated
 #, python-format
@@ -4448,6 +4593,10 @@
 msgid "no histedit in progress"
 msgstr "実施中の histedit による履歴改変はありません"
 
+#, python-format
+msgid "unknown changeset %s listed"
+msgstr "未知のリビジョン %s が指定されました"
+
 msgid "Fix up the change and run hg histedit --continue"
 msgstr "衝突解消後に 'hg histedit --continue' を実行してください"
 
@@ -4463,8 +4612,10 @@
 "作業完了後は 'hg histedit --continue' で histedit を再開します。"
 
 #, python-format
-msgid "%s: empty changeset"
-msgstr "%s: 空のリビジョン"
+msgid ""
+"%s: cannot fold - working copy is not a descendant of previous commit %s\n"
+msgstr ""
+"%s: 併合できません - 作業領域は直前のコミット %s の子孫ではありません\n"
 
 #, python-format
 msgid "comparing with %s\n"
@@ -4479,12 +4630,15 @@
 msgid "see \"hg help histedit\" for more detail"
 msgstr "詳細は \"hg help histedit\" を参照"
 
-msgid "Read history edits from the specified file."
-msgstr "履歴改変手順を指定ファイルから読み込み"
+msgid "read history edits from the specified file"
+msgstr "履歴改変指示を指定ファイルから読み込み"
 
 msgid "continue an edit already in progress"
 msgstr "中断された未完了の履歴改変を再開"
 
+msgid "edit remaining actions list"
+msgstr "残りの改変指示内容の編集"
+
 msgid "don't strip old nodes after edit is complete"
 msgstr "改変元の履歴を改変完了後も保持"
 
@@ -4565,6 +4719,9 @@
 msgid "no arguments allowed with --abort"
 msgstr "--abort 指定時は引数を指定できません"
 
+msgid "only --commands argument allowed with --edit-plan"
+msgstr "--edit-plan 指定時には、--commands 以外のオプションは指定できません"
+
 msgid "history edit already in progress, try --continue or --abort"
 msgstr "履歴改変が未完了です。 --continue または --abortを指定してください"
 
@@ -4584,8 +4741,8 @@
 msgid "%s is not an ancestor of working directory"
 msgstr "%s は作業領域の祖先ではありません"
 
-msgid "use \"histedit --abort\" to clear broken state"
-msgstr "不整合な状態のクリアは \"histedit --abort\""
+msgid "working copy still dirty"
+msgstr "作業領域に未コミットな変更が残っています"
 
 msgid "cannot edit history that would orphan nodes"
 msgstr "履歴ツリーが分断されるような履歴改変はできません"
@@ -4601,10 +4758,6 @@
 msgid "malformed line \"%s\""
 msgstr "不正な行 \"%s\""
 
-#, python-format
-msgid "unknown changeset %s listed"
-msgstr "未知のリビジョン %s が指定されました"
-
 msgid "may not use changesets other than the ones listed"
 msgstr "対象範囲以外のリビジョンは指定できません"
 
@@ -4627,6 +4780,10 @@
 msgid "histedit: moving bookmarks %s from %s to %s\n"
 msgstr "histedit: ブックマーク %s を %s から %s に移動中\n"
 
+#, python-format
+msgid "histedit in progress, can't strip %s"
+msgstr "histedit による履歴改変が未完了のため、%s を除外できません"
+
 #. i18n: column positioning for "hg summary"
 #, python-format
 msgid "hist:   %s (histedit --continue)\n"
@@ -5436,9 +5593,6 @@
 msgid "--normal cannot be used with --large"
 msgstr "--normal と --large は併用できません"
 
-msgid "uncommitted changes"
-msgstr "作業領域の変更が未コミットです"
-
 #, python-format
 msgid ""
 "remote turned local normal file %s into a largefile\n"
@@ -5494,6 +5648,9 @@
 msgid "largefile %s not found in repo store or system cache"
 msgstr "大容量ファイル %s がリポジトリにもシステムキャッシュにもありません"
 
+msgid "uncommitted changes"
+msgstr "作業領域の変更が未コミットです"
+
 #, python-format
 msgid "not removing %s: file is already untracked\n"
 msgstr "%s は削除されません: ファイルは既に未登録です\n"
@@ -5840,8 +5997,11 @@
 msgid "unable to read %s\n"
 msgstr "ファイル %s が読み込めません\n"
 
-msgid "local changes found, refresh first"
-msgstr "作業領域に変更がありますので qrefresh を実施してください"
+msgid "conflicting local changes found"
+msgstr "作業領域中の未コミット変更と衝突します"
+
+msgid "did you forget to qrefresh?"
+msgstr "qrefresh の実施を忘れていませんか?"
 
 #, python-format
 msgid "patch %s is empty\n"
@@ -5853,7 +6013,7 @@
 msgid "repository commit failed"
 msgstr "リポジトリのコミット操作に失敗"
 
-msgid "patch failed, rejects left in working dir\n"
+msgid "patch failed, rejects left in working directory\n"
 msgstr "パッチ適用が失敗し、 却下差分は作業領域に残されています\n"
 
 msgid "fuzz found when applying patch, stopping\n"
@@ -5896,6 +6056,9 @@
 msgid "working directory revision is not qtip"
 msgstr "作業領域の親リビジョンは qtip ではありません"
 
+msgid "local changes found, refresh first"
+msgstr "作業領域に変更がありますので qrefresh を実施してください"
+
 msgid "local changed subrepos found, refresh first"
 msgstr "サブリポジトリに変更がありますので qrefresh を実施してください"
 
@@ -8647,78 +8810,6 @@
 msgid "commands to interactively select changes for commit/qrefresh"
 msgstr "commit や qrefresh における対話的な変更取り込みの選択"
 
-msgid "this modifies a binary file (all or nothing)\n"
-msgstr "これはバイナリファイルに対する変更です(部分的な選択は不可能)\n"
-
-msgid "this is a binary file\n"
-msgstr "これはバイナリファイルです\n"
-
-#, python-format
-msgid "%d hunks, %d lines changed\n"
-msgstr "%d 個の差分、 %d 行の変更\n"
-
-msgid ""
-"[Ynesfdaq?]$$ &Yes, record this change$$ &No, skip this change$$ &Edit this "
-"change manually$$ &Skip remaining changes to this file$$ Record remaining "
-"changes to this &file$$ &Done, skip remaining changes and files$$ Record "
-"&all changes to all remaining files$$ &Quit, recording no changes$$ &? "
-"(display help)"
-msgstr ""
-"[Ynesfdaq?]$$ この変更を記録(&yes)$$ この変更を無視(&no)$$ この変更を手動で編"
-"集(&edit)$$ 同一ファイルの以後の全ての変更を無視(&skip)$$ 同一ファイル(&file)"
-"の以後の全ての変更を記録$$ 以後の全ての変更を無視=記録作業を完了(&done)$$ 以"
-"後の全て(&all)の変更を記録$$ 変更の記録自体を中止(&quit)$$ ヘルプ表示(&?)"
-
-msgid "cannot edit patch for whole file"
-msgstr "ファイル全体に対するパッチは編集できません"
-
-msgid "cannot edit patch for binary file"
-msgstr "バイナリファイル向けパッチは編集できません"
-
-msgid ""
-"\n"
-"To remove '-' lines, make them ' ' lines (context).\n"
-"To remove '+' lines, delete them.\n"
-"Lines starting with # will be removed from the patch."
-msgstr ""
-"\n"
-"'-' 行の削除は、行の ' ' (コンテキスト行)化で行います。\n"
-"'+' 行の削除は、行自体の削除で行います。\n"
-"'#' で始まる行は、パッチから除外されます。"
-
-msgid ""
-"If the patch applies cleanly, the edited hunk will immediately be\n"
-"added to the record list. If it does not apply cleanly, a rejects\n"
-"file will be generated: you can use that when you try again. If\n"
-"all lines of the hunk are removed, then the edit is aborted and\n"
-"the hunk is left unchanged.\n"
-msgstr ""
-"パッチ適用が成功した場合、 編集後の差分は、 記録対象に追加されます。\n"
-"適用が失敗した場合、 却下差分はファイルに保存されます。 再試行の際は、\n"
-"このファイルを利用可能です。 差分の全行が削除された場合、\n"
-"編集作業は中止され、差分はそのまま維持されます。\n"
-
-msgid "edit failed"
-msgstr "編集に失敗"
-
-msgid "user quit"
-msgstr "ユーザの指示により終了します"
-
-#, python-format
-msgid "examine changes to %s?"
-msgstr "%s の変更点を調べますか?"
-
-msgid " and "
-msgstr " と "
-
-#, python-format
-msgid "record this change to '%s'?"
-msgstr "この変更を '%s' に記録しますか?"
-
-#, python-format
-msgid "record change %d/%d to '%s'?"
-msgstr "この変更 (%d 件目 / %d 件中) を '%s' に記録しますか?"
-
 msgid "hg record [OPTION]... [FILE]..."
 msgstr "hg record [OPTION]... [FILE]..."
 
@@ -8789,20 +8880,6 @@
 msgid "'mq' extension not loaded"
 msgstr "'mq' エクステンションが読み込まれていません"
 
-#, python-format
-msgid "running non-interactively, use %s instead"
-msgstr "非対話的に実行する場合は、%s を使用してください"
-
-msgid "cannot partially commit a merge (use \"hg commit\" instead)"
-msgstr "マージの部分コミットはできません (\"hg commit\" を使用してください)"
-
-#, python-format
-msgid "error parsing patch: %s"
-msgstr "パッチ解析に失敗: %s"
-
-msgid "no changes to record\n"
-msgstr "記録可能な変更がありません\n"
-
 msgid "interactively select changes to refresh"
 msgstr "パッチ更新内容を対話的に選択"
 
@@ -8992,8 +9069,8 @@
 msgid "share a common history between several working directories"
 msgstr "複数作業領域による履歴情報領域の共有"
 
-msgid "do not create a working copy"
-msgstr "作業領域の更新を抑止します"
+msgid "do not create a working directory"
+msgstr "作業領域へのファイルの取り出しを抑止します"
 
 msgid "also share bookmarks"
 msgstr "ブックマークも共有"
@@ -9238,6 +9315,9 @@
 msgid "show patch"
 msgstr "パッチ形式での表示"
 
+msgid "interactive mode, only works while creating a shelve(EXPERIMENTAL)"
+msgstr "対話的な退避対象の選択 (退避実施時のみ指定可能) (実験的実装)"
+
 msgid "output diffstat-style summary of changes"
 msgstr "diffstat 形式の変更概要を出力"
 
@@ -9329,10 +9409,6 @@
 "本エクステンションは、 指定リビジョンとその子孫を、 履歴から破棄します。\n"
 "詳細は :hg:`help strip` を参照してください。\n"
 
-#, python-format
-msgid "uncommitted changes in subrepository %s"
-msgstr "サブリポジトリ %s の変更が未コミットです"
-
 msgid "local changes found"
 msgstr "作業領域に変更があります"
 
@@ -9360,8 +9436,8 @@
 msgid "ignored  (DEPRECATED)"
 msgstr "※ このオプションは無視されます (非推奨)"
 
-msgid "do not modify working copy during strip"
-msgstr "処理中の作業領域変更を抑止"
+msgid "do not modify working directory during strip"
+msgstr "処理中の作業領域更新を抑止"
 
 msgid "remove revs only reachable from given bookmark"
 msgstr "指定ブックマークから、 到達可能なリビジョンのみを除外"
@@ -9500,7 +9576,7 @@
 msgstr "移植ログファイルが破損しています"
 
 #, python-format
-msgid "working dir not at transplant parent %s"
+msgid "working directory not at transplant parent %s"
 msgstr "作業領域が移植親 %s ではありません"
 
 msgid "commit failed"
@@ -9984,12 +10060,40 @@
 msgid "divergent bookmark %s stored as %s\n"
 msgstr "分岐するブックマーク %s を %s として保存\n"
 
+#, python-format
+msgid "warning: failed to assign numbered name to divergent bookmark %s\n"
+msgstr "警告: ブックマーク %s への分岐番号の割り当てに失敗しました\n"
+
 msgid "searching for changed bookmarks\n"
 msgstr "変更されたブックマークを探索中\n"
 
+#. i18n: "added" refers to a bookmark
+#. i18n: "added refers to a bookmark
+msgid "added"
+msgstr "追加"
+
+#. i18n: "advanced" refers to a bookmark
+msgid "advanced"
+msgstr "更新"
+
+#. i18n: "diverged" refers to a bookmark
+msgid "diverged"
+msgstr "分岐"
+
+#. i18n: "changed" refers to a bookmark
+msgid "changed"
+msgstr "変更"
+
 msgid "no changed bookmarks found\n"
 msgstr "変更されたブックマークはありません\n"
 
+#. i18n: "deleted" refers to a bookmark
+msgid "deleted"
+msgstr "削除"
+
+msgid "File pointer is not seekable"
+msgstr "対象ファイルは seek できません"
+
 msgid "not a Mercurial bundle"
 msgstr "Mercurial のバンドル形式ではありません"
 
@@ -9997,6 +10101,9 @@
 msgid "unknown bundle version %s"
 msgstr "未知のバンドル形式バージョン %s"
 
+msgid "Seek failed\n"
+msgstr "seek に失敗しました\n"
+
 #, python-format
 msgid "remote-changegroup: missing \"%s\" param"
 msgstr "remote-changegroup: パラメータ \"%s\" 指定がありません"
@@ -10045,8 +10152,8 @@
 msgid "invalid chunk length %d"
 msgstr "不正なデータ長: %d"
 
-msgid "Bundle1 only supports v1 changegroups\n"
-msgstr "bundle1 形式で使用可能なバンドルファイルは v1 バージョンのみです\n"
+msgid "old bundle types only supports v1 changegroups"
+msgstr "旧来の bundle 形式で使用できるのは v1 changegroups のみです"
 
 msgid "bundling"
 msgstr "バンドル生成中"
@@ -10080,6 +10187,10 @@
 msgid "received file revlog group is empty"
 msgstr "ファイルのリビジョンログが空です"
 
+#, python-format
+msgid "received delta base is censored: %s"
+msgstr "受理した履歴情報は検閲対象リビジョン由来のものです: %s"
+
 msgid "received spurious file revlog entry"
 msgstr "ファイルのリビジョンログが不正な情報を含んでいます"
 
@@ -10125,8 +10236,18 @@
 msgstr "タグ名 '%s' はシステムで予約されています"
 
 #, python-format
-msgid "uncommitted changes in subrepo %s"
-msgstr "サブリポジトリ %s の変更が未コミットです"
+msgid "running non-interactively, use %s instead"
+msgstr "非対話的に実行する場合は、%s を使用してください"
+
+msgid "cannot partially commit a merge (use \"hg commit\" instead)"
+msgstr "マージの部分コミットはできません (\"hg commit\" を使用してください)"
+
+#, python-format
+msgid "error parsing patch: %s"
+msgstr "パッチ解析に失敗: %s"
+
+msgid "no changes to record\n"
+msgstr "記録可能な変更がありません\n"
 
 msgid "options --message and --logfile are mutually exclusive"
 msgstr "--message と --logfile は同時に指定できません"
@@ -10190,8 +10311,8 @@
 msgstr "%s: 複製は記録されていません - %s は存在しません\n"
 
 #, python-format
-msgid "%s: deleted in working copy\n"
-msgstr "%s: 作業領域から削除しました\n"
+msgid "%s: deleted in working directory\n"
+msgstr "%s: 作業領域から削除済みです\n"
 
 #, python-format
 msgid "%s: cannot copy - %s\n"
@@ -10248,6 +10369,10 @@
 msgid "created %s"
 msgstr "%s を作成"
 
+#, python-format
+msgid "warning: %s not inside relative root %s\n"
+msgstr "警告: %s は相対ルート %s の範囲外です\n"
+
 #. i18n: column positioning for "hg log"
 #, python-format
 msgid "changeset:   %d:%s\n"
@@ -10607,6 +10732,9 @@
 msgid "number of lines of context to show"
 msgstr "差分コンテキストの行数"
 
+msgid "produce diffs relative to subdirectory"
+msgstr "差分生成の起点ディレクトリ指定"
+
 msgid "SIMILARITY"
 msgstr "類似度"
 
@@ -11591,8 +11719,8 @@
 "    :``%r``: ゼロ詰めのリビジョン番号\n"
 "    :``%b``: 対象リポジトリパスの末尾要素"
 
-msgid "the clone will include an empty working copy (only a repository)"
-msgstr "作業領域の更新無し(管理領域のみの複製)"
+msgid "the clone will include an empty working directory (only a repository)"
+msgstr "複製先の作業領域を空にする(管理領域のみの複製)"
 
 msgid "revision, tag or branch to check out"
 msgstr "作業領域更新用リビジョン(タグ名/ブランチ名)"
@@ -11791,12 +11919,15 @@
 msgid "mark a branch as closed, hiding it from the branch list"
 msgstr "ブランチを閉鎖し、 ブランチ一覧での表示から除外"
 
-msgid "amend the parent of the working dir"
+msgid "amend the parent of the working directory"
 msgstr "作業領域の親リビジョンの改変"
 
 msgid "use the secret phase for committing"
 msgstr "secret フェーズでコミット中"
 
+msgid "use interactive mode"
+msgstr "操作対象変更の対話的な選択"
+
 msgid "commit the specified files or all outstanding changes"
 msgstr "指定ファイルまたは全ての変更内容のリポジトリへの記録"
 
@@ -11959,6 +12090,9 @@
 msgid "can't use --local outside a repository"
 msgstr "リポジトリの外側では --local を指定できません"
 
+msgid "edit failed"
+msgstr "編集に失敗"
+
 msgid "only one config item permitted"
 msgstr "複数の設定項目指定は無効です"
 
@@ -12199,10 +12333,6 @@
 msgid "dump the contents of a data file revision"
 msgstr "データファイルリビジョンの内容表示"
 
-#, python-format
-msgid "invalid revision identifier %s"
-msgstr "リビジョン指定 %s は不正です"
-
 msgid "try extended date formats"
 msgstr "拡張日時形式の使用"
 
@@ -12595,10 +12725,13 @@
 
 msgid ""
 "    This is useful for writing repository conversion tools, but should\n"
-"    be used with care."
-msgstr ""
-"    本コマンドはリポジトリ変換ツールの作成に有用ですが、 利用には注意が\n"
-"    必要です。"
+"    be used with care. For example, neither the working directory nor the\n"
+"    dirstate is updated, so file status may be incorrect after running this\n"
+"    command."
+msgstr ""
+"    本コマンドはリポジトリ変換ツール等で有用ですが、 十分な注意が必要です。\n"
+"    本コマンドは、 作業領域中のファイルも dirstate も更新しませんので、\n"
+"    実行直後の状態表示は、 想定しているものと異なるかもしれません。"
 
 msgid "do not display the saved mtime"
 msgstr "記録された mtime 情報の表示抑止"
@@ -12926,9 +13059,10 @@
 
 msgid ""
 "    If no patterns are given to match, this command prints the names\n"
-"    of all files under Mercurial control in the working copy."
-msgstr ""
-"    パターン指定が無い場合、 全ての管理対象ファイルが一覧表示されます。"
+"    of all files under Mercurial control in the working directory."
+msgstr ""
+"    パターン指定が無い場合、 本コマンドは構成管理対象下にある作業領域中の\n"
+"    全てのファイル名を表示します。"
 
 msgid "      - list all files under the current directory::"
 msgstr "      - 現ディレクトリ配下の全てのファイルの列挙::"
@@ -13372,7 +13506,7 @@
 msgid "[-nibtB] [-r REV] [SOURCE]"
 msgstr "[-nibtB] [-r REV] [SOURCE]"
 
-msgid "identify the working copy or specified revision"
+msgid "identify the working directory or specified revision"
 msgstr "作業領域または特定リビジョンの識別情報表示"
 
 msgid ""
@@ -13449,6 +13583,9 @@
 msgid "apply patch to the nodes from which it was generated"
 msgstr "パッチ作成時と同じ親リビジョンに対して適用"
 
+msgid "apply patch to subdirectory"
+msgstr "パッチ適用先サブディレクトリの指定"
+
 msgid "use any branch information in patch (implied by --exact)"
 msgstr "パッチ中のブランチ情報を利用(--exact 指定時は自動適用)"
 
@@ -13601,6 +13738,9 @@
 msgid "cannot use --exact with --edit"
 msgstr "--exact と --edit は併用できません"
 
+msgid "cannot use --exact with --prefix"
+msgstr "--exact と --prefix は併用できません"
+
 msgid "applying patch from stdin\n"
 msgstr "標準入力からのパッチを適用中\n"
 
@@ -13647,17 +13787,64 @@
 "    未取り込みリビジョンを検索します。 これらのリビジョンは\n"
 "    :hg:`pull` を実行した際に、 取り込み対象となります。"
 
-msgid ""
-"    For remote repository, using --bundle avoids downloading the\n"
-"    changesets twice if the incoming is followed by a pull."
-msgstr ""
-"    --bundle での書き出し結果を利用した :hg:`pull` の実施は、\n"
-"    :hg:`pull` での再度のデータ転送を抑止できるため、\n"
-"    (データ転送コストの高い) 遠隔ホストとの連携では特に有用です。"
-
 msgid "    See pull for valid source format details."
 msgstr "    対象リポジトリの指定形式は :hg:`help pull` を参照してください。"
 
+msgid ""
+"      With -B/--bookmarks, the result of bookmark comparison between\n"
+"      local and remote repositories is displayed. With -v/--verbose,\n"
+"      status is also displayed for each bookmark like below::"
+msgstr ""
+"      -B/--bookmarks 指定時は、 手元のリポジトリと連携先リポジトリとの、\n"
+"      ブックマーク比較結果が表示されます。 -v/--verbose が指定された場合、\n"
+"      各ブックマーク毎に、 以下の様な状態情報が表示されます::"
+
+msgid ""
+"        BM1               01234567890a added\n"
+"        BM2               1234567890ab advanced\n"
+"        BM3               234567890abc diverged\n"
+"        BM4               34567890abcd changed"
+msgstr ""
+"        BM1               01234567890a 追加\n"
+"        BM2               1234567890ab 更新\n"
+"        BM3               234567890abc 分岐\n"
+"        BM4               34567890abcd 変更"
+
+msgid ""
+"      The action taken locally when pulling depends on the\n"
+"      status of each bookmark:"
+msgstr ""
+"      各ブックマークの状態に応じて、 手元のリポジトリで :hg:`pull`\n"
+"      時に実施される処理が異なります:"
+
+msgid ""
+"      :``added``: pull will create it\n"
+"      :``advanced``: pull will update it\n"
+"      :``diverged``: pull will create a divergent bookmark\n"
+"      :``changed``: result depends on remote changesets"
+msgstr ""
+"      :``追加``: 当該ブックマークを作成\n"
+"      :``更新``: 当該ブックマークを更新\n"
+"      :``分岐``: (@付きの)分岐先ブックマークを作成\n"
+"      :``変更``: 参照先リビジョンに応じて挙動が変化"
+
+msgid ""
+"      From the point of view of pulling behavior, bookmark\n"
+"      existing only in the remote repository are treated as ``added``,\n"
+"      even if it is in fact locally deleted."
+msgstr ""
+"      仮に手元のリポジトリで削除されたブックマークであったとしても、\n"
+"      :hg:`pull` 挙動の観点から、 連携先にのみ存在するものは、 ``追加``\n"
+"      扱いされます。"
+
+msgid ""
+"      For remote repository, using --bundle avoids downloading the\n"
+"      changesets twice if the incoming is followed by a pull."
+msgstr ""
+"      --bundle での書き出し結果を利用した :hg:`pull` の実施は、\n"
+"      :hg:`pull` での再度のデータ転送を抑止できるため、\n"
+"      (データ転送コストの高い) 遠隔ホストとの連携では特に有用です。"
+
 msgid "      - show incoming changes with patches and full description::"
 msgstr "      - 取り込み対象リビジョン群の変更内容・コミットログ全体も表示::"
 
@@ -13739,13 +13926,6 @@
 "    対象とする場合は \"--include .\" を指定します。"
 
 msgid ""
-"    If no patterns are given to match, this command prints the names\n"
-"    of all files under Mercurial control in the working directory."
-msgstr ""
-"    パターン指定が無い場合、 本コマンドは構成管理対象下にある作業領域中の\n"
-"    全てのファイル名を表示します。"
-
-msgid ""
 "    If you want to feed the output of this command into the \"xargs\"\n"
 "    command, use the -0 option to both this command and \"xargs\". This\n"
 "    will avoid the problem of \"xargs\" treating single filenames that\n"
@@ -14081,6 +14261,48 @@
 msgstr "    有効なリポジトリ指定形式は :hg:`pull` を参照してください。"
 
 msgid ""
+"        BM1               01234567890a added\n"
+"        BM2                            deleted\n"
+"        BM3               234567890abc advanced\n"
+"        BM4               34567890abcd diverged\n"
+"        BM5               4567890abcde changed"
+msgstr ""
+"        BM1               01234567890a 追加\n"
+"        BM2                            削除\n"
+"        BM3               234567890abc 更新\n"
+"        BM4               34567890abcd 分岐\n"
+"        BM5               4567890abcde 変更"
+
+msgid ""
+"      The action taken when pushing depends on the\n"
+"      status of each bookmark:"
+msgstr ""
+"      各ブックマークの状態に応じて、 連携先リポジトリで :hg:`push`\n"
+"      時に実施される処理が異なります:"
+
+msgid ""
+"      :``added``: push with ``-B`` will create it\n"
+"      :``deleted``: push with ``-B`` will delete it\n"
+"      :``advanced``: push will update it\n"
+"      :``diverged``: push with ``-B`` will update it\n"
+"      :``changed``: push with ``-B`` will update it"
+msgstr ""
+"      :``追加``: ``-B`` 併用時のみ当該ブックマークを作成\n"
+"      :``削除``: ``-B`` 併用時のみ当該ブックマークを削除\n"
+"      :``更新``: 当該ブックマークを更新\n"
+"      :``分岐``: ``-B`` 併用時のみ当該ブックマークを更新\n"
+"      :``変更``: ``-B`` 併用時のみ当該ブックマークを更新"
+
+msgid ""
+"      From the point of view of pushing behavior, bookmarks\n"
+"      existing only in the remote repository are treated as\n"
+"      ``deleted``, even if it is in fact added remotely."
+msgstr ""
+"      仮に連携先リポジトリで追加されたブックマークであったとしても、\n"
+"      :hg:`push` 挙動の観点から、 連携先にのみ存在するものは、 ``削除``\n"
+"      扱いされます。"
+
+msgid ""
 "    Returns 0 if there are outgoing changes, 1 otherwise.\n"
 "    "
 msgstr ""
@@ -14413,6 +14635,12 @@
 msgid "see the \"path\" section in \"hg help config\""
 msgstr "\"hg help config\" の \"path\" セクションを参照してください"
 
+msgid "specified revisions evaluate to an empty set"
+msgstr "リビジョン指定対象は空です"
+
+msgid "use different revision arguments"
+msgstr "rev オプションの指定値を変更してください"
+
 msgid "roll back an interrupted transaction"
 msgstr "中断されたトランザクションの取り消し"
 
@@ -14662,6 +14890,9 @@
 msgid "revert to the specified revision"
 msgstr "当該リビジョン時点の内容で復旧"
 
+msgid "interactively select the changes (EXPERIMENTAL)"
+msgstr "操作対象変更の対話的な選択 (実験的実装)"
+
 msgid "[OPTION]... [-r REV] [NAME]..."
 msgstr "[OPTION]... [-r REV] [NAME]..."
 
@@ -15050,6 +15281,16 @@
 msgid "          hg status --rev 9353"
 msgstr "          hg status --rev 9353"
 
+msgid ""
+"      - show changes in the working directory relative to the\n"
+"        current directory (see :hg:`help patterns` for more information)::"
+msgstr ""
+"      - 作業領域中の状態を、現ディレクトリ相対で表示 (パターン指定の詳細は\n"
+"        :hg:`help patterns` を参照)::"
+
+msgid "          hg status re:"
+msgstr "          hg status re:"
+
 msgid "      - show all changes including copies in an existing changeset::"
 msgstr "      - 指定リビジョンにおける状態変更 (複製元含む) を表示::"
 
@@ -15515,11 +15756,11 @@
 msgstr "(詳細は http://mercurial.selenic.com を参照)"
 
 msgid ""
-"Copyright (C) 2005-2014 Matt Mackall and others\n"
+"Copyright (C) 2005-2015 Matt Mackall and others\n"
 "This is free software; see the source for copying conditions. There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 msgstr ""
-"Copyright (C) 2005-2014 Matt Mackall 他\n"
+"Copyright (C) 2005-2015 Matt Mackall 他\n"
 "本製品はフリーソフトウェアです。\n"
 "頒布条件に関しては同梱されるライセンス条項をお読みください。\n"
 "市場適合性や特定用途への可否を含め、 本製品は無保証です。\n"
@@ -15593,7 +15834,7 @@
 
 #, python-format
 msgid "censored node: %s"
-msgstr "監査ノードです: %s"
+msgstr "検閲対象リビジョンです: filelog %s"
 
 msgid "set censor.policy to ignore errors"
 msgstr "エラーを無視する場合は censor.policy 設定を ignore に"
@@ -15633,6 +15874,46 @@
 msgid "copy failed: %s is not a file or a symbolic link\n"
 msgstr "コピー失敗: %s はファイルでもシンボリックリンクでもありません\n"
 
+msgid "the python curses/wcurses module is not available/installed"
+msgstr "Python の curses/wcurses モジュールが利用できません"
+
+msgid "starting interactive selection\n"
+msgstr "対話的な選択の開始\n"
+
+msgid "cannot edit patch for whole file"
+msgstr "ファイル全体に対するパッチは編集できません"
+
+msgid "cannot edit patch for binary file"
+msgstr "バイナリファイル向けパッチは編集できません"
+
+msgid ""
+"\n"
+"    to remove '-' lines, make them ' ' lines (context).\n"
+"    to remove '+' lines, delete them.\n"
+"    lines starting with # will be removed from the patch."
+msgstr ""
+"\n"
+"    '-' 行の削除は、行頭の ' ' (コンテキスト行)化で行います。\n"
+"    '+' 行の削除は、行自体の削除で行います。\n"
+"    '#' で始まる行は、パッチから除外されます。"
+
+msgid ""
+"    if the patch applies cleanly, the edited hunk will immediately be\n"
+"    added to the record list. if it does not apply cleanly, a rejects\n"
+"    file will be generated: you can use that when you try again. if\n"
+"    all lines of the hunk are removed, then the edit is aborted and\n"
+"    the hunk is left unchanged.\n"
+"    "
+msgstr ""
+"    パッチ適用が成功した場合、 編集後の差分は、 記録対象に追加されます。\n"
+"    適用が失敗した場合、 却下差分はファイルに保存されます。 再試行の際は、\n"
+"    このファイルを利用可能です。 差分の全行が削除された場合、\n"
+"    編集作業は中止され、差分はそのまま維持されます。\n"
+"    "
+
+msgid "user quit"
+msgstr "ユーザの指示により終了します"
+
 #, python-format
 msgid "invalid character in dag description: %s..."
 msgstr "dag 記述に不正な文字が使われています: %s..."
@@ -15752,6 +16033,14 @@
 msgid "hg: parse error: %s\n"
 msgstr "hg: 解析エラー: %s\n"
 
+#, python-format
+msgid "(did you mean %r?)\n"
+msgstr "(もしかして %r のことですか?)\n"
+
+#, python-format
+msgid "(did you mean one of %s?)\n"
+msgstr "(もしかして %s のいずれかのことですか?)\n"
+
 msgid "entering debugger - type c to continue starting hg or h for help\n"
 msgstr "デバッガ動作開始 - 継続なら c 、 ヘルプなら h を入力してください\n"
 
@@ -15807,7 +16096,7 @@
 
 #, python-format
 msgid "abort: file censored %s!\n"
-msgstr "中止: 管理ファイルアクセスで問題が発生しました: %s\n"
+msgstr "中止: 検閲対象ファイルです: %s\n"
 
 msgid "killed!\n"
 msgstr "強制終了されました!\n"
@@ -15971,6 +16260,10 @@
 msgstr "不正なプロファイラ指定 '%s' を無視します\n"
 
 #, python-format
+msgid "unknown identifier: %s"
+msgstr "未知の識別子: %s"
+
+#, python-format
 msgid "%s: not a Mercurial bundle"
 msgstr "%s: Mercurial のバンドル形式ではありません"
 
@@ -16329,10 +16622,6 @@
 msgid "clean takes no arguments"
 msgstr "clean には引数が指定できません"
 
-#, python-format
-msgid "not a function: %s"
-msgstr "関数ではありません: %s"
-
 msgid ""
 "``binary()``\n"
 "    File that appears to be binary (contains NUL bytes)."
@@ -16400,6 +16689,20 @@
 msgstr "hgignore には引数が指定できません"
 
 msgid ""
+"``portable()``\n"
+"    File that has a portable name. (This doesn't include filenames with "
+"case\n"
+"    collisions.)"
+msgstr ""
+"``portable()``\n"
+"    プラットフォーム間で可搬性のある名前のファイル\n"
+"    (文字大小での衝突の有無/可能性は、 可搬性の判定に含まれません)"
+
+#. i18n: "portable" is a keyword
+msgid "portable takes no arguments"
+msgstr "portable には引数が指定できません"
+
+msgid ""
 "``grep(regex)``\n"
 "    File contains the given regular expression."
 msgstr ""
@@ -16533,6 +16836,10 @@
 msgstr "untested"
 
 #. i18n: bisect changeset status
+msgid "ignored"
+msgstr "無視"
+
+#. i18n: bisect changeset status
 msgid "good (implicit)"
 msgstr "good (推定)"
 
@@ -16549,6 +16856,9 @@
 msgid "DEPRECATED"
 msgstr "非推奨"
 
+msgid "EXPERIMENTAL"
+msgstr "実験的実装"
+
 msgid " ([+] can be repeated)"
 msgstr " ([+] 印付きのオプションは複数回指定可能です)"
 
@@ -18484,6 +18794,67 @@
 "  通常のタグの場合は ``$HG_LOCAL=0`` になります。"
 
 msgid ""
+"``pretxnopen``\n"
+"  Run before any new repository transaction is open. The reason for the\n"
+"  transaction will be in ``$HG_TXNNAME`` and a unique identifier for the\n"
+"  transaction will be in ``HG_TXNID``. A non-zero status will prevent the\n"
+"  transaction from being opened."
+msgstr ""
+"``pretxnopen``\n"
+"  トランザクション開始直前に実行されます。 トランザクションの種別が\n"
+"  ``$HG_TXNNAME`` に、 一意な識別子が ``HG_TXNID`` に設定されます。 \n"
+"  終了コードが非ゼロの場合、 トランザクションは開始されません。"
+
+msgid ""
+"``pretxnclose``\n"
+"  Run right before the transaction is actually finalized. Any\n"
+"  repository change will be visible to the hook program. This lets you\n"
+"  validate the transaction content or change it. Exit status 0 allows\n"
+"  the commit to proceed. Non-zero status will cause the transaction to\n"
+"  be rolled back. The reason for the transaction opening will be in\n"
+"  ``$HG_TXNNAME`` and a unique identifier for the transaction will be in\n"
+"  ``HG_TXNID``. The rest of the available data will vary according the\n"
+"  transaction type. New changesets will add ``$HG_NODE`` (id of the\n"
+"  first added changeset), ``$HG_URL`` and ``$HG_SOURCE`` variables,\n"
+"  bookmarks and phases changes will set ``HG_BOOKMARK_MOVED`` and\n"
+"  ``HG_PHASES_MOVED`` to ``1``, etc."
+msgstr ""
+"``pretxnclose``\n"
+"  トランザクション完了直前に実行されます。 適用予定の全ての履歴変更が、\n"
+"  フックから参照できます。 トランザクション内容の検証や変更が可能です。\n"
+"  終了コードが 0 の場合、 トランザクション完了処理が継続されます。\n"
+"  それ以外の場合、 トランザクションはロールバックされます。\n"
+"  トランザクション種別が ``$HG_TXNNAME`` に、 一意な識別子が ``HG_TXNID``\n"
+"  に設定されます。 それ以外の情報は、 トランザクション種別に依存します。\n"
+"  例えば、 新規リビジョン群を追加するトランザクションの場合、 ``$HG_NODE``\n"
+"  (追加リビジョン群の最初のものの ID)、 ``$HG_URL`` および ``$HG_SOURCE``\n"
+"  が設定されます。 ブックマークやフェーズの変更の場合、\n"
+"  ``HG_BOOKMARK_MOVED`` や ``HG_PHASES_MOVED`` に ``1`` が設定されます。"
+
+msgid ""
+"``txnclose``\n"
+"  Run after any repository transaction has been committed. At this\n"
+"  point, the transaction can no longer be rolled back. The hook will run\n"
+"  after the lock is released. See ``pretxnclose`` docs for details about\n"
+"  available variables."
+msgstr ""
+"``txnclose``\n"
+"  トランザクション完了直後に実行されます。 このフックの実行結果は、\n"
+"  トランザクションのロールバックを生じません。 フック実行に先立って、\n"
+"  排他は解放されます。 参照可能な変数の詳細に関しては ``pretxnclose``\n"
+"  の説明を参照してください。"
+
+msgid ""
+"``txnabort``\n"
+"  Run when a transaction is aborted. See ``pretxnclose`` docs for details "
+"about\n"
+"  available variables."
+msgstr ""
+"``txnabort``\n"
+"  トランザクション中断時に実行されます。 参照可能な変数の詳細に関しては\n"
+"  ``pretxnclose`` の説明を参照してください。"
+
+msgid ""
 "``pretxnchangegroup``\n"
 "  Run after a changegroup has been added via push, pull or unbundle,\n"
 "  but before the transaction has been committed. Changegroup is\n"
@@ -19708,13 +20079,16 @@
 "    format.\n"
 "    Defaults to showing the hash, tags, branches, bookmarks, author, and\n"
 "    the first line of the commit description.\n"
-"    You have to pay attention to encodings of managed files, if you\n"
-"    use non-ASCII characters in tags, branches, bookmarks, author\n"
-"    and/or commit descriptions. At template expansion, non-ASCII\n"
-"    characters use the encoding specified by ``--encoding`` global\n"
-"    option, ``HGENCODING`` or other locale setting environment\n"
-"    variables. The difference of encoding between merged file and\n"
-"    conflict markers causes serious problem."
+"    If you use non-ASCII characters in names for tags, branches, bookmarks,\n"
+"    authors, and/or commit descriptions, you must pay attention to encodings "
+"of\n"
+"    managed files. At template expansion, non-ASCII characters use the "
+"encoding\n"
+"    specified by the ``--encoding`` global option, ``HGENCODING`` or other\n"
+"    environment variables that govern your locale. If the encoding of the "
+"merge\n"
+"    markers is different from the encoding of the merged files,\n"
+"    serious problems may occur."
 msgstr ""
 "``mergemarkertemplate``\n"
 "    マージで衝突が検出された際に、 ファイルに挿入される衝突マークの、\n"
@@ -19805,6 +20179,13 @@
 "    デフォルト値: False"
 
 msgid ""
+"``statuscopies``\n"
+"    Display copies in the status command."
+msgstr ""
+"``statuscopies``\n"
+"    :hg:`status` コマンドでの複製元ファイルの表示。."
+
+msgid ""
 "``ssh``\n"
 "    command to use for SSH connections. Default is ``ssh``."
 msgstr ""
@@ -22212,13 +22593,13 @@
 msgid ""
 "Copying\n"
 "\"\"\"\"\"\"\"\n"
-"Copyright (C) 2005-2014 Matt Mackall.\n"
+"Copyright (C) 2005-2015 Matt Mackall.\n"
 "Free use of this software is granted under the terms of the GNU General\n"
 "Public License version 2 or any later version."
 msgstr ""
 "Copying\n"
 "\"\"\"\"\"\"\"\n"
-"Copyright (C) 2005-2014 Matt Mackall.\n"
+"Copyright (C) 2005-2015 Matt Mackall.\n"
 "本ソフトウェアは、 バージョン2またはそれ以降の GNU General\n"
 "Public License の元での自由な利用が保証されています。"
 
@@ -22276,14 +22657,14 @@
 "Copying\n"
 "=======\n"
 "This manual page is copyright 2006 Vadim Gelfer.\n"
-"Mercurial is copyright 2005-2014 Matt Mackall.\n"
+"Mercurial is copyright 2005-2015 Matt Mackall.\n"
 "Free use of this software is granted under the terms of the GNU General\n"
 "Public License version 2 or any later version."
 msgstr ""
 "Copying\n"
 "=======\n"
 "本マニュアルページの著作権は copyright 2006 Vadim Gelfer です。\n"
-"Mercurial の著作権は copyright 2005-2014 Matt Mackall です。\n"
+"Mercurial の著作権は copyright 2005-2015 Matt Mackall です。\n"
 "本ソフトウェアは、 バージョン2またはそれ以降の GNU General\n"
 "Public License の元での自由な利用が保証されています。"
 
@@ -22554,14 +22935,14 @@
 "Copying\n"
 "=======\n"
 "This manual page is copyright 2005 Bryan O'Sullivan.\n"
-"Mercurial is copyright 2005-2014 Matt Mackall.\n"
+"Mercurial is copyright 2005-2015 Matt Mackall.\n"
 "Free use of this software is granted under the terms of the GNU General\n"
 "Public License version 2 or any later version."
 msgstr ""
 "Copying\n"
 "=======\n"
 "本マニュアルの著作権は copyright 2005 Bryan O'Sullivan です。\n"
-"Mercurial の著作権は copyright 2005-2014 Matt Mackall です。\n"
+"Mercurial の著作権は copyright 2005-2015 Matt Mackall です。\n"
 "本ソフトウェアは、 バージョン2またはそれ以降の GNU General\n"
 "Public License の元での自由な利用が保証されています。"
 
@@ -22666,10 +23047,83 @@
 
 msgid ""
 "The ``collections`` section is deprecated and has been superseded by\n"
-"``paths``.\n"
+"``paths``."
 msgstr ""
 "``collections`` セクションでの設定は非推奨なので、 代わりに ``paths``\n"
-"を使用してください。\n"
+"を使用してください。"
+
+msgid ""
+"URLs and Common Arguments\n"
+"========================="
+msgstr ""
+"URL と共通引数\n"
+"=============="
+
+msgid ""
+"URLs under each repository have the form ``/{command}[/{arguments}]``\n"
+"where ``{command}`` represents the name of a command or handler and\n"
+"``{arguments}`` represents any number of additional URL parameters\n"
+"to that command."
+msgstr ""
+"リポジトリ参照 URL 配下のパスは ``/{command}[/{arguments}]`` 形式です。\n"
+"``{command}`` は機能を、 ``{arguments}`` は機能に対する引数指定を表します。"
+
+msgid ""
+"The web server has a default style associated with it. Styles map to\n"
+"a collection of named templates. Each template is used to render a\n"
+"specific piece of data, such as a changeset or diff."
+msgstr ""
+"ウェブサーバにはデフォルトの表示スタイルがあります。 スタイル定義は、\n"
+"名前付きテンプレート群をまとめたものです。 個々のテンプレートは、\n"
+"リビジョン情報や差分など、 表示要素を文字列化します。"
+
+msgid ""
+"The style for the current request can be overwritten two ways. First,\n"
+"if ``{command}`` contains a hyphen (``-``), the text before the hyphen\n"
+"defines the style. For example, ``/atom-log`` will render the ``log``\n"
+"command handler with the ``atom`` style. The second way to set the\n"
+"style is with the ``style`` query string argument. For example,\n"
+"``/log?style=atom``. The hyphenated URL parameter is preferred."
+msgstr ""
+"ウェブサーバへの要求の際に、 スタイルを指定する方法は2つあります。\n"
+"``{command}`` がハイフン (``-``) を含む場合、 ハイフンの前の部分で、\n"
+"スタイル名を指定します。 例えば ``/atom-log`` は ``log`` 機能の結果を\n"
+"``atom`` スタイルで文字列化します。 もう一つの指定方法は、例えば\n"
+"``/log?style=atom`` のような、 ``style`` クエリ文字列引数での指定です。\n"
+"推奨される指定方法は、 ハイフンを使用する形式の方です。"
+
+msgid ""
+"Not all templates are available for all styles. Attempting to use\n"
+"a style that doesn't have all templates defined may result in an error\n"
+"rendering the page."
+msgstr ""
+"スタイルと処理の組み合わせ次第では、 未定義のテンプレートの存在により、\n"
+"応答が正しく文字列化されない可能性があります。"
+
+msgid ""
+"Many commands take a ``{revision}`` URL parameter. This defines the\n"
+"changeset to operate on. This is commonly specified as the short,\n"
+"12 digit hexidecimal abbreviation for the full 40 character unique\n"
+"revision identifier. However, any value described by\n"
+":hg:`help revisions` typically works."
+msgstr ""
+"多くの処理で、 ``{command}`` に続く URL パス要素として ``{revision}``\n"
+"を指定できます。 これは処理対象のリビジョンを指定するものです。\n"
+"多くの場合、 16進12桁の短縮形式ハッシュ値が使用されますが、\n"
+":hg:`help revisions` 中で説明されている形式は、 概ね機能します。"
+
+msgid ""
+"Commands and URLs\n"
+"================="
+msgstr ""
+"コマンドと URL\n"
+"=============="
+
+msgid "The following web commands and their URLs are available:"
+msgstr "ウェブサーバに指定可能なコマンドと URL 形式を以下に示します:"
+
+msgid "  .. webcommandsmarker\n"
+msgstr "  .. webcommandsmarker\n"
 
 msgid "To merge files Mercurial uses merge tools."
 msgstr "Mercurial でのファイル内容のマージには、 マージツールを使用します。"
@@ -23708,14 +24162,14 @@
 ":add: add does not recurse in subrepos unless -S/--subrepos is\n"
 "    specified.  However, if you specify the full path of a file in a\n"
 "    subrepo, it will be added even without -S/--subrepos specified.\n"
-"    Git and Subversion subrepositories are currently silently\n"
+"    Subversion subrepositories are currently silently\n"
 "    ignored."
 msgstr ""
 ":add: -S/--subrepos 指定が無い限り、 構成管理対象へのファイル登録は、\n"
 "    再帰的には実施されません。 但し、 -S/--subrepos 指定が無くても、\n"
 "    サブリポジトリ中のファイルへのパスが、 直接指定された場合は、\n"
 "    対象ファイルを構成管理対象として登録します。 なお、 サブリポジトリが\n"
-"    Git または Subversion 形式の場合、 現状では、 何の表示も無しに、\n"
+"    Subversion 形式の場合、 現状では、 何の表示も無しに、\n"
 "    登録要求を無視します。"
 
 msgid ""
@@ -23740,10 +24194,10 @@
 
 msgid ""
 ":cat: cat currently only handles exact file matches in subrepos.\n"
-"    Git and Subversion subrepositories are currently ignored."
+"    Subversion subrepositories are currently ignored."
 msgstr ""
 ":cat: 現状では、 サブリポジトリ中のファイルと厳密一致した場合のみ、\n"
-"    処理を実施します。 Git および Subversion 形式の場合は何も実施しません。"
+"    処理を実施します。 Subversion 形式の場合は何も実施しません。"
 
 msgid ""
 ":commit: commit creates a consistent snapshot of the state of the\n"
@@ -23772,16 +24226,24 @@
 msgid ""
 ":diff: diff does not recurse in subrepos unless -S/--subrepos is\n"
 "    specified. Changes are displayed as usual, on the subrepositories\n"
-"    elements. Git subrepositories do not support --include/--exclude.\n"
-"    Subversion subrepositories are currently silently ignored."
+"    elements. Subversion subrepositories are currently silently ignored."
 msgstr ""
 ":diff: -S/--subrepos 指定が無い限り、 差分表示は、 \n"
 "    再帰的には実施されません。\n"
 "    サブリポジトリのファイルの差分表示は、 通常の差分表示形式と同じです。\n"
-"    サブリポジトリが Git 形式の場合、 --include/--exclude は機能しません。\n"
 "    Subversion 形式の場合は、 何の表示も無しに、 差分表示要求を無視します。"
 
 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"
+"    一覧表示要求を無視します。"
+
+msgid ""
 ":forget: forget currently only handles exact file matches in subrepos.\n"
 "    Git and Subversion subrepositories are currently silently ignored."
 msgstr ""
@@ -23985,56 +24447,8 @@
 msgid "In addition to filters, there are some basic built-in functions:"
 msgstr "フィルタの他に、 以下の様な基本的な組み込み関数があります:"
 
-msgid "- date(date[, fmt])"
-msgstr "- date(date[, fmt])"
-
-msgid "- diff([includepattern [, excludepattern]])"
-msgstr "- diff([includepattern [, excludepattern]])"
-
-msgid "- fill(text[, width])"
-msgstr "- fill(text[, width])"
-
-msgid "- get(dict, key)"
-msgstr "- get(dict, key)"
-
-msgid "- if(expr, then[, else])"
-msgstr "- if(expr, then[, else])"
-
-msgid "- ifcontains(expr, expr, then[, else])"
-msgstr "- ifcontains(expr, expr, then[, else])"
-
-msgid "- ifeq(expr, expr, then[, else])"
-msgstr "- ifeq(expr, expr, then[, else])"
-
-msgid "- join(list, sep)"
-msgstr "- join(list, sep)"
-
-msgid "- label(label, expr)"
-msgstr "- label(label, expr)"
-
-msgid "- pad(text, width[, fillchar, right])"
-msgstr "- pad(text, width[, fillchar, right])"
-
-msgid "- revset(query[, formatargs])"
-msgstr "- revset(query[, formatargs])"
-
-msgid "- rstdoc(text, style)"
-msgstr "- rstdoc(text, style)"
-
-msgid "- shortest(node)"
-msgstr "- shortest(node)"
-
-msgid "- startswith(string, text)"
-msgstr "- startswith(string, text)"
-
-msgid "- strip(text[, chars])"
-msgstr "- strip(text[, chars])"
-
-msgid "- sub(pat, repl, expr)"
-msgstr "- sub(pat, repl, expr)"
-
-msgid "- word(number, text[, separator])"
-msgstr "- word(number, text[, separator])"
+msgid ".. functionsmarker"
+msgstr ".. functionsmarker"
 
 msgid "Also, for any expression that returns a list, there is a list operator:"
 msgstr "また、 列挙形式を返す expr に対しては、 以下の様な記述が可能です:"
@@ -24388,12 +24802,476 @@
 
 #, python-format
 msgid "cannot start server at '%s:%d': %s"
-msgstr "'%s:%d' でのサーバ起動に失敗: %s"
+msgstr "'%s:%d' でのサーバ待ちうけの起動に失敗: %s"
+
+msgid ""
+"\n"
+"    /log[/{revision}[/{path}]]\n"
+"    --------------------------"
+msgstr ""
+"\n"
+"    /log[/{revision}[/{path}]]\n"
+"    --------------------------"
+
+msgid "    Show repository or file history."
+msgstr "    リポジトリまたはファイルに関する履歴の表示。"
+
+msgid ""
+"    For URLs of the form ``/log/{revision}``, a list of changesets starting "
+"at\n"
+"    the specified changeset identifier is shown. If ``{revision}`` is not\n"
+"    defined, the default is ``tip``. This form is equivalent to the\n"
+"    ``changelog`` handler."
+msgstr ""
+"    ``/log/{revision}`` 形式 URL の場合、 revision 以前のリビジョンを、\n"
+"    一覧表示します。 ``{revision}`` 省略時は ``tip`` 指定とみなされます。\n"
+"    この形式は ``changelog`` 機能と同等です。"
+
+msgid ""
+"    For URLs of the form ``/log/{revision}/{file}``, the history for a "
+"specific\n"
+"    file will be shown. This form is equivalent to the ``filelog`` handler."
+msgstr ""
+"    ``/log/{revision}/{file}`` 形式 URL の場合、 一覧表示対象は ``{file}``\n"
+"    に関するリビジョンに限定されます。 この形式は ``filelog``\n"
+"    機能と同等です。"
+
+msgid ""
+"\n"
+"    /file/{revision}[/{path}]\n"
+"    -------------------------"
+msgstr ""
+"\n"
+"    /file/{revision}[/{path}]\n"
+"    -------------------------"
+
+msgid "    Show information about a directory or file in the repository."
+msgstr "    リポジトリ中のディレクトリまたはファイルに関する情報の表示。"
+
+msgid "    Info about the ``path`` given as a URL parameter will be rendered."
+msgstr "    URL パス要素 ``{path}`` に関する情報を表示します。"
+
+msgid ""
+"    If ``path`` is a directory, information about the entries in that\n"
+"    directory will be rendered. This form is equivalent to the ``manifest``\n"
+"    handler."
+msgstr ""
+"    ``{path}`` がディレクトリ相当の場合、 配下の要素一覧が表示されます。\n"
+"    この形式は ``manifest`` 機能と同等です。"
+
+msgid ""
+"    If ``path`` is a file, information about that file will be shown via\n"
+"    the ``filerevision`` template."
+msgstr ""
+"    ``{path}`` がファイル相当の場合、 ファイル自体の情報を\n"
+"    ``filerevision`` テンプレートを使って表示します。"
+
+msgid ""
+"    If ``path`` is not defined, information about the root directory will\n"
+"    be rendered."
+msgstr ""
+"    ``{path}`` 部分が無指定の場合、 ルートディレクトリ指定とみなされます。"
+
+msgid ""
+"\n"
+"    /changelog[/{revision}]\n"
+"    -----------------------"
+msgstr ""
+"\n"
+"    /changelog[/{revision}]\n"
+"    -----------------------"
+
+msgid "    Show information about multiple changesets."
+msgstr "    リビジョン情報の表示。"
+
+msgid ""
+"    If the optional ``revision`` URL argument is absent, information about\n"
+"    all changesets starting at ``tip`` will be rendered. If the "
+"``revision``\n"
+"    argument is present, changesets will be shown starting from the "
+"specified\n"
+"    revision."
+msgstr ""
+"    ``{revision}`` 省略時は、 ``tip`` 以前のリビジョンを一覧表示します。\n"
+"    それ以外の場合、 指定リビジョン以前のリビジョンを一覧表示します。"
+
+msgid ""
+"    If ``revision`` is absent, the ``rev`` query string argument may be\n"
+"    defined. This will perform a search for changesets."
+msgstr ""
+"    ``{revision}`` 省略時に、 クエリ文字列引数 ``rev`` が指定された場合、\n"
+"    その値を使ってリビジョンの検索が実施されます。"
+
+msgid ""
+"    The argument for ``rev`` can be a single revision, a revision set,\n"
+"    or a literal keyword to search for in changeset data (equivalent to\n"
+"    :hg:`log -k`)."
+msgstr ""
+"    クエリ文字列引数 ``rev`` には、 単一の識別子、 revset 記述または、\n"
+"    単一の検索キーワード (:hg:`log -k` 相当) が指定可能です。"
+
+msgid ""
+"    The ``revcount`` query string argument defines the maximum numbers of\n"
+"    changesets to render."
+msgstr ""
+"    クエリ文字列引数 ``revcount`` で、 読み込みの最大数を指定できます。"
+
+msgid "    For non-searches, the ``changelog`` template will be rendered."
+msgstr ""
+"    検索以外での表示形式には、 ``changelog`` テンプレートを使用します。"
+
+msgid ""
+"\n"
+"    /shortlog\n"
+"    ---------"
+msgstr ""
+"\n"
+"    /shortlog\n"
+"    ---------"
+
+msgid "    Show basic information about a set of changesets."
+msgstr "    基本的なリビジョン情報の表示。"
+
+msgid ""
+"    This accepts the same parameters as the ``changelog`` handler. The only\n"
+"    difference is the ``shortlog`` template will be rendered instead of the\n"
+"    ``changelog`` template."
+msgstr ""
+"    この処理は ``changelog`` 機能と同様の引数を受理します。 ``changelog``\n"
+"    機能との違いは、 結果出力の際に ``changelog`` テンプレートではなく、\n"
+"    ``shortlog`` テンプレートを使用する点です。"
+
+msgid ""
+"\n"
+"    /changeset[/{revision}]\n"
+"    -----------------------"
+msgstr ""
+"\n"
+"    /changeset[/{revision}]\n"
+"    -----------------------"
+
+msgid "    Show information about a single changeset."
+msgstr "    指定リビジョンの情報の表示。"
+
+msgid ""
+"    A URL path argument is the changeset identifier to show. See ``hg help\n"
+"    revisions`` for possible values. If not defined, the ``tip`` changeset\n"
+"    will be shown."
+msgstr ""
+"    URL の ``{revision}`` 部分は、 表示対象リビジョンの識別用の情報です。\n"
+"    指定可能な識別情報の詳細は :hg:`help revisions` を参照してください。\n"
+"    ``{revision}`` 省略時は、 ``tip`` 指定とみなされます。"
+
+msgid ""
+"    The ``changeset`` template is rendered. Contents of the "
+"``changesettag``,\n"
+"    ``changesetbookmark``, ``filenodelink``, ``filenolink``, and the many\n"
+"    templates related to diffs may all be used to produce the output."
+msgstr ""
+"    結果出力には ``changeset`` テンプレートを使用します。 この表示は、\n"
+"    ``changesettag``, ``changesetbookmark``, ``filenodelink``\n"
+"    ``filenolink`` および差分表示に関するテンプレート出力から構成されます。"
+
+msgid ""
+"\n"
+"    /manifest[/{revision}[/{path}]]\n"
+"    -------------------------------"
+msgstr ""
+"\n"
+"    /manifest[/{revision}[/{path}]]\n"
+"    -------------------------------"
+
+msgid "    Show information about a directory."
+msgstr "    ディレクトリ情報の表示。"
+
+msgid ""
+"    If the URL path arguments are omitted, information about the root\n"
+"    directory for the ``tip`` changeset will be shown."
+msgstr ""
+"    URL での引数指定がない場合、 ルートディレクトリ配下の ``tip``\n"
+"    における要素一覧を表示します。"
+
+msgid ""
+"    Because this handler can only show information for directories, it\n"
+"    is recommended to use the ``file`` handler instead, as it can handle "
+"both\n"
+"    directories and files."
+msgstr ""
+"    ``manifest`` はディレクトリ表示専用なので、 ファイル/ディレクトリの、\n"
+"    両方に対応できる ``file`` 機能の使用をお勧めします。"
+
+msgid "    The ``manifest`` template will be rendered for this handler."
+msgstr "    結果出力には ``manifest`` テンプレートを使用します。"
+
+msgid ""
+"\n"
+"    /tags\n"
+"    -----"
+msgstr ""
+"\n"
+"    /tags\n"
+"    -----"
+
+msgid "    Show information about tags."
+msgstr "    タグ情報の表示。"
+
+msgid "    No arguments are accepted."
+msgstr "    指定可能な引数はありません。"
+
+msgid "    The ``tags`` template is rendered."
+msgstr "    結果出力には ``tags`` テンプレートを使用します。"
+
+msgid ""
+"\n"
+"    /bookmarks\n"
+"    ----------"
+msgstr ""
+"\n"
+"    /bookmarks\n"
+"    ----------"
+
+msgid "    Show information about bookmarks."
+msgstr "    ブックマーク情報の表示。"
+
+msgid "    The ``bookmarks`` template is rendered."
+msgstr "    結果出力には ``bookmarks`` テンプレートを使用します。"
+
+msgid ""
+"\n"
+"    /branches\n"
+"    ---------"
+msgstr ""
+"\n"
+"    /branches\n"
+"    ---------"
+
+msgid "    Show information about branches."
+msgstr "    名前付きブランチ情報の表示。"
+
+msgid ""
+"    All known branches are contained in the output, even closed branches."
+msgstr "    名前付きブランチを一覧表示します (閉鎖済みのものも含む)"
+
+msgid "    The ``branches`` template is rendered."
+msgstr "    結果出力には ``branches`` テンプレートを使用します。"
+
+msgid ""
+"\n"
+"    /summary\n"
+"    --------"
+msgstr ""
+"\n"
+"    /summary\n"
+"    --------"
+
+msgid "    Show a summary of repository state."
+msgstr "    リポジトリの概要情報の表示"
+
+msgid ""
+"    Information about the latest changesets, bookmarks, tags, and branches\n"
+"    is captured by this handler."
+msgstr ""
+"    履歴、 ブックマーク、 タグおよびブランチの最新情報を表示します。\n"
+"    (※ 訳注: デフォルトの表示スタイル paper は ``summary`` 未対応です)"
+
+msgid "    The ``summary`` template is rendered."
+msgstr "    結果出力には ``summary`` テンプレートを使用します。"
+
+msgid ""
+"\n"
+"    /diff/{revision}/{path}\n"
+"    -----------------------"
+msgstr ""
+"\n"
+"    /diff/{revision}/{path}\n"
+"    -----------------------"
+
+msgid "    Show how a file changed in a particular commit."
+msgstr "    指定リビジョンでの変更内容の表示。"
+
+msgid "    The ``filediff`` template is rendered."
+msgstr "    結果出力には ``filediff`` テンプレートを使用します。"
+
+msgid ""
+"    This hander is registered under both the ``/diff`` and ``/filediff``\n"
+"    paths. ``/diff`` is used in modern code."
+msgstr ""
+"    この機能は ``/diff`` と ``/filediff`` の両方の URL で利用可能です。\n"
+"    新しい実装では主に ``/diff`` を利用しています。"
+
+msgid ""
+"\n"
+"    /comparison/{revision}/{path}\n"
+"    -----------------------------"
+msgstr ""
+"\n"
+"    /comparison/{revision}/{path}\n"
+"    -----------------------------"
+
+msgid ""
+"    Show a comparison between the old and new versions of a file from "
+"changes\n"
+"    made on a particular revision."
+msgstr "    指定リビジョンにおける、 対象ファイルの変更内容の表示。"
+
+msgid ""
+"    This is similar to the ``diff`` handler. However, this form features\n"
+"    a split or side-by-side diff rather than a unified diff."
+msgstr ""
+"    この機能と ``diff`` 機能の違いは、 表示形式の side-by-side (※ 訳注:\n"
+"    変更前後の内容を、 左右に表示) と unified diff の差です。"
+
+msgid ""
+"    The ``context`` query string argument can be used to control the lines "
+"of\n"
+"    context in the diff."
+msgstr ""
+"    クエリ文字列引数 ``context`` で、 差分コンテキスト行数を指定できます。"
+
+msgid "    The ``filecomparison`` template is rendered."
+msgstr "    結果出力には ``filecomparison`` テンプレートを使用します。"
 
 #, python-format
 msgid "(binary file %s, hash: %s)"
 msgstr "(バイナリファイル %s, ハッシュ値: %s)"
 
+msgid ""
+"\n"
+"    /annotate/{revision}/{path}\n"
+"    ---------------------------"
+msgstr ""
+"\n"
+"    /annotate/{revision}/{path}\n"
+"    ---------------------------"
+
+msgid "    Show changeset information for each line in a file."
+msgstr "    ファイル各行の由来リビジョンの表示。"
+
+msgid "    The ``fileannotate`` template is rendered."
+msgstr "    結果出力には ``fileannotate`` テンプレートを使用します。"
+
+msgid ""
+"\n"
+"    /filelog/{revision}/{path}\n"
+"    --------------------------"
+msgstr ""
+"\n"
+"    /filelog/{revision}/{path}\n"
+"    --------------------------"
+
+msgid "    Show information about the history of a file in the repository."
+msgstr "    指定ファイルの履歴の表示。"
+
+msgid ""
+"    The ``revcount`` query string argument can be defined to control the\n"
+"    maximum number of entries to show."
+msgstr ""
+"    クエリ文字列引数 ``revcount`` で、 読み込みの最大数を指定できます。"
+
+msgid "    The ``filelog`` template will be rendered."
+msgstr "    結果出力には ``filelog`` テンプレートを使用します。"
+
+msgid ""
+"\n"
+"    /archive/{revision}.{format}[/{path}]\n"
+"    -------------------------------------"
+msgstr ""
+"\n"
+"    /archive/{revision}.{format}[/{path}]\n"
+"    -------------------------------------"
+
+msgid "    Obtain an archive of repository content."
+msgstr "    特定リビジョン時点の内容のアーカイブでの取得。"
+
+msgid ""
+"    The content and type of the archive is defined by a URL path parameter.\n"
+"    ``format`` is the file extension of the archive type to be generated. e."
+"g.\n"
+"    ``zip`` or ``tar.bz2``. Not all archive types may be allowed by your\n"
+"    server configuration."
+msgstr ""
+"    アーカイブの内容や種別は、 URL パス要素で指定します。 ``{format}``\n"
+"    にはアーカイブのファイル拡張子を指定します (例: ``zip``, ``tar.bz2``\n"
+"    )。 利用可能な種別は、 サーバ設定により異なります。"
+
+msgid ""
+"    The optional ``path`` URL parameter controls content to include in the\n"
+"    archive. If omitted, every file in the specified revision is present in "
+"the\n"
+"    archive. If included, only the specified file or contents of the "
+"specified\n"
+"    directory will be included in the archive."
+msgstr ""
+"    URL パス要素 ``{path}`` は、 アーカイブ対象ファイルを指定します。\n"
+"    省略時は、 当該リビジョン時点の管理対象ファイル全てが格納されます。\n"
+"    ``{path}`` 指定時は、 当該ファイル (ディレクトリ指定時は、\n"
+"    当該ディレクトリ配下のファイル) のみがアーカイブされます。"
+
+msgid ""
+"    No template is used for this handler. Raw, binary content is generated."
+msgstr ""
+"    この処理の結果出力では、 テンプレートを使用しません。\n"
+"    アーカイブ内容そのままが出力されます。"
+
+msgid ""
+"\n"
+"    /graph[/{revision}]\n"
+"    -------------------"
+msgstr ""
+"\n"
+"    /graph[/{revision}]\n"
+"    -------------------"
+
+msgid "    Show information about the graphical topology of the repository."
+msgstr "    履歴情報のグラフ表示。"
+
+msgid ""
+"    Information rendered by this handler can be used to create visual\n"
+"    representations of repository topology."
+msgstr "    この機能は、 履歴の木構造をグラフで描画します。"
+
+msgid "    The ``revision`` URL parameter controls the starting changeset."
+msgstr "    URL パス要素 ``{revision}`` で、表示開始リビジョンを指定できます。"
+
+msgid ""
+"    The ``revcount`` query string argument can define the number of "
+"changesets\n"
+"    to show information for."
+msgstr ""
+"    クエリ文字列引数 ``revcount`` で、 読み込みの最大数を指定できます。"
+
+msgid "    This handler will render the ``graph`` template."
+msgstr "    結果出力には ``graph`` テンプレートを使用します。"
+
+msgid ""
+"\n"
+"    /help[/{topic}]\n"
+"    ---------------"
+msgstr ""
+"\n"
+"    /help[/{topic}]\n"
+"    ---------------"
+
+msgid "    Render help documentation."
+msgstr "    ヘルプドキュメントの表示。"
+
+msgid ""
+"    This web command is roughly equivalent to :hg:`help`. If a ``topic``\n"
+"    is defined, that help topic will be rendered. If not, an index of\n"
+"    available help topics will be rendered."
+msgstr ""
+"    この機能は :hg:`help` とおおむね同等です。 URL パス要素 ``{topic}``\n"
+"    が指定された場合は、 当該トピックのヘルプが表示されます。\n"
+"    それ以外の場合は、 トピックの一覧が表示されます。"
+
+msgid ""
+"    The ``help`` template will be rendered when requesting help for a "
+"topic.\n"
+"    ``helptopics`` will be rendered for the index of help topics."
+msgstr ""
+"    特定トピックの表示には ``help`` テンプレートを使用します。\n"
+"    トピック一覧の表示には ``helptopics`` テンプレートを使用します。"
+
 #, python-format
 msgid " %d files changed, %d insertions(+), %d deletions(-)\n"
 msgstr " 更新ファイル数 %d、 追加 %d 行(+)、 削除 %d 行(-)\n"
@@ -24534,6 +25412,10 @@
 msgstr ".hg/sharedpath の参照先 %s は存在しません"
 
 #, python-format
+msgid "obsolete feature not enabled but %i markers found!\n"
+msgstr "obsolete 機能は無効ですが、 %i 個の廃止情報マーカが存在します!\n"
+
+#, python-format
 msgid "warning: ignoring unknown working parent %s!\n"
 msgstr "警告: 作業領域の親 '%s' が未知のリビジョンです!\n"
 
@@ -24752,6 +25634,10 @@
 msgstr "'\\n' と '\\r' はファイル名で使用しないでください: %r"
 
 #, python-format
+msgid "unable to read file list (%s)"
+msgstr "一覧ファイル(%s)が読み込めません"
+
+#, python-format
 msgid "invalid pattern (%s): %s"
 msgstr "不正パターン (%s): %s"
 
@@ -24759,10 +25645,6 @@
 msgstr "不正パターン"
 
 #, python-format
-msgid "unable to read file list (%s)"
-msgstr "一覧ファイル(%s)が読み込めません"
-
-#, python-format
 msgid "diff context lines count must be an integer, not %r"
 msgstr "差分コンテキストでの行数指定が不正です: %r"
 
@@ -24793,6 +25675,9 @@
 msgid "note: merging %s and %s using bids from ancestors %s\n"
 msgstr "備考: 以下の祖先の評価選考を元に %s と %s をマージ中: %s\n"
 
+msgid " and "
+msgstr " と "
+
 #, python-format
 msgid ""
 "\n"
@@ -24843,10 +25728,6 @@
 msgid "use 'hg status' to list changes"
 msgstr "変更一覧は 'hg status' で確認できます"
 
-#, python-format
-msgid "uncommitted changes in subrepository '%s'"
-msgstr "サブリポジトリ '%s' の変更が未コミットです"
-
 msgid "commit and merge, or update --clean to discard changes"
 msgstr "コミット後にマージするか、変更を破棄 (update --clean) してください"
 
@@ -25011,6 +25892,63 @@
 msgid "Hunk #%d FAILED at %d\n"
 msgstr "差分 #%d の適用失敗:%d 行目\n"
 
+msgid "this modifies a binary file (all or nothing)\n"
+msgstr "これはバイナリファイルに対する変更です(部分的な選択は不可能)\n"
+
+msgid "this is a binary file\n"
+msgstr "これはバイナリファイルです\n"
+
+#, python-format
+msgid "%d hunks, %d lines changed\n"
+msgstr "%d 個の差分、 %d 行の変更\n"
+
+msgid ""
+"[Ynesfdaq?]$$ &Yes, record this change$$ &No, skip this change$$ &Edit this "
+"change manually$$ &Skip remaining changes to this file$$ Record remaining "
+"changes to this &file$$ &Done, skip remaining changes and files$$ Record "
+"&all changes to all remaining files$$ &Quit, recording no changes$$ &? "
+"(display help)"
+msgstr ""
+"[Ynesfdaq?]$$ この変更を記録(&yes)$$ この変更を無視(&no)$$ この変更を手動で編"
+"集(&edit)$$ 同一ファイルの以後の全ての変更を無視(&skip)$$ 同一ファイル(&file)"
+"の以後の全ての変更を記録$$ 以後の全ての変更を無視=記録作業を完了(&done)$$ 以"
+"後の全て(&all)の変更を記録$$ 変更の記録自体を中止(&quit)$$ ヘルプ表示(&?)"
+
+msgid ""
+"\n"
+"To remove '-' lines, make them ' ' lines (context).\n"
+"To remove '+' lines, delete them.\n"
+"Lines starting with # will be removed from the patch."
+msgstr ""
+"\n"
+"'-' 行の削除は、行の ' ' (コンテキスト行)化で行います。\n"
+"'+' 行の削除は、行自体の削除で行います。\n"
+"'#' で始まる行は、パッチから除外されます。"
+
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be\n"
+"added to the record list. If it does not apply cleanly, a rejects\n"
+"file will be generated: you can use that when you try again. If\n"
+"all lines of the hunk are removed, then the edit is aborted and\n"
+"the hunk is left unchanged.\n"
+msgstr ""
+"パッチ適用が成功した場合、 編集後の差分は、 記録対象に追加されます。\n"
+"適用が失敗した場合、 却下差分はファイルに保存されます。 再試行の際は、\n"
+"このファイルを利用可能です。 差分の全行が削除された場合、\n"
+"編集作業は中止され、差分はそのまま維持されます。\n"
+
+#, python-format
+msgid "examine changes to %s?"
+msgstr "%s の変更点を調べますか?"
+
+#, python-format
+msgid "record this change to '%s'?"
+msgstr "この変更を '%s' に記録しますか?"
+
+#, python-format
+msgid "record change %d/%d to '%s'?"
+msgstr "この変更 (%d 件目 / %d 件中) を '%s' に記録しますか?"
+
 #, python-format
 msgid "bad hunk #%d"
 msgstr "不正な差分: #%d"
@@ -25115,8 +26053,8 @@
 msgstr "シグナル %d で強制終了されました"
 
 #, python-format
-msgid "unknown strip-bundle2-version value %r; "
-msgstr ""
+msgid "unknown strip-bundle2-version value %r; should be one of %r\n"
+msgstr "strip-bundle2-version 値 %r は未知の値です; 使用可能候補は %r\n"
 
 #, python-format
 msgid "saved backup bundle to %s\n"
@@ -25199,7 +26137,11 @@
 
 #, python-format
 msgid "node %s is not censored"
-msgstr ""
+msgstr "ノード %s は検閲対象ではありません"
+
+#, python-format
+msgid "syntax error in revset '%s'"
+msgstr "revset 記述 '%s' での文法エラー"
 
 #, python-format
 msgid "at %s: %s"
@@ -25584,7 +26526,8 @@
 
 msgid ""
 "``follow([file])``\n"
-"    An alias for ``::.`` (ancestors of the working copy's first parent).\n"
+"    An alias for ``::.`` (ancestors of the working directory's first "
+"parent).\n"
 "    If a filename is specified, the history of the given file is followed,\n"
 "    including copies."
 msgstr ""
@@ -26138,6 +27081,19 @@
 msgid "unknown sort key %r"
 msgstr "未知の整列方式 %r"
 
+msgid ""
+"``subrepo([pattern])``\n"
+"    Changesets that add, modify or remove the given subrepo.  If no subrepo\n"
+"    pattern is named, any subrepo changes are returned."
+msgstr ""
+"``subrepo([pattern])``\n"
+"    指定サブリポジトリの追加、変更または削除を行ったリビジョン。\n"
+"    パターン指定がない場合は、 サブリポジトリになんらかの変更を行った、\n"
+"    全てのリビジョンが列挙されます。"
+
+msgid "subrepo requires a pattern"
+msgstr "subrepo にはパターン指定が必要です"
+
 #, python-format
 msgid "invalid regular expression: %s"
 msgstr "不正な正規表現: %s"
@@ -26195,6 +27151,10 @@
 "    ユーザ名そのものが `re:` で始まる場合は、 ユーザ名を `literal:`\n"
 "    付きで指定してください。"
 
+#. i18n: "wdir" is a keyword
+msgid "wdir takes no arguments"
+msgstr "wdir には引数が指定できません"
+
 msgid "can't negate that"
 msgstr "負値にできません"
 
@@ -26432,16 +27392,16 @@
 msgstr "(サブリポジトリ %s で発生)"
 
 #, python-format
-msgid "warning: subrepo spec file %s not found\n"
-msgstr "警告: サブリポジトリの spec ファイル %s が見つかりません\n"
-
-#, python-format
-msgid "subrepo spec file %s not found"
-msgstr "サブリポジトリの spec ファイル %s が見つかりません"
-
-#, python-format
-msgid "invalid subrepository revision specifier in .hgsubstate line %d"
-msgstr ".hgsubstate の %d 行目におけるサブリポジトリのリビジョン指定が不正です"
+msgid "warning: subrepo spec file '%s' not found\n"
+msgstr "警告: サブリポジトリの spec ファイル '%s' が見つかりません\n"
+
+#, python-format
+msgid "subrepo spec file '%s' not found"
+msgstr "サブリポジトリの spec ファイル '%s' が見つかりません"
+
+#, python-format
+msgid "invalid subrepository revision specifier in '%s' line %d"
+msgstr "'%s' の %d 行目におけるサブリポジトリのリビジョン指定が不正です"
 
 #, python-format
 msgid "bad subrepository pattern in %s: %s"
@@ -26518,6 +27478,10 @@
 msgid "warning: changes are committed in %s phase from subrepository %s\n"
 msgstr "警告: %s フェーズでコミットします(サブリポジトリ %s に追従)\n"
 
+#, python-format
+msgid "uncommitted changes in subrepository '%s'"
+msgstr "サブリポジトリ '%s' の変更が未コミットです"
+
 msgid "addremove is not supported"
 msgstr "addremove はサポートされていません"
 
@@ -26639,9 +27603,6 @@
 msgid "node '%s' is not well formed"
 msgstr "'%s' というノードはフォーマットが不適切です"
 
-msgid ".hg/cache/tags is corrupt, rebuilding it\n"
-msgstr ".hg/cache/tags が無効なため再構築中\n"
-
 msgid ""
 ":addbreaks: Any text. Add an XHTML \"<br />\" tag before the end of\n"
 "    every line except the last."
@@ -26741,6 +27702,9 @@
 msgid ":localdate: Date. Converts a date to local date."
 msgstr ":localdate: 日時情報。 日時情報をローカルタイムゾーンに変換します。"
 
+msgid ":lower: Any text. Converts the text to lowercase."
+msgstr ":lower: 文字列。 文字列を小文字に変換します。"
+
 msgid ":nonempty: Any text. Returns '(none)' if the string is empty."
 msgstr ":nonempty: 文字列。 与えられた文字列が空の場合 '(none)'となります。"
 
@@ -26844,6 +27808,9 @@
 "    except the first starting with a tab character."
 msgstr ":tabindent: 文字列。 最初の行以外の非空行をタブ文字で字下げします。"
 
+msgid ":upper: Any text. Converts the text to uppercase."
+msgstr ":upper: 文字列。 文字列を大文字に変換します。"
+
 msgid ""
 ":urlescape: Any text. Escapes all \"special\" characters. For example,\n"
 "    \"foo bar\" becomes \"foo%20bar\"."
@@ -27028,14 +27995,35 @@
 msgid "filter %s expects one argument"
 msgstr "フィルタ %s は引数が1つ必要です"
 
+msgid ""
+":date(date[, fmt]): Format a date. See :hg:`help dates` for formatting\n"
+"    strings."
+msgstr ""
+":date(date[, fmt]): 日付を文字列化します。 文字列化フォーマットの詳細は\n"
+"    :hg:`help dates` を参照してください"
+
 #. i18n: "date" is a keyword
 msgid "date expects one or two arguments"
 msgstr "date の引数は1つまたは2つです"
 
+msgid ""
+":diff([includepattern [, excludepattern]]): Show a diff, optionally\n"
+"    specifying files to include or exclude."
+msgstr ""
+":diff([includepattern [, excludepattern]]): 差分を表示します。\n"
+"    表示対象/除外対象ファイルのパターンを指定が可能です。"
+
 #. i18n: "diff" is a keyword
 msgid "diff expects one, two or no arguments"
 msgstr "diff の引数は最大2つです"
 
+msgid ""
+":fill(text[, width[, initialident[, hangindent]]]): Fill many\n"
+"    paragraphs with optional indentation. See the \"fill\" filter."
+msgstr ""
+":fill(text[, width[, initialident[, hangindent]]]): 指定の字下げ形式で、\n"
+"    パラグラフ群を字下げします。 \"fill\" フィルタも参照してください。"
+
 #. i18n: "fill" is a keyword
 msgid "fill expects one to four arguments"
 msgstr "fill の引数は1つから4つの間です"
@@ -27044,10 +28032,25 @@
 msgid "fill expects an integer width"
 msgstr "fill には数値を指定してください"
 
+msgid ""
+":pad(text, width[, fillchar=' '[, right=False]]): Pad text with a\n"
+"    fill character."
+msgstr ""
+":pad(text, width[, fillchar=' '[, right=False]]): fillchar 文字で\n"
+"    text を width 幅に字詰めします。"
+
 #. i18n: "pad" is a keyword
 msgid "pad() expects two to four arguments"
 msgstr "pad() の引数は2つから4つの間です"
 
+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."
+msgstr ""
+":get(dict, key): dict から key 相当の情報を取得します。 この関数により、\n"
+"    複雑な形式を持つオブジェクトから、 情報を取得することができます。"
+
 #. i18n: "get" is a keyword
 msgid "get() expects two arguments"
 msgstr "get() の引数は2つです"
@@ -27056,46 +28059,116 @@
 msgid "get() expects a dict as first argument"
 msgstr "get() の第1引数には辞書を指定してください"
 
+msgid ""
+":if(expr, then[, else]): Conditionally execute based on the result of\n"
+"    an expression."
+msgstr ""
+":if(expr, then[, else]): expr 結果に応じて then または else を実施します。"
+
 #. i18n: "if" is a keyword
 msgid "if expects two or three arguments"
 msgstr "if は2または3の引数が必要です"
 
+msgid ""
+":ifcontains(search, thing, then[, else]): Conditionally execute based\n"
+"    on whether the item \"search\" is in \"thing\"."
+msgstr ""
+":ifcontains(search, thing, then[, else]): \"search\" 結果が \"thing\"\n"
+"    に含まれるか否かに応じて then または else を実施します。"
+
 #. i18n: "ifcontains" is a keyword
 msgid "ifcontains expects three or four arguments"
 msgstr "ifcontains は3または4の引数が必要です"
 
+msgid ""
+":ifeq(expr1, expr2, then[, else]): Conditionally execute based on\n"
+"    whether 2 items are equivalent."
+msgstr ""
+":ifeq(expr1, expr2, then[, else]): expr1 と expr2 の一致状況に応じて\n"
+"    then または else を実施します。"
+
 #. i18n: "ifeq" is a keyword
 msgid "ifeq expects three or four arguments"
 msgstr "ifeq は3または4の引数が必要です"
 
+msgid ":join(list, sep): Join items in a list with a delimiter."
+msgstr ":join(list, sep): list 中の要素を sep で連結します。"
+
 #. i18n: "join" is a keyword
 msgid "join expects one or two arguments"
 msgstr "join の引数は1つまたは2つです"
 
+msgid ""
+":label(label, expr): Apply a label to generated content. Content with\n"
+"    a label applied can result in additional post-processing, such as\n"
+"    automatic colorization."
+msgstr ""
+":label(label, expr): expr の結果出力に label を付与します。\n"
+"    label の付与は、 表示への色付け等の、 出力加工処理で使用されます。"
+
+msgid ""
+":revset(query[, formatargs...]): Execute a revision set query. See\n"
+"    :hg:`help revset`."
+msgstr ""
+":revset(query[, formatargs...]): revset 記述による問い合わせを実行します。\n"
+"    詳細は :hg:`help revset` を参照してください。"
+
 #. i18n: "revset" is a keyword
 msgid "revset expects one or more arguments"
 msgstr "revset の引数は1つまたは2つです"
 
+msgid ":rstdoc(text, style): Format ReStructuredText."
+msgstr ":rstdoc(text, style): 出力を ReStructuredText として整形します。"
+
 #. i18n: "rstdoc" is a keyword
 msgid "rstdoc expects two arguments"
 msgstr "rstdoc の引数は2つです"
 
+msgid ""
+":shortest(node, minlength=4): Obtain the shortest representation of\n"
+"    a node."
+msgstr ""
+":shortest(node, minlength=4): node リビジョンを特定可能な、\n"
+"    最短のハッシュ値識別子を算出します。"
+
 #. i18n: "shortest" is a keyword
 msgid "shortest() expects one or two arguments"
 msgstr "shortest() の引数は1つまたは2つです"
 
+msgid ":strip(text[, chars]): Strip characters from a string."
+msgstr ""
+":strip(text[, chars]): chars 中の文字を text 両端から除外します。\n"
+"    (※ 訳注: chars 無指定の場合は、 空白文字を除外)"
+
 #. i18n: "strip" is a keyword
 msgid "strip expects one or two arguments"
 msgstr "strip の引数は1つまたは2つです"
 
+msgid ""
+":sub(pattern, replacement, expression): Perform text substitution\n"
+"    using regular expressions."
+msgstr ""
+":sub(pattern, replacement, expression): 正規表現により文字列を置換します。"
+
 #. i18n: "sub" is a keyword
 msgid "sub expects three arguments"
 msgstr "sub は引数が3つ必要です"
 
+msgid ""
+":startswith(pattern, text): Returns the value from the \"text\" argument\n"
+"    if it begins with the content from the \"pattern\" argument."
+msgstr ""
+":startswith(pattern, text): text 冒頭が pattern と一致する場合は text を、\n"
+"    それ以外の場合は空白文字を返却します。"
+
 #. i18n: "startswith" is a keyword
 msgid "startswith expects two arguments"
 msgstr "startswith の引数は2つです"
 
+msgid ":word(number, text[, separator]): Return the nth word from a string."
+msgstr ""
+":word(number, text[, separator]): text の冒頭 number 個の単語を抽出します。"
+
 #. i18n: "word" is a keyword
 #, python-format
 msgid "word expects two or three arguments, got %d"
@@ -27152,7 +28225,7 @@
 msgstr "ジャーナルファイル中のエントリ %r の解析に失敗\n"
 
 msgid "journal was created by a different version of Mercurial\n"
-msgstr "ジャーナルファイルは異なる版の mercurial で作成されたものです\n"
+msgstr "ジャーナルファイルは異なる版の Mercurial で作成されたものです\n"
 
 msgid "already have changeset "
 msgstr "既にあるリビジョンです "
@@ -27250,6 +28323,12 @@
 msgid "command '%s' failed: %s"
 msgstr "コマンド '%s' が失敗: %s"
 
+msgid "linking"
+msgstr "ハードリンク中"
+
+msgid "copying"
+msgstr "コピー中"
+
 msgid "filename ends with '\\', which is invalid on Windows"
 msgstr "ファイル名の末尾が、 Windows 上で不正な文字 '\\' です"
 
@@ -27540,7 +28619,7 @@
 msgstr "展開後サイズ %s は想定外です(期待値:%s)"
 
 msgid "censored file data"
-msgstr ""
+msgstr "検閲対象ファイル"
 
 #, python-format
 msgid "unpacking %s"
--- a/i18n/pt_BR.po	Thu Apr 16 20:56:43 2015 -0500
+++ b/i18n/pt_BR.po	Fri May 01 17:21:10 2015 -0500
@@ -31,10 +31,10 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2015-01-18 11:13-0200\n"
-"PO-Revision-Date: 2015-01-18 11:15-0200\n"
+"POT-Creation-Date: 2015-04-22 23:06-0300\n"
+"PO-Revision-Date: 2015-04-22 23:07-0300\n"
 "Last-Translator: Wagner Bruna <wbruna@softwareexpress.com.br>\n"
-"Language-Team: en_US <>\n"
+"Language-Team: Brazilian Portuguese <>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -1242,6 +1242,121 @@
 msgid "Bugzilla error: %s"
 msgstr "Erro do Bugzilla: %s"
 
+msgid "erase file content at a given revision"
+msgstr "apaga conteúdo de arquivos na revisão pedida"
+
+msgid ""
+"The censor command instructs Mercurial to erase all content of a file at a given\n"
+"revision *without updating the changeset hash.* This allows existing history to\n"
+"remain valid while preventing future clones/pulls from receiving the erased\n"
+"data."
+msgstr ""
+"O comando censor faz com que o Mercurial apague o conteúdo de um\n"
+"arquivo em uma determinada revisão *sem alterar o hash da revisão*.\n"
+"Isso impede que clones ou pulls futuros recebam os dados apagados\n"
+"sem a necessidade de invalidar o histórico existente."
+
+msgid ""
+"Typical uses for censor are due to security or legal requirements, "
+"including::"
+msgstr ""
+"Usos típicos do comando censor envolvem exigências legais ou de segurança, "
+"incluindo::"
+
+msgid ""
+" * Passwords, private keys, crytographic material\n"
+" * Licensed data/code/libraries for which the license has expired\n"
+" * Personally Identifiable Information or other private data"
+msgstr ""
+" * Senhas, chaves privadas, material criptográfico\n"
+" * Código, bibliotecas ou dados licenciados cuja licença expirou\n"
+" * Informações Pessoalmente Identificáveis (PII) ou outros dados privados"
+
+msgid ""
+"Censored file revisions are listed in a tracked file called .hgcensored stored\n"
+"in the repository root. The censor command adds an entry to the .hgcensored file\n"
+"in the working directory and commits it (much like ``hg tag`` and .hgtags). The\n"
+"censored file data is then replaced with a pointer to the new commit, enabling\n"
+"verification."
+msgstr ""
+"Revisões de arquivo censuradas são listadas em um arquivo rastreado\n"
+"chamado .hgcensored, armazenado no raiz do repositório. O comando\n"
+"censor adiciona uma entrada ao arquivo .hgcensored e o consolida\n"
+"(de forma bastante similar a ``hg tag`` e .hgtags). Os dados do arquivo\n"
+"censurado são então substituídos por um ponteiro para a nova revisão,\n"
+"possibilitando verificação."
+
+msgid ""
+"Censored nodes can interrupt mercurial's typical operation whenever the excised\n"
+"data needs to be materialized. Some commands, like ``hg cat``/``hg revert``,\n"
+"simply fail when asked to produce censored data. Others, like ``hg verify`` and\n"
+"``hg update``, must be capable of tolerating censored data to continue to\n"
+"function in a meaningful way. Such commands only tolerate censored file\n"
+"revisions if they are allowed by the policy specified by the \"censor.allow\"\n"
+"config option.\n"
+msgstr ""
+"Nós censurados podem interromper a operação típica do Mercurial\n"
+"a qualquer momento em que os dados extirpados precisarem ser\n"
+"materializados. Alguns comandos, como ``hg cat`` e ``hg revert``,\n"
+"simplesmente falham se dados censurados forem solicitados.\n"
+"Outros, como ``hg verify`` e ``hg update``, devem ser capazes\n"
+"de tolerar dados censurados para funcionar adequadamente.\n"
+"Tais comandos tolerarão revisões de arquivos censuradas se\n"
+"isso for permitido pela política especificada pela opção de\n"
+"configuração \"censor.allow\".\n"
+
+msgid "REV"
+msgstr "REV"
+
+msgid "censor file from specified revision"
+msgstr "censura o arquivo na revisão especificada"
+
+msgid "TEXT"
+msgstr "TEXTO"
+
+msgid "replacement tombstone data"
+msgstr "dados da \"lápide\" usada para substituição"
+
+msgid "-r REV [-t TEXT] [FILE]"
+msgstr "-r REV [-t TEXTO] [ARQUIVO]"
+
+msgid "must specify file path to censor"
+msgstr "deve ser especificado um caminho para o arquivo a ser censurado"
+
+msgid "must specify revision to censor"
+msgstr "deve ser especificada uma revisão a ser censurada"
+
+msgid "cannot censor file with no history"
+msgstr "não é possível censurar um arquivo sem histórico"
+
+#, python-format
+msgid "invalid revision identifier %s"
+msgstr "identificador de revisão %s inválido"
+
+#, python-format
+msgid "file does not exist at revision %s"
+msgstr "o arquivo não existe na revisão %s"
+
+#, python-format
+msgid "cannot censor file in heads (%s)"
+msgstr "não é possível censurar um arquivo em cabeças (%s)"
+
+msgid "clean/delete and commit first"
+msgstr "limpe ou apague e consolide primeiro"
+
+msgid "cannot censor working directory"
+msgstr "não é possível censurar o diretório de trabalho"
+
+msgid "clean/delete/update first"
+msgstr "limpe, apague ou atualize primeiro"
+
+#, python-format
+msgid "censor does not support revlog version %d"
+msgstr "censor não suporta o revlog na versão %d"
+
+msgid "censor tombstone must be no longer than censored data"
+msgstr "lápide de censura não pode ser maior que os dados censurados"
+
 msgid "command to display child changesets (DEPRECATED)"
 msgstr "comando para exibir revisões filhas (OBSOLETO)"
 
@@ -1252,9 +1367,6 @@
 "Esta extensão é obsoleta. Você deve usar :hg:`log -r\n"
 "\"children(REV)\"` em seu lugar.\n"
 
-msgid "REV"
-msgstr "REV"
-
 msgid "show children of the specified revision"
 msgstr "exibe o filho de uma revisão especifica"
 
@@ -1301,6 +1413,9 @@
 msgid "TEMPLATE"
 msgstr "MODELO"
 
+msgid "template to group changesets (DEPRECATED)"
+msgstr "modelo para agrupar as revisões (OBSOLETO)"
+
 msgid "template to group changesets"
 msgstr "modelo para agrupar as revisões"
 
@@ -1700,7 +1815,7 @@
 "emit codes that less doesn't understand. You can work around this by\n"
 "either using ansi mode (or auto mode), or by using less -r (which will\n"
 "pass through all terminal control codes, not just color control\n"
-"codes).\n"
+"codes)."
 msgstr ""
 "Note que, em alguns sistemas, o modo terminfo pode causar problemas ao\n"
 "usar coloração com a extensão pager e less -R. O comando less com a\n"
@@ -1708,7 +1823,31 @@
 "pode por vezes emitir códigos não suportados pelo comando less.\n"
 "Para evitar esse problema, você pode usar o modo ansi (ou o modo auto)\n"
 "ou o comando less -r (que propagará todos os códigos de terminal, não\n"
-"apenas códigos de controle de cores).\n"
+"apenas códigos de controle de cores)."
+
+msgid ""
+"On some systems (such as MSYS in Windows), the terminal may support\n"
+"a different color mode than the pager (activated via the \"pager\"\n"
+"extension). It is possible to define separate modes depending on whether\n"
+"the pager is active::"
+msgstr ""
+"Em alguns sistemas (por exemplo MSYS no Windows), o terminal pode\n"
+"suportar um modo de coloração diferente do pager (ativado pela \n"
+"extensão \"pager\"). É possível definir modos diferentes dependentes\n"
+"da ativação do pager::"
+
+msgid ""
+"  [color]\n"
+"  mode = auto\n"
+"  pagermode = ansi"
+msgstr ""
+"  [color]\n"
+"  mode = auto\n"
+"  pagermode = ansi"
+
+msgid "If ``pagermode`` is not defined, the ``mode`` will be used.\n"
+msgstr ""
+"Se ``pagermode`` não estiver definido, a configuração ``mode`` será usada.\n"
 
 msgid "no terminfo entry for setab/setaf: reverting to ECMA-48 color\n"
 msgstr ""
@@ -3094,19 +3233,19 @@
 
 msgid ""
 "The extension reads its configuration from a versioned ``.hgeol``\n"
-"configuration file found in the root of the working copy. The\n"
+"configuration file found in the root of the working directory. The\n"
 "``.hgeol`` file use the same syntax as all other Mercurial\n"
 "configuration files. It uses two sections, ``[patterns]`` and\n"
 "``[repository]``."
 msgstr ""
 "A extensão lê sua configuração de um arquivo versionado chamado\n"
-"``.hgeol`` localizado no raiz da cópia de trabalho. O arquivo\n"
+"``.hgeol`` localizado no raiz do diretório de trabalho. O arquivo\n"
 "``.hgeol`` usa a mesma sintaxe que outros arquivos de configuração\n"
 "do Mercurial. Ele usa duas seções, ``[patterns]`` e ``[repository]``."
 
 msgid ""
 "The ``[patterns]`` section specifies how line endings should be\n"
-"converted between the working copy and the repository. The format is\n"
+"converted between the working directory and the repository. The format is\n"
 "specified by a file pattern. The first match is used, so put more\n"
 "specific patterns first. The available line endings are ``LF``,\n"
 "``CRLF``, and ``BIN``."
@@ -3188,10 +3327,10 @@
 
 msgid ""
 "   The rules will first apply when files are touched in the working\n"
-"   copy, e.g. by updating to null and back to tip to touch all files."
+"   directory, e.g. by updating to null and back to tip to touch all files."
 msgstr ""
 "   As regras passarão a ser aplicadas a partir do momento em que os\n"
-"   arquivos forem mexidos na cópia de trabalho, por exemplo após um\n"
+"   arquivos forem mexidos no diretório de trabalho, por exemplo após um\n"
 "   update para null e de volta para a revisão atual para mexer em\n"
 "   todos os arquivos."
 
@@ -3640,10 +3779,11 @@
 "    Devolve 0 para indicar sucesso.\n"
 "    "
 
-msgid "working dir not at branch tip (use \"hg update\" to check out branch tip)"
-msgstr ""
-"o diretório de trabalho não está na tip do ramo (use \"hg update\" para "
-"obter a tip do ramo)"
+msgid "working directory not at branch tip"
+msgstr "diretório de trabalho não está na tip do ramo"
+
+msgid "use \"hg update\" to check out branch tip"
+msgstr "use \"hg update\" para obter a tip do ramo"
 
 msgid "multiple heads in this branch (use \"hg heads .\" and \"hg merge\" to merge)"
 msgstr "múltiplas cabeças nesse ramo (use \"hg heads .\" e \"hg merge\" para mesclar"
@@ -3735,9 +3875,6 @@
 msgid "the key id to sign with"
 msgstr "o id da chave com a qual assinar"
 
-msgid "TEXT"
-msgstr "TEXTO"
-
 msgid "use text as commit message"
 msgstr "usa o texto como mensagem de consolidação"
 
@@ -4041,14 +4178,14 @@
 msgid "diff trees from two commits"
 msgstr "calcula a diferença entre duas revisões"
 
-msgid "hg debug-merge-base REV REV"
-msgstr "hg debug-merge-base REV REV"
+msgid "REV REV"
+msgstr "REV REV"
 
 msgid "output common ancestor information"
 msgstr "exibe informação de ancestral comum"
 
-msgid "hg debug-cat-file [OPTION]... TYPE FILE"
-msgstr "hg debug-cat-file [OPÇÃO]... TIPO ARQUIVO"
+msgid "[OPTION]... TYPE FILE"
+msgstr "[OPÇÃO]... TIPO ARQUIVO"
 
 msgid "cat a specific revision"
 msgstr "copia para a saída uma revisão específica"
@@ -4059,16 +4196,6 @@
 msgid "aborting hg cat-file only understands commits\n"
 msgstr "abortando; hg cat-file entende apenas commits\n"
 
-#. i18n: bisect changeset status
-msgid "ignored"
-msgstr "ignorado"
-
-msgid "hg debug-rev-parse REV"
-msgstr "hg debug-rev-parse REV"
-
-msgid "parse given revisions"
-msgstr "decodifica as revisões dadas"
-
 msgid "header"
 msgstr "cabeçalho"
 
@@ -4084,20 +4211,14 @@
 msgid "print revisions"
 msgstr "imprime as revisões"
 
-msgid "hg debug-config"
-msgstr "hg debug-config"
-
-msgid "print extension options"
-msgstr "imprime opções da extensão"
-
 msgid "NUM"
 msgstr "NÚMERO"
 
 msgid "limit number of changes displayed"
 msgstr "número limite de mudanças exibidas"
 
-msgid "hg view [-l LIMIT] [REVRANGE]"
-msgstr "hg view [-l LIMITE] [SEQUÊNCIADEREVISÕES]"
+msgid "[-l LIMIT] [REVRANGE]"
+msgstr "[-l LIMITE] [SEQUÊNCIADEREVISÕES]"
 
 msgid "start interactive history viewer"
 msgstr "inicia um visualizador de histórico interativo"
@@ -4394,12 +4515,28 @@
 "If you run ``hg histedit --outgoing`` on the clone then it is the same\n"
 "as running ``hg histedit 836302820282``. If you need plan to push to a\n"
 "repository that Mercurial does not detect to be related to the source\n"
-"repo, you can add a ``--force`` option.\n"
+"repo, you can add a ``--force`` option."
 msgstr ""
 "Rodar ``hg histedit --outgoing`` no clone será o mesmo que rodar\n"
 "``hg histedit 836302820282``. Caso você pretenda enviar revisões para\n"
 "um repositório que o Mercurial detectar como não relacionado ao de\n"
-"origem, você pode adicionar uma opção ``--force``.\n"
+"origem, você pode adicionar uma opção ``--force``."
+
+msgid ""
+"Histedit rule lines are truncated to 80 characters by default. You\n"
+"can customise this behaviour by setting a different length in your\n"
+"configuration file::"
+msgstr ""
+"As linhas de edição de histórico são por padrão truncadas em 80\n"
+"caracteres. Você pode personalizar este comportamento definindo\n"
+"um comprimento diferente em seu arquivo de configuração::"
+
+msgid ""
+"  [histedit]\n"
+"  linelen = 120      # truncate rule lines at 120 characters\n"
+msgstr ""
+"  [histedit]\n"
+"  linelen = 120      # trunca linhas de edição em 120 caracteres\n"
 
 #. i18n: command names and abbreviations must remain untranslated
 #, python-format
@@ -4433,6 +4570,10 @@
 msgid "no histedit in progress"
 msgstr "nenhuma edição de histórico em andamento"
 
+#, python-format
+msgid "unknown changeset %s listed"
+msgstr "revisão desconhecida %s listada"
+
 msgid "Fix up the change and run hg histedit --continue"
 msgstr "Conserte a mudança e execute hg histedit --continue"
 
@@ -4448,8 +4589,11 @@
 "Quando tiver terminado, execute hg histedit --continue para retomar."
 
 #, python-format
-msgid "%s: empty changeset"
-msgstr "%s: revisão vazia"
+msgid ""
+"%s: cannot fold - working copy is not a descendant of previous commit %s\n"
+msgstr ""
+"%s: não é possível combinar - a cópia de trabalho não é um descendente da "
+"revisão anterior %s\n"
 
 #, python-format
 msgid "comparing with %s\n"
@@ -4464,12 +4608,15 @@
 msgid "see \"hg help histedit\" for more detail"
 msgstr "veja \"hg help histedit\" para mais detalhes"
 
-msgid "Read history edits from the specified file."
-msgstr "Lê alterações de histórico a partir do arquivo especificado."
+msgid "read history edits from the specified file"
+msgstr "lê alterações de histórico a partir do arquivo especificado"
 
 msgid "continue an edit already in progress"
 msgstr "continua uma edição em andamento"
 
+msgid "edit remaining actions list"
+msgstr "edita a lista de ações restante"
+
 msgid "don't strip old nodes after edit is complete"
 msgstr "não remove nós antigos após o término da edição"
 
@@ -4551,6 +4698,9 @@
 msgid "no arguments allowed with --abort"
 msgstr "--abort não recebe argumentos adicionais"
 
+msgid "only --commands argument allowed with --edit-plan"
+msgstr "só o argumento de --commands pode ser usado com --edit-plan"
+
 msgid "history edit already in progress, try --continue or --abort"
 msgstr ""
 "uma edição de histórico já está em progresso, tente --continue ou --abort"
@@ -4571,8 +4721,8 @@
 msgid "%s is not an ancestor of working directory"
 msgstr "%s não é um ancestral do diretório de trabalho"
 
-msgid "use \"histedit --abort\" to clear broken state"
-msgstr "use \"histedit --abort\" para limpar o estado quebrado"
+msgid "working copy still dirty"
+msgstr "a cópia de trabalho ainda está suja"
 
 msgid "cannot edit history that would orphan nodes"
 msgstr "não é possível editar histórico de forma a produzir nós órfãos"
@@ -4588,10 +4738,6 @@
 msgid "malformed line \"%s\""
 msgstr "linha malformada \"%s\""
 
-#, python-format
-msgid "unknown changeset %s listed"
-msgstr "revisão desconhecida %s listada"
-
 msgid "may not use changesets other than the ones listed"
 msgstr "não é possível usar revisões além das listadas"
 
@@ -4614,6 +4760,10 @@
 msgid "histedit: moving bookmarks %s from %s to %s\n"
 msgstr "histedit: movendo marcadores %s de %s para %s\n"
 
+#, python-format
+msgid "histedit in progress, can't strip %s"
+msgstr "edição de histórico em andamento, não é possível remover %s"
+
 #. i18n: column positioning for "hg summary"
 #, python-format
 msgid "hist:   %s (histedit --continue)\n"
@@ -5446,9 +5596,6 @@
 msgid "--normal cannot be used with --large"
 msgstr "--normal não pode ser usado com --large"
 
-msgid "uncommitted changes"
-msgstr "alterações não consolidadas"
-
 #, python-format
 msgid ""
 "remote turned local normal file %s into a largefile\n"
@@ -5503,6 +5650,9 @@
 "largefile %s não encontrado no armazenamento do repositório nem no cache de "
 "sistema"
 
+msgid "uncommitted changes"
+msgstr "alterações não consolidadas"
+
 #, python-format
 msgid "not removing %s: file is already untracked\n"
 msgstr "%s não removido: arquivo já não é rastreado\n"
@@ -5854,8 +6004,11 @@
 msgid "unable to read %s\n"
 msgstr "impossível ler %s\n"
 
-msgid "local changes found, refresh first"
-msgstr "mudanças locais encontradas, você deve executar qrefresh primeiro"
+msgid "conflicting local changes found"
+msgstr "mudanças locais conflitantes encontradas"
+
+msgid "did you forget to qrefresh?"
+msgstr "você esqueceu de executar qrefresh?"
 
 #, python-format
 msgid "patch %s is empty\n"
@@ -5867,7 +6020,7 @@
 msgid "repository commit failed"
 msgstr "consolidação no repositório falhou"
 
-msgid "patch failed, rejects left in working dir\n"
+msgid "patch failed, rejects left in working directory\n"
 msgstr "o patch falhou, rejeitos deixados no diretório de trabalho\n"
 
 msgid "fuzz found when applying patch, stopping\n"
@@ -5910,6 +6063,9 @@
 msgid "working directory revision is not qtip"
 msgstr "a revisão do diretório de trabalho não é a qtip"
 
+msgid "local changes found, refresh first"
+msgstr "mudanças locais encontradas, você deve executar qrefresh primeiro"
+
 msgid "local changed subrepos found, refresh first"
 msgstr ""
 "encontrados sub-repositórios modificados localmente, você deve executar "
@@ -8729,81 +8885,6 @@
 msgstr ""
 "comandos para selecionar interativamente mudanças em um commit ou qrefresh"
 
-msgid "this modifies a binary file (all or nothing)\n"
-msgstr "isto modifica um arquivo binário (tudo ou nada)\n"
-
-msgid "this is a binary file\n"
-msgstr "este é um arquivo binário\n"
-
-#, python-format
-msgid "%d hunks, %d lines changed\n"
-msgstr "%d trechos, %d linhas modificadas\n"
-
-msgid ""
-"[Ynesfdaq?]$$ &Yes, record this change$$ &No, skip this change$$ &Edit this "
-"change manually$$ &Skip remaining changes to this file$$ Record remaining "
-"changes to this &file$$ &Done, skip remaining changes and files$$ Record "
-"&all changes to all remaining files$$ &Quit, recording no changes$$ &? "
-"(display help)"
-msgstr ""
-"[Ynesfdaq?]$$ (&Y) sim, grave esta mudança$$ &Não, descarte esta mudança$$ "
-"&Edite esta mudança manualmente$$ De&Scarte as mudanças restantes neste "
-"arquivo$$ (&F) grave as mudanças restantes deste arquivo$$ Termina&Do, "
-"descarte as mudanças e arquivos restantes$$ Grave tod&As as mudanças de "
-"todos os arquivos restantes$$ (&Q) encerra, sem gravar nenhuma mudança$$ &? "
-"(exibe a ajuda)"
-
-msgid "cannot edit patch for whole file"
-msgstr "não é possível editar um patch para o arquivo inteiro"
-
-msgid "cannot edit patch for binary file"
-msgstr "não é possível editar um patch para um arquivo binário"
-
-msgid ""
-"\n"
-"To remove '-' lines, make them ' ' lines (context).\n"
-"To remove '+' lines, delete them.\n"
-"Lines starting with # will be removed from the patch."
-msgstr ""
-"\n"
-"Para remover linhas '-', marque-as como linhas ' ' (contexto).\n"
-"Para remover linhas '+', apague-as.\n"
-"Linhas iniciadas por '#' serão removidas do patch."
-
-msgid ""
-"If the patch applies cleanly, the edited hunk will immediately be\n"
-"added to the record list. If it does not apply cleanly, a rejects\n"
-"file will be generated: you can use that when you try again. If\n"
-"all lines of the hunk are removed, then the edit is aborted and\n"
-"the hunk is left unchanged.\n"
-msgstr ""
-"Se o patch aplicar de forma limpa, o trecho editado será adicionado\n"
-"imediatamente à lista de gravação. Se o patch não aplicar de forma\n"
-"limpa, um arquivo de rejeitos será gerado: você poderá usar esse\n"
-"arquivo ao tentar novamente. Se todas as linhas do trecho forem\n"
-"removidas, a edição será abortada e o trecho não será modificado.\n"
-
-msgid "edit failed"
-msgstr "falha ao editar"
-
-msgid "user quit"
-msgstr "usuário encerrou"
-
-#, python-format
-msgid "examine changes to %s?"
-msgstr "examinar mudanças em %s?"
-
-msgid " and "
-msgstr " e "
-
-#, python-format
-msgid "record this change to '%s'?"
-msgstr "gravar esta mudança em '%s'?"
-
-#, python-format
-msgid "record change %d/%d to '%s'?"
-msgstr "gravar mudança %d/%d em '%s'?"
-
 msgid "hg record [OPTION]... [FILE]..."
 msgstr "hg record [OPÇÃO]... [ARQUIVO]..."
 
@@ -8878,20 +8959,6 @@
 msgid "'mq' extension not loaded"
 msgstr "extensão 'mq' não carregada"
 
-#, python-format
-msgid "running non-interactively, use %s instead"
-msgstr "não está executando interativamente, use %s"
-
-msgid "cannot partially commit a merge (use \"hg commit\" instead)"
-msgstr "não é possível consolidar parcialmente uma mesclagem (use \"hg commit\")"
-
-#, python-format
-msgid "error parsing patch: %s"
-msgstr "erro decodificando patch: %s"
-
-msgid "no changes to record\n"
-msgstr "nenhuma mudança a ser gravada\n"
-
 msgid "interactively select changes to refresh"
 msgstr "seleciona interativamente alterações para atualização do patch"
 
@@ -9084,8 +9151,8 @@
 msgid "share a common history between several working directories"
 msgstr "compartilha histórico comum entre vários diretórios de trabalho"
 
-msgid "do not create a working copy"
-msgstr "não cria uma cópia de trabalho"
+msgid "do not create a working directory"
+msgstr "não cria um diretório de trabalho"
 
 msgid "also share bookmarks"
 msgstr "compartilha também marcadores"
@@ -9350,6 +9417,9 @@
 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 "output diffstat-style summary of changes"
 msgstr "imprime sumário de mudanças no estilo diffstat"
 
@@ -9445,10 +9515,6 @@
 "descendentes do histórico do repositório. Veja a ajuda do\n"
 "comando para mais detalhes.\n"
 
-#, python-format
-msgid "uncommitted changes in subrepository %s"
-msgstr "mudanças não consolidadas no sub-repositório %s"
-
 msgid "local changes found"
 msgstr "mudanças locais encontradas"
 
@@ -9479,8 +9545,8 @@
 msgid "ignored  (DEPRECATED)"
 msgstr "ignorado (OBSOLETO)"
 
-msgid "do not modify working copy during strip"
-msgstr "não modifica a cópia de trabalho durante o strip"
+msgid "do not modify working directory during strip"
+msgstr "não modifica o diretório de trabalho durante o strip"
 
 msgid "remove revs only reachable from given bookmark"
 msgstr "remove revisões alcançáveis apenas pelo marcador dado"
@@ -9621,7 +9687,7 @@
 msgstr "arquivo de log de transplante corrompido"
 
 #, python-format
-msgid "working dir not at transplant parent %s"
+msgid "working directory not at transplant parent %s"
 msgstr "diretório de trabalho não está no pai do transplante %s"
 
 msgid "commit failed"
@@ -10122,12 +10188,40 @@
 msgid "divergent bookmark %s stored as %s\n"
 msgstr "marcador divergente %s guardado como %s\n"
 
+#, python-format
+msgid "warning: failed to assign numbered name to divergent bookmark %s\n"
+msgstr "aviso: falha ao atribuir nome numerado para o marcador divergente %s\n"
+
 msgid "searching for changed bookmarks\n"
 msgstr "procurando por marcadores modificados\n"
 
+#. i18n: "added" refers to a bookmark
+#. i18n: "added refers to a bookmark
+msgid "added"
+msgstr "adicionado"
+
+#. i18n: "advanced" refers to a bookmark
+msgid "advanced"
+msgstr "avançado"
+
+#. i18n: "diverged" refers to a bookmark
+msgid "diverged"
+msgstr "divergente"
+
+#. i18n: "changed" refers to a bookmark
+msgid "changed"
+msgstr "modificado"
+
 msgid "no changed bookmarks found\n"
 msgstr "nenhum marcador modificado encontrado\n"
 
+#. i18n: "deleted" refers to a bookmark
+msgid "deleted"
+msgstr "apagado"
+
+msgid "File pointer is not seekable"
+msgstr "O ponteiro do arquivo não suporta seek"
+
 msgid "not a Mercurial bundle"
 msgstr "não é um arquivo de bundle do Mercurial"
 
@@ -10135,6 +10229,9 @@
 msgid "unknown bundle version %s"
 msgstr "versão de bundle %s desconhecida"
 
+msgid "Seek failed\n"
+msgstr "Seek falhou\n"
+
 #, python-format
 msgid "remote-changegroup: missing \"%s\" param"
 msgstr "remote-changegroup: faltando parâmetro \"%s\""
@@ -10184,8 +10281,8 @@
 msgid "invalid chunk length %d"
 msgstr "comprimento de trecho inválido %d"
 
-msgid "Bundle1 only supports v1 changegroups\n"
-msgstr "Bundle1 suporta apenas changegroups v1\n"
+msgid "old bundle types only supports v1 changegroups"
+msgstr "tipos de bundle antigos suportam apenas changegroups v1"
 
 msgid "bundling"
 msgstr "criando bundle"
@@ -10219,6 +10316,10 @@
 msgid "received file revlog group is empty"
 msgstr "grupo recebido de arquivos revlog vazio"
 
+#, python-format
+msgid "received delta base is censored: %s"
+msgstr "a base do delta recebido foi censurada: %s"
+
 msgid "received spurious file revlog entry"
 msgstr "recebida entrada de revlog de arquivo espúria"
 
@@ -10264,8 +10365,18 @@
 msgstr "o nome '%s' é reservado"
 
 #, python-format
-msgid "uncommitted changes in subrepo %s"
-msgstr "mudanças não consolidadas no sub-repositório %s"
+msgid "running non-interactively, use %s instead"
+msgstr "não está executando interativamente, use %s"
+
+msgid "cannot partially commit a merge (use \"hg commit\" instead)"
+msgstr "não é possível consolidar parcialmente uma mesclagem (use \"hg commit\")"
+
+#, python-format
+msgid "error parsing patch: %s"
+msgstr "erro decodificando patch: %s"
+
+msgid "no changes to record\n"
+msgstr "nenhuma mudança a ser gravada\n"
 
 msgid "options --message and --logfile are mutually exclusive"
 msgstr "opções --message e --logfile são mutuamente exclusivas"
@@ -10331,8 +10442,8 @@
 msgstr "%s: cópia não gravada - %s não existe\n"
 
 #, python-format
-msgid "%s: deleted in working copy\n"
-msgstr "%s: apagado na cópia de trabalho\n"
+msgid "%s: deleted in working directory\n"
+msgstr "%s: apagado no diretório de trabalho\n"
 
 #, python-format
 msgid "%s: cannot copy - %s\n"
@@ -10389,6 +10500,10 @@
 msgid "created %s"
 msgstr "revisão %s criada"
 
+#, python-format
+msgid "warning: %s not inside relative root %s\n"
+msgstr "aviso: %s não está dentro do raiz relativo %s\n"
+
 #. i18n: column positioning for "hg log"
 #, python-format
 msgid "changeset:   %d:%s\n"
@@ -10758,6 +10873,9 @@
 msgid "number of lines of context to show"
 msgstr "número de linhas de contexto a serem mostradas"
 
+msgid "produce diffs relative to subdirectory"
+msgstr "produz diffs relativos ao subdiretório"
+
 msgid "SIMILARITY"
 msgstr "SIMILARIDADE"
 
@@ -11779,8 +11897,9 @@
 "    :``%r``: número de ordem da revisão completado com zeros\n"
 "    :``%b``: nome base do repositório"
 
-msgid "the clone will include an empty working copy (only a repository)"
-msgstr "o clone irá conter uma cópia de trabalho vazia (apenas o repositório)"
+msgid "the clone will include an empty working directory (only a repository)"
+msgstr ""
+"o clone irá conter um diretório de trabalho vazio (apenas o repositório)"
 
 msgid "revision, tag or branch to check out"
 msgstr "revisão, etiqueta ou ramo a ser obtido"
@@ -11992,12 +12111,15 @@
 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 "amend the parent of the working dir"
+msgid "amend the parent of the working directory"
 msgstr "emenda o pai do diretório de trabalho"
 
 msgid "use the secret phase for committing"
 msgstr "consolida a revisão na fase \"secret\""
 
+msgid "use interactive mode"
+msgstr "use o modo interativo"
+
 msgid "commit the specified files or all outstanding changes"
 msgstr "consolida os arquivos pedidos ou todas as mudanças por gravar"
 
@@ -12160,6 +12282,9 @@
 msgid "can't use --local outside a repository"
 msgstr "não se pode usar --local fora de um repositório"
 
+msgid "edit failed"
+msgstr "falha ao editar"
+
 msgid "only one config item permitted"
 msgstr "apenas um item de configuração permitido"
 
@@ -12401,10 +12526,6 @@
 msgid "dump the contents of a data file revision"
 msgstr "exibe o conteúdo de uma revisão de dados de arquivo"
 
-#, python-format
-msgid "invalid revision identifier %s"
-msgstr "identificador de revisão inválido %s"
-
 msgid "try extended date formats"
 msgstr "tenta formatos de data estendidos"
 
@@ -12812,10 +12933,14 @@
 
 msgid ""
 "    This is useful for writing repository conversion tools, but should\n"
-"    be used with care."
-msgstr ""
-"    Isto é útil para escrever utilitários de conversão de repositórios, mas\n"
-"    deve ser usado com cuidado."
+"    be used with care. For example, neither the working directory nor the\n"
+"    dirstate is updated, so file status may be incorrect after running this\n"
+"    command."
+msgstr ""
+"    Isto é útil para escrever utilitários de conversão de repositórios,\n"
+"    mas deve ser usado com cuidado. Por exemplo, nem o diretório de\n"
+"    trabalho nem o dirstate são atualizados, de modo que o status dos\n"
+"    arquivos pode ficar incorreto após a execução deste comando."
 
 msgid "do not display the saved mtime"
 msgstr "não exibe o mtime armazenado"
@@ -13157,11 +13282,11 @@
 
 msgid ""
 "    If no patterns are given to match, this command prints the names\n"
-"    of all files under Mercurial control in the working copy."
+"    of all files under Mercurial control in the working directory."
 msgstr ""
 "    Se não forem passados padrões, este comando imprime os nomes\n"
-"    de todos os arquivos sob o controle do Mercurial na cópia de\n"
-"    trabalho."
+"    de todos os arquivos sob o controle do Mercurial no diretório\n"
+"    de trabalho."
 
 msgid "      - list all files under the current directory::"
 msgstr "      - lista todos os arquivos sob o diretório atual::"
@@ -13622,8 +13747,8 @@
 msgid "[-nibtB] [-r REV] [SOURCE]"
 msgstr "[-nibtB] [-r REV] [ORIGEM]"
 
-msgid "identify the working copy or specified revision"
-msgstr "identifica a cópia de trabalho ou revisão especificada"
+msgid "identify the working directory or specified revision"
+msgstr "identifica o diretório de trabalho ou a revisão especificada"
 
 msgid ""
 "    Print a summary identifying the repository state at REV using one or\n"
@@ -13702,6 +13827,9 @@
 msgid "apply patch to the nodes from which it was generated"
 msgstr "aplica o patch aos nós a partir dos quais ele foi gerado"
 
+msgid "apply patch to subdirectory"
+msgstr "aplica o patch em um subdiretório"
+
 msgid "use any branch information in patch (implied by --exact)"
 msgstr "usa qualquer informação de ramo no patch (implicada por --exact)"
 
@@ -13866,6 +13994,9 @@
 msgid "cannot use --exact with --edit"
 msgstr "não é possível usar --exact com --edit"
 
+msgid "cannot use --exact with --prefix"
+msgstr "não é possível usar --exact com --prefix"
+
 msgid "applying patch from stdin\n"
 msgstr "aplicando patch da entrada padrão\n"
 
@@ -13912,17 +14043,65 @@
 "    ou na localização de pull padrão. Estas são as revisões que\n"
 "    seriam trazidas se um pull fosse executado."
 
-msgid ""
-"    For remote repository, using --bundle avoids downloading the\n"
-"    changesets twice if the incoming is followed by a pull."
-msgstr ""
-"    Para repositórios remotos, a opção --bundle evita baixar as\n"
-"    revisões duas vezes se o comando incoming for seguido por um\n"
-"    pull."
-
 msgid "    See pull for valid source format details."
 msgstr "    Veja pull para detalhes sobre formatos válidos da origem."
 
+msgid ""
+"      With -B/--bookmarks, the result of bookmark comparison between\n"
+"      local and remote repositories is displayed. With -v/--verbose,\n"
+"      status is also displayed for each bookmark like below::"
+msgstr ""
+"      Com -B/--bookmarks, é exibido o resultado da comparação de\n"
+"      marcadores entre o repositório local e o remoto.\n"
+"      Com -v/--verbose, também é exibido o estado de cada\n"
+"      marcador, como abaixo::"
+
+msgid ""
+"        BM1               01234567890a added\n"
+"        BM2               1234567890ab advanced\n"
+"        BM3               234567890abc diverged\n"
+"        BM4               34567890abcd changed"
+msgstr ""
+"        BM1               01234567890a adicionado\n"
+"        BM2               1234567890ab avançado\n"
+"        BM3               234567890abc divergente\n"
+"        BM4               34567890abcd modificado"
+
+msgid ""
+"      The action taken locally when pulling depends on the\n"
+"      status of each bookmark:"
+msgstr ""
+"      A ação tomada localmente ao executar pull depende do\n"
+"      estado de cada marcador:"
+
+msgid ""
+"      :``added``: pull will create it\n"
+"      :``advanced``: pull will update it\n"
+"      :``diverged``: pull will create a divergent bookmark\n"
+"      :``changed``: result depends on remote changesets"
+msgstr ""
+"      :``adicionado``: o pull criará o marcador\n"
+"      :``avançado``: o pull atualizará o marcador\n"
+"      :``divergente``: o pull criará um marcador divergente\n"
+"      :``modificado``: o resultado depende das revisões remotas"
+
+msgid ""
+"      From the point of view of pulling behavior, bookmark\n"
+"      existing only in the remote repository are treated as ``added``,\n"
+"      even if it is in fact locally deleted."
+msgstr ""
+"      Do ponto de vista do pull, um marcador presente apenas\n"
+"      no repositório remoto será tratado como ``adicionado``,\n"
+"      mesmo que na verdade ele tenha sido apagado localmente."
+
+msgid ""
+"      For remote repository, using --bundle avoids downloading the\n"
+"      changesets twice if the incoming is followed by a pull."
+msgstr ""
+"      Para repositórios remotos, a opção --bundle evita baixar as\n"
+"      revisões duas vezes se o comando incoming for seguido por um\n"
+"      pull."
+
 msgid "      - show incoming changes with patches and full description::"
 msgstr "      - mostra novas mudanças com patches e descrições completas::"
 
@@ -14007,14 +14186,6 @@
 "    atual e subdiretórios, use \"--include .\"."
 
 msgid ""
-"    If no patterns are given to match, this command prints the names\n"
-"    of all files under Mercurial control in the working directory."
-msgstr ""
-"    Se não forem passados padrões, este comando imprime os nomes\n"
-"    de todos os arquivos sob o controle do Mercurial no diretório\n"
-"    de trabalho."
-
-msgid ""
 "    If you want to feed the output of this command into the \"xargs\"\n"
 "    command, use the -0 option to both this command and \"xargs\". This\n"
 "    will avoid the problem of \"xargs\" treating single filenames that\n"
@@ -14370,6 +14541,48 @@
 msgstr "    Veja pull para detalhes do formato do destino."
 
 msgid ""
+"        BM1               01234567890a added\n"
+"        BM2                            deleted\n"
+"        BM3               234567890abc advanced\n"
+"        BM4               34567890abcd diverged\n"
+"        BM5               4567890abcde changed"
+msgstr ""
+"        BM1               01234567890a adicionado\n"
+"        BM2                            apagado\n"
+"        BM3               234567890abc avançado\n"
+"        BM4               34567890abcd divergente\n"
+"        BM5               4567890abcde modificado"
+
+msgid ""
+"      The action taken when pushing depends on the\n"
+"      status of each bookmark:"
+msgstr ""
+"      A ação realizada com o push depende do estado de cada\n"
+"      marcador:"
+
+msgid ""
+"      :``added``: push with ``-B`` will create it\n"
+"      :``deleted``: push with ``-B`` will delete it\n"
+"      :``advanced``: push will update it\n"
+"      :``diverged``: push with ``-B`` will update it\n"
+"      :``changed``: push with ``-B`` will update it"
+msgstr ""
+"      :``adicionado``: o push com ``-B`` criará o marcador\n"
+"      :``apagado``: o push com ``-B`` apagará o marcador\n"
+"      :``avançado``: o push atualizará o marcador\n"
+"      :``divergente``: o push com ``-B`` atualizará o marcador\n"
+"      :``modificado``: o push com ``-B`` atualizará o marcador"
+
+msgid ""
+"      From the point of view of pushing behavior, bookmarks\n"
+"      existing only in the remote repository are treated as\n"
+"      ``deleted``, even if it is in fact added remotely."
+msgstr ""
+"      Do ponto de vista do push, um marcador presente apenas\n"
+"      no repositório remoto será tratado como ``apagado``,\n"
+"      mesmo que na verdade ele tenha sido adicionado remotamente."
+
+msgid ""
 "    Returns 0 if there are outgoing changes, 1 otherwise.\n"
 "    "
 msgstr ""
@@ -14707,6 +14920,12 @@
 msgid "see the \"path\" section in \"hg help config\""
 msgstr "veja a seção \"path\" em \"hg help config\""
 
+msgid "specified revisions evaluate to an empty set"
+msgstr "as revisões especificadas resultam em um conjunto vazio"
+
+msgid "use different revision arguments"
+msgstr "use argumentos de revisão diferentes"
+
 msgid "roll back an interrupted transaction"
 msgstr "desfaz uma transação interrompida"
 
@@ -14966,6 +15185,9 @@
 msgid "revert to the specified revision"
 msgstr "reverte para a revisão especificada"
 
+msgid "interactively select the changes (EXPERIMENTAL)"
+msgstr "seleção interativa de alterações (EXPERIMENTAL)"
+
 msgid "[OPTION]... [-r REV] [NAME]..."
 msgstr "[OPÇÃO]... [-r REV] [NOME]..."
 
@@ -15366,6 +15588,17 @@
 msgid "          hg status --rev 9353"
 msgstr "          hg status --rev 9353"
 
+msgid ""
+"      - show changes in the working directory relative to the\n"
+"        current directory (see :hg:`help patterns` for more information)::"
+msgstr ""
+"      - mostra mudanças no diretório de trabalho relativas ao\n"
+"        diretório atual (veja :hg:`help patterns` para mais\n"
+"        informações)::"
+
+msgid "          hg status re:"
+msgstr "          hg status re:"
+
 msgid "      - show all changes including copies in an existing changeset::"
 msgstr ""
 "      - mostra todas as mudanças incluindo cópias em uma revisão existente::"
@@ -15847,11 +16080,11 @@
 msgstr "(veja http://mercurial.selenic.com para mais informações)"
 
 msgid ""
-"Copyright (C) 2005-2014 Matt Mackall and others\n"
+"Copyright (C) 2005-2015 Matt Mackall and others\n"
 "This is free software; see the source for copying conditions. There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 msgstr ""
-"Copyright (C) 2005-2014 Matt Mackall e outros\n"
+"Copyright (C) 2005-2015 Matt Mackall e outros\n"
 "Este software é livre; veja os fontes para condições de cópia. Não\n"
 "há garantias, nem mesmo de adequação para qualquer propósito em\n"
 "particular.\n"
@@ -15967,6 +16200,47 @@
 msgid "copy failed: %s is not a file or a symbolic link\n"
 msgstr "cópia falhou: %s não é um arquivo ou um link simbólico\n"
 
+msgid "the python curses/wcurses module is not available/installed"
+msgstr "o módulo curses/wcurses do Python não está disponível"
+
+msgid "starting interactive selection\n"
+msgstr "iniciando seleção interativa\n"
+
+msgid "cannot edit patch for whole file"
+msgstr "não é possível editar um patch para o arquivo inteiro"
+
+msgid "cannot edit patch for binary file"
+msgstr "não é possível editar um patch para um arquivo binário"
+
+msgid ""
+"\n"
+"    to remove '-' lines, make them ' ' lines (context).\n"
+"    to remove '+' lines, delete them.\n"
+"    lines starting with # will be removed from the patch."
+msgstr ""
+"\n"
+"    para remover linhas '-', marque-as como linhas ' ' (contexto).\n"
+"    para remover linhas '+', apague-as.\n"
+"    linhas iniciadas por '#' serão removidas do patch."
+
+msgid ""
+"    if the patch applies cleanly, the edited hunk will immediately be\n"
+"    added to the record list. if it does not apply cleanly, a rejects\n"
+"    file will be generated: you can use that when you try again. if\n"
+"    all lines of the hunk are removed, then the edit is aborted and\n"
+"    the hunk is left unchanged.\n"
+"    "
+msgstr ""
+"    Se o patch aplicar de forma limpa, o trecho editado será adicionado\n"
+"    imediatamente à lista de gravação. Se o patch não aplicar de forma\n"
+"    limpa, um arquivo de rejeitos será gerado: você poderá usar esse\n"
+"    arquivo ao tentar novamente. Se todas as linhas do trecho forem\n"
+"    removidas, a edição será abortada e o trecho não será modificado.\n"
+"    "
+
+msgid "user quit"
+msgstr "usuário encerrou"
+
 #, python-format
 msgid "invalid character in dag description: %s..."
 msgstr "caractere inválido na descrição do dag: %s..."
@@ -16092,6 +16366,14 @@
 msgid "hg: parse error: %s\n"
 msgstr "hg: erro de análise da entrada: %s\n"
 
+#, python-format
+msgid "(did you mean %r?)\n"
+msgstr "(você quis dizer %r?)\n"
+
+#, python-format
+msgid "(did you mean one of %s?)\n"
+msgstr "(você quis dizer: %s?)\n"
+
 msgid "entering debugger - type c to continue starting hg or h for help\n"
 msgstr ""
 "entrando no depurador - digite c para continuar iniciando o hg ou h para "
@@ -16316,6 +16598,10 @@
 msgstr "profiler '%s' não reconhecido - ignorado\n"
 
 #, python-format
+msgid "unknown identifier: %s"
+msgstr "identificador desconhecido: %s"
+
+#, python-format
 msgid "%s: not a Mercurial bundle"
 msgstr "%s: não é um arquivo de bundle do Mercurial"
 
@@ -16674,10 +16960,6 @@
 msgid "clean takes no arguments"
 msgstr "clean não tem argumentos"
 
-#, python-format
-msgid "not a function: %s"
-msgstr "não é uma função: %s"
-
 msgid ""
 "``binary()``\n"
 "    File that appears to be binary (contains NUL bytes)."
@@ -16747,6 +17029,19 @@
 msgstr "hgignore não tem argumentos"
 
 msgid ""
+"``portable()``\n"
+"    File that has a portable name. (This doesn't include filenames with case\n"
+"    collisions.)"
+msgstr ""
+"``portable()``\n"
+"    Arquivos que possuem um nome portável. (Isto não inclui\n"
+"    arquivos com colisões de maiúsculas e minúsculas.)"
+
+#. i18n: "portable" is a keyword
+msgid "portable takes no arguments"
+msgstr "portable não tem argumentos"
+
+msgid ""
 "``grep(regex)``\n"
 "    File contains the given regular expression."
 msgstr ""
@@ -16881,6 +17176,10 @@
 msgstr "não testada"
 
 #. i18n: bisect changeset status
+msgid "ignored"
+msgstr "ignorado"
+
+#. i18n: bisect changeset status
 msgid "good (implicit)"
 msgstr "boa (implicitamente)"
 
@@ -16897,6 +17196,9 @@
 msgid "DEPRECATED"
 msgstr "OBSOLETO"
 
+msgid "EXPERIMENTAL"
+msgstr "EXPERIMENTAL"
+
 msgid " ([+] can be repeated)"
 msgstr " ([+] pode ser repetido)"
 
@@ -18870,6 +19172,72 @@
 "  ``$HG_LOCAL=0``."
 
 msgid ""
+"``pretxnopen``\n"
+"  Run before any new repository transaction is open. The reason for the\n"
+"  transaction will be in ``$HG_TXNNAME`` and a unique identifier for the\n"
+"  transaction will be in ``HG_TXNID``. A non-zero status will prevent the\n"
+"  transaction from being opened."
+msgstr ""
+"``pretxnopen``\n"
+"  Executado antes da abertura de qualquer transação no repositório.\n"
+"  A razão da transação será passada em ``$HG_TXNNAME`` e um\n"
+"  identificador único para a transação será passado em ``HG_TXNID``.\n"
+"  Um status de saída diferente de zero impedirá a abertura da\n"
+"  transação."
+
+msgid ""
+"``pretxnclose``\n"
+"  Run right before the transaction is actually finalized. Any\n"
+"  repository change will be visible to the hook program. This lets you\n"
+"  validate the transaction content or change it. Exit status 0 allows\n"
+"  the commit to proceed. Non-zero status will cause the transaction to\n"
+"  be rolled back. The reason for the transaction opening will be in\n"
+"  ``$HG_TXNNAME`` and a unique identifier for the transaction will be in\n"
+"  ``HG_TXNID``. The rest of the available data will vary according the\n"
+"  transaction type. New changesets will add ``$HG_NODE`` (id of the\n"
+"  first added changeset), ``$HG_URL`` and ``$HG_SOURCE`` variables,\n"
+"  bookmarks and phases changes will set ``HG_BOOKMARK_MOVED`` and\n"
+"  ``HG_PHASES_MOVED`` to ``1``, etc."
+msgstr ""
+"``pretxnclose``\n"
+"  Executado imediatamente antes de a transação ser finalizada.\n"
+"  Qualquer mudança do repositório será visível para o gancho.\n"
+"  Isto permite que o conteúdo da transação seja validado ou alterado.\n"
+"  O status de saída 0 permite que a consolidação prossiga. Um status\n"
+"  de saída diferente de zero fará com que a transação seja desfeita.\n"
+"  A razão da transação será passada em ``$HG_TXNNAME`` e um\n"
+"  identificador único para a transação será passado em ``HG_TXNID``.\n"
+"  Outros dados estarão disponíveis dependendo do tipo da transação.\n"
+"  Novas revisões adicionarão ``$HG_NODE`` (id da primeira revisão\n"
+"  adicionada), ``$HG_URL`` e ``$HG_SOURCE``, mudanças de marcadores\n"
+"  e fases definirão ``HG_BOOKMARK_MOVED`` e ``HG_PHASES_MOVED`` como\n"
+"  ``1``, etc."
+
+msgid ""
+"``txnclose``\n"
+"  Run after any repository transaction has been committed. At this\n"
+"  point, the transaction can no longer be rolled back. The hook will run\n"
+"  after the lock is released. See ``pretxnclose`` docs for details about\n"
+"  available variables."
+msgstr ""
+"``txnclose``\n"
+"  Executado após qualquer transação do repositório ter sido\n"
+"  consolidada. Neste ponto, a transação não pode mais ser desfeita.\n"
+"  O gancho será executado após o lock ser liberado.\n"
+"  Veja a documentação de ``pretxnclose`` para detalhes sobre variáveis\n"
+"  disponíveis."
+
+msgid ""
+"``txnabort``\n"
+"  Run when a transaction is aborted. See ``pretxnclose`` docs for details about\n"
+"  available variables."
+msgstr ""
+"``txnabort``\n"
+"  Executado quando uma transação for abortada.\n"
+"  Veja a documentação de ``pretxnclose`` para detalhes sobre variáveis\n"
+"  disponíveis."
+
+msgid ""
 "``pretxnchangegroup``\n"
 "  Run after a changegroup has been added via push, pull or unbundle,\n"
 "  but before the transaction has been committed. Changegroup is\n"
@@ -20211,6 +20579,13 @@
 "    O padrão é False."
 
 msgid ""
+"``statuscopies``\n"
+"    Display copies in the status command."
+msgstr ""
+"``statuscopies``\n"
+"    Mostra cópias no comando status."
+
+msgid ""
 "``ssh``\n"
 "    command to use for SSH connections. Default is ``ssh``."
 msgstr ""
@@ -22289,7 +22664,7 @@
 "    local que não estão em um repositório remoto são enviadas para esse\n"
 "    repositório remoto.\n"
 "    Note que essa operação apenas adiciona ao repositório remoto revisões\n"
-"    já consolidadas localmente; mudanças não consolidadas  da cópia de\n"
+"    já consolidadas localmente; mudanças não consolidadas da cópia de\n"
 "    trabalho não são enviadas. Veja :hg:`help push`."
 
 msgid ""
@@ -22710,13 +23085,13 @@
 msgid ""
 "Copying\n"
 "\"\"\"\"\"\"\"\n"
-"Copyright (C) 2005-2014 Matt Mackall.\n"
+"Copyright (C) 2005-2015 Matt Mackall.\n"
 "Free use of this software is granted under the terms of the GNU General\n"
 "Public License version 2 or any later version."
 msgstr ""
 "Cópia\n"
 "\"\"\"\"\"\n"
-"Copyright (C) 2005-2014 Matt Mackall.\n"
+"Copyright (C) 2005-2015 Matt Mackall.\n"
 "Garante-se livre uso deste software nos termos da licença\n"
 "GNU General Public License, versão 2 ou qualquer versão posterior."
 
@@ -22774,14 +23149,14 @@
 "Copying\n"
 "=======\n"
 "This manual page is copyright 2006 Vadim Gelfer.\n"
-"Mercurial is copyright 2005-2014 Matt Mackall.\n"
+"Mercurial is copyright 2005-2015 Matt Mackall.\n"
 "Free use of this software is granted under the terms of the GNU General\n"
 "Public License version 2 or any later version."
 msgstr ""
 "Cópia\n"
 "=====\n"
 "Esta página de manual: copyright 2006 Vadim Gelfer.\n"
-"Mercurial: copyright 2005-2014 Matt Mackall.\n"
+"Mercurial: copyright 2005-2015 Matt Mackall.\n"
 "Garante-se livre uso deste software nos termos da licença\n"
 "GNU General Public License, versão 2 ou qualquer versão posterior."
 
@@ -23046,14 +23421,14 @@
 "Copying\n"
 "=======\n"
 "This manual page is copyright 2005 Bryan O'Sullivan.\n"
-"Mercurial is copyright 2005-2014 Matt Mackall.\n"
+"Mercurial is copyright 2005-2015 Matt Mackall.\n"
 "Free use of this software is granted under the terms of the GNU General\n"
 "Public License version 2 or any later version."
 msgstr ""
 "Cópia\n"
 "=====\n"
 "Esta página de manual: copyright 2005 Bryan O'Sullivan.\n"
-"Mercurial: copyright 2005-2014 Matt Mackall.\n"
+"Mercurial: copyright 2005-2015 Matt Mackall.\n"
 "Garante-se livre uso deste software nos termos da licença\n"
 "GNU General Public License, versão 2 ou qualquer versão posterior."
 
@@ -23163,10 +23538,88 @@
 
 msgid ""
 "The ``collections`` section is deprecated and has been superseded by\n"
-"``paths``.\n"
+"``paths``."
 msgstr ""
 "A seção ``collections`` é obsoleta e foi completamente substituída\n"
-"pela seção ``paths``.\n"
+"pela seção ``paths``."
+
+msgid ""
+"URLs and Common Arguments\n"
+"========================="
+msgstr ""
+"URLs e Argumentos Comuns\n"
+"========================"
+
+msgid ""
+"URLs under each repository have the form ``/{command}[/{arguments}]``\n"
+"where ``{command}`` represents the name of a command or handler and\n"
+"``{arguments}`` represents any number of additional URL parameters\n"
+"to that command."
+msgstr ""
+"URLs sob cada repositório têm a forma ``/{comando}[/{argumentos}]``\n"
+"onde ``{comando}`` representa o nome de um comando ou manipulador e\n"
+"``{argumentos}`` representa qualquer número de parâmetros de URL\n"
+"adicionais para tal comando."
+
+msgid ""
+"The web server has a default style associated with it. Styles map to\n"
+"a collection of named templates. Each template is used to render a\n"
+"specific piece of data, such as a changeset or diff."
+msgstr ""
+"O servidor web possui um estilo padrão associado. Estilos são\n"
+"mapeados para uma coleção de modelos nomeados. Cada modelo\n"
+"é usado para renderizar um trecho de dados específico, como\n"
+"uma revisão ou diff."
+
+msgid ""
+"The style for the current request can be overwritten two ways. First,\n"
+"if ``{command}`` contains a hyphen (``-``), the text before the hyphen\n"
+"defines the style. For example, ``/atom-log`` will render the ``log``\n"
+"command handler with the ``atom`` style. The second way to set the\n"
+"style is with the ``style`` query string argument. For example,\n"
+"``/log?style=atom``. The hyphenated URL parameter is preferred."
+msgstr ""
+"O estilo para o pedido atual pode ser sobreposto de duas formas.\n"
+"Na primeira, se ``{comando}`` contiver um hífen (``-``), o texto\n"
+"antes do hífen definirá o estilo. Por exemplo, ``/atom-log`` irá\n"
+"renderizar o comando ``log`` com o estilo ``atom``. A segunda\n"
+"forma usa o argumento ``style``. Por exemplo, ``/log?style=atom``.\n"
+"A primeira forma é preferida."
+
+msgid ""
+"Not all templates are available for all styles. Attempting to use\n"
+"a style that doesn't have all templates defined may result in an error\n"
+"rendering the page."
+msgstr ""
+"Nem todos os modelos estão disponíveis para todos os estilos.\n"
+"Tentar usar um estilo que não possui todos os modelos definidos\n"
+"pode resultar em erros ao renderizar a página."
+
+msgid ""
+"Many commands take a ``{revision}`` URL parameter. This defines the\n"
+"changeset to operate on. This is commonly specified as the short,\n"
+"12 digit hexidecimal abbreviation for the full 40 character unique\n"
+"revision identifier. However, any value described by\n"
+":hg:`help revisions` typically works."
+msgstr ""
+"Muitos comandos recebem um parâmetro de URL ``{revision}``.\n"
+"Isto define a revisão a ser tratada. É comumente especificado\n"
+"como a abreviação de 12 dígitos hexadecimais do identificador\n"
+"único completo de 40 caracteres. No entanto, tipicamente será\n"
+"aceito qualquer valor descrito por :hg:`help revisions`."
+
+msgid ""
+"Commands and URLs\n"
+"================="
+msgstr ""
+"Comandos e URLs\n"
+"==============="
+
+msgid "The following web commands and their URLs are available:"
+msgstr "Os seguintes comandos web e suas URLs estão disponíveis:"
+
+msgid "  .. webcommandsmarker\n"
+msgstr "  .. webcommandsmarker\n"
 
 msgid "To merge files Mercurial uses merge tools."
 msgstr "Para mesclar arquivos o Mercurial usa utilitários de mesclagem."
@@ -24239,14 +24692,14 @@
 ":add: add does not recurse in subrepos unless -S/--subrepos is\n"
 "    specified.  However, if you specify the full path of a file in a\n"
 "    subrepo, it will be added even without -S/--subrepos specified.\n"
-"    Git and Subversion subrepositories are currently silently\n"
+"    Subversion subrepositories are currently silently\n"
 "    ignored."
 msgstr ""
 ":add: add 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á adicionado mesmo que -S/--subrepos não seja passado.\n"
-"    Sub-repositórios do Subversion e do Git são no momento\n"
+"    Sub-repositórios do Subversion são no momento\n"
 "    silenciosamente ignorados."
 
 msgid ""
@@ -24274,11 +24727,11 @@
 
 msgid ""
 ":cat: cat currently only handles exact file matches in subrepos.\n"
-"    Git and Subversion subrepositories are currently ignored."
+"    Subversion subrepositories are currently ignored."
 msgstr ""
 ":cat: cat no momento considera apenas especificações exatas de\n"
 "    arquivos em sub-repositórios.\n"
-"    Sub-repositórios do Subversion e do Git são no momento\n"
+"    Sub-repositórios do Subversion são no momento\n"
 "    ignorados."
 
 msgid ""
@@ -24311,17 +24764,26 @@
 msgid ""
 ":diff: diff does not recurse in subrepos unless -S/--subrepos is\n"
 "    specified. Changes are displayed as usual, on the subrepositories\n"
-"    elements. Git subrepositories do not support --include/--exclude.\n"
-"    Subversion subrepositories are currently silently ignored."
+"    elements. Subversion subrepositories are currently silently ignored."
 msgstr ""
 ":diff: diff não é executado recursivamente em sub-repositórios, a não\n"
 "    ser que -S/--subrepos seja especificado. As mudanças são exibidas\n"
-"    normalmente nos sub-repositórios do Mercurial. Sub-repositórios do\n"
-"    Git não suportam --include/--exclude.\n"
+"    normalmente nos elementos em sub-repositórios.\n"
 "    Sub-repositórios do Subversion são no momento silenciosamente\n"
 "    ignorados."
 
 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 ""
 ":forget: forget currently only handles exact file matches in subrepos.\n"
 "    Git and Subversion subrepositories are currently silently ignored."
 msgstr ""
@@ -24538,56 +25000,8 @@
 msgid "In addition to filters, there are some basic built-in functions:"
 msgstr "Além de filtros, há algumas funções básicas disponíveis:"
 
-msgid "- date(date[, fmt])"
-msgstr "- date(data[, formato])"
-
-msgid "- diff([includepattern [, excludepattern]])"
-msgstr "- diff([padrãodeinclusão [, padrãodeexclusão]])"
-
-msgid "- fill(text[, width])"
-msgstr "- fill(texto[, comprimento])"
-
-msgid "- get(dict, key)"
-msgstr "- get(dicionário, chave)"
-
-msgid "- if(expr, then[, else])"
-msgstr "- if(expr, então[, senão])"
-
-msgid "- ifcontains(expr, expr, then[, else])"
-msgstr "- ifcontains(expr, expr, então[, senão])"
-
-msgid "- ifeq(expr, expr, then[, else])"
-msgstr "- ifeq(expr, expr, então[, senão])"
-
-msgid "- join(list, sep)"
-msgstr "- join(lista, separador)"
-
-msgid "- label(label, expr)"
-msgstr "- label(label, expr)"
-
-msgid "- pad(text, width[, fillchar, right])"
-msgstr "- pad(texto, largura[, preenchimento, direita])"
-
-msgid "- revset(query[, formatargs])"
-msgstr "- revset(consulta[, formato])"
-
-msgid "- rstdoc(text, style)"
-msgstr "- rstdoc(texto, estilo)"
-
-msgid "- shortest(node)"
-msgstr "- shortest(nó)"
-
-msgid "- startswith(string, text)"
-msgstr "- startswith(string, texto)"
-
-msgid "- strip(text[, chars])"
-msgstr "- strip(texto[, caracteres])"
-
-msgid "- sub(pat, repl, expr)"
-msgstr "- sub(padrão, substituição, expressão)"
-
-msgid "- word(number, text[, separator])"
-msgstr "- word(número, texto[, separador])"
+msgid ".. functionsmarker"
+msgstr ".. functionsmarker"
 
 msgid ""
 "Also, for any expression that returns a list, there is a list operator:"
@@ -24946,10 +25360,491 @@
 msgid "cannot start server at '%s:%d': %s"
 msgstr "não é possível iniciar o servidor em '%s:%d': %s"
 
+msgid ""
+"\n"
+"    /log[/{revision}[/{path}]]\n"
+"    --------------------------"
+msgstr ""
+"\n"
+"    /log[/{revisão}[/{caminho}]]\n"
+"    ----------------------------"
+
+msgid "    Show repository or file history."
+msgstr "    Exibe histórico do repositório ou de um arquivo."
+
+msgid ""
+"    For URLs of the form ``/log/{revision}``, a list of changesets starting at\n"
+"    the specified changeset identifier is shown. If ``{revision}`` is not\n"
+"    defined, the default is ``tip``. This form is equivalent to the\n"
+"    ``changelog`` handler."
+msgstr ""
+"    Para URLs da forma ``/log/{revisão}``, é exibida uma lista de\n"
+"    revisões começando no identificador de revisão especificado.\n"
+"    Se ``{revisão}`` não for definida, o padrão é ``tip``.\n"
+"    Esta forma é equivalente ao comando ``changelog``."
+
+msgid ""
+"    For URLs of the form ``/log/{revision}/{file}``, the history for a specific\n"
+"    file will be shown. This form is equivalent to the ``filelog`` handler."
+msgstr ""
+"    Para URLs da forma ``/log/{revisão}/{arquivo}``, será exibido\n"
+"    o histórico do arquivo especificado.\n"
+"    Esta forma é equivalente ao comando ``filelog``."
+
+msgid ""
+"\n"
+"    /file/{revision}[/{path}]\n"
+"    -------------------------"
+msgstr ""
+"\n"
+"    /file/{revisão}[/{caminho}]\n"
+"    ---------------------------"
+
+msgid "    Show information about a directory or file in the repository."
+msgstr ""
+"    Mostra informações sobre um diretório ou arquivo no\n"
+"    repositório."
+
+msgid "    Info about the ``path`` given as a URL parameter will be rendered."
+msgstr ""
+"    As informações serão relativas ao parâmetro ``arquivo``\n"
+"    da URL."
+
+msgid ""
+"    If ``path`` is a directory, information about the entries in that\n"
+"    directory will be rendered. This form is equivalent to the ``manifest``\n"
+"    handler."
+msgstr ""
+"    Se ``caminho`` for um diretório, serão renderizadas informações\n"
+"    sobre as entradas sob esse diretório. Esta forma é equivalente\n"
+"    ao comando ``manifest``."
+
+msgid ""
+"    If ``path`` is a file, information about that file will be shown via\n"
+"    the ``filerevision`` template."
+msgstr ""
+"    Se ``caminho`` for um arquivo, serão exibidas informações sobre\n"
+"    esse arquivo através do modelo ``filerevision``."
+
+msgid ""
+"    If ``path`` is not defined, information about the root directory will\n"
+"    be rendered."
+msgstr ""
+"    Se ``caminho`` não for definido, serão exibidas informações\n"
+"    sobre o diretório raiz.."
+
+msgid ""
+"\n"
+"    /changelog[/{revision}]\n"
+"    -----------------------"
+msgstr ""
+"\n"
+"    /changelog[/{revisão}]\n"
+"    ----------------------"
+
+msgid "    Show information about multiple changesets."
+msgstr "    Mostra informações sobre múltiplas revisões."
+
+msgid ""
+"    If the optional ``revision`` URL argument is absent, information about\n"
+"    all changesets starting at ``tip`` will be rendered. If the ``revision``\n"
+"    argument is present, changesets will be shown starting from the specified\n"
+"    revision."
+msgstr ""
+"    Se o parâmetro opcional ``revisão`` estiver ausente, serão\n"
+"    exibidas informações sobre todas as revisões a partir da\n"
+"    ``tip``. Se ``revisão`` estiver presente, serão mostradas\n"
+"    as revisões a partir da revisão pedida."
+
+msgid ""
+"    If ``revision`` is absent, the ``rev`` query string argument may be\n"
+"    defined. This will perform a search for changesets."
+msgstr ""
+"    Se ``revisão`` estiver ausente, o argumento da string de consulta\n"
+"    ``rev`` poderá ser definido. Isto realizará uma busca por revisões."
+
+msgid ""
+"    The argument for ``rev`` can be a single revision, a revision set,\n"
+"    or a literal keyword to search for in changeset data (equivalent to\n"
+"    :hg:`log -k`)."
+msgstr ""
+"    O argumento para ``rev`` pode ser uma única revisão, um revset\n"
+"    ou uma palavra chave literal a ser localizada nos dados das\n"
+"    revisões (equivalente a :hg:`log -k`)."
+
+msgid ""
+"    The ``revcount`` query string argument defines the maximum numbers of\n"
+"    changesets to render."
+msgstr ""
+"    O argumento da string de consulta ``revcount`` define o número\n"
+"    máximo de revisões a serem exibidas."
+
+msgid "    For non-searches, the ``changelog`` template will be rendered."
+msgstr ""
+"    Caso não seja especificada uma busca, será renderizado o modelo\n"
+"    ``changelog``."
+
+msgid ""
+"\n"
+"    /shortlog\n"
+"    ---------"
+msgstr ""
+"\n"
+"    /shortlog\n"
+"    ---------"
+
+msgid "    Show basic information about a set of changesets."
+msgstr "    Mostra informações básicas sobre um conjunto de revisões."
+
+msgid ""
+"    This accepts the same parameters as the ``changelog`` handler. The only\n"
+"    difference is the ``shortlog`` template will be rendered instead of the\n"
+"    ``changelog`` template."
+msgstr ""
+"    Aceita os mesmos parâmetros do comando ``changelog``.\n"
+"    A única diferença é que a renderização usará o modelo\n"
+"    ``shortlog`` ao invés do ``changelog``."
+
+msgid ""
+"\n"
+"    /changeset[/{revision}]\n"
+"    -----------------------"
+msgstr ""
+"\n"
+"    /changeset[/{revisão}]\n"
+"    ----------------------"
+
+msgid "    Show information about a single changeset."
+msgstr "    Mostra informações sobre uma única revisão."
+
+msgid ""
+"    A URL path argument is the changeset identifier to show. See ``hg help\n"
+"    revisions`` for possible values. If not defined, the ``tip`` changeset\n"
+"    will be shown."
+msgstr ""
+"    O argumento ``revisão`` especifica o identificador da revisão a\n"
+"    ser exibida. Veja ``hg help revisions`` para os valores aceitos.\n"
+"    Se não for definida, a revisão ``tip`` será exibida."
+
+msgid ""
+"    The ``changeset`` template is rendered. Contents of the ``changesettag``,\n"
+"    ``changesetbookmark``, ``filenodelink``, ``filenolink``, and the many\n"
+"    templates related to diffs may all be used to produce the output."
+msgstr ""
+"    Usa o modelo ``changeset``. Os modelos ``changesettag``,\n"
+"    ``changesetbookmark``, ``filenodelink``, ``filenolink``\n"
+"    e os diversos modelos relacionados a diffs podem ser\n"
+"    usados para a exibição."
+
+msgid ""
+"\n"
+"    /manifest[/{revision}[/{path}]]\n"
+"    -------------------------------"
+msgstr ""
+"\n"
+"    /manifest[/{revisão}[/{caminho}]]\n"
+"    ---------------------------------"
+
+msgid "    Show information about a directory."
+msgstr "    Mostra informações sobre um diretório."
+
+msgid ""
+"    If the URL path arguments are omitted, information about the root\n"
+"    directory for the ``tip`` changeset will be shown."
+msgstr ""
+"    Se os argumentos da URL forem omitidos, serão exibidas informações\n"
+"    sobre o diretório raiz na revisão ``tip``."
+
+msgid ""
+"    Because this handler can only show information for directories, it\n"
+"    is recommended to use the ``file`` handler instead, as it can handle both\n"
+"    directories and files."
+msgstr ""
+"    Como este comando só pode mostrar informações sobre diretórios,\n"
+"    recomenda-se usar o comando ``file``, que é capaz de mostrar\n"
+"    tanto diretórios como arquivos."
+
+msgid "    The ``manifest`` template will be rendered for this handler."
+msgstr "    Renderiza usando o modelo ``manifest``."
+
+msgid ""
+"\n"
+"    /tags\n"
+"    -----"
+msgstr ""
+"\n"
+"    /tags\n"
+"    -----"
+
+msgid "    Show information about tags."
+msgstr "    Mostra informações sobre etiquetas."
+
+msgid "    No arguments are accepted."
+msgstr "    Este comando não recebe argumentos."
+
+msgid "    The ``tags`` template is rendered."
+msgstr "    Renderiza usando o modelo ``tags``."
+
+msgid ""
+"\n"
+"    /bookmarks\n"
+"    ----------"
+msgstr ""
+"\n"
+"    /bookmarks\n"
+"    ----------"
+
+msgid "    Show information about bookmarks."
+msgstr "    Mostra informações sobre marcadores."
+
+msgid "    The ``bookmarks`` template is rendered."
+msgstr "    Renderiza usando o modelo ``bookmarks``."
+
+msgid ""
+"\n"
+"    /branches\n"
+"    ---------"
+msgstr ""
+"\n"
+"    /branches\n"
+"    ---------"
+
+msgid "    Show information about branches."
+msgstr "    Mostra informações sobre ramos."
+
+msgid ""
+"    All known branches are contained in the output, even closed branches."
+msgstr ""
+"    São exibidas informações sobre todos os ramos conhecidos,\n"
+"    inclusive ramos fechados."
+
+msgid "    The ``branches`` template is rendered."
+msgstr "    Renderiza usando o modelo ``branches``."
+
+msgid ""
+"\n"
+"    /summary\n"
+"    --------"
+msgstr ""
+"\n"
+"    /summary\n"
+"    --------"
+
+msgid "    Show a summary of repository state."
+msgstr "    Mostra um resumo do restado do repositório."
+
+msgid ""
+"    Information about the latest changesets, bookmarks, tags, and branches\n"
+"    is captured by this handler."
+msgstr ""
+"    Exibe informações sobre as últimas revisões, marcadores,\n"
+"    etiquetas e ramos."
+
+msgid "    The ``summary`` template is rendered."
+msgstr "    Renderiza usando o modelo ``summary``."
+
+msgid ""
+"\n"
+"    /diff/{revision}/{path}\n"
+"    -----------------------"
+msgstr ""
+"\n"
+"    /diff/{revisão}/{caminho}\n"
+"    -------------------------"
+
+msgid "    Show how a file changed in a particular commit."
+msgstr ""
+"    Mostra de que forma um arquivo mudou em uma revisão em particular."
+
+msgid "    The ``filediff`` template is rendered."
+msgstr "    Renderiza usando o modelo ``filediff``."
+
+msgid ""
+"    This hander is registered under both the ``/diff`` and ``/filediff``\n"
+"    paths. ``/diff`` is used in modern code."
+msgstr ""
+"    Tanto ``/diff`` como ``/filediff`` executam este comando.\n"
+"    ``/diff`` é usado em código mais recente."
+
+msgid ""
+"\n"
+"    /comparison/{revision}/{path}\n"
+"    -----------------------------"
+msgstr ""
+"\n"
+"    /comparison/{revisão}/{caminho}\n"
+"    -------------------------------"
+
+msgid ""
+"    Show a comparison between the old and new versions of a file from changes\n"
+"    made on a particular revision."
+msgstr ""
+"    Mostra uma comparação entre a versão antiga e a nova de\n"
+"    um arquivo a partir das mudanças feitas em uma revisão em\n"
+"    particular."
+
+msgid ""
+"    This is similar to the ``diff`` handler. However, this form features\n"
+"    a split or side-by-side diff rather than a unified diff."
+msgstr ""
+"    Similar ao comando ``diff``, mas exibe uma comparação\n"
+"    dividida ou lado-a-lado ao invés de um diff unificado."
+
+msgid ""
+"    The ``context`` query string argument can be used to control the lines of\n"
+"    context in the diff."
+msgstr ""
+"    O argumento da string de consulta ``context`` pode ser usado\n"
+"    para controlar as linhas de contexto no diff."
+
+msgid "    The ``filecomparison`` template is rendered."
+msgstr "    Renderiza usando o modelo ``filecomparison``."
+
 #, python-format
 msgid "(binary file %s, hash: %s)"
 msgstr "(arquivo binário %s, hash: %s)"
 
+msgid ""
+"\n"
+"    /annotate/{revision}/{path}\n"
+"    ---------------------------"
+msgstr ""
+"\n"
+"    /annotate/{revisão}/{caminho}\n"
+"    -----------------------------"
+
+msgid "    Show changeset information for each line in a file."
+msgstr "    Mostra informações de revisão para cada linha de um arquivo."
+
+msgid "    The ``fileannotate`` template is rendered."
+msgstr "    Renderiza usando o modelo ``fileannotate``."
+
+msgid ""
+"\n"
+"    /filelog/{revision}/{path}\n"
+"    --------------------------"
+msgstr ""
+"\n"
+"    /filelog/{revisão}/{caminho}\n"
+"    ----------------------------"
+
+msgid "    Show information about the history of a file in the repository."
+msgstr ""
+"    Mostra informações sobre o histórico de um arquivo\n"
+"    no repositório."
+
+msgid ""
+"    The ``revcount`` query string argument can be defined to control the\n"
+"    maximum number of entries to show."
+msgstr ""
+"    O argumento da string de consulta ``revcount`` pode ser definido\n"
+"    para controlar o número máximo de entradas exibidas."
+
+msgid "    The ``filelog`` template will be rendered."
+msgstr "    Renderiza usando o modelo ``filelog``."
+
+msgid ""
+"\n"
+"    /archive/{revision}.{format}[/{path}]\n"
+"    -------------------------------------"
+msgstr ""
+"\n"
+"    /archive/{revisão}.{formato}[/{caminho}]\n"
+"    ----------------------------------------"
+
+msgid "    Obtain an archive of repository content."
+msgstr "    Obtém um pacote não versionado do conteúdo do repositório."
+
+msgid ""
+"    The content and type of the archive is defined by a URL path parameter.\n"
+"    ``format`` is the file extension of the archive type to be generated. e.g.\n"
+"    ``zip`` or ``tar.bz2``. Not all archive types may be allowed by your\n"
+"    server configuration."
+msgstr ""
+"    O conteúdo e tipo do arquivo são definidos por um parâmetro\n"
+"    no caminho da URL. ``formato`` é a extensão de arquivo do\n"
+"    tipo de pacote a ser gerado, por exemplo ``zip`` ou ``tar.bz2``.\n"
+"    Nem todos os tipos de arquivo podem ser permitidos pela\n"
+"    configuração do servidor."
+
+msgid ""
+"    The optional ``path`` URL parameter controls content to include in the\n"
+"    archive. If omitted, every file in the specified revision is present in the\n"
+"    archive. If included, only the specified file or contents of the specified\n"
+"    directory will be included in the archive."
+msgstr ""
+"    O parâmetro opcional ``caminho`` controla o conteúdo a ser\n"
+"    incluído no pacote. Se omitido, serão incluídos todos os\n"
+"    arquivos presentes na revisão pedida. Se definido, apenas\n"
+"    o arquivo ou o conteúdo sob o diretório especificado será\n"
+"    incluído no pacote."
+
+msgid ""
+"    No template is used for this handler. Raw, binary content is generated."
+msgstr "    Este comando não usa modelos, e gera conteúdo binário."
+
+msgid ""
+"\n"
+"    /graph[/{revision}]\n"
+"    -------------------"
+msgstr ""
+"\n"
+"    /graph[/{revisão}]\n"
+"    ------------------"
+
+msgid "    Show information about the graphical topology of the repository."
+msgstr "    Mostra uma representação gráfica da topologia do repositório."
+
+msgid ""
+"    Information rendered by this handler can be used to create visual\n"
+"    representations of repository topology."
+msgstr ""
+"    As informações renderizadas por este comando podem ser\n"
+"    usadas para criar representações visuais da topologia\n"
+"    do repositório."
+
+msgid "    The ``revision`` URL parameter controls the starting changeset."
+msgstr "    O parâmetro URL ``revisão`` controla a revisão inicial."
+
+msgid ""
+"    The ``revcount`` query string argument can define the number of changesets\n"
+"    to show information for."
+msgstr ""
+"    O argumento da string de consulta ``revcount`` pode ser usado\n"
+"    para definir o número de revisões exibidas."
+
+msgid "    This handler will render the ``graph`` template."
+msgstr "    Renderiza usando o modelo ``graph``."
+
+msgid ""
+"\n"
+"    /help[/{topic}]\n"
+"    ---------------"
+msgstr ""
+"\n"
+"    /help[/{tópico}]\n"
+"    ----------------"
+
+msgid "    Render help documentation."
+msgstr "    Renderiza documentação de ajuda."
+
+msgid ""
+"    This web command is roughly equivalent to :hg:`help`. If a ``topic``\n"
+"    is defined, that help topic will be rendered. If not, an index of\n"
+"    available help topics will be rendered."
+msgstr ""
+"    Este comando web é aproximadamente equivalente a :hg:`help`.\n"
+"    Se um ``tópico`` for definido, serão exibidas informações sobre\n"
+"    esse tópico. Se não, será exibido um índice contendo os tópicos\n"
+"    de ajuda disponíveis."
+
+msgid ""
+"    The ``help`` template will be rendered when requesting help for a topic.\n"
+"    ``helptopics`` will be rendered for the index of help topics."
+msgstr ""
+"    Renderiza tópicos específicos usando o modelo ``help``.\n"
+"    O modelo ``helptopics`` é usado para gerar o índice de tópicos."
+
 #, python-format
 msgid " %d files changed, %d insertions(+), %d deletions(-)\n"
 msgstr " %d arquivos modificados, %d inserções(+), %d remoções(-)\n"
@@ -25090,6 +25985,12 @@
 msgstr ".hg/sharedpath aponta para diretório %s inexistente"
 
 #, python-format
+msgid "obsolete feature not enabled but %i markers found!\n"
+msgstr ""
+"a funcionalidade obsolete não está habilitada, mas foram encontradas %i "
+"marcações!\n"
+
+#, python-format
 msgid "warning: ignoring unknown working parent %s!\n"
 msgstr "aviso: ignorando pai desconhecido do diretório de trabalho '%s'!\n"
 
@@ -25320,6 +26221,10 @@
 msgstr "'\\n' e '\\r' proibidos em nomes de arquivos: %r"
 
 #, python-format
+msgid "unable to read file list (%s)"
+msgstr "incapaz de ler lista de arquivos (%s)"
+
+#, python-format
 msgid "invalid pattern (%s): %s"
 msgstr "padrão inválido (%s): %s"
 
@@ -25327,10 +26232,6 @@
 msgstr "padrão inválido"
 
 #, python-format
-msgid "unable to read file list (%s)"
-msgstr "incapaz de ler lista de arquivos (%s)"
-
-#, 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"
 
@@ -25363,6 +26264,9 @@
 msgid "note: merging %s and %s using bids from ancestors %s\n"
 msgstr "nota: mesclando %s e %s usando lances dos ancestrais %s\n"
 
+msgid " and "
+msgstr " e "
+
 #, python-format
 msgid ""
 "\n"
@@ -25414,10 +26318,6 @@
 msgid "use 'hg status' to list changes"
 msgstr "use 'hg status' para listar as mudanças"
 
-#, python-format
-msgid "uncommitted changes in subrepository '%s'"
-msgstr "mudanças não consolidadas no sub-repositório '%s'"
-
 msgid "commit and merge, or update --clean to discard changes"
 msgstr "execute commit e merge, ou update --clean para descartar mudanças"
 
@@ -25586,6 +26486,66 @@
 msgid "Hunk #%d FAILED at %d\n"
 msgstr "Trecho #%d FALHOU em %d\n"
 
+msgid "this modifies a binary file (all or nothing)\n"
+msgstr "isto modifica um arquivo binário (tudo ou nada)\n"
+
+msgid "this is a binary file\n"
+msgstr "este é um arquivo binário\n"
+
+#, python-format
+msgid "%d hunks, %d lines changed\n"
+msgstr "%d trechos, %d linhas modificadas\n"
+
+msgid ""
+"[Ynesfdaq?]$$ &Yes, record this change$$ &No, skip this change$$ &Edit this "
+"change manually$$ &Skip remaining changes to this file$$ Record remaining "
+"changes to this &file$$ &Done, skip remaining changes and files$$ Record "
+"&all changes to all remaining files$$ &Quit, recording no changes$$ &? "
+"(display help)"
+msgstr ""
+"[Ynesfdaq?]$$ (&Y) sim, grave esta mudança$$ &Não, descarte esta mudança$$ "
+"&Edite esta mudança manualmente$$ De&Scarte as mudanças restantes neste "
+"arquivo$$ (&F) grave as mudanças restantes deste arquivo$$ Termina&Do, "
+"descarte as mudanças e arquivos restantes$$ Grave tod&As as mudanças de "
+"todos os arquivos restantes$$ (&Q) encerra, sem gravar nenhuma mudança$$ &? "
+"(exibe a ajuda)"
+
+msgid ""
+"\n"
+"To remove '-' lines, make them ' ' lines (context).\n"
+"To remove '+' lines, delete them.\n"
+"Lines starting with # will be removed from the patch."
+msgstr ""
+"\n"
+"Para remover linhas '-', marque-as como linhas ' ' (contexto).\n"
+"Para remover linhas '+', apague-as.\n"
+"Linhas iniciadas por '#' serão removidas do patch."
+
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be\n"
+"added to the record list. If it does not apply cleanly, a rejects\n"
+"file will be generated: you can use that when you try again. If\n"
+"all lines of the hunk are removed, then the edit is aborted and\n"
+"the hunk is left unchanged.\n"
+msgstr ""
+"Se o patch aplicar de forma limpa, o trecho editado será adicionado\n"
+"imediatamente à lista de gravação. Se o patch não aplicar de forma\n"
+"limpa, um arquivo de rejeitos será gerado: você poderá usar esse\n"
+"arquivo ao tentar novamente. Se todas as linhas do trecho forem\n"
+"removidas, a edição será abortada e o trecho não será modificado.\n"
+
+#, python-format
+msgid "examine changes to %s?"
+msgstr "examinar mudanças em %s?"
+
+#, python-format
+msgid "record this change to '%s'?"
+msgstr "gravar esta mudança em '%s'?"
+
+#, python-format
+msgid "record change %d/%d to '%s'?"
+msgstr "gravar mudança %d/%d em '%s'?"
+
 #, python-format
 msgid "bad hunk #%d"
 msgstr "trecho ruim #%d"
@@ -25778,6 +26738,10 @@
 msgstr "o nó %s não é censurado"
 
 #, python-format
+msgid "syntax error in revset '%s'"
+msgstr "erro de sintaxe no revset '%s'"
+
+#, python-format
 msgid "at %s: %s"
 msgstr "em %s: %s"
 
@@ -26154,12 +27118,13 @@
 
 msgid ""
 "``follow([file])``\n"
-"    An alias for ``::.`` (ancestors of the working copy's first parent).\n"
+"    An alias for ``::.`` (ancestors of the working directory's first parent).\n"
 "    If a filename is specified, the history of the given file is followed,\n"
 "    including copies."
 msgstr ""
 "``follow([arquivo])``\n"
-"    Um apelido para ``::.`` (ancestrais do primeiro pai da cópia de trabalho).\n"
+"    Um apelido para ``::.`` (ancestrais do primeiro pai do diretório\n"
+"    de trabalho).\n"
 "    Se um nome de arquivo for especificado, o histórico do arquivo pedido será\n"
 "    seguido, incluindo cópias."
 
@@ -26710,6 +27675,19 @@
 msgid "unknown sort key %r"
 msgstr "especificação de ordenação desconhecida: %r"
 
+msgid ""
+"``subrepo([pattern])``\n"
+"    Changesets that add, modify or remove the given subrepo.  If no subrepo\n"
+"    pattern is named, any subrepo changes are returned."
+msgstr ""
+"``subrepo([pattern])``\n"
+"    Revisões que adicionam, modificam ou removem o sub-repositório\n"
+"    pedido. Se não for especificado, informa revisões que alterem\n"
+"    qualquer sub-repositório."
+
+msgid "subrepo requires a pattern"
+msgstr "subrepo requer um padrão"
+
 #, python-format
 msgid "invalid regular expression: %s"
 msgstr "expressão regular inválida: %s"
@@ -26768,6 +27746,10 @@
 "    uma expressão regular. Para combinar com um usuário que contiver\n"
 "    `re:` literalmente, use o prefixo `literal:`."
 
+#. i18n: "wdir" is a keyword
+msgid "wdir takes no arguments"
+msgstr "wdir não tem argumentos"
+
 msgid "can't negate that"
 msgstr "não é possível negar essa expressão"
 
@@ -27018,18 +28000,18 @@
 msgstr "(no sub-repositório %s)"
 
 #, python-format
-msgid "warning: subrepo spec file %s not found\n"
-msgstr "aviso: arquivo spec de sub-repositório %s não encontrado\n"
-
-#, python-format
-msgid "subrepo spec file %s not found"
-msgstr "arquivo spec de sub-repositório %s não encontrado"
-
-#, python-format
-msgid "invalid subrepository revision specifier in .hgsubstate line %d"
-msgstr ""
-"especificador de revisão de sub-repositório inválido na linha %d do arquivo "
-".hgsubstate"
+msgid "warning: subrepo spec file '%s' not found\n"
+msgstr "aviso: arquivo spec de sub-repositório '%s' não encontrado\n"
+
+#, python-format
+msgid "subrepo spec file '%s' not found"
+msgstr "arquivo spec de sub-repositório '%s' não encontrado"
+
+#, python-format
+msgid "invalid subrepository revision specifier in '%s' line %d"
+msgstr ""
+"especificador de revisão de sub-repositório inválido no arquivo '%s' linha "
+"%d"
 
 #, python-format
 msgid "bad subrepository pattern in %s: %s"
@@ -27103,6 +28085,10 @@
 msgid "warning: changes are committed in %s phase from subrepository %s\n"
 msgstr "aviso: mudanças consolidadas na fase \"%s\" do sub-repositório %s\n"
 
+#, python-format
+msgid "uncommitted changes in subrepository '%s'"
+msgstr "mudanças não consolidadas no sub-repositório '%s'"
+
 msgid "addremove is not supported"
 msgstr "addremove não é suportado"
 
@@ -27224,9 +28210,6 @@
 msgid "node '%s' is not well formed"
 msgstr "nó '%s' não é bem formado"
 
-msgid ".hg/cache/tags is corrupt, rebuilding it\n"
-msgstr ".hg/cache/tags está corrompido, reconstruindo\n"
-
 msgid ""
 ":addbreaks: Any text. Add an XHTML \"<br />\" tag before the end of\n"
 "    every line except the last."
@@ -27337,6 +28320,9 @@
 msgid ":localdate: Date. Converts a date to local date."
 msgstr ":localdate: Data. Converte para data local."
 
+msgid ":lower: Any text. Converts the text to lowercase."
+msgstr ":lower: Qualquer texto. Converte o texto para minúsculas."
+
 msgid ":nonempty: Any text. Returns '(none)' if the string is empty."
 msgstr ":nonempty: Qualquer texto. Devolve (none) se o texto for vazio."
 
@@ -27453,6 +28439,9 @@
 ":tabindent: Qualquer texto. Insere um caractere de tabulação no\n"
 "    início de cada linha não vazia do texto, exceto a primeira."
 
+msgid ":upper: Any text. Converts the text to uppercase."
+msgstr ":upper: Qualquer texto. Converte o texto para maiúsculas."
+
 msgid ""
 ":urlescape: Any text. Escapes all \"special\" characters. For example,\n"
 "    \"foo bar\" becomes \"foo%20bar\"."
@@ -27646,14 +28635,37 @@
 msgid "filter %s expects one argument"
 msgstr "o filtro %s espera um argumento"
 
+msgid ""
+":date(date[, fmt]): Format a date. See :hg:`help dates` for formatting\n"
+"    strings."
+msgstr ""
+":date(date[, fmt]): Formata uma data. Veja :hg:`help dates` para\n"
+"    strings de formatação."
+
 #. i18n: "date" is a keyword
 msgid "date expects one or two arguments"
 msgstr "date espera um ou dois argumentos"
 
+msgid ""
+":diff([includepattern [, excludepattern]]): Show a diff, optionally\n"
+"    specifying files to include or exclude."
+msgstr ""
+":diff([padrãodeinclusão [, padrãodeexclusão]]): Mostra um diff,\n"
+"    opcionalmente especificando arquivos a serem excluídos\n"
+"    ou incluídos."
+
 #. i18n: "diff" is a keyword
 msgid "diff expects one, two or no arguments"
 msgstr "diff espera um, dois ou nenhum argumento"
 
+msgid ""
+":fill(text[, width[, initialident[, hangindent]]]): Fill many\n"
+"    paragraphs with optional indentation. See the \"fill\" filter."
+msgstr ""
+":fill(texto[, largura[, identaçãoinicial[, identação]]]): Preenche\n"
+"    diversos parágrafos com identação opcional. Veja o filtro\n"
+"    \"fill\"."
+
 #. i18n: "fill" is a keyword
 msgid "fill expects one to four arguments"
 msgstr "fill espera de um a quatro argumentos"
@@ -27662,10 +28674,26 @@
 msgid "fill expects an integer width"
 msgstr "fill espera um número inteiro"
 
+msgid ""
+":pad(text, width[, fillchar=' '[, right=False]]): Pad text with a\n"
+"    fill character."
+msgstr ""
+":pad(texto, largura[, preenchimento=' '[, direita=False]]): Envolve\n"
+"    o texto com um caractere de preenchimento."
+
 #. i18n: "pad" is a keyword
 msgid "pad() expects two to four arguments"
 msgstr "pad() espera de dois a quatro 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."
+msgstr ""
+":get(dicionário, chave): Obtém um atributo ou chave de um objeto.\n"
+"    Algumas chaves são tipos complexos. Esta função possibilita\n"
+"    obter o valor de um atributo desses tipos."
+
 #. i18n: "get" is a keyword
 msgid "get() expects two arguments"
 msgstr "get() espera dois argumentos"
@@ -27674,46 +28702,117 @@
 msgid "get() expects a dict as first argument"
 msgstr "get() espera um dicionário como primeiro argumento"
 
+msgid ""
+":if(expr, then[, else]): Conditionally execute based on the result of\n"
+"    an expression."
+msgstr ""
+":if(expressão, então[, senão]): Executa condicionalmente de acordo\n"
+"    com o resultado de uma expressão."
+
 #. i18n: "if" is a keyword
 msgid "if expects two or three arguments"
 msgstr "if espera dois ou três argumentos"
 
+msgid ""
+":ifcontains(search, thing, then[, else]): Conditionally execute based\n"
+"    on whether the item \"search\" is in \"thing\"."
+msgstr ""
+":ifcontains(busca, coisa, então[, senão]): Executa se o item\n"
+"    \"busca\" estiver em \"coisa\"."
+
 #. i18n: "ifcontains" is a keyword
 msgid "ifcontains expects three or four arguments"
 msgstr "ifcontains espera três ou quatro argumentos"
 
+msgid ""
+":ifeq(expr1, expr2, then[, else]): Conditionally execute based on\n"
+"    whether 2 items are equivalent."
+msgstr ""
+":ifeq(expr1, expr2, então[, senão]): Executa se os dois itens\n"
+"    forem equivalentes."
+
 #. i18n: "ifeq" is a keyword
 msgid "ifeq expects three or four arguments"
 msgstr "ifeq espera três ou quatro argumentos"
 
+msgid ":join(list, sep): Join items in a list with a delimiter."
+msgstr ":join(lista, delim): Agrupa itens de uma lista usando um delimitador."
+
 #. i18n: "join" is a keyword
 msgid "join expects one or two arguments"
 msgstr "join espera um ou dois argumentos"
 
+msgid ""
+":label(label, expr): Apply a label to generated content. Content with\n"
+"    a label applied can result in additional post-processing, such as\n"
+"    automatic colorization."
+msgstr ""
+":label(rótulo, expressão): Aplica um rótulo a um conteúdo gerado.\n"
+"    O rótulo pode provocar pós-processamento adicional, por exemplo\n"
+"    coloração automática."
+
+msgid ""
+":revset(query[, formatargs...]): Execute a revision set query. See\n"
+"    :hg:`help revset`."
+msgstr ""
+":revset(consulta[, formato...]): Executa uma busca por revisões.\n"
+"    Veja :hg:`help revset`."
+
 #. i18n: "revset" is a keyword
 msgid "revset expects one or more arguments"
 msgstr "revset espera um ou mais argumentos"
 
+msgid ":rstdoc(text, style): Format ReStructuredText."
+msgstr ":rstdoc(texto, estilo): Formata ReStructuredText."
+
 #. i18n: "rstdoc" is a keyword
 msgid "rstdoc expects two arguments"
 msgstr "rstdoc espera dois argumentos"
 
+msgid ""
+":shortest(node, minlength=4): Obtain the shortest representation of\n"
+"    a node."
+msgstr ""
+":shortest(no, comprimentomínimo=4): Obtém a representação mais\n"
+"    curta de um nó."
+
 #. i18n: "shortest" is a keyword
 msgid "shortest() expects one or two arguments"
 msgstr "shortest() espera um ou dois argumentos"
 
+msgid ":strip(text[, chars]): Strip characters from a string."
+msgstr ":strip(texto[, caracteres]): Remove caracteres de uma string."
+
 #. i18n: "strip" is a keyword
 msgid "strip expects one or two arguments"
 msgstr "strip espera um ou dois argumentos"
 
+msgid ""
+":sub(pattern, replacement, expression): Perform text substitution\n"
+"    using regular expressions."
+msgstr ""
+":sub(padrão, substituição, expressão): Realiza substituição de texto\n"
+"    usando uma expressão regular."
+
 #. i18n: "sub" is a keyword
 msgid "sub expects three arguments"
 msgstr "sub espera três argumentos"
 
+msgid ""
+":startswith(pattern, text): Returns the value from the \"text\" argument\n"
+"    if it begins with the content from the \"pattern\" argument."
+msgstr ""
+":startswith(padrão, texto): Devolve o argumento \"texto\" se ele\n"
+"    começar com o argumento \"padrão\"."
+
 #. i18n: "startswith" is a keyword
 msgid "startswith expects two arguments"
 msgstr "startswith espera dois argumentos"
 
+msgid ":word(number, text[, separator]): Return the nth word from a string."
+msgstr ""
+"- word(número, texto[, separador]): Retorna a enésima palavra de uma string."
+
 #. i18n: "word" is a keyword
 #, python-format
 msgid "word expects two or three arguments, got %d"
@@ -27770,8 +28869,8 @@
 msgid "couldn't read journal entry %r!\n"
 msgstr "não foi possível ler a entrada do jornal %r!\n"
 
-msgid "journal was created by a different version of Mercurial"
-msgstr "o journal foi criado por uma versão diferente do Mercurial"
+msgid "journal was created by a different version of Mercurial\n"
+msgstr "o journal foi criado por uma versão diferente do Mercurial\n"
 
 msgid "already have changeset "
 msgstr "já possui a revisão "
@@ -27869,6 +28968,12 @@
 msgid "command '%s' failed: %s"
 msgstr "falha ao executar o comando '%s' : %s"
 
+msgid "linking"
+msgstr "lincando"
+
+msgid "copying"
+msgstr "copiando"
+
 msgid "filename ends with '\\', which is invalid on Windows"
 msgstr "o nome de arquivo termina em '\\', o que não é permitido em Windows"
 
@@ -28217,6 +29322,105 @@
 msgid "number of cpus must be an integer"
 msgstr "o número de cpus deve ser um inteiro"
 
+#~ msgid "hg debug-merge-base REV REV"
+#~ msgstr "hg debug-merge-base REV REV"
+
+#~ msgid "hg debug-cat-file [OPTION]... TYPE FILE"
+#~ msgstr "hg debug-cat-file [OPÇÃO]... TIPO ARQUIVO"
+
+#~ msgid "hg debug-rev-parse REV"
+#~ msgstr "hg debug-rev-parse REV"
+
+#~ msgid "parse given revisions"
+#~ msgstr "decodifica as revisões dadas"
+
+#~ msgid "hg debug-config"
+#~ msgstr "hg debug-config"
+
+#~ msgid "print extension options"
+#~ msgstr "imprime opções da extensão"
+
+#~ msgid "%s: empty changeset"
+#~ msgstr "%s: revisão vazia"
+
+#~ msgid "use \"histedit --abort\" to clear broken state"
+#~ msgstr "use \"histedit --abort\" para limpar o estado quebrado"
+
+#~ msgid "uncommitted changes in subrepository %s"
+#~ msgstr "mudanças não consolidadas no sub-repositório %s"
+
+#~ msgid "uncommitted changes in subrepo %s"
+#~ msgstr "mudanças não consolidadas no sub-repositório %s"
+
+#~ msgid ""
+#~ "    This is useful for writing repository conversion tools, but should\n"
+#~ "    be used with care."
+#~ msgstr ""
+#~ "    Isto é útil para escrever utilitários de conversão de repositórios, mas\n"
+#~ "    deve ser usado com cuidado."
+
+#~ msgid ""
+#~ "    If no patterns are given to match, this command prints the names\n"
+#~ "    of all files under Mercurial control in the working copy."
+#~ msgstr ""
+#~ "    Se não forem passados padrões, este comando imprime os nomes\n"
+#~ "    de todos os arquivos sob o controle do Mercurial na cópia de\n"
+#~ "    trabalho."
+
+#~ msgid "not a function: %s"
+#~ msgstr "não é uma função: %s"
+
+#~ msgid "- date(date[, fmt])"
+#~ msgstr "- date(data[, formato])"
+
+#~ msgid "- diff([includepattern [, excludepattern]])"
+#~ msgstr "- diff([padrãodeinclusão [, padrãodeexclusão]])"
+
+#~ msgid "- fill(text[, width])"
+#~ msgstr "- fill(texto[, comprimento])"
+
+#~ msgid "- get(dict, key)"
+#~ msgstr "- get(dicionário, chave)"
+
+#~ msgid "- if(expr, then[, else])"
+#~ msgstr "- if(expr, então[, senão])"
+
+#~ msgid "- ifcontains(expr, expr, then[, else])"
+#~ msgstr "- ifcontains(expr, expr, então[, senão])"
+
+#~ msgid "- ifeq(expr, expr, then[, else])"
+#~ msgstr "- ifeq(expr, expr, então[, senão])"
+
+#~ msgid "- join(list, sep)"
+#~ msgstr "- join(lista, separador)"
+
+#~ msgid "- label(label, expr)"
+#~ msgstr "- label(label, expr)"
+
+#~ msgid "- pad(text, width[, fillchar, right])"
+#~ msgstr "- pad(texto, largura[, preenchimento, direita])"
+
+#~ msgid "- revset(query[, formatargs])"
+#~ msgstr "- revset(consulta[, formato])"
+
+#~ msgid "- rstdoc(text, style)"
+#~ msgstr "- rstdoc(texto, estilo)"
+
+#~ msgid "- shortest(node)"
+#~ msgstr "- shortest(nó)"
+
+#~ msgid "- startswith(string, text)"
+#~ msgstr "- startswith(string, texto)"
+
+#~ msgid "- strip(text[, chars])"
+#~ msgstr "- strip(texto[, caracteres])"
+
+#~ msgid "- sub(pat, repl, expr)"
+#~ msgstr "- sub(padrão, substituição, expressão)"
+
+#~ msgid ".hg/cache/tags is corrupt, rebuilding it\n"
+#~ msgstr ".hg/cache/tags está corrompido, reconstruindo\n"
+
 #~ msgid "%s\n"
 #~ msgstr "%s\n"
 
--- a/mercurial/bookmarks.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/bookmarks.py	Fri May 01 17:21:10 2015 -0500
@@ -463,12 +463,16 @@
         def add(b, id, st):
             incomings.append("   %-25s %s\n" % (b, getid(id)))
     for b, scid, dcid in addsrc:
+        # i18n: "added" refers to a bookmark
         add(b, scid, _('added'))
     for b, scid, dcid in advsrc:
+        # i18n: "advanced" refers to a bookmark
         add(b, scid, _('advanced'))
     for b, scid, dcid in diverge:
+        # i18n: "diverged" refers to a bookmark
         add(b, scid, _('diverged'))
     for b, scid, dcid in differ:
+        # i18n: "changed" refers to a bookmark
         add(b, scid, _('changed'))
 
     if not incomings:
@@ -501,14 +505,19 @@
         def add(b, id, st):
             outgoings.append("   %-25s %s\n" % (b, getid(id)))
     for b, scid, dcid in addsrc:
+        # i18n: "added refers to a bookmark
         add(b, scid, _('added'))
     for b, scid, dcid in adddst:
+        # i18n: "deleted" refers to a bookmark
         add(b, ' ' * 40, _('deleted'))
     for b, scid, dcid in advsrc:
+        # i18n: "advanced" refers to a bookmark
         add(b, scid, _('advanced'))
     for b, scid, dcid in diverge:
+        # i18n: "diverged" refers to a bookmark
         add(b, scid, _('diverged'))
     for b, scid, dcid in differ:
+        # i18n: "changed" refers to a bookmark
         add(b, scid, _('changed'))
 
     if not outgoings:
--- a/mercurial/bundle2.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/bundle2.py	Fri May 01 17:21:10 2015 -0500
@@ -268,12 +268,13 @@
     * a way to construct a bundle response when applicable.
     """
 
-    def __init__(self, repo, transactiongetter):
+    def __init__(self, repo, transactiongetter, captureoutput=True):
         self.repo = repo
         self.ui = repo.ui
         self.records = unbundlerecords()
         self.gettransaction = transactiongetter
         self.reply = None
+        self.captureoutput = captureoutput
 
 class TransactionUnavailable(RuntimeError):
     pass
@@ -285,7 +286,7 @@
     to be created"""
     raise TransactionUnavailable()
 
-def processbundle(repo, unbundler, transactiongetter=None):
+def processbundle(repo, unbundler, transactiongetter=None, op=None):
     """This function process a bundle, apply effect to/from a repo
 
     It iterates over each part then searches for and uses the proper handling
@@ -295,10 +296,16 @@
     before final usage.
 
     Unknown Mandatory part will abort the process.
+
+    It is temporarily possible to provide a prebuilt bundleoperation to the
+    function. This is used to ensure output is properly propagated in case of
+    an error during the unbundling. This output capturing part will likely be
+    reworked and this ability will probably go away in the process.
     """
-    if transactiongetter is None:
-        transactiongetter = _notransaction
-    op = bundleoperation(repo, transactiongetter)
+    if op is None:
+        if transactiongetter is None:
+            transactiongetter = _notransaction
+        op = bundleoperation(repo, transactiongetter)
     # todo:
     # - replace this is a init function soon.
     # - exception catching
@@ -353,8 +360,8 @@
         # parthandlermapping lookup (any KeyError raised by handler()
         # itself represents a defect of a different variety).
         output = None
-        if op.reply is not None:
-            op.ui.pushbuffer(error=True)
+        if op.captureoutput and op.reply is not None:
+            op.ui.pushbuffer(error=True, subproc=True)
             output = ''
         try:
             handler(op, part)
@@ -834,6 +841,7 @@
     def __init__(self, ui):
         self.ui = ui
         self.reply = None
+        self.captureoutput = False
 
     @property
     def repo(self):
@@ -1171,7 +1179,7 @@
 def handleoutput(op, inpart):
     """forward output captured on the server to the client"""
     for line in inpart.read().splitlines():
-        op.ui.write(('remote: %s\n' % line))
+        op.ui.status(('remote: %s\n' % line))
 
 @parthandler('replycaps')
 def handlereplycaps(op, inpart):
--- a/mercurial/bundlerepo.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/bundlerepo.py	Fri May 01 17:21:10 2015 -0500
@@ -16,6 +16,7 @@
 import os, tempfile, shutil
 import changegroup, util, mdiff, discovery, cmdutil, scmutil, exchange
 import localrepo, changelog, manifest, filelog, revlog, error, phases, bundle2
+import pathutil
 
 class bundlerevlog(revlog.revlog):
     def __init__(self, opener, indexfile, bundle, linkmapper):
@@ -156,7 +157,15 @@
         # Although changelog doesn't override 'revision' method, some extensions
         # may replace this class with another that does. Same story with
         # manifest and filelog classes.
-        return changelog.changelog.revision(self, nodeorrev)
+
+        # This bypasses filtering on changelog.node() and rev() because we need
+        # revision text of the bundle base even if it is hidden.
+        oldfilter = self.filteredrevs
+        try:
+            self.filteredrevs = ()
+            return changelog.changelog.revision(self, nodeorrev)
+        finally:
+            self.filteredrevs = oldfilter
 
 class bundlemanifest(bundlerevlog, manifest.manifest):
     def __init__(self, opener, bundle, linkmapper):
@@ -352,7 +361,7 @@
         if parentpath == cwd:
             parentpath = ''
         else:
-            cwd = os.path.join(cwd,'')
+            cwd = pathutil.normasprefix(cwd)
             if parentpath.startswith(cwd):
                 parentpath = parentpath[len(cwd):]
     u = util.url(path)
--- a/mercurial/changelog.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/changelog.py	Fri May 01 17:21:10 2015 -0500
@@ -267,6 +267,8 @@
         self.checkinlinesize(tr)
 
     def readpending(self, file):
+        if not self.opener.exists(file):
+            return # no pending data for changelog
         r = revlog.revlog(self.opener, file)
         self.index = r.index
         self.nodemap = r.nodemap
--- a/mercurial/cmdutil.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/cmdutil.py	Fri May 01 17:21:10 2015 -0500
@@ -104,6 +104,14 @@
         except patch.PatchError, err:
             raise util.Abort(_('error parsing patch: %s') % err)
 
+        # We need to keep a backup of files that have been newly added and
+        # modified during the recording process because there is a previous
+        # version without the edit in the workdir
+        newlyaddedandmodifiedfiles = set()
+        for chunk in chunks:
+            if ishunk(chunk) and chunk.header.isnewfile() and chunk not in \
+                originalchunks:
+                newlyaddedandmodifiedfiles.add(chunk.header.filename())
         contenders = set()
         for h in chunks:
             try:
@@ -117,12 +125,6 @@
             ui.status(_('no changes to record\n'))
             return 0
 
-        newandmodifiedfiles = set()
-        for h in chunks:
-            isnew = h.filename() in status.added
-            if ishunk(h) and isnew and not h in originalchunks:
-                newandmodifiedfiles.add(h.filename())
-
         modified = set(status.modified)
 
         # 2. backup changed files, so we can restore them in the end
@@ -130,9 +132,8 @@
         if backupall:
             tobackup = changed
         else:
-            tobackup = [f for f in newfiles
-                        if f in modified or f in newandmodifiedfiles]
-
+            tobackup = [f for f in newfiles if f in modified or f in \
+                    newlyaddedandmodifiedfiles]
         backups = {}
         if tobackup:
             backupdir = repo.join('record-backups')
@@ -155,13 +156,12 @@
             fp = cStringIO.StringIO()
             for c in chunks:
                 fname = c.filename()
-                if fname in backups or fname in newandmodifiedfiles:
+                if fname in backups:
                     c.write(fp)
             dopatch = fp.tell()
             fp.seek(0)
 
-            [os.unlink(c) for c in newandmodifiedfiles]
-
+            [os.unlink(repo.wjoin(c)) for c in newlyaddedandmodifiedfiles]
             # 3a. apply filtered patch to clean repo  (clean)
             if backups:
                 # Equivalent to hg.revert
@@ -1142,7 +1142,7 @@
                               label='log.%s' % ns.colorname)
         if self.ui.debugflag:
             # i18n: column positioning for "hg log"
-            self.ui.write(_("phase:       %s\n") % _(ctx.phasestr()),
+            self.ui.write(_("phase:       %s\n") % ctx.phasestr(),
                           label='log.phase')
         for pctx in self._meaningful_parentrevs(ctx):
             label = 'log.parent changeset.%s' % pctx.phasestr()
@@ -3077,14 +3077,17 @@
     node = ctx.node()
     def checkout(f):
         fc = ctx[f]
-        repo.wwrite(f, fc.data(), fc.flags())
+        return repo.wwrite(f, fc.data(), fc.flags())
 
     audit_path = pathutil.pathauditor(repo.root)
     for f in actions['forget'][0]:
         repo.dirstate.drop(f)
     for f in actions['remove'][0]:
         audit_path(f)
-        util.unlinkpath(repo.wjoin(f))
+        try:
+            util.unlinkpath(repo.wjoin(f))
+        except OSError:
+            pass
         repo.dirstate.remove(f)
     for f in actions['drop'][0]:
         audit_path(f)
@@ -3125,9 +3128,13 @@
         del fp
     else:
         for f in actions['revert'][0]:
-            checkout(f)
+            wsize = checkout(f)
             if normal:
                 normal(f)
+            elif wsize == repo.dirstate._map[f][2]:
+                # changes may be overlooked without normallookup,
+                # if size isn't changed at reverting
+                repo.dirstate.normallookup(f)
 
     for f in actions['add'][0]:
         checkout(f)
--- a/mercurial/commands.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/commands.py	Fri May 01 17:21:10 2015 -0500
@@ -2370,6 +2370,7 @@
     # editor
     ui.status(_("checking commit editor...\n"))
     editor = ui.geteditor()
+    editor = util.expandpath(editor)
     cmdpath = util.findexe(shlex.split(editor)[0])
     if not cmdpath:
         if editor == 'vi':
@@ -2484,7 +2485,7 @@
             l.release()
         else:
             try:
-                stat = repo.svfs.lstat(name)
+                stat = vfs.lstat(name)
                 age = now - stat.st_mtime
                 user = util.username(stat.st_uid)
                 locker = vfs.readlock(name)
@@ -5464,7 +5465,8 @@
     ('d', 'date', '', _('tipmost revision matching date'), _('DATE')),
     ('r', 'rev', '', _('revert to the specified revision'), _('REV')),
     ('C', 'no-backup', None, _('do not save backup copies of files')),
-    ('i', 'interactive', None, _('interactively select the changes')),
+    ('i', 'interactive', None,
+            _('interactively select the changes (EXPERIMENTAL)')),
     ] + walkopts + dryrunopts,
     _('[OPTION]... [-r REV] [NAME]...'))
 def revert(ui, repo, *pats, **opts):
@@ -5511,7 +5513,8 @@
 
     ctx = scmutil.revsingle(repo, opts.get('rev'))
 
-    if not pats and not (opts.get('all') or opts.get('interactive')):
+    if (not (pats or opts.get('include') or opts.get('exclude') or
+             opts.get('all') or opts.get('interactive'))):
         msg = _("no files or directories specified")
         if p2 != nullid:
             hint = _("uncommitted merge, use --all to discard all changes,"
@@ -5837,14 +5840,15 @@
         else:
             show = states[:5]
 
-    stat = repo.status(node1, node2, scmutil.match(repo[node2], pats, opts),
+    m = scmutil.match(repo[node2], pats, opts)
+    stat = repo.status(node1, node2, m,
                        'ignored' in show, 'clean' in show, 'unknown' in show,
                        opts.get('subrepos'))
     changestates = zip(states, 'MAR!?IC', stat)
 
     if (opts.get('all') or opts.get('copies')
         or ui.configbool('ui', 'statuscopies')) and not opts.get('no_status'):
-        copy = copies.pathcopies(repo[node1], repo[node2])
+        copy = copies.pathcopies(repo[node1], repo[node2], m)
 
     fm = ui.formatter('status', opts)
     fmt = '%s' + end
--- a/mercurial/context.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/context.py	Fri May 01 17:21:10 2015 -0500
@@ -806,6 +806,22 @@
         return self._adjustlinkrev(self._path, self._filelog, self._filenode,
                                    self.rev(), inclusive=True)
 
+    def _parentfilectx(self, path, fileid, filelog):
+        """create parent filectx keeping ancestry info for _adjustlinkrev()"""
+        fctx = filectx(self._repo, path, fileid=fileid, filelog=filelog)
+        if '_changeid' in vars(self) or '_changectx' in vars(self):
+            # If self is associated with a changeset (probably explicitly
+            # fed), ensure the created filectx is associated with a
+            # changeset that is an ancestor of self.changectx.
+            # This lets us later use _adjustlinkrev to get a correct link.
+            fctx._descendantrev = self.rev()
+            fctx._ancestrycontext = getattr(self, '_ancestrycontext', None)
+        elif '_descendantrev' in vars(self):
+            # Otherwise propagate _descendantrev if we have one associated.
+            fctx._descendantrev = self._descendantrev
+            fctx._ancestrycontext = getattr(self, '_ancestrycontext', None)
+        return fctx
+
     def parents(self):
         _path = self._path
         fl = self._filelog
@@ -824,25 +840,7 @@
             # first nullid parent with rename information.
             pl.insert(0, (r[0], r[1], self._repo.file(r[0])))
 
-        ret = []
-        for path, fnode, l in pl:
-            if '_changeid' in vars(self) or '_changectx' in vars(self):
-                # If self is associated with a changeset (probably explicitly
-                # fed), ensure the created filectx is associated with a
-                # changeset that is an ancestor of self.changectx.
-                # This lets us later use _adjustlinkrev to get a correct link.
-                fctx = filectx(self._repo, path, fileid=fnode, filelog=l)
-                fctx._descendantrev = self.rev()
-                fctx._ancestrycontext = getattr(self, '_ancestrycontext', None)
-            elif '_descendantrev' in vars(self):
-                # Otherwise propagate _descendantrev if we have one associated.
-                fctx = filectx(self._repo, path, fileid=fnode, filelog=l)
-                fctx._descendantrev = self._descendantrev
-                fctx._ancestrycontext = getattr(self, '_ancestrycontext', None)
-            else:
-                fctx = filectx(self._repo, path, fileid=fnode, filelog=l)
-            ret.append(fctx)
-        return ret
+        return [self._parentfilectx(path, fnode, l) for path, fnode, l in pl]
 
     def p1(self):
         return self.parents()[0]
@@ -889,6 +887,11 @@
         getlog = util.lrucachefunc(lambda x: self._repo.file(x))
 
         def parents(f):
+            # Cut _descendantrev here to mitigate the penalty of lazy linkrev
+            # adjustment. Otherwise, p._adjustlinkrev() would walk changelog
+            # from the topmost introrev (= srcrev) down to p.linkrev() if it
+            # isn't an ancestor of the srcrev.
+            f._changeid
             pl = f.parents()
 
             # Don't return renamed parents if we aren't following.
@@ -908,8 +911,15 @@
         introrev = self.introrev()
         if self.rev() != introrev:
             base = self.filectx(self.filenode(), changeid=introrev)
-        if introrev and getattr(base, '_ancestrycontext', None) is None:
-            ac = self._repo.changelog.ancestors([introrev], inclusive=True)
+        if getattr(base, '_ancestrycontext', None) is None:
+            cl = self._repo.changelog
+            if introrev is None:
+                # wctx is not inclusive, but works because _ancestrycontext
+                # is used to test filelog revisions
+                ac = cl.ancestors([p.rev() for p in base.parents()],
+                                  inclusive=True)
+            else:
+                ac = cl.ancestors([introrev], inclusive=True)
             base._ancestrycontext = ac
 
         # This algorithm would prefer to be recursive, but Python is a
@@ -1620,7 +1630,7 @@
         for pc in pcl[1:]:
             pl.append((path, filenode(pc, path), fl))
 
-        return [filectx(self._repo, p, fileid=n, filelog=l)
+        return [self._parentfilectx(p, fileid=n, filelog=l)
                 for p, n, l in pl if n != nullid]
 
     def children(self):
--- a/mercurial/crecord.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/crecord.py	Fri May 01 17:21:10 2015 -0500
@@ -978,7 +978,7 @@
                         "(space/A) toggle hunk/all; (e)dit hunk;",
                         pairname="legend")
             printstring(self.statuswin,
-                        " (f)old/unfold; (c)ommit applied; (q)uit; (?) help "
+                        " (f)old/unfold; (c)onfirm applied; (q)uit; (?) help "
                         "| [X]=hunk applied **=folded",
                         pairname="legend")
         except curses.error:
@@ -1319,7 +1319,8 @@
         helptext = """            [press any key to return to the patch-display]
 
 crecord allows you to interactively choose among the changes you have made,
-and commit only those changes you select.  after committing the selected
+and confirm only those changes you select for further processing by the command
+you are running (commit/shelve/revert), after confirming the selected
 changes, the unselected changes are still present in your working copy, so you
 can use crecord multiple times to split large changes into smaller changesets.
 the following are valid keystrokes:
@@ -1335,9 +1336,9 @@
                       m : edit / resume editing the commit message
                       e : edit the currently selected hunk
                       a : toggle amend mode (hg rev >= 2.2)
-                      c : commit selected changes
-                      r : review/edit and commit selected changes
-                      q : quit without committing (no changes will be made)
+                      c : confirm selected changes
+                      r : review/edit and confirm selected changes
+                      q : quit without confirming (no changes will be made)
                       ? : help (what you're currently reading)"""
 
         helpwin = curses.newwin(self.yscreensize, 0, 0, 0)
@@ -1375,7 +1376,8 @@
         return response
 
     def confirmcommit(self, review=False):
-        "ask for 'y' to be pressed to confirm commit. return True if confirmed."
+        """ask for 'y' to be pressed to confirm selected. return True if
+        confirmed."""
         if review:
             confirmtext = (
 """if you answer yes to the following, the your currently chosen patch chunks
@@ -1386,10 +1388,11 @@
 note: don't add/remove lines unless you also modify the range information.
       failing to follow this rule will result in the commit aborting.
 
-are you sure you want to review/edit and commit the selected changes [yn]? """)
+are you sure you want to review/edit and confirm the selected changes [yn]?
+""")
         else:
             confirmtext = (
-                "are you sure you want to commit the selected changes [yn]? ")
+                "are you sure you want to confirm the selected changes [yn]? ")
 
         response = self.confirmationwindow(confirmtext)
         if response is None:
--- a/mercurial/dirstate.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/dirstate.py	Fri May 01 17:21:10 2015 -0500
@@ -40,10 +40,7 @@
         self._root = root
         # ntpath.join(root, '') of Python 2.7.9 does not add sep if root is
         # UNC path pointing to root share (issue4557)
-        if root.endswith(os.sep):
-            self._rootdir = root
-        else:
-            self._rootdir = root + os.sep
+        self._rootdir = pathutil.normasprefix(root)
         self._dirty = False
         self._dirtypl = False
         self._lastnormaltime = 0
--- a/mercurial/exchange.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/exchange.py	Fri May 01 17:21:10 2015 -0500
@@ -1284,6 +1284,12 @@
     r = 0
     # need a transaction when processing a bundle2 stream
     wlock = lock = tr = None
+    recordout = None
+    # quick fix for output mismatch with bundle2 in 3.4
+    captureoutput = repo.ui.configbool('experimental', 'bundle2-output-capture',
+                                       False)
+    if url.startswith('remote:http:') or url.startswith('remote:https:'):
+        captureoutput = True
     try:
         check_heads(repo, heads, 'uploading changes')
         # push can proceed
@@ -1296,16 +1302,31 @@
                 tr.hookargs['source'] = source
                 tr.hookargs['url'] = url
                 tr.hookargs['bundle2'] = '1'
-                r = bundle2.processbundle(repo, cg, lambda: tr).reply
+                op = bundle2.bundleoperation(repo, lambda: tr,
+                                             captureoutput=captureoutput)
+                try:
+                    r = bundle2.processbundle(repo, cg, op=op)
+                finally:
+                    r = op.reply
+                    if captureoutput and r is not None:
+                        repo.ui.pushbuffer(error=True, subproc=True)
+                        def recordout(output):
+                            r.newpart('output', data=output, mandatory=False)
                 tr.close()
             except Exception, exc:
                 exc.duringunbundle2 = True
-                if r is not None:
-                    exc._bundle2salvagedoutput = r.salvageoutput()
+                if captureoutput and r is not None:
+                    parts = exc._bundle2salvagedoutput = r.salvageoutput()
+                    def recordout(output):
+                        part = bundle2.bundlepart('output', data=output,
+                                                  mandatory=False)
+                        parts.append(part)
                 raise
         else:
             lock = repo.lock()
             r = changegroup.addchangegroup(repo, cg, source, url)
     finally:
         lockmod.release(tr, lock, wlock)
+        if recordout is not None:
+            recordout(repo.ui.popbuffer())
     return r
--- a/mercurial/help.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/help.py	Fri May 01 17:21:10 2015 -0500
@@ -43,7 +43,9 @@
             shortopt, longopt, default, desc = option
             optlabel = _("VALUE") # default label
 
-        if not verbose and ("DEPRECATED" in desc or _("DEPRECATED") in desc):
+        if not verbose and ("DEPRECATED" in desc or _("DEPRECATED") in desc or
+                            "EXPERIMENTAL" in desc or
+                            _("EXPERIMENTAL") in desc):
             continue
 
         so = ''
--- a/mercurial/help/config.txt	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/help/config.txt	Fri May 01 17:21:10 2015 -0500
@@ -828,13 +828,13 @@
   ``HG_PHASES_MOVED`` to ``1``, etc.
 
 ``txnclose``
-  Run after any repository transaction has been commited. At this
+  Run after any repository transaction has been committed. At this
   point, the transaction can no longer be rolled back. The hook will run
-  after the lock is released. see ``pretxnclose`` docs for details about
+  after the lock is released. See ``pretxnclose`` docs for details about
   available variables.
 
 ``txnabort``
-  Run when a transaction is aborted. see ``pretxnclose`` docs for details about
+  Run when a transaction is aborted. See ``pretxnclose`` docs for details about
   available variables.
 
 ``pretxnchangegroup``
--- a/mercurial/help/subrepos.txt	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/help/subrepos.txt	Fri May 01 17:21:10 2015 -0500
@@ -106,8 +106,7 @@
 
 :diff: diff does not recurse in subrepos unless -S/--subrepos is
     specified. Changes are displayed as usual, on the subrepositories
-    elements. Git subrepositories do not support --include/--exclude.
-    Subversion subrepositories are currently silently ignored.
+    elements. Subversion subrepositories are currently silently ignored.
 
 :files: files does not recurse into subrepos unless -S/--subrepos is
     specified.  Git and Subversion subrepositories are currently
--- a/mercurial/hgweb/webcommands.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/hgweb/webcommands.py	Fri May 01 17:21:10 2015 -0500
@@ -338,7 +338,7 @@
 
     The argument for ``rev`` can be a single revision, a revision set,
     or a literal keyword to search for in changeset data (equivalent to
-    :hg:`log -k`.
+    :hg:`log -k`).
 
     The ``revcount`` query string argument defines the maximum numbers of
     changesets to render.
@@ -459,7 +459,7 @@
 
     Show information about a directory.
 
-    If the URL path arguments are defined, information about the root
+    If the URL path arguments are omitted, information about the root
     directory for the ``tip`` changeset will be shown.
 
     Because this handler can only show information for directories, it
@@ -1318,3 +1318,6 @@
     except error.UnknownCommand:
         raise ErrorResponse(HTTP_NOT_FOUND)
     return tmpl('help', topic=topicname, doc=doc)
+
+# tell hggettext to extract docstrings from these functions:
+i18nfunctions = commands.values()
--- a/mercurial/localrepo.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/localrepo.py	Fri May 01 17:21:10 2015 -0500
@@ -917,6 +917,10 @@
         return self._filter(self._encodefilterpats, filename, data)
 
     def wwrite(self, filename, data, flags):
+        """write ``data`` into ``filename`` in the working directory
+
+        This returns length of written (maybe decoded) data.
+        """
         data = self._filter(self._decodefilterpats, filename, data)
         if 'l' in flags:
             self.wvfs.symlink(data, filename)
@@ -924,6 +928,7 @@
             self.wvfs.write(filename, data)
             if 'x' in flags:
                 self.wvfs.setflags(filename, False, True)
+        return len(data)
 
     def wwritedata(self, filename, data):
         return self._filter(self._decodefilterpats, filename, data)
@@ -1194,13 +1199,16 @@
         return l
 
     def _afterlock(self, callback):
-        """add a callback to the current repository lock.
+        """add a callback to be run when the repository is fully unlocked
 
-        The callback will be executed on lock release."""
-        l = self._lockref and self._lockref()
-        if l:
-            l.postrelease.append(callback)
-        else:
+        The callback will be executed when the outermost lock is released
+        (with wlock being higher level than 'lock')."""
+        for ref in (self._wlockref, self._lockref):
+            l = ref and ref()
+            if l and l.held:
+                l.postrelease.append(callback)
+                break
+        else: # no lock have been found.
             callback()
 
     def lock(self, wait=True):
@@ -1898,8 +1906,17 @@
 
     def pushkey(self, namespace, key, old, new):
         try:
-            self.hook('prepushkey', throw=True, namespace=namespace, key=key,
-                      old=old, new=new)
+            tr = self.currenttransaction()
+            hookargs = {}
+            if tr is not None:
+                hookargs.update(tr.hookargs)
+                pending = lambda: tr.writepending() and self.root or ""
+                hookargs['pending'] = pending
+            hookargs['namespace'] = namespace
+            hookargs['key'] = key
+            hookargs['old'] = old
+            hookargs['new'] = new
+            self.hook('prepushkey', throw=True, **hookargs)
         except error.HookAbort, exc:
             self.ui.write_err(_("pushkey-abort: %s\n") % exc)
             if exc.hint:
--- a/mercurial/merge.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/merge.py	Fri May 01 17:21:10 2015 -0500
@@ -1167,7 +1167,9 @@
         wlock.release()
 
     if not partial:
-        repo.hook('update', parent1=xp1, parent2=xp2, error=stats[3])
+        def updatehook(parent1=xp1, parent2=xp2, error=stats[3]):
+            repo.hook('update', parent1=parent1, parent2=parent2, error=error)
+        repo._afterlock(updatehook)
     return stats
 
 def graft(repo, ctx, pctx, labels):
--- a/mercurial/parsers.c	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/parsers.c	Fri May 01 17:21:10 2015 -0500
@@ -1312,7 +1312,7 @@
 			const char *n;
 			Py_ssize_t i;
 
-			v = -v - 1;
+			v = -(v + 1);
 			n = index_node(self, v);
 			if (n == NULL)
 				return -2;
@@ -1368,7 +1368,7 @@
 			return 0;
 		}
 		if (v < 0) {
-			const char *oldnode = index_node(self, -v - 1);
+			const char *oldnode = index_node(self, -(v + 1));
 			int noff;
 
 			if (!oldnode || !memcmp(oldnode, node, 20)) {
--- a/mercurial/patch.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/patch.py	Fri May 01 17:21:10 2015 -0500
@@ -822,7 +822,8 @@
     diff_re = re.compile('diff -r .* (.*)$')
     allhunks_re = re.compile('(?:index|deleted file) ')
     pretty_re = re.compile('(?:new file|deleted file) ')
-    special_re = re.compile('(?:index|new|deleted|copy|rename) ')
+    special_re = re.compile('(?:index|deleted|copy|rename) ')
+    newfile_re = re.compile('(?:new file)')
 
     def __init__(self, header):
         self.header = header
@@ -870,8 +871,21 @@
     def __repr__(self):
         return '<header %s>' % (' '.join(map(repr, self.files())))
 
+    def isnewfile(self):
+        return util.any(self.newfile_re.match(h) for h in self.header)
+
     def special(self):
-        return util.any(self.special_re.match(h) for h in self.header)
+        # Special files are shown only at the header level and not at the hunk
+        # level for example a file that has been deleted is a special file.
+        # The user cannot change the content of the operation, in the case of
+        # the deleted file he has to take the deletion or not take it, he
+        # cannot take some of it.
+        # Newly added files are special if they are empty, they are not special
+        # if they have some content as we want to be able to change it
+        nocontent = len(self.header) == 2
+        emptynewfile = self.isnewfile() and nocontent
+        return emptynewfile or \
+                util.any(self.special_re.match(h) for h in self.header)
 
 class recordhunk(object):
     """patch hunk
--- a/mercurial/repair.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/repair.py	Fri May 01 17:21:10 2015 -0500
@@ -18,7 +18,7 @@
     if usebundle2:
         cgversion = repo.ui.config('experimental', 'strip-bundle2-version')
         if cgversion not in changegroup.packermap:
-            repo.ui.warn(_('unknown strip-bundle2-version value %r; ' +
+            repo.ui.warn(_('unknown strip-bundle2-version value %r; '
                             'should be one of %r\n') %
                          (cgversion, sorted(changegroup.packermap.keys()),))
             cgversion = '01'
--- a/mercurial/subrepo.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/subrepo.py	Fri May 01 17:21:10 2015 -0500
@@ -153,7 +153,8 @@
 
 def writestate(repo, state):
     """rewrite .hgsubstate in (outer) repo with these subrepo states"""
-    lines = ['%s %s\n' % (state[s][1], s) for s in sorted(state)]
+    lines = ['%s %s\n' % (state[s][1], s) for s in sorted(state)
+                                                if state[s][1] != nullstate[1]]
     repo.wwrite('.hgsubstate', ''.join(lines), '')
 
 def submerge(repo, wctx, mctx, actx, overwrite):
@@ -568,6 +569,11 @@
         root = r.wjoin(path)
         create = not r.wvfs.exists('%s/.hg' % path)
         self._repo = hg.repository(r.baseui, root, create=create)
+
+        # Propagate the parent's --hidden option
+        if r is r.unfiltered():
+            self._repo = self._repo.unfiltered()
+
         self.ui = self._repo.ui
         for s, k in [('ui', 'commitsubrepos')]:
             v = r.ui.config(s, k)
@@ -872,10 +878,18 @@
 
     @annotatesubrepoerror
     def outgoing(self, ui, dest, opts):
+        if 'rev' in opts or 'branch' in opts:
+            opts = copy.copy(opts)
+            opts.pop('rev', None)
+            opts.pop('branch', None)
         return hg.outgoing(ui, self._repo, _abssource(self._repo, True), opts)
 
     @annotatesubrepoerror
     def incoming(self, ui, source, opts):
+        if 'rev' in opts or 'branch' in opts:
+            opts = copy.copy(opts)
+            opts.pop('rev', None)
+            opts.pop('branch', None)
         return hg.incoming(ui, self._repo, _abssource(self._repo, False), opts)
 
     @annotatesubrepoerror
--- a/mercurial/tags.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/tags.py	Fri May 01 17:21:10 2015 -0500
@@ -502,9 +502,9 @@
 
         try:
             lock = repo.wlock(wait=False)
-        except error.LockHeld:
+        except error.LockError:
             repo.ui.log('tagscache',
-                        'not writing .hg/%s because lock held\n' %
+                        'not writing .hg/%s because lock cannot be acquired\n' %
                         (_fnodescachefile))
             return
 
--- a/mercurial/templater.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/templater.py	Fri May 01 17:21:10 2015 -0500
@@ -539,7 +539,12 @@
         raise error.ParseError(_("word expects two or three arguments, got %d")
                                % len(args))
 
-    num = int(stringify(args[0][0](context, mapping, args[0][1])))
+    try:
+        num = int(stringify(args[0][0](context, mapping, args[0][1])))
+    except ValueError:
+        # i18n: "word" is a keyword
+        raise error.ParseError(
+                _("Use strings like '3' for numbers passed to word function"))
     text = stringify(args[1][0](context, mapping, args[1][1]))
     if len(args) == 3:
         splitter = stringify(args[2][0](context, mapping, args[2][1]))
--- a/mercurial/templates/map-cmdline.phases	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/templates/map-cmdline.phases	Fri May 01 17:21:10 2015 -0500
@@ -58,8 +58,8 @@
 user = '{label("log.user",
                "user:        {author}")}\n'
 
-summary = '{label("log.summary",
-                  "summary:     {desc|firstline}")}\n'
+summary = '{if(desc|strip, "{label('log.summary',
+                                   'summary:     {desc|firstline}')}\n")}'
 
 ldate = '{label("log.date",
                 "date:        {date|date}")}\n'
@@ -67,7 +67,7 @@
 extra = '{label("ui.debug log.extra",
                 "extra:       {key}={value|stringescape}")}\n'
 
-description = '{label("ui.note log.description",
-                       "description:")}
-               {label("ui.note log.description",
-                       "{desc|strip}")}\n\n'
+description = '{if(desc|strip, "{label('ui.note log.description',
+                                       'description:')}
+                                {label('ui.note log.description',
+                                       '{desc|strip}')}\n\n")}'
--- a/mercurial/ui.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/ui.py	Fri May 01 17:21:10 2015 -0500
@@ -76,7 +76,8 @@
     def __init__(self, src=None):
         # _buffers: used for temporary capture of output
         self._buffers = []
-        # _bufferstates: Should the temporary capture includes stderr
+        # _bufferstates:
+        #   should the temporary capture include stderr and subprocess output
         self._bufferstates = []
         self.quiet = self.verbose = self.debugflag = self.tracebackflag = False
         self._reportuntrusted = True
@@ -168,6 +169,9 @@
         if self.plain('alias'):
             for k, v in cfg.items('alias'):
                 del cfg['alias'][k]
+        if self.plain('revsetalias'):
+            for k, v in cfg.items('revsetalias'):
+                del cfg['revsetalias'][k]
 
         if trusted:
             self._tcfg.update(cfg)
@@ -540,12 +544,15 @@
     def paths(self):
         return paths(self)
 
-    def pushbuffer(self, error=False):
+    def pushbuffer(self, error=False, subproc=False):
         """install a buffer to capture standard output of the ui object
 
-        If error is True, the error output will be captured too."""
+        If error is True, the error output will be captured too.
+
+        If subproc is True, output from subprocesses (typically hooks) will be
+        captured too."""
         self._buffers.append([])
-        self._bufferstates.append(error)
+        self._bufferstates.append((error, subproc))
 
     def popbuffer(self, labeled=False):
         '''pop the last buffer and return the buffered output
@@ -585,7 +592,7 @@
 
     def write_err(self, *args, **opts):
         try:
-            if self._bufferstates and self._bufferstates[-1]:
+            if self._bufferstates and self._bufferstates[-1][0]:
                 return self.write(*args, **opts)
             if not getattr(self.fout, 'closed', False):
                 self.fout.flush()
@@ -834,8 +841,11 @@
         '''execute shell command with appropriate output stream. command
         output will be redirected if fout is not stdout.
         '''
+        out = self.fout
+        if util.any(s[1] for s in self._bufferstates):
+            out = self
         return util.system(cmd, environ=environ, cwd=cwd, onerr=onerr,
-                           errprefix=errprefix, out=self.fout)
+                           errprefix=errprefix, out=out)
 
     def traceback(self, exc=None, force=False):
         '''print exception traceback if traceback printing enabled or forced.
--- a/mercurial/unionrepo.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/unionrepo.py	Fri May 01 17:21:10 2015 -0500
@@ -15,7 +15,7 @@
 from i18n import _
 import os
 import util, mdiff, cmdutil, scmutil
-import localrepo, changelog, manifest, filelog, revlog
+import localrepo, changelog, manifest, filelog, revlog, pathutil
 
 class unionrevlog(revlog.revlog):
     def __init__(self, opener, indexfile, revlog2, linkmapper):
@@ -228,7 +228,7 @@
         if parentpath == cwd:
             parentpath = ''
         else:
-            cwd = os.path.join(cwd,'')
+            cwd = pathutil.normasprefix(cwd)
             if parentpath.startswith(cwd):
                 parentpath = parentpath[len(cwd):]
     if path.startswith('union:'):
--- a/mercurial/util.h	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/util.h	Fri May 01 17:21:10 2015 -0500
@@ -218,7 +218,7 @@
 
 #define MIN(a, b) (((a)<(b))?(a):(b))
 /* VC9 doesn't include bool and lacks stdbool.h based on my searching */
-#ifdef _MSC_VER
+#if defined(_MSC_VER) || __STDC_VERSION__ < 199901L
 #define true 1
 #define false 0
 typedef unsigned char bool;
--- a/mercurial/windows.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/mercurial/windows.py	Fri May 01 17:21:10 2015 -0500
@@ -167,10 +167,12 @@
         _quotere = re.compile(r'(\\*)("|\\$)')
     global _needsshellquote
     if _needsshellquote is None:
-        # ":" and "\\" are also treated as "safe character", because
-        # they are used as a part of path name (and the latter doesn't
-        # work as "escape character", like one on posix) on Windows
-        _needsshellquote = re.compile(r'[^a-zA-Z0-9._:/\\-]').search
+        # ":" is also treated as "safe character", because it is used as a part
+        # of path name on Windows.  "\" is also part of a path name, but isn't
+        # safe because shlex.split() (kind of) treats it as an escape char and
+        # drops it.  It will leave the next character, even if it is another
+        # "\".
+        _needsshellquote = re.compile(r'[^a-zA-Z0-9._:/-]').search
     if s and not _needsshellquote(s) and not _quotere.search(s):
         # "s" shouldn't have to be quoted
         return s
--- a/tests/run-tests.py	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/run-tests.py	Fri May 01 17:21:10 2015 -0500
@@ -1065,7 +1065,7 @@
         while i < n:
             c = el[i]
             i += 1
-            if c == '\\' and el[i] in '*?\\/':
+            if c == '\\' and i < n and el[i] in '*?\\/':
                 res += el[i - 1:i + 1]
                 i += 1
             elif c == '*':
--- a/tests/test-add.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-add.t	Fri May 01 17:21:10 2015 -0500
@@ -206,8 +206,10 @@
   $ hg revert -r '.^' capsdir1/capsdir
   reverting CapsDir1/CapsDir/SubDir/Def.txt (glob)
 
+The conditional tests above mean the hash on the diff line differs on Windows
+and OS X
   $ hg diff capsdir1/capsdir
-  diff -r 5112e00e781d CapsDir1/CapsDir/SubDir/Def.txt
+  diff -r * CapsDir1/CapsDir/SubDir/Def.txt (glob)
   --- a/CapsDir1/CapsDir/SubDir/Def.txt	Thu Jan 01 00:00:00 1970 +0000
   +++ b/CapsDir1/CapsDir/SubDir/Def.txt	* +0000 (glob)
   @@ -1,1 +1,1 @@
--- a/tests/test-annotate.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-annotate.t	Fri May 01 17:21:10 2015 -0500
@@ -556,6 +556,7 @@
   grafting 1:fd27c222e3e6 "contentB"
   $ echo C >> a
   $ hg commit -m 'contentC'
+  $ echo W >> a
   $ hg log -G
   @  changeset:   4:072f1e8df249
   |  tag:         tip
@@ -592,6 +593,12 @@
   3: B
   4: C
 
+  $ hg annotate a -r 'wdir()'
+  0 : A
+  3 : B
+  4 : C
+  4+: W
+
 Even when the starting revision is the linkrev-shadowed one:
 
   $ hg annotate a -r 3
--- a/tests/test-bundle2-exchange.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-bundle2-exchange.t	Fri May 01 17:21:10 2015 -0500
@@ -16,6 +16,7 @@
   > [experimental]
   > evolution=createmarkers,exchange
   > bundle2-exp=True
+  > bundle2-output-capture=True
   > [ui]
   > ssh=python "$TESTDIR/dummyssh"
   > logtemplate={rev}:{node|short} {phase} {author} {bookmarks} {desc|firstline}
@@ -72,7 +73,7 @@
 clone --pull
 
   $ hg -R main phase --public cd010b8cd998
-  pre-close-tip:000000000000 public 
+  pre-close-tip:02de42196ebe draft 
   postclose-tip:02de42196ebe draft 
   txnclose hook: HG_PHASES_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=phase (glob)
   $ hg clone main other --pull --rev 9520eea781bc
@@ -98,7 +99,7 @@
 pull
 
   $ hg -R main phase --public 9520eea781bc
-  pre-close-tip:000000000000 public 
+  pre-close-tip:02de42196ebe draft 
   postclose-tip:02de42196ebe draft 
   txnclose hook: HG_PHASES_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=phase (glob)
   $ hg -R other pull -r 24b6387c8c8c
@@ -128,13 +129,13 @@
 pull empty (with phase movement)
 
   $ hg -R main phase --public 24b6387c8c8c
-  pre-close-tip:000000000000 public 
+  pre-close-tip:02de42196ebe draft 
   postclose-tip:02de42196ebe draft 
   txnclose hook: HG_PHASES_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=phase (glob)
   $ hg -R other pull -r 24b6387c8c8c
   pulling from $TESTTMP/main (glob)
   no changes found
-  pre-close-tip:000000000000 public 
+  pre-close-tip:24b6387c8c8c public 
   postclose-tip:24b6387c8c8c public 
   txnclose hook: HG_NEW_OBSMARKERS=0 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:* HG_TXNNAME=pull (glob)
   file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
@@ -204,7 +205,7 @@
   $ hg -R other bookmark --rev cd010b8cd998 book_32af
 
   $ hg -R main phase --public eea13746799a
-  pre-close-tip:000000000000 public 
+  pre-close-tip:02de42196ebe draft book_02de
   postclose-tip:02de42196ebe draft book_02de
   txnclose hook: HG_PHASES_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=phase (glob)
 
@@ -212,20 +213,20 @@
   $ hg -R main push other --rev eea13746799a --bookmark book_eea1
   pushing to other
   searching for changes
-  pre-close-tip:eea13746799a public book_eea1
-  pushkey: lock state after "phases"
-  lock:  free
-  wlock: free
-  pushkey: lock state after "bookmarks"
-  lock:  free
-  wlock: free
-  postclose-tip:eea13746799a public book_eea1
-  txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_NEW_OBSMARKERS=1 HG_NODE=eea13746799a9e0bfd88f29d3c2e9dc9389f524f HG_PHASES_MOVED=1 HG_SOURCE=push HG_TXNID=TXN:* HG_TXNNAME=push HG_URL=push (glob)
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 0 changes to 0 files (-1 heads)
   remote: 1 new obsolescence markers
+  remote: pre-close-tip:eea13746799a public book_eea1
+  remote: pushkey: lock state after "phases"
+  remote: lock:  free
+  remote: wlock: free
+  remote: pushkey: lock state after "bookmarks"
+  remote: lock:  free
+  remote: wlock: free
+  remote: postclose-tip:eea13746799a public book_eea1
+  remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_NEW_OBSMARKERS=1 HG_NODE=eea13746799a9e0bfd88f29d3c2e9dc9389f524f HG_PHASES_MOVED=1 HG_SOURCE=push HG_TXNID=TXN:* HG_TXNNAME=push HG_URL=push (glob)
   updating bookmark book_eea1
   pre-close-tip:02de42196ebe draft book_02de
   postclose-tip:02de42196ebe draft book_02de
@@ -304,13 +305,13 @@
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: 1 new obsolescence markers
-  updating bookmark book_5fdd
   remote: pre-close-tip:5fddd98957c8 draft book_5fdd
   remote: pushkey: lock state after "bookmarks"
   remote: lock:  free
   remote: wlock: free
   remote: postclose-tip:5fddd98957c8 draft book_5fdd
   remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_NEW_OBSMARKERS=1 HG_NODE=5fddd98957c8a54a4d436dfe1da9d87f21a1b97b HG_SOURCE=serve HG_TXNID=TXN:* HG_TXNNAME=serve HG_URL=remote:ssh:127.0.0.1 (glob)
+  updating bookmark book_5fdd
   pre-close-tip:02de42196ebe draft book_02de
   postclose-tip:02de42196ebe draft book_02de
   txnclose hook: HG_SOURCE=push-response HG_TXNID=TXN:* HG_TXNNAME=push-response (glob)
@@ -344,7 +345,7 @@
   $ cat other.pid >> $DAEMON_PIDS
 
   $ hg -R main phase --public 32af7686d403
-  pre-close-tip:000000000000 public 
+  pre-close-tip:02de42196ebe draft book_02de
   postclose-tip:02de42196ebe draft book_02de
   txnclose hook: HG_PHASES_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=phase (glob)
   $ hg -R main push http://localhost:$HGPORT2/ -r 32af7686d403 --bookmark book_32af
@@ -355,6 +356,15 @@
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: 1 new obsolescence markers
+  remote: pre-close-tip:32af7686d403 public book_32af
+  remote: pushkey: lock state after "phases"
+  remote: lock:  free
+  remote: wlock: free
+  remote: pushkey: lock state after "bookmarks"
+  remote: lock:  free
+  remote: wlock: free
+  remote: postclose-tip:32af7686d403 public book_32af
+  remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_NEW_OBSMARKERS=1 HG_NODE=32af7686d403cf45b5d95f2d70cebea587ac806a HG_PHASES_MOVED=1 HG_SOURCE=serve HG_TXNID=TXN:* HG_TXNNAME=serve HG_URL=remote:http:127.0.0.1: (glob)
   updating bookmark book_32af
   pre-close-tip:02de42196ebe draft book_02de
   postclose-tip:02de42196ebe draft book_02de
@@ -548,7 +558,8 @@
   > [failpush]
   > reason =
   > [hooks]
-  > pretxnclose.failpush = false
+  > pretxnclose.failpush = sh -c "echo 'You shall not pass!'; false"
+  > txnabort.failpush = sh -c "echo 'Cleaning up the mess...'"
   > EOF
 
   $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
@@ -558,13 +569,15 @@
   $ hg -R main push other -r e7ec4e813ba6
   pushing to other
   searching for changes
-  pre-close-tip:e7ec4e813ba6 draft 
-  transaction abort!
-  rollback completed
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
+  remote: pre-close-tip:e7ec4e813ba6 draft 
+  remote: You shall not pass!
+  remote: transaction abort!
+  remote: Cleaning up the mess...
+  remote: rollback completed
   abort: pretxnclose.failpush hook exited with status 1
   [255]
 
@@ -575,10 +588,12 @@
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
+  remote: pre-close-tip:e7ec4e813ba6 draft 
+  remote: You shall not pass!
+  remote: transaction abort!
+  remote: Cleaning up the mess...
+  remote: rollback completed
   abort: pretxnclose.failpush hook exited with status 1
-  remote: pre-close-tip:e7ec4e813ba6 draft 
-  remote: transaction abort!
-  remote: rollback completed
   [255]
 
   $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
@@ -588,6 +603,11 @@
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
+  remote: pre-close-tip:e7ec4e813ba6 draft 
+  remote: You shall not pass!
+  remote: transaction abort!
+  remote: Cleaning up the mess...
+  remote: rollback completed
   abort: pretxnclose.failpush hook exited with status 1
   [255]
 
@@ -600,3 +620,100 @@
   $ ls -1 other/.hg/store/00changelog.i*
   other/.hg/store/00changelog.i
 
+Check error from hook during the unbundling process itself
+
+  $ cat << EOF >> $HGRCPATH
+  > pretxnchangegroup = sh -c "echo 'Fail early!'; false"
+  > EOF
+  $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS # reload http config
+  $ hg -R other serve -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
+  $ cat other.pid >> $DAEMON_PIDS
+
+  $ hg -R main push other -r e7ec4e813ba6
+  pushing to other
+  searching for changes
+  remote: adding changesets
+  remote: adding manifests
+  remote: adding file changes
+  remote: added 1 changesets with 1 changes to 1 files
+  remote: Fail early!
+  remote: transaction abort!
+  remote: Cleaning up the mess...
+  remote: rollback completed
+  abort: pretxnchangegroup hook exited with status 1
+  [255]
+  $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
+  pushing to ssh://user@dummy/other
+  searching for changes
+  remote: adding changesets
+  remote: adding manifests
+  remote: adding file changes
+  remote: added 1 changesets with 1 changes to 1 files
+  remote: Fail early!
+  remote: transaction abort!
+  remote: Cleaning up the mess...
+  remote: rollback completed
+  abort: pretxnchangegroup hook exited with status 1
+  [255]
+  $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
+  pushing to http://localhost:$HGPORT2/
+  searching for changes
+  remote: adding changesets
+  remote: adding manifests
+  remote: adding file changes
+  remote: added 1 changesets with 1 changes to 1 files
+  remote: Fail early!
+  remote: transaction abort!
+  remote: Cleaning up the mess...
+  remote: rollback completed
+  abort: pretxnchangegroup hook exited with status 1
+  [255]
+
+Check output capture control.
+
+(should be still forced for http, disabled for local and ssh)
+
+  $ cat >> $HGRCPATH << EOF
+  > [experimental]
+  > bundle2-output-capture=False
+  > EOF
+
+  $ hg -R main push other -r e7ec4e813ba6
+  pushing to other
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  Fail early!
+  transaction abort!
+  Cleaning up the mess...
+  rollback completed
+  abort: pretxnchangegroup hook exited with status 1
+  [255]
+  $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
+  pushing to ssh://user@dummy/other
+  searching for changes
+  abort: pretxnchangegroup hook exited with status 1
+  remote: adding changesets
+  remote: adding manifests
+  remote: adding file changes
+  remote: added 1 changesets with 1 changes to 1 files
+  remote: Fail early!
+  remote: transaction abort!
+  remote: Cleaning up the mess...
+  remote: rollback completed
+  [255]
+  $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
+  pushing to http://localhost:$HGPORT2/
+  searching for changes
+  remote: adding changesets
+  remote: adding manifests
+  remote: adding file changes
+  remote: added 1 changesets with 1 changes to 1 files
+  remote: Fail early!
+  remote: transaction abort!
+  remote: Cleaning up the mess...
+  remote: rollback completed
+  abort: pretxnchangegroup hook exited with status 1
+  [255]
--- a/tests/test-casefolding.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-casefolding.t	Fri May 01 17:21:10 2015 -0500
@@ -153,6 +153,23 @@
   $ mkdir -p a/B/c/D
   $ echo e > a/B/c/D/e
   $ hg add a/B/c/D/e
+  $ hg ci -m 'add e'
+
+issue 4481: revert across case only renames
+  $ hg mv a/B/c/D/e a/B/c/d/E
+  $ hg ci -m "uppercase E"
+  $ echo 'foo' > a/B/c/D/E
+  $ hg ci -m 'e content change'
+  $ hg revert --all -r 0
+  removing a/B/c/D/E (glob)
+  adding a/B/c/D/e (glob)
+  $ find * | sort
+  a
+  a/B
+  a/B/c
+  a/B/c/D
+  a/B/c/D/e
+  a/B/c/D/e.orig
 
   $ cd ..
 
--- a/tests/test-clone-pull-corruption.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-clone-pull-corruption.t	Fri May 01 17:21:10 2015 -0500
@@ -16,7 +16,7 @@
 
   $ cd ../corrupted
   $ echo "[hooks]" >> .hg/hgrc
-  $ echo "pretxncommit = sh -c 'sleep 5; exit 1'" >> .hg/hgrc
+  $ echo 'pretxncommit = sh -c "sleep 5; exit 1"' >> .hg/hgrc
 
 start a commit...
 
--- a/tests/test-command-template.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-command-template.t	Fri May 01 17:21:10 2015 -0500
@@ -94,27 +94,59 @@
   $ hg log -l1 --style default -T '{rev}\n'
   8
 
-Default style is like normal output:
+Add a commit with empty description, to ensure that the templates
+following below omit it properly.
 
   $ echo c >> c
   $ hg add c
   $ hg commit -qm ' '
 
+Default style is like normal output. Phases style should be the same
+as default style, except for extra phase lines.
+
   $ hg log > log.out
   $ 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 log.out phases.out | grep "phase:"
+  +phase:       draft
+  +phase:       draft
+  +phase:       draft
+  +phase:       draft
+  +phase:       draft
+  +phase:       draft
+  +phase:       draft
+  +phase:       draft
+  +phase:       draft
+  +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 log.out phases.out | grep phase:
+  +phase:       draft
+  +phase:       draft
+  +phase:       draft
+  +phase:       draft
+  +phase:       draft
+  +phase:       draft
+  +phase:       draft
+  +phase:       draft
+  +phase:       draft
+  +phase:       draft
 
   $ hg log -q > log.out
   $ hg log -q --style default > style.out
   $ cmp log.out style.out || diff -u log.out style.out
+  $ hg log -q -T phases > phases.out
+  $ cmp log.out phases.out || diff -u log.out phases.out
 
   $ hg log --debug > log.out
   $ hg log --debug --style default > style.out
   $ cmp log.out style.out || diff -u log.out style.out
+  $ hg log --debug -T phases > phases.out
+  $ cmp log.out phases.out || diff -u log.out phases.out
 
 Default style should also preserve color information (issue2866):
 
@@ -127,18 +159,52 @@
   $ hg --color=debug log > log.out
   $ 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 log.out phases.out | grep phase:
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[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 log.out phases.out | grep phase:
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+  +[log.phase|phase:       draft]
+
   $ hg --color=debug -q log > log.out
   $ hg --color=debug -q log --style default > style.out
   $ cmp log.out style.out || diff -u log.out style.out
+  $ hg --color=debug -q log -T phases > phases.out
+  $ cmp log.out phases.out || diff -u log.out phases.out
+
   $ hg --color=debug --debug log > log.out
   $ hg --color=debug --debug log --style default > style.out
   $ cmp log.out style.out || diff -u log.out style.out
+  $ hg --color=debug --debug log -T phases > phases.out
+  $ cmp log.out phases.out || diff -u log.out phases.out
 
   $ mv $HGRCPATH-bak $HGRCPATH
 
+Remove commit with empty commit message, so as to not pollute further
+tests.
+
   $ hg --config extensions.strip= strip -q .
 
 Revision with no copies (used to print a traceback):
@@ -2554,3 +2620,9 @@
   $ hg log -Gv -R a --template "{word('0', desc, 'o', 'h', 'b', 'o', 'y')}"
   hg: parse error: word expects two or three arguments, got 7
   [255]
+
+Test word for invalid numbers
+
+  $ hg log -Gv -R a --template "{word(2, desc)}"
+  hg: parse error: Use strings like '3' for numbers passed to word function
+  [255]
--- a/tests/test-commit-interactive-curses.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-commit-interactive-curses.t	Fri May 01 17:21:10 2015 -0500
@@ -143,48 +143,10 @@
   10
   y
 
-Editing patch of newly added file
-
-  $ cat > editor.sh << '__EOF__'
-  > cat "$1"  | sed "s/first/very/g"  > tt
-  > mv tt  "$1"
-  > __EOF__
-  $ cat > newfile << '__EOF__'
-  > This is the first line
-  > This is the second line
-  > This is the third line
-  > __EOF__
-  $ hg add newfile
-  $ cat <<EOF >testModeCommands
-  > f
-  > KEY_DOWN
-  > KEY_DOWN
-  > KEY_DOWN
-  > e
-  > X
-  > EOF
-  $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg commit -i -d '23 0' -medit-patch-new
-  $ hg tip
-  changeset:   4:6a0a43e9eff5
-  tag:         tip
-  user:        test
-  date:        Thu Jan 01 00:00:23 1970 +0000
-  summary:     edit-patch-new
-  
-  $ hg cat -r tip newfile
-  This is the very line
-  This is the second line
-  This is the third line
-
-  $ cat newfile
-  This is the first line
-  This is the second line
-  This is the third line
-
 Newly added files can be selected with the curses interface
 
   $ hg update -C .
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ echo "hello" > x
   $ hg add x
   $ cat <<EOF >testModeCommands
@@ -194,10 +156,8 @@
   > EOF
   $ hg st
   A x
-  ? editor.sh
   ? testModeCommands
   $ hg commit -i  -m "newly added file" -d "0 0"
   $ hg st
-  ? editor.sh
   ? testModeCommands
 
--- a/tests/test-commit-interactive.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-commit-interactive.t	Fri May 01 17:21:10 2015 -0500
@@ -1395,8 +1395,41 @@
   $ export HGUSER
 
 
+Moving files
+
+  $ hg update -C .
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg mv plain plain3
+  $ echo somechange >> plain3
+  $ hg commit -i -d '23 0' -mmoving_files << EOF
+  > y
+  > y
+  > EOF
+  diff --git a/plain b/plain3
+  rename from plain
+  rename to plain3
+  1 hunks, 1 lines changed
+  examine changes to 'plain' and 'plain3'? [Ynesfdaq?] y
+  
+  @@ -11,3 +11,4 @@
+   9
+   10
+   11
+  +somechange
+  record this change to 'plain3'? [Ynesfdaq?] y
+  
+The #if execbit block above changes the hash here on some systems
+  $ hg tip
+  changeset:   30:* (glob)
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:23 1970 +0000
+  summary:     moving_files
+  
 Editing patch of newly added file
 
+  $ hg update -C .
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ cat > editor.sh << '__EOF__'
   > cat "$1"  | sed "s/first/very/g"  > tt
   > mv tt  "$1"
@@ -1431,4 +1464,37 @@
   This is the second line
   This is the third line
 
+Add new file from within a subdirectory
+  $ hg update -C .
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ mkdir folder
+  $ cd folder
+  $ echo "foo" > bar
+  $ hg add bar
+  $ hg commit -i -d '23 0' -mnewfilesubdir  <<EOF
+  > y
+  > y
+  > EOF
+  diff --git a/folder/bar b/folder/bar
+  new file mode 100644
+  examine changes to 'folder/bar'? [Ynesfdaq?] y
+  
+  @@ -0,0 +1,1 @@
+  +foo
+  record this change to 'folder/bar'? [Ynesfdaq?] y
+  
+The #if execbit block above changes the hashes here on some systems
+  $ hg tip -p
+  changeset:   32:* (glob)
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:23 1970 +0000
+  summary:     newfilesubdir
+  
+  diff -r * -r * folder/bar (glob)
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/folder/bar	Thu Jan 01 00:00:23 1970 +0000
+  @@ -0,0 +1,1 @@
+  +foo
+  
   $ cd ..
--- a/tests/test-extdiff.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-extdiff.t	Fri May 01 17:21:10 2015 -0500
@@ -58,9 +58,15 @@
 
 Should diff cloned files directly:
 
+#if windows
+  $ hg falabala -r 0:1
+  diffing "*\\extdiff.*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob)
+  [1]
+#else
   $ hg falabala -r 0:1
   diffing */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob)
   [1]
+#endif
 
 Test diff during merge:
 
@@ -76,23 +82,41 @@
 
 Should diff cloned file against wc file:
 
+#if windows
+  $ hg falabala
+  diffing "*\\extdiff.*\\a.2a13a4d2da36\\a" "*\\a\\a" (glob)
+  [1]
+#else
   $ hg falabala
   diffing */extdiff.*/a.2a13a4d2da36/a */a/a (glob)
   [1]
+#endif
 
 
 Test --change option:
 
   $ hg ci -d '2 0' -mtest3
+#if windows
+  $ hg falabala -c 1
+  diffing "*\\extdiff.*\\a.8a5febb7f867\\a" "a.34eed99112ab\\a" (glob)
+  [1]
+#else
   $ hg falabala -c 1
   diffing */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob)
   [1]
+#endif
 
 Check diff are made from the first parent:
 
+#if windows
+  $ hg falabala -c 3 || echo "diff-like tools yield a non-zero exit code"
+  diffing "*\\extdiff.*\\a.2a13a4d2da36\\a" "a.46c0e4daeb72\\a" (glob)
+  diff-like tools yield a non-zero exit code
+#else
   $ hg falabala -c 3 || echo "diff-like tools yield a non-zero exit code"
   diffing */extdiff.*/a.2a13a4d2da36/a a.46c0e4daeb72/a (glob)
   diff-like tools yield a non-zero exit code
+#endif
 
 issue4463: usage of command line configuration without additional quoting
 
@@ -107,11 +131,11 @@
   $ echo a >> a
 #if windows
   $ hg --debug 4463a | grep '^running'
-  running 'echo a-naked \'single quoted\' "double quoted" *\\a *\\a' in */extdiff.* (glob)
+  running 'echo a-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob)
   $ hg --debug 4463b | grep '^running'
-  running 'echo b-naked \'single quoted\' "double quoted" *\\a *\\a' in */extdiff.* (glob)
+  running 'echo b-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob)
   $ hg --debug echo | grep '^running'
-  running '*echo* *\\a *\\a' in */extdiff.* (glob)
+  running '*echo* "*\\a" "*\\a"' in */extdiff.* (glob)
 #else
   $ hg --debug 4463a | grep '^running'
   running 'echo a-naked \'single quoted\' "double quoted" */a $TESTTMP/a/a' in */extdiff.* (glob)
@@ -138,15 +162,15 @@
   > EOF
 #if windows
   $ hg --debug 4463b2 | grep '^running'
-  running 'echo b2-naked \'single quoted\' "double quoted" *\\a *\\a' in */extdiff.* (glob)
+  running 'echo b2-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob)
   $ hg --debug 4463b3 | grep '^running'
-  running 'echo b3-naked \'single quoted\' "double quoted" *\\a *\\a' in */extdiff.* (glob)
+  running 'echo b3-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob)
   $ hg --debug 4463b4 | grep '^running'
-  running 'echo *\\a *\\a' in */extdiff.* (glob)
+  running 'echo "*\\a" "*\\a"' in */extdiff.* (glob)
   $ hg --debug 4463b4 --option b4-naked --option 'being quoted' | grep '^running'
-  running 'echo b4-naked "being quoted" *\\a *\\a' in */extdiff.* (glob)
+  running 'echo b4-naked "being quoted" "*\\a" "*\\a"' in */extdiff.* (glob)
   $ hg --debug extdiff -p echo --option echo-naked --option 'being quoted' | grep '^running'
-  running 'echo echo-naked "being quoted" *\\a *\\a' in */extdiff.* (glob)
+  running 'echo echo-naked "being quoted" "*\\a" "*\\a"' in */extdiff.* (glob)
 #else
   $ hg --debug 4463b2 | grep '^running'
   running 'echo b2-naked \'single quoted\' "double quoted" */a $TESTTMP/a/a' in */extdiff.* (glob)
--- a/tests/test-fileset-generated.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-fileset-generated.t	Fri May 01 17:21:10 2015 -0500
@@ -72,6 +72,20 @@
    content1_content2_content3-tracked |  1 +
    3 files changed, 3 insertions(+), 0 deletions(-)
   
+Largefiles doesn't crash
+  $ hg log -T '{rev}\n' --stat 'set:modified()' --config extensions.largefiles=
+  1
+   content1_content2_content1-tracked |  2 +-
+   content1_content2_content3-tracked |  2 +-
+   missing_content2_content3-tracked  |  1 +
+   3 files changed, 3 insertions(+), 2 deletions(-)
+  
+  0
+   content1_content1_content3-tracked |  1 +
+   content1_content2_content1-tracked |  1 +
+   content1_content2_content3-tracked |  1 +
+   3 files changed, 3 insertions(+), 0 deletions(-)
+  
   $ hg log -T '{rev}\n' --stat 'set:added()'
   1
    content1_missing_content1-tracked |  1 -
--- a/tests/test-help.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-help.t	Fri May 01 17:21:10 2015 -0500
@@ -629,6 +629,7 @@
   >     'hg nohelp',
   >     norepo=True)
   > @command('debugoptDEP', [('', 'dopt', None, 'option is DEPRECATED')])
+  > @command('debugoptEXP', [('', 'eopt', None, 'option is EXPERIMENTAL')])
   > def nohelp(ui, *args, **kwargs):
   >     pass
   > 
@@ -788,6 +789,7 @@
    debugobsolete
                  create arbitrary obsolete marker
    debugoptDEP   (no help text available)
+   debugoptEXP   (no help text available)
    debugpathcomplete
                  complete part or all of a tracked path
    debugpushkey  access the pushkey key/value protocol
@@ -822,7 +824,7 @@
   (use "hg help -v helpext" to show built-in aliases and global options)
 
 
-test deprecated option is hidden in command help
+test deprecated and experimental options are hidden in command help
   $ hg help debugoptDEP
   hg debugoptDEP
   
@@ -832,9 +834,20 @@
   
   (some details hidden, use --verbose to show complete help)
 
-test deprecated option is shown with -v
+  $ hg help debugoptEXP
+  hg debugoptEXP
+  
+  (no help text available)
+  
+  options:
+  
+  (some details hidden, use --verbose to show complete help)
+
+test deprecated and experimental options is shown with -v
   $ hg help -v debugoptDEP | grep dopt
     --dopt option is DEPRECATED
+  $ hg help -v debugoptEXP | grep eopt
+    --eopt option is EXPERIMENTAL
 
 #if gettext
 test deprecated option is hidden with translation with untranslated description
--- a/tests/test-histedit-fold.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-histedit-fold.t	Fri May 01 17:21:10 2015 -0500
@@ -107,6 +107,8 @@
 
 rollup will fold without preserving the folded commit's message
 
+  $ OLDHGEDITOR=$HGEDITOR
+  $ HGEDITOR=false
   $ hg histedit d2ae7f538514 --commands - 2>&1 <<EOF | fixbundle
   > pick d2ae7f538514 b
   > roll ee283cb5f2d5 e
@@ -120,6 +122,8 @@
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
+  $ HGEDITOR=$OLDHGEDITOR
+
 log after edit
   $ hg logt --graph
   @  3:c4a9eb7989fc d
--- a/tests/test-hook.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-hook.t	Fri May 01 17:21:10 2015 -0500
@@ -1,4 +1,5 @@
 commit hooks can see env vars
+(and post-transaction one are run unlocked)
 
   $ hg init a
   $ cd a
@@ -16,6 +17,7 @@
   > pretxnclose = sh -c "HG_LOCAL= HG_TAG= python \"$TESTDIR/printenv.py\" pretxnclose"
   > txnclose = sh -c "HG_LOCAL= HG_TAG= python \"$TESTDIR/printenv.py\" txnclose"
   > txnabort = sh -c "HG_LOCAL= HG_TAG= python \"$TESTDIR/printenv.py\" txnabort"
+  > txnclose.checklock = sh -c "hg debuglock > /dev/null"
   > EOF
   $ echo a > a
   $ hg add a
@@ -611,7 +613,9 @@
 
 Issue1827: Hooks Update & Commit not completely post operation
 
-commit and update hooks should run after command completion
+commit and update hooks should run after command completion.  The largefiles
+use demonstrates a recursive wlock, showing the hook doesn't run until the
+final release (and dirstate flush).
 
   $ echo '[hooks]' > .hg/hgrc
   $ echo 'commit = hg id' >> .hg/hgrc
@@ -619,7 +623,7 @@
   $ echo bb > a
   $ hg ci -ma
   223eafe2750c tip
-  $ hg up 0
+  $ hg up 0 --config extensions.largefiles=
   cb9a9f314b8b
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
--- a/tests/test-init.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-init.t	Fri May 01 17:21:10 2015 -0500
@@ -111,6 +111,14 @@
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
 
+The largefiles extension doesn't crash
+  $ hg clone -e "python \"$TESTDIR/dummyssh\"" local ssh://user@dummy/remotelf --config extensions.largefiles=
+  searching for changes
+  remote: adding changesets
+  remote: adding manifests
+  remote: adding file changes
+  remote: added 1 changesets with 1 changes to 1 files
+
 init to existing repo
 
   $ hg init -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote1
@@ -133,6 +141,8 @@
   Got arguments 1:user@dummy 2:hg -R remote2 serve --stdio
   Got arguments 1:user@dummy 2:hg init remote1
   Got arguments 1:user@dummy 2:hg -R remote1 serve --stdio
+  Got arguments 1:user@dummy 2:hg init remotelf
+  Got arguments 1:user@dummy 2:hg -R remotelf serve --stdio
   Got arguments 1:user@dummy 2:hg init remote1
   Got arguments 1:user@dummy 2:hg init remote1
 
--- a/tests/test-install.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-install.t	Fri May 01 17:21:10 2015 -0500
@@ -24,3 +24,20 @@
    (specify a username in your configuration file)
   1 problems detected, please check your install!
   [1]
+
+path variables are expanded (~ is the same as $TESTTMP)
+  $ mkdir tools
+  $ touch tools/testeditor.exe
+#if execbit
+  $ chmod 755 tools/testeditor.exe
+#endif
+  $ hg debuginstall --config ui.editor=~/tools/testeditor.exe
+  checking encoding (ascii)...
+  checking Python executable (*) (glob)
+  checking Python version (*) (glob)
+  checking Python lib (*lib*)... (glob)
+  checking installed modules (*mercurial)... (glob)
+  checking templates (*mercurial?templates)... (glob)
+  checking commit editor...
+  checking username...
+  no problems detected
--- a/tests/test-largefiles-misc.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-largefiles-misc.t	Fri May 01 17:21:10 2015 -0500
@@ -37,6 +37,13 @@
   A dira/dirb/largefile
   $ cd dira
   $ hg cp dirb/largefile foo/largefile
+
+TODO: Ideally, this should mention the largefile, not the standin
+  $ hg log -T '{rev}\n' --stat 'set:clean()'
+  0
+   .hglf/dira/dirb/largefile |  1 +
+   1 files changed, 1 insertions(+), 0 deletions(-)
+  
   $ hg ci -m "deep copy"
   Invoking status precommit hook
   A dira/foo/largefile
--- a/tests/test-merge-tools.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-merge-tools.t	Fri May 01 17:21:10 2015 -0500
@@ -105,9 +105,11 @@
   M f
   ? f.orig
 
+#if unix-permissions
+
 unexecutable file in $PATH shouldn't be found:
 
-  $ touch false
+  $ echo "echo fail" > false
   $ hg up -qC 1
   $ PATH="`pwd`:$BINDIR" $PYTHON "$BINDIR"/hg merge -r 2
   merging f
@@ -118,6 +120,8 @@
   [1]
   $ rm false
 
+#endif
+
 executable directory in $PATH shouldn't be found:
 
   $ mkdir false
@@ -604,7 +608,16 @@
   true.executable=cat
   # hg update -C 1
   $ hg update -q 0
+  $ f -s f
+  f: size=17
+  $ touch -t 200001010000 f
+  $ hg status f
   $ hg revert -q -r 1 .
+  $ f -s f
+  f: size=17
+  $ touch -t 200001010000 f
+  $ hg status f
+  M f
   $ hg update -r 2
   merging f
   revision 1
@@ -630,7 +643,16 @@
   true.executable=cat
   # hg update -C 1
   $ hg update -q 0
+  $ f -s f
+  f: size=17
+  $ touch -t 200001010000 f
+  $ hg status f
   $ hg revert -q -r 1 .
+  $ f -s f
+  f: size=17
+  $ touch -t 200001010000 f
+  $ hg status f
+  M f
   $ hg update -r 2 --tool false
   merging f
   merging f failed!
--- a/tests/test-mq-qpush-fail.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-mq-qpush-fail.t	Fri May 01 17:21:10 2015 -0500
@@ -344,25 +344,29 @@
   $ echo b >> b
   $ hg qpush --keep-changes
   applying p3
-  errors during apply, please fix and refresh p2
-  [2]
+  abort: conflicting local changes found
+  (did you forget to qrefresh?)
+  [255]
   $ rm b
   $ hg qpush --keep-changes
   applying p3
-  errors during apply, please fix and refresh p2
-  [2]
+  abort: conflicting local changes found
+  (did you forget to qrefresh?)
+  [255]
   $ hg rm -A b
   $ hg qpush --keep-changes
   applying p3
-  errors during apply, please fix and refresh p2
-  [2]
+  abort: conflicting local changes found
+  (did you forget to qrefresh?)
+  [255]
   $ hg revert -aq b
   $ echo d > d
   $ hg add d
   $ hg qpush --keep-changes
   applying p3
-  errors during apply, please fix and refresh p2
-  [2]
+  abort: conflicting local changes found
+  (did you forget to qrefresh?)
+  [255]
   $ hg forget d
   $ rm d
   $ hg qpop
@@ -372,8 +376,9 @@
   $ hg qpush -a --keep-changes
   applying p2
   applying p3
-  errors during apply, please fix and refresh p2
-  [2]
+  abort: conflicting local changes found
+  (did you forget to qrefresh?)
+  [255]
   $ hg qtop
   p2
   $ hg parents --template "{rev} {desc}\n"
--- a/tests/test-obsolete.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-obsolete.t	Fri May 01 17:21:10 2015 -0500
@@ -789,6 +789,62 @@
   visible                            0:193e9254ce7e
   tip                                0:193e9254ce7e
 
+Test bundle overlay onto hidden revision
+
+  $ cd ..
+  $ hg init repo-bundleoverlay
+  $ cd repo-bundleoverlay
+  $ echo "A" > foo
+  $ hg ci -Am "A"
+  adding foo
+  $ echo "B" >> foo
+  $ hg ci -m "B"
+  $ hg up 0
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ echo "C" >> foo
+  $ hg ci -m "C"
+  created new head
+  $ hg log -G
+  @  2:c186d7714947 (draft) [tip ] C
+  |
+  | o  1:44526ebb0f98 (draft) [ ] B
+  |/
+  o  0:4b34ecfb0d56 (draft) [ ] A
+  
+
+  $ hg clone -r1 . ../other-bundleoverlay
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 2 changes to 1 files
+  updating to branch default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ cd ../other-bundleoverlay
+  $ echo "B+" >> foo
+  $ hg ci --amend -m "B+"
+  $ hg log -G --hidden
+  @  3:b7d587542d40 (draft) [tip ] B+
+  |
+  | x  2:eb95e9297e18 (draft) [ ] temporary amend commit for 44526ebb0f98
+  | |
+  | x  1:44526ebb0f98 (draft) [ ] B
+  |/
+  o  0:4b34ecfb0d56 (draft) [ ] A
+  
+
+  $ hg incoming ../repo-bundleoverlay --bundle ../bundleoverlay.hg
+  comparing with ../repo-bundleoverlay
+  searching for changes
+  1:44526ebb0f98 (draft) [ ] B
+  2:c186d7714947 (draft) [tip ] C
+  $ hg log -G -R ../bundleoverlay.hg
+  o  4:c186d7714947 (draft) [tip ] C
+  |
+  | @  3:b7d587542d40 (draft) [ ] B+
+  |/
+  o  0:4b34ecfb0d56 (draft) [ ] A
+  
+
 #if serve
 
 Test issue 4506
--- a/tests/test-pending.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-pending.t	Fri May 01 17:21:10 2015 -0500
@@ -113,3 +113,27 @@
   rollback completed
   abort: pretxnchangegroup hook exited with status 1
   pull 0000000000000000000000000000000000000000
+
+Test that pending on transaction without changegroup see the normal changegroup(
+(issue4609)
+
+  $ cat <<EOF > parent/.hg/hgrc
+  > [hooks]
+  > pretxnchangegroup=
+  > pretxnclose = hg tip -T "tip: {node|short}\n"
+  > [phases]
+  > publishing=False
+  > EOF
+
+setup
+
+  $ cd parent
+  $ echo a > a
+  $ hg add a
+  $ hg commit -m a
+  tip: cb9a9f314b8b
+
+actual test
+
+  $ hg phase --public .
+  tip: cb9a9f314b8b
--- a/tests/test-rename-merge2.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-rename-merge2.t	Fri May 01 17:21:10 2015 -0500
@@ -100,7 +100,7 @@
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@e300d1c794ec+ other rev@4ce40f5aca24 ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev '*' '*' (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -140,7 +140,7 @@
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@86a2aa42fc76+ other rev@f4db7e329e71 ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * (glob)
   merge tool returned: 0
   1 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -178,7 +178,7 @@
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@e300d1c794ec+ other rev@bdb19105162a ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -214,7 +214,7 @@
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@02963e448370+ other rev@f4db7e329e71 ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -246,7 +246,7 @@
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@94b33a1b7f2d+ other rev@4ce40f5aca24 ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   1 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -275,7 +275,7 @@
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@86a2aa42fc76+ other rev@97c705ade336 ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -310,7 +310,7 @@
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@94b33a1b7f2d+ other rev@bdb19105162a ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   1 files updated, 1 files merged, 1 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -338,7 +338,7 @@
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@02963e448370+ other rev@97c705ade336 ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -364,14 +364,14 @@
   picked tool 'python ../merge' for b (binary False symlink False)
   merging b
   my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/b * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m
   updating: rev 2/2 files (100.00%)
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@62e7bf090eba+ other rev@49b6d8032493 ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -408,7 +408,7 @@
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   note: possible conflict - a was renamed multiple times to:
    b
@@ -438,14 +438,14 @@
   picked tool 'python ../merge' for b (binary False symlink False)
   merging b
   my b@86a2aa42fc76+ other b@af30c7647fc7 ancestor b@000000000000
-  launching merge tool: python ../merge $TESTTMP/t/t/b * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m
   updating: rev 2/2 files (100.00%)
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@86a2aa42fc76+ other rev@af30c7647fc7 ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -475,14 +475,14 @@
   picked tool 'python ../merge' for b (binary False symlink False)
   merging b
   my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000
-  launching merge tool: python ../merge $TESTTMP/t/t/b * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m
   updating: rev 3/3 files (100.00%)
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 1 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -511,14 +511,14 @@
   picked tool 'python ../merge' for b (binary False symlink False)
   merging b
   my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000
-  launching merge tool: python ../merge $TESTTMP/t/t/b * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m
   updating: rev 3/3 files (100.00%)
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   1 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -548,14 +548,14 @@
   picked tool 'python ../merge' for b (binary False symlink False)
   merging b
   my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000
-  launching merge tool: python ../merge $TESTTMP/t/t/b * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m
   updating: rev 3/3 files (100.00%)
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 1 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -584,14 +584,14 @@
   picked tool 'python ../merge' for b (binary False symlink False)
   merging b
   my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000
-  launching merge tool: python ../merge $TESTTMP/t/t/b * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m
   updating: rev 3/3 files (100.00%)
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   1 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -619,14 +619,14 @@
   picked tool 'python ../merge' for b (binary False symlink False)
   merging b
   my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor b@000000000000
-  launching merge tool: python ../merge $TESTTMP/t/t/b * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m
   updating: rev 2/2 files (100.00%)
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -658,14 +658,14 @@
   picked tool 'python ../merge' for b (binary False symlink False)
   merging b
   my b@02963e448370+ other b@8dbce441892a ancestor b@000000000000
-  launching merge tool: python ../merge $TESTTMP/t/t/b * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m
   updating: rev 3/3 files (100.00%)
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   1 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -696,14 +696,14 @@
   picked tool 'python ../merge' for b (binary False symlink False)
   merging b
   my b@0b76e65c8289+ other b@bdb19105162a ancestor b@000000000000
-  launching merge tool: python ../merge $TESTTMP/t/t/b * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m
   updating: rev 3/3 files (100.00%)
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -734,14 +734,14 @@
   picked tool 'python ../merge' for b (binary False symlink False)
   merging a and b to b
   my b@e300d1c794ec+ other b@49b6d8032493 ancestor a@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/b * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m
   updating: rev 2/2 files (100.00%)
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@e300d1c794ec+ other rev@49b6d8032493 ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -771,14 +771,14 @@
   picked tool 'python ../merge' for b (binary False symlink False)
   merging b and a to b
   my b@62e7bf090eba+ other a@f4db7e329e71 ancestor a@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/b * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob)
   merge tool returned: 0
    rev: versions differ -> m
   updating: rev 2/2 files (100.00%)
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@62e7bf090eba+ other rev@f4db7e329e71 ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   0 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
@@ -822,7 +822,7 @@
   picked tool 'python ../merge' for rev (binary False symlink False)
   merging rev
   my rev@02963e448370+ other rev@2b958612230f ancestor rev@924404dff337
-  launching merge tool: python ../merge $TESTTMP/t/t/rev * * (glob)
+  launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob)
   merge tool returned: 0
   1 files updated, 2 files merged, 0 files removed, 0 files unresolved
   (branch merge, don't forget to commit)
--- a/tests/test-revert.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-revert.t	Fri May 01 17:21:10 2015 -0500
@@ -201,12 +201,26 @@
   (use --all to revert all files, or 'hg update 1' to update)
   [255]
 
+call `hg revert` with -I
+---------------------------
+
+  $ echo a >> a
+  $ hg revert -I a
+  reverting a
+
+call `hg revert` with -X
+---------------------------
+
+  $ echo a >> a
+  $ hg revert -X d
+  reverting a
+
 call `hg revert` with --all
 ---------------------------
 
   $ hg revert --all -rtip
   reverting a
-
+  $ rm *.orig
 
 Issue332: confusing message when reverting directory
 ----------------------------------------------------
--- a/tests/test-revset.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-revset.t	Fri May 01 17:21:10 2015 -0500
@@ -1049,6 +1049,8 @@
 
   $ echo '[revsetalias]' >> .hg/hgrc
   $ echo 'm = merge()' >> .hg/hgrc
+(revset aliases can override builtin revsets)
+  $ echo 'p2($1) = p1($1)' >> .hg/hgrc
   $ echo 'sincem = descendants(m)' >> .hg/hgrc
   $ echo 'd($1) = reverse(sort($1, date))' >> .hg/hgrc
   $ echo 'rs(ARG1, ARG2) = reverse(sort(ARG1, ARG2))' >> .hg/hgrc
@@ -1064,6 +1066,64 @@
     <fullreposet+ 0:9>>
   6
 
+  $ HGPLAIN=1
+  $ export HGPLAIN
+  $ try m
+  ('symbol', 'm')
+  abort: unknown revision 'm'!
+  [255]
+
+  $ HGPLAINEXCEPT=revsetalias
+  $ export HGPLAINEXCEPT
+  $ try m
+  ('symbol', 'm')
+  (func
+    ('symbol', 'merge')
+    None)
+  * set:
+  <filteredset
+    <fullreposet+ 0:9>>
+  6
+
+  $ unset HGPLAIN
+  $ unset HGPLAINEXCEPT
+
+  $ try 'p2(.)'
+  (func
+    ('symbol', 'p2')
+    ('symbol', '.'))
+  (func
+    ('symbol', 'p1')
+    ('symbol', '.'))
+  * set:
+  <baseset+ [8]>
+  8
+
+  $ HGPLAIN=1
+  $ export HGPLAIN
+  $ try 'p2(.)'
+  (func
+    ('symbol', 'p2')
+    ('symbol', '.'))
+  * set:
+  <baseset+ []>
+
+  $ HGPLAINEXCEPT=revsetalias
+  $ export HGPLAINEXCEPT
+  $ try 'p2(.)'
+  (func
+    ('symbol', 'p2')
+    ('symbol', '.'))
+  (func
+    ('symbol', 'p1')
+    ('symbol', '.'))
+  * set:
+  <baseset+ [8]>
+  8
+
+  $ unset HGPLAIN
+  $ unset HGPLAINEXCEPT
+
 test alias recursion
 
   $ try sincem
--- a/tests/test-run-tests.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-run-tests.t	Fri May 01 17:21:10 2015 -0500
@@ -491,3 +491,17 @@
   } (no-eol)
 
 #endif
+
+backslash on end of line with glob matching is handled properly
+
+  $ cat > test-glob-backslash.t << EOF
+  >   $ echo 'foo bar \\'
+  >   foo * \ (glob)
+  > EOF
+
+  $ $TESTDIR/run-tests.py --with-hg=`which hg` test-glob-backslash.t
+  .
+  # Ran 1 tests, 0 skipped, 0 warned, 0 failed.
+
+  $ rm -f test-glob-backslash.t
+
--- a/tests/test-shelve.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-shelve.t	Fri May 01 17:21:10 2015 -0500
@@ -60,7 +60,6 @@
    -m --message TEXT        use text as shelve message
    -n --name NAME           use the given name for the shelved commit
    -p --patch               show patch
-   -i --interactive         interactive mode, only works while creating a shelve
       --stat                output diffstat-style summary of changes
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
--- a/tests/test-subrepo-missing.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-subrepo-missing.t	Fri May 01 17:21:10 2015 -0500
@@ -96,4 +96,14 @@
   revision 102a90ea7b4a in subrepo subrepo is hidden
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
+check that --hidden is propagated to the subrepo
+
+  $ hg -R subrepo up tip
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg ci -m 'commit with amended subrepo'
+  $ echo bar > subrepo/a
+  $ hg -R subrepo ci --amend -m "amend a (again)"
+  $ hg --hidden cat subrepo/a
+  foo
+
   $ cd ..
--- a/tests/test-subrepo.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-subrepo.t	Fri May 01 17:21:10 2015 -0500
@@ -598,6 +598,26 @@
 
   $ echo foo >> s/ss/a
   $ hg -R s/ss commit -m 'test dirty store detection'
+
+  $ hg out -S -r `hg log -r tip -T "{node|short}"`
+  comparing with $TESTTMP/t (glob)
+  searching for changes
+  no changes found
+  comparing with $TESTTMP/t/s
+  searching for changes
+  no changes found
+  comparing with $TESTTMP/t/s/ss
+  searching for changes
+  changeset:   1:79ea5566a333
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     test dirty store detection
+  
+  comparing with $TESTTMP/t/t
+  searching for changes
+  no changes found
+
   $ hg push
   pushing to $TESTTMP/t (glob)
   pushing subrepo s/ss to $TESTTMP/t/s/ss (glob)
@@ -669,6 +689,24 @@
 
 should pull t
 
+  $ hg incoming -S -r `hg log -r tip -T "{node|short}"`
+  comparing with $TESTTMP/t (glob)
+  no changes found
+  comparing with $TESTTMP/t/s
+  searching for changes
+  no changes found
+  comparing with $TESTTMP/t/s/ss
+  searching for changes
+  no changes found
+  comparing with $TESTTMP/t/t
+  searching for changes
+  changeset:   5:52c0adc0515a
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     13
+  
+
   $ hg up
   pulling subrepo t from $TESTTMP/t/t
   searching for changes
@@ -1026,6 +1064,45 @@
   no changes found
   [1]
 
+Check that merge of a new subrepo doesn't write the uncommitted state to
+.hgsubstate (issue4622)
+
+  $ hg init issue1852a/addedsub
+  $ echo zzz > issue1852a/addedsub/zz.txt
+  $ hg -R issue1852a/addedsub ci -Aqm "initial ZZ"
+
+  $ hg clone issue1852a/addedsub issue1852d/addedsub
+  updating to branch default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+  $ echo def > issue1852a/sub/repo/foo
+  $ hg -R issue1852a ci -SAm 'tweaked subrepo'
+  adding tmp/sub/repo/foo_p
+  committing subrepository sub/repo (glob)
+
+  $ echo 'addedsub = addedsub' >> issue1852d/.hgsub
+  $ echo xyz > issue1852d/sub/repo/foo
+  $ hg -R issue1852d pull -u
+  pulling from $TESTTMP/issue1852a (glob)
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 2 changes to 2 files
+   subrepository sub/repo diverged (local revision: f42d5c7504a8, remote revision: 46cd4aac504c)
+  (M)erge, keep (l)ocal or keep (r)emote? m
+  pulling subrepo sub/repo from $TESTTMP/issue1852a/sub/repo (glob)
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+   subrepository sources for sub/repo differ (glob)
+  use (l)ocal source (f42d5c7504a8) or (r)emote source (46cd4aac504c)? l
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ cat issue1852d/.hgsubstate
+  f42d5c7504a811dda50f5cf3e5e16c3330b87172 sub/repo
+
 Check status of files when none of them belong to the first
 subrepository:
 
--- a/tests/test-tags.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-tags.t	Fri May 01 17:21:10 2015 -0500
@@ -114,7 +114,7 @@
   0010: ff ff ff ff ff ff ff ff b9 15 46 36 26 b7 b4 a7 |..........F6&...|
   0020: 73 e0 9e e3 c5 2f 51 0e 19 e0 5e 1f f9 66 d8 59 |s..../Q...^..f.Y|
 
-And again, but now unable to write tag cache:
+And again, but now unable to write tag cache or lock file:
 
 #if unix-permissions
   $ rm -f .hg/cache/tags2-visible .hg/cache/hgtagsfnodes1
@@ -122,6 +122,11 @@
   $ hg identify
   b9154636be93 tip
   $ chmod 755 .hg/cache
+
+  $ chmod 555 .hg
+  $ hg identify
+  b9154636be93 tip
+  $ chmod 755 .hg
 #endif
 
 Tag cache debug info written to blackbox log
@@ -144,7 +149,7 @@
   b9154636be93 tip
   $ hg blackbox -l 5
   1970/01/01 00:00:00 bob> identify
-  1970/01/01 00:00:00 bob> not writing .hg/cache/hgtagsfnodes1 because lock held
+  1970/01/01 00:00:00 bob> not writing .hg/cache/hgtagsfnodes1 because lock cannot be acquired
   1970/01/01 00:00:00 bob> 0/1 cache hits/lookups in * seconds (glob)
   1970/01/01 00:00:00 bob> writing .hg/cache/tags2-visible with 1 tags
   1970/01/01 00:00:00 bob> identify exited 0 after * seconds (glob)
--- a/tests/test-up-local-change.t	Thu Apr 16 20:56:43 2015 -0500
+++ b/tests/test-up-local-change.t	Fri May 01 17:21:10 2015 -0500
@@ -55,7 +55,7 @@
   picked tool 'true' for a (binary False symlink False)
   merging a
   my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
-  launching merge tool: true $TESTTMP/r2/a * (glob)
+  launching merge tool: true *$TESTTMP/r2/a* * (glob)
   merge tool returned: 0
   1 files updated, 1 files merged, 0 files removed, 0 files unresolved
   $ hg parents
@@ -78,7 +78,7 @@
   picked tool 'true' for a (binary False symlink False)
   merging a
   my a@1e71731e6fbb+ other a@c19d34741b0a ancestor a@1e71731e6fbb
-  launching merge tool: true $TESTTMP/r2/a * (glob)
+  launching merge tool: true *$TESTTMP/r2/a* * (glob)
   merge tool returned: 0
   0 files updated, 1 files merged, 1 files removed, 0 files unresolved
   $ hg parents
@@ -109,7 +109,7 @@
   picked tool 'true' for a (binary False symlink False)
   merging a
   my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
-  launching merge tool: true $TESTTMP/r2/a * (glob)
+  launching merge tool: true *$TESTTMP/r2/a* * (glob)
   merge tool returned: 0
   1 files updated, 1 files merged, 0 files removed, 0 files unresolved
   $ hg parents