スタックブランチを利用する¶
ユースケース¶
あるプロジェクトで作業しようとしていて、公開されているリポジトリに対して 読み込みアクセスはできるものの書き込みができないとしましょう。 公開されているリポジトリと同じホストで自分のブランチを公開したりバックアップ したりする場合、スタックブランチを使うことができるかもしれません。
スタックブランチの他のユースケースとしては、実験的なブランチと、コード ホスティングサイトが挙げられます。これらのシナリオではスタックブランチの 特性がぴったりあいます。
スタックブランチとは?¶
スタックブランチ(stacked branch)は別の(スタック先)ブランチのリビジョンを 見つける方法を知っています。 スタックブランチはスタック先ブランチには存在しないユニークなリビジョンのみを 保存することで、ブランチの作成を高速にしたり、ディスク利用効率を向上します。 これらの観点から、スタックブランチは共用リポジトリと似ています。 しかしながら、スタックブランチは追加の利点があります:
- 新しいブランチはスタックされたブランチとは完全に異なる位置に設置できます。
- スタックブランチを削除すれば(共用リポジトリだと残ってしまう) リビジョンの情報も削除されます
- セキュリティは共用リポジトリよりも向上しています。 スタック先のリポジトリはスタックブランチにコミットする開発者に対して 物理的にリードオンリーだからです。
スタックブランチを作成する¶
スタックブランチを作成するには、branchコマンドの stacked
オプションを使用します。
例です:
bzr branch --stacked source-url my-dir
このコマンドによって my-dir
がローカルリビジョンなしのスタックブランチとして作成されます。
定義されると、 source-url
に関連づけされた公開ブランチは
スタックドオン(stacked on) の位置として使われます。
さもなければ、 source-url
は スタックドオン の位置になります。
スタックチェックアウトを作成する¶
スタックチェックアウトを直接作成する機能はまもなくサポートされる予定です。 それまでの間、2段階の処理が必要です:
- 上記で示されたようにスタックブランチを作成する。
reconfigure
もしくはbind
コマンドのどちらかを利用して ブランチをチェックアウトに変換する。
スタックブランチをプッシュする¶
多くのプロジェクトの大部分の変更は
開発トランク or 現在の安定 ブランチといった既存のブランチを基礎としています。
これらの1つにスタックされた新しいブランチの作成は push
コマンドを利用して
次のように簡単にできます:
bzr push --stacked-on reference-url my-url
このコマンドでは、 reference-url
にスタックした新しいブランチを my-url
に作成し、 reference-url
には無いリビジョンだけをそこに格納します。
my-url
は reference-url
と同じホストでも構いません。
ローカルブランチがスタックブランチとして作成された場合、
push
するには --stacked
オプションを使うことが可能で
スタック先の位置を省略できます。:
bzr branch --stacked source-url my-dir
cd my-dir
(hack, hack, hack)
bzr commit -m "fix bug"
bzr push --stacked
この使い方は、上述したユースケースにマッチしています。
スタックブランチの制限¶
スタックブランチに関して覚えておくべき大事なことは、ほとんど全てのオペレーションでスタック先ブランチが必要になることです。 これは両方のブランチがローカルもしくは同じサーバーにあるときは問題にはなりません。
また、ほとんどの履歴がスタック先リポジトリに格納されているので、スタック先
リポジトリへのアクセスがネットワーク経由だった場合に bzr log
のようなコマンドが遅くなるかもしれません。
スタックするブランチを変更する¶
bzr reconfigure
コマンドを使ってスタックドオンブランチを変更したりスタックするのをやめたりすることができます。
bzr reconfigure --unstacked
を実行した場合、bzrは全ての参照されているデータをスタックドオンブランチからスタックされていたブランチにコピーしてくることに注意してください。
大きなレポジトリにおいては、これは時間がかかったりリポジトリサイズを増大させたりします。