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

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

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