Mercurial に関するコミュニティ由来の成果(2016年版)
本エントリは、2016年の一年間に、ML/twitter/勉強会といったコミュニティから上がった情報/要望の中で:
上記に該当するものを、情報提供への感謝の意味も込めて、列挙したものです。
『気になった点に関して、情報提供をする』だけでも、十分開発に貢献できる事の証拠とも言えます。
今後も、Mercurial に関して疑問/質問/要望等があれば、お気軽に情報をお寄せください > 利用者の皆様
情報をお寄せ頂く手段に関しては、"Mercurial で困った時に" をお読みください。
なお、以前のものは、以下から参照できます。
本体に取り込まれた修正(changed by 藤原)
以下に列挙するものは、コミュニティからの情報を元に私が提案した修正のうち、Mercurial 本体に取り込まれたものです。
なお、私の手による修正履歴一覧から、記憶を頼りに目視で抽出したものなので、『俺の情報を元にパッチ作成しておいて手柄を独り占めかよ!?』的なものに心当たりがある方は、お気軽に情報をお寄せください(笑)。
● ウェブでのグラフ表示におけるブランチ数の描画上限
hg のウェブ表示で同時に存在するブランチの多いリポジトリのグラフを表示した場合横に並んで表示されるブランチの最大数は15で増やすことはできないのでしょうか?
hgはbitbucketやkallitheaのようにグラフが途切れないで表示されるので頼りにしていたのです。15本というのが上限だとすると微妙な感じです。
という報告がありました。
この障害に対処するための、以下の修正が取り込まれました。
- 91ac8cb79125: templates: use canvaswidth instead of fixed width for canvas (issue2683)
なお、この修正だけだと、auto scroll との併用時に、同一画面上で表示幅の拡張が必要になった際に同じ問題が発生してしまうため、Anton Shestakov 氏による以下のフォローアップ修正がありました。
- 1779ff7426c9: hgweb: update canvas.width before dynamically redrawing graph (issue2683)
● hg pull --update 時のブックマーク更新
という障害に対処するための、以下の修正が取り込まれました。
- 7cb7264cfd52: commands: advance current active bookmark at pull --update correctly
指摘のあった障害に直接対応するのは上記の修正のみなのですが、修正前に関連処理を確認したところ、暗黙の update 先選択や、ブックマークの活性変更、メッセージ表示周りで色々怪しい実装を見つけることができたので、以下のような関連修正を取り込むことができました。
- 9da2283d0c56: destutil: add new local variable to increase readability
- 2c29f157463e: destutil: remove redundant examination
- c2f0a47069ef: destutil: replace wc.branch() invocations by cached value for efficiency
- e333cea74741: destutil: use cached branch information instead of query for efficiency
- de8b09482fb7: destutil: show message about other branch heads, even if on a closed head
- 6e3fdd98b277: commands: add postincoming explicit brev argument (API)
- 9ac8955d8c45: pull: activate a bookmark matching with the destination of the update (BC)
- 5d9578d9ad1a: pull: deactivate a bookmark not matching with the destination of the update
- 3f9e25a42e69: destutil: choose non-closed branch head at first (BC)
- 2e1bceeea520: update: omit redundant activating message for already active bookmark
- 66513f6ca038: commands: centralize code to update with extra care for non-file components
- e0d19d955608: commands: add postincoming docstring for explanation of arguments
- 138ec8835e63: hg: acquire wlock while updating the working directory via updatetotally
- d0210a35c81a: destutil: make messages at updating to the closed head usual form
- 1ace17e1e160: destutil: show message and hint at updating to the closed head as warning
● 対話的変更選択での文字化け
という障害に対処するための、以下の修正が取り込まれました。
- 9d38a2061fd8: patch: show lower-ed translated message correctly
本体に取り込まれた修正(changed by others)
以下に列挙する修正は、コミュニティからの情報を元に私以外の方が提案した修正のうち、Mercurial 本体に取り込まれたものです。
これらは私の記憶ベースで列挙してますので、漏れがありましたらお知らせください。
● ファイル名に # を含むバンドルファイルの扱い
TortoiseHg 3.8.3 で '#' を含むバンドルファイルをアンバンドルできません。
たとえば "#bundle.hg" というファイルをアンバンドルしようとすると "unknown revision 'bundle.hg'" というメッセージが表示されます。
hg unbundle コマンドだとアンバンドルできるのですが。
という報告がありました。
URL の仕様上、パス名に "#" を含むこと自体は対応が難しいのですが、とりあえず AttributeError で不正終了する件に関しては、西原さんが修正してくれました。
- 3f4e1c033f40: url: fix crash by empty path with #fragments
バックログ
以下は、コミュニティにおける要望のうち、私の個人的な TODO リスト(2016 年版)に積まれているものです。
例によって、誰かが横取りしてやってくれても全然構いません。っていうか横取り大歓迎です(笑)。
● rebase --keep-branch での空コミットの扱い
ツィートでも書きましたが、ユーザが明示的に ui.allowemptycommit=false 等を指定している場合は、--keep-branch 指定時でも空コミットを破棄するのが、妥当そうな気がしています。
● テンプレートでの要素参照に関するヘルプ表示
テンプレート機能における、
{expr % "format"}
形式のformat
中で使用可能な要素参照用のキーワードの説明を、オンラインヘルプで表示させる
この要望自体は、まだ解決には至っていないのですが、準備段階として以下の修正が取り込み済みです。
- 73905484ef70: dispatch: make loading extra information from extension extensible
- b983a2f04987: registrar: introduce new class for registration to replace funcregistrar
- ac11ba7c2e56: registrar: define revsetpredicate to decorate revset predicate
- dcb4209bd30d: revset: replace extpredicate by revsetpredicate of registrar
- 0383f7a5e86c: revset: replace predicate by revsetpredicate of registrar
- d749b1832d2f: revset: remove useless extpredicate class (API)
- 08bd09921102: registrar: remove useless base classes (API)
- 4eb5496c2bd4: registrar: add filesetpredicate to mark a function as fileset predicate
- 7108834c76a2: fileset: replace predicate by filesetpredicate of registrar (API)
- 009f58f1ea75: registrar: add templatekeyword to mark a function as template keyword (API)
- 119702a8b415: templatekw: use templatekeyword to mark a function as template keyword
- 012411b9940d: hgext: use templatekeyword to mark a function as template keyword
- 6b3b958daf03: registrar: add templatefilter to mark a function as template filter (API)
- 11f623b5668f: templatefilters: use templatefilter to mark a function as template filter
- 9a6fa1d93bc8: keyword: use templatefilter to mark a function as template filter
- cc103bd0dbf9: registrar: add templatefunc to mark a function as template function (API)
- efa192203623: templater: use templatefunc to mark a function as template function
これらは、機能拡張を統一的に表記できるようにする(= リスト要素に関するヘルプ情報も統一的に表記できるようにする)ための修正です。
この一連の変更の流れで、hgweb 周りの修正があと数パッチ残っていて、それが終われば、いよいよ要望自体のための修正に取り掛かれる筈……取り掛かれるといいなぁ(笑)