プログラム / 2010/01/11 (Mon) / 編集 |
分散型バージョン管理システム、Bazzarのメモ
分散型の特徴は「メインのリポジトリが必要ない」ということ。そしてbazaarのポイントは「マルチバイト文字が使える」(つまり日本語のファイル名もおけ)ということと「プラグイン形式で機能追加できる」ということ。だと個人的には思う。
参考サイト:
Bazaar公式
Bazaar wiki
分散型の特徴は「メインのリポジトリが必要ない」ということ。そしてbazaarのポイントは「マルチバイト文字が使える」(つまり日本語のファイル名もおけ)ということと「プラグイン形式で機能追加できる」ということ。だと個人的には思う。
参考サイト:
Bazaar公式
Bazaar wiki
インストールと初期設定をする
インストールは公式サイトからインストーラをゲットして、ダブルクリックすればおけ。初期設定としてユーザ名とメルアドを登録
%bzr whoami "ユーザ名 <メールアドレス>"これをするとホームディレクトリにbazaar設定ファイル用のディレクトリができる。
%ls ~/.bazaar/ bazaar.confここに「ignore」というファイルを作ると、ignoreに記述されたファイル名のファイルはaddやcommitされなくなるので便利。
*.a *.o *.py[co] *.so *.sw[nop] *~ .#* [#]*# .DS_Store
ローカルで使う
まずはプロジェクトを作成します。登録したいファイルがあるディレクトリ(test)に移動して初期化(前準備)します。今回はテスト用にtest.txtというファイルを追加してみませう。
%cd test %touch test.txt %bzr initこれでbzrの準備完了。
つぎにファイルをbzrの管理下におきます。
bzr add test.txt
そして登録(commit)、楽勝ですねw
bzr commit -m '変更に関するコメント'
サーバ上で集中管理
まずはプロジェクト(ブランチ?)をおいとくためのディレクトリを好きなところに作成する。%mkdir bzr_repoつぎに、サーバ上に共有用のプロジェクトを作成する。
%cd bzr_repo %mkdir testそして初期化しておく。
このとき、集中管理用のときは「--no-trees」オプションを付ける。これは「作業コピー(ファイルそのもの)は置かずに更新履歴のみを保存する」ためにつけるものだが、今回はバックアップ目的で作業コピーも取っておきたいのでなし。
%cd test %bzr initでわでわ、サーバを起動します。
%bzr serve -v --allow-write --directory=bzr_repoまでの絶対パス listening on port: 4155
ここからはローカルでの作業。 まずはサーバからリポジトリをダウンロード
bzr co bzr://サーバのURL/testこれでローカルにtestディレクトリが出来ます。
このテストディレクトリにファイルを作成、管理下に追加し、登録します。
%cd test %touch test %bzr add %%bzr commit -m 'test commit from local'これで、”ネットワークに繋がっていれば”ローカルもリモートも変更されます。ただし、ネットワークに繋がっていないとcommitできません。
自動起動は必要だろjk
bazaarのスマートサーバを自動起動する、今回はxinetdを使います。「/etc/xinetd.d」に「bzr」というファイル名で以下を作成。
service bzr { disable = no server = /usr/bin/bzr server_args = serve --inet --allow-write --directory=bzrレポジトリの絶対パス log_on_success += DURATION HOST log_on_failure += HOST nice = 10 socket_type = stream protocol = tcp wait = no user = bzr用のユーザ port = 4155 }あとは
%service xinetd restartちなみに、xinetdの設定の詳細は[Linuxべんりな動作情報 ナレッジベース:ネットワーク]xinetdの設定方法をご参照。
オフラインでやりたいな〜
サーバからcheckoutしたプロジェクトは勝手にサーバと同期されます。逆にいえば、サーバと通信できない状況ではcommitできないということ!それはこまることもあるよね。というわけでこのオプション、「unbind」を使えばローカルのみで変更が記録できます。
%bzr unbindそして、サーバと通信できる状況になったときに「bind」で同期を再開。
%bzr bindじゃあなんか適当に作業する。
%touch test2.txt %bzr add次に、サーバのプロジェクトとズレがないことを確認するためにはupdateします。
%bzr update今回は一人でやってるので問題ありませんが、もし他の人も更新してたりするとmargeとかの作業も必要になります。
というわけで、あとはいつもどうりcommitします。
%bzr commit -m 'local commit 2'
でわでわ、サーバ側で確認してみます。
%cd bzr_repo/test %bzr logなんか増えてる。じゃあファイルは?というと、、、あれ?lsしてもファイル(test.txt,test2.txt)がない、、、だと、、、
どうやら記録されるていてもファイルは存在出来てないようです。じゃあupdateして最新の状態を取得してみませう。
%bzr update +N test.txt +N test2.txt All changes applied successfully. Updated to revision 2. %ls test.txt test2.txtできた!
PR
トラックバック
URL :
コメント