Bazaarとは
分散バージョン管理システムです。
ブランチやマージが簡単にできるように設計されています。
詳細な説明や歴史的な背景は下記サイトが詳しいです。
公式HP
https://bazaar.canonical.com/en/
Wikipedia
https://ja.wikipedia.org/wiki/Bazaar
「Gitがデファクトスタンダードになりつつある一方、Bazaarは月に2,3のコミットがあるだけでほぼ死んだ状態にある」(Wikiより抜粋)
なおRHEL8からはbzrパッケージは配布されなくなったようです(死亡確認・・・)
特別な理由がなければ、素直にGitを使うのがいいと思いますが、
本記事では何らかの理由からbzrを使わなければならなくなった人のために
とりあえず使い始めるまでの初期設定を記載します。
設定方法
Linuxの場合、yum(dnf等)で取得できるならそれでOK。
$ sudo yum install bzr
初期設定としてbzrにユーザー情報を登録します。
$ bzr whoami "USER_NAME <MAIL_ADDRESS>"
QBzrプラグインの追加
QBzrプラグインを追加すると、qdiffやqlogなどのグラフィカルな機能が使えるようになり、便利です。
こちらもyumで入れておきましょう。
$ sudo yum install qbzr
まずはじめに、レポジトリの登録
まず最初に管理したいプロジェクト(ソースコード)をレポジトリに登録する必要があります。
やり方は簡単で、管理したいプロジェクトのディレクトリにてbzr initコマンドを実行します。
そのため、新期プロジェクトごと実行する必要があります。
サンプルとして/tmp/projectを作ります。
$ mkdir /tmp/project
$ cd /tmp/project
$ bzr init
これにより.bzrディレクトリが作成され、「project」以下のツリーが
bzrで管理できるようになります。
ファイルを追加
bzr addコマンドで変更を記録したいファイルを追加します。
ここではREADMEファイルを追加してみます。
$ touch README (project配下にモジュールを配置)
$ bzr status (ステータス表示)
unknown
README
$ bzr add README(READMEを追加する)
$ bzr status (ステータス表示)
added:
README
ファイルを変更する、変更を確認する
bzr diff や bzr qdiff コマンドで変更内容を確認します。
$ emacs README (例として「HELLO!WORLD!」と書いてみた)
$ bzr status (ステータス表示)
modified:
README
$ bzr diff (diffを表示)
=== modified file 'README'
--- README 1970-01-01 00:00:00 +0000
+++ README 2019-12-27 14:23:29 +0000
@@ -0,0 +1,1 @@
+HELLO!WORLD!
リモートのレポジトリサーバーにコミットする
ローカルPCからリモートのレポジトリサーバーにコミットしてみます。
$ bzr commit (ローカルにコミット)
$ bzr push bzr+ssh://<USER>@<SERVER:PORT>/home/bzr/project
(リモートのレポジトリサーバーにコミット)
上記のように毎回2段コミットするのは面倒なので、bind設定すると便利です。
以降、bzr commitはリモートへのコミットになります。
$ bzr bind bzr+ssh://<USER>@<SERVER:PORT>/home/bzr/project
$ bzr commit (リモートにコミット)
(ローカルにコミットしたい場合は--local)
bzr は SSH, HTTP, SFTP 等を使用してブランチにアクセスすることができます。
上記の例は、bzr+sshの場合を記載しています。
以上です。
より詳細な使い方はチュートリアルをご参照ください。
http://doc.bazaar.canonical.com/latest/ja/index.html
#余談
以下のブログで、Bazzarの開発者の失敗談がご紹介されていました。
エンジニア目線で見ると、なかなか趣深い内容です。
Bazaar-NG: 分散バージョン管理システムを7年ハックしてきて
https://cpplover.blogspot.com/2014/01/bazaar-ng-7.html?m=1