TortoiseHg 利用者は revset 指定を積極的に活用すべき
まぁ、僕自身が去年の年末まで、revset は殆ど使っていなかったので、あまり偉そうなことは言えた身分ではないのだけれど(笑)。
TortoiseHg で『リビジョンセットやブランチで履歴をフィルター』ボタンを押すと、条件入力欄(『### revision set query ###』)が表示される。『リビジョンセットやブランチで履歴をフィルター』ボタンも『検索』ボタンも、共に虫眼鏡をモチーフに使用しているので、間違わないように!
この入力欄に様々な条件を revset 記述で入力して、虫眼鏡アイコンクリックで検索を適用すると、一覧表示対象の履歴が順次絞り込まれていく。例えば、上記の初期状態に対して、マージ対象リビジョンを除外する "not merge()
" を入力すると:
もうちょっと複雑な、例えば『default ブランチにおける修正で、2.1 版に取り込まれた 2.0 版以降のもの』を抽出するような場合でも:
- default ブランチ: "
branch('default')
" - 2.1 版に取り込まれた: "
::tag('2.1')
" - 2.0 版以降のもの: "
tag('2.0')::
"
先の『マージ対象リビジョン』に対する上記の論理積("and
" 結合)になるわけで、これらを一度に入力しなくても、条件の断片を順次入力することで、データウェアハウスのディメンジョンブラウザよろしく、対象リビジョンを徐々に絞り込んでいくことができる。
ブランチ名で "default" に限定して:
2.1 版以前の修正に限定:
※ 『2.0 版以降のもの』絞込みは、表示下限の設定なので、画面上は差が無い事から割愛。
実行効率的な事を考えるなら、後者2つは "tag('2.0')::tag('2.1')
" に統合すべきなのだけれど、まぁ、今時の PC 性能なら、ローカルリポジトリ相手に履歴をブラウズする際に、この程度の記述差で、目に見えて実行効率が低下することも無いでしょう(多分)。
もちろんコマンドライン利用でも revset 機能は使用出来るのだけれど、TortoiseHg 経由であれば:
- 以前の問い合わせ内容は(ブラウザの履歴情報みたいに)TortoiseHg が覚えておいてくれる
- 抽出結果(一部)を見ながら、問い合わせ内容を適宜修正できる
- 入力欄の横にある『…』ボタンを押すことで、revset 入力に特化したダイアログが表示される
などなどの利点があるので、TortoiseHg ユーザこそ revset 記述の恩恵を受けるべきだと思う。
revset 記述の詳細に関しては、オンラインヘルプ("hg help revset
")や、そのHTML版を参照のこと。