--- a/hgext/mq.py Thu Mar 29 22:42:03 2012 +0200
+++ b/hgext/mq.py Fri Mar 30 14:35:06 2012 -0500
@@ -1197,15 +1197,19 @@
if move:
if not patch:
raise util.Abort(_("please specify the patch to move"))
- for i, rpn in enumerate(self.fullseries[start:]):
+ for fullstart, rpn in enumerate(self.fullseries):
+ # strip markers for patch guards
+ if self.guard_re.split(rpn, 1)[0] == self.series[start]:
+ break
+ for i, rpn in enumerate(self.fullseries[fullstart:]):
# strip markers for patch guards
if self.guard_re.split(rpn, 1)[0] == patch:
break
- index = start + i
+ index = fullstart + i
assert index < len(self.fullseries)
fullpatch = self.fullseries[index]
del self.fullseries[index]
- self.fullseries.insert(start, fullpatch)
+ self.fullseries.insert(fullstart, fullpatch)
self.parseseries()
self.seriesdirty = True
--- a/i18n/ja.po Thu Mar 29 22:42:03 2012 +0200
+++ b/i18n/ja.po Fri Mar 30 14:35:06 2012 -0500
@@ -35,7 +35,10 @@
# apply 適用
# archive アーカイブ
# argument(, with no) 引数(指定が無い場合)
+# authenticate/-ion 認証
# author 作成者
+# authorize/-ation 承認 or アクセス可否
+# (※ HTTP 系エラーは authorization も「認証」)
# backout 打ち消し
# basename パス名末尾要素
# binary バイナリ
@@ -115,7 +118,7 @@
msgstr ""
"Project-Id-Version: Mercurial\n"
"Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2012-03-27 19:48+0900\n"
+"POT-Creation-Date: 2012-03-30 18:05+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"
@@ -164,13 +167,16 @@
msgstr ""
"アクセス制御用フックを使用することで、 pretxnchangegroup や pretxncommit\n"
"契機で更新反映を受理した際に、 指定されたブランチやパスに対して、\n"
-"書き込みの可否を制御できます。"
+"アクセス (= 改変) の可否を制御できます。"
msgid ""
"The authorization is matched based on the local user name on the\n"
"system where the hook runs, and not the committer of the original\n"
"changeset (since the latter is merely informative)."
msgstr ""
+"本エクステンションでは、 各リビジョンのコミット実施者 (この情報は、\n"
+"あまり有益ではありません) の名前ではなく、 フックが実行される環境での、\n"
+"ログインユーザ名情報をベースに、 アクセス可否が判定されます。"
msgid ""
"The acl hook is best used along with a restricted shell like hgsh,\n"
@@ -180,9 +186,16 @@
"remote users share an account, because then there is no way to\n"
"distinguish them."
msgstr ""
+"ACL エクステンションのフックは、 hgsh (※ 訳注: contrib 成果物として、\n"
+"配布されています) のような、制限付きのシェルと併用することで、\n"
+"push/pull 以外の操作に関して、 ログイン済みユーザに対する抑止を行う、\n"
+"という様な用途に適しています。 ユーザがログインできる一般的な環境では、\n"
+"ユーザによって設定が無効化される可能性があるため、 ACL フックでの制限は、\n"
+"安全とは言えません。 同一アカウントを、 複数人で共有するような場合も、\n"
+"アクセス元のユーザを特定できないため、 安全とは言えません。"
msgid "The order in which access checks are performed is:"
-msgstr ""
+msgstr "アクセス可否の判定順序は、 以下の通りです:"
msgid ""
"1) Deny list for branches (section ``acl.deny.branches``)\n"
@@ -190,38 +203,53 @@
"3) Deny list for paths (section ``acl.deny``)\n"
"4) Allow list for paths (section ``acl.allow``)"
msgstr ""
+"1) ブランチへの禁止一覧 (``acl.deny.branches`` セクション)\n"
+"2) ブランチへの許可一覧 (``acl.allow.branches`` セクション)\n"
+"3) パスへの禁止一覧 (``acl.deny`` セクション)\n"
+"4) パスへの許可一覧 (``acl.allow`` セクション)"
msgid "The allow and deny sections take key-value pairs."
-msgstr ""
+msgstr "許可/禁止のいずれも、 キー/値の対で設定します。"
msgid ""
"Branch-based Access Control\n"
"..........................."
msgstr ""
+"ブランチベースのアクセス制御\n"
+"............................"
msgid ""
"Use the ``acl.deny.branches`` and ``acl.allow.branches`` sections to\n"
"have branch-based access control. Keys in these sections can be\n"
"either:"
msgstr ""
+"ブランチベースのアクセス制御には、 ``acl.deny.branches`` および\n"
+"``acl.allow.branches`` セクションでの設定が使用されます。\n"
+"これらのセクションでは、 以下のいずれかを、 キーとして指定します:"
msgid ""
"- a branch name, or\n"
"- an asterisk, to match any branch;"
msgstr ""
+"- ブランチ名、ないし\n"
+"- 「全ブランチ」を意味するアスタリスク(``*``)"
msgid "The corresponding values can be either:"
-msgstr ""
+msgstr "キーに対応する値には、 以下のいずれかを指定します:"
msgid ""
"- a comma-separated list containing users and groups, or\n"
"- an asterisk, to match anyone;"
msgstr ""
+"- ユーザ/グループの名前を、 カンマ区切りで並べた一覧、 ないし\n"
+"- 「全て」を意味するアスタリスク"
msgid ""
"Path-based Access Control\n"
"........................."
msgstr ""
+"パスベースのアクセス制御\n"
+"........................"
msgid ""
"Use the ``acl.deny`` and ``acl.allow`` sections to have path-based\n"
@@ -229,16 +257,25 @@
"a glob syntax by default). The corresponding values follow the same\n"
"syntax as the other sections above."
msgstr ""
+"パスベースのアクセス制御には ``acl.deny`` および ``acl.allow``\n"
+"セクションでの設定が使用されます。 これらのセクションでは、\n"
+"パスの合致判定をするパターン (無指定時の記述文法は glob) を、\n"
+"キーとして指定します。 キーに対応する値の記述方式は、\n"
+"他のセクションと同じです。"
msgid ""
"Groups\n"
"......"
msgstr ""
+"グループ\n"
+"........"
msgid ""
"Group names must be prefixed with an ``@`` symbol. Specifying a group\n"
"name has the same effect as specifying all the users in that group."
msgstr ""
+"グループ名を記述する場合、 接頭辞として ``@`` を付与します。\n"
+"グループ名記述は、 グループに属する全ユーザの列挙と、 同じ効果を持ちます。"
msgid ""
"You can define group members in the ``acl.groups`` section.\n"
@@ -246,11 +283,17 @@
"a Unix-like system, the list of users will be taken from the OS.\n"
"Otherwise, an exception will be raised."
msgstr ""
+"グループのメンバーは、 ``acl.groups`` セクションで定義できます。\n"
+"このセクションにおいて、 グループ名が定義されていない場合、\n"
+"UNIX 系の環境下であれば、 グループのメンバーに関する情報は、\n"
+"OS から取得されます。 それ以外の場合は、 例外が発生します。"
msgid ""
"Example Configuration\n"
"....................."
msgstr ""
+"設定例\n"
+"......"
msgid "::"
msgstr "::"
@@ -262,12 +305,16 @@
" # Use this if you want to check access restrictions at commit time\n"
" pretxncommit.acl = python:hgext.acl.hook"
msgstr ""
+" # コミット実行に制限を掛けたい場合の設定\n"
+" pretxncommit.acl = python:hgext.acl.hook"
msgid ""
" # Use this if you want to check access restrictions for pull, push,\n"
" # bundle and serve.\n"
" pretxnchangegroup.acl = python:hgext.acl.hook"
msgstr ""
+" # pull push bundle serve 実行に制限を掛けたい場合の設定\n"
+" pretxnchangegroup.acl = python:hgext.acl.hook"
msgid ""
" [acl]\n"
@@ -278,42 +325,61 @@
" # Default: serve\n"
" sources = serve"
msgstr ""
+" [acl]\n"
+" # 変更反映元種別が、以下に列挙されている場合のみ、許可/禁止を行い、\n"
+" # それ以外の場合は、制限を行わない。 指定可能な種別は、http ないし\n"
+" # ssh 経由での全アクセスを指す \"serve\" か、対応するコマンドの\n"
+" # (ローカルでの)実行に対応する \"push\" \"pull\" \"bundle\" です。\n"
+" # デフォルト値: serve\n"
+" sources = serve"
msgid " [acl.deny.branches]"
-msgstr ""
+msgstr " [acl.deny.branches]"
msgid ""
" # Everyone is denied to the frozen branch:\n"
" frozen-branch = *"
msgstr ""
+" # いずれのユーザも frozen-branch へのアクセスを禁止:\n"
+" frozen-branch = *"
msgid ""
" # A bad user is denied on all branches:\n"
" * = bad-user"
msgstr ""
+" # bad-user は全てのブランチへのアクセスを禁止:\n"
+" * = bad-user"
msgid " [acl.allow.branches]"
-msgstr ""
+msgstr " [acl.allow.branches]"
msgid ""
" # A few users are allowed on branch-a:\n"
" branch-a = user-1, user-2, user-3"
msgstr ""
+" # branch-a へのアクセスを特定のユーザにのみ許可:\n"
+" branch-a = user-1, user-2, user-3"
msgid ""
" # Only one user is allowed on branch-b:\n"
" branch-b = user-1"
msgstr ""
+" # branch-b へのアクセスを一人のユーザにのみ許可:\n"
+" branch-b = user-1"
msgid ""
" # The super user is allowed on any branch:\n"
" * = super-user"
msgstr ""
+" # super-user は全てのブランチにアクセス可能:\n"
+" * = super-user"
msgid ""
" # Everyone is allowed on branch-for-tests:\n"
" branch-for-tests = *"
msgstr ""
+" # 全てのユーザは branch-for-tests にアクセス可能:\n"
+" branch-for-tests = *"
msgid ""
" [acl.deny]\n"
@@ -321,45 +387,68 @@
" # checked. All users are granted access if acl.deny is not present.\n"
" # Format for both lists: glob pattern = user, ..., @group, ..."
msgstr ""
+" [acl.deny]\n"
+" # acl.allow よりも先に、 本セクションの設定に対して確認が実施されます。\n"
+" # 合致する設定があった場合、acl.allow セクションの設定は無視されます。\n"
+" # acl.deny 設定が無い場合、全ユーザにアクセスが許可されます。\n"
+" # 記述形式: 合致パターン = ユーザ名, ..., @グループ名, ..."
msgid ""
" # To match everyone, use an asterisk for the user:\n"
" # my/glob/pattern = *"
msgstr ""
+" # 全ユーザにマッチさせる場合は、値にアスタリスクを指定:\n"
+" # my/glob/pattern = *"
msgid ""
" # user6 will not have write access to any file:\n"
" ** = user6"
msgstr ""
+" # user6 は全てのファイルに対してアクセス禁止:\n"
+" ** = user6"
msgid ""
" # Group \"hg-denied\" will not have write access to any file:\n"
" ** = @hg-denied"
msgstr ""
+" # グループ \"hg-denied\" は全てのファイルに対してアクセス禁止:\n"
+" ** = @hg-denied"
msgid ""
" # Nobody will be able to change \"DONT-TOUCH-THIS.txt\", despite\n"
" # everyone being able to change all other files. See below.\n"
" src/main/resources/DONT-TOUCH-THIS.txt = *"
msgstr ""
+" # 全ユーザに対して \"DONT-TOUCH-THIS.txt\" はアクセス禁止。\n"
+" # (他のファイルにアクセス可能なユーザであっても同様)\n"
+" src/main/resources/DONT-TOUCH-THIS.txt = *"
msgid ""
" [acl.allow]\n"
" # if acl.allow is not present, all users are allowed by default\n"
" # empty acl.allow = no users allowed"
msgstr ""
+" [acl.allow]\n"
+" # 設定ファイルに acl.allow セクションが無い場合、全ユーザに対して、\n"
+" # 全アクセスが許可されます。 空の acl.allow セクションは、\n"
+" # 全ユーザに対して「許可を与えない」ことを意味します。"
msgid ""
" # User \"doc_writer\" has write access to any file under the \"docs\"\n"
" # folder:\n"
" docs/** = doc_writer"
msgstr ""
+" # ユーザ \"doc_writer\" は \"docs\" 配下の任意のファイルにアクセス可能:\n"
+" docs/** = doc_writer"
msgid ""
" # User \"jack\" and group \"designers\" have write access to any file\n"
" # under the \"images\" folder:\n"
" images/** = jack, @designers"
msgstr ""
+" # ユーザ \"jack\" とグループ \"designers\" は \"images\" 配下の任意の\n"
+" # ファイルにアクセス可能:\n"
+" images/** = jack, @designers"
msgid ""
" # Everyone (except for \"user6\" - see acl.deny above) will have write\n"
@@ -367,13 +456,19 @@
" # file. See acl.deny):\n"
" src/main/resources/** = *"
msgstr ""
+" # acl.deny で禁止されている \"user6\" 以外の全てのユーザに対して\n"
+" # (※ 訳注: グループ \"hg-denied\" も禁止されている筈)\n"
+" # \"resources\" 配下の任意のファイルへのアクセスを許可。\n"
+" # 但し acl.deny で全ユーザにアクセス禁止されている\n"
+" # src/main/resources/DONT-TOUCH-THIS.txt を除く:\n"
+" src/main/resources/** = *"
msgid " .hgtags = release_engineer"
-msgstr ""
+msgstr " .hgtags = release_engineer"
#, python-format
msgid "group '%s' is undefined"
-msgstr ""
+msgstr "グループ '%s' は未定義です"
#, python-format
msgid ""
@@ -5933,12 +6028,14 @@
msgstr "パッチ管理リポジトリへの操作"
msgid "hooks for sending email push notifications"
-msgstr "push 通知電子メール送信用のフック集"
+msgstr "電子メールによる push 通知送信用フック集"
msgid ""
"This extension let you run hooks sending email notifications when\n"
"changesets are being pushed, from the sending or receiving side."
msgstr ""
+"本エクステンションは、 変更履歴が反映された際に、 反映元ないし反映先の、\n"
+"いずれかが契機となって、 電子メールによる通知を行う機能を提供します。"
msgid ""
"First, enable the extension as explained in :hg:`help extensions`, and\n"
@@ -5946,6 +6043,10 @@
"are run by the changesets receiver while the ``outgoing`` one is for\n"
"the sender::"
msgstr ""
+":hg:`help extensions` にならって、 本エクステンションを有効にした上で、\n"
+"実行したいフックを登録してください。 `incoming`` および ``outgoing``\n"
+"(※ 訳注: ``changegroup`` の間違い?) フックは反映「先」で、\n"
+"``outgoing`` は反映「元」で実行されます::"
msgid ""
" [hooks]\n"
@@ -5954,11 +6055,18 @@
" # one email for all incoming changesets\n"
" changegroup.notify = python:hgext.notify.hook"
msgstr ""
+" [hooks]\n"
+" # 取り込み処理時にリビジョン毎にメールを送信\n"
+" incoming.notify = python:hgext.notify.hook\n"
+" # 取り込み処理毎にメールを送信\n"
+" changegroup.notify = python:hgext.notify.hook"
msgid ""
" # one email for all outgoing changesets\n"
" outgoing.notify = python:hgext.notify.hook"
msgstr ""
+" # 反映処理毎にメールを送信\n"
+" outgoing.notify = python:hgext.notify.hook"
msgid ""
"Now the hooks are running, subscribers must be assigned to\n"
@@ -5966,6 +6074,9 @@
"given email or the ``[reposubs]`` section to map emails to a single\n"
"repository::"
msgstr ""
+"フック実行には、 リポジトリに対するメール送信先 (subscriber:購読者)\n"
+"の設定が必要です。 メール送信先毎のリポジトリ設定には ``[usersubs]``、\n"
+"リポジトリ毎のメール送信先設定には ``[reposubs]`` を使用します::"
msgid ""
" [usersubs]\n"
@@ -5973,6 +6084,10 @@
" # patterns\n"
" user@host = pattern"
msgstr ""
+" [usersubs]\n"
+" # 左辺には送信先メールアドレス、右辺にはカンマ区切りの合致(glob)\n"
+" # パターンを記述してください\n"
+" user@host = pattern"
msgid ""
" [reposubs]\n"
@@ -5980,39 +6095,53 @@
" # emails\n"
" pattern = user@host"
msgstr ""
+" # 左辺には合致パターン、右辺にはカンマ区切りの送信先メールアドレスを\n"
+" # 記述してください\n"
+" pattern = user@host"
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 ""
+"合致パターンの適用対象は、 リポジトリルートの絶対パスです。\n"
+"メール送信設定は、 別途設定ファイルにおいて、 記述することもできます::"
msgid ""
" [notify]\n"
" config = /path/to/subscriptionsfile"
msgstr ""
+" [notify]\n"
+" config = /path/to/subscriptionsfile"
msgid ""
"Alternatively, they can be added to Mercurial configuration files by\n"
"setting the previous entry to an empty value."
msgstr ""
+"Mercurial の設定ファイルには、 これらの値に空値を設定する記述を、\n"
+"「とりあえず」書いておいても構いません。"
msgid ""
"At this point, notifications should be generated but will not be sent until "
"you\n"
"set the ``notify.test`` entry to ``False``."
msgstr ""
+"ここまでの段階では、 通知内容は生成されますが、 ``notify.test`` 設定を\n"
+"``False`` にしない限り、 通知メールは送信されないからです。"
msgid ""
"Notifications content can be tweaked with the following configuration "
"entries:"
-msgstr ""
+msgstr "通知内容は、 以下の設定により変更可能です:"
msgid ""
"notify.test\n"
" If ``True``, print messages to stdout instead of sending them. Default: "
"True."
msgstr ""
+"notify.test\n"
+" 真値の場合、 生成された通知内容は、 標準出力に書き出されます\n"
+" (メール送信無し)。 デフォルト値は True"
msgid ""
"notify.sources\n"
@@ -6024,6 +6153,14 @@
" locally. Outgoing sources are the same except for ``unbundle`` which\n"
" is replaced by ``bundle``. Default: serve."
msgstr ""
+"notify.sources\n"
+" 空白区切りの、 変更反映元一覧。 変更反映元ないし、 変更反映先の種別が、\n"
+" 一覧に含まれる場合にのみ、 通知メールが送信されます。 incoming の場合、\n"
+" 反映元種別は、 http ないし ssh 経由での ``serve``、 :hg:`pull`\n"
+" 実行での ``pull``、 :hg:`unbundle` 実行での ``unbundle``、\n"
+" ローカルホスト上における :hg:`push` 実行での ``push`` のいずれかです。\n"
+" outgoing の場合、 ``unbundle`` が ``bundle`` になる以外は、\n"
+" 同じ種別が使用されます。 デフォルト値は serve。"
msgid ""
"notify.strip\n"
@@ -6035,64 +6172,98 @@
"change\n"
" ``/long/path/repository`` into ``repository``. Default: 0."
msgstr ""
+"notify.strip\n"
+" URL パス冒頭から取り除く、 スラッシュ数。 無指定時は、\n"
+" リポジトリの絶対パスが使用されます。 ``notify.strip`` によって、\n"
+" リポジトリのパスを、 相対パス化することができます。 例えば、\n"
+" ``notify.strip=3`` は ``/long/path/repository`` を ``repository``\n"
+" に改変します。 デフォルト値は 0。"
msgid ""
"notify.domain\n"
" If subscribers emails or the from email have no domain set, complete them\n"
" with this value."
msgstr ""
+"notify.domain\n"
+" 電子メールの送信先、 ないし送信元が、 ドメイン部分を持たない場合に、\n"
+" この設定値が使用されます。"
msgid ""
"notify.style\n"
" Style file to use when formatting emails."
msgstr ""
+"notify.style\n"
+" メール本文の整形に用いる、 スタイルファイル名。"
msgid ""
"notify.template\n"
" Template to use when formatting emails."
msgstr ""
+"notify.template\n"
+" メール本文の整形に用いる、 テンプレート指定。"
msgid ""
"notify.incoming\n"
" Template to use when run as incoming hook, override ``notify.template``."
msgstr ""
+"notify.incoming\n"
+" incoming フックで使用するテンプレート指定。 設定された場合は、\n"
+" ``notify.template`` に優先します。"
msgid ""
"notify.outgoing\n"
" Template to use when run as outgoing hook, override ``notify.template``."
msgstr ""
+"notify.outgoing\n"
+" outgoing フックで使用するテンプレート設定。 設定された場合は、\n"
+" ``notify.template`` に優先します。"
msgid ""
"notify.changegroup\n"
" Template to use when running as changegroup hook, override\n"
" ``notify.template``."
msgstr ""
+"notify.changegroup\n"
+" changegroup フックで使用するテンプレート設定、 設定された場合は、\n"
+" ``notify.template`` に優先します。"
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 ""
+"notify.maxdiff\n"
+" メール本文に含める、 差分情報の最大行数。 0 の場合は、 差分が含まれず、\n"
+" -1 の場合は、 全差分行が含まれます。 デフォルト値は 300。"
msgid ""
"notify.maxsubject\n"
" Maximum number of characters in emails subject line. Default: 67."
msgstr ""
+"notify.maxsubject\n"
+" メール表題 (subject) の最大文字数。 デフォルト値は 67。"
msgid ""
"notify.diffstat\n"
" Set to True to include a diffstat before diff content. Default: True."
msgstr ""
+"notify.diffstat\n"
+" 差分統計 (diffstat) 通知の有無。 デフォルト値は True。"
msgid ""
"notify.merge\n"
" If True, send notifications for merge changesets. Default: True."
msgstr ""
+"notify.merge\n"
+" マージ実施リビジョンに関する、 通知の有無。 デフォルト値は True。"
msgid ""
"notify.mbox\n"
" If set, append mails to this mbox file instead of sending. Default: None."
msgstr ""
+"notify.mbox\n"
+" 値が設定された場合、 mbox ファイル指定とみなし、 メール送信の代わりに、\n"
+" 送信内容を mbox ファイルに追記します。 デフォルト値は無設定。"
msgid ""
"notify.fromauthor\n"
@@ -6101,23 +6272,33 @@
" the notification mail. If not set, take the user from the pushing repo.\n"
" Default: False."
msgstr ""
+"notify.fromauthor\n"
+" 真値の場合、 通知対象 (の最初の) リビジョンのユーザ名を、 通知メールの\n"
+" \"From\" フィールドに使用します。 それ以外は、 変更反映元からの、\n"
+" ユーザ名情報を利用します。 デフォルト値は False。"
msgid ""
"If set, the following entries will also be used to customize the "
"notifications:"
-msgstr ""
+msgstr "通知のカスタマイズには、 以下の設定も利用可能です:"
msgid ""
"email.from\n"
" Email ``From`` address to use if none can be found in generated email "
"content."
msgstr ""
+"email.from\n"
+" 生成された通知メール本文に、 相当する情報が無い場合は、 この値が\n"
+" ``From`` フィールドに使用されます。"
msgid ""
"web.baseurl\n"
" Root repository browsing URL to combine with repository paths when making\n"
" references. See also ``notify.strip``."
msgstr ""
+"web.baseurl\n"
+" リポジトリのパスと組み合わせて、 参照用 URL を生成する URL ベース。\n"
+" ``notify.strip`` も参照してください。"
#, python-format
msgid "%s: %d new changesets"
@@ -8098,6 +8279,10 @@
msgstr "%s: 上書き失敗 - %s は %s と衝突\n"
#, python-format
+msgid "%s: can't copy - same file\n"
+msgstr "%s: コピー失敗 - 同一ファイルです\n"
+
+#, python-format
msgid "%s: not overwriting - file exists\n"
msgstr "%s: 上書きしません - ファイルが存在します\n"
@@ -13160,6 +13345,9 @@
msgid "** Extensions loaded: %s\n"
msgstr "** Extensions loaded: %s\n"
+msgid "too few arguments for command alias"
+msgstr "別名(エイリアス)への引数が足りません"
+
#, python-format
msgid "no definition for alias '%s'\n"
msgstr "'%s' を別名に持つコマンドはありません\n"
@@ -16157,10 +16345,10 @@
msgstr ""
"Mercurial の組み込みウェブサーバは、 認証 (authentication) を行いません\n"
"(ユーザを確認するための、 ユーザ名やパスワードの入力を求めません) が、\n"
-"承認 (authorization) の機能はあります (本セクションでの設定を元にした、\n"
-"認証済みユーザに対する、 アクセス可否の制御)。 利用するウェブサーバの、\n"
-"認証機能を Mercurial 向けに正しく設定するか、 Mercurial の承認機能を、\n"
-"無効化してください。"
+"承認 (authorization: アクセス可否の判定) の機能はあります\n"
+"(本セクションでの設定を元に、 認証済みユーザに対して実施)。\n"
+"利用するウェブサーバの、 認証機能を Mercurial 向けに正しく設定するか、\n"
+"Mercurial の承認機能を、 無効化してください。"
msgid ""
"For a quick setup in a trusted environment, e.g., a private LAN, where\n"
--- a/i18n/pt_BR.po Thu Mar 29 22:42:03 2012 +0200
+++ b/i18n/pt_BR.po Fri Mar 30 14:35:06 2012 -0500
@@ -5872,6 +5872,9 @@
msgid "no backups (DEPRECATED)"
msgstr "sem cópias de segurança (OBSOLETO)"
+msgid "ignored (DEPRECATED)"
+msgstr "ignorado (OBSOLETO)"
+
msgid "do not modify working copy during strip"
msgstr "não modifica a cópia de trabalho durante o strip"
@@ -8553,6 +8556,10 @@
msgstr "%s: não sobrescrito - %s colide com %s\n"
#, python-format
+msgid "%s: can't copy - same file\n"
+msgstr "%s: impossível copiar - é o mesmo arquivo\n"
+
+#, python-format
msgid "%s: not overwriting - file exists\n"
msgstr "%s: não sobrescrito - arquivo existe\n"
@@ -13771,6 +13778,9 @@
msgid "** Extensions loaded: %s\n"
msgstr "** Extensões carregadas: %s\n"
+msgid "too few arguments for command alias"
+msgstr "faltam argumentos para o apelido de comando"
+
#, python-format
msgid "no definition for alias '%s'\n"
msgstr "nenhuma definição para o apelido '%s'\n"
@@ -16404,7 +16414,7 @@
" rápido (~10x) que um clone comum. Na maior parte de conexões WAN\n"
" (ou qualquer conexão mais lenta que cerca de 6 Mbps), streaming\n"
" não comprimido é mais lento, por causa dos dados extras\n"
-" transferidos. Este modo também temporariamente usará\n"
+" transferidos. Este modo também usará\n"
" temporariamente o bloqueio de escrita no repositório enquanto\n"
" forem determinados os dados a serem transmitidos.\n"
" O padrão é True."
--- a/mercurial/dirstate.py Thu Mar 29 22:42:03 2012 +0200
+++ b/mercurial/dirstate.py Fri Mar 30 14:35:06 2012 -0500
@@ -82,6 +82,8 @@
f = {}
for name in self._map:
f[util.normcase(name)] = name
+ for name in self._dirs:
+ f[util.normcase(name)] = name
f['.'] = '.' # prevents useless util.fspath() invocation
return f
@@ -401,8 +403,16 @@
if isknown or not os.path.lexists(os.path.join(self._root, path)):
folded = path
else:
- folded = self._foldmap.setdefault(normed,
- util.fspath(normed, self._root))
+ # recursively normalize leading directory components
+ # against dirstate
+ if '/' in normed:
+ d, f = normed.rsplit('/')
+ d = self._root + "/" + self._normalize(d, isknown)
+ folded = d + "/" + util.fspath(f, d)
+ else:
+ folded = util.fspath(normed, self._root)
+ self._foldmap[normed] = folded
+
return folded
def normalize(self, path, isknown=False):
@@ -548,7 +558,7 @@
elif match.files() and not match.anypats(): # match.match, no patterns
skipstep3 = True
- if self._checkcase:
+ if not exact and self._checkcase:
normalize = self._normalize
skipstep3 = False
else:
--- a/tests/test-bad-pull.t Thu Mar 29 22:42:03 2012 +0200
+++ b/tests/test-bad-pull.t Fri Mar 30 14:35:06 2012 -0500
@@ -13,20 +13,12 @@
> handler_class=SimpleHTTPServer.SimpleHTTPRequestHandler):
> server_address = ('localhost', int(os.environ['HGPORT']))
> httpd = server_class(server_address, handler_class)
- > httpd.serve_forever()
- > signal.signal(signal.SIGTERM, lambda x: sys.exit(0))
+ > os.system("hg clone http://localhost:$HGPORT/foo copy2&")
+ > httpd.handle_request()
> run()
> EOF
- $ python dumb.py 2>/dev/null &
- $ echo $! >> $DAEMON_PIDS
-
-give the server some time to start running
-
- $ sleep 1
-
- $ hg clone http://localhost:$HGPORT/foo copy2 2>&1
+ $ python dumb.py
+ localhost - - [*] code 404, message File not found (glob)
+ localhost - - [*] "GET /foo?cmd=capabilities HTTP/1.1" 404 - (glob)
abort: HTTP Error 404: * (glob)
- [255]
-
- $ kill $!
--- a/tests/test-casefolding.t Thu Mar 29 22:42:03 2012 +0200
+++ b/tests/test-casefolding.t Fri Mar 30 14:35:06 2012 -0500
@@ -72,3 +72,45 @@
gold
$ cd ..
+
+issue 3340: mq does not handle case changes correctly
+
+in addition to reported case, 'hg qrefresh' is also tested against
+case changes.
+
+ $ echo "[extensions]" >> $HGRCPATH
+ $ echo "mq=" >> $HGRCPATH
+
+ $ hg init issue3340
+ $ cd issue3340
+
+ $ echo a > mIxEdCaSe
+ $ hg add mIxEdCaSe
+ $ hg commit -m '#0'
+ $ hg rename mIxEdCaSe tmp
+ $ hg rename tmp MiXeDcAsE
+ $ hg status -A
+ A MiXeDcAsE
+ mIxEdCaSe
+ R mIxEdCaSe
+ $ hg qnew changecase
+ $ hg status -A
+ C MiXeDcAsE
+
+ $ hg qpop -a
+ popping changecase
+ patch queue now empty
+ $ hg qnew refresh-casechange
+ $ hg status -A
+ C mIxEdCaSe
+ $ hg rename mIxEdCaSe tmp
+ $ hg rename tmp MiXeDcAsE
+ $ hg status -A
+ A MiXeDcAsE
+ mIxEdCaSe
+ R mIxEdCaSe
+ $ hg qrefresh
+ $ hg status -A
+ C MiXeDcAsE
+
+ $ cd ..
--- a/tests/test-hgweb-raw.t Thu Mar 29 22:42:03 2012 +0200
+++ b/tests/test-hgweb-raw.t Fri Mar 30 14:35:06 2012 -0500
@@ -18,10 +18,10 @@
$ hg serve -p $HGPORT -A access.log -E error.log -d --pid-file=hg.pid
$ cat hg.pid >> $DAEMON_PIDS
- $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?f=a23bf1310f6e;file=sub/some%20%22text%22.txt;style=raw' content-type content-length content-disposition) >getoutput.txt &
- $ sleep 5
- $ kill `cat hg.pid`
- $ sleep 1 # wait for server to scream and die
+ $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?f=a23bf1310f6e;file=sub/some%20%22text%22.txt;style=raw' content-type content-length content-disposition) >getoutput.txt
+
+ $ while kill `cat hg.pid` 2>/dev/null; do true; done
+
$ cat getoutput.txt
200 Script output follows
content-type: application/binary
@@ -40,10 +40,9 @@
> --config web.guessmime=True
$ cat hg.pid >> $DAEMON_PIDS
- $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?f=a23bf1310f6e;file=sub/some%20%22text%22.txt;style=raw' content-type content-length content-disposition) >getoutput.txt &
- $ sleep 5
- $ kill `cat hg.pid`
- $ sleep 1 # wait for server to scream and die
+ $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?f=a23bf1310f6e;file=sub/some%20%22text%22.txt;style=raw' content-type content-length content-disposition) >getoutput.txt
+ $ while kill `cat hg.pid` 2>/dev/null; do true; done
+
$ cat getoutput.txt
200 Script output follows
content-type: text/plain; charset="ascii"
--- a/tests/test-http-proxy.t Thu Mar 29 22:42:03 2012 +0200
+++ b/tests/test-http-proxy.t Fri Mar 30 14:35:06 2012 -0500
@@ -8,10 +8,9 @@
$ hg --config server.uncompressed=True serve -p $HGPORT -d --pid-file=hg.pid
$ cat hg.pid >> $DAEMON_PIDS
$ cd ..
- $ ("$TESTDIR/tinyproxy.py" $HGPORT1 localhost >proxy.log 2>&1 </dev/null &
- $ echo $! > proxy.pid)
+ $ "$TESTDIR/tinyproxy.py" $HGPORT1 localhost >proxy.log 2>&1 </dev/null &
+ $ while [ ! -f proxy.pid ]; do true; done
$ cat proxy.pid >> $DAEMON_PIDS
- $ sleep 2
url for proxy, stream
--- a/tests/test-https.t Thu Mar 29 22:42:03 2012 +0200
+++ b/tests/test-https.t Fri Mar 30 14:35:06 2012 -0500
@@ -233,15 +233,13 @@
$ hg -R copy-pull id https://127.0.0.1:$HGPORT/
5fed3813f7f5
+ $ while kill `cat hg1.pid` 2>/dev/null; do true; done
+
Prepare for connecting through proxy
- $ kill `cat hg1.pid`
- $ sleep 1
-
- $ ("$TESTDIR/tinyproxy.py" $HGPORT1 localhost >proxy.log 2>&1 </dev/null &
- $ echo $! > proxy.pid)
+ $ "$TESTDIR/tinyproxy.py" $HGPORT1 localhost >proxy.log </dev/null 2>&1 &
+ $ while [ ! -f proxy.pid ]; do true; done
$ cat proxy.pid >> $DAEMON_PIDS
- $ sleep 2
$ echo "[http_proxy]" >> copy-pull/.hg/hgrc
$ echo "always=True" >> copy-pull/.hg/hgrc
--- a/tests/test-hup.t Thu Mar 29 22:42:03 2012 +0200
+++ b/tests/test-hup.t Fri Mar 30 14:35:06 2012 -0500
@@ -5,16 +5,22 @@
$ mkfifo p
$ hg serve --stdio < p &
$ P=$!
- $ (echo lock; echo addchangegroup; sleep 5) > p &
- $ Q=$!
- $ sleep 3
+
+Do test while holding fifo open
+
+ $ (
+ > echo lock
+ > echo addchangegroup
+ > while [ ! -e .hg/store/00changelog.i.a ]; do true; done
+ > kill -HUP $P
+ > while kill -0 $P 2>/dev/null; do true; done
+ > ) > p
0
0
adding changesets
- $ kill -HUP $P
- $ wait
transaction abort!
rollback completed
killed!
+
$ echo .hg/* .hg/store/*
.hg/00changelog.i .hg/journal.bookmarks .hg/journal.branch .hg/journal.desc .hg/journal.dirstate .hg/requires .hg/store .hg/store/00changelog.i .hg/store/00changelog.i.a .hg/store/journal.phaseroots
--- a/tests/test-mq.t Thu Mar 29 22:42:03 2012 +0200
+++ b/tests/test-mq.t Fri Mar 30 14:35:06 2012 -0500
@@ -519,7 +519,15 @@
$ hg qpush --move test.patch # already applied
abort: cannot push to a previous patch: test.patch
[255]
- $ hg qpush
+ $ sed -i.bak '2i# make qtip index different in series and fullseries' `hg root`/.hg/patches/series
+ $ cat `hg root`/.hg/patches/series
+ # comment
+ # make qtip index different in series and fullseries
+
+ test.patch
+ test1b.patch
+ test2.patch
+ $ hg qpush --move test2.patch
applying test2.patch
now at: test2.patch
@@ -527,11 +535,12 @@
series after move
$ cat `hg root`/.hg/patches/series
+ # comment
+ # make qtip index different in series and fullseries
+
test.patch
test1b.patch
test2.patch
- # comment
-
pop, qapplied, qunapplied
--- a/tests/test-serve.t Thu Mar 29 22:42:03 2012 +0200
+++ b/tests/test-serve.t Fri Mar 30 14:35:06 2012 -0500
@@ -9,13 +9,12 @@
> cat hg.pid >> "$DAEMON_PIDS"
> echo % errors
> cat errors.log
- > sleep 1
> if [ "$KILLQUIETLY" = "Y" ]; then
> kill `cat hg.pid` 2>/dev/null
> else
> kill `cat hg.pid`
> fi
- > sleep 1
+ > while kill -0 `cat hg.pid` 2>/dev/null; do true; done
> }
$ hg init test
--- a/tests/tinyproxy.py Thu Mar 29 22:42:03 2012 +0200
+++ b/tests/tinyproxy.py Fri Mar 30 14:35:06 2012 -0500
@@ -12,7 +12,7 @@
__version__ = "0.2.1"
-import BaseHTTPServer, select, socket, SocketServer, urlparse
+import BaseHTTPServer, select, socket, SocketServer, urlparse, os
class ProxyHandler (BaseHTTPServer.BaseHTTPRequestHandler):
__base = BaseHTTPServer.BaseHTTPRequestHandler
@@ -122,7 +122,12 @@
do_DELETE = do_GET
class ThreadingHTTPServer (SocketServer.ThreadingMixIn,
- BaseHTTPServer.HTTPServer): pass
+ BaseHTTPServer.HTTPServer):
+ def __init__(self, *args, **kwargs):
+ BaseHTTPServer.HTTPServer.__init__(self, *args, **kwargs)
+ a = open("proxy.pid", "w")
+ a.write(str(os.getpid()) + "\n")
+ a.close()
if __name__ == '__main__':
from sys import argv