履歴を閲覧する
================

bzr log
-------

``bzr log`` コマンドは以前のリビジョンの一覧を表示します。

``bzr diff`` と同じように, ``bzr log`` は ``-r`` の引数をサポートします::

    % bzr log -r 1000..          # リビジョン1000とその後のすべて
    % bzr log -r ..1000          # r1000とそれまでのすべて
    % bzr log -r 1000..1100      # 1000から1100までの変更
    % bzr log -r 1000            # リビジョン1000のみの変更

マージされたリビジョンを見る
------------------------------

Bazaarのような分散型のVCSは集中型のVCSツールよりもマージが非常に簡単なので、
ブランチの履歴は、メインラインから分離してその後メインラインにマージされる\
ようなラインを含むことがあります。
技術的には、無数のリビジョンノード間の関係は無閉路有向グラフ(Directed Acyclic Graph: DAG)として知られます。

多くの場合、まずはメインラインを見てそのあとに別のラインを見たいものです。
そのため、log のデフォルトの動作はメインラインを表示して、マージされた\
リビジョンがあるある場所を指示します。::

  bzr log -n0 -rX

全てのリビジョンと全てのマージされたリビジョンを見る場合は::

  bzr log -n0

-n オプションは表示するレベルを意味し、0の場合は全てを意味することに注意してください。
もしそれがゴミゴミしているなら、値を変更して調整することが容易にできます。
たとえば、もしあなたのプロジェクトがトップレベルのgatekeeperがチームレベルのgatekeeperからマージするように構成されている場合、\
``bzr log`` はトップレベルgatekeeperの履歴だけを表示し、 ``bzr log -n2``
はチームのgatekeeperの履歴を表示します。
しかし、ほとんどの場合においては ``-n0`` で十分でしょう。


出力をチューニングする
-----------------------

``log`` コマンドは出力を調整するために便利ないくつかのオプションを持ちます。次のものが含まれます:

 * ``--forward`` はログを年代順で表します。
    すなわち最新のリビジョンが最後に表示されます。

 * ``--limit`` オプションは表示されるリビジョンの最大数を制御します。

出力の調整方法の詳しい情報に関してはユーザーリファレンスのlogコマンドのオンラインヘルプを参照してください。

ファイルの履歴を閲覧する
-------------------------

特定のファイルのみに適用されるように履歴をフィルタリングすることが便利であることがよくあります。
これを行うためには、ファイルの名前を ``log`` コマンドに提供します::

  bzr log foo.py

古いバージョンのファイルを閲覧する
-----------------------------------

指定されたバージョンでファイルの内容を取得するには、次のように ``cat`` コマンドを使います::

  bzr cat -r X file

``X`` はリビジョンの識別子で ``file`` はファイルの名前です。
これは出力を標準出力ストリームに送信しますので、次のように\
閲覧ツール( ``less`` や ``more`` など)に出力をパイプで渡すか\
リダイレクトするといいでしょう::

  bzr cat -r -2 foo.py | less
  bzr cat -r 1 foo.py > /tmp/foo-1st-version.py

グラフィカルな履歴ビューワ
----------------------------

履歴のブラウジングはGUIツールが人生を本当に楽にしてくれる領域です。
QBzrとbzr-gtkを含めてこの機能を提供するBazaarのプラグインがたくさんあります。
これらがまだインストールされていなければ `プラグインを利用する <plugins.html>`_ で詳細なインストール方法をご覧ください。

QBzrからグラフィカルビューワを使うには::

  bzr qlog

bzr-gtkからグラフィカルビューワを使うためには::

  bzr viz

``viz`` は実際には ``visualize`` の組み込みのエイリアスなので望むのであれば長い方のコマンド名を使います。

