hg log の出力をもうちょっといい感じに整形する

Feb とか Fri とかわかんない

いまのところこんなかんじの .hgrc をつかっていて、あまり不自由はなかった。

[ui]
username = atasatamatara
editor = vim

[extensions]
color =
graphlog =
pager =

[color]
status.modified = magenta bold
status.added = green bold
status.removed = red bold
status.deleted = cyan bold
status.unknown = blue bold
status.ignored = black bold
diff.diffline = bold
diff.extended = cyan bold
diff.file_a = red bold
diff.file_b = green bold
diff.hunk = magenta
diff.deleted = red
diff.inserted = green
diff.changed = white
diff.trailingwhitespace = bold red_background

[pager]
pager = LESS='FSRX' less

%include ~/.hgrc.local

だいたいいいんだけど、hg log とか hg glog したときに日付のフォーマットが Fri, 2013, みたいなそういう形式なのがちょっと嫌でどうにか整形できないかと思った。考えてみれば mercurial なんだし python で、 datetime を strftime すればいいんじゃね?と思って調べた。GUI ツール使えってのもいいが、おれは CUI で完結させるほうが好きなんです。

style と template についての資料

hg log --template {string} か、そのテンプレートになったファイル hg log --style {PATH} でできる。具体的な参考資料は以下。
style について Chapter 11. Customizing the output of Mercurial
template の設定サンプル mercurialのstyleを使用してlog出力をカスタマイズする - yuitowest's blog
具体的な設定の公式資料は hg help templating で確認できる。
また、具体的な設定項目についての日本語訳してくれているものがある。 11 Customising the output of Mercurial

.hgrc で読み込ませる設定について

Mercurial: where to put the "style file" so it can (easily) be used on all my projects - Stack Overflow を参考にした。

[ui]
style = path/to/mystyle

自分がやった具体的な設定

最終的にこんな感じになった

changeset = '\033[0;33mchengeset : {rev}:{node|short} {tags}\033[0m\nsummary   : {desc|firstline|strip}\nuser      : {author}\nbranch    : {branch}\ndate      : {date|isodate} : {date|age}\n{file_adds}\n{file_dels}\n{file_mods}\n\n'

start_file_adds = '\n'
file_add = '\033[0;31mA {file_add}\033[0m\n'
# end_file_adds = ''

# start_file_dels = ''
file_del = '\033[0;31mR {file_del}\033[0m\n'
# end_file_dels = ''

# start_file_mods = ''
file_mod = '\033[0;35mM {file_mod}\033[0m\n'
# end_file_mods = ''

とりあえず日時フォーマットを {date|isodate}して {date|age}そのコミットが何時間前かの表示を追加、branch も常に表示するようにした。ついでにファイルの add, remove, modified したのも表示されるようにした。どのファイルが更新されるかみれるというのは、誰がどのブランチでどのファイルを触ったかがわかりやすくて動きが見えやすくていい。そのかわり気持ちちょっと重くなった。hg log --limit 10 とかしてもかわらない。まあ、気持ちの問題としていまはまあいいやという。

まあ

GUI ツールつかえば簡単かもだけど、自分としてはかねがね満足。もうすこしいえば diff まわりでもっと簡単に楽にみれるようにしたいけど、まあ、いまはいいや。

ここまでかいたけど

hgview って git の tig みたいなものもあるんですね……