プログラム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 件のコメント:
コメントを投稿