Mercurial で困った時に
このエントリは、Mercurial Advent Calendar 2013 の25日目です。
このエントリでは、Mercurial を利用していて:
- ある機能を使いたいが、詳細がよくわからない
- 期待通りに機能しない
- やりたい事があるが、どの機能を使えばよいのかわからない
といった場合に、情報を仕入れたり、相談したりする方法について説明します。
まずは、Google や Bing 等を使ったウェブ検索や、Stack Overflow のような技術系情報サイトの使用以外の、Mercurial に特化した情報収集手段について説明します。
書籍で調べる
拙著「入門 TortoiseHg + Mercurial」は絶賛発売中です(笑)。
- 作者: 藤原克則
- 出版社/メーカー: 秀和システム
- 発売日: 2013/02/27
- メディア: 単行本
- 購入: 3人 クリック: 13回
- この商品を含むブログ (15件) を見る
サポートページや、サポート受け付けエントリもあります。
オンラインヘルプを調べる
hg help トピック
によるオンラインヘルプ機能を使うことで、各コマンドの使い方や、利用可能な機能の詳細に関して、情報を得ることができます。
hg help
あるいは hg help -v
実行により、指定可能な「トピック」が一覧表示されます。
バージョン 2.3 以降の Mercurial であれば、hg help -k "用語"
実行により、オンラインヘルプに「用語」が含まれるトピックを列挙してくれます。例えば:
$ hg help -k "絶対パス" トピック: config 設定ファイル urls URLのパス指定 コマンド: clone 既存リポジトリの複製
検索対象となるオンラインヘルプの言語は、言語設定に従います。
hg help -k "用語"
以外の方法としては、ウェブ上で参照可能なオンラインヘルプ hg(5) や hgrc(5)、hgignore(5) を開いて、ブラウザを使ったページワイドな検索、という手もありますね。
Mercurial の BTS で確認する
Mercurial の Bug Tracking System (BTS) では、記録されている障害や機能追加要望等に対して、検索を行うことができます。問題を回避する方法 (work around) や、新版で問題が修正済みであることが判明するかもしれません。
トップページの "Quick Search" 欄経由で検索した場合は、Summary と Description が検索対象になりますが、"Search" リンク ⇒ "Simple Search" タブ経由で検索した場合は、投函後の追加 Comments も検索対象になります。
もしも、Mercurial 実行中に想定外のエラーで処理が中断されたなら、コマンド実行時に --traceback
オプションを追加して、トレースバック出力付きでコマンドを再実行してみてください。
例えば、以下のようなトレースバックが出力されたなら:
Traceback (most recent call last): File "hg", line 42, inFile "mercurial/dispatch.pyo", line 28, in run File "mercurial/dispatch.pyo", line 65, in dispatch File "mercurial/dispatch.pyo", line 88, in _runcatch File "mercurial/dispatch.pyo", line 740, in _dispatch File "mercurial/dispatch.pyo", line 514, in runcommand File "mercurial/dispatch.pyo", line 830, in _runcommand File "mercurial/dispatch.pyo", line 801, in checkargs File "mercurial/dispatch.pyo", line 737, in File "mercurial/util.pyo", line 471, in check File "mercurial/extensions.pyo", line 144, in wrap File "mercurial/util.pyo", line 471, in check File "hgext/mq.pyo", line 3528, in mqcommand File "mercurial/util.pyo", line 471, in check File "mercurial/commands.pyo", line 5759, in unbundle File "mercurial/url.pyo", line 474, in open File "urllib2.pyo", line 400, in open File "urllib2.pyo", line 418, in _open File "urllib2.pyo", line 378, in _call_chain File "urllib2.pyo", line 1310, in file_open File "urllib2.pyo", line 1335, in open_local_file File "mimetypes.pyo", line 294, in guess_type File "mimetypes.pyo", line 355, in init File "mimetypes.pyo", line 259, in read_windows_registry File "mimetypes.pyo", line 249, in enum_types UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)
"mimetypes
enum_types
UnicodeDecodeError
" あたりをキーワードに指定してみてください。
open
みたいな一般的な名称は、検索結果に余計なノイズを増やすので、極力特徴的な名前を選択してください。まぁ、この辺は、Google 等で検索する場合にも共通な、ちょっとしたセンスが必要かもしれませんね。
なお、検索の際の Status 指定が "Open" の場合、解決済み ("Closed") なものは検索対象から除外されます。最新ソースで修正済みのバグも検索したい場合には、対象 Status に "All" を指定するのを忘れないようにしてください。
# "All" の場合、検索結果が膨大になる可能性もありますが……
メーリングリストで確認する
Mercurial 日本語ユーザグループ(mercurial-ja)のメーリングリストは、過去の投函内容の検索/参照に関しては、ユーザ登録不要です。
もしも、英語の使用が特に苦にならないのであれば、Mercurial のメーリングリストを直接確認してみるのも良いでしょう。
英語メーリングリストには、一般の利用者向けのもの (The Mercurial list) と、開発者向けのもの (The Mercurial-Devel list) があります。それぞれ、検索用ページへのリンクが数種類用意されていますので、UI 等の好みに応じて選択してください。
Twitter で呟く
これまでに書いた方法でも、問題の解消方法が見つからない場合は、問題を抱えている旨を、何らかの方法で情報発信してください。
ちなみに、「Mercurial の BTS やメーリングリストのアーカイブを検索してから呟け!」と言っているわけではないです。
コマンドの仕様や、ヘルプの記述、事前に提示されるメンタルモデルが不適当な場合は、Mercurial 側を改善する必要がありますので、ちょこちょこいじってみて、「駄目だこりゃ!」となった場合は、お気軽にお知らせください。
閑話休題。
今時の情報発信手段の第一候補としては、Twitter を選択するのが一般的/お手軽でしょうね。
"mercurial" を含む呟きに関しては、助言できそうなもの/修正案として取り込めそうなものがないか、定期的な検索を私が個人的に行っています。
お蔭様で、Twitter 経由の報告を契機に、多くの修正を実施することができました(2012年版成果一覧)。
但し、あくまで「私が個人的に」検索しているだけですので、個人的な都合で返信が遅れたり:
- 単純な見逃し
- 内容/前後の呟きを元にしたスルー
- 特に困っている訳でも無さそう
- 既に解決済み
- bot っぽい呟き
- Nike のスパイクの話題
- 気紛れな魔術師の話題
上記のような理由から、返信自体が無かったりする可能性もあります。
#mercurialjp 付きの呟きの場合、私以外の日本語コミュニティの方の目にも触れますので、単に "mercurial" を含む呟きよりは、何らかの情報が得られる率が上がることでしょう。
場合によっては、原因究明のために、色々な動作確認にご協力頂く場合もあります。実行時の設定情報や、エラー時のトレースバック等の情報が必要になることもありますので、pastebin.com (www.pastebin.ca とどっちが一般的なのかな?)や、etherpad 等での情報公開をお願いするかもしれません。
なお、私が認識している範囲で、「自分で問題解決できる筈」な人の呟きの場合は、#mercurialjp 付きでツイートしても、特に返信せずに放置するケースもあります(笑)。
メーリングリストで質問する
普段の日本語メーリングリストは、新規バージョンのリリースや、重要な障害に関する周知広報がメインになりがちですが、質問や意見等の投函も絶賛受付中です。
実のところ、Twitter での情報発信よりも、「情報の蓄積が機能しやすい」とか「見落とし等が無い」といった点から、メーリングリストに投函して頂いた方が助かります。
TortoiseHg や SourceTree のような GUI フロントエンドや各種 IDE 向けのプラグイン、RhodeCode のようなリポジトリ管理機能といった Mercurial 関連ツールはもちろん、履歴管理の運用に関する相談等のメールも歓迎です。
なお、スパムメール防止の観点から、mercurial-ja メーリングリストへの投函には:
- メーリングリストへのユーザ登録が必要
- ユーザ登録後の初回投函は、管理者による許可があるまではメールが配信されない
以上のような制限が設定してあります。
ユーザ登録が必要な設定でも、一時は定期的にスパムメールがあったぐらいなので、少なくとも当分は「誰でも投函可能」な設定にはしない予定ですからご了承ください。
まぁ、今時は、スマートフォン/タブレット等の普及もあって、Gmail アカウントを持たない人は少ないでしょうから、登録の敷居/手間も以前ほど高くないでしょう。
普段の流量もそれほど多くないですから、継続的に Mercurial を使われる方は、是非メーリングリストに登録してみてください!