TortoiseBzrでファイルを追加してコミットするには
trunkへファイルを追加するには、作成されたtrunkの下にファイルを作成、もしくはコピーし、右クリックメニューから[TortoiseBzr]→[追加]を選択し、Bazaarコミットを選択します。TortoizeBzrをインストールしておけば、図7のようにWindowsのフォルダメニューからファイルの追加、コミットなどの操作ができます。
他のバージョン管理システムと同じで、ファイルを追加してもコミットしないとリポジトリへは反映されません。コミットを忘れないようにしましょう。
Javaの.classファイルやbinディレクトリなどコンパイル時に生成されたファイルなどでバージョン管理から外したい場合は、ブランチのルートディレクトリ(ここではtrunk)に.bzrignoreファイルを作成します。.bzrignoreファイルには、例えば次のように記述します。
[.bzrignore] *.class *.o *.pyo target bin
WebサーバでBazaarのリポジトリを公開するには
Bazaarのリポジトリを共有するには、Bazaarのリポジトリを、BazaarをインストールしたLinuxマシン上にコピーして、各ユーザーからアクセスできるようにパーミッションとグループ設定を行えば、完了です。Explorerやクライアントから「sftp://【ホスト名】/var/www/bzr-repository」のように、Bazaarのリポジトリを指定してやれば、リポジトリへアクセスできます。
この方法はリポジトリを簡単に共有できますが、ファイアウォールなどでアクセスが制限されている環境では利用できないことがあります。スマートサーバを利用すると、mod_python、fastcgi、wsgiなどを利用してWebサーバ上でリポジトリを公開できます。
ここでは、スマートサーバを利用した公開方法をご紹介します。
スマートサーバの設定
最初に、必要なソフトウェアApacheとWSGI、そしてBazaarをインストールします。Ubuntuの場合、次のようにします。
# aptitude install bzr libapache2-mod-wsgi apache2
インストールが完了したら、「/usr/local/wsgi/scripts/bzr.wsgi」という名前でwsgiファイルを作成します。
from bzrlib.transport.http import wsgi def application(environ, start_response): app = wsgi.make_app( root="/var/lib/bzr", prefix="/bzr", readonly=False, load_plugins=True, enable_logging=False) return app(environ, start_response)
bzr.wsgiのrootには、Bazaarのリポジトリを置くルートディレクトリを、prefixにはWebでアクセスするときのURLのプレフィクス(上記の例では。「http://【ホスト名】/bzr/xxx」でリポジトリにアクセス)を指定します。
Apacheの設定
下記の設定をApacheの設定に追加します(Ubuntuの場合、/etc/apache2/site-availables/defaultです)。
WSGIScriptAliasMatch ^/bzr /usr/local/wsgi/scripts/bzr.wsgi <Location /bzr> WSGIApplicationGroup %{GLOBAL} AuthType Basic AuthName "Bazaar Authenticate" AuthUserFile /etc/htpasswd Require valid-user </Location>
/etc/htpasswdファイルにhtpasswdコマンドでユーザーを追加します。
# htpasswd -c /etc/htpasswd okamototk (1人目のユーザー作成) # htpasswd /etc/htpasswd okamototk (2人目以降)
モジュールをロードし、Apacheを再起動します。
# a2enmod auth_basic wsgi # /etc/init.d/apache2 restart
なおスマートサーバを利用した場合、リポジトリへのアクセス制御をApacheで行えます。trunkへの書き込み・マージは管理者しかできなくしたり、秘密性が高いブランチを担当者しかアクセスできなくしたりできます。
リポジトリの準備
先ほどWindows上で生成した共有リポジトリ(trunkの一段上のディレクトリ)を/var/lib/bzrディレクトリにコピーします。新規に作成する場合は、/var/lib/bzrディレクトリで次のようにします。
# bzr init-repo test # cd test # bzr init trunk
アクセス権をApache(www-date)でアクセス可能にしておきます。
# chmod www-data.www-data -R /var/lib/bzr
これで、サーバ上でのリポジトリの公開は完了です。
Bazaar Explorerでサーバからブランチを取得するには
Windows上でサーバ上の中央リポジトリ上のtrunkのコードを取得してみましょう。
Bazaar Explorerを起動し、[プロジェクトのソースを取得する]→[ブランチ]を選択します。[From]に先ほど設定したリポジトリのtrunkを指定、[宛先]に取得したソースコードを格納する場所を選択します(図8)。新しい共有リポジトリを作成するかどうかの質問には[はい]と答え共有リポジトリを取得します。
これで、trunkで管理されているファイルが取得できます。
プッシュ! プル! マージ! コミット!
編集したファイルの中央リポジトリへの反映と中央リポジトリ上のファイルの変更を取得する操作は、「Push(プッシュ)」「Pull(プル)」と呼びます。
また、ローカルリポジトリに変更がある場合は、Pullの代わりに「Merge(マージ)」を用います。次の図9をご覧ください。
SubversionやCVSで利用される「Commit(コミット)」は、Bazaarのような分散バージョン管理システムでは、基本的にはローカルリポジトリへの反映となります。中央リポジトリへ反映させるには、プッシュを行う必要があります。
中央リポジトリの更新を取り込むにはプルを行います。プルを行うと、ローカルリポジトリと作業コピーを更新してくれます。ただし、ローカルのリポジトリに変更がある場合は、プルできません。その場合は、代わりにマージを利用します。
これが理解できれば、Bazzar ExplorerやTortoiseBzrを見れば、操作は一目瞭然です。例えば、Windowsのシェルから右クリックでメニューを開くと、次のようなメニューが表示されます。
次ページでは、Bazaarの使い方として最後に、ブランチの作成とマージの方法を紹介し、Bazaarの課題について説明します。
Copyright © ITmedia, Inc. All Rights Reserved.