ksaitoの日記

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

etckeeperのデフォルトのバージョン管理bazaarを使ってみる

前に/etcのバージョン管理をするetckeeperについて書きました。
etckeeperは、Mercurialやgit, darcsといった様々な分散バージョン管理システムに対応しています。
デフォルトのバージョン管理は、bazaarだったのですが、その当時、Mercurialを使い始めていて、「これはいい!」と思っていたのでetckeeperでも、迷わずMercurialを選択していました。
新しくセットアップしたマシンでは、bazaarでトライしてみることにしました。
基本的な操作は、SubversionMercurialと同じで、hgコマンドがbzrコマンドに変わるだけです。
ブランチなどの高度な使い方をしなければ、SubversionMercurialと使い方に差はありません。
よく使うコマンドは、以下のようなものです。

機能 Subversion Mercurial Bazaar
リポジトリの作成 svnadmin create [ディレクトリ] hg init [ディレクトリ] bzr init [ディレクトリ]
チェックアウト svn co [リポジトリ] 不要 不要
ファイルの追加 svn add [ファイル] hg add bzr add
コミット svn commit -m "コメント" hg commit -m "コメント" bzr commit -m "コメント"
変更履歴の表示 svn log hg log bzr log
作業ファイルの状態を表示する svn status hg status bzr status
変更箇所を見る svn diff hg diff bzr diff
変更を取り消す svn revert [ファイル] hg revert [ファイル] or hg revert --all bzr revert

revertの違い

変更箇所の取り消しをするrevertコマンドは、Mercurialは対象を指定する必要があるのに対し、bzrは指定がなければ全ファイルの変更をキャンセルします。
また、取り消し時にMercurialは、修正内容を.origファイルにバックアップますが、bazaarは、.~リビジョン番号~にバックアップされます。
Marcurialの場合、バックアップファイルはstatusコマンドでバージョン管理対象外ファイルとして表示されるので確認や削除が簡単ですが、bazaarは、対象外ファイルに指定されているためstatusコマンドでは表示されないようです。
Subversionは、必ずファイル指定が必要でバックアップファイルは作成しません。

リビジョンの指定

Bazaarは、リビジョン指定の表記が異なります。
SubversionMercurialは、-r 1:5といった指定でリビジョン1からリビジョン5といった指定をします。
Bazaarは、同じ指定を-r1..5と表現します。

他のバージョン管理との併用

aptのパッケージを見るとbzr-svnやbzr-hg,bzr−gitというものがあるようです。
実際に使ってみていませんが、Subversionリポジトリが既にある場合に、それをチェックアウトしてローカルではbzrでバージョン管理し、ローカルの変更は、まとめてSubversionに戻すといった使い方ができそうです。