彷徨えるフジワラ

年がら年中さまよってます

Mercurial に関するコミュニティ由来の成果(2015年版)

本エントリは、2015年の一年間に、ML/twitter/勉強会といったコミュニティから上がった情報/要望の中で:

  • Mercurial 本体に取り込まれた修正の契機になったもの
  • Mercurial 本体に取り込まれてはいないものの、何らかの成果に結びついたもの
  • 『今後の作業のネタ』(= バックログ)として認識されているもの

上記に該当するものを、情報提供への感謝の意味も込めて、列挙したものです。
『気になった点に関して、情報提供をする』だけでも、十分開発に貢献できる事の証拠とも言えます。
今後も、Mercurial に関して疑問/質問/要望等があれば、お気軽に情報をお寄せください > 利用者の皆様

情報をお寄せ頂く手段に関しては、"Mercurial で困った時に" をお読みください。

なお、以前のものは、以下から参照できます。

本体に取り込まれた修正(changed by 藤原)

以下に列挙するものは、コミュニティからの情報を元に私が提案した修正のうち、Mercurial 本体に取り込まれたものです。
なお、私の手による修正履歴一覧から、記憶を頼りに目視で抽出したものなので、『俺の情報を元にパッチ作成しておいて手柄を独り占めかよ!?』的なものに心当たりがある方は、お気軽に情報をお寄せください(笑)。

● revset への文字列連結演算子の導入

元々は:

という要望だったのですが、色々紆余曲折した上で、最終的に revset 文法を拡張する方向で修正が取り込まれました。

  • 3a4d8a6ce432: revset: introduce new operator "##" to concatenate strings/symbols at runtime

例えば「ある時点 TIME における最新のリビジョン」を確実に特定したい場合、問い合わせ内容は max(date("< TIME")) となります。

さて、これを設定ファイルの revsetalias セクションに記述してエイリアスで便利に使おうとすると、途端に面倒な事態に陥ります。

エイリアスrecentat(TIME) = max(date("< TIME")) と定義した場合、"< TIME" の部分は「文字列」扱いになるため、TIME 引数の置換が適用されません(適用されてしまうと、それはそれで別の問題が発生してしまいます)。

かといって、recentat(TIME) = max(date(TIME)) というエイリアス定義にしてしまうと、実行時の引数指定が recentat("< 2015-01-01") という感じになってしまうので、エイリアスの意義が半減してしまいます。

上記の修正は、新規演算子 ## の両端の文字列/シンボルが、実行時に連結されてから評価される、というものです。

この演算子の導入により、エイリアス定義 recentat(TIME) = max(date("< " ## TIME))recentat("2015-01-01") のように使用した場合、実際に評価される問い合わせは max(date("< 2015-01-01")) 相当になります。

ちなみに、上記の修正を行う過程で、revset エイリアス定義の解析処理周りで見つけたいくつかの不具合を修正することもできました。

● 既存リビジョンからの qimport における不具合

という障害に対処するための、以下の修正が取り込まれました。

  • 707cdf2c3700: mq: use fallback patch name if no alpha-numeric in summary line (issue5025)

バックログ

以下は、コミュニティにおける要望のうち、私の個人的な TODO リスト(2015 年版)に積まれているものです。

例によって、誰かが横取りしてやってくれても全然構いません。っていうか横取り大歓迎です(笑)。

● テンプレートでの要素参照に関するヘルプ表示

Mercurial日本語ユーザグループ ML でのやり取りの中で:

キーワード file_copies に関連するフォーマット文字列は、hg helpでは表示されないので、たぶんソースで確認するのでしょうね。

という発言がありました。

確かに、現行のオンラインヘルプでは、{expr % "format"} 形式の format 中で使用可能な要素参照用のキーワードに関しては、挙げられている使用例からある程度類推はできても、その詳細は明記されていません。

現在、これらの情報をオンラインヘルプで表示すべく作業中なのですが、何故か機能登録処理周りの汎用化の話にまで風呂敷が広がってしまい、年内に終わらせることができませんでした (^ ^ ;;;)

● オンラインヘルプの強化周り

以下の点に関しては、パターンマッチング周りのオンラインヘルプの記述を強化したいところです。