cvs 伺服器
安裝 Wincvs
一:進行設定 CVSROOT 的環境變量
具體步驟是點 admin —— log in 在 login settings 中選上 CVSROOT, 比如說我的設定是:
pserver:[email protected]/cvsserver 其中 pserver 代表了一種 CVS 的一種遠端通路方式; zhw 是我這個用戶端在伺服器上的使用者名,在伺服器上設定; SERVERIP 是 CVS 伺服器的 IP 位址; cvsserver 是伺服器上的其中一個倉庫名。
第一次設定好後以後設定就可以不用再輸入,直接點上就可以。
設定好後,輸入正确的登入密碼就可以連接配接通路到伺服器倉庫的内容了。
二:已操作的常用的 CVS 指令
1 checkout (co) 把伺服器上的内容導入到客戶機上。 admin—checkout module , 然後會出現一個 checkout setting 選項。各個選項的具體注意事項見後面的說明
2 checkin (commit, ci) 把從倉庫中拿出來的檔案或者檔案夾(經過修改後)再次送出給倉庫(注意如果這個檔案之前在倉庫中沒有就要先 add )
3 import 把選中的檔案或者檔案夾導入到倉庫中,此步驟隻在檔案或檔案夾第一次導入時使用,其它時候盡量用 add 和 commit
4 update 更新本地檔案,從伺服器将修改取到本地,它可以更新一個檔案,一個檔案夾,或者整個目錄層,更新對倉庫是沒有影響的。
5 add 把某個檔案或者檔案夾添加到倉庫中,需要兩步。第一步是 add 第二步是 commit
6 status 可以顯示目前選中的檔案的具體參數和狀态
其中有幾個要能看懂:
up-to date代表現在要的檔案是最新的
locally modified 代表說你曾經修改過但沒有送出,版本比倉庫裡的新
needing patch / 表明已經有人修改過檔案并且已經送出了,版本比倉庫的舊
needs merge 你曾經修改過檔案,但是也有别人修改過了檔案,而且也送出給了倉庫
7 release 點 trace-----release 效果等于完全取消了 checkout 的效果,把下下來的檔案等完全從工作檔案夾中取消掉,隻能通過再次從倉庫中 co 才可以(比較:在 windows 資料總管下把某個檔案删掉的話,在 cvs 下并沒有真正的删去,可以不需要 co 來實作再次恢複)
三:各個指令操作中注意的問題:
1 添加檔案和檔案夾( add-commit//import )
向 cvs 倉庫中添加一個檔案的時候一定要保證被添加的檔案或者目錄在目前目錄中,也就是在目前目錄中必須保證存在一個 cvs 檔案夾才可以進行添加。是以就是要從大目錄開始送出,再一步步往下層走。
其中有 2 種方式
a 選中某個檔案 modify—add 這個隻能是一個一個檔案添加
b 選中某個檔案夾然後 macros---recursive add (回歸添加),這樣就能把該檔案夾下的所有檔案一次性添加(雖然有一個 auto-commit 但是其實是不可以同時實作送出而要接着做下面的這個操作),而不需要一個個的去添加;再次選中這個檔案夾,通過 commit 把檔案夾下的所有檔案都送出到倉庫中去。
Ps: 與 import 的差別
import 的功能預設下是可以把整一大個目錄樹添加到倉庫目錄下,作為一個 module .
選 remote –import module 後會出現一個 import 的過濾器,要對每一個警告進行設定(主要是設定哪些檔案類型要被過濾掉,即不存入倉庫),然後出現一個 import setting 的一個選項,通過這個設定可以把要 import 的東西放在倉庫非第一層目錄下 , 這種做法的優點是可以把所選檔案夾下的所有檔案、檔案夾以及檔案夾下的所有檔案都送出給倉庫,但是同時也存在一個不足之處就是必須得知道要放在伺服器中的詳細路徑才可以。
2 checkout
在 checkout setting 的設定中要注意
一定要核對 local folder to checkout to 的位址是否是你所想把内容儲存在你電腦上的位址
module name and path on the server 這個選項是指你要從倉庫中取得檔案在倉庫中的目錄(可以在指令行中通過 cvs ls ( 下一級檔案名 ) 來檢視倉庫中所具體擁有的檔案和檔案名,也就能知道了所有檔案的路徑)
3 update 更新
選 modify---update 其中每一個設定都是很重要的
update setting 中第1個選項實作更新目前檔案 第 2 個選項是說把倉庫中存在但現在在該目錄下未出現的所有檔案都下到本地來,也就說可以把别人的修改合并到本地來
update option 中除了選填的是那 branch 外其他都是被認為是被打上了一個 tag ,打了 tag 的檔案是不能被送出的,這也就是為什麼對這樣操作後的版本檔案操作後想再次送出确總是出現錯誤,提示說該檔案不是一個 branch 。我們可以通過版本建立的時間,等等資訊來 update 出自己想要的版本。
其中 reset any sticky tags/date/kopts 選中它,就可以把原來打的 tag 給取消。 Merge 選項時要注意,比如在某 1.1 版本的基礎上做了修改生成了 1.2 的版本,現在我們又想取出 1.1 的版本,我們就要通過 merge 來做。(通過版本号 update 出 1.1 來是不正确的做法,這樣會不能再送出,相當于對它打了一個 tag ,打了 tag 的是不能再送出的了)
四:幾種常見錯誤提示原因及解決辦法
1 “ No cvsroot specified!please use the ‘-d’option :or set the cvsroot environment variable ”
這個情況多是因為你所操作的對象所在目錄級沒有 cvs 檔案夾,可以通過任何方式獲得 cvs 檔案夾來解決問題,有的時候你選中的目錄層并不是你所操作的對象這樣也能解決問題。
可見 cvs 檔案夾是否存在相當的重要,它直接決定了很多操作是否能完成
2 “ cvs server: encoder.c added independently by second party ”
如果你要 cvs add temp 出現上面資訊,這是因為倉庫在同樣的位置已經有了同樣的檔案,倉庫裡已經有這個檔案你再要 add 就不可能了,是以可以給檔案改個名,再進行 add 就可以正确 add 了。
3 “ cvs server sticky tag ‘1.2’ for file ‘aa.c’is not a branch cvs[server aborted]: corret above errors first ”
出現這個錯誤提示是因為通過版本号把 1.2 版本的給 update 下來,這相當于已經對它打了 tag ,再對它修改送出是不允許的。如果是通過 branch 給 update 下來的就是可以修改送出了(這在 update 注意事項設定中提到)