5分でわかるBazaar

イントロダクション

Bazaarは分散型バージョン管理システムで、ソフトウェアプロジェクトの 共同作業を楽にしてくれます。

これから5分ほどで、ファイルをバージョン管理下に置き、変更を記録して、 作業内容を確認し、公開して作業内容をマージしてもらうためにプロジェクトの trunk に送る方法などを学びます。

詳細な紹介内容を望むのであれば、 さらに学ぶ をご覧ください。

インストール方法

このガイドではBazaarをインストールする方法を説明しませんが、通常はとても簡単です。 インストール方法の手引きは次の通りです:

別のプラットフォームとソースコードからインストールする方法に関しては、 ダウンロードインストール方法 のページを参照してください。

まずは自己紹介

作業にとりかかる前に、まずあなたが誰なのかをBazaarに教えてあげましょう。 そうすることで、履歴の中からあなたの作業を正確に識別することができます。

次のように入力してください(もちろん、あなたの名前とEメールアドレスで):

$ bzr whoami "John Doe <john.doe@gmail.com>"

こうするとBazaarは、あなたの名前やEメールアドレスが入った設定ファイルを作成もしくは修正します。

名前とEメールアドレスが正しく登録されているか確認しましょう

$ bzr whoami
John Doe <john.doe@gmail.com>

ファイルをバージョン管理する

Bazaarで扱うディレクトリといくつかのファイルを作りましょう:

$ mkdir myproject
$ cd myproject
$ mkdir subdirectory
$ touch test1.txt test2.txt test3.txt subdirectory/test4.txt

Windowsユーザーのための注意: Windows Explorerを使ってディレクトリを作成し、そのディレクトリの中で右クリックをして 新規作成 を選択し、ファイルを作成します。

Bazaarにあなたのプロジェクトディレクトリを初期化させましょう:

$ bzr init

何も起きていないように見えても心配しないでください。 Bazaarはファイルとリビジョンの履歴を保存する branch を作りました。

次のステップはBazaarに管理して欲しいファイルを教えることです。 bzr add を実行するとすべてのディレクトリとファイルがプロジェクトに再帰的に追加されます。

$ bzr add
added subdirectory
added test1.txt
added test2.txt
added test3.txt
added subdirectory/test4.txt

次に、これらをブランチにコミットしてスナップショットをとります。 コミットを行った理由を説明するメッセージを追加します。

$ bzr commit -m "Initial import"

Bazaarは分散型バージョン管理システムなので、コミットするためにサーバーに接続する必要はありません。 代わりに、Bazaarはブランチとすべてのコミットをあなたが作業しているディレクトリ内部に .bzr というサブディレクトリを作ってそこに 保存します。

ファイルを変更する

ファイルを変更してブランチにその変更をコミットしてみましょう。

好きなエディタで test1.txt を編集し、何を行ったのかを確認します。

$ bzr diff
=== modified file 'test1.txt'
--- test1.txt   2007-10-08 17:56:14 +0000
+++ test1.txt   2007-10-08 17:46:22 +0000
@@ -0,0 +1,1 @@
+test test test

作業をBazaarのブランチにコミットします:

$ bzr commit -m "Added first line of text"
Committed revision 2.

リビジョンのログを眺める

ログを閲覧することでブランチの履歴を調べることができます。

$ bzr log
------------------------------------------------------------
revno: 2
committer: John Doe <john.doe@gmail.com>
branch nick: myproject
timestamp: Mon 2007-10-08 17:56:14 +0000
message:
  Added first line of text
------------------------------------------------------------
revno: 1
committer: John Doe <john.doe@gmail.com>
branch nick: myproject
timestamp: Mon 2006-10-08 17:46:22 +0000
message:
  Initial import

ブランチを Launchpad で公開する

Launchpad はソフトウェアプロジェクトの開発と運営のためのツールをまとめた サイトです。自分のブランチを公開するために Launchpad を利用することができます。 (もちろん、自分のサーバーや他のホスティングサービス上で公開することもできます)

まだ Launchpad のアカウントを持っていないのであれば、 account signup guide に従ってアカウントを作成し、 SSH 鍵を登録 してください。

次のように、 (john.doe は自分のアカウントのユーザー名に置き換えて) タイプしてください。 [1]

$ bzr push lp:~john.doe/+junk/myproject
[1]lp: という URL スキーマは bzr 0.92 以降でサポートされています。

注意: +junk の部分は、このブランチが Launchpad 上の特定のプロジェクトに 属していないことを意味しています。

これで、誰でもあなたのブランチのコピーを、次のようなコマンドで入手できるようになりました。

$ bzr branch lp:~john.doe/+junk/myproject

ブランチの情報を、履歴も含めて https://code.launchpad.net/people/+me/+junk/myproject から閲覧することができます。

別のブランチから自分用のコピーを作る

他人のコードに取り組むために、ブランチのコピーを作ることができます。 実際の世界の例として、BazaarのGTKインターフェイスを見てみましょう:

$ bzr branch lp:~bzr/bzr-gtk/trunk bzr-gtk.john
Branched 292 revision(s).

Bazaarはbzr-gtkのtrunkブランチからすべてのファイルをダウンロードして リビジョンの履歴をそろえ、bzr-gtk.johnというコピーを作ります。

これで、ブランチのコピーを手に入れたのでネットの接続のあるなしに 関わらず変更をコミットできます。 ブランチはいつでも公開することで共有でき、bzr-gtkチームがあなたの作品を 使いたいと思ったときにBazaarは彼らがあなたのブランチから彼らのブランチに マージし直す作業を簡単にしてくれます。

メインのブランチから自分のブランチを更新する

変更を自分のブランチにコミットしている間に、他の人がコードを元のブランチにコミットしているということもよくあります。

自分のブランチを最新に維持するには、親ブランチから自分のブランチへと変更をマージします:

$ bzr merge
Merging from saved parent location: http://bazaar.launchpad.net/~bzr/bzr-gtk/trunk
All changes applied successfully.

何が変更されたのか確認します:

$ bzr diff

変更に満足したら、それらを自分のブランチにコミットします:

$ bzr commit -m "Merge from main branch"
Committed revision 295.

作業を親のブランチにマージする

bzr-gtkの個人ブランチに取り組んだ後で、あなたの変更を上流のプロジェクトに戻したいことがあるかもしれません。 最も簡単な方法はマージディレクティブを使うことです。

マージディレクティブ(merge directive)とは、コンピュータに特定のマージを実行させるためのリクエストです。 マージディレクティブは大抵、マージをレビューするためのパッチと、マージを実行するのに必要となるリビジョン、もしくはリビジョンを取得できるブランチを含みます。

次のコマンドの mycode.patch を適当な名前に書き換えて、マージのディレクティブを作ります:

$ bzr send -o mycode.patch
Using saved parent location: http://bazaar.launchpad.net/~bzr/bzr-gtk/trunk

これでbzr-gtkのプロジェクトにマージディレクティブをEメールで送ることが可能になりました。彼らが納得すれば、親ブランチにマージすることができます。

さらに学ぶ

Bazaarに関する詳細な内容は Bazaarのユーザーガイド で調べることができます。

コマンドラインでBazaarを学ぶには:

$ bzr help

Bazaarのコマンドを学ぶには:

$ bzr help commands

‘’foo’’ トピックもしくはコマンドを学ぶには:

$ bzr help foo

Licence

Copyright 2007-2011 Canonical Ltd. Bazaar is free software, and you may use, modify and redistribute both Bazaar and this document under the terms of the GNU General Public License version 2 or later. See <http://www.gnu.org/licenses/>.

日本語訳について

この日本語訳は、 Bazaar-jaグループ がメンテナンスしています。

日本語訳に着いて間違いや質問等ありましたらこちらへお願いします。