Graphviz extension 実行例

注意:: 私が graphviz-hook コマンドでの検証に重点を置いていたため、 graphviz 拡張の初期の版は graphviz コマンドが正しく機能していませんでした。

現版は、 Mercurial の 0.9.3 〜 0.9.5 版において動作確認を行っています。

画像とクライアントサイドイメージマップファイルの両方を、 自動的に生成する最も簡単な方法は、 graphviz-hook コマンドを使用するものです。

本ページにある実行例と等価なこれらのファイルを生成するには、 hgrc ファイルに以下に示すような graphviz セクションを記述した上で、 graphviz-hook コマンドを起動してください。

[graphviz]
#### 結果格納先ファイル
imagefile=%%(hgroot)s/.hg/revtree.jpg

#### リビジョンを日付でグループ化する
opt.group-by-date=
#### 日付のグループに 'yyyy-mm-dd' 形式のラベルを描画する
opt.cluster-attr-hook=lambda r, b, d: (
    d and ('label="%%s-%%s-%%s"' %% (d[:-4], d[-4:-2], d[-2:])))
#### Mercurial の公式リポジトリへのリンク
opt.urlbase=http://selenic.com/repo/hg
#### 日時による描画対象リビジョンの制限
opt.datetime=

limitspecs=2007-07-01T00:00:00,2007-07-31T99:99:99

#### 生成された DOT 言語用ソースの保存
dot_source=
#### "下から上" 方向でのグラフ描画
dot_opts=-Grankdir=BT
#### クライアントサイドイメージマップの同時生成
imagemap=
graphviz セクション設定

上記の設定での graphviz-hook 起動は、 以下に示すコマンド起動とほぼ等価です。

% cd ${HGROOT}
% hg graphviz \
    --group-by-date \
    --cluster-attr-hook \
      "lambda r, b, d: (\
           d and ('label=\"%s-%s-%s\"' % (d[:-4], d[-4:-2], d[-2:])))" \
    --urlbase http://selenic.com/repo/hg \
    --datetime \
    2007-07-01T00:00:00,2007-07-31T99:99:99 > .hg/revtree.dot
% dot -T jpg -o .hg/revtree.jpg -Grankdir=BT .hg/revtree.dot
% dot -T cmapx -o .hg/revtree.html -Grankdir=BT .hg/revtree.html
等価なコマンド起動

"日付グループ化"に利用される日時値は、 リポジトリのチェンジログから取得されたものを、 起動環境のローカルタイムに変換したものです。 ですので、(1) 描画対象の選択が正しくない可能性もありますし、 (2) 複数のタイムゾーンに跨る分散開発の場合は、 group-by-date オプションになじまないかもしれません。