google-code-prettify

2006-07-04

Subversionのブランチの使い方[Subversion]

プログラムPBは、機能Aと機能Bを持っている。
プログラムPCは、機能Aと機能Cを持っている。
こんな時、Subversion上ではどのようにソースを管理すれば良いだろうか。

案1 trunk/に機能Aを入れ、PBとPCはbranches/PBとbranches/PCとする



trunk/
branches/PB/
branches/PC/

この方法だと、もしPBやPCをbranchしたくなった時には、ディレクトリの構成が複雑になってしまう。
(trunkであるべき)メインの開発をbranch上でやる事は避けるべき。

案2 PBとPCを別のフォルダに分け、それぞれtrunk,branchesを作る



PB/trunk/
PB/branches/
PC/trunk/
PC/branches/

機能Aへ変更が入った時には、PBをPCにマージ(またはその逆)を行う事になる。
機能Aの大きさが小さくBとCの差異が大きい時には、この方法が良い。

案3 フォルダを分けない


trunk/の下にPB用とPC用のMakefileをそれぞれ置き、ソースツリーは分けない。
機能Aの大きさが大さくBとCの差異が小さい時には、この方法が良い。

案4 PBとPCからはexternalsで機能Aを参照するようにする


externalsは、どれがexternalsでどれがそうではないかが分かりにくかったり、commit時にexternals以下の変更が反映されなかったりと混乱を招きやすいので、個人的にはあまりおすすめできない。

結論


PBとPCの差異の大きさ等を考慮して、案2か案3を使うのが良いと思う。
またSubversionのマージに不慣れな開発者がいる時も、案3は考慮に値する。

0 件のコメント: