第4章 ブランチとマージ

目次

ブランチとは?
ブランチの利用
ブランチの作成
自分用のブランチでの作業
ブランチの背後にある鍵となる考え方
ブランチをまたいで変更をコピーすること
特定の変更点のコピー
マージの基本的な考え方
マージの一番うまいやり方
典型的な利用方法
ブランチ全体を別の場所にマージすること
変更の取り消し
削除されたアイテムの復活
ブランチの作り方
作業コピーの切り替え
タグ
簡単なタグの作成
複雑なタグの作成
ブランチの管理
リポジトリのレイアウト
データの寿命
まとめ

ブランチ、タグ、マージはほとんどすべてのバージョン管理システムで 共通の概念です。もしあまりなじみがないのであれば、この章は良い とっかかりになるでしょう。既に詳しいのであれば、これらの概念 をSubversionがどのように実装しているかを知るのに興味深い章である ことがわかるでしょう。

ブランチ化は、バージョン管理の基本にあります。Subversionで自分の データをマージするときには、この機能はときどき必要となる機能です。 この章では、あなたがSubversionの基本コンセプトを既に理解している ことを前提とします(章 2. 基本概念)。

ブランチとは?

あなたの仕事が、何かのハンドブックを扱う企業の一部署で、ドキュメントの 管理をすることだとします。ある日別の部署から同じハンドブックが必要 なのだが、ある部分を「ちょっとだけ」変えたものがほしい、ほんの少しだけ 業務形態に違いがあるから、といわれたとします。

この状況で、あなたはどうしなくてはならないでしょうか? 答えはあたりまえです: ドキュメントのコピーを作って二つのコピーを 別々に管理することにします。それぞれの部署が小さな変更を依頼して くるたび、一方を修正したり、もう一方を修正したりします。

両方のコピーに同じ修正を加えたいこともよくあります。たとえば 最初のコピーにスペルミスがあったとします。もう一方のコピーにも おそらく同じ間違いがあるでしょう。両方のドキュメントはほとんど同じ なのですから。二つはほんの少し違っているだけです。

これは ブランチの基本的な概念です— つまり、一つの開発の流れが、もう一方と独立して存在しているが、 もし過去にさかのぼれば、同じ履歴を共有している、という状況です。 ブランチは必ず、何かのコピーから始まり、枝分かれして、 自分自身の歴史を持っていくようになります(図 4.1. 「開発のブランチ」を参照してください)。

図 4.1. 開発のブランチ

開発のブランチ

Subversionはファイルやディレクトリの平行したブランチを管理するのを 手助けするコマンドがあります。データをコピーしてブランチを作ったり、 どのように二つのコピーが関係しているかを記憶しておくことができます。 片方のブランチに対する修正をもう一方にも追加する作業を助けることも できます。最後に、作業コピーの一部だけ別のブランチにすることもできる ので、通常の作業で、別の作業のラインを「混ぜあわせる」こともできます。