[ TOP | Recently ]

2014-02-20 cvsの闇


T#は時間。T1<T2<T3<T4<T5。

CASE1
T1	cvs import	1.1
			1.1.1.1
T2	cvs import	1.1.1.2
T3	cvs import	1.1.1.3

だった場合、maintrunk で cvs update -DT3 とすると、1.1.1.3 が checkout される。(普通)

CASE2
T1	cvs import	1.1
			1.1.1.1
T2	cvs import	1.1.1.2
T3	cvs commit	1.2
T4	cvs import	1.1.1.3

だった場合、cvs update -DT4 とすると、1.2 が checkout される。(いわゆるimport branchに対するmaintrunkの上書き)

さて、CASE1と似ているが、1.1を最初にcommitしてあった状態からimportした場合がCASE3。

CASE3
T1	cvs commit	1.1
T2	cvs import	1.1.1.1
T3	cvs import	1.1.1.2
T4	cvs import	1.1.1.3

この場合は、cvs update -DT4 とすると、1.1 が checkout される。
CASE1とCASE3は1.1と1.1.1.1のタイムスタンプしか違わなくて、実際これを見ている様子。
(rcsfileのtimestampを直接書換えたらCASE1になった)

さて、それではCASE3の状態から cvs admin -o 1.1.1.1 するとどうなるでしょう…

CASE4
T1	cvs commit	1.1
T3	cvs import	1.1.1.2
T4	cvs import	1.1.1.3

ここでcvs update -DTT4すると、1.1ではなく1.1.1.3 がcheckoutされた…。
cvsよくわからないです><


ということを調べながらcvs2gitツールを作っている今日この頃でした。


EOF