5分でわかるBazaar
イントロダクション
Bazaarは分散型バージョン管理システムで、ソフトウェアプロジェクトの共同作業を楽にしてくれます。
これから5分ほどで、ファイルをバージョン管理下に置き、変更をそれらに記録して、作業内容を確認し、公開して作業内容をマージしてもらうためにプロジェクトのtrunkに送る方法などを学びます。
詳細な紹介内容を望むのであれば、 さらに学ぶ をご覧ください。
インストール方法
このガイドではBazaarをインストールする方法を説明しませんが、通常はとても簡単です。 インストール方法の手引きは次の通りです:
- GNU/Linux: おそらくBazaarはあなたのGNU/Linuxディストリビューションに含まれています。
- Windows: Windowsのためのインストールの手引き.
- Mac OS X: Mac OS Xのためのインストールの手引き.
別のプラットフォームとソースコードからインストールする方法に関しては、 ダウンロード と インストール方法 のページを参照してください。
まずは自己紹介
作業にとりかかる前に、まずあなたが誰なのかをBazaarに教えてあげましょう。 そうすることで、履歴の中からあなたの作業を正確に識別することができます。
次のように入力してください(もちろん、あなたの名前とEメールアドレスで):
$ bzr whoami "John Doe <[email protected]>"
こうするとBazaarは、あなたの名前やEメールアドレスが入った設定ファイルを作成もしくは修正します。
名前とEメールアドレスが正しく登録されているか確認しましょう
$ bzr whoami John Doe <[email protected]>
ファイルをバージョン管理する
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 <[email protected]> branch nick: myproject timestamp: Mon 2007-10-08 17:56:14 +0000 message: Added first line of text ------------------------------------------------------------ revno: 1 committer: John Doe <[email protected]> branch nick: myproject timestamp: Mon 2006-10-08 17:46:22 +0000 message: Initial import
sftpでブランチを公開する
ブランチを公開する方法は複数あります。 SFTPサーバーがすでにあるもしくは容易にセットアップできるのであれば、ブランチをそこで公開できます。
そうでなければ、このセクションをとばして、Bazaarのための無料ホスティングサービスである、 Launchpad で公開しましょう。
www.example.com/myproject でブランチを公開することを前提とします:
$ bzr push --create-prefix sftp://[email protected]/~/public_html/myproject 2 revision(s) pushed.
Bazaarはリモートサーバー上で myproject ディレクトリを作りブランチをそこにpushします。
これで誰でも次のコマンドを入力すればあなたのブランチをコピーできます:
$ bzr branch http://www.example.com/myproject
注: sftpを使うためには、 paramiko と pyCrypto をインストールする必要があります。 詳細は http://bazaar-vcs.org/InstallationFaq を参照してください。
Launchpadでブランチを公開する
Launchpadはフリーソフトウェアのための開発とホスティングのためのツールがひとまとめになったものです。これをブランチを公開するために利用できます。
Launchpadのアカウントを持っていなければ、 アカウントのサインアップのガイド に従ってアカウントを作り、 SSHキーを登録 してください。
次のコマンドを(john.doe を自分のLaunchpadアカウント名に変更して)実行してください:
$ bzr push bzr+ssh://[email protected]/~john.doe/+junk/myproject
注: +junk はこのブランチがLaunchpad上の特定のプロジェクトに関連していないことを意味します。
これで、誰でも次のコマンドを入力することでブランチのコピーを作ることができます:
$ bzr branch http://bazaar.launchpad.net/~john.doe/+junk/myproject
ブランチとリビジョンの履歴に関する情報は https://code.launchpad.net/people/+me/+junk/myproject でも見ることができます。
別のブランチから自分用のコピーを作る
他人のコードに取り組むために、ブランチのコピーを作ることができます。 実際の世界の例として、BazaarのGTKインターフェイスを見てみましょう:
$ bzr branch http://bazaar.launchpad.net/~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