コアの概念

Bazaar

コアの概念

単純なユーザーモデル

Bazaarを使うために理解する必要のある概念は4つあります:

  • リビジョン(Revision) - 取り組むファイルのスナップショット
  • 作業ツリー(Working tree) - バージョン管理されたファイルとサブディレクトリを含むディレクトリ
  • ブランチ(Branch) - ファイルの履歴を記述する、順序づけされたリビジョンの集合
  • リポジトリ(Repository) - リビジョンの貯蔵場所

それぞれを詳しく見てみましょう。

リビジョン

リビジョンはファイルとディレクトリの内容と形を含むそれらのツリーの状態の スナップショット です。 リビジョンはそれ自身に関連づけされたメタデータをいくつか含みます。メタデータには次のようなものが含まれます:

  • コミットした人
  • コミットした時間
  • コミットメッセージ
  • そのリビジョンの元になった親のリビジョン

リビジョンは不変で、グローバルかつユニークに リビジョンid (revision-id) で識別できます。 リビジョンidの例は次のとおりです:

リビジョンidはコミットする、もしくは他のシステムからインポートする時点で生成されます。 リビジョンidは内部で利用するときや外部ツールとの統合に必要ですが、 ブランチ固有の リビジョン番号 (revision numbers)の方が人間に好まれるインタフェースになります。

リビジョン番号は 1 や 42 や 2977.1.59 のようにドットで区切られた10進法の識別子でブランチに対するリビジョン番号のグラフを通してパスを追跡します。 リビジョン番号は一般的にリビジョンidよりも短く、単独のブランチの範囲では それらの関係を理解するためにそれぞれを比較できます。 たとえば、リビジョン10はリビジョン9の直後のメインライン(下記を参照)のリビジョンです。 リビジョン番号はコマンドが実行されているときに生成されます。 これらはブランチ内でどのリビジョンがチップ(すなわち最新のリビジョン)であるかに依存するからです。

Bazaarで指定できるリビジョンとリビジョンの範囲のいくつかの方法に関しては、付録の リビジョンを指定する を参照してください。 リビジョンの番号付けの詳細に関しては リビジョン番号を理解する を参照してください。

作業ツリー

作業ツリー(working tree)は ユーザーが編集できるファイルを保持する バージョン管理されたディレクトリ です。 作業ツリーは ブランチ に関連付けされます。

多くのコマンドは作業ツリーをそれぞれの文脈で使います。 たとえば、 commit コマンドは作業ツリーの中のファイルの現在の内容を利用して新しいリビジョン番号を作ります。

ブランチ

最もシンプルな場合、ブランチは 順序づけされた一連のリビジョン です。 最終リビジョンは チップ(tip) として知られます。

ブランチは分かれたりその後再結合(marged back)されたりして、グラフの形をとります。 技術的にいえば、グラフは(親と子のリビジョンの間)の有行な関係を表し、ループが存在しないので、 directed acyclic graph (DAG) として言及されるかもしれません。

この名前にギョッとするかもしれませんが、ご心配なく。 覚えておくべき重要なことは次のとおりです:

  • DAGの範囲内での開発の主要なラインは メインライン(mineline), トランク(trunk), もしくは単に 左側(left hand side: LHS) と呼ばれます。
  • ブランチはメインラインではない開発ラインを持つことがあります。 そのとき、別のラインはある時点で始まり別の時点で終わります。

レポジトリ

レポジトリはシンプルにいえば リビジョンの保管場所 です。 最もシンプルな事例では、それぞれのブランチが独自のレポジトリを持ちます。別の事例では、ディスクの使用量を最適化するためにブランチに対してレポジトリを共用しています。

概念をまとめる

上記の概念を把握したら、Bazaarのさまざまな使い方が理解しやすくなります。 Bazaarの最もシンプルな使い方は スタンドアロンツリー(standalone tree) で、これは1つの位置に作業ツリー、ブランチとレポジトリのすべてが含まれます。 他のよくあるシナリオには次のようなものがあります:

Bazaarを使う最良の方法は、あなたのニーズ次第です。 次に共通のワークフローを見てみましょう。