kin
kinko****@canon*****
2003年 7月 3日 (木) 13:56:16 JST
kinと申します。
On Wed, 2 Jul 2003 19:53:00 +0900
> (1) ブランチファイルに行を追加、コミット
> (2) トランクファイルにマージ、コミット
> (3) (1)で追加したブランチファイルの行を削除、コミット
> (4) トランクファイルにマージ
>
> 要するに、昔追加したブランチファイルの行をトランクファイルにマ
> ージした後、「やっぱりここいらないね」と削除した状況です。
>
> 期待する動作としては、(4)のマージが終わった時点で、(2)のマージ
> で追加された行が削除されてほしいのですが、実際にはこの行は削除さ
> れません。
> いろいろ試したところ、一度マージによって追加された行は、その後
> のマージで削除されることはないようです。
>
> おそらくこの動作は仕様だろうと思うのですが、期待する結果を得る
> ためにはどのような運用をするべきなのでしょうか。
おそらくWinCVSで何もオプションを指定せずにブランチからのマージを
行われているものと思います。
オプション指定なしにブランチからのマージを行うと、
「ブランチポイント(ブランチ分岐点)から、
ブランチの最新状態 までの変更を トランクにマージする」
という意味になります。
そのため、ブランチ(の途中)で 追加→削除 した行に関しては
ブランチポイントからは結局何も変更されていないという状態ですので、
トランク側に何の変更も起こりません。
ご期待されている動作を行うには、マージポイントを示すタグを付けるのが
良いと思います。
マージ後に毎回マージポイントタグを付けておけば、
「前回のマージポイントから、
ブランチ最新状態 までの変更をトランクにマージ」
という動作となり、ご期待の動作になると思います。
ナマのcvsコマンドとしては
(作業コピーはトランク)
cvs update -jMERGE_PNT -jBRANCH_TAG
となります。
MERGE_PNT : ブランチ上のマージポイントタグ
BRANCH_TAG : ブランチ名
WinCVSにも多分そういうオプションがあると思います(こちらに環境が
ないもので<(_ _)>)。
ポイントはマージポイントタグを付けておくということです。
ちなみに緑さんの運用形態であればマージポイントタグは毎回同じモノを使っ
て上書きしてしまえば、タグ数も爆発しなくて済みます。
---
kin