ksaitoの日記

日々試したことの覚え書き

bazaar

RCSやSCCSの時代からファイルは、バージョン管理しないと不安になります。
cvsからSubversionという流れで、mercurialやgitも試しましたがbazaarをメインにすることに決めました。
bazaar 2.3であれば、センター管理されているSubversionからローカルにブランチをコピーして、ローカルブランチで好きなだけ作業した結果をセンター管理のSubversionにチェックインすることができます。

bazaar 2.3をインストールする

bazaarのサイトからStandalone版2.3をダウンロードします。
Windows版の場合、インストーラWindows Shell ExtentionとCore Documantation - Japaneseを選択し、ほかはデフォルトでインストールします。

センターリポジトリSubversionを使う準備

サンプルのSubversionリポジトリは、下記のようになっています。

$ svn ls $REPO/sample/trunk
readme.txt
$ 

bazaarのリポジトリを作成してSubversionからブランチをコピーします。
スキーマsvn+httpsを使うのがポイントです。

C:\tmp>bzr init bzrsvn
Created a standalone tree (format: 2a)

C:\tmp>cd bzrsvn
C:\tmp\bzrsvn>bzr co svn+https://svn.local/svn/svntest/sample/trunk sample-svn
Initialising Subversion metadata cache in  Application Data\svn-cache.

C:\tmp\bzrsvn>dir sample-svn

 C:\tmp\bzrsvn\sample-svn のディレクトリ

2011/03/07  23:03    <DIR>          .
2011/03/07  23:03    <DIR>          ..
2011/03/07  23:03                 0 readme.txt

C:\tmp\bzrsvn>

ローカル作業用のbazaarのブランチを作成します。

C:\tmp\bzrsvn>bzr branch sample-svn sample-local
Branched 1 revision(s).

C:\tmp\bzrsvn>dir sample-local

 C:\tmp\bzrsvn\sample-local のディレクトリ

2011/03/07  23:05    <DIR>          .
2011/03/07  23:05    <DIR>          ..
2011/03/07  23:05                 0 readme.txt

C:\tmp\bzrsvn>

ローカルの作業

sample-localに作成したブランチを思う存分修正します。
bzr diffやbzr stといったSubversionライクなコマンドを使うことができます。
修正が完了したらコミットします。

C:\tmp\bzrsvn\sample-local>bzr diff
=== modified file 'readme.txt'
--- readme.txt  2011-03-07 13:43:30 +0000
+++ readme.txt  2011-03-07 14:08:30 +0000
@@ -0,0 +1,2 @@
+このファイルをどんどん修正しす。
+この修正は、センターリポジトリには反映されませんが、ローカルのbzrリポジトリにコ
ミットされます。
\ No newline at end of file

C:\tmp\bzrsvn\sample-local>bzr commit -m "update"
Committing to: C:/tmp/bzrsvn/sample-local/
modified readme.txt
Committed revision 2.

C:\tmp\bzrsvn\sample-local>

ローカルの修正をセンターのSubversionに反映する

ローカルでの作業が終わったらセンターのSubversionにコミットするためにローカルリポジトリSubversionからチェックアウトしたブランチにマージします。

C:\tmp\bzrsvn\sample-local>cd ..\sample-svn

C:\tmp\bzrsvn\sample-svn>bzr merge ..\sample-local
 M  readme.txt
All changes applied successfully.

C:\tmp\bzrsvn\sample-svn>

最後にSubversionにコミットします。

C:\tmp\bzrsvn\sample-svn>bzr commit -m "update for bzr"
Committing to: svn+https://svn.local/svn/svntest/sample/trunk
modified readme.txt
HTTPS svn.local username: svnuser
<https://svn.local:443> Subversion Repository svnuser password:
Committed revision 2.

C:\tmp\bzrsvn\sample-svn>

Subversionのログ

bzrで記録したコミットログは、Subversionのログとして記録されています。

$ svn ls $REPO/sample/trunk
readme.txt
$ svn update
U    trunk/readme.txt
リビジョン 3 に更新しました。
$ svn log
------------------------------------------------------------------------
r3 | svnuser | 2011-03-07 23:12:37 +0900 (月, 07  3月 2011) | 1 line

update for bzr
------------------------------------------------------------------------
r2 | svnuser | 2011-03-07 22:43:30 +0900 (月, 07  3月 2011) | 1 line

update
------------------------------------------------------------------------
r1 | svnuser | 2011-03-07 22:42:23 +0900 (月, 07  3月 2011) | 2 lines

create sample directory.

------------------------------------------------------------------------
$ 

これで、Subversionクライアントを使うことはないでしょう。