scmprojでブランチを管理する

プロジェクトがいくつかのブランチから構成されているときに、
以下のような感じで共有リポジトリ内でブランチしていた。

root(共有リポジトリ bzr init-repo)
 |
 +---pkg-+-A (bzr init)
 |       |
 |       +-B (bzr init)
 +---pkg2-+-A (bzr branch ../pkg/A)
          |
          +-B (bzr branch ../pkg/B)

共有リポジトリを使うことでディスク容量をいくばくか節約できたりするというメリットがある。


で、そういったプロジェクト管理をしたいときに楽できるようにするのがscmprojなるBazaarのプラグインということのようです。


このscmprojプラグイン、いろいろな状況に対応できるように考慮されているようで、
http://bialix.com/scmproj/docs/に詳しいドキュメントが用意されているけど、
詳しすぎるきらいがある気がする。


とりあえず試したのは、0.4.5です。それ以前とはフォーマットが変っているので注意。


ドキュメントを流し読みした限りでは、もっとも単純なプロジェクトの開始方法は、

  1. bzr pinit (ディレクトリ名)でプロジェクトの管理ディレクトリを作成する
  2. (ディレクトリ名)/.scmproj/project.cfgを編集して自分用にカスマイズする
  3. bzr pfetchでブランチとかいろいろ取得する
  4. bzr pcoで作業用のコピーをチェックアウトする

あとは、作業コピーに対してコミットするなりすればいいみたいです。

さて、肝心のproject.cfgの記述については、こんな感じ。
[COMPONENTS]セクションに共通設定を書き、[conponent "コンポーネント名"]セクションで
個別のコンポーネントの詳細を書くという、これだけ。

以下は、pkg2をためしにプロジェクト管理下に置く例。
pkg2はコンポーネントAとBから構成されていて、それぞれpkg/A,pkg/Bを親ブランチとしている。
作業コピーも同様にA、Bと指定。

### project.cfg v1
### Don't edit the line above!

# See the documentation for details on the project.cfg format
# For any component you should specify at least RELPATH and BRANCH_URL option
[PROJECT]
VCS = bzr
COMPONENTS = A B

[COMPONENTS]
## describe each component in subsequent sections, e.g.:
[component "A"]
RELPATH = A
BRANCH_URL = ../pkg/A
[component "B"]
RELPATH = B
BRANCH_URL = ../pkg/B