Mercurial に関するコミュニティ由来の成果(2013年版)
本エントリは、2013年の一年間に、ML/twitter/勉強会といったコミュニティから上がった情報/要望の中で:
- Mercurial 本体に取り込まれた修正の契機になったもの
- Mercurial 本体に取り込まれてはいないものの、何らかの成果に結びついたもの
- 『今後の作業のネタ』(= バックログ)として認識されているもの
上記に該当するものを、情報提供への感謝の意味も込めて、列挙したものです(2012年版もあります)。
『気になった点に関して、情報提供をする』だけでも、十分開発に貢献できる事の証拠とも言えます。
今後も、Mercurial に関して疑問/質問/要望等があれば、お気軽に情報をお寄せください > 利用者の皆様
情報をお寄せ頂く手段に関しては、"Mercurial で困った時に" をお読みください。
また、抽出が大変だったので本エントリでは列挙しませんでしたが、メッセージ翻訳に関する不具合報告/要望等も随時反映しておりますので、こちらに関してもお気軽にお知らせください&お知らせ頂いた皆様、ありがとうございました!
本体に取り込まれた修正(changed by 藤原)
以下に列挙するものは、コミュニティからの情報を元に私が提案した修正のうち、Mercurial 本体に取り込まれたものです。
なお、私の手による修正履歴一覧から、記憶を頼りに目視で抽出したものなので、『俺の情報を元にパッチ作成しておいて手柄を独り占めかよ!?』的なものに心当たりがある方は、お気軽に情報をお寄せください(笑)。
● Windows 向け hg.bat での hg.exe パス指定
誰かWindowsでvertualenvにMercurial入れると動かないの直してくれないかなー。hg.batちょこっと直すだけの簡単なお仕事なんだけどそのためだけにhg-devに登録して英語のメール書くのめんどくさい。
— いわた (@wonderful_panda) 2013, 3月 25
というツイートを元に提案した、以下の修正が取り込まれました。
- f01a351db791: win32: use explicit path to "python.exe" only if it exists
※ BTS にも issue 2512 として報告されているのを見つけました
● Windows でのパスワードプロンプトの文字化け
去年の年末時点で、以下の障害を把握はしていたのですが:
そういえば、「パスワード」のところだけ文字化けするんだけど何でだろう?これは2.3.2だけど最新のバージョンでも同じ。 #mercurialjp http://t.co/knfrCVPO
— いわた (@wonderful_panda) 2012, 11月 29
手が空かずに、原因究明を後回しにしていたところ:
との情報を頂き、Python側実装の確認をした上で提案した、以下の修正が取り込まれました。
- be207d9b7e4b: i18n: show the non-ASCII password prompt text correctly
● ローカルタグによる上書き
TortoiseHgでローカルなタグを削除して、同リビジョンへ同名のローカルじゃないタグを追加してもタグが有効にならない… #mercurialjp
— koonies (@koonies92) 2013, 4月 16
.hg/localtags内の同名部分を削除したら一応解決したみたい。 #mercurialjp
— koonies (@koonies92) 2013, 4月 16
というツイートを元に提案した、以下の修正が取り込まれました。
- cb95716da5fe: tags: update tag type only if tag node is updated (issue3911)
- 335a558f81dc: tags: write tag overwriting history also into tag cache file (issue3911)
● 同名ファイル/ディレクトリの予期せぬ衝突回避
@flyingfoozy 帰ったらやってみます。ちなみに、foo/barを追加したのがブランチA、fooを追加したのがブランチBとして、BをAにマージするとfooフォルダが変名されてbarがunversionedになった状態でマージ成功扱いになります。
— いわた (@wonderful_panda) 2013, 3月 21
というツイートを元に提案した、以下の修正が取り込まれました。
- 1b329f8c7b24: windows: check target type before actual unlinking to follow POSIX semantics
● "hg help -k KEYWORD" での異常終了
#mercurialjp textful エクステンション https://t.co/tToVQw06lT を有効にしていると hg help -k keyword でエラーになってしまう。
— hokorobi (@h0k0r0bi) 2013, 5月 31
というツイートに対して、TortoiseHg コミッタの西原さんから:
@h0k0r0bi たぶんMercurialのバグです。textful.encodingをtextful_encodingへ変えれば回避できると思います。
extensions.load()はui引数を使ってる。
http://t.co/3J6I0LQqAn
— Yuya Nishihara (@yujauja) 2013, 5月 31
というコメントがあったので、西原さんからのパッチ投函を期待していたのですが、一向に投函が無かったので、私の方でやっつけることに(笑)。
単純に『ui 引数の追加(+ 内部的な表示の破棄)』で済むかと思っていたら、本質的には『エクステンション引き当てでの名前指定の非互換』の問題だったようで、最終的に以下のような修正が取り込まれました。
- 83d79a00cc24: help: use full name of extensions to look up them for keyword search
● 不正な rebase 状態情報への対応
Mercurial 2.7 以降から、rebase/histedit/graft/transplant が完了しない間は、update や commit、strip をできなくする、というガード機能が入りました。
しかし、それ以前の版では、rebase/histedit/graft/transplant が未完了でも update や strip ができるため、コマンドの内部管理情報が整合性を失ってしまう可能性があります。
Mercurial を 2.7 以降に更新した際に、旧来のリポジトリを clone して、clone 先に乗り換えてしまえば良いのですが、(最も一般的なケースである)そのまま使い続けた場合には、忘れて放置されていた未完了の rebase/histedit/graft/transplant 状態情報のために、以下のような問題が発生する可能性があります。
TortoiseHg にて
1. Rebase を行い衝突が発生、これを中断せずに「終了」する
2. Rebase 先のチェンジセットを strip で削除
すると、Rebase中という状態が残ってしまい以後Rebaseできなくなります。
#mercurialjp
— Satoshi Suzuki (@suzzsegv) 2013, 7月 19
この問題、最初は単に『未完了な rebase 状態情報がクリアできればOK』と思っていたので:
@suzzsegv #mercurialjp rebasestate が残る件ですが、graft等と統一的に "hg update" 契機で破棄する修正が、来月頭にリリースされる2.7で取り込まれる模様です http://t.co/npKq73GDtH
— FUJIWARA Katsunori (@flyingfoozy) 2013, 7月 25
などと返信したのですが、実のところ rebase/histedit/graft/transplant の完了待ち周りは、以下のようになっています。
未完了の処理 | update(状態クリア) | --abort機能(状態クリア/履歴破棄) |
---|---|---|
graft | 許可 | なし |
transplant | 許可 | なし |
rebase | 禁止 | あり |
histedit | 禁止 | あり |
rebase や histedit の状態をクリアするためには、--abort オプション付きでの実行が必須となりますので、当初のツイートのような『--abort 実行ができない』というケースでは、八方塞りになってしまうわけです。
そこで、以下のような修正を提案し、取り込まれました。
- 577f4c562d52: rebase: catch RepoLookupError at restoring rebase state for abort/continue
また、未完了状態に関する同様の問題の修正として、以下のものも取り込まれました。
- e7fa36d2ad3a: rebase: catch RepoLookupError at restoring rebase state for summary
- 45c3086880c7: histedit: suggest "histedit --abort" for inconsistent histedit state
● 複数ヘッド push 時のヒントメッセージの改善
hg push が失敗したときのエラーメッセージで -f の存在を教えるのは絶対に間違いだと思う...
— TAKAHASHI Shuhei (@nya3jp) 2012, 11月 21
昨年末に見つけて、個人的なバックログに積んであった上記ツイートに対処するための、以下の一連の修正が取り込まれました。
- bfc6ed892349: push: hide description about "-f" in the hint to prevent from using it easily
- 4f53de036af8: push: add more detailed explanation about "--force" to online help document
上記ツイートは、間接的にではありますが、『複数ヘッドの push』に関する以下の修正の契機にもなっています。
- b00ba31313c3: discovery: abort also when pushing multiple headed new branch
- 8179eb28983b: discovery: revise hint message introduced by changeset b00ba31313c3
● Python モジュールの import 問題
Mercurial 日本語 ML に、『hgsubversionを使った ssh経由の接続は可能ですか?』と題して、以下のような投函がありました。
hgsubversion が受け付けるのは以下のような形式なので:
$ hg clone http://user:sekrit@example.com/repo $ hg clone https://user@example.com/repo $ hg clone svn://example.com/repo $ hg clone svn+ssh://example.com/repo $ hg clone file:///tmp/repo
単なる URL 指定の間違いでは?と返信したのですが、実際には Python モジュールの import で失敗しているとのこと。
実行するとエラーになるので、もしかしてssh経由のhgsubversionは実はだめなのかなと思って質問しました。
実行結果:
$ hg clone svn+ssh://svn//data/repos/
複製先ディレクトリ: repos
中止: No module named hgsubversion!
発生状況の確認をしている間に、他の方から『既知の障害なのでは?』との情報が寄せられました。
コマンド実行時のオーバヘッドを減らすために、Mercurial では Python モジュールの import を遅延させる仕組みを導入しているのですが、色々調べてみると、その実装に問題があるようです。
最終的に、以下の修正提案が取り込まれました。
- 621a26eb3a99: demandimport: allow extensions to import own modules by absolute name
また、修正提案の過程で、エクステンション自身のモジュール import 以外にも、エクステンションから参照されるサードパーティライブラリの import でも障害が報告されていることが判明したため、追加的に提案した以下の修正も取り込まれました。
- e3a5922e18c3: demandimport: support "absolute_import" for external libraries (issue4029)
● サブリポジトリとフェーズ指定
mercurial、subrepoにmqがあたった状態だとmainrepoでpushできないのがちょっとキツイのよね。subrepoのmqもmercurialで管理してる場合は抜け道が欲しいよ。
— MURAOKA Taro (@kaoriya) 2013, 4月 13
上記のようなツィートを見かけたので:
@kaoriya #mercurialjp フェーズ機能を使って MQ 由来のリビジョンを secret 扱いにしてみてはいかがでしょうか? http://t.co/iJztJl6PKb
— FUJIWARA Katsunori (@flyingfoozy) 2013, 4月 15
と返信したところ:
mercurialのパッチキュー、phaseでsecretにするの良くないわ。hgsub先にキューがあたった状態で親をcommit&pushするとhgsubstateがパッチがあたったもので上がっちゃう。結果レポジトリが壊れたように見える。
— MURAOKA Taro (@kaoriya) 2013, 4月 21
という結果に。
確かに当該時点では、親リポジトリでの新規コミットのフェーズの決定は、参照先サブリポジトリのフェーズを完全に無視していました。てっきり「親リポジトリ/サブリポジトリを共に MQ 管理」という運用だと思い込んでいたので、このルートは盲点でした。
最終的に、以下の修正提案が取り込まれました。
- 4c96c50ef937: subrepo: check phase of state in each subrepositories before committing
何らかの成果に結びついたもの
以下は、Mercurial 本体には取り込まれていませんが、コミュニティからの要望を契機に、何らかの成果に結びついたものです。
● 部分コミットのためのガード機能
commitguard エクステンションは、以下のツイートを契機に実装しました。
gitで一部のディレクトリだけチェックアウトする http://t.co/QS82lg5whw これ、mercurialでもやりたい。。。ぐぐっても見つからないですが、ドキュメントにあるのかな??
— dai_yamashita (@dai_yamashita) 2013, 4月 9
● PyPI でのダウンロード設定
pip install mercurial したら 2.6-rc 落ちてきたけどまあいいかと思ってた。そしたらRietveldにアップロード失敗するようになったので2.5.4入れなおしたら直った。
— あしやひろ (@kk6) 2013, 4月 25
デフォでrc落ちてくるの割りとつらい
— あしやひろ (@kk6) 2013, 4月 25
というツイートがあり、pip install mercurial
の対象から rc (Release Candidate) 版を除外する必要があるなぁ、と考えていたところ:
まだ mercurial パッケージは余計な URL がリストアップされてるなあ。 https://t.co/tAG3Gx6k67 pypi から対処してーってメールが飛んでるはずなんだけど、だれかやってくれないものか。
— Takeshi KOMIYA (@tk0miya) 2013, 6月 6
という情報も。
インデックスファイルの修正+tarballの pypi へのアップロードで、両方の問題を一気に解決できることから、pypi パッケージの保守担当者にメールして、設定変更を実施してもらいました。
2.7 版リリースからは、pip install mercurial
が以下のように改善されました。
- rc 版がインストールされる心配がない
- インストール速度も大幅に向上
- 本家の selenic.com がダウンしていてもインストール可能
● 作業領域更新不要なブランチクローズ機能
closebranch エクステンションは、以下のツイートを契機に、memctx を使った実装の練習を兼ねて実装しました。
Mercurialで 作業ディレクトリをアップデートせずにブランチをクローズするだけって方法あるのかな #hg
— Kaz Nishimura (@kazssym) 2013, 10月 13
● 256色対応
poor256color エクステンションは、以下のツイートを契機に実装しました。
color extension の 256色対応ってだれか手を出してたりするんですか? #mercurialjp
— Takeshi KOMIYA (@tk0miya) 2013, 12月 18
● ブログエントリ
以下のツイートは、ブログエントリ執筆の必要性を感じた動機付けツイートです。
Mercurialの.hgignoreには管理対象にしたい?の「!」はないのかな?
— shinriyo (@shinriyo) 2012, 8月 23
⇒ .hgignore における『無視対象に対する例外条件』指定の記述
明後日のCLR/H勉強回 http://t.co/Wsb4ddWyA2 ですが、分散バージョン管理システムMercurialを使っているオープンソース製品への、プルリクエストを送る際の作法とか誰か指南してくれたら嬉しいなぁ。Gitとはブランチの扱い違うようなので。#clrh86
— jsakamoto (@jsakamoto) 2013, 11月 7
⇒ 『Mercurial で pull request』したい Git ユーザが必要になるであろう、Mercurial におけるブランチの概念+アルファ
Mercurial、拡張子の大文字小文字は区別されるのね….hgignore書いてて気づいた。(Windowsユーザーには当たり前ではないので)早めに気づけてよかったかも。
— こざかな (@littlefish_tw) 2012, 7月 24
ん〜、hg convert に失敗する。コメントに日本語があると駄目なことがあるみたい。エラーも出さずに落ちているので、--debugをつけないと状況がわからない。TortoiseHg 2.8.2 #mercurialjp
— hokorobi (@h0k0r0bi) 2013, 7月 19
⇒ 非 ASCII 文字出力により、Windows 上での Mercurial 実行が中断される問題
@flyingfoozy 単にDOS窓で色付けするのはcolorsエクステンションで出来ています。今やりたいのはpagerエクステンションを介した時も色付けを保ちたいということです。
— ゆうじ@カメモード (@yuji_developer) 2013, 11月 6
TortoiseHgでstripしたデータを復元しようと"バンドルファイルの適用"をしたら「〜.hgから取り込めるチェンジセットはありません」という無情なメッセージ。
対象リビジョン群はフェーズがsecretになっていた。ああ!僕の2日間っ!!つづく #mercurialjp
— koonies (@koonies92) 2013, 5月 22
@flyingfoozy hg拡張で例えばstatusをHookしてサブディレクトリで hg stauts hoge.txt などとするとHook関数のkwargs['pats'] にはhoge.txtと入るんですが、repo.rootからのpathを知る方法はありますか?
— TAKAHIRO (@c_o_t) 2013, 11月 19
⇒ Mercurialエクステンションで、指定パターンに合致する管理対象ファイルを取得する
今更だけど、hgでリビジョン管理してるファイルのパーミッション(実行権限)って、Windowsからは制御できるんだっけ? #mercurialjp
— 非実在naka aki (@naka_aki_spl) 2013, 12月 25
なんかMercurialが何もdiff無いファイルをstatusで出すようになったんだけど…超仕事しずらいんですが...
— KANEKO Ryosuke (@yamaneko1212) 2013, 12月 12
バックログ
以下は、コミュニティにおける要望のうち、私の個人的な TODO リスト(2013 年版)に積まれているものです。
例によって、誰かが横取りしてやってくれても全然構いません。っていうか横取り大歓迎です(笑)。
● rebase での --keep 指定におけるフェーズチェック
少なくとも「rebaseが不安な人は--keepを指定して、成功してからrebase元をstripしましょう」ってのは良くないと思った。keepを指定するとpublic revもrebase出来てしまうので意図しない結果になる可能性がある。 #mercurialjp
— いわた (@wonderful_panda) 2013, 4月 26
「ポリシー設定を選択できるような設定の追加」の方向性で考えています。
● 複数行の外部プロセス実行指定での問題
[alias]
test =
!cmd ...
って記述すると外部プロセスの呼び出しとして認識されないのは仕様でしょうか?
#mercurialjp
— いわた (@wonderful_panda) 2013, 5月 16
設定ファイルの文法上は、エイリアスやマージツール、encode/decode等での、外部プロセス実行指定においても、複数行の記述が可能なのですが:
という、かなり期待と異なる結果になります。
外部プロセス実行指定が複数行に渡る場合に、警告ないしは中断するパッチを提案する予定です。っていうか、実装して疎通確認までは済んでいるのですが、パッチを投函し損ねてます……orz
● 空コミットのリベース
TortoiseHgで、ブランチ開始で空コミットしちゃったリビジョンをrebaseやexportで上に移動しようとしても、無視されますね。そういうもの?(空コミットのリビジョンだけ無かったことになった状態でrebaseされる) #mercurialjp
— 非実在naka aki (@naka_aki_spl) 2013, 6月 14
ブランチの初回コミットは、「ファイル変更無しで、ブランチ用途をコミットログとして記録」的な用途も考えられます。
hg rebase
における --keepbranches
が「元ブランチ名を維持」である意味合いを考えた場合、移動先とは異なるブランチに属するものに関しては、空コミットも許すべきと思われます。
一応、修正の目途は付いているのですが、既存のテストの改修がアレなので、パッチを投函し損ねてます……orz
(2015-11-03 追記) 他の開発者の手による修正が取り込まれましたので、2015-11-01 前後にリリースされる 3.6 版以降からは、--keepbranches
指定時に空コミットも維持されるようになります。
● revsets での文字列連結
@hiroseyuuji こうか?
% hg cat -r 'date("<2013-3-31")' hoge.txt
hg log だと3-31以前が全部出てくるけどcatだと1個だけっぽくて統一感がない。
あと「<」を入れないといかんのもめんどい。その時点の最新をクレ。
— HIROSE Yuuji/広瀬雄二 (@hiroseyuuji) 2013, 7月 4
ツィート上でのやり取りの際には、datebefore()
や dateafter()
のような、不等号等の指定が必要ない revset 述語の提案を考えていました。
しかし、実装を眺めていたら、演算子の追加が思ったよりも簡単そうなので、「文字列/シンボル等を連結する演算子」を提案した方が汎用性が高そう、という結論に。
実装/テスト自体は済んでいるのですが、これまた他の作業に紛れて、パッチを投函し損ねてます……orz
● ファイル名衝突周りの問題
『マージにおける同名ファイル/ディレクトリの衝突』に関しては、去年の時点で:
名前が同じディレクトリとファイルのマージの問題はまだ解決してないの? #mercurialjp
— fgtrjhyu (@fgtrjhyu) 2012, 6月 18
@fgtrjhyu Matt自身が『バグだ』と名言しているのに未対処なところを見ると、世間的にもあまり修正ニーズが上がっていないみたいですね。それにしても管理番号『29』というのは相当に古参の障害だなぁ http://t.co/s7nz8nnE #mercurialjp
— FUJIWARA Katsunori (@flyingfoozy) 2012, 6月 19
という状況のところに、開発者MLにパッチの投稿があって、『これは動きがあるかも?』という期待が盛り上がっていたのですが、その後は特に進展がありませんでした。
issue3452 への修正の際に、衝突検出を思いっきり書き換えたこともあって、乗りかかった船ということで、『マージにおける同名ファイル/ディレクトリの衝突』に関しては、現在絶賛作業中です。
一度修正案を提案したのですが、「大規模リポジトリでは効率が悪い」という理由から却下されたので、性能周りに配慮した実装に挑戦中です。
実装中に見かけた、以下のツイートに関する対応も、見込んで修正する必要があるので、なかなかに難しい感じ……
case-folding collisionはupdate前に教えてくれるのに"やconなどWindowsでは許されないファイル名なやつはupdate中に教えてくれるmercurialマン
— rnurachue (@murachue) 2013, 5月 20
⇒ hg update
や hg merge
での、非ポータブルファイルの検出@flyingfoozy なるほど。ちなみに今回の場合は、おそらく当初mercurialを使っていない環境で開発されていて、後でmercurialに移行?したからではないか、と思いました。ある程度開発が進んでいて、ファイル名の変更は影響が大きすぎるのでそのままにしたと。
— rnurachue (@murachue) 2013, 5月 20
⇒ hg convert
での、非ポータブルファイルの検出(文字大小衝突も)mercurialをwindowsとlinuxで使ってて、linux側で同一階層に/folderと/Folderができててwindows側でうえぇみたいなありがちなことがあった
— 未錯乱でぴょんぴょん中エターナル (@lagash) 2013, 8月 28
⇒ 間接的なパスの衝突の検出(hg update
や hg merge
、hg convert
でも実施の必要あり)
● フックのサンプル/ひな形の追加
まあそういうことがしたければ常にpush -fを使う運用にしてhookでpush可否を制御するべきなんだろうけど。 #mercurialjp
— いわた (@wonderful_panda) 2013, 9月 19
「新規ブランチ作成は許すけど複数ヘッドは禁止」とかなると、revsets 記述を使うにしても結構複雑になります。もしも「closedだったら複数ヘッド許可」のような条件だと、おそらく Python コードじゃないと、応答性が悪くなるかもしれません。
「サーバ側のフックで防止できますよ!」とは言っても、参考にすべき「実用的な」例が無い(or 探さないといけない)のは問題な気がしていますので、hgext か contrib 扱いで「サーバ向けフック集」の追加を提案しようかと思ってます。
● エイリアスでの "$@" 置換
mercurial の alias って shell の "$@" 相当ないのかな? "$@" だと全体が quote されちゃうし、 $@ だけだとスペースで分割される。
— NAKAMURA Yoshitaka (@nakamuray) 2013, 12月 2
現状、エイリアスでの $@
記述は、Mercurial 側で置換しているため、シェルが実行された時点で、引数が再評価されてしまいます。
UNIX系環境の場合だけ、シェル側に $@
を解釈させるようなパッチを提案してみようと思っています。
「各環境での動作互換性重視」の観点で、却下される可能性ありますが……
(2014-08-15 追記) 他の開発者の手による修正が取り込まれましたので、2014-11-01 前後にリリースされる 3.2 版以降からは、Windows/POSIX 両方で $@
が使用できるようになります。
● サブリポジトリとの同期状況確認
2012年のツイートですが、2013年になってちょっとした関わりがあったので、備忘録代わりに。
@cointoss1973 hgsubstateは手作業で編集する必要はない。svn commit して普通に hg commit すればいいようだ。ただ doc の変更を知る方法がよくわからない hg status では取得できない。
— こいんとす@STELLA (@cointoss1973) 2012, 12月 21
"TortoiseHg の独自機能 〜 サブリポジトリの状態表示" 末尾でも書いたように、開発者 ML 上での機能追加の提案があったものの、その後、全く動きがありません。
代替案を提案した身としては、動向が気になっています。
● 外部フックへのリポジトリルート明示
これも 2012 年のツィートですが、備忘録代わりの「お気に入り」ツィートを棚卸ししていて見つけました。
http://t.co/hGRgB0vJ をみて、hg push したときにCIFS上のリモートレポジトリ側で自動で hg update できる! と喜んだのもつかの間、 cygwin + tortoise hg の組み合わせでは cmd.exe が間に挟まってうまく動かず。
— Kentaro Sh (@snt) 2012, 11月 14
問題の原因は、cmd.exe が UNC パスをサポートしていない(= カレントディレクトリを移動できない)ことにありました。
TortoiseHg のカスタムツールであれば、コマンド文字列中の {ROOT}
をリポジトリルートで置換したりしてくれるのですが、Mercurial の(外部)フックでは、カレントディレクトリの情報以外で、対象リポジトリルートを取得する方法がありません。
HG_ROOT
あるいは HG_REPOROOT
環境変数で、対象リポジトリのルートディレクトリを渡すような修正を提案する予定です。
● オンラインヘルプの強化周り
他に、オンラインヘルプの記述を強化することで、混乱を回避できそうな件に関するツイートがいくつかあります。
hg export
/hg import
が encoding sensitive な件とか:
hg export , import ってMercurial クライアント毎に互換性がないっていうアレげな感じなのかな。
— てらまこ (@teramako) 2013, 4月 15
@teramako コミットログは内部 utf-8 で保持していますが、export 出力は『外部表現形式』なので、コマンドラインからの入出力/メッセージ表示等と同様に、--encoding/HGENCODING等の指定に従う、という方針になっています。
— FUJIWARA Katsunori (@flyingfoozy) 2013, 4月 15
proxy 周りの設定とか:
easy_install はシステムのプロキシを使ってくれるけど、mercurial は独自設定か…
— Toru Uetani (@toruuetani) 2013, 5月 1
@toruuetani #mercurialjp Pythonの標準的なproxy設定であるhttp_proxy環境変数設定で大丈夫な筈です。実装上は、[http_proxy] host 設定がなければ、urllib2のhttp_proxy環境変数解釈に任せてしまってますので
— FUJIWARA Katsunori (@flyingfoozy) 2013, 5月 1