▼枝を幹にする▼

[CVS超入門] [枝を幹にする]

$Id: cvs_btot.html,v 1.1 2009/02/06 18:24:08 kabe Exp $


つまり、

という場合。

CVSは幹の最新版を平文で、残りの版を差分の累積で持つので、 枝を長く伸ばすのは効率が悪くなります。ので幹化は効率の点でも重要。

======+=======→-- - -(放棄)- -   ======→
      |                           ↑幹に昇格させたい
       -------------------------→
         (枝で作業、commitしまくり)

幹へ移動 (cvs update -A -C) してから cvs export -rBRANCH でむりやり上書きできそう ですが、「作業領域にはexportできませんよ」と

% cvs -d ~/CVSroot export -d phamm-0.5.15 -rHEAD phamm
cvs [export aborted]: cannot export into working directory
言われるので、簡単にやるには他所で cvs export してから tar | tar で上書きコピーとかしてもいいんですが、

▽CVS的な方法

以下のように、分岐点には点タグが打ってあった、とします。

  BRANCH_POINT
      v
======+=========-- - -(放棄)- - 	(HEAD)
      |                           ↑幹に昇格させたい
       -------------------------→  	(BRANCH)
         (枝で作業、commitしまくり)

分岐点にタグ打ってなかった?今後は打つようにしましょう。 無ければ時刻指定でなんとかなるかも しれません。

  1. 作業領域を幹に移します。
    	% cvs update -A -C
  2. 作業領域の版番(BASE)を幹にしたまま、中身を BRANCH_POINT まで巻き戻します。
    	% cvs update -jBASE -jBRANCH_POINT	#逆向きパッチ
    単純に逆パッチを当てるだけなので、conflictとかは出ないはず。
  3. 枝の更新を取り込みます。
    	% cvs update -jBRANCH_POINT -jBRANCH	#枝取込
    作業領域と共通の分岐点からなので、こちらは -jBRANCH だけでもいけます。
  4. 中身は -rBRANCH 相当になったので、登録します。
    	% cvs commit	#「BRANCH枝を取り込んだ」などと書いておく

◇枝側にタグを打っておく

枝を幹化するのも一種の枝の取込作業なので、点タグを取込に 打っておきます。

	% cvs tag -rBRANCH MERGEPOINT_1
今後、BRANCH枝を使わないなら問題ないのですが、 BRANCHをさらに少し伸ばして→再度幹に取込み、の際に必要になります。


Next: CVSエラー対処


かべ@sra-tohoku.co.jp