バージョンの表示

現在動いてるバージョンを mercurial リポジトリから持ってくる必要があったので、
mercurial のソースを読みながら調べてみたら、簡単でした。

はまったのが repos.changectx() これを一度呼ばないと repos.changelog が呼べません。

また、 hg.short や hg.hex を今まで知らなかったため
mercurialソースコードを3時間ぐらい読む羽目に ... 。

hg.short は短めの rev を、 hg.hex は完全な長さの rev を返してくれます。

はっきりいって誰が使うんだ?という情報ですが残しておきます。

http://tip.monologista.jp/ のバージョン表示に使う予定です。

from mercurial import hg
from mercurial.ui import ui

def hg_display(repository_path):
    repos = hg.repository(ui(), path=repository_path)
    ctx = repos.changectx()
    tip = repos.changelog.tip()
    return "%d:%s" % (repos.changelog.rev(tip), hg.short(tip))

if __name__ == '__main__':
    print hg_display('/path/to/mercurial/repository')