merge with stable
authorMatt Mackall <mpm@selenic.com>
Thu, 01 Aug 2013 22:52:05 -0500
changeset 19526 a58251c0568f
parent 19465 004f965630d9 (current diff)
parent 19525 064f7d697852 (diff)
child 19527 534cdbe87cad
merge with stable
--- a/.hgsigs	Fri Jul 12 11:14:42 2013 +0900
+++ b/.hgsigs	Thu Aug 01 22:52:05 2013 -0500
@@ -74,3 +74,5 @@
 ddc7a6be20212d18f3e27d9d7e6f079a66d96f21 0 iD8DBQBRkswvywK+sNU5EO8RAiYYAJsHTHyHbJeAgmGvBTmDrfcKu4doUgCeLm7eGBjx7yAPUvEtxef8rAkQmXI=
 cceaf7af4c9e9e6fa2dbfdcfe9856c5da69c4ffd 0 iD8DBQBRqnFLywK+sNU5EO8RAsWNAJ9RR6t+y1DLFc2HeH0eN9VfZAKF9gCeJ8ezvhtKq/LMs0/nvcgKQc/d5jk=
 009794acc6e37a650f0fae37872e733382ac1c0c 0 iD8DBQBR0guxywK+sNU5EO8RArNkAKCq9pMihVzP8Os5kCmgbWpe5C37wgCgqzuPZTHvAsXF5wTyaSTMVa9Ccq4=
+f0d7721d7322dcfb5af33599c2543f27335334bb 0 iD8DBQBR8taaywK+sNU5EO8RAqeEAJ4idDhhDuEsgsUjeQgWNj498matHACfT67gSF5w0ylsrBx1Hb52HkGXDm0=
+f37b5a17e6a0ee17afde2cdde5393dd74715fb58 0 iD8DBQBR+ymFywK+sNU5EO8RAuSdAJkBMcd9DAZ3rWE9WGKPm2YZ8LBoXACfXn/wbEsVy7ZgJoUwiWmHSnQaWCI=
--- a/.hgtags	Fri Jul 12 11:14:42 2013 +0900
+++ b/.hgtags	Thu Aug 01 22:52:05 2013 -0500
@@ -87,3 +87,5 @@
 ddc7a6be20212d18f3e27d9d7e6f079a66d96f21 2.6.1
 cceaf7af4c9e9e6fa2dbfdcfe9856c5da69c4ffd 2.6.2
 009794acc6e37a650f0fae37872e733382ac1c0c 2.6.3
+f0d7721d7322dcfb5af33599c2543f27335334bb 2.7-rc
+f37b5a17e6a0ee17afde2cdde5393dd74715fb58 2.7
--- a/contrib/check-code.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/contrib/check-code.py	Thu Aug 01 22:52:05 2013 -0500
@@ -173,6 +173,8 @@
     (r'^\s+(\w|\.)+=\w[^,()\n]*$', "missing whitespace in assignment"),
     (r'(\s+)try:\n((?:\n|\1\s.*\n)+?)\1except.*?:\n'
      r'((?:\n|\1\s.*\n)+?)\1finally:', 'no try/except/finally in Python 2.4'),
+    (r'(?<!def)(\s+|^|\()next\(.+\)',
+     'no next(foo) in Python 2.4 and 2.5, use foo.next() instead'),
     (r'(\s+)try:\n((?:\n|\1\s.*\n)*?)\1\s*yield\b.*?'
      r'((?:\n|\1\s.*\n)+?)\1finally:',
      'no yield inside try/finally in Python 2.4'),
@@ -407,7 +409,11 @@
                 print "Skipping %s for %s it doesn't match %s" % (
                        name, match, f)
             continue
-        fp = open(f)
+        try:
+            fp = open(f)
+        except IOError, e:
+            print "Skipping %s, %s" % (f, str(e).split(':', 1)[0])
+            continue
         pre = post = fp.read()
         fp.close()
         if "no-" "check-code" in pre:
--- a/contrib/win32/mercurial.ini	Fri Jul 12 11:14:42 2013 +0900
+++ b/contrib/win32/mercurial.ini	Thu Aug 01 22:52:05 2013 -0500
@@ -36,6 +36,7 @@
 ;
 [extensions]
 ;acl =
+;blackbox =
 ;bugzilla =
 ;children =
 ;churn =
--- a/contrib/win32/mercurial.iss	Fri Jul 12 11:14:42 2013 +0900
+++ b/contrib/win32/mercurial.iss	Thu Aug 01 22:52:05 2013 -0500
@@ -62,7 +62,6 @@
 Source: contrib\tcsh_completion_build.sh; DestDir: {app}/Contrib
 Source: contrib\hgk; DestDir: {app}/Contrib; DestName: hgk.tcl
 Source: contrib\xml.rnc; DestDir: {app}/Contrib
-Source: contrib\shrink-revlog.py; DestDir: {app}/Contrib
 Source: contrib\mercurial.el; DestDir: {app}/Contrib
 Source: contrib\mq.el; DestDir: {app}/Contrib
 Source: contrib\hgweb.fcgi; DestDir: {app}/Contrib
@@ -98,7 +97,6 @@
 
 [UninstallDelete]
 Type: files; Name: {app}\Mercurial.url
-Type: files; Name: {app}\Contrib\shrink-revlog.pyc
 
 [Icons]
 Name: {group}\Uninstall Mercurial; Filename: {uninstallexe}
--- a/hgext/convert/cvsps.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/hgext/convert/cvsps.py	Thu Aug 01 22:52:05 2013 -0500
@@ -496,6 +496,7 @@
         .branchpoints- the branches that start at the current entry or empty
     '''
     def __init__(self, **entries):
+        self.id = None
         self.synthetic = False
         self.__dict__.update(entries)
 
@@ -604,7 +605,8 @@
 
     # Sort changesets by date
 
-    def cscmp(l, r):
+    odd = set()
+    def cscmp(l, r, odd=odd):
         d = sum(l.date) - sum(r.date)
         if d:
             return d
@@ -626,7 +628,8 @@
 
         for e in r.entries:
             if le.get(e.rcs, None) == e.parent:
-                assert not d
+                if d:
+                    odd.add((l, r))
                 d = -1
                 break
 
@@ -769,6 +772,12 @@
     for i, c in enumerate(changesets):
         c.id = i + 1
 
+    if odd:
+        for l, r in odd:
+            if l.id is not None and r.id is not None:
+                ui.warn(_('changeset %d is both before and after %d\n')
+                        % (l.id, r.id))
+
     ui.status(_('%d changeset entries\n') % len(changesets))
 
     hook.hook(ui, None, "cvschangesets", True, changesets=changesets)
--- a/hgext/convert/subversion.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/hgext/convert/subversion.py	Thu Aug 01 22:52:05 2013 -0500
@@ -483,6 +483,8 @@
         try:
             for entry in stream:
                 origpaths, revnum, author, date, message = entry
+                if not origpaths:
+                    origpaths = []
                 copies = [(e.copyfrom_path, e.copyfrom_rev, p) for p, e
                           in origpaths.iteritems() if e.copyfrom_path]
                 # Apply moves/copies from more specific to general
--- a/hgext/histedit.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/hgext/histedit.py	Thu Aug 01 22:52:05 2013 -0500
@@ -506,12 +506,20 @@
         (parentctxnode, rules, keep, topmost, replacements) = readstate(repo)
         mapping, tmpnodes, leafs, _ntm = processreplacement(repo, replacements)
         ui.debug('restore wc to old parent %s\n' % node.short(topmost))
-        hg.clean(repo, topmost)
+        # check whether we should update away
+        parentnodes = [c.node() for c in repo[None].parents()]
+        for n in leafs | set([parentctxnode]):
+            if n in parentnodes:
+                hg.clean(repo, topmost)
+                break
+        else:
+            pass
         cleanupnode(ui, repo, 'created', tmpnodes)
         cleanupnode(ui, repo, 'temp', leafs)
         os.unlink(os.path.join(repo.path, 'histedit-state'))
         return
     else:
+        cmdutil.checkunfinished(repo)
         cmdutil.bailifchanged(repo)
 
         topmost, empty = repo.dirstate.parents()
@@ -679,6 +687,8 @@
         if (not obsolete._enabled and
             repo.revs('(%ld::) - (%ld)', ctxs, ctxs)):
             raise util.Abort(_('cannot edit history that would orphan nodes'))
+        if repo.revs('(%ld) and merge()', ctxs):
+            raise util.Abort(_('cannot edit history that contains merges'))
         root = ctxs[0] # list is already sorted by repo.set
         if not root.phase():
             raise util.Abort(_('cannot edit immutable changeset: %s') % root)
@@ -870,3 +880,6 @@
 
 def extsetup(ui):
     cmdutil.summaryhooks.add('histedit', summaryhook)
+    cmdutil.unfinishedstates.append(
+        ['histedit-state', False, True, _('histedit in progress'),
+         _("use 'hg histedit --continue' or 'hg histedit --abort'")])
--- a/hgext/largefiles/overrides.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/hgext/largefiles/overrides.py	Thu Aug 01 22:52:05 2013 -0500
@@ -250,8 +250,10 @@
         """
         match = oldmatch(ctx, pats, opts, globbed, default)
         m = copy.copy(match)
-        standins = [lfutil.standin(f) for f in m._files]
-        m._files.extend(standins)
+        for i in range(0, len(m._files)):
+            standin = lfutil.standin(m._files[i])
+            if standin in repo[ctx.node()]:
+                m._files[i] = standin
         m._fmap = set(m._files)
         m._always = False
         origmatchfn = m.matchfn
--- a/hgext/mq.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/hgext/mq.py	Thu Aug 01 22:52:05 2013 -0500
@@ -976,6 +976,7 @@
             raise util.Abort(_("local changes found"))
 
     def checklocalchanges(self, repo, force=False, refresh=True):
+        cmdutil.checkunfinished(repo)
         m, a, r, d = repo.status()[:4]
         if (m or a or r or d) and not force:
             self.localchangesfound(refresh)
@@ -1876,7 +1877,7 @@
         index of the first patch past the last applied one.
         """
         end = 0
-        def next(start):
+        def nextpatch(start):
             if all_patches or start >= len(self.series):
                 return start
             for i in xrange(start, len(self.series)):
@@ -1891,8 +1892,8 @@
                 end = self.series.index(p)
             except ValueError:
                 return 0
-            return next(end + 1)
-        return next(end)
+            return nextpatch(end + 1)
+        return nextpatch(end)
 
     def appliedname(self, index):
         pname = self.applied[index].name
--- a/hgext/rebase.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/hgext/rebase.py	Thu Aug 01 22:52:05 2013 -0500
@@ -174,6 +174,7 @@
                 raise util.Abort(_('cannot specify both a '
                                    'revision and a source'))
 
+            cmdutil.checkunfinished(repo)
             cmdutil.bailifchanged(repo)
 
             if not destf:
@@ -258,10 +259,10 @@
             if state[rev] == -1:
                 ui.progress(_("rebasing"), pos, ("%d:%s" % (rev, repo[rev])),
                             _('changesets'), total)
+                p1, p2 = defineparents(repo, rev, target, state,
+                                                        targetancestors)
                 storestatus(repo, originalwd, target, state, collapsef, keepf,
                             keepbranchesf, external, activebookmark)
-                p1, p2 = defineparents(repo, rev, target, state,
-                                                        targetancestors)
                 if len(repo.parents()) == 2:
                     repo.ui.debug('resuming interrupted rebase\n')
                 else:
@@ -591,33 +592,52 @@
             raise
         raise util.Abort(_('no rebase in progress'))
 
+def inrebase(repo, originalwd, state):
+    '''check whether the workdir is in an interrupted rebase'''
+    parents = [p.rev() for p in repo.parents()]
+    if originalwd in parents:
+        return True
+
+    for newrev in state.itervalues():
+        if newrev in parents:
+            return True
+
+    return False
+
 def abort(repo, originalwd, target, state):
     'Restore the repository to its original state'
     dstates = [s for s in state.values() if s != nullrev]
     immutable = [d for d in dstates if not repo[d].mutable()]
+    cleanup = True
     if immutable:
-        raise util.Abort(_("can't abort rebase due to immutable changesets %s")
-                         % ', '.join(str(repo[r]) for r in immutable),
-                         hint=_('see hg help phases for details'))
+        repo.ui.warn(_("warning: can't clean up immutable changesets %s\n")
+                     % ', '.join(str(repo[r]) for r in immutable),
+                     hint=_('see hg help phases for details'))
+        cleanup = False
 
     descendants = set()
     if dstates:
         descendants = set(repo.changelog.descendants(dstates))
     if descendants - set(dstates):
         repo.ui.warn(_("warning: new changesets detected on target branch, "
-                       "can't abort\n"))
-        return -1
-    else:
+                       "can't strip\n"))
+        cleanup = False
+
+    if cleanup:
+        # Update away from the rebase if necessary
+        if inrebase(repo, originalwd, state):
+            merge.update(repo, repo[originalwd].rev(), False, True, False)
+
         # Strip from the first rebased revision
-        merge.update(repo, repo[originalwd].rev(), False, True, False)
         rebased = filter(lambda x: x > -1 and x != target, state.values())
         if rebased:
             strippoints = [c.node()  for c in repo.set('roots(%ld)', rebased)]
             # no backup of rebased cset versions needed
             repair.strip(repo.ui, repo, strippoints)
-        clearstatus(repo)
-        repo.ui.warn(_('rebase aborted\n'))
-        return 0
+
+    clearstatus(repo)
+    repo.ui.warn(_('rebase aborted\n'))
+    return 0
 
 def buildstate(repo, dest, rebaseset, collapse):
     '''Define which revisions are going to be rebased and where
@@ -798,3 +818,6 @@
     entry[1].append(('t', 'tool', '',
                      _("specify merge tool for rebase")))
     cmdutil.summaryhooks.add('rebase', summaryhook)
+    cmdutil.unfinishedstates.append(
+        ['rebasestate', False, False, _('rebase in progress'),
+         _("use 'hg rebase --continue' or 'hg rebase --abort'")])
--- a/hgext/record.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/hgext/record.py	Thu Aug 01 22:52:05 2013 -0500
@@ -519,6 +519,7 @@
         will be left in place, so the user can continue working.
         """
 
+        cmdutil.checkunfinished(repo, commit=True)
         merge = len(repo[None].parents()) > 1
         if merge:
             raise util.Abort(_('cannot partially commit a merge '
--- a/hgext/transplant.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/hgext/transplant.py	Thu Aug 01 22:52:05 2013 -0500
@@ -605,6 +605,7 @@
     if opts.get('edit'):
         tp.editor = cmdutil.commitforceeditor
 
+    cmdutil.checkunfinished(repo)
     p1, p2 = repo.dirstate.parents()
     if len(repo) > 0 and p1 == revlog.nullid:
         raise util.Abort(_('no revision checked out'))
@@ -683,6 +684,9 @@
 def extsetup(ui):
     revset.symbols['transplanted'] = revsettransplanted
     templatekw.keywords['transplanted'] = kwtransplanted
+    cmdutil.unfinishedstates.append(
+        ['series', True, False, _('transplant in progress'),
+         _("use 'hg transplant --continue' or 'hg update' to abort")])
 
 # tell hggettext to extract docstrings from these functions:
 i18nfunctions = [revsettransplanted, kwtransplanted]
--- a/i18n/it.po	Fri Jul 12 11:14:42 2013 +0900
+++ b/i18n/it.po	Thu Aug 01 22:52:05 2013 -0500
@@ -6261,7 +6261,7 @@
 msgstr "    Se non vengono forniti nomi, aggiunge tutti i file al repository."
 
 msgid "    .. container:: verbose"
-msgstr "    .. contenitore:: verboso"
+msgstr ""
 
 msgid ""
 "       An example showing how new (unknown) files are added\n"
@@ -7244,7 +7244,7 @@
 "       changesets, as it will compare the merge changeset against its\n"
 "       first parent only."
 msgstr ""
-"    .. nota::\n"
+"    .. note::\n"
 "       l'export potrebbe generare un diff inatteso per changeset di \n"
 "       merge, dal momento che confronterà tali changeset solo con\n"
 "       il loro primo genitore."
@@ -7797,7 +7797,7 @@
 "       its first parent. Also, only files different from BOTH parents\n"
 "       will appear in files:."
 msgstr ""
-"    .. nota::\n"
+"    .. note::\n"
 "       log -p/--patch potrebbe generare un diff inatteso per changeset\n"
 "       di merge, in quanto confronta solo i changeset di merge con il loro\n"
 "       primo genitore. Inoltre, solo i file differente da ENTRAMBI i "
--- a/i18n/ja.po	Fri Jul 12 11:14:42 2013 +0900
+++ b/i18n/ja.po	Thu Aug 01 22:52:05 2013 -0500
@@ -28,7 +28,7 @@
 #
 # Distributed SCM       分散構成管理ツール
 #
-# abort                 中断
+# abort                 中止
 # active
 #   guard
 #     "hg qguard" 側    ガード設定(状況)
@@ -105,6 +105,7 @@
 # patch                 パッチ
 # platform              稼働環境
 # pop(patch)            (パッチの)適用解除
+# progress (, in)       未完了(interrupted rebase/graft/histedit/transplant)
 # pruned                xxxxx (obsoleted with no successors) xxxxxx
 # pull                  (追加リビジョンの)取り込み
 # push                  (追加リビジョンの)反映
@@ -123,6 +124,7 @@
 # search                探索
 # server                サーバ
 # source url (of subrepo) (サブリポジトリの)参照先 URL
+# stop                  中断(再開可能な場合)/中止(再開不可能な場合)
 # subrepo               サブリポジトリ
 # successor (changeset) 後継リビジョン
 # successors set        後継セット
@@ -144,7 +146,7 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2013-06-30 23:13+0900\n"
+"POT-Creation-Date: 2013-07-31 16:07+0900\n"
 "PO-Revision-Date: 2009-11-16 21:24+0100\n"
 "Last-Translator: Japanese translation team <mercurial-ja@googlegroups.com>\n"
 "Language-Team: Japanese\n"
@@ -1441,8 +1443,8 @@
 "    It is possible to map alternate email addresses to a main address\n"
 "    by providing a file using the following format::"
 msgstr ""
-"    以下の形式のファイルを指定することで、 リビジョンに記録された電子\n"
-"    メールアドレスを別のものに変換することが可能です::"
+"    下記形式のファイルを指定することで、 「別名」の電子メールアドレスを、\n"
+"    「実名」に変換して集計できます::"
 
 msgid "      <alias email> = <actual email>"
 msgstr "      <別名> = <実名>"
@@ -1450,11 +1452,13 @@
 msgid ""
 "    Such a file may be specified with the --aliases option, otherwise\n"
 "    a .hgchurn file will be looked for in the working directory root.\n"
-"    "
-msgstr ""
-"    上記形式のファイルは、 --aliases が指定された場合は指定された\n"
-"    ファイルが読み込まれますが、 特に指定が無い場合、 リポジトリのルート\n"
-"    直下にある .hgchurn というファイルを読み込もうとします。\n"
+"    Aliases will be split from the rightmost \"=\".\n"
+"    "
+msgstr ""
+"    --aliases 指定により、 指定の変換ファイルが読み込まれますが、\n"
+"    特に指定が無い場合は、 リポジトリのルート直下にある .hgchurn\n"
+"    というファイルが読み込まれます。\n"
+"    別名定義の記述は、 一番右側の \"=\" 以降が「実名」となります。\n"
 "    "
 
 #, python-format
@@ -1616,6 +1620,16 @@
 "  tags.local = black bold"
 
 msgid ""
+"  rebase.rebased = blue\n"
+"  rebase.remaining = red bold"
+msgstr ""
+"  rebase.rebased = blue\n"
+"  rebase.remaining = red bold"
+
+msgid "  histedit.remaining = red bold"
+msgstr "  histedit.remaining = red bold"
+
+msgid ""
 "The available effects in terminfo mode are 'blink', 'bold', 'dim',\n"
 "'inverse', 'invisible', 'italic', 'standout', and 'underline'; in\n"
 "ECMA-48 mode, the options are 'bold', 'inverse', 'italic', and\n"
@@ -2405,6 +2419,10 @@
 msgstr "要求されたツール '%s' を見つけることができません"
 
 #, python-format
+msgid "splicemap entry %s is not a valid revision identifier"
+msgstr "splicemap のエントリ %s は有効なリビジョンではありません"
+
+#, python-format
 msgid "%s error:\n"
 msgstr "%s エラー:\n"
 
@@ -2417,10 +2435,6 @@
 msgstr "変換ファイル %r を開くことができません: %s"
 
 #, python-format
-msgid "syntax error in %s(%d): child parent1[,parent2] expected"
-msgstr "%s(%d) での文法エラー: 正しい形式は 子 親1[,親2]"
-
-#, python-format
 msgid "%s: invalid source repository type"
 msgstr "%s: 変換元リポジトリ種別が不正です"
 
@@ -2443,6 +2457,14 @@
 msgid "getting files"
 msgstr "ファイルの取得中"
 
+#, python-format
+msgid "syntax error in %s(%d): child parent1[,parent2] expected"
+msgstr "%s(%d) での文法エラー: 正しい形式は 子 親1[,親2]"
+
+#, python-format
+msgid "splicemap file not found or error reading %s:"
+msgstr "splicemap ファイル %s の読み込みに失敗しました:"
+
 msgid "revisions"
 msgstr "リビジョン"
 
@@ -2617,6 +2639,10 @@
 "%s\n"
 
 #, python-format
+msgid "changeset %d is both before and after %d\n"
+msgstr "ソートによって、リビジョン %d が %d の前後両方に出現します\n"
+
+#, python-format
 msgid "%d changeset entries\n"
 msgstr "%d 件のリビジョン要素\n"
 
@@ -2700,7 +2726,7 @@
 #, python-format
 msgid ""
 "tree analysis stopped because it points to an unregistered archive %s...\n"
-msgstr "未登録アーカイブ %s の参照によりツリー解析を中断...\n"
+msgstr "未登録アーカイブ %s の参照によりツリー解析を中止...\n"
 
 #, python-format
 msgid "could not parse cat-log of %s"
@@ -3507,8 +3533,9 @@
 msgid "commands to sign and verify changesets"
 msgstr "リビジョンへの署名および検証コマンド"
 
-msgid "error while verifying signature"
-msgstr "署名検証中のエラー"
+#, python-format
+msgid "%s Unknown key ID \"%s\"\n"
+msgstr "%s \"%s\" は未知のキーIDです\n"
 
 #, python-format
 msgid "%s Bad signature from \"%s\"\n"
@@ -3618,7 +3645,7 @@
 msgstr "複製元や改名元の履歴も遡る"
 
 msgid "only follow the first parent of merge changesets (DEPRECATED)"
-msgstr "マージの際には第1親のみを遡る (DEPRECATED)"
+msgstr "マージの際には第1親のみを遡る (非推奨)"
 
 msgid "show revisions matching date spec"
 msgstr "指定日時に合致するリビジョンを表示"
@@ -3636,7 +3663,7 @@
 msgstr "ファイルが登録除外されたリビジョンを含める"
 
 msgid "show only merges (DEPRECATED)"
-msgstr "マージ実施リビジョンのみを表示 (DEPRECATED)"
+msgstr "マージ実施リビジョンのみを表示 (非推奨)"
 
 msgid "USER"
 msgstr "ユーザ"
@@ -3840,7 +3867,7 @@
 msgstr "cat-file: 種別もリビジョンも指定されていません\n"
 
 msgid "aborting hg cat-file only understands commits\n"
-msgstr "中断: catfile は commit 種別でのみ実行可能です\n"
+msgstr "中止: catfile は commit 種別でのみ実行可能です\n"
 
 msgid "parse given revisions"
 msgstr "指定リビジョンの解析"
@@ -4238,7 +4265,7 @@
 "#\n"
 
 msgid "Fix up the change and run hg histedit --continue"
-msgstr "衝突解消後に \"hg histedit --continue\" してください"
+msgstr "衝突解消後に 'hg histedit --continue' を実行してください"
 
 #, python-format
 msgid "%s: empty changeset\n"
@@ -4248,8 +4275,8 @@
 "Make changes as needed, you may commit or record as needed now.\n"
 "When you are finished, run hg histedit --continue to resume."
 msgstr ""
-"必要に応じて変更/記録を行ってください。 作業が完了したならば、\n"
-"改変再開のために hg histedit --continue を実行してください。"
+"必要に応じて変更/コミットを行ってください。\n"
+"作業完了後は 'hg histedit --continue' で histedit を再開します。"
 
 #, python-format
 msgid "%s: empty changeset"
@@ -4266,13 +4293,13 @@
 msgstr "履歴改変手順を指定ファイルから読み込み"
 
 msgid "continue an edit already in progress"
-msgstr "中断された履歴改変を再開"
+msgstr "中断された未完了の履歴改変を再開"
 
 msgid "don't strip old nodes after edit is complete"
 msgstr "改変元の履歴を改変完了後も保持"
 
 msgid "abort an edit in progress"
-msgstr "進行中の履歴改変を中止"
+msgstr "未完了の履歴改変を中止"
 
 msgid "changesets not found in destination"
 msgstr "連携先リポジトリに、 含まれないリビジョンを、 改変対象化"
@@ -4306,7 +4333,8 @@
 msgstr "--abort 指定時は引数を指定できません"
 
 msgid "history edit already in progress, try --continue or --abort"
-msgstr "履歴改変は継続中です。 --continue または --abort を指定してください"
+msgstr ""
+"以前の履歴改変が未完了です。 --continue または --abortを指定してください"
 
 msgid "no revisions allowed with --outgoing"
 msgstr "--outgoing とリビジョン指定は併用できません"
@@ -4323,12 +4351,14 @@
 
 #, python-format
 msgid "update to %s or descendant and run \"hg histedit --continue\" again"
-msgstr ""
-"%s かその子孫で作業領域更新後に \"hg histedit --continue\" してください"
+msgstr "%s 又はその子孫で作業領域更新後に、再度 histedit を実行してください"
 
 msgid "cannot edit history that would orphan nodes"
 msgstr "履歴ツリーが分断されるような履歴改変はできません"
 
+msgid "cannot edit history that contains merges"
+msgstr "マージを含む履歴は histedit の対象に指定できません"
+
 #, python-format
 msgid "cannot edit immutable changeset: %s"
 msgstr "改変不能なリビジョンがあります: %s"
@@ -4363,6 +4393,23 @@
 msgid "histedit: moving bookmarks %s from %s to %s\n"
 msgstr "histedit: ブックマーク %s を %s から %s に移動中\n"
 
+#. i18n: column positioning for "hg summary"
+#, python-format
+msgid "hist:   %s (histedit --continue)\n"
+msgstr "hist:         %s (histedit --continue)\n"
+
+#, python-format
+msgid "%d remaining"
+msgstr "残リビジョン数 %d"
+
+msgid "histedit in progress"
+msgstr "histedit による履歴改変が未完了です"
+
+msgid "use 'hg histedit --continue' or 'hg histedit --abort'"
+msgstr ""
+"未完了の histedit は、'hg histedit --continue' で再開するか、'hg histedit --"
+"abort' で中止してください"
+
 msgid "accelerate status report using Linux's inotify service"
 msgstr "Linux の inoitfy サービスによる状態報告の高速化"
 
@@ -4807,7 +4854,7 @@
 "    kwexpand refuses to run if given files contain local changes.\n"
 "    "
 msgstr ""
-"    指定されたファイルの変更が未コミットの場合、 実行は中断されます。\n"
+"    指定されたファイルの変更が未コミットの場合、 実行は中止されます。\n"
 "    "
 
 msgid "show keyword status flags of all files"
@@ -4881,7 +4928,7 @@
 "    kwshrink refuses to run if given files contain local changes.\n"
 "    "
 msgstr ""
-"    指定されたファイルの変更が未コミットの場合、 実行は中断されます。\n"
+"    指定されたファイルの変更が未コミットの場合、 実行は中止されます。\n"
 "    "
 
 msgid "track large binary files"
@@ -5356,27 +5403,23 @@
 msgid "uncommitted local changes"
 msgstr "作業領域の変更が未コミットです"
 
-msgid "&Largefile"
-msgstr "&Largefile"
-
-msgid "&Normal file"
-msgstr "&Normal file"
-
 #, python-format
 msgid ""
 "%s has been turned into a largefile\n"
-"use (l)argefile or keep as (n)ormal file?"
+"use (l)argefile or keep as (n)ormal file?$$ &Largefile $$ &Normal file"
 msgstr ""
 "ファイル %s が大容量ファイル化されています。\n"
-"どちらの形式を採用しますか? 大容量:(l)argefile 通常:(n)ormal file"
+"大容量:(l)argefile と通常:(n)ormal file のどちらの形式を採用しますか?$$ "
+"&Largefile $$ &Normal file"
 
 #, python-format
 msgid ""
 "%s has been turned into a normal file\n"
-"keep as (l)argefile or use (n)ormal file?"
+"keep as (l)argefile or use (n)ormal file?$$ &Largefile $$ &Normal file"
 msgstr ""
 "ファイル %s が通常ファイル化されています。\n"
-"どちらの形式を採用しますか? 大容量:(l)argefile 通常:(n)ormal file"
+"大容量:(l)argefile と通常:(n)ormal file のどちらの形式を採用しますか?$$ "
+"&Largefile $$ &Normal file"
 
 #, python-format
 msgid "merging %s and %s to %s\n"
@@ -5389,16 +5432,11 @@
 #, python-format
 msgid ""
 "largefile %s has a merge conflict\n"
-"keep (l)ocal or take (o)ther?"
+"keep (l)ocal or take (o)ther?$$ &Local $$ &Other"
 msgstr ""
 "大容量ファイル %s のマージで衝突が検出されました。\n"
-"どちらの内容を採用しますか? 作業領域:(l)ocal マージ対象:(o)ther"
-
-msgid "&Local"
-msgstr "&Local"
-
-msgid "&Other"
-msgstr "&Other"
+"作業領域:(l)ocal とマージ対象:(o)ther のどちらの内容を採用しますか?$$ "
+"&Local $$ &Other"
 
 msgid "no files to copy"
 msgstr "コピーするファイルがありません"
@@ -5642,7 +5680,7 @@
 "discarded. Setting::"
 msgstr ""
 "作業領域中に、 未コミット変更がある場合、 qpush, qpop や qgoto の実行は、\n"
-"即座に中断されます。 -f/--force 指定時は、 変更内容が破棄されます。\n"
+"即座に中止されます。 -f/--force 指定時は、 変更内容が破棄されます。\n"
 "これらのコマンドの挙動は、 以下の設定により::"
 
 msgid ""
@@ -6191,20 +6229,19 @@
 
 msgid ""
 "    An existing changeset may be placed under mq control with -r/--rev\n"
-"    (e.g. qimport --rev tip -n patch will place tip under mq control).\n"
-"    With -g/--git, patches imported with --rev will use the git diff\n"
-"    format. See the diffs help topic for information on why this is\n"
-"    important for preserving rename/copy information and permission\n"
-"    changes. Use :hg:`qfinish` to remove changesets from mq control."
-msgstr ""
-"    -r/--rev を指定することで、\n"
-"    既存の通常リビジョンを MQ 管理下に置くことができます\n"
-"    (例: 'qimport --rev tip -n patch' は、 tip を MQ 管理下に置きます)。\n"
-"    -g/--git 指定は、 --rev 指定による取り込みの際に\n"
-"    git 差分形式を使用します。\n"
-"    改名/複製情報や、 権限設定の情報保持にとっての\n"
-"    git 差分形式の有用性に関しては、 'help diffs' を参照してください。\n"
-"    リビジョンを MQ 管理下から除外する場合、 :hg:`qfinish` を使用します。"
+"    (e.g. qimport --rev . -n patch will place the current revision\n"
+"    under mq control). With -g/--git, patches imported with --rev will\n"
+"    use the git diff format. See the diffs help topic for information\n"
+"    on why this is important for preserving rename/copy information\n"
+"    and permission changes. Use :hg:`qfinish` to remove changesets\n"
+"    from mq control."
+msgstr ""
+"    -r/--rev 指定により、 既存の通常リビジョンを MQ 管理下に置きます。\n"
+"    (例: 'qimport --rev . -n patch' は現リビジョンを MQ 管理下に置きます)\n"
+"    -g/--git 指定は、 --rev 指定での取り込みで git 差分形式を使用します。\n"
+"    改名/複製や権限設定変更における git 差分形式の有用性は、\n"
+"    :hg:`help diffs` を参照してください。 MQ 管理下のパッチを、\n"
+"    通常リビジョン化する場合は :hg:`qfinish` を使用します。"
 
 msgid ""
 "    To import a patch from standard input, pass - as the patch file.\n"
@@ -6682,9 +6719,9 @@
 "    overlap with patched files. With -f/--force, backup and patch over\n"
 "    uncommitted changes."
 msgstr ""
-"    作業領域に未コミット変更がある場合、 通常はコマンドが中断されます。\n"
+"    作業領域に未コミット変更がある場合、 通常はコマンドが中止されます。\n"
 "    --keep-changes が指定された場合、 未コミット変更とパッチとの間で、\n"
-"    重複がある場合のみ、 中断されます。 -f/--force が指定された場合、\n"
+"    重複がある場合のみ、 中止されます。 -f/--force が指定された場合、\n"
 "    変更内容をバックアップした上で、 未コミット変更の上から、\n"
 "    パッチが適用されます。"
 
@@ -6725,9 +6762,9 @@
 "    overlap with patched files. With -f/--force, backup and discard\n"
 "    changes made to such files."
 msgstr ""
-"    作業領域に未コミット変更がある場合、 通常はコマンドが中断されます。\n"
+"    作業領域に未コミット変更がある場合、 通常はコマンドが中止されます。\n"
 "    --keep-changes が指定された場合、 未コミット変更とパッチとの間で、\n"
-"    重複がある場合のみ、 中断されます。 -f/--force が指定された場合、\n"
+"    重複がある場合のみ、 中止されます。 -f/--force が指定された場合、\n"
 "    変更内容をバックアップした上で、 未コミット変更の内容を破棄します。"
 
 #, python-format
@@ -6835,7 +6872,7 @@
 msgstr ""
 "    :hg:`strip` は指定のリビジョンおよび、 指定リビジョンの子孫を\n"
 "    取り除きます。 作業領域の変更が未コミットの場合、\n"
-"    --force が指定されない限りは処理を中断します。\n"
+"    --force が指定されない限りは処理を中止します。\n"
 "    --force が指定された場合、 変更内容は破棄されます。"
 
 msgid ""
@@ -7963,14 +8000,8 @@
 "\n"
 "統計結果:"
 
-msgid "are you sure you want to send (yn)?"
-msgstr "メールを送信しますか? (y/n)"
-
-msgid "&No"
-msgstr "&No"
-
-msgid "&Yes"
-msgstr "&Yes"
+msgid "are you sure you want to send (yn)?$$ &Yes $$ &No"
+msgstr "メールを送信しますか? (y/n)$$ &Yes $$ &No"
 
 msgid "patchbomb canceled"
 msgstr "メールは送信しません"
@@ -8082,7 +8113,7 @@
 msgstr "作業領域中の未登録ファイルを削除するコマンド"
 
 msgid "abort if an error occurs"
-msgstr "エラーが発生した場合、 中断する"
+msgstr "エラーが発生した場合に処理を中止"
 
 msgid "purge ignored files too"
 msgstr "無視したファイルも削除する"
@@ -8223,10 +8254,10 @@
 msgstr "マージツールの指定"
 
 msgid "continue an interrupted rebase"
-msgstr "中断された移動を再開"
+msgstr "中断された未完了の移動を再開"
 
 msgid "abort an interrupted rebase"
-msgstr "中断された移動を中断"
+msgstr "中断による未完了な移動の情報を破棄(=中止)"
 
 msgid "[-s REV | -b REV] [-d REV] [OPTION]"
 msgstr "[-s REV | -b REV] [-d REV] [OPTION]"
@@ -8266,9 +8297,9 @@
 
 msgid ""
 "    If you don't specify a destination changeset (``-d/--dest``),\n"
-"    rebase uses the tipmost head of the current named branch as the\n"
-"    destination. (The destination changeset is not modified by\n"
-"    rebasing, but new changesets are added as its descendants.)"
+"    rebase uses the current branch tip as the destination. (The\n"
+"    destination changeset is not modified by rebasing, but new\n"
+"    changesets are added as its descendants.)"
 msgstr ""
 "    移動先リビジョン (``-d/--dest``) が指定されない場合、移動先として、\n"
 "    現行の名前付きブランチの、 最新ヘッドが採用されます。\n"
@@ -8326,25 +8357,25 @@
 msgid ""
 "    One result of the rules for selecting the destination changeset\n"
 "    and source branch is that, unlike ``merge``, rebase will do\n"
-"    nothing if you are at the latest (tipmost) head of a named branch\n"
+"    nothing if you are at the branch tip of a named branch\n"
 "    with two heads. You need to explicitly specify source and/or\n"
 "    destination (or ``update`` to the other head, if it's the head of\n"
 "    the intended source branch)."
 msgstr ""
-"    現行の名前付きブランチが2つのヘッドを持ち、 且つ最新のヘッド側が、\n"
-"    作業領域の親である場合、 リビジョン指定無しでも処理を行う ``merge``\n"
-"    と異なり、 本コマンドは何も実施しません。 これは、 移動先 (※ 訳注:\n"
-"    現行の名前付きブランチの、 最新ヘッド) と移動元 (※ 訳注: 作業領域の、\n"
-"    親に対する \"base\" 指定) リビジョンの選択仕様のためです。\n"
-"    必要に応じて、 移動元/先を明示してください (もう一方のヘッドが、\n"
-"    移動先であるならば、 そちらに ``update`` してください)。"
+"    現行の名前付きブランチが2つのヘッドを持ち、 且つ作業領域の親が、\n"
+"    最新ヘッド側である場合、 本コマンドは何も実施しません。\n"
+"    自動的に2つのヘッドを選択する :hg:`merge` と異なり、\n"
+"    デフォルトの移動元と移動先が、 共に最新ヘッドを選択するためです。\n"
+"    そのようなケースでは、 移動元/移動先を明示的に指定してください。\n"
+"    (他方のヘッドが移動先なら、 そちらに :hg:`update` してください)"
 
 msgid ""
 "    If a rebase is interrupted to manually resolve a merge, it can be\n"
 "    continued with --continue/-c or aborted with --abort/-a."
 msgstr ""
-"    手動マージでの衝突解消の必要性から、 移動処理が中断された場合は、\n"
-"    --continue/-c での再開や、 --abort/-a での移動前状態への復旧が可能です。"
+"    手動マージによる衝突解消が必要な場合、 移動処理が中断されますので、\n"
+"    衝突解消後に --continue/-c で再開するか、 --abort/-a で中止\n"
+"    (移動関連情報の破棄) してください。"
 
 msgid ""
 "    Returns 0 on success, 1 if nothing to rebase.\n"
@@ -8403,7 +8434,9 @@
 msgstr "リビジョン"
 
 msgid "unresolved conflicts (see hg resolve, then hg rebase --continue)"
-msgstr "衝突が未解消です (\"hg resolve\" と \"hg rebase --continue\" 参照)"
+msgstr ""
+"衝突が未解消です ('hg resolve' での衝突解消後に、'hg rebase --continue' を実"
+"行してください)"
 
 #, python-format
 msgid "no changes, revision %d skipped\n"
@@ -8427,17 +8460,17 @@
 msgstr "親リビジョンが 3 つになるので、 リビジョン %d をベースにできません"
 
 msgid "no rebase in progress"
-msgstr "進行中の移動状態はありません"
+msgstr "未完了な rebase による移動はありません"
 
 #, python-format
 msgid "can't abort rebase due to immutable changesets %s"
 msgstr "改変不能リビジョンがあるため rebase 前の状態に復旧できません: %s"
 
 msgid "warning: new changesets detected on target branch, can't abort\n"
-msgstr "警告: 新規リビジョンが対象ブランチに検出されたので中断できません\n"
+msgstr "警告: 新規リビジョンが対象ブランチに検出されたので中止できません\n"
 
 msgid "rebase aborted\n"
-msgstr "移動が中断されました\n"
+msgstr "移動が中止されました\n"
 
 msgid "cannot rebase onto an applied mq patch"
 msgstr "MQ パッチ上への移動はできません"
@@ -8458,12 +8491,29 @@
 msgid "--tool can only be used with --rebase"
 msgstr "--tool は --rebase 指定時にしか使用できません"
 
+#. i18n: column positioning for "hg summary"
+#, python-format
+msgid "rebase: %s, %s (rebase --continue)\n"
+msgstr "rebase:       %s, %s (rebase --continue)\n"
+
+#, python-format
+msgid "%d rebased"
+msgstr "移動完了数 %d"
+
 msgid "rebase working directory to branch head"
 msgstr "作業領域をブランチヘッドに移動"
 
 msgid "specify merge tool for rebase"
 msgstr "移動用のマージツールの指定"
 
+msgid "rebase in progress"
+msgstr "rebase による移動が未完了です"
+
+msgid "use 'hg rebase --continue' or 'hg rebase --abort'"
+msgstr ""
+"未完了の rebase は、'hg rebase --continue' で再開するか、'hg rebase --abort' "
+"で中止してください"
+
 msgid "commands to interactively select changes for commit/qrefresh"
 msgstr "commit や qrefresh における対話的な変更取り込みの選択"
 
@@ -8486,35 +8536,12 @@
 msgid "%d hunks, %d lines changed\n"
 msgstr "%d 個の差分、 %d 行の変更\n"
 
-msgid "[Ynesfdaq?]"
-msgstr "[Ynesfdaq?]"
-
-msgid "&Yes, record this change"
-msgstr "&Yes - この変更を記録します"
-
-msgid "&No, skip this change"
-msgstr "&No - この変更をスキップします"
-
-msgid "&Edit the change manually"
-msgstr "&Edit - 変更内容を手動で編集します"
-
-msgid "&Skip remaining changes to this file"
-msgstr "&Skip - このファイルの残りの変更を全てスキップします"
-
-msgid "Record remaining changes to this &file"
-msgstr "&File - このファイルの残りの変更を全て記録します"
-
-msgid "&Done, skip remaining changes and files"
-msgstr "&Done - 残りの変更およびファイルを全てスキップして終了します"
-
-msgid "Record &all changes to all remaining files"
-msgstr "&All - 残りの変更およびファイルを全て記録します"
-
-msgid "&Quit, recording no changes"
-msgstr "&Quit - 変更を記録しないで終了します"
-
-msgid "&?"
-msgstr "&?"
+msgid ""
+"[Ynesfdaq?]$$ &Yes, record this change$$ &No, skip this change$$ &Edit the "
+"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$$ &?"
+msgstr ""
 
 msgid "cannot edit patch for whole file"
 msgstr "ファイル全体に対するパッチは編集できません"
@@ -8543,7 +8570,7 @@
 "パッチ適用が成功した場合、 編集後の差分は、 記録対象に追加されます。\n"
 "適用が失敗した場合、 却下差分はファイルに保存されます。 再試行の際は、\n"
 "このファイルを利用可能です。 差分の全行が削除された場合、\n"
-"編集作業は中断され、差分はそのまま維持されます。\n"
+"編集作業は中止され、差分はそのまま維持されます。\n"
 
 msgid "edit failed"
 msgstr "編集に失敗"
@@ -8858,21 +8885,19 @@
 "       with rollback, the other clone will suddenly stop working: all\n"
 "       operations will fail with \"abort: working directory has unknown\n"
 "       parent\". The only known workaround is to use debugsetparents on\n"
-"       the broken clone to reset it to a changeset that still exists\n"
-"       (e.g. tip).\n"
+"       the broken clone to reset it to a changeset that still exists.\n"
 "    "
 msgstr ""
 "    .. note::\n"
 "       rollback の実施や、 履歴を改変するエクステンション (例: mq や\n"
-"       rebase 等) の利用は、 共有リポジトリ間に相当の混乱をもたらします。\n"
+"       rebase 等) の利用は、 リポジトリ間での共有に混乱をもたらします。\n"
 "       典型的な例は、 共有関係にあるリポジトリの両方が、 \n"
 "       作業領域を同一リビジョンで更新した状態で、 一方が当該リビジョンを\n"
 "       rollback により破棄することで、 他方が機能しなくなるケースです:\n"
-"       \"中断: 作業領域の親 REV が未知のリビジョンです\"\n"
+"       \"中止: 作業領域の親 REV が未知のリビジョンです\"\n"
 "       メッセージ表示と共に、 他方でのあらゆる操作が失敗します。\n"
-"       この場合の唯一の復旧方法は、 機能しない側のリポジトリにおける、\n"
-"       確実に存在するリビジョン (例: tip) を使った :hg:`debugsetparents`\n"
-"       の実施だけです。\n"
+"       この場合の唯一の復旧方法は、 機能しない側のリポジトリにおいて、\n"
+"       確実に存在するリビジョンでの :hg:`debugsetparents` 実施だけです。\n"
 "    "
 
 msgid "convert a shared repository to a normal one"
@@ -8944,7 +8969,7 @@
 msgstr "マージの場合のみパッチファイルを省略可能"
 
 msgid "fix up the merge and run hg transplant --continue"
-msgstr "衝突解消後に \"hg transplant --continue\" してください"
+msgstr "衝突解消後に 'hg transplant --continue' を実行してください"
 
 #, python-format
 msgid "skipping emptied changeset %s\n"
@@ -9012,7 +9037,7 @@
 msgstr "コミットログへの移植情報の付与"
 
 msgid "continue last transplant session after fixing conflicts"
-msgstr "衝突解消後における、中断された直前の移植作業の再開"
+msgstr "中断された未完了の移植を再開"
 
 msgid "filter changesets through command"
 msgstr "コマンドによるリビジョンのフィルタリング"
@@ -9087,7 +9112,7 @@
 msgstr "      - REV までの全リビジョンを、現リビジョン上に移植::"
 
 msgid "        hg transplant --branch REV --all"
-msgstr "        hg transplant --branch REV --all"
+msgstr "          hg transplant --branch REV --all"
 
 msgid ""
 "    You can optionally mark selected transplanted changesets as merge\n"
@@ -9162,6 +9187,14 @@
 "    changeset if any."
 msgstr ":transplanted: 文字列。 (移植先であれば) 移植元リビジョンの ID。"
 
+msgid "transplant in progress"
+msgstr "transplant による移植が未完了です"
+
+msgid "use 'hg transplant --continue' or 'hg update' to abort"
+msgstr ""
+"未完了の transplant は、'hg transplant --continue' で再開するか、'hg update' "
+"で中止してください"
+
 msgid "allow the use of MBCS paths with problematic encodings"
 msgstr "問題ある文字コードをパス名に使用する場合の対処"
 
@@ -9472,6 +9505,16 @@
 msgid "%s: unknown bundle version %s"
 msgstr "%s: 未知のバンドル形式バージョン %s"
 
+msgid "bundling"
+msgstr "バンドル生成中"
+
+msgid "manifests"
+msgstr "マニフェスト"
+
+#, python-format
+msgid "empty or missing revlog for %s"
+msgstr "%s に対するリビジョンログが空ないし不在です"
+
 msgid "no node"
 msgstr "ノードがありません"
 
@@ -9720,7 +9763,7 @@
 msgstr "HG: コミットログを入力してください。'HG:' で始まる行は無視されます。"
 
 msgid "HG: Leave message empty to abort commit."
-msgstr "HG: メッセージが空のままならコミットを中断します。"
+msgstr "HG: メッセージが空のままならコミットを中止します。"
 
 #, python-format
 msgid "HG: user: %s"
@@ -9764,7 +9807,7 @@
 
 #, python-format
 msgid "reopening closed branch head %d\n"
-msgstr "閉鎖済みブランチヘッド %d の再開中\n"
+msgstr "閉鎖済みブランチヘッド %d の閉鎖状態を解除中\n"
 
 #, python-format
 msgid "committed changeset %d:%s\n"
@@ -9790,6 +9833,20 @@
 msgid "no changes needed to %s\n"
 msgstr "%s には改変の必要がありません\n"
 
+msgid "graft in progress"
+msgstr "graft による移植が未完了です"
+
+msgid "use 'hg graft --continue' or 'hg update' to abort"
+msgstr ""
+"未完了の graft は、'hg graft --continue' で再開するか、'hg update' で中止して"
+"ください"
+
+msgid "last update was interrupted"
+msgstr "直前の作業領域更新は中断されました"
+
+msgid "use 'hg update' to get a consistent checkout"
+msgstr "作業領域内容の整合性を取るために、'hg update' を実行してください"
+
 msgid "repository root directory or name of overlay bundle file"
 msgstr "リポジトリのルート位置、 ないしバンドルファイルのパス"
 
@@ -10347,7 +10404,7 @@
 "    コマンド実行時には、 環境変数 HG_NODE に検証対象リビジョンの ID\n"
 "    が格納されます。コマンドの終了コードは、 リビジョンに対する bad\n"
 "    ないし good のマーク付けに使用されます。終了コード 0 は good、 125\n"
-"    はリビジョンのスキップ、 127 (コマンド不在) は探索中断、\n"
+"    はリビジョンのスキップ、 127 (コマンド不在) は探索の中止、\n"
 "    その他の非 0 終了コードは bad とみなされます。"
 
 msgid ""
@@ -10484,7 +10541,7 @@
 msgstr "二分探索できません(bad リビジョンが未指定です)"
 
 msgid "(use of 'hg bisect <cmd>' is deprecated)\n"
-msgstr "('hg bisect <cmd>' 形式の実行は推奨されません)\n"
+msgstr "('hg bisect <cmd>' 形式の実行は非推奨です)\n"
 
 msgid "incompatible arguments"
 msgstr "不正な引数の組み合わせです"
@@ -10501,7 +10558,7 @@
 
 #, python-format
 msgid "%s killed"
-msgstr "%s プロセスは中断されました"
+msgstr "%s プロセスは異常終了しました"
 
 #, python-format
 msgid "changeset %d:%s: %s\n"
@@ -10530,8 +10587,8 @@
 msgid "mark a bookmark inactive"
 msgstr "ブックマークを非アクティブ化"
 
-msgid "hg bookmarks [-f] [-d] [-i] [-m NAME] [-r REV] [NAME]"
-msgstr "hg bookmarks [-f] [-d] [-i] [-m NAME] [-r REV] [NAME]"
+msgid "hg bookmarks [OPTIONS]... [NAME]..."
+msgstr "hg bookmarks [OPTIONS]... [NAME]..."
 
 msgid "track a line of development with movable markers"
 msgstr "移動可能なマーキングによる履歴進展の追跡"
@@ -10631,6 +10688,9 @@
 msgid "new bookmark name required"
 msgstr "新しいブックマーク名を要求しました"
 
+msgid "only one new bookmark name allowed"
+msgstr "新規ブックマーク名の指定は1つだけです"
+
 msgid "no bookmarks set\n"
 msgstr "ブックマークは存在しません\n"
 
@@ -10860,12 +10920,10 @@
 
 msgid ""
 "    Print the specified files as they were at the given revision. If\n"
-"    no revision is given, the parent of the working directory is used,\n"
-"    or tip if no revision is checked out."
+"    no revision is given, the parent of the working directory is used."
 msgstr ""
 "    指定されたリビジョン時点でのファイル内容を出力します。 リビジョンが\n"
-"    指定されない場合は作業領域の親リビジョンが、 作業領域の更新前なら tip\n"
-"    が使用されます。"
+"    指定されない場合は、 作業領域の親リビジョン時点の内容を表示します。"
 
 msgid ""
 "    Output may be to a file, in which case the name of the file is\n"
@@ -11089,6 +11147,9 @@
 msgid "amend the parent of the working dir"
 msgstr "作業領域の親リビジョンの改変"
 
+msgid "use the secret phase for committing"
+msgstr "secret フェーズでコミット中"
+
 msgid "commit the specified files or all outstanding changes"
 msgstr "指定ファイルないし全ての変更内容のリポジトリへの記録"
 
@@ -11171,12 +11232,6 @@
 msgid "cannot amend with --subrepos"
 msgstr "--amend と --subrepos は併用できません"
 
-msgid "cannot commit an interrupted graft operation"
-msgstr "中断された graft 操作があるためコミットできません"
-
-msgid "use \"hg graft -c\" to continue graft"
-msgstr "中断された graft は \"hg graft -c\" で再開できます"
-
 msgid "can only close branch heads"
 msgstr "閉鎖できるのはブランチヘッドだけです"
 
@@ -12101,7 +12156,7 @@
 msgstr "移植対象リビジョン"
 
 msgid "resume interrupted graft"
-msgstr "中断された移植を再開"
+msgstr "中断された未完了の移植を再開"
 
 msgid "append graft info to log message"
 msgstr "コミットログへの移植情報の付与"
@@ -12148,8 +12203,8 @@
 "    continued with the -c/--continue option."
 msgstr ""
 "    本コマンドのマージ処理で衝突が検出された場合、 処理が中断されるので、\n"
-"    手動での衝突解決が可能です。 全ての衝突が解消されたならば、\n"
-"    -c/--continue 指定によりコマンドの実行を再開してください。"
+"    手動で衝突を解決してください。 全ての衝突が解消されたならば、\n"
+"    -c/--continue 指定により、 未完了の移植を再開してください。"
 
 msgid ""
 "    .. note::\n"
@@ -12177,7 +12232,7 @@
 msgstr "          hg graft -D \"2085::2093 and not 2091\""
 
 msgid "      - continue a graft after resolving conflicts::"
-msgstr "      - 衝突解消後のコマンド実行再開::"
+msgstr "      - 衝突解消後における、未完了の移植の再開::"
 
 msgid "          hg graft -c"
 msgstr "          hg graft -c"
@@ -12185,8 +12240,8 @@
 msgid "      - show the source of a grafted changeset::"
 msgstr "      - 複製元リビジョンの表示::"
 
-msgid "          hg log --debug -r tip"
-msgstr "          hg log --debug -r tip"
+msgid "          hg log --debug -r ."
+msgstr "          hg log --debug -r ."
 
 msgid ""
 "    Returns 0 on successful completion.\n"
@@ -12229,7 +12284,7 @@
 msgstr "衝突が未解消のため、継続できません"
 
 msgid "use hg resolve and hg graft --continue"
-msgstr "hg resolve と hg graft --continue を使用してください"
+msgstr "'hg resolve' での衝突解消後に、'hg graft --continue'を実行してください"
 
 #, python-format
 msgid "graft for revision %s is empty\n"
@@ -12315,36 +12370,31 @@
 msgid "[-ct] [-r STARTREV] [REV]..."
 msgstr "[-ct] [-r STARTREV] [REV]..."
 
-msgid "show current repository heads or show branch heads"
-msgstr "現時点でのリポジトリ(ないしブランチ)のヘッド表示"
-
-msgid "    With no arguments, show all repository branch heads."
-msgstr ""
-"    引数指定が無い場合、 リポジトリ中の全てのブランチヘッドを表示します。"
-
-msgid ""
-"    Repository \"heads\" are changesets with no child changesets. They are\n"
-"    where development generally takes place and are the usual targets\n"
-"    for update and merge operations. Branch heads are changesets that have\n"
-"    no child changeset on the same branch."
-msgstr ""
-"    リポジトリの「ヘッド」とは、\n"
-"    子リビジョンを持たないリビジョンのことです。\n"
-"    変更作業の実施や、 update/merge コマンド実施の際には、\n"
-"    このリビジョンを対象とするのが一般的です。\n"
-"    「ブランチヘッド」とは、 同じ名前付きブランチ内に、\n"
-"    子リビジョンを持たないリビジョンのことです。"
-
-msgid ""
-"    If one or more REVs are given, only branch heads on the branches\n"
-"    associated with the specified changesets are shown. This means\n"
-"    that you can use :hg:`heads foo` to see the heads on a branch\n"
-"    named ``foo``."
-msgstr ""
-"    1つ以上のリビジョンが指定された場合、 指定されたリビジョンの属する\n"
-"    名前付きブランチにおけるヘッドのみを表示します。\n"
-"    この挙動は、 :hg:`heads foo` を実行することで、\n"
-"    名前付きブランチ ``foo`` におけるヘッドを表示できることを意味します。"
+msgid "show branch heads"
+msgstr "ブランチヘッドを表示"
+
+msgid ""
+"    With no arguments, show all open branch heads in the repository.\n"
+"    Branch heads are changesets that have no descendants on the\n"
+"    same branch. They are where development generally takes place and\n"
+"    are the usual targets for update and merge operations."
+msgstr ""
+"    引数指定が無い場合、 リポジトリ中の未閉鎖ブランチヘッドを、\n"
+"    全て表示します。 「ブランチヘッド」とは、 同一名前付きブランチ上に、\n"
+"    子リビジョンを持たないリビジョンのことです。 新規の変更内容は、\n"
+"    このようなリビジョンに記録されますので、 update や merge 操作での、\n"
+"    対象として指定される機会が多いです。"
+
+msgid ""
+"    If one or more REVs are given, only open branch heads on the\n"
+"    branches associated with the specified changesets are shown. This\n"
+"    means that you can use :hg:`heads .` to see the heads on the\n"
+"    currently checked-out branch."
+msgstr ""
+"    1つ以上のリビジョンが指定された場合、 指定リビジョンが属する、\n"
+"    名前付きブランチの、 未閉鎖ブランチヘッドのみを表示します。\n"
+"    例えば :hg:`heads .` 実行では、 作業領域が属する名前付きブランチの、\n"
+"    未閉鎖ブランチヘッドにみが表示されます。"
 
 msgid ""
 "    If -c/--closed is specified, also show branch heads marked closed\n"
@@ -12363,10 +12413,11 @@
 msgid ""
 "    If -t/--topo is specified, named branch mechanics will be ignored and "
 "only\n"
-"    changesets without children will be shown."
+"    topological heads (changesets with no children) will be shown."
 msgstr ""
 "    -t/--topo 指定時には、 名前付きブランチに関する判定は無視され、\n"
-"    単に子リビジョンを持たないリビジョンが表示されます。"
+"    構造的 (topological) ヘッド (子リビジョンを一切持たないリビジョン)\n"
+"    が表示されます。"
 
 msgid ""
 "    Returns 0 if matching heads are found, 1 if not.\n"
@@ -12498,8 +12549,8 @@
 msgid "base path (DEPRECATED)"
 msgstr "基底パス (非推奨)"
 
-msgid "skip check for outstanding uncommitted changes"
-msgstr "作業領域中の未コミット変更の確認を省略"
+msgid "skip check for outstanding uncommitted changes (DEPRECATED)"
+msgstr "作業領域中の未コミット変更の確認を省略 (非推奨)"
 
 msgid "don't commit, just update the working directory"
 msgstr "作業領域の更新のみで、 コミット実施を抑止"
@@ -12527,11 +12578,11 @@
 "    (--no-commit 指定が無い限り) 個別に行います。"
 
 msgid ""
-"    If there are outstanding changes in the working directory, import\n"
-"    will abort unless given the -f/--force flag."
-msgstr ""
-"    作業領域の変更が未コミットの場合、 -f/--force が指定されない限り、\n"
-"    取り込みは実施されません。"
+"    Because import first applies changes to the working directory,\n"
+"    import will abort if there are outstanding changes."
+msgstr ""
+"    取り込み作業は作業領域で実施されるため、 未コミット変更がある場合は、\n"
+"    取り込み操作は中断されます。"
 
 msgid ""
 "    You can import a patch straight from a mail message. Even patches\n"
@@ -12958,8 +13009,8 @@
 msgid "can't specify a revision with --all"
 msgstr "リビジョン指定と --all は併用できません"
 
-msgid "force a merge with outstanding changes"
-msgstr "作業領域中の未コミット変更ごとマージを実施"
+msgid "force a merge including outstanding changes (DEPRECATED)"
+msgstr "作業領域中の未コミット変更ごとマージを実施 (非推奨)"
 
 msgid "revision to merge"
 msgstr "マージ対象リビジョン"
@@ -13013,7 +13064,7 @@
 "    対象となります。 それ以外の場合は、 明示的なリビジョン指定が必要です。"
 
 msgid "    :hg:`resolve` must be used to resolve unresolved files."
-msgstr "   衝突未解消なファイルは :hg:`resolve` での衝突解消が必要です。"
+msgstr "    衝突未解消なファイルは :hg:`resolve` での衝突解消が必要です。"
 
 msgid ""
 "    To undo an uncommitted merge, use :hg:`update --clean .` which\n"
@@ -13497,7 +13548,7 @@
 "      追加 (Added) [A]、 変更無し (Clean) [C]、 変更有り (Modified) [M]\n"
 "      および不在 (Missing) [!] で表します。\n"
 "      挙動は、 警告 (Warn) [W]、 構成管理からの登録除外 (Remove) [R]\n"
-"      および作業領域からの削除 (Delete) [D] で表します::"
+"      および作業領域からの削除 (Delete) [D] で表します:"
 
 msgid ""
 "      ======= == == == ==\n"
@@ -13509,14 +13560,14 @@
 "      -Af     R  R  R  R\n"
 "      ======= == == == =="
 msgstr ""
-"      ======= == == == ==\n"
-"              A  C  M  !\n"
-"      ======= == == == ==\n"
-"      無指定  W  RD W  R\n"
-"      -f      R  RD RD R\n"
-"      -A      W  W  W  R\n"
-"      -Af     R  R  R  R\n"
-"      ======= == == == =="
+"      =============== == == == ==\n"
+"      オプション/状態 A  C  M  !\n"
+"      =============== == == == ==\n"
+"      無指定          W  RD W  R\n"
+"      -f              R  RD RD R\n"
+"      -A              W  W  W  R\n"
+"      -Af             R  R  R  R\n"
+"      =============== == == == =="
 
 msgid ""
 "      Note that remove never deletes files in Added [A] state from the\n"
@@ -13775,8 +13826,15 @@
 msgid "ignore safety measures"
 msgstr "安全判定を無視"
 
-msgid "roll back the last transaction (dangerous)"
-msgstr "直前のトランザクションの巻き戻し(要注意)"
+msgid "roll back the last transaction (DANGEROUS) (DEPRECATED)"
+msgstr "直前のトランザクションの巻き戻し (要注意) (非推奨)"
+
+msgid ""
+"    Please use :hg:`commit --amend` instead of rollback to correct\n"
+"    mistakes in the last commit."
+msgstr ""
+"    直前のコミットをやり直す場合は、 rollback の代わりに、極力\n"
+"    :hg:`commit --amend` を使用してください。"
 
 msgid ""
 "    This command should be used with care. There is only one level of\n"
@@ -14190,6 +14248,9 @@
 msgid "%d subrepos"
 msgstr "サブリポジトリ数 %d"
 
+msgid " (interrupted update)"
+msgstr " (作業領域の更新が中断されたままです)"
+
 msgid " (merge)"
 msgstr " (マージ)"
 
@@ -14285,10 +14346,10 @@
 
 msgid ""
 "    If no revision is given, the parent of the working directory is\n"
-"    used, or tip if no revision is checked out."
-msgstr ""
-"    対象リビジョンが指定されない場合、 作業領域の親リビジョンが\n"
-"    (作業領域更新前なら tip が) タグ付けの対象となります。"
+"    used."
+msgstr ""
+"    対象リビジョンが指定されない場合、 作業領域の親リビジョンが、\n"
+"    タグ付けの対象となります。"
 
 msgid ""
 "    To facilitate version control, distribution, and merging of tags,\n"
@@ -14373,8 +14434,8 @@
 msgid "[-p] [-g]"
 msgstr "[-p] [-g]"
 
-msgid "show the tip revision"
-msgstr "tip リビジョンの表示"
+msgid "show the tip revision (DEPRECATED)"
+msgstr "tip リビジョンの表示 (非推奨)"
 
 msgid ""
 "    The tip revision (usually just called the tip) is the changeset\n"
@@ -14396,6 +14457,9 @@
 "    リポジトリでの tip が現リポジトリの tip となります。 \"tip\" タグは\n"
 "    特別なタグで、 改名や、 他のリビジョンへの付け替えはできません。"
 
+msgid "    This command is deprecated, please use :hg:`heads` instead."
+msgstr "    本コマンドは非推奨です。 :hg:`heads` を使用してください。"
+
 msgid "update to new branch head if changesets were unbundled"
 msgstr "新規取り込みの際は、 新規ブランチヘッドで、 作業領域を更新"
 
@@ -14561,11 +14625,11 @@
 msgstr "(詳細は http://mercurial.selenic.com を参照してください)"
 
 msgid ""
-"Copyright (C) 2005-2012 Matt Mackall and others\n"
+"Copyright (C) 2005-2013 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-2012 Matt Mackall 他\n"
+"Copyright (C) 2005-2013 Matt Mackall 他\n"
 "本製品はフリーソフトウェアです。\n"
 "頒布条件に関しては同梱されるライセンス条項をお読みください。\n"
 "市場適合性や特定用途への可否を含め、 本製品は無保証です。\n"
@@ -14722,7 +14786,7 @@
 
 #, python-format
 msgid "abort: %s\n"
-msgstr "中断: %s\n"
+msgstr "中止: %s\n"
 
 #, python-format
 msgid "(%s)\n"
@@ -14757,11 +14821,11 @@
 
 #, python-format
 msgid "abort: %s: %s\n"
-msgstr "中断: %s: %s\n"
+msgstr "中止: %s: %s\n"
 
 #, python-format
 msgid "abort: could not lock %s: %s\n"
-msgstr "中断: %s のロックに失敗: %s\n"
+msgstr "中止: %s のロックに失敗: %s\n"
 
 #, python-format
 msgid "hg %s: %s\n"
@@ -14986,10 +15050,11 @@
 #, python-format
 msgid ""
 " no tool found to merge %s\n"
-"keep (l)ocal or take (o)ther?"
-msgstr ""
-" %s のマージに適切なツールが見つかりません\n"
-"どちらの内容を採用しますか? 作業領域:(l)ocal マージ対象:(o)ther"
+"keep (l)ocal or take (o)ther?$$ &Local $$ &Other"
+msgstr ""
+" %s のマージに適切なツールが見つかりません。\n"
+"作業領域:(l)ocal とマージ対象:(o)ther のどちらの内容を採用しますか?$$ "
+"&Local $$ &Other"
 
 msgid ""
 "``internal:local``\n"
@@ -15062,16 +15127,16 @@
 msgstr "%s のマージに失敗!\n"
 
 #, python-format
-msgid "was merge of '%s' successful (yn)?"
-msgstr "'%s' のマージは成功しましたか? (y/n) "
+msgid "was merge of '%s' successful (yn)?$$ &Yes $$ &No"
+msgstr "'%s' のマージは成功しましたか?(y/n)$$ &Yes $$ &No"
 
 #, python-format
 msgid ""
 " output file %s appears unchanged\n"
-"was merge successful (yn)?"
+"was merge successful (yn)?$$ &Yes $$ &No"
 msgstr ""
 " マージ結果ファイル %s は未変更に見えます\n"
-"マージ成功とみなしますか? (y/n)"
+"マージ成功とみなしますか? (y/n)$$ &Yes $$ &No"
 
 msgid "unterminated string"
 msgstr "文字列が終端していません"
@@ -15563,6 +15628,24 @@
 msgid "Mercurial Distributed SCM\n"
 msgstr "Mercurial - 分散構成管理ツール\n"
 
+msgid ".. Common link and substitution definitions."
+msgstr ".. Common link and substitution definitions."
+
+msgid ""
+".. |hg(1)| replace:: **hg**\\ (1)\n"
+".. _hg(1): hg.1.html\n"
+".. |hgrc(5)| replace:: **hgrc**\\ (5)\n"
+".. _hgrc(5): hgrc.5.html\n"
+".. |hgignore(5)| replace:: **hgignore**\\ (5)\n"
+".. _hgignore(5): hgignore.5.html\n"
+msgstr ""
+".. |hg(1)| replace:: **hg**\\ (1)\n"
+".. _hg(1): hg.1.html\n"
+".. |hgrc(5)| replace:: **hgrc**\\ (5)\n"
+".. _hgrc(5): hgrc.5.html\n"
+".. |hgignore(5)| replace:: **hgignore**\\ (5)\n"
+".. _hgignore(5): hgignore.5.html\n"
+
 msgid ""
 "The Mercurial system uses a set of configuration files to control\n"
 "aspects of its behavior."
@@ -18471,7 +18554,7 @@
 "    PEM 符号化形式の証明書認証局証明書一覧格納ファイルへのパス。\n"
 "    ファイル名記述における環境変数および ``~user`` 記述は置換されます。\n"
 "    本項目が、 クライアント側で記述された場合、 指定された証明書により、\n"
-"    HTTPS サーバが認証されます。 ファイルの形式例を以下に示します::"
+"    HTTPS サーバが認証されます。 ファイルの形式例を以下に示します。"
 
 msgid ""
 "    This feature is only supported when using Python 2.6 or later. If you "
@@ -19203,7 +19286,7 @@
 "    - interactive prompt\n"
 "    - LOGNAME (with ``@hostname`` appended)"
 msgstr ""
-"    - HGUSER 環境変数値(推奨されません)\n"
+"    - HGUSER 環境変数値(非推奨)\n"
 "    - (HGRCPATH 環境変数で指定される)設定ファイル中の設定\n"
 "    - EMAIL 環境変数値\n"
 "    - 対話的な入力\n"
@@ -20347,6 +20430,341 @@
 "    'Parent, working directory' を参照してください。\n"
 
 msgid ""
+"====\n"
+" hg\n"
+"===="
+msgstr ""
+"====\n"
+" hg\n"
+"===="
+
+msgid ""
+"---------------------------------------\n"
+"Mercurial source code management system\n"
+"---------------------------------------"
+msgstr ""
+"----------------------------------\n"
+"ソースコード管理システム Mercurial\n"
+"----------------------------------"
+
+msgid ""
+":Author:         Matt Mackall <mpm@selenic.com>\n"
+":Organization:   Mercurial\n"
+":Manual section: 1\n"
+":Manual group:   Mercurial Manual"
+msgstr ""
+":Author:         Matt Mackall <mpm@selenic.com>\n"
+":Organization:   Mercurial\n"
+":Manual section: 1\n"
+":Manual group:   Mercurial Manual"
+
+msgid ""
+".. contents::\n"
+"   :backlinks: top\n"
+"   :class: htmlonly\n"
+"   :depth: 1"
+msgstr ""
+".. contents::\n"
+"   :backlinks: top\n"
+"   :class: htmlonly\n"
+"   :depth: 1"
+
+msgid ""
+"\n"
+"Synopsis\n"
+"\"\"\"\"\"\"\"\"\n"
+"**hg** *command* [*option*]... [*argument*]..."
+msgstr ""
+"\n"
+"概要\n"
+"\"\"\"\"\n"
+"**hg** *command* [*option*]... [*argument*]..."
+
+msgid ""
+"Description\n"
+"\"\"\"\"\"\"\"\"\"\"\"\n"
+"The **hg** command provides a command line interface to the Mercurial\n"
+"system."
+msgstr ""
+"説明\n"
+"\"\"\"\"\n"
+"**hg** コマンドは、 Mercurial のコマンドラインインタフェースです。"
+
+msgid ""
+"Command Elements\n"
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+"コマンド行指定での凡例\n"
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+
+msgid ""
+"files...\n"
+"    indicates one or more filename or relative path filenames; see\n"
+"    `File Name Patterns`_ for information on pattern matching"
+msgstr ""
+"files...\n"
+"    1つ以上の、ファイル名あるいは相対パスの指定; パターン指定の詳細は、\n"
+"    `ファイル名パターン`_ を参照してください。"
+
+msgid ""
+"path\n"
+"    indicates a path on the local machine"
+msgstr ""
+"path\n"
+"    ローカルホスト上のパスの指定"
+
+msgid ""
+"revision\n"
+"    indicates a changeset which can be specified as a changeset\n"
+"    revision number, a tag, or a unique substring of the changeset\n"
+"    hash value"
+msgstr ""
+"revision\n"
+"    リビジョン番号、 タグ名、 一意なチェンジセットハッシュ値など、\n"
+"    リビジョンを特定するための識別値の指定"
+
+msgid ""
+"repository path\n"
+"    either the pathname of a local repository or the URI of a remote\n"
+"    repository."
+msgstr ""
+"repository path\n"
+"    ローカルホスト上のリポジトリへのパスや、 連携先リポジトリの URI の指定"
+
+msgid ".. include:: hg.1.gendoc.txt"
+msgstr ".. include:: hg.1.gendoc.txt"
+
+msgid ""
+"Files\n"
+"\"\"\"\"\""
+msgstr ""
+"関連ファイル\n"
+"\"\"\"\"\"\"\"\"\"\"\"\""
+
+msgid ""
+"``/etc/mercurial/hgrc``, ``$HOME/.hgrc``, ``.hg/hgrc``\n"
+"    This file contains defaults and configuration. Values in\n"
+"    ``.hg/hgrc`` override those in ``$HOME/.hgrc``, and these override\n"
+"    settings made in the global ``/etc/mercurial/hgrc`` configuration.\n"
+"    See |hgrc(5)|_ for details of the contents and format of these\n"
+"    files."
+msgstr ""
+"``/etc/mercurial/hgrc``, ``$HOME/.hgrc``, ``.hg/hgrc``\n"
+"    これらのファイルには、 各種設定値を記述します。 ``.hg/hgrc``\n"
+"    での記述は ``$HOME/.hgrc`` での記述を、``$HOME/.hgrc`` での記述は\n"
+"    ``/etc/mercurial/hgrc`` での記述を、それぞれ上書きします。\n"
+"    これらのファイルに関する詳細は、 |hgrc(5)|_ を参照してください。"
+
+msgid ""
+"``.hgignore``\n"
+"    This file contains regular expressions (one per line) that\n"
+"    describe file names that should be ignored by **hg**. For details,\n"
+"    see |hgignore(5)|_."
+msgstr ""
+"``.hgignore``\n"
+"    このファイルには、 **hg** コマンドに無視して欲しいファイル名を、\n"
+"    一行一パターンで記述します。 詳細は |hgignore(5)|_ を参照してください。"
+
+msgid ""
+"``.hgsub``\n"
+"    This file defines the locations of all subrepositories, and\n"
+"    tells where the subrepository checkouts came from. For details, see\n"
+"    :hg:`help subrepos`."
+msgstr ""
+"``.hgsub``\n"
+"    このファイルには、 サブリポジトリの位置とアクセス先を記述します。\n"
+"    詳細は :hg:`help subrepos` を参照してください。"
+
+msgid ""
+"``.hgsubstate``\n"
+"    This file is where Mercurial stores all nested repository states. *NB: "
+"This\n"
+"    file should not be edited manually.*"
+msgstr ""
+"``.hgsubstate``\n"
+"    このファイルには、 サブリポジトリの状態が書き込まれます。\n"
+"    *NB: このファイルは手動で変更しないでください。*"
+
+msgid ""
+"``.hgtags``\n"
+"    This file contains changeset hash values and text tag names (one\n"
+"    of each separated by spaces) that correspond to tagged versions of\n"
+"    the repository contents. The file content is encoded using UTF-8."
+msgstr ""
+"``.hgtags``\n"
+"    このファイルには、 リポジトリ内のタグ付けされたリビジョンに対応する、\n"
+"    リビジョンIDとタグ名の対 (の空白区切り) が書き込まれます。\n"
+"    このファイルの文字コードには UTF-8 が使用されます。"
+
+msgid ""
+"``.hg/last-message.txt``\n"
+"    This file is used by :hg:`commit` to store a backup of the commit "
+"message\n"
+"    in case the commit fails."
+msgstr ""
+"``.hg/last-message.txt``\n"
+"    このファイルには、 コミット失敗に備えて、 :hg:`commit` 実行時に、\n"
+"    コミットメッセージがバックアップされます。"
+
+msgid ""
+"``.hg/localtags``\n"
+"    This file can be used to define local tags which are not shared among\n"
+"    repositories. The file format is the same as for ``.hgtags``, but it is\n"
+"    encoded using the local system encoding."
+msgstr ""
+"``.hg/localtags``\n"
+"    このファイルには、 リポジトリ間で共有されないローカルなタグの定義が、\n"
+"    記録されます。 ファイルの形式は ``.hgtags`` と同じですが、\n"
+"    文字コードにはローカルの文字コードが使用されます。"
+
+msgid ""
+"Some commands (e.g. revert) produce backup files ending in ``.orig``,\n"
+"if the ``.orig`` file already exists and is not tracked by Mercurial,\n"
+"it will be overwritten."
+msgstr ""
+"コマンドの中には、 ``.orig`` 拡張子付きのファイルに、 ファイルの内容を、\n"
+"バックアップするものもあります (例: :hg:`revert`)。 バックアップと同名の\n"
+"``.orig`` ファイルが存在し、且つ Mercurial の管理対象でない場合、\n"
+"そのファイルの内容は、 バックアップによって上書きされます。"
+
+msgid ""
+"Bugs\n"
+"\"\"\"\"\n"
+"Probably lots, please post them to the mailing list (see Resources_\n"
+"below) when you find them."
+msgstr ""
+"不具合\n"
+"\"\"\"\"\"\"\n"
+"不具合を見つけた場合は、 メーリングリスト ( 後述する 各種情報_ 参照)\n"
+"までお知らせください。(※ 訳注: 日本語翻訳の不具合等は、\n"
+"日本語メーリングリスト\n"
+"`mercurial-ja\n"
+"<https://groups.google.com/forum/?fromgroups#!forum/mercurial-ja>`_\n"
+"へのメール投函や、 Twitter で\n"
+"`#mercurialjp <https://twitter.com/#%21/search/%23mercurialjp>`_\n"
+"ハッシュタグをつけてつぶやいてください)"
+
+msgid ""
+"See Also\n"
+"\"\"\"\"\"\"\"\"\n"
+"|hgignore(5)|_, |hgrc(5)|_"
+msgstr ""
+"他の参照先\n"
+"\"\"\"\"\"\"\"\"\"\"\n"
+"|hgignore(5)|_, |hgrc(5)|_"
+
+msgid ""
+"Author\n"
+"\"\"\"\"\"\"\n"
+"Written by Matt Mackall <mpm@selenic.com>"
+msgstr ""
+"著者\n"
+"\"\"\"\"\n"
+"Matt Mackall <mpm@selenic.com>"
+
+msgid ""
+"Resources\n"
+"\"\"\"\"\"\"\"\"\"\n"
+"Main Web Site: http://mercurial.selenic.com/"
+msgstr ""
+"各種情報\n"
+"\"\"\"\"\"\"\"\"\n"
+"ウェブサイト: http://mercurial.selenic.com/"
+
+msgid "Source code repository: http://selenic.com/hg"
+msgstr "ソースコードリポジトリ: http://selenic.com/hg"
+
+msgid "Mailing list: http://selenic.com/mailman/listinfo/mercurial"
+msgstr "メーリングリスト: http://selenic.com/mailman/listinfo/mercurial"
+
+msgid ""
+"Copying\n"
+"\"\"\"\"\"\"\"\n"
+"Copyright (C) 2005-2013 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-2013 Matt Mackall.\n"
+"本ソフトウェアは、 バージョン2またはそれ以降の GNU General\n"
+"Public License の元での自由な利用が保証されています。"
+
+msgid ".. include:: common.txt\n"
+msgstr ".. include:: common.txt\n"
+
+msgid ""
+"==========\n"
+" hgignore\n"
+"=========="
+msgstr ""
+"==========\n"
+" hgignore\n"
+"=========="
+
+msgid ""
+"---------------------------------\n"
+"syntax for Mercurial ignore files\n"
+"---------------------------------"
+msgstr ""
+"--------------------------------\n"
+"Mercurial 無視設定ファイルの文法\n"
+"--------------------------------"
+
+msgid ""
+":Author:         Vadim Gelfer <vadim.gelfer@gmail.com>\n"
+":Organization:   Mercurial\n"
+":Manual section: 5\n"
+":Manual group:   Mercurial Manual"
+msgstr ""
+":Author:         Vadim Gelfer <vadim.gelfer@gmail.com>\n"
+":Organization:   Mercurial\n"
+":Manual section: 5\n"
+":Manual group:   Mercurial Manual"
+
+msgid ".. include:: hgignore.5.gendoc.txt"
+msgstr ".. include:: hgignore.5.gendoc.txt"
+
+msgid ""
+"Author\n"
+"======\n"
+"Vadim Gelfer <vadim.gelfer@gmail.com>"
+msgstr ""
+"著者\n"
+"====\n"
+"本マニュアルページの著者は Vadim Gelfer <vadim.gelfer@gmail.com> です。"
+
+msgid "Mercurial was written by Matt Mackall <mpm@selenic.com>."
+msgstr "Mercurial の著者は Matt Mackall <mpm@selenic.com> です。"
+
+msgid ""
+"See Also\n"
+"========\n"
+"|hg(1)|_, |hgrc(5)|_"
+msgstr ""
+"他の参照先\n"
+"==========\n"
+"|hg(1)|_, |hgrc(5)|_"
+
+msgid ""
+"Copying\n"
+"=======\n"
+"This manual page is copyright 2006 Vadim Gelfer.\n"
+"Mercurial is copyright 2005-2013 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-2013 Matt Mackall です。\n"
+"本ソフトウェアは、 バージョン2またはそれ以降の GNU General\n"
+"Public License の元での自由な利用が保証されています。"
+
+msgid ".. include:: common.txt"
+msgstr ".. include:: common.txt"
+
+msgid ""
 "Synopsis\n"
 "========"
 msgstr ""
@@ -20545,6 +20963,89 @@
 "  ^\\.pc/\n"
 
 msgid ""
+"======\n"
+" hgrc\n"
+"======"
+msgstr ""
+"======\n"
+" hgrc\n"
+"======"
+
+msgid ""
+"---------------------------------\n"
+"configuration files for Mercurial\n"
+"---------------------------------"
+msgstr ""
+"------------------------\n"
+"Mercurial の設定ファイル\n"
+"------------------------"
+
+msgid ""
+":Author:         Bryan O'Sullivan <bos@serpentine.com>\n"
+":Organization:   Mercurial\n"
+":Manual section: 5\n"
+":Manual group:   Mercurial Manual"
+msgstr ""
+":Author:         Bryan O'Sullivan <bos@serpentine.com>\n"
+":Organization:   Mercurial\n"
+":Manual section: 5\n"
+":Manual group:   Mercurial Manual"
+
+msgid ""
+".. contents::\n"
+"   :backlinks: top\n"
+"   :class: htmlonly"
+msgstr ""
+".. contents::\n"
+"   :backlinks: top\n"
+"   :class: htmlonly"
+
+msgid ""
+"\n"
+"Description\n"
+"==========="
+msgstr ""
+"\n"
+"説明\n"
+"===="
+
+msgid ".. include:: hgrc.5.gendoc.txt"
+msgstr ".. include:: hgrc.5.gendoc.txt"
+
+msgid ""
+"Author\n"
+"======\n"
+"Bryan O'Sullivan <bos@serpentine.com>."
+msgstr ""
+"著者\n"
+"====\n"
+"本マニュアルページの著者は Bryan O'Sullivan <bos@serpentine.com> です。"
+
+msgid ""
+"See Also\n"
+"========\n"
+"|hg(1)|_, |hgignore(5)|_"
+msgstr ""
+"他の参照先\n"
+"==========\n"
+"|hg(1)|_, |hgignore(5)|_"
+
+msgid ""
+"Copying\n"
+"=======\n"
+"This manual page is copyright 2005 Bryan O'Sullivan.\n"
+"Mercurial is copyright 2005-2013 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-2013 Matt Mackall です。\n"
+"本ソフトウェアは、 バージョン2またはそれ以降の GNU General\n"
+"Public License の元での自由な利用が保証されています。"
+
+msgid ""
 "Mercurial's internal web server, hgweb, can serve either a single\n"
 "repository, or a tree of repositories. In the second case, repository\n"
 "paths and global options can be defined using a dedicated\n"
@@ -21808,14 +22309,14 @@
 "log, outgoing, incoming, tip, parents, heads, glog"
 
 msgid ""
-"Four styles are packaged with Mercurial: default (the style used\n"
-"when no explicit preference is passed), compact, changelog,\n"
+"Five styles are packaged with Mercurial: default (the style used\n"
+"when no explicit preference is passed), compact, changelog, phases\n"
 "and xml.\n"
 "Usage::"
 msgstr ""
-"Mercurial には(明示的な指定が無い場合に使用される)default、 compact\n"
-"changelog および xml の4つのスタイル設定が同梱されています。\n"
-"利用方法は::"
+"Mercurial には、 default(明示的な指定が無い場合のスタイル)、 compact、\n"
+"changelog、 phases、 および xml の5つのスタイル設定が同梱されています。\n"
+"スタイルの指定方法は以下の通り::"
 
 msgid "    $ hg log -r1 --style changelog"
 msgstr "    $ hg log -r1 --style changelog"
@@ -21903,12 +22404,15 @@
 msgid "- label(label, expr)"
 msgstr "- label(label, expr)"
 
+msgid "- rstdoc(text, style)"
+msgstr "- rstdoc(text, style)"
+
+msgid "- strip(text[, chars])"
+msgstr "- strip(text[, chars])"
+
 msgid "- sub(pat, repl, expr)"
 msgstr "- sub(pat, repl, expr)"
 
-msgid "- rstdoc(text, style)"
-msgstr "- rstdoc(text, style)"
-
 msgid "Also, for any expression that returns a list, there is a list operator:"
 msgstr "また、 列挙形式を返す expr に対しては、 以下の様な記述が可能です:"
 
@@ -22514,16 +23018,6 @@
 msgid "%d changesets found\n"
 msgstr "%d 個のリビジョンがあります\n"
 
-msgid "bundling"
-msgstr "バンドル生成中"
-
-msgid "manifests"
-msgstr "マニフェスト"
-
-#, python-format
-msgid "empty or missing revlog for %s"
-msgstr "%s に対するリビジョンログが空ないし不在です"
-
 msgid "adding changesets\n"
 msgstr "リビジョンを追加中\n"
 
@@ -22539,6 +23033,14 @@
 msgid "adding file changes\n"
 msgstr "ファイルの変更を追加中\n"
 
+#, python-format
+msgid " (%+d heads)"
+msgstr "(%+d個のヘッド)"
+
+#, python-format
+msgid "added %d changesets with %d changes to %d files%s\n"
+msgstr "%d 個のリビジョン(%d の変更を %d ファイルに適用)を追加%s\n"
+
 msgid "received file revlog group is empty"
 msgstr "ファイルのリビジョンログが空です"
 
@@ -22549,14 +23051,6 @@
 msgid "missing file data for %s:%s - run hg verify"
 msgstr "%s:%s のファイルデータが不在です - hg verify を実施してください"
 
-#, python-format
-msgid " (%+d heads)"
-msgstr "(%+d個のヘッド)"
-
-#, python-format
-msgid "added %d changesets with %d changes to %d files%s\n"
-msgstr "%d 個のリビジョン(%d の変更を %d ファイルに適用)を追加%s\n"
-
 msgid "unexpected response from remote server:"
 msgstr "連携先のサーバから予期しない返信:"
 
@@ -22681,27 +23175,20 @@
 #, python-format
 msgid ""
 "local changed %s which remote deleted\n"
-"use (c)hanged version or (d)elete?"
-msgstr ""
-"変更したファイル %s は別リビジョンで登録除外されています\n"
-"どちらを採用しますか? 変更:(c)hange 登録除外:(d)elete"
-
-msgid "&Changed"
-msgstr "&Changed"
-
-msgid "&Delete"
-msgstr "&Delete"
+"use (c)hanged version or (d)elete?$$ &Changed $$ &Delete"
+msgstr ""
+"変更したファイル %s は別リビジョンで登録除外されています。\n"
+"変更:(c)hanged と登録除外:(d)elete のどちらを採用しますか?$$ &Changed $$ "
+"&Delete"
 
 #, python-format
 msgid ""
 "remote changed %s which local deleted\n"
-"use (c)hanged version or leave (d)eleted?"
-msgstr ""
-"リモートで変更された %s はローカルで削除されています\n"
-"どちらを採用しますか? 変更:(c)hanged 削除:(d)elete"
-
-msgid "&Deleted"
-msgstr "&Deleted"
+"use (c)hanged version or leave (d)eleted?$$ &Changed $$ &Deleted"
+msgstr ""
+"リモートで変更された %s は、ローカルで削除されています。\n"
+"変更:(c)hanged と削除:(d)elete のどちらを採用しますか?$$ &Changed $$ "
+"&Deleted"
 
 #, python-format
 msgid "update failed to remove %s: %s!\n"
@@ -22988,6 +23475,10 @@
 msgid "%s not found in the transaction"
 msgstr "トランザクション中に %s は見つかりませんでした"
 
+#, python-format
+msgid "attempted to add linkrev -1 to %s"
+msgstr "linkrev -1 なリビジョンを %s に追加しようとしています"
+
 msgid "consistency error in delta"
 msgstr "差分情報の不整合"
 
@@ -24140,45 +24631,49 @@
 #, python-format
 msgid ""
 " subrepository sources for %s differ\n"
-"use (l)ocal source (%s) or (r)emote source (%s)?"
-msgstr ""
-" サブリポジトリ %s で差分が検出されました\n"
-"どちらを採用しますか? 手元(%s):(l)ocal 連携先(%s):(r)emote"
-
-msgid "&Remote"
-msgstr "&Remote"
+"use (l)ocal source (%s) or (r)emote source (%s)?$$ &Local $$ &Remote"
+msgstr ""
+" サブリポジトリ %s で連携先との差分が検出されました。\n"
+"手元(%s):(l)ocal と連携先(%s):(r)emote のどちらの内容を採用しますか?$$ "
+"&Local $$ &Remote"
 
 #, python-format
 msgid ""
 " local changed subrepository %s which remote removed\n"
-"use (c)hanged version or (d)elete?"
-msgstr ""
-"サブリポジトリで変更したファイル %s は、 連携先では登録除外されています\n"
-"どちらを採用しますか? 変更:(c)hange 登録除外:(d)elete"
+"use (c)hanged version or (d)elete?$$ &Changed $$ &Delete"
+msgstr ""
+" サブリポジトリで変更したファイル %s は連携先で登録除外されています。\n"
+"変更:(c)hanged と登録除外:(d)elete のどちらを採用しますか?$$ &Changed $$ "
+"&Delete"
 
 #, python-format
 msgid ""
 " remote changed subrepository %s which local removed\n"
-"use (c)hanged version or (d)elete?"
-msgstr ""
-"サブリポジトリで登録除外されたファイル %s は、 連携先では変更されています\n"
-"どちらを採用しますか? 変更:(c)hange 登録除外:(d)elete"
+"use (c)hanged version or (d)elete?$$ &Changed $$ &Delete"
+msgstr ""
+" サブリポジトリで登録除外したファイル %s は連携先で変更されています。\n"
+"変更:(c)hanged と登録除外:(d)elete のどちらを採用しますか?$$ &Changed $$ "
+"&Delete"
 
 #, python-format
 msgid ""
 " subrepository sources for %s differ\n"
 "use (l)ocal source (%s) or (r)emote source (%s)?\n"
-msgstr ""
-" サブリポジトリ %s の作業領域で差分が検出されました\n"
-"どちらを採用しますか? 手元(%s):(l)ocal 連携先(%s):(r)emote\n"
+"$$ &Local $$ &Remote"
+msgstr ""
+" サブリポジトリ %s で連携先との差分が検出されました\n"
+"手元(%s):(l)ocal と連携先(%s):(r)emote のどちらの内容を採用しますか?\n"
+"$$ &Local $$ &Remote"
 
 #, python-format
 msgid ""
 " subrepository sources for %s differ (in checked out version)\n"
 "use (l)ocal source (%s) or (r)emote source (%s)?\n"
-msgstr ""
-" サブリポジトリ %s のリビジョンに差分が検出されました\n"
-"どちらを採用しますか? 手元(%s):(l)ocal 連携先(%s):(r)emote\n"
+"$$ &Local $$ &Remote"
+msgstr ""
+" サブリポジトリ %s の作業領域で差分が検出されました\n"
+"手元(%s):(l)ocal と連携先(%s):(r)emote のどちらを採用しますか?\n"
+"$$ &Local $$ &Remote"
 
 msgid "default path for subrepository not found"
 msgstr "サブリポジトリの連携先が見つかりません"
@@ -24482,9 +24977,9 @@
 "    例) \"foo\" および \"foo/bar\" は \"foo\""
 
 msgid ""
-":tabindent: Any text. Returns the text, with every line except the\n"
-"    first starting with a tab character."
-msgstr ":tabindent: 文字列。 最初の行以外をタブ文字で字下げします。"
+":tabindent: Any text. Returns the text, with every non-empty line\n"
+"    except the first starting with a tab character."
+msgstr ":tabindent: 文字列。 最初の行以外の非空行をタブ文字で字下げします。"
 
 msgid ""
 ":urlescape: Any text. Escapes all \"special\" characters. For example,\n"
@@ -24503,15 +24998,6 @@
 msgid ":emailuser: Any text. Returns the user portion of an email address."
 msgstr ":emailuser: 文字列。 メールアドレスのユーザ名部分を取り出します。"
 
-msgid "fill expects one or two arguments"
-msgstr "fill の引数は1つないし2つです"
-
-msgid "fill expects an integer width"
-msgstr "fill には数値を指定してください"
-
-msgid "date expects one or two arguments"
-msgstr "date の引数は1つないし2つです"
-
 msgid ":author: String. The unmodified author of the changeset."
 msgstr ":author: 文字列。 リビジョンの作者名(記録情報そのまま)。"
 
@@ -24669,6 +25155,15 @@
 msgid "filter %s expects one argument"
 msgstr "フィルタ %s は引数が1つ必要です"
 
+msgid "date expects one or two arguments"
+msgstr "date の引数は1つないし2つです"
+
+msgid "fill expects one to four arguments"
+msgstr "fill の引数は1つから4つの間です"
+
+msgid "fill expects an integer width"
+msgstr "fill には数値を指定してください"
+
 #. i18n: "get" is a keyword
 msgid "get() expects two arguments"
 msgstr "get() の引数は2つです"
@@ -24677,14 +25172,6 @@
 msgid "get() expects a dict as first argument"
 msgstr "get() の第1引数は辞書でなければなりません"
 
-#. i18n: "join" is a keyword
-msgid "join expects one or two arguments"
-msgstr "join の引数は1つないし2つです"
-
-#. i18n: "sub" is a keyword
-msgid "sub expects three arguments"
-msgstr "sub は引数が3つ必要です"
-
 #. i18n: "if" is a keyword
 msgid "if expects two or three arguments"
 msgstr "if は2ないし3の引数が必要です"
@@ -24693,16 +25180,31 @@
 msgid "ifeq expects three or four arguments"
 msgstr "ifeq は3ないし4の引数が必要です"
 
+#. i18n: "join" is a keyword
+msgid "join expects one or two arguments"
+msgstr "join の引数は1つないし2つです"
+
 #. i18n: "rstdoc" is a keyword
 msgid "rstdoc expects two arguments"
 msgstr "rstdoc の引数は2つです"
 
+msgid "strip expects one or two arguments"
+msgstr "strip の引数は1つないし2つです"
+
+#. i18n: "sub" is a keyword
+msgid "sub expects three arguments"
+msgstr "sub は引数が3つ必要です"
+
 msgid "unmatched quotes"
 msgstr "引用符の対応関係が不正です"
 
 #, python-format
-msgid "style not found: %s"
-msgstr "スタイルが見つかりません: %s"
+msgid "style '%s' not found"
+msgstr "スタイル '%s' が見つかりません"
+
+#, python-format
+msgid "available styles: %s"
+msgstr "利用可能なスタイル: %s"
 
 #, python-format
 msgid "%s: missing value"
--- a/i18n/pt_BR.po	Fri Jul 12 11:14:42 2013 +0900
+++ b/i18n/pt_BR.po	Thu Aug 01 22:52:05 2013 -0500
@@ -31,7 +31,7 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2013-04-20 18:56-0300\n"
+"POT-Creation-Date: 2013-07-23 09:37-0300\n"
 "PO-Revision-Date: 2011-06-28 09:55+0200\n"
 "Last-Translator: Wagner Bruna <wbruna@yahoo.com>\n"
 "Language-Team: Brazilian Portuguese\n"
@@ -249,7 +249,7 @@
 "  sources = serve"
 msgstr ""
 "  [acl]\n"
-"  # Permite ou recusa acesso para revisões de entrada apenas se sua origem\n"
+"  # Permite ou recusa acesso para revisões recebidas apenas se sua origem\n"
 "  # estiver listada aqui, caso contrário ignora esta verificação. A origem\n"
 "  # é \"serve\" para todo tipo de acesso remoto (http ou ssh), \"push\",\n"
 "  # \"pull\" ou \"bundle\" quando os comandos correspondentes forem\n"
@@ -1346,7 +1346,7 @@
 msgstr ""
 "    É possível mapear endereços de email alternativos para um\n"
 "    endereço principal provendo um arquivo usando o seguinte\n"
-"    formato:"
+"    formato::"
 
 msgid "      <alias email> = <actual email>"
 msgstr "      <email alternativo> = <email principal>"
@@ -1354,11 +1354,13 @@
 msgid ""
 "    Such a file may be specified with the --aliases option, otherwise\n"
 "    a .hgchurn file will be looked for in the working directory root.\n"
+"    Aliases will be split from the rightmost \"=\".\n"
 "    "
 msgstr ""
 "    Esse arquivo pode ser especificado com a opção --aliases; de\n"
 "    outro modo, será usado um arquivo .hgchurn no raiz do diretório\n"
 "    de trabalho, se existir.\n"
+"    Apelidos serão divididos no \"=\" mais à direita.\n"
 "    "
 
 #, python-format
@@ -1524,6 +1526,16 @@
 "  tags.local = black bold"
 
 msgid ""
+"  rebase.rebased = blue\n"
+"  rebase.remaining = red bold"
+msgstr ""
+"  rebase.rebased = blue\n"
+"  rebase.remaining = red bold"
+
+msgid "  histedit.remaining = red bold"
+msgstr "  histedit.remaining = red bold"
+
+msgid ""
 "The available effects in terminfo mode are 'blink', 'bold', 'dim',\n"
 "'inverse', 'invisible', 'italic', 'standout', and 'underline'; in\n"
 "ECMA-48 mode, the options are 'bold', 'inverse', 'italic', and\n"
@@ -1626,7 +1638,7 @@
 
 #. i18n: "label" is a keyword
 msgid "label expects two arguments"
-msgstr "label exige dois argumentos"
+msgstr "label espera dois argumentos"
 
 #. i18n: 'always', 'auto', and 'never' are keywords and should
 #. not be translated
@@ -2343,6 +2355,10 @@
 msgstr "não foi possível encontrar ferramenta \"%s\" necessária"
 
 #, python-format
+msgid "splicemap entry %s is not a valid revision identifier"
+msgstr "a entrada %s do splicemap não é um identificador de revisão válido"
+
+#, python-format
 msgid "%s error:\n"
 msgstr "erro no comando %s:\n"
 
@@ -2355,10 +2371,6 @@
 msgstr "não foi possível abrir arquivo de mapeamento %r: %s"
 
 #, python-format
-msgid "syntax error in %s(%d): child parent1[,parent2] expected"
-msgstr "erro de sintaxe em %s(%d): \"filho pai1[,pai2]\" esperado"
-
-#, python-format
 msgid "%s: invalid source repository type"
 msgstr "%s: tipo de repositório de origem inválido"
 
@@ -2381,6 +2393,14 @@
 msgid "getting files"
 msgstr "obtendo arquivos"
 
+#, python-format
+msgid "syntax error in %s(%d): child parent1[,parent2] expected"
+msgstr "erro de sintaxe em %s(%d): \"filho pai1[,pai2]\" esperado"
+
+#, python-format
+msgid "splicemap file not found or error reading %s:"
+msgstr "arquivo splicemap não encontrado, ou erro ao ler %s:"
+
 msgid "revisions"
 msgstr "revisões"
 
@@ -2558,6 +2578,10 @@
 "%s\n"
 
 #, python-format
+msgid "changeset %d is both before and after %d\n"
+msgstr "a revisão %d está ao mesmo tempo antes e depois de %d\n"
+
+#, python-format
 msgid "%d changeset entries\n"
 msgstr "%d entradas de revisão\n"
 
@@ -3479,8 +3503,9 @@
 msgid "commands to sign and verify changesets"
 msgstr "comando para assinar e verificar revisões"
 
-msgid "error while verifying signature"
-msgstr "erro verificando assinatura"
+#, python-format
+msgid "%s Unknown key ID \"%s\"\n"
+msgstr "%s ID de chave desconhecido \"%s\"\n"
 
 #, python-format
 msgid "%s Bad signature from \"%s\"\n"
@@ -4042,7 +4067,7 @@
 msgstr ""
 "Edite a mensagem de consolidação, e feche o editor.\n"
 "Para esse exemplo, vamos assumir que a mensagem\n"
-"foi mudada para ``Add beta and delta.``Depois que o histedit for\n"
+"foi mudada para ``Add beta and delta.`` Depois que o histedit for\n"
 "executado, e tiver removido quaisquer revisões velhas ou temporárias\n"
 "de que necessitava, o histórico se parecerá com o seguinte::"
 
@@ -4241,7 +4266,7 @@
 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 progresso"
+msgstr "continua uma edição em andamento"
 
 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"
@@ -4306,6 +4331,9 @@
 msgid "cannot edit history that would orphan nodes"
 msgstr "não é possível editar histórico de forma a produzir nós órfãos"
 
+msgid "cannot edit history that contains merges"
+msgstr "não é possível editar histórico que contenha mesclagens"
+
 #, python-format
 msgid "cannot edit immutable changeset: %s"
 msgstr "não é possível editar uma revisão imutável: %s"
@@ -4340,6 +4368,21 @@
 msgid "histedit: moving bookmarks %s from %s to %s\n"
 msgstr "histedit: movendo marcadores %s de %s para %s\n"
 
+#. i18n: column positioning for "hg summary"
+#, python-format
+msgid "hist:   %s (histedit --continue)\n"
+msgstr "hist:         %s (histedit --continue)\n"
+
+#, python-format
+msgid "%d remaining"
+msgstr "%d por fazer"
+
+msgid "histedit in progress"
+msgstr "edição de histórico em andamento"
+
+msgid "use 'hg histedit --continue' or 'hg histedit --abort'"
+msgstr "use 'hg histedit --continue' ou 'hg histedit --abort'"
+
 msgid "accelerate status report using Linux's inotify service"
 msgstr "acelera informações de status usando o serviço inotify do Linux"
 
@@ -5157,7 +5200,7 @@
 msgstr "    .. container:: verbose"
 
 msgid "      Some examples:"
-msgstr "      Alguns exemplos::"
+msgstr "      Alguns exemplos:"
 
 msgid "      - pull largefiles for all branch heads::"
 msgstr "      - traz largefiles para todas as cabeças de ramo::"
@@ -5363,27 +5406,21 @@
 msgid "uncommitted local changes"
 msgstr "alterações locais pendentes"
 
-msgid "&Largefile"
-msgstr "&Largefile"
-
-msgid "&Normal file"
-msgstr "Arquivo &Normal"
-
 #, python-format
 msgid ""
 "%s has been turned into a largefile\n"
-"use (l)argefile or keep as (n)ormal file?"
+"use (l)argefile or keep as (n)ormal file?$$ &Largefile $$ &Normal file"
 msgstr ""
 "%s foi transformado em um largefile\n"
-"usar (l)argefile ou manter como arquivo (n)ormal?"
+"usar (l)argefile ou manter como arquivo (n)ormal?$$ &Largefile $$ Arquivo &Normal"
 
 #, python-format
 msgid ""
 "%s has been turned into a normal file\n"
-"keep as (l)argefile or use (n)ormal file?"
+"keep as (l)argefile or use (n)ormal file?$$ &Largefile $$ &Normal file"
 msgstr ""
 "%s foi transformado em um arquivo normal\n"
-"manter como (l)argefile ou usar um arquivo (n)ormal?"
+"manter como (l)argefile ou usar um arquivo (n)ormal?$$ &Largefile $$ Arquivo &Normal"
 
 #, python-format
 msgid "merging %s and %s to %s\n"
@@ -5396,16 +5433,10 @@
 #, python-format
 msgid ""
 "largefile %s has a merge conflict\n"
-"keep (l)ocal or take (o)ther?"
+"keep (l)ocal or take (o)ther?$$ &Local $$ &Other"
 msgstr ""
 "largefile %s tem um conflito de mesclagem\n"
-"manter (l)ocal ou usar (o)utro?"
-
-msgid "&Local"
-msgstr "&Local"
-
-msgid "&Other"
-msgstr "&Outra"
+"manter (l)ocal ou usar (o)utro?$$ &Local $$ &Outro"
 
 msgid "no files to copy"
 msgstr "nenhum arquivo para copiar"
@@ -5448,16 +5479,16 @@
 
 #. i18n: column positioning for "hg summary"
 msgid "largefiles: (no remote repo)\n"
-msgstr "largefiles: (nenhum repositório remoto)\n"
+msgstr "largefiles:   (nenhum repositório remoto)\n"
 
 #. i18n: column positioning for "hg summary"
 msgid "largefiles: (no files to upload)\n"
-msgstr "largefiles: (nenhum arquivo a ser enviado)\n"
+msgstr "largefiles:   (nenhum arquivo a ser enviado)\n"
 
 #. i18n: column positioning for "hg summary"
 #, python-format
 msgid "largefiles: %d to upload\n"
-msgstr "largefiles: %d a serem enviados\n"
+msgstr "largefiles:   %d a serem enviados\n"
 
 #, python-format
 msgid "largefile %s is not in cache and could not be downloaded"
@@ -6210,15 +6241,17 @@
 
 msgid ""
 "    An existing changeset may be placed under mq control with -r/--rev\n"
-"    (e.g. qimport --rev tip -n patch will place tip under mq control).\n"
-"    With -g/--git, patches imported with --rev will use the git diff\n"
-"    format. See the diffs help topic for information on why this is\n"
-"    important for preserving rename/copy information and permission\n"
-"    changes. Use :hg:`qfinish` to remove changesets from mq control."
+"    (e.g. qimport --rev . -n patch will place the current revision\n"
+"    under mq control). With -g/--git, patches imported with --rev will\n"
+"    use the git diff format. See the diffs help topic for information\n"
+"    on why this is important for preserving rename/copy information\n"
+"    and permission changes. Use :hg:`qfinish` to remove changesets\n"
+"    from mq control."
 msgstr ""
 "    Uma revisão existente pode ser colocada sob o controle da mq\n"
-"    com -r/--rev (por exemplo, qimport --rev tip -n patch colocará a\n"
-"    tip sob o controle da mq). Com -g/--git, os patches importados\n"
+"    com -r/--rev (por exemplo, qimport --rev . -n patch colocará a\n"
+"    revisão atual sob o controle da mq).\n"
+"    Com -g/--git, os patches importados\n"
 "    com --rev usarão o formato git diff. Veja o tópico de ajuda diff\n"
 "    para informações sobre por que isso é importante para preservar\n"
 "    informação de cópia e renomeação e mudanças de permissão.\n"
@@ -7207,11 +7240,11 @@
 #. i18n: column positioning for "hg summary"
 #, python-format
 msgid "mq:     %s\n"
-msgstr "mq:     %s\n"
+msgstr "mq:           %s\n"
 
 #. i18n: column positioning for "hg summary"
 msgid "mq:     (empty queue)\n"
-msgstr "mq:     (fila vazia)\n"
+msgstr "mq:           (fila vazia)\n"
 
 msgid ""
 "``mq()``\n"
@@ -8018,14 +8051,8 @@
 "\n"
 "Sumário final:"
 
-msgid "are you sure you want to send (yn)?"
-msgstr "você tem certeza que deseja enviar (yn)?"
-
-msgid "&No"
-msgstr "(&N) não"
-
-msgid "&Yes"
-msgstr "(&Y) sim"
+msgid "are you sure you want to send (yn)?$$ &Yes $$ &No"
+msgstr "você tem certeza que deseja enviar (yn)?$$ (&Y) Sim $$ &Não"
 
 msgid "patchbomb canceled"
 msgstr "patchbomb cancelado"
@@ -8330,9 +8357,9 @@
 
 msgid ""
 "    If you don't specify a destination changeset (``-d/--dest``),\n"
-"    rebase uses the tipmost head of the current named branch as the\n"
-"    destination. (The destination changeset is not modified by\n"
-"    rebasing, but new changesets are added as its descendants.)"
+"    rebase uses the current branch tip as the destination. (The\n"
+"    destination changeset is not modified by rebasing, but new\n"
+"    changesets are added as its descendants.)"
 msgstr ""
 "    Se você não especificar uma revisão de destino (opção ``-d/--dest``),\n"
 "    rebase usará como destino a cabeça mais recente do ramo nomeado\n"
@@ -8395,14 +8422,14 @@
 msgid ""
 "    One result of the rules for selecting the destination changeset\n"
 "    and source branch is that, unlike ``merge``, rebase will do\n"
-"    nothing if you are at the latest (tipmost) head of a named branch\n"
+"    nothing if you are at the branch tip of a named branch\n"
 "    with two heads. You need to explicitly specify source and/or\n"
 "    destination (or ``update`` to the other head, if it's the head of\n"
 "    the intended source branch)."
 msgstr ""
 "    Um resultado das regras de seleção da revisão de destino é que, ao\n"
-"    contrário de ``merge``, rebase não fará nada se você estiver na última\n"
-"    cabeça (a mais próxima da tip) de um ramo nomeado com duas ou mais\n"
+"    contrário de ``merge``, rebase não fará nada se você estiver na\n"
+"    revisão mais recente de um ramo nomeado com duas ou mais\n"
 "    cabeças. Nesse caso você precisa especificar explicitamente a origem\n"
 "    e/ou o destino (ou fazer um ``update`` para outra cabeça, se for a\n"
 "    cabeça do ramo de origem desejado)."
@@ -8500,7 +8527,7 @@
 msgstr "não se pode usar a revisão %d como base, o resultado teria 3 pais"
 
 msgid "no rebase in progress"
-msgstr "nenhum rebaseamento em progresso"
+msgstr "nenhum rebaseamento em andamento"
 
 #, python-format
 msgid "can't abort rebase due to immutable changesets %s"
@@ -8535,12 +8562,27 @@
 msgid "--tool can only be used with --rebase"
 msgstr "--tool só pode ser usada em conjunto com --rebase"
 
+#. i18n: column positioning for "hg summary"
+#, python-format
+msgid "rebase: %s, %s (rebase --continue)\n"
+msgstr "rebase:       %s, %s (rebase --continue)\n"
+
+#, python-format
+msgid "%d rebased"
+msgstr "%d rebaseados"
+
 msgid "rebase working directory to branch head"
 msgstr "rebaseia o diretório de trabalho para a cabeça do ramo"
 
 msgid "specify merge tool for rebase"
 msgstr "especifica o utilitário de mesclagem para o rebaseamento"
 
+msgid "rebase in progress"
+msgstr "rebaseamento em andamento"
+
+msgid "use 'hg rebase --continue' or 'hg rebase --abort'"
+msgstr "use 'hg rebase --continue' ou 'hg rebase --abort'"
+
 msgid "commands to interactively select changes for commit/qrefresh"
 msgstr ""
 "comandos para selecionar interativamente mudanças em um commit ou qrefresh"
@@ -8564,35 +8606,17 @@
 msgid "%d hunks, %d lines changed\n"
 msgstr "%d trechos, %d linhas modificadas\n"
 
-msgid "[Ynesfdaq?]"
-msgstr "[Ynesfdaq?]"
-
-msgid "&Yes, record this change"
-msgstr "(&Y) sim, grava esta mudança"
-
-msgid "&No, skip this change"
-msgstr "(&N) não, descarta essa mudança"
-
-msgid "&Edit the change manually"
-msgstr "&Edita a mudança manualmente"
-
-msgid "&Skip remaining changes to this file"
-msgstr "(&S) descarta mudanças restantes neste arquivo"
-
-msgid "Record remaining changes to this &file"
-msgstr "(&F) grava as mudanças restantes deste arquivo"
-
-msgid "&Done, skip remaining changes and files"
-msgstr "(&D) terminado, descarta mudanças e arquivos restantes"
-
-msgid "Record &all changes to all remaining files"
-msgstr "(&A) grava todas as mudanças dos arquivos restantes"
-
-msgid "&Quit, recording no changes"
-msgstr "(&Q) encerra, sem gravar nenhuma mudança"
-
-msgid "&?"
-msgstr "&?"
+msgid ""
+"[Ynesfdaq?]$$ &Yes, record this change$$ &No, skip this change$$ &Edit the "
+"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$$ &?"
+msgstr ""
+"[Ynesfdaq?]$$ (&Y) sim, grave esta mudança$$ &Não, descarte esta mudança$$ "
+"&Edite a 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$$ &?"
 
 msgid "cannot edit patch for whole file"
 msgstr "não é possível editar um patch para o arquivo inteiro"
@@ -8944,8 +8968,7 @@
 "       with rollback, the other clone will suddenly stop working: all\n"
 "       operations will fail with \"abort: working directory has unknown\n"
 "       parent\". The only known workaround is to use debugsetparents on\n"
-"       the broken clone to reset it to a changeset that still exists\n"
-"       (e.g. tip).\n"
+"       the broken clone to reset it to a changeset that still exists.\n"
 "    "
 msgstr ""
 "    .. note::\n"
@@ -8958,7 +8981,7 @@
 "       \"abortado: diretório de trabalho tem pai desconhecido\". A\n"
 "       única correção conhecida é o uso do comando debugsetparents no\n"
 "       clone quebrado para reposicioná-lo para uma revisão que ainda\n"
-"       exista (por exemplo, a tip).\n"
+"       exista.\n"
 "    "
 
 msgid "convert a shared repository to a normal one"
@@ -9254,6 +9277,12 @@
 ":transplanted: String. O identificador de nó da revisão\n"
 "    transplantada, se existir."
 
+msgid "transplant in progress"
+msgstr "transplante em andamento"
+
+msgid "use 'hg transplant --continue' or 'hg update' to abort"
+msgstr "use 'hg transplant --continue' ou 'hg update' para abortar"
+
 msgid "allow the use of MBCS paths with problematic encodings"
 msgstr "permite o uso de caminhos MBCS com codificação problemática."
 
@@ -9577,6 +9606,16 @@
 msgid "%s: unknown bundle version %s"
 msgstr "%s: versão de bundle %s desconhecida"
 
+msgid "bundling"
+msgstr "criando bundle"
+
+msgid "manifests"
+msgstr "manifestos"
+
+#, python-format
+msgid "empty or missing revlog for %s"
+msgstr "revlog vazio ou não encontrado para %s"
+
 msgid "no node"
 msgstr "nenhum nó"
 
@@ -9696,47 +9735,47 @@
 #. i18n: column positioning for "hg log"
 #, python-format
 msgid "changeset:   %d:%s\n"
-msgstr "revisão:     %d:%s\n"
+msgstr "revisão:      %d:%s\n"
 
 #. i18n: column positioning for "hg log"
 #, python-format
 msgid "branch:      %s\n"
-msgstr "ramo:        %s\n"
+msgstr "ramo:         %s\n"
 
 #. i18n: column positioning for "hg log"
 #, python-format
 msgid "bookmark:    %s\n"
-msgstr "marcador:    %s\n"
+msgstr "marcador:     %s\n"
 
 #. i18n: column positioning for "hg log"
 #, python-format
 msgid "tag:         %s\n"
-msgstr "etiqueta:    %s\n"
+msgstr "etiqueta:     %s\n"
 
 #. i18n: column positioning for "hg log"
 #, python-format
 msgid "phase:       %s\n"
-msgstr "fase:        %s\n"
+msgstr "fase:         %s\n"
 
 #. i18n: column positioning for "hg log"
 #, python-format
 msgid "parent:      %d:%s\n"
-msgstr "pai:         %d:%s\n"
+msgstr "pai:          %d:%s\n"
 
 #. i18n: column positioning for "hg log"
 #, python-format
 msgid "manifest:    %d:%s\n"
-msgstr "manifesto:   %d:%s\n"
+msgstr "manifesto:    %d:%s\n"
 
 #. i18n: column positioning for "hg log"
 #, python-format
 msgid "user:        %s\n"
-msgstr "usuário:     %s\n"
+msgstr "usuário:      %s\n"
 
 #. i18n: column positioning for "hg log"
 #, python-format
 msgid "date:        %s\n"
-msgstr "data:        %s\n"
+msgstr "data:         %s\n"
 
 #. i18n: column positioning for "hg log"
 msgid "files:"
@@ -9753,17 +9792,17 @@
 #. i18n: column positioning for "hg log"
 #, python-format
 msgid "files:       %s\n"
-msgstr "arquivos:    %s\n"
+msgstr "arquivos:     %s\n"
 
 #. i18n: column positioning for "hg log"
 #, python-format
 msgid "copies:      %s\n"
-msgstr "cópias:      %s\n"
+msgstr "cópias:       %s\n"
 
 #. i18n: column positioning for "hg log"
 #, python-format
 msgid "extra:       %s=%s\n"
-msgstr "extra:       %s=%s\n"
+msgstr "extra:        %s=%s\n"
 
 msgid "description:\n"
 msgstr "descrição:\n"
@@ -9771,7 +9810,7 @@
 #. i18n: column positioning for "hg log"
 #, python-format
 msgid "summary:     %s\n"
-msgstr "sumário:     %s\n"
+msgstr "sumário:      %s\n"
 
 #, python-format
 msgid "%s: no key named '%s'"
@@ -9901,6 +9940,18 @@
 msgid "no changes needed to %s\n"
 msgstr "nenhuma mudança necessária para %s\n"
 
+msgid "graft in progress"
+msgstr "enxerto em andamento"
+
+msgid "use 'hg graft --continue' or 'hg update' to abort"
+msgstr "use 'hg graft --continue' ou 'hg update' para abortar"
+
+msgid "last update was interrupted"
+msgstr "o último update foi interrompido"
+
+msgid "use 'hg update' to get a consistent checkout"
+msgstr "use 'hg update' para obter uma cópia de trabalho consistente"
+
 msgid "repository root directory or name of overlay bundle file"
 msgstr ""
 "diretório raiz do repositório ou nome de arquivo de bundle para sobreposição"
@@ -10256,7 +10307,7 @@
 "    do arquivo (ou forçado através de -t/--type)."
 
 msgid "      Examples:"
-msgstr "      Exemplos::"
+msgstr "      Exemplos:"
 
 msgid "      - create a zip file containing the 1.0 release::"
 msgstr "      - cria um arquivo zip contendo a versão 1.0::"
@@ -10669,8 +10720,8 @@
 msgid "mark a bookmark inactive"
 msgstr "torna um marcador inativo"
 
-msgid "hg bookmarks [-f] [-d] [-i] [-m NAME] [-r REV] [NAME]"
-msgstr "hg bookmarks [-f] [-d] [-i] [-m NOME] [-r REV] [NOME]"
+msgid "hg bookmarks [OPTIONS]... [NAME]..."
+msgstr "hg bookmarks [OPÇÕES]... [NOME]..."
 
 msgid "track a line of development with movable markers"
 msgstr "rastreia uma linha de desenvolvimento com marcadores móveis"
@@ -10766,6 +10817,9 @@
 msgid "new bookmark name required"
 msgstr "requerido nome do novo marcador"
 
+msgid "only one new bookmark name allowed"
+msgstr "apenas um novo nome de marcador é permitido"
+
 msgid "no bookmarks set\n"
 msgstr "nenhum marcador definido\n"
 
@@ -10999,12 +11053,10 @@
 
 msgid ""
 "    Print the specified files as they were at the given revision. If\n"
-"    no revision is given, the parent of the working directory is used,\n"
-"    or tip if no revision is checked out."
+"    no revision is given, the parent of the working directory is used."
 msgstr ""
 "    Imprime o conteúdo dos arquivos especificados na revisão pedida.\n"
-"    Se a revisão não for dada, o pai do diretório de trabalho é usado,\n"
-"    ou a tip se nenhuma revisão estiver obtida."
+"    Se a revisão não for dada, será usado o pai do diretório de trabalho."
 
 msgid ""
 "    Output may be to a file, in which case the name of the file is\n"
@@ -11240,6 +11292,9 @@
 msgid "amend the parent of the working dir"
 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 "commit the specified files or all outstanding changes"
 msgstr "consolida os arquivos pedidos ou todas as mudanças por gravar"
 
@@ -11320,12 +11375,6 @@
 msgid "cannot amend with --subrepos"
 msgstr "amend não suporta --subrepos"
 
-msgid "cannot commit an interrupted graft operation"
-msgstr "não é possível realizar um commit de um enxerto interrompido"
-
-msgid "use \"hg graft -c\" to continue graft"
-msgstr "use \"hg graft -c\" para continuar o enxerto"
-
 msgid "can only close branch heads"
 msgstr "só se pode fechar cabeças de ramo"
 
@@ -12365,8 +12414,8 @@
 msgid "      - show the source of a grafted changeset::"
 msgstr "      - mostra a origem de uma revisão enxertada::"
 
-msgid "          hg log --debug -r tip"
-msgstr "          hg log --debug -r tip"
+msgid "          hg log --debug -r ."
+msgstr "          hg log --debug -r ."
 
 msgid ""
 "    Returns 0 on successful completion.\n"
@@ -12497,34 +12546,33 @@
 msgid "[-ct] [-r STARTREV] [REV]..."
 msgstr "[-ct] [-r REVINICIAL] [REV]..."
 
-msgid "show current repository heads or show branch heads"
-msgstr "mostra as cabeças atuais do repositório ou cabeças de ramo"
-
-msgid "    With no arguments, show all repository branch heads."
-msgstr "    Sem argumentos, mostra todas as cabeças de ramo do repositório."
-
-msgid ""
-"    Repository \"heads\" are changesets with no child changesets. They are\n"
-"    where development generally takes place and are the usual targets\n"
-"    for update and merge operations. Branch heads are changesets that have\n"
-"    no child changeset on the same branch."
-msgstr ""
-"    \"Cabeças\" do repositório são revisões que não têm revisões\n"
-"    filhas. Elas são onde o desenvolvimento geralmente\n"
-"    acontece e são os alvos costumeiros para operações update e\n"
-"    merge. Cabeças de ramo são revisões que não possuem revisões filhas\n"
-"    no mesmo ramo."
-
-msgid ""
-"    If one or more REVs are given, only branch heads on the branches\n"
-"    associated with the specified changesets are shown. This means\n"
-"    that you can use :hg:`heads foo` to see the heads on a branch\n"
-"    named ``foo``."
+msgid "show branch heads"
+msgstr "exibe cabeças de ramo"
+
+msgid ""
+"    With no arguments, show all open branch heads in the repository.\n"
+"    Branch heads are changesets that have no descendants on the\n"
+"    same branch. They are where development generally takes place and\n"
+"    are the usual targets for update and merge operations."
+msgstr ""
+"    Sem argumentos, exibe todas as cabeças de ramo abertas\n"
+"    do repositório.\n"
+"    \"Cabeças\" de ramo são revisões que não possuem descendentes\n"
+"    no mesmo ramo.\n"
+"    Elas são onde o desenvolvimento geralmente acontece\n"
+"    e são os alvos usuais para operações update e\n"
+"    merge. "
+
+msgid ""
+"    If one or more REVs are given, only open branch heads on the\n"
+"    branches associated with the specified changesets are shown. This\n"
+"    means that you can use :hg:`heads .` to see the heads on the\n"
+"    currently checked-out branch."
 msgstr ""
 "    Se um ou mais argumentos REV forem dados, apenas cabeças de ramo\n"
-"    nos ramos correspondentes a essas revisões serão mostradas. Ou\n"
-"    seja, você pode usar :hg:`heads foo` para mostrar as cabeças no\n"
-"    ramo ``foo``."
+"    abertas nos ramos correspondentes a essas revisões serão mostradas. Ou\n"
+"    seja, você pode usar :hg:`heads .` para mostrar as cabeças no\n"
+"    ramo atual."
 
 msgid ""
 "    If -c/--closed is specified, also show branch heads marked closed\n"
@@ -12542,10 +12590,10 @@
 
 msgid ""
 "    If -t/--topo is specified, named branch mechanics will be ignored and only\n"
-"    changesets without children will be shown."
+"    topological heads (changesets with no children) will be shown."
 msgstr ""
 "    Se -t/--topo for especificado, ramos nomeados serão ignorados e apenas\n"
-"    revisões sem filhas serão mostradas."
+"    cabeças topológicas (revisões sem filhas) serão mostradas."
 
 msgid ""
 "    Returns 0 if matching heads are found, 1 if not.\n"
@@ -12684,8 +12732,8 @@
 msgid "base path (DEPRECATED)"
 msgstr "caminho base (OBSOLETO)"
 
-msgid "skip check for outstanding uncommitted changes"
-msgstr "não faz verificação de mudanças ainda não consolidadas"
+msgid "skip check for outstanding uncommitted changes (DEPRECATED)"
+msgstr "não faz verificação de mudanças ainda não consolidadas (OBSOLETO)"
 
 msgid "don't commit, just update the working directory"
 msgstr "não consolida, apenas atualiza o diretório de trabalho"
@@ -12713,11 +12761,11 @@
 "    (se --no-commit não for especificado)."
 
 msgid ""
-"    If there are outstanding changes in the working directory, import\n"
-"    will abort unless given the -f/--force flag."
-msgstr ""
-"    Se houver mudanças não gravadas no diretório de trabalho, import\n"
-"    irá abortar, a não ser que a opção -f/--force seja passada."
+"    Because import first applies changes to the working directory,\n"
+"    import will abort if there are outstanding changes."
+msgstr ""
+"    Como o comando import primeiro aplica as mudanças ao diretório\n"
+"    de trabalho, ele abortará se houverem mudanças não consolidadas."
 
 msgid ""
 "    You can import a patch straight from a mail message. Even patches\n"
@@ -13167,8 +13215,8 @@
 msgid "can't specify a revision with --all"
 msgstr "você não pode especificar uma revisão com --all"
 
-msgid "force a merge with outstanding changes"
-msgstr "força uma mesclagem com mudanças ainda não consideradas"
+msgid "force a merge including outstanding changes (DEPRECATED)"
+msgstr "força a inclusão na mesclagem de mudanças não consolidadas (OBSOLETO)"
 
 msgid "revision to merge"
 msgstr "revisão a ser mesclada"
@@ -13710,11 +13758,11 @@
 "      can be used to remove files from the next revision without\n"
 "      deleting them from the working directory."
 msgstr ""
-"    -A/--after pode ser usado para remover\n"
-"    apenas arquivos já removidos do diretório de trabalho,\n"
-"    -f/--force pode ser usado para forçar a remoção, e -Af pode ser\n"
-"    usado para remover os arquivos da próxima revisão sem removê-los\n"
-"    do diretório de trabalho."
+"      -A/--after pode ser usado para remover\n"
+"      apenas arquivos já removidos do diretório de trabalho,\n"
+"      -f/--force pode ser usado para forçar a remoção, e -Af pode ser\n"
+"      usado para remover os arquivos da próxima revisão sem removê-los\n"
+"      do diretório de trabalho."
 
 msgid ""
 "      The following table details the behavior of remove for different\n"
@@ -14017,8 +14065,15 @@
 msgid "ignore safety measures"
 msgstr "ignora medidas de segurança"
 
-msgid "roll back the last transaction (dangerous)"
-msgstr "desfaz a última transação (perigoso)"
+msgid "roll back the last transaction (DANGEROUS) (DEPRECATED)"
+msgstr "desfaz a última transação (PERIGOSO) (OBSOLETO)"
+
+msgid ""
+"    Please use :hg:`commit --amend` instead of rollback to correct\n"
+"    mistakes in the last commit."
+msgstr ""
+"    Use :hg:`commit --amend` ao invés de rollback para corrigir\n"
+"    erros na última consolidação."
 
 msgid ""
 "    This command should be used with care. There is only one level of\n"
@@ -14387,7 +14442,7 @@
 #. i18n: column positioning for "hg summary"
 #, python-format
 msgid "parent: %d:%s "
-msgstr "pai: %d:%s "
+msgstr "pai:          %d:%s "
 
 msgid " (empty repository)"
 msgstr " (repositório vazio)"
@@ -14398,11 +14453,11 @@
 #. i18n: column positioning for "hg summary"
 #, python-format
 msgid "branch: %s\n"
-msgstr "ramo: %s\n"
+msgstr "ramo:         %s\n"
 
 #. i18n: column positioning for "hg summary"
 msgid "bookmarks:"
-msgstr "marcadores:"
+msgstr "marcadores:  "
 
 #, python-format
 msgid "%d modified"
@@ -14444,6 +14499,9 @@
 msgid "%d subrepos"
 msgstr "%d sub-repositórios"
 
+msgid " (interrupted update)"
+msgstr " (update interrompido)"
+
 msgid " (merge)"
 msgstr " (mesclagem)"
 
@@ -14479,11 +14537,11 @@
 msgstr "atualizações: %d novas revisões, %d cabeças de ramo (merge)\n"
 
 msgid "1 or more incoming"
-msgstr "1 ou mais de entrada"
+msgstr "1 ou mais a serem recebidas"
 
 #, python-format
 msgid "%d outgoing"
-msgstr "%d de saída"
+msgstr "%d a serem enviadas"
 
 #, python-format
 msgid "%d incoming bookmarks"
@@ -14496,11 +14554,11 @@
 #. i18n: column positioning for "hg summary"
 #, python-format
 msgid "remote: %s\n"
-msgstr "remoto: %s\n"
+msgstr "remoto:       %s\n"
 
 #. i18n: column positioning for "hg summary"
 msgid "remote: (synced)\n"
-msgstr "remoto: (sincronizado)\n"
+msgstr "remoto:       (sincronizado)\n"
 
 msgid "force tag"
 msgstr "força a mudança da etiqueta"
@@ -14541,11 +14599,10 @@
 
 msgid ""
 "    If no revision is given, the parent of the working directory is\n"
-"    used, or tip if no revision is checked out."
+"    used."
 msgstr ""
 "    Se a revisão não for fornecida, será usada a revisão pai do\n"
-"    diretório de trabalho, ou a tip se a cópia de trabalho não\n"
-"    estiver em uma revisão."
+"    diretório de trabalho."
 
 msgid ""
 "    To facilitate version control, distribution, and merging of tags,\n"
@@ -14630,8 +14687,8 @@
 msgid "[-p] [-g]"
 msgstr "[-p] [-g]"
 
-msgid "show the tip revision"
-msgstr "exibe a revisão mais recente"
+msgid "show the tip revision (DEPRECATED)"
+msgstr "exibe a revisão mais recente (OBSOLETO)"
 
 msgid ""
 "    The tip revision (usually just called the tip) is the changeset\n"
@@ -14654,6 +14711,9 @@
 "    especial e não pode ser renomeada ou atribuída a outra\n"
 "    revisão."
 
+msgid "    This command is deprecated, please use :hg:`heads` instead."
+msgstr "    Este comando é obsoleto, use :hg:`heads` em seu lugar."
+
 msgid "update to new branch head if changesets were unbundled"
 msgstr ""
 "atualiza para nova cabeça de ramo se revisões forem extraídas do bundle"
@@ -14827,11 +14887,11 @@
 msgstr "(veja http://mercurial.selenic.com para mais informações)"
 
 msgid ""
-"Copyright (C) 2005-2012 Matt Mackall and others\n"
+"Copyright (C) 2005-2013 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-2012 Matt Mackall e outros\n"
+"Copyright (C) 2005-2013 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"
@@ -15259,10 +15319,10 @@
 #, python-format
 msgid ""
 " no tool found to merge %s\n"
-"keep (l)ocal or take (o)ther?"
+"keep (l)ocal or take (o)ther?$$ &Local $$ &Other"
 msgstr ""
 " nenhuma ferramenta encontrada para mesclar %s\n"
-"manter (l)ocal ou usar (o)utro?"
+"manter o arquivo (l)ocal ou usar o (o)utro?$$ &Local $$ &Outro"
 
 msgid ""
 "``internal:local``\n"
@@ -15336,16 +15396,16 @@
 msgstr "mesclagem de %s falhou!\n"
 
 #, python-format
-msgid "was merge of '%s' successful (yn)?"
-msgstr "a mesclagem de '%s' teve sucesso (yn)?"
+msgid "was merge of '%s' successful (yn)?$$ &Yes $$ &No"
+msgstr "a mesclagem de '%s' teve sucesso (yn)?$$ (&Y) sim $$ &Não"
 
 #, python-format
 msgid ""
 " output file %s appears unchanged\n"
-"was merge successful (yn)?"
-msgstr ""
-" arquivo de saída %s parece não ter modificações\n"
-"a mesclagem teve sucesso (yn)?"
+"was merge successful (yn)?$$ &Yes $$ &No"
+msgstr ""
+" o arquivo de saída %s parece não ter modificações\n"
+"a mesclagem teve sucesso (yn)?$$ (&Y) sim $$ &Não"
 
 msgid "unterminated string"
 msgstr "string não terminada"
@@ -15672,19 +15732,19 @@
 msgstr "Arquivos de Configuração"
 
 msgid "Date Formats"
-msgstr "Formatos de datas"
+msgstr "Formatos de Datas"
 
 msgid "File Name Patterns"
-msgstr "Padrões de nome de arquivo"
+msgstr "Padrões de Nomes de Arquivo"
 
 msgid "Environment Variables"
-msgstr "Variáveis de ambiente"
+msgstr "Variáveis de Ambiente"
 
 msgid "Specifying Single Revisions"
-msgstr "Especificação de revisões únicas"
+msgstr "Especificação de Revisões Únicas"
 
 msgid "Specifying Multiple Revisions"
-msgstr "Especificação de múltiplas revisões"
+msgstr "Especificação de Múltiplas Revisões"
 
 msgid "Specifying Revision Sets"
 msgstr "Especificação de Conjuntos de Revisões"
@@ -15842,6 +15902,24 @@
 msgid "Mercurial Distributed SCM\n"
 msgstr "Sistema de controle de versão distribuído Mercurial\n"
 
+msgid ".. Common link and substitution definitions."
+msgstr ".. Common link and substitution definitions."
+
+msgid ""
+".. |hg(1)| replace:: **hg**\\ (1)\n"
+".. _hg(1): hg.1.html\n"
+".. |hgrc(5)| replace:: **hgrc**\\ (5)\n"
+".. _hgrc(5): hgrc.5.html\n"
+".. |hgignore(5)| replace:: **hgignore**\\ (5)\n"
+".. _hgignore(5): hgignore.5.html\n"
+msgstr ""
+".. |hg(1)| replace:: **hg**\\ (1)\n"
+".. _hg(1): hg.1.html\n"
+".. |hgrc(5)| replace:: **hgrc**\\ (5)\n"
+".. _hgrc(5): hgrc.5.html\n"
+".. |hgignore(5)| replace:: **hgignore**\\ (5)\n"
+".. _hgignore(5): hgignore.5.html\n"
+
 msgid ""
 "The Mercurial system uses a set of configuration files to control\n"
 "aspects of its behavior."
@@ -19781,7 +19859,7 @@
 "- Show status of files that appear to be binary in the working directory::"
 msgstr ""
 "- Exibe o status de arquivos que parecem ser binários no diretório\n"
-"de trabalho::"
+"  de trabalho::"
 
 msgid "    hg status -A \"set:binary()\""
 msgstr "    hg status -A \"set:binary()\""
@@ -20760,6 +20838,343 @@
 "    Veja 'Parent, working directory'.\n"
 
 msgid ""
+"====\n"
+" hg\n"
+"===="
+msgstr ""
+"====\n"
+" hg\n"
+"===="
+
+msgid ""
+"---------------------------------------\n"
+"Mercurial source code management system\n"
+"---------------------------------------"
+msgstr ""
+"----------------------------------------------------\n"
+"Mercurial - sistema de gerenciamento de código fonte\n"
+"----------------------------------------------------"
+
+msgid ""
+":Author:         Matt Mackall <mpm@selenic.com>\n"
+":Organization:   Mercurial\n"
+":Manual section: 1\n"
+":Manual group:   Mercurial Manual"
+msgstr ""
+":Author:         Matt Mackall <mpm@selenic.com>\n"
+":Organization:   Mercurial\n"
+":Manual section: 1\n"
+":Manual group:   Mercurial Manual"
+
+msgid ""
+".. contents::\n"
+"   :backlinks: top\n"
+"   :class: htmlonly\n"
+"   :depth: 1"
+msgstr ""
+".. contents::\n"
+"   :backlinks: top\n"
+"   :class: htmlonly\n"
+"   :depth: 1"
+
+msgid ""
+"\n"
+"Synopsis\n"
+"\"\"\"\"\"\"\"\"\n"
+"**hg** *command* [*option*]... [*argument*]..."
+msgstr ""
+"\n"
+"Sinopse\n"
+"\"\"\"\"\"\"\"\n"
+"**hg** *comando* [*opção*]... [*argumento*]..."
+
+msgid ""
+"Description\n"
+"\"\"\"\"\"\"\"\"\"\"\"\n"
+"The **hg** command provides a command line interface to the Mercurial\n"
+"system."
+msgstr ""
+"Descrição\n"
+"\"\"\"\"\"\"\"\"\"\n"
+"O comando **hg** fornece uma interface de linha de comando para o\n"
+"sistema Mercurial."
+
+msgid ""
+"Command Elements\n"
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+"Elementos do Comando\n"
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+
+msgid ""
+"files...\n"
+"    indicates one or more filename or relative path filenames; see\n"
+"    `File Name Patterns`_ for information on pattern matching"
+msgstr ""
+"arquivos...\n"
+"    indica um ou mais nomes ou caminhos relativos para arquivos;\n"
+"    veja `Padrões de Nomes de Arquivo`_ para informações sobre\n"
+"    correspondência de padrões"
+
+msgid ""
+"path\n"
+"    indicates a path on the local machine"
+msgstr ""
+"caminho\n"
+"    indica um caminho na máquina local"
+
+msgid ""
+"revision\n"
+"    indicates a changeset which can be specified as a changeset\n"
+"    revision number, a tag, or a unique substring of the changeset\n"
+"    hash value"
+msgstr ""
+"revisão\n"
+"    indica uma revisão que pode ser especificada como um número\n"
+"    de revisão, uma etiqueta ou uma parte única do identificador\n"
+"    de revisão"
+
+msgid ""
+"repository path\n"
+"    either the pathname of a local repository or the URI of a remote\n"
+"    repository."
+msgstr ""
+"caminho para o repositório\n"
+"    o caminho para um repositório local ou a URI de um repositório\n"
+"    remoto."
+
+msgid ".. include:: hg.1.gendoc.txt"
+msgstr ".. include:: hg.1.gendoc.txt"
+
+msgid ""
+"Files\n"
+"\"\"\"\"\""
+msgstr ""
+"Arquivos\n"
+"\"\"\"\"\"\"\"\""
+
+msgid ""
+"``/etc/mercurial/hgrc``, ``$HOME/.hgrc``, ``.hg/hgrc``\n"
+"    This file contains defaults and configuration. Values in\n"
+"    ``.hg/hgrc`` override those in ``$HOME/.hgrc``, and these override\n"
+"    settings made in the global ``/etc/mercurial/hgrc`` configuration.\n"
+"    See |hgrc(5)|_ for details of the contents and format of these\n"
+"    files."
+msgstr ""
+"``/etc/mercurial/hgrc``, ``$HOME/.hgrc``, ``.hg/hgrc``\n"
+"    Estes arquivos contêm opções padrão e configurações. Os valores\n"
+"    em ``.hg/hgrc`` sobrepõe os valores em ``$HOME/.hgrc``, e estes\n"
+"    sobrepõe configurações feitas no arquivo ``/etc/mercurial/hgrc``\n"
+"    global.\n"
+"    Veja |hgrc(5)|_ para detalhes sobre o conteúdo e formato destes\n"
+"    arquivos."
+
+msgid ""
+"``.hgignore``\n"
+"    This file contains regular expressions (one per line) that\n"
+"    describe file names that should be ignored by **hg**. For details,\n"
+"    see |hgignore(5)|_."
+msgstr ""
+"``.hgignore``\n"
+"    Este arquivo contém expressões regulares (uma por linha) que\n"
+"    descrevem nomes de arquivo que devem ser ignorados pelo **hg**.\n"
+"    Para mais detalhes, veja |hgignore(5)|_."
+
+msgid ""
+"``.hgsub``\n"
+"    This file defines the locations of all subrepositories, and\n"
+"    tells where the subrepository checkouts came from. For details, see\n"
+"    :hg:`help subrepos`."
+msgstr ""
+"``.hgsub``\n"
+"    Este arquivo define as localizações de todos os sub-repositórios,\n"
+"    e indica quais as origens de suas revisões. Para mais detalhes,\n"
+"    veja :hg:`help subrepos`."
+
+msgid ""
+"``.hgsubstate``\n"
+"    This file is where Mercurial stores all nested repository states. *NB: This\n"
+"    file should not be edited manually.*"
+msgstr ""
+"``.hgsubstate``\n"
+"    Este arquivo armazena os estados dos sub-repositórios\n"
+"    aninhados. *NB: Este arquivo é mantido automaticamente\n"
+"    pelo Mercurial, e não deve ser editado manualmente.*"
+
+msgid ""
+"``.hgtags``\n"
+"    This file contains changeset hash values and text tag names (one\n"
+"    of each separated by spaces) that correspond to tagged versions of\n"
+"    the repository contents. The file content is encoded using UTF-8."
+msgstr ""
+"``.hgtags``\n"
+"    Este arquivo contém identificadores de revisão e nomes\n"
+"    de etiquetas (um par por linha, separados por um espaço) que\n"
+"    correspondem a versões etiquetadas do conteúdo do repositório.\n"
+"    Seu conteúdo é codificado em UTF-8."
+
+msgid ""
+"``.hg/last-message.txt``\n"
+"    This file is used by :hg:`commit` to store a backup of the commit message\n"
+"    in case the commit fails."
+msgstr ""
+"``.hg/last-message.txt``\n"
+"    Este arquivo é usado por :hg:`commit` para armazenar uma cópia\n"
+"    da mensagem de consolidação, para o caso de a consolidação falhar."
+
+msgid ""
+"``.hg/localtags``\n"
+"    This file can be used to define local tags which are not shared among\n"
+"    repositories. The file format is the same as for ``.hgtags``, but it is\n"
+"    encoded using the local system encoding."
+msgstr ""
+"``.hg/localtags``\n"
+"    Este arquivo pode ser usado para definir etiquetas locais,\n"
+"    que não são compartilhadas com outros repositórios. O formato\n"
+"    do arquivo é o mesmo de ``.hgtags``, mas usando a codificação\n"
+"    local do sistema."
+
+msgid ""
+"Some commands (e.g. revert) produce backup files ending in ``.orig``,\n"
+"if the ``.orig`` file already exists and is not tracked by Mercurial,\n"
+"it will be overwritten."
+msgstr ""
+"Alguns comandos (revert, por exemplo) produzem arquivos de backup\n"
+"terminados em ``.orig``. Se um arquivo ``.orig`` já existir e não for\n"
+"rastreado pelo Mercurial, ele será sobrescrito."
+
+msgid ""
+"Bugs\n"
+"\"\"\"\"\n"
+"Probably lots, please post them to the mailing list (see Resources_\n"
+"below) when you find them."
+msgstr ""
+"Bugs\n"
+"\"\"\"\"\n"
+"Provavelmente vários, por favor informe-os na lista de discussão\n"
+"(veja a seção Recursos_ abaixo)."
+
+msgid ""
+"See Also\n"
+"\"\"\"\"\"\"\"\"\n"
+"|hgignore(5)|_, |hgrc(5)|_"
+msgstr ""
+"Veja Também\n"
+"\"\"\"\"\"\"\"\"\"\"\"\n"
+"|hgignore(5)|_, |hgrc(5)|_"
+
+msgid ""
+"Author\n"
+"\"\"\"\"\"\"\n"
+"Written by Matt Mackall <mpm@selenic.com>"
+msgstr ""
+"Autor\n"
+"\"\"\"\"\"\n"
+"Escrito por Matt Mackall <mpm@selenic.com>"
+
+msgid ""
+"Resources\n"
+"\"\"\"\"\"\"\"\"\"\n"
+"Main Web Site: http://mercurial.selenic.com/"
+msgstr ""
+"Recursos\n"
+"\"\"\"\"\"\"\"\"\n"
+"Página Principal: http://mercurial.selenic.com/"
+
+msgid "Source code repository: http://selenic.com/hg"
+msgstr "Repositório de código fonte: http://selenic.com/hg"
+
+msgid "Mailing list: http://selenic.com/mailman/listinfo/mercurial"
+msgstr "Lista de discussão: http://selenic.com/mailman/listinfo/mercurial"
+
+msgid ""
+"Copying\n"
+"\"\"\"\"\"\"\"\n"
+"Copyright (C) 2005-2013 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-2013 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."
+
+msgid ".. include:: common.txt\n"
+msgstr ".. include:: common.txt\n"
+
+msgid ""
+"==========\n"
+" hgignore\n"
+"=========="
+msgstr ""
+"==========\n"
+" hgignore\n"
+"=========="
+
+msgid ""
+"---------------------------------\n"
+"syntax for Mercurial ignore files\n"
+"---------------------------------"
+msgstr ""
+"---------------------------------------------------------\n"
+"sintaxe para arquivos de padrões ignorados pelo Mercurial\n"
+"---------------------------------------------------------"
+
+msgid ""
+":Author:         Vadim Gelfer <vadim.gelfer@gmail.com>\n"
+":Organization:   Mercurial\n"
+":Manual section: 5\n"
+":Manual group:   Mercurial Manual"
+msgstr ""
+":Author:         Vadim Gelfer <vadim.gelfer@gmail.com>\n"
+":Organization:   Mercurial\n"
+":Manual section: 5\n"
+":Manual group:   Mercurial Manual"
+
+msgid ".. include:: hgignore.5.gendoc.txt"
+msgstr ".. include:: hgignore.5.gendoc.txt"
+
+msgid ""
+"Author\n"
+"======\n"
+"Vadim Gelfer <vadim.gelfer@gmail.com>"
+msgstr ""
+"Autor\n"
+"=====\n"
+"Vadim Gelfer <vadim.gelfer@gmail.com>"
+
+msgid "Mercurial was written by Matt Mackall <mpm@selenic.com>."
+msgstr "Mercurial foi escrito por Matt Mackall <mpm@selenic.com>."
+
+msgid ""
+"See Also\n"
+"========\n"
+"|hg(1)|_, |hgrc(5)|_"
+msgstr ""
+"Veja Também\n"
+"===========\n"
+"|hg(1)|_, |hgrc(5)|_"
+
+msgid ""
+"Copying\n"
+"=======\n"
+"This manual page is copyright 2006 Vadim Gelfer.\n"
+"Mercurial is copyright 2005-2013 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-2013 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."
+
+msgid ".. include:: common.txt"
+msgstr ".. include:: common.txt"
+
+msgid ""
 "Synopsis\n"
 "========"
 msgstr ""
@@ -20953,6 +21368,89 @@
 "  ^\\.pc/\n"
 
 msgid ""
+"======\n"
+" hgrc\n"
+"======"
+msgstr ""
+"======\n"
+" hgrc\n"
+"======"
+
+msgid ""
+"---------------------------------\n"
+"configuration files for Mercurial\n"
+"---------------------------------"
+msgstr ""
+"-----------------------------------------\n"
+"arquivos de configuração para o Mercurial\n"
+"-----------------------------------------"
+
+msgid ""
+":Author:         Bryan O'Sullivan <bos@serpentine.com>\n"
+":Organization:   Mercurial\n"
+":Manual section: 5\n"
+":Manual group:   Mercurial Manual"
+msgstr ""
+":Author:         Bryan O'Sullivan <bos@serpentine.com>\n"
+":Organization:   Mercurial\n"
+":Manual section: 5\n"
+":Manual group:   Mercurial Manual"
+
+msgid ""
+".. contents::\n"
+"   :backlinks: top\n"
+"   :class: htmlonly"
+msgstr ""
+".. contents::\n"
+"   :backlinks: top\n"
+"   :class: htmlonly"
+
+msgid ""
+"\n"
+"Description\n"
+"==========="
+msgstr ""
+"\n"
+"Descrição\n"
+"========="
+
+msgid ".. include:: hgrc.5.gendoc.txt"
+msgstr ".. include:: hgrc.5.gendoc.txt"
+
+msgid ""
+"Author\n"
+"======\n"
+"Bryan O'Sullivan <bos@serpentine.com>."
+msgstr ""
+"Autor\n"
+"=====\n"
+"Bryan O'Sullivan <bos@serpentine.com>."
+
+msgid ""
+"See Also\n"
+"========\n"
+"|hg(1)|_, |hgignore(5)|_"
+msgstr ""
+"Veja Também\n"
+"===========\n"
+"|hg(1)|_, |hgignore(5)|_"
+
+msgid ""
+"Copying\n"
+"=======\n"
+"This manual page is copyright 2005 Bryan O'Sullivan.\n"
+"Mercurial is copyright 2005-2013 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-2013 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."
+
+msgid ""
 "Mercurial's internal web server, hgweb, can serve either a single\n"
 "repository, or a tree of repositories. In the second case, repository\n"
 "paths and global options can be defined using a dedicated\n"
@@ -22267,14 +22765,14 @@
 "ao log: log, outgoing, incoming, tip, parents, heads e glog."
 
 msgid ""
-"Four styles are packaged with Mercurial: default (the style used\n"
-"when no explicit preference is passed), compact, changelog,\n"
+"Five styles are packaged with Mercurial: default (the style used\n"
+"when no explicit preference is passed), compact, changelog, phases\n"
 "and xml.\n"
 "Usage::"
 msgstr ""
-"Quatro estilos são incluídos na distribuição do Mercurial: default\n"
+"Cinco estilos são incluídos na distribuição do Mercurial: default\n"
 "(o estilo usado quando nenhuma preferência for passada), compact,\n"
-"changelog e xml.\n"
+"changelog, phases e xml.\n"
 "Uso::"
 
 msgid "    $ hg log -r1 --style changelog"
@@ -22368,12 +22866,15 @@
 msgid "- label(label, expr)"
 msgstr "- label(label, expr)"
 
-msgid "- sub(pat, repl, expr)"
-msgstr "- sub(padrão, substituição, expr)"
-
 msgid "- rstdoc(text, style)"
 msgstr "- rstdoc(texto, estilo)"
 
+msgid "- strip(text[, chars])"
+msgstr "- strip(texto[, caracteres])"
+
+msgid "- sub(pat, repl, expr)"
+msgstr "- sub(padrão, substituição, expressão)"
+
 msgid ""
 "Also, for any expression that returns a list, there is a list operator:"
 msgstr ""
@@ -22998,16 +23499,6 @@
 msgid "%d changesets found\n"
 msgstr "%d revisões encontradas\n"
 
-msgid "bundling"
-msgstr "criando bundle"
-
-msgid "manifests"
-msgstr "manifestos"
-
-#, python-format
-msgid "empty or missing revlog for %s"
-msgstr "revlog vazio ou não encontrado para %s"
-
 msgid "adding changesets\n"
 msgstr "adicionando revisões\n"
 
@@ -23023,6 +23514,14 @@
 msgid "adding file changes\n"
 msgstr "adicionando mudanças em arquivos\n"
 
+#, python-format
+msgid " (%+d heads)"
+msgstr " (%+d cabeças)"
+
+#, python-format
+msgid "added %d changesets with %d changes to %d files%s\n"
+msgstr "adicionadas %d revisões com %d mudanças em %d arquivos%s\n"
+
 msgid "received file revlog group is empty"
 msgstr "grupo recebido de arquivos revlog vazio"
 
@@ -23033,14 +23532,6 @@
 msgid "missing file data for %s:%s - run hg verify"
 msgstr "faltando dados de arquivo para %s:%s - execute hg verify"
 
-#, python-format
-msgid " (%+d heads)"
-msgstr " (%+d cabeças)"
-
-#, python-format
-msgid "added %d changesets with %d changes to %d files%s\n"
-msgstr "adicionadas %d revisões com %d mudanças em %d arquivos%s\n"
-
 msgid "unexpected response from remote server:"
 msgstr "resposta inesperada do servidor remoto:"
 
@@ -23170,27 +23661,18 @@
 #, python-format
 msgid ""
 "local changed %s which remote deleted\n"
-"use (c)hanged version or (d)elete?"
+"use (c)hanged version or (d)elete?$$ &Changed $$ &Delete"
 msgstr ""
 "local alterou %s, que a remota removeu\n"
-"use (c) a versão alterada, ou (d) apague?"
-
-msgid "&Changed"
-msgstr "(&C) alterada"
-
-msgid "&Delete"
-msgstr "(&D) apagar"
+"use (c) a versão alterada, ou (d) apague?$$ (&C) alterada $$ (&D) apague"
 
 #, python-format
 msgid ""
 "remote changed %s which local deleted\n"
-"use (c)hanged version or leave (d)eleted?"
+"use (c)hanged version or leave (d)eleted?$$ &Changed $$ &Deleted"
 msgstr ""
 "remota mudou %s, apagada pela local\n"
-"use (c) a versão alterada, ou (d) deixe apagada?"
-
-msgid "&Deleted"
-msgstr "(&D) apagada"
+"use (c) a versão alterada, ou (d) deixe apagada? (&C) alterada $$ (&D) deixe apagada"
 
 #, python-format
 msgid "update failed to remove %s: %s!\n"
@@ -23260,7 +23742,7 @@
 msgstr "Nota:"
 
 msgid "Tip:"
-msgstr "Tip:"
+msgstr "Dica:"
 
 msgid "Warning!"
 msgstr "Aviso!"
@@ -23485,6 +23967,10 @@
 msgid "%s not found in the transaction"
 msgstr "%s não encontrado na transação"
 
+#, python-format
+msgid "attempted to add linkrev -1 to %s"
+msgstr "tentativa de adicionar linkrev -1 a %s"
+
 msgid "consistency error in delta"
 msgstr "erro de consistência no delta"
 
@@ -24647,45 +25133,46 @@
 #, python-format
 msgid ""
 " subrepository sources for %s differ\n"
-"use (l)ocal source (%s) or (r)emote source (%s)?"
-msgstr ""
-" origens do sub-repositório para %s diferem\n"
-"usar fonte (l)ocal (%s) ou (r)emota (%s)?"
-
-msgid "&Remote"
-msgstr "&Remoto"
+"use (l)ocal source (%s) or (r)emote source (%s)?$$ &Local $$ &Remote"
+msgstr ""
+" as origens do sub-repositório %s diferem\n"
+"usar origem (l)ocal (%s) ou (r)emota (%s)?$$ &Local $$ &Remota"
 
 #, python-format
 msgid ""
 " local changed subrepository %s which remote removed\n"
-"use (c)hanged version or (d)elete?"
+"use (c)hanged version or (d)elete?$$ &Changed $$ &Delete"
 msgstr ""
 " local mudou sub-repositório %s, que a remota removeu\n"
-"use (c) a versão alterada, ou (d) apague?"
+"use (c) a versão alterada, ou (d) apague?$$ (&C) alterada $$ (&D) apague"
 
 #, python-format
 msgid ""
 " remote changed subrepository %s which local removed\n"
-"use (c)hanged version or (d)elete?"
+"use (c)hanged version or (d)elete?$$ &Changed $$ &Delete"
 msgstr ""
 " remota mudou sub-repositório %s apagado pela local\n"
-"use (c) a versão alterada ou (d) apague?"
+"use (c) a versão alterada ou (d) apague?$$ (&C) alterada $$ (&D) apague"
 
 #, python-format
 msgid ""
 " subrepository sources for %s differ\n"
 "use (l)ocal source (%s) or (r)emote source (%s)?\n"
+"$$ &Local $$ &Remote"
 msgstr ""
 " as origens do sub-repositório %s diferem\n"
 "usar origem (l)ocal (%s) ou (r)emota (%s)?\n"
+"$$ &Local $$ &Remota"
 
 #, python-format
 msgid ""
 " subrepository sources for %s differ (in checked out version)\n"
 "use (l)ocal source (%s) or (r)emote source (%s)?\n"
+"$$ &Local $$ &Remote"
 msgstr ""
 " as origens do sub-repositório %s diferem (na versão do diretório de trabalho)\n"
 "usar origem (l)ocal (%s) ou (r)emota (%s)?\n"
+"$$ &Local $$ &Remota"
 
 msgid "default path for subrepository not found"
 msgstr "o caminho padrão para o sub-repositório não foi encontrado"
@@ -25011,11 +25498,11 @@
 "    \"foo/bar\" se tornam \"foo\"."
 
 msgid ""
-":tabindent: Any text. Returns the text, with every line except the\n"
-"    first starting with a tab character."
+":tabindent: Any text. Returns the text, with every non-empty line\n"
+"    except the first starting with a tab character."
 msgstr ""
 ":tabindent: Qualquer texto. Insere um caractere de tabulação no\n"
-"    início de cada linha do texto, exceto da primeira."
+"    início de cada linha não vazia do texto, exceto a primeira."
 
 msgid ""
 ":urlescape: Any text. Escapes all \"special\" characters. For example,\n"
@@ -25037,15 +25524,6 @@
 ":emailuser: Qualquer texto. Devolve a parte do usuário de um endereço de "
 "e-mail."
 
-msgid "fill expects one or two arguments"
-msgstr "fill exige um ou dois argumentos"
-
-msgid "fill expects an integer width"
-msgstr "fill espera um número inteiro"
-
-msgid "date expects one or two arguments"
-msgstr "data exige um ou dois argumentos"
-
 msgid ":author: String. The unmodified author of the changeset."
 msgstr ":author: String. O autor da revisão, sem modificações."
 
@@ -25209,21 +25687,22 @@
 msgid "filter %s expects one argument"
 msgstr "o filtro %s espera um argumento"
 
+msgid "date expects one or two arguments"
+msgstr "data espera um ou dois argumentos"
+
+msgid "fill expects one to four arguments"
+msgstr "fill espera de um a quatro argumentos"
+
+msgid "fill expects an integer width"
+msgstr "fill espera um número inteiro"
+
 #. i18n: "get" is a keyword
 msgid "get() expects two arguments"
-msgstr "get() exige dois argumentos"
+msgstr "get() espera dois argumentos"
 
 #. i18n: "get" is a keyword
 msgid "get() expects a dict as first argument"
-msgstr "get() exige um dicionário como primeiro argumento"
-
-#. i18n: "join" is a keyword
-msgid "join expects one or two arguments"
-msgstr "join exige um ou dois argumentos"
-
-#. i18n: "sub" is a keyword
-msgid "sub expects three arguments"
-msgstr "sub espera três argumentos"
+msgstr "get() espera um dicionário como primeiro argumento"
 
 #. i18n: "if" is a keyword
 msgid "if expects two or three arguments"
@@ -25233,16 +25712,31 @@
 msgid "ifeq expects three or four arguments"
 msgstr "ifeq espera três ou quatro argumentos"
 
+#. i18n: "join" is a keyword
+msgid "join expects one or two arguments"
+msgstr "join espera um ou dois argumentos"
+
 #. i18n: "rstdoc" is a keyword
 msgid "rstdoc expects two arguments"
-msgstr "rstdoc exige dois argumentos"
+msgstr "rstdoc espera dois argumentos"
+
+msgid "strip expects one or two arguments"
+msgstr "strip espera um ou dois argumentos"
+
+#. i18n: "sub" is a keyword
+msgid "sub expects three arguments"
+msgstr "sub espera três argumentos"
 
 msgid "unmatched quotes"
 msgstr "aspas não combinam"
 
 #, python-format
-msgid "style not found: %s"
-msgstr "estilo não encontrado: %s"
+msgid "style '%s' not found"
+msgstr "estilo '%s' não encontrado"
+
+#, python-format
+msgid "available styles: %s"
+msgstr "estilos disponíveis: %s"
 
 #, python-format
 msgid "%s: missing value"
--- a/mercurial/bookmarks.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/bookmarks.py	Thu Aug 01 22:52:05 2013 -0500
@@ -170,6 +170,19 @@
                 deleted = True
     return deleted
 
+def calculateupdate(ui, repo, checkout):
+    '''Return a tuple (targetrev, movemarkfrom) indicating the rev to
+    check out and where to move the active bookmark from, if needed.'''
+    movemarkfrom = None
+    if checkout is None:
+        curmark = repo._bookmarkcurrent
+        if iscurrent(repo):
+            movemarkfrom = repo['.'].node()
+        elif curmark:
+            ui.status(_("updating to active bookmark %s\n") % curmark)
+            checkout = curmark
+    return (checkout, movemarkfrom)
+
 def update(repo, parents, node):
     deletefrom = parents
     marks = repo._bookmarks
--- a/mercurial/cmdutil.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/cmdutil.py	Thu Aug 01 22:52:05 2013 -0500
@@ -1976,7 +1976,7 @@
             #   make backup if not in target manifest
             (modified, revert, remove, True, True),
             (added, revert, remove, True, False),
-            (removed, undelete, None, False, False),
+            (removed, undelete, None, True, False),
             (deleted, revert, remove, False, False),
             )
 
@@ -1986,7 +1986,8 @@
             def handle(xlist, dobackup):
                 xlist[0].append(abs)
                 if (dobackup and not opts.get('no_backup') and
-                    os.path.lexists(target)):
+                    os.path.lexists(target) and
+                    abs in ctx and repo[None][abs].cmp(ctx[abs])):
                     bakname = "%s.orig" % rel
                     ui.note(_('saving current version of %s as %s\n') %
                             (rel, bakname))
@@ -2103,3 +2104,36 @@
 
 # a list of (ui, repo) functions called by commands.summary
 summaryhooks = util.hooks()
+
+# A list of state files kept by multistep operations like graft.
+# Since graft cannot be aborted, it is considered 'clearable' by update.
+# note: bisect is intentionally excluded
+# (state file, clearable, allowcommit, error, hint)
+unfinishedstates = [
+    ('graftstate', True, False, _('graft in progress'),
+     _("use 'hg graft --continue' or 'hg update' to abort")),
+    ('updatestate', True, False, _('last update was interrupted'),
+     _("use 'hg update' to get a consistent checkout"))
+    ]
+
+def checkunfinished(repo, commit=False):
+    '''Look for an unfinished multistep operation, like graft, and abort
+    if found. It's probably good to check this right before
+    bailifchanged().
+    '''
+    for f, clearable, allowcommit, msg, hint in unfinishedstates:
+        if commit and allowcommit:
+            continue
+        if repo.vfs.exists(f):
+            raise util.Abort(msg, hint=hint)
+
+def clearunfinished(repo):
+    '''Check for unfinished operations (as above), and clear the ones
+    that are clearable.
+    '''
+    for f, clearable, allowcommit, msg, hint in unfinishedstates:
+        if not clearable and repo.vfs.exists(f):
+            raise util.Abort(msg, hint=hint)
+    for f, clearable, allowcommit, msg, hint in unfinishedstates:
+        if clearable and repo.vfs.exists(f):
+            util.unlink(repo.join(f))
--- a/mercurial/commands.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/commands.py	Thu Aug 01 22:52:05 2013 -0500
@@ -428,6 +428,7 @@
     if date:
         opts['date'] = util.parsedate(date)
 
+    cmdutil.checkunfinished(repo)
     cmdutil.bailifchanged(repo)
     node = scmutil.revsingle(repo, rev).node()
 
@@ -651,6 +652,8 @@
     elif extra or good + bad + skip + reset + extend + bool(command) > 1:
         raise util.Abort(_('incompatible arguments'))
 
+    cmdutil.checkunfinished(repo)
+
     if reset:
         p = repo.join("bisect.state")
         if os.path.exists(p):
@@ -1333,9 +1336,7 @@
     # Save this for restoring it later
     oldcommitphase = ui.config('phases', 'new-commit')
 
-    if repo.vfs.exists('graftstate'):
-        raise util.Abort(_('cannot commit an interrupted graft operation'),
-                         hint=_('use "hg graft -c" to continue graft'))
+    cmdutil.checkunfinished(repo, commit=True)
 
     branch = repo[None].branch()
     bheads = repo.branchheads(branch)
@@ -2977,6 +2978,7 @@
                 raise
             raise util.Abort(_("no graft state found, can't continue"))
     else:
+        cmdutil.checkunfinished(repo)
         cmdutil.bailifchanged(repo)
         if not revs:
             raise util.Abort(_('no revisions specified'))
@@ -3320,19 +3322,17 @@
     ] + templateopts,
     _('[-ct] [-r STARTREV] [REV]...'))
 def heads(ui, repo, *branchrevs, **opts):
-    """show current repository heads or show branch heads
-
-    With no arguments, show all repository branch heads.
-
-    Repository "heads" are changesets with no child changesets. They are
-    where development generally takes place and are the usual targets
-    for update and merge operations. Branch heads are changesets that have
-    no child changeset on the same branch.
-
-    If one or more REVs are given, only branch heads on the branches
-    associated with the specified changesets are shown. This means
-    that you can use :hg:`heads foo` to see the heads on a branch
-    named ``foo``.
+    """show branch heads
+
+    With no arguments, show all open branch heads in the repository.
+    Branch heads are changesets that have no descendants on the
+    same branch. They are where development generally takes place and
+    are the usual targets for update and merge operations.
+
+    If one or more REVs are given, only open branch heads on the
+    branches associated with the specified changesets are shown. This
+    means that you can use :hg:`heads .` to see the heads on the
+    currently checked-out branch.
 
     If -c/--closed is specified, also show branch heads marked closed
     (see :hg:`commit --close-branch`).
@@ -3341,7 +3341,7 @@
     STARTREV will be displayed.
 
     If -t/--topo is specified, named branch mechanics will be ignored and only
-    changesets without children will be shown.
+    topological heads (changesets with no children) will be shown.
 
     Returns 0 if matching heads are found, 1 if not.
     """
@@ -3658,6 +3658,8 @@
     if sim and not update:
         raise util.Abort(_('cannot use --similarity with --bypass'))
 
+    if update:
+        cmdutil.checkunfinished(repo)
     if (opts.get('exact') or not opts.get('force')) and update:
         cmdutil.bailifchanged(repo)
 
@@ -4518,7 +4520,7 @@
     if modheads == 0:
         return
     if optupdate:
-        movemarkfrom = repo['.'].node()
+        checkout, movemarkfrom = bookmarks.calculateupdate(ui, repo, checkout)
         try:
             ret = hg.update(repo, checkout)
         except util.Abort, inst:
@@ -5480,7 +5482,9 @@
     t = ', '.join(t)
     cleanworkdir = False
 
-    if len(parents) > 1:
+    if repo.vfs.exists('updatestate'):
+        t += _(' (interrupted update)')
+    elif len(parents) > 1:
         t += _(' (merge)')
     elif branch != parents[0].branch():
         t += _(' (new branch)')
@@ -5822,15 +5826,10 @@
     if rev is None or rev == '':
         rev = node
 
+    cmdutil.clearunfinished(repo)
+
     # with no argument, we also move the current bookmark, if any
-    movemarkfrom = None
-    if rev is None:
-        curmark = repo._bookmarkcurrent
-        if bookmarks.iscurrent(repo):
-            movemarkfrom = repo['.'].node()
-        elif curmark:
-            ui.status(_("updating to active bookmark %s\n") % curmark)
-            rev = curmark
+    rev, movemarkfrom = bookmarks.calculateupdate(ui, repo, rev)
 
     # if we defined a bookmark, we have to remember the original bookmark name
     brev = rev
--- a/mercurial/fileset.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/fileset.py	Thu Aug 01 22:52:05 2013 -0500
@@ -27,7 +27,7 @@
 
 keywords = set(['and', 'or', 'not'])
 
-globchars = ".*{}[]?/\\"
+globchars = ".*{}[]?/\\_"
 
 def tokenize(program):
     pos, l = 0, len(program)
--- a/mercurial/hgweb/hgweb_mod.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/hgweb/hgweb_mod.py	Thu Aug 01 22:52:05 2013 -0500
@@ -176,6 +176,8 @@
                                  '').lower() != '100-continue') or
                     req.env.get('X-HgHttp2', '')):
                     req.drain()
+                else:
+                    req.headers.append(('Connection', 'Close'))
                 req.respond(inst, protocol.HGTYPE,
                             body='0\n%s\n' % inst.message)
                 return ''
--- a/mercurial/hgweb/webcommands.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/hgweb/webcommands.py	Thu Aug 01 22:52:05 2013 -0500
@@ -119,7 +119,7 @@
             cl = web.repo.changelog
             for i in xrange(len(web.repo) - 1, 0, -100):
                 l = []
-                for j in cl.revs(max(0, i - 100), i + 1):
+                for j in cl.revs(max(0, i - 99), i):
                     ctx = web.repo[j]
                     l.append(ctx)
                 l.reverse()
@@ -200,38 +200,37 @@
             return _search(web, req, tmpl) # XXX redirect to 404 page?
 
     def changelist(latestonly, **map):
-        l = [] # build a list in forward order for efficiency
         revs = []
-        if start < end:
-            revs = web.repo.changelog.revs(start, end - 1)
+        if pos != -1:
+            revs = web.repo.changelog.revs(pos, 0)
         if latestonly:
-            for r in revs:
-                pass
-            revs = (r,)
+            revs = (revs.next(),)
+        curcount = 0
         for i in revs:
             ctx = web.repo[i]
             n = ctx.node()
             showtags = webutil.showtag(web.repo, tmpl, 'changelogtag', n)
             files = webutil.listfilediffs(tmpl, ctx.files(), n, web.maxfiles)
 
-            l.append({"parity": parity.next(),
-                      "author": ctx.user(),
-                      "parent": webutil.parents(ctx, i - 1),
-                      "child": webutil.children(ctx, i + 1),
-                      "changelogtag": showtags,
-                      "desc": ctx.description(),
-                      "extra": ctx.extra(),
-                      "date": ctx.date(),
-                      "files": files,
-                      "rev": i,
-                      "node": hex(n),
-                      "tags": webutil.nodetagsdict(web.repo, n),
-                      "bookmarks": webutil.nodebookmarksdict(web.repo, n),
-                      "inbranch": webutil.nodeinbranch(web.repo, ctx),
-                      "branches": webutil.nodebranchdict(web.repo, ctx)
-                     })
-        for e in reversed(l):
-            yield e
+            curcount += 1
+            if curcount > revcount:
+                break
+            yield {"parity": parity.next(),
+                   "author": ctx.user(),
+                   "parent": webutil.parents(ctx, i - 1),
+                   "child": webutil.children(ctx, i + 1),
+                   "changelogtag": showtags,
+                   "desc": ctx.description(),
+                   "extra": ctx.extra(),
+                   "date": ctx.date(),
+                   "files": files,
+                   "rev": i,
+                   "node": hex(n),
+                   "tags": webutil.nodetagsdict(web.repo, n),
+                   "bookmarks": webutil.nodebookmarksdict(web.repo, n),
+                   "inbranch": webutil.nodeinbranch(web.repo, ctx),
+                   "branches": webutil.nodebranchdict(web.repo, ctx)
+            }
 
     revcount = shortlog and web.maxshortchanges or web.maxchanges
     if 'revcount' in req.form:
@@ -246,9 +245,7 @@
 
     count = len(web.repo)
     pos = ctx.rev()
-    start = max(0, pos - revcount + 1)
-    end = pos + 1
-    parity = paritygen(web.stripecount, offset=start - end)
+    parity = paritygen(web.stripecount)
 
     changenav = webutil.revnav(web.repo).gen(pos, revcount, count)
 
@@ -878,17 +875,20 @@
 
     count = len(web.repo)
     pos = rev
-    start = max(0, pos - revcount + 1)
-    end = min(count, start + revcount)
-    pos = end - 1
 
     uprev = min(max(0, count - 1), rev + revcount)
     downrev = max(0, rev - revcount)
     changenav = webutil.revnav(web.repo).gen(pos, revcount, count)
 
     tree = []
-    if start < end:
-        revs = list(web.repo.changelog.revs(end - 1, start))
+    if pos != -1:
+        allrevs = web.repo.changelog.revs(pos, 0)
+        revs = []
+        for i in allrevs:
+            revs.append(i)
+            if len(revs) >= revcount:
+                break
+
         dag = graphmod.dagwalker(web.repo, revs)
         tree = list(graphmod.colored(dag, web.repo))
 
--- a/mercurial/httpclient/__init__.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/httpclient/__init__.py	Thu Aug 01 22:52:05 2013 -0500
@@ -622,6 +622,8 @@
                         # TODO: find a way to block on ssl flushing its buffer
                         # similar to selecting on a raw socket.
                         continue
+                    if e[0] == errno.EWOULDBLOCK or e[0] == errno.EAGAIN:
+                        continue
                     elif (e[0] not in (errno.ECONNRESET, errno.EPIPE)
                           and not first):
                         raise
--- a/mercurial/httpclient/socketutil.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/httpclient/socketutil.py	Thu Aug 01 22:52:05 2013 -0500
@@ -106,7 +106,7 @@
                     else:
                         raise x
 
-    _PROTOCOL_SSLv23 = 2
+    _PROTOCOL_SSLv3 = 1
 
     CERT_NONE = 0
     CERT_OPTIONAL = 1
@@ -118,7 +118,7 @@
     # pylint: disable=W0613,R0913
     def wrap_socket(sock, keyfile=None, certfile=None,
                 server_side=False, cert_reqs=CERT_NONE,
-                ssl_version=_PROTOCOL_SSLv23, ca_certs=None,
+                ssl_version=_PROTOCOL_SSLv3, ca_certs=None,
                 do_handshake_on_connect=True,
                 suppress_ragged_eofs=True):
         """Backport of ssl.wrap_socket from Python 2.6."""
--- a/mercurial/localrepo.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/localrepo.py	Thu Aug 01 22:52:05 2013 -0500
@@ -1951,6 +1951,9 @@
 
         self.ui.debug("checking for updated bookmarks\n")
         rb = remote.listkeys('bookmarks')
+        revnums = map(unfi.changelog.rev, revs or [])
+        ancestors = [
+            a for a in unfi.changelog.ancestors(revnums, inclusive=True)]
         for k in rb.keys():
             if k in unfi._bookmarks:
                 nr, nl = rb[k], hex(self._bookmarks[k])
@@ -1958,6 +1961,8 @@
                     cr = unfi[nr]
                     cl = unfi[nl]
                     if bookmarks.validdest(unfi, cr, cl):
+                        if ancestors and cl.rev() not in ancestors:
+                            continue
                         r = remote.pushkey('bookmarks', k, nr, nl)
                         if r:
                             self.ui.status(_("updating bookmark %s\n") % k)
--- a/mercurial/merge.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/merge.py	Thu Aug 01 22:52:05 2013 -0500
@@ -747,12 +747,17 @@
             fp1, fp2, xp1, xp2 = fp2, nullid, xp2, ''
         if not partial:
             repo.hook('preupdate', throw=True, parent1=xp1, parent2=xp2)
+            # note that we're in the middle of an update
+            repo.vfs.write('updatestate', p2.hex())
 
         stats = applyupdates(repo, actions, wc, p2, pa, overwrite)
 
         if not partial:
             repo.setparents(fp1, fp2)
             recordupdates(repo, actions, branchmerge)
+            # update completed, clear state
+            util.unlink(repo.join('updatestate'))
+
             if not branchmerge:
                 repo.dirstate.setbranch(p2.branch())
     finally:
--- a/mercurial/parsers.c	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/parsers.c	Thu Aug 01 22:52:05 2013 -0500
@@ -1311,6 +1311,9 @@
 		goto bail;
 	}
 
+	if (PyList_Sort(revs) == -1)
+		goto bail;
+
 	for (i = 0; i < revcount; i++) {
 		int n = (int)PyInt_AsLong(PyList_GET_ITEM(revs, i));
 		long b = 1l << i;
@@ -1359,10 +1362,10 @@
 				if (nsp == sp)
 					continue;
 				seen[p] = nsp;
+				interesting[sp] -= 1;
+				if (interesting[sp] == 0 && interesting[nsp] > 0)
+					ninteresting -= 1;
 				interesting[nsp] += 1;
-				interesting[sp] -= 1;
-				if (interesting[sp] == 0)
-					ninteresting -= 1;
 			}
 		}
 		interesting[sv] -= 1;
@@ -1385,8 +1388,7 @@
 	if (dict == NULL)
 		goto bail;
 
-	j = ninteresting;
-	for (i = 0; i < revcount && j > 0; i++) {
+	for (i = 0; i < revcount; i++) {
 		PyObject *key;
 
 		if ((final & (1 << i)) == 0)
@@ -1400,7 +1402,6 @@
 			Py_DECREF(Py_None);
 			goto bail;
 		}
-		j -= 1;
 	}
 
 	keys = PyDict_Keys(dict);
--- a/mercurial/patch.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/patch.py	Thu Aug 01 22:52:05 2013 -0500
@@ -176,7 +176,6 @@
             # Not an email, restore parsed headers if any
             subject = '\n'.join(': '.join(h) for h in msg.items()) + '\n'
 
-        gitsendmail = 'git-send-email' in msg.get('X-Mailer', '')
         # should try to parse msg['Date']
         date = None
         nodeid = None
@@ -233,7 +232,7 @@
                             parents.append(line[9:].lstrip())
                         elif not line.startswith("# "):
                             hgpatchheader = False
-                    elif line == '---' and gitsendmail:
+                    elif line == '---':
                         ignoretext = True
                     if not hgpatchheader and not ignoretext:
                         cfp.write(line)
--- a/mercurial/posix.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/posix.py	Thu Aug 01 22:52:05 2013 -0500
@@ -154,10 +154,16 @@
     # file already exists
     name = tempfile.mktemp(dir=path, prefix='hg-checklink-')
     try:
-        os.symlink(".", name)
+        fd = tempfile.NamedTemporaryFile(dir=path, prefix='hg-checklink-')
+        os.symlink(os.path.basename(fd.name), name)
         os.unlink(name)
         return True
-    except (OSError, AttributeError):
+    except AttributeError:
+        return False
+    except OSError, inst:
+        # sshfs might report failure while successfully creating the link
+        if inst[0] == errno.EIO and os.path.exists(name):
+            os.unlink(name)
         return False
 
 def checkosfilename(path):
--- a/mercurial/revlog.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/revlog.py	Thu Aug 01 22:52:05 2013 -0500
@@ -751,10 +751,14 @@
 
     def _partialmatch(self, id):
         try:
-            return self.index.partialmatch(id)
+            n = self.index.partialmatch(id)
+            if n and self.hasnode(n):
+                return n
+            return None
         except RevlogError:
             # parsers.c radix tree lookup gave multiple matches
-            raise LookupError(id, self.indexfile, _("ambiguous identifier"))
+            # fall through to slow path that filters hidden revisions
+            pass
         except (AttributeError, ValueError):
             # we are pure python, or key was too short to search radix tree
             pass
@@ -768,7 +772,8 @@
                 l = len(id) // 2  # grab an even number of digits
                 prefix = bin(id[:l * 2])
                 nl = [e[7] for e in self.index if e[7].startswith(prefix)]
-                nl = [n for n in nl if hex(n).startswith(id)]
+                nl = [n for n in nl if hex(n).startswith(id) and
+                      self.hasnode(n)]
                 if len(nl) > 0:
                     if len(nl) == 1:
                         self._pcache[id] = nl[0]
--- a/mercurial/scmutil.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/scmutil.py	Thu Aug 01 22:52:05 2013 -0500
@@ -556,7 +556,7 @@
     return _rcpath
 
 def revsingle(repo, revspec, default='.'):
-    if not revspec:
+    if not revspec and revspec != 0:
         return repo[default]
 
     l = revrange(repo, [revspec])
--- a/mercurial/sslutil.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/sslutil.py	Thu Aug 01 22:52:05 2013 -0500
@@ -17,7 +17,8 @@
     def ssl_wrap_socket(sock, keyfile, certfile,
                 cert_reqs=ssl.CERT_NONE, ca_certs=None):
         sslsocket = ssl.wrap_socket(sock, keyfile, certfile,
-                cert_reqs=cert_reqs, ca_certs=ca_certs)
+                cert_reqs=cert_reqs, ca_certs=ca_certs,
+                ssl_version=ssl.PROTOCOL_SSLv3)
         # check if wrap_socket failed silently because socket had been closed
         # - see http://bugs.python.org/issue13721
         if not sslsocket.cipher():
--- a/mercurial/templatefilters.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/templatefilters.py	Thu Aug 01 22:52:05 2013 -0500
@@ -325,8 +325,8 @@
         return dir
 
 def tabindent(text):
-    """:tabindent: Any text. Returns the text, with every line except the
-    first starting with a tab character.
+    """:tabindent: Any text. Returns the text, with every non-empty line
+    except the first starting with a tab character.
     """
     return indent(text, '\t')
 
--- a/mercurial/templates/static/style-paper.css	Fri Jul 12 11:14:42 2013 +0900
+++ b/mercurial/templates/static/style-paper.css	Thu Aug 01 22:52:05 2013 -0500
@@ -250,6 +250,7 @@
   color: #999;
   text-align: right;
   content: counters(lineno, ".");
+  float: left;
 }
 
 .sourcelines > span:target, tr:target td {
--- a/tests/test-ancestor.py	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-ancestor.py	Thu Aug 01 22:52:05 2013 -0500
@@ -1,4 +1,4 @@
-from mercurial import ancestor
+from mercurial import ancestor, commands, hg, ui, util
 
 # graph is a dict of child->parent adjacency lists for this graph:
 # o  13
@@ -101,6 +101,36 @@
     s = genlazyancestors([11, 13], stoprev=6, inclusive=True)
     printlazyancestors(s, [11, 13, 7, 9, 8, 3, 6, 4, 1, -1, 0])
 
+
+# The C gca algorithm requires a real repo. These are textual descriptions of
+# dags that have been known to be problematic.
+dagtests = [
+    '+2*2*2/*3/2',
+    '+3*3/*2*2/*4*4/*4/2*4/2*2',
+]
+def test_gca():
+    u = ui.ui()
+    for i, dag in enumerate(dagtests):
+        repo = hg.repository(u, 'gca%d' % i, create=1)
+        cl = repo.changelog
+        if not util.safehasattr(cl.index, 'ancestors'):
+            # C version not available
+            return
+
+        commands.debugbuilddag(u, repo, dag)
+        # Compare the results of the Python and C versions. This does not
+        # include choosing a winner when more than one gca exists -- we make
+        # sure both return exactly the same set of gcas.
+        for a in cl:
+            for b in cl:
+                cgcas = sorted(cl.index.ancestors(a, b))
+                pygcas = sorted(ancestor.ancestors(cl.parentrevs, a, b))
+                if cgcas != pygcas:
+                    print "test_gca: for dag %s, gcas for %d, %d:" % (dag, a, b)
+                    print "  C returned:      %s" % cgcas
+                    print "  Python returned: %s" % pygcas
+
 if __name__ == '__main__':
     test_missingancestors()
     test_lazyancestors()
+    test_gca()
--- a/tests/test-bookmarks-pushpull.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-bookmarks-pushpull.t	Thu Aug 01 22:52:05 2013 -0500
@@ -422,7 +422,6 @@
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
-  updating bookmark @ failed!
   exporting bookmark add-foo
 
   $ cd ..
--- a/tests/test-bookmarks.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-bookmarks.t	Thu Aug 01 22:52:05 2013 -0500
@@ -507,19 +507,37 @@
    * Z                         3:125c9a1d6df6
      x  y                      2:db815d6d32e6
 
+pull --update works the same as pull && update
+
+  $ hg bookmark -r3 Y
+  moving bookmark 'Y' forward from db815d6d32e6
+  $ hg -R cloned-bookmarks-update update Y
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg -R cloned-bookmarks-update pull --update .
+  pulling from .
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 2 changes to 2 files (+1 heads)
+  updating bookmark Y
+  updating bookmark Z
+  updating to active bookmark Y
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
 test wrongly formated bookmark
 
   $ echo '' >> .hg/bookmarks
   $ hg bookmarks
      X2                        1:925d80f479bb
-     Y                         2:db815d6d32e6
+     Y                         3:125c9a1d6df6
    * Z                         3:125c9a1d6df6
      x  y                      2:db815d6d32e6
   $ echo "Ican'thasformatedlines" >> .hg/bookmarks
   $ hg bookmarks
   malformed line in .hg/bookmarks: "Ican'thasformatedlines"
      X2                        1:925d80f479bb
-     Y                         2:db815d6d32e6
+     Y                         3:125c9a1d6df6
    * Z                         3:125c9a1d6df6
      x  y                      2:db815d6d32e6
 
--- a/tests/test-check-code-hg.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-check-code-hg.t	Thu Aug 01 22:52:05 2013 -0500
@@ -26,6 +26,5 @@
 
 New errors are not allowed. Warnings are strongly discouraged.
 
-  $ { hg manifest 2>/dev/null; ls "$TESTTMP"/*.py; } \
-  >   | xargs "$check_code" --warnings --per-file=0 \
-  >   || false
+  $ { hg manifest 2>/dev/null; ls "$TESTTMP"/*.py | sed 's-\\-/-g'; } |
+  >   xargs "$check_code" --warnings --per-file=0 || false
--- a/tests/test-check-code.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-check-code.t	Thu Aug 01 22:52:05 2013 -0500
@@ -22,6 +22,13 @@
   > if any():
   >     x = all()
   >     y = format(x)
+  >     # next(generator) is new in 2.6
+  >     z = next(x)
+  >     # but generator.next() is okay
+  >     x.next()
+  >     # and we can make our own next
+  >     def next(stuff):
+  >         pass
   > 
   > # Do not complain about our own definition
   > def any(x):
@@ -94,13 +101,16 @@
   ./non-py24.py:4:
    >     y = format(x)
    any/all/format not available in Python 2.4
-  ./non-py24.py:11:
+  ./non-py24.py:6:
+   >     z = next(x)
+   no next(foo) in Python 2.4 and 2.5, use foo.next() instead
+  ./non-py24.py:18:
    >     try:
    no try/except/finally in Python 2.4
-  ./non-py24.py:28:
+  ./non-py24.py:35:
    >     try:
    no yield inside try/finally in Python 2.4
-  ./non-py24.py:33:
+  ./non-py24.py:40:
    >     try:
    no yield inside try/finally in Python 2.4
   ./classstyle.py:4:
@@ -187,8 +197,10 @@
   > # this next line is okay
   > raise SomeException(arg1, arg2)
   > EOF
-  $ "$check_code" raise-format.py
+  $ "$check_code" not-existing.py raise-format.py
+  Skipping*not-existing.py* (glob)
   raise-format.py:1:
    > raise SomeException, message
    don't use old-style two-argument raise, use Exception(message)
   [1]
+
--- a/tests/test-fileset.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-fileset.t	Thu Aug 01 22:52:05 2013 -0500
@@ -42,6 +42,7 @@
   b2
   $ fileset 'a* - a1'
   a2
+  $ fileset 'a_b'
 
 Test files status
 
--- a/tests/test-globalopts.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-globalopts.t	Thu Aug 01 22:52:05 2013 -0500
@@ -303,7 +303,7 @@
    forget        forget the specified files on the next commit
    graft         copy changes from other branches onto the current branch
    grep          search for a pattern in specified files and revisions
-   heads         show current repository heads or show branch heads
+   heads         show branch heads
    help          show help for a given topic or a help overview
    identify      identify the working copy or specified revision
    import        import an ordered set of patches
@@ -385,7 +385,7 @@
    forget        forget the specified files on the next commit
    graft         copy changes from other branches onto the current branch
    grep          search for a pattern in specified files and revisions
-   heads         show current repository heads or show branch heads
+   heads         show branch heads
    help          show help for a given topic or a help overview
    identify      identify the working copy or specified revision
    import        import an ordered set of patches
--- a/tests/test-graft.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-graft.t	Thu Aug 01 22:52:05 2013 -0500
@@ -177,8 +177,8 @@
 Commit while interrupted should fail:
 
   $ hg ci -m 'commit interrupted graft'
-  abort: cannot commit an interrupted graft operation
-  (use "hg graft -c" to continue graft)
+  abort: graft in progress
+  (use 'hg graft --continue' or 'hg update' to abort)
   [255]
 
 Abort the graft and try committing:
--- a/tests/test-help.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-help.t	Thu Aug 01 22:52:05 2013 -0500
@@ -68,7 +68,7 @@
    forget        forget the specified files on the next commit
    graft         copy changes from other branches onto the current branch
    grep          search for a pattern in specified files and revisions
-   heads         show current repository heads or show branch heads
+   heads         show branch heads
    help          show help for a given topic or a help overview
    identify      identify the working copy or specified revision
    import        import an ordered set of patches
@@ -144,7 +144,7 @@
    forget        forget the specified files on the next commit
    graft         copy changes from other branches onto the current branch
    grep          search for a pattern in specified files and revisions
-   heads         show current repository heads or show branch heads
+   heads         show branch heads
    help          show help for a given topic or a help overview
    identify      identify the working copy or specified revision
    import        import an ordered set of patches
@@ -629,7 +629,7 @@
    forget        forget the specified files on the next commit
    graft         copy changes from other branches onto the current branch
    grep          search for a pattern in specified files and revisions
-   heads         show current repository heads or show branch heads
+   heads         show branch heads
    help          show help for a given topic or a help overview
    identify      identify the working copy or specified revision
    import        import an ordered set of patches
@@ -1276,7 +1276,7 @@
   heads
   </a>
   </td><td>
-  show current repository heads or show branch heads
+  show branch heads
   </td></tr>
   <tr><td>
   <a href="/help/help">
--- a/tests/test-hgweb-commands.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-hgweb-commands.t	Thu Aug 01 22:52:05 2013 -0500
@@ -1324,14 +1324,11 @@
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT \
   >   'graph/e06180cbfb0?style=raw&revcount=3' | grep changeset
-  changeset:   ab4f1438558b
   changeset:   e06180cbfb0c
   changeset:   b4e73ffab476
 
   $ "$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT \
   >   'graph/b4e73ffab47?style=raw&revcount=3' | grep changeset
-  changeset:   ab4f1438558b
-  changeset:   e06180cbfb0c
   changeset:   b4e73ffab476
 
   $ cat errors.log
--- a/tests/test-histedit-edit.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-histedit-edit.t	Thu Aug 01 22:52:05 2013 -0500
@@ -69,13 +69,9 @@
   $ hg id -n
   3+
   $ hg up 0
-  0 files updated, 0 files merged, 3 files removed, 0 files unresolved
-  $ HGEDITOR='echo foobaz > ' hg histedit --continue
-  abort: 055a42cdd887 is not an ancestor of working directory
-  (update to 055a42cdd887 or descendant and run "hg histedit --continue" again)
+  abort: histedit in progress
+  (use 'hg histedit --continue' or 'hg histedit --abort')
   [255]
-  $ hg up 3
-  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
 commit, then edit the revision
   $ hg ci -m 'wat'
--- a/tests/test-histedit-no-change.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-histedit-no-change.t	Thu Aug 01 22:52:05 2013 -0500
@@ -169,13 +169,34 @@
   o  0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a"
   
 
-abort editing session
+abort editing session, after first forcibly updating away
+  $ hg up 0
+  abort: histedit in progress
+  (use 'hg histedit --continue' or 'hg histedit --abort')
+  [255]
+  $ mv .hg/histedit-state .hg/histedit-state-ignore
+  $ hg up 0
+  0 files updated, 0 files merged, 3 files removed, 0 files unresolved
+  $ mv .hg/histedit-state-ignore .hg/histedit-state
+  $ hg sum
+  parent: 0:cb9a9f314b8b 
+   a
+  branch: default
+  commit: 1 modified, 1 unknown (new branch head)
+  update: 6 new changesets (update)
+  hist:   2 remaining (histedit --continue)
+
   $ hg histedit --abort 2>&1 | fixbundle
-  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  [1]
+
+modified files should survive the abort when we've moved away already
+  $ hg st
+  M e
+  ? edit.sh
 
   $ graphlog "log after abort"
   % log after abort
-  @  5 652413bf663ef2a641cab26574e46d5f5a64a55a "f"
+  o  5 652413bf663ef2a641cab26574e46d5f5a64a55a "f"
   |
   o  4 e860deea161a2f77de56603b340ebbb4536308ae "e"
   |
@@ -185,7 +206,7 @@
   |
   o  1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b"
   |
-  o  0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a"
+  @  0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a"
   
 
   $ cd ..
--- a/tests/test-histedit-obsolete.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-histedit-obsolete.t	Thu Aug 01 22:52:05 2013 -0500
@@ -441,4 +441,19 @@
   |
   o  0:cb9a9f314b8b (public) a
   
+  $ hg co 18
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo wat >> wat
+  $ hg add wat
+  $ hg ci -m 'add wat'
+  created new head
+  $ hg merge 19
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg ci -m 'merge'
+  $ echo not wat > wat
+  $ hg ci -m 'modify wat'
+  $ hg histedit 17
+  abort: cannot edit history that contains merges
+  [255]
   $ cd ..
--- a/tests/test-import.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-import.t	Thu Aug 01 22:52:05 2013 -0500
@@ -345,7 +345,6 @@
   email patch
   
   next line
-  ---
   $ rm -r b
 
 
--- a/tests/test-issue660.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-issue660.t	Thu Aug 01 22:52:05 2013 -0500
@@ -73,6 +73,15 @@
 
   $ hg st
 
+Issue3423:
+
+  $ hg forget a
+  $ echo zed > a
+  $ hg revert a
+  $ hg st
+  ? a.orig
+  $ rm a.orig
+
 addremove:
 
   $ rm -r a b
--- a/tests/test-largefiles.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-largefiles.t	Thu Aug 01 22:52:05 2013 -0500
@@ -738,6 +738,8 @@
   large6
   $ cat sub2/large7
   large7
+  $ hg log -qf sub2/large7
+  7:daea875e9014
   $ cd ..
   $ hg clone a -r 3 c
   adding changesets
--- a/tests/test-log.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-log.t	Thu Aug 01 22:52:05 2013 -0500
@@ -1223,6 +1223,9 @@
   $ hg log --template='{rev}:{node}\n' --hidden
   1:a765632148dc55d38c35c4f247c618701886cb2f
   0:9f758d63dcde62d547ebfb08e1e7ee96535f2b05
+  $ hg log -r a
+  abort: unknown revision 'a'!
+  [255]
 
 test that parent prevent a changeset to be hidden
 
--- a/tests/test-merge1.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-merge1.t	Thu Aug 01 22:52:05 2013 -0500
@@ -23,6 +23,37 @@
 
   $ hg update 0
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+
+Test interrupted updates by exploiting our non-handling of directory collisions
+
+  $ mkdir b
+  $ hg up
+  abort: *: '$TESTTMP/t/b' (glob)
+  [255]
+  $ hg ci
+  abort: last update was interrupted
+  (use 'hg update' to get a consistent checkout)
+  [255]
+  $ hg sum
+  parent: 0:538afb845929 
+   commit #0
+  branch: default
+  commit: (interrupted update)
+  update: 1 new changesets (update)
+  $ rmdir b
+  $ hg up
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg sum
+  parent: 1:b8bb4a988f25 tip
+   commit #1
+  branch: default
+  commit: (clean)
+  update: (current)
+
+Prepare a basic merge
+
+  $ hg up 0
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ echo This is file c1 > c
   $ hg add c
   $ hg commit -m "commit #2"
--- a/tests/test-rebase-interruptions.t	Fri Jul 12 11:14:42 2013 +0900
+++ b/tests/test-rebase-interruptions.t	Thu Aug 01 22:52:05 2013 -0500
@@ -66,11 +66,11 @@
 
 Force a commit on C during the interruption:
 
-  $ hg up -q -C 2
+  $ hg up -q -C 2 --config 'extensions.rebase=!'
 
   $ echo 'Extra' > Extra
   $ hg add Extra
-  $ hg ci -m 'Extra'
+  $ hg ci -m 'Extra' --config 'extensions.rebase=!'
 
 Force this commit onto secret phase
 
@@ -156,11 +156,11 @@
 
 Force a commit on B' during the interruption:
 
-  $ hg up -q -C 5
+  $ hg up -q -C 5 --config 'extensions.rebase=!'
 
   $ echo 'Extra' > Extra
   $ hg add Extra
-  $ hg ci -m 'Extra'
+  $ hg ci -m 'Extra' --config 'extensions.rebase=!'
 
   $ hg tglog
   @  6: 'Extra'
@@ -180,8 +180,8 @@
 Abort the rebasing:
 
   $ hg rebase --abort
-  warning: new changesets detected on target branch, can't abort
-  [255]
+  warning: new changesets detected on target branch, can't strip
+  rebase aborted
 
   $ hg tglog
   @  6: 'Extra'
@@ -227,7 +227,7 @@
 
 Change phase on B and B'
 
-  $ hg up -q -C 5
+  $ hg up -q -C 5 --config 'extensions.rebase=!'
   $ hg phase --public 1
   $ hg phase --public 5
   $ hg phase --secret -f 2
@@ -248,9 +248,8 @@
 Abort the rebasing:
 
   $ hg rebase --abort
-  abort: can't abort rebase due to immutable changesets 45396c49d53b
-  (see hg help phases for details)
-  [255]
+  warning: can't clean up immutable changesets 45396c49d53b
+  rebase aborted
 
   $ hg tglogp
   @  5:public 'B'