前に/etcのバージョン管理をするetckeeperについて書きました。
etckeeperは、Mercurialやgit, darcsといった様々な分散バージョン管理システムに対応しています。
デフォルトのバージョン管理は、bazaarだったのですが、その当時、Mercurialを使い始めていて、「これはいい!」と思っていたのでetckeeperでも、迷わずMercurialを選択していました。
新しくセットアップしたマシンでは、bazaarでトライしてみることにしました。
基本的な操作は、SubversionやMercurialと同じで、hgコマンドがbzrコマンドに変わるだけです。
ブランチなどの高度な使い方をしなければ、SubversionやMercurialと使い方に差はありません。
よく使うコマンドは、以下のようなものです。
機能 | 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は、リビジョン指定の表記が異なります。
SubversionとMercurialは、-r 1:5といった指定でリビジョン1からリビジョン5といった指定をします。
Bazaarは、同じ指定を-r1..5と表現します。
他のバージョン管理との併用
aptのパッケージを見るとbzr-svnやbzr-hg,bzr−gitというものがあるようです。
実際に使ってみていませんが、Subversionのリポジトリが既にある場合に、それをチェックアウトしてローカルではbzrでバージョン管理し、ローカルの変更は、まとめてSubversionに戻すといった使い方ができそうです。