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