您的位置:軟件測試 > 開源軟件測試 > 開源配置管理工具 > cvs
使用CVS進行項目開發(fā)管理
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/2/17 16:40:52 ] 推薦標簽:

  
  CVS在每個目錄下面都建立了一個名叫CVS的目錄,此外,目錄的結(jié)構(gòu)是一樣的,事實上,CVS目錄中存放的是一些關(guān)于目錄結(jié)構(gòu)在倉庫中的信息,Entries中包含了這些目錄中的子目錄,Respository包含此目錄在倉庫中的相對位置,ROOT包含導(dǎo)出的模塊主目錄的路徑。
  
  cvs import命令只是在第一次把項目導(dǎo)入CVS倉庫時才使用,以后如果再需要加入目錄或者加入文件,則使用cvs add 命令加入,然后使用cvs commit提交之后,文件或者目錄才會真正加入到CVS倉庫中。我們可以把剛才編輯的hello.c文件拷貝到testprj/src/main/中,然后使用:
  [kerberos@power zhyf]$ cvs add testprj/src/main/hello.c
  cvs add: scheduling file `testprj/src/main/hello.c' for addition
  cvs add: use 'cvs commit' to add this file permanently
  
  使用cvs commit提交修改
  [kerberos@power zhyf]$ cvs commit
  cvs commit: Examining testprj
  cvs commit: Examining testprj/admin
  cvs commit: Examining testprj/doc
  cvs commit: Examining testprj/include
  cvs commit: Examining testprj/libs
  cvs commit: Examining testprj/src
  cvs commit: Examining testprj/src/include
  cvs commit: Examining testprj/src/main
  RCS file: /home/zhyf/cvsroot/testprj/src/main/hello.c,v
  done
  Checking in testprj/src/main/hello.c;
  /home/zhyf/cvsroot/testprj/src/main/hello.c,v <-- hello.c
  initial revision: 1.1
  
  使用RCS管理單個文件
  done
  
  testprj/src/main/hello.c
  
  由于CVS使用RCS管理單個文件,所以,前面我們講的關(guān)于RCS的知識也可以用到這里,不同的是命令之前要限定是cvs,比如cvs ci, cvs co, cvs diff, 或者在導(dǎo)出時使用 -r 選項指定導(dǎo)出的文件的版本。在源代碼文件中,同樣也可以使用RCS的關(guān)鍵字。
  對于非ASCII文件,如二進制可執(zhí)行文件,位圖等文件,我們不能直接使用cvs add加入到CVS倉庫中,因為CVS只是基于ASCII代碼比較文件的改變,所以,對于二進制文件,如果單純使用cvs add 命令會破壞文件的完整,所在加入二進制文件時,要指定-kb參數(shù)。如果對已有文件進行了修改,使用cvs ci, cvs commit 來提交修改。
  另外一種情況是自己導(dǎo)出別人修改的文件,而不想覆蓋自己所作的修改,可以使用cvs update命令,這個命令會自動比較CVS倉庫中文件和當(dāng)前自己文件的后修改時間來導(dǎo)出新的文件。
  
  在cvs update 和cvs ci 時,你對此的文件修改與他人發(fā)生沖突,CVS則提示你。CVS會在文件中使用“>>>>>>” 或者“<<<<<<<”標記標出沖突的地方,你可以與他人協(xié)商手動修改這一段代碼。
  
  如果你想刪除倉庫中的一個文件,要先刪除本地導(dǎo)出的文件,然后使用cvs remove 文件名, cvs commit來刪除。事實上,CVS是不會真正刪除這些文件的,如果你還想得到這些文件,只需要,使用cvs co -r 指定刪除前的版本導(dǎo)出可以了。
  
  有時候為了導(dǎo)出CVS倉庫中的深層目錄或者文件不得不輸入很長的路徑,這一點很討厭,你可以導(dǎo)出CVS倉庫中CVSROOT目錄下,修改modules文件,定義這個目錄或者文件為一個模塊,提交修改后可以直接使用cvs co 模塊名 可以導(dǎo)出了。
  
  CVS的版本控制功能主要體現(xiàn)在tag上。標記的作用如同是同時記錄了做標記時所有文件的版本,需要的時候可以一次導(dǎo)出這些版本不一的文件,這常常是在項目的開發(fā)達到了一定的目標時使用的。
  cvs tag 命令的參數(shù)只有一個:標記名。例如:
  cvs tag RELEASE_1.0_BETA
  以后,如果需要這個版本,只需要使用cvs co -r RELEASE_1.0_BETA可以導(dǎo)出這個版本了;蛘呤褂胏vs diff -r 來生成patch文件和使用cvs log -r 來查看這個版本的日志。
  
  標記的另外一個非常重要的作用是生成分支和合并分支。
  通常,我們的項目的開發(fā)到某一定的程度時,需要探索某一條開發(fā)途徑是否有效,這個時候,我們需要做一個試驗,但是這個試驗的分支的開發(fā)不能影響項目的主開發(fā)分支,這樣,我們可以生成一個分支開發(fā),主開發(fā)分支也可以繼續(xù)進行,兩者并不沖突,將來如果證明分支開發(fā)有效,還可以把分支合并到主開發(fā)分支中。建立一個CVS分支:
  cvs tag -b 分支標記名
  
  建立分支后,并不影響當(dāng)前我們從CVS倉庫中的文件,需要從CVS倉庫中重新導(dǎo)出分支BRANCH_VER:
  cvs co -r 分支標記名 模塊名 
  
  這樣,我們可以進行分支開發(fā),主分支的開發(fā)也可以照常進行,如果此分支開發(fā)成功,我們可以把它與主分支合并:
  cvs update -j 分支標記名
  cvs commit
  可以把開發(fā)分支合并到主分支中去了。
  
  以上是本地CVS倉庫的操作,如果使用網(wǎng)絡(luò)CVS倉庫,只需要使用CVS_RSH環(huán)境變量指定通信shell,另外設(shè)置CVS倉庫為網(wǎng)絡(luò)倉庫可以了。網(wǎng)絡(luò)上的CVS倉庫的服務(wù)器有兩種:ext和dserver。對于后者在進行CVS操作時,需要先login驗證用戶。后者使用rlogin驗證,不需要顯式登陸。如:
  
  ext CVS 服務(wù)器使用
  export CVSROOT=:ext:kerberos@power:/home/repository 
  或者cvs -d :ext:kerberos@power:/home/repository
  cvs co platoon
  
  derser CVS 服務(wù)器使用
  export CVSROOT=:pserver:anonymous@anoncvs.kde.org:/home/kde
  cvs login 
  cvs co kdebase
  
  其他一些常用的cvs 命令選項
  -d 指定CVS倉庫的路徑
  -zn 使用gzip 壓縮后傳輸,到本地后自動解壓。n為壓縮級別通常式 1~4,通常使用于服務(wù)器的傳輸速度較慢的情況下。
  -x 用于服務(wù)器的通信使用加密算法,只有在使用kerberos驗證體系下有效
  
  CVS 的GUI工具
  幾個常用的GUI工具:
  LinCVS(圖1),是Xwindow 的CVS客戶端工具,比較流行的一個,功能也很強大. 

上一頁123下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd