changeset 16056:66f1647f65d1

merge with stable
author Matt Mackall <mpm@selenic.com>
date Wed, 01 Feb 2012 16:28:35 -0600
parents d66af10b648c (current diff) 0620421044a2 (diff)
children db4b0532dbf2
files
diffstat 72 files changed, 5329 insertions(+), 1402 deletions(-) [+]
line wrap: on
line diff
--- a/.hgsigs	Sat Jan 21 15:17:39 2012 +0200
+++ b/.hgsigs	Wed Feb 01 16:28:35 2012 -0600
@@ -47,3 +47,5 @@
 41453d55b481ddfcc1dacb445179649e24ca861d 0 iD8DBQBOsFhpywK+sNU5EO8RAqM6AKCyfxUae3/zLuiLdQz+JR78690eMACfQ6JTBQib4AbE+rUDdkeFYg9K/+4=
 195dbd1cef0c2f9f8bcf4ea303238105f716bda3 0 iD8DBQBO1/fWywK+sNU5EO8RAmoPAKCR5lpv1D6JLURHD8KVLSV4GRVEBgCgnd0Sy78ligNfqAMafmACRDvj7vo=
 6344043924497cd06d781d9014c66802285072e4 0 iD8DBQBPALgmywK+sNU5EO8RAlfhAJ9nYOdWnhfVDHYtDTJAyJtXBAQS9wCgnefoSQt7QABkbGxM+Q85UYEBuD0=
+db33555eafeaf9df1e18950e29439eaa706d399b 0 iD8DBQBPGdzxywK+sNU5EO8RAppkAJ9jOXhUVE/97CPgiMA0pMGiIYnesQCfengAszcBiSiKGugiI8Okc9ghU+Y=
+2aa5b51f310fb3befd26bed99c02267f5c12c734 0 iD8DBQBPKZ9bywK+sNU5EO8RAt1TAJ45r1eJ0YqSkInzrrayg4TVCh0SnQCgm0GA/Ua74jnnDwVQ60lAwROuz1Q=
--- a/.hgtags	Sat Jan 21 15:17:39 2012 +0200
+++ b/.hgtags	Wed Feb 01 16:28:35 2012 -0600
@@ -59,3 +59,5 @@
 41453d55b481ddfcc1dacb445179649e24ca861d 2.0
 195dbd1cef0c2f9f8bcf4ea303238105f716bda3 2.0.1
 6344043924497cd06d781d9014c66802285072e4 2.0.2
+db33555eafeaf9df1e18950e29439eaa706d399b 2.1-rc
+2aa5b51f310fb3befd26bed99c02267f5c12c734 2.1
--- a/contrib/bash_completion	Sat Jan 21 15:17:39 2012 +0200
+++ b/contrib/bash_completion	Wed Feb 01 16:28:35 2012 -0600
@@ -84,6 +84,7 @@
 {
     local files="$(_hg_cmd status -n$1 .)"
     local IFS=$'\n'
+    compopt -o filenames 2>/dev/null
     COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur"))
 }
 
--- a/contrib/check-code.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/contrib/check-code.py	Wed Feb 01 16:28:35 2012 -0600
@@ -71,6 +71,7 @@
     (r'[^>\n]>\s*\$HGRCPATH', "don't overwrite $HGRCPATH, append to it"),
     (r'^stop\(\)', "don't use 'stop' as a shell function name"),
     (r'(\[|\btest\b).*-e ', "don't use 'test -e', use 'test -f'"),
+    (r'^alias\b.*=', "don't use alias, use a function"),
   ],
   # warnings
   []
--- a/hgext/convert/subversion.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/hgext/convert/subversion.py	Wed Feb 01 16:28:35 2012 -0600
@@ -439,6 +439,8 @@
             if revnum < stop:
                 stop = revnum + 1
             self._fetch_revisions(revnum, stop)
+            if rev not in self.commits:
+                raise util.Abort(_('svn: revision %s not found') % revnum)
         commit = self.commits[rev]
         # caller caches the result, so free it here to release memory
         del self.commits[rev]
--- a/hgext/largefiles/basestore.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/hgext/largefiles/basestore.py	Wed Feb 01 16:28:35 2012 -0600
@@ -166,8 +166,11 @@
     ui = repo.ui
 
     if not remote:
-        path = (getattr(repo, 'lfpullsource', None) or
-                ui.expandpath('default-push', 'default'))
+        lfpullsource = getattr(repo, 'lfpullsource', None)
+        if lfpullsource:
+            path = ui.expandpath(lfpullsource)
+        else:
+            path = ui.expandpath('default-push', 'default')
 
         # ui.expandpath() leaves 'default-push' and 'default' alone if
         # they cannot be expanded: fallback to the empty string,
--- a/hgext/largefiles/overrides.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/hgext/largefiles/overrides.py	Wed Feb 01 16:28:35 2012 -0600
@@ -179,6 +179,11 @@
 # matcher which matches only the normal files and runs the original
 # version of add.
 def override_add(orig, ui, repo, *pats, **opts):
+    normal = opts.pop('normal')
+    if normal:
+        if opts.get('large'):
+            raise util.Abort(_('--normal cannot be used with --large'))
+        return orig(ui, repo, *pats, **opts)
     bad = add_largefiles(ui, repo, *pats, **opts)
     installnormalfilesmatchfn(repo[None].manifest())
     result = orig(ui, repo, *pats, **opts)
@@ -530,6 +535,8 @@
             lfutil.lfdirstate_status(lfdirstate, repo, repo['.'].rev())
         for lfile in modified:
             lfutil.updatestandin(repo, lfutil.standin(lfile))
+        for lfile in missing:
+            os.unlink(repo.wjoin(lfutil.standin(lfile)))
 
         try:
             ctx = repo[opts.get('rev')]
@@ -895,9 +902,10 @@
     # to have handled by original addremove.  Monkey patching here makes sure
     # we don't remove the standin in the largefiles code, preventing a very
     # confused state later.
-    repo._isaddremove = True
-    remove_largefiles(ui, repo, *missing, **opts)
-    repo._isaddremove = False
+    if missing:
+        repo._isaddremove = True
+        remove_largefiles(ui, repo, *missing, **opts)
+        repo._isaddremove = False
     # Call into the normal add code, and any files that *should* be added as
     # largefiles will be
     add_largefiles(ui, repo, *pats, **opts)
@@ -946,6 +954,11 @@
     return result
 
 def override_transplant(orig, ui, repo, *revs, **opts):
-    result = orig(ui, repo, *revs, **opts)
-    lfcommands.updatelfiles(repo.ui, repo)
+    try:
+        repo._istransplanting = True
+        result = orig(ui, repo, *revs, **opts)
+        lfcommands.updatelfiles(ui, repo, filelist=None,
+                                printmessage=False)
+    finally:
+        repo._istransplanting = False
     return result
--- a/hgext/largefiles/reposetup.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/hgext/largefiles/reposetup.py	Wed Feb 01 16:28:35 2012 -0600
@@ -268,15 +268,17 @@
 
             wlock = repo.wlock()
             try:
-                # Case 0: Rebase
+                # Case 0: Rebase or Transplant
                 # We have to take the time to pull down the new largefiles now.
-                # Otherwise if we are rebasing, any largefiles that were
-                # modified in the destination changesets get overwritten, either
-                # by the rebase or in the first commit after the rebase.
+                # Otherwise, any largefiles that were modified in the
+                # destination changesets get overwritten, either by the rebase
+                # or in the first commit after the rebase or transplant.
                 # updatelfiles will update the dirstate to mark any pulled
                 # largefiles as modified
-                if getattr(repo, "_isrebasing", False):
-                    lfcommands.updatelfiles(repo.ui, repo)
+                if getattr(repo, "_isrebasing", False) or \
+                        getattr(repo, "_istransplanting", False):
+                    lfcommands.updatelfiles(repo.ui, repo, filelist=None,
+                                            printmessage=False)
                     result = orig(text=text, user=user, date=date, match=match,
                                     force=force, editor=editor, extra=extra)
                     return result
--- a/hgext/largefiles/uisetup.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/hgext/largefiles/uisetup.py	Wed Feb 01 16:28:35 2012 -0600
@@ -23,6 +23,7 @@
     entry = extensions.wrapcommand(commands.table, 'add',
                                    overrides.override_add)
     addopt = [('', 'large', None, _('add as largefile')),
+              ('', 'normal', None, _('add as normal file')),
               ('', 'lfsize', '', _('add all files above this size '
                                    '(in megabytes) as largefiles '
                                    '(default: 10)'))]
--- a/hgext/mq.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/hgext/mq.py	Wed Feb 01 16:28:35 2012 -0600
@@ -38,6 +38,12 @@
 'no', mq will override the [diff] section and always generate git or
 regular patches, possibly losing data in the second case.
 
+It may be desirable for mq changesets to be kept in the secret phase (see
+:hg:`help phases`), which can be enabled with the following setting::
+
+  [mq]
+  secret = True
+
 You will by default be managing a patch queue named "patches". You can
 create other, independent patch queues with the :hg:`qqueue` command.
 '''
@@ -256,6 +262,9 @@
 
     It should be used instead of repo.commit inside the mq source
     """
+    if not repo.ui.configbool('mq', 'secret', False):
+        return repo.commit(*args, **kwargs)
+
     backup = repo.ui.backupconfig('phases', 'new-commit')
     try:
         # ensure we create a secret changeset
@@ -736,8 +745,11 @@
                 repo.dirstate.setparents(p1, merge)
 
             match = scmutil.matchfiles(repo, files or [])
+            oldtip = repo['tip']
             n = secretcommit(repo, message, ph.user, ph.date, match=match,
                              force=True)
+            if repo['tip'] == oldtip:
+                raise util.Abort(_("qpush exactly duplicates child changeset"))
             if n is None:
                 raise util.Abort(_("repository commit failed"))
 
@@ -817,9 +829,13 @@
         return patches
 
     def finish(self, repo, revs):
+        # Manually trigger phase computation to ensure phasedefaults is
+        # executed before we remove the patches.
+        repo._phaserev
         patches = self._revpatches(repo, sorted(revs))
         qfinished = self._cleanup(patches, len(patches))
-        if qfinished:
+        if qfinished and repo.ui.configbool('mq', 'secret', False):
+            # only use this logic when the secret option is added
             oldqbase = repo[qfinished[0]]
             if oldqbase.p1().phase() < phases.secret:
                 phases.advanceboundary(repo, phases.draft, qfinished)
@@ -1297,6 +1313,10 @@
             if heads != [self.applied[-1].node]:
                 raise util.Abort(_("popping would remove a revision not "
                                    "managed by this patch queue"))
+            if not repo[self.applied[-1].node].mutable():
+                raise util.Abort(
+                    _("popping would remove an immutable revision"),
+                    hint=_('see "hg help phases" for details'))
 
             # we know there are no local changes, so we can make a simplified
             # form of hg.update.
@@ -1358,6 +1378,9 @@
             (top, patchfn) = (self.applied[-1].node, self.applied[-1].name)
             if repo.changelog.heads(top) != [top]:
                 raise util.Abort(_("cannot refresh a revision with children"))
+            if not repo[top].mutable():
+                raise util.Abort(_("cannot refresh immutable revision"),
+                                 hint=_('see "hg help phases" for details'))
 
             inclsubs = self.checksubstate(repo)
 
@@ -1502,6 +1525,8 @@
 
                 user = ph.user or changes[1]
 
+                oldphase = repo[top].phase()
+
                 # assumes strip can roll itself back if interrupted
                 repo.dirstate.setparents(*cparents)
                 self.applied.pop()
@@ -1514,8 +1539,15 @@
 
             try:
                 # might be nice to attempt to roll back strip after this
-                n = secretcommit(repo, message, user, ph.date, match=match,
-                                 force=True)
+                backup = repo.ui.backupconfig('phases', 'new-commit')
+                try:
+                    # Ensure we create a new changeset in the same phase than
+                    # the old one.
+                    repo.ui.setconfig('phases', 'new-commit', oldphase)
+                    n = repo.commit(message, user, ph.date, match=match,
+                                    force=True)
+                finally:
+                    repo.ui.restoreconfig(backup)
                 # only write patch after a successful commit
                 patchf.close()
                 self.applied.append(statusentry(n, patchfn))
@@ -1814,6 +1846,9 @@
 
                 self.added.append(patchname)
                 patchname = None
+            if rev and repo.ui.configbool('mq', 'secret', False):
+                # if we added anything with --rev, we must move the secret root
+                phases.retractboundary(repo, phases.secret, [n])
             self.parseseries()
             self.applieddirty = True
             self.seriesdirty = True
@@ -1988,16 +2023,21 @@
 
     Returns 0 if import succeeded.
     """
-    q = repo.mq
+    lock = repo.lock() # cause this may move phase
     try:
-        q.qimport(repo, filename, patchname=opts.get('name'),
-              existing=opts.get('existing'), force=opts.get('force'),
-              rev=opts.get('rev'), git=opts.get('git'))
+        q = repo.mq
+        try:
+            q.qimport(repo, filename, patchname=opts.get('name'),
+                  existing=opts.get('existing'), force=opts.get('force'),
+                  rev=opts.get('rev'), git=opts.get('git'))
+        finally:
+            q.savedirty()
+
+
+        if opts.get('push') and not opts.get('rev'):
+            return q.push(repo, None)
     finally:
-        q.savedirty()
-
-    if opts.get('push') and not opts.get('rev'):
-        return q.push(repo, None)
+        lock.release()
     return 0
 
 def qinit(ui, repo, create):
@@ -3133,8 +3173,12 @@
 def mqphasedefaults(repo, roots):
     """callback used to set mq changeset as secret when no phase data exists"""
     if repo.mq.applied:
-        qbase = repo[repo.mq.applied[0]]
-        roots[phases.secret].add(qbase.node())
+        if repo.ui.configbool('mq', 'secret', False):
+            mqphase = phases.secret
+        else:
+            mqphase = phases.draft
+        qbase = repo[repo.mq.applied[0].node]
+        roots[mqphase].add(qbase.node())
     return roots
 
 def reposetup(ui, repo):
@@ -3161,15 +3205,22 @@
 
         def checkpush(self, force, revs):
             if self.mq.applied and not force:
-                haspatches = True
+                outapplied = [e.node for e in self.mq.applied]
                 if revs:
-                    # Assume applied patches have no non-patch descendants
-                    # and are not on remote already. If they appear in the
-                    # set of resolved 'revs', bail out.
-                    applied = set(e.node for e in self.mq.applied)
-                    haspatches = bool([n for n in revs if n in applied])
-                if haspatches:
-                    raise util.Abort(_('source has mq patches applied'))
+                    # Assume applied patches have no non-patch descendants and
+                    # are not on remote already. Filtering any changeset not
+                    # pushed.
+                    heads = set(revs)
+                    for node in reversed(outapplied):
+                        if node in heads:
+                            break
+                        else:
+                            outapplied.pop()
+                # looking for pushed and shared changeset
+                for node in outapplied:
+                    if repo[node].phase() < phases.secret:
+                        raise util.Abort(_('source has mq patches applied'))
+                # no non-secret patches pushed
             super(mqrepo, self).checkpush(force, revs)
 
         def _findtags(self):
--- a/hgext/rebase.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/hgext/rebase.py	Wed Feb 01 16:28:35 2012 -0600
@@ -210,7 +210,7 @@
                       " unrebased descendants"),
                     hint=_('use --keep to keep original changesets'))
             elif not keepf and not repo[root].mutable():
-                raise util.Abort(_("Can't rebase immutable changeset %s")
+                raise util.Abort(_("can't rebase immutable changeset %s")
                                  % repo[root],
                                  hint=_('see hg help phases for details'))
             else:
--- a/i18n/ja.po	Sat Jan 21 15:17:39 2012 +0200
+++ b/i18n/ja.po	Wed Feb 01 16:28:35 2012 -0600
@@ -1,7 +1,7 @@
 # Japanese translation for Mercurial
 # Mercurial 日本語翻訳
 #
-# Copyright (C) 2009-2011 the Mercurial team
+# Copyright (C) 2009-2012 the Mercurial team
 #
 # ========================================
 # 【翻訳用語集】
@@ -72,6 +72,7 @@
 # lock                  ロック
 # manifest              マニフェスト or 管理対象(一覧)
 # merge                 マージ
+# must(A must B)        A は B してください
 # node                  リビジョン
 # note                  備考
 # patch                 パッチ
@@ -97,6 +98,7 @@
 # support(, un)         (未)サポート
 # tag                   タグ
 # tracked xxxx          構成管理対象の xxxx
+# tracked, un           未登録
 # type, xxxxx           xxxx 種別
 # unknown xxxx          未知の xxxx
 # user                  ユーザ
@@ -108,7 +110,7 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2011-12-31 13:47+0900\n"
+"POT-Creation-Date: 2012-01-31 19:08+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"
@@ -1977,6 +1979,10 @@
 msgid "Mercurial failed to run itself, check hg executable is in PATH"
 msgstr "Mercurial 自身の実行に失敗。 PATH 設定と hg コマンドを確認してください"
 
+#, python-format
+msgid "log stream exception '%s'"
+msgstr ""
+
 msgid ""
 "svn: cannot probe remote repository, assume it could be a subversion "
 "repository. Use --source-type if you know better.\n"
@@ -2034,6 +2040,10 @@
 msgstr "svn: 開始リビジョン %d 以降にリビジョンはありません"
 
 #, python-format
+msgid "svn: revision %s not found"
+msgstr "svn: リビジョン %s が見つかりません"
+
+#, python-format
 msgid "%s not found up to revision %d"
 msgstr "リビジョン %s は %d までのリビジョンに見当たりません"
 
@@ -2414,7 +2424,7 @@
 msgstr "マージが未コミットです"
 
 msgid "outstanding uncommitted changes"
-msgstr "未コミットの変更があります"
+msgstr "変更が未コミットです"
 
 msgid "working directory is missing some files"
 msgstr "作業領域に存在しないファイルがあります"
@@ -3269,7 +3279,7 @@
 "    kwexpand refuses to run if given files contain local changes.\n"
 "    "
 msgstr ""
-"    指定されたファイルに未コミット変更がある場合、 実行は中断されます。\n"
+"    指定されたファイルの変更が未コミットの場合、 実行は中断されます。\n"
 "    "
 
 msgid "show keyword status flags of all files"
@@ -3343,7 +3353,7 @@
 "    kwshrink refuses to run if given files contain local changes.\n"
 "    "
 msgstr ""
-"    指定されたファイルに未コミット変更がある場合、 実行は中断されます。\n"
+"    指定されたファイルの変更が未コミットの場合、 実行は中断されます。\n"
 "    "
 
 msgid "track large binary files"
@@ -3529,6 +3539,18 @@
 msgid "largefile %s becomes symlink"
 msgstr ""
 
+#, python-format
+msgid "skipping incorrectly formatted tag %s\n"
+msgstr "不正な形式のタグ %s を無視\n"
+
+#, python-format
+msgid "skipping incorrectly formatted id %s\n"
+msgstr "不正な形式の識別子 %s を無視\n"
+
+#, python-format
+msgid "no mapping for id %s\n"
+msgstr "識別子 %s は未知の値です\n"
+
 msgid "uploading largefiles"
 msgstr ""
 
@@ -3571,10 +3593,6 @@
 msgid "Found %s in system cache\n"
 msgstr ""
 
-#, python-format
-msgid "bad hash in '%s' (only %d bytes long)"
-msgstr ""
-
 msgid "Can't get file locally"
 msgstr ""
 
@@ -3604,8 +3622,8 @@
 msgstr "ファイル名指定がありません"
 
 #, python-format
-msgid "not removing %s: %s (use -f to force removal)\n"
-msgstr "%s は削除されません: %s (削除の強行は -f を指定)\n"
+msgid "not removing %s: %s (use forget to undo)\n"
+msgstr "%s は削除されません: %s (取り消し機能は forget)\n"
 
 msgid "file still exists"
 msgstr "ファイルは維持されます"
@@ -3620,8 +3638,11 @@
 msgid "removing %s\n"
 msgstr "%s を登録除外中\n"
 
+msgid "--normal cannot be used with --large"
+msgstr "--normal と --large は併用できません"
+
 msgid "uncommitted local changes"
-msgstr "作業領域に未コミットの変更があります"
+msgstr "作業領域の変更が未コミットです"
 
 msgid "&Largefile"
 msgstr ""
@@ -3669,6 +3690,13 @@
 msgid "no files to copy"
 msgstr "コピーするファイルがありません"
 
+msgid "caching new largefiles\n"
+msgstr "更新された大容量ファイルのキャッシュ中\n"
+
+#, python-format
+msgid "%d largefiles cached\n"
+msgstr "大容量ファイル %d 個をキャッシュ\n"
+
 #, python-format
 msgid "unknown archive type '%s'"
 msgstr "未知のアーカイブ種別 '%s'"
@@ -3677,8 +3705,12 @@
 msgstr "アーカイブにファイルを追加するときは接頭辞を指定できません"
 
 #, python-format
+msgid "largefile %s not found in repo store or system cache"
+msgstr ""
+
+#, python-format
 msgid "not removing %s: file is already untracked\n"
-msgstr "%s は削除されません: 既に構成管理対象ではありません\n"
+msgstr "%s は削除されません: ファイルは既に未登録です\n"
 
 msgid "largefiles: No remote repo\n"
 msgstr ""
@@ -3690,17 +3722,24 @@
 msgid "largefiles: %d to upload\n"
 msgstr "largefiles: 転送予定ファイル数 %d\n"
 
-msgid "addremove cannot be run on a repo with largefiles"
-msgstr ""
-
-#, python-format
-msgid "largefiles: failed to put %s (%s) into store: %s"
+msgid "largefile contents do not match hash"
+msgstr ""
+
+#, python-format
+msgid "largefiles: failed to put %s into store: %s"
 msgstr ""
 
 #, python-format
 msgid "requested largefile %s not present in cache"
 msgstr ""
 
+msgid "remote: "
+msgstr "遠隔ホスト: "
+
+#, python-format
+msgid "unexpected putlfile response: %s"
+msgstr "想定外の putlfile 応答: %s"
+
 msgid "putlfile failed:"
 msgstr "大容量ファイルの転送に失敗:"
 
@@ -3751,6 +3790,9 @@
 msgid "add as largefile"
 msgstr ""
 
+msgid "add as normal file"
+msgstr "通常ファイルとして追加"
+
 msgid ""
 "add all files above this size (in megabytes) as largefiles (default: 10)"
 msgstr ""
@@ -3843,6 +3885,20 @@
 "情報が失われる可能性があります。"
 
 msgid ""
+"It may be desirable for mq changesets to be kept in the secret phase (see\n"
+":hg:`help phases`), which can be enabled with the following setting::"
+msgstr ""
+"以下のように設定することで、 MQ 管理下のリビジョンのフェーズ\n"
+"(:hg:`help phases` 参照) を secret に維持することが可能です::"
+
+msgid ""
+"  [mq]\n"
+"  secret = True"
+msgstr ""
+"  [mq]\n"
+"  secret = True"
+
+msgid ""
 "You will by default be managing a patch queue named \"patches\". You can\n"
 "create other, independent patch queues with the :hg:`qqueue` command.\n"
 msgstr ""
@@ -3998,7 +4054,7 @@
 
 #, python-format
 msgid "uncommitted changes in subrepository %s"
-msgstr "副リポジトリ %s に未コミット変更あり"
+msgstr "副リポジトリ %s の変更が未コミットです"
 
 msgid "local changes found, refresh first"
 msgstr "作業領域の内容は変更されていますので qrefresh を実施してください"
@@ -4209,6 +4265,13 @@
 msgstr "リビジョン %d には MQ 管理下に無い子リビジョンがあります"
 
 #, python-format
+msgid "revision %d is not mutable"
+msgstr "リビジョン %d は改変できません"
+
+msgid "see \"hg help phases\" for details"
+msgstr "詳細は \"hg help phases\" 参照"
+
+#, python-format
 msgid "cannot import merge revision %d"
 msgstr "マージ実施リビジョン %d は取り込めません"
 
@@ -4252,12 +4315,13 @@
 
 msgid ""
 "    The patches must not be applied, and at least one patch is required. "
-"With\n"
-"    -k/--keep, the patch files are preserved in the patch directory."
-msgstr ""
-"    対象パッチは未適用でなければならず、 最低1つのパッチ名の指定が\n"
-"    必要です。 -k/--keep を指定した場合、 パッチファイルそのものは\n"
-"    管理領域に残されたままとなります。"
+"Exact\n"
+"    patch identifiers must be given. With -k/--keep, the patch files are\n"
+"    preserved in the patch directory."
+msgstr ""
+"    パッチ名指定には、 最低1つの未適用パッチ名の指定が必要です。\n"
+"    また、 名前は厳密なものを指定してください。 -k/--keep を指定した場合、\n"
+"    パッチファイルそのものは管理領域に残されたままとなります。"
 
 msgid ""
 "    To stop managing a patch and move it into permanent history,\n"
@@ -4970,7 +5034,7 @@
 "    case changes will be discarded."
 msgstr ""
 "    :hg:`strip` は指定のリビジョンおよび、 指定リビジョンの子孫を\n"
-"    取り除きます。 作業領域に未コミットの変更がある場合、\n"
+"    取り除きます。 作業領域の変更が未コミットの場合、\n"
 "    --force が指定されない限りは処理を中断します。\n"
 "    --force が指定された場合、 変更内容は破棄されます。"
 
@@ -5164,6 +5228,9 @@
 msgid "no revisions specified"
 msgstr "リビジョン指定がありません"
 
+msgid "warning: uncommitted changes in the working directory\n"
+msgstr "警告: 作業領域の変更が未コミットです\n"
+
 msgid "list all available queues"
 msgstr "有効なキューの一覧表示"
 
@@ -5304,7 +5371,7 @@
 "    MQ 管理下にあるリビジョン"
 
 msgid "mq takes no arguments"
-msgstr "mq 指定には引数が指定できません"
+msgstr "mq には引数が指定できません"
 
 msgid "operate on patch repository"
 msgstr "パッチ管理リポジトリへの操作"
@@ -5467,6 +5534,19 @@
 msgstr ""
 
 msgid ""
+"notify.mbox\n"
+"  If set, append mails to this mbox file instead of sending. Default: None."
+msgstr ""
+
+msgid ""
+"notify.fromauthor\n"
+"  If set, use the first committer of the changegroup for the \"From\" field "
+"of\n"
+"  the notification mail. If not set, take the user from the pushing repo.\n"
+"  Default: False."
+msgstr ""
+
+msgid ""
 "If set, the following entries will also be used to customize the "
 "notifications:"
 msgstr ""
@@ -5935,7 +6015,7 @@
 msgstr "一連のパッチは %d 個のパッチから構成されています。"
 
 msgid "no recipient addresses provided"
-msgstr ""
+msgstr "宛先アドレスが指定されていません"
 
 msgid ""
 "\n"
@@ -5959,18 +6039,15 @@
 msgid "Displaying "
 msgstr "表示中 "
 
-msgid "Writing "
-msgstr "書き出し中 "
-
-msgid "writing"
-msgstr "書き出し中"
-
 msgid "Sending "
 msgstr "送信中 "
 
 msgid "sending"
 msgstr "送信中"
 
+msgid "writing"
+msgstr "書き出し中"
+
 msgid "show progress bars for some actions"
 msgstr "処理における進捗状況表示"
 
@@ -6318,6 +6395,13 @@
 msgid "use --keep to keep original changesets"
 msgstr "元リビジョンを維持する場合は --keep を使用してください"
 
+#, python-format
+msgid "can't rebase immutable changeset %s"
+msgstr "改変不可のリビジョン %s は rebase できません"
+
+msgid "see hg help phases for details"
+msgstr ""
+
 msgid "nothing to rebase\n"
 msgstr "リベースの必要はありません\n"
 
@@ -6360,6 +6444,9 @@
 msgid "no rebase in progress"
 msgstr "進行中のリベース状態はありません"
 
+msgid "warning: immutable rebased changeset detected, can't abort\n"
+msgstr ""
+
 msgid "warning: new changesets detected on target branch, can't abort\n"
 msgstr "警告: 新規リビジョンが対象ブランチに検出されたので終了できません\n"
 
@@ -6934,7 +7021,7 @@
 msgstr "マージが未コミットです"
 
 msgid "outstanding local changes"
-msgstr "未コミットの変更があります"
+msgstr "変更が未コミットです"
 
 msgid ""
 "``transplanted([set])``\n"
@@ -7200,7 +7287,7 @@
 
 #, python-format
 msgid "malformed line in .hg/bookmarks: %r\n"
-msgstr ""
+msgstr "不正な .hg/bookmarks 記述行: %r\n"
 
 #, python-format
 msgid "bookmark '%s' contains illegal character"
@@ -7215,8 +7302,8 @@
 msgstr "ブックマーク %s の更新中\n"
 
 #, python-format
-msgid "not updating divergent bookmark %s\n"
-msgstr "衝突するブックマーク %s は更新しません\n"
+msgid "divergent bookmark %s stored as %s\n"
+msgstr "分岐するブックマーク %s を %s として保存\n"
 
 msgid "searching for changed bookmarks\n"
 msgstr "変更されたブックマークを探索中\n"
@@ -7263,7 +7350,7 @@
 
 #, python-format
 msgid "uncommitted changes in subrepo %s"
-msgstr "副リポジトリ %s に未コミット変更があります"
+msgstr "副リポジトリ %s の変更が未コミットです"
 
 msgid "options --message and --logfile are mutually exclusive"
 msgstr "--message と --logfile は同時に指定できません"
@@ -7273,10 +7360,10 @@
 msgstr "コミットメッセージ '%s' を読み込むことができません: %s"
 
 msgid "limit must be a positive integer"
-msgstr "制限は正数でなければなりません"
+msgstr "制限には正数を指定してください"
 
 msgid "limit must be positive"
-msgstr "制限は正数でなければなりません"
+msgstr "制限には正数を指定してください"
 
 #, python-format
 msgid "invalid format spec '%%%s' in output filename"
@@ -7345,7 +7432,7 @@
 msgstr "作業先を指定していません"
 
 msgid "with multiple sources, destination must be an existing directory"
-msgstr "複数の作業元の場合、 作業先は存在するディレクトリでなければなりません"
+msgstr "複数の作業元の場合、 作業先は存在するディレクトリを指定してください"
 
 #, python-format
 msgid "destination %s is not a directory"
@@ -7374,6 +7461,10 @@
 msgstr "タグ:             %s\n"
 
 #, python-format
+msgid "phase:       %s\n"
+msgstr "フェーズ:         %s\n"
+
+#, python-format
 msgid "parent:      %d:%s\n"
 msgstr "親:               %d:%s\n"
 
@@ -7708,10 +7799,10 @@
 "    ファイルを確認することができます。"
 
 msgid "similarity must be a number"
-msgstr "類似度は数値でなければなりません"
+msgstr "類似度には数値を指定してください"
 
 msgid "similarity must be between 0 and 100"
-msgstr "類似度は0から100の間でなければなりません"
+msgstr "類似度には0から100の間を指定してください"
 
 msgid "annotate the specified revision"
 msgstr "当該リビジョン時点での由来情報を表示"
@@ -8192,8 +8283,8 @@
 msgid "rename a given bookmark"
 msgstr "指定ブックマークの改名"
 
-msgid "do not mark a new bookmark active"
-msgstr "新規ブックマークをアクティブ化しない"
+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]"
@@ -8202,10 +8293,10 @@
 msgstr "移動可能なマーキングによる履歴進展の追跡"
 
 msgid ""
-"    Bookmarks are pointers to certain commits that move when\n"
-"    committing. Bookmarks are local. They can be renamed, copied and\n"
-"    deleted. It is possible to use bookmark names in :hg:`merge` and\n"
-"    :hg:`update` to merge and update respectively to a given bookmark."
+"    Bookmarks are pointers to certain commits that move when committing.\n"
+"    Bookmarks are local. They can be renamed, copied and deleted. It is\n"
+"    possible to use :hg:`merge NAME` to merge from a given bookmark, and\n"
+"    :hg:`update NAME` to update to a given bookmark."
 msgstr ""
 "    ブックマーク (bookmark) は、 コミット操作に追従して移動する、\n"
 "    リビジョン特定用の情報です。\n"
@@ -8231,16 +8322,30 @@
 "    push` and :hg:`help pull`). This requires both the local and remote\n"
 "    repositories to support bookmarks. For versions prior to 1.8, this "
 "means\n"
-"    the bookmarks extension must be enabled.\n"
-"    "
+"    the bookmarks extension must be enabled."
 msgstr ""
 "    ブックマークは、 リポジトリ間での取り込みや反映が可能です\n"
 "    (:hg:`help push` および :hg:`help pull` 参照)。\n"
 "    但し、 連携するリポジトリの両方が、\n"
 "    ブックマーク機能に対応している必要があります\n"
 "    1.8 版より前の Mercurial の場合、 \n"
-"    bookmarks エクステンションを有効にしなければなりません。\n"
-"    "
+"    bookmarks エクステンションを有効にしてください。"
+
+msgid ""
+"    With -i/--inactive, the new bookmark will not be made the active\n"
+"    bookmark. If -r/--rev is given, the new bookmark will not be made\n"
+"    active even if -i/--inactive is not given. If no NAME is given, the\n"
+"    current active bookmark will be marked inactive.\n"
+"    "
+msgstr ""
+"    -i/--inactive 指定のある場合は、 作成された新規ブックマークは、\n"
+"    アクティブにはなりません。 -r/--rev 指定のある場合は、 -i/--inactive\n"
+"    指定が無くても、 新規ブックマークはアクティブになりません。\n"
+"    ブックマーク名指定が無い場合、 現ブックマークが非アクティブ化されます。\n"
+"    "
+
+msgid "bookmark name required"
+msgstr "ブックマーク名を要求しました"
 
 #, python-format
 msgid "bookmark '%s' does not exist"
@@ -8253,9 +8358,6 @@
 msgid "new bookmark name required"
 msgstr "新しいブックマーク名を要求しました"
 
-msgid "bookmark name required"
-msgstr "ブックマーク名を要求しました"
-
 msgid "bookmark name cannot contain newlines"
 msgstr "ブックマーク名に改行を含めません"
 
@@ -9472,11 +9574,18 @@
 "    'cherry-picking'. By default, graft will copy user, date, and\n"
 "    description from the source changesets."
 msgstr ""
+"    本コマンドは、 あるブランチから別のブランチへ、 Mercurial\n"
+"    のマージ機能でリビジョンを複製しますが、 履歴上はマージされません。\n"
+"    これは 'backport' ないし 'cherry-picking' と呼ばれる機能です。\n"
+"    特に指定の無い場合、 ユーザ名、 日付、 コミットログは、 \n"
+"    元リビジョンのものを再利用します。"
 
 msgid ""
 "    Changesets that are ancestors of the current revision, that have\n"
 "    already been grafted, or that are merges will be skipped."
 msgstr ""
+"    現行リビジョンの祖先、 既に移植 (graft) 済みのリビジョン、\n"
+"    マージ実施リビジョンは、 複製対象から除外されます。"
 
 msgid ""
 "    If a graft merge results in conflicts, the graft process is\n"
@@ -9484,39 +9593,46 @@
 "    Once all conflicts are addressed, the graft process can be\n"
 "    continued with the -c/--continue option."
 msgstr ""
+"    本コマンドのマージ処理で衝突が検出された場合、 処理が中断されるので、\n"
+"    手動での衝突解決が可能です。 全ての衝突が解消されたならば、\n"
+"    -c/--continue 指定によりコマンドの実行を再開してください。"
 
 msgid ""
 "    .. note::\n"
 "      The -c/--continue option does not reapply earlier options."
 msgstr ""
+"    .. note::\n"
+"      -c/--continue でも、 以前のオプション指定までは再現されません。"
 
 msgid ""
 "      - copy a single change to the stable branch and edit its description::"
-msgstr ""
+msgstr "      - コミットログを改変しつつ単一リビジョンを stable へ複製::"
 
 msgid ""
 "          hg update stable\n"
 "          hg graft --edit 9393"
 msgstr ""
+"          hg update stable\n"
+"          hg graft --edit 9393"
 
 msgid ""
 "      - graft a range of changesets with one exception, updating dates::"
-msgstr ""
+msgstr "      - 日付を更新しつつ、2091 を除く指定範囲中のリビジョンを複製::"
 
 msgid "          hg graft -D \"2085::2093 and not 2091\""
-msgstr ""
+msgstr "          hg graft -D \"2085::2093 and not 2091\""
 
 msgid "      - continue a graft after resolving conflicts::"
-msgstr ""
+msgstr "      - 衝突解消後のコマンド実行再開::"
 
 msgid "          hg graft -c"
-msgstr ""
+msgstr "          hg graft -c"
 
 msgid "      - show the source of a grafted changeset::"
-msgstr ""
+msgstr "      - 複製元リビジョンの表示::"
 
 msgid "          hg log --debug -r tip"
-msgstr ""
+msgstr "          hg log --debug -r tip"
 
 msgid ""
 "    Returns 0 on successful completion.\n"
@@ -9807,6 +9923,9 @@
 msgid "use \"hg help -e %s\" to show help for the %s extension"
 msgstr "\"hg help -e %s\" によってエクステンション %s のヘルプが表示されます"
 
+msgid "options:"
+msgstr "オプション:"
+
 #, python-format
 msgid ""
 "\n"
@@ -9900,7 +10019,7 @@
 "    1つないし2つの親リビジョンのハッシュ値を使用して、\n"
 "    指定リビジョンにおける要約情報を表示します。\n"
 "    親リビジョンハッシュに続けて、\n"
-"    作業領域に未コミットの変更がある場合は \"+\" 、\n"
+"    作業領域の変更が未コミットの場合は \"+\" 、\n"
 "    default 以外のブランチであればブランチ名、\n"
 "    付与されているタグの一覧、\n"
 "    および付与されているブックマークの一覧が表示されます。"
@@ -9982,7 +10101,7 @@
 "    If there are outstanding changes in the working directory, import\n"
 "    will abort unless given the -f/--force flag."
 msgstr ""
-"    作業領域に未コミット変更がある場合、 -f/--force が指定されない限り、\n"
+"    作業領域の変更が未コミットの場合、 -f/--force が指定されない限り、\n"
 "    取り込みは実施されません。"
 
 msgid ""
@@ -10034,7 +10153,7 @@
 
 msgid ""
 "    With -s/--similarity, hg will attempt to discover renames and\n"
-"    copies in the patch in the same way as 'addremove'."
+"    copies in the patch in the same way as :hg:`addremove`."
 msgstr ""
 "    -s/--similarity が指定された場合、 :hg:`addremove` と同様な方針で、\n"
 "    パッチによる変更結果から、 改名や複製を検出します。"
@@ -10234,8 +10353,8 @@
 "    含む単一のファイル名を、 \"xargs\" が複数のファイル名に解釈して\n"
 "    しまう問題は、 このオプションにより解消されます。"
 
-msgid "only follow the first parent of merge changesets"
-msgstr "マージの際には第1親のみを遡る"
+msgid "only follow the first parent of merge changesets (DEPRECATED)"
+msgstr "マージの際には第1親のみを遡る (DEPRECATED)"
 
 msgid "show revisions matching date spec"
 msgstr "指定日時に合致するリビジョンを表示"
@@ -10249,8 +10368,8 @@
 msgid "include revisions where files were removed"
 msgstr "ファイルが登録除外されたリビジョンを含める"
 
-msgid "show only merges"
-msgstr "マージ実施リビジョンのみを表示"
+msgid "show only merges (DEPRECATED)"
+msgstr "マージ実施リビジョンのみを表示 (DEPRECATED)"
 
 msgid "revisions committed by user"
 msgstr "当該ユーザによるリビジョンを表示"
@@ -10264,8 +10383,8 @@
 msgid "do not display revision or any of its ancestors"
 msgstr "当該リビジョンとその祖先の表示を抑止"
 
-msgid "show hidden changesets"
-msgstr "隠れたリビジョンの表示"
+msgid "show hidden changesets (DEPRECATED)"
+msgstr "隠れたリビジョンの表示 (DEPRECATED)"
 
 msgid "[OPTION]... [FILE]"
 msgstr "[OPTION]... [FILE]"
@@ -10529,12 +10648,11 @@
 msgid "run 'hg heads' to see all heads"
 msgstr "'hg heads' によりヘッドを一覧表示できます"
 
-msgid "there is nothing to merge"
+msgid "nothing to merge"
 msgstr "マージの必要がありません"
 
-#, python-format
-msgid "%s - use \"hg update\" instead"
-msgstr "%s - \"hg update\" を使用してください"
+msgid "use 'hg update' instead"
+msgstr "'hg update' を使用してください"
 
 msgid "working directory not at a head revision"
 msgstr "作業領域の親リビジョンは、 ヘッドではありません"
@@ -10662,6 +10780,64 @@
 msgid "not found!\n"
 msgstr "指定シンボルは不明です\n"
 
+msgid "set changeset phase to public"
+msgstr "リビジョンのフェーズを public 化"
+
+msgid "set changeset phase to draft"
+msgstr "リビジョンのフェーズを draft 化"
+
+msgid "set changeset phase to secret"
+msgstr "リビジョンのフェーズを secret 化"
+
+msgid "allow to move boundary backward"
+msgstr "フェーズ境界の移動を伴う強制実行"
+
+msgid "target revision"
+msgstr "対象リビジョン"
+
+msgid "[-p|-d|-s] [-f] [-r] REV..."
+msgstr "[-p|-d|-s] [-f] [-r] REV..."
+
+msgid "set or show the current phase name"
+msgstr "現行フェーズ状態の改変ないし表示"
+
+msgid "    With no argument, show the phase name of specified revisions."
+msgstr "    引数無しの場合、 指定リビジョンのフェーズ名を表示します。"
+
+msgid ""
+"    With one of -p/--public, -d/--draft or -s/--secret, change the\n"
+"    phase value of the specified revisions."
+msgstr ""
+"    -p/--public、 -d/--draft ないし -s/--secret が指定された場合、\n"
+"    指定リビジョンのフェーズを指定値に変更します。"
+
+msgid ""
+"    Unless -f/--force is specified, :hg:`phase` won't move changeset from a\n"
+"    lower phase to an higher phase. Phases are ordered as follows::"
+msgstr ""
+"    -f/--force が指定されない限り、 低い方から高い方へのフェーズ変更は、\n"
+"    実施できません。 フェーズの高低は以下のように定義されています::"
+
+msgid "        public < draft < secret"
+msgstr "        public < draft < secret"
+
+msgid ""
+"    Return 0 on success, 1 if no phases were changed.\n"
+"    "
+msgstr ""
+"    成功時のコマンドの終了値は 0、 フェーズ状態変更が無ければ 1 です。\n"
+"    "
+
+msgid "only one phase can be specified"
+msgstr "フェーズ指定は1つだけです"
+
+#, python-format
+msgid "phase change for %i changesets\n"
+msgstr "リビジョン %i のフェーズを変更\n"
+
+msgid "no phases changed\n"
+msgstr "フェーズの変更なし\n"
+
 #, python-format
 msgid "not updating: %s\n"
 msgstr "更新中断: %s\n"
@@ -10729,11 +10905,12 @@
 "    詳細は :hg:`help urls` を参照してください。"
 
 msgid ""
-"    Returns 0 on success, 1 if an update had unresolved files.\n"
-"    "
-msgstr ""
-"    成功時のコマンド終了値は 0、 更新で未解消ファイルが検出された場合は\n"
-"    1 です。\n"
+"    Returns 0 on success, 1 if no changes found or an update had\n"
+"    unresolved files.\n"
+"    "
+msgstr ""
+"    成功時のコマンド終了値は 0、 取り込みの必要が無かった場合や、\n"
+"    作業領域更新に失敗した場合は 1 です。\n"
 "    "
 
 #, python-format
@@ -10948,7 +11125,7 @@
 
 #, python-format
 msgid "not removing %s: file is untracked\n"
-msgstr "%s は削除されません: 構成管理対象ではありません\n"
+msgstr "%s は削除されません: 未登録ファイルです\n"
 
 #, python-format
 msgid "not removing %s: file still exists (use -f to force removal)\n"
@@ -11012,12 +11189,14 @@
 "    setting, or a command-line merge tool like ``diff3``. The resolve\n"
 "    command is used to manage the files involved in a merge, after\n"
 "    :hg:`merge` has been run, and before :hg:`commit` is run (i.e. the\n"
-"    working directory must have two parents)."
+"    working directory must have two parents). See :hg:`help\n"
+"    merge-tools` for information on configuring merge tools."
 msgstr ""
 "    未解消の衝突の多くは ``internal:merge`` や ``diff3`` などを使用した\n"
 "    非対話的なマージに由来します。 本コマンドは、 :hg:`merge` 実行後から\n"
 "    :hg:`commit` 実行にかけて、 マージに関与するファイルを管理します。\n"
-"    (この際には、 作業領域は2つの親リビジョンを持つ必要があります)"
+"    (この際には、 作業領域は2つの親リビジョンを持つ必要があります)\n"
+"    マージツール設定の詳細は :hg:`help merge-tools` を参照してください。"
 
 msgid "    The resolve command can be used in the following ways:"
 msgstr "    本コマンドは、 以下の形式で使用されます:"
@@ -11189,7 +11368,7 @@
 "全ファイル復旧なら --all 付き実行、作業領域更新なら 'hg update %s' 実行"
 
 msgid "uncommitted changes, use --all to discard all changes"
-msgstr "未コミット変更があります - 変更全破棄なら --all 付き実行"
+msgstr "変更が未コミットです - 変更全破棄なら --all 付き実行"
 
 msgid "use --all to revert all files"
 msgstr "全ファイル復旧なら --all 付き実行"
@@ -11490,8 +11669,8 @@
 "    Option -q/--quiet hides untracked (unknown and ignored) files\n"
 "    unless explicitly requested with -u/--unknown or -i/--ignored."
 msgstr ""
-"    -q/--quiet 指定がある場合、 -u/--unknown ないし -i/--ignored が明示\n"
-"    的に指定されない限り、 構成管理対象外のファイルは表示されません。"
+"    -q/--quiet 指定がある場合、 -u/--unknown ないし -i/--ignored\n"
+"    が明示的に指定されない限り、 未登録ファイルは表示されません。"
 
 msgid ""
 "    .. note::\n"
@@ -11870,11 +12049,13 @@
 msgid ""
 "    Update the repository's working directory to the specified\n"
 "    changeset. If no changeset is specified, update to the tip of the\n"
-"    current named branch."
+"    current named branch and move the current bookmark (see :hg:`help\n"
+"    bookmarks`)."
 msgstr ""
 "    指定されたリビジョン時点の内容で、 作業領域を更新します。\n"
-"    対象リビジョンが指定されない場合、 作業領域と同じ名前付き\n"
-"    ブランチにおける最新リビジョンで更新します。"
+"    対象リビジョンが指定されない場合、 作業領域と同じ名前付きブランチの、\n"
+"    最新リビジョンで更新した上で、 ブックマークの更新を行います。\n"
+"    (詳細は :hg:`help bookmarks` 参照)"
 
 msgid ""
 "    If the changeset is not a descendant of the working directory's\n"
@@ -11898,7 +12079,7 @@
 msgid ""
 "    The following rules apply when the working directory contains\n"
 "    uncommitted changes:"
-msgstr "    作業領域に未コミット変更がある場合、 以下の規則が適用されます:"
+msgstr "    作業領域の変更が未コミットの場合、 以下の規則が適用されます:"
 
 msgid ""
 "    1. If neither -c/--check nor -C/--clean is specified, and if\n"
@@ -11976,11 +12157,11 @@
 msgstr "(詳細は http://mercurial.selenic.com を参照のこと)"
 
 msgid ""
-"Copyright (C) 2005-2011 Matt Mackall and others\n"
+"Copyright (C) 2005-2012 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-2011 Matt Mackall 他\n"
+"Copyright (C) 2005-2012 Matt Mackall 他\n"
 "本製品はフリーソフトウェアです。\n"
 "頒布条件に関しては同梱されるライセンス条項をお読みください。\n"
 "市場適合性や特定用途への可否を含め、 本製品は無保証です。\n"
@@ -12282,9 +12463,9 @@
 msgstr "--cwd 指定値が省略されなかった可能性があります!"
 
 msgid ""
-"Option -R has to be separated from other options (e.g. not -qR) and --"
+"option -R has to be separated from other options (e.g. not -qR) and --"
 "repository may only be abbreviated as --repo!"
-msgstr "-R は独立記述(例: '-dR' は不可)、 --repository の略記は --repo のみ"
+msgstr "-R は単独記述(例: '-dR' は不可)、 --repository の略記は --repo のみ"
 
 #, python-format
 msgid "Time: real %.3f secs (user %.3f+%.3f sys %.3f+%.3f)\n"
@@ -12365,6 +12546,10 @@
 "マージ成功とみなしますか? (y/n)"
 
 #, python-format
+msgid "merging %s incomplete! (edit conflicts, then use 'hg resolve --mark')\n"
+msgstr "%s のマージは不完全です (衝突解消後に 'hg resolve --mark' が必要)\n"
+
+#, python-format
 msgid "merging %s failed!\n"
 msgstr "%s のマージに失敗!\n"
 
@@ -12389,7 +12574,7 @@
 
 #. i18n: "modified" is a keyword
 msgid "modified takes no arguments"
-msgstr "modified 指定には引数が指定できません"
+msgstr "modified には引数が指定できません"
 
 msgid ""
 "``added()``\n"
@@ -12400,7 +12585,7 @@
 
 #. i18n: "added" is a keyword
 msgid "added takes no arguments"
-msgstr "added 指定には引数が指定できません"
+msgstr "added には引数が指定できません"
 
 msgid ""
 "``removed()``\n"
@@ -12411,7 +12596,7 @@
 
 #. i18n: "removed" is a keyword
 msgid "removed takes no arguments"
-msgstr "removed 指定には引数が指定できません"
+msgstr "removed には引数が指定できません"
 
 msgid ""
 "``deleted()``\n"
@@ -12422,7 +12607,7 @@
 
 #. i18n: "deleted" is a keyword
 msgid "deleted takes no arguments"
-msgstr "deleted 指定には引数が指定できません"
+msgstr "deleted には引数が指定できません"
 
 msgid ""
 "``unknown()``\n"
@@ -12436,7 +12621,7 @@
 
 #. i18n: "unknown" is a keyword
 msgid "unknown takes no arguments"
-msgstr "unknown 指定には引数が指定できません"
+msgstr "unknown には引数が指定できません"
 
 msgid ""
 "``ignored()``\n"
@@ -12450,7 +12635,7 @@
 
 #. i18n: "ignored" is a keyword
 msgid "ignored takes no arguments"
-msgstr "ignored 指定には引数が指定できません"
+msgstr "ignored には引数が指定できません"
 
 msgid ""
 "``clean()``\n"
@@ -12461,7 +12646,7 @@
 
 #. i18n: "clean" is a keyword
 msgid "clean takes no arguments"
-msgstr "clean 指定には引数が指定できません"
+msgstr "clean には引数が指定できません"
 
 #, python-format
 msgid "not a function: %s"
@@ -12476,7 +12661,7 @@
 
 #. i18n: "binary" is a keyword
 msgid "binary takes no arguments"
-msgstr "binary 指定には引数が指定できません"
+msgstr "binary には引数が指定できません"
 
 msgid ""
 "``exec()``\n"
@@ -12487,7 +12672,7 @@
 
 #. i18n: "exec" is a keyword
 msgid "exec takes no arguments"
-msgstr "exec 指定には引数が指定できません"
+msgstr "exec には引数が指定できません"
 
 msgid ""
 "``symlink()``\n"
@@ -12498,7 +12683,7 @@
 
 #. i18n: "symlink" is a keyword
 msgid "symlink takes no arguments"
-msgstr "symlink 指定には引数が指定できません"
+msgstr "symlink には引数が指定できません"
 
 msgid ""
 "``resolved()``\n"
@@ -12509,7 +12694,7 @@
 
 #. i18n: "resolved" is a keyword
 msgid "resolved takes no arguments"
-msgstr "resolved 指定には引数が指定できません"
+msgstr "resolved には引数が指定できません"
 
 msgid ""
 "``unresolved()``\n"
@@ -12520,7 +12705,7 @@
 
 #. i18n: "unresolved" is a keyword
 msgid "unresolved takes no arguments"
-msgstr "unresolved 指定には引数が指定できません"
+msgstr "unresolved には引数が指定できません"
 
 msgid ""
 "``hgignore()``\n"
@@ -12530,7 +12715,7 @@
 "    有効な .hgignore パターンに合致するファイル"
 
 msgid "hgignore takes no arguments"
-msgstr "hgignore 指定には引数が指定できません"
+msgstr "hgignore には引数が指定できません"
 
 msgid ""
 "``grep(regex)``\n"
@@ -12596,7 +12781,7 @@
 
 #. i18n: "copied" is a keyword
 msgid "copied takes no arguments"
-msgstr "copied 指定には引数が指定できません"
+msgstr "copied には引数が指定できません"
 
 msgid "invalid token"
 msgstr "不正な記述"
@@ -12693,6 +12878,9 @@
 msgid "syntax for Mercurial ignore files"
 msgstr "Mercurial の無視指定ファイルの文法"
 
+msgid "Working with Phases"
+msgstr "フェーズの利用"
+
 msgid ""
 "The Mercurial system uses a set of configuration files to control\n"
 "aspects of its behavior."
@@ -13194,9 +13382,51 @@
 "   これらを指定することはできません。"
 
 msgid ""
+"\n"
+"``annotate``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+"\n"
+"``annotate``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\""
+
+msgid ""
+"Settings used when displaying file annotations. All values are\n"
+"Booleans and default to False. See ``diff`` section for related\n"
+"options for the diff command."
+msgstr ""
+"ファイル中の行の由来表示に関する設定。\n"
+"全ての値が真偽値で、 デフォルト値は False です。\n"
+"diff コマンドに関連するオプションの詳細は、\n"
+"``diff`` セクションを参照してください。"
+
+msgid ""
+"``ignorews``\n"
+"    Ignore white space when comparing lines."
+msgstr ""
+"``ignorews``\n"
+"    差分検出における空白文字無視の有無。"
+
+msgid ""
+"``ignorewsamount``\n"
+"    Ignore changes in the amount of white space."
+msgstr ""
+"``ignorewsamount``\n"
+"    差分検出における空白文字数増減無視の有無。"
+
+msgid ""
+"``ignoreblanklines``\n"
+"    Ignore changes whose lines are all blank."
+msgstr ""
+"``ignoreblanklines``\n"
+"    差分検出における空行増減無視の有無。"
+
+msgid ""
+"\n"
 "``auth``\n"
 "\"\"\"\"\"\"\"\""
 msgstr ""
+"\n"
 "``auth``\n"
 "\"\"\"\"\"\"\"\""
 
@@ -13487,11 +13717,14 @@
 "\"\"\"\"\"\"\"\""
 
 msgid ""
-"Settings used when displaying diffs. Everything except for ``unified`` is a\n"
-"Boolean and defaults to False."
-msgstr ""
-"差分表示の設定。 ``unified`` 以外の全ての設定は真偽値で、 デフォルト値は\n"
-"False です。"
+"Settings used when displaying diffs. Everything except for ``unified``\n"
+"is a Boolean and defaults to False. See ``annotate`` section for\n"
+"related options for the annotate command."
+msgstr ""
+"差分表示の設定。 ``unified`` 以外の全ての設定は真偽値で、\n"
+"デフォルト値は False です。\n"
+"annotate コマンドに関連するオプションの詳細は、\n"
+"``annotate`` セクションを参照してください。"
 
 msgid ""
 "``git``\n"
@@ -13515,27 +13748,6 @@
 "    変更が生じた関数の名前表示の有無。"
 
 msgid ""
-"``ignorews``\n"
-"    Ignore white space when comparing lines."
-msgstr ""
-"``ignorews``\n"
-"    差分検出における空白文字無視の有無。"
-
-msgid ""
-"``ignorewsamount``\n"
-"    Ignore changes in the amount of white space."
-msgstr ""
-"``ignorewsamount``\n"
-"    差分検出における空白文字数増減無視の有無。"
-
-msgid ""
-"``ignoreblanklines``\n"
-"    Ignore changes whose lines are all blank."
-msgstr ""
-"``ignoreblanklines``\n"
-"    差分検出における空行増減無視の有無。"
-
-msgid ""
 "``unified``\n"
 "    Number of lines of context to show."
 msgstr ""
@@ -14070,14 +14282,21 @@
 "various actions such as starting or finishing a commit. Multiple\n"
 "hooks can be run for the same action by appending a suffix to the\n"
 "action. Overriding a site-wide hook can be done by changing its\n"
-"value or setting it to an empty string."
+"value or setting it to an empty string.  Hooks can be prioritized\n"
+"by adding a prefix of ``priority`` to the hook name on a new line\n"
+"and setting the priority.  The default priority is 0 if\n"
+"not specified."
 msgstr ""
 "commit の開始/終了といった様々な処理契機において、\n"
 "自動実行されるコマンド、ないし Python 関数。 \n"
 "処理契機名に接尾辞 (suffix) を追加した記述をする事で、\n"
 "同一処理契機に複数のフックを実行可能です。\n"
 "先に読み込まれた設定 (例: ホスト毎設定) におけるフック設定は、\n"
-"別な値を設定するか、 空値の設定により、 上書き可能です。"
+"別な値を設定するか、 空値の設定により、 上書き可能です。\n"
+"フック名の前に ``priority`` を追加した設定値を新たに定義し、\n"
+"値を設定することで、 フック実行の優先度を設定できます。\n"
+"デフォルトの優先度設定値は 0 です。\n"
+"(※ 訳注: 優先度値が大きいフックの方が先に実行されます)"
 
 msgid "Example ``.hg/hgrc``::"
 msgstr "``.hg/hgrc`` 設定例を以下に示します::"
@@ -14089,7 +14308,9 @@
 "  # do not use the site-wide hook\n"
 "  incoming =\n"
 "  incoming.email = /my/email/hook\n"
-"  incoming.autobuild = /my/build/hook"
+"  incoming.autobuild = /my/build/hook\n"
+"  # force autobuild hook to run before other incoming hooks\n"
+"  priority.incoming.autobuild = 1"
 msgstr ""
 "  [hooks]\n"
 "  # 更新の取り込み毎に作業領域を更新\n"
@@ -14098,7 +14319,9 @@
 "  incoming =\n"
 "  \n"
 "  incoming.email = /my/email/hook\n"
-"  incoming.autobuild = /my/build/hook"
+"  incoming.autobuild = /my/build/hook\n"
+"  # 他の incoming に先立って autobuild フックを実行\n"
+"  priority.incoming.autobuild = 1"
 
 msgid ""
 "Most hooks are run with environment variables set that give useful\n"
@@ -14669,11 +14892,46 @@
 "    連携対象となるリポジトリのディレクトリ、 ないし URL。"
 
 msgid ""
-"\n"
+"``phases``\n"
+"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+"``phases``\n"
+"\"\"\"\"\"\"\"\"\"\""
+
+msgid ""
+"Specifies default handling of phases. See :hg:`help phases` for more\n"
+"information about working with phases."
+msgstr ""
+"デフォルト時のフェーズの取り扱い設定。\n"
+"フェーズ操作に関する詳細は :hg:`help phases` を参照してください。"
+
+msgid ""
+"``publish``\n"
+"    Controls draft phase behavior when working as a server. When true,\n"
+"    pushed changesets are set to public in both client and server and\n"
+"    pulled or cloned changesets are set to public in the client.\n"
+"    Default: True"
+msgstr ""
+"``publish``\n"
+"    サーバとして機能する際の、 draft フェーズに対する挙動の設定。\n"
+"    True の場合、 クライアントから反映されたリビジョンのフェーズは、\n"
+"    クライアント/サーバ双方で public 化され、 クライアントに取り込み、\n"
+"    ないし複製されたリビジョンのフェーズは、 クライアント側でのみ public\n"
+"    化されます。デフォルト値: True"
+
+msgid ""
+"``new-commit``\n"
+"    Phase of newly-created commits.\n"
+"    Default: draft"
+msgstr ""
+"``new-commit``\n"
+"    新規作成されるリビジョンのフェーズ。\n"
+"    デフォルト値: draft"
+
+msgid ""
 "``profiling``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
-"\n"
 "``profiling``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\"\""
 
@@ -14925,7 +15183,7 @@
 msgstr ""
 "``commitsubrepos``\n"
 "    親リポジトリのコミットにおける、 副リポジトリ変更のコミットの要否。\n"
-"    False の場合に、 未コミット変更の副リポジトリがあれば、\n"
+"    False の場合に、 変更が未コミットな副リポジトリがあれば、\n"
 "    コミット処理は中断されます。 デフォルト値: False"
 
 msgid ""
@@ -16104,7 +16362,7 @@
 msgid "- Find C files in a non-standard encoding::"
 msgstr ""
 
-msgid "    hg locate \"set:**.c and not encoding(ascii)\""
+msgid "    hg locate \"set:**.c and not encoding('UTF-8')\""
 msgstr ""
 
 msgid "- Revert copies of large binary files::"
@@ -16548,6 +16806,13 @@
 msgstr ""
 
 msgid ""
+"Draft\n"
+"    Changesets in the draft phase have not been shared with publishing\n"
+"    repositories and may thus be safely changed by history-modifying\n"
+"    extensions. See :hg:`help phases`."
+msgstr ""
+
+msgid ""
 "Graph\n"
 "    See DAG and :hg:`help graphlog`."
 msgstr ""
@@ -16678,6 +16943,19 @@
 msgstr ""
 
 msgid ""
+"Phase\n"
+"    A per-changeset state tracking how the changeset has been or\n"
+"    should be shared. See :hg:`help phases`."
+msgstr ""
+
+msgid ""
+"Public\n"
+"    Changesets in the public phase have been shared with publishing\n"
+"    repositories and are therefore considered immutable. See :hg:`help\n"
+"    phases`."
+msgstr ""
+
+msgid ""
 "Pull\n"
 "    An operation in which changesets in a remote repository which are\n"
 "    not in the local repository are brought into the local\n"
@@ -16747,6 +17025,12 @@
 msgstr ""
 
 msgid ""
+"Secret\n"
+"    Changesets in the secret phase may not be shared via push, pull,\n"
+"    or clone. See :hg:`help phases`."
+msgstr ""
+
+msgid ""
 "Tag\n"
 "    An alternative name given to a changeset. Tags can be used in all\n"
 "    places where Mercurial expects a changeset ID, e.g., with\n"
@@ -16842,7 +17126,7 @@
 "root directory, or any prefix path of that path, is matched against\n"
 "any pattern in ``.hgignore``."
 msgstr ""
-"構成管理対象外のファイルが、 作業領域のルートからの相対パス、\n"
+"未登録ファイルが、 作業領域のルートからの相対パス、\n"
 "ないしそのパスの先頭部分が、 ``.hgignore``\n"
 "に記述されたパターンと合致する場合、\n"
 "そのファイルは Mercurial からは無視されます。"
@@ -16852,7 +17136,7 @@
 "``a/b/file.c`` inside our repository. Mercurial will ignore ``file.c``\n"
 "if any pattern in ``.hgignore`` matches ``a/b/file.c``, ``a/b`` or ``a``."
 msgstr ""
-"例えば、 構成管理対象外のファイル ``file.c`` が、\n"
+"例えば、 未登録ファイル ``file.c`` が、\n"
 "作業領域の ``a/b/file.c`` に位置すると仮定します。\n"
 "``a/b/file.c``、 ``a/b`` ないし ``a`` といったパターンが\n"
 "``.hgignore`` に記述されている場合、\n"
@@ -17461,6 +17745,174 @@
 msgid "See also :hg:`help filesets`.\n"
 msgstr ":hg:`help filesets` も参照してください。\n"
 
+msgid ""
+"What are phases?\n"
+"----------------"
+msgstr ""
+"フェーズとは?\n"
+"--------------"
+
+msgid ""
+"Phases are a system for tracking which changesets have been or should\n"
+"be shared. This helps prevent common mistakes when modifying history\n"
+"(for instance, with the mq or rebase extensions)."
+msgstr ""
+"フェーズ (phase) は、 当該リビジョンの共有性を管理する仕組みです。\n"
+"この仕組みによって、 予期せぬ履歴改変\n"
+"(例: mq や rebase エクステンション等によるもの) を防止できます。"
+
+msgid "Each changeset in a repository is in one of the following phases:"
+msgstr "リポジトリ中の各リビジョンは、 以下のいずれかのフェーズに属します:"
+
+msgid ""
+" - public : changeset is visible on a public server\n"
+" - draft : changeset is not yet published\n"
+" - secret : changeset should not be pushed, pulled, or cloned"
+msgstr ""
+" - public : 公開サーバ上で参照可能なリビジョン\n"
+" - draft : public 化前段階のリビジョン\n"
+" - secret : push/pull/clone の対象外となるリビジョン"
+
+msgid ""
+"These phases are ordered (public < draft < secret) and no changeset\n"
+"can be in a lower phase than its ancestors. For instance, if a\n"
+"changeset is public, all its ancestors are also public. Lastly,\n"
+"changeset phases only be changed towards the public phase."
+msgstr ""
+"フェーズには順序関係 (public < draft < secret) があり、\n"
+"祖先よりも小さなフェーズを持つことはできません。\n"
+"例えば public フェーズの祖先は、 全て public フェーズです。\n"
+"各リビジョンのフェーズは、 基本的に public 化する方向に変更されます。"
+
+msgid ""
+"How are phases managed?\n"
+"-----------------------"
+msgstr ""
+"フェーズはどう管理されるのか?\n"
+"------------------------------"
+
+msgid ""
+"For the most part, phases should work transparently. By default, a\n"
+"changeset is created in the draft phase and is moved into the public\n"
+"phase when it is pushed to another repository."
+msgstr ""
+"多くの場合、 フェーズは透過的に機能します。\n"
+"特に指定の無い場合、 新規リビジョンは draft フェーズで作成され、\n"
+"他リポジトリへの反映の際に public 化されます。"
+
+msgid ""
+"Once changesets become public, extensions like mq and rebase will\n"
+"refuse to operate on them to prevent creating duplicate changesets.\n"
+"Phases can also be manually manipulated with the :hg:`phase` command\n"
+"if needed. See :hg:`help -v phase` for examples."
+msgstr ""
+"予期せぬ類似リビジョン生成回避のため、 mq/rebase 等のエクステンションは、\n"
+" 一旦 public 化されたリビジョンを処理対処にできません。\n"
+"必要であれば :hg:`phase` コマンドによる手動でのフェーズ変更も可能です。\n"
+"実行例に関しては :hg:`help -v phase` を参照してください。"
+
+msgid ""
+"Phases and servers\n"
+"------------------"
+msgstr ""
+"フェーズとサーバ\n"
+"----------------"
+
+msgid "Normally, all servers are ``publishing`` by default. This means::"
+msgstr ""
+"特に指定の無い場合、 全てのサーバで ``publishing`` が実施されます。\n"
+"これは以下を意味します::"
+
+msgid ""
+" - all draft changesets that are pulled or cloned appear in phase\n"
+" public on the client"
+msgstr ""
+" - draft フェーズのリビジョンは、 pull/clone されたクライアント側では\n"
+"   public フェーズとみなされる"
+
+msgid ""
+" - all draft changesets that are pushed appear as public on both\n"
+" client and server"
+msgstr ""
+" - クライアントから push された draft フェーズのリビジョンは、\n"
+"   サーバ/クライアントの両方で public フェーズとみなされる"
+
+msgid " - secret changesets are neither pushed, pulled, or cloned"
+msgstr " - secret フェーズのリビジョンは push/pull/clone 対象にならない"
+
+msgid ""
+".. note::\n"
+"  Pulling a draft changeset from a publishing server does not mark it\n"
+"  as public on the server side due to the read-only nature of pull."
+msgstr ""
+".. note::\n"
+"  publishing サーバから draft フェーズのリビジョンを pull した場合でも、\n"
+"  『pull は読み出し専用』の原則に則り、 当該リビジョンのフェーズは、\n"
+"  サーバ側では draft のまま (public 化しない) です。"
+
+msgid ""
+"Sometimes it may be desirable to push and pull changesets in the draft\n"
+"phase to share unfinished work. This can be done by setting a\n"
+"repository to disable publishing in its configuration file::"
+msgstr ""
+"未完の作業を共有するために、 リビジョンのフェーズを draft のままで\n"
+"push/pull したい場合もあるでしょう。 publishing を無効化するには、\n"
+"サーバ側で以下の設定を行ってください。"
+
+msgid ""
+"  [phases]\n"
+"  publish = False"
+msgstr ""
+"  [phases]\n"
+"  publish = False"
+
+msgid "See :hg:`help config` for more information on config files."
+msgstr "設定ファイルに関する詳細は :hg:`help config` を参照してください。"
+
+msgid ""
+".. note::\n"
+"  Servers running older versions of Mercurial are treated as\n"
+"  publishing."
+msgstr ""
+".. note::\n"
+"  旧版の Mercurial で稼動しているサーバは、 publishing 実施に相当します。"
+
+msgid ""
+"Examples\n"
+"--------"
+msgstr ""
+"記述例\n"
+"------"
+
+msgid " - list changesets in draft or secret phase::"
+msgstr " - draft ないし secret フェーズのリビジョン一覧::"
+
+msgid "     hg log -r \"not public()\""
+msgstr "     hg log -r \"not public()\""
+
+msgid " - change all secret changesets to draft::"
+msgstr " - secret フェーズの全リビジョンのを draft 化::"
+
+msgid "     hg phase --draft \"secret()\""
+msgstr "     hg phase --draft \"secret()\""
+
+msgid ""
+" - forcibly move the current changeset and descendants from public to draft::"
+msgstr " - 現行リビジョンと子孫のフェーズを public から draft に強制変更::"
+
+msgid "     hg phase --force --draft ."
+msgstr "     hg phase --force --draft ."
+
+msgid " - show a list of changeset revision and phase::"
+msgstr " - リビジョン番号とフェーズを表示::"
+
+msgid "     hg log --template \"{rev} {phase}\\n\""
+msgstr "     hg log --template \"{rev} {phase}\\n\""
+
+msgid ""
+"See :hg:`help phase` for more information on manually manipulating phases.\n"
+msgstr "フェーズの手動操作に関しては :hg:`help phase` を参照してください。\n"
+
 msgid "Mercurial supports several ways to specify individual revisions."
 msgstr "Mercurial に個々のリビジョン指定する際には複数の記法が使用できます。"
 
@@ -17536,10 +17988,9 @@
 msgstr ""
 
 msgid ""
-"Identifiers such as branch names must be quoted with single or double\n"
-"quotes if they contain characters outside of\n"
-"``[._a-zA-Z0-9\\x80-\\xff]`` or if they match one of the predefined\n"
-"predicates."
+"Identifiers such as branch names may need quoting with single or\n"
+"double quotes if they contain characters like ``-`` or if they match\n"
+"one of the predefined predicates."
 msgstr ""
 
 msgid ""
@@ -17805,8 +18256,10 @@
 
 msgid ""
 ":add: add does not recurse in subrepos unless -S/--subrepos is\n"
-"    specified. Git and Subversion subrepositories are currently\n"
-"    silently ignored."
+"    specified.  However, if you specify the full path of a file in a\n"
+"    subrepo, it will be added even without -S/--subrepos specified.\n"
+"    Git and Subversion subrepositories are currently silently\n"
+"    ignored."
 msgstr ""
 
 msgid ""
@@ -17833,6 +18286,11 @@
 msgstr ""
 
 msgid ""
+":forget: forget currently only handles exact file matches in subrepos.\n"
+"    Git and Subversion subrepositories are currently silently ignored."
+msgstr ""
+
+msgid ""
 ":incoming: incoming does not recurse in subrepos unless -S/--subrepos\n"
 "    is specified. Git and Subversion subrepositories are currently\n"
 "    silently ignored."
@@ -18459,6 +18917,10 @@
 msgstr "連携先の changegroupsubset 機能未対応により、 部分取り込みできません。"
 
 #, python-format
+msgid "updating %s to public failed!\n"
+msgstr "%s のフェーズの public 化に失敗!\n"
+
+#, python-format
 msgid "%d changesets found\n"
 msgstr "%d 個のチェンジセット\n"
 
@@ -18592,10 +19054,12 @@
 msgstr "差分コンテキストでの行数指定が不正です: %r"
 
 #, python-format
-msgid ""
-"untracked file in working directory differs from file in requested revision: "
-"'%s'"
-msgstr "未登録ファイル %s は指定リビジョンでの記録内容と異なります"
+msgid "%s: untracked file differs\n"
+msgstr "%s: 未登録ファイルに差分あり\n"
+
+msgid ""
+"untracked files in working directory differ from files in requested revision"
+msgstr "指定リビジョンでの記録内容と異なる未登録ファイルが存在します"
 
 #, python-format
 msgid "case-folding collision between %s and %s"
@@ -18668,15 +19132,15 @@
 msgid "merging with a working directory ancestor has no effect"
 msgstr "作業領域の先祖とのマージは意味がありません"
 
-msgid "nothing to merge (use 'hg update' or check 'hg heads')"
-msgstr "マージは不要です('hg update' か 'hg heads' を使用してください)"
-
-msgid "outstanding uncommitted changes (use 'hg status' to list changes)"
-msgstr "未コミット変更があります('hg status' で変更一覧表示可能)"
+msgid "use 'hg update' or check 'hg heads'"
+msgstr "'hg update' を実施するか、'hg heads' 結果を確認してください"
+
+msgid "use 'hg status' to list changes"
+msgstr "変更一覧は 'hg status' で確認できます"
 
 #, python-format
 msgid "outstanding uncommitted changes in subrepository '%s'"
-msgstr "副リポジトリ %s に未コミット変更あり"
+msgstr "副リポジトリ %s の変更が未コミットです"
 
 msgid "crosses branches (merge branches or use --clean to discard changes)"
 msgstr ""
@@ -18718,11 +19182,11 @@
 
 #, python-format
 msgid "not a prefix: %s"
-msgstr ""
+msgstr "不正な接頭辞: %s"
 
 #, python-format
 msgid "not an infix: %s"
-msgstr ""
+msgstr "不正な挿入辞: %s"
 
 #, python-format
 msgid "%d out of %d hunks FAILED -- saving rejects to file %s\n"
@@ -18806,6 +19270,18 @@
 msgstr "パッチの適用に失敗"
 
 #, python-format
+msgid "ignoring inconsistent public root from remote: %s\n"
+msgstr "連携先からの矛盾するフェーズ public 化要求を無視: %s\n"
+
+#, python-format
+msgid "ignoring unexpected root from remote: %i %s\n"
+msgstr "連携先からの予期せぬフェーズ更新要求を無視: %i %s\n"
+
+#, python-format
+msgid "phases.new-commit: not a valid phase name ('%s')"
+msgstr "phases.new-commit: 不正なフェーズ名です ('%s')"
+
+#, python-format
 msgid "exited with status %d"
 msgstr "終了コード %d で終了しました"
 
@@ -18886,45 +19362,55 @@
 "``adds(pattern)``\n"
 "    Changesets that add a file matching pattern."
 msgstr ""
+"``adds(pattern)``\n"
+"    パターンに合致する名前のファイルを登録したリビジョン。"
 
 #. i18n: "adds" is a keyword
 msgid "adds requires a pattern"
-msgstr "adds 指定はパターンでなければなりません"
+msgstr "adds にはパターンを指定してください"
 
 msgid ""
 "``ancestor(single, single)``\n"
 "    Greatest common ancestor of the two changesets."
 msgstr ""
+"``ancestor(single, single)``\n"
+"    2つのリビジョンに共通な最新の祖先。"
 
 #. i18n: "ancestor" is a keyword
 msgid "ancestor requires two arguments"
-msgstr "ancestor 指定には2つの引数が必要です"
+msgstr "ancestor の引数は2つです"
 
 #. i18n: "ancestor" is a keyword
 msgid "ancestor arguments must be single revisions"
-msgstr "ancestor の引数はそれぞれ単一リビジョンでなければなりません"
+msgstr "ancestor の引数にはそれぞれ単一リビジョンを指定してください"
 
 msgid ""
 "``ancestors(set)``\n"
 "    Changesets that are ancestors of a changeset in set."
 msgstr ""
+"``ancestors(set)``\n"
+"    set 中のリビジョンに対する祖先リビジョン群。"
 
 msgid "~ expects a number"
-msgstr ""
+msgstr "~ には数値を指定してください"
 
 msgid ""
 "``author(string)``\n"
 "    Alias for ``user(string)``."
 msgstr ""
+"``author(string)``\n"
+"    ``user(string)`` 記述の別名。"
 
 #. i18n: "author" is a keyword
 msgid "author requires a string"
-msgstr "author 指定は文字列でなければなりません"
+msgstr "author には文字列を指定してください"
 
 msgid ""
 "``bisect(string)``\n"
 "    Changesets marked in the specified bisect status:"
 msgstr ""
+"``bisect(string)``\n"
+"    探索状態に合致するリビジョン群:"
 
 msgid ""
 "    - ``good``, ``bad``, ``skip``: csets explicitly marked as good/bad/skip\n"
@@ -18934,22 +19420,30 @@
 "    - ``untested``           : csets whose fate is yet unknown\n"
 "    - ``ignored``            : csets ignored due to DAG topology"
 msgstr ""
+"    - ``good``, ``bad``, ``skip``: 各状態にマークされたリビジョン群\n"
+"    - ``goods``, ``bads``      : good ないし bad と判断されたリビジョン群\n"
+"    - ``range``              : 探索範囲中のリビジョン群 \n"
+"    - ``pruned``             : 状態が確定したリビジョン群\n"
+"    - ``untested``           : 状態が未確定のリビジョン群\n"
+"    - ``ignored``            : 探索対象から除外されたリビジョン群"
 
 msgid "bisect requires a string"
-msgstr "bisect 指定は文字列でなければなりません"
+msgstr "bisect には文字列を指定してください"
 
 msgid ""
 "``bookmark([name])``\n"
 "    The named bookmark or all bookmarks."
 msgstr ""
+"``bookmark([name])``\n"
+"    指定ブックマーク対象、ないし全ブックマーク対象。"
 
 #. i18n: "bookmark" is a keyword
 msgid "bookmark takes one or no arguments"
-msgstr "bookmark 指定には1個ないし2個の引数が必要です"
+msgstr "bookmark の引数は最大1つです"
 
 #. i18n: "bookmark" is a keyword
 msgid "the argument to bookmark must be a string"
-msgstr ""
+msgstr "bookmark には文字列を指定してください"
 
 msgid ""
 "``branch(string or set)``\n"
@@ -18957,66 +19451,96 @@
 "given\n"
 "    changesets."
 msgstr ""
+"``branch(string or set)``\n"
+"    指定ブランチないしリビジョン群の属するブランチ群に、 属するリビジョン。"
 
 msgid ""
 "``children(set)``\n"
 "    Child changesets of changesets in set."
 msgstr ""
+"``children(set)``\n"
+"    指定リビジョン群の子リビジョン群。"
 
 msgid ""
 "``closed()``\n"
 "    Changeset is closed."
 msgstr ""
+"``closed()``\n"
+"    閉鎖されたリビジョン群。"
 
 #. i18n: "closed" is a keyword
 msgid "closed takes no arguments"
-msgstr "closed 指定には引数が指定できません"
+msgstr "closed には引数が指定できません"
 
 msgid ""
 "``contains(pattern)``\n"
 "    Revision contains a file matching pattern. See :hg:`help patterns`\n"
 "    for information about file patterns."
 msgstr ""
+"``contains(pattern)``\n"
+"    パターンに合致する名前のファイルが存在するリビジョン群。\n"
+"    パターンの詳細は :hg:`help patterns` を参照。"
 
 #. i18n: "contains" is a keyword
 msgid "contains requires a pattern"
-msgstr "contains 指定はパターンでなければなりません"
+msgstr "contains にはパターンを指定してください"
 
 msgid ""
 "``date(interval)``\n"
 "    Changesets within the interval, see :hg:`help dates`."
 msgstr ""
+"``date(interval)``\n"
+"    指定期間中のリビジョン群。 期間指定の詳細は :hg:`help dates` を参照。"
 
 #. i18n: "date" is a keyword
 msgid "date requires a string"
-msgstr "date 指定は文字列でなければなりません"
+msgstr "date には文字列を指定してください"
 
 msgid ""
 "``desc(string)``\n"
 "    Search commit message for string. The match is case-insensitive."
 msgstr ""
+"``desc(string)``\n"
+"    文字列をコミットログに持つリビジョン群。\n"
+"    合致判定は文字大小を無視。"
 
 #. i18n: "desc" is a keyword
 msgid "desc requires a string"
-msgstr "desc 指定は文字列でなければなりません"
+msgstr "desc には文字列を指定してください"
 
 msgid ""
 "``descendants(set)``\n"
 "    Changesets which are descendants of changesets in set."
 msgstr ""
+"``descendants(set)``\n"
+"    指定リビジョン群の子孫リビジョン群。"
+
+msgid ""
+"``draft()``\n"
+"    Changeset in draft phase."
+msgstr ""
+"``draft()``\n"
+"    フェーズが draft なリビジョン群。"
+
+msgid "draft takes no arguments"
+msgstr "draft には引数が指定できません"
 
 msgid ""
 "``filelog(pattern)``\n"
 "    Changesets connected to the specified filelog."
 msgstr ""
+"``filelog(pattern)``\n"
+"    パターンに合致するファイルに関連付けられたリビジョン群。"
 
 msgid "filelog requires a pattern"
-msgstr "filelog 指定はパターンでなければなりません"
+msgstr "filelog にはパターンを指定してください"
 
 msgid ""
 "``first(set, [n])``\n"
 "    An alias for limit()."
 msgstr ""
+"``first(set, [n])``\n"
+"    limit() 記述の別名。"
 
 msgid ""
 "``follow([file])``\n"
@@ -19024,26 +19548,27 @@
 "    If a filename is specified, the history of the given file is followed,\n"
 "    including copies."
 msgstr ""
+"``follow([file])``\n"
+"    ``::.`` (作業領域の第1親の祖先リビジョン群) 記述の別名。\n"
+"    ファイル名指定がある場合、 当該ファイルの履歴 (複製含む) を辿ります。"
 
 #. i18n: "follow" is a keyword
 msgid "follow takes no arguments or a filename"
-msgstr "follow 指定には引数もファイル名も指定できません"
+msgstr "follow の引数は最大1つです"
 
 msgid "follow expected a filename"
-msgstr "follow 指定はファイル名でなければなりません"
-
-#. i18n: "follow" is a keyword
-msgid "follow takes no arguments"
-msgstr "follow 指定には引数が指定できません"
+msgstr "follow にはファイル名を指定してください"
 
 msgid ""
 "``all()``\n"
 "    All changesets, the same as ``0:tip``."
 msgstr ""
+"``all()``\n"
+"    全リビジョン。 ``0:tip`` と等価。"
 
 #. i18n: "all" is a keyword
 msgid "all takes no arguments"
-msgstr "all 指定には引数が指定できません"
+msgstr "all には引数が指定できません"
 
 msgid ""
 "``grep(regex)``\n"
@@ -19051,10 +19576,15 @@
 "    to ensure special escape characters are handled correctly. Unlike\n"
 "    ``keyword(string)``, the match is case-sensitive."
 msgstr ""
+"    ``keyword(string)`` と同等ですが、 正規表現を使用できます。\n"
+"    ``grep(r'...')`` 形式の場合、 特殊文字もそのまま適用されます。\n"
+"    (※ 訳注: 接頭辞 'r' の使用は、 バックスラッシュ等を含めて、\n"
+"    文字列をそのまま使用する場合の Python 式の記法です)\n"
+"    ``keyword(string)`` と異なり、 文字大小は無視されません。"
 
 #. i18n: "grep" is a keyword
 msgid "grep requires a string"
-msgstr "grep 指定は文字列でなければなりません"
+msgstr "grep には文字列を指定してください"
 
 #, python-format
 msgid "invalid match pattern: %s"
@@ -19064,193 +19594,282 @@
 "``file(pattern)``\n"
 "    Changesets affecting files matched by pattern."
 msgstr ""
+"``file(pattern)``\n"
+"    パターンに合致するファイルに影響を与えるリビジョン群。"
 
 #. i18n: "file" is a keyword
 msgid "file requires a pattern"
-msgstr "file 指定はパターンでなければなりません"
+msgstr "file にはパターンを指定してください"
 
 msgid ""
 "``head()``\n"
 "    Changeset is a named branch head."
 msgstr ""
+"``head()``\n"
+"    名前付きブランチのヘッドリビジョン群。"
 
 #. i18n: "head" is a keyword
 msgid "head takes no arguments"
-msgstr "head 指定には引数が指定できません"
+msgstr "head には引数が指定できません"
 
 msgid ""
 "``heads(set)``\n"
 "    Members of set with no children in set."
 msgstr ""
+"``heads(set)``\n"
+"    指定リビジョン中の、 子リビジョンを持たないリビジョン群。"
 
 msgid ""
 "``keyword(string)``\n"
 "    Search commit message, user name, and names of changed files for\n"
 "    string. The match is case-insensitive."
 msgstr ""
+"``keyword(string)``\n"
+"    文字列が、 コミットログ、 ユーザ名、 変更対象ファイル名の、\n"
+"    いずれかに合致するリビジョン群。 合致判定は文字大小を無視。"
 
 #. i18n: "keyword" is a keyword
 msgid "keyword requires a string"
-msgstr "keyword 指定は文字列でなければなりません"
+msgstr "keyword には文字列を指定してください"
 
 msgid ""
 "``limit(set, [n])``\n"
 "    First n members of set, defaulting to 1."
 msgstr ""
+"``limit(set, [n])``\n"
+"    指定リビジョン群の冒頭 n 個。 無指定時は 1。"
 
 #. i18n: "limit" is a keyword
 msgid "limit requires one or two arguments"
-msgstr "limit 指定には1個ないし2個の引数が必要です"
+msgstr "limit の引数は1つないし2つです"
 
 #. i18n: "limit" is a keyword
 msgid "limit requires a number"
-msgstr "limit 指定は数値でなければなりません"
+msgstr "limit には数値を指定してください"
 
 #. i18n: "limit" is a keyword
 msgid "limit expects a number"
-msgstr "limit 指定は数値でなければなりません"
+msgstr "limit には数値を指定してください"
 
 msgid ""
 "``last(set, [n])``\n"
 "    Last n members of set, defaulting to 1."
 msgstr ""
+"``last(set, [n])``\n"
+"    指定リビジョン群の末尾 n 個。 無指定時は 1。"
 
 #. i18n: "last" is a keyword
 msgid "last requires one or two arguments"
-msgstr "last 指定には1個ないし2個の引数が必要です"
+msgstr "last の引数は1つないし2つです"
 
 #. i18n: "last" is a keyword
 msgid "last requires a number"
-msgstr "last 指定は数値でなければなりません"
+msgstr "last には数値を指定してください"
 
 #. i18n: "last" is a keyword
 msgid "last expects a number"
-msgstr "last 指定は数値でなければなりません"
+msgstr "last には数値を指定してください"
 
 msgid ""
 "``max(set)``\n"
 "    Changeset with highest revision number in set."
 msgstr ""
+"``max(set)``\n"
+"    指定リビジョン群中で、 リビジョン番号が最大のもの。"
 
 msgid ""
 "``merge()``\n"
 "    Changeset is a merge changeset."
 msgstr ""
+"``merge()``\n"
+"    マージ実施リビジョン群。"
 
 #. i18n: "merge" is a keyword
 msgid "merge takes no arguments"
-msgstr "merge 指定には引数が指定できません"
+msgstr "merge には引数が指定できません"
 
 msgid ""
 "``min(set)``\n"
 "    Changeset with lowest revision number in set."
 msgstr ""
+"``min(set)``\n"
+"    指定リビジョン群中で、 リビジョン番号が最小のもの。"
 
 msgid ""
 "``modifies(pattern)``\n"
 "    Changesets modifying files matched by pattern."
 msgstr ""
+"``modifies(pattern)``\n"
+"    パターンに合致するファイルを改変したリビジョン群。"
 
 #. i18n: "modifies" is a keyword
 msgid "modifies requires a pattern"
-msgstr "modifies 指定はパターンでなければなりません"
+msgstr "modifies にはパターンを指定してください"
 
 msgid ""
 "``id(string)``\n"
 "    Revision non-ambiguously specified by the given hex string prefix."
 msgstr ""
+"``id(string)``\n"
+"    16進文字列をハッシュ値とみなして厳密に特定可能なリビジョン。"
 
 #. i18n: "id" is a keyword
 msgid "id requires one argument"
-msgstr "id 指定には1つの引数が必要です"
+msgstr "id の引数は1つです"
 
 #. i18n: "id" is a keyword
 msgid "id requires a string"
-msgstr "id 指定は文字列でなければなりません"
+msgstr "id には文字列を指定してください"
 
 msgid ""
 "``outgoing([path])``\n"
 "    Changesets not found in the specified destination repository, or the\n"
 "    default push location."
 msgstr ""
+"``outgoing([path])``\n"
+"    指定連携先ないし無指定時反映先に、 存在しないリビジョン群。"
 
 #. i18n: "outgoing" is a keyword
 msgid "outgoing takes one or no arguments"
-msgstr ""
+msgstr "outgoing の引数は最大1つです"
 
 #. i18n: "outgoing" is a keyword
 msgid "outgoing requires a repository path"
-msgstr "outgoing 指定はリポジトリのパスでなければなりません"
+msgstr "outgoing にはリポジトリパスを指定してください"
 
 msgid ""
 "``p1([set])``\n"
 "    First parent of changesets in set, or the working directory."
 msgstr ""
+"``p1([set])``\n"
+"    指定リビジョン群ないし作業領域の、第1親リビジョン群。"
 
 msgid ""
 "``p2([set])``\n"
 "    Second parent of changesets in set, or the working directory."
 msgstr ""
+"``p2([set])``\n"
+"    指定リビジョン群ないし作業領域の、第2親リビジョン群。"
 
 msgid ""
 "``parents([set])``\n"
 "    The set of all parents for all changesets in set, or the working "
 "directory."
 msgstr ""
+"``parents([set])``\n"
+"    指定リビジョン群ないし作業領域の、 全親リビジョン群。"
 
 msgid "^ expects a number 0, 1, or 2"
-msgstr ""
+msgstr "^ には 0、 1 ないし 2 を指定してください"
 
 msgid ""
 "``present(set)``\n"
 "    An empty set, if any revision in set isn't found; otherwise,\n"
 "    all revisions in set."
 msgstr ""
+"``present(set)``\n"
+"    指定リビジョン群に存在しないものが含まれている場合は空集合、\n"
+"    それ以外なら指定リビジョン群そのもの。 (※ 訳注: 通常であれば、\n"
+"    存在しないリビジョンが含まれている場合、 処理が中断されますが、\n"
+"    present() を使用することで、 処理を継続することができます)"
+
+msgid ""
+"``public()``\n"
+"    Changeset in public phase."
+msgstr ""
+"``public()``\n"
+"    フェーズが public なリビジョン群。"
+
+msgid "public takes no arguments"
+msgstr "public には引数が指定できません"
+
+msgid ""
+"``remote([id [,path]])``\n"
+"    Local revision that corresponds to the given identifier in a\n"
+"    remote repository, if present. Here, the '.' identifier is a\n"
+"    synonym for the current local branch."
+msgstr ""
+"``remote([id [,path]])``\n"
+"    指定 id 相当のリビジョンが連携先に存在する場合は当該リビジョン、\n"
+"    それ以外は空集合。 '.' 記述は現ブランチ名を指します。"
+
+#. i18n: "remote" is a keyword
+msgid "remote takes one, two or no arguments"
+msgstr "remote の引数は0から2つです"
+
+#. i18n: "remote" is a keyword
+msgid "remote requires a string id"
+msgstr "remote には id 文字列を指定してください"
+
+#. i18n: "remote" is a keyword
+msgid "remote requires a repository path"
+msgstr "remote にはリポジトリパスを指定してください"
 
 msgid ""
 "``removes(pattern)``\n"
 "    Changesets which remove files matching pattern."
 msgstr ""
+"``removes(pattern)``\n"
+"    パターンに合致する名前のファイルを登録除外したリビジョン群。"
 
 #. i18n: "removes" is a keyword
 msgid "removes requires a pattern"
-msgstr "removes 指定はパターンでなければなりません"
+msgstr "removes にはパターンを指定してください"
 
 msgid ""
 "``rev(number)``\n"
 "    Revision with the given numeric identifier."
 msgstr ""
+"``rev(number)``\n"
+"    数値に合致するリビジョン。"
 
 #. i18n: "rev" is a keyword
 msgid "rev requires one argument"
-msgstr "rev 指定には1つの引数が必要です"
+msgstr "rev の引数は1つです"
 
 #. i18n: "rev" is a keyword
 msgid "rev requires a number"
-msgstr "rev 指定は数値でなければなりません"
+msgstr "rev には数値を指定してください"
 
 #. i18n: "rev" is a keyword
 msgid "rev expects a number"
-msgstr "rev 指定は数値でなければなりません"
+msgstr "rev には数値を指定してください"
 
 msgid ""
 "``reverse(set)``\n"
 "    Reverse order of set."
 msgstr ""
+"``reverse(set)``\n"
+"    指定リビジョン群の逆順。"
 
 msgid ""
 "``roots(set)``\n"
 "    Changesets with no parent changeset in set."
 msgstr ""
+"``roots(set)``\n"
+"    親リビジョンが指定リビジョン群中に存在しない全リビジョン群。"
+
+msgid ""
+"``secret()``\n"
+"    Changeset in secret phase."
+msgstr ""
+"``secret()``\n"
+"    フェーズが secret なリビジョン群。"
+
+msgid "secret takes no arguments"
+msgstr "secret には引数が指定できません"
 
 msgid ""
 "``sort(set[, [-]key...])``\n"
 "    Sort set by keys. The default sort order is ascending, specify a key\n"
 "    as ``-key`` to sort in descending order."
 msgstr ""
+"``sort(set[, [-]key...])``\n"
+"    key での指定方法で整列した集合。 基本の整列方式は昇順で、\n"
+"    降順整列の場合は ``-key`` 形式で記述します。"
 
 msgid "    The keys can be:"
-msgstr ""
+msgstr "    指定可能な整列方式は:"
 
 msgid ""
 "    - ``rev`` for the revision number,\n"
@@ -19259,13 +19878,18 @@
 "    - ``user`` for user name (``author`` can be used as an alias),\n"
 "    - ``date`` for the commit date"
 msgstr ""
+"    - リビジョン番号順の ``rev``\n"
+"    - ブランチ名順の ``branch``\n"
+"    - コミットログ (description) 順の ``desc``\n"
+"    - ユーザ名順の ``user`` (別名の ``author`` も使用可能)\n"
+"    - コミット日時順の ``date``"
 
 #. i18n: "sort" is a keyword
 msgid "sort requires one or two arguments"
-msgstr "sort 指定には1個ないし2個の引数が必要です"
+msgstr "sort の引数は1つないし2つです"
 
 msgid "sort spec must be a string"
-msgstr "sort への整列方式指定は文字列でなければなりません"
+msgstr "sort には文字列を指定してください"
 
 #, python-format
 msgid "unknown sort key %r"
@@ -19275,19 +19899,23 @@
 "``tag([name])``\n"
 "    The specified tag by name, or all tagged revisions if no name is given."
 msgstr ""
+"``tag([name])``\n"
+"    指定タグ対象リビジョン、 ないしタグ付け対象の全リビジョン群。"
 
 #. i18n: "tag" is a keyword
 msgid "tag takes one or no arguments"
-msgstr "tagged 指定には引数が指定できません"
+msgstr "tagged の引数は最大1つです"
 
 #. i18n: "tag" is a keyword
 msgid "the argument to tag must be a string"
-msgstr "tag 指定は文字列でなければなりません"
+msgstr "tag には文字列を指定してください"
 
 msgid ""
 "``user(string)``\n"
 "    User name contains string. The match is case-insensitive."
 msgstr ""
+"``user(string)``\n"
+"    文字列をユーザ名に持つリビジョン群。 合致判定は文字大小を無視。"
 
 msgid "can't negate that"
 msgstr "負値にできません"
@@ -19297,12 +19925,16 @@
 
 #, python-format
 msgid "invalid number of arguments: %s"
-msgstr ""
+msgstr "引数の数が不正です: %s"
 
 msgid "empty query"
 msgstr "問い合わせが空です"
 
 #, python-format
+msgid "no changes found (ignored %d secret changesets)\n"
+msgstr "差分はありません (secret フェーズの %d 個のリビジョンは無視)\n"
+
+#, python-format
 msgid "ui.portablefilenames value is invalid ('%s')"
 msgstr "ui.portablefilenames 値が不正です ('%s')"
 
@@ -19319,8 +19951,8 @@
 msgstr "パスに不正な要素が含まれています: %s"
 
 #, python-format
-msgid "path %r is inside nested repo %r"
-msgstr "パス %r は入れ子リポジトリ %r 内にあります"
+msgid "path '%s' is inside nested repo %r"
+msgstr "パス '%s' は入れ子リポジトリ %r 内にあります"
 
 #, python-format
 msgid "path %r traverses symbolic link %r"
@@ -19349,10 +19981,10 @@
 msgstr "変更点を探索中\n"
 
 msgid "all local heads known remotely\n"
-msgstr ""
+msgstr "手元の全ヘッドは連携先でも既知です\n"
 
 msgid "sampling from both directions\n"
-msgstr ""
+msgstr "両方向から採取中\n"
 
 msgid "queries"
 msgstr "問い合わせ"
@@ -19395,13 +20027,13 @@
 msgid "no suitable response from remote hg"
 msgstr "遠隔ホストの応答が不適切"
 
-msgid "remote: "
-msgstr "遠隔ホスト: "
-
 #, python-format
 msgid "push refused: %s"
 msgstr "履歴反映が拒否されました: %s"
 
+msgid "ssl connection failed"
+msgstr "ssl 接続に失敗"
+
 msgid "Python SSL support not found"
 msgstr "Python の SSL サポート機能が使用できません"
 
@@ -19426,22 +20058,6 @@
 msgstr "web.cacerts が見つかりません: %s"
 
 #, python-format
-msgid "%s certificate error: %s (use --insecure to connect insecurely)"
-msgstr "%s の証明書不正: %s (非セキュア接続で継続するなら --insecure 指定)"
-
-#, python-format
-msgid "invalid certificate for %s with fingerprint %s"
-msgstr "%s の証明書(fingerprint は %s)が不正"
-
-#, python-format
-msgid ""
-"warning: %s certificate with fingerprint %s not verified (check "
-"hostfingerprints or web.cacerts config setting)\n"
-msgstr ""
-"警告: %s の証明書(fingerprint は %s)検証は省略 (設定ファイルの "
-"hostfingerprints ないし web.cacerts 設定を確認のこと)\n"
-
-#, python-format
 msgid "host fingerprint for %s can't be verified (Python too old)"
 msgstr "ホスト %s のフィンガープリントが検証できません (Python が古いため)"
 
@@ -19450,6 +20066,39 @@
 msgstr "警告: %s の証明書は検証できません (Python が古いため)\n"
 
 #, python-format
+msgid "%s ssl connection error"
+msgstr "%s への ssl 接続に失敗"
+
+#, python-format
+msgid "%s certificate error: no certificate received"
+msgstr "%s の証明書検証に失敗: 証明書が受け取れません"
+
+#, python-format
+msgid "certificate for %s has unexpected fingerprint %s"
+msgstr "%s の証明書の fingerprint %s は期待値と異なります"
+
+msgid "check hostfingerprint configuration"
+msgstr "hostfingerprint 設定を確認してください"
+
+#, python-format
+msgid "%s certificate error: %s"
+msgstr "%s の証明書検証に失敗: %s"
+
+#, python-format
+msgid "configure hostfingerprint %s or use --insecure to connect insecurely"
+msgstr ""
+"%s に hostfingerprint 設定するか、非セキュア接続で継続するなら --insecure を"
+"指定してください"
+
+#, python-format
+msgid ""
+"warning: %s certificate with fingerprint %s not verified (check "
+"hostfingerprints or web.cacerts config setting)\n"
+msgstr ""
+"警告: %s の証明書 (fingerprint は %s) 検証を省略(設定ファイルの "
+"hostfingerprints ないし web.cacerts 設定を確認のこと)\n"
+
+#, python-format
 msgid "'%s' does not appear to be an hg repository"
 msgstr "'%s' は Mercurial リポジトリ形式とは思われません"
 
@@ -19555,7 +20204,7 @@
 
 #, python-format
 msgid "'svn' executable not found for subrepo '%s'"
-msgstr ""
+msgstr "副リポジトリ '%s' に使用する 'svn' コマンドが見つかりません"
 
 msgid "cannot retrieve svn tool version"
 msgstr "svn ツールのバージョンが取得できません"
@@ -19573,14 +20222,14 @@
 
 #, python-format
 msgid "checking out detached HEAD in subrepo %s\n"
-msgstr ""
+msgstr "副リポジトリ %s において、切り離された HEAD が取り出されました。\n"
 
 msgid "check out a git branch if you intend to make changes\n"
-msgstr ""
+msgstr "変更を実施するなら、 git ブランチを取り出してください。\n"
 
 #, python-format
 msgid "subrepo %s is missing"
-msgstr ""
+msgstr "副リポジトリ %s が見つかりません"
 
 #, python-format
 msgid "unrelated git branch checked out in subrepo %s\n"
@@ -19595,6 +20244,8 @@
 "no branch checked out in subrepo %s\n"
 "cannot push revision %s"
 msgstr ""
+"副リポジトリ %s にブランチが取り出されていません。\n"
+"リビジョン %s の反映ができません。"
 
 #, python-format
 msgid "%s, line %s: %s\n"
@@ -19865,6 +20516,12 @@
 "    digit string."
 msgstr ":node: 文字列。 リビジョン識別用の 40 桁 16 進数ハッシュ値。"
 
+msgid ":phase: String. The changeset phase name."
+msgstr ":phase: 文字列。 当該リビジョンのフェーズ名。"
+
+msgid ":phaseidx: Integer. The changeset phase index."
+msgstr ":phaseidx: 数値。 当該リビジョンのフェーズ値。"
+
 msgid ":rev: Integer. The repository-local changeset revision number."
 msgstr ":rev: 整数。 各リポジトリ固有のリビジョン番号。"
 
--- a/i18n/pt_BR.po	Sat Jan 21 15:17:39 2012 +0200
+++ b/i18n/pt_BR.po	Wed Feb 01 16:28:35 2012 -0600
@@ -31,7 +31,7 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2011-10-18 09:38-0200\n"
+"POT-Creation-Date: 2012-01-23 16:07-0200\n"
 "PO-Revision-Date: 2011-06-28 09:55+0200\n"
 "Last-Translator: Wagner Bruna <wbruna@yahoo.com>\n"
 "Language-Team: Brazilian Portuguese\n"
@@ -288,8 +288,8 @@
 "  # The super user is allowed on any branch:\n"
 "  * = super-user"
 msgstr ""
-"  # super-usuário é permitido em qualquer ramo:\n"
-"  * = super-usuário"
+"  # superusuário é permitido em qualquer ramo:\n"
+"  * = superusuário"
 
 msgid ""
 "  # Everyone is allowed on branch-for-tests:\n"
@@ -461,7 +461,7 @@
 "deprecated, and will not be updated for new Bugzilla versions going\n"
 "forward."
 msgstr ""
-"A escita direta na base de dados é suscetível a mudanças de schema,\n"
+"A escrita direta na base de dados é suscetível a mudanças de schema,\n"
 "e se baseia em um script Bugzilla para enviar notificações de mudança\n"
 "de bug por email. Este script é executado pelo usuário que executa o\n"
 "Mercurial, deve ser executado no host contendo a instalação do\n"
@@ -1176,7 +1176,7 @@
 "Esta extensão modifica os comandos status e resolve para adicionar\n"
 "coloração às suas respectivas saídas para refletir estado de arquivos,\n"
 "o comando qseries para adicionar coloração para refletir os estados dos\n"
-"patches (aplicado, não-aplicado, faltando), e comandos relacionados com\n"
+"patches (aplicado, não aplicado, faltando), e comandos relacionados com\n"
 "diff para destacar adições, remoções, cabeçalhos de diffs e espaços em\n"
 "branco no final das linhas."
 
@@ -1828,7 +1828,7 @@
 "    referenciando ramos convertidos. Os valores padrão ``trunk``,\n"
 "    ``branches`` e ``tags`` podem ser sobrepostos pelas seguintes\n"
 "    opções. Defina-os como caminhos relativos à URL de origem, ou\n"
-"    deixe-os em branco para desabilitar a auto-detecção."
+"    deixe-os em branco para desabilitar a detecção automática."
 
 msgid "    The following options can be set with ``--config``:"
 msgstr "    As seguintes opções podem ser definidas com ``--config``:"
@@ -2517,6 +2517,10 @@
 msgstr "svn: nenhuma revisão encontrada após revisão inicial %d"
 
 #, python-format
+msgid "svn: revision %s not found"
+msgstr "svn: revisão %s não encontrada"
+
+#, python-format
 msgid "%s not found up to revision %d"
 msgstr "%s não encontrado até revisão %d"
 
@@ -3067,8 +3071,8 @@
 "not merging with %d other new branch heads (use \"hg heads .\" and \"hg "
 "merge\" to merge them)\n"
 msgstr ""
-"não mesclando com %d outros novas cabeças de ramo (use \"hg heads .\" e \"hg"
-" merge\" para mescla-los)\n"
+"não mesclando com %d outras novas cabeças de ramo (use \"hg heads .\" e \"hg"
+" merge\" para mesclá-las)\n"
 
 #, python-format
 msgid "updating to %d:%s\n"
@@ -4140,7 +4144,7 @@
 "not previously updated to."
 msgstr ""
 "Ao trazer revisões de um repositório remoto que afetam largefiles, o\n"
-"Mercurial se comporta normalmente. No entanto, au atualizar para tal\n"
+"Mercurial se comporta normalmente. No entanto, ao atualizar para tal\n"
 "revisão, quaisquer largefiles necessárias para tal revisão serão\n"
 "baixadas e guardadas em um cache (se elas nunca foram baixadas antes)\n"
 ". Isto quer dizer que acesso à rede pode ser necessário para atualizar\n"
@@ -4319,6 +4323,18 @@
 msgid "largefile %s becomes symlink"
 msgstr "o largefile %s se tornou um link simbólico"
 
+#, python-format
+msgid "skipping incorrectly formatted tag %s\n"
+msgstr "omitindo etiqueta %s formatada incorretamente\n"
+
+#, python-format
+msgid "skipping incorrectly formatted id %s\n"
+msgstr "omitindo id %s formatado incorretamente\n"
+
+#, python-format
+msgid "no mapping for id %s\n"
+msgstr "nenhum mapeamento para o id %s\n"
+
 msgid "uploading largefiles"
 msgstr "enviando largefiles"
 
@@ -4361,10 +4377,6 @@
 msgid "Found %s in system cache\n"
 msgstr "Encontrado %s no cache do sistema\n"
 
-#, python-format
-msgid "bad hash in '%s' (only %d bytes long)"
-msgstr "hash ruim em '%s' (o comprimento é de apenas %d bytes)"
-
 msgid "Can't get file locally"
 msgstr "Não é possível obter o arquivo localmente"
 
@@ -4416,6 +4428,9 @@
 msgid "removing %s\n"
 msgstr "removendo %s\n"
 
+msgid "--normal cannot be used with --large"
+msgstr "--normal não pode ser usado com --large"
+
 msgid "uncommitted local changes"
 msgstr "alterações locais pendentes"
 
@@ -4469,6 +4484,13 @@
 msgid "no files to copy"
 msgstr "nenhum arquivo para copiar"
 
+msgid "caching new largefiles\n"
+msgstr "adicionando novos largefiles ao cache\n"
+
+#, python-format
+msgid "%d largefiles cached\n"
+msgstr "%d largefiles adicionados ao cache\n"
+
 #, python-format
 msgid "unknown archive type '%s'"
 msgstr "tipo de arquivo '%s' desconhecido"
@@ -4477,6 +4499,12 @@
 msgstr "não é possível fornecer prefixo ao arquivar para arquivos"
 
 #, python-format
+msgid "largefile %s not found in repo store or system cache"
+msgstr ""
+"largefile %s não encontrado no armazenamento do repositório nem no cache de "
+"sistema"
+
+#, python-format
 msgid "not removing %s: file is already untracked\n"
 msgstr "%s não removido: arquivo já não é rastreado\n"
 
@@ -4490,17 +4518,24 @@
 msgid "largefiles: %d to upload\n"
 msgstr "largefiles: %d a serem enviados\n"
 
-msgid "addremove cannot be run on a repo with largefiles"
-msgstr "addremove não pode ser executado em um repositório com largefiles"
-
-#, python-format
-msgid "largefiles: failed to put %s (%s) into store: %s"
-msgstr "largefiles: não foi possível colocar %s (%s) no armazenamento: %s"
+msgid "largefile contents do not match hash"
+msgstr "o conteúdo do largefile não combina com o hash"
+
+#, python-format
+msgid "largefiles: failed to put %s into store: %s"
+msgstr "largefiles: não foi possível colocar %s no armazenamento: %s"
 
 #, python-format
 msgid "requested largefile %s not present in cache"
 msgstr "largefile %s pedido não está presente no cache"
 
+msgid "remote: "
+msgstr "remoto: "
+
+#, python-format
+msgid "unexpected putlfile response: %s"
+msgstr "resposta inesperada de putlfile: %s"
+
 msgid "putlfile failed:"
 msgstr "putlfile falhou:"
 
@@ -4553,6 +4588,9 @@
 msgid "add as largefile"
 msgstr "adiciona como largefile"
 
+msgid "add as normal file"
+msgstr "adiciona como arquivo normal"
+
 msgid ""
 "add all files above this size (in megabytes) as largefiles (default: 10)"
 msgstr ""
@@ -4648,6 +4686,21 @@
 "possivelmente perdendo dados no segundo caso."
 
 msgid ""
+"It may be desirable for mq changesets to be kept in the secret phase (see\n"
+":hg:`help phases`), which can be enabled with the following setting::"
+msgstr ""
+"Pode ser desejável que revisões gerenciadas pela mq sejam mantidas\n"
+"na fase secreta (veja :hg:`help phases`), comportamento que pode ser\n"
+"habilitado com a seguinte configuração::"
+
+msgid ""
+"  [mq]\n"
+"  secret = True"
+msgstr ""
+"  [mq]\n"
+"  secret = True"
+
+msgid ""
 "You will by default be managing a patch queue named \"patches\". You can\n"
 "create other, independent patch queues with the :hg:`qqueue` command.\n"
 msgstr ""
@@ -4754,6 +4807,9 @@
 msgid "patch %s is empty\n"
 msgstr "o patch %s é vazio\n"
 
+msgid "qpush exactly duplicates child changeset"
+msgstr "qpush duplicaria com exatidão uma revisão filha"
+
 msgid "repository commit failed"
 msgstr "consolidação no repositório falhou"
 
@@ -4926,6 +4982,12 @@
 msgstr ""
 "desempilhar removeria uma revisão não gerenciada por esta fila de patches"
 
+msgid "popping would remove an immutable revision"
+msgstr "qpop removeria uma revisão imutável"
+
+msgid "see \"hg help phases\" for details"
+msgstr "veja \"hg help phases\" para mais detalhes"
+
 msgid "deletions found between repo revs"
 msgstr "remoções encontradas entre revisões do repositório"
 
@@ -4939,6 +5001,9 @@
 msgid "cannot refresh a revision with children"
 msgstr "não se pode renovar uma revisão com filhos"
 
+msgid "cannot refresh immutable revision"
+msgstr "não se pode renovar uma revisão imutável"
+
 msgid ""
 "refresh interrupted while patch was popped! (revert --all, qpush to "
 "recover)\n"
@@ -5016,6 +5081,10 @@
 msgstr "a revisão %d tem filhos não gerenciados"
 
 #, python-format
+msgid "revision %d is not mutable"
+msgstr "a revisão %d não é mutável"
+
+#, python-format
 msgid "cannot import merge revision %d"
 msgstr "não se pode importar a revisão de mesclagem %d"
 
@@ -5987,6 +6056,9 @@
 msgid "no revisions specified"
 msgstr "nenhuma revisão especificada"
 
+msgid "warning: uncommitted changes in the working directory\n"
+msgstr "aviso: mudanças não consolidadas no diretório de trabalho\n"
+
 msgid "list all available queues"
 msgstr "lista todas as filas disponíveis"
 
@@ -6180,7 +6252,7 @@
 "Uma vez que os ganchos estejam instalados, os assinantes devem ser\n"
 "inscritos. Use a seção ``[usersubs]`` para mapear repositórios para\n"
 "um dado e-mail ou a seção ``[reposubs]`` para mapear e-mails para um\n"
-"únioco repositório::"
+"único repositório::"
 
 msgid ""
 "  [usersubs]\n"
@@ -6364,6 +6436,24 @@
 "  Se True, envia notificações para revisões de mesclagem. Padrão: True."
 
 msgid ""
+"notify.mbox\n"
+"  If set, append mails to this mbox file instead of sending. Default: None."
+msgstr ""
+"notify.mboxt\n"
+"  Se definido, anexa mensagens a este arquivo mbox ao invés de enviar.  O padrão é None."
+
+msgid ""
+"notify.fromauthor\n"
+"  If set, use the first committer of the changegroup for the \"From\" field of\n"
+"  the notification mail. If not set, take the user from the pushing repo.\n"
+"  Default: False."
+msgstr ""
+"notify.fromauthor\n"
+"  Se for True, usa o primeiro autor do changegroup para o campo \"From\"\n"
+"  do email de notificação. Se não definido, usa o usuário do repositório\n"
+"  que estiver fazendo o push. Padrão: False."
+
+msgid ""
 "If set, the following entries will also be used to customize the "
 "notifications:"
 msgstr ""
@@ -6906,18 +6996,15 @@
 msgid "Displaying "
 msgstr "Exibindo "
 
-msgid "Writing "
-msgstr "Escrevendo "
-
-msgid "writing"
-msgstr "escrevendo"
-
 msgid "Sending "
 msgstr "Enviando "
 
 msgid "sending"
 msgstr "enviando"
 
+msgid "writing"
+msgstr "escrevendo"
+
 msgid "show progress bars for some actions"
 msgstr "mostra barras de progresso para algumas ações"
 
@@ -7324,6 +7411,13 @@
 msgid "use --keep to keep original changesets"
 msgstr "use --keep para manter as revisões originais"
 
+#, python-format
+msgid "can't rebase immutable changeset %s"
+msgstr "não é possível rebasear a revisão imutável %s"
+
+msgid "see hg help phases for details"
+msgstr "veja hg help phases para mais detalhes"
+
 msgid "nothing to rebase\n"
 msgstr "nada para rebasear\n"
 
@@ -7369,6 +7463,10 @@
 msgid "no rebase in progress"
 msgstr "nenhum rebaseamento em progresso"
 
+msgid "warning: immutable rebased changeset detected, can't abort\n"
+msgstr ""
+"aviso: detectada uma revisão imutável rebaseada, não é possível abortar\n"
+
 msgid "warning: new changesets detected on target branch, can't abort\n"
 msgstr ""
 "aviso: novas revisões detectadas no ramo de destino, não é possível "
@@ -8326,8 +8424,8 @@
 msgstr "atualizando marcador %s\n"
 
 #, python-format
-msgid "not updating divergent bookmark %s\n"
-msgstr "marcador divergente %s não atualizado\n"
+msgid "divergent bookmark %s stored as %s\n"
+msgstr "marcador divergente %s guardado como %s\n"
 
 msgid "searching for changed bookmarks\n"
 msgstr "procurando por marcadores modificados\n"
@@ -8488,6 +8586,10 @@
 msgstr "etiqueta:    %s\n"
 
 #, python-format
+msgid "phase:       %s\n"
+msgstr "fase:        %s\n"
+
+#, python-format
 msgid "parent:      %d:%s\n"
 msgstr "pai:         %d:%s\n"
 
@@ -9062,7 +9164,7 @@
 "      cancel the merge and leave the child of REV as a head to be\n"
 "      merged separately."
 msgstr ""
-"      Antes da versao 1.7 do Mercurial, o comportamento do comando\n"
+"      Antes da versão 1.7 do Mercurial, o comportamento do comando\n"
 "      backout sem --merge era equivalente a especificar --merge seguido por\n"
 "      :hg:`update --clean .`, cancelando a mesclagem e deixando a filha\n"
 "      de REV como uma cabeça a ser mesclada explicitamente."
@@ -9098,7 +9200,7 @@
 msgstr "mesclando com revisão %s\n"
 
 msgid "reset bisect state"
-msgstr "reinicia estado do bisect"
+msgstr "reinicia o estado da bissecção"
 
 msgid "mark changeset good"
 msgstr "marca revisão boa"
@@ -9110,7 +9212,7 @@
 msgstr "descartando revisão de teste"
 
 msgid "extend the bisect range"
-msgstr "amplia o alcance do bisect"
+msgstr "amplia o alcance da bissecção"
 
 msgid "use command to check changeset state"
 msgstr "usa o comando para verificar o estado da revisão"
@@ -9184,7 +9286,7 @@
 "      - advance the current bisection by marking current revision as good or\n"
 "        bad::"
 msgstr ""
-"      - avança a bisecção atual marcando a revisão atual como\n"
+"      - avança a bissecção atual marcando a revisão atual como\n"
 "        boa ou ruim::"
 
 msgid ""
@@ -9210,7 +9312,7 @@
 "          hg bisect --skip 23"
 
 msgid "      - forget the current bisection::"
-msgstr "      - esquece a bisecção atual::"
+msgstr "      - esquece a bissecção atual::"
 
 msgid "          hg bisect --reset"
 msgstr "          hg bisect --reset"
@@ -9238,13 +9340,13 @@
 "        bisection::"
 msgstr ""
 "      - mostra todas as revisões cujos estados já são conhecidos\n"
-"        na bisecção atual::"
+"        na bissecção atual::"
 
 msgid "          hg log -r \"bisect(pruned)\""
 msgstr "          hg log -r \"bisect(pruned)\""
 
 msgid "      - see all changesets that took part in the current bisection::"
-msgstr "      - mostra todas as revisões que tomam parte na bisecção atual::"
+msgstr "      - mostra todas as revisões que tomam parte na bissecção atual::"
 
 msgid "          hg log -r \"bisect(range)\""
 msgstr "          hg log -r \"bisect(range)\""
@@ -9330,8 +9432,8 @@
 msgid "rename a given bookmark"
 msgstr "renomeia um marcador"
 
-msgid "do not mark a new bookmark active"
-msgstr "não marca como ativo um novo marcador"
+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]"
@@ -9340,16 +9442,16 @@
 msgstr "rastreia uma linha de desenvolvimento com marcadores móveis"
 
 msgid ""
-"    Bookmarks are pointers to certain commits that move when\n"
-"    committing. Bookmarks are local. They can be renamed, copied and\n"
-"    deleted. It is possible to use bookmark names in :hg:`merge` and\n"
-"    :hg:`update` to merge and update respectively to a given bookmark."
+"    Bookmarks are pointers to certain commits that move when committing.\n"
+"    Bookmarks are local. They can be renamed, copied and deleted. It is\n"
+"    possible to use :hg:`merge NAME` to merge from a given bookmark, and\n"
+"    :hg:`update NAME` to update to a given bookmark."
 msgstr ""
 "    Marcadores são ponteiros para certas consolidações que se movem\n"
 "    quando novas consolidações forem feitas. Marcadores são locais.\n"
 "    Eles podem ser renomeados, copiados e removidos. É possível usar\n"
-"    o nome de um marcador em :hg:`merge` e :hg:`update` para\n"
-"    respectivamente mesclar ou atualizar para um marcador dado."
+"    :hg:`merge NOME` para mesclar com um marcador específico, e\n"
+"    :hg:`update NOME` para atualizar para um marcador específico."
 
 msgid ""
 "    You can use :hg:`bookmark NAME` to set a bookmark on the working\n"
@@ -9366,16 +9468,31 @@
 "    Bookmarks can be pushed and pulled between repositories (see :hg:`help\n"
 "    push` and :hg:`help pull`). This requires both the local and remote\n"
 "    repositories to support bookmarks. For versions prior to 1.8, this means\n"
-"    the bookmarks extension must be enabled.\n"
-"    "
+"    the bookmarks extension must be enabled."
 msgstr ""
 "    Marcadores podem ser transferidos entre repositórios usando push\n"
 "    e pull (veja :hg:`help push` e :hg:`help pull`). Isto requer que\n"
-"    a extensão bookmark esteja habilitada tanto no repositório local\n"
-"    como no remoto. Em versões anteriores à 1.8, a extensão bookmarks\n"
+"    marcadores sejam suportados tanto no repositório local como no\n"
+"    remoto. Em versões anteriores à 1.8, a extensão bookmarks\n"
 "    precisa ser habilitada.\n"
 "    "
 
+msgid ""
+"    With -i/--inactive, the new bookmark will not be made the active\n"
+"    bookmark. If -r/--rev is given, the new bookmark will not be made\n"
+"    active even if -i/--inactive is not given. If no NAME is given, the\n"
+"    current active bookmark will be marked inactive.\n"
+"    "
+msgstr ""
+"    Com -i/--inactive, o novo marcador não se tornará ativo. Se\n"
+"    -r/--rev for passada, o novo marcador não se tornará ativo mesmo\n"
+"    que -i/--inactive não seja passada. Se nenhum NOME for dado, o\n"
+"    marcador ativo atual se tornará inativo.\n"
+"    "
+
+msgid "bookmark name required"
+msgstr "requerido nome do marcador"
+
 #, python-format
 msgid "bookmark '%s' does not exist"
 msgstr "o marcador '%s' não existe"
@@ -9387,9 +9504,6 @@
 msgid "new bookmark name required"
 msgstr "requerido nome do novo marcador"
 
-msgid "bookmark name required"
-msgstr "requerido nome do marcador"
-
 msgid "bookmark name cannot contain newlines"
 msgstr "o nome do marcador não pode conter novas linhas"
 
@@ -9709,10 +9823,10 @@
 "    containing the tag."
 msgstr ""
 "    Para trazer apenas um subconjunto de revisões, especifique um\n"
-"    ou mais identificadores de revisão com -r/--rev ou remos com\n"
+"    ou mais identificadores de revisão com -r/--rev ou ramos com\n"
 "    -b/--branch. O clone resultante conterá apenas as revisões\n"
 "    especificadas e seus ancestrais. Estas opções (ou\n"
-"    'clone origem#rev dest') impicam --pull, mesmo para repositórios\n"
+"    'clone origem#rev dest') implicam --pull, mesmo para repositórios\n"
 "    locais. Note que especificar uma etiqueta incluirá a revisão\n"
 "    etiquetada mas não incluirá a revisão que define a etiqueta em si."
 
@@ -10836,11 +10950,12 @@
 "    use the --all flag."
 msgstr ""
 "    Por padrão, grep imprime uma saída apenas para a primeira revisão\n"
-"    de um arquivo no qual ele encontra um casamento. Para fazê-lo\n"
-"    imprimir todas as revisões que contenham uma mudança no casamento\n"
-"    (\"-\" para um casamento que se torna um não-casamento, ou \"+\"\n"
-"    para um não-casamento que se torna um casamento), use a opção\n"
-"    --all ."
+"    de um arquivo no qual ele encontra uma correspondência.\n"
+"    Para fazê-lo imprimir todas as revisões que contenham uma\n"
+"    mudança de correspondência (\"-\" para uma correspondência\n"
+"    que se torne uma não correspondência, ou \"+\" para uma não\n"
+"    correspondência que se torne uma correspondência), use a\n"
+"    opção --all ."
 
 msgid ""
 "    Returns 0 if a match is found, 1 otherwise.\n"
@@ -11036,6 +11151,9 @@
 msgid "use \"hg help -e %s\" to show help for the %s extension"
 msgstr "use \"hg help -e %s\" para mostrar a ajuda para a extensão %s"
 
+msgid "options:"
+msgstr "opções:"
+
 #, python-format
 msgid ""
 "\n"
@@ -11289,7 +11407,7 @@
 
 msgid "      - import a traditional patch from a website and detect renames::"
 msgstr ""
-"      - importa um patch traditional de um servidor web e detecta\n"
+"      - importa um patch tradicional de um servidor web e detecta\n"
 "        renomeações::"
 
 msgid "          hg import -s 80 http://example.com/bugfix.patch"
@@ -11479,8 +11597,8 @@
 "    \"xargs\". Isso irá evitar que \"xargs\" trate nomes de arquivo\n"
 "    contendo espaços como múltiplos nomes de arquivo."
 
-msgid "only follow the first parent of merge changesets"
-msgstr "acompanha apenas o primeiro pai de revisões de mesclagem"
+msgid "only follow the first parent of merge changesets (DEPRECATED)"
+msgstr "acompanha apenas o primeiro pai de revisões de mesclagem (OBSOLETO)"
 
 msgid "show revisions matching date spec"
 msgstr "mostra revisões que casem com a especificação de data"
@@ -11494,8 +11612,8 @@
 msgid "include revisions where files were removed"
 msgstr "inclui revisões nas quais arquivos foram removidos"
 
-msgid "show only merges"
-msgstr "mostra apenas mesclagens"
+msgid "show only merges (DEPRECATED)"
+msgstr "mostra apenas mesclagens (OBSOLETO)"
 
 msgid "revisions committed by user"
 msgstr "revisões de autoria do usuário"
@@ -11509,8 +11627,8 @@
 msgid "do not display revision or any of its ancestors"
 msgstr "não exibe revisão ou qualquer de seus ancestrais"
 
-msgid "show hidden changesets"
-msgstr "exibe revisões ocultas"
+msgid "show hidden changesets (DEPRECATED)"
+msgstr "exibe revisões ocultas (OBSOLETO)"
 
 msgid "[OPTION]... [FILE]"
 msgstr "[OPÇÃO]... [ARQUIVO]"
@@ -11790,12 +11908,11 @@
 msgid "run 'hg heads' to see all heads"
 msgstr "execute 'hg heads' para ver todas as cabeças"
 
-msgid "there is nothing to merge"
-msgstr "não há nada para mesclar"
-
-#, python-format
-msgid "%s - use \"hg update\" instead"
-msgstr "%s - use \"hg update\""
+msgid "nothing to merge"
+msgstr "nada para mesclar"
+
+msgid "use 'hg update' instead"
+msgstr "use 'hg update'"
 
 msgid "working directory not at a head revision"
 msgstr "o diretório de trabalho não está em uma cabeça"
@@ -11921,6 +12038,66 @@
 msgid "not found!\n"
 msgstr "não encontrado!\n"
 
+msgid "set changeset phase to public"
+msgstr "define a fase da revisão como pública"
+
+msgid "set changeset phase to draft"
+msgstr "define a fase da revisão como rascunho"
+
+msgid "set changeset phase to secret"
+msgstr "define a fase da revisão como secreta"
+
+msgid "allow to move boundary backward"
+msgstr "permite que o limite seja movido para trás"
+
+msgid "target revision"
+msgstr "revisão alvo"
+
+msgid "[-p|-d|-s] [-f] [-r] REV..."
+msgstr "[-p|-d|-s] [-f] [-r] REV..."
+
+msgid "set or show the current phase name"
+msgstr "define ou mostra o nome da fase atual"
+
+msgid "    With no argument, show the phase name of specified revisions."
+msgstr "    Sem parâmetros, mostra o nome da fase das revisões especificadas."
+
+msgid ""
+"    With one of -p/--public, -d/--draft or -s/--secret, change the\n"
+"    phase value of the specified revisions."
+msgstr ""
+"    Com um parâmetro -p/--public, -d/--draft ou -s/--secret, muda o\n"
+"    valor da fase das revisões especificadas para pública, rascunho ou\n"
+"    secreta, respectivamente."
+
+msgid ""
+"    Unless -f/--force is specified, :hg:`phase` won't move changeset from a\n"
+"    lower phase to an higher phase. Phases are ordered as follows::"
+msgstr ""
+"    A não ser que -f/--force seja especificado, :hg:`phase` não\n"
+"    moverá revisões de uma fase mais baixa para uma mais alta. As\n"
+"    fases são ordenadas como segue::"
+
+msgid "        public < draft < secret"
+msgstr "        pública < rascunho < secreta"
+
+msgid ""
+"    Return 0 on success, 1 if no phases were changed.\n"
+"    "
+msgstr ""
+"    Devolve 0 para indicar sucesso, 1 se não houver mudanças de fase.\n"
+"    "
+
+msgid "only one phase can be specified"
+msgstr "apenas uma fase pode ser especificada"
+
+#, python-format
+msgid "phase change for %i changesets\n"
+msgstr "mudança de fase em %i revisões\n"
+
+msgid "no phases changed\n"
+msgstr "nenhuma fase mudou\n"
+
 #, python-format
 msgid "not updating: %s\n"
 msgstr "atualização não realizada: %s\n"
@@ -11989,11 +12166,12 @@
 "    :hg:`help urls` para mais informações."
 
 msgid ""
-"    Returns 0 on success, 1 if an update had unresolved files.\n"
-"    "
-msgstr ""
-"    Devolve 0 para indicar sucesso, 1 se uma atualização resultar\n"
-"    em arquivos não resolvidos.\n"
+"    Returns 0 on success, 1 if no changes found or an update had\n"
+"    unresolved files.\n"
+"    "
+msgstr ""
+"    Devolve 0 para indicar sucesso, 1 se nenhuma mudança for encontrada\n"
+"    ou se uma atualização tiver arquivos não resolvidos.\n"
 "    "
 
 #, python-format
@@ -12282,7 +12460,8 @@
 "    setting, or a command-line merge tool like ``diff3``. The resolve\n"
 "    command is used to manage the files involved in a merge, after\n"
 "    :hg:`merge` has been run, and before :hg:`commit` is run (i.e. the\n"
-"    working directory must have two parents)."
+"    working directory must have two parents). See :hg:`help\n"
+"    merge-tools` for information on configuring merge tools."
 msgstr ""
 "    Mesclagens com conflitos não resolvidos podem resultar de\n"
 "    mesclagens não interativas usando a opção ``internal:merge``\n"
@@ -12291,7 +12470,9 @@
 "    O comando resolve é usado para gerenciar os arquivos envolvidos\n"
 "    em uma mesclagem, após a execução de :hg:`merge` e antes da\n"
 "    execução de :hg:`commit` (ou seja, enquanto o diretório de\n"
-"    trabalho tiver dois pais)."
+"    trabalho tiver dois pais).\n"
+"    Veja :hg:`help merge-tools` para informações sobre a\n"
+"    configuração de utilitários de mesclagem."
 
 msgid "    The resolve command can be used in the following ways:"
 msgstr "    O comando resolve pode ser usado das seguintes maneiras:"
@@ -13171,11 +13352,13 @@
 msgid ""
 "    Update the repository's working directory to the specified\n"
 "    changeset. If no changeset is specified, update to the tip of the\n"
-"    current named branch."
+"    current named branch and move the current bookmark (see :hg:`help\n"
+"    bookmarks`)."
 msgstr ""
 "    Atualiza o diretório de trabalho do repositório para a revisão\n"
 "    pedida. Se não for especificada uma revisão, atualiza para a\n"
-"    última revisão do ramo nomeado atual."
+"    última revisão do ramo nomeado atual e move o marcador atual\n"
+"    (veja :hg:`help bookmarks`)."
 
 msgid ""
 "    If the changeset is not a descendant of the working directory's\n"
@@ -13282,11 +13465,11 @@
 msgstr "(veja http://mercurial.selenic.com para mais informações)"
 
 msgid ""
-"Copyright (C) 2005-2011 Matt Mackall and others\n"
+"Copyright (C) 2005-2012 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-2011 Matt Mackall e outros\n"
+"Copyright (C) 2005-2012 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"
@@ -13594,10 +13777,10 @@
 msgstr "a opção --cwd não pode ser abreviada!"
 
 msgid ""
-"Option -R has to be separated from other options (e.g. not -qR) and "
+"option -R has to be separated from other options (e.g. not -qR) and "
 "--repository may only be abbreviated as --repo!"
 msgstr ""
-"A opção -R deve ser separada de outras opções (por exemplo, não usar -qR) e "
+"a opção -R deve ser separada de outras opções (por exemplo, não usar -qR) e "
 "--repository pode ser abreviada apenas como --repo!"
 
 #, python-format
@@ -13676,7 +13859,13 @@
 "was merge successful (yn)?"
 msgstr ""
 " arquivo de saída %s parece não ter modificações\n"
-"a mesclagem teve sucesso (sn)?"
+"a mesclagem teve sucesso (yn)?"
+
+#, python-format
+msgid "merging %s incomplete! (edit conflicts, then use 'hg resolve --mark')\n"
+msgstr ""
+"a mesclagem de %s está incompleta! (edite os conflitos, e em seguida use 'hg"
+" resolve --mark')\n"
 
 #, python-format
 msgid "merging %s failed!\n"
@@ -13864,7 +14053,7 @@
 "``size(expression)``\n"
 "    File size matches the given expression. Examples:"
 msgstr ""
-"``size(expression)``\n"
+"``size(expressão)``\n"
 "    O tamanho do arquivo combina com a expressão fornecida. Por exemplo:"
 
 msgid ""
@@ -13927,7 +14116,7 @@
 msgstr "tipo desconhecido de bisect %s"
 
 msgid "invalid bisect state"
-msgstr "estado de bisecção inválido"
+msgstr "estado de bissecção inválido"
 
 #. i18n: bisect changeset status
 msgid "good"
@@ -14007,6 +14196,9 @@
 msgid "syntax for Mercurial ignore files"
 msgstr "sintaxe dos arquivos de padrões de arquivos ignorados"
 
+msgid "Working with Phases"
+msgstr "Trabalhando Com Fases"
+
 msgid ""
 "The Mercurial system uses a set of configuration files to control\n"
 "aspects of its behavior."
@@ -14509,13 +14701,54 @@
 "   aliases."
 msgstr ""
 ".. note:: Algumas opções globais de configuração, como ``-R``,\n"
-"   são procesadas antes de apelidos de shell, e portanto não serão\n"
+"   são processadas antes de apelidos de shell, e portanto não serão\n"
 "   passadas para os apelidos."
 
 msgid ""
+"\n"
+"``annotate``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+"\n"
+"``annotate``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\""
+
+msgid ""
+"Settings used when displaying file annotations. All values are\n"
+"Booleans and default to False. See ``diff`` section for related\n"
+"options for the diff command."
+msgstr ""
+"Definições usadas ao exibir anotações de arquivo. Todos os valores\n"
+"são booleanos com padrão False. Veja a seção ``diff`` para opções\n"
+"relacionadas do comando diff."
+
+msgid ""
+"``ignorews``\n"
+"    Ignore white space when comparing lines."
+msgstr ""
+"``ignorews``\n"
+"    ignora espaços em branco ao comparar linhas"
+
+msgid ""
+"``ignorewsamount``\n"
+"    Ignore changes in the amount of white space."
+msgstr ""
+"``ignorewsamount``\n"
+"    ignora mudanças na quantidade de espaços em branco"
+
+msgid ""
+"``ignoreblanklines``\n"
+"    Ignore changes whose lines are all blank."
+msgstr ""
+"``ignoreblanklines``\n"
+"    ignora mudanças cujas linhas sejam todas brancas"
+
+msgid ""
+"\n"
 "``auth``\n"
 "\"\"\"\"\"\"\"\""
 msgstr ""
+"\n"
 "``auth``\n"
 "\"\"\"\"\"\"\"\""
 
@@ -14820,11 +15053,13 @@
 "\"\"\"\"\"\"\"\""
 
 msgid ""
-"Settings used when displaying diffs. Everything except for ``unified`` is a\n"
-"Boolean and defaults to False."
+"Settings used when displaying diffs. Everything except for ``unified``\n"
+"is a Boolean and defaults to False. See ``annotate`` section for\n"
+"related options for the annotate command."
 msgstr ""
 "Definições usadas ao exibir diffs. Exceto por ``unified``, todas são\n"
-"booleanas, por padrão False."
+"booleanas, por padrão False. Veja a seção ``annotate`` para opções\n"
+"relacionadas do comando annotate."
 
 msgid ""
 "``git``\n"
@@ -14848,27 +15083,6 @@
 "    mostra em qual função está cada mudança"
 
 msgid ""
-"``ignorews``\n"
-"    Ignore white space when comparing lines."
-msgstr ""
-"``ignorews``\n"
-"    ignora espaços em branco ao comparar linhas"
-
-msgid ""
-"``ignorewsamount``\n"
-"    Ignore changes in the amount of white space."
-msgstr ""
-"``ignorewsamount``\n"
-"    ignora mudanças na quantidade de espaços em branco"
-
-msgid ""
-"``ignoreblanklines``\n"
-"    Ignore changes whose lines are all blank."
-msgstr ""
-"``ignoreblanklines``\n"
-"    ignora mudanças cujas linhas sejam todas brancas"
-
-msgid ""
 "``unified``\n"
 "    Number of lines of context to show."
 msgstr ""
@@ -14909,7 +15123,7 @@
 msgstr ""
 "``cc``\n"
 "    Opcional. Lista separada por vírgulas de destinatários especificados\n"
-"    em cópia-carbono."
+"    em cópia carbono."
 
 msgid ""
 "``bcc``\n"
@@ -14918,7 +15132,7 @@
 msgstr ""
 "``bcc``\n"
 "    Opcional. Lista separada por vírgulas de destinatários especificados\n"
-"    em cópia-carbono oculta."
+"    em cópia carbono oculta."
 
 msgid ""
 "``method``\n"
@@ -15276,7 +15490,7 @@
 "  Default: True"
 msgstr ""
 "``premerge``\n"
-"  Tenta executar a ferramenta interna não-interativa de mesclagem de\n"
+"  Tenta executar a ferramenta interna não interativa de mesclagem de\n"
 "  3 vias antes de executar a ferramenta externa. As opções são\n"
 "  ``true``, ``false``, ou ``keep`` para deixar marcações no conteúdo\n"
 "  do arquivo se o premerge falhar.\n"
@@ -15421,14 +15635,20 @@
 "various actions such as starting or finishing a commit. Multiple\n"
 "hooks can be run for the same action by appending a suffix to the\n"
 "action. Overriding a site-wide hook can be done by changing its\n"
-"value or setting it to an empty string."
+"value or setting it to an empty string.  Hooks can be prioritized\n"
+"by adding a prefix of ``priority`` to the hook name on a new line\n"
+"and setting the priority.  The default priority is 0 if\n"
+"not specified."
 msgstr ""
 "Hooks, ou ganchos, são comandos ou funções Python automaticamente\n"
 "executados por várias ações, como iniciar ou finalizar um commit.\n"
 "Múltiplos ganchos podem ser executados para a mesma ação através\n"
 "da adição de um sufixo à ação.\n"
 "Um gancho definido para o sistema todo pode ser sobreposto alterando\n"
-"seu valor ou definindo-o para uma string vazia."
+"seu valor ou definindo-o para uma string vazia.\n"
+"Ganchos podem ser priorizados adicionando-se um prefixo ``priority``\n"
+"ao nome do gancho em uma nova linha e atribuindo a prioridade.\n"
+"Se não especificada, a prioridade padrão é 0."
 
 msgid "Example ``.hg/hgrc``::"
 msgstr "Um exemplo de ``.hg/.hgrc``::"
@@ -15440,7 +15660,9 @@
 "  # do not use the site-wide hook\n"
 "  incoming =\n"
 "  incoming.email = /my/email/hook\n"
-"  incoming.autobuild = /my/build/hook"
+"  incoming.autobuild = /my/build/hook\n"
+"  # force autobuild hook to run before other incoming hooks\n"
+"  priority.incoming.autobuild = 1"
 msgstr ""
 "  [hooks]\n"
 "  # atualiza o diretório de trabalho após a adição de revisões\n"
@@ -15448,7 +15670,9 @@
 "  # não usa o gancho de sistema\n"
 "  incoming =\n"
 "  incoming.email = /my/email/hook\n"
-"  incoming.autobuild = /my/build/hook"
+"  incoming.autobuild = /my/build/hook\n"
+"  # força o gancho autobuild a ser executado antes de outros ganchos incoming\n"
+"  priority.incoming.autobuild = 1"
 
 msgid ""
 "Most hooks are run with environment variables set that give useful\n"
@@ -16009,11 +16233,45 @@
 "    não for especificado."
 
 msgid ""
-"\n"
+"``phases``\n"
+"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+"``phases``\n"
+"\"\"\"\"\"\"\"\"\"\""
+
+msgid ""
+"Specifies default handling of phases. See :hg:`help phases` for more\n"
+"information about working with phases."
+msgstr ""
+"Especifica o gerenciamento padrão de fases. Veja :hg:`help phases`\n"
+"para mais informações sobre fases."
+
+msgid ""
+"``publish``\n"
+"    Controls draft phase behavior when working as a server. When true,\n"
+"    pushed changesets are set to public in both client and server and\n"
+"    pulled or cloned changesets are set to public in the client.\n"
+"    Default: True"
+msgstr ""
+"``publish``\n"
+"    Controla o comportamento da fase rascunho em um servidor. Se for\n"
+"    True, revisões enviadas usando push se tornam públicas tanto no\n"
+"    cliente como no servidor, e revisões recebidas usando pull ou\n"
+"    clone se tornam públicas no cliente. O padrão é True."
+
+msgid ""
+"``new-commit``\n"
+"    Phase of newly-created commits.\n"
+"    Default: draft"
+msgstr ""
+"``new-commit``\n"
+"    Fase de revisões criadas usando commit.\n"
+"    Padrão: draft (rascunho)"
+
+msgid ""
 "``profiling``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
-"\n"
 "``profiling``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\"\""
 
@@ -16141,7 +16399,7 @@
 "Define regras de reescrita de localização de subrepositórios da forma::"
 
 msgid "    <pattern> = <replacement>"
-msgstr "    <padrao> = <substituicao>"
+msgstr "    <padrão> = <substituição>"
 
 msgid ""
 "Where ``pattern`` is a regular expression matching the source and\n"
@@ -16149,9 +16407,9 @@
 "can be matched in ``pattern`` and referenced in ``replacements``. For\n"
 "instance::"
 msgstr ""
-"Onde ``padrao`` é uma expressão regular comparada com a origem e\n"
-"``substituicao`` é o texto a ser usado para reescrevê-la. Grupos\n"
-"podem ser usados em ``padrao`` e referenciados em ``substituicao``.\n"
+"Onde ``padrão`` é uma expressão regular comparada com a origem e\n"
+"``substituição`` é o texto a ser usado para reescrevê-la. Grupos\n"
+"podem ser usados em ``padrão`` e referenciados em ``substituição``.\n"
 "Por exemplo::"
 
 msgid "    http://server/(.*)-hg/ = http://hg.server/\\1/"
@@ -16571,7 +16829,7 @@
 "``allowbz2``\n"
 "    (OBSOLETA) Determina se revisões estarão disponíveis para download\n"
 "    em formato .tar.bz2.\n"
-"    O padrao é False."
+"    O padrão é False."
 
 msgid ""
 "``allowgz``\n"
@@ -16582,7 +16840,7 @@
 "``allowgz``\n"
 "    (OBSOLETA) Determina se revisões estarão disponíveis para download\n"
 "    em formato .tar.gz.\n"
-"    O padrao é False."
+"    O padrão é False."
 
 msgid ""
 "``allowpull``\n"
@@ -16659,7 +16917,7 @@
 "``allowzip``\n"
 "    (OBSOLETA) Determina se revisões estarão disponíveis para download\n"
 "    em formato .zip.\n"
-"    O padrao é False."
+"    O padrão é False."
 
 msgid ""
 "``baseurl``\n"
@@ -17405,7 +17663,7 @@
 "files. "
 msgstr ""
 "O Mercurial suporta uma linguagem funcional para selecionar um conjunto\n"
-"de arquivoss."
+"de arquivos."
 
 msgid ""
 "Like other file patterns, this pattern type is indicated by a prefix,\n"
@@ -17511,8 +17769,8 @@
 msgid "- Find C files in a non-standard encoding::"
 msgstr "- Encontra arquivos C em uma codificação não padrão::"
 
-msgid "    hg locate \"set:**.c and not encoding(ascii)\""
-msgstr "    hg locate \"set:**.c and not encoding(ascii)\""
+msgid "    hg locate \"set:**.c and not encoding('UTF-8')\""
+msgstr "    hg locate \"set:**.c and not encoding('UTF-8')\""
 
 msgid "- Revert copies of large binary files::"
 msgstr "- Reverte cópias de arquivos binários grandes::"
@@ -18017,6 +18275,18 @@
 "    trabalho."
 
 msgid ""
+"Draft\n"
+"    Changesets in the draft phase have not been shared with publishing\n"
+"    repositories and may thus be safely changed by history-modifying\n"
+"    extensions. See :hg:`help phases`."
+msgstr ""
+"Draft\n"
+"    Rascunho. Revisões na fase rascunho não foram compartilhadas com\n"
+"    repositórios de publicação, e podem portanto ser modificadas de\n"
+"    forma segura por extensões que alterem o histórico.\n"
+"    Veja :hg:`help phases`."
+
+msgid ""
 "Graph\n"
 "    See DAG and :hg:`help graphlog`."
 msgstr ""
@@ -18233,6 +18503,26 @@
 "    \"aplicar um patch\" em seu lugar."
 
 msgid ""
+"Phase\n"
+"    A per-changeset state tracking how the changeset has been or\n"
+"    should be shared. See :hg:`help phases`."
+msgstr ""
+"Phase\n"
+"    Fase. Um estado específico de uma revisão que rastreia como essa\n"
+"    revisão foi ou deve ser compartilhada. Veja :hg:`help phases`."
+
+msgid ""
+"Public\n"
+"    Changesets in the public phase have been shared with publishing\n"
+"    repositories and are therefore considered immutable. See :hg:`help\n"
+"    phases`."
+msgstr ""
+"Public\n"
+"    Pública. Revisões na fase pública foram compartilhadas com\n"
+"    repositórios de publicação, e são portanto consideradas imutáveis.\n"
+"    Veja :hg:`help phases`."
+
+msgid ""
 "Pull\n"
 "    An operation in which changesets in a remote repository which are\n"
 "    not in the local repository are brought into the local\n"
@@ -18346,6 +18636,16 @@
 "    A maior parte dos repositórios possui apenas uma revisão raiz."
 
 msgid ""
+"Secret\n"
+"    Changesets in the secret phase may not be shared via push, pull,\n"
+"    or clone. See :hg:`help phases`."
+msgstr ""
+"Secret\n"
+"    Secreta. Revisões na fase secreta não podem ser compartilhadas com\n"
+"    push, pull ou clone.\n"
+"    Veja :hg:`help phases`."
+
+msgid ""
 "Tag\n"
 "    An alternative name given to a changeset. Tags can be used in all\n"
 "    places where Mercurial expects a changeset ID, e.g., with\n"
@@ -18525,7 +18825,7 @@
 msgstr "  syntax: NOME"
 
 msgid "where ``NAME`` is one of the following:"
-msgstr "onde ``NoME`` pode ser:"
+msgstr "onde ``NOME`` pode ser:"
 
 msgid ""
 "``regexp``\n"
@@ -18791,7 +19091,7 @@
 "   the partially merged file."
 msgstr ""
 "``internal:merge``\n"
-"   Usa o algoritmo não-interativo interno simples para mesclar arquivos.\n"
+"   Usa o algoritmo não interativo interno simples para mesclar arquivos.\n"
 "   Se houver qualquer conflito, esse algoritmo falhará, deixando\n"
 "   marcadores no arquivo parcialmente mesclado."
 
@@ -18949,15 +19249,15 @@
 "   tentará primeiro mesclar o arquivo usando um algoritmo simples de\n"
 "   mesclagem. O utilitário só será usado se o algoritmo simples falhar\n"
 "   por existirem mudanças conflitantes. Esse comportamento de\n"
-"   pré-mesclagem pode ser controlado através da configuração premerge\n"
-"   do utilitário de mesclagem. A pré-mesclagem é habilitada por\n"
+"   mesclagem prévia pode ser controlado através da configuração premerge\n"
+"   do utilitário de mesclagem. A mesclagem prévia é habilitada por\n"
 "   padrão, a não ser que o arquivo seja binário ou um link simbólico."
 
 msgid ""
 "See the merge-tools and ui sections of hgrc(5) for details on the\n"
 "configuration of merge tools.\n"
 msgstr ""
-"Veja as seções merge-tools e ui sections da página de manual\n"
+"Veja as seções merge-tools e ui da página de manual\n"
 "hgrc(5) para detalhes da configuração de utilitários de mesclagem.\n"
 
 msgid ""
@@ -19116,6 +19416,195 @@
 msgid "See also :hg:`help filesets`.\n"
 msgstr "Veja também :hg:`help filesets`.\n"
 
+msgid ""
+"What are phases?\n"
+"----------------"
+msgstr ""
+"O que são fases?\n"
+"----------------"
+
+msgid ""
+"Phases are a system for tracking which changesets have been or should\n"
+"be shared. This helps prevent common mistakes when modifying history\n"
+"(for instance, with the mq or rebase extensions)."
+msgstr ""
+"Fases são um sistema para rastrear quais revisões foram ou\n"
+"devem ser compartilhadas. Isto ajuda a prevenir erros comuns\n"
+"ao modificar o histórico (usando por exemplo as extensões mq\n"
+"e rebase)."
+
+msgid "Each changeset in a repository is in one of the following phases:"
+msgstr "Cada revisão em um repositório está em uma das seguintes fases:"
+
+msgid ""
+" - public : changeset is visible on a public server\n"
+" - draft : changeset is not yet published\n"
+" - secret : changeset should not be pushed, pulled, or cloned"
+msgstr ""
+" - public (pública): a revisão é visível em um servidor público\n"
+" - draft (rascunho): a revisão ainda não foi publicada\n"
+" - secret (secreta): a revisão não deve ser propagada em um clone, push ou pull"
+
+msgid ""
+"These phases are ordered (public < draft < secret) and no changeset\n"
+"can be in a lower phase than its ancestors. For instance, if a\n"
+"changeset is public, all its ancestors are also public. Lastly,\n"
+"changeset phases only be changed towards the public phase."
+msgstr ""
+"Estas fases são ordenadas (pública < rascunho < secreta) e\n"
+"nenhuma revisão pode estar em uma fase menor que as de seus\n"
+"ancestrais. Por exemplo, se uma revisão é pública, todos os\n"
+"seus ancestrais também serão públicos. Por fim, a fase de\n"
+"revisões só pode ser modificada em direção à fase pública."
+
+msgid ""
+"How are phases managed?\n"
+"-----------------------"
+msgstr ""
+"Como fases são gerenciadas?\n"
+"---------------------------"
+
+msgid ""
+"For the most part, phases should work transparently. By default, a\n"
+"changeset is created in the draft phase and is moved into the public\n"
+"phase when it is pushed to another repository."
+msgstr ""
+"Na maior parte, fases devem funcionar de forma transparente.\n"
+"Por padrão, uma revisão é criada na fase rascunho, e movida\n"
+"para a fase pública quando for enviada para outro repositório."
+
+msgid ""
+"Once changesets become public, extensions like mq and rebase will\n"
+"refuse to operate on them to prevent creating duplicate changesets.\n"
+"Phases can also be manually manipulated with the :hg:`phase` command\n"
+"if needed. See :hg:`help -v phase` for examples."
+msgstr ""
+"Uma vez que revisões se tornem públicas, extensões como mq e\n"
+"rebase se recusarão a operar sobre elas, para impedir a criação\n"
+"de revisões duplicadas. Se necessário, fases também podem ser\n"
+"manipuladas usando o comando :hg:`phase`.\n"
+"Veja :hg:`help -v phase` para alguns exemplos."
+
+msgid ""
+"Phases and servers\n"
+"------------------"
+msgstr ""
+"Fases e servidores\n"
+"------------------"
+
+msgid "Normally, all servers are ``publishing`` by default. This means::"
+msgstr ""
+"Normalmente, todos os servidores são por padrão ``publishing``\n"
+"(\"de publicação\"). Isto quer dizer que::"
+
+msgid ""
+" - all draft changesets that are pulled or cloned appear in phase\n"
+" public on the client"
+msgstr ""
+" - todas as revisões na fase rascunho que forem trazidas desse\n"
+" servidor usando pull ou clone aparecerão no cliente na fase\n"
+" pública"
+
+msgid ""
+" - all draft changesets that are pushed appear as public on both\n"
+" client and server"
+msgstr ""
+" - todas as revisões na fase rascunho que forem enviadas para esse\n"
+" servidor aparecerão como públicas tanto no cliente como no servidor"
+
+msgid " - secret changesets are neither pushed, pulled, or cloned"
+msgstr ""
+" - revisões na fase secreta não são transmitidas com push, pull ou clone"
+
+msgid ""
+".. note::\n"
+"  Pulling a draft changeset from a publishing server does not mark it\n"
+"  as public on the server side due to the read-only nature of pull."
+msgstr ""
+".. note::\n"
+"  Trazer uma revisão rascunho de um servidor de publicação não a\n"
+"  marca como pública no servidor devido à natureza somente leitura\n"
+"  do comando pull."
+
+msgid ""
+"Sometimes it may be desirable to push and pull changesets in the draft\n"
+"phase to share unfinished work. This can be done by setting a\n"
+"repository to disable publishing in its configuration file::"
+msgstr ""
+"Às vezes pode ser desejável fazer push e pull de revisões na fase\n"
+"rascunho para compartilhar trabalho não concluído. Isto pode ser\n"
+"feito desabilitando a publicação de um repositório em seu arquivo\n"
+"de configuração::"
+
+msgid ""
+"  [phases]\n"
+"  publish = False"
+msgstr ""
+"  [phases]\n"
+"  publish = False"
+
+msgid "See :hg:`help config` for more information on config files."
+msgstr ""
+"Veja :hg:`help config` para mais informações sobre arquivos de configuração."
+
+msgid ""
+".. note::\n"
+"  Servers running older versions of Mercurial are treated as\n"
+"  publishing."
+msgstr ""
+".. note::\n"
+"  Servidores executando versões mais antigas do Mercurial são\n"
+"  considerados como de publicação."
+
+msgid ""
+"Examples\n"
+"--------"
+msgstr ""
+"Exemplos\n"
+"--------"
+
+msgid " - list changesets in draft or secret phase::"
+msgstr " - lista revisões nas fases rascunho ou secreta::"
+
+msgid "     hg log -r \"not public()\""
+msgstr "     hg log -r \"not public()\""
+
+msgid " - change all secret changesets to draft::"
+msgstr " - muda todas as revisões secretas para rascunho::"
+
+msgid "     hg phase --draft \"secret()\""
+msgstr "     hg phase --draft \"secret()\""
+
+msgid ""
+" - forcibly move the current changeset and descendants from public to "
+"draft::"
+msgstr ""
+" - força a passagem da revisão atual e seus descendentes da fase pública "
+"para a rascunho::"
+
+msgid "     hg phase --force --draft ."
+msgstr "     hg phase --force --draft ."
+
+msgid " - show a list of changeset revision and phase::"
+msgstr " - mostra uma lista de números de revisão e suas respectivas fases::"
+
+msgid "     hg log --template \"{rev} {phase}\\n\""
+msgstr "     hg log --template \"{rev} {phase}\\n\""
+
+msgid " - resynchronize draft changesets relative to a remote repository::"
+msgstr ""
+" - sincroniza novamente revisões de rascunho relativas a um repositório "
+"remoto::"
+
+msgid "     hg phase -fd 'outgoing(URL)' "
+msgstr "     hg phase -fd 'outgoing(URL)' "
+
+msgid ""
+"See :hg:`help phase` for more information on manually manipulating phases.\n"
+msgstr ""
+"Veja :hg:`help phase` para mais informações sobre como manipular\n"
+"fases manualmente.\n"
+
 msgid "Mercurial supports several ways to specify individual revisions."
 msgstr ""
 "O Mercurial aceita diversas notações para identificar revisões\n"
@@ -19200,13 +19689,12 @@
 "de operadores infixos. Parênteses podem ser usados para agrupar expressões."
 
 msgid ""
-"Identifiers such as branch names must be quoted with single or double\n"
-"quotes if they contain characters outside of\n"
-"``[._a-zA-Z0-9\\x80-\\xff]`` or if they match one of the predefined\n"
-"predicates."
+"Identifiers such as branch names may need quoting with single or\n"
+"double quotes if they contain characters like ``-`` or if they match\n"
+"one of the predefined predicates."
 msgstr ""
 "Identificadores (como nomes de ramo ou etiquetas) que contenham\n"
-"caracteres fora de ``[._a-zA-Z0-9\\x80-\\xff]`` ou que forem\n"
+"caracteres como ``-`` ou que forem\n"
 "iguais a algum dos predicados predefinidos devem ser passados\n"
 "entre aspas simples ou duplas."
 
@@ -19587,12 +20075,17 @@
 
 msgid ""
 ":add: add does not recurse in subrepos unless -S/--subrepos is\n"
-"    specified. Git and Subversion subrepositories are currently\n"
-"    silently ignored."
+"    specified.  However, if you specify the full path of a file in a\n"
+"    subrepo, it will be added even without -S/--subrepos specified.\n"
+"    Git and Subversion subrepositories are currently silently\n"
+"    ignored."
 msgstr ""
 ":add: add não é executado recursivamente em sub-repositórios, a não\n"
-"    ser que -S/--subrepos seja especificado. Sub-repositórios do\n"
-"    Subversion e do Git são no momento silenciosamente ignorados."
+"    ser que -S/--subrepos seja especificado. No entanto, se for\n"
+"    especificado o caminho completo de um arquivo em um sub-repositório,\n"
+"    ele será adicionado mesmo que -S/--subrepos não seja passado.\n"
+"    Sub-repositórios do Subversion e do Git são no momento\n"
+"    silenciosamente ignorados."
 
 msgid ""
 ":archive: archive does not recurse in subrepositories unless\n"
@@ -19634,6 +20127,15 @@
 "    Subversion e do Git são no momento silenciosamente ignorados."
 
 msgid ""
+":forget: forget currently only handles exact file matches in subrepos.\n"
+"    Git and Subversion subrepositories are currently silently ignored."
+msgstr ""
+":forget: forget no momento considera apenas especificações exatas de\n"
+"    arquivos em sub-repositórios.\n"
+"    Sub-repositórios do Subversion e do Git são no momento\n"
+"    silenciosamente ignorados."
+
+msgid ""
 ":incoming: incoming does not recurse in subrepos unless -S/--subrepos\n"
 "    is specified. Git and Subversion subrepositories are currently\n"
 "    silently ignored."
@@ -19741,7 +20243,7 @@
 "O Mercurial permite que você personalize a saída de comandos\n"
 "usando modelos. Você pode tanto passar um modelo pela linha de\n"
 "comando, usando a opção --template, como selecionar um\n"
-"modelo-estilo existente (--style)."
+"estilo de modelo existente (--style)."
 
 msgid ""
 "You can customize output for any \"log-like\" command: log,\n"
@@ -20328,6 +20830,10 @@
 "'changegroupsubset'."
 
 #, python-format
+msgid "updating %s to public failed!\n"
+msgstr "a atualização da fase de %s para pública falhou!\n"
+
+#, python-format
 msgid "%d changesets found\n"
 msgstr "%d revisões encontradas\n"
 
@@ -20464,12 +20970,14 @@
 msgstr "o número de linhas de contexto de diff deve ser um inteiro, e não %r"
 
 #, python-format
-msgid ""
-"untracked file in working directory differs from file in requested revision:"
-" '%s'"
-msgstr ""
-"arquivo não versionado no diretório de trabalho difere do arquivo na revisão"
-" pedida: '%s'"
+msgid "%s: untracked file differs\n"
+msgstr "%s: arquivo não rastreado é diferente\n"
+
+msgid ""
+"untracked files in working directory differ from files in requested revision"
+msgstr ""
+"arquivos não versionados no diretório de trabalho diferem do arquivo na "
+"revisão pedida"
 
 #, python-format
 msgid "case-folding collision between %s and %s"
@@ -20543,13 +21051,11 @@
 msgstr ""
 "mesclar com um ancestral do diretório de trabalho não tem nenhum efeito"
 
-msgid "nothing to merge (use 'hg update' or check 'hg heads')"
-msgstr "nada para mesclar (use 'hg update' ou verifique 'hg heads')"
-
-msgid "outstanding uncommitted changes (use 'hg status' to list changes)"
-msgstr ""
-"alterações não consolidadas pendentes (use 'hg status' para listar as "
-"mudanças)"
+msgid "use 'hg update' or check 'hg heads'"
+msgstr "use 'hg update' ou verifique 'hg heads'"
+
+msgid "use 'hg status' to list changes"
+msgstr "use 'hg status' para listar as mudanças"
 
 #, python-format
 msgid "outstanding uncommitted changes in subrepository '%s'"
@@ -20687,6 +21193,18 @@
 msgstr "aplicação do patch falhou"
 
 #, python-format
+msgid "ignoring inconsistent public root from remote: %s\n"
+msgstr "ignorando raiz pública inconsistente no repositório remoto: %s\n"
+
+#, python-format
+msgid "ignoring unexpected root from remote: %i %s\n"
+msgstr "ignorando raiz inesperada no repositório remoto: %i %s\n"
+
+#, python-format
+msgid "phases.new-commit: not a valid phase name ('%s')"
+msgstr "phases.new-commit: não é um nome de fase válido ('%s')"
+
+#, python-format
 msgid "exited with status %d"
 msgstr "terminou com o código %d"
 
@@ -20827,7 +21345,7 @@
 msgstr ""
 "    - ``good``, ``bad``, ``skip``: revs explicitamente marcadas como boas, ruins ou omitidas\n"
 "    - ``goods``, ``bads``      : revs topologicamente boas ou ruins\n"
-"    - ``range``              : revs participando da bisecção\n"
+"    - ``range``              : revs participando da bissecção\n"
 "    - ``pruned``             : revs goods, bads ou skipped\n"
 "    - ``untested``           : revs que ainda não foram testadas\n"
 "    - ``ignored``            : revs ignoradas pela topologia do DAG"
@@ -20921,6 +21439,16 @@
 "    Todas as revisões descendentes de revisões do conjunto."
 
 msgid ""
+"``draft()``\n"
+"    Changeset in draft phase."
+msgstr ""
+"``draft()``\n"
+"    Revisões na fase \"draft\" (rascunho)."
+
+msgid "draft takes no arguments"
+msgstr "draft não tem argumentos"
+
+msgid ""
 "``filelog(pattern)``\n"
 "    Changesets connected to the specified filelog."
 msgstr ""
@@ -20955,10 +21483,6 @@
 msgid "follow expected a filename"
 msgstr "follow espera um nome de arquivo"
 
-#. i18n: "follow" is a keyword
-msgid "follow takes no arguments"
-msgstr "follow não tem argumentos"
-
 msgid ""
 "``all()``\n"
 "    All changesets, the same as ``0:tip``."
@@ -21175,6 +21699,39 @@
 "    encontrada; caso contrário, todas as revisões no conjunto pedido."
 
 msgid ""
+"``public()``\n"
+"    Changeset in public phase."
+msgstr ""
+"``public()``\n"
+"    Revisões na fase \"public\" (pública)."
+
+msgid "public takes no arguments"
+msgstr "public não tem argumentos"
+
+msgid ""
+"``remote([id [,path]])``\n"
+"    Local revision that corresponds to the given identifier in a\n"
+"    remote repository, if present. Here, the '.' identifier is a\n"
+"    synonym for the current local branch."
+msgstr ""
+"``remote([id] [,caminho])``\n"
+"    Revisão local que corresponda ao identificador dado em um\n"
+"    repositório remoto, se presente. Aqui, o identificador '.' é um\n"
+"    sinônimo para o ramo local atual."
+
+#. i18n: "remote" is a keyword
+msgid "remote takes one, two or no arguments"
+msgstr "remote recebe nenhum, um ou dois argumentos"
+
+#. i18n: "remote" is a keyword
+msgid "remote requires a string id"
+msgstr "remote requer uma string de identificação"
+
+#. i18n: "remote" is a keyword
+msgid "remote requires a repository path"
+msgstr "remote requer um caminho para um repositório"
+
+msgid ""
 "``removes(pattern)``\n"
 "    Changesets which remove files matching pattern."
 msgstr ""
@@ -21219,6 +21776,16 @@
 "    Revisões sem revisões pais no conjunto."
 
 msgid ""
+"``secret()``\n"
+"    Changeset in secret phase."
+msgstr ""
+"``secret()``\n"
+"    A revisão está na fase \"secret\" (secreta)."
+
+msgid "secret takes no arguments"
+msgstr "secret não tem argumentos"
+
+msgid ""
 "``sort(set[, [-]key...])``\n"
 "    Sort set by keys. The default sort order is ascending, specify a key\n"
 "    as ``-key`` to sort in descending order."
@@ -21293,6 +21860,10 @@
 msgstr "consulta vazia"
 
 #, python-format
+msgid "no changes found (ignored %d secret changesets)\n"
+msgstr "nenhuma mudança encontrada (%d revisões secretas ignoradas)\n"
+
+#, python-format
 msgid "ui.portablefilenames value is invalid ('%s')"
 msgstr "o valor de ui.portablefilenames é inválido ('%s')"
 
@@ -21309,8 +21880,8 @@
 msgstr "o caminho contém um componente ilegal: %s"
 
 #, python-format
-msgid "path %r is inside nested repo %r"
-msgstr "o caminho %r está dentro do repositório aninhado %r"
+msgid "path '%s' is inside nested repo %r"
+msgstr "o caminho '%s' está dentro do repositório aninhado %r"
 
 #, python-format
 msgid "path %r traverses symbolic link %r"
@@ -21389,13 +21960,13 @@
 msgid "no suitable response from remote hg"
 msgstr "nenhuma resposta adequada do hg remoto"
 
-msgid "remote: "
-msgstr "remoto: "
-
 #, python-format
 msgid "push refused: %s"
 msgstr "envio recusado: %s"
 
+msgid "ssl connection failed"
+msgstr "a conexão ssl falhou"
+
 msgid "Python SSL support not found"
 msgstr "suporte do Python a SSL não instalado"
 
@@ -21420,24 +21991,6 @@
 msgstr "não foi possível encontrar web.cacerts: %s"
 
 #, python-format
-msgid "%s certificate error: %s (use --insecure to connect insecurely)"
-msgstr ""
-"erro no certificado de %s: %s (use --insecure para conectar de modo "
-"inseguro)"
-
-#, python-format
-msgid "invalid certificate for %s with fingerprint %s"
-msgstr "certificado inválido para %s com impressão digital %s"
-
-#, python-format
-msgid ""
-"warning: %s certificate with fingerprint %s not verified (check "
-"hostfingerprints or web.cacerts config setting)\n"
-msgstr ""
-"aviso: o certificado %s com impressão digital %s não foi verificado "
-"(verifique as opções de configuração hostfingerprints e web.cacerts)\n"
-
-#, python-format
 msgid "host fingerprint for %s can't be verified (Python too old)"
 msgstr ""
 "a impressão digital do host para %s não pode ser verificada (versão do "
@@ -21450,6 +22003,39 @@
 "antiga)\n"
 
 #, python-format
+msgid "%s ssl connection error"
+msgstr "erro de conexão ssl com %s"
+
+#, python-format
+msgid "%s certificate error: no certificate received"
+msgstr "erro de certificado ssl em %s: nenhum certificado recebido"
+
+#, python-format
+msgid "certificate for %s has unexpected fingerprint %s"
+msgstr "certificado para %s tem impressão digital inesperada %s"
+
+msgid "check hostfingerprint configuration"
+msgstr "verifique a configuração hostfingerprint"
+
+#, python-format
+msgid "%s certificate error: %s"
+msgstr "erro de certificado em %s: %s"
+
+#, python-format
+msgid "configure hostfingerprint %s or use --insecure to connect insecurely"
+msgstr ""
+"configure a hostfingerprint %s ou use --insecure para conectar de modo "
+"inseguro"
+
+#, python-format
+msgid ""
+"warning: %s certificate with fingerprint %s not verified (check "
+"hostfingerprints or web.cacerts config setting)\n"
+msgstr ""
+"aviso: o certificado %s com impressão digital %s não foi verificado "
+"(verifique as opções de configuração hostfingerprints e web.cacerts)\n"
+
+#, python-format
 msgid "'%s' does not appear to be an hg repository"
 msgstr "'%s' não parece ser um repositório hg"
 
@@ -21765,7 +22351,7 @@
 ":shortbisect: Qualquer texto. Trata o texto como um estado de\n"
 "    bissecção, e devolve um caractere único representando o estado\n"
 "    (G: boa, B: ruim, S: omitida, U: não testada, I: ignorada).\n"
-"    Devolve um único espaço se o texto não for um estado de bisecção\n"
+"    Devolve um único espaço se o texto não for um estado de bissecção\n"
 "    válido."
 
 msgid ":shortdate: Date. Returns a date like \"2006-09-18\"."
@@ -21898,6 +22484,12 @@
 ":node: String. O hash de identificação da revisão, como uma string\n"
 "    hexadecimal de 40 dígitos."
 
+msgid ":phase: String. The changeset phase name."
+msgstr ":phase: String. O nome da fase da revisão."
+
+msgid ":phaseidx: Integer. The changeset phase index."
+msgstr ":phaseidx: Inteiro. O índice da fase da revisão."
+
 msgid ":rev: Integer. The repository-local changeset revision number."
 msgstr ":rev: Inteiro. O número de ordem da revisão no repositório local."
 
--- a/i18n/ru.po	Sat Jan 21 15:17:39 2012 +0200
+++ b/i18n/ru.po	Wed Feb 01 16:28:35 2012 -0600
@@ -170,11 +170,11 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2012-01-08 13:29+0400\n"
+"POT-Creation-Date: 2012-01-31 11:45+0400\n"
 "PO-Revision-Date: 2011-05-12 23:48+0400\n"
 "Last-Translator: Alexander Sauta <demosito@gmail.com>\n"
 "Language-Team: Russian\n"
-"Language: \n"
+"Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -1758,10 +1758,10 @@
 "    родители должны быть изменены (тот же формат, что и в файле\n"
 "    .hg/shamap). Параметры являются номерами ревизий (во входном\n"
 "    или выходном хранилище), которые используются в качестве\n"
-"    новых родителей для данного узла. Например, если были слиты\n"
-"    ветки \"release-1.0\" и \"trunk\", то нужно указать номер\n"
-"    ревизии в ветке \"trunk\" в качестве родитель1, и номер ревизии\n"
-"    в ветке \"release-1.0\" в качестве родитель2."
+"    новых родителей для данного узла. Например, если ветка \"release-1.0\"\n"
+"    была слита в \"trunk\", то нужно указать номер ревизии в ветке\n"
+"    \"trunk\" в качестве первого родителя, и номер ревизии из ветки\n"
+"    \"release-1.0\" в качестве второго родителя."
 
 msgid ""
 "    The branchmap is a file that allows you to rename a branch when it is\n"
@@ -1884,8 +1884,8 @@
 msgstr ""
 "    :convert.cvsps.fuzz: задает максимально допустимое время \n"
 "        (в секундах) между фиксациями с одинаковыми пользователем \n"
-"        и журнальным сообщением в рамках одного набора изменений.        "
-"Значения по умолчанию может не хватить, если очень большие файлы были\n"
+"        и журнальным сообщением в рамках одного набора изменений. Значения\n"
+"        по умолчанию может не хватить, если очень большие файлы были\n"
 "        сохранены в наборе изменений. По умолчанию 60 сек."
 
 msgid ""
@@ -2421,9 +2421,9 @@
 "внимание: комментарий фиксации CVS ссылается на несуществующую ветку %r:\n"
 "%s\n"
 
-#, fuzzy, python-format
+#, python-format
 msgid "%d changeset entries\n"
-msgstr "%d наборов изменений\n"
+msgstr "%d записей о наборах изменений\n"
 
 #, python-format
 msgid "%s does not look like a darcs repository"
@@ -2517,7 +2517,7 @@
 msgid "initializing destination %s repository\n"
 msgstr "инициализация хранилища назначения %s\n"
 
-#, fuzzy, python-format
+#, python-format
 msgid "could not create hg repository %s as sink"
 msgstr "не удается создать хранилище-приемник Mercurial %s"
 
@@ -2601,6 +2601,10 @@
 "Mercurial не удалось запустить себя самого, убедитесь, что переменная\n"
 "PATH содержит путь к hg"
 
+#, python-format
+msgid "log stream exception '%s'"
+msgstr "при считывании журнала возникло исключение '%s'"
+
 msgid ""
 "svn: cannot probe remote repository, assume it could be a subversion "
 "repository. Use --source-type if you know better.\n"
@@ -2662,6 +2666,10 @@
 msgstr "svn: не найдено ревизий после стартовой ревизии %d"
 
 #, python-format
+msgid "svn: revision %s not found"
+msgstr "svn: ревизия %s не найдена"
+
+#, python-format
 msgid "%s not found up to revision %d"
 msgstr "%s не найден вплоть до ревизии %d"
 
@@ -4448,6 +4456,18 @@
 msgid "largefile %s becomes symlink"
 msgstr "большой файл %s становится символической ссылкой"
 
+#, python-format
+msgid "skipping incorrectly formatted tag %s\n"
+msgstr "пропущена неверная метка: %s\n"
+
+#, python-format
+msgid "skipping incorrectly formatted id %s\n"
+msgstr "пропущен неверный идентификатор: %s\n"
+
+#, python-format
+msgid "no mapping for id %s\n"
+msgstr "нет сопоставления для идентификатора %s\n"
+
 msgid "uploading largefiles"
 msgstr "передача больших файлов"
 
@@ -4491,10 +4511,6 @@
 msgid "Found %s in system cache\n"
 msgstr "%s найден в кэше системы\n"
 
-#, python-format
-msgid "bad hash in '%s' (only %d bytes long)"
-msgstr "неверный хэш в '%s' (длина всего %d байт)"
-
 msgid "Can't get file locally"
 msgstr "Невозможно получить файл локально"
 
@@ -4530,8 +4546,8 @@
 msgstr "не задано ни одного файла"
 
 #, python-format
-msgid "not removing %s: %s (use -f to force removal)\n"
-msgstr "%s не удален: %s(-f - удалить принудительно)\n"
+msgid "not removing %s: %s (use forget to undo)\n"
+msgstr "не изымаем %s: %s (используйте forget, чтобы отменить добавление)\n"
 
 msgid "file still exists"
 msgstr "файл уже существует"
@@ -4546,6 +4562,9 @@
 msgid "removing %s\n"
 msgstr "удаляется %s\n"
 
+msgid "--normal cannot be used with --large"
+msgstr "--normal нельзя использовать с --large"
+
 msgid "uncommitted local changes"
 msgstr "незафиксированные локальные изменения"
 
@@ -4606,6 +4625,13 @@
 msgid "no files to copy"
 msgstr "нет файлов для копирования"
 
+msgid "caching new largefiles\n"
+msgstr "кэшируем новые большие файлы\n"
+
+#, python-format
+msgid "%d largefiles cached\n"
+msgstr "%d больших файлов закэшировано\n"
+
 #, python-format
 msgid "unknown archive type '%s'"
 msgstr "неизвестный тип архива '%s'"
@@ -4614,6 +4640,10 @@
 msgstr "нельзя задавать префикс при архивировании в файлы"
 
 #, python-format
+msgid "largefile %s not found in repo store or system cache"
+msgstr "большой файл %s не найден ни на складе хранилища, ни в системном кэше"
+
+#, python-format
 msgid "not removing %s: file is already untracked\n"
 msgstr "%s не удален, он и так не отслеживается\n"
 
@@ -4627,17 +4657,24 @@
 msgid "largefiles: %d to upload\n"
 msgstr "largefiles: %d для загрузки\n"
 
-msgid "addremove cannot be run on a repo with largefiles"
-msgstr "нельзя запускать addremove в хранилище с большими файлами (largefiles)"
-
-#, python-format
-msgid "largefiles: failed to put %s (%s) into store: %s"
-msgstr "largefiles: не удалось поместить %s (%s) на склад: %s"
+msgid "largefile contents do not match hash"
+msgstr "содержимое большого файла не совпадает с хэш-суммой"
+
+#, python-format
+msgid "largefiles: failed to put %s into store: %s"
+msgstr "largefiles: не удалось поместить %s на склад: %s"
 
 #, python-format
 msgid "requested largefile %s not present in cache"
 msgstr "требуемый большой файл %s отсутствует в кэше"
 
+msgid "remote: "
+msgstr "отдалённо: "
+
+#, python-format
+msgid "unexpected putlfile response: %s"
+msgstr "непредвиденный ответ при размещении файла: %s"
+
 msgid "putlfile failed:"
 msgstr "не удалось выполнить putlfile:"
 
@@ -4690,6 +4727,9 @@
 msgid "add as largefile"
 msgstr "добавить как большой файл"
 
+msgid "add as normal file"
+msgstr "добавить как обычный файл"
+
 msgid ""
 "add all files above this size (in megabytes) as largefiles (default: 10)"
 msgstr ""
@@ -4782,6 +4822,20 @@
 "формате, с возможной потерей данных в последнем случае."
 
 msgid ""
+"It may be desirable for mq changesets to be kept in the secret phase (see\n"
+":hg:`help phases`), which can be enabled with the following setting::"
+msgstr ""
+"Если вы хотите сохранять наборы изменений mq в секретной фазе (см.\n"
+":hg:`help phases`), это может быть сделано при помощи следующей настройки::"
+
+msgid ""
+"  [mq]\n"
+"  secret = True"
+msgstr ""
+"  [mq]\n"
+"  secret = True"
+
+msgid ""
 "You will by default be managing a patch queue named \"patches\". You can\n"
 "create other, independent patch queues with the :hg:`qqueue` command.\n"
 msgstr ""
@@ -4851,7 +4905,7 @@
 msgid "apply failed for patch %s"
 msgstr "не удалось наложить патч %s"
 
-#, fuzzy, python-format
+#, python-format
 msgid "patch didn't work out, merging %s\n"
 msgstr "патч не сработал, сливаем %s\n"
 
@@ -4911,9 +4965,9 @@
 msgid "revision %d is not managed"
 msgstr "ревизия %d не контролируется"
 
-#, fuzzy, python-format
+#, python-format
 msgid "cannot delete revision %d above applied patches"
-msgstr "невозможно удалить ревизию %d поверх наложенных патчей"
+msgstr "невозможно удалить ревизию %d, находящуюся поверх наложенных патчей"
 
 #, python-format
 msgid "patch %s finalized without changeset message\n"
@@ -5201,11 +5255,13 @@
 
 msgid ""
 "    The patches must not be applied, and at least one patch is required. "
-"With\n"
-"    -k/--keep, the patch files are preserved in the patch directory."
+"Exact\n"
+"    patch identifiers must be given. With -k/--keep, the patch files are\n"
+"    preserved in the patch directory."
 msgstr ""
 "    Патчи не должны быть наложенными, и требуется по крайней мере один "
 "патч.\n"
+"    Нужно указывать точные идентификаторы патчей.\n"
 "    С -k/--keep патчи сохраняются в каталоге патчей."
 
 msgid ""
@@ -5786,10 +5842,9 @@
 msgid "merge queue name (DEPRECATED)"
 msgstr "имя очереди слияния (УСТАРЕЛО)"
 
-# может, единственный патч? совмещенный патч?
-#, fuzzy
 msgid "reorder patch series and apply only the patch"
-msgstr "переупорядочить последовательность патчей и наложить только патч"
+msgstr ""
+"переупорядочить последовательность патчей и наложить только данный патч"
 
 msgid "hg qpush [-f] [-l] [-a] [--move] [PATCH | INDEX]"
 msgstr "hg qpush [-f] [-l] [-a] [--move] [ПАТЧ | ИНДЕКС]"
@@ -7524,8 +7579,8 @@
 msgstr "используйте --keep чтобы оставить исходные наборы изменений"
 
 #, python-format
-msgid "Can't rebase immutable changeset %s"
-msgstr "Невозможно перебазировать неизменяемый набор изменений %s"
+msgid "can't rebase immutable changeset %s"
+msgstr "невозможно перебазировать неизменяемый набор изменений %s"
 
 msgid "see hg help phases for details"
 msgstr "подробнее см. hg help phases"
@@ -7576,6 +7631,11 @@
 msgid "no rebase in progress"
 msgstr "нет прерванного перебазирования"
 
+msgid "warning: immutable rebased changeset detected, can't abort\n"
+msgstr ""
+"внимание: обнаружены неизменяемые перебазированные наборы изменений, нельзя "
+"прервать\n"
+
 msgid "warning: new changesets detected on target branch, can't abort\n"
 msgstr ""
 "внимание: новые наборы изменений обнаружены на ветке назначения, отмена "
@@ -8551,7 +8611,7 @@
 # NOT-SURE
 #, python-format
 msgid "divergent bookmark %s stored as %s\n"
-msgstr "закладка на расходящейся ревизии %s сохранена как %s\n"
+msgstr "противоречивая закладка %s сохранена как %s\n"
 
 msgid "searching for changed bookmarks\n"
 msgstr "поиск изменившихся закладок\n"
@@ -8712,6 +8772,10 @@
 msgstr "метка:            %s\n"
 
 #, python-format
+msgid "phase:       %s\n"
+msgstr "фаза:             %s\n"
+
+#, python-format
 msgid "parent:      %d:%s\n"
 msgstr "родитель:         %d:%s\n"
 
@@ -8759,10 +8823,10 @@
 msgid "%s: no key named '%s'"
 msgstr "%s: нет ключа с именем '%s'"
 
-# может, не из а от?
-#, fuzzy, python-format
+# второй параметр - дата/время
+#, python-format
 msgid "Found revision %s from %s\n"
-msgstr "найдена ревизия %s из %s\n"
+msgstr "Найдена ревизия %s от %s\n"
 
 msgid "revision matching date not found"
 msgstr "не найдена ревизия для данной даты"
@@ -9552,8 +9616,8 @@
 msgid "rename a given bookmark"
 msgstr "переименовать указанную закладку"
 
-msgid "do not mark a new bookmark active"
-msgstr "не помечать новую закладку как активную"
+msgid "mark a bookmark inactive"
+msgstr "пометить закладку как неактивную"
 
 msgid "hg bookmarks [-f] [-d] [-i] [-m NAME] [-r REV] [NAME]"
 msgstr "hg bookmarks [-f] [-d] [-i] [-m ИМЯ] [-r РЕВИЗИЯ] [ИМЯ]"
@@ -9590,8 +9654,7 @@
 "    push` and :hg:`help pull`). This requires both the local and remote\n"
 "    repositories to support bookmarks. For versions prior to 1.8, this "
 "means\n"
-"    the bookmarks extension must be enabled.\n"
-"    "
+"    the bookmarks extension must be enabled."
 msgstr ""
 "    Закладки могут передаваться между хранилищами с помощью команд\n"
 "    push и pull (см. :hg:`help push` и :hg:`help pull). Для этого\n"
@@ -9600,6 +9663,18 @@
 "    должно быть включено расширение bookmarks.\n"
 "    "
 
+msgid ""
+"    With -i/--inactive, the new bookmark will not be made the active\n"
+"    bookmark. If -r/--rev is given, the new bookmark will not be made\n"
+"    active even if -i/--inactive is not given. If no NAME is given, the\n"
+"    current active bookmark will be marked inactive.\n"
+"    "
+msgstr ""
+"    Если указан -i/--inactive, новая закладка не будет сделана активной.\n"
+"    Если указан -r/--rev, новая закладка не будет активной, даже если\n"
+"    -i/--inactive не задан. Если не указано ИМЯ, текущая активная закладка\n"
+"    будет помечена как неактивная.    "
+
 msgid "bookmark name required"
 msgstr "укажите имя закладки"
 
@@ -10202,7 +10277,7 @@
 msgstr "требуются два или три аргумента"
 
 # {{{ Debug commands
-#, fuzzy
+# NOT-SURE
 msgid "add single file mergeable changes"
 msgstr "добавить единственный файл, объединяющий изменения"
 
@@ -10921,17 +10996,16 @@
 "    уже была применена операция graft, а также ревизии слияния будут\n"
 "    пропущены."
 
-#, fuzzy
 msgid ""
 "    If a graft merge results in conflicts, the graft process is\n"
 "    interrupted so that the current merge can be manually resolved.\n"
 "    Once all conflicts are addressed, the graft process can be\n"
 "    continued with the -c/--continue option."
 msgstr ""
-"    Если во время операции возникает конфликт, операция отменяется для\n"
-"    того, чтобы текущее слияние было завершено вручную. После разрешения\n"
-"    всех конфликтов, можно продолжить процесс с помощью параметра\n"
-"    -c/--continue."
+"    Если во время операции graft возникает конфликт, операция отменяется\n"
+"    для того, чтобы текущее слияние было завершено вручную. После\n"
+"    разрешения всех конфликтов, можно продолжить процесс с помощью\n"
+"    параметра -c/--continue."
 
 msgid ""
 "    .. note::\n"
@@ -11265,6 +11339,9 @@
 msgid "use \"hg help -e %s\" to show help for the %s extension"
 msgstr "используйте \"hg help -e %s\" для просмотра справки по расширению %s"
 
+msgid "options:"
+msgstr "параметры:"
+
 #, python-format
 msgid ""
 "\n"
@@ -11497,10 +11574,10 @@
 
 msgid ""
 "    With -s/--similarity, hg will attempt to discover renames and\n"
-"    copies in the patch in the same way as 'addremove'."
+"    copies in the patch in the same way as :hg:`addremove`."
 msgstr ""
 "    Если указан -s/--similatity, Mercurial попытается обнаружить\n"
-"    копирования и переименования в патче так же, как в 'addremove'."
+"    копирования и переименования в патче так же, как в :hg:`addremove`."
 
 msgid ""
 "    To read a patch from standard input, use \"-\" as the patch name. If\n"
@@ -11952,8 +12029,8 @@
 "    configuration files. See :hg:`help merge-tools` for options."
 msgstr ""
 "    С помощью ``--tool`` можно задать инструмент для слияния файлов.\n"
-"    Она заменяет переменную окружения HGEMERGT и настройки конфига.\n"
-"    Подробнее см. :hg:``help merge-tool``."
+"    Она заменяет переменную окружения HGMERGE и настройки конфига.\n"
+"    Подробнее см. :hg:``help merge-tools``."
 
 msgid ""
 "    If no revision is specified, the working directory's parent is a\n"
@@ -12133,6 +12210,64 @@
 msgid "not found!\n"
 msgstr "не найден!\n"
 
+msgid "set changeset phase to public"
+msgstr "установить набор изменений в публичную фазу"
+
+msgid "set changeset phase to draft"
+msgstr "установить набор изменений в черновую фазу"
+
+msgid "set changeset phase to secret"
+msgstr "установить набор изменений в секретную фазу"
+
+msgid "allow to move boundary backward"
+msgstr "разрешить перемещение границы назад"
+
+msgid "target revision"
+msgstr "целевая ревизия"
+
+msgid "[-p|-d|-s] [-f] [-r] REV..."
+msgstr "[-p|-d|-s] [-f] [-r] РЕВИЗИЯ..."
+
+msgid "set or show the current phase name"
+msgstr "задать или показать текущую фазу"
+
+msgid "    With no argument, show the phase name of specified revisions."
+msgstr "    Если аргументы не заданы, показывает фазу указанных ревизий."
+
+msgid ""
+"    With one of -p/--public, -d/--draft or -s/--secret, change the\n"
+"    phase value of the specified revisions."
+msgstr ""
+"    Если задан один из -p/--public, -d/--draft или -s/--secret, то изменяет\n"
+"    фазу указанных ревизий."
+
+msgid ""
+"    Unless -f/--force is specified, :hg:`phase` won't move changeset from a\n"
+"    lower phase to an higher phase. Phases are ordered as follows::"
+msgstr ""
+"    Если не указан -f/--force, то :hg:`phase` не перемещает набор изменений\n"
+"    из меньшей фазы в большую. Порядок фаз такой::"
+
+msgid "        public < draft < secret"
+msgstr "        публичная < черновая < секретная"
+
+msgid ""
+"    Return 0 on success, 1 if no phases were changed.\n"
+"    "
+msgstr ""
+"    Возвращает 0 при успехе, 1 если никакие фазы не изменены.\n"
+"    "
+
+msgid "only one phase can be specified"
+msgstr "можно указать только одну фазу"
+
+#, python-format
+msgid "phase change for %i changesets\n"
+msgstr "изменение фазы для %i наборов изменений\n"
+
+msgid "no phases changed\n"
+msgstr "никакие фазы не изменены\n"
+
 #, python-format
 msgid "not updating: %s\n"
 msgstr "не обновлено: %s\n"
@@ -12203,10 +12338,12 @@
 "    Подробнее см. :hg:`help urls`."
 
 msgid ""
-"    Returns 0 on success, 1 if an update had unresolved files.\n"
-"    "
-msgstr ""
-"    Возвращает 0 при успехе, 1 если есть конфликты при обновлении.\n"
+"    Returns 0 on success, 1 if no changes found or an update had\n"
+"    unresolved files.\n"
+"    "
+msgstr ""
+"    Возвращает 0 при успехе, 1 если изменений не найдено или есть\n"
+"    конфликты при обновлении.\n"
 "    "
 
 #, python-format
@@ -12497,14 +12634,16 @@
 "    setting, or a command-line merge tool like ``diff3``. The resolve\n"
 "    command is used to manage the files involved in a merge, after\n"
 "    :hg:`merge` has been run, and before :hg:`commit` is run (i.e. the\n"
-"    working directory must have two parents)."
+"    working directory must have two parents). See :hg:`help\n"
+"    merge-tools` for information on configuring merge tools."
 msgstr ""
 "    Неразрешенные конфликтами часто являются результатом неинтерактивного\n"
 "    слияния с использованием ``internal:merge``, или программы слияния\n"
 "    с текстовым интерфейсом, вроде ``diff3``. Команда resolve может\n"
 "    быть использована для управления файлами, участвующими в слиянии,\n"
 "    после того, как была запущена :hg:`merge`, но до :hg:`commit`\n"
-"    (т.е. рабочий каталог должен иметь двух \"родителей\")."
+"    (т.е. рабочий каталог должен иметь двух \"родителей\"). См. :hg:`help\n"
+"    merge-tools` — справку о настройке средств слияния."
 
 msgid "    The resolve command can be used in the following ways:"
 msgstr "    Команда resolve может использоваться следующими способами:"
@@ -13375,11 +13514,13 @@
 msgid ""
 "    Update the repository's working directory to the specified\n"
 "    changeset. If no changeset is specified, update to the tip of the\n"
-"    current named branch."
+"    current named branch and move the current bookmark (see :hg:`help\n"
+"    bookmarks`)."
 msgstr ""
 "    Обновляет рабочую копию хранилища на указанную ревизию. Если\n"
 "    ревизия не задана, обновляет до оконечной ревизии (tip) текущей\n"
-"    именованной ветки."
+"    именованной ветки и перемещает текущую закладку (см. :hg:`help\n"
+"    bookmarks`)."
 
 msgid ""
 "    If the changeset is not a descendant of the working directory's\n"
@@ -13484,11 +13625,11 @@
 msgstr "(подробнее см. http://mercurial.selenic.com)"
 
 msgid ""
-"Copyright (C) 2005-2011 Matt Mackall and others\n"
+"Copyright (C) 2005-2012 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 ""
-"(С) 2005-2011 Matt Mackall и другие.\n"
+"(С) 2005-2012 Matt Mackall и другие.\n"
 "Это свободное ПО; условия распространения см. в исходном коде.\n"
 "НИКАКИХ ГАРАНТИЙ НЕ ПРЕДОСТАВЛЯЕТСЯ, в том числе на пригодность для\n"
 "коммерческого использования и для решения конкретных задач.\n"
@@ -13606,10 +13747,6 @@
 msgstr "неподдерживаемый тип файла (%s)"
 
 #, python-format
-msgid "no changes to push but %i secret changesets\n"
-msgstr "нет исходящих изменений, но есть %i секретных наборов изменений\n"
-
-#, python-format
 msgid "push creates new remote branches: %s!"
 msgstr "push создаст новые ветки в отдалённом хранилище: %s!"
 
@@ -13806,10 +13943,10 @@
 msgstr "параметр --cwd не может быть сокращен!"
 
 msgid ""
-"Option -R has to be separated from other options (e.g. not -qR) and --"
+"option -R has to be separated from other options (e.g. not -qR) and --"
 "repository may only be abbreviated as --repo!"
 msgstr ""
-"Параметр -R должен быть отделен от других параметров (т.е. не -qR) и\n"
+"параметр -R должен быть отделен от других параметров (т.е. не -qR) и\n"
 "--repository можно сократить только до --repo!"
 
 #, python-format
@@ -13875,9 +14012,9 @@
 " не найден инструмент для слияния %s\n"
 "использовать локальный файл:(l)ocal или взять другой:(o)ther?"
 
-#, fuzzy, python-format
+#, python-format
 msgid "%s.premerge not valid ('%s' is neither boolean nor %s)"
-msgstr "некорректный %s.premerge ('%s' не логический и не %s)"
+msgstr "некорректный параметр %s.premerge ('%s' не логический и не %s)"
 
 # PROMPT
 #, python-format
@@ -14225,6 +14362,9 @@
 msgid "syntax for Mercurial ignore files"
 msgstr "Синтаксис файлов игнорирования Mercurial"
 
+msgid "Working with Phases"
+msgstr "Работа c фазами"
+
 msgid ""
 "The Mercurial system uses a set of configuration files to control\n"
 "aspects of its behavior."
@@ -15625,18 +15765,24 @@
 "``hooks``\n"
 "\"\"\"\"\"\"\"\"\""
 
+# NOT-SURE site-wide - ?
 msgid ""
 "Commands or Python functions that get automatically executed by\n"
 "various actions such as starting or finishing a commit. Multiple\n"
 "hooks can be run for the same action by appending a suffix to the\n"
 "action. Overriding a site-wide hook can be done by changing its\n"
-"value or setting it to an empty string."
+"value or setting it to an empty string.  Hooks can be prioritized\n"
+"by adding a prefix of ``priority`` to the hook name on a new line\n"
+"and setting the priority.  The default priority is 0 if\n"
+"not specified."
 msgstr ""
 "Команды или функции Python, вызываемые автоматически при различных\n"
-"действиях, таких как начало или конец фиксации. Можно задавать несколько\n"
-"хуков для одного и того же действия, добавляя к действию суффикс.\n"
+"действиях, таких как начало или завершение фиксации. Можно задавать\n"
+"несколько хуков для одного и того же действия, добавляя к действию суффикс.\n"
 "Можно переопределить глобальный хук, изменив его значения или задав\n"
-"для него пустую строку."
+"для него пустую строку. Для хука можно задать приоритет, добавив\n"
+"префикс ``priority`` к имени хука в отдельной строке и задав приоритет.\n"
+"Если приоритет не указан, используется значение по умолчанию - 0."
 
 msgid "Example ``.hg/hgrc``::"
 msgstr "Пример ``.hg/hgrc``::"
@@ -15648,7 +15794,9 @@
 "  # do not use the site-wide hook\n"
 "  incoming =\n"
 "  incoming.email = /my/email/hook\n"
-"  incoming.autobuild = /my/build/hook"
+"  incoming.autobuild = /my/build/hook\n"
+"  # force autobuild hook to run before other incoming hooks\n"
+"  priority.incoming.autobuild = 1"
 msgstr ""
 "  [hooks]\n"
 "  # Обновить рабочий каталог после добавления наборов изменений\n"
@@ -15656,7 +15804,9 @@
 "  # не использовать глобальный хук\n"
 "  incoming =\n"
 "  incoming.email = /my/email/hook\n"
-"  incoming.autobuild = /my/build/hook"
+"  incoming.autobuild = /my/build/hook\n"
+"  # выполнять хук autobuild перед другими хуками incoming\n"
+"  priority.incoming.autobuild = 1"
 
 msgid ""
 "Most hooks are run with environment variables set that give useful\n"
@@ -16198,11 +16348,46 @@
 "    если хранилище назначения не задано."
 
 msgid ""
-"\n"
+"``phases``\n"
+"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+"``phases``\n"
+"\"\"\"\"\"\"\"\"\"\""
+
+msgid ""
+"Specifies default handling of phases. See :hg:`help phases` for more\n"
+"information about working with phases."
+msgstr ""
+"Установки работы с фазами по умолчанию. Подробнее о работе с фазами\n"
+"см. :hg:`help phases`."
+
+msgid ""
+"``publish``\n"
+"    Controls draft phase behavior when working as a server. When true,\n"
+"    pushed changesets are set to public in both client and server and\n"
+"    pulled or cloned changesets are set to public in the client.\n"
+"    Default: True"
+msgstr ""
+"``publish``\n"
+"    Управляет поведением черновой фазы при работе в качестве сервера. Если\n"
+"    Истина, проталкиваемые наборы изменений становятся публичными на "
+"    клиенте и на сервере, а затянутые или клонированные наборы изменений\n"
+"    становятся публичными на стороне клиента.\n"
+"    По умолчанию: True (Истина)"
+
+msgid ""
+"``new-commit``\n"
+"    Phase of newly-created commits.\n"
+"    Default: draft"
+msgstr ""
+"``new-commit``\n"
+"    Фаза для вновь создаваемых фиксаций.\n"
+"    По умолчанию: draft (черновая)"
+
+msgid ""
 "``profiling``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
-"\n"
 "``profiling``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\"\""
 
@@ -17664,8 +17849,8 @@
 msgid "- Find C files in a non-standard encoding::"
 msgstr "- Найти файлы С с нестандартной кодировкой::"
 
-msgid "    hg locate \"set:**.c and not encoding(ascii)\""
-msgstr "    hg locate \"set:**.c and not encoding(ascii)\""
+msgid "    hg locate \"set:**.c and not encoding('UTF-8')\""
+msgstr "    hg locate \"set:**.c and not encoding('UTF-8')\""
 
 msgid "- Revert copies of large binary files::"
 msgstr "- Вернуть (revert) копии больших бинарных файлов::"
@@ -18148,6 +18333,17 @@
 "    каталоге."
 
 msgid ""
+"Draft\n"
+"    Changesets in the draft phase have not been shared with publishing\n"
+"    repositories and may thus be safely changed by history-modifying\n"
+"    extensions. See :hg:`help phases`."
+msgstr ""
+"Черновик\n"
+"    Наборы изменений в черновой фазе еще не были опубликованы в\n"
+"    общедоступных хранилищах, поэтому они могут безопасно модифицироваться\n"
+"    расширениями, изменяющими историю. См. :hg:`help phases`."
+
+msgid ""
 "Graph\n"
 "    See DAG and :hg:`help graphlog`."
 msgstr ""
@@ -18220,7 +18416,7 @@
 "    новые наборы изменений, которые заменяют уже существующие,\n"
 "    после чего удаляют старые наборы изменений. Такие действия в\n"
 "    публичном хранилище могут быть причиной ситуации, когда\n"
-"    старые наборы изменений будут добавлены вновь."
+"    старые наборы изменений будут добавлены повторно."
 
 msgid ""
 "History, rewriting\n"
@@ -18345,6 +18541,26 @@
 msgstr "    Пример: \"Тебе придется пропатчить эту ревизию.\""
 
 msgid ""
+"Phase\n"
+"    A per-changeset state tracking how the changeset has been or\n"
+"    should be shared. See :hg:`help phases`."
+msgstr ""
+"Фаза\n"
+"    Механизм отслежвания индивидуального состояния набора изменений,\n"
+"    определющий, был ли он опубликован или должен быть опубликованным.\n"
+"    См. :hg:`help phases`."
+
+msgid ""
+"Public\n"
+"    Changesets in the public phase have been shared with publishing\n"
+"    repositories and are therefore considered immutable. See :hg:`help\n"
+"    phases`."
+msgstr ""
+"Публичный\n"
+"    Наборы изменений в публичной фазе были опубликованы в общедоступных\n"
+"    хранилищах, поэтому они считаются неизменяемыми. См. :hg:`help phases`."
+
+msgid ""
 "Pull\n"
 "    An operation in which changesets in a remote repository which are\n"
 "    not in the local repository are brought into the local\n"
@@ -18410,7 +18626,7 @@
 "    'Номер ревизии' и 'Набор изменений'.\n"
 "\n"
 "    ПРИМЕЧАНИЕ: в русском переводе термин \"ревизия\" часто используется\n"
-"    как синоним набора изменений. Хотя это технически\n"
+"    как синоним набора изменений. Хотя это технически не совсем\n"
 "    некорректно, но короче и понятнее."
 
 msgid ""
@@ -18461,6 +18677,15 @@
 "    хранилищ имеют только один корень."
 
 msgid ""
+"Secret\n"
+"    Changesets in the secret phase may not be shared via push, pull,\n"
+"    or clone. See :hg:`help phases`."
+msgstr ""
+"Секретный\n"
+"    Набор изменений в секретной фазе не может быть передан с помощью\n"
+"    команд push, pull или clone. См. :hg:`help phases`."
+
+msgid ""
 "Tag\n"
 "    An alternative name given to a changeset. Tags can be used in all\n"
 "    places where Mercurial expects a changeset ID, e.g., with\n"
@@ -18857,7 +19082,7 @@
 "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
 "Возможные инструменты слияния\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 
 msgid ""
 "External merge tools and their properties are configured in the\n"
@@ -18966,7 +19191,7 @@
 "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
 "Выбор инструмента слияния\n"
-"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
 
 msgid "Mercurial uses these rules when deciding which merge tool to use:"
 msgstr "Mercurial использует следующие правила при выбора программы слияния:"
@@ -19224,6 +19449,179 @@
 msgid "See also :hg:`help filesets`.\n"
 msgstr "См. также :hg:`help filesetes`.\n"
 
+msgid ""
+"What are phases?\n"
+"----------------"
+msgstr ""
+"Что такое фазы?\n"
+"---------------"
+
+msgid ""
+"Phases are a system for tracking which changesets have been or should\n"
+"be shared. This helps prevent common mistakes when modifying history\n"
+"(for instance, with the mq or rebase extensions)."
+msgstr ""
+"Фазы - это система для отслеживания того, какие наборы изменений были\n"
+"или должны быть публично доступны. Это помогает предотвратить часто\n"
+"совершаемые ошибки при изменение истории (например, при помощи расширений\n"
+"mq или rebase)."
+
+msgid "Each changeset in a repository is in one of the following phases:"
+msgstr "Каждый набор изменений хранилища находится в одной из следующих фаз::"
+
+msgid ""
+" - public : changeset is visible on a public server\n"
+" - draft : changeset is not yet published\n"
+" - secret : changeset should not be pushed, pulled, or cloned"
+msgstr ""
+" - публичная : набор изменений опубликован на общедоступном сервере\n"
+" - черновая : набор изменений ещё не опубликован\n"
+" - секретная : он не должен проталкиваться, затягиваться, клонироваться"
+
+msgid ""
+"These phases are ordered (public < draft < secret) and no changeset\n"
+"can be in a lower phase than its ancestors. For instance, if a\n"
+"changeset is public, all its ancestors are also public. Lastly,\n"
+"changeset phases only be changed towards the public phase."
+msgstr ""
+"Фазы расположены в следующем порядке: публичная < черновая < секретная,\n"
+"при этом набор изменений не может находится в фазе, меньшей фазы его\n"
+"предков. Например, если набор изменений находится в публичной фазе,\n"
+"то и все его родительские ревизии будут в публичной фазе. Наконец, фазы\n"
+"набора изменений могут меняться только в сторону пулбичной фазы."
+
+msgid ""
+"How are phases managed?\n"
+"-----------------------"
+msgstr ""
+"Что происходит с фазами?\n"
+"------------------------"
+
+msgid ""
+"For the most part, phases should work transparently. By default, a\n"
+"changeset is created in the draft phase and is moved into the public\n"
+"phase when it is pushed to another repository."
+msgstr ""
+"Как правило работа с фазами прозрачна для пользователя. По умолчанию\n"
+"набор изменений создается в черновой фазе и перемещается в публичную фазу\n"
+"при проталкивании в другое хранилище."
+
+msgid ""
+"Once changesets become public, extensions like mq and rebase will\n"
+"refuse to operate on them to prevent creating duplicate changesets.\n"
+"Phases can also be manually manipulated with the :hg:`phase` command\n"
+"if needed. See :hg:`help -v phase` for examples."
+msgstr ""
+"После того, как набор изменений стал публичным, расширения вроде mq или\n"
+"rebase откажутся работать с ним, чтобы предотвратить создание дублирующихся\n"
+"наборов изменений. При необходимости фазами можно также манипулировать\n"
+"вручную с помощью команды :hg:`phase`."
+
+msgid ""
+"Phases and servers\n"
+"------------------"
+msgstr ""
+"Фазы и серверы\n"
+"--------------"
+
+msgid "Normally, all servers are ``publishing`` by default. This means::"
+msgstr "Как правило, все серверы по умолчанию ``публичные``. Это означает::"
+
+msgid ""
+" - all draft changesets that are pulled or cloned appear in phase\n"
+" public on the client"
+msgstr ""
+" - все черновые наборы изменений, которые затягиваются или клонируются,\n"
+" имеют публичную фазу на стороне клиента"
+
+msgid ""
+" - all draft changesets that are pushed appear as public on both\n"
+" client and server"
+msgstr ""
+" - все проталкиваемые черновые наборы изменений становятся публичными\n"
+" как на клиенте, так и на сервере"
+
+msgid " - secret changesets are neither pushed, pulled, or cloned"
+msgstr ""
+" - секретные наборы изменений не проталкиваются, не затягиваются\n"
+" и не клонируются"
+
+msgid ""
+".. note::\n"
+"  Pulling a draft changeset from a publishing server does not mark it\n"
+"  as public on the server side due to the read-only nature of pull."
+msgstr ""
+".. note::\n"
+"  Затягивание чернового набора изменений из ``публичного`` сервера не\n"
+"  сделает этот набор публичным на сервере, т.к. команда pull выполняется\n"
+"  в режиме ``только чтение``."
+
+msgid ""
+"Sometimes it may be desirable to push and pull changesets in the draft\n"
+"phase to share unfinished work. This can be done by setting a\n"
+"repository to disable publishing in its configuration file::"
+msgstr ""
+"Иногда может потребоваться проталкивать и затягивать наборы изменений\n"
+"в черновой фазе, чтобы поделиться неоконченной работой. Это может быть\n"
+"реализовано путем отключения ``публичности`` в файле конфигурации::"
+
+msgid ""
+"  [phases]\n"
+"  publish = False"
+msgstr ""
+"  [phases]\n"
+"  publish = False"
+
+msgid "See :hg:`help config` for more information on config files."
+msgstr "См. :hg:`help config` — справку по файлам конфигурации."
+
+msgid ""
+".. note::\n"
+"  Servers running older versions of Mercurial are treated as\n"
+"  publishing."
+msgstr ""
+".. note::\n"
+"  Серверы, работающие со старыми версиями Mercurial, считаются\n"
+"  публичными."
+
+msgid ""
+"Examples\n"
+"--------"
+msgstr ""
+"Примеры\n"
+"-------"
+
+msgid " - list changesets in draft or secret phase::"
+msgstr " - перечислить наборы изменений в черновой или секретной фазе::"
+
+msgid "     hg log -r \"not public()\""
+msgstr "     hg log -r \"not public()\""
+
+msgid " - change all secret changesets to draft::"
+msgstr " - установить все секретные наборы изменений в черновую фазу::"
+
+msgid "     hg phase --draft \"secret()\""
+msgstr "     hg phase --draft \"secret()\""
+
+msgid ""
+" - forcibly move the current changeset and descendants from public to draft::"
+msgstr ""
+" - принудительно переместить текущий набор изменений и потомков из публичной "
+"фазы в черновую::"
+
+msgid "     hg phase --force --draft ."
+msgstr "     hg phase --force --draft ."
+
+msgid " - show a list of changeset revision and phase::"
+msgstr " - показать список из номера ревизий и фазы::"
+
+msgid "     hg log --template \"{rev} {phase}\\n\""
+msgstr "     hg log --template \"{rev} {phase}\\n\""
+
+msgid ""
+"See :hg:`help phase` for more information on manually manipulating phases.\n"
+msgstr "См. :hg:`help phase` — о том, как изменять фазы вручную.\n"
+
 msgid "Mercurial supports several ways to specify individual revisions."
 msgstr "Mercurial поддерживает несколько способов задания отдельных ревизий."
 
@@ -19306,15 +19704,14 @@
 "инфиксных операторов. Для группировки можно использовать круглые скобки."
 
 msgid ""
-"Identifiers such as branch names must be quoted with single or double\n"
-"quotes if they contain characters outside of\n"
-"``[._a-zA-Z0-9\\x80-\\xff]`` or if they match one of the predefined\n"
-"predicates."
-msgstr ""
-"Различные идентификаторы, такие как имена веток, должны заключаться в\n"
-"одинарные или двойные кавычки в случаях, когда они содержат символы не\n"
-"из множества ``[._a-zA-Z0-9\\x80-\\xff]``, или если они совпадают с одним\n"
-"из предопределенных предикатов."
+"Identifiers such as branch names may need quoting with single or\n"
+"double quotes if they contain characters like ``-`` or if they match\n"
+"one of the predefined predicates."
+msgstr ""
+"Различные идентификаторы, такие как имена веток, могут заключаться в\n"
+"одинарные или двойные кавычки, особенно если они содержат такие символы\n"
+"как ``-``, или если их имена совпадают с именем одного из предопределенных\n"
+"предикатов."
 
 msgid ""
 "``not x``\n"
@@ -20067,13 +20464,11 @@
 "  Команда push сначала ищет путь с именем `default-push` и предпочтет\n"
 "  использовать его вместо 'default', если оба определены.\n"
 
-#, fuzzy
 msgid "remote branch lookup not supported"
-msgstr "поиск отдаленных веток не поддерживается"
-
-#, fuzzy
+msgstr "отдалённый сервер не поддерживает обзор своих веток"
+
 msgid "dirstate branch not accessible"
-msgstr "нет доступа к ветке с dirstate"
+msgstr "нет доступа к ветке рабочего каталога"
 
 #, python-format
 msgid "unknown branch '%s'"
@@ -20117,20 +20512,19 @@
 #, python-format
 msgid ""
 "%d files updated, %d files merged, %d files removed, %d files unresolved\n"
-msgstr ""
-"%d файлов обновлено, %d слито, %d удалено, %d c конфликтами\n"
+msgstr "%d файлов обновлено, %d слито, %d удалено, %d c конфликтами\n"
 
 msgid "use 'hg resolve' to retry unresolved file merges\n"
 msgstr ""
-"используйте 'hg resolve' чтобы повторить слияние файлов с конфликтами\n"
-
-#, fuzzy
+"используйте 'hg resolve' чтобы повторить попытку слияния конфликтующих "
+"файлов\n"
+
 msgid ""
 "use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to "
 "abandon\n"
 msgstr ""
-"используйте 'hg resolve' чтобы повторить слияние файлов с конфликтами или 'hg "
-"update -C .' чтобы отменить слияние\n"
+"используйте 'hg resolve' чтобы повторить попытку слияния конфликтующих "
+"файлов, или 'hg update -C .' чтобы вернуть всё в исходное состояние\n"
 
 msgid "(branch merge, don't forget to commit)\n"
 msgstr "(слияние веток, не забудьте зафиксировать)\n"
@@ -20293,9 +20687,9 @@
 msgid ".hg/sharedpath points to nonexistent directory %s"
 msgstr ".hg/sharedpath указывает на несуществующий каталог %s"
 
-#, fuzzy, python-format
+#, python-format
 msgid "warning: ignoring unknown working parent %s!\n"
-msgstr "внимание: игнорируется неизвестный рабочий родитель %s!\n"
+msgstr "внимание: игнорируем неизвестного родителя %s рабочей копии!\n"
 
 #, python-format
 msgid "%r cannot be used in a tag name"
@@ -20329,13 +20723,13 @@
 msgid "no rollback information available\n"
 msgstr "нет доступной информации для отката\n"
 
-#, fuzzy, python-format
+#, python-format
 msgid "repository tip rolled back to revision %s (undo %s: %s)\n"
-msgstr "оконечная ревизия откачена на ревизию %s (отменен %s: %s)\n"
-
-#, fuzzy, python-format
+msgstr "оконечной ревизией снова стала ревизия %s (отмена %s: %s)\n"
+
+#, python-format
 msgid "repository tip rolled back to revision %s (undo %s)\n"
-msgstr "оконечная ревизия откачена на ревизию %s (отменен %s)\n"
+msgstr "оконечной ревизией снова стала ревизия %s (отмена %s)\n"
 
 msgid "rolling back unknown transaction\n"
 msgstr "откатываем неизвестную транзакцию\n"
@@ -20420,10 +20814,10 @@
 "частичное затягивание не может быть произведено, т.к. второе хранилище\n"
 "не поддерживает подмножества групп изменений (changegroupsubset)"
 
-# BUG
-#, python-format
-msgid "updating phase of %sto %s failed!\n"
-msgstr "фаза обновления %s до %s завершилась неудачей!\n"
+# CHECK ME NOT-SURE
+#, python-format
+msgid "updating %s to public failed!\n"
+msgstr "обновление %s до публичной фазы завершилась неудачей!\n"
 
 #, python-format
 msgid "%d changesets found\n"
@@ -20455,11 +20849,12 @@
 msgid "adding file changes\n"
 msgstr "добавляем изменения в файлы\n"
 
-#, fuzzy
+# NOT-SURE
 msgid "received file revlog group is empty"
 msgstr "полученная группа revlog файла пуста"
 
-#, fuzzy, python-format
+# NOT-SURE
+#, python-format
 msgid "missing file data for %s:%s - run hg verify"
 msgstr "отсутствуют данные файлов для %s:%s - выполните hg verify"
 
@@ -20483,9 +20878,9 @@
 msgid "the server sent an unknown error code"
 msgstr "сервер передал неизвестный код ошибки"
 
-#, fuzzy
+# NOT-SURE
 msgid "streaming all changes\n"
-msgstr "поточная передача всех изменений\n"
+msgstr "передаём все изменения в поток\n"
 
 #, python-format
 msgid "%d files to transfer, %s of data\n"
@@ -20526,9 +20921,9 @@
 msgid "%r specified as email transport, but not in PATH"
 msgstr "%r задан в качестве транспорта email, но он не доступен в PATH"
 
-#, fuzzy, python-format
+#, python-format
 msgid "ignoring invalid sendcharset: %s\n"
-msgstr "игнорируется неверная кодировка исходящих писем: %s\n"
+msgstr "игнорируем неверную кодировку исходящих писем: %s\n"
 
 #, python-format
 msgid "invalid email address: %s"
@@ -20553,9 +20948,10 @@
 msgid "invalid pattern"
 msgstr "недопустимый шаблон"
 
-#, fuzzy, python-format
+# здесь file list — список шаблонов из listfile, см. hg help patterns
+#, python-format
 msgid "unable to read file list (%s)"
-msgstr "не удается прочитать список файлов (%s)"
+msgstr "не удается прочитать файл-список (%s)"
 
 #, python-format
 msgid "diff context lines count must be an integer, not %r"
@@ -20563,16 +20959,19 @@
 "количество строк контекста для различий должно быть целым числом, а не %r"
 
 #, python-format
-msgid ""
-"untracked file in working directory differs from file in requested revision: "
-"'%s'"
-msgstr ""
-"неотслеживаемый файл в рабочем каталоге отличается от файла в указанной\n"
-"ревизии: '%s'"
-
-#, fuzzy, python-format
+msgid "%s: untracked file differs\n"
+msgstr "%s: неотслеживаемый файл различается\n"
+
+msgid ""
+"untracked files in working directory differ from files in requested revision"
+msgstr ""
+"неотслеживаемые файлы в рабочем каталоге отличаются от файлов в "
+"запрашиваемой ревизии"
+
+# смысл: проверка имён файлов в системах без учёта регистра (Windows)
+#, python-format
 msgid "case-folding collision between %s and %s"
-msgstr "конфликт регистров букв между %s и %s"
+msgstr "коллизия прописных/строчных букв между %s и %s"
 
 # PROMPT
 #, python-format
@@ -20795,9 +21194,17 @@
 msgid "patch failed to apply"
 msgstr "не удалось наложить патч"
 
-#, fuzzy, python-format
-msgid "Removing unknown node %(n)s from %(p)i-phase boundary"
-msgstr "Удаляем неизвестный узел %(n)s из границы %(p)i-фазы"
+#, python-format
+msgid "ignoring inconsistent public root from remote: %s\n"
+msgstr "игнорируем неподходящий публичный корень от отдалённого сервера: %s\n"
+
+#, python-format
+msgid "ignoring unexpected root from remote: %i %s\n"
+msgstr "игнорируем неожиданный корень от отдалённого сервера: %i %s\n"
+
+#, python-format
+msgid "phases.new-commit: not a valid phase name ('%s')"
+msgstr "phases.new-commit: недопустимое имя фазы ('%s')"
 
 #, python-format
 msgid "exited with status %d"
@@ -20809,7 +21216,7 @@
 
 #, python-format
 msgid "saved backup bundle to %s\n"
-msgstr "резервный комплект (backup bundle) сохранен в %s\n"
+msgstr "резервный комплект (bundle) сохранен в %s\n"
 
 msgid "adding branch\n"
 msgstr "добавляется ветка\n"
@@ -21038,6 +21445,16 @@
 "    Наборы изменений, являющиеся потомками наборов из множества."
 
 msgid ""
+"``draft()``\n"
+"    Changeset in draft phase."
+msgstr ""
+"``draft()``\n"
+"    Набор изменений в черновой фазе."
+
+msgid "draft takes no arguments"
+msgstr "draft не требует аргументов"
+
+msgid ""
 "``filelog(pattern)``\n"
 "    Changesets connected to the specified filelog."
 msgstr ""
@@ -21072,10 +21489,6 @@
 msgid "follow expected a filename"
 msgstr "follow ожидает имя файла"
 
-#. i18n: "follow" is a keyword
-msgid "follow takes no arguments"
-msgstr "follow не требует аргументов"
-
 msgid ""
 "``all()``\n"
 "    All changesets, the same as ``0:tip``."
@@ -21292,6 +21705,39 @@
 "    Иначе все ревизии из множества."
 
 msgid ""
+"``public()``\n"
+"    Changeset in public phase."
+msgstr ""
+"``public()``\n"
+"    Набор изменений в публичной фазе."
+
+msgid "public takes no arguments"
+msgstr "public не требует аргументов"
+
+msgid ""
+"``remote([id [,path]])``\n"
+"    Local revision that corresponds to the given identifier in a\n"
+"    remote repository, if present. Here, the '.' identifier is a\n"
+"    synonym for the current local branch."
+msgstr ""
+"``remote([id [,path]])``\n"
+"    Локальная ревизия, соответствующая указанному идентификатору\n"
+"    в отдалённом хранилище, если такая существует. Идентификатор\n"
+"    '.' является здесь синонимом текущей локальной ветки."
+
+#. i18n: "remote" is a keyword
+msgid "remote takes one, two or no arguments"
+msgstr "remote принимает один, два или ноль аргументов"
+
+#. i18n: "remote" is a keyword
+msgid "remote requires a string id"
+msgstr "remote требует строковый идентификатор"
+
+#. i18n: "remote" is a keyword
+msgid "remote requires a repository path"
+msgstr "remote требует путь к хранилищу"
+
+msgid ""
 "``removes(pattern)``\n"
 "    Changesets which remove files matching pattern."
 msgstr ""
@@ -21336,6 +21782,16 @@
 "    Наборы изменений, не имеющие родителя во множестве."
 
 msgid ""
+"``secret()``\n"
+"    Changeset in secret phase."
+msgstr ""
+"``secret()``\n"
+"    Набор изменений в секретной фазе."
+
+msgid "secret takes no arguments"
+msgstr "secret не требует аргументов"
+
+msgid ""
 "``sort(set[, [-]key...])``\n"
 "    Sort set by keys. The default sort order is ascending, specify a key\n"
 "    as ``-key`` to sort in descending order."
@@ -21406,14 +21862,18 @@
 msgid "empty query"
 msgstr "пустой запрос"
 
+#, python-format
+msgid "no changes found (ignored %d secret changesets)\n"
+msgstr "изменений не найдено (игнорируем %d секретных наборов изменений)\n"
+
 # }}} revsets
 #, python-format
 msgid "ui.portablefilenames value is invalid ('%s')"
 msgstr "недопустимое значение ui.portablefilenames ('%s')"
 
-#, fuzzy, python-format
+#, python-format
 msgid "possible case-folding collision for %s"
-msgstr "возможен конфликт при свертке регистра букв в %s"
+msgstr "возможная коллизия прописных/строчных букв в %s"
 
 #, python-format
 msgid "path ends in directory separator: %s"
@@ -21455,17 +21915,15 @@
 "неизвестный формат хранилища: требуется возможность '%s' (обновите Mercurial)"
 
 msgid "searching for changes\n"
-msgstr "поиск изменений\n"
+msgstr "ищем изменения\n"
 
 msgid "all local heads known remotely\n"
 msgstr "все локальные головы известны на отдаленной стороне\n"
 
-#, fuzzy
 msgid "sampling from both directions\n"
-msgstr "выборка из обоих направлений\n"
-
-# такая форма?
-#, fuzzy
+msgstr "отбор образцов из обоих направлений\n"
+
+# NOT-SURE такая форма?
 msgid "queries"
 msgstr "запросов"
 
@@ -21509,14 +21967,13 @@
 msgid "no suitable response from remote hg"
 msgstr "не получено подходящего ответа от отдаленного hg"
 
-#, fuzzy
-msgid "remote: "
-msgstr "отдалённо: "
-
 #, python-format
 msgid "push refused: %s"
 msgstr "push отклонен: %s"
 
+msgid "ssl connection failed"
+msgstr "попытка установить SSL соединение не удалась"
+
 msgid "Python SSL support not found"
 msgstr "Не найдена поддержка SSL для Python"
 
@@ -21541,14 +21998,39 @@
 msgstr "не найден web.cacerts: %s"
 
 #, python-format
-msgid "%s certificate error: %s (use --insecure to connect insecurely)"
-msgstr ""
-"ошибка сертификата %s: %s (используйте --insecure для небезопасного "
-"подключения)"
-
-#, python-format
-msgid "invalid certificate for %s with fingerprint %s"
-msgstr "недействительный сертификат для %s с отпечатком %s"
+msgid "host fingerprint for %s can't be verified (Python too old)"
+msgstr "отпечаток хоста %s не может быть проверен (Python слишком старый)"
+
+#, python-format
+msgid "warning: certificate for %s can't be verified (Python too old)\n"
+msgstr ""
+"внимание: сертификат %s не может быть проверен (Python слишком старый)\n"
+
+# BUG здесь %s - имя локального хоста
+#, python-format
+msgid "%s ssl connection error"
+msgstr "%s - ошибка ssl"
+
+#, python-format
+msgid "%s certificate error: no certificate received"
+msgstr "%s ошибка сертификата: сертификатов не получено"
+
+#, python-format
+msgid "certificate for %s has unexpected fingerprint %s"
+msgstr "сертификат для %s имеет неожиданные отпечатки %s"
+
+msgid "check hostfingerprint configuration"
+msgstr "проверьте настройку hostfingerprint"
+
+#, python-format
+msgid "%s certificate error: %s"
+msgstr "%s ошибка сертификата: %s"
+
+#, python-format
+msgid "configure hostfingerprint %s or use --insecure to connect insecurely"
+msgstr ""
+"настройте отпечатки пальцев хоста %s или используйте --insecure для "
+"небезопасного подключения"
 
 #, python-format
 msgid ""
@@ -21559,15 +22041,6 @@
 "конфигурации hostfingerprints или web.cacerts)\n"
 
 #, python-format
-msgid "host fingerprint for %s can't be verified (Python too old)"
-msgstr "отпечаток хоста %s не может быть проверен (Python слишком старый)"
-
-#, python-format
-msgid "warning: certificate for %s can't be verified (Python too old)\n"
-msgstr ""
-"внимание: сертификат %s не может быть проверен (Python слишком старый)\n"
-
-#, python-format
 msgid "'%s' does not appear to be an hg repository"
 msgstr "'%s' не похож на хранилище Mercurial"
 
@@ -22017,8 +22490,11 @@
 ":node: Строка. Хэш набора изменений в виде 40-значной шестнадцатеричной\n"
 "    строки."
 
-msgid ":rev: Integer. The changeset phase."
-msgstr ":rev: Целое число. Фаза набора изменений."
+msgid ":phase: String. The changeset phase name."
+msgstr ":phase: Строка. Имя фазы набора изменений."
+
+msgid ":phaseidx: Integer. The changeset phase index."
+msgstr ":phaseidx: Целое число. Индекс фазы набора изменений."
 
 msgid ":rev: Integer. The repository-local changeset revision number."
 msgstr ":rev: Целое число. Локальный номер ревизии в этом хранилище."
@@ -22051,9 +22527,10 @@
 msgid "style not found: %s"
 msgstr "стиль не найден: %s"
 
-#, fuzzy, python-format
+# NOT-SURE так?
+#, python-format
 msgid "\"%s\" not in template map"
-msgstr "\"%s\" не в отображении шаблона"
+msgstr "\"%s\" отсутсвует в сопоставлении шаблона"
 
 #, python-format
 msgid "template file %s: %s"
@@ -22430,6 +22907,20 @@
 msgid "push failed:"
 msgstr "ошибка при проталкивании:"
 
+#~ msgid "bad hash in '%s' (only %d bytes long)"
+#~ msgstr "неверный хэш в '%s' (длина всего %d байт)"
+
+#~ msgid "addremove cannot be run on a repo with largefiles"
+#~ msgstr ""
+#~ "нельзя запускать addremove в хранилище с большими файлами (largefiles)"
+
+#, fuzzy
+#~ msgid "Removing unknown node %(n)s from %(p)i-phase boundary"
+#~ msgstr "Удаляем неизвестный узел %(n)s из границы %(p)i-фазы"
+
+#~ msgid "follow takes no arguments"
+#~ msgstr "follow не требует аргументов"
+
 # BUG force won't help you to avoid data loss
 #~ msgid ""
 #~ "    It's possible to lose data with rollback: commit, update back to\n"
@@ -22601,8 +23092,8 @@
 #~ "- ``%USERPROFILE%\\mercurial.ini``\n"
 #~ "- ``%HOME%\\.hgrc``\n"
 #~ "- ``%HOME%\\mercurial.ini``\n"
-#~ "- ``C:\\mercurial\\mercurial.ini`` (если не найден ключ в реестре или hgrc."
-#~ "d\\)\n"
+#~ "- ``C:\\mercurial\\mercurial.ini`` (если не найден ключ в реестре или "
+#~ "hgrc.d\\)\n"
 #~ "- ``HKEY_LOCAL_MACHINE\\SOFTWARE\\Mercurial`` (если не найден hgrc.d\\или "
 #~ "mercurial.ini)\n"
 #~ "- ``<каталог-с-hg.exe>\\hgrc.d\\*.rc`` (если не найден mercurial.ini)\n"
--- a/i18n/sv.po	Sat Jan 21 15:17:39 2012 +0200
+++ b/i18n/sv.po	Wed Feb 01 16:28:35 2012 -0600
@@ -1,6 +1,6 @@
 # Swedish translation for Mercurial
 # Svensk översättning för Mercurial
-# Copyright (C) 2009-2011 Matt Mackall and others
+# Copyright (C) 2009-2012 Matt Mackall and others
 #
 # Translation dictionary:
 #
@@ -13,8 +13,8 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2011-07-29 20:08+0200\n"
-"PO-Revision-Date: 2011-07-30 09:39+0200\n"
+"POT-Creation-Date: 2012-01-30 16:25+0100\n"
+"PO-Revision-Date: 2012-01-30 16:27+0100\n"
 "Last-Translator: Jens Bäckman <jens.backman@gmail.com>\n"
 "Language-Team: Swedish\n"
 "Language: Swedish\n"
@@ -289,8 +289,12 @@
 msgstr ""
 
 #, python-format
-msgid "acl: access denied for changeset %s"
-msgstr ""
+msgid "acl: user \"%s\" denied on \"%s\" (changeset \"%s\")"
+msgstr "acl: användaren \"%s\" nekades på \"%s\" (ändringen \"%s\")"
+
+#, python-format
+msgid "acl: user \"%s\" not allowed on \"%s\" (changeset \"%s\")"
+msgstr "acl: användaren \"%s\" tillåts inte på \"%s\" (ändringen \"%s\")"
 
 msgid "hooks for integrating with the Bugzilla bug tracker"
 msgstr ""
@@ -946,6 +950,13 @@
 "  branches.inactive = none"
 
 msgid ""
+"  tags.normal = green\n"
+"  tags.local = black bold"
+msgstr ""
+"  tags.normal = green\n"
+"  tags.local = black 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"
@@ -1243,8 +1254,8 @@
 
 msgid ""
 "    :convert.hg.saverev: store original revision ID in changeset\n"
-"        (forces target IDs to change). It takes and boolean argument\n"
-"        and defaults to False."
+"        (forces target IDs to change). It takes a boolean argument and\n"
+"        defaults to False."
 msgstr ""
 
 msgid ""
@@ -1916,6 +1927,10 @@
 msgid "Mercurial failed to run itself, check hg executable is in PATH"
 msgstr ""
 
+#, python-format
+msgid "log stream exception '%s'"
+msgstr ""
+
 msgid ""
 "svn: cannot probe remote repository, assume it could be a subversion "
 "repository. Use --source-type if you know better.\n"
@@ -1971,6 +1986,10 @@
 msgstr ""
 
 #, python-format
+msgid "svn: revision %s not found"
+msgstr "svn: revisionen %s hittades inte"
+
+#, python-format
 msgid "%s not found up to revision %d"
 msgstr ""
 
@@ -2079,9 +2098,10 @@
 msgstr ""
 
 msgid ""
-"The extension uses an optional ``[eol]`` section in your hgrc file\n"
-"(not the ``.hgeol`` file) for settings that control the overall\n"
-"behavior. There are two settings:"
+"The extension uses an optional ``[eol]`` section read from both the\n"
+"normal Mercurial configuration files and the ``.hgeol`` file, with the\n"
+"latter overriding the former. You can use that section to control the\n"
+"overall behavior. There are three settings:"
 msgstr ""
 
 msgid ""
@@ -2100,6 +2120,12 @@
 msgstr ""
 
 msgid ""
+"- ``eol.fix-trailing-newline`` (default False) can be set to True to\n"
+"  ensure that converted files end with a EOL character (either ``\\n``\n"
+"  or ``\\r\\n`` as per the configured patterns)."
+msgstr ""
+
+msgid ""
 "The extension provides ``cleverencode:`` and ``cleverdecode:`` filters\n"
 "like the deprecated win32text extension does. This means that you can\n"
 "disable win32text and enable eol and your filters will still work. You\n"
@@ -2714,8 +2740,9 @@
 msgid "hg debug-merge-base REV REV"
 msgstr ""
 
+#. i18n: bisect changeset status
 msgid "ignored"
-msgstr ""
+msgstr "ignorerad"
 
 msgid "hg debug-rev-parse REV"
 msgstr ""
@@ -3196,6 +3223,457 @@
 "    "
 msgstr ""
 
+msgid "track large binary files"
+msgstr "spåra stora binärfiler"
+
+msgid ""
+"Large binary files tend to be not very compressible, not very\n"
+"diffable, and not at all mergeable. Such files are not handled\n"
+"efficiently by Mercurial's storage format (revlog), which is based on\n"
+"compressed binary deltas; storing large binary files as regular\n"
+"Mercurial files wastes bandwidth and disk space and increases\n"
+"Mercurial's memory usage. The largefiles extension addresses these\n"
+"problems by adding a centralized client-server layer on top of\n"
+"Mercurial: largefiles live in a *central store* out on the network\n"
+"somewhere, and you only fetch the revisions that you need when you\n"
+"need them."
+msgstr ""
+
+msgid ""
+"largefiles works by maintaining a \"standin file\" in .hglf/ for each\n"
+"largefile. The standins are small (41 bytes: an SHA-1 hash plus\n"
+"newline) and are tracked by Mercurial. Largefile revisions are\n"
+"identified by the SHA-1 hash of their contents, which is written to\n"
+"the standin. largefiles uses that revision ID to get/put largefile\n"
+"revisions from/to the central store. This saves both disk space and\n"
+"bandwidth, since you don't need to retrieve all historical revisions\n"
+"of large files when you clone or pull."
+msgstr ""
+
+msgid ""
+"To start a new repository or add new large binary files, just add\n"
+"--large to your :hg:`add` command. For example::"
+msgstr ""
+
+msgid ""
+"  $ dd if=/dev/urandom of=randomdata count=2000\n"
+"  $ hg add --large randomdata\n"
+"  $ hg commit -m 'add randomdata as a largefile'"
+msgstr ""
+
+msgid ""
+"When you push a changeset that adds/modifies largefiles to a remote\n"
+"repository, its largefile revisions will be uploaded along with it.\n"
+"Note that the remote Mercurial must also have the largefiles extension\n"
+"enabled for this to work."
+msgstr ""
+
+msgid ""
+"When you pull a changeset that affects largefiles from a remote\n"
+"repository, Mercurial behaves as normal. However, when you update to\n"
+"such a revision, any largefiles needed by that revision are downloaded\n"
+"and cached (if they have never been downloaded before). This means\n"
+"that network access may be required to update to changesets you have\n"
+"not previously updated to."
+msgstr ""
+
+msgid ""
+"If you already have large files tracked by Mercurial without the\n"
+"largefiles extension, you will need to convert your repository in\n"
+"order to benefit from largefiles. This is done with the\n"
+":hg:`lfconvert` command::"
+msgstr ""
+
+msgid "  $ hg lfconvert --size 10 oldrepo newrepo"
+msgstr ""
+
+msgid ""
+"In repositories that already have largefiles in them, any new file\n"
+"over 10MB will automatically be added as a largefile. To change this\n"
+"threshold, set ``largefiles.minsize`` in your Mercurial config file\n"
+"to the minimum size in megabytes to track as a largefile, or use the\n"
+"--lfsize option to the add command (also in megabytes)::"
+msgstr ""
+
+msgid ""
+"  [largefiles]\n"
+"  minsize = 2"
+msgstr ""
+
+msgid "  $ hg add --lfsize 2"
+msgstr ""
+
+msgid ""
+"The ``largefiles.patterns`` config option allows you to specify a list\n"
+"of filename patterns (see :hg:`help patterns`) that should always be\n"
+"tracked as largefiles::"
+msgstr ""
+
+msgid ""
+"  [largefiles]\n"
+"  patterns =\n"
+"    *.jpg\n"
+"    re:.*\\.(png|bmp)$\n"
+"    library.zip\n"
+"    content/audio/*"
+msgstr ""
+
+msgid ""
+"Files that match one of these patterns will be added as largefiles\n"
+"regardless of their size."
+msgstr ""
+
+msgid ""
+"The ``largefiles.minsize`` and ``largefiles.patterns`` config options\n"
+"will be ignored for any repositories not already containing a\n"
+"largefile. To add the first largefile to a repository, you must\n"
+"explicitly do so with the --large flag passed to the :hg:`add`\n"
+"command.\n"
+msgstr ""
+
+msgid "convert a normal repository to a largefiles repository"
+msgstr "konvertera ett normalt arkiv till ett largefiles-arkiv"
+
+msgid ""
+"    Convert repository SOURCE to a new repository DEST, identical to\n"
+"    SOURCE except that certain files will be converted as largefiles:\n"
+"    specifically, any file that matches any PATTERN *or* whose size is\n"
+"    above the minimum size threshold is converted as a largefile. The\n"
+"    size used to determine whether or not to track a file as a\n"
+"    largefile is the size of the first version of the file. The\n"
+"    minimum size can be specified either with --size or in\n"
+"    configuration as ``largefiles.size``."
+msgstr ""
+
+msgid ""
+"    After running this command you will need to make sure that\n"
+"    largefiles is enabled anywhere you intend to push the new\n"
+"    repository."
+msgstr ""
+
+msgid ""
+"    Use --to-normal to convert largefiles back to normal files; after\n"
+"    this, the DEST repository can be used without largefiles at all."
+msgstr ""
+
+msgid "getting largefiles"
+msgstr "hämtar largefiles"
+
+#, python-format
+msgid "getting %s:%s\n"
+msgstr "hämtar %s:%s\n"
+
+#, python-format
+msgid "%s: data corruption (expected %s, got %s)\n"
+msgstr "%s: datakorruption (förväntade mig %s, fick %s)\n"
+
+#, python-format
+msgid "searching %d changesets for largefiles\n"
+msgstr "söker i %d ändringar efter largefiles\n"
+
+#, python-format
+msgid "verified contents of %d revisions of %d largefiles\n"
+msgstr ""
+
+#, python-format
+msgid "verified existence of %d revisions of %d largefiles\n"
+msgstr ""
+
+#, python-format
+msgid "unsupported URL scheme %r"
+msgstr ""
+
+#, python-format
+msgid "%s does not appear to be a largefile store"
+msgstr "%s verkar inte vara en largefiles-lagring"
+
+#, python-format
+msgid "%s is not a local Mercurial repo"
+msgstr "%s är inte ett lokalt Mercurial-arkiv"
+
+#, python-format
+msgid "initializing destination %s\n"
+msgstr ""
+
+msgid "converting revisions"
+msgstr "konverterar revisioner"
+
+#, python-format
+msgid "renamed/copied largefile %s becomes symlink"
+msgstr ""
+
+#, python-format
+msgid "largefile %s becomes symlink"
+msgstr ""
+
+#, python-format
+msgid "skipping incorrectly formatted tag %s\n"
+msgstr "hoppar över felformaterat märke %s\n"
+
+#, python-format
+msgid "skipping incorrectly formatted id %s\n"
+msgstr "hoppar över flrformaterad id %s\n"
+
+#, python-format
+msgid "no mapping for id %s\n"
+msgstr ""
+
+msgid "uploading largefiles"
+msgstr ""
+
+#, python-format
+msgid "largefile %s missing from store (needs to be uploaded)"
+msgstr ""
+
+msgid "getting changed largefiles\n"
+msgstr ""
+
+#, python-format
+msgid "%d largefiles updated, %d removed\n"
+msgstr ""
+
+msgid "minimum size (MB) for files to be converted as largefiles"
+msgstr ""
+
+msgid "convert from a largefiles repo to a normal repo"
+msgstr ""
+
+msgid "hg lfconvert SOURCE DEST [FILE ...]"
+msgstr ""
+
+#, python-format
+msgid "largefiles: size must be number (not %s)\n"
+msgstr ""
+
+msgid "minimum size for largefiles must be specified"
+msgstr ""
+
+#, python-format
+msgid "unknown operating system: %s\n"
+msgstr "okänt operativsystem: %s\n"
+
+#, python-format
+msgid "Found %s in store\n"
+msgstr ""
+
+#, python-format
+msgid "Found %s in system cache\n"
+msgstr ""
+
+msgid "Can't get file locally"
+msgstr ""
+
+#, python-format
+msgid ""
+"changeset %s: %s missing\n"
+"  (looked for hash %s)\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"changeset %s: %s: contents differ\n"
+"  (%s:\n"
+"  expected hash %s,\n"
+"  but got %s)\n"
+msgstr ""
+
+#, python-format
+msgid "%s already a largefile\n"
+msgstr "%s är redan en largefile\n"
+
+#, python-format
+msgid "adding %s as a largefile\n"
+msgstr "lägger till %s som en largefile\n"
+
+msgid "no files specified"
+msgstr "inga filer angivna"
+
+#, python-format
+msgid "not removing %s: %s (use forget to undo)\n"
+msgstr "raderar inte %s: %s (använd forget för att ångra)\n"
+
+msgid "file still exists"
+msgstr "filen existerar fortfarande"
+
+msgid "file is modified"
+msgstr "filen är modifierad"
+
+msgid "file has been marked for add"
+msgstr "filen har markerats för addering"
+
+#, python-format
+msgid "removing %s\n"
+msgstr "tar bort %s\n"
+
+msgid "--normal cannot be used with --large"
+msgstr "--normal kan inte användas med --large"
+
+msgid "uncommitted local changes"
+msgstr "oarkiverade lokala ändringar"
+
+msgid "&Largefile"
+msgstr "&Largefile"
+
+msgid "&Normal file"
+msgstr "&Normal fil"
+
+#, python-format
+msgid ""
+"%s has been turned into a largefile\n"
+"use (l)argefile or keep as (n)ormal file?"
+msgstr ""
+
+#, python-format
+msgid ""
+"%s has been turned into a normal file\n"
+"keep as (l)argefile or use (n)ormal file?"
+msgstr ""
+
+#, python-format
+msgid "merging %s and %s to %s\n"
+msgstr ""
+
+#, python-format
+msgid "merging %s\n"
+msgstr ""
+
+#, python-format
+msgid ""
+"largefile %s has a merge conflict\n"
+"keep (l)ocal or take (o)ther?"
+msgstr ""
+
+msgid "&Local"
+msgstr ""
+
+msgid "&Other"
+msgstr ""
+
+msgid "destination largefile already exists"
+msgstr ""
+
+msgid "no files to copy"
+msgstr "inga filer att kopiera"
+
+msgid "caching new largefiles\n"
+msgstr "cachar nya largefiles\n"
+
+#, python-format
+msgid "%d largefiles cached\n"
+msgstr "%d largefiles cachade\n"
+
+#, python-format
+msgid "unknown archive type '%s'"
+msgstr "okänd arkivtyp '%s'"
+
+msgid "cannot give prefix when archiving to files"
+msgstr ""
+
+#, python-format
+msgid "largefile %s not found in repo store or system cache"
+msgstr ""
+
+#, python-format
+msgid "not removing %s: file is already untracked\n"
+msgstr ""
+
+msgid "largefiles: No remote repo\n"
+msgstr ""
+
+msgid "largefiles to upload:\n"
+msgstr ""
+
+#, python-format
+msgid "largefiles: %d to upload\n"
+msgstr ""
+
+msgid "largefile contents do not match hash"
+msgstr ""
+
+#, python-format
+msgid "largefiles: failed to put %s into store: %s"
+msgstr ""
+
+#, python-format
+msgid "requested largefile %s not present in cache"
+msgstr ""
+
+msgid "remote: "
+msgstr "fjärr: "
+
+#, python-format
+msgid "unexpected putlfile response: %s"
+msgstr "oväntat putlfile-svar: %s"
+
+msgid "putlfile failed:"
+msgstr "putlfile misslyckades:"
+
+msgid "putlfile failed (unexpected response):"
+msgstr "putlfile misslyckades (oväntat svar):"
+
+msgid "unexpected response:"
+msgstr "oväntat svar:"
+
+#, python-format
+msgid "remotestore: could not put %s to remote store %s"
+msgstr ""
+
+#, python-format
+msgid "remotestore: put %s to remote store %s"
+msgstr ""
+
+#, python-format
+msgid "remotestore: could not open file %s: %s"
+msgstr ""
+
+#, python-format
+msgid "remotestore: largefile %s is invalid"
+msgstr ""
+
+#, python-format
+msgid "remotestore: largefile %s is missing"
+msgstr ""
+
+#, python-format
+msgid "changeset %s: %s: contents differ\n"
+msgstr ""
+
+#, python-format
+msgid "changeset %s: %s missing\n"
+msgstr "ändring %s: %s saknas\n"
+
+#, python-format
+msgid ""
+"largefiles: repo method %r appears to have already been wrapped by another "
+"extension: largefiles may behave incorrectly\n"
+msgstr ""
+
+#, python-format
+msgid "file \"%s\" is a largefile standin"
+msgstr ""
+
+msgid "add as largefile"
+msgstr "lägg till som largefile"
+
+msgid "add as normal file"
+msgstr "lägg till som normal fil"
+
+msgid ""
+"add all files above this size (in megabytes) as largefiles (default: 10)"
+msgstr ""
+
+msgid "verify largefiles"
+msgstr ""
+
+msgid "verify all revisions of largefiles not just current"
+msgstr ""
+
+msgid "verify largefile contents not just existence"
+msgstr ""
+
+msgid "display outgoing largefiles"
+msgstr "visa utgående largefiles"
+
 msgid "manage a stack of patches"
 msgstr "hantera en uppsättning patchar"
 
@@ -3270,6 +3748,20 @@
 "andra fallet."
 
 msgid ""
+"It may be desirable for mq changesets in the secret phase (see\n"
+":hg:`help phases`), which can be enabled with the following setting::"
+msgstr ""
+"Det kan vara önskvärt att hålla alla mq-ändringar i secret-fasen (se\n"
+":hg:`help phases`), något som kan aktiveras med följande inställning::"
+
+msgid ""
+"  [mq]\n"
+"  secret = True"
+msgstr ""
+"  [mq]\n"
+"  secret = True"
+
+msgid ""
 "You will by default be managing a patch queue named \"patches\". You can\n"
 "create other, independent patch queues with the :hg:`qqueue` command.\n"
 msgstr ""
@@ -3635,6 +4127,13 @@
 msgstr ""
 
 #, python-format
+msgid "revision %d is not mutable"
+msgstr ""
+
+msgid "see \"hg help phases\" for details"
+msgstr ""
+
+#, python-format
 msgid "cannot import merge revision %d"
 msgstr ""
 
@@ -3678,8 +4177,9 @@
 
 msgid ""
 "    The patches must not be applied, and at least one patch is required. "
-"With\n"
-"    -k/--keep, the patch files are preserved in the patch directory."
+"Exact\n"
+"    patch identifiers must be given. With -k/--keep, the patch files are\n"
+"    preserved in the patch directory."
 msgstr ""
 
 msgid ""
@@ -4262,6 +4762,11 @@
 msgid "copy %s to %s\n"
 msgstr ""
 
+msgid ""
+"strip specified revision (optional, can specify revisions without this "
+"option)"
+msgstr ""
+
 msgid "force removal of changesets, discard uncommitted changes (no backup)"
 msgstr ""
 "tvinga radering av ändringar, kassera oarkiverade ändringar (ingen backup)"
@@ -4441,9 +4946,15 @@
 msgid "no revisions specified"
 msgstr ""
 
+msgid "warning: uncommitted changes in the working directory\n"
+msgstr "varning: oarkiverade ändringar i arbetskatalogen\n"
+
 msgid "list all available queues"
 msgstr "visa alla tillgängliga köer"
 
+msgid "print name of active queue"
+msgstr "visa namnet på aktiv kö"
+
 msgid "create new queue"
 msgstr "skapa ny kö"
 
@@ -4451,7 +4962,7 @@
 msgstr "döp om aktiv kö"
 
 msgid "delete reference to queue"
-msgstr ""
+msgstr "radera referens till kö"
 
 msgid "delete queue, and remove patch dir"
 msgstr ""
@@ -4472,7 +4983,9 @@
 "registered\n"
 "    queues - by default the \"normal\" patches queue is registered. The "
 "currently\n"
-"    active queue will be marked with \"(active)\"."
+"    active queue will be marked with \"(active)\". Specifying --active will "
+"print\n"
+"    only the name of the active queue."
 msgstr ""
 
 msgid ""
@@ -4568,94 +5081,191 @@
 msgid "operate on patch repository"
 msgstr "arbeta med patcharkiv"
 
-msgid "hooks for sending email notifications at commit/push time"
-msgstr ""
-
-msgid ""
-"Subscriptions can be managed through a hgrc file. Default mode is to\n"
-"print messages to stdout, for testing and configuring."
-msgstr ""
-
-msgid ""
-"To use, configure the notify extension and enable it in hgrc like\n"
-"this::"
-msgstr ""
-
-msgid ""
-"  [extensions]\n"
-"  notify ="
+msgid "hooks for sending email push notifications"
+msgstr ""
+
+msgid ""
+"This extension let you run hooks sending email notifications when\n"
+"changesets are being pushed, from the sending or receiving side."
+msgstr ""
+
+msgid ""
+"First, enable the extension as explained in :hg:`help extensions`, and\n"
+"register the hook you want to run. ``incoming`` and ``outgoing`` hooks\n"
+"are run by the changesets receiver while the ``outgoing`` one is for\n"
+"the sender::"
 msgstr ""
 
 msgid ""
 "  [hooks]\n"
 "  # one email for each incoming changeset\n"
 "  incoming.notify = python:hgext.notify.hook\n"
-"  # batch emails when many changesets incoming at one time\n"
-"  changegroup.notify = python:hgext.notify.hook\n"
-"  # batch emails when many changesets outgoing at one time (client side)\n"
+"  # one email for all incoming changesets\n"
+"  changegroup.notify = python:hgext.notify.hook"
+msgstr ""
+
+msgid ""
+"  # one email for all outgoing changesets\n"
 "  outgoing.notify = python:hgext.notify.hook"
 msgstr ""
 
 msgid ""
-"  [notify]\n"
-"  # config items go here"
-msgstr ""
-
-msgid "Required configuration items::"
-msgstr ""
-
-msgid "  config = /path/to/file # file containing subscriptions"
-msgstr ""
-
-msgid "Optional configuration items::"
-msgstr ""
-
-msgid ""
-"  test = True            # print messages to stdout for testing\n"
-"  strip = 3              # number of slashes to strip for url paths\n"
-"  domain = example.com   # domain to use if committer missing domain\n"
-"  style = ...            # style file to use when formatting email\n"
-"  template = ...         # template to use when formatting email\n"
-"  incoming = ...         # template to use when run as incoming hook\n"
-"  outgoing = ...         # template to use when run as outgoing hook\n"
-"  changegroup = ...      # template to use when run as changegroup hook\n"
-"  maxdiff = 300          # max lines of diffs to include (0=none, -1=all)\n"
-"  maxsubject = 67        # truncate subject line longer than this\n"
-"  diffstat = True        # add a diffstat before the diff content\n"
-"  sources = serve        # notify if source of incoming changes in this "
-"list\n"
-"                         # (serve == ssh or http, push, pull, bundle)\n"
-"  merge = False          # send notification for merges (default True)\n"
-"  [email]\n"
-"  from = user@host.com   # email address to send as if none given\n"
-"  [web]\n"
-"  baseurl = http://hgserver/... # root of hg web site for browsing commits"
-msgstr ""
-
-msgid ""
-"The notify config file has same format as a regular hgrc file. It has\n"
-"two sections so you can express subscriptions in whatever way is\n"
-"handier for you."
+"Now the hooks are running, subscribers must be assigned to\n"
+"repositories. Use the ``[usersubs]`` section to map repositories to a\n"
+"given email or the ``[reposubs]`` section to map emails to a single\n"
+"repository::"
 msgstr ""
 
 msgid ""
 "  [usersubs]\n"
-"  # key is subscriber email, value is \",\"-separated list of glob patterns\n"
+"  # key is subscriber email, value is a comma-separated list of glob\n"
+"  # patterns\n"
 "  user@host = pattern"
 msgstr ""
 
 msgid ""
 "  [reposubs]\n"
-"  # key is glob pattern, value is \",\"-separated list of subscriber emails\n"
+"  # key is glob pattern, value is a comma-separated list of subscriber\n"
+"  # emails\n"
 "  pattern = user@host"
 msgstr ""
 
-msgid "Glob patterns are matched against path to repository root."
-msgstr ""
-
-msgid ""
-"If you like, you can put notify config file in repository that users\n"
-"can push changes to, they can manage their own subscriptions.\n"
+msgid ""
+"Glob patterns are matched against absolute path to repository\n"
+"root. The subscriptions can be defined in their own file and\n"
+"referenced with::"
+msgstr ""
+
+msgid ""
+"  [notify]\n"
+"  config = /path/to/subscriptionsfile"
+msgstr ""
+
+msgid ""
+"Alternatively, they can be added to Mercurial configuration files by\n"
+"setting the previous entry to an empty value."
+msgstr ""
+
+msgid ""
+"At this point, notifications should be generated but will not be sent until "
+"you\n"
+"set the ``notify.test`` entry to ``False``."
+msgstr ""
+
+msgid ""
+"Notifications content can be tweaked with the following configuration "
+"entries:"
+msgstr ""
+
+msgid ""
+"notify.test\n"
+"  If ``True``, print messages to stdout instead of sending them. Default: "
+"True."
+msgstr ""
+
+msgid ""
+"notify.sources\n"
+"  Space separated list of change sources. Notifications are sent only\n"
+"  if it includes the incoming or outgoing changes source. Incoming\n"
+"  sources can be ``serve`` for changes coming from http or ssh,\n"
+"  ``pull`` for pulled changes, ``unbundle`` for changes added by\n"
+"  :hg:`unbundle` or ``push`` for changes being pushed\n"
+"  locally. Outgoing sources are the same except for ``unbundle`` which\n"
+"  is replaced by ``bundle``. Default: serve."
+msgstr ""
+
+msgid ""
+"notify.strip\n"
+"  Number of leading slashes to strip from url paths. By default, "
+"notifications\n"
+"  references repositories with their absolute path. ``notify.strip`` let "
+"you\n"
+"  turn them into relative paths. For example, ``notify.strip=3`` will "
+"change\n"
+"  ``/long/path/repository`` into ``repository``. Default: 0."
+msgstr ""
+
+msgid ""
+"notify.domain\n"
+"  If subscribers emails or the from email have no domain set, complete them\n"
+"  with this value."
+msgstr ""
+
+msgid ""
+"notify.style\n"
+"  Style file to use when formatting emails."
+msgstr ""
+
+msgid ""
+"notify.template\n"
+"  Template to use when formatting emails."
+msgstr ""
+
+msgid ""
+"notify.incoming\n"
+"  Template to use when run as incoming hook, override ``notify.template``."
+msgstr ""
+
+msgid ""
+"notify.outgoing\n"
+"  Template to use when run as outgoing hook, override ``notify.template``."
+msgstr ""
+
+msgid ""
+"notify.changegroup\n"
+"  Template to use when running as changegroup hook, override\n"
+"  ``notify.template``."
+msgstr ""
+
+msgid ""
+"notify.maxdiff\n"
+"  Maximum number of diff lines to include in notification email. Set to 0\n"
+"  to disable the diff, -1 to include all of it. Default: 300."
+msgstr ""
+
+msgid ""
+"notify.maxsubject\n"
+"  Maximum number of characters in emails subject line. Default: 67."
+msgstr ""
+
+msgid ""
+"notify.diffstat\n"
+"  Set to True to include a diffstat before diff content. Default: True."
+msgstr ""
+
+msgid ""
+"notify.merge\n"
+"  If True, send notifications for merge changesets. Default: True."
+msgstr ""
+
+msgid ""
+"notify.mbox\n"
+"  If set, append mails to this mbox file instead of sending. Default: None."
+msgstr ""
+
+msgid ""
+"notify.fromauthor\n"
+"  If set, use the first committer of the changegroup for the \"From\" field "
+"of\n"
+"  the notification mail. If not set, take the user from the pushing repo.\n"
+"  Default: False."
+msgstr ""
+
+msgid ""
+"If set, the following entries will also be used to customize the "
+"notifications:"
+msgstr ""
+
+msgid ""
+"email.from\n"
+"  Email ``From`` address to use if none can be found in generated email "
+"content."
+msgstr ""
+
+msgid ""
+"web.baseurl\n"
+"  Root repository browsing URL to combine with repository paths when making\n"
+"  references. See also ``notify.strip``."
 msgstr ""
 
 #, python-format
@@ -4846,13 +5456,6 @@
 "patchbomb-utäkningen automatiskt kan skicka patchbomber från kommandoraden.\n"
 "Se sektionerna [email] och [smtp] i hgrc(5) för detaljer.\n"
 
-#, python-format
-msgid "%s Please enter a valid value"
-msgstr "%s Ange ett giltigt värde"
-
-msgid "Please enter a valid value.\n"
-msgstr "Ange ett giltigt värde.\n"
-
 msgid "send patches as attachments"
 msgstr ""
 
@@ -5075,6 +5678,9 @@
 msgid "This patch series consists of %d patches."
 msgstr ""
 
+msgid "no recipient addresses provided"
+msgstr "inga mottagaradresser angavs"
+
 msgid ""
 "\n"
 "Final summary:"
@@ -5095,18 +5701,15 @@
 msgid "Displaying "
 msgstr "Visar "
 
-msgid "Writing "
-msgstr "Skriver "
-
-msgid "writing"
-msgstr "skriver"
-
 msgid "Sending "
 msgstr "Sänder "
 
 msgid "sending"
 msgstr "sänder"
 
+msgid "writing"
+msgstr "skriver"
+
 msgid "show progress bars for some actions"
 msgstr ""
 
@@ -5123,6 +5726,9 @@
 msgid ""
 "  [progress]\n"
 "  delay = 3 # number of seconds (float) before showing the progress bar\n"
+"  changedelay = 1 # changedelay: minimum delay before showing a new topic.\n"
+"                  # If set to less than 3 * refresh, that value will\n"
+"                  # be used instead.\n"
 "  refresh = 0.1 # time in seconds between refreshes of the progress bar\n"
 "  format = topic bar number estimate # format of the progress bar\n"
 "  width = <none> # if set, the maximum width of the progress information\n"
@@ -5269,6 +5875,9 @@
 "ancestor of base and dest)"
 msgstr ""
 
+msgid "rebase these revisions"
+msgstr ""
+
 msgid "rebase onto the specified changeset"
 msgstr ""
 
@@ -5278,6 +5887,9 @@
 msgid "use text as collapse commit message"
 msgstr "använd text som kollapsarkiveringsmeddelande"
 
+msgid "invoke editor on commit messages"
+msgstr "starta editor för arkiveringsmeddelande"
+
 msgid "read collapse commit message from file"
 msgstr "läs kollapsarkiveringsmeddelandet från fil"
 
@@ -5387,15 +5999,34 @@
 msgid "tool option will be ignored\n"
 msgstr ""
 
+msgid "cannot specify both a source and a base"
+msgstr "kan inte ange både en källa och en bas"
+
 msgid "cannot specify both a revision and a base"
 msgstr ""
 
+msgid "cannot specify both a revision and a source"
+msgstr "kan inte ange både en revision och en källa"
+
 msgid "detach requires a revision to be specified"
 msgstr "detach kräver att en revision anges"
 
 msgid "cannot specify a base with detach"
 msgstr "kan inte ange en bas med detach"
 
+msgid "can't remove original changesets with unrebased descendants"
+msgstr ""
+
+msgid "use --keep to keep original changesets"
+msgstr "använd --keep för att bevara originaländringarna"
+
+#, python-format
+msgid "can't rebase immutable changeset %s"
+msgstr ""
+
+msgid "see hg help phases for details"
+msgstr ""
+
 msgid "nothing to rebase\n"
 msgstr ""
 
@@ -5438,6 +6069,9 @@
 msgid "no rebase in progress"
 msgstr ""
 
+msgid "warning: immutable rebased changeset detected, can't abort\n"
+msgstr ""
+
 msgid "warning: new changesets detected on target branch, can't abort\n"
 msgstr ""
 
@@ -5447,12 +6081,15 @@
 msgid "cannot rebase onto an applied mq patch"
 msgstr ""
 
+msgid "no matching revisions"
+msgstr ""
+
+msgid "can't rebase multiple roots"
+msgstr ""
+
 msgid "source is ancestor of destination"
 msgstr ""
 
-msgid "source is descendant of destination"
-msgstr ""
-
 msgid "--tool can only be used with --rebase"
 msgstr ""
 
@@ -5774,6 +6411,17 @@
 "    "
 msgstr ""
 
+msgid "convert a shared repository to a normal one"
+msgstr "konvertera ett delat arkiv till ett normalt"
+
+msgid ""
+"    Copy the store data to the repo and remove the sharedpath data.\n"
+"    "
+msgstr ""
+
+msgid "this is not a shared repo"
+msgstr "det här är inte ett delat arkiv"
+
 msgid "do not create a working copy"
 msgstr ""
 
@@ -6176,17 +6824,14 @@
 msgid "archive prefix contains illegal components"
 msgstr ""
 
-msgid "cannot give prefix when archiving to files"
-msgstr ""
-
-#, python-format
-msgid "unknown archive type '%s'"
-msgstr ""
-
 msgid "archiving"
 msgstr "arkiverar"
 
 #, python-format
+msgid "malformed line in .hg/bookmarks: %r\n"
+msgstr "defekt rad i .hg/bookmarks: %r\n"
+
+#, python-format
 msgid "bookmark '%s' contains illegal character"
 msgstr "bokmärket '%s' innehåller ogiltiga tecken"
 
@@ -6199,8 +6844,8 @@
 msgstr "uppdaterar bokmärket %s\n"
 
 #, python-format
-msgid "not updating divergent bookmark %s\n"
-msgstr "uppdaterar inte divergent bokmärke %s\n"
+msgid "divergent bookmark %s stored as %s\n"
+msgstr "divergent bokmärke %s lagrat som %s\n"
 
 msgid "searching for changed bookmarks\n"
 msgstr "söker efter ändrade bokmärken\n"
@@ -6246,18 +6891,22 @@
 msgid "the name '%s' is reserved"
 msgstr "namnet '%s' är reserverat"
 
+#, python-format
+msgid "uncommitted changes in subrepo %s"
+msgstr "oarkiverade ändringar i underarkivet %s"
+
 msgid "options --message and --logfile are mutually exclusive"
-msgstr ""
+msgstr "du kan bara ange en av --message och --logfile"
 
 #, python-format
 msgid "can't read commit message '%s': %s"
-msgstr ""
+msgstr "kan inte läsa arkiveringsmeddelande '%s': %s"
 
 msgid "limit must be a positive integer"
-msgstr ""
+msgstr "limit måste vara ett positivt heltal"
 
 msgid "limit must be positive"
-msgstr ""
+msgstr "limit måste vara positivt"
 
 #, python-format
 msgid "invalid format spec '%%%s' in output filename"
@@ -6332,9 +6981,6 @@
 msgid "destination %s is not a directory"
 msgstr ""
 
-msgid "no files to copy"
-msgstr ""
-
 msgid "(consider using --after)\n"
 msgstr ""
 
@@ -6358,6 +7004,10 @@
 msgstr "märke:       %s\n"
 
 #, python-format
+msgid "phase:       %s\n"
+msgstr "fas:         %s\n"
+
+#, python-format
 msgid "parent:      %d:%s\n"
 msgstr "förälder:    %d:%s\n"
 
@@ -6751,7 +7401,7 @@
 "    om resultatet antagligen inte kommer att vara användbart."
 
 msgid "at least one filename or pattern is required"
-msgstr ""
+msgstr "minst ett filnamn eller mönster krävs"
 
 msgid "at least one of -n/-c is required for -l"
 msgstr ""
@@ -6795,6 +7445,21 @@
 "    Arkivtypen upptäcks automatiskt baserat på filändelsen (eller tvinga\n"
 "    med hjälp av -t/--type)."
 
+msgid "      Examples:"
+msgstr "      Exempel:"
+
+msgid "      - create a zip file containing the 1.0 release::"
+msgstr "      - skapa en zip-fil som innehåller 1.0-releasen::"
+
+msgid "          hg archive -r 1.0 project-1.0.zip"
+msgstr "          hg archive -r 1.0 project-1.0.zip"
+
+msgid "      - create a tarball excluding .hg files::"
+msgstr "      - skapa en tarboll utan .hg-filer::"
+
+msgid "          hg archive project.tar.gz -X \".hg*\""
+msgstr "          hg archive project.tar.gz -X \".hg*\""
+
 msgid "    Valid types are:"
 msgstr "    Giltiga typer är:"
 
@@ -6842,8 +7507,8 @@
 msgid "merge with old dirstate parent after backout"
 msgstr "sammanfoga med gamla dirstate-föräldern efter återkallning"
 
-msgid "parent to choose when backing out merge"
-msgstr "förälder att välja när en sammanfogning återkallas"
+msgid "parent to choose when backing out merge (DEPRECATED)"
+msgstr "förälder att välja när en sammanfogning återkallas (FÖRLEGAD)"
 
 msgid "revision to backout"
 msgstr "revision att återkalla"
@@ -6870,26 +7535,35 @@
 "    sammanfogade resultatet lämnas oarkiverat."
 
 msgid ""
-"    By default, the pending changeset will have one parent,\n"
-"    maintaining a linear history. With --merge, the pending changeset\n"
-"    will instead have two parents: the old parent of the working\n"
-"    directory and a new child of REV that simply undoes REV."
-msgstr ""
-"    Som standard kommer ändringen att ha en förälder, för att bibehålla en\n"
-"    linjär historik. Med --merge kommer ändringen istället att ha två\n"
-"    föräldrar: den gamla föräldern från arbetskatalogen och ett nytt barn\n"
-"    av REV som helt enkelt ogör REV."
-
-msgid ""
-"    Before version 1.7, the behavior without --merge was equivalent to\n"
-"    specifying --merge followed by :hg:`update --clean .` to cancel\n"
-"    the merge and leave the child of REV as a head to be merged\n"
-"    separately."
-msgstr ""
-"    Innan version 1.7, så var beteendet utan --merge ekvivalent med att\n"
-"    ange --merge följt av :hg:`update --clean .` för att ångra\n"
-"    sammanfogningen och lämna barnet till REV som ett huvud att\n"
-"    sammanfogas separat."
+"    .. note::\n"
+"      backout cannot be used to fix either an unwanted or\n"
+"      incorrect merge."
+msgstr ""
+"    .. note::\n"
+"      backout kan inte användas för att fixa en oönskad eller felaktig\n"
+"      sammanfogning."
+
+msgid ""
+"      By default, the pending changeset will have one parent,\n"
+"      maintaining a linear history. With --merge, the pending\n"
+"      changeset will instead have two parents: the old parent of the\n"
+"      working directory and a new child of REV that simply undoes REV."
+msgstr ""
+"      Som standard kommer ändringen att ha en förälder, för att bibehålla\n"
+"      en linjär historik. Med --merge kommer ändringen istället att ha två\n"
+"      föräldrar: den gamla föräldern från arbetskatalogen och ett nytt\n"
+"      barn av REV som helt enkelt ogör REV."
+
+msgid ""
+"      Before version 1.7, the behavior without --merge was equivalent\n"
+"      to specifying --merge followed by :hg:`update --clean .` to\n"
+"      cancel the merge and leave the child of REV as a head to be\n"
+"      merged separately."
+msgstr ""
+"      Innan version 1.7, så var beteendet utan --merge ekvivalent med att\n"
+"      ange --merge följt av :hg:`update --clean .` för att ångra\n"
+"      sammanfogningen och lämna barnet till REV som ett huvud att\n"
+"      sammanfogas separat."
 
 msgid "please specify just one revision"
 msgstr "ange bara en revision"
@@ -6903,8 +7577,8 @@
 msgid "cannot backout a change with no parents"
 msgstr "kan inte återkalla en ändring utan föräldrar"
 
-msgid "cannot backout a merge changeset without --parent"
-msgstr "kan inte återkalla en sammanfogande ändring utan --parent"
+msgid "cannot backout a merge changeset"
+msgstr "kan inte återkalla en sammanfogning"
 
 #, python-format
 msgid "%s is not a parent of %s"
@@ -6986,6 +7660,101 @@
 "    revisionen hoppas över, 127 (kommandot hittades inte) avbryter\n"
 "    genomsökningen, och alla andra värden betyder att revisionen är dålig."
 
+msgid "      Some examples:"
+msgstr "      Några exempel:"
+
+msgid ""
+"      - start a bisection with known bad revision 12, and good revision 34::"
+msgstr ""
+"      - starta en sökning med känd dålig revision 12, och bra revision 34::"
+
+msgid ""
+"          hg bisect --bad 34\n"
+"          hg bisect --good 12"
+msgstr ""
+"          hg bisect --bad 34\n"
+"          hg bisect --good 12"
+
+msgid ""
+"      - advance the current bisection by marking current revision as good "
+"or\n"
+"        bad::"
+msgstr ""
+"      - stega den nuvarande sökningen genom att markera nuvarande revision\n"
+"        som bra eller dålig::"
+
+msgid ""
+"          hg bisect --good\n"
+"          hg bisect --bad"
+msgstr ""
+"          hg bisect --good\n"
+"          hg bisect --bad"
+
+msgid ""
+"      - mark the current revision, or a known revision, to be skipped (eg. "
+"if\n"
+"        that revision is not usable because of another issue)::"
+msgstr ""
+"      - markera att den nuvarande revisionen, eller en känd revision, ska\n"
+"        hoppas över (ex. om den revisionen är oanvändbar på grund av annat\n"
+"        fel)::"
+
+msgid ""
+"          hg bisect --skip\n"
+"          hg bisect --skip 23"
+msgstr ""
+"          hg bisect --skip\n"
+"          hg bisect --skip 23"
+
+msgid "      - forget the current bisection::"
+msgstr "      - glöm den aktuella genomsökningen::"
+
+msgid "          hg bisect --reset"
+msgstr "          hg bisect --reset"
+
+msgid ""
+"      - use 'make && make tests' to automatically find the first broken\n"
+"        revision::"
+msgstr ""
+"      - använd 'make && make tests' för att automatiskt hitta den första\n"
+"        defekta revisionen::"
+
+msgid ""
+"          hg bisect --reset\n"
+"          hg bisect --bad 34\n"
+"          hg bisect --good 12\n"
+"          hg bisect --command 'make && make tests'"
+msgstr ""
+"          hg bisect --reset\n"
+"          hg bisect --bad 34\n"
+"          hg bisect --good 12\n"
+"          hg bisect --command 'make && make tests'"
+
+msgid ""
+"      - see all changesets whose states are already known in the current\n"
+"        bisection::"
+msgstr ""
+"      - visa alla ändringar vars status redan är kända i den nuvarande\n"
+"        genomsökningen::"
+
+msgid "          hg log -r \"bisect(pruned)\""
+msgstr "          hg log -r \"bisect(pruned)\""
+
+msgid "      - see all changesets that took part in the current bisection::"
+msgstr "      - se alla ändringar som var med i den nuvarande genomsökningen::"
+
+msgid "          hg log -r \"bisect(range)\""
+msgstr "          hg log -r \"bisect(range)\""
+
+msgid "      - with the graphlog extension, you can even get a nice graph::"
+msgstr "      - med graphlog-utökningen så kan du få en söt graf::"
+
+msgid "          hg log --graph -r \"bisect(range)\""
+msgstr "          hg log --graph -r \"bisect(range)\""
+
+msgid "      See :hg:`help revsets` for more about the `bisect()` keyword."
+msgstr "      Se :hg:`help revsets` för mer om nyckelordet `bisect()`."
+
 msgid "The first good revision is:\n"
 msgstr "Den första bra revisionen är:\n"
 
@@ -7051,8 +7820,8 @@
 msgid "rename a given bookmark"
 msgstr "döp om angivet bokmärke"
 
-msgid "do not mark a new bookmark active"
-msgstr "markera inte ett nytt bokmärke som aktivt"
+msgid "mark a bookmark inactive"
+msgstr "markera ett bokmärke som inaktivt"
 
 msgid "hg bookmarks [-f] [-d] [-i] [-m NAME] [-r REV] [NAME]"
 msgstr "hg bookmarks [-f] [-d] [-i] [-m NAMN] [-r REV] [NAMN]"
@@ -7061,15 +7830,16 @@
 msgstr "spåra viss utveckling med flyttbara markörer"
 
 msgid ""
-"    Bookmarks are pointers to certain commits that move when\n"
-"    committing. Bookmarks are local. They can be renamed, copied and\n"
-"    deleted. It is possible to use bookmark names in :hg:`merge` and\n"
-"    :hg:`update` to merge and update respectively to a given bookmark."
+"    Bookmarks are pointers to certain commits that move when committing.\n"
+"    Bookmarks are local. They can be renamed, copied and deleted. It is\n"
+"    possible to use :hg:`merge NAME` to merge from a given bookmark, and\n"
+"    :hg:`update NAME` to update to a given bookmark."
 msgstr ""
 "    Bokmärken är pekare till utvalda arkiveringar som flyttar vid\n"
 "    arkivering. Bokmärken är lokala. De kan döpas om, kopieras och\n"
-"    raderas. Det är möjligt att använda bokmärkesnamn i :hg:`merge` och\n"
-"    :hg:`update` för att sammanfoga och uppdatera till ett visst bokmärke."
+"    raderas. Det är möjligt att använda bokmärkesnamn i :hg:`merge NAMN`\n"
+"    för att sammanfoga från ett bokmärke, och :hg:`update NAMN` för att\n"
+"    uppdatera till ett visst bokmärke."
 
 msgid ""
 "    You can use :hg:`bookmark NAME` to set a bookmark on the working\n"
@@ -7087,14 +7857,28 @@
 "    push` and :hg:`help pull`). This requires both the local and remote\n"
 "    repositories to support bookmarks. For versions prior to 1.8, this "
 "means\n"
-"    the bookmarks extension must be enabled.\n"
-"    "
+"    the bookmarks extension must be enabled."
 msgstr ""
 "    Bokmärken kan tryckas och dras mellan arkiv (se :hg:`help push` och\n"
 "    :hg:`help pull`). Detta kräver att både det lokala och fjärrarkivet\n"
 "    stödjer bokmärken. För versioner innan 1.8, så betyder det att\n"
-"    bookmarks-utökningen måste vara aktiverad.\n"
-"    "
+"    bookmarks-utökningen måste vara aktiverad."
+
+msgid ""
+"    With -i/--inactive, the new bookmark will not be made the active\n"
+"    bookmark. If -r/--rev is given, the new bookmark will not be made\n"
+"    active even if -i/--inactive is not given. If no NAME is given, the\n"
+"    current active bookmark will be marked inactive.\n"
+"    "
+msgstr ""
+"    Med -i/--inactive blir det nya bokmärket inte det aktiva bokmärket.\n"
+"    Om -r/--rev anges så är bokmärket inte aktivt även om -i/--inactive\n"
+"    inte anges. Om inget NAMN anges, kommer det nuvarande aktiva bokmärket\n"
+"    att markeras som inaktivt.\n"
+"    "
+
+msgid "bookmark name required"
+msgstr "bokmärkesnamn krävs"
 
 #, python-format
 msgid "bookmark '%s' does not exist"
@@ -7107,9 +7891,6 @@
 msgid "new bookmark name required"
 msgstr "nytt bokmärkesnamn krävs"
 
-msgid "bookmark name required"
-msgstr "bokmärkesnamn krävs"
-
 msgid "bookmark name cannot contain newlines"
 msgstr "bokmärkesnamn kan inte innehålla radbrytningar"
 
@@ -7135,6 +7916,18 @@
 msgstr "sätt eller visa det aktuella grennamnet"
 
 msgid ""
+"    .. note::\n"
+"       Branch names are permanent and global. Use :hg:`bookmark` to create "
+"a\n"
+"       light-weight bookmark instead. See :hg:`help glossary` for more\n"
+"       information about named branches and bookmarks."
+msgstr ""
+"    .. note::\n"
+"       Grennamn är permanenta och globala. Använd :hg:`bookmark` för att\n"
+"       skapa ett lättviktsbokmärke istället. Se :hg:`help glossary` för\n"
+"       mer information om namngivna grenar och bokmärken."
+
+msgid ""
 "    With no argument, show the current branch name. With one argument,\n"
 "    set the working directory branch name (the branch will not exist\n"
 "    in the repository until the next commit). Standard practice\n"
@@ -7169,18 +7962,6 @@
 "    Använd kommandot :hg:`update` för att byta till en existerande gren.\n"
 "    Använd :hg:`commit --close-branch` för att markera grenen som stängd."
 
-msgid "    .. note::"
-msgstr "    .. notera::"
-
-msgid ""
-"       Branch names are permanent. Use :hg:`bookmark` to create a\n"
-"       light-weight bookmark instead. See :hg:`help glossary` for more\n"
-"       information about named branches and bookmarks."
-msgstr ""
-"       Grennamnar är permanenta. Använd :hg:`bookmark` för att skapa ett\n"
-"       lättviktsbokmärke istället. Se :hg:`help glossary` för mer\n"
-"       information om namngivna grenar och bokmärken."
-
 #, python-format
 msgid "reset working directory to branch %s\n"
 msgstr "återställ arbetskatalogen till grenen %s\n"
@@ -7190,12 +7971,15 @@
 
 #. i18n: "it" refers to an existing branch
 msgid "use 'hg update' to switch to it"
-msgstr ""
+msgstr "använd 'hg update' för att byta till den"
 
 #, python-format
 msgid "marked working directory as branch %s\n"
 msgstr "markerade arbetskatalogen som grenen %s\n"
 
+msgid "(branches are permanent and global, did you want a bookmark?)\n"
+msgstr "(grenar är permanenta och globala, ville du ha ett bokmärke?)\n"
+
 msgid "show only branches that have unmerged heads"
 msgstr "visa bara grenar som har icke-sammanfogade huvuden"
 
@@ -7399,111 +8183,153 @@
 "    Källans plats kommer att läggas till i det nya arkivets\n"
 "    ``.hg/hgrc``-fil som standardplats att användas för framtida dragningar."
 
-msgid "    See :hg:`help urls` for valid source format details."
-msgstr "    Se :hg:`help urls` för detaljer om giltiga källformat."
-
-msgid ""
-"    It is possible to specify an ``ssh://`` URL as the destination, but no\n"
-"    ``.hg/hgrc`` and working directory will be created on the remote side.\n"
-"    Please see :hg:`help urls` for important details about ``ssh://`` URLs."
-msgstr ""
-"    Det är möjligt att ange en ``ssh://``-URL som destination, men ingen\n"
-"    ``.hg/hgrc`` och arbetskatalog skapas på fjärrsidan.\n"
-"    Se :hg:`help urls` för viktiga detaljer om ``ssh://``-URLer."
-
-msgid ""
-"    A set of changesets (tags, or branch names) to pull may be specified\n"
-"    by listing each changeset (tag, or branch name) with -r/--rev.\n"
-"    If -r/--rev is used, the cloned repository will contain only a subset\n"
-"    of the changesets of the source repository. Only the set of changesets\n"
-"    defined by all -r/--rev options (including all their ancestors)\n"
-"    will be pulled into the destination repository.\n"
-"    No subsequent changesets (including subsequent tags) will be present\n"
-"    in the destination."
-msgstr ""
-"    En grupp ändringar (märken, eller grennamn) att dra kan anges genom\n"
-"    att lista varje ändring (märke, eller grennamn) med -r/--rev. Om\n"
-"    -r/--rev används, kommer det klonade arkivet bara att innehålla en\n"
-"    delmängd av ändringarna i källarkivet. Bara ändringarna definierade med\n"
-"    -r/--rev (och alla föräldrar) kommer att dras in i destinationsarkivet.\n"
-"    Inga efterföljande ändringar (inklusive efterföljande märken) kommer\n"
-"    att finnas i destinationen."
-
-msgid ""
-"    Using -r/--rev (or 'clone src#rev dest') implies --pull, even for\n"
-"    local source repositories."
-msgstr ""
-"    Användande av -r/--rev (eller 'clone källa#rev dest') aktiverar också\n"
-"    --pull, även för lokala arkiv."
-
-msgid ""
-"    For efficiency, hardlinks are used for cloning whenever the source\n"
-"    and destination are on the same filesystem (note this applies only\n"
-"    to the repository data, not to the working directory). Some\n"
-"    filesystems, such as AFS, implement hardlinking incorrectly, but\n"
-"    do not report errors. In these cases, use the --pull option to\n"
-"    avoid hardlinking."
-msgstr ""
-"    Av effektivitestskäl används hårda länkar när källan och destinationen\n"
-"    är på samma filsystem (notera att detta bara gäller för arkivdatat,\n"
-"    inte arbetskopian). Vissa filsystem såsom AFS implementerar\n"
-"    hårda länkar felaktigt, men rapporterar inga fel. Använd flaggan --pull\n"
-"    för att undvika användning av hårda länkar."
-
-msgid ""
-"    In some cases, you can clone repositories and the working directory\n"
-"    using full hardlinks with ::"
-msgstr ""
-"    I vissa fall kan du klona både arkiv och arbetskopia, alla\n"
-"    hårdlänkade, med ::"
-
-msgid "      $ cp -al REPO REPOCLONE"
-msgstr "      $ cp -al ARKIV ARKIVKLON"
-
-msgid ""
-"    This is the fastest way to clone, but it is not always safe. The\n"
-"    operation is not atomic (making sure REPO is not modified during\n"
-"    the operation is up to you) and you have to make sure your editor\n"
-"    breaks hardlinks (Emacs and most Linux Kernel tools do so). Also,\n"
-"    this is not compatible with certain extensions that place their\n"
-"    metadata under the .hg directory, such as mq."
-msgstr ""
-"    Detta är det snabbaste sättet att klona, men det är inte alltid säkert.\n"
-"    Operationen är inte atomisk (att ARKIV inte modifieras under\n"
-"    operationen är upp till dig) och du måste se till att din editor bryter\n"
-"    hårda länkar (Emacs och de flesta Linux-kernelverktyg gör det). Det är\n"
-"    inte heller kompatibelt med vissa utökningar som placerar sin metadata\n"
-"    under katalogen .hg, som mq."
-
-msgid ""
-"    Mercurial will update the working directory to the first applicable\n"
-"    revision from this list:"
-msgstr ""
-"    Mercurial uppdaterar arbetskatalogen till den första passande\n"
-"    revisionen från den här listan:"
-
-msgid ""
-"    a) null if -U or the source repository has no changesets\n"
-"    b) if -u . and the source repository is local, the first parent of\n"
-"       the source repository's working directory\n"
-"    c) the changeset specified with -u (if a branch name, this means the\n"
-"       latest head of that branch)\n"
-"    d) the changeset specified with -r\n"
-"    e) the tipmost head specified with -b\n"
-"    f) the tipmost head specified with the url#branch source syntax\n"
-"    g) the tipmost head of the default branch\n"
-"    h) tip"
-msgstr ""
-"    a) null med -U eller källarkivet inte har några ändringar\n"
-"    b) med -u . och källarkivet, den första föräldern av källarkivets\n"
-"       arbetskatalog\n"
-"    c) ändringen antigen med -u (om ett grennamn, innebär det senaste\n"
-"       huvudet på den grenen)\n"
-"    d) ändringen angiven med -r\n"
-"    e) det högsta huvudet angivet med -b\n"
-"    f) det högsta huvudet angivent med källsyntaxen url#gren\n"
-"    g) det högsta huvudet på default-grenen\n"
-"    h) tip"
+msgid ""
+"    Only local paths and ``ssh://`` URLs are supported as\n"
+"    destinations. For ``ssh://`` destinations, no working directory or\n"
+"    ``.hg/hgrc`` will be created on the remote side."
+msgstr ""
+"    Bara lokala sökvägar och ``ssh://``-URLer stödjs som destinationer. För\n"
+"    ``ssh://``-destinationer så kommer ingen arbetskatalog eller\n"
+"    ``.hg/hgrc`` att skapas på fjärrsidan."
+
+msgid ""
+"    To pull only a subset of changesets, specify one or more revisions\n"
+"    identifiers with -r/--rev or branches with -b/--branch. The\n"
+"    resulting clone will contain only the specified changesets and\n"
+"    their ancestors. These options (or 'clone src#rev dest') imply\n"
+"    --pull, even for local source repositories. Note that specifying a\n"
+"    tag will include the tagged changeset but not the changeset\n"
+"    containing the tag."
+msgstr ""
+"    För att dra bara en delmängd av ändringarna, angå en eller fler\n"
+"    revisionidentifierare med -r/--rev eller grenar med -b/--branch. Den\n"
+"    resulterande klonen kommer bara att innehålla de angivna ändringarna\n"
+"    och deras anfäder. Dessa flaggor (eller 'clone källa#rev dest') har\n"
+"    implicit --pull, även för lokala arkiv. Notera att angivandet av ett\n"
+"    märke kommer att hämta ut den märkta ändringen, men inte ändringen som\n"
+"    innehåller märket."
+
+msgid ""
+"    To check out a particular version, use -u/--update, or\n"
+"    -U/--noupdate to create a clone with no working directory."
+msgstr ""
+"    För att hämta ut en speciell version, använd -u/--update, eller\n"
+"    -U/--noupdate för att skapa en klon utan en arbetskatalog."
+
+msgid ""
+"      For efficiency, hardlinks are used for cloning whenever the\n"
+"      source and destination are on the same filesystem (note this\n"
+"      applies only to the repository data, not to the working\n"
+"      directory). Some filesystems, such as AFS, implement hardlinking\n"
+"      incorrectly, but do not report errors. In these cases, use the\n"
+"      --pull option to avoid hardlinking."
+msgstr ""
+"      Av effektivitestskäl används hårda länkar när källan och\n"
+"      destinationen är på samma filsystem (notera att detta bara gäller för\n"
+"      arkivdatat, inte arbetskopian). Vissa filsystem såsom AFS\n"
+"      implementerar hårda länkar felaktigt, men rapporterar inga fel.\n"
+"      Använd flaggan --pull för att undvika användning av hårda länkar."
+
+msgid ""
+"      In some cases, you can clone repositories and the working\n"
+"      directory using full hardlinks with ::"
+msgstr ""
+"      I vissa fall kan du klona både arkiv och arbetskopia, alla\n"
+"      hårdlänkade, med ::"
+
+msgid "        $ cp -al REPO REPOCLONE"
+msgstr "        $ cp -al ARKIV ARKIVKLON"
+
+msgid ""
+"      This is the fastest way to clone, but it is not always safe. The\n"
+"      operation is not atomic (making sure REPO is not modified during\n"
+"      the operation is up to you) and you have to make sure your\n"
+"      editor breaks hardlinks (Emacs and most Linux Kernel tools do\n"
+"      so). Also, this is not compatible with certain extensions that\n"
+"      place their metadata under the .hg directory, such as mq."
+msgstr ""
+"      Detta är det snabbaste sättet att klona, men det är inte alltid\n"
+"      säkert. Operationen är inte atomisk (att ARKIV inte modifieras under\n"
+"      operationen är upp till dig) och du måste se till att din editor\n"
+"      bryter hårda länkar (Emacs och de flesta Linux-kernelverktyg gör\n"
+"      det). Det är inte heller kompatibelt med vissa utökningar som\n"
+"      placerar sin metadata under katalogen .hg, som mq."
+
+msgid ""
+"      Mercurial will update the working directory to the first applicable\n"
+"      revision from this list:"
+msgstr ""
+"      Mercurial uppdaterar arbetskatalogen till den första passande\n"
+"      revisionen från den här listan:"
+
+msgid ""
+"      a) null if -U or the source repository has no changesets\n"
+"      b) if -u . and the source repository is local, the first parent of\n"
+"         the source repository's working directory\n"
+"      c) the changeset specified with -u (if a branch name, this means the\n"
+"         latest head of that branch)\n"
+"      d) the changeset specified with -r\n"
+"      e) the tipmost head specified with -b\n"
+"      f) the tipmost head specified with the url#branch source syntax\n"
+"      g) the tipmost head of the default branch\n"
+"      h) tip"
+msgstr ""
+"      a) null med -U eller källarkivet inte har några ändringar\n"
+"      b) med -u . och källarkivet, den första föräldern av källarkivets\n"
+"         arbetskatalog\n"
+"      c) ändringen antigen med -u (om ett grennamn, innebär det senaste\n"
+"         huvudet på den grenen)\n"
+"      d) ändringen angiven med -r\n"
+"      e) det högsta huvudet angivet med -b\n"
+"      f) det högsta huvudet angivent med källsyntaxen url#gren\n"
+"      g) det högsta huvudet på default-grenen\n"
+"      h) tip"
+
+msgid "      - clone a remote repository to a new directory named hg/::"
+msgstr "      - klona ett fjärrarkiv till en ny katalog med namnet hg/::"
+
+msgid "          hg clone http://selenic.com/hg"
+msgstr "          hg clone http://selenic.com/hg"
+
+msgid "      - create a lightweight local clone::"
+msgstr "      - skapa en lättviktig lokal klon::"
+
+msgid "          hg clone project/ project-feature/"
+msgstr "          hg clone project/ project-feature/"
+
+msgid ""
+"      - clone from an absolute path on an ssh server (note double-slash)::"
+msgstr ""
+"      - klona från en absolut sökväg på en ssh-server (notera dubbel-slash)::"
+
+msgid "          hg clone ssh://user@server//home/projects/alpha/"
+msgstr "          hg clone ssh://user@server//home/projects/alpha/"
+
+msgid ""
+"      - do a high-speed clone over a LAN while checking out a\n"
+"        specified version::"
+msgstr ""
+"      - gör en höghastighetsklon över ett LAN samtidigt som en specificerad\n"
+"        version hämtas ut::"
+
+msgid "          hg clone --uncompressed http://server/repo -u 1.5"
+msgstr "          hg clone --uncompressed http://server/repo -u 1.5"
+
+msgid ""
+"      - create a repository without changesets after a particular revision::"
+msgstr "      - skapa ett arkiv utan ändringarna efter en viss revision::"
+
+msgid "          hg clone -r 04e544 experimental/ good/"
+msgstr "          hg clone -r 04e544 experimental/ good/"
+
+msgid "      - clone (and track) a particular named branch::"
+msgstr "      - klona (och spåra) en viss namngiven gren::"
+
+msgid "          hg clone http://selenic.com/hg#stable"
+msgstr "          hg clone http://selenic.com/hg#stable"
+
+msgid "    See :hg:`help urls` for details on specifying URLs."
+msgstr "    Se :hg:`help urls` för detaljer om att ange URLer."
 
 msgid "cannot specify both --noupdate and --updaterev"
 msgstr "kan inte ange både --noupdate och --updaterev"
@@ -7846,7 +8672,7 @@
 msgstr "inget ignoreringsmönster hittades"
 
 msgid "revlog format"
-msgstr ""
+msgstr "revlog-format"
 
 msgid "[-f FORMAT] -c|-m|FILE"
 msgstr ""
@@ -7866,52 +8692,53 @@
 
 #, python-format
 msgid "Checking encoding (%s)...\n"
-msgstr ""
+msgstr "Kontrollerar teckenkodning (%s)...\n"
 
 msgid " (check that your locale is properly set)\n"
-msgstr ""
+msgstr " (kontrollera att din locale är korrekt inställd)\n"
 
 #, python-format
 msgid "Checking installed modules (%s)...\n"
-msgstr ""
+msgstr "Kontrollerar installerade moduler (%s)...\n"
 
 msgid " One or more extensions could not be found"
-msgstr ""
+msgstr " En eller fler utökningar kunde inte hittas"
 
 msgid " (check that you compiled the extensions)\n"
-msgstr ""
-
-msgid "Checking templates...\n"
-msgstr ""
+msgstr " (kontrollera att du kompilerade utökningarna)\n"
+
+#, python-format
+msgid "Checking templates (%s)...\n"
+msgstr "Kontrollerar mallar (%s)...\n"
 
 msgid " (templates seem to have been installed incorrectly)\n"
-msgstr ""
+msgstr " (mallar verkar vara inkorrekt installerade)\n"
 
 msgid "Checking commit editor...\n"
-msgstr ""
+msgstr "Kontrollerar arkiveringseditor...\n"
 
 msgid " No commit editor set and can't find vi in PATH\n"
-msgstr ""
+msgstr " Ingen arkiveringseditor satt och kan inte hitta vi i PATH\n"
 
 msgid " (specify a commit editor in your configuration file)\n"
-msgstr ""
+msgstr " (specificera en arkiveringseditor i din konfigurationsfil)\n"
 
 #, python-format
 msgid " Can't find editor '%s' in PATH\n"
-msgstr ""
+msgstr " Kan inte hitta editorn '%s' i PATH\n"
 
 msgid "Checking username...\n"
-msgstr ""
+msgstr "Kontrollerar användarnamn...\n"
 
 msgid " (specify a username in your configuration file)\n"
-msgstr ""
+msgstr " (ange ett användarnamn i din konfigurationsfil)\n"
 
 msgid "No problems detected\n"
-msgstr ""
+msgstr "Inga problem upptäcktes\n"
 
 #, python-format
 msgid "%s problems detected, please check your install!\n"
-msgstr ""
+msgstr "%s problem upptäcktes, kontrollera din installation!\n"
 
 msgid "REPO ID..."
 msgstr ""
@@ -8061,6 +8888,45 @@
 "    Använd flaggan -g/--git för att skapa diffs i gits utökade format. För\n"
 "    mer information, läs :hg:`help diffs`."
 
+msgid "      - compare a file in the current working directory to its parent::"
+msgstr "      - jämför en fil i arbetskatalogen med dess förälder::"
+
+msgid "          hg diff foo.c"
+msgstr "          hg diff foo.c"
+
+msgid ""
+"      - compare two historical versions of a directory, with rename info::"
+msgstr ""
+"      - jämför två historiska versioner of en katalog, med namnändringar::"
+
+msgid "          hg diff --git -r 1.0:1.2 lib/"
+msgstr "          hg diff --git -r 1.0:1.2 lib/"
+
+msgid "      - get change stats relative to the last change on some date::"
+msgstr ""
+"      - hämta ändringsstatus relativ ttill den sista ändringen på ett datum::"
+
+msgid "          hg diff --stat -r \"date('may 2')\""
+msgstr "          hg diff --stat -r \"date('may 2')\""
+
+msgid "      - diff all newly-added files that contain a keyword::"
+msgstr "      - diffa alla nytillagda filer som innehåller ett nyckelord::"
+
+msgid "          hg diff \"set:added() and grep(GNU)\""
+msgstr "          hg diff \"set:added() and grep(GNU)\""
+
+msgid "      - compare a revision and its parents::"
+msgstr "      - jämför en revision och dess föräldrar::"
+
+msgid ""
+"          hg diff -c 9353         # compare against first parent\n"
+"          hg diff -r 9353^:9353   # same using revset syntax\n"
+"          hg diff -r 9353^2:9353  # compare against the second parent"
+msgstr ""
+"          hg diff -c 9353         # jämför mot den första föräldern\n"
+"          hg diff -r 9353^:9353   # samma med revset-syntax\n"
+"          hg diff -r 9353^2:9353  # jämför mot den andra föräldern"
+
 msgid "diff against the second parent"
 msgstr "diffa mot den andra föräldern"
 
@@ -8109,6 +8975,8 @@
 "    :``%R``: changeset revision number\n"
 "    :``%b``: basename of the exporting repository\n"
 "    :``%h``: short-form changeset hash (12 hexadecimal digits)\n"
+"    :``%m``: first line of the commit message (only alphanumeric "
+"characters)\n"
 "    :``%n``: zero-padded sequence number, starting at 1\n"
 "    :``%r``: zero-padded changeset revision number"
 msgstr ""
@@ -8118,6 +8986,8 @@
 "    :``%R``: ändringens revisionsnummer\n"
 "    :``%b``: basnamn för det exporterande arkivet\n"
 "    :``%h``: kort ändringshash (12 hexadecimala siffror)\n"
+"    :``%m``: första raden i arkiveringsmeddelandet (bara alfanumeriska "
+"tecken)\n"
 "    :``%n``: nollpaddat sekvensnummer, börjar med 1\n"
 "    :``%r``: nollpaddat ändringsrevisionsnummer"
 
@@ -8144,14 +9014,44 @@
 "    Med flaggan --switch-parent, kommer diffen att vara mot den andra\n"
 "    föräldern. Det kan vara användbart för att granska en sammanfogning."
 
+msgid ""
+"      - use export and import to transplant a bugfix to the current\n"
+"        branch::"
+msgstr ""
+"      - använd export och import för att transplantera en buggfix på den\n"
+"        nuvarande grenen::"
+
+msgid "          hg export -r 9353 | hg import -"
+msgstr "          hg export -r 9353 | hg import -"
+
+msgid ""
+"      - export all the changesets between two revisions to a file with\n"
+"        rename information::"
+msgstr ""
+"      - exportera alla ändringar mellan två revisioner till en fil med\n"
+"        namnändringsinformation::"
+
+msgid "          hg export --git -r 123:150 > changes.txt"
+msgstr "          hg export --git -r 123:150 > changes.txt"
+
+msgid ""
+"      - split outgoing changes into a series of patches with\n"
+"        descriptive names::"
+msgstr ""
+"      - dela upp utgående ändringar till en serie patchar med beskrivande\n"
+"        namn::"
+
+msgid "          hg export -r \"outgoing()\" -o \"%n-%m.patch\""
+msgstr "          hg export -r \"outgoing()\" -o \"%n-%m.patch\""
+
 msgid "export requires at least one changeset"
-msgstr ""
+msgstr "export kräver minst en ändring"
 
 msgid "exporting patches:\n"
-msgstr ""
+msgstr "exporterar patchar:\n"
 
 msgid "exporting patch:\n"
-msgstr ""
+msgstr "exporterar patch:\n"
 
 msgid "forget the specified files on the next commit"
 msgstr "glöm de angivna filerna vid nästa arkivering"
@@ -8174,16 +9074,130 @@
 msgid "    To undo a forget before the next commit, see :hg:`add`."
 msgstr "    För att ångra en forget innan nästa arkivering, se :hg:`add`."
 
-msgid "no files specified"
-msgstr ""
-
-#, python-format
-msgid "not removing %s: file is already untracked\n"
-msgstr ""
-
-#, python-format
-msgid "removing %s\n"
-msgstr "tar bort %s\n"
+msgid "      - forget newly-added binary files::"
+msgstr "      - glöm bort nytillagda binärfiler::"
+
+msgid "          hg forget \"set:added() and binary()\""
+msgstr "          hg forget \"set:added() and binary()\""
+
+msgid "      - forget files that would be excluded by .hgignore::"
+msgstr "      - glöm bort filer som skulle exkluderas av .hgignore::"
+
+msgid "          hg forget \"set:hgignore()\""
+msgstr "          hg forget \"set:hgignore()\""
+
+msgid "resume interrupted graft"
+msgstr "återuppta avbruten ympning"
+
+msgid "record the current date as commit date"
+msgstr "lagra det nuvarande datumet som arkiveringsdatumet"
+
+msgid "record the current user as committer"
+msgstr "lagra den nuvarande användaren som arkiverare"
+
+msgid "[OPTION]... REVISION..."
+msgstr "[FLAGGA]... REVISION..."
+
+msgid "copy changes from other branches onto the current branch"
+msgstr "kopiera ändringar från andra grenar till den nuvarande grenen"
+
+msgid ""
+"    This command uses Mercurial's merge logic to copy individual\n"
+"    changes from other branches without merging branches in the\n"
+"    history graph. This is sometimes known as 'backporting' or\n"
+"    'cherry-picking'. By default, graft will copy user, date, and\n"
+"    description from the source changesets."
+msgstr ""
+
+msgid ""
+"    Changesets that are ancestors of the current revision, that have\n"
+"    already been grafted, or that are merges will be skipped."
+msgstr ""
+
+msgid ""
+"    If a graft merge results in conflicts, the graft process is\n"
+"    interrupted so that the current merge can be manually resolved.\n"
+"    Once all conflicts are addressed, the graft process can be\n"
+"    continued with the -c/--continue option."
+msgstr ""
+
+msgid ""
+"    .. note::\n"
+"      The -c/--continue option does not reapply earlier options."
+msgstr ""
+
+msgid ""
+"      - copy a single change to the stable branch and edit its description::"
+msgstr ""
+
+msgid ""
+"          hg update stable\n"
+"          hg graft --edit 9393"
+msgstr ""
+"          hg update stable\n"
+"          hg graft --edit 9393"
+
+msgid ""
+"      - graft a range of changesets with one exception, updating dates::"
+msgstr ""
+
+msgid "          hg graft -D \"2085::2093 and not 2091\""
+msgstr "          hg graft -D \"2085::2093 and not 2091\""
+
+msgid "      - continue a graft after resolving conflicts::"
+msgstr ""
+
+msgid "          hg graft -c"
+msgstr "          hg graft -c"
+
+msgid "      - show the source of a grafted changeset::"
+msgstr ""
+
+msgid "          hg log --debug -r tip"
+msgstr "          hg log --debug -r tip"
+
+msgid ""
+"    Returns 0 on successful completion.\n"
+"    "
+msgstr ""
+"    Returnerar 0 om kommandot lyckades.\n"
+"    "
+
+msgid "can't specify --continue and revisions"
+msgstr "kan inte specificera --continue och revisioner"
+
+msgid "no graft state found, can't continue"
+msgstr ""
+
+#, python-format
+msgid "skipping ungraftable merge revision %s\n"
+msgstr ""
+
+#, python-format
+msgid "skipping ancestor revision %s\n"
+msgstr ""
+
+#, python-format
+msgid "skipping already grafted revision %s\n"
+msgstr ""
+
+#, python-format
+msgid "skipping already grafted revision %s (same origin %d)\n"
+msgstr ""
+
+#, python-format
+msgid "skipping already grafted revision %s (was grafted from %d)\n"
+msgstr ""
+
+#, python-format
+msgid "grafting revision %s\n"
+msgstr "ympar revision %s\n"
+
+msgid "unresolved conflicts, can't continue"
+msgstr "olösta konflikter, kan inte fortsätta"
+
+msgid "use hg resolve and hg graft --continue"
+msgstr "använd hg resolve och hg graft --continue"
 
 msgid "end fields with NUL"
 msgstr "avsluta fält med NUL"
@@ -8287,10 +9301,14 @@
 
 msgid ""
 "    If one or more REVs are given, only branch heads on the branches\n"
-"    associated with the specified changesets are shown."
+"    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 ""
 "    Om en eller flera REV anges, kommer bara grenhuvuden på grenar\n"
-"    som är associerade med de angivna ändringarna att visas."
+"    som är associerade med de angivna ändringarna att visas. Det betyder\n"
+"    att du kan använda :hg:`heads foo` för att se huvuden på en gren vid\n"
+"    namn ``foo``."
 
 msgid ""
 "    If -c/--closed is specified, also show branch heads marked closed\n"
@@ -8359,6 +9377,19 @@
 "    Returnerar 0 om kommandot lyckades.\n"
 "    "
 
+msgid "VALUE"
+msgstr "VÄRDE"
+
+msgid "DEPRECATED"
+msgstr "FÖRLEGAD"
+
+msgid ""
+"\n"
+"[+] marked option can be specified multiple times\n"
+msgstr ""
+"\n"
+"flaggor markerade med [+] kan anges flera gånger\n"
+
 msgid "global options:"
 msgstr "globala flaggor:"
 
@@ -8379,11 +9410,8 @@
 "använd \"hg -v help%s\" för att visa inbyggda alias och globala flaggor"
 
 #, python-format
-msgid "use \"hg -v help %s\" to show global options"
-msgstr "använd \"hg -v help %s\" för att visa globala flaggor"
-
-msgid "list of commands:"
-msgstr "kommandolista:"
+msgid "use \"hg -v help %s\" to show more info"
+msgstr "använd \"hg -v help %s\" för att visa mer info"
 
 #, python-format
 msgid ""
@@ -8413,23 +9441,47 @@
 msgstr "%s"
 
 #, python-format
+msgid "use \"hg help -e %s\" to show help for the %s extension"
+msgstr "använd \"hg help -e %s\" för att visa hjälp för utökningen %s"
+
+msgid "options:"
+msgstr "flaggor:"
+
+#, python-format
 msgid ""
 "\n"
-"use \"hg -v help %s\" to show verbose help\n"
+"use \"hg help %s\" to show the full help text\n"
 msgstr ""
 "\n"
-"använd \"hg -v help %s\" för att visa utförlig hjälp\n"
-
-msgid "options:\n"
-msgstr "flaggor:\n"
-
-#, python-format
-msgid "use \"hg help -e %s\" to show help for the %s extension"
-msgstr "använd \"hg help -e %s\" för att visa hjälp för utökningen %s"
+"använd \"hg help %s\" för att visa fullständig hjälptext\n"
+
+#, python-format
+msgid ""
+"\n"
+"use \"hg -v help %s\" to show more info\n"
+msgstr ""
+"\n"
+"använd \"hg -v help %s\" för att visa mer information\n"
+
+msgid "basic commands:"
+msgstr "grundläggande kommandon:"
+
+msgid "list of commands:"
+msgstr "kommandolista:"
 
 msgid "no commands defined\n"
 msgstr "inga kommandon definierade\n"
 
+msgid "enabled extensions:"
+msgstr "aktiverade utökningar:"
+
+msgid ""
+"\n"
+"additional help topics:"
+msgstr ""
+"\n"
+"ytterligare hjälpämnen:"
+
 #, python-format
 msgid ""
 "\n"
@@ -8456,32 +9508,6 @@
 msgid "Mercurial Distributed SCM\n"
 msgstr "Mercurial Distribuerad SCM\n"
 
-msgid "basic commands:"
-msgstr "grundläggande kommandon:"
-
-msgid "enabled extensions:"
-msgstr "aktiverade utökningar:"
-
-msgid "VALUE"
-msgstr "VÄRDE"
-
-msgid "DEPRECATED"
-msgstr "FÖRLEGAD"
-
-msgid ""
-"\n"
-"[+] marked option can be specified multiple times"
-msgstr ""
-"\n"
-"flaggor markerade med [+] kan anges flera gånger"
-
-msgid ""
-"\n"
-"additional help topics:"
-msgstr ""
-"\n"
-"ytterligare hjälpämnen:"
-
 msgid "identify the specified revision"
 msgstr "identifiera den angivna revisionen"
 
@@ -8531,6 +9557,24 @@
 "    Specificering av en sökväg till ett arkiv eller Mercurial-bunt\n"
 "    gör att kommandot jobbar mot arkivet/bunten som är angiven."
 
+msgid "      - generate a build identifier for the working directory::"
+msgstr "      - skapa en byggidentifierare för arbetskatalogen::"
+
+msgid "          hg id --id > build-id.dat"
+msgstr "          hg id --id > build-id.dat"
+
+msgid "      - find the revision corresponding to a tag::"
+msgstr "      - hitta revisionen för ett märke::"
+
+msgid "          hg id -n -r 1.3"
+msgstr "          hg id -n -r 1.3"
+
+msgid "      - check the most recent revision of a remote repository::"
+msgstr "      - kontrollera den senaste revisionen i ett fjärrarkiv::"
+
+msgid "          hg id -r tip http://selenic.com/hg/"
+msgstr "          hg id -r tip http://selenic.com/hg/"
+
 msgid "can't query remote revision number, branch, or tags"
 msgstr "kan inte efterfråga revisionsnummer, gren, eller märken"
 
@@ -8609,7 +9653,7 @@
 
 msgid ""
 "    With -s/--similarity, hg will attempt to discover renames and\n"
-"    copies in the patch in the same way as 'addremove'."
+"    copies in the patch in the same way as :hg:`addremove`."
 msgstr ""
 
 msgid ""
@@ -8618,6 +9662,38 @@
 "    See :hg:`help dates` for a list of formats valid for -d/--date."
 msgstr ""
 
+msgid "      - import a traditional patch from a website and detect renames::"
+msgstr ""
+"      - importera en vanlig patch från en webbsida och upptäck namnbyten::"
+
+msgid "          hg import -s 80 http://example.com/bugfix.patch"
+msgstr "          hg import -s 80 http://example.com/bugfix.patch"
+
+msgid "      - import a changeset from an hgweb server::"
+msgstr "      - importera en ändring från en hgweb-server::"
+
+msgid "          hg import http://www.selenic.com/hg/rev/5ca8c111e9aa"
+msgstr "          hg import http://www.selenic.com/hg/rev/5ca8c111e9aa"
+
+msgid "      - import all the patches in an Unix-style mbox::"
+msgstr "      - importera alla patchar i en Unix-liknande mbox::"
+
+msgid "          hg import incoming-patches.mbox"
+msgstr "          hg import incoming-patches.mbox"
+
+msgid ""
+"      - attempt to exactly restore an exported changeset (not always\n"
+"        possible)::"
+msgstr ""
+"      - försök att exakt återställa en exporterad ändring (inte alltid\n"
+"        möjligt)::"
+
+msgid "          hg import --exact proposed-fix.patch"
+msgstr "          hg import --exact proposed-fix.patch"
+
+msgid "need at least one patch to import"
+msgstr "behöver minst en patch att importera"
+
 msgid "cannot use --no-commit with --bypass"
 msgstr "kan inte använda --no-commit med --bypass"
 
@@ -8627,21 +9703,23 @@
 msgid "patch is damaged or loses information"
 msgstr "patchen är skadad eller tappar information"
 
-msgid "to working directory"
-msgstr "till arbetskatalog"
+msgid "applied to working directory"
+msgstr "applicerad på arbetskatalog"
 
 msgid "not a Mercurial patch"
 msgstr "inte en Mercurial-patch"
 
+#. i18n: refers to a short changeset id
+#, python-format
+msgid "created %s"
+msgstr "skapade %s"
+
 msgid "applying patch from stdin\n"
 msgstr ""
 
 #, python-format
-msgid "applied %s\n"
-msgstr "applicerade %s\n"
-
-msgid "no diffs found"
-msgstr ""
+msgid "%s: no diffs found"
+msgstr "%s: inga diffar hittades"
 
 msgid "run even if remote repository is unrelated"
 msgstr "kör även om fjärrarkivet är obesläktat"
@@ -8771,8 +9849,8 @@
 "    Detta undviker problemet med att \"xargs\" behandlar filnamn som\n"
 "    innehåller blanktecken som multipla filnamn"
 
-msgid "only follow the first parent of merge changesets"
-msgstr "följ bara den första föräldern vid sammanfogningar"
+msgid "only follow the first parent of merge changesets (DEPRECATED)"
+msgstr "följ bara den första föräldern vid sammanfogningar (FÖRLEGAD)"
 
 msgid "show revisions matching date spec"
 msgstr "visa revisioner som matchar datumspecen"
@@ -8786,8 +9864,8 @@
 msgid "include revisions where files were removed"
 msgstr "inkludera revisioner där filer togs bort"
 
-msgid "show only merges"
-msgstr "visa bara sammanfogningar"
+msgid "show only merges (DEPRECATED)"
+msgstr "visa bara sammanfogningar (FÖRLEGAD)"
 
 msgid "revisions committed by user"
 msgstr "revisioner arkiverade av användare"
@@ -8801,8 +9879,8 @@
 msgid "do not display revision or any of its ancestors"
 msgstr "visa inte revision eller någon av dess föräldrar"
 
-msgid "show hidden changesets"
-msgstr "visa dolda ändringar"
+msgid "show hidden changesets (DEPRECATED)"
+msgstr "visa dolda ändringar (FÖRLEGAD)"
 
 msgid "[OPTION]... [FILE]"
 msgstr "[FLAGGA]... [FIL]"
@@ -8818,28 +9896,24 @@
 "    projektet."
 
 msgid ""
+"    If no revision range is specified, the default is ``tip:0`` unless\n"
+"    --follow is set, in which case the working directory parent is\n"
+"    used as the starting revision."
+msgstr ""
+"    Om ingen revisionsserie specificeras, används ``tip:0`` som standard om\n"
+"    inte --follow är satt, då arbetskatalogens förälder används som första\n"
+"    revision."
+
+msgid ""
 "    File history is shown without following rename or copy history of\n"
 "    files. Use -f/--follow with a filename to follow history across\n"
 "    renames and copies. --follow without a filename will only show\n"
-"    ancestors or descendants of the starting revision. --follow-first\n"
-"    only follows the first parent of merge revisions."
+"    ancestors or descendants of the starting revision."
 msgstr ""
 "    Filhistorik visas utan att följa namnbyten eller kopieringshistorik av\n"
 "    filer. Använd -f/--follow med ett filnamn för att följa historiken även\n"
 "    vid namnbyten och kopiering. --follow utan ett filnamn kommer bara att\n"
-"    visa föräldrar eller ättlingar från startrevisionen. --follow-first\n"
-"    följer bara den första föräldern i revisoner med sammanfogningar."
-
-msgid ""
-"    If no revision range is specified, the default is ``tip:0`` unless\n"
-"    --follow is set, in which case the working directory parent is\n"
-"    used as the starting revision. You can specify a revision set for\n"
-"    log, see :hg:`help revsets` for more information."
-msgstr ""
-"    Om ingen revisionsserie specificeras, används ``tip:0`` som standard om\n"
-"    inte --follow är satt, då arbetskatalogens förälder används som första\n"
-"    revision. Du kan ange ett revisionsset för log, se :hg:`help revsets`\n"
-"    för mer information."
+"    visa föräldrar eller ättlingar från startrevisionen."
 
 msgid ""
 "    By default this command prints revision number and changeset id,\n"
@@ -8865,6 +9939,86 @@
 "       den första förälder. Dessutom kommer bara filer som skiljer sig från\n"
 "       BÅDA föräldrarna att visas i filer:."
 
+msgid ""
+"    .. note::\n"
+"       for performance reasons, log FILE may omit duplicate changes\n"
+"       made on branches and will not show deletions. To see all\n"
+"       changes including duplicates and deletions, use the --removed\n"
+"       switch."
+msgstr ""
+"    .. note::\n"
+"       av prestandaskäl så kan 'log FILE' hoppa över duplicerade ändringar\n"
+"       gjorda på grenar och kommer inte att visa raderingar. För att se\n"
+"       alla ändringar inklusive dupliceringar och raderingar, använd\n"
+"       flaggan --removed."
+
+msgid "      - changesets with full descriptions and file lists::"
+msgstr "      - ändringar med fulla beskrivningar och fillistor::"
+
+msgid "          hg log -v"
+msgstr "          hg log -v"
+
+msgid "      - changesets ancestral to the working directory::"
+msgstr "      - ändringar som är anfädrar arbetskatalogen::"
+
+msgid "          hg log -f"
+msgstr "          hg log -f"
+
+msgid "      - last 10 commits on the current branch::"
+msgstr "      - sista 10 arkiveringarna på aktuell gren::"
+
+msgid "          hg log -l 10 -b ."
+msgstr "          hg log -l 10 -b ."
+
+msgid ""
+"      - changesets showing all modifications of a file, including removals::"
+msgstr ""
+"      - alla ändringar och modifikationer för en fil, inklusive raderingar::"
+
+msgid "          hg log --removed file.c"
+msgstr "          hg log --removed file.c"
+
+msgid ""
+"      - all changesets that touch a directory, with diffs, excluding merges::"
+msgstr ""
+"      - alla ändringar som rör en katalog, med diffar, utan sammanfogningar::"
+
+msgid "          hg log -Mp lib/"
+msgstr "          hg log -Mp lib/"
+
+msgid "      - all revision numbers that match a keyword::"
+msgstr "      - alla revisionsnummer som matchar ett nyckelord::"
+
+msgid "          hg log -k bug --template \"{rev}\\n\""
+msgstr "          hg log -k bug --template \"{rev}\\n\""
+
+msgid "      - check if a given changeset is included is a tagged release::"
+msgstr "      - kontrollera om en ändring inkluderas i en märkt release::"
+
+msgid "          hg log -r \"a21ccf and ancestor(1.9)\""
+msgstr "          hg log -r \"a21ccf and ancestor(1.9)\""
+
+msgid "      - find all changesets by some user in a date range::"
+msgstr "      - hitta alla ändringar av en användare i ett datumintervall::"
+
+msgid "          hg log -k alice -d \"may 2008 to jul 2008\""
+msgstr "          hg log -k alice -d \"may 2008 to jul 2008\""
+
+msgid "      - summary of all changesets after the last tag::"
+msgstr "      - sammanfattning av alla ändringar efter det senaste märket::"
+
+msgid ""
+"          hg log -r \"last(tagged())::\" --template \"{desc|firstline}\\n\""
+msgstr ""
+"          hg log -r \"last(tagged())::\" --template \"{desc|firstline}\\n\""
+
+msgid ""
+"    See :hg:`help revisions` and :hg:`help revsets` for more about\n"
+"    specifying revisions."
+msgstr ""
+"    Se :hg:`help revisions` och :hg:`help revsets` för mer om hur man anger\n"
+"    revisioner."
+
 msgid "revision to display"
 msgstr "revision att visa"
 
@@ -8990,12 +10144,11 @@
 msgid "run 'hg heads' to see all heads"
 msgstr "kör 'hg heads' för att se alla huvuden"
 
-msgid "there is nothing to merge"
-msgstr "det finns inget att sammanfoga"
-
-#, python-format
-msgid "%s - use \"hg update\" instead"
-msgstr "%s - använd \"hg update\" istället"
+msgid "nothing to merge"
+msgstr "inget att sammanfoga"
+
+msgid "use 'hg update' instead"
+msgstr "använd 'hg update' istället"
 
 msgid "working directory not at a head revision"
 msgstr "arbetskatalogen är inte vid en huvudrevision"
@@ -9110,6 +10263,65 @@
 msgid "not found!\n"
 msgstr "hittades inte!\n"
 
+msgid "set changeset phase to public"
+msgstr "sätt ändringsfas till public"
+
+msgid "set changeset phase to draft"
+msgstr "sätt ändringsfas till draft"
+
+msgid "set changeset phase to secret"
+msgstr "sätt ändringsfas till secret"
+
+msgid "allow to move boundary backward"
+msgstr "tillåt att gränser flyttas bakåt"
+
+msgid "target revision"
+msgstr "målrevision"
+
+msgid "[-p|-d|-s] [-f] [-r] REV..."
+msgstr "[-p|-d|-s] [-f] [-r] REV..."
+
+msgid "set or show the current phase name"
+msgstr "sätt eller visa det aktuella fasnamnet"
+
+msgid "    With no argument, show the phase name of specified revisions."
+msgstr "    Om inga argument ges, så visas fasnamnet för angivna revisioner."
+
+msgid ""
+"    With one of -p/--public, -d/--draft or -s/--secret, change the\n"
+"    phase value of the specified revisions."
+msgstr ""
+"    Med en av -p/--public, -d/--draft eller -s/--secret, så ändras\n"
+"    fasvärdet för de angivna revisionerna."
+
+msgid ""
+"    Unless -f/--force is specified, :hg:`phase` won't move changeset from a\n"
+"    lower phase to an higher phase. Phases are ordered as follows::"
+msgstr ""
+"    Om inte -f/--force anges, så kommer inte :hg:`phase` att flytta\n"
+"    ändringar från en lägre fas till en högre fas. Faser är ordnade enligt\n"
+"    följande::"
+
+msgid "        public < draft < secret"
+msgstr "        public < draft < secret"
+
+msgid ""
+"    Return 0 on success, 1 if no phases were changed.\n"
+"    "
+msgstr ""
+"    Returnerar 0 om kommandot lyckades, 1 om inga faser ändrades.\n"
+"    "
+
+msgid "only one phase can be specified"
+msgstr "bara en fas kan vara angiven"
+
+#, python-format
+msgid "phase change for %i changesets\n"
+msgstr "fasändring för %i ändringar\n"
+
+msgid "no phases changed\n"
+msgstr "inga faser ändrage\n"
+
 #, python-format
 msgid "not updating: %s\n"
 msgstr "uppdaterar inte: %s\n"
@@ -9328,61 +10540,66 @@
 msgid "remove the specified files on the next commit"
 msgstr "ta bort de specificerade filerna vid nästa arkivering"
 
-msgid "    Schedule the indicated files for removal from the repository."
-msgstr "    Markera de indikerade filerna för borttagning från arkivet."
-
-msgid ""
-"    This only removes files from the current branch, not from the\n"
-"    entire project history. -A/--after can be used to remove only\n"
-"    files that have already been deleted, -f/--force can be used to\n"
-"    force deletion, and -Af can be used to remove files from the next\n"
-"    revision without deleting them from the working directory."
-msgstr ""
-"    Detta tar bara bort filerna från den nuvarande grenen, inte från hela\n"
-"    projektets historik. -A/--after kan användas för att bara ta bort filer\n"
-"    som redan raderats, -f/--force kan användas för att tvinga radering,\n"
-"    och -Af kan ta bort filer från nästa revision utan att radera dem från\n"
-"    arbetskopian."
-
-msgid ""
-"    The following table details the behavior of remove for different\n"
-"    file states (columns) and option combinations (rows). The file\n"
-"    states are Added [A], Clean [C], Modified [M] and Missing [!] (as\n"
-"    reported by :hg:`status`). The actions are Warn, Remove (from\n"
-"    branch) and Delete (from disk)::"
-msgstr ""
-"    Följande tabell visar hur remove uppför sig för olika filstatus\n"
-"    (kolumner) och flaggor (rader). Filstatus är Adderade [A], Ren [C],\n"
-"    Modifierad [M] och Saknad [!] (som rapporteras av :hg:`status`).\n"
-"    Aktionerna är Varna, Radera (från gren) och Ta bort (från disk)::"
-
-msgid ""
-"             A  C  M  !\n"
-"      none   W  RD W  R\n"
-"      -f     R  RD RD R\n"
-"      -A     W  W  W  R\n"
-"      -Af    R  R  R  R"
-msgstr ""
-"             A  C  M  !\n"
-"      ingen  V  RT V  R\n"
-"      -f     R  RT RT R\n"
-"      -A     V  V  V  R\n"
-"      -Af    R  R  R  R"
-
-msgid ""
-"    Note that remove never deletes files in Added [A] state from the\n"
-"    working directory, not even if option --force is specified."
-msgstr ""
-"    Notera att remove aldrig tar bort filer som är Adderade [A] från\n"
-"    arbetskatalogen, inte ens om --force är angivet."
+msgid "    Schedule the indicated files for removal from the current branch."
+msgstr "    Markera de indikerade filerna för borttagning från aktuell gren."
 
 msgid ""
 "    This command schedules the files to be removed at the next commit.\n"
-"    To undo a remove before that, see :hg:`revert`."
+"    To undo a remove before that, see :hg:`revert`. To undo added\n"
+"    files, see :hg:`forget`."
 msgstr ""
 "    Kommandot markerar att filerna ska tas bort vid nästa arkivering. För\n"
-"    att ångra en remove innan dess, se :hg:`revert` .\n"
-"    "
+"    att ångra en remove innan dess, se :hg:`revert`. För att ångra tillagda\n"
+"    filer, se :hg:`forget`."
+
+msgid ""
+"      -A/--after can be used to remove only files that have already\n"
+"      been deleted, -f/--force can be used to force deletion, and -Af\n"
+"      can be used to remove files from the next revision without\n"
+"      deleting them from the working directory."
+msgstr ""
+"      -A/--after kan användas för att bara ta bort filer som redan\n"
+"      raderats, -f/--force kan användas för att tvinga radering, och -Af\n"
+"      kan ta bort filer från nästa revision utan att radera dem från\n"
+"      arbetskopian."
+
+msgid ""
+"      The following table details the behavior of remove for different\n"
+"      file states (columns) and option combinations (rows). The file\n"
+"      states are Added [A], Clean [C], Modified [M] and Missing [!]\n"
+"      (as reported by :hg:`status`). The actions are Warn, Remove\n"
+"      (from branch) and Delete (from disk):"
+msgstr ""
+"      Följande tabell visar hur remove uppför sig för olika filstatus\n"
+"      (kolumner) och flaggor (rader). Filstatus är Adderade [A], Ren [C],\n"
+"      Modifierad [M] och Saknad [!] (som rapporteras av :hg:`status`).\n"
+"      Aktionerna är Varna, Radera (från gren) och Ta bort (från disk):"
+
+msgid ""
+"      ======= == == == ==\n"
+"              A  C  M  !\n"
+"      ======= == == == ==\n"
+"      none    W  RD W  R\n"
+"      -f      R  RD RD R\n"
+"      -A      W  W  W  R\n"
+"      -Af     R  R  R  R\n"
+"      ======= == == == =="
+msgstr ""
+"      ======= == == == ==\n"
+"              A  C  M  !\n"
+"      ======= == == == ==\n"
+"      ingen   V  RT V  R\n"
+"      -f      R  RT RT R\n"
+"      -A      V  V  V  R\n"
+"      -Af     R  R  R  R\n"
+"      ======= == == == =="
+
+msgid ""
+"      Note that remove never deletes files in Added [A] state from the\n"
+"      working directory, not even if option --force is specified."
+msgstr ""
+"      Notera att remove aldrig tar bort filer som är Adderade [A] från\n"
+"      arbetskatalogen, inte ens om --force är angivet."
 
 msgid ""
 "    Returns 0 on success, 1 if any warnings encountered.\n"
@@ -9404,9 +10621,8 @@
 msgstr "raderar inte %s: filen är ändrad (använd -f för att tvinga)\n"
 
 #, python-format
-msgid ""
-"not removing %s: file has been marked for add (use -f to force removal)\n"
-msgstr "raderar inte %s: filen har lags till (använd -f för att tvinga)\n"
+msgid "not removing %s: file has been marked for add (use forget to undo)\n"
+msgstr "raderar inte %s: filen har lagts till (använd forget för att ångra)\n"
 
 msgid "record a rename that has already occurred"
 msgstr "spara en namnändring som redan har inträffat"
@@ -9458,7 +10674,8 @@
 "    setting, or a command-line merge tool like ``diff3``. The resolve\n"
 "    command is used to manage the files involved in a merge, after\n"
 "    :hg:`merge` has been run, and before :hg:`commit` is run (i.e. the\n"
-"    working directory must have two parents)."
+"    working directory must have two parents). See :hg:`help\n"
+"    merge-tools` for information on configuring merge tools."
 msgstr ""
 
 msgid "    The resolve command can be used in the following ways:"
@@ -9469,9 +10686,10 @@
 "specified\n"
 "      files, discarding any previous merge attempts. Re-merging is not\n"
 "      performed for files already marked as resolved. Use ``--all/-a``\n"
-"      to selects all unresolved files. ``--tool`` can be used to specify\n"
+"      to select all unresolved files. ``--tool`` can be used to specify\n"
 "      the merge tool used for the given files. It overrides the HGMERGE\n"
-"      environment variable and your configuration files."
+"      environment variable and your configuration files.  Previous file\n"
+"      contents are saved with a ``.orig`` suffix."
 msgstr ""
 
 msgid ""
@@ -9643,6 +10861,9 @@
 msgid "no changes needed to %s\n"
 msgstr "inga ändringar behövs för %s\n"
 
+msgid "ignore safety measures"
+msgstr "ignorera säkerhetsåtgärder"
+
 msgid "roll back the last transaction (dangerous)"
 msgstr "återgång från den senaste transaktionen (farligt)"
 
@@ -9684,6 +10905,15 @@
 "    - unbundle"
 
 msgid ""
+"    To avoid permanent data loss, rollback will refuse to rollback a\n"
+"    commit transaction if it isn't checked out. Use --force to\n"
+"    override this protection."
+msgstr ""
+"    För att undvika permanent dataförlust så vägrar rollback att köras på\n"
+"    en arkivering om den inte är uthämtad. Använd --force för att gå förbi\n"
+"    det här skyddet."
+
+msgid ""
 "    This command is not intended for use on public repositories. Once\n"
 "    changes are visible for pull by other users, rolling a transaction\n"
 "    back locally is ineffective (someone else may already have pulled\n"
@@ -9949,6 +11179,28 @@
 "      I = ignorerad\n"
 "        = källa för den tidigare filen listad som A (adderad)"
 
+msgid ""
+"      - show changes in the working directory relative to a\n"
+"        changeset::"
+msgstr ""
+"      - visa modifikationer i arbetskatalogen relativt till en ändring::"
+
+msgid "          hg status --rev 9353"
+msgstr "          hg status --rev 9353"
+
+msgid "      - show all changes including copies in an existing changeset::"
+msgstr "      - visa alla ändringar inklusive kopior i en ändring::"
+
+msgid "          hg status --copies --change 9353"
+msgstr "          hg status --copies --change 9353"
+
+msgid "      - get a NUL separated list of added files, suitable for xargs::"
+msgstr ""
+"      - visa en NUL-separerad lista med tillagda filer, lämpligt för xargs::"
+
+msgid "          hg status -an0"
+msgstr "          hg status -an0"
+
 msgid "check for push and pull"
 msgstr "sök efter inkommande och utgående ändringar"
 
@@ -9983,6 +11235,9 @@
 msgid "branch: %s\n"
 msgstr "gren: %s\n"
 
+msgid "bookmarks:"
+msgstr "bokmärken:"
+
 #, python-format
 msgid "%d modified"
 msgstr "%d modifierad"
@@ -10253,11 +11508,12 @@
 msgid ""
 "    Update the repository's working directory to the specified\n"
 "    changeset. If no changeset is specified, update to the tip of the\n"
-"    current named branch."
+"    current named branch and move the current bookmark (see :hg:`help\n"
+"    bookmarks`)."
 msgstr ""
 "    Uppdatera arkivets arbetskatalog till den angivna ändringen. Om ingen\n"
-"    ändring anes, så uppdateras till toppen på den nuvarande namngivna\n"
-"    grenen."
+"    ändring anges, så uppdateras till toppen på den nuvarande namngivna\n"
+"    grenen och nuvarande bokmärket flyttas (se :hg:`help bookmarks`)."
 
 msgid ""
 "    If the changeset is not a descendant of the working directory's\n"
@@ -10328,9 +11584,6 @@
 msgid "cannot specify both -c/--check and -C/--clean"
 msgstr "kan inte både ange -c/--check och -C/--clean"
 
-msgid "uncommitted local changes"
-msgstr "oarkiverade lokala ändringar"
-
 msgid "verify the integrity of the repository"
 msgstr "verifiera arkivets integritet"
 
@@ -10358,11 +11611,11 @@
 msgstr "(se http://mercurial.selenic.com för mer information)"
 
 msgid ""
-"Copyright (C) 2005-2011 Matt Mackall and others\n"
+"Copyright (C) 2005-2012 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-2011 Matt Mackall och andra\n"
+"Copyright (C) 2005-2012 Matt Mackall och andra\n"
 "Detta är fri mjukvara; se källkoden för kopieringsvillkor. Det ges INGEN\n"
 "garanti; inte ens för SÄLJBARHET eller ATT PASSA FÖR ETT VISST ÄNDAMÅL.\n"
 
@@ -10376,21 +11629,21 @@
 
 #, python-format
 msgid "cannot include %s (%s)"
-msgstr ""
+msgstr "kan inte inkludera %s (%s)"
 
 msgid "not found in manifest"
-msgstr ""
+msgstr "hittades inte i manifestet"
 
 #, python-format
 msgid "no such file in rev %s"
-msgstr ""
+msgstr "ingen sådan fil i rev %s"
 
 msgid "branch name not in UTF-8!"
-msgstr ""
+msgstr "grennamn inte i UTF-8!"
 
 #, python-format
 msgid "%s does not exist!\n"
-msgstr ""
+msgstr "%s existerar inte!\n"
 
 #, python-format
 msgid ""
@@ -10402,19 +11655,19 @@
 
 #, python-format
 msgid "%s not added: only files and symlinks supported currently\n"
-msgstr ""
+msgstr "%s inte tillagd: bara filer och symlänkar stödjs\n"
 
 #, python-format
 msgid "%s already tracked!\n"
-msgstr ""
+msgstr "%s spåras redan!\n"
 
 #, python-format
 msgid "%s not tracked!\n"
-msgstr ""
+msgstr "%s spåras inte!\n"
 
 #, python-format
 msgid "%s not removed!\n"
-msgstr ""
+msgstr "%s inte borttagen!\n"
 
 #, python-format
 msgid "copy failed: %s is not a file or a symbolic link\n"
@@ -10485,7 +11738,7 @@
 
 #, python-format
 msgid "push creates new remote head %s on branch '%s'!"
-msgstr "push skapar nyt fjärrhuvud %s på grenen '%s'!"
+msgstr "push skapar nytt fjärrhuvud %s på grenen '%s'!"
 
 #, python-format
 msgid "push creates new remote head %s!"
@@ -10497,6 +11750,14 @@
 msgid "did you forget to merge? use push -f to force"
 msgstr "glömde du att sammanfoga? använd push -f för att tvinga"
 
+#, python-format
+msgid "new remote heads on branch '%s'\n"
+msgstr "nya fjärrhuvuden på grenen '%s'!\n"
+
+#, python-format
+msgid "new remote head %s\n"
+msgstr "nytt fjärrhuvud %s\n"
+
 msgid "note: unsynced remote changes!\n"
 msgstr "notera: osynkade fjärrändringar!\n"
 
@@ -10535,7 +11796,7 @@
 
 #, python-format
 msgid "abort: %s: %s\n"
-msgstr ""
+msgstr "avbryter: %s: %s\n"
 
 #, python-format
 msgid "abort: could not lock %s: %s\n"
@@ -10549,23 +11810,26 @@
 msgid "hg: %s\n"
 msgstr ""
 
+msgid "abort: remote error:\n"
+msgstr "avbryter: fjärrfel:\n"
+
 #, python-format
 msgid "abort: %s!\n"
-msgstr ""
+msgstr "avbryter: %s!\n"
 
 #, python-format
 msgid "abort: %s"
-msgstr ""
+msgstr "avbryter: %s"
 
 msgid " empty string\n"
-msgstr ""
+msgstr " tom sträng\n"
 
 msgid "killed!\n"
-msgstr ""
+msgstr "dödad!\n"
 
 #, python-format
 msgid "hg: unknown command '%s'\n"
-msgstr ""
+msgstr "hg: okänt kommando '%s'\n"
 
 msgid "(did you forget to compile extensions?)\n"
 msgstr ""
@@ -10581,7 +11845,7 @@
 msgstr ""
 
 msgid "interrupted!\n"
-msgstr ""
+msgstr "avbruten!\n"
 
 msgid ""
 "\n"
@@ -10646,7 +11910,7 @@
 msgstr ""
 
 msgid ""
-"Option -R has to be separated from other options (e.g. not -qR) and --"
+"option -R has to be separated from other options (e.g. not -qR) and --"
 "repository may only be abbreviated as --repo!"
 msgstr ""
 
@@ -10708,20 +11972,6 @@
 "keep (l)ocal or take (o)ther?"
 msgstr ""
 
-msgid "&Local"
-msgstr ""
-
-msgid "&Other"
-msgstr ""
-
-#, python-format
-msgid "merging %s and %s to %s\n"
-msgstr ""
-
-#, python-format
-msgid "merging %s\n"
-msgstr ""
-
 #, python-format
 msgid "%s.premerge not valid ('%s' is neither boolean nor %s)"
 msgstr ""
@@ -10737,6 +11987,10 @@
 msgstr ""
 
 #, python-format
+msgid "merging %s incomplete! (edit conflicts, then use 'hg resolve --mark')\n"
+msgstr ""
+
+#, python-format
 msgid "merging %s failed!\n"
 msgstr ""
 
@@ -10940,6 +12194,33 @@
 msgid "unknown bisect kind %s"
 msgstr ""
 
+msgid "invalid bisect state"
+msgstr "ogiltigt bisect-tillständ"
+
+#. i18n: bisect changeset status
+msgid "good"
+msgstr "bra"
+
+#. i18n: bisect changeset status
+msgid "bad"
+msgstr "dålig"
+
+#. i18n: bisect changeset status
+msgid "skipped"
+msgstr "hoppade över"
+
+#. i18n: bisect changeset status
+msgid "untested"
+msgstr "otestad"
+
+#. i18n: bisect changeset status
+msgid "good (implicit)"
+msgstr "bra (implicit)"
+
+#. i18n: bisect changeset status
+msgid "bad (implicit)"
+msgstr "dålig (implicit)"
+
 msgid "disabled extensions:"
 msgstr "deaktiverade utökningar:"
 
@@ -10994,6 +12275,9 @@
 msgid "syntax for Mercurial ignore files"
 msgstr "syntax för Mercurials ignoreringsfiler"
 
+msgid "Working with Phases"
+msgstr "Arbeta med Faser"
+
 msgid ""
 "The Mercurial system uses a set of configuration files to control\n"
 "aspects of its behavior."
@@ -11332,6 +12616,46 @@
 msgstr ""
 
 msgid ""
+".. note:: Some global configuration options such as ``-R`` are\n"
+"   processed before shell aliases and will thus not be passed to\n"
+"   aliases."
+msgstr ""
+
+msgid ""
+"\n"
+"``annotate``\n"
+"\"\"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid ""
+"Settings used when displaying file annotations. All values are\n"
+"Booleans and default to False. See ``diff`` section for related\n"
+"options for the diff command."
+msgstr ""
+
+msgid ""
+"``ignorews``\n"
+"    Ignore white space when comparing lines."
+msgstr ""
+"``ignorews``\n"
+"    Ignorera blanktecken när rader jämförs."
+
+msgid ""
+"``ignorewsamount``\n"
+"    Ignore changes in the amount of white space."
+msgstr ""
+"``ignorewsamount``\n"
+"    Ignorera ändringar av antalet blanktecken."
+
+msgid ""
+"``ignoreblanklines``\n"
+"    Ignore changes whose lines are all blank."
+msgstr ""
+"``ignoreblanklines``\n"
+"    Ignorera ändringar vars rader är tomma."
+
+msgid ""
+"\n"
 "``auth``\n"
 "\"\"\"\"\"\"\"\""
 msgstr ""
@@ -11386,7 +12710,9 @@
 "    Optional. Username to authenticate with. If not given, and the\n"
 "    remote site requires basic or digest authentication, the user will\n"
 "    be prompted for it. Environment variables are expanded in the\n"
-"    username letting you do ``foo.username = $USER``."
+"    username letting you do ``foo.username = $USER``. If the URI\n"
+"    includes a username, only ``[auth]`` entries with a matching\n"
+"    username or without a username will be considered."
 msgstr ""
 
 msgid ""
@@ -11528,8 +12854,9 @@
 msgstr ""
 
 msgid ""
-"Settings used when displaying diffs. Everything except for ``unified`` is a\n"
-"Boolean and defaults to False."
+"Settings used when displaying diffs. Everything except for ``unified``\n"
+"is a Boolean and defaults to False. See ``annotate`` section for\n"
+"related options for the annotate command."
 msgstr ""
 
 msgid ""
@@ -11552,27 +12879,6 @@
 "    Visa vilken funktion varje ändring är i."
 
 msgid ""
-"``ignorews``\n"
-"    Ignore white space when comparing lines."
-msgstr ""
-"``ignorews``\n"
-"    Ignorera blanktecken när rader jämförs."
-
-msgid ""
-"``ignorewsamount``\n"
-"    Ignore changes in the amount of white space."
-msgstr ""
-"``ignorewsamount``\n"
-"    Ignorera ändringar av antalet blanktecken."
-
-msgid ""
-"``ignoreblanklines``\n"
-"    Ignore changes whose lines are all blank."
-msgstr ""
-"``ignoreblanklines``\n"
-"    Ignorera ändringar vars rader är tomma."
-
-msgid ""
 "``unified``\n"
 "    Number of lines of context to show."
 msgstr ""
@@ -11928,7 +13234,10 @@
 "various actions such as starting or finishing a commit. Multiple\n"
 "hooks can be run for the same action by appending a suffix to the\n"
 "action. Overriding a site-wide hook can be done by changing its\n"
-"value or setting it to an empty string."
+"value or setting it to an empty string.  Hooks can be prioritized\n"
+"by adding a prefix of ``priority`` to the hook name on a new line\n"
+"and setting the priority.  The default priority is 0 if\n"
+"not specified."
 msgstr ""
 
 msgid "Example ``.hg/hgrc``::"
@@ -11941,7 +13250,9 @@
 "  # do not use the site-wide hook\n"
 "  incoming =\n"
 "  incoming.email = /my/email/hook\n"
-"  incoming.autobuild = /my/build/hook"
+"  incoming.autobuild = /my/build/hook\n"
+"  # force autobuild hook to run before other incoming hooks\n"
+"  priority.incoming.autobuild = 1"
 msgstr ""
 
 msgid ""
@@ -12284,7 +13595,30 @@
 msgstr ""
 
 msgid ""
-"\n"
+"``phases``\n"
+"\"\"\"\"\"\"\"\"\"\""
+msgstr ""
+
+msgid ""
+"Specifies default handling of phases. See :hg:`help phases` for more\n"
+"information about working with phases."
+msgstr ""
+
+msgid ""
+"``publish``\n"
+"    Controls draft phase behavior when working as a server. When true,\n"
+"    pushed changesets are set to public in both client and server and\n"
+"    pulled or cloned changesets are set to public in the client.\n"
+"    Default: True"
+msgstr ""
+
+msgid ""
+"``new-commit``\n"
+"    Phase of newly-created commits.\n"
+"    Default: draft"
+msgstr ""
+
+msgid ""
 "``profiling``\n"
 "\"\"\"\"\"\"\"\"\"\"\"\"\""
 msgstr ""
@@ -12450,7 +13784,7 @@
 "    Whether to commit modified subrepositories when committing the\n"
 "    parent repository. If False and one subrepository has uncommitted\n"
 "    changes, abort the commit.\n"
-"    Default is True."
+"    Default is False."
 msgstr ""
 
 msgid ""
@@ -12669,6 +14003,15 @@
 msgstr ""
 
 msgid ""
+"``guessmime``\n"
+"    Control MIME types for raw download of file content.\n"
+"    Set to True to let hgweb guess the content type from the file\n"
+"    extension. This will serve HTML files as ``text/html`` and might\n"
+"    allow cross-site scripting attacks when serving untrusted\n"
+"    repositories. Default is False."
+msgstr ""
+
+msgid ""
 "``allow_read``\n"
 "    If the user has not already been denied repository access due to\n"
 "    the contents of deny_read, this list determines whether to grant\n"
@@ -12807,6 +14150,14 @@
 msgstr ""
 
 msgid ""
+"``logoimg``\n"
+"    File name of the logo image that some templates display on each page.\n"
+"    The file name is relative to ``staticurl``. That is, the full path to\n"
+"    the logo image is \"staticurl/logoimg\".\n"
+"    If unset, ``hglogo.png`` will be used."
+msgstr ""
+
+msgid ""
 "``logourl``\n"
 "    Base URL to use for logos. If unset, ``http://mercurial.selenic.com/``\n"
 "    will be used."
@@ -13292,7 +14643,7 @@
 msgid "- Find C files in a non-standard encoding::"
 msgstr ""
 
-msgid "    hg locate \"set:**.c and not encoding(ascii)\""
+msgid "    hg locate \"set:**.c and not encoding('UTF-8')\""
 msgstr ""
 
 msgid "- Revert copies of large binary files::"
@@ -14396,6 +15747,137 @@
 msgid "See also :hg:`help filesets`.\n"
 msgstr ""
 
+msgid ""
+"What are phases?\n"
+"----------------"
+msgstr ""
+
+msgid ""
+"Phases are a system for tracking which changesets have been or should\n"
+"be shared. This helps prevent common mistakes when modifying history\n"
+"(for instance, with the mq or rebase extensions)."
+msgstr ""
+
+msgid "Each changeset in a repository is in one of the following phases:"
+msgstr ""
+
+msgid ""
+" - public : changeset is visible on a public server\n"
+" - draft : changeset is not yet published\n"
+" - secret : changeset should not be pushed, pulled, or cloned"
+msgstr ""
+
+msgid ""
+"These phases are ordered (public < draft < secret) and no changeset\n"
+"can be in a lower phase than its ancestors. For instance, if a\n"
+"changeset is public, all its ancestors are also public. Lastly,\n"
+"changeset phases only be changed towards the public phase."
+msgstr ""
+
+msgid ""
+"How are phases managed?\n"
+"-----------------------"
+msgstr ""
+
+msgid ""
+"For the most part, phases should work transparently. By default, a\n"
+"changeset is created in the draft phase and is moved into the public\n"
+"phase when it is pushed to another repository."
+msgstr ""
+
+msgid ""
+"Once changesets become public, extensions like mq and rebase will\n"
+"refuse to operate on them to prevent creating duplicate changesets.\n"
+"Phases can also be manually manipulated with the :hg:`phase` command\n"
+"if needed. See :hg:`help -v phase` for examples."
+msgstr ""
+
+msgid ""
+"Phases and servers\n"
+"------------------"
+msgstr ""
+
+msgid "Normally, all servers are ``publishing`` by default. This means::"
+msgstr ""
+
+msgid ""
+" - all draft changesets that are pulled or cloned appear in phase\n"
+" public on the client"
+msgstr ""
+
+msgid ""
+" - all draft changesets that are pushed appear as public on both\n"
+" client and server"
+msgstr ""
+
+msgid " - secret changesets are neither pushed, pulled, or cloned"
+msgstr ""
+
+msgid ""
+".. note::\n"
+"  Pulling a draft changeset from a publishing server does not mark it\n"
+"  as public on the server side due to the read-only nature of pull."
+msgstr ""
+
+msgid ""
+"Sometimes it may be desirable to push and pull changesets in the draft\n"
+"phase to share unfinished work. This can be done by setting a\n"
+"repository to disable publishing in its configuration file::"
+msgstr ""
+
+msgid ""
+"  [phases]\n"
+"  publish = False"
+msgstr ""
+"  [phases]\n"
+"  publish = False"
+
+msgid "See :hg:`help config` for more information on config files."
+msgstr "Se :hg:`help config` för mer information om konfigurationsfiler."
+
+msgid ""
+".. note::\n"
+"  Servers running older versions of Mercurial are treated as\n"
+"  publishing."
+msgstr ""
+
+msgid ""
+"Examples\n"
+"--------"
+msgstr ""
+"Exempel\n"
+"-------"
+
+msgid " - list changesets in draft or secret phase::"
+msgstr " - visa ändringar i draft- eller secret-fasen::"
+
+msgid "     hg log -r \"not public()\""
+msgstr "     hg log -r \"not public()\""
+
+msgid " - change all secret changesets to draft::"
+msgstr " - ändra alla secret-ändringar till draft::"
+
+msgid "     hg phase --draft \"secret()\""
+msgstr "     hg phase --draft \"secret()\""
+
+msgid ""
+" - forcibly move the current changeset and descendants from public to draft::"
+msgstr " - tvinga nuvarande ändring och ättlingar från public till draft::"
+
+msgid "     hg phase --force --draft ."
+msgstr "     hg phase --force --draft ."
+
+msgid " - show a list of changeset revision and phase::"
+msgstr " - visa en lista med ändringsrevision och fas::"
+
+msgid "     hg log --template \"{rev} {phase}\\n\""
+msgstr "     hg log --template \"{rev} {phase}\\n\""
+
+msgid ""
+"See :hg:`help phase` for more information on manually manipulating phases.\n"
+msgstr ""
+"Se :hg:`help phase` för mer information om att manuellt änddra faser.\n"
+
 msgid "Mercurial supports several ways to specify individual revisions."
 msgstr "Mercurial stöder flera sätt att ange individuella revisioner."
 
@@ -14472,10 +15954,9 @@
 msgstr ""
 
 msgid ""
-"Identifiers such as branch names must be quoted with single or double\n"
-"quotes if they contain characters outside of\n"
-"``[._a-zA-Z0-9\\x80-\\xff]`` or if they match one of the predefined\n"
-"predicates."
+"Identifiers such as branch names may need quoting with single or\n"
+"double quotes if they contain characters like ``-`` or if they match\n"
+"one of the predefined predicates."
 msgstr ""
 
 msgid ""
@@ -14631,8 +16112,12 @@
 msgid ""
 "Subrepositories let you nest external repositories or projects into a\n"
 "parent Mercurial repository, and make commands operate on them as a\n"
-"group. External Mercurial and Subversion projects are currently\n"
-"supported."
+"group."
+msgstr ""
+
+msgid ""
+"Mercurial currently supports Mercurial, Git, and Subversion\n"
+"subrepositories."
 msgstr ""
 
 msgid "Subrepositories are made of three components:"
@@ -14640,8 +16125,7 @@
 
 msgid ""
 "1. Nested repository checkouts. They can appear anywhere in the\n"
-"   parent working directory, and are Mercurial clones or Subversion\n"
-"   checkouts."
+"   parent working directory."
 msgstr ""
 
 msgid ""
@@ -14653,14 +16137,19 @@
 msgid "     path/to/nested = https://example.com/nested/repo/path"
 msgstr ""
 
+msgid "   Git and Subversion subrepos are also supported:"
+msgstr ""
+
+msgid ""
+"     path/to/nested = [git]git://example.com/nested/repo/path\n"
+"     path/to/nested = [svn]https://example.com/nested/trunk/path"
+msgstr ""
+
 msgid ""
 "   where ``path/to/nested`` is the checkout location relatively to the\n"
 "   parent Mercurial root, and ``https://example.com/nested/repo/path``\n"
 "   is the source repository path. The source can also reference a\n"
-"   filesystem path. Subversion repositories are defined with:"
-msgstr ""
-
-msgid "     path/to/nested = [svn]https://example.com/nested/trunk/path"
+"   filesystem path."
 msgstr ""
 
 msgid ""
@@ -14733,7 +16222,9 @@
 
 msgid ""
 ":add: add does not recurse in subrepos unless -S/--subrepos is\n"
-"    specified. Subversion subrepositories are currently silently\n"
+"    specified.  However, if you specify the full path of a file in a\n"
+"    subrepo, it will be added even without -S/--subrepos specified.\n"
+"    Git and Subversion subrepositories are currently silently\n"
 "    ignored."
 msgstr ""
 
@@ -14744,31 +16235,37 @@
 
 msgid ""
 ":commit: commit creates a consistent snapshot of the state of the\n"
-"    entire project and its subrepositories. It does this by first\n"
-"    attempting to commit all modified subrepositories, then recording\n"
-"    their state and finally committing it in the parent\n"
-"    repository. Mercurial can be made to abort if any subrepository\n"
-"    content is modified by setting \"ui.commitsubrepos=no\" in a\n"
-"    configuration file (see :hg:`help config`)."
+"    entire project and its subrepositories. If any subrepositories\n"
+"    have been modified, Mercurial will abort.  Mercurial can be made\n"
+"    to instead commit all modified subrepositories by specifying\n"
+"    -S/--subrepos, or setting \"ui.commitsubrepos=True\" in a\n"
+"    configuration file (see :hg:`help config`).  After there are no\n"
+"    longer any modified subrepositories, it records their state and\n"
+"    finally commits it in the parent repository."
 msgstr ""
 
 msgid ""
 ":diff: diff does not recurse in subrepos unless -S/--subrepos is\n"
 "    specified. Changes are displayed as usual, on the subrepositories\n"
-"    elements. Subversion subrepositories are currently silently\n"
-"    ignored."
+"    elements. Git and Subversion subrepositories are currently\n"
+"    silently ignored."
+msgstr ""
+
+msgid ""
+":forget: forget currently only handles exact file matches in subrepos.\n"
+"    Git and Subversion subrepositories are currently silently ignored."
 msgstr ""
 
 msgid ""
 ":incoming: incoming does not recurse in subrepos unless -S/--subrepos\n"
-"    is specified. Subversion subrepositories are currently silently\n"
-"    ignored."
+"    is specified. Git and Subversion subrepositories are currently\n"
+"    silently ignored."
 msgstr ""
 
 msgid ""
 ":outgoing: outgoing does not recurse in subrepos unless -S/--subrepos\n"
-"    is specified. Subversion subrepositories are currently silently\n"
-"    ignored."
+"    is specified. Git and Subversion subrepositories are currently\n"
+"    silently ignored."
 msgstr ""
 
 msgid ""
@@ -14783,7 +16280,7 @@
 ":push: Mercurial will automatically push all subrepositories first\n"
 "    when the parent repository is being pushed. This ensures new\n"
 "    subrepository changes are available when referenced by top-level\n"
-"    repositories."
+"    repositories.  Push is a no-op for Subversion subrepositories."
 msgstr ""
 
 msgid ""
@@ -15166,9 +16663,6 @@
 msgid "'%s' uses newer protocol %s"
 msgstr ""
 
-msgid "unexpected response:"
-msgstr "oväntat svar:"
-
 #, python-format
 msgid "push failed: %s"
 msgstr "tryckning misslyckades: %s"
@@ -15231,6 +16725,9 @@
 msgid "no interrupted transaction available\n"
 msgstr ""
 
+msgid "no rollback information available\n"
+msgstr ""
+
 #, python-format
 msgid "repository tip rolled back to revision %s (undo %s: %s)\n"
 msgstr "arkivtopp tillbakadragen till revision %s (ångra %s: %s)\n"
@@ -15242,8 +16739,14 @@
 msgid "rolling back unknown transaction\n"
 msgstr "återkallar okänd transaktion\n"
 
-#, python-format
-msgid "named branch could not be reset, current branch is still: %s\n"
+msgid "rollback of last commit while not checked out may lose data"
+msgstr ""
+
+msgid "use -f to force"
+msgstr ""
+
+#, python-format
+msgid "named branch could not be reset: current branch is still '%s'\n"
 msgstr ""
 
 #, python-format
@@ -15254,9 +16757,6 @@
 msgid "working directory now based on revision %d\n"
 msgstr "arbetskatalogen är nu baserad på revision %d\n"
 
-msgid "no rollback information available\n"
-msgstr ""
-
 #, python-format
 msgid "waiting for lock on %s held by %r\n"
 msgstr ""
@@ -15280,9 +16780,8 @@
 msgid "can't commit subrepos without .hgsub"
 msgstr "kan inte arkivera underarkiv utan .hgsub"
 
-#, python-format
-msgid "uncommitted changes in subrepo %s"
-msgstr "oarkiverade ändringar i underarkivet %s"
+msgid "use --subrepos for recursive commit"
+msgstr ""
 
 msgid "file not found!"
 msgstr "filen hittades inte!"
@@ -15319,6 +16818,10 @@
 "changegroupsubset."
 
 #, python-format
+msgid "updating %s to public failed!\n"
+msgstr "uppdatera %s till publik misslyckades!\n"
+
+#, python-format
 msgid "%d changesets found\n"
 msgstr "%d ändringar hittades\n"
 
@@ -15452,9 +16955,11 @@
 msgstr ""
 
 #, python-format
-msgid ""
-"untracked file in working directory differs from file in requested revision: "
-"'%s'"
+msgid "%s: untracked file differs\n"
+msgstr ""
+
+msgid ""
+"untracked files in working directory differ from files in requested revision"
 msgstr ""
 
 #, python-format
@@ -15522,11 +17027,11 @@
 msgid "merging with a working directory ancestor has no effect"
 msgstr ""
 
-msgid "nothing to merge (use 'hg update' or check 'hg heads')"
-msgstr ""
-
-msgid "outstanding uncommitted changes (use 'hg status' to list changes)"
-msgstr ""
+msgid "use 'hg update' or check 'hg heads'"
+msgstr "använd 'hg update' eller kontrollera 'hg heads'"
+
+msgid "use 'hg status' to list changes"
+msgstr "använd 'hg status' för att visa modifikationer"
 
 #, python-format
 msgid "outstanding uncommitted changes in subrepository '%s'"
@@ -15551,7 +17056,7 @@
 msgstr "Fel:"
 
 msgid "Hint:"
-msgstr ""
+msgstr "Tips:"
 
 msgid "Important:"
 msgstr "Viktigt:"
@@ -15659,6 +17164,14 @@
 msgstr ""
 
 #, python-format
+msgid "ignoring inconsistent public root from remote: %s\n"
+msgstr ""
+
+#, python-format
+msgid "ignoring unexpected root from remote: %i %s\n"
+msgstr ""
+
+#, python-format
 msgid "exited with status %d"
 msgstr ""
 
@@ -15775,16 +17288,22 @@
 msgstr "author kräver en sträng"
 
 msgid ""
-"``bisected(string)``\n"
-"    Changesets marked in the specified bisect state (good, bad, skip)."
+"``bisect(string)``\n"
+"    Changesets marked in the specified bisect status:"
+msgstr ""
+
+msgid ""
+"    - ``good``, ``bad``, ``skip``: csets explicitly marked as good/bad/skip\n"
+"    - ``goods``, ``bads``      : csets topologicaly good/bad\n"
+"    - ``range``              : csets taking part in the bisection\n"
+"    - ``pruned``             : csets that are goods, bads or skipped\n"
+"    - ``untested``           : csets whose fate is yet unknown\n"
+"    - ``ignored``            : csets ignored due to DAG topology"
 msgstr ""
 
 msgid "bisect requires a string"
 msgstr "bisect kräver en sträng"
 
-msgid "invalid bisect state"
-msgstr "ogiltigt bisect-tillständ"
-
 msgid ""
 "``bookmark([name])``\n"
 "    The named bookmark or all bookmarks."
@@ -15853,6 +17372,14 @@
 msgstr ""
 
 msgid ""
+"``draft()``\n"
+"    Changeset in draft phase."
+msgstr ""
+
+msgid "draft takes no arguments"
+msgstr "draft tar inga argument"
+
+msgid ""
 "``filelog(pattern)``\n"
 "    Changesets connected to the specified filelog."
 msgstr ""
@@ -15861,6 +17388,11 @@
 msgstr "filelog kräver ett mönster"
 
 msgid ""
+"``first(set, [n])``\n"
+"    An alias for limit()."
+msgstr ""
+
+msgid ""
 "``follow([file])``\n"
 "    An alias for ``::.`` (ancestors of the working copy's first parent).\n"
 "    If a filename is specified, the history of the given file is followed,\n"
@@ -15874,10 +17406,6 @@
 msgid "follow expected a filename"
 msgstr "follow förväntade sig ett filnamn"
 
-#. i18n: "follow" is a keyword
-msgid "follow takes no arguments"
-msgstr "follow tar inga argument"
-
 msgid ""
 "``all()``\n"
 "    All changesets, the same as ``0:tip``."
@@ -15936,13 +17464,13 @@
 msgstr "keyword kräver en sträng"
 
 msgid ""
-"``limit(set, n)``\n"
-"    First n members of set."
+"``limit(set, [n])``\n"
+"    First n members of set, defaulting to 1."
 msgstr ""
 
 #. i18n: "limit" is a keyword
-msgid "limit requires two arguments"
-msgstr "limit kräver två argument"
+msgid "limit requires one or two arguments"
+msgstr "limit kräver ett eller två argument"
 
 #. i18n: "limit" is a keyword
 msgid "limit requires a number"
@@ -15953,13 +17481,13 @@
 msgstr "limit förväntar sig ett nummer"
 
 msgid ""
-"``last(set, n)``\n"
-"    Last n members of set."
+"``last(set, [n])``\n"
+"    Last n members of set, defaulting to 1."
 msgstr ""
 
 #. i18n: "last" is a keyword
-msgid "last requires two arguments"
-msgstr "last kräver två argument"
+msgid "last requires one or two arguments"
+msgstr "last kräver ett eller två argument"
 
 #. i18n: "last" is a keyword
 msgid "last requires a number"
@@ -16050,6 +17578,33 @@
 msgstr ""
 
 msgid ""
+"``public()``\n"
+"    Changeset in public phase."
+msgstr ""
+
+msgid "public takes no arguments"
+msgstr "public tar inga argument"
+
+msgid ""
+"``remote([id [,path]])``\n"
+"    Local revision that corresponds to the given identifier in a\n"
+"    remote repository, if present. Here, the '.' identifier is a\n"
+"    synonym for the current local branch."
+msgstr ""
+
+#. i18n: "remote" is a keyword
+msgid "remote takes one, two or no arguments"
+msgstr "remote tar ett, två eller inga argument"
+
+#. i18n: "remote" is a keyword
+msgid "remote requires a string id"
+msgstr "remote kräver ett sträng-id"
+
+#. i18n: "remote" is a keyword
+msgid "remote requires a repository path"
+msgstr "remote kräver en arkivsökväg"
+
+msgid ""
 "``removes(pattern)``\n"
 "    Changesets which remove files matching pattern."
 msgstr ""
@@ -16086,6 +17641,14 @@
 msgstr ""
 
 msgid ""
+"``secret()``\n"
+"    Changeset in secret phase."
+msgstr ""
+
+msgid "secret takes no arguments"
+msgstr "secret tar inga argument"
+
+msgid ""
 "``sort(set[, [-]key...])``\n"
 "    Sort set by keys. The default sort order is ascending, specify a key\n"
 "    as ``-key`` to sort in descending order."
@@ -16145,6 +17708,10 @@
 msgstr "tom fråga"
 
 #, python-format
+msgid "no changes found (ignored %d secret changesets)\n"
+msgstr "inga ändringar hittades (ignorerade %d hemliga ändringar)\n"
+
+#, python-format
 msgid "ui.portablefilenames value is invalid ('%s')"
 msgstr ""
 
@@ -16161,7 +17728,7 @@
 msgstr ""
 
 #, python-format
-msgid "path %r is inside nested repo %r"
+msgid "path '%s' is inside nested repo %r"
 msgstr ""
 
 #, python-format
@@ -16191,8 +17758,14 @@
 msgid "searching for changes\n"
 msgstr "söker efter ändringar\n"
 
+msgid "all local heads known remotely\n"
+msgstr ""
+
+msgid "sampling from both directions\n"
+msgstr ""
+
 msgid "queries"
-msgstr "frågor"
+msgstr "frågar"
 
 msgid "searching"
 msgstr "söker"
@@ -16232,13 +17805,16 @@
 msgid "no suitable response from remote hg"
 msgstr ""
 
-msgid "remote: "
-msgstr "fjärr: "
-
 #, python-format
 msgid "push refused: %s"
 msgstr ""
 
+msgid "ssl connection failed"
+msgstr "ssl-anslutning misslyckades"
+
+msgid "Python SSL support not found"
+msgstr "Pythons SSL-stöd hittades inte"
+
 msgid "certificate checking requires Python 2.6"
 msgstr "certifikatkontroll kräver Python 2.6"
 
@@ -16260,12 +17836,37 @@
 msgstr "kunde inte hitta web.cacerts: %s"
 
 #, python-format
-msgid "%s certificate error: %s (use --insecure to connect insecurely)"
-msgstr "%s-certifikatfel: %s (använd --insecure för att ansluta osäkert)"
-
-#, python-format
-msgid "invalid certificate for %s with fingerprint %s"
-msgstr "ogiltigt certifikat för %s med fingeravtrycket %s"
+msgid "host fingerprint for %s can't be verified (Python too old)"
+msgstr ""
+
+#, python-format
+msgid "warning: certificate for %s can't be verified (Python too old)\n"
+msgstr "varning: certificatet för %s kan inte verifieras (för gammal Python)\n"
+
+#, python-format
+msgid "%s ssl connection error"
+msgstr ""
+
+#, python-format
+msgid "%s certificate error: no certificate received"
+msgstr "%s certifikatfel: inget certifikat mottaget"
+
+#, python-format
+msgid "certificate for %s has unexpected fingerprint %s"
+msgstr "certifikatet för %s har oväntat fingeravtryck %s"
+
+msgid "check hostfingerprint configuration"
+msgstr "kontrollera hostfingerprint-konfiguration"
+
+#, python-format
+msgid "%s certificate error: %s"
+msgstr "%s certifikatfel: %s"
+
+#, python-format
+msgid "configure hostfingerprint %s or use --insecure to connect insecurely"
+msgstr ""
+"konfigurera hostfingerprint %s eller använd --insecure för att ansluta "
+"osäkert"
 
 #, python-format
 msgid ""
@@ -16276,14 +17877,6 @@
 "inställningen för hostfingerprints eller web.cacerts)\n"
 
 #, python-format
-msgid "host fingerprint for %s can't be verified (Python too old)"
-msgstr ""
-
-#, python-format
-msgid "warning: certificate for %s can't be verified (Python too old)\n"
-msgstr "varning: certificatet för %s kan inte verifieras (för gammal Python)\n"
-
-#, python-format
 msgid "'%s' does not appear to be an hg repository"
 msgstr "'%s' verkar inte vara ett hg-arkiv"
 
@@ -16305,13 +17898,13 @@
 msgid "subrepo spec file %s not found"
 msgstr ""
 
-msgid "missing ] in subrepo source"
-msgstr ""
-
 #, python-format
 msgid "bad subrepository pattern in %s: %s"
 msgstr ""
 
+msgid "missing ] in subrepo source"
+msgstr ""
+
 #, python-format
 msgid ""
 " subrepository sources for %s differ\n"
@@ -16377,6 +17970,10 @@
 msgid "pushing subrepo %s to %s\n"
 msgstr "trycker underarkivet %s till %s\n"
 
+#, python-format
+msgid "'svn' executable not found for subrepo '%s'"
+msgstr ""
+
 msgid "cannot retrieve svn tool version"
 msgstr "kan inte hämta version på svn-verktyg"
 
@@ -16530,6 +18127,13 @@
 "    i.e. a 12 hexadecimal digit string."
 msgstr ""
 
+msgid ""
+":shortbisect: Any text. Treats `text` as a bisection status, and\n"
+"    returns a single-character representing the status (G: good, B: bad,\n"
+"    S: skipped, U: untested, I: ignored). Returns single space if `text`\n"
+"    is not a valid bisection status."
+msgstr ""
+
 msgid ":shortdate: Date. Returns a date like \"2006-09-18\"."
 msgstr ""
 
@@ -16562,6 +18166,9 @@
 msgid ":author: String. The unmodified author of the changeset."
 msgstr ""
 
+msgid ":bisect: String. The changeset bisection status."
+msgstr ""
+
 msgid ""
 ":branch: String. The name of the branch on which the changeset was\n"
 "    committed."
@@ -16629,6 +18236,12 @@
 "    digit string."
 msgstr ""
 
+msgid ":phase: String. The changeset phase name."
+msgstr ""
+
+msgid ":phaseidx: Integer. The changeset phase index."
+msgstr ""
+
 msgid ":rev: Integer. The repository-local changeset revision number."
 msgstr ""
 
--- a/mercurial/bookmarks.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/bookmarks.py	Wed Feb 01 16:28:35 2012 -0600
@@ -221,7 +221,8 @@
 
     diff = sorted(set(rmarks) - set(lmarks))
     for k in diff:
-        ui.write("   %-25s %s\n" % (k, rmarks[k][:12]))
+        mark = ui.debugflag and rmarks[k] or rmarks[k][:12]
+        ui.write("   %-25s %s\n" % (k, mark))
 
     if len(diff) <= 0:
         ui.status(_("no changed bookmarks found\n"))
--- a/mercurial/bundlerepo.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/bundlerepo.py	Wed Feb 01 16:28:35 2012 -0600
@@ -14,7 +14,7 @@
 from node import nullid
 from i18n import _
 import os, tempfile, shutil
-import changegroup, util, mdiff, discovery
+import changegroup, util, mdiff, discovery, cmdutil
 import localrepo, changelog, manifest, filelog, revlog, error
 
 class bundlerevlog(revlog.revlog):
@@ -274,6 +274,11 @@
     if create:
         raise util.Abort(_('cannot create new bundle repository'))
     parentpath = ui.config("bundle", "mainreporoot", "")
+    if not parentpath:
+        # try to find the correct path to the working directory repo
+        parentpath = cmdutil.findrepo(os.getcwd())
+        if parentpath is None:
+            parentpath = ''
     if parentpath:
         # Try to make the full path relative so we get a nice, short URL.
         # In particular, we don't want temp dir names in test outputs.
--- a/mercurial/commands.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/commands.py	Wed Feb 01 16:28:35 2012 -0600
@@ -725,7 +725,7 @@
     ('r', 'rev', '', _('revision'), _('REV')),
     ('d', 'delete', False, _('delete a given bookmark')),
     ('m', 'rename', '', _('rename a given bookmark'), _('NAME')),
-    ('i', 'inactive', False, _('do not mark a new bookmark active'))],
+    ('i', 'inactive', False, _('mark a bookmark inactive'))],
     _('hg bookmarks [-f] [-d] [-i] [-m NAME] [-r REV] [NAME]'))
 def bookmark(ui, repo, mark=None, rev=None, force=False, delete=False,
              rename=None, inactive=False):
@@ -745,6 +745,11 @@
     push` and :hg:`help pull`). This requires both the local and remote
     repositories to support bookmarks. For versions prior to 1.8, this means
     the bookmarks extension must be enabled.
+
+    With -i/--inactive, the new bookmark will not be made the active
+    bookmark. If -r/--rev is given, the new bookmark will not be made
+    active even if -i/--inactive is not given. If no NAME is given, the
+    current active bookmark will be marked inactive.
     '''
     hexfn = ui.debugflag and hex or short
     marks = repo._bookmarks
@@ -978,6 +983,7 @@
         common = [repo.lookup(rev) for rev in base]
         heads = revs and map(repo.lookup, revs) or revs
         cg = repo.getbundle('bundle', heads=heads, common=common)
+        outgoing = None
     else:
         dest = ui.expandpath(dest or 'default-push', dest or 'default')
         dest, branches = hg.parseurl(dest, opts.get('branch'))
@@ -989,7 +995,7 @@
                                                 force=opts.get('force'))
         cg = repo.getlocalbundle('bundle', outgoing)
     if not cg:
-        ui.status(_("no changes found\n"))
+        scmutil.nochangesfound(ui, outgoing and outgoing.excluded)
         return 1
 
     bundletype = opts.get('type', 'bzip2').lower()
@@ -3057,11 +3063,15 @@
 
         # options
         if not ui.quiet and entry[1]:
-            rst += '\noptions:\n\n'
+            rst += '\n'
+            rst += _("options:")
+            rst += '\n\n'
             rst += optrst(entry[1])
 
         if ui.verbose:
-            rst += '\nglobal options:\n\n'
+            rst += '\n'
+            rst += _("global options:")
+            rst += '\n\n'
             rst += optrst(globalopts)
 
         keep = ui.verbose and ['verbose'] or []
@@ -4214,19 +4224,22 @@
     revs = list(revs)
     revs.extend(opts['rev'])
     if not revs:
-        raise util.Abort(_('no revisions specified!'))
+        raise util.Abort(_('no revisions specified'))
+
+    revs = scmutil.revrange(repo, revs)
 
     lock = None
     ret = 0
     if targetphase is None:
         # display
-        for ctx in repo.set('%lr', revs):
+        for r in revs:
+            ctx = repo[r]
             ui.write('%i: %s\n' % (ctx.rev(), ctx.phasestr()))
     else:
         lock = repo.lock()
         try:
             # set phase
-            nodes = [ctx.node() for ctx in repo.set('%lr', revs)]
+            nodes = [ctx.node() for ctx in repo.set('%ld', revs)]
             if not nodes:
                 raise util.Abort(_('empty revision set'))
             olddata = repo._phaserev[:]
@@ -4244,17 +4257,22 @@
             else:
                 ui.warn(_('no phases changed\n'))
                 ret = 1
-        return ret
+    return ret
 
 def postincoming(ui, repo, modheads, optupdate, checkout):
     if modheads == 0:
-        return
+        return 1
     if optupdate:
+        movemarkfrom = repo['.'].node()
         try:
-            return hg.update(repo, checkout)
+            ret = hg.update(repo, checkout)
         except util.Abort, inst:
             ui.warn(_("not updating: %s\n" % str(inst)))
             return 0
+        if not ret and not checkout:
+            if bookmarks.update(repo, [movemarkfrom], repo['.'].node()):
+                ui.status(_("updating bookmark %s\n") % repo._bookmarkcurrent)
+        return ret
     if modheads > 1:
         currentbranchheads = len(repo.branchheads())
         if currentbranchheads == modheads:
@@ -4294,7 +4312,8 @@
     If SOURCE is omitted, the 'default' path will be used.
     See :hg:`help urls` for more information.
 
-    Returns 0 on success, 1 if an update had unresolved files.
+    Returns 0 on success, 1 if no changes found or an update had
+    unresolved files.
     """
     source, branches = hg.parseurl(ui.expandpath(source), opts.get('branch'))
     other = hg.peer(repo, opts, source)
@@ -4404,14 +4423,14 @@
         c = repo['']
         subs = c.substate # only repos that are committed
         for s in sorted(subs):
-            if not c.sub(s).push(opts):
+            if c.sub(s).push(opts) == 0:
                 return False
     finally:
         del repo._subtoppath
     result = repo.push(other, opts.get('force'), revs=revs,
                        newbranch=opts.get('new_branch'))
 
-    result = (result == 0)
+    result = not result
 
     if opts.get('bookmark'):
         rb = other.listkeys('bookmarks')
@@ -4593,7 +4612,8 @@
     setting, or a command-line merge tool like ``diff3``. The resolve
     command is used to manage the files involved in a merge, after
     :hg:`merge` has been run, and before :hg:`commit` is run (i.e. the
-    working directory must have two parents).
+    working directory must have two parents). See :hg:`help
+    merge-tools` for information on configuring merge tools.
 
     The resolve command can be used in the following ways:
 
@@ -5633,7 +5653,8 @@
 
     Update the repository's working directory to the specified
     changeset. If no changeset is specified, update to the tip of the
-    current named branch and move the current bookmark.
+    current named branch and move the current bookmark (see :hg:`help
+    bookmarks`).
 
     If the changeset is not a descendant of the working directory's
     parent, the update is aborted. With the -c/--check option, the
@@ -5707,7 +5728,8 @@
         ret = hg.update(repo, rev)
 
     if not ret and movemarkfrom:
-        bookmarks.update(repo, [movemarkfrom], repo['.'].node())
+        if bookmarks.update(repo, [movemarkfrom], repo['.'].node()):
+            ui.status(_("updating bookmark %s\n") % repo._bookmarkcurrent)
     elif brev in repo._bookmarks:
         bookmarks.setcurrent(repo, brev)
 
--- a/mercurial/copies.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/copies.py	Wed Feb 01 16:28:35 2012 -0600
@@ -99,6 +99,12 @@
         if v in src:
             # file is a copy of an existing file
             t[k] = v
+
+    # remove criss-crossed copies
+    for k, v in t.items():
+        if k in src and v in dst:
+            del t[k]
+
     return t
 
 def _tracefile(fctx, actx):
--- a/mercurial/discovery.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/discovery.py	Wed Feb 01 16:28:35 2012 -0600
@@ -116,7 +116,7 @@
         sets = repo.changelog.findcommonmissing(og.commonheads, onlyheads)
         og._common, allmissing = sets
         og._missing = missing = []
-        og._excluded = excluded = []
+        og.excluded = excluded = []
         for node in allmissing:
             if repo[node].phase() >= phases.secret:
                 excluded.append(node)
@@ -124,15 +124,14 @@
                 missing.append(node)
         if excluded:
             # update missing heads
-            rset = repo.set('heads(%ln)', missing)
-            missingheads = [ctx.node() for ctx in rset]
+            missingheads = phases.newheads(repo, onlyheads, excluded)
         else:
             missingheads = onlyheads
         og.missingheads = missingheads
 
     return og
 
-def checkheads(repo, remote, outgoing, remoteheads, newbranch=False):
+def checkheads(repo, remote, outgoing, remoteheads, newbranch=False, inc=False):
     """Check that a push won't add any outgoing head
 
     raise Abort error and display ui message as needed.
@@ -191,9 +190,9 @@
         # Construct {old,new}map with branch = None (topological branch).
         # (code based on _updatebranchcache)
         oldheads = set(h for h in remoteheads if h in cl.nodemap)
-        newheads = oldheads.union(outg)
+        newheads = oldheads.union(outgoing.missing)
         if len(newheads) > 1:
-            for latest in reversed(outg):
+            for latest in reversed(outgoing.missing):
                 if latest not in newheads:
                     continue
                 minhrev = min(cl.rev(h) for h in newheads)
--- a/mercurial/fileset.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/fileset.py	Wed Feb 01 16:28:35 2012 -0600
@@ -199,7 +199,7 @@
     """
     # i18n: "binary" is a keyword
     getargs(x, 0, 0, _("binary takes no arguments"))
-    return [f for f in mctx.subset if util.binary(mctx.ctx[f].data())]
+    return [f for f in mctx.existing() if util.binary(mctx.ctx[f].data())]
 
 def exec_(mctx, x):
     """``exec()``
@@ -207,7 +207,7 @@
     """
     # i18n: "exec" is a keyword
     getargs(x, 0, 0, _("exec takes no arguments"))
-    return [f for f in mctx.subset if mctx.ctx.flags(f) == 'x']
+    return [f for f in mctx.existing() if mctx.ctx.flags(f) == 'x']
 
 def symlink(mctx, x):
     """``symlink()``
@@ -215,7 +215,7 @@
     """
     # i18n: "symlink" is a keyword
     getargs(x, 0, 0, _("symlink takes no arguments"))
-    return [f for f in mctx.subset if mctx.ctx.flags(f) == 'l']
+    return [f for f in mctx.existing() if mctx.ctx.flags(f) == 'l']
 
 def resolved(mctx, x):
     """``resolved()``
@@ -253,7 +253,7 @@
     """
     pat = getstring(x, _("grep requires a pattern"))
     r = re.compile(pat)
-    return [f for f in mctx.subset if r.search(mctx.ctx[f].data())]
+    return [f for f in mctx.existing() if r.search(mctx.ctx[f].data())]
 
 _units = dict(k=2**10, K=2**10, kB=2**10, KB=2**10,
               M=2**20, MB=2**20, G=2**30, GB=2**30)
@@ -320,7 +320,7 @@
     else:
         raise error.ParseError(_("couldn't parse size: %s") % expr)
 
-    return [f for f in mctx.subset if m(mctx.ctx[f].size())]
+    return [f for f in mctx.existing() if m(mctx.ctx[f].size())]
 
 def encoding(mctx, x):
     """``encoding(name)``
@@ -333,7 +333,7 @@
     enc = getstring(x, _("encoding requires an encoding name"))
 
     s = []
-    for f in mctx.subset:
+    for f in mctx.existing():
         d = mctx.ctx[f].data()
         try:
             d.decode(enc)
@@ -400,6 +400,8 @@
         return self.ctx.match(patterns)
     def filter(self, files):
         return [f for f in files if f in self.subset]
+    def existing(self):
+        return (f for f in self.subset if f in self.ctx)
     def narrow(self, files):
         return matchctx(self.ctx, self.filter(files), self._status)
 
--- a/mercurial/help.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/help.py	Wed Feb 01 16:28:35 2012 -0600
@@ -73,6 +73,7 @@
    (["glossary"], _("Glossary"), loaddoc('glossary')),
    (["hgignore", "ignore"], _("syntax for Mercurial ignore files"),
     loaddoc('hgignore')),
+   (["phases"], _("Working with Phases"), loaddoc('phases')),
 ])
 
 # Map topics to lists of callable taking the current topic help and
--- a/mercurial/help/config.txt	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/help/config.txt	Wed Feb 01 16:28:35 2012 -0600
@@ -915,6 +915,21 @@
     Optional. Directory or URL to use when pushing if no destination
     is specified.
 
+``phases``
+""""""""""
+
+Specifies default handling of phases. See :hg:`help phases` for more
+information about working with phases.
+
+``publish``
+    Controls draft phase behavior when working as a server. When true,
+    pushed changesets are set to public in both client and server and
+    pulled or cloned changesets are set to public in the client.
+    Default: True
+
+``new-commit``
+    Phase of newly-created commits.
+    Default: draft
 
 ``profiling``
 """""""""""""
--- a/mercurial/help/glossary.txt	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/help/glossary.txt	Wed Feb 01 16:28:35 2012 -0600
@@ -212,6 +212,11 @@
     to the files introduced manually or by a merge. The repository
     metadata exists in the .hg directory inside the working directory.
 
+Draft
+    Changesets in the draft phase have not been shared with publishing
+    repositories and may thus be safely changed by history-modifying
+    extensions. See :hg:`help phases`.
+
 Graph
     See DAG and :hg:`help graphlog`.
 
@@ -300,6 +305,15 @@
 
     Example: "You will need to patch that revision."
 
+Phase
+    A per-changeset state tracking how the changeset has been or
+    should be shared. See :hg:`help phases`.
+
+Public
+    Changesets in the public phase have been shared with publishing
+    repositories and are therefore considered immutable. See :hg:`help
+    phases`.
+
 Pull
     An operation in which changesets in a remote repository which are
     not in the local repository are brought into the local
@@ -351,6 +365,10 @@
     A changeset that has only the null changeset as its parent. Most
     repositories have only a single root changeset.
 
+Secret
+    Changesets in the secret phase may not be shared via push, pull,
+    or clone. See :hg:`help phases`.
+
 Tag
     An alternative name given to a changeset. Tags can be used in all
     places where Mercurial expects a changeset ID, e.g., with
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/help/phases.txt	Wed Feb 01 16:28:35 2012 -0600
@@ -0,0 +1,84 @@
+What are phases?
+----------------
+
+Phases are a system for tracking which changesets have been or should
+be shared. This helps prevent common mistakes when modifying history
+(for instance, with the mq or rebase extensions).
+
+Each changeset in a repository is in one of the following phases:
+
+ - public : changeset is visible on a public server
+ - draft : changeset is not yet published
+ - secret : changeset should not be pushed, pulled, or cloned
+
+These phases are ordered (public < draft < secret) and no changeset
+can be in a lower phase than its ancestors. For instance, if a
+changeset is public, all its ancestors are also public. Lastly,
+changeset phases only be changed towards the public phase.
+
+How are phases managed?
+-----------------------
+
+For the most part, phases should work transparently. By default, a
+changeset is created in the draft phase and is moved into the public
+phase when it is pushed to another repository.
+
+Once changesets become public, extensions like mq and rebase will
+refuse to operate on them to prevent creating duplicate changesets.
+Phases can also be manually manipulated with the :hg:`phase` command
+if needed. See :hg:`help -v phase` for examples.
+
+Phases and servers
+------------------
+
+Normally, all servers are ``publishing`` by default. This means::
+
+ - all draft changesets that are pulled or cloned appear in phase
+ public on the client
+
+ - all draft changesets that are pushed appear as public on both
+ client and server
+
+ - secret changesets are neither pushed, pulled, or cloned
+
+.. note::
+  Pulling a draft changeset from a publishing server does not mark it
+  as public on the server side due to the read-only nature of pull.
+
+Sometimes it may be desirable to push and pull changesets in the draft
+phase to share unfinished work. This can be done by setting a
+repository to disable publishing in its configuration file::
+
+  [phases]
+  publish = False
+
+See :hg:`help config` for more information on config files.
+
+.. note::
+  Servers running older versions of Mercurial are treated as
+  publishing.
+
+Examples
+--------
+
+ - list changesets in draft or secret phase::
+
+     hg log -r "not public()"
+
+ - change all secret changesets to draft::
+
+     hg phase --draft "secret()"
+
+ - forcibly move the current changeset and descendants from public to draft::
+
+     hg phase --force --draft .
+
+ - show a list of changeset revision and phase::
+
+     hg log --template "{rev} {phase}\n"
+
+ - resynchronize draft changesets relative to a remote repository::
+
+     hg phase -fd 'outgoing(URL)' 
+
+See :hg:`help phase` for more information on manually manipulating phases.
--- a/mercurial/help/revsets.txt	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/help/revsets.txt	Wed Feb 01 16:28:35 2012 -0600
@@ -4,10 +4,9 @@
 The language supports a number of predicates which are joined by infix
 operators. Parenthesis can be used for grouping.
 
-Identifiers such as branch names must be quoted with single or double
-quotes if they contain characters outside of
-``[._a-zA-Z0-9\x80-\xff]`` or if they match one of the predefined
-predicates.
+Identifiers such as branch names may need quoting with single or
+double quotes if they contain characters like ``-`` or if they match
+one of the predefined predicates.
 
 Special characters can be used in quoted identifiers by escaping them,
 e.g., ``\n`` is interpreted as a newline. To prevent them from being
--- a/mercurial/hg.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/hg.py	Wed Feb 01 16:28:35 2012 -0600
@@ -10,7 +10,7 @@
 from lock import release
 from node import hex, nullid
 import localrepo, bundlerepo, httprepo, sshrepo, statichttprepo, bookmarks
-import lock, util, extensions, error, node
+import lock, util, extensions, error, node, scmutil
 import cmdutil, discovery
 import merge as mergemod
 import verify as verifymod
@@ -289,7 +289,7 @@
             dircleanup = DirCleanup(dest)
 
         copy = False
-        if srcrepo.cancopy() and islocal(dest):
+        if srcrepo.cancopy() and islocal(dest) and not srcrepo.revs("secret()"):
             copy = not pull and not rev
 
         if copy:
@@ -511,7 +511,7 @@
                                             force=opts.get('force'))
     o = outgoing.missing
     if not o:
-        ui.status(_("no changes found\n"))
+        scmutil.nochangesfound(repo.ui, outgoing.excluded)
         return None
     return o
 
--- a/mercurial/localrepo.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/localrepo.py	Wed Feb 01 16:28:35 2012 -0600
@@ -176,7 +176,7 @@
     def _writebookmarks(self, marks):
       bookmarks.write(self)
 
-    @filecache('phaseroots')
+    @filecache('phaseroots', True)
     def _phaseroots(self):
         self._dirtyphases = False
         phaseroots = phases.readroots(self)
@@ -637,10 +637,6 @@
     def local(self):
         return self
 
-    def cancopy(self):
-        return (repo.repository.cancopy(self)
-                and not self._phaseroots[phases.secret])
-
     def join(self, f):
         return os.path.join(self.path, f)
 
@@ -879,10 +875,14 @@
         return 0
 
     def invalidatecaches(self):
-        try:
-            delattr(self, '_tagscache')
-        except AttributeError:
-            pass
+        def delcache(name):
+            try:
+                delattr(self, name)
+            except AttributeError:
+                pass
+
+        delcache('_tagscache')
+        delcache('_phaserev')
 
         self._branchcache = None # in UTF-8
         self._branchcachetip = None
@@ -1268,8 +1268,7 @@
                       parent2=xp2, pending=p)
             self.changelog.finalize(trp)
             # set the new commit is proper phase
-            targetphase = self.ui.configint('phases', 'new-commit',
-                                            phases.draft)
+            targetphase = phases.newcommitphase(self.ui)
             if targetphase:
                 # retract boundary do not alter parent changeset.
                 # if a parent have higher the resulting phase will
@@ -1554,21 +1553,29 @@
                 clend = len(self.changelog)
                 added = [self.changelog.node(r) for r in xrange(clstart, clend)]
 
+            # compute target subset
+            if heads is None:
+                # We pulled every thing possible
+                # sync on everything common
+                subset = common + added
+            else:
+                # We pulled a specific subset
+                # sync on this subset
+                subset = heads
 
             # Get remote phases data from remote
             remotephases = remote.listkeys('phases')
             publishing = bool(remotephases.get('publishing', False))
             if remotephases and not publishing:
                 # remote is new and unpublishing
-                subset = common + added
                 pheads, _dr = phases.analyzeremotephases(self, subset,
                                                          remotephases)
                 phases.advanceboundary(self, phases.public, pheads)
-                phases.advanceboundary(self, phases.draft, common + added)
+                phases.advanceboundary(self, phases.draft, subset)
             else:
                 # Remote is old or publishing all common changesets
                 # should be seen as public
-                phases.advanceboundary(self, phases.public, common + added)
+                phases.advanceboundary(self, phases.public, subset)
         finally:
             lock.release()
 
@@ -1584,7 +1591,8 @@
     def push(self, remote, force=False, revs=None, newbranch=False):
         '''Push outgoing changesets (limited by revs) from the current
         repository to remote. Return an integer:
-          - 0 means HTTP error *or* nothing to push
+          - None means nothing to push
+          - 0 means HTTP error
           - 1 means we pushed and remote head count is unchanged *or*
             we have outgoing changesets but refused to push
           - other values as described by addchangegroup()
@@ -1597,14 +1605,14 @@
         # unbundle assumes local user cannot lock remote repo (new ssh
         # servers, http servers).
 
-        self.checkpush(force, revs)
-        lock = None
-        unbundle = remote.capable('unbundle')
-        if not unbundle:
-            lock = remote.lock()
+        # get local lock as we might write phase data
+        locallock = self.lock()
         try:
-            # get local lock as we might write phase data
-            locallock = self.lock()
+            self.checkpush(force, revs)
+            lock = None
+            unbundle = remote.capable('unbundle')
+            if not unbundle:
+                lock = remote.lock()
             try:
                 # discovery
                 fci = discovery.findcommonincoming
@@ -1617,17 +1625,14 @@
 
                 if not outgoing.missing:
                     # nothing to push
-                    if outgoing.excluded:
-                        msg = "no changes to push but %i secret changesets\n"
-                        self.ui.status(_(msg) % len(outgoing.excluded))
-                    else:
-                        self.ui.status(_("no changes found\n"))
-                    ret = 1
+                    scmutil.nochangesfound(self.ui, outgoing.excluded)
+                    ret = None
                 else:
                     # something to push
                     if not force:
                         discovery.checkheads(self, remote, outgoing,
-                                             remoteheads, newbranch)
+                                             remoteheads, newbranch,
+                                             bool(inc))
 
                     # create a changegroup from local
                     if revs is None and not outgoing.excluded:
@@ -1652,11 +1657,35 @@
                         # we return an integer indicating remote head count change
                         ret = remote.addchangegroup(cg, 'push', self.url())
 
-                cheads = outgoing.commonheads[:]
                 if ret:
-                    # push succeed, synchonize common + pushed
-                    # this is a no-op if there was nothing to push
-                    cheads += outgoing.missingheads
+                    # push succeed, synchonize target of the push
+                    cheads = outgoing.missingheads
+                elif revs is None:
+                    # All out push fails. synchronize all common
+                    cheads = outgoing.commonheads
+                else:
+                    # I want cheads = heads(::missingheads and ::commonheads)
+                    # (missingheads is revs with secret changeset filtered out)
+                    #
+                    # This can be expressed as:
+                    #     cheads = ( (missingheads and ::commonheads)
+                    #              + (commonheads and ::missingheads))"
+                    #              )
+                    #
+                    # while trying to push we already computed the following:
+                    #     common = (::commonheads)
+                    #     missing = ((commonheads::missingheads) - commonheads)
+                    #
+                    # We can pick:
+                    # * missingheads part of comon (::commonheads)
+                    common = set(outgoing.common)
+                    cheads = [node for node in revs if node in common]
+                    # and 
+                    # * commonheads parents on missing
+                    revset = self.set('%ln and parents(roots(%ln))',
+                                     outgoing.commonheads,
+                                     outgoing.missing)
+                    cheads.extend(c.node() for c in revset)
                 # even when we don't push, exchanging phase data is useful
                 remotephases = remote.listkeys('phases')
                 if not remotephases: # old server or public only repo
@@ -1687,10 +1716,10 @@
                             self.ui.warn(_('updating %s to public failed!\n')
                                             % newremotehead)
             finally:
-                locallock.release()
+                if lock is not None:
+                    lock.release()
         finally:
-            if lock is not None:
-                lock.release()
+            locallock.release()
 
         self.ui.debug("checking for updated bookmarks\n")
         rb = remote.listkeys('bookmarks')
--- a/mercurial/merge.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/merge.py	Wed Feb 01 16:28:35 2012 -0600
@@ -173,6 +173,10 @@
         if m and m != a: # changed from a to m
             return m
         if n and n != a: # changed from a to n
+            if n == 'l' or a == 'l':
+                # can't automatically merge symlink flag change here, let
+                # filemerge take care of it
+                return m
             return n
         return '' # flag was cleared
 
@@ -359,7 +363,6 @@
                     updated += 1
                 else:
                     merged += 1
-            util.setflags(repo.wjoin(fd), 'l' in flags, 'x' in flags)
             if (move and repo.dirstate.normalize(fd) != f
                 and os.path.lexists(repo.wjoin(f))):
                 repo.ui.debug("removing %s\n" % f)
--- a/mercurial/patch.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/patch.py	Wed Feb 01 16:28:35 2012 -0600
@@ -1802,9 +1802,9 @@
             elif line.startswith('diff -r'):
                 # format: "diff -r ... -r ... filename"
                 filename = diffre.search(line).group(1)
-        elif line.startswith('+') and not line.startswith('+++'):
+        elif line.startswith('+') and not line.startswith('+++ '):
             adds += 1
-        elif line.startswith('-') and not line.startswith('---'):
+        elif line.startswith('-') and not line.startswith('--- '):
             removes += 1
         elif (line.startswith('GIT binary patch') or
               line.startswith('Binary file')):
--- a/mercurial/phases.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/phases.py	Wed Feb 01 16:28:35 2012 -0600
@@ -122,6 +122,7 @@
             raise
         for f in repo._phasedefaults:
             roots = f(repo, roots)
+        repo._dirtyphases = True
     return roots
 
 def writeroots(repo):
@@ -147,7 +148,7 @@
         missing = [node for node in nodes if node not in nodemap]
         if missing:
             for mnode in missing:
-                msg = _('Removing unknown node %(n)s from %(p)i-phase boundary')
+                msg = 'Removing unknown node %(n)s from %(p)i-phase boundary'
                 repo.ui.debug(msg, {'n': short(mnode), 'p': phase})
             nodes.symmetric_difference_update(missing)
             repo._dirtyphases = True
@@ -238,6 +239,9 @@
         if currentphase == oldphase and newphase < oldphase:
             advanceboundary(repo, newphase, [bin(nhex)])
             return 1
+        elif currentphase == newphase:
+            # raced, but got correct result
+            return 1
         else:
             return 0
     finally:
@@ -276,17 +280,41 @@
         phase = int(phase)
         if phase == 0:
             if node != nullid:
-                msg = _('ignoring inconsistense public root from remote: %s')
-                repo.ui.warn(msg, nhex)
+                repo.ui.warn(_('ignoring inconsistent public root'
+                               ' from remote: %s\n') % nhex)
         elif phase == 1:
             if node in nodemap:
                 draftroots.append(node)
         else:
-            msg = _('ignoring unexpected root from remote: %i %s')
-            repo.ui.warn(msg, phase, nhex)
+            repo.ui.warn(_('ignoring unexpected root from remote: %i %s\n')
+                         % (phase, nhex))
     # compute heads
-    revset = repo.set('heads((%ln + parents(%ln)) - (%ln::%ln))',
-                      subset, draftroots, draftroots, subset)
-    publicheads = [c.node() for c in revset]
+    publicheads = newheads(repo, subset, draftroots)
     return publicheads, draftroots
 
+def newheads(repo, heads, roots):
+    """compute new head of a subset minus another
+
+    * `heads`: define the first subset
+    * `rroots`: define the second we substract to the first"""
+    revset = repo.set('heads((%ln + parents(%ln)) - (%ln::%ln))',
+                      heads, roots, roots, heads)
+    return [c.node() for c in revset]
+
+
+def newcommitphase(ui):
+    """helper to get the target phase of new commit
+
+    Handle all possible values for the phases.new-commit options.
+
+    """
+    v = ui.config('phases', 'new-commit', draft)
+    try:
+        return phasenames.index(v)
+    except ValueError:
+        try:
+            return int(v)
+        except ValueError:
+            msg = _("phases.new-commit: not a valid phase name ('%s')")
+            raise error.ConfigError(msg % v)
+
--- a/mercurial/revset.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/revset.py	Wed Feb 01 16:28:35 2012 -0600
@@ -79,7 +79,7 @@
             pos += 1
             while pos < l: # find end of symbol
                 d = program[pos]
-                if not (d.isalnum() or d in "._" or ord(d) > 127):
+                if not (d.isalnum() or d in "._/" or ord(d) > 127):
                     break
                 if d == '.' and program[pos - 1] == '.': # special case for ..
                     pos -= 1
@@ -296,15 +296,17 @@
     return [r for r in subset if r in s or repo[r].branch() in b]
 
 def checkstatus(repo, subset, pat, field):
-    m = matchmod.match(repo.root, repo.getcwd(), [pat])
+    m = None
     s = []
-    fast = (m.files() == [pat])
+    fast = not matchmod.patkind(pat)
     for r in subset:
         c = repo[r]
         if fast:
             if pat not in c.files():
                 continue
         else:
+            if not m or matchmod.patkind(pat) == 'set':
+                m = matchmod.match(repo.root, repo.getcwd(), [pat], ctx=c)
             for f in c.files():
                 if m(f):
                     break
@@ -354,15 +356,18 @@
     """
     # i18n: "contains" is a keyword
     pat = getstring(x, _("contains requires a pattern"))
-    m = matchmod.match(repo.root, repo.getcwd(), [pat])
+    m = None
     s = []
-    if m.files() == [pat]:
+    if not matchmod.patkind(pat):
         for r in subset:
             if pat in repo[r]:
                 s.append(r)
     else:
         for r in subset:
-            for f in repo[r].manifest():
+            c = repo[r]
+            if not m or matchmod.patkind(pat) == 'set':
+                m = matchmod.match(repo.root, repo.getcwd(), [pat], ctx=c)
+            for f in c.manifest():
                 if m(f):
                     s.append(r)
                     break
@@ -412,10 +417,11 @@
     """
 
     pat = getstring(x, _("filelog requires a pattern"))
-    m = matchmod.match(repo.root, repo.getcwd(), [pat], default='relpath')
+    m = matchmod.match(repo.root, repo.getcwd(), [pat], default='relpath',
+                       ctx=repo[None])
     s = set()
 
-    if not m.anypats():
+    if not matchmod.patkind(pat):
         for f in m.files():
             fl = repo.file(f)
             for fr in fl:
@@ -443,27 +449,20 @@
     """
     # i18n: "follow" is a keyword
     l = getargs(x, 0, 1, _("follow takes no arguments or a filename"))
-    p = repo['.'].rev()
+    c = repo['.']
     if l:
         x = getstring(l[0], _("follow expected a filename"))
-        if x in repo['.']:
-            s = set(ctx.rev() for ctx in repo['.'][x].ancestors())
+        if x in c:
+            cx = c[x]
+            s = set(ctx.rev() for ctx in cx.ancestors())
+            # include the revision responsible for the most recent version
+            s.add(cx.linkrev())
         else:
             return []
     else:
-        s = set(repo.changelog.ancestors(p))
-
-    s |= set([p])
-    return [r for r in subset if r in s]
+        s = set(repo.changelog.ancestors(c.rev()))
+        s.add(c.rev())
 
-def followfile(repo, subset, x):
-    """``follow()``
-    An alias for ``::.`` (ancestors of the working copy's first parent).
-    """
-    # i18n: "follow" is a keyword
-    getargs(x, 0, 0, _("follow takes no arguments"))
-    p = repo['.'].rev()
-    s = set(repo.changelog.ancestors(p)) | set([p])
     return [r for r in subset if r in s]
 
 def getall(repo, subset, x):
@@ -500,10 +499,13 @@
     """
     # i18n: "file" is a keyword
     pat = getstring(x, _("file requires a pattern"))
-    m = matchmod.match(repo.root, repo.getcwd(), [pat])
+    m = None
     s = []
     for r in subset:
-        for f in repo[r].files():
+        c = repo[r]
+        if not m or matchmod.patkind(pat) == 'set':
+            m = matchmod.match(repo.root, repo.getcwd(), [pat], ctx=c)
+        for f in c.files():
             if m(f):
                 s.append(r)
                 break
@@ -743,7 +745,7 @@
     return [r for r in subset if repo._phaserev[r] == phases.public]
 
 def remote(repo, subset, x):
-    """``remote([id], [path])``
+    """``remote([id [,path]])``
     Local revision that corresponds to the given identifier in a
     remote repository, if present. Here, the '.' identifier is a
     synonym for the current local branch.
@@ -751,7 +753,7 @@
 
     import hg # avoid start-up nasties
     # i18n: "remote" is a keyword
-    l = getargs(x, 0, 2, _("outgoing takes one or two arguments"))
+    l = getargs(x, 0, 2, _("remote takes one, two or no arguments"))
 
     q = '.'
     if len(l) > 0:
@@ -773,8 +775,8 @@
     n = other.lookup(q)
     if n in repo:
         r = repo[n].rev()
-    if r in subset:
-        return [r]
+        if r in subset:
+            return [r]
     return []
 
 def removes(repo, subset, x):
--- a/mercurial/scmutil.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/scmutil.py	Wed Feb 01 16:28:35 2012 -0600
@@ -10,6 +10,14 @@
 import match as matchmod
 import os, errno, re, stat, sys, glob
 
+def nochangesfound(ui, secretlist=None):
+    '''report no changes for push/pull'''
+    if secretlist:
+        ui.status(_("no changes found (ignored %d secret changesets)\n")
+                  % len(secretlist))
+    else:
+        ui.status(_("no changes found\n"))
+
 def checkfilename(f):
     '''Check that the filename f is an acceptable filename for a tracked file'''
     if '\r' in f or '\n' in f:
--- a/mercurial/sslutil.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/sslutil.py	Wed Feb 01 16:28:35 2012 -0600
@@ -122,8 +122,9 @@
         if hostfingerprint:
             if peerfingerprint.lower() != \
                     hostfingerprint.replace(':', '').lower():
-                raise util.Abort(_('invalid certificate for %s with '
-                                   'fingerprint %s') % (host, nicefingerprint))
+                raise util.Abort(_('certificate for %s has unexpected '
+                                   'fingerprint %s') % (host, nicefingerprint),
+                                 hint=_('check hostfingerprint configuration'))
             self.ui.debug('%s certificate matched fingerprint %s\n' %
                           (host, nicefingerprint))
         elif cacerts:
--- a/mercurial/subrepo.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/subrepo.py	Wed Feb 01 16:28:35 2012 -0600
@@ -528,7 +528,7 @@
         c = self._repo['']
         subs = c.substate # only repos that are committed
         for s in sorted(subs):
-            if not c.sub(s).push(opts):
+            if c.sub(s).push(opts) == 0:
                 return False
 
         dsturl = _abssource(self._repo, True)
--- a/mercurial/templatekw.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/mercurial/templatekw.py	Wed Feb 01 16:28:35 2012 -0600
@@ -276,11 +276,11 @@
     return ctx.hex()
 
 def showphase(repo, ctx, templ, **args):
-    """:rev: String. The changeset phase name."""
+    """:phase: String. The changeset phase name."""
     return ctx.phasestr()
 
 def showphaseidx(repo, ctx, templ, **args):
-    """:rev: Integer. The changeset phase index."""
+    """:phaseidx: Integer. The changeset phase index."""
     return ctx.phase()
 
 def showrev(repo, ctx, templ, **args):
--- a/tests/run-tests.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/run-tests.py	Wed Feb 01 16:28:35 2012 -0600
@@ -98,7 +98,7 @@
     'jobs': ('HGTEST_JOBS', 1),
     'timeout': ('HGTEST_TIMEOUT', 180),
     'port': ('HGTEST_PORT', 20059),
-    'shell': ('HGTEST_SHELL', '/bin/sh'),
+    'shell': ('HGTEST_SHELL', 'sh'),
 }
 
 def parselistfiles(files, listtype, warn=True):
@@ -200,6 +200,7 @@
         options.pure = True
 
     if options.with_hg:
+        options.with_hg = os.path.expanduser(options.with_hg)
         if not (os.path.isfile(options.with_hg) and
                 os.access(options.with_hg, os.X_OK)):
             parser.error('--with-hg must specify an executable hg script')
@@ -598,6 +599,8 @@
     f.close()
 
     script = []
+    if options.debug:
+        script.append('set -x\n')
     if os.getenv('MSYSTEM'):
         script.append('alias pwd="pwd -W"\n')
     for n, l in enumerate(t):
--- a/tests/test-bookmarks-pushpull.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-bookmarks-pushpull.t	Wed Feb 01 16:28:35 2012 -0600
@@ -44,6 +44,7 @@
   pulling from ../a
   no changes found
   importing bookmark X
+  [1]
   $ hg bookmark
      X                         0:4e3505fd9583
      Y                         0:4e3505fd9583
@@ -58,6 +59,7 @@
   searching for changes
   no changes found
   exporting bookmark W
+  [1]
   $ hg -R ../a bookmarks
      W                         -1:000000000000
      X                         0:4e3505fd9583
@@ -72,6 +74,7 @@
   searching for changes
   no changes found
   deleting remote bookmark W
+  [1]
 
 push/pull name that doesn't exist
 
@@ -101,6 +104,7 @@
   $ cd ../b
   $ hg up
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updating bookmark foobar
   $ echo c2 > f2
   $ hg ci -Am2
   adding f2
@@ -168,6 +172,7 @@
   searching for changes
   no changes found
   exporting bookmark Z
+  [1]
   $ hg book -d Z
   $ hg in -B http://localhost:$HGPORT/
   comparing with http://localhost:$HGPORT/
@@ -180,6 +185,7 @@
   no changes found
   divergent bookmark X stored as X@1
   importing bookmark Z
+  [1]
   $ hg clone http://localhost:$HGPORT/ cloned-bookmarks
   requesting all changes
   adding changesets
--- a/tests/test-bundle.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-bundle.t	Wed Feb 01 16:28:35 2012 -0600
@@ -39,6 +39,15 @@
   $ cd ..
   $ hg init empty
 
+Bundle and phase
+
+  $ hg -R test phase --force --secret 0
+  $ hg -R test bundle phase.hg empty
+  searching for changes
+  no changes found (ignored 9 secret changesets)
+  [1]
+  $ hg -R test phase --draft -r 'head()'
+
 Bundle --all
 
   $ hg -R test bundle --all all.hg
@@ -76,6 +85,7 @@
   pulling from ../full.hg
   searching for changes
   no changes found
+  [1]
 
 Pull full.hg into empty (using --cwd)
 
@@ -110,6 +120,7 @@
   pulling from full.hg
   searching for changes
   no changes found
+  [1]
 
 Pull full.hg into empty (using -R)
 
@@ -117,6 +128,7 @@
   pulling from full.hg
   searching for changes
   no changes found
+  [1]
 
 Rollback empty
 
--- a/tests/test-commandserver.py	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-commandserver.py	Wed Feb 01 16:28:35 2012 -0600
@@ -185,6 +185,12 @@
     os.system('hg tag -r 0 foo')
     runcommand(server, ['id', '-t', '-r', '0'])
 
+def setphase(server):
+    readchannel(server)
+    runcommand(server, ['phase', '-r', '.'])
+    os.system('hg phase -r . -p')
+    runcommand(server, ['phase', '-r', '.'])
+
 if __name__ == '__main__':
     os.system('hg init')
 
@@ -203,3 +209,4 @@
     check(outsidechanges)
     check(bookmarks)
     check(tagscache)
+    check(setphase)
--- a/tests/test-commandserver.py.out	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-commandserver.py.out	Wed Feb 01 16:28:35 2012 -0600
@@ -118,3 +118,10 @@
 
  runcommand id -t -r 0
 foo
+
+testing setphase:
+
+ runcommand phase -r .
+2: draft
+ runcommand phase -r .
+2: public
--- a/tests/test-convert.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-convert.t	Wed Feb 01 16:28:35 2012 -0600
@@ -293,6 +293,7 @@
   pulling from ../a
   searching for changes
   no changes found
+  [1]
   $ touch bogusfile
 
 should fail
--- a/tests/test-diff-unified.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-diff-unified.t	Wed Feb 01 16:28:35 2012 -0600
@@ -107,17 +107,6 @@
   > c3
   > c4
   > EOF
-  $ diff -U0 f1 f2
-  --- f1	* (glob)
-  +++ f2	* (glob)
-  @@ -0,0 +1 @@
-  +c1
-  @@ -1,0 +3 @@
-  +c3
-  @@ -3 +4,0 @@
-  -c5
-  [1]
-
   $ mv f2 f1
   $ hg diff -U0 --nodates
   diff -r 55d8ff78db23 f1
--- a/tests/test-globalopts.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-globalopts.t	Wed Feb 01 16:28:35 2012 -0600
@@ -347,6 +347,7 @@
    merge-tools   Merge Tools
    multirevs     Specifying Multiple Revisions
    patterns      File Name Patterns
+   phases        Working with Phases
    revisions     Specifying Single Revisions
    revsets       Specifying Revision Sets
    subrepos      Subrepositories
@@ -430,6 +431,7 @@
    merge-tools   Merge Tools
    multirevs     Specifying Multiple Revisions
    patterns      File Name Patterns
+   phases        Working with Phases
    revisions     Specifying Single Revisions
    revsets       Specifying Revision Sets
    subrepos      Subrepositories
--- a/tests/test-help.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-help.t	Wed Feb 01 16:28:35 2012 -0600
@@ -119,6 +119,7 @@
    merge-tools   Merge Tools
    multirevs     Specifying Multiple Revisions
    patterns      File Name Patterns
+   phases        Working with Phases
    revisions     Specifying Single Revisions
    revsets       Specifying Revision Sets
    subrepos      Subrepositories
@@ -196,6 +197,7 @@
    merge-tools   Merge Tools
    multirevs     Specifying Multiple Revisions
    patterns      File Name Patterns
+   phases        Working with Phases
    revisions     Specifying Single Revisions
    revsets       Specifying Revision Sets
    subrepos      Subrepositories
@@ -691,6 +693,7 @@
    merge-tools   Merge Tools
    multirevs     Specifying Multiple Revisions
    patterns      File Name Patterns
+   phases        Working with Phases
    revisions     Specifying Single Revisions
    revsets       Specifying Revision Sets
    subrepos      Subrepositories
--- a/tests/test-hook.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-hook.t	Wed Feb 01 16:28:35 2012 -0600
@@ -179,9 +179,9 @@
   pushing to ../a
   searching for changes
   no changes found
-  pushkey hook: HG_KEY=07f3376c1e655977439df2a814e3cc14b27abac2 HG_NAMESPACE=phases HG_NEW=0 HG_OLD=1 HG_RET=1 
   exporting bookmark foo
   pushkey hook: HG_KEY=foo HG_NAMESPACE=bookmarks HG_NEW=0000000000000000000000000000000000000000 HG_RET=1 
+  [1]
   $ cd ../a
 
 listkeys hook
@@ -193,9 +193,10 @@
   pulling from ../a
   listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'} 
   no changes found
-  listkeys hook: HG_NAMESPACE=phases HG_VALUES={'539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10': '1', 'publishing': 'True'} 
+  listkeys hook: HG_NAMESPACE=phases HG_VALUES={'cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b': '1', 'publishing': 'True'} 
   listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'} 
   importing bookmark bar
+  [1]
   $ cd ../a
 
 test that prepushkey can prevent incoming keys
@@ -207,7 +208,7 @@
   pushing to ../a
   searching for changes
   no changes found
-  listkeys hook: HG_NAMESPACE=phases HG_VALUES={'539e4b31b6dc99b3cfbaa6b53cbc1c1f9a1e3a10': '1', 'publishing': 'True'} 
+  listkeys hook: HG_NAMESPACE=phases HG_VALUES={'cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b': '1', 'publishing': 'True'} 
   listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'} 
   listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'} 
   exporting bookmark baz
--- a/tests/test-https.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-https.t	Wed Feb 01 16:28:35 2012 -0600
@@ -160,6 +160,7 @@
   pulling from https://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ mv copy-pull/.hg/hgrc.bu copy-pull/.hg/hgrc
 
 cacert configured globally, also testing expansion of environment
@@ -171,11 +172,13 @@
   pulling from https://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ P=`pwd` hg -R copy-pull pull --insecure
   warning: localhost certificate with fingerprint 91:4f:1a:ff:87:24:9c:09:b6:85:9b:88:b1:90:6d:30:75:64:91:ca not verified (check hostfingerprints or web.cacerts config setting)
   pulling from https://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
 
 cacert mismatch
 
@@ -188,6 +191,7 @@
   pulling from https://127.0.0.1:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ hg -R copy-pull pull --config web.cacerts=pub-other.pem
   abort: error: *:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed (glob)
   [255]
@@ -196,6 +200,7 @@
   pulling from https://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
 
 Test server cert which isn't valid yet
 
@@ -225,7 +230,8 @@
 
 - fails when cert doesn't match hostname (port is ignored)
   $ hg -R copy-pull id https://localhost:$HGPORT1/
-  abort: invalid certificate for localhost with fingerprint 28:ff:71:bf:65:31:14:23:ad:62:92:b4:0e:31:99:18:fc:83:e3:9b
+  abort: certificate for localhost has unexpected fingerprint 28:ff:71:bf:65:31:14:23:ad:62:92:b4:0e:31:99:18:fc:83:e3:9b
+  (check hostfingerprint configuration)
   [255]
 
 - ignores that certificate doesn't match hostname
@@ -254,6 +260,7 @@
   pulling from https://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
 
 Test https with cacert and fingerprint through proxy
 
@@ -261,10 +268,12 @@
   pulling from https://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ http_proxy=http://localhost:$HGPORT1/ hg -R copy-pull pull https://127.0.0.1:$HGPORT/
   pulling from https://127.0.0.1:$HGPORT/
   searching for changes
   no changes found
+  [1]
 
 Test https with cert problems through proxy
 
--- a/tests/test-incoming-outgoing.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-incoming-outgoing.t	Wed Feb 01 16:28:35 2012 -0600
@@ -399,6 +399,15 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     13
   
+test outgoing with secret changesets
+
+  $ hg -R test-dev phase --force --secret 9
+  $ hg -R test-dev outgoing test
+  comparing with test
+  searching for changes
+  no changes found (ignored 5 secret changesets)
+  [1]
+  $ hg -R test-dev phase --draft -r 'head()'
 
 limit to 3 changesets
 
--- a/tests/test-inherit-mode.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-inherit-mode.t	Wed Feb 01 16:28:35 2012 -0600
@@ -121,6 +121,7 @@
   00660 ../push/.hg/store/data/dir/bar.i
   00660 ../push/.hg/store/data/foo.i
   00660 ../push/.hg/store/fncache
+  00660 ../push/.hg/store/phaseroots
   00660 ../push/.hg/store/undo
   00660 ../push/.hg/store/undo.phaseroots
   00660 ../push/.hg/undo.bookmarks
--- a/tests/test-largefiles.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-largefiles.t	Wed Feb 01 16:28:35 2012 -0600
@@ -423,8 +423,6 @@
   adding manifests
   adding file changes
   added 1 changesets with 2 changes to 2 files (+1 heads)
-  getting changed largefiles
-  1 largefiles updated, 0 removed
   Invoking status precommit hook
   M sub/normal4
   M sub2/large6
@@ -463,8 +461,6 @@
   caching new largefiles
   0 largefiles cached
   $ hg rebase
-  getting changed largefiles
-  1 largefiles updated, 0 removed
   Invoking status precommit hook
   M sub/normal4
   M sub2/large6
@@ -568,6 +564,8 @@
   $ echo hack3 >> normal3
   $ echo hack4 >> sub/normal4
   $ echo hack4 >> sub/large4
+  $ rm sub2/large6
+  $ hg revert sub2/large6
   $ hg rm sub2/large6
   $ echo new >> sub2/large8
   $ hg add --large sub2/large8
@@ -730,8 +728,6 @@
   adding manifests
   adding file changes
   added 1 changesets with 2 changes to 2 files
-  getting changed largefiles
-  1 largefiles updated, 0 removed
   $ hg log --template '{rev}:{node|short}  {desc|firstline}\n'
   9:598410d3eb9a  modify normal file largefile in repo d
   8:a381d2c8c80e  modify normal file and largefile in repo b
@@ -768,7 +764,18 @@
   $ hg st
   A sub2/large6-renamed
   R sub2/large6
-  $ cd ../..
+  $ cd ..
+
+Test --normal flag
+
+  $ dd if=/dev/urandom bs=2k count=11k > new-largefile 2> /dev/null
+  $ hg add --normal --large new-largefile
+  abort: --normal cannot be used with --large
+  [255]
+  $ hg add --normal new-largefile
+  new-largefile: up to 69 MB of RAM may be required to manage this file
+  (use 'hg revert new-largefile' to cancel the pending addition)
+  $ cd ..
 
 vanilla clients not locked out from largefiles servers on vanilla repos
   $ mkdir r1
--- a/tests/test-mq-qclone-http.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-mq-qclone-http.t	Wed Feb 01 16:28:35 2012 -0600
@@ -43,7 +43,7 @@
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
+  added 2 changesets with 2 changes to 2 files
   requesting all changes
   adding changesets
   adding manifests
@@ -82,7 +82,7 @@
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
+  added 2 changesets with 2 changes to 2 files
   requesting all changes
   adding changesets
   adding manifests
@@ -121,7 +121,7 @@
   adding changesets
   adding manifests
   adding file changes
-  added 1 changesets with 1 changes to 1 files
+  added 2 changesets with 2 changes to 2 files
   requesting all changes
   adding changesets
   adding manifests
--- a/tests/test-mq-qimport-fail-cleanup.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-mq-qimport-fail-cleanup.t	Wed Feb 01 16:28:35 2012 -0600
@@ -34,6 +34,7 @@
   b.patch
 
   $ hg pull -q -r 0 . # update phase
+  [1]
   $ hg qimport -r 0
   abort: revision 0 is not mutable
   (see "hg help phases" for details)
--- a/tests/test-mq-qimport.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-mq-qimport.t	Wed Feb 01 16:28:35 2012 -0600
@@ -226,3 +226,19 @@
   $ cd ../repo
   $ hg qimport http://localhost:$HGPORT/raw-rev/0///
   adding 0 to series file
+
+check qimport phase:
+
+  $ hg -q qpush
+  now at: 0
+  $ hg phase qparent
+  1: draft
+  $ hg qimport -r qparent
+  $ hg phase qbase
+  1: draft
+  $ hg qfinish qbase
+  $ echo '[mq]' >> $HGRCPATH
+  $ echo 'secret=true' >> $HGRCPATH
+  $ hg qimport -r qparent
+  $ hg phase qbase
+  1: secret
--- a/tests/test-mq-qrefresh.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-mq-qrefresh.t	Wed Feb 01 16:28:35 2012 -0600
@@ -523,3 +523,23 @@
   diff --git a/a b/a
   new file mode 100644
   $ cd ..
+
+Refresh with phase data:
+
+
+
+  $ cd repo
+  $ echo 'babar' >> a
+  $ hg qnew -m 'update a' p2.diff
+  $ hg phase p2.diff
+  2: draft
+  $ echo 'beber' >> a
+  $ hg qref
+  $ hg phase p2.diff
+  2: draft
+  $ hg phase --force --secret p2.diff
+  $ echo 'bibir' >> a
+  $ hg qref
+  $ hg phase p2.diff
+  2: secret
+
--- a/tests/test-mq-safety.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-mq-safety.t	Wed Feb 01 16:28:35 2012 -0600
@@ -1,5 +1,6 @@
   $ echo '[extensions]' >> $HGRCPATH
-  $ echo 'mq =' >> $HGRCPATH
+  $ echo 'hgext.mq =' >> $HGRCPATH
+  $ echo 'hgext.graphlog =' >> $HGRCPATH
 
   $ hg init repo
   $ cd repo
@@ -17,6 +18,35 @@
   $ echo bar >> foo
   $ hg qrefresh -m 'append bar'
 
+Try to operate on public mq changeset
+
+  $ hg qpop
+  popping bar
+  now at: foo
+  $ hg phase --public qbase
+  $ echo babar >> foo
+  $ hg qref
+  abort: cannot refresh immutable revision
+  (see "hg help phases" for details)
+  [255]
+  $ hg revert -a
+  reverting foo
+  $ hg qpop
+  abort: popping would remove an immutable revision
+  (see "hg help phases" for details)
+  [255]
+  $ hg qfold bar
+  abort: cannot refresh immutable revision
+  (see "hg help phases" for details)
+  [255]
+  $ hg revert -a
+  reverting foo
+
+restore state for remaining test
+
+  $ hg qpush
+  applying bar
+  now at: bar
 
 try to commit on top of a patch
 
@@ -144,7 +174,7 @@
 
 Pushing applied patch with --rev without --force
 
-  $ hg push -r default ../forcepush2
+  $ hg push -r . ../forcepush2
   pushing to ../forcepush2
   abort: source has mq patches applied
   [255]
@@ -168,11 +198,13 @@
 
 Pushing applied patch with --force
 
+  $ hg phase --force --secret 'mq()'
   $ hg push --force -r default ../forcepush2
   pushing to ../forcepush2
   searching for changes
-  no changes found
-  $ hg phase -d 'mq()'
+  no changes found (ignored 1 secret changesets)
+  [1]
+  $ hg phase --draft 'mq()'
   $ hg push --force -r default ../forcepush2
   pushing to ../forcepush2
   searching for changes
--- a/tests/test-mq.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-mq.t	Wed Feb 01 16:28:35 2012 -0600
@@ -50,6 +50,12 @@
   will override the [diff] section and always generate git or regular patches,
   possibly losing data in the second case.
   
+  It may be desirable for mq changesets to be kept in the secret phase (see "hg
+  help phases"), which can be enabled with the following setting:
+  
+    [mq]
+    secret = True
+  
   You will by default be managing a patch queue named "patches". You can create
   other, independent patch queues with the "hg qqueue" command.
   
@@ -149,11 +155,11 @@
   $ checkundo qnew
   $ echo foo > foo
   $ hg phase -r qbase
-  0: secret
+  0: draft
   $ hg add foo
   $ hg qrefresh
   $ hg phase -r qbase
-  0: secret
+  0: draft
   $ hg qnew B
   $ echo >> foo
   $ hg qrefresh
@@ -302,7 +308,7 @@
   applying test.patch
   now at: test.patch
   $ hg phase -r qbase
-  2: secret
+  2: draft
   $ hg tags > /dev/null
 
 .hg/cache/tags (post qpush):
@@ -393,7 +399,7 @@
   abort: cannot commit over an applied mq patch
   [255]
 
-push should fail
+push should fail if draft
 
   $ hg push ../../k
   pushing to ../../k
@@ -1213,11 +1219,6 @@
 repo with patches applied
 
   $ hg qclone qclonesource qclonedest
-  requesting all changes
-  adding changesets
-  adding manifests
-  adding file changes
-  added 1 changesets with 1 changes to 1 files
   updating to branch default
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -1447,4 +1448,38 @@
   applying modify-file
   now at: modify-file
 
-  $ cd ..
+Proper phase default with mq:
+
+1. mq.secret=false
+
+  $ rm .hg/store/phaseroots
+  $ hg phase 'qparent::'
+  0: draft
+  1: draft
+  2: draft
+  $ echo '[mq]' >> $HGRCPATH
+  $ echo 'secret=true' >> $HGRCPATH
+  $ rm -f .hg/store/phaseroots
+  $ hg phase 'qparent::'
+  0: secret
+  1: secret
+  2: secret
+
+Test that qfinish change phase when mq.secret=true
+
+  $ hg qfinish qbase
+  patch add-file1 finalized without changeset message
+  $ hg phase 'all()'
+  0: draft
+  1: secret
+  2: secret
+
+Test that qfinish preserve phase when mq.secret=false
+
+  $ sed -i'' $HGRCPATH -e 's/secret=true/secret=false/'
+  $ hg qfinish qbase
+  patch add-file2 finalized without changeset message
+  $ hg phase 'all()'
+  0: draft
+  1: secret
+  2: secret
--- a/tests/test-pending.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-pending.t	Wed Feb 01 16:28:35 2012 -0600
@@ -102,6 +102,7 @@
   rollback completed
   abort: pretxnchangegroup hook failed
   pull 0000000000000000000000000000000000000000
+  [1]
 
 test external hook
 
@@ -117,3 +118,4 @@
   rollback completed
   abort: pretxnchangegroup hook exited with status 1
   pull 0000000000000000000000000000000000000000
+  [1]
--- a/tests/test-phases-exchange.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-phases-exchange.t	Wed Feb 01 16:28:35 2012 -0600
@@ -2,7 +2,7 @@
   > [extensions]
   > graphlog=
   > EOF
-  $ alias hgph='hg log -G --template "{rev} {phase} {desc} - {node|short}\n"'
+  $ hgph() { hg log -G --template "{rev} {phase} {desc} - {node|short}\n" $*; }
 
   $ mkcommit() {
   >    echo "$1" > "$1"
@@ -98,6 +98,7 @@
   pushing to ../beta
   searching for changes
   no changes found
+  [1]
   $ hgph
   @  3 public a-D - b555f63b6063
   |
@@ -135,6 +136,7 @@
   pulling from ../alpha
   searching for changes
   no changes found
+  [1]
   $ hgph
   o  4 public a-D - b555f63b6063
   |
@@ -238,10 +240,10 @@
   adding file changes
   added 1 changesets with 1 changes to 1 files
   (run 'hg update' to get a working copy)
-  $ hgph
+  $ hgph # f54f1bb90ff3 stay draft, not ancestor of -r
   o  4 public a-D - b555f63b6063
   |
-  | o  3 public b-A - f54f1bb90ff3
+  | o  3 draft b-A - f54f1bb90ff3
   | |
   o |  2 public a-C - 54acac6f23ab
   |/
@@ -262,7 +264,7 @@
   |
   | o  4 public a-D - b555f63b6063
   | |
-  o |  3 public b-A - f54f1bb90ff3
+  o |  3 draft b-A - f54f1bb90ff3
   | |
   | o  2 public a-C - 54acac6f23ab
   |/
@@ -288,7 +290,7 @@
   | |
   | o  3 public a-C - 54acac6f23ab
   | |
-  o |  2 public b-A - f54f1bb90ff3
+  o |  2 draft b-A - f54f1bb90ff3
   |/
   o  1 public a-B - 548a3d25dbf0
   |
@@ -342,6 +344,7 @@
   pulling from ../alpha
   searching for changes
   no changes found
+  [1]
   $ hgph
   @  6 public n-B - 145e75495359
   |
@@ -372,6 +375,7 @@
   pushing to ../alpha
   searching for changes
   no changes found
+  [1]
   $ cd ..
   $ cd alpha
   $ hgph
@@ -497,20 +501,21 @@
   
 
   $ cd ../mu
-  $ hgph # d6bcb4f74035 and 145e75495359 changed because common is too smart
+  $ hgph # again f54f1bb90ff3, d6bcb4f74035 and 145e75495359 stay draft,
+  >      # not ancestor of -r
   o  8 draft a-F - b740e3e5c05d
   |
   o  7 draft a-E - e9f537e46dea
   |
-  | o  6 public n-B - 145e75495359
+  | o  6 draft n-B - 145e75495359
   | |
-  | o  5 public n-A - d6bcb4f74035
+  | o  5 draft n-A - d6bcb4f74035
   | |
   o |  4 public a-D - b555f63b6063
   | |
   o |  3 public a-C - 54acac6f23ab
   | |
-  | o  2 public b-A - f54f1bb90ff3
+  | o  2 draft b-A - f54f1bb90ff3
   |/
   o  1 public a-B - 548a3d25dbf0
   |
@@ -526,20 +531,21 @@
   adding manifests
   adding file changes
   added 2 changesets with 2 changes to 2 files
-  $ hgph # again d6bcb4f74035 and 145e75495359 changed because common is too smart
+  $ hgph # again f54f1bb90ff3, d6bcb4f74035 and 145e75495359 stay draft,
+  >      # not ancestor of -r
   o  8 public a-F - b740e3e5c05d
   |
   o  7 public a-E - e9f537e46dea
   |
-  | o  6 public n-B - 145e75495359
+  | o  6 draft n-B - 145e75495359
   | |
-  | o  5 public n-A - d6bcb4f74035
+  | o  5 draft n-A - d6bcb4f74035
   | |
   o |  4 public a-D - b555f63b6063
   | |
   o |  3 public a-C - 54acac6f23ab
   | |
-  | o  2 public b-A - f54f1bb90ff3
+  | o  2 draft b-A - f54f1bb90ff3
   |/
   o  1 public a-B - 548a3d25dbf0
   |
@@ -553,6 +559,7 @@
   pushing to ../alpha
   searching for changes
   no changes found
+  [1]
   $ hgph
   o  6 public a-F - b740e3e5c05d
   |
@@ -569,7 +576,7 @@
   o  0 public a-A - 054250a37db4
   
   $ cd ../alpha
-  $ hgph # e9f537e46dea and b740e3e5c05d should have been sync to 0
+  $ hgph
   @  10 draft a-H - 967b449fbc94
   |
   | o  9 draft a-G - 3e27b6f1eee1
@@ -627,14 +634,14 @@
   
   $ cd ../mu
   $ hgph # d6bcb4f74035 should have changed phase
-  >      # again d6bcb4f74035 and 145e75495359 changed because common was too smart
+  >      # 145e75495359 is still draft. not ancestor of -r
   o  9 draft a-H - 967b449fbc94
   |
   | o  8 public a-F - b740e3e5c05d
   | |
   | o  7 public a-E - e9f537e46dea
   | |
-  +---o  6 public n-B - 145e75495359
+  +---o  6 draft n-B - 145e75495359
   | |
   o |  5 public n-A - d6bcb4f74035
   | |
@@ -657,6 +664,7 @@
   pushing to ../alpha
   searching for changes
   no changes found
+  [1]
   $ hgph
   o  9 public a-H - 967b449fbc94
   |
@@ -769,6 +777,7 @@
   pulling from ../mu
   searching for changes
   no changes found
+  [1]
   $ hgph
   @  11 draft A-secret - 435b5d83910c
   |
@@ -921,6 +930,7 @@
   pulling from http://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ hg phase f54f1bb90ff3
   2: draft
 
@@ -930,6 +940,7 @@
   pushing to http://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ hg phase f54f1bb90ff3
   2: draft
 
--- a/tests/test-phases.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-phases.t	Wed Feb 01 16:28:35 2012 -0600
@@ -1,4 +1,4 @@
-  $ alias hglog='hg log --template "{rev} {phaseidx} {desc}\n"'
+  $ hglog() { hg log --template "{rev} {phaseidx} {desc}\n" $*; }
   $ mkcommit() {
   >    echo "$1" > "$1"
   >    hg add "$1"
@@ -42,7 +42,7 @@
 
 Test creating changeset as secret
 
-  $ mkcommit E --config phases.new-commit=2
+  $ mkcommit E --config phases.new-commit='secret'
   $ hglog
   4 2 E
   3 1 D
--- a/tests/test-pull-r.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-pull-r.t	Wed Feb 01 16:28:35 2012 -0600
@@ -100,4 +100,5 @@
 This used to abort: received changelog group is empty:
 
   $ hg pull -qr 1 ../repo
+  [1]
 
--- a/tests/test-pull.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-pull.t	Wed Feb 01 16:28:35 2012 -0600
@@ -48,6 +48,7 @@
   pulling from http://foo@localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
 
   $ hg rollback --dry-run --verbose
   repository tip rolled back to revision -1 (undo pull: http://foo:***@localhost:$HGPORT/)
@@ -77,6 +78,7 @@
   [255]
 
   $ hg pull -q file:../test
+  [1]
 
 It's tricky to make file:// URLs working on every platform with
 regular shell commands.
@@ -88,3 +90,4 @@
 
   $ URL=`python -c "import os; print 'file://localhost' + ('/' + os.getcwd().replace(os.sep, '/')).replace('//', '/') + '/../test'"`
   $ hg pull -q "$URL"
+  [1]
--- a/tests/test-push-warn.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-push-warn.t	Wed Feb 01 16:28:35 2012 -0600
@@ -116,6 +116,7 @@
   pushing to ../c
   searching for changes
   no changes found
+  [1]
 
   $ hg push -r 3 ../c
   pushing to ../c
--- a/tests/test-rebase-collapse.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-rebase-collapse.t	Wed Feb 01 16:28:35 2012 -0600
@@ -490,3 +490,54 @@
   abort: cannot collapse multiple named branches
   [255]
 
+  $ repeatchange() {
+  >   hg checkout $1
+  >   hg cp d z
+  >   echo blah >> z
+  >   hg commit -Am "$2" --user "$3"
+  > }
+  $ repeatchange 3 "E" "user1"
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ repeatchange 3 "E" "user2"
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  created new head
+  $ hg tglog
+  @  5: 'E'
+  |
+  | o  4: 'E'
+  |/
+  o  3: 'D'
+  |
+  | o  2: 'C' 2
+  | |
+  | o  1: 'B' 1
+  |/
+  o  0: 'A'
+  
+  $ hg rebase -s 5 -d 4
+  saved backup bundle to $TESTTMP/e/.hg/strip-backup/*-backup.hg (glob)
+  $ hg tglog
+  @  4: 'E'
+  |
+  o  3: 'D'
+  |
+  | o  2: 'C' 2
+  | |
+  | o  1: 'B' 1
+  |/
+  o  0: 'A'
+  
+  $ hg export tip
+  # HG changeset patch
+  # User user1
+  # Date 0 0
+  # Node ID f338eb3c2c7cc5b5915676a2376ba7ac558c5213
+  # Parent  41acb9dca9eb976e84cd21fcb756b4afa5a35c09
+  E
+  
+  diff -r 41acb9dca9eb -r f338eb3c2c7c z
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/z	Thu Jan 01 00:00:00 1970 +0000
+  @@ -0,0 +1,2 @@
+  +d
+  +blah
--- a/tests/test-rebase-scenario-global.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-rebase-scenario-global.t	Wed Feb 01 16:28:35 2012 -0600
@@ -277,7 +277,7 @@
 
   $ hg pull --config phases.publish=True -q -r 6 . # update phase of 6
   $ hg rebase -d 5 -b 6
-  abort: Can't rebase immutable changeset e1c4361dd923
+  abort: can't rebase immutable changeset e1c4361dd923
   (see hg help phases for details)
   [255]
 
--- a/tests/test-revset.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-revset.t	Wed Feb 01 16:28:35 2012 -0600
@@ -476,6 +476,24 @@
   $ log 'min(1 or 2) and not 1'
   $ log 'last(1 or 2, 1) and not 2'
 
+tests for 'remote()' predicate:
+#.  (csets in remote) (id)            (remote)
+1.  less than local   current branch  "default"
+2.  same with local   specified       "default"
+3.  more than local   specified       specified
+
+  $ hg clone --quiet -U . ../remote3
+  $ cd ../remote3
+  $ hg update -q 7
+  $ echo r > r
+  $ hg ci -Aqm 10
+  $ log 'remote()'
+  7
+  $ log 'remote("a-b-c-")'
+  2
+  $ cd ../repo
+  $ log 'remote(".a.b.c.", "../remote3")'
+
   $ cd ..
 
 test author/desc/keyword in problematic encoding
--- a/tests/test-run-tests.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-run-tests.t	Wed Feb 01 16:28:35 2012 -0600
@@ -18,7 +18,7 @@
 
 Return codes before inline python:
 
-  $ false
+  $ sh -c 'exit 1'
   [1]
 
 Doctest commands:
--- a/tests/test-ssh.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-ssh.t	Wed Feb 01 16:28:35 2012 -0600
@@ -80,6 +80,7 @@
   pulling from ssh://user@dummy/remote
   searching for changes
   no changes found
+  [1]
 
 local change
 
@@ -177,6 +178,7 @@
   searching for changes
   no changes found
   exporting bookmark foo
+  [1]
   $ hg debugpushkey --config ui.ssh="python $TESTDIR/dummyssh" ssh://user@dummy/remote bookmarks
   foo	1160648e36cec0054048a7edc4110c6f84fde594
   $ hg book -f foo
@@ -185,6 +187,7 @@
   searching for changes
   no changes found
   updating bookmark foo
+  [1]
   $ hg book -d foo
   $ hg in -B
   comparing with ssh://user@dummy/remote
@@ -196,12 +199,14 @@
   no changes found
   updating bookmark foo
   importing bookmark foo
+  [1]
   $ hg book -d foo
   $ hg push -B foo
   pushing to ssh://user@dummy/remote
   searching for changes
   no changes found
   deleting remote bookmark foo
+  [1]
 
 a bad, evil hook that prints to stdout
 
--- a/tests/test-subrepo-relative-path.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-subrepo-relative-path.t	Wed Feb 01 16:28:35 2012 -0600
@@ -96,6 +96,7 @@
   no changes found
   searching for changes
   no changes found
+  [1]
 
   $ cat dummylog
   Got arguments 1:user@dummy 2:hg -R cloned serve --stdio
--- a/tests/test-subrepo.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-subrepo.t	Wed Feb 01 16:28:35 2012 -0600
@@ -580,6 +580,7 @@
   cloning subrepo s from $TESTTMP/sub/repo/s (glob)
   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg -q -R repo2 pull -u
+  [1]
   $ echo 1 > repo2/s/a
   $ hg -R repo2/s ci -m2
   $ hg -q -R repo2/s push
@@ -638,6 +639,7 @@
   pulling from issue1852a
   searching for changes
   no changes found
+  [1]
 
 Try the same, but with pull -u
 
--- a/tests/test-treediscovery-legacy.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-treediscovery-legacy.t	Wed Feb 01 16:28:35 2012 -0600
@@ -48,9 +48,11 @@
   $ hg pull -R empty1 $remote
   pulling from http://localhost:$HGPORT/
   no changes found
+  [1]
   $ hg push -R empty1 $remote
   pushing to http://localhost:$HGPORT/
   no changes found
+  [1]
   $ tstop
 
 Base repo:
@@ -106,10 +108,12 @@
   pulling from http://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ hg push $remote
   pushing to http://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ cd ..
 
 Local is empty:
@@ -140,6 +144,7 @@
   $ hg push $remote
   pushing to http://localhost:$HGPORT/
   no changes found
+  [1]
   $ hg pull $remote
   pulling from http://localhost:$HGPORT/
   requesting all changes
@@ -184,6 +189,7 @@
   pushing to http://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ hg pull $remote
   pulling from http://localhost:$HGPORT/
   searching for changes
@@ -227,6 +233,7 @@
   pulling from http://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ hg push $remote
   pushing to http://localhost:$HGPORT/
   searching for changes
@@ -271,6 +278,7 @@
   pulling from http://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ hg push $remote
   pushing to http://localhost:$HGPORT/
   searching for changes
--- a/tests/test-treediscovery.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-treediscovery.t	Wed Feb 01 16:28:35 2012 -0600
@@ -42,9 +42,11 @@
   $ hg pull -R empty1 $remote
   pulling from http://localhost:$HGPORT/
   no changes found
+  [1]
   $ hg push -R empty1 $remote
   pushing to http://localhost:$HGPORT/
   no changes found
+  [1]
   $ tstop
 
 Base repo:
@@ -100,10 +102,12 @@
   pulling from http://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ hg push $remote
   pushing to http://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ cd ..
 
 Local is empty:
@@ -130,6 +134,7 @@
   $ hg push $remote
   pushing to http://localhost:$HGPORT/
   no changes found
+  [1]
   $ hg pull $remote
   pulling from http://localhost:$HGPORT/
   requesting all changes
@@ -172,6 +177,7 @@
   pushing to http://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ hg pull $remote
   pulling from http://localhost:$HGPORT/
   searching for changes
@@ -215,6 +221,7 @@
   pulling from http://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ hg push $remote
   pushing to http://localhost:$HGPORT/
   searching for changes
@@ -259,6 +266,7 @@
   pulling from http://localhost:$HGPORT/
   searching for changes
   no changes found
+  [1]
   $ hg push $remote
   pushing to http://localhost:$HGPORT/
   searching for changes
--- a/tests/test-url-rev.t	Sat Jan 21 15:17:39 2012 +0200
+++ b/tests/test-url-rev.t	Wed Feb 01 16:28:35 2012 -0600
@@ -141,6 +141,7 @@
 No new revs, no update:
 
   $ hg pull -qu
+  [1]
 
   $ hg parents -q
   0:1f0dee641bb7