バージョンの情報をエクスポートする
==================================

最新のリビジョン番号を得る
--------------------------

ビルドスクリプトの中で最新のリビジョン番号だけが必要な場合、 ``revno`` コマンドを使用できます::

  $ bzr revno
  3104


詳細なバージョン情報を得る
---------------------------

最新バージョンに関する詳細な情報を出力するには ``version-info`` コマンドを使用できます::

  $ bzr version-info
  revision-id: pqm@pqm.ubuntu.com-20071211175118-s94sizduj201hrs5
  date: 2007-12-11 17:51:18 +0000
  build-date: 2007-12-13 13:14:51 +1000
  revno: 3104
  branch-nick: bzr.dev

オペレーティングシステムツールもしくはスクリプトを使用して出力を簡単にフィルタリングできます。
例です::

  $ bzr version-info | grep ^date
  date: 2007-12-11 17:51:18 +0000

より高度な後処理のためにすべてのリビジョンに関するバージョン情報が必要であれば、
``--all`` オプションはその情報を実際にダンプします。


Pythonのプロジェクト
--------------------

.. TODO: Figure out how to attach into ``setup.py``


プロジェクトファイルをビルドするためにMakefileを使う場合、
次のようにバージョン情報用のファイルを簡単に生成できます::

  library/_version.py:
        bzr version-info --format python > library/_version.py

これは3つのディレクトリを含むファイルを生成します:

  * `version_info`: 現在の状態に関する基本情報を含むディレクトリ。

  * `revisions`: コミット時間とコミットメッセージと一緒に、
    ツリーの履歴の中のすべてのリビジョンのリストを表示するディクショナリ。
    ``--all`` もしくは ``--include-history`` が提供されない限り、デフォルトではこれは空です。
    リリースバージョンに含まれる、バグ修正などを追跡したい場合に便利です。
    しかし多くのプロジェクトに対してこれは必要以上の情報です。

  * `file_revisions`: プロジェクトのすべてのファイルに対する最終修正のリビジョンのリストを示すディクショナリ。
    これは ``$Id$`` キーワードがCVSで管理されたファイルと同じように使われます。
    最終修正の日付は ``revisions`` マップで探すことで決定されます。 
    デフォルトではこれは空で、 ``--all`` もしくは ``--include-file-revisions`` によってのみ有効になります


別のフォーマットでバージョン情報を得る
--------------------------------------

任意のフォーマットのバージョン情報を取得するためにBazaarはテンプレートベースの方法をサポートします。
``version-info`` への ``--custom`` オプションは作業ツリーのステータスに基づいて拡張された変数を含む
``--template`` 引数を提供することで使用できます。

たとえば、現在のリビジョン番号を含むフォーマットされた文字列を伴うCヘッダーファイルを生成するには::

 bzr version-info --custom \
      --template="#define VERSION_INFO \"Project 1.2.3 (r{revno})\"\n" \
      > version_info.h

``{revno}`` は作業ツリーのリビジョン番号に置き換えされます。
(上記の例があなたのOSで動作しない場合、一行ですべてのコマンドを入力してみてください) 
テンプレートの中で利用できる変数の詳細な情報に関しては、
Bazaarのユーザーリファレンスの `Version Info`_ を参照してください。

.. _Version Info: ../user-reference/index.html#version-info

特定の言語でバージョン情報をダンプするために予め定義されるフォーマットはは現在開発段階にあります。
この領域の要求に関してはメーリングリストで私達開発者に連絡して下さるようお願いします。

チェッククリーン
-----------------

プロジェクトの内容に関する大抵の情報はリビジョンエントリを読むだけで簡単に決定できます。
しかしながら、作業ツリーがパッケージされたときにそれが最新であったこと、
もしくはローカルな修正があったことを知るためには便利です。
``--all`` もしくは ``--check-clean`` のどちらかを提供することで ``bzr`` は作業ツリーを検査して、
``version_info`` ``clean`` を設定します。
同様に ``modified`` が適切である場合に ``file_revisions`` でエントリを設定します。

.. 
   vim: tw=74 ft=rst spell spelllang=en_us
