winCVS 使用方法
(zz)
CVS版本控制常用操作說明
在進行版本控制的過程中, CVS是國際上最流行最成熟的版本控制系統之一,它能使我們的團隊更好的在一起協同工作,使各自的程序一目了然,如果軟件項目當前版本壞了,還可以通過CVS方便的恢復到一個好的版本。
CVS本來是工作在UNIX,LINUX下的,不過也出現的WINDOWS版本,包括服務器端(CVSNT)和客戶端(WINCVS)。我們大多的操作是在客戶端也就是WINCVS端完成,針對大家在實際工作中的問題,下面列出一些具體的操作方法及解決途徑,歡迎大家共同討論,指出不足,共同進步。
1.準備工作
1.1術語
?? Update---從cvs服務器下載新版本文件。當本地文件比服務器上的還新時,update將失敗。
Commit---將本地更新過的文件提交到cvs服務器。如果本地文件比服務器上的還舊,commit將失敗。
Import Module---將本地模塊建立到服務器上(即在服務器上新建一模塊)。
Checkout Module---從服務器上取出一個模塊
?? Revision---文件版本,是單個文件的版本而非整個項目的版本
?? Release---發行版本,指整個產品的版本
Tag---標簽
1.2目錄及設置
?? 在使用CVS之前,要在客戶端電腦上建立一個空目錄,用來存放CVS服務器下載下來的文件。安裝好WinCvs(我這里版本為1.3)后,設置默認文件夾,點擊"View"菜單,再點擊"Browse Location",進入"Change"菜單,找到剛建立的空目錄,點擊確定即可。打開"Admin"菜單,點擊"Preferences"子菜單。在 "General"頁中,設置與cvs服務器有關的選項,
a.設置"Authentication"(認證方式),選擇"pserver"。
b.設置"Path"(cvs服務器上的倉庫根目錄)。
c.設置"Host address"( cvs服務器名)。
d.設置"User name"(用戶名),輸入個人的cvs帳號。
e.設置"CVSROOT"參數,這是cvs專用的參數格式,如下所示:
username@servername:path
其中username是帳號,servername是服務器名,path是cvs服務器上的倉庫根路徑。如圖
2.登錄
點擊"Admin"菜單,再點擊"Login…"菜單,之后出現一個password對話框,輸入密碼,即可登入CVS服務器。登入后,wincvs將自動記住你的密碼,下次使用wincvs時,可以不用人工登錄。
3.建立模塊
?? 假設我們在本機的目錄中有一個“技術研發”目錄,此目錄中有相關的文件,我們要將這個目錄(該目錄下必須有文件)作為一個模塊(Module)建立到CVS服務器上。可以選擇“技術研發”目錄,點擊右鍵,選擇“Import Module”,如圖
一般源代碼等是TEXT格式的,而其它如圖片,OFFICE文檔等是二進制格式的。如果發現WinCvs列出的格式與實際的格式不符,可以在相應的項目上雙擊來修改格式。上傳完成后,相應的目錄就可以刪除了。
4.Checkout、Commit 和Update操作
在WinCvs左邊的樹形目錄上點擊鼠標右鍵,進入"Checkout Module"菜單,輸入你要checkout的模塊的名字(注意大小寫),再輸入checkout下來后的存放目錄,按"確定"按鈕,這時,在 WinCvs的控制臺輸出code 0的成功信息。表明此次操作執行成功。
如果文件內容有改變,應即時提交到服務器上。如果我們修改了一個文件儲存后,文件的圖標變成紅色,這時在此文件上點擊右鍵,再點擊“Commit selection…”菜單,出現code0信息表示命令執行成功。如果命令執行失敗,可能是另外有人修改了這個文件并提交到了服務器。即服務器上的版本可能比你現有的文件還新,這時你有三種選擇:
a. 將服務器上的文件和本地的文件合并后再提交
先在文件上點擊菜單命令"update…", 在彈出的對話框上什么都不要選,點擊確定按鈕,執行,合并后的文件前面有一個M標記。
b. 用本地的文件將服務器上的文件覆蓋
在文件上點擊菜單命令"commit…",在出來的對話框上切換到Commit options頁,選擇Force commit,如下圖,
按確定,命令執行。
c. 用服務器上的文件將本地文件覆蓋
在文件上點擊菜單命令"update…",在出現的對話框中選擇Get the clean copy,如果是在目錄下有新目錄增加,可選中Create missing directories that exist in the repository如下圖,
??
按確定,命令執行。(注:如果選擇的是目錄進行Update,選中了Do not reurse into sub-folders意味著不對該目錄的子目錄進行Update;另外如選中 Reset any sticky date/tag/’-k’ options 意味著對選擇對象標注的時間、標簽進行重新設定)
更新過的文件為綠色,前面標有U標記。同時,WinCvs會自動在此文件的當前目錄備份更新前的文件,文件名前面會加上".#",后面會加上版本號。
5.Add文件
如果在本機目錄中新建了文件,必須用Add命令將它添加到cvs服務器,要將此文件加入到cvs,請先選擇它(如有多個文件,可以多選),點擊 "Modify"菜單中的"Add selection",如果是二進制文件,點擊"Add binary"菜單,命令執行后,控制臺的輸出信息如下,返回代碼為0表示命令執行成功。執行后文件前的圖標變為紅色,cvs就認為這是修改過的文件,你還必須用前面提到的Commit方法將文件提交到cvs服務器。也可以用點擊快捷欄里的圖標進行相關操作,如圖
??
6.Remove文件
如果要將cvs中的文件刪除,不能簡單的將它從本機目錄中刪除,而必須借助Remove命令。不然的話,當你下次Checkout module時,在本機刪除的文件又從服務器下載下來了。
假設我們現在要從cvs中刪除newfile.txt文件。請先選擇此文件(如有多個文件,可以多選),點擊"Modify"菜單,再點擊"Remove"菜單命令,這時控制臺的輸出code0成功信息,這時此文件已被做了刪除標記,文件前的圖標變為紅色。
如要真正的從cvs服務器上刪除此文件,還必須再執行一次commit命令。
7.Remove空目錄
在WinCvs中只提供了刪除文件的功能,如要刪除一個目錄,必須先將這個目錄中的文件用上面介紹的方法清空,然后再在WinCvs的樹形菜單中選中你要刪除的目錄的上層目錄,將光標移到控制臺窗口中,輸入以下命令:cvs update –P
完成后再執行一次update命令,即完成刪除,也可以點擊右鍵選擇Update selection..操作。
8.查看比較文件版本的歷史沿革和差異
我們對一個文件,進行了多次修改和提交,使版本不斷的升高,我們需要查看文件的版本歷史,選中文件,然后選擇主菜單Query,選擇“Graph”菜單項,如圖
??
如果比較兩個版本的差異,在圖中選擇兩個要比較的版本,比如比較1.4與1.2版本,先用鼠標選中1.4然后按下Ctrl鍵再選中1.2,在主菜單Graph中,選中Diff菜單項,就可以比較兩個版本的差異了。
如果想獲得文件的任意某個版本,先選擇文件,進行Update操作,在Update的對話框中點擊“Update option”欄目,在“By revision/tag/branch”處打上鉤,并填寫想取回的版本號,點擊確定就可以了。
9.統一版本
?? 如果在整個的開發過程中達到了某個穩定階段,我們需要一個統一的固定版本號,而此時不同的文件修改的情況不同,需要進行版本號的統一。統一某一模塊的版本號,在Checkout Module的時候,在彈出的Checkout settings對話框中選擇Checkout option子欄目,然后鉤上“Force revision/branch”,然后在它右邊的編輯框中輸入想提升的高版本號,注意這個版本號應該大于工作目錄下所有文件的版本號。接著在剛選中的 Module上執行一次Update操作,我們需要在彈出的“Update settings”對話框中鉤上“ Reset any sticky tag/date/tag/’-k’options”,去掉tag,以免影響今后的文件修改提交。
10.標簽(Tag)
標簽是cvs中對文件版本的一種文字描述,使用它是為了能夠對版本進行有意義的表述,方便版本的存取。如在開發的過程中,某個文件或整個目錄、 Module達到了穩定狀態,此時在此版本號上加一個Tag,起名stable。在選中需要加標簽的文件或目錄、Module,然后在主菜單Modify 中,選擇“create a tag on selection”,在New tag name 欄中填寫stable,確定完成,在版本的歷史圖中更為清晰。還有在Update時,可以專門指定Update指定的Tag,在Update options中鉤選Retrieve
rev./tag/branch,右攔輸入指定的Tag值,如我們剛創建的stable,點擊確定就可以Upadate該標簽的版本內容。
11.有關Branch的使用
?? 如果軟件已經達到了一個相對穩定的狀態,下一步是想試驗一種新加的功能,擔心加入新內容后系統變的不穩定,希望能方便的回到目前的穩定狀態,如果新內容加入后效果不錯,也希望在這個基礎上繼續開發,此時可以用Branch來處理,把某些版本的變化與開發主線分離開。首先選定要創建分支的文件(或子目錄或整個Module),選擇主菜單Modify下的create a branch,先鉤選“Check that the files are unmodified before branching”,在 create branch編輯框中填寫分支名稱,點擊確定就可以啦。接下來就是要進入分支進行工作,進行Update 操作,在Update settings的對話框中,鉤上“Create missing directories that exist in the respository”,在Update settings的對話框中,選擇“Update options”中鉤上“Retrieve rev./tag/branch”,并填寫分支名,如“try_branch”,見下圖,按“確定”按扭,工作目錄下主文件消失了,branch文件出現了,就可以按一般的文件進行修改和提交了。
?? 如果想從分支回到開發主線,有兩種情況,一是把分支的工作帶到主線上來,另外就是不帶入主線,選擇Module塊進行Update操作,在 Update settings對話框中,鉤上“Create missing directories that exist in the repository”,“Reset any sticky date/tag/’-k’options”,如果不想把分支的工作帶入主線直接點“確定”就可以了。如果想接受分支工作,那么就進行Merge工作了,在Merge option欄,選擇“Only this rev./tag”,并填寫要Merge的分支名,點擊確定即可,如下圖:
最后在進行一次Commit就可以完全把分支的工作合并到開發主線上了。在版本的歷史圖中,可以看到,如下圖:
12.補充
另外還有兩個常用的命令:
cvs ls :列出CVS服務器倉庫中的模塊名
cvs lsacl :列出目錄或文件的訪問管理列表
目前的CVS服務端、客戶端有較新的版本,但也存在Bug,建議不要盲目下載新版本,可能不穩定,從而給工作帶來不必要的麻煩。
有時WinCVS會變得異常緩慢
1). 確認安裝了WinCVS的機器上沒有安裝CVSNT服務器端,因為它們使用的版本有可能不一致。
2). 只安裝了WinCVS,但以前安裝過其它版本的WinCVS,先卸載所有的WinCVS系統,刪除安裝目錄下的殘留文件。
3). 打開注冊表編輯器,全程查找cvs關鍵字,找到一個刪除一個,一直到找不到為止。
4). 重新安裝WinCVS,這個問題基本上就可以解決了。
這篇文檔只是根據我們研發部門經常使用的實際情況而編寫,希望能給大家帶來幫助。CVS當中還有很多高級的用法,但相關的資料也很泛泛,更多的需要我們不斷的實踐才能知道怎么回事,因此,熱烈歡迎大家一起積極探索,不斷進步...
總結
以上是生活随笔為你收集整理的winCVS 使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apache VFS:基本介绍
- 下一篇: head,branch,version,