changeset 28286:c7f89ad87bae

merge with stable
author Matt Mackall <mpm@selenic.com>
date Mon, 29 Feb 2016 17:52:17 -0600
parents 0fe00bdb2f4f (current diff) 5f95d6a70e9b (diff)
children 3eb7faf6d958
files mercurial/cmdutil.py mercurial/demandimport.py tests/test-obsolete.t
diffstat 6 files changed, 200 insertions(+), 65 deletions(-) [+]
line wrap: on
line diff
--- a/i18n/ja.po	Sat Feb 27 21:29:42 2016 -0800
+++ b/i18n/ja.po	Mon Feb 29 17:52:17 2016 -0600
@@ -162,8 +162,8 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2016-02-01 22:30+0900\n"
-"PO-Revision-Date: 2016-02-01 22:50+0900\n"
+"POT-Creation-Date: 2016-02-29 21:02+0900\n"
+"PO-Revision-Date: 2016-02-29 22:32+0900\n"
 "Last-Translator: Japanese translation team <mercurial-ja@googlegroups.com>\n"
 "Language-Team: Japanese\n"
 "Language: ja\n"
@@ -1493,15 +1493,13 @@
 "    replace os.environ completely"
 msgstr ""
 
-#, fuzzy
 msgid ""
 "'SIGHUP' signal\n"
 "    reload configuration files\n"
-msgstr "    (非推奨: 設定ファイル経由で指定してください)"
-
-#, fuzzy
+msgstr ""
+
 msgid "invalid response"
-msgstr "引数が不正です"
+msgstr ""
 
 #, python-format
 msgid "abort: %s\n"
@@ -5042,12 +5040,12 @@
 msgid ""
 "By default each edited revision needs to be present in histedit commands.\n"
 "To remove revision you need to use ``drop`` operation. You can configure\n"
-"the drop to be implicit for missing commits by adding:"
+"the drop to be implicit for missing commits by adding::"
 msgstr ""
 "全ての改変対象リビジョンに対して、 改変指示の記述が必要になります。\n"
 "特定のリビジョンを破棄する場合は ``drop`` 操作を指定してください。\n"
 "以下の記述を追加することで、 改変指示のないリビジョンに対して、\n"
-"``drop`` 操作を実施させることができます:"
+"``drop`` 操作を実施させることができます::"
 
 msgid ""
 "  [histedit]\n"
@@ -5186,11 +5184,11 @@
 msgid ""
 "    This command lets you edit a linear series of changesets (up to\n"
 "    and including the working directory, which should be clean).\n"
-"    You can::"
+"    You can:"
 msgstr ""
 "    本コマンドは、 作業領域の親と、 その直系の祖先の履歴改変を行います\n"
 "    (作業領域中の変更は、 事前にコミット/破棄してください)。\n"
-"    利用可能な改変操作機能は以下の通りです::"
+"    利用可能な改変操作機能は以下の通りです:"
 
 msgid "    - `pick` to [re]order a changeset"
 msgstr "    - `pick` でリビジョンを採用"
@@ -5210,18 +5208,18 @@
 msgid "    - `edit` to edit this changeset"
 msgstr "    - `edit` で変更内容を再編集"
 
-msgid "    There are a number of ways to select the root changset::"
-msgstr "    改変対象リビジョンの指定には、 以下の様な方法があります::"
+msgid "    There are a number of ways to select the root changeset:"
+msgstr "    改変対象リビジョンの指定には、 以下の様な方法があります:"
 
 msgid "    - Specify ANCESTOR directly"
 msgstr "    - 引数で改変対象の祖先 (ANCESTOR) を直接指定"
 
 msgid ""
 "    - Use --outgoing -- it will be the first linear changeset not\n"
-"      included in destination. (See :hg:\"help default-push\")"
+"      included in destination. (See :hg:`help config.default-push`)"
 msgstr ""
 "    - ``--outgoing`` 指定時は、 連携先への反映候補リビジョンのうち、\n"
-"      作業領域の親の直系の祖先を改変 (:hg:`help default-push` 参照)"
+"      作業領域の親の直系の祖先を改変 (:hg:`help config.default-push` 参照)"
 
 msgid ""
 "    - Otherwise, the value from the \"histedit.defaultrev\" config option\n"
@@ -5264,9 +5262,11 @@
 "         - A number of changes have been made.\n"
 "           Revision 3 is no longer needed."
 msgstr ""
+"         - 複数のリビジョンがコミット済みの状態。\n"
+"           リビジョン 3 が不要になったケース。"
 
 msgid "           Start history editing from revision 3::"
-msgstr ""
+msgstr "           リビジョン 3 以降の履歴の編集を開始してください::"
 
 msgid "             hg histedit -r 3"
 msgstr "             hg histedit -r 3"
@@ -5275,6 +5275,8 @@
 "           An editor opens, containing the list of revisions,\n"
 "           with specific actions specified::"
 msgstr ""
+"           以下のようなリビジョンと改変操作の一覧と共に、\n"
+"           エディタが起動されます::"
 
 msgid ""
 "             pick 5339bf82f0ca 3 Zworgle the foobar\n"
@@ -5289,12 +5291,15 @@
 "           Additional information about the possible actions\n"
 "           to take appears below the list of revisions."
 msgstr ""
+"           リビジョン一覧に続けて、 指定可能な改変操作一覧も表示されます。"
 
 msgid ""
 "           To remove revision 3 from the history,\n"
 "           its action (at the beginning of the relevant line)\n"
 "           is changed to 'drop'::"
 msgstr ""
+"           履歴からリビジョン 3 を取り除くには、 \n"
+"           リビジョン 3 の対応行の冒頭の改変操作を 'drop' に変更します::"
 
 msgid ""
 "             drop 5339bf82f0ca 3 Zworgle the foobar\n"
@@ -5309,9 +5314,11 @@
 "         - A number of changes have been made.\n"
 "           Revision 2 and 4 need to be swapped."
 msgstr ""
+"         - 複数のリビジョンがコミット済みの状態。\n"
+"           リビジョン 2 と 4 の順序を入れ替えたいケース。"
 
 msgid "           Start history editing from revision 2::"
-msgstr ""
+msgstr "           リビジョン 2 以降の履歴の編集を開始してください::"
 
 msgid "             hg histedit -r 2"
 msgstr "             hg histedit -r 2"
@@ -5329,6 +5336,8 @@
 "           To swap revision 2 and 4, its lines are swapped\n"
 "           in the editor::"
 msgstr ""
+"           エディタ上での対応行の入れ替えで、 リビジョン 2 と 4 の、\n"
+"           順序を入れ替えできます::"
 
 msgid ""
 "             pick 8ef592ce7cc4 4 Bedazzle the zerlog\n"
@@ -5436,7 +5445,7 @@
 msgstr "改変対象以外への操作 %s \"%s\" が検出されました"
 
 msgid "only use listed changesets"
-msgstr ""
+msgstr "予め列挙されたリビジョンへの操作のみを指定してください"
 
 #, python-format
 msgid "%s \"%s\" changeset was not an edited list candidate"
@@ -8011,11 +8020,8 @@
 msgid "mq:     (empty queue)\n"
 msgstr "mq:           (キューは空です)\n"
 
-#, fuzzy
 msgid "Changesets managed by MQ."
-msgstr ""
-"``mq()``\n"
-"    MQ 管理下にあるリビジョン"
+msgstr "MQ 管理下にあるリビジョン。"
 
 msgid "mq takes no arguments"
 msgstr "mq には引数が指定できません"
@@ -9116,30 +9122,31 @@
 "    (移動先リビジョン自身は改変されませんが、 移動先の子孫として、\n"
 "    新規リビジョンが追加されます)"
 
-msgid "    Here are the ways to select changesets::"
-msgstr "    移動対象リビジョンの指定には、 以下の様な方法があります::"
+msgid "    Here are the ways to select changesets:"
+msgstr "    移動対象リビジョンの指定には、 以下の様な方法があります:"
 
 msgid "      1. Explicitly select them using ``--rev``."
 msgstr "      1. ``--rev`` は、 移動対象の直接指定"
 
 msgid ""
 "      2. Use ``--source`` to select a root changeset and include all of its\n"
-"      descendants."
+"         descendants."
 msgstr "      2. ``--source`` は、 指定リビジョン、 およびその子孫の移動"
 
 msgid ""
 "      3. Use ``--base`` to select a changeset; rebase will find ancestors\n"
-"      and their descendants which are not also ancestors of the destination."
+"         and their descendants which are not also ancestors of the "
+"destination."
 msgstr ""
 "      3. ``--base`` は、 移動「先」と指定リビジョンとの共通祖先、\n"
-"      およびその子孫の移動 (但し、 移動「先」の祖先は含まず)"
+"         およびその子孫の移動 (但し、 移動「先」の祖先は含まず)"
 
 msgid ""
 "      4. If you do not specify any of ``--rev``, ``source``, or ``--base``,\n"
-"      rebase will use ``--base .`` as above."
+"         rebase will use ``--base .`` as above."
 msgstr ""
 "      4. 上記 ``--rev``, ``source``, ``--base`` の指定がない場合、\n"
-"      ``--base .`` 相当の指定で移動を実施"
+"         ``--base .`` 相当の指定で移動を実施"
 
 msgid ""
 "    Rebase will destroy original changesets unless you use ``--keep``.\n"
@@ -10521,11 +10528,8 @@
 msgid "outstanding local changes"
 msgstr "変更が未コミットです"
 
-#, fuzzy
 msgid "Transplanted changesets in set, or all transplanted changesets."
-msgstr ""
-"``transplanted([set])``\n"
-"    set 中の移植先リビジョン、 または全移植先リビジョン。"
+msgstr "transplant による全ての (又は set 中の) 移植先リビジョン。"
 
 msgid ""
 ":transplanted: String. The node identifier of the transplanted\n"
@@ -12034,6 +12038,9 @@
 msgid "cannot use --commit with --no-commit"
 msgstr "--commit と --no-commit は併用できません"
 
+msgid "cannot use --merge with --no-commit"
+msgstr "--merge と --no-commit は併用できません"
+
 msgid "please specify just one revision"
 msgstr "リビジョン指定は1つだけです"
 
@@ -18300,6 +18307,10 @@
 "    バイナリファイルは除外されます。 複数形式が混在するファイルは、\n"
 "    複数の形式指定に合致します。"
 
+#. i18n: "eol" is a keyword
+msgid "eol requires a style name"
+msgstr "eol には改行形式指定が必要です"
+
 msgid ""
 "``copied()``\n"
 "    File that is recorded as being copied."
@@ -18715,11 +18726,11 @@
 msgid "Global configuration like the username setting is typically put into:"
 msgstr "「ユーザ名」のような、 広範囲で有効な設定は、 以下で記述します:"
 
-msgid "  ``%USERPROFILE%\\mercurial.ini``"
-msgstr "  ``%USERPROFILE%\\mercurial.ini``"
-
-msgid "  ``$HOME/.hgrc``"
-msgstr "  ``$HOME/.hgrc``"
+msgid "  - ``%USERPROFILE%\\mercurial.ini`` (on Windows)"
+msgstr "  - ``%USERPROFILE%\\mercurial.ini`` (on Windows)"
+
+msgid "  - ``$HOME/.hgrc`` (on Unix, Plan9)"
+msgstr "  - ``$HOME/.hgrc`` (on Unix, Plan9)"
 
 msgid ""
 "The names of these files depend on the system on which Mercurial is\n"
@@ -19183,8 +19194,8 @@
 "``hg echo foo`` 実行は、 端末に ``foo`` を表示します。\n"
 "より実践的な例としては::"
 
-msgid "   purge = !$HG status --no-status --unknown -0 | xargs -0 rm"
-msgstr "   purge = !$HG status --no-status --unknown -0 | xargs -0 rm"
+msgid "   purge = !$HG status --no-status --unknown -0 re: | xargs -0 rm"
+msgstr "   purge = !$HG status --no-status --unknown -0 re: | xargs -0 rm"
 
 msgid ""
 "which will make ``hg purge`` delete all unknown files in the\n"
@@ -19306,12 +19317,12 @@
 "``<名前>`` は引数群を1つの認証情報エントリに束ねる働きをします。 例えば::"
 
 msgid ""
-"    foo.prefix = hg.intevation.org/mercurial\n"
+"    foo.prefix = hg.intevation.de/mercurial\n"
 "    foo.username = foo\n"
 "    foo.password = bar\n"
 "    foo.schemes = http https"
 msgstr ""
-"    foo.prefix = hg.intevation.org/mercurial\n"
+"    foo.prefix = hg.intevation.de/mercurial\n"
 "    foo.username = foo\n"
 "    foo.password = bar\n"
 "    foo.schemes = http https"
@@ -20676,12 +20687,16 @@
 
 msgid ""
 "    [hostfingerprints]\n"
-"    hg.intevation.org = fa:1f:d9:48:f1:e7:74:30:38:8d:d8:58:b6:94:"
-"b8:58:28:7d:8b:d0"
+"    hg.intevation.de = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:"
+"cd:33\n"
+"    hg.intevation.org = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:"
+"e6:cd:33"
 msgstr ""
 "    [hostfingerprints]\n"
-"    hg.intevation.org = fa:1f:d9:48:f1:e7:74:30:38:8d:d8:58:b6:94:"
-"b8:58:28:7d:8b:d0"
+"    hg.intevation.de = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:"
+"cd:33\n"
+"    hg.intevation.org = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:"
+"e6:cd:33"
 
 msgid "This feature is only supported when using Python 2.6 or later."
 msgstr "本機能は、 Python 2.6 以降でのみ使用可能です。"
@@ -22909,7 +22924,7 @@
 "    Whether to enable closing file handles on background threads during "
 "certain\n"
 "    operations. Some platforms aren't very efficient at closing file\n"
-"    handles that have been written or appened to. By performing file "
+"    handles that have been written or appended to. By performing file "
 "closing\n"
 "    on background threads, file write rate can increase substantially.\n"
 "    (default: true on Windows, false elsewhere)"
@@ -26955,21 +26970,22 @@
 msgid ".. functionsmarker"
 msgstr ".. functionsmarker"
 
-msgid "Also, for any expression that returns a list, there is a list operator:"
-msgstr "また、 列挙形式を返す expr に対しては、 以下の様な記述が可能です:"
-
-msgid "- expr % \"{template}\""
-msgstr "- expr % \"{template}\""
-
-msgid ""
-"As seen in the above example, \"{template}\" is interpreted as a template.\n"
-"To prevent it from being interpreted, you can use an escape character "
-"\"\\{\"\n"
-"or a raw string prefix, \"r'...'\"."
-msgstr ""
-"上記例で見られるように、 \"{template}\" はテンプレートとして解釈されます。\n"
-"テンプレートとしての解釈を抑止する場合は、 \"\\{\" で開始するか、\n"
-"文字列指定の冒頭に ``r`` を付けて下さい (例: \"r'...'\")"
+msgid ""
+"Also, for any expression that returns a list, there is a list operator::"
+msgstr "また、 列挙形式を返す expr に対しては、 以下の様な記述が可能です::"
+
+msgid "    expr % \"{template}\""
+msgstr "    expr % \"{template}\""
+
+msgid ""
+"As seen in the above example, ``{template}`` is interpreted as a template.\n"
+"To prevent it from being interpreted, you can use an escape character ``"
+"\\{``\n"
+"or a raw string prefix, ``r'...'``."
+msgstr ""
+"上記例で見られるように、 ``{template}`` はテンプレートとして解釈されます。\n"
+"テンプレートとしての解釈を抑止する場合は、 ``\\{`` で開始するか、\n"
+"文字列指定の冒頭に ``r`` を付けて下さい (例: ``r'...'``)"
 
 msgid "Some sample command line templates:"
 msgstr "コマンドラインでのテンプレート指定例:"
--- a/mercurial/bundlerepo.py	Sat Feb 27 21:29:42 2016 -0800
+++ b/mercurial/bundlerepo.py	Mon Feb 29 17:52:17 2016 -0600
@@ -325,7 +325,8 @@
         self.bundle.seek(self.manstart)
         # consume the header if it exists
         self.bundle.manifestheader()
-        m = bundlemanifest(self.svfs, self.bundle, self.changelog.rev)
+        linkmapper = self.unfiltered().changelog.rev
+        m = bundlemanifest(self.svfs, self.bundle, linkmapper)
         # XXX: hack to work with changegroup3, but we still don't handle
         # tree manifests correctly
         if self.bundle.version == "03":
--- a/mercurial/cmdutil.py	Sat Feb 27 21:29:42 2016 -0800
+++ b/mercurial/cmdutil.py	Mon Feb 29 17:52:17 2016 -0600
@@ -2143,9 +2143,15 @@
         # Revset matches can reorder revisions. "A or B" typically returns
         # returns the revision matching A then the revision matching B. Sort
         # again to fix that.
+        fixopts = ['branch', 'only_branch', 'keyword', 'user']
+        oldrevs = revs
         revs = matcher(repo, revs)
         if not opts.get('rev'):
             revs.sort(reverse=True)
+        elif len(pats) > 1 or any(len(opts.get(op, [])) > 1 for op in fixopts):
+            # XXX "A or B" is known to change the order; fix it by filtering
+            # matched set again (issue5100)
+            revs = oldrevs & revs
     if limit is not None:
         limitedrevs = []
         for idx, r in enumerate(revs):
--- a/mercurial/demandimport.py	Sat Feb 27 21:29:42 2016 -0800
+++ b/mercurial/demandimport.py	Mon Feb 29 17:52:17 2016 -0600
@@ -235,6 +235,8 @@
 ignore = [
     '__future__',
     '_hashlib',
+    # ImportError during pkg_resources/__init__.py:fixup_namespace_package
+    '_imp',
     '_xmlplus',
     'fcntl',
     'win32com.gen_py',
--- a/mercurial/unionrepo.py	Sat Feb 27 21:29:42 2016 -0800
+++ b/mercurial/unionrepo.py	Mon Feb 29 17:52:17 2016 -0600
@@ -211,14 +211,14 @@
     @localrepo.unfilteredpropertycache
     def manifest(self):
         return unionmanifest(self.svfs, self.repo2.svfs,
-                             self._clrev)
+                             self.unfiltered()._clrev)
 
     def url(self):
         return self._url
 
     def file(self, f):
         return unionfilelog(self.svfs, f, self.repo2.svfs,
-                            self._clrev, self)
+                            self.unfiltered()._clrev, self)
 
     def close(self):
         self.repo2.close()
--- a/tests/test-log.t	Sat Feb 27 21:29:42 2016 -0800
+++ b/tests/test-log.t	Mon Feb 29 17:52:17 2016 -0600
@@ -920,6 +920,116 @@
 
   $ cd ..
 
+Test that log should respect the order of -rREV even if multiple OR conditions
+are specified (issue5100):
+
+  $ hg init revorder
+  $ cd revorder
+
+  $ hg branch -q b0
+  $ echo 0 >> f0
+  $ hg ci -qAm k0 -u u0
+  $ hg branch -q b1
+  $ echo 1 >> f1
+  $ hg ci -qAm k1 -u u1
+  $ hg branch -q b2
+  $ echo 2 >> f2
+  $ hg ci -qAm k2 -u u2
+
+  $ hg update -q b2
+  $ echo 3 >> f2
+  $ hg ci -qAm k2 -u u2
+  $ hg update -q b1
+  $ echo 4 >> f1
+  $ hg ci -qAm k1 -u u1
+  $ hg update -q b0
+  $ echo 5 >> f0
+  $ hg ci -qAm k0 -u u0
+
+ summary of revisions:
+
+  $ hg log -G -T '{rev} {branch} {author} {desc} {files}\n'
+  @  5 b0 u0 k0 f0
+  |
+  | o  4 b1 u1 k1 f1
+  | |
+  | | o  3 b2 u2 k2 f2
+  | | |
+  | | o  2 b2 u2 k2 f2
+  | |/
+  | o  1 b1 u1 k1 f1
+  |/
+  o  0 b0 u0 k0 f0
+  
+
+ log -b BRANCH in ascending order:
+
+  $ hg log -r0:tip -T '{rev} {branch}\n' -b b0 -b b1
+  0 b0
+  1 b1
+  4 b1
+  5 b0
+  $ hg log -r0:tip -T '{rev} {branch}\n' -b b1 -b b0
+  0 b0
+  1 b1
+  4 b1
+  5 b0
+
+ log --only-branch BRANCH in descending order:
+
+  $ hg log -rtip:0 -T '{rev} {branch}\n' --only-branch b1 --only-branch b2
+  4 b1
+  3 b2
+  2 b2
+  1 b1
+  $ hg log -rtip:0 -T '{rev} {branch}\n' --only-branch b2 --only-branch b1
+  4 b1
+  3 b2
+  2 b2
+  1 b1
+
+ log -u USER in ascending order, against compound set:
+
+  $ hg log -r'::head()' -T '{rev} {author}\n' -u u0 -u u2
+  0 u0
+  2 u2
+  3 u2
+  5 u0
+  $ hg log -r'::head()' -T '{rev} {author}\n' -u u2 -u u0
+  0 u0
+  2 u2
+  3 u2
+  5 u0
+
+ log -k TEXT in descending order, against compound set:
+
+  $ hg log -r'5 + reverse(::3)' -T '{rev} {desc}\n' -k k0 -k k1 -k k2
+  5 k0
+  3 k2
+  2 k2
+  1 k1
+  0 k0
+  $ hg log -r'5 + reverse(::3)' -T '{rev} {desc}\n' -k k2 -k k1 -k k0
+  5 k0
+  3 k2
+  2 k2
+  1 k1
+  0 k0
+
+ log FILE in ascending order, against dagrange:
+
+  $ hg log -r1:: -T '{rev} {files}\n' f1 f2
+  1 f1
+  2 f2
+  3 f2
+  4 f1
+  $ hg log -r1:: -T '{rev} {files}\n' f2 f1
+  1 f1
+  2 f2
+  3 f2
+  4 f1
+
+  $ cd ..
 
 User