Show More
@@ -1197,15 +1197,19 b' class queue(object):' | |||||
1197 | if move: |
|
1197 | if move: | |
1198 | if not patch: |
|
1198 | if not patch: | |
1199 | raise util.Abort(_("please specify the patch to move")) |
|
1199 | raise util.Abort(_("please specify the patch to move")) | |
1200 |
for |
|
1200 | for fullstart, rpn in enumerate(self.fullseries): | |
|
1201 | # strip markers for patch guards | |||
|
1202 | if self.guard_re.split(rpn, 1)[0] == self.series[start]: | |||
|
1203 | break | |||
|
1204 | for i, rpn in enumerate(self.fullseries[fullstart:]): | |||
1201 | # strip markers for patch guards |
|
1205 | # strip markers for patch guards | |
1202 | if self.guard_re.split(rpn, 1)[0] == patch: |
|
1206 | if self.guard_re.split(rpn, 1)[0] == patch: | |
1203 | break |
|
1207 | break | |
1204 | index = start + i |
|
1208 | index = fullstart + i | |
1205 | assert index < len(self.fullseries) |
|
1209 | assert index < len(self.fullseries) | |
1206 | fullpatch = self.fullseries[index] |
|
1210 | fullpatch = self.fullseries[index] | |
1207 | del self.fullseries[index] |
|
1211 | del self.fullseries[index] | |
1208 | self.fullseries.insert(start, fullpatch) |
|
1212 | self.fullseries.insert(fullstart, fullpatch) | |
1209 | self.parseseries() |
|
1213 | self.parseseries() | |
1210 | self.seriesdirty = True |
|
1214 | self.seriesdirty = True | |
1211 |
|
1215 |
@@ -35,7 +35,10 b'' | |||||
35 | # apply 適用 |
|
35 | # apply 適用 | |
36 | # archive アーカイブ |
|
36 | # archive アーカイブ | |
37 | # argument(, with no) 引数(指定が無い場合) |
|
37 | # argument(, with no) 引数(指定が無い場合) | |
|
38 | # authenticate/-ion 認証 | |||
38 | # author 作成者 |
|
39 | # author 作成者 | |
|
40 | # authorize/-ation 承認 or アクセス可否 | |||
|
41 | # (※ HTTP 系エラーは authorization も「認証」) | |||
39 | # backout 打ち消し |
|
42 | # backout 打ち消し | |
40 | # basename パス名末尾要素 |
|
43 | # basename パス名末尾要素 | |
41 | # binary バイナリ |
|
44 | # binary バイナリ | |
@@ -115,7 +118,7 b' msgid ""' | |||||
115 | msgstr "" |
|
118 | msgstr "" | |
116 | "Project-Id-Version: Mercurial\n" |
|
119 | "Project-Id-Version: Mercurial\n" | |
117 | "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n" |
|
120 | "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n" | |
118 |
"POT-Creation-Date: 2012-03- |
|
121 | "POT-Creation-Date: 2012-03-30 18:05+0900\n" | |
119 | "PO-Revision-Date: 2009-11-16 21:24+0100\n" |
|
122 | "PO-Revision-Date: 2009-11-16 21:24+0100\n" | |
120 | "Last-Translator: Japanese translation team <mercurial-ja@googlegroups.com>\n" |
|
123 | "Last-Translator: Japanese translation team <mercurial-ja@googlegroups.com>\n" | |
121 | "Language-Team: Japanese\n" |
|
124 | "Language-Team: Japanese\n" | |
@@ -164,13 +167,16 b' msgid ""' | |||||
164 | msgstr "" |
|
167 | msgstr "" | |
165 | "アクセス制御用フックを使用することで、 pretxnchangegroup や pretxncommit\n" |
|
168 | "アクセス制御用フックを使用することで、 pretxnchangegroup や pretxncommit\n" | |
166 | "契機で更新反映を受理した際に、 指定されたブランチやパスに対して、\n" |
|
169 | "契機で更新反映を受理した際に、 指定されたブランチやパスに対して、\n" | |
167 |
" |
|
170 | "アクセス (= 改変) の可否を制御できます。" | |
168 |
|
171 | |||
169 | msgid "" |
|
172 | msgid "" | |
170 | "The authorization is matched based on the local user name on the\n" |
|
173 | "The authorization is matched based on the local user name on the\n" | |
171 | "system where the hook runs, and not the committer of the original\n" |
|
174 | "system where the hook runs, and not the committer of the original\n" | |
172 | "changeset (since the latter is merely informative)." |
|
175 | "changeset (since the latter is merely informative)." | |
173 | msgstr "" |
|
176 | msgstr "" | |
|
177 | "本エクステンションでは、 各リビジョンのコミット実施者 (この情報は、\n" | |||
|
178 | "あまり有益ではありません) の名前ではなく、 フックが実行される環境での、\n" | |||
|
179 | "ログインユーザ名情報をベースに、 アクセス可否が判定されます。" | |||
174 |
|
180 | |||
175 | msgid "" |
|
181 | msgid "" | |
176 | "The acl hook is best used along with a restricted shell like hgsh,\n" |
|
182 | "The acl hook is best used along with a restricted shell like hgsh,\n" | |
@@ -180,9 +186,16 b' msgid ""' | |||||
180 | "remote users share an account, because then there is no way to\n" |
|
186 | "remote users share an account, because then there is no way to\n" | |
181 | "distinguish them." |
|
187 | "distinguish them." | |
182 | msgstr "" |
|
188 | msgstr "" | |
|
189 | "ACL エクステンションのフックは、 hgsh (※ 訳注: contrib 成果物として、\n" | |||
|
190 | "配布されています) のような、制限付きのシェルと併用することで、\n" | |||
|
191 | "push/pull 以外の操作に関して、 ログイン済みユーザに対する抑止を行う、\n" | |||
|
192 | "という様な用途に適しています。 ユーザがログインできる一般的な環境では、\n" | |||
|
193 | "ユーザによって設定が無効化される可能性があるため、 ACL フックでの制限は、\n" | |||
|
194 | "安全とは言えません。 同一アカウントを、 複数人で共有するような場合も、\n" | |||
|
195 | "アクセス元のユーザを特定できないため、 安全とは言えません。" | |||
183 |
|
196 | |||
184 | msgid "The order in which access checks are performed is:" |
|
197 | msgid "The order in which access checks are performed is:" | |
185 | msgstr "" |
|
198 | msgstr "アクセス可否の判定順序は、 以下の通りです:" | |
186 |
|
199 | |||
187 | msgid "" |
|
200 | msgid "" | |
188 | "1) Deny list for branches (section ``acl.deny.branches``)\n" |
|
201 | "1) Deny list for branches (section ``acl.deny.branches``)\n" | |
@@ -190,38 +203,53 b' msgid ""' | |||||
190 | "3) Deny list for paths (section ``acl.deny``)\n" |
|
203 | "3) Deny list for paths (section ``acl.deny``)\n" | |
191 | "4) Allow list for paths (section ``acl.allow``)" |
|
204 | "4) Allow list for paths (section ``acl.allow``)" | |
192 | msgstr "" |
|
205 | msgstr "" | |
|
206 | "1) ブランチへの禁止一覧 (``acl.deny.branches`` セクション)\n" | |||
|
207 | "2) ブランチへの許可一覧 (``acl.allow.branches`` セクション)\n" | |||
|
208 | "3) パスへの禁止一覧 (``acl.deny`` セクション)\n" | |||
|
209 | "4) パスへの許可一覧 (``acl.allow`` セクション)" | |||
193 |
|
210 | |||
194 | msgid "The allow and deny sections take key-value pairs." |
|
211 | msgid "The allow and deny sections take key-value pairs." | |
195 | msgstr "" |
|
212 | msgstr "許可/禁止のいずれも、 キー/値の対で設定します。" | |
196 |
|
213 | |||
197 | msgid "" |
|
214 | msgid "" | |
198 | "Branch-based Access Control\n" |
|
215 | "Branch-based Access Control\n" | |
199 | "..........................." |
|
216 | "..........................." | |
200 | msgstr "" |
|
217 | msgstr "" | |
|
218 | "ブランチベースのアクセス制御\n" | |||
|
219 | "............................" | |||
201 |
|
220 | |||
202 | msgid "" |
|
221 | msgid "" | |
203 | "Use the ``acl.deny.branches`` and ``acl.allow.branches`` sections to\n" |
|
222 | "Use the ``acl.deny.branches`` and ``acl.allow.branches`` sections to\n" | |
204 | "have branch-based access control. Keys in these sections can be\n" |
|
223 | "have branch-based access control. Keys in these sections can be\n" | |
205 | "either:" |
|
224 | "either:" | |
206 | msgstr "" |
|
225 | msgstr "" | |
|
226 | "ブランチベースのアクセス制御には、 ``acl.deny.branches`` および\n" | |||
|
227 | "``acl.allow.branches`` セクションでの設定が使用されます。\n" | |||
|
228 | "これらのセクションでは、 以下のいずれかを、 キーとして指定します:" | |||
207 |
|
229 | |||
208 | msgid "" |
|
230 | msgid "" | |
209 | "- a branch name, or\n" |
|
231 | "- a branch name, or\n" | |
210 | "- an asterisk, to match any branch;" |
|
232 | "- an asterisk, to match any branch;" | |
211 | msgstr "" |
|
233 | msgstr "" | |
|
234 | "- ブランチ名、ないし\n" | |||
|
235 | "- 「全ブランチ」を意味するアスタリスク(``*``)" | |||
212 |
|
236 | |||
213 | msgid "The corresponding values can be either:" |
|
237 | msgid "The corresponding values can be either:" | |
214 | msgstr "" |
|
238 | msgstr "キーに対応する値には、 以下のいずれかを指定します:" | |
215 |
|
239 | |||
216 | msgid "" |
|
240 | msgid "" | |
217 | "- a comma-separated list containing users and groups, or\n" |
|
241 | "- a comma-separated list containing users and groups, or\n" | |
218 | "- an asterisk, to match anyone;" |
|
242 | "- an asterisk, to match anyone;" | |
219 | msgstr "" |
|
243 | msgstr "" | |
|
244 | "- ユーザ/グループの名前を、 カンマ区切りで並べた一覧、 ないし\n" | |||
|
245 | "- 「全て」を意味するアスタリスク" | |||
220 |
|
246 | |||
221 | msgid "" |
|
247 | msgid "" | |
222 | "Path-based Access Control\n" |
|
248 | "Path-based Access Control\n" | |
223 | "........................." |
|
249 | "........................." | |
224 | msgstr "" |
|
250 | msgstr "" | |
|
251 | "パスベースのアクセス制御\n" | |||
|
252 | "........................" | |||
225 |
|
253 | |||
226 | msgid "" |
|
254 | msgid "" | |
227 | "Use the ``acl.deny`` and ``acl.allow`` sections to have path-based\n" |
|
255 | "Use the ``acl.deny`` and ``acl.allow`` sections to have path-based\n" | |
@@ -229,16 +257,25 b' msgid ""' | |||||
229 | "a glob syntax by default). The corresponding values follow the same\n" |
|
257 | "a glob syntax by default). The corresponding values follow the same\n" | |
230 | "syntax as the other sections above." |
|
258 | "syntax as the other sections above." | |
231 | msgstr "" |
|
259 | msgstr "" | |
|
260 | "パスベースのアクセス制御には ``acl.deny`` および ``acl.allow``\n" | |||
|
261 | "セクションでの設定が使用されます。 これらのセクションでは、\n" | |||
|
262 | "パスの合致判定をするパターン (無指定時の記述文法は glob) を、\n" | |||
|
263 | "キーとして指定します。 キーに対応する値の記述方式は、\n" | |||
|
264 | "他のセクションと同じです。" | |||
232 |
|
265 | |||
233 | msgid "" |
|
266 | msgid "" | |
234 | "Groups\n" |
|
267 | "Groups\n" | |
235 | "......" |
|
268 | "......" | |
236 | msgstr "" |
|
269 | msgstr "" | |
|
270 | "グループ\n" | |||
|
271 | "........" | |||
237 |
|
272 | |||
238 | msgid "" |
|
273 | msgid "" | |
239 | "Group names must be prefixed with an ``@`` symbol. Specifying a group\n" |
|
274 | "Group names must be prefixed with an ``@`` symbol. Specifying a group\n" | |
240 | "name has the same effect as specifying all the users in that group." |
|
275 | "name has the same effect as specifying all the users in that group." | |
241 | msgstr "" |
|
276 | msgstr "" | |
|
277 | "グループ名を記述する場合、 接頭辞として ``@`` を付与します。\n" | |||
|
278 | "グループ名記述は、 グループに属する全ユーザの列挙と、 同じ効果を持ちます。" | |||
242 |
|
279 | |||
243 | msgid "" |
|
280 | msgid "" | |
244 | "You can define group members in the ``acl.groups`` section.\n" |
|
281 | "You can define group members in the ``acl.groups`` section.\n" | |
@@ -246,11 +283,17 b' msgid ""' | |||||
246 | "a Unix-like system, the list of users will be taken from the OS.\n" |
|
283 | "a Unix-like system, the list of users will be taken from the OS.\n" | |
247 | "Otherwise, an exception will be raised." |
|
284 | "Otherwise, an exception will be raised." | |
248 | msgstr "" |
|
285 | msgstr "" | |
|
286 | "グループのメンバーは、 ``acl.groups`` セクションで定義できます。\n" | |||
|
287 | "このセクションにおいて、 グループ名が定義されていない場合、\n" | |||
|
288 | "UNIX 系の環境下であれば、 グループのメンバーに関する情報は、\n" | |||
|
289 | "OS から取得されます。 それ以外の場合は、 例外が発生します。" | |||
249 |
|
290 | |||
250 | msgid "" |
|
291 | msgid "" | |
251 | "Example Configuration\n" |
|
292 | "Example Configuration\n" | |
252 | "....................." |
|
293 | "....................." | |
253 | msgstr "" |
|
294 | msgstr "" | |
|
295 | "設定例\n" | |||
|
296 | "......" | |||
254 |
|
297 | |||
255 | msgid "::" |
|
298 | msgid "::" | |
256 | msgstr "::" |
|
299 | msgstr "::" | |
@@ -262,12 +305,16 b' msgid ""' | |||||
262 | " # Use this if you want to check access restrictions at commit time\n" |
|
305 | " # Use this if you want to check access restrictions at commit time\n" | |
263 | " pretxncommit.acl = python:hgext.acl.hook" |
|
306 | " pretxncommit.acl = python:hgext.acl.hook" | |
264 | msgstr "" |
|
307 | msgstr "" | |
|
308 | " # コミット実行に制限を掛けたい場合の設定\n" | |||
|
309 | " pretxncommit.acl = python:hgext.acl.hook" | |||
265 |
|
310 | |||
266 | msgid "" |
|
311 | msgid "" | |
267 | " # Use this if you want to check access restrictions for pull, push,\n" |
|
312 | " # Use this if you want to check access restrictions for pull, push,\n" | |
268 | " # bundle and serve.\n" |
|
313 | " # bundle and serve.\n" | |
269 | " pretxnchangegroup.acl = python:hgext.acl.hook" |
|
314 | " pretxnchangegroup.acl = python:hgext.acl.hook" | |
270 | msgstr "" |
|
315 | msgstr "" | |
|
316 | " # pull push bundle serve 実行に制限を掛けたい場合の設定\n" | |||
|
317 | " pretxnchangegroup.acl = python:hgext.acl.hook" | |||
271 |
|
318 | |||
272 | msgid "" |
|
319 | msgid "" | |
273 | " [acl]\n" |
|
320 | " [acl]\n" | |
@@ -278,42 +325,61 b' msgid ""' | |||||
278 | " # Default: serve\n" |
|
325 | " # Default: serve\n" | |
279 | " sources = serve" |
|
326 | " sources = serve" | |
280 | msgstr "" |
|
327 | msgstr "" | |
|
328 | " [acl]\n" | |||
|
329 | " # 変更反映元種別が、以下に列挙されている場合のみ、許可/禁止を行い、\n" | |||
|
330 | " # それ以外の場合は、制限を行わない。 指定可能な種別は、http ないし\n" | |||
|
331 | " # ssh 経由での全アクセスを指す \"serve\" か、対応するコマンドの\n" | |||
|
332 | " # (ローカルでの)実行に対応する \"push\" \"pull\" \"bundle\" です。\n" | |||
|
333 | " # デフォルト値: serve\n" | |||
|
334 | " sources = serve" | |||
281 |
|
335 | |||
282 | msgid " [acl.deny.branches]" |
|
336 | msgid " [acl.deny.branches]" | |
283 | msgstr "" |
|
337 | msgstr " [acl.deny.branches]" | |
284 |
|
338 | |||
285 | msgid "" |
|
339 | msgid "" | |
286 | " # Everyone is denied to the frozen branch:\n" |
|
340 | " # Everyone is denied to the frozen branch:\n" | |
287 | " frozen-branch = *" |
|
341 | " frozen-branch = *" | |
288 | msgstr "" |
|
342 | msgstr "" | |
|
343 | " # いずれのユーザも frozen-branch へのアクセスを禁止:\n" | |||
|
344 | " frozen-branch = *" | |||
289 |
|
345 | |||
290 | msgid "" |
|
346 | msgid "" | |
291 | " # A bad user is denied on all branches:\n" |
|
347 | " # A bad user is denied on all branches:\n" | |
292 | " * = bad-user" |
|
348 | " * = bad-user" | |
293 | msgstr "" |
|
349 | msgstr "" | |
|
350 | " # bad-user は全てのブランチへのアクセスを禁止:\n" | |||
|
351 | " * = bad-user" | |||
294 |
|
352 | |||
295 | msgid " [acl.allow.branches]" |
|
353 | msgid " [acl.allow.branches]" | |
296 | msgstr "" |
|
354 | msgstr " [acl.allow.branches]" | |
297 |
|
355 | |||
298 | msgid "" |
|
356 | msgid "" | |
299 | " # A few users are allowed on branch-a:\n" |
|
357 | " # A few users are allowed on branch-a:\n" | |
300 | " branch-a = user-1, user-2, user-3" |
|
358 | " branch-a = user-1, user-2, user-3" | |
301 | msgstr "" |
|
359 | msgstr "" | |
|
360 | " # branch-a へのアクセスを特定のユーザにのみ許可:\n" | |||
|
361 | " branch-a = user-1, user-2, user-3" | |||
302 |
|
362 | |||
303 | msgid "" |
|
363 | msgid "" | |
304 | " # Only one user is allowed on branch-b:\n" |
|
364 | " # Only one user is allowed on branch-b:\n" | |
305 | " branch-b = user-1" |
|
365 | " branch-b = user-1" | |
306 | msgstr "" |
|
366 | msgstr "" | |
|
367 | " # branch-b へのアクセスを一人のユーザにのみ許可:\n" | |||
|
368 | " branch-b = user-1" | |||
307 |
|
369 | |||
308 | msgid "" |
|
370 | msgid "" | |
309 | " # The super user is allowed on any branch:\n" |
|
371 | " # The super user is allowed on any branch:\n" | |
310 | " * = super-user" |
|
372 | " * = super-user" | |
311 | msgstr "" |
|
373 | msgstr "" | |
|
374 | " # super-user は全てのブランチにアクセス可能:\n" | |||
|
375 | " * = super-user" | |||
312 |
|
376 | |||
313 | msgid "" |
|
377 | msgid "" | |
314 | " # Everyone is allowed on branch-for-tests:\n" |
|
378 | " # Everyone is allowed on branch-for-tests:\n" | |
315 | " branch-for-tests = *" |
|
379 | " branch-for-tests = *" | |
316 | msgstr "" |
|
380 | msgstr "" | |
|
381 | " # 全てのユーザは branch-for-tests にアクセス可能:\n" | |||
|
382 | " branch-for-tests = *" | |||
317 |
|
383 | |||
318 | msgid "" |
|
384 | msgid "" | |
319 | " [acl.deny]\n" |
|
385 | " [acl.deny]\n" | |
@@ -321,45 +387,68 b' msgid ""' | |||||
321 | " # checked. All users are granted access if acl.deny is not present.\n" |
|
387 | " # checked. All users are granted access if acl.deny is not present.\n" | |
322 | " # Format for both lists: glob pattern = user, ..., @group, ..." |
|
388 | " # Format for both lists: glob pattern = user, ..., @group, ..." | |
323 | msgstr "" |
|
389 | msgstr "" | |
|
390 | " [acl.deny]\n" | |||
|
391 | " # acl.allow よりも先に、 本セクションの設定に対して確認が実施されます。\n" | |||
|
392 | " # 合致する設定があった場合、acl.allow セクションの設定は無視されます。\n" | |||
|
393 | " # acl.deny 設定が無い場合、全ユーザにアクセスが許可されます。\n" | |||
|
394 | " # 記述形式: 合致パターン = ユーザ名, ..., @グループ名, ..." | |||
324 |
|
395 | |||
325 | msgid "" |
|
396 | msgid "" | |
326 | " # To match everyone, use an asterisk for the user:\n" |
|
397 | " # To match everyone, use an asterisk for the user:\n" | |
327 | " # my/glob/pattern = *" |
|
398 | " # my/glob/pattern = *" | |
328 | msgstr "" |
|
399 | msgstr "" | |
|
400 | " # 全ユーザにマッチさせる場合は、値にアスタリスクを指定:\n" | |||
|
401 | " # my/glob/pattern = *" | |||
329 |
|
402 | |||
330 | msgid "" |
|
403 | msgid "" | |
331 | " # user6 will not have write access to any file:\n" |
|
404 | " # user6 will not have write access to any file:\n" | |
332 | " ** = user6" |
|
405 | " ** = user6" | |
333 | msgstr "" |
|
406 | msgstr "" | |
|
407 | " # user6 は全てのファイルに対してアクセス禁止:\n" | |||
|
408 | " ** = user6" | |||
334 |
|
409 | |||
335 | msgid "" |
|
410 | msgid "" | |
336 | " # Group \"hg-denied\" will not have write access to any file:\n" |
|
411 | " # Group \"hg-denied\" will not have write access to any file:\n" | |
337 | " ** = @hg-denied" |
|
412 | " ** = @hg-denied" | |
338 | msgstr "" |
|
413 | msgstr "" | |
|
414 | " # グループ \"hg-denied\" は全てのファイルに対してアクセス禁止:\n" | |||
|
415 | " ** = @hg-denied" | |||
339 |
|
416 | |||
340 | msgid "" |
|
417 | msgid "" | |
341 | " # Nobody will be able to change \"DONT-TOUCH-THIS.txt\", despite\n" |
|
418 | " # Nobody will be able to change \"DONT-TOUCH-THIS.txt\", despite\n" | |
342 | " # everyone being able to change all other files. See below.\n" |
|
419 | " # everyone being able to change all other files. See below.\n" | |
343 | " src/main/resources/DONT-TOUCH-THIS.txt = *" |
|
420 | " src/main/resources/DONT-TOUCH-THIS.txt = *" | |
344 | msgstr "" |
|
421 | msgstr "" | |
|
422 | " # 全ユーザに対して \"DONT-TOUCH-THIS.txt\" はアクセス禁止。\n" | |||
|
423 | " # (他のファイルにアクセス可能なユーザであっても同様)\n" | |||
|
424 | " src/main/resources/DONT-TOUCH-THIS.txt = *" | |||
345 |
|
425 | |||
346 | msgid "" |
|
426 | msgid "" | |
347 | " [acl.allow]\n" |
|
427 | " [acl.allow]\n" | |
348 | " # if acl.allow is not present, all users are allowed by default\n" |
|
428 | " # if acl.allow is not present, all users are allowed by default\n" | |
349 | " # empty acl.allow = no users allowed" |
|
429 | " # empty acl.allow = no users allowed" | |
350 | msgstr "" |
|
430 | msgstr "" | |
|
431 | " [acl.allow]\n" | |||
|
432 | " # 設定ファイルに acl.allow セクションが無い場合、全ユーザに対して、\n" | |||
|
433 | " # 全アクセスが許可されます。 空の acl.allow セクションは、\n" | |||
|
434 | " # 全ユーザに対して「許可を与えない」ことを意味します。" | |||
351 |
|
435 | |||
352 | msgid "" |
|
436 | msgid "" | |
353 | " # User \"doc_writer\" has write access to any file under the \"docs\"\n" |
|
437 | " # User \"doc_writer\" has write access to any file under the \"docs\"\n" | |
354 | " # folder:\n" |
|
438 | " # folder:\n" | |
355 | " docs/** = doc_writer" |
|
439 | " docs/** = doc_writer" | |
356 | msgstr "" |
|
440 | msgstr "" | |
|
441 | " # ユーザ \"doc_writer\" は \"docs\" 配下の任意のファイルにアクセス可能:\n" | |||
|
442 | " docs/** = doc_writer" | |||
357 |
|
443 | |||
358 | msgid "" |
|
444 | msgid "" | |
359 | " # User \"jack\" and group \"designers\" have write access to any file\n" |
|
445 | " # User \"jack\" and group \"designers\" have write access to any file\n" | |
360 | " # under the \"images\" folder:\n" |
|
446 | " # under the \"images\" folder:\n" | |
361 | " images/** = jack, @designers" |
|
447 | " images/** = jack, @designers" | |
362 | msgstr "" |
|
448 | msgstr "" | |
|
449 | " # ユーザ \"jack\" とグループ \"designers\" は \"images\" 配下の任意の\n" | |||
|
450 | " # ファイルにアクセス可能:\n" | |||
|
451 | " images/** = jack, @designers" | |||
363 |
|
452 | |||
364 | msgid "" |
|
453 | msgid "" | |
365 | " # Everyone (except for \"user6\" - see acl.deny above) will have write\n" |
|
454 | " # Everyone (except for \"user6\" - see acl.deny above) will have write\n" | |
@@ -367,13 +456,19 b' msgid ""' | |||||
367 | " # file. See acl.deny):\n" |
|
456 | " # file. See acl.deny):\n" | |
368 | " src/main/resources/** = *" |
|
457 | " src/main/resources/** = *" | |
369 | msgstr "" |
|
458 | msgstr "" | |
|
459 | " # acl.deny で禁止されている \"user6\" 以外の全てのユーザに対して\n" | |||
|
460 | " # (※ 訳注: グループ \"hg-denied\" も禁止されている筈)\n" | |||
|
461 | " # \"resources\" 配下の任意のファイルへのアクセスを許可。\n" | |||
|
462 | " # 但し acl.deny で全ユーザにアクセス禁止されている\n" | |||
|
463 | " # src/main/resources/DONT-TOUCH-THIS.txt を除く:\n" | |||
|
464 | " src/main/resources/** = *" | |||
370 |
|
465 | |||
371 | msgid " .hgtags = release_engineer" |
|
466 | msgid " .hgtags = release_engineer" | |
372 | msgstr "" |
|
467 | msgstr " .hgtags = release_engineer" | |
373 |
|
468 | |||
374 | #, python-format |
|
469 | #, python-format | |
375 | msgid "group '%s' is undefined" |
|
470 | msgid "group '%s' is undefined" | |
376 | msgstr "" |
|
471 | msgstr "グループ '%s' は未定義です" | |
377 |
|
472 | |||
378 | #, python-format |
|
473 | #, python-format | |
379 | msgid "" |
|
474 | msgid "" | |
@@ -5933,12 +6028,14 b' msgid "operate on patch repository"' | |||||
5933 | msgstr "パッチ管理リポジトリへの操作" |
|
6028 | msgstr "パッチ管理リポジトリへの操作" | |
5934 |
|
6029 | |||
5935 | msgid "hooks for sending email push notifications" |
|
6030 | msgid "hooks for sending email push notifications" | |
5936 |
msgstr "push 通知 |
|
6031 | msgstr "電子メールによる push 通知送信用フック集" | |
5937 |
|
6032 | |||
5938 | msgid "" |
|
6033 | msgid "" | |
5939 | "This extension let you run hooks sending email notifications when\n" |
|
6034 | "This extension let you run hooks sending email notifications when\n" | |
5940 | "changesets are being pushed, from the sending or receiving side." |
|
6035 | "changesets are being pushed, from the sending or receiving side." | |
5941 | msgstr "" |
|
6036 | msgstr "" | |
|
6037 | "本エクステンションは、 変更履歴が反映された際に、 反映元ないし反映先の、\n" | |||
|
6038 | "いずれかが契機となって、 電子メールによる通知を行う機能を提供します。" | |||
5942 |
|
6039 | |||
5943 | msgid "" |
|
6040 | msgid "" | |
5944 | "First, enable the extension as explained in :hg:`help extensions`, and\n" |
|
6041 | "First, enable the extension as explained in :hg:`help extensions`, and\n" | |
@@ -5946,6 +6043,10 b' msgid ""' | |||||
5946 | "are run by the changesets receiver while the ``outgoing`` one is for\n" |
|
6043 | "are run by the changesets receiver while the ``outgoing`` one is for\n" | |
5947 | "the sender::" |
|
6044 | "the sender::" | |
5948 | msgstr "" |
|
6045 | msgstr "" | |
|
6046 | ":hg:`help extensions` にならって、 本エクステンションを有効にした上で、\n" | |||
|
6047 | "実行したいフックを登録してください。 `incoming`` および ``outgoing``\n" | |||
|
6048 | "(※ 訳注: ``changegroup`` の間違い?) フックは反映「先」で、\n" | |||
|
6049 | "``outgoing`` は反映「元」で実行されます::" | |||
5949 |
|
6050 | |||
5950 | msgid "" |
|
6051 | msgid "" | |
5951 | " [hooks]\n" |
|
6052 | " [hooks]\n" | |
@@ -5954,11 +6055,18 b' msgid ""' | |||||
5954 | " # one email for all incoming changesets\n" |
|
6055 | " # one email for all incoming changesets\n" | |
5955 | " changegroup.notify = python:hgext.notify.hook" |
|
6056 | " changegroup.notify = python:hgext.notify.hook" | |
5956 | msgstr "" |
|
6057 | msgstr "" | |
|
6058 | " [hooks]\n" | |||
|
6059 | " # 取り込み処理時にリビジョン毎にメールを送信\n" | |||
|
6060 | " incoming.notify = python:hgext.notify.hook\n" | |||
|
6061 | " # 取り込み処理毎にメールを送信\n" | |||
|
6062 | " changegroup.notify = python:hgext.notify.hook" | |||
5957 |
|
6063 | |||
5958 | msgid "" |
|
6064 | msgid "" | |
5959 | " # one email for all outgoing changesets\n" |
|
6065 | " # one email for all outgoing changesets\n" | |
5960 | " outgoing.notify = python:hgext.notify.hook" |
|
6066 | " outgoing.notify = python:hgext.notify.hook" | |
5961 | msgstr "" |
|
6067 | msgstr "" | |
|
6068 | " # 反映処理毎にメールを送信\n" | |||
|
6069 | " outgoing.notify = python:hgext.notify.hook" | |||
5962 |
|
6070 | |||
5963 | msgid "" |
|
6071 | msgid "" | |
5964 | "Now the hooks are running, subscribers must be assigned to\n" |
|
6072 | "Now the hooks are running, subscribers must be assigned to\n" | |
@@ -5966,6 +6074,9 b' msgid ""' | |||||
5966 | "given email or the ``[reposubs]`` section to map emails to a single\n" |
|
6074 | "given email or the ``[reposubs]`` section to map emails to a single\n" | |
5967 | "repository::" |
|
6075 | "repository::" | |
5968 | msgstr "" |
|
6076 | msgstr "" | |
|
6077 | "フック実行には、 リポジトリに対するメール送信先 (subscriber:購読者)\n" | |||
|
6078 | "の設定が必要です。 メール送信先毎のリポジトリ設定には ``[usersubs]``、\n" | |||
|
6079 | "リポジトリ毎のメール送信先設定には ``[reposubs]`` を使用します::" | |||
5969 |
|
6080 | |||
5970 | msgid "" |
|
6081 | msgid "" | |
5971 | " [usersubs]\n" |
|
6082 | " [usersubs]\n" | |
@@ -5973,6 +6084,10 b' msgid ""' | |||||
5973 | " # patterns\n" |
|
6084 | " # patterns\n" | |
5974 | " user@host = pattern" |
|
6085 | " user@host = pattern" | |
5975 | msgstr "" |
|
6086 | msgstr "" | |
|
6087 | " [usersubs]\n" | |||
|
6088 | " # 左辺には送信先メールアドレス、右辺にはカンマ区切りの合致(glob)\n" | |||
|
6089 | " # パターンを記述してください\n" | |||
|
6090 | " user@host = pattern" | |||
5976 |
|
6091 | |||
5977 | msgid "" |
|
6092 | msgid "" | |
5978 | " [reposubs]\n" |
|
6093 | " [reposubs]\n" | |
@@ -5980,39 +6095,53 b' msgid ""' | |||||
5980 | " # emails\n" |
|
6095 | " # emails\n" | |
5981 | " pattern = user@host" |
|
6096 | " pattern = user@host" | |
5982 | msgstr "" |
|
6097 | msgstr "" | |
|
6098 | " # 左辺には合致パターン、右辺にはカンマ区切りの送信先メールアドレスを\n" | |||
|
6099 | " # 記述してください\n" | |||
|
6100 | " pattern = user@host" | |||
5983 |
|
6101 | |||
5984 | msgid "" |
|
6102 | msgid "" | |
5985 | "Glob patterns are matched against absolute path to repository\n" |
|
6103 | "Glob patterns are matched against absolute path to repository\n" | |
5986 | "root. The subscriptions can be defined in their own file and\n" |
|
6104 | "root. The subscriptions can be defined in their own file and\n" | |
5987 | "referenced with::" |
|
6105 | "referenced with::" | |
5988 | msgstr "" |
|
6106 | msgstr "" | |
|
6107 | "合致パターンの適用対象は、 リポジトリルートの絶対パスです。\n" | |||
|
6108 | "メール送信設定は、 別途設定ファイルにおいて、 記述することもできます::" | |||
5989 |
|
6109 | |||
5990 | msgid "" |
|
6110 | msgid "" | |
5991 | " [notify]\n" |
|
6111 | " [notify]\n" | |
5992 | " config = /path/to/subscriptionsfile" |
|
6112 | " config = /path/to/subscriptionsfile" | |
5993 | msgstr "" |
|
6113 | msgstr "" | |
|
6114 | " [notify]\n" | |||
|
6115 | " config = /path/to/subscriptionsfile" | |||
5994 |
|
6116 | |||
5995 | msgid "" |
|
6117 | msgid "" | |
5996 | "Alternatively, they can be added to Mercurial configuration files by\n" |
|
6118 | "Alternatively, they can be added to Mercurial configuration files by\n" | |
5997 | "setting the previous entry to an empty value." |
|
6119 | "setting the previous entry to an empty value." | |
5998 | msgstr "" |
|
6120 | msgstr "" | |
|
6121 | "Mercurial の設定ファイルには、 これらの値に空値を設定する記述を、\n" | |||
|
6122 | "「とりあえず」書いておいても構いません。" | |||
5999 |
|
6123 | |||
6000 | msgid "" |
|
6124 | msgid "" | |
6001 | "At this point, notifications should be generated but will not be sent until " |
|
6125 | "At this point, notifications should be generated but will not be sent until " | |
6002 | "you\n" |
|
6126 | "you\n" | |
6003 | "set the ``notify.test`` entry to ``False``." |
|
6127 | "set the ``notify.test`` entry to ``False``." | |
6004 | msgstr "" |
|
6128 | msgstr "" | |
|
6129 | "ここまでの段階では、 通知内容は生成されますが、 ``notify.test`` 設定を\n" | |||
|
6130 | "``False`` にしない限り、 通知メールは送信されないからです。" | |||
6005 |
|
6131 | |||
6006 | msgid "" |
|
6132 | msgid "" | |
6007 | "Notifications content can be tweaked with the following configuration " |
|
6133 | "Notifications content can be tweaked with the following configuration " | |
6008 | "entries:" |
|
6134 | "entries:" | |
6009 | msgstr "" |
|
6135 | msgstr "通知内容は、 以下の設定により変更可能です:" | |
6010 |
|
6136 | |||
6011 | msgid "" |
|
6137 | msgid "" | |
6012 | "notify.test\n" |
|
6138 | "notify.test\n" | |
6013 | " If ``True``, print messages to stdout instead of sending them. Default: " |
|
6139 | " If ``True``, print messages to stdout instead of sending them. Default: " | |
6014 | "True." |
|
6140 | "True." | |
6015 | msgstr "" |
|
6141 | msgstr "" | |
|
6142 | "notify.test\n" | |||
|
6143 | " 真値の場合、 生成された通知内容は、 標準出力に書き出されます\n" | |||
|
6144 | " (メール送信無し)。 デフォルト値は True" | |||
6016 |
|
6145 | |||
6017 | msgid "" |
|
6146 | msgid "" | |
6018 | "notify.sources\n" |
|
6147 | "notify.sources\n" | |
@@ -6024,6 +6153,14 b' msgid ""' | |||||
6024 | " locally. Outgoing sources are the same except for ``unbundle`` which\n" |
|
6153 | " locally. Outgoing sources are the same except for ``unbundle`` which\n" | |
6025 | " is replaced by ``bundle``. Default: serve." |
|
6154 | " is replaced by ``bundle``. Default: serve." | |
6026 | msgstr "" |
|
6155 | msgstr "" | |
|
6156 | "notify.sources\n" | |||
|
6157 | " 空白区切りの、 変更反映元一覧。 変更反映元ないし、 変更反映先の種別が、\n" | |||
|
6158 | " 一覧に含まれる場合にのみ、 通知メールが送信されます。 incoming の場合、\n" | |||
|
6159 | " 反映元種別は、 http ないし ssh 経由での ``serve``、 :hg:`pull`\n" | |||
|
6160 | " 実行での ``pull``、 :hg:`unbundle` 実行での ``unbundle``、\n" | |||
|
6161 | " ローカルホスト上における :hg:`push` 実行での ``push`` のいずれかです。\n" | |||
|
6162 | " outgoing の場合、 ``unbundle`` が ``bundle`` になる以外は、\n" | |||
|
6163 | " 同じ種別が使用されます。 デフォルト値は serve。" | |||
6027 |
|
6164 | |||
6028 | msgid "" |
|
6165 | msgid "" | |
6029 | "notify.strip\n" |
|
6166 | "notify.strip\n" | |
@@ -6035,64 +6172,98 b' msgid ""' | |||||
6035 | "change\n" |
|
6172 | "change\n" | |
6036 | " ``/long/path/repository`` into ``repository``. Default: 0." |
|
6173 | " ``/long/path/repository`` into ``repository``. Default: 0." | |
6037 | msgstr "" |
|
6174 | msgstr "" | |
|
6175 | "notify.strip\n" | |||
|
6176 | " URL パス冒頭から取り除く、 スラッシュ数。 無指定時は、\n" | |||
|
6177 | " リポジトリの絶対パスが使用されます。 ``notify.strip`` によって、\n" | |||
|
6178 | " リポジトリのパスを、 相対パス化することができます。 例えば、\n" | |||
|
6179 | " ``notify.strip=3`` は ``/long/path/repository`` を ``repository``\n" | |||
|
6180 | " に改変します。 デフォルト値は 0。" | |||
6038 |
|
6181 | |||
6039 | msgid "" |
|
6182 | msgid "" | |
6040 | "notify.domain\n" |
|
6183 | "notify.domain\n" | |
6041 | " If subscribers emails or the from email have no domain set, complete them\n" |
|
6184 | " If subscribers emails or the from email have no domain set, complete them\n" | |
6042 | " with this value." |
|
6185 | " with this value." | |
6043 | msgstr "" |
|
6186 | msgstr "" | |
|
6187 | "notify.domain\n" | |||
|
6188 | " 電子メールの送信先、 ないし送信元が、 ドメイン部分を持たない場合に、\n" | |||
|
6189 | " この設定値が使用されます。" | |||
6044 |
|
6190 | |||
6045 | msgid "" |
|
6191 | msgid "" | |
6046 | "notify.style\n" |
|
6192 | "notify.style\n" | |
6047 | " Style file to use when formatting emails." |
|
6193 | " Style file to use when formatting emails." | |
6048 | msgstr "" |
|
6194 | msgstr "" | |
|
6195 | "notify.style\n" | |||
|
6196 | " メール本文の整形に用いる、 スタイルファイル名。" | |||
6049 |
|
6197 | |||
6050 | msgid "" |
|
6198 | msgid "" | |
6051 | "notify.template\n" |
|
6199 | "notify.template\n" | |
6052 | " Template to use when formatting emails." |
|
6200 | " Template to use when formatting emails." | |
6053 | msgstr "" |
|
6201 | msgstr "" | |
|
6202 | "notify.template\n" | |||
|
6203 | " メール本文の整形に用いる、 テンプレート指定。" | |||
6054 |
|
6204 | |||
6055 | msgid "" |
|
6205 | msgid "" | |
6056 | "notify.incoming\n" |
|
6206 | "notify.incoming\n" | |
6057 | " Template to use when run as incoming hook, override ``notify.template``." |
|
6207 | " Template to use when run as incoming hook, override ``notify.template``." | |
6058 | msgstr "" |
|
6208 | msgstr "" | |
|
6209 | "notify.incoming\n" | |||
|
6210 | " incoming フックで使用するテンプレート指定。 設定された場合は、\n" | |||
|
6211 | " ``notify.template`` に優先します。" | |||
6059 |
|
6212 | |||
6060 | msgid "" |
|
6213 | msgid "" | |
6061 | "notify.outgoing\n" |
|
6214 | "notify.outgoing\n" | |
6062 | " Template to use when run as outgoing hook, override ``notify.template``." |
|
6215 | " Template to use when run as outgoing hook, override ``notify.template``." | |
6063 | msgstr "" |
|
6216 | msgstr "" | |
|
6217 | "notify.outgoing\n" | |||
|
6218 | " outgoing フックで使用するテンプレート設定。 設定された場合は、\n" | |||
|
6219 | " ``notify.template`` に優先します。" | |||
6064 |
|
6220 | |||
6065 | msgid "" |
|
6221 | msgid "" | |
6066 | "notify.changegroup\n" |
|
6222 | "notify.changegroup\n" | |
6067 | " Template to use when running as changegroup hook, override\n" |
|
6223 | " Template to use when running as changegroup hook, override\n" | |
6068 | " ``notify.template``." |
|
6224 | " ``notify.template``." | |
6069 | msgstr "" |
|
6225 | msgstr "" | |
|
6226 | "notify.changegroup\n" | |||
|
6227 | " changegroup フックで使用するテンプレート設定、 設定された場合は、\n" | |||
|
6228 | " ``notify.template`` に優先します。" | |||
6070 |
|
6229 | |||
6071 | msgid "" |
|
6230 | msgid "" | |
6072 | "notify.maxdiff\n" |
|
6231 | "notify.maxdiff\n" | |
6073 | " Maximum number of diff lines to include in notification email. Set to 0\n" |
|
6232 | " Maximum number of diff lines to include in notification email. Set to 0\n" | |
6074 | " to disable the diff, -1 to include all of it. Default: 300." |
|
6233 | " to disable the diff, -1 to include all of it. Default: 300." | |
6075 | msgstr "" |
|
6234 | msgstr "" | |
|
6235 | "notify.maxdiff\n" | |||
|
6236 | " メール本文に含める、 差分情報の最大行数。 0 の場合は、 差分が含まれず、\n" | |||
|
6237 | " -1 の場合は、 全差分行が含まれます。 デフォルト値は 300。" | |||
6076 |
|
6238 | |||
6077 | msgid "" |
|
6239 | msgid "" | |
6078 | "notify.maxsubject\n" |
|
6240 | "notify.maxsubject\n" | |
6079 | " Maximum number of characters in emails subject line. Default: 67." |
|
6241 | " Maximum number of characters in emails subject line. Default: 67." | |
6080 | msgstr "" |
|
6242 | msgstr "" | |
|
6243 | "notify.maxsubject\n" | |||
|
6244 | " メール表題 (subject) の最大文字数。 デフォルト値は 67。" | |||
6081 |
|
6245 | |||
6082 | msgid "" |
|
6246 | msgid "" | |
6083 | "notify.diffstat\n" |
|
6247 | "notify.diffstat\n" | |
6084 | " Set to True to include a diffstat before diff content. Default: True." |
|
6248 | " Set to True to include a diffstat before diff content. Default: True." | |
6085 | msgstr "" |
|
6249 | msgstr "" | |
|
6250 | "notify.diffstat\n" | |||
|
6251 | " 差分統計 (diffstat) 通知の有無。 デフォルト値は True。" | |||
6086 |
|
6252 | |||
6087 | msgid "" |
|
6253 | msgid "" | |
6088 | "notify.merge\n" |
|
6254 | "notify.merge\n" | |
6089 | " If True, send notifications for merge changesets. Default: True." |
|
6255 | " If True, send notifications for merge changesets. Default: True." | |
6090 | msgstr "" |
|
6256 | msgstr "" | |
|
6257 | "notify.merge\n" | |||
|
6258 | " マージ実施リビジョンに関する、 通知の有無。 デフォルト値は True。" | |||
6091 |
|
6259 | |||
6092 | msgid "" |
|
6260 | msgid "" | |
6093 | "notify.mbox\n" |
|
6261 | "notify.mbox\n" | |
6094 | " If set, append mails to this mbox file instead of sending. Default: None." |
|
6262 | " If set, append mails to this mbox file instead of sending. Default: None." | |
6095 | msgstr "" |
|
6263 | msgstr "" | |
|
6264 | "notify.mbox\n" | |||
|
6265 | " 値が設定された場合、 mbox ファイル指定とみなし、 メール送信の代わりに、\n" | |||
|
6266 | " 送信内容を mbox ファイルに追記します。 デフォルト値は無設定。" | |||
6096 |
|
6267 | |||
6097 | msgid "" |
|
6268 | msgid "" | |
6098 | "notify.fromauthor\n" |
|
6269 | "notify.fromauthor\n" | |
@@ -6101,23 +6272,33 b' msgid ""' | |||||
6101 | " the notification mail. If not set, take the user from the pushing repo.\n" |
|
6272 | " the notification mail. If not set, take the user from the pushing repo.\n" | |
6102 | " Default: False." |
|
6273 | " Default: False." | |
6103 | msgstr "" |
|
6274 | msgstr "" | |
|
6275 | "notify.fromauthor\n" | |||
|
6276 | " 真値の場合、 通知対象 (の最初の) リビジョンのユーザ名を、 通知メールの\n" | |||
|
6277 | " \"From\" フィールドに使用します。 それ以外は、 変更反映元からの、\n" | |||
|
6278 | " ユーザ名情報を利用します。 デフォルト値は False。" | |||
6104 |
|
6279 | |||
6105 | msgid "" |
|
6280 | msgid "" | |
6106 | "If set, the following entries will also be used to customize the " |
|
6281 | "If set, the following entries will also be used to customize the " | |
6107 | "notifications:" |
|
6282 | "notifications:" | |
6108 | msgstr "" |
|
6283 | msgstr "通知のカスタマイズには、 以下の設定も利用可能です:" | |
6109 |
|
6284 | |||
6110 | msgid "" |
|
6285 | msgid "" | |
6111 | "email.from\n" |
|
6286 | "email.from\n" | |
6112 | " Email ``From`` address to use if none can be found in generated email " |
|
6287 | " Email ``From`` address to use if none can be found in generated email " | |
6113 | "content." |
|
6288 | "content." | |
6114 | msgstr "" |
|
6289 | msgstr "" | |
|
6290 | "email.from\n" | |||
|
6291 | " 生成された通知メール本文に、 相当する情報が無い場合は、 この値が\n" | |||
|
6292 | " ``From`` フィールドに使用されます。" | |||
6115 |
|
6293 | |||
6116 | msgid "" |
|
6294 | msgid "" | |
6117 | "web.baseurl\n" |
|
6295 | "web.baseurl\n" | |
6118 | " Root repository browsing URL to combine with repository paths when making\n" |
|
6296 | " Root repository browsing URL to combine with repository paths when making\n" | |
6119 | " references. See also ``notify.strip``." |
|
6297 | " references. See also ``notify.strip``." | |
6120 | msgstr "" |
|
6298 | msgstr "" | |
|
6299 | "web.baseurl\n" | |||
|
6300 | " リポジトリのパスと組み合わせて、 参照用 URL を生成する URL ベース。\n" | |||
|
6301 | " ``notify.strip`` も参照してください。" | |||
6121 |
|
6302 | |||
6122 | #, python-format |
|
6303 | #, python-format | |
6123 | msgid "%s: %d new changesets" |
|
6304 | msgid "%s: %d new changesets" | |
@@ -8098,6 +8279,10 b' msgid "%s: not overwriting - %s collides' | |||||
8098 | msgstr "%s: 上書き失敗 - %s は %s と衝突\n" |
|
8279 | msgstr "%s: 上書き失敗 - %s は %s と衝突\n" | |
8099 |
|
8280 | |||
8100 | #, python-format |
|
8281 | #, python-format | |
|
8282 | msgid "%s: can't copy - same file\n" | |||
|
8283 | msgstr "%s: コピー失敗 - 同一ファイルです\n" | |||
|
8284 | ||||
|
8285 | #, python-format | |||
8101 | msgid "%s: not overwriting - file exists\n" |
|
8286 | msgid "%s: not overwriting - file exists\n" | |
8102 | msgstr "%s: 上書きしません - ファイルが存在します\n" |
|
8287 | msgstr "%s: 上書きしません - ファイルが存在します\n" | |
8103 |
|
8288 | |||
@@ -13160,6 +13345,9 b' msgstr "** Mercurial Distributed SCM (ve' | |||||
13160 | msgid "** Extensions loaded: %s\n" |
|
13345 | msgid "** Extensions loaded: %s\n" | |
13161 | msgstr "** Extensions loaded: %s\n" |
|
13346 | msgstr "** Extensions loaded: %s\n" | |
13162 |
|
13347 | |||
|
13348 | msgid "too few arguments for command alias" | |||
|
13349 | msgstr "別名(エイリアス)への引数が足りません" | |||
|
13350 | ||||
13163 | #, python-format |
|
13351 | #, python-format | |
13164 | msgid "no definition for alias '%s'\n" |
|
13352 | msgid "no definition for alias '%s'\n" | |
13165 | msgstr "'%s' を別名に持つコマンドはありません\n" |
|
13353 | msgstr "'%s' を別名に持つコマンドはありません\n" | |
@@ -16157,10 +16345,10 b' msgid ""' | |||||
16157 | msgstr "" |
|
16345 | msgstr "" | |
16158 | "Mercurial の組み込みウェブサーバは、 認証 (authentication) を行いません\n" |
|
16346 | "Mercurial の組み込みウェブサーバは、 認証 (authentication) を行いません\n" | |
16159 | "(ユーザを確認するための、 ユーザ名やパスワードの入力を求めません) が、\n" |
|
16347 | "(ユーザを確認するための、 ユーザ名やパスワードの入力を求めません) が、\n" | |
16160 |
"承認 (authorization) の機能はあります |
|
16348 | "承認 (authorization: アクセス可否の判定) の機能はあります\n" | |
16161 | "認証済みユーザに対する、 アクセス可否の制御)。 利用するウェブサーバの、\n" |
|
16349 | "(本セクションでの設定を元に、 認証済みユーザに対して実施)。\n" | |
16162 |
"認証機能を Mercurial 向けに正しく設定するか |
|
16350 | "利用するウェブサーバの、 認証機能を Mercurial 向けに正しく設定するか、\n" | |
16163 | "無効化してください。" |
|
16351 | "Mercurial の承認機能を、 無効化してください。" | |
16164 |
|
16352 | |||
16165 | msgid "" |
|
16353 | msgid "" | |
16166 | "For a quick setup in a trusted environment, e.g., a private LAN, where\n" |
|
16354 | "For a quick setup in a trusted environment, e.g., a private LAN, where\n" |
@@ -5872,6 +5872,9 b' msgstr "nenhuma c\xc3\xb3pia de seguran\xc3\xa7a"' | |||||
5872 | msgid "no backups (DEPRECATED)" |
|
5872 | msgid "no backups (DEPRECATED)" | |
5873 | msgstr "sem cópias de segurança (OBSOLETO)" |
|
5873 | msgstr "sem cópias de segurança (OBSOLETO)" | |
5874 |
|
5874 | |||
|
5875 | msgid "ignored (DEPRECATED)" | |||
|
5876 | msgstr "ignorado (OBSOLETO)" | |||
|
5877 | ||||
5875 | msgid "do not modify working copy during strip" |
|
5878 | msgid "do not modify working copy during strip" | |
5876 | msgstr "não modifica a cópia de trabalho durante o strip" |
|
5879 | msgstr "não modifica a cópia de trabalho durante o strip" | |
5877 |
|
5880 | |||
@@ -8553,6 +8556,10 b' msgid "%s: not overwriting - %s collides' | |||||
8553 | msgstr "%s: não sobrescrito - %s colide com %s\n" |
|
8556 | msgstr "%s: não sobrescrito - %s colide com %s\n" | |
8554 |
|
8557 | |||
8555 | #, python-format |
|
8558 | #, python-format | |
|
8559 | msgid "%s: can't copy - same file\n" | |||
|
8560 | msgstr "%s: impossível copiar - é o mesmo arquivo\n" | |||
|
8561 | ||||
|
8562 | #, python-format | |||
8556 | msgid "%s: not overwriting - file exists\n" |
|
8563 | msgid "%s: not overwriting - file exists\n" | |
8557 | msgstr "%s: não sobrescrito - arquivo existe\n" |
|
8564 | msgstr "%s: não sobrescrito - arquivo existe\n" | |
8558 |
|
8565 | |||
@@ -13771,6 +13778,9 b' msgstr "** Mercurial SCM Distribu\xc3\xaddo (vers\xc3\xa3o %s)\\n"' | |||||
13771 | msgid "** Extensions loaded: %s\n" |
|
13778 | msgid "** Extensions loaded: %s\n" | |
13772 | msgstr "** Extensões carregadas: %s\n" |
|
13779 | msgstr "** Extensões carregadas: %s\n" | |
13773 |
|
13780 | |||
|
13781 | msgid "too few arguments for command alias" | |||
|
13782 | msgstr "faltam argumentos para o apelido de comando" | |||
|
13783 | ||||
13774 | #, python-format |
|
13784 | #, python-format | |
13775 | msgid "no definition for alias '%s'\n" |
|
13785 | msgid "no definition for alias '%s'\n" | |
13776 | msgstr "nenhuma definição para o apelido '%s'\n" |
|
13786 | msgstr "nenhuma definição para o apelido '%s'\n" | |
@@ -16404,7 +16414,7 b' msgstr ""' | |||||
16404 | " rápido (~10x) que um clone comum. Na maior parte de conexões WAN\n" |
|
16414 | " rápido (~10x) que um clone comum. Na maior parte de conexões WAN\n" | |
16405 | " (ou qualquer conexão mais lenta que cerca de 6 Mbps), streaming\n" |
|
16415 | " (ou qualquer conexão mais lenta que cerca de 6 Mbps), streaming\n" | |
16406 | " não comprimido é mais lento, por causa dos dados extras\n" |
|
16416 | " não comprimido é mais lento, por causa dos dados extras\n" | |
16407 |
" transferidos. Este modo também |
|
16417 | " transferidos. Este modo também usará\n" | |
16408 | " temporariamente o bloqueio de escrita no repositório enquanto\n" |
|
16418 | " temporariamente o bloqueio de escrita no repositório enquanto\n" | |
16409 | " forem determinados os dados a serem transmitidos.\n" |
|
16419 | " forem determinados os dados a serem transmitidos.\n" | |
16410 | " O padrão é True." |
|
16420 | " O padrão é True." |
@@ -82,6 +82,8 b' class dirstate(object):' | |||||
82 | f = {} |
|
82 | f = {} | |
83 | for name in self._map: |
|
83 | for name in self._map: | |
84 | f[util.normcase(name)] = name |
|
84 | f[util.normcase(name)] = name | |
|
85 | for name in self._dirs: | |||
|
86 | f[util.normcase(name)] = name | |||
85 | f['.'] = '.' # prevents useless util.fspath() invocation |
|
87 | f['.'] = '.' # prevents useless util.fspath() invocation | |
86 | return f |
|
88 | return f | |
87 |
|
89 | |||
@@ -401,8 +403,16 b' class dirstate(object):' | |||||
401 | if isknown or not os.path.lexists(os.path.join(self._root, path)): |
|
403 | if isknown or not os.path.lexists(os.path.join(self._root, path)): | |
402 | folded = path |
|
404 | folded = path | |
403 | else: |
|
405 | else: | |
404 | folded = self._foldmap.setdefault(normed, |
|
406 | # recursively normalize leading directory components | |
405 | util.fspath(normed, self._root)) |
|
407 | # against dirstate | |
|
408 | if '/' in normed: | |||
|
409 | d, f = normed.rsplit('/') | |||
|
410 | d = self._root + "/" + self._normalize(d, isknown) | |||
|
411 | folded = d + "/" + util.fspath(f, d) | |||
|
412 | else: | |||
|
413 | folded = util.fspath(normed, self._root) | |||
|
414 | self._foldmap[normed] = folded | |||
|
415 | ||||
406 | return folded |
|
416 | return folded | |
407 |
|
417 | |||
408 | def normalize(self, path, isknown=False): |
|
418 | def normalize(self, path, isknown=False): | |
@@ -548,7 +558,7 b' class dirstate(object):' | |||||
548 | elif match.files() and not match.anypats(): # match.match, no patterns |
|
558 | elif match.files() and not match.anypats(): # match.match, no patterns | |
549 | skipstep3 = True |
|
559 | skipstep3 = True | |
550 |
|
560 | |||
551 | if self._checkcase: |
|
561 | if not exact and self._checkcase: | |
552 | normalize = self._normalize |
|
562 | normalize = self._normalize | |
553 | skipstep3 = False |
|
563 | skipstep3 = False | |
554 | else: |
|
564 | else: |
@@ -13,20 +13,12 b'' | |||||
13 | > handler_class=SimpleHTTPServer.SimpleHTTPRequestHandler): |
|
13 | > handler_class=SimpleHTTPServer.SimpleHTTPRequestHandler): | |
14 | > server_address = ('localhost', int(os.environ['HGPORT'])) |
|
14 | > server_address = ('localhost', int(os.environ['HGPORT'])) | |
15 | > httpd = server_class(server_address, handler_class) |
|
15 | > httpd = server_class(server_address, handler_class) | |
16 | > httpd.serve_forever() |
|
16 | > os.system("hg clone http://localhost:$HGPORT/foo copy2&") | |
17 | > signal.signal(signal.SIGTERM, lambda x: sys.exit(0)) |
|
17 | > httpd.handle_request() | |
18 |
|
|
18 | > run() | |
19 | > EOF |
|
19 | > EOF | |
20 |
|
20 | |||
21 |
$ |
|
21 | $ python dumb.py | |
22 | $ echo $! >> $DAEMON_PIDS |
|
22 | localhost - - [*] code 404, message File not found (glob) | |
23 |
|
23 | localhost - - [*] "GET /foo?cmd=capabilities HTTP/1.1" 404 - (glob) | ||
24 | give the server some time to start running |
|
|||
25 |
|
||||
26 | $ sleep 1 |
|
|||
27 |
|
||||
28 | $ hg clone http://localhost:$HGPORT/foo copy2 2>&1 |
|
|||
29 | abort: HTTP Error 404: * (glob) |
|
24 | abort: HTTP Error 404: * (glob) | |
30 | [255] |
|
|||
31 |
|
||||
32 | $ kill $! |
|
@@ -72,3 +72,45 b' no clobbering of untracked files with wr' | |||||
72 | gold |
|
72 | gold | |
73 |
|
73 | |||
74 | $ cd .. |
|
74 | $ cd .. | |
|
75 | ||||
|
76 | issue 3340: mq does not handle case changes correctly | |||
|
77 | ||||
|
78 | in addition to reported case, 'hg qrefresh' is also tested against | |||
|
79 | case changes. | |||
|
80 | ||||
|
81 | $ echo "[extensions]" >> $HGRCPATH | |||
|
82 | $ echo "mq=" >> $HGRCPATH | |||
|
83 | ||||
|
84 | $ hg init issue3340 | |||
|
85 | $ cd issue3340 | |||
|
86 | ||||
|
87 | $ echo a > mIxEdCaSe | |||
|
88 | $ hg add mIxEdCaSe | |||
|
89 | $ hg commit -m '#0' | |||
|
90 | $ hg rename mIxEdCaSe tmp | |||
|
91 | $ hg rename tmp MiXeDcAsE | |||
|
92 | $ hg status -A | |||
|
93 | A MiXeDcAsE | |||
|
94 | mIxEdCaSe | |||
|
95 | R mIxEdCaSe | |||
|
96 | $ hg qnew changecase | |||
|
97 | $ hg status -A | |||
|
98 | C MiXeDcAsE | |||
|
99 | ||||
|
100 | $ hg qpop -a | |||
|
101 | popping changecase | |||
|
102 | patch queue now empty | |||
|
103 | $ hg qnew refresh-casechange | |||
|
104 | $ hg status -A | |||
|
105 | C mIxEdCaSe | |||
|
106 | $ hg rename mIxEdCaSe tmp | |||
|
107 | $ hg rename tmp MiXeDcAsE | |||
|
108 | $ hg status -A | |||
|
109 | A MiXeDcAsE | |||
|
110 | mIxEdCaSe | |||
|
111 | R mIxEdCaSe | |||
|
112 | $ hg qrefresh | |||
|
113 | $ hg status -A | |||
|
114 | C MiXeDcAsE | |||
|
115 | ||||
|
116 | $ cd .. |
@@ -18,10 +18,10 b' Test raw style of hgweb' | |||||
18 | $ hg serve -p $HGPORT -A access.log -E error.log -d --pid-file=hg.pid |
|
18 | $ hg serve -p $HGPORT -A access.log -E error.log -d --pid-file=hg.pid | |
19 |
|
19 | |||
20 | $ cat hg.pid >> $DAEMON_PIDS |
|
20 | $ cat hg.pid >> $DAEMON_PIDS | |
21 |
$ ("$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 |
|
21 | $ ("$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 | |
22 | $ sleep 5 |
|
22 | ||
23 | $ kill `cat hg.pid` |
|
23 | $ while kill `cat hg.pid` 2>/dev/null; do true; done | |
24 | $ sleep 1 # wait for server to scream and die |
|
24 | ||
25 | $ cat getoutput.txt |
|
25 | $ cat getoutput.txt | |
26 | 200 Script output follows |
|
26 | 200 Script output follows | |
27 | content-type: application/binary |
|
27 | content-type: application/binary | |
@@ -40,10 +40,9 b' Test raw style of hgweb' | |||||
40 | > --config web.guessmime=True |
|
40 | > --config web.guessmime=True | |
41 |
|
41 | |||
42 | $ cat hg.pid >> $DAEMON_PIDS |
|
42 | $ cat hg.pid >> $DAEMON_PIDS | |
43 |
$ ("$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 |
|
43 | $ ("$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 | |
44 | $ sleep 5 |
|
44 | $ while kill `cat hg.pid` 2>/dev/null; do true; done | |
45 | $ kill `cat hg.pid` |
|
45 | ||
46 | $ sleep 1 # wait for server to scream and die |
|
|||
47 | $ cat getoutput.txt |
|
46 | $ cat getoutput.txt | |
48 | 200 Script output follows |
|
47 | 200 Script output follows | |
49 | content-type: text/plain; charset="ascii" |
|
48 | content-type: text/plain; charset="ascii" |
@@ -8,10 +8,9 b'' | |||||
8 | $ hg --config server.uncompressed=True serve -p $HGPORT -d --pid-file=hg.pid |
|
8 | $ hg --config server.uncompressed=True serve -p $HGPORT -d --pid-file=hg.pid | |
9 | $ cat hg.pid >> $DAEMON_PIDS |
|
9 | $ cat hg.pid >> $DAEMON_PIDS | |
10 | $ cd .. |
|
10 | $ cd .. | |
11 |
$ |
|
11 | $ "$TESTDIR/tinyproxy.py" $HGPORT1 localhost >proxy.log 2>&1 </dev/null & | |
12 | $ echo $! > proxy.pid) |
|
12 | $ while [ ! -f proxy.pid ]; do true; done | |
13 | $ cat proxy.pid >> $DAEMON_PIDS |
|
13 | $ cat proxy.pid >> $DAEMON_PIDS | |
14 | $ sleep 2 |
|
|||
15 |
|
14 | |||
16 | url for proxy, stream |
|
15 | url for proxy, stream | |
17 |
|
16 |
@@ -233,15 +233,13 b' Fingerprints' | |||||
233 | $ hg -R copy-pull id https://127.0.0.1:$HGPORT/ |
|
233 | $ hg -R copy-pull id https://127.0.0.1:$HGPORT/ | |
234 | 5fed3813f7f5 |
|
234 | 5fed3813f7f5 | |
235 |
|
235 | |||
|
236 | $ while kill `cat hg1.pid` 2>/dev/null; do true; done | |||
|
237 | ||||
236 | Prepare for connecting through proxy |
|
238 | Prepare for connecting through proxy | |
237 |
|
239 | |||
238 | $ kill `cat hg1.pid` |
|
240 | $ "$TESTDIR/tinyproxy.py" $HGPORT1 localhost >proxy.log </dev/null 2>&1 & | |
239 | $ sleep 1 |
|
241 | $ while [ ! -f proxy.pid ]; do true; done | |
240 |
|
||||
241 | $ ("$TESTDIR/tinyproxy.py" $HGPORT1 localhost >proxy.log 2>&1 </dev/null & |
|
|||
242 | $ echo $! > proxy.pid) |
|
|||
243 | $ cat proxy.pid >> $DAEMON_PIDS |
|
242 | $ cat proxy.pid >> $DAEMON_PIDS | |
244 | $ sleep 2 |
|
|||
245 |
|
243 | |||
246 | $ echo "[http_proxy]" >> copy-pull/.hg/hgrc |
|
244 | $ echo "[http_proxy]" >> copy-pull/.hg/hgrc | |
247 | $ echo "always=True" >> copy-pull/.hg/hgrc |
|
245 | $ echo "always=True" >> copy-pull/.hg/hgrc |
@@ -5,16 +5,22 b' Test hangup signal in the middle of tran' | |||||
5 | $ mkfifo p |
|
5 | $ mkfifo p | |
6 | $ hg serve --stdio < p & |
|
6 | $ hg serve --stdio < p & | |
7 | $ P=$! |
|
7 | $ P=$! | |
8 | $ (echo lock; echo addchangegroup; sleep 5) > p & |
|
8 | ||
9 | $ Q=$! |
|
9 | Do test while holding fifo open | |
10 | $ sleep 3 |
|
10 | ||
|
11 | $ ( | |||
|
12 | > echo lock | |||
|
13 | > echo addchangegroup | |||
|
14 | > while [ ! -e .hg/store/00changelog.i.a ]; do true; done | |||
|
15 | > kill -HUP $P | |||
|
16 | > while kill -0 $P 2>/dev/null; do true; done | |||
|
17 | > ) > p | |||
11 | 0 |
|
18 | 0 | |
12 | 0 |
|
19 | 0 | |
13 | adding changesets |
|
20 | adding changesets | |
14 | $ kill -HUP $P |
|
|||
15 | $ wait |
|
|||
16 | transaction abort! |
|
21 | transaction abort! | |
17 | rollback completed |
|
22 | rollback completed | |
18 | killed! |
|
23 | killed! | |
|
24 | ||||
19 | $ echo .hg/* .hg/store/* |
|
25 | $ echo .hg/* .hg/store/* | |
20 | .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 |
|
26 | .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 |
@@ -519,7 +519,15 b' cleaning up' | |||||
519 | $ hg qpush --move test.patch # already applied |
|
519 | $ hg qpush --move test.patch # already applied | |
520 | abort: cannot push to a previous patch: test.patch |
|
520 | abort: cannot push to a previous patch: test.patch | |
521 | [255] |
|
521 | [255] | |
522 | $ hg qpush |
|
522 | $ sed -i.bak '2i# make qtip index different in series and fullseries' `hg root`/.hg/patches/series | |
|
523 | $ cat `hg root`/.hg/patches/series | |||
|
524 | # comment | |||
|
525 | # make qtip index different in series and fullseries | |||
|
526 | ||||
|
527 | test.patch | |||
|
528 | test1b.patch | |||
|
529 | test2.patch | |||
|
530 | $ hg qpush --move test2.patch | |||
523 | applying test2.patch |
|
531 | applying test2.patch | |
524 | now at: test2.patch |
|
532 | now at: test2.patch | |
525 |
|
533 | |||
@@ -527,11 +535,12 b' cleaning up' | |||||
527 | series after move |
|
535 | series after move | |
528 |
|
536 | |||
529 | $ cat `hg root`/.hg/patches/series |
|
537 | $ cat `hg root`/.hg/patches/series | |
|
538 | # comment | |||
|
539 | # make qtip index different in series and fullseries | |||
|
540 | ||||
530 | test.patch |
|
541 | test.patch | |
531 | test1b.patch |
|
542 | test1b.patch | |
532 | test2.patch |
|
543 | test2.patch | |
533 | # comment |
|
|||
534 |
|
||||
535 |
|
544 | |||
536 |
|
545 | |||
537 | pop, qapplied, qunapplied |
|
546 | pop, qapplied, qunapplied |
@@ -9,13 +9,12 b'' | |||||
9 | > cat hg.pid >> "$DAEMON_PIDS" |
|
9 | > cat hg.pid >> "$DAEMON_PIDS" | |
10 | > echo % errors |
|
10 | > echo % errors | |
11 | > cat errors.log |
|
11 | > cat errors.log | |
12 | > sleep 1 |
|
|||
13 | > if [ "$KILLQUIETLY" = "Y" ]; then |
|
12 | > if [ "$KILLQUIETLY" = "Y" ]; then | |
14 | > kill `cat hg.pid` 2>/dev/null |
|
13 | > kill `cat hg.pid` 2>/dev/null | |
15 | > else |
|
14 | > else | |
16 | > kill `cat hg.pid` |
|
15 | > kill `cat hg.pid` | |
17 | > fi |
|
16 | > fi | |
18 | > sleep 1 |
|
17 | > while kill -0 `cat hg.pid` 2>/dev/null; do true; done | |
19 | > } |
|
18 | > } | |
20 |
|
19 | |||
21 | $ hg init test |
|
20 | $ hg init test |
@@ -12,7 +12,7 b' Any help will be greatly appreciated. ' | |||||
12 |
|
12 | |||
13 | __version__ = "0.2.1" |
|
13 | __version__ = "0.2.1" | |
14 |
|
14 | |||
15 | import BaseHTTPServer, select, socket, SocketServer, urlparse |
|
15 | import BaseHTTPServer, select, socket, SocketServer, urlparse, os | |
16 |
|
16 | |||
17 | class ProxyHandler (BaseHTTPServer.BaseHTTPRequestHandler): |
|
17 | class ProxyHandler (BaseHTTPServer.BaseHTTPRequestHandler): | |
18 | __base = BaseHTTPServer.BaseHTTPRequestHandler |
|
18 | __base = BaseHTTPServer.BaseHTTPRequestHandler | |
@@ -122,7 +122,12 b' class ProxyHandler (BaseHTTPServer.BaseH' | |||||
122 | do_DELETE = do_GET |
|
122 | do_DELETE = do_GET | |
123 |
|
123 | |||
124 | class ThreadingHTTPServer (SocketServer.ThreadingMixIn, |
|
124 | class ThreadingHTTPServer (SocketServer.ThreadingMixIn, | |
125 |
BaseHTTPServer.HTTPServer): |
|
125 | BaseHTTPServer.HTTPServer): | |
|
126 | def __init__(self, *args, **kwargs): | |||
|
127 | BaseHTTPServer.HTTPServer.__init__(self, *args, **kwargs) | |||
|
128 | a = open("proxy.pid", "w") | |||
|
129 | a.write(str(os.getpid()) + "\n") | |||
|
130 | a.close() | |||
126 |
|
131 | |||
127 | if __name__ == '__main__': |
|
132 | if __name__ == '__main__': | |
128 | from sys import argv |
|
133 | from sys import argv |
General Comments 0
You need to be logged in to leave comments.
Login now