diff --git a/hgext/color.py b/hgext/color.py index 5615579474..a4fe16acd7 100644 --- a/hgext/color.py +++ b/hgext/color.py @@ -180,6 +180,7 @@ def _modesetup(ui, opts): realmode = 'ansi' if realmode == 'win32': + _terminfo_params = {} if not w32effects: if mode == 'win32': # only warn if color.mode is explicitly set to win32 diff --git a/i18n/ja.po b/i18n/ja.po index e183740148..b3ec0369e0 100644 --- a/i18n/ja.po +++ b/i18n/ja.po @@ -104,7 +104,7 @@ msgid "" msgstr "" "Project-Id-Version: Mercurial\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-29 21:47+0900\n" +"POT-Creation-Date: 2011-07-31 22:58+0900\n" "PO-Revision-Date: 2009-11-16 21:24+0100\n" "Last-Translator: Japanese translation team \n" "Language-Team: Japanese\n" @@ -1041,6 +1041,16 @@ msgid "" "silently ignored." msgstr "" +msgid "" +"Note that on some systems, terminfo mode may cause problems when using\n" +"color with the pager extension and less -R. less with the -R option\n" +"will only display ECMA-48 color codes, and terminfo mode may sometimes\n" +"emit codes that less doesn't understand. You can work around this by\n" +"either using ansi mode (or auto mode), or by using less -r (which will\n" +"pass through all terminal control codes, not just color control\n" +"codes)." +msgstr "" + msgid "" "Because there are only eight standard colors, this module allows you\n" "to define color names for other color slots which might be available\n" @@ -1062,18 +1072,22 @@ msgid "" msgstr "" msgid "" -"The color extension will try to detect whether to use terminfo, ANSI\n" -"codes or Win32 console APIs, unless it is made explicit; e.g.::" +"By default, the color extension will use ANSI mode (or win32 mode on\n" +"Windows) if it detects a terminal. To override auto mode (to enable\n" +"terminfo mode, for example), set the following configuration option::" msgstr "" +#, fuzzy msgid "" " [color]\n" -" mode = ansi" +" mode = terminfo" msgstr "" +" [collections]\n" +" /foo = /foo" msgid "" "Any value other than 'ansi', 'win32', 'terminfo', or 'auto' will\n" -"disable color." +"disable color.\n" msgstr "" msgid "no terminfo entry for setab/setaf: reverting to ECMA-48 color\n" @@ -5757,6 +5771,10 @@ msgstr "--base と --detach は同時には指定出来ません" msgid "nothing to rebase\n" msgstr "リベースの必要はありません\n" +#, fuzzy +msgid "cannot collapse multiple named branches" +msgstr "ファイル名 '%s' のデコードに失敗" + msgid "rebasing" msgstr "リベース実施中" @@ -6915,8 +6933,8 @@ msgstr "ディレクトリ" msgid "change working directory" msgstr "作業領域の変更" -msgid "do not prompt, assume 'yes' for any required answers" -msgstr "問い合わせをせず、 確認事項は全て 'yes' とみなす" +msgid "do not prompt, automatically pick the first choice for all prompts" +msgstr "問い合わせ無しで、 最初の選択肢を自動的に選択" msgid "suppress output" msgstr "出力を抑止" @@ -10076,15 +10094,19 @@ msgstr "" msgid "" " With no revision specified, revert the specified files or directories\n" -" to the state they had in the first parent of the working directory.\n" +" to the contents they had in the parent of the working directory.\n" " This restores the contents of files to an unmodified\n" -" state and unschedules adds, removes, copies, and renames." +" state and unschedules adds, removes, copies, and renames. If the\n" +" working directory has two parents, you must explicitly specify a\n" +" revision." msgstr "" " リビジョン指定が無い場合は、 \n" " 指定されたファイル/ディレクトリを、\n" -" 作業領域の第1親リビジョン時点の内容へと復旧します。\n" +" 作業領域の親リビジョン時点の内容へと復旧します。\n" " 本コマンドは対象ファイルに対して、 状態を「改変無し」とし、\n" -" add/remove/copy/rename の実施予定を取り消します。" +" add/remove/copy/rename の実施予定を取り消します。\n" +" 作業領域が複数の親リビジョンを持つ場合、\n" +" いずれかのリビジョンを明示的に指定して下さい。" msgid "" " Using the -r/--rev or -d/--date options, revert the given files or\n" @@ -10109,6 +10131,14 @@ msgstr "" msgid "you can't specify a revision and a date" msgstr "リビジョンと日時は同時には指定出来ません" +msgid "uncommitted merge with no revision specified" +msgstr "マージが未コミットですが、対象リビジョンが明示されていません" + +msgid "use \"hg update\" or see \"hg help revert\"" +msgstr "" +"リビジョンを明示して \"hg update\" するか、\"hg help revert\" を参照して下さ" +"い" + msgid "no files or directories specified" msgstr "ファイル/ディレクトリ指定がありません" @@ -11196,8 +11226,8 @@ msgid "repository '%s' is not local" msgstr "リポジトリ '%s' はローカルリポジトリではありません" #, python-format -msgid "no repository found in %r (.hg not found)" -msgstr "%r 配下にはリポジトリがありません (.hg が見つかりません)" +msgid "no repository found in '%s' (.hg not found)" +msgstr "'%s' 配下にはリポジトリがありません (.hg が見つかりません)" msgid "warning: --repository ignored\n" msgstr "警告: --repository 指定を無視します\n" @@ -11384,7 +11414,7 @@ msgstr "関数ではありません: %s" msgid "" "``binary()``\n" -" File that appears to be binary (contails NUL bytes)." +" File that appears to be binary (contains NUL bytes)." msgstr "" "``binary()``\n" " バイナリと思われるファイル (NUL バイトを含むファイル)" @@ -12366,9 +12396,8 @@ msgid "" "merges." msgstr "" -#, fuzzy msgid "Example ``~/.hgrc``::" -msgstr "記述例::" +msgstr "" msgid "" " [merge-tools]\n" @@ -13724,11 +13753,17 @@ msgid "" " HGPLAIN is enabled. Currently the only value supported is \"i18n\",\n" " which preserves internationalization in plain mode." msgstr "" +" HGPLAIN による設定無効化の際でも、\n" +" 維持する機能をカンマ区切りで列挙します。\n" +" 現在利用可能な機能名は \"i18n\" のみで、\n" +" 国際化関連機能が維持されます。" msgid "" " Setting HGPLAINEXCEPT to anything (even an empty string) will\n" " enable plain mode." msgstr "" +" HGPLAINEXCEPT に何らかの設定 (空設定でも可) をした場合、\n" +" 設定無効化が機能します。" msgid "" "HGUSER\n" @@ -13939,10 +13974,9 @@ msgstr "" msgid "Some sample queries:" msgstr "" -#, fuzzy msgid "" "- Show status of files that appear to be binary in the working directory::" -msgstr "作業領域のファイル操作状況の表示" +msgstr "" msgid " hg status -A \"set:binary()\"" msgstr "" @@ -13971,7 +14005,7 @@ msgstr "" msgid " hg revert \"set:copied() and binary() and size('>1M')\"" msgstr "" -msgid "- Remove files listed in files.lst that contain the letter a or b::" +msgid "- Remove files listed in foo.lst that contain the letter a or b::" msgstr "" msgid " hg remove \"set: 'listfile:foo.lst' and (**a* or **b*)\"" @@ -13994,7 +14028,6 @@ msgstr "" " 直接の親リビジョンは祖先であり、 祖先(=直接の親リビジョン含む)の\n" " 親リビジョンも祖先となります。 'Descendant' も参照のこと。" -#, fuzzy msgid "" "Bookmark\n" " Bookmarks are pointers to certain commits that move when\n" @@ -14003,12 +14036,6 @@ msgid "" " ID, e.g., with :hg:`update`. Unlike tags, bookmarks move along\n" " when you make a commit." msgstr "" -" ブックマーク (bookmark) は、 コミット操作に追従して移動する、\n" -" リビジョン特定用の情報です。\n" -" ブックマークのリポジトリ間伝播は、 自動的には行われません。\n" -" ブックマークに対しては、 改名/複製/削除が可能です。\n" -" :hg:`merge` や :hg:`update` へのリビジョン指定において、\n" -" ブックマークを使用することが可能です。" msgid "" " Bookmarks can be renamed, copied and deleted. Bookmarks are local,\n" @@ -17431,11 +17458,10 @@ msgstr "" " 階層があればそれを取り除きます。\n" " 例) \"foo\" および \"foo/bar\" は \"foo\"" -#, fuzzy msgid "" ":tabindent: Any text. Returns the text, with every line except the\n" " first starting with a tab character." -msgstr ":tabindent: 文字列。 タブ文字以外で始まる行をタブ文字で字下げします。" +msgstr ":tabindent: 文字列。 最初の行以外をタブ文字で字下げします。" msgid "" ":urlescape: Any text. Escapes all \"special\" characters. For example,\n" @@ -17444,9 +17470,8 @@ msgstr "" ":urlescape: 文字列。 全ての「特殊」文字を変換します。\n" " 例えば \"foo bar\" は \"foo%20bar\" となります。" -#, fuzzy msgid ":user: Any text. Returns the user portion of an email address." -msgstr ":user: 文字列。 メールアドレスのユーザ名部分を取り出します。\n" +msgstr ":user: 文字列。 メールアドレスのユーザ名部分を取り出します。" msgid ":author: String. The unmodified author of the changeset." msgstr ":author: 文字列。 リビジョンの作者名(記録情報そのまま)。" @@ -17464,11 +17489,10 @@ msgstr "" ":branches: 文字列列挙。 リビジョンの属するブランチ名。\n" " 所属ブランチが default の場合は空。" -#, fuzzy msgid "" ":bookmarks: List of strings. Any bookmarks associated with the\n" " changeset." -msgstr ":tags: 文字列列挙。 当該リビジョンに付与されたタグの一覧。" +msgstr ":tags: 文字列列挙。 当該リビジョンに付与されたブックマークの一覧。" msgid ":children: List of strings. The children of the changeset." msgstr ":children: 文字列列挙。 リビジョンの子供。" @@ -17934,3 +17958,6 @@ msgstr "連携先での変更の検索" msgid "push failed:" msgstr "履歴反映に失敗:" + +#~ msgid "do not prompt, assume 'yes' for any required answers" +#~ msgstr "問い合わせをせず、 確認事項は全て 'yes' とみなす" diff --git a/i18n/sv.po b/i18n/sv.po index 6631227e1c..dcaa7f9ea5 100644 --- a/i18n/sv.po +++ b/i18n/sv.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: Mercurial\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-29 09:21+0200\n" -"PO-Revision-Date: 2011-06-29 09:24+0200\n" +"POT-Creation-Date: 2011-07-29 20:08+0200\n" +"PO-Revision-Date: 2011-07-30 09:39+0200\n" "Last-Translator: Jens Bäckman \n" "Language-Team: Swedish\n" "Language: Swedish\n" @@ -960,6 +960,22 @@ msgstr "" "kan vara otillgängliga för en viss terminaltyp, och kommer att ignoreras i\n" "det tysta." +msgid "" +"Note that on some systems, terminfo mode may cause problems when using\n" +"color with the pager extension and less -R. less with the -R option\n" +"will only display ECMA-48 color codes, and terminfo mode may sometimes\n" +"emit codes that less doesn't understand. You can work around this by\n" +"either using ansi mode (or auto mode), or by using less -r (which will\n" +"pass through all terminal control codes, not just color control\n" +"codes)." +msgstr "" +"Notera att på vissa system kan terminfo-läget orsaka problem när color-\n" +"och pager-utökningarna används med less -R. less med flaggan -R kommer bara\n" +"att visa ECMA-48-färgkoder, och terminfo kan sända koder som less inte\n" +"förstår. Du kan gå runt detta genom att endera använda ansi-läge (eller\n" +"auto-läge), eller att använda less -r (som skickar vidare alla\n" +"terminalkoder, inte bara färgkoder)." + msgid "" "Because there are only eight standard colors, this module allows you\n" "to define color names for other color slots which might be available\n" @@ -993,25 +1009,28 @@ msgstr "" "bakgrunden till den färgen." msgid "" -"The color extension will try to detect whether to use terminfo, ANSI\n" -"codes or Win32 console APIs, unless it is made explicit; e.g.::" +"By default, the color extension will use ANSI mode (or win32 mode on\n" +"Windows) if it detects a terminal. To override auto mode (to enable\n" +"terminfo mode, for example), set the following configuration option::" msgstr "" -"Utökningen color försöker att upptäcka om terminfo, ANSI-koder eller\n" -"APIer för konsolen i Win32 om det inte anges explicit::" +"Som standard kommer color-utökningen att använda ANSI-läge (eller\n" +"win32-läge i Windows) om en terminal upptäcks. För att upphäva auto-läge\n" +"(för att exempelvis aktivera terminfo-läge), sätt följande\n" +"konfigurationsflagga::" msgid "" " [color]\n" -" mode = ansi" +" mode = terminfo" msgstr "" " [color]\n" -" mode = ansi" +" mode = terminfo" msgid "" "Any value other than 'ansi', 'win32', 'terminfo', or 'auto' will\n" -"disable color." +"disable color.\n" msgstr "" "Ett värde skilt från 'ansi', 'win32', 'terminfo' eller 'auto' stänger av\n" -"färg." +"färg.\n" msgid "no terminfo entry for setab/setaf: reverting to ECMA-48 color\n" msgstr "ingen terminfo-post för setab/setaf: återgår till ECMA-48-färger\n" @@ -5380,6 +5399,9 @@ msgstr "kan inte ange en bas med detach" msgid "nothing to rebase\n" msgstr "" +msgid "cannot collapse multiple named branches" +msgstr "kan inte kollapsa flera namngivna grenar" + msgid "rebasing" msgstr "" @@ -6352,13 +6374,13 @@ msgid "date: %s\n" msgstr "datum: %s\n" msgid "files+:" -msgstr "" +msgstr "filer+:" msgid "files-:" -msgstr "" +msgstr "filer-:" msgid "files:" -msgstr "" +msgstr "filer:" #, python-format msgid "files: %s\n" @@ -6413,7 +6435,7 @@ msgstr "" #, python-format msgid "HG: user: %s" -msgstr "" +msgstr "HG: användare: %s" msgid "HG: branch merge" msgstr "" @@ -6428,21 +6450,21 @@ msgstr "" #, python-format msgid "HG: added %s" -msgstr "" +msgstr "HG: lade till %s" #, python-format msgid "HG: changed %s" -msgstr "" +msgstr "HG: ändrade %s" #, python-format msgid "HG: removed %s" -msgstr "" +msgstr "HG: raderade %s" msgid "HG: no files changed" -msgstr "" +msgstr "HG: inga ändrade filer" msgid "empty commit message" -msgstr "" +msgstr "tomt arkiveringsmeddelande" msgid "repository root directory or name of overlay bundle file" msgstr "arkivrotkatalog eller namn på påläggsbuntfil" @@ -6453,8 +6475,8 @@ msgstr "" msgid "change working directory" msgstr "ändra arbetskatalog" -msgid "do not prompt, assume 'yes' for any required answers" -msgstr "fråga inte, anta att svaret är 'ja' på alla frågor" +msgid "do not prompt, automatically pick the first choice for all prompts" +msgstr "fråga inte, välj automatiskt det första valet för alla frågor" msgid "suppress output" msgstr "förhindra utmatning" @@ -9525,14 +9547,17 @@ msgstr "" msgid "" " With no revision specified, revert the specified files or directories\n" -" to the state they had in the first parent of the working directory.\n" +" to the contents they had in the parent of the working directory.\n" " This restores the contents of files to an unmodified\n" -" state and unschedules adds, removes, copies, and renames." +" state and unschedules adds, removes, copies, and renames. If the\n" +" working directory has two parents, you must explicitly specify a\n" +" revision." msgstr "" " Om ingen revision anges, så återställs de givna filerna eller\n" -" katalogerna till läget de hade i arbetskatalogens första förälder. Det\n" -" sätter filer i ett omodifierad läge och avbeställer adderingar,\n" -" raderingar, kopior och namnbyten." +" katalogerna till innehållet de hade i arbetskatalogens första förälder.\n" +" Det sätter filer i ett omodifierad läge och avbeställer adderingar,\n" +" raderingar, kopior och namnbyten. Om arbetskatalogen har två föräldrar,\n" +" så måste du ange en revision." msgid "" " Using the -r/--rev or -d/--date options, revert the given files or\n" @@ -9558,6 +9583,12 @@ msgstr "" msgid "you can't specify a revision and a date" msgstr "du kan inte specificera en revision och ett datum" +msgid "uncommitted merge with no revision specified" +msgstr "oarkiverad sammanfogning utan angiven revision" + +msgid "use \"hg update\" or see \"hg help revert\"" +msgstr "använd \"hg update\" eller se \"hg help revert\"" + msgid "no files or directories specified" msgstr "inga filer eller kataloger angivna" @@ -10625,11 +10656,11 @@ msgstr "" #, python-format msgid "repository '%s' is not local" -msgstr "" +msgstr "arkivet '%s' är inte lokalt" #, python-format -msgid "no repository found in %r (.hg not found)" -msgstr "inget arkiv hittades i %r (.hg hittades inte)" +msgid "no repository found in '%s' (.hg not found)" +msgstr "inget arkiv hittades i '%s' (.hg hittades inte)" msgid "warning: --repository ignored\n" msgstr "varning: --repository ignorerades\n" @@ -10792,7 +10823,7 @@ msgstr "inte en funktion: %s" msgid "" "``binary()``\n" -" File that appears to be binary (contails NUL bytes)." +" File that appears to be binary (contains NUL bytes)." msgstr "" #. i18n: "binary" is a keyword @@ -13270,7 +13301,7 @@ msgstr "" msgid " hg revert \"set:copied() and binary() and size('>1M')\"" msgstr "" -msgid "- Remove files listed in files.lst that contain the letter a or b::" +msgid "- Remove files listed in foo.lst that contain the letter a or b::" msgstr "" msgid " hg remove \"set: 'listfile:foo.lst' and (**a* or **b*)\"" @@ -16106,7 +16137,7 @@ msgstr "kan inte negera det" msgid "not a symbol" msgstr "inte en symbol" -#, fuzzy, python-format +#, python-format msgid "invalid number of arguments: %s" msgstr "felaktigt antal argument: %s" @@ -16242,7 +16273,7 @@ msgid "" "hostfingerprints or web.cacerts config setting)\n" msgstr "" "varning: %s-certificatet med fingeravtrycket %s overifierad (kontrollera " -"hostfingerprints inställningen web.cacerts)\n" +"inställningen för hostfingerprints eller web.cacerts)\n" #, python-format msgid "host fingerprint for %s can't be verified (Python too old)" @@ -16254,7 +16285,7 @@ msgstr "varning: certificatet för %s kan inte verifieras (för gammal Python)\n #, python-format msgid "'%s' does not appear to be an hg repository" -msgstr "" +msgstr "'%s' verkar inte vara ett hg-arkiv" msgid "cannot lock static-http repository" msgstr "" @@ -16401,6 +16432,209 @@ msgstr "" msgid ".hg/cache/tags is corrupt, rebuilding it\n" msgstr ".hg/cache/tags är korrupt, bygger om den\n" +msgid "" +":addbreaks: Any text. Add an XHTML \"
\" tag before the end of\n" +" every line except the last." +msgstr "" + +msgid "" +":age: Date. Returns a human-readable date/time difference between the\n" +" given date/time and the current date/time." +msgstr "" + +msgid "" +":basename: Any text. Treats the text as a path, and returns the last\n" +" component of the path after splitting by the path separator\n" +" (ignoring trailing separators). For example, \"foo/bar/baz\" becomes\n" +" \"baz\" and \"foo/bar//\" becomes \"bar\"." +msgstr "" + +msgid "" +":date: Date. Returns a date in a Unix date format, including the\n" +" timezone: \"Mon Sep 04 15:13:13 2006 0700\"." +msgstr "" + +msgid "" +":domain: Any text. Finds the first string that looks like an email\n" +" address, and extracts just the domain component. Example: ``User\n" +" `` becomes ``example.com``." +msgstr "" + +msgid "" +":email: Any text. Extracts the first string that looks like an email\n" +" address. Example: ``User `` becomes\n" +" ``user@example.com``." +msgstr "" + +msgid "" +":escape: Any text. Replaces the special XML/XHTML characters \"&\", \"<\"\n" +" and \">\" with XML entities." +msgstr "" + +msgid ":fill68: Any text. Wraps the text to fit in 68 columns." +msgstr "" + +msgid ":fill76: Any text. Wraps the text to fit in 76 columns." +msgstr "" + +msgid ":firstline: Any text. Returns the first line of text." +msgstr "" + +msgid "" +":hex: Any text. Convert a binary Mercurial node identifier into\n" +" its long hexadecimal representation." +msgstr "" + +msgid "" +":hgdate: Date. Returns the date as a pair of numbers: \"1157407993\n" +" 25200\" (Unix timestamp, timezone offset)." +msgstr "" + +msgid "" +":isodate: Date. Returns the date in ISO 8601 format: \"2009-08-18 13:00\n" +" +0200\"." +msgstr "" + +msgid "" +":isodatesec: Date. Returns the date in ISO 8601 format, including\n" +" seconds: \"2009-08-18 13:00:13 +0200\". See also the rfc3339date\n" +" filter." +msgstr "" + +msgid ":localdate: Date. Converts a date to local date." +msgstr "" + +msgid ":nonempty: Any text. Returns '(none)' if the string is empty." +msgstr "" + +msgid "" +":obfuscate: Any text. Returns the input text rendered as a sequence of\n" +" XML entities." +msgstr "" + +msgid ":person: Any text. Returns the text before an email address." +msgstr "" + +msgid "" +":rfc3339date: Date. Returns a date using the Internet date format\n" +" specified in RFC 3339: \"2009-08-18T13:00:13+02:00\"." +msgstr "" + +msgid "" +":rfc822date: Date. Returns a date using the same format used in email\n" +" headers: \"Tue, 18 Aug 2009 13:00:13 +0200\"." +msgstr "" + +msgid "" +":short: Changeset hash. Returns the short form of a changeset hash,\n" +" i.e. a 12 hexadecimal digit string." +msgstr "" + +msgid ":shortdate: Date. Returns a date like \"2006-09-18\"." +msgstr "" + +msgid "" +":stringify: Any type. Turns the value into text by converting values into\n" +" text and concatenating them." +msgstr "" + +msgid ":strip: Any text. Strips all leading and trailing whitespace." +msgstr "" + +msgid "" +":stripdir: Treat the text as path and strip a directory level, if\n" +" possible. For example, \"foo\" and \"foo/bar\" becomes \"foo\"." +msgstr "" + +msgid "" +":tabindent: Any text. Returns the text, with every line except the\n" +" first starting with a tab character." +msgstr "" + +msgid "" +":urlescape: Any text. Escapes all \"special\" characters. For example,\n" +" \"foo bar\" becomes \"foo%20bar\"." +msgstr "" + +msgid ":user: Any text. Returns the user portion of an email address." +msgstr "" + +msgid ":author: String. The unmodified author of the changeset." +msgstr "" + +msgid "" +":branch: String. The name of the branch on which the changeset was\n" +" committed." +msgstr "" + +msgid "" +":branches: List of strings. The name of the branch on which the\n" +" changeset was committed. Will be empty if the branch name was\n" +" default." +msgstr "" + +msgid "" +":bookmarks: List of strings. Any bookmarks associated with the\n" +" changeset." +msgstr "" + +msgid ":children: List of strings. The children of the changeset." +msgstr "" + +msgid ":date: Date information. The date when the changeset was committed." +msgstr "" + +msgid ":desc: String. The text of the changeset description." +msgstr "" + +msgid "" +":diffstat: String. Statistics of changes with the following format:\n" +" \"modified files: +added/-removed lines\"" +msgstr "" + +msgid ":file_adds: List of strings. Files added by this changeset." +msgstr "" + +msgid "" +":file_copies: List of strings. Files copied in this changeset with\n" +" their sources." +msgstr "" + +msgid "" +":file_copies_switch: List of strings. Like \"file_copies\" but displayed\n" +" only if the --copied switch is set." +msgstr "" + +msgid ":file_dels: List of strings. Files removed by this changeset." +msgstr "" + +msgid ":file_mods: List of strings. Files modified by this changeset." +msgstr "" + +msgid "" +":files: List of strings. All files modified, added, or removed by this\n" +" changeset." +msgstr "" + +msgid "" +":latesttag: String. Most recent global tag in the ancestors of this\n" +" changeset." +msgstr "" + +msgid ":latesttagdistance: Integer. Longest path to the latest tag." +msgstr "" + +msgid "" +":node: String. The changeset identification hash, as a 40 hexadecimal\n" +" digit string." +msgstr "" + +msgid ":rev: Integer. The repository-local changeset revision number." +msgstr "" + +msgid ":tags: List of strings. Any tags associated with the changeset." +msgstr "" + #, python-format msgid "unknown method '%s'" msgstr "okänd metod '%s'" diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py index a0671f19dd..023001d7f5 100644 --- a/mercurial/dispatch.py +++ b/mercurial/dispatch.py @@ -601,11 +601,15 @@ def _dispatch(req): for cfg in cfgs: req.repo.ui.setconfig(*cfg) - for opt in ('verbose', 'debug', 'quiet', 'traceback'): - val = bool(options[opt]) - if val: + if options['verbose'] or options['debug'] or options['quiet']: + for opt in ('verbose', 'debug', 'quiet'): + val = str(bool(options[opt])) for ui_ in uis: - ui_.setconfig('ui', opt, str(val)) + ui_.setconfig('ui', opt, val) + + if options['traceback']: + for ui_ in uis: + ui_.setconfig('ui', 'traceback', 'on') if options['noninteractive']: for ui_ in uis: diff --git a/mercurial/hgweb/hgweb_mod.py b/mercurial/hgweb/hgweb_mod.py index 3be8942967..9f8f3ff2da 100644 --- a/mercurial/hgweb/hgweb_mod.py +++ b/mercurial/hgweb/hgweb_mod.py @@ -129,8 +129,9 @@ class hgweb(object): # A client that sends unbundle without 100-continue will # break if we respond early. if (cmd == 'unbundle' and - req.env.get('HTTP_EXPECT', - '').lower() != '100-continue'): + (req.env.get('HTTP_EXPECT', + '').lower() != '100-continue') or + req.env.get('X-HgHttp2', '')): req.drain() req.respond(inst, protocol.HGTYPE) return '0\n%s\n' % inst.message diff --git a/mercurial/hook.py b/mercurial/hook.py index e9e3f63c59..d008fe8bbd 100644 --- a/mercurial/hook.py +++ b/mercurial/hook.py @@ -134,12 +134,16 @@ def hook(ui, repo, name, throw=False, **args): oldstdout = -1 if _redirect: - stdoutno = sys.__stdout__.fileno() - stderrno = sys.__stderr__.fileno() - # temporarily redirect stdout to stderr, if possible - if stdoutno >= 0 and stderrno >= 0: - oldstdout = os.dup(stdoutno) - os.dup2(stderrno, stdoutno) + try: + stdoutno = sys.__stdout__.fileno() + stderrno = sys.__stderr__.fileno() + # temporarily redirect stdout to stderr, if possible + if stdoutno >= 0 and stderrno >= 0: + oldstdout = os.dup(stdoutno) + os.dup2(stderrno, stdoutno) + except AttributeError: + # __stdout/err__ doesn't have fileno(), it's not a real file + pass try: for hname, cmd in ui.configitems('hooks'): diff --git a/mercurial/httpclient/socketutil.py b/mercurial/httpclient/socketutil.py index 7f1d384834..6f06a3ca4e 100644 --- a/mercurial/httpclient/socketutil.py +++ b/mercurial/httpclient/socketutil.py @@ -78,10 +78,6 @@ if ssl: CERT_NONE = ssl.CERT_NONE CERT_OPTIONAL = ssl.CERT_OPTIONAL CERT_REQUIRED = ssl.CERT_REQUIRED - PROTOCOL_SSLv2 = ssl.PROTOCOL_SSLv2 - PROTOCOL_SSLv3 = ssl.PROTOCOL_SSLv3 - PROTOCOL_SSLv23 = ssl.PROTOCOL_SSLv23 - PROTOCOL_TLSv1 = ssl.PROTOCOL_TLSv1 else: class FakeSocket(httplib.FakeSocket): """Socket wrapper that supports SSL. @@ -105,10 +101,7 @@ else: else: raise x - PROTOCOL_SSLv2 = 0 - PROTOCOL_SSLv3 = 1 - PROTOCOL_SSLv23 = 2 - PROTOCOL_TLSv1 = 3 + _PROTOCOL_SSLv23 = 2 CERT_NONE = 0 CERT_OPTIONAL = 1 @@ -116,7 +109,7 @@ else: def wrap_socket(sock, keyfile=None, certfile=None, server_side=False, cert_reqs=CERT_NONE, - ssl_version=PROTOCOL_SSLv23, ca_certs=None, + ssl_version=_PROTOCOL_SSLv23, ca_certs=None, do_handshake_on_connect=True, suppress_ragged_eofs=True): if cert_reqs != CERT_NONE and ca_certs: diff --git a/mercurial/httpclient/tests/util.py b/mercurial/httpclient/tests/util.py index 01078c6603..bbc3d87151 100644 --- a/mercurial/httpclient/tests/util.py +++ b/mercurial/httpclient/tests/util.py @@ -133,7 +133,7 @@ class MockSSLSocket(object): def mocksslwrap(sock, keyfile=None, certfile=None, server_side=False, cert_reqs=http.socketutil.CERT_NONE, - ssl_version=http.socketutil.PROTOCOL_SSLv23, ca_certs=None, + ssl_version=None, ca_certs=None, do_handshake_on_connect=True, suppress_ragged_eofs=True): return MockSSLSocket(sock) diff --git a/mercurial/httprepo.py b/mercurial/httprepo.py index f51e467633..da90f38046 100644 --- a/mercurial/httprepo.py +++ b/mercurial/httprepo.py @@ -77,6 +77,7 @@ class httprepository(wireproto.wirerepository): if data and self.ui.configbool('ui', 'usehttp2', False): headers['Expect'] = '100-Continue' + headers['X-HgHttp2'] = '1' self.ui.debug("sending %s command\n" % cmd) q = [('cmd', cmd)] diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py index e23d64cd3c..102b6d87b0 100644 --- a/mercurial/subrepo.py +++ b/mercurial/subrepo.py @@ -606,7 +606,7 @@ class svnsubrepo(abstractsubrepo): if item == 'external': externals.append(path) if (item not in ('', 'normal', 'unversioned', 'external') - or props not in ('', 'none')): + or props not in ('', 'none', 'normal')): changes.append(path) for path in changes: for ext in externals: diff --git a/mercurial/util.py b/mercurial/util.py index b5bcfb01a7..40b21d7a24 100644 --- a/mercurial/util.py +++ b/mercurial/util.py @@ -1500,8 +1500,9 @@ class url(object): self.path = path + # leave the query string escaped for a in ('user', 'passwd', 'host', 'port', - 'path', 'query', 'fragment'): + 'path', 'fragment'): v = getattr(self, a) if v is not None: setattr(self, a, _urlunquote(v)) @@ -1522,6 +1523,10 @@ class url(object): >>> str(url('http://user:pw@host:80/?foo#bar')) 'http://user:pw@host:80/?foo#bar' + >>> str(url('http://user:pw@host:80/?foo=bar&baz=42')) + 'http://user:pw@host:80/?foo=bar&baz=42' + >>> str(url('http://user:pw@host:80/?foo=bar%3dbaz')) + 'http://user:pw@host:80/?foo=bar%3dbaz' >>> str(url('ssh://user:pw@[::1]:2200//home/joe#')) 'ssh://user:pw@[::1]:2200//home/joe#' >>> str(url('http://localhost:80//')) @@ -1570,9 +1575,13 @@ class url(object): if self.host: s += '/' if self.path: + # TODO: similar to the query string, we should not unescape the + # path when we store it, the path might contain '%2f' = '/', + # which we should *not* escape. s += urllib.quote(self.path, safe=self._safepchars) if self.query: - s += '?' + urllib.quote(self.query, safe=self._safepchars) + # we store the query in escaped form. + s += '?' + self.query if self.fragment is not None: s += '#' + urllib.quote(self.fragment, safe=self._safepchars) return s diff --git a/tests/test-hgrc.t b/tests/test-hgrc.t index 069572e536..79c078ae06 100644 --- a/tests/test-hgrc.t +++ b/tests/test-hgrc.t @@ -54,12 +54,20 @@ issue1829: wrong indentation warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ unset FAKEPATH -make sure unspecified global ui options don't override old values +make sure global options given on the cmdline take precedence $ hg showconfig --config ui.verbose=True --quiet - ui.verbose=True + ui.verbose=False + ui.debug=False ui.quiet=True + $ touch foobar/untracked + $ cat >> foobar/.hg/hgrc < [ui] + > verbose=True + > EOF + $ hg -R foobar st -q + username expansion $ olduser=$HGUSER @@ -140,7 +148,9 @@ plain hgrc $ hg showconfig --config ui.traceback=True --debug read config from: $TESTTMP/hgrc none: ui.traceback=True + none: ui.verbose=False none: ui.debug=True + none: ui.quiet=False plain mode with exceptions @@ -156,18 +166,24 @@ plain mode with exceptions read config from: $TESTTMP/hgrc $TESTTMP/hgrc:15: extensions.plain=./plain.py none: ui.traceback=True + none: ui.verbose=False none: ui.debug=True + none: ui.quiet=False $ unset HGPLAIN $ hg showconfig --config ui.traceback=True --debug plain: True read config from: $TESTTMP/hgrc $TESTTMP/hgrc:15: extensions.plain=./plain.py none: ui.traceback=True + none: ui.verbose=False none: ui.debug=True + none: ui.quiet=False $ HGPLAINEXCEPT=i18n; export HGPLAINEXCEPT $ hg showconfig --config ui.traceback=True --debug plain: True read config from: $TESTTMP/hgrc $TESTTMP/hgrc:15: extensions.plain=./plain.py none: ui.traceback=True + none: ui.verbose=False none: ui.debug=True + none: ui.quiet=False