スタックブランチを利用する

スタックブランチとは?

スタックブランチ(stacked branch)は別のブランチのリビジョンを見つける方法を知っています。 スタックブランチはユニークなリビジョンのみを保存することで、速く作れたり効率的に保存したりします。 これらの観点から、スタックブランチは共用リポジトリと似ています。 しかしながら、スタックブランチは追加の利点があります:

  • 新しいブランチはスタックされたブランチとは完全に異なる位置に設置できます。
  • スタックブランチを削除すれば(共用リポジトリだと残ってしまう) 本当のリビジョンも削除されます
  • セキュリティは共用リポジトリよりも向上しています。 スタックドオンリポジトリはスタックブランチにコミットする開発者に対して物理的にリードオンリーだからです。

これらの恩恵によって実験ブランチとコードホスティングサイトを含めたさまざまなシナリオに対してスタックブランチは理想的なものになります。

スタックブランチを作成する

スタックブランチを作成するには、branchコマンドの stacked オプションを使用します。 例です:

bzr branch --stacked source-url my-dir

このコマンドによって my-dir がローカルリビジョンなしのスタックブランチとして作成されます。 定義されると、 source-url に関連づけされた公開ブランチは スタックドオン(stacked on) の位置として使われます。 さもなければ、 source-urlスタックドオン の位置になります。

スタックチェックアウトを作成する

スタックチェックアウトを直接作成する機能はまもなくサポートされる予定です。 それまでの間、2段階の処理が必要です:

  1. 上記で示されたようにスタックブランチを作成する。
  2. reconfigure もしくは bind コマンドのどちらかを利用して ブランチをチェックアウトに変換する。

スタックブランチをプッシュする

多くのプロジェクトの大部分の変更は 開発トランク or 現在の安定 ブランチといった既存のブランチを基礎としています。 これらの1つにスタックされた新しいブランチの作成は push コマンドを利用して 次のように簡単にできます:

bzr push --stacked-on reference-url my-url

このコマンドによって reference-url にスタックされた my-url で新しいブランチが作成され reference-url でまだブランチにない現在のブランチのリビジョンのみを格納します。

ローカルブランチがスタックブランチとして作成された場合、 push するには --stacked オプションを使うことが可能で stacked-on な位置が明確になります。例です:

bzr branch --stacked source-url my-dir
cd my-dir
(hack, hack, hack)
bzr commit -m "fix bug"
bzr push --stacked

スタックブランチの制限

スタックブランチに関して覚えておくべき大事なことは、ほとんど全てのオペレーションでスタックドオンブランチが必要になることです。 これは両方のブランチがローカルもしくは同じサーバーにあるときは問題にはなりません。

スタックするブランチを変更する

bzr reconfigure コマンドを使ってスタックドオンブランチを変更したりスタックするのをやめたりすることができます。 bzr reconfigure --unstacked を実行した場合、bzrは全ての参照されているデータをスタックドオンブランチからスタックされていたブランチにコピーしてくることに注意してください。 大きなレポジトリにおいては、これは時間がかかったりリポジトリサイズを増大させたりします。