##// END OF EJS Templates
merge with stable
Matt Mackall -
r16318:73f4e052 merge default
parent child Browse files
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 i, rpn in enumerate(self.fullseries[start:]):
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-27 19:48+0900\n"
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) の機能はあります (本セクションでの設定を元にした、\n"
16348 "承認 (authorization: アクセス可否の判定) の機能はあります\n"
16161 "認証済みユーザに対する、 アクセス可否の制御)。 利用するウェブサーバの、\n"
16349 "(本セクションでの設定を元に、 認証済みユーザに対して実施)。\n"
16162 "認証機能を Mercurial 向けに正しく設定するか、 Mercurial の承認機能を、\n"
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 temporariamente usará\n"
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 > run()
18 > run()
19 > EOF
19 > EOF
20
20
21 $ python dumb.py 2>/dev/null &
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 $ ("$TESTDIR/tinyproxy.py" $HGPORT1 localhost >proxy.log 2>&1 </dev/null &
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): pass
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