top
Loading...
團隊開發利器CVS培訓基礎講義
CVS是RCS的前端工具,它是用于多用戶并行開發的版本控制工具,它的最大特點 是使用了“copy-modify-merge”機制而不是“lock-modify-unlock”。通過使用 CVS生成一個存儲文件的倉庫(repository),存儲在倉庫中的每個目錄叫做模塊 (module),在修改時將相應的模塊檢出到工作目錄中(working directory)生成對應的目錄,所有的修改都在工作目錄中完成,修改完成后再提交到倉庫中生成新的版本號,并加以保存。

CVS把文件保存在一個名叫倉庫(repository)的地方,倉庫中保存的文件并不是每個版本的副本,而是可以從任意版本回溯到初始版本的一些代碼的主控信息,這樣,就節省了大量的存儲空間風靡全球的LINUX操作系統就是在大型分布式CVS系統上開發成功的。

全球最著名的軟件工程軟件提供商Rational Sofdtware的ClearCase是CVS的替代產品,比CVS稍有增強

2、CVS的版本編號

分為系統編號和用戶編號

系統編號是CVS自動給版本編的號碼。CVS自動管理系統編號。單分支版本演化以1.0->1.1->1.2-...的方式順序進行。

用戶編號是用戶為了自己控制版本號碼,或者統一版本號碼,而對某一版本指定的編號。

二、CVS建議開發流程

為避免其他人更新時導致無法編譯的錯誤,建議先在開發環境中開發,編譯通過后在沒有大的改動情況下放入CVS中進行管理,然后發布到測試及生產環境。

以總公司網站開發為例,流程如下:

開發環境(192.168.16.33) -> CVS(192.168.16.38) -> 生產環境(192.168.16.34)

三、WinCvs的使用

1、如何設置本地工作目錄:

admin -> preference -> WinCvs -> HOME folder

2、如何列出CVS服務器上的modules?

admin -> Macros admin -> Get the cvs modules

CVSROOT 模塊下的文件modules控制著modules的顯示,由系統管理員管理。

3、如何將CVS服務器上的modules取到本地工作目錄?

選中待取module -> Create -> Checkout modules... -> 輸入modules名 ->確定。

4、如何將新增的程序或文檔納入CVS管理?

將新增的程序或文檔copy到CVS本地工作目錄 -> 右鍵 -> Add selection 或 Add selection binary(由文檔類型決定) -> Commit selection (建議文件修改后,在commit時加上本次修改的簡短描述,便于以后在log中查看歷史記錄。)

5、如何修改已存在程序或文檔?

右鍵 -> Edit selection -> 修改完畢 -> Commit selection

6、如何放棄修改?

只要還未commit,右鍵 -> Unedit selection

7、如何將新創建的Module放入cvs服務器中?

1)將包含欲放入庫中的目錄copy于工作目錄下

2)輸入模塊 Create -> Import module

3)在彈出的文件對話框中選擇你要輸入的工程目錄的頂級目錄,并確使文件夾圖標打開

4)如果彈出篩選窗口,確保提交的文件被正確地設置了文本或二進制

5)點擊OK按鈕,wincvs然后將整個目錄結構輸入到CVS服務器中

8、如何更新剛創建的modules

1)在本地移走你的原始目錄

2)將CVS服務器上的modules取到本地工作目錄(參見上面第3步)

9、如何解決沖突?

當二人或更多人修改了同一文件時就會發生沖突,此時可打開有問題的文件,搜索以<<<<<<<開始的行。沖突區有這樣的標價:

<<<<<<< 文件名

你的修改

========

從庫中合并的代碼

>>>>>>> 修訂版

你要判斷代碼應該是什么,作必要的修改,刪除cvs的標價,然后將你的修改提交到庫中。

建議:在修改cvs中的文件時,先Update selection一下。

10、如何取回以前的版本?

Graph selection -> 右鍵 -> tag selection 。

11、如何在modules小窗口中看見CVS的本地工作目錄?

View -> Browse Location -> 在彈出的窗口中選擇本地工作目錄 -> 確定

12、查看誰在修改文件

右鍵 -> Editors of selection。列出正在編輯files的用戶。

13、如何查看文件的歷史修改記錄?

右鍵 -> Log Selection

14、什么情況下需要鎖定登出(checkout)?

對于word文檔、函數庫等二進制文件,因無法由CVS合并,應當選中鎖定登出。

右鍵 -> Lock Selection

Unreserved checkouts是CVS確省方式,允許其他用戶修改被登出的文件。

CVS不會告知第一個登入者是否還有人在修改文件。

其他人要登入會得到錯誤信息,他們須先與倉庫中的最新版本合并才能等入。

對于源代碼等,應選擇非鎖定登出,否則將大大降低軟件生產率。

如果非鎖定登出造成嚴重的開幕沖突,那時因為開發者的溝通嚴重不足。

注意:

單純的非鎖定登出對許多項目而言是可行的。

鎖定登出控制過于嚴格,不利于提高軟件生產率。

介于兩者之間的非鎖定登出與監視機制結合,對許多小組是最佳選擇。

四、CVS補遺

1、如何刪除一個目錄?

需要先刪除目錄中的所以文件,使該目錄成為一個空目錄,然后運行cvs update -P讓CVS從倉庫中清除空目錄。

2、如何重命名文件?

將工作目錄中的舊文件重命名為新文件。

-mv old new

通知CVS刪除舊文件

-cvs remove old

通知CVS添加新文件

-cvs add new

從CVS倉庫中刪除舊文件、添加新文件

-cvs ci -m "name old to new" old new

3、CVS無法完成二進制文件的版本比較和版本合并,為此,應該避免版本分支。

4、CVS無法更據文件內容識別二進制文件,但能夠根據文件擴展名來識別那些文件是二進制文件,這是由cvswrappers配置文件定義的。

5、設置只讀用戶

向某些用戶授權讀取CVS倉庫中的文件,但不允許他們修改文件。

在$CVSROOT/CVSROOT/readers文件中列用戶名,例如:

xuys
huyj
zousj
anonymous

五、開發要點總結

1、要對cvs中的文件進行修改時,先Update selection一下,然后進行編輯。

2、對于源代碼的修改,應選擇非鎖定登出。

3、對于word文檔等二進制文件,因無法由CVS合并,應當選擇鎖定登出。

4、文件修改后,在commit時最好加上本次修改的簡短描述,便于以后在log中查看歷史記錄

5、小組成員之間要加強溝通。
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗