假設(shè)有這樣一種情形, 在CVS的repository中存儲了一個文件file.c, 你在星期一update到
了該文件的最新版本1.1.1.4, 在星期三的時候, 你還沒動這個文件一根毫毛, 而
你的同事已經(jīng)把版本號升級到了1.1.1.6, 此時你用下面的命令對你本地的file.c
進行比較:
cvs diff file.c
在剛開始接觸CVS時, 幾乎人人都認(rèn)為此時的動作是cvs把你本地的文件跟服務(wù)器上的最新
版本進行比較. 并期望根據(jù)這個命令的輸出結(jié)果來判斷你本地的文件是否是最新版本.
事實上, 這個命令執(zhí)行的是:
1. 在你本地保存的CVS管理文件中(CVS/Entries)找到這個文件對應(yīng)的版本號是什
么, 或是哪個時間得到的這個文件, 這類信息被稱為sticky信息, 也就是說這些信
息跟你的文件本身是如影隨形的, CVS考慮你的文件時, 同時會考慮最后一次取得
該文件時的條件.
2. 根據(jù)前述找到的sticky信息, 從服務(wù)器上下載一份該sticky信息對應(yīng)的那個版
本, 在上述的情況中, 仍然下載的是1.1.1.4版本, 因為我本地保存的file.c是
1.1.1.4版本.
3. 用diff工具進行比較
這樣比較的結(jié)果當(dāng)然是: 沒有不同.
當(dāng)然, cvs diff的其它工作方式并不象此處這樣隱晦, 比如
cvs diff -r1.1.1.4 -r1.1.1.5 file.c
明確地比較這兩個版本, 兩個版本的文件內(nèi)容都取自服務(wù)器.
錯誤的信息源于錯誤的愿望: 不能指望cvs diff filename 來判斷你本地的文件是
否是最新版本, 判斷這個的命令應(yīng)該用
cvs status file.c
此時它的輸出是 Needs Patch
而接下來把本地文件更新到最新版本的操作當(dāng)然是
cvs update file.c
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=678715