Next: , Up: バージョンコントロールのブランチ   [Contents][Index]


29.1.11.1 ブランチ間の切り替え

さまざまなバージョンコントロールシステムにおいて、ブランチが実装される方法は異なり、VCはこれらの違いを完全に隠蔽することはできません。

BazaarとMercurialを含む分散型バージョンコントロールシステムのいくつかは、ノーマルモードの操作では、各ブランチは自身の作業ディレクトリーツリーをもつので、ブランチの切り替えは単にディレクトリーを切り替えるだけです。Gitでは、ブランチは通常、同じディレクトリーの共通ロケーション(co-located)を使用し、ブランチの切り替えは、作業ツリーの内容をそのブランチに一致するように変更するgit checkoutを使用して行われます。Bazaarも共通ロケーションをサポートしており、この場合はコマンドbzr switchによりカレントディレクトリーでブランチを切り替えます。Subversionでは他のブランチへの切り替えにはコマンドsvn switchを使用します。Mercurialでは他のブランチへの切り替えにはコマンドhg updateを使用します。

カレントディレクトリーの他のブランチに切り替えるVCコマンドは、C-x v b s branch-name RET (vc-switch-branch)です。

集中型のバージョンコントロールシステムでは、最新の作業ファイルでC-u C-x v vとタイプして(C-x v vの高度な制御を参照してください)、他のブランチのリビジョンIDを入力することにより、ブランチ間を切り替えることもできます。たとえばCVSでは、trunk(幹の意。開発の主要ラインを示します)のリビジョンは通常、1.1、1.2、1.3、…という形式をもち、最初のブランチがリビジョン1.2から作成された場合、リビジョン1.2は1.2.1.1、1.2.1.2、…というリビジョンIDをもち、さらに2番目のブランチが同じくリビジョン1.2から作成された場合、それは1.2.2.1、1.2.2.2、…という形式になります。ブランチのリビジョンIDから最後の部分を除いた(たとえば1.2.1)、ブランチID(branch ID)を指定して、そのブランチの最新のリビジョンに切り替えることもできます。

ロックベースのシステムでは、他のブランチに切り替えることにより、作業ツリーのロックが解除(書き込み禁止)になります。

1度ブランチを切り替えると、そのブランチを他に切り替えるまで、VCコマンドはそのブランチに適用されます。たとえば任意のVCファイルセットをコミットすると、そのブランチにコミットされるようになります。