




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、9.1.1 版本管理不同產(chǎn)品的簡(jiǎn)單介紹配置管理軟件分類: 軟件的版本管理(CVS是軟件版本管理的工具) 構(gòu)件管理 缺陷和跟蹤管理產(chǎn)品介紹:1)高端產(chǎn)品如:Rational clearCase2) 中端產(chǎn)品如:PVCS (pvcs version manager ,pvcs tracker)、Perforce3)低端產(chǎn)品vss等不同的平臺(tái)上開(kāi)發(fā)應(yīng)用,而共用一個(gè)CVS服務(wù)器。 強(qiáng)大的分布式開(kāi)發(fā)支持:CVS一直以支持分布式開(kāi)發(fā)作為其基本特征。 支持并行開(kāi)發(fā):允許多個(gè)開(kāi)發(fā)人員對(duì)同一個(gè)文件進(jìn)行開(kāi)發(fā)工作,并對(duì)多個(gè)開(kāi)發(fā)者的工作進(jìn)行整合。 強(qiáng)大的可塑性:不論是一個(gè)源代碼組成的項(xiàng)目開(kāi)發(fā)管理,還是代碼量超過(guò)幾百兆
2、的項(xiàng)目,均管理自如。 觸發(fā)器及定制功能:這種功能幫助開(kāi)發(fā)者將CVS和變動(dòng)/跟蹤系統(tǒng)緊密集成,以形成完整的軟件配置管理系統(tǒng)(SCM)。 如果未報(bào)錯(cuò)誤,則CVS服務(wù)器安裝OK了。 whereis cvs 指定指定CVSCVS倉(cāng)庫(kù)倉(cāng)庫(kù) cvs倉(cāng)庫(kù)(Repository)是保存軟件資源的設(shè)備,可以根據(jù)需要選擇一目錄作為庫(kù)的位置,如,/cvsap ,用超級(jí)用戶建相應(yīng)目錄。 mkdir /cvssrc mkdir /cvssrc/master CVSCVS服務(wù)器的初始化服務(wù)器的初始化 在確定CVS倉(cāng)庫(kù)位置后,就可以初始化CVS服務(wù)器。在初始化的過(guò)程中CVS創(chuàng)建其文件系統(tǒng),并產(chǎn)生原始內(nèi)容。在目錄/cvsap
3、目錄下,以超級(jí)用戶身份在提示符下執(zhí)行: roothostcvs /root$ roothostcvs /root$ roothostcvs /root$ cvs d /cvssrc/master initroothostcvs /root$ cvs d /cvssrc/master init 其中的目錄project為項(xiàng)目源代碼的資源目錄。執(zhí)行命令: roothostcvs /root$ ls /cvssrc/masterroothostcvs /root$ ls /cvssrc/master CVSROOT roothostcvs /root$ ls a /cvssrc/master/CVS
4、ROOT roothostcvs /root$ ls a /cvssrc/master/CVSROOT 該目錄下是原始內(nèi)容,如果該目錄為空,則初始化失敗。用戶組和用戶帳號(hào)的設(shè)立用戶組和用戶帳號(hào)的設(shè)立 用戶組和帳號(hào)的設(shè)立原則:進(jìn)行配置管理的用戶和進(jìn)行開(kāi)發(fā)的用戶分別設(shè)立不同的用戶組,如,cvsadmin和cvsuser 兩個(gè)組,在兩個(gè)不同組上建立管理用戶和開(kāi)發(fā)用戶。 CVS的權(quán)限設(shè)定的原則是: CVS用戶必須擁有對(duì)/cvsap/src/master/CVSROOT目錄及其中所有文件的讀權(quán)限。 CVS用戶必須擁有對(duì)/cvsap/src/master/CVSROOT目錄下history文件的寫(xiě)權(quán)限。
5、CVS用戶如果希望對(duì)系統(tǒng)中的模塊(如,project)代碼等資源的修改,必須對(duì)該目錄有寫(xiě)權(quán)限。 對(duì)于普通的開(kāi)發(fā)用戶應(yīng)該設(shè)為:對(duì)/cvsap/src/master/CVSROOT目錄及其下的所有文件有讀權(quán)限;對(duì)/cvsap/src/master/CVSROOT/history下的文件有寫(xiě)權(quán)限;對(duì)某個(gè)項(xiàng)目(模塊)下的文件有讀寫(xiě)權(quán)限(如,project)。 區(qū)分管理員和普通用戶的權(quán)限設(shè)定區(qū)分管理員和普通用戶的權(quán)限設(shè)定1)添加cvsadmin用戶組2)添加cvsuser用戶組3)添加CVS管理員帳號(hào)到cvsadmin4) 添加CVS普通用戶到cvsuser5) 讓cvs管理員擁有對(duì)配置目錄及其下文件的
6、讀寫(xiě)權(quán)限,同時(shí)給cvs的普通用戶對(duì)配置目錄及其下文件的讀權(quán)限。rootcvshost /root $ chgrp R cvsadmin /cvsap/src/master/CVSROOTrootcvshost /root $ chmod R 064 /cvsap/src/master/CVSROOT6) 給cvs普通用戶對(duì)目錄/cvsap/src/master/project的讀寫(xiě)權(quán)限r(nóng)ootcvshost /root $chgrp R cvsuser /cvsap/src/master/projectrootcvshost /root $ chmod R 060 /cvsap/src/mas
7、ter/projectCVSCVS的口令服務(wù)器的口令服務(wù)器 CVS口令服務(wù)器配置的目的是使cvs用戶的遠(yuǎn)程計(jì)算機(jī)能訪問(wèn)CVS服務(wù)器。 其方法分兩步: 1) 以超級(jí)用戶在hostcvs服務(wù)器上的/etc/services的文件中添加一行:cvspserver 2401/tcp。最簡(jiǎn)單的方法是執(zhí)行命令:echo cvspserver 2401/tcp /etc/services。注意:端口號(hào)2401不要重。這種方式是IBM UNIX系統(tǒng)。 2) 如果使用的是Redhat6.2及以前的版本或使用inetd超級(jí)服務(wù)器的UNIX版本,用超級(jí)用戶在/etc/inetd.conf文件中添加一行,加在末尾:
8、cvspserver stream tcp nowait root /usr/local/bin/cvs cvs cvspserver stream tcp nowait root /usr/local/bin/cvs cvs f f allow allow root=/cvswork pserverroot=/cvswork pserver。 如果是Redhat 7.1或其他新版本的Linux,則用超級(jí)用戶身份打開(kāi)/etc/xinetd.conf文件,并在文件中添加: service cvspserverservice cvspserver port = 2401 port = 2401 s
9、ocket_type = stream socket_type = stream wait = no wait = no user = root user = root server = /usr/bin/cvs server = /usr/bin/cvs server_args = -f -allow-root=/cvssrc/master pserver server_args = -f -allow-root=/cvssrc/master pserver bind = bind = 本機(jī)器的本機(jī)器的IPIP地址地址 啟動(dòng)啟動(dòng)inetd/xinetdinetd/xinetd超級(jí)服務(wù)器超級(jí)服
10、務(wù)器 配置好的口令服務(wù)器是包在inetd/xinetd超級(jí)服務(wù)器內(nèi)的一個(gè)程序。啟動(dòng)的方法為用超級(jí)用戶登陸,執(zhí)行命令: roothostcvs /root$ unset HOMEroothostcvs /root$ unset HOME 用來(lái)清除超級(jí)用戶的$HOME的環(huán)境變量,否則執(zhí)行CVS命令會(huì)出錯(cuò)。roothostcvs /root$ /etc/rc.d/init.d/inetd restartroothostcvs /root$ /etc/rc.d/init.d/inetd restart 也可能是/etc/init.d/inetd restart。或者 roothostcvs /root
11、$ /etc/init.d/xinetd restartroothostcvs /root$ /etc/init.d/xinetd restart 至此,CVS服務(wù)器安裝和配置工作完成。 如果是如果是HP UNIX HP UNIX 則啟動(dòng)超級(jí)口令服務(wù)器的方法為:則啟動(dòng)超級(jí)口令服務(wù)器的方法為:ps ef |grep inetd找出inetd進(jìn)程的進(jìn)程號(hào)kill HUP 讓inetd進(jìn)程重新讀入配置文件使得CVS服務(wù)生效 測(cè)試CVS口令服務(wù)器在cvshos服務(wù)器上,執(zhí)行如下命令:rootcvshost /root$ telnet localhost 2401 客戶端的安裝和配置客戶端的安裝和配置
12、介紹CVSROOT環(huán)境變量設(shè)置格式: (19頁(yè)) 客戶端的Unix/linux的安裝和CVS服務(wù)器安裝過(guò)程相同,這里不再贅述。CVS for unix/linux客戶端的永久配置方法為: sh/ksh,用編輯器打開(kāi)$HOME/.bash_profile文件添加:CVSROOT=:pserver:cloud110.60.40.34:/src/masterexport CVSROOT csh,用編輯器打開(kāi)$HOME/.cshrc文件,在文件的末尾添加:setenv CVSROOT :pserver:public192.168.25.6:/cvssrc/master 其中的public為客戶端的用戶
13、在服務(wù)器端的帳戶/用戶名。 CVS for WinCVS的永久配置為:在窗口中選擇Admin-Preferences并在General選項(xiàng)卡中輸入,如圖。關(guān)于unix/linux客戶端的臨時(shí)配置: sh/bash: testlinux test$export CVSROOT =:pserver:public192.168.25.6:/cvsap/src/master csh: testlinux test$ setenv CVSROOT :pserver:public192.168.25.6:/cvsap/src/master 測(cè)試遠(yuǎn)程訪問(wèn)測(cè)試遠(yuǎn)程訪問(wèn)CVS for unix/linux:te
14、stlinux test$ cvs logincvs password:WinCVS:AdminLogin輸入口令即可。 在在Visual Studio 中集成中集成CVS (23)1.4 CVS1.4 CVS工作原理及基本命令工作原理及基本命令 倉(cāng)庫(kù)的概念已經(jīng)描述,在CVS庫(kù)中CVS以一種特殊的文件格式(RCS)來(lái)保存這些資源。倉(cāng)庫(kù)按照目錄和文件結(jié)構(gòu)組織。倉(cāng)庫(kù)中每個(gè)目錄對(duì)應(yīng)一個(gè)項(xiàng)目,如:和cvsap/src/master在同一層次的目錄除CVSROOT外,其他每個(gè)目錄都應(yīng)該是不同的項(xiàng)目。其保存了各個(gè)版本的文件,并記錄了版本的修改信息。 統(tǒng)一文件的不同版本之間具有派生關(guān)系,在版本庫(kù)中只存儲(chǔ)不同
15、版本間的改動(dòng),從而節(jié)約空間。(29頁(yè)) 工作拷貝是指每個(gè)開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程中擁有一個(gè)獨(dú)立于其他開(kāi)發(fā)人員的整個(gè)軟件項(xiàng)目的全部代碼的拷貝,在客戶端,它和主拷貝(倉(cāng)庫(kù))構(gòu)成了CVS客戶/服務(wù)器模式。工作拷貝的每個(gè)目錄中有一個(gè)CVS目錄,其下的文件是cvs管理控制文件。(31頁(yè)) cvs命令的格式:cvs cvs-option command command-option 如:your_client$ cvs Q check test可以用命令:cvs -help-commands來(lái)查看cvs的命令。在winCVS中在command line setting 菜單中輸入命令即可。 InitInit命令
16、命令( (初始化版本庫(kù))初始化版本庫(kù))如:cvs d /cvsap/src/master init importimport命令命令 從客戶端登陸服務(wù)器。在客戶端有目錄,如,test,其中有源文件和子目錄,將目錄test下的內(nèi)容加入服務(wù)器作為一個(gè)項(xiàng)目(如,project,test),即一個(gè)baseline。命令為: your_client$ cd testyour_client$ cd test your_client$ cvs loginyour_client$ cvs login (logging in to your server)(logging in to your server)
17、cvs password cvs password * * * * * * (你的服務(wù)器端cvs帳戶口令) your_client$ cvs import m your_client$ cvs import m “initial importinitial import” test test SSE startSSE start 該命令將當(dāng)前目錄(包含子目錄)下的所有內(nèi)容,都放進(jìn)CVS系統(tǒng)中,其中,-m 表示在命令中要加注釋內(nèi)容test 為該項(xiàng)目名稱SSE 為廠商標(biāo)識(shí)start 為版本標(biāo)記沒(méi)有沖突表示創(chuàng)建新的項(xiàng)目倉(cāng)庫(kù)成功。在WinCVS中可以在菜單中實(shí)現(xiàn)。 checkoutcheckout命令
18、命令 checkout命令是將我們選定的CVS服務(wù)器上指定倉(cāng)庫(kù)中的一個(gè)項(xiàng)目代碼取到本地的工作目錄下。 如果要將倉(cāng)庫(kù)中的test項(xiàng)目的代碼取到本地個(gè)人目錄下,執(zhí)行: your_client$ cd $HOMEyour_client$ cd $HOMEyour_client$ cvs checkout testyour_client$ cvs checkout test 項(xiàng)目代碼會(huì)保存在個(gè)人目錄$HOME/test下供你個(gè)人開(kāi)發(fā)或修改。當(dāng)你打開(kāi)checkout出的源代碼所在的目錄,會(huì)發(fā)現(xiàn)代碼中的每個(gè)目錄(包括每個(gè)子目錄)中均有名為CVS的子目錄。這些目錄并不屬于代碼,它是CVS系統(tǒng)使用的目錄,其中
19、保存著CVS管理文件。這是工作拷貝與普通目錄文件的不同。這些文件對(duì)于CVS很重要。所以不要隨便的改變或移動(dòng)、刪除這些CVS目錄及其中的文件。 解釋CVS子目錄中的文件(43頁(yè)) 注意:這里的test為用戶的目標(biāo)目錄。根據(jù)用戶client端的配置:CVSROOT :pserver:public192.168.25.6:/cvsap/src/master,命令cvs checkout test 從服務(wù)器的庫(kù)中,即將目錄/cvsap/src/master/test下的所以內(nèi)容包括子目錄檢出到客戶機(jī)的$HOME/test目錄下,同時(shí)生成目錄test。當(dāng)然,也可以檢出單個(gè)文件。 diffdiff命令命令
20、 CVS能將你工作的拷貝中的源代碼文件與倉(cāng)庫(kù)中的版本進(jìn)行比較,發(fā)現(xiàn)差異。(45頁(yè))如: your_client$ cvs diff test.cyour_client$ cvs diff test.c your_client$ cvs diff your_client$ cvs diff c test.cc test.c 該命令能看到對(duì)照的結(jié)果。應(yīng)該注意的是顯示內(nèi)容中的“+”表示添加行,“!”表示修改,其余的顯示內(nèi)容和UNIX系統(tǒng)中的diff命令顯示相仿。 your_client$ cvs diff your_client$ cvs diff r 1.1 r 1.1 r 2.1 test.cr
21、 2.1 test.c 該命令比較庫(kù)中兩個(gè)不同版本文件差異。 commitcommit命令命令 提交操作會(huì)改變倉(cāng)庫(kù)內(nèi)容。提交之后,代碼成為整個(gè) 系統(tǒng)的一個(gè)部分了。由于軟件的復(fù)雜性,需要對(duì)提交進(jìn)行控制。所以在提交時(shí)應(yīng)當(dāng)遵循一定的流程,進(jìn)行一定的軟件質(zhì)量保證(SQA)工作,這些工作包括評(píng)審(review)、提交報(bào)告等。 提交源代碼的命令為: your_client$ cvs commit m your_client$ cvs commit m “add string variable and add string variable and header string.hheader string.
22、h” test.c test.c注意:如果輸出類似以下內(nèi)容的結(jié)果即提交失敗,此時(shí)應(yīng)該用update命令更新個(gè)人工作目錄下的源代碼。 cvs commit:Up-to-date check failed for test.c cvs commit aborted:correct above errors first! 這里的“-m”后面的是CVS注釋。CVS強(qiáng)制要求用戶在任何一次提交、導(dǎo)入等操作時(shí)加入注釋。養(yǎng)成注釋的習(xí)慣非常重要。 CVS支持中文注釋。如果不在命令行中加入注釋,那么CVS將自動(dòng)啟動(dòng)默認(rèn)編輯器,請(qǐng)用戶輸入注釋,只有用戶保存注釋并退出這個(gè)編輯器之后,提交才能成功。 updateupd
23、ate命令命令 該命令既可針對(duì)單個(gè)文件,也可針對(duì)一個(gè)目錄,或者整個(gè)項(xiàng)目。 更新單個(gè)文件 your_client$ cvs update test.cyour_client$ cvs update test.c 執(zhí)行上述命令后,用戶當(dāng)前工作目錄中的文件test.c的內(nèi)容與倉(cāng)庫(kù)中的最新版本完全相同了,因?yàn)樵谀鉩heckout該文件后,在修改該文件的過(guò)程中可能他人已經(jīng)修改并提交了該文件,即你的修改不是基于庫(kù)中最新版本。所以,你必須先update,再提交該文件才能提交成功。不過(guò)可能有沖突要解決,原因是對(duì)同一個(gè)文件的同一處代碼進(jìn)行了不同的修改。解決沖突的辦法就是通過(guò)編輯文件,修改發(fā)生沖突的部分。對(duì)于邏輯
24、問(wèn)題CVS無(wú)法發(fā)現(xiàn),所以版本沖突的處理應(yīng)該與軟件開(kāi)發(fā)中的需要相結(jié)合。另外,可以通過(guò)more命令看以下合并后的文件,如,more test.c。 更新整個(gè)項(xiàng)目 your_client$ cvs update your_client$ cvs update 執(zhí)行上述命令后,用戶當(dāng)前工作拷貝中屬于本項(xiàng)目的所有文件與倉(cāng)庫(kù)中的最新版本完全相同了。需要注意其警告信息。 loglog命令命令 每次提交一個(gè)CVS操作時(shí),必須填寫(xiě)日志信息,否則拒絕提交。日志信息可以在命令行中加“-m”參數(shù)表示。如果日志過(guò)長(zhǎng),可以不用“-m”參數(shù)而直接運(yùn)行,CVS會(huì)彈出一個(gè)編輯器,讓用戶在編輯器中輸入注釋信息。CVS對(duì)注釋信息沒(méi)
25、有長(zhǎng)度限制。這種日志信息是CVS進(jìn)行軟件變化跟蹤的一種機(jī)制。 每個(gè)版本均有日志信息。用戶可以查看某個(gè)文件的全部歷史日志記錄,也可以指定查看某個(gè)版本或某個(gè)日期的日志記錄。查看日志信息使用命令:cvs log(53頁(yè)) 。 查看文件test.c全部日志,使用命令: your_client$ cvs log test.c your_client$ cvs log test.c查看test.c文件1.2版本的日志,使用命令: your_client$ cvs log your_client$ cvs log r1.2 test.c r1.2 test.c 再如:再如:cvs log d“2002-06
26、-012002-07-01;2002-08-012002-cvs log d“2002-06-012002-07-01;2002-08-01 test.cr 1.2 test.c test.c(該(該命令不能在命令不能在windowswindows上執(zhí)行)上執(zhí)行) 上面命令假設(shè),現(xiàn)錯(cuò)誤版本號(hào)為1.3,正確版本號(hào)為1.2。該命令中“-Q”是不輸出無(wú)關(guān)的信息。注意不要執(zhí)行命令cvs update r 1.2 test.c 這樣會(huì)出現(xiàn)問(wèn)題。 your_client$ cvs commit m your_client$ cvs commit m “reverted to revision 1.2rev
27、erted to revision 1.2” test.ctest.c cvs diff cvs diff r 1.2 r 1.2 r 1.4 test.cr 1.4 test.c 結(jié)果可以看出兩個(gè)版本是否相同方法之二,用命令: your_client$ cvs update j 1.3 j 1.2 test.cyour_client$ cvs update j 1.3 j 1.2 test.c 將1.3版本與1.2版本之間的差異補(bǔ)到1.3版本上去。 your_client$ cvs status test.c your_client$ cvs status test.c 查看checkout
28、出的1.3版本的狀態(tài)(已經(jīng)在本地修改) your_client$ cvs commit m your_client$ cvs commit m “reverted to revision 1.2reverted to revision 1.2” test.ctest.c your_client$ cvs diff your_client$ cvs diff r 1.2 test.c r 1.2 test.c 在項(xiàng)目中添加新的目錄和文件命令:在項(xiàng)目中添加新的目錄和文件命令:addadd將工作目錄中新加的目錄和文件添加到cvs庫(kù)中的方法:在工作目錄中創(chuàng)建目錄和文件后才能進(jìn)行。加文件的第一步:you
29、r_client$ cvs add newfile執(zhí)行第二步:your_client$ cvs commit m “added” newfile加目錄(不管目錄是否為空目錄)只需一步:your_client$ cvs add newder注意:目錄中的文件需要分別加入。 刪除文件命令:刪除文件命令:remove必須先刪除工作目錄中的該文件,刪除前應(yīng)該將修改過(guò)的本文件提交保存,作為倉(cāng)庫(kù)中的新版本。命令如下:第一步:your_client$ rm oldfile(該命令不能在windows上執(zhí)行)your_client$ cvs remove oldfile上兩步可以合并:your_client$
30、 cvs remove f oldfile第二步:your_client$ cvs commit m “removed” oldfile大家可以按步驟看一下工作目錄cvs目錄下的Entries文件有什么變化。 對(duì)刪除的目錄對(duì)刪除的目錄因?yàn)閏vs不對(duì)目錄進(jìn)行版本控制,所以和刪除文件不同,沒(méi)有一個(gè)專門的命令。例如(要?jiǎng)h除目錄olddir):your_client$ ls -aolddir test.c test1.c test.pcyour_client$ cd olddiryour_client$ ls a tmp.c tmp1.c以下是刪除目錄olddir的命令:your_client$ cv
31、s remove f tmp.c tmp1.cYour_client$cvs commit m “removed” tmp.c tmp1.cyour_client$ cd .your_client$ cvs update Pyour_client$ cvs update(所有空目錄均從工作目錄中刪除)這時(shí)目錄olddir從工作目錄中消失注意:此命令不會(huì)將庫(kù)中新添加的目錄取到工作目錄中,可執(zhí)行命令:your_client$ cvs update -d清除、刪除 文件和目錄名的更改文件和目錄名的更改因?yàn)閏vs對(duì)文件和目錄的更名缺乏支持,所以必須中其他方法處理,該文件makefile名的方法一為:y
32、our_client$ mv makefile makefile.mkyour_client$ cvs remove f makefileyour_client$ cvs commit m “removed for renaming” makefileyour_client$ cvs add makefile.mkyour_client$ cvs commit m “added as a renamed version of makefile” makefile.mk方法二(在服務(wù)器上直接操作):rootcvshost /root$ cd /cvsap/src/master/testrootc
33、vshost /root$ mv makefile,v makefile.mk,v這種改法的危險(xiǎn):確保沒(méi)人訪問(wèn)該文件;不知道什么時(shí)候執(zhí)行的修改;無(wú)法獲得文件在改名前的舊版本。改目錄名的方法也有兩種:方法一:在工作目錄中創(chuàng)建新目錄,將舊目錄下除cvs目錄外的所有文件和子目錄移到新目錄下。然后刪除舊文件,在添加新目錄,并添加文件。your_client$ mkdir newdiryour_client$ mv oldnew/* newdiryour_client$cd olddiryour_client$ cvs remove f *your_client$ cvs update Pyour_cl
34、ient$ cvs update your_client$cd .your_client$cvs add newdir方法二: rootcvshost /root$ cd /cvsap/src/master/testrootcvshost /root$ mv olddir newdir這種方法是禁止任何人訪問(wèn)數(shù)據(jù)庫(kù),且方法危險(xiǎn),步主張使用。1.5 測(cè)試環(huán)境測(cè)試環(huán)境進(jìn)入測(cè)試環(huán)境步驟進(jìn)入測(cè)試環(huán)境步驟: :1.1. 在個(gè)人的在個(gè)人的pcpc機(jī)上啟動(dòng)機(jī)上啟動(dòng)linuxlinux或或windowswindows操作系操作系統(tǒng),配置好客戶端。在統(tǒng),配置好客戶端。在linuxlinux系統(tǒng)中也可以用系統(tǒng)中也
35、可以用startxstartx進(jìn)入畫(huà)面操作系統(tǒng),而后用自帶的終進(jìn)入畫(huà)面操作系統(tǒng),而后用自帶的終端操作命令。在端操作命令。在windowswindows系統(tǒng)中直接啟動(dòng)系統(tǒng)中直接啟動(dòng)WinCVSWinCVS即可。即可。2.2. 服務(wù)器的服務(wù)器的IPIP地址:地址:10.40.52.6410.40.52.64。服務(wù)器中。服務(wù)器中cvscvs用戶為用戶為du_cloud/du_clouddu_cloud/du_cloud(管理用(管理用戶)戶),userabc/userabc,userabc/userabc為開(kāi)發(fā)用戶。為開(kāi)發(fā)用戶。3.3. 可以按照前面講的命令去進(jìn)行練習(xí)。可以按照前面講的命令去進(jìn)行練習(xí)
36、。1.6 CVS1.6 CVS的高級(jí)主題版本標(biāo)簽和版本分支的高級(jí)主題版本標(biāo)簽和版本分支1.6.11.6.1版本版本 在配置管理的語(yǔ)境里,版本的概念應(yīng)該是在配置管理的語(yǔ)境里,版本的概念應(yīng)該是revisionrevision,而不是,而不是versionversion。 版本的編號(hào)可以系統(tǒng)自己編,也可以用戶自定義版本號(hào)。在系統(tǒng)版本的編號(hào)可以系統(tǒng)自己編,也可以用戶自定義版本號(hào)。在系統(tǒng)自己編號(hào)時(shí),如果項(xiàng)目中添加新文件,該文件不版本號(hào)碼的第一自己編號(hào)時(shí),如果項(xiàng)目中添加新文件,該文件不版本號(hào)碼的第一位與本目錄下版本號(hào)碼最高的文件第一位相同,第二位是位與本目錄下版本號(hào)碼最高的文件第一位相同,第二位是1 1。
37、如,。如,一個(gè)目錄下有三個(gè)文件其版本號(hào)為一個(gè)目錄下有三個(gè)文件其版本號(hào)為1.51.5、2.82.8、5.145.14,那么新添加,那么新添加的文件版本號(hào)應(yīng)該是的文件版本號(hào)應(yīng)該是5.15.1。如果用戶自己給某個(gè)版本編號(hào),則這。如果用戶自己給某個(gè)版本編號(hào),則這個(gè)版本編號(hào)必須大于項(xiàng)目中的所有文件的版本號(hào)。個(gè)版本編號(hào)必須大于項(xiàng)目中的所有文件的版本號(hào)。1.6.2 1.6.2 版本標(biāo)簽(版本標(biāo)簽(tagtag) 版本標(biāo)簽是符號(hào)化的版本號(hào)碼,具有直觀、易于記憶和管理的優(yōu)版本標(biāo)簽是符號(hào)化的版本號(hào)碼,具有直觀、易于記憶和管理的優(yōu)點(diǎn)。用于階段式(里程碑)的版本標(biāo)記。是連接項(xiàng)目中不同文件點(diǎn)。用于階段式(里程碑)的版本
38、標(biāo)記。是連接項(xiàng)目中不同文件不同版本的手段。不同版本的手段。 例子:通過(guò)例子:通過(guò)WinCVSWinCVS展示版本標(biāo)簽展示版本標(biāo)簽 標(biāo)簽的設(shè)定標(biāo)簽的設(shè)定 Du_cloudlinux test$ cvs tag rel_1_0_1 test.c Du_cloudlinux test$ cvs tag rel_1_0_1 test.c注意:很少給單個(gè)文件設(shè)標(biāo)簽。注意:很少給單個(gè)文件設(shè)標(biāo)簽。給目錄下所有文件貼標(biāo)簽:給目錄下所有文件貼標(biāo)簽:Du_cloudlinux test$ cvs tag baseline_1Du_cloudlinux test$ cvs tag baseline_1 標(biāo)簽的刪除、
39、重命名和移動(dòng)標(biāo)簽的刪除、重命名和移動(dòng)刪除:刪除:Du_cloudlinux test$ cvs tag d baseline_1Du_cloudlinux test$ cvs tag d baseline_1重命名:重命名:Du_cloudlinux test$ cvs tag r baseline_1 baseline_2Du_cloudlinux test$ cvs tag r baseline_1 baseline_2Du_cloudlinux test$ cvs tag d baseline_1Du_cloudlinux test$ cvs tag d baseline_1移動(dòng):移動(dòng):
40、Du_cloudlinux test$ cvs tag r 1.6 F baseline_1 Du_cloudlinux test$ cvs tag r 1.6 F baseline_1 test.ctest.c我們將我們將test.ctest.c的標(biāo)簽從舊版本的標(biāo)簽從舊版本1.51.5移到新版本移到新版本1.61.6上。上。 標(biāo)簽的命名標(biāo)簽的命名baseline_1-20030623baseline_1-20030623Release-20030522Release-20030522Nightly-20030321Nightly-20030321等。等。標(biāo)簽的查看標(biāo)簽的查看 Du_cloud
41、linux test$ cvs status v test.c Du_cloudlinux test$ cvs status v test.c Du_cloudlinux test$ cvs status v Du_cloudlinux test$ cvs status v確定標(biāo)簽要貼的位置確定標(biāo)簽要貼的位置 Du_cloudlinux test$ cvs tag c baseline_1 Du_cloudlinux test$ cvs tag c baseline_1貼標(biāo)簽時(shí)注意不要遺忘已經(jīng)修改但沒(méi)有提交的文件。貼標(biāo)簽時(shí)注意不要遺忘已經(jīng)修改但沒(méi)有提交的文件。按約定貼標(biāo)簽(倉(cāng)庫(kù)中直接給模塊加標(biāo)
42、簽)按約定貼標(biāo)簽(倉(cāng)庫(kù)中直接給模塊加標(biāo)簽) 按日期貼標(biāo)簽按日期貼標(biāo)簽( (下例是將模塊下例是將模塊testtest的所有文件在的所有文件在2003062420030624號(hào)號(hào)0 0時(shí)時(shí)0 0分前提交的最后一個(gè)版本貼上標(biāo)簽:分前提交的最后一個(gè)版本貼上標(biāo)簽: Du_cloudlinux test$ cvs rtag D 20030624 Du_cloudlinux test$ cvs rtag D 20030624 nightly_20030624 testnightly_20030624 test 按版本號(hào)、已經(jīng)有的標(biāo)簽貼新標(biāo)簽按版本號(hào)、已經(jīng)有的標(biāo)簽貼新標(biāo)簽 Du_cloudlinux test
43、$ cvs rtag r nightly_20030624( Du_cloudlinux test$ cvs rtag r nightly_20030624(老老tagtag) rel_2_1 test( rel_2_1 test(貼新標(biāo)簽但貼新標(biāo)簽但testtest下新加程序不掛到標(biāo)簽上下新加程序不掛到標(biāo)簽上) ) Du_cloudlinux test$ cvs rtag f nightly_20030624 Du_cloudlinux test$ cvs rtag f nightly_20030624 test(test(將將testtest下新加的程序的最新版本強(qiáng)制的掛到下新加的程序的最
44、新版本強(qiáng)制的掛到nightly_20030624nightly_20030624上上) ) Du_cloudlinux test$ cvs rtag r 1.5 rel_2_1 test Du_cloudlinux test$ cvs rtag r 1.5 rel_2_1 test Du_cloudlinux test$ cvs rtag f 1.5 rel_2_1 test Du_cloudlinux test$ cvs rtag f 1.5 rel_2_1 test 附著性標(biāo)簽附著性標(biāo)簽 1) 1)引起附著性標(biāo)簽的命令有:引起附著性標(biāo)簽的命令有: cvs update r tag(cvs
45、update r tag(標(biāo)簽號(hào))標(biāo)簽號(hào))cvs update D datecvs update D date(更新到不晚于(更新到不晚于datedate的最新版本)的最新版本)cvs update r x.ycvs update r x.y(版本號(hào))(版本號(hào)) test.c test.ccvs checkout r tag(cvs checkout r tag(標(biāo)簽號(hào))標(biāo)簽號(hào))cvs checkout D date cvs checkout D date (datedate之前最近的版本)之前最近的版本)cvs checkout r x.y test.ccvs checkout r x.y
46、test.c2)2)附著性標(biāo)簽在版本分支中的使用:保持版本分支號(hào)與標(biāo)簽有直接附著性標(biāo)簽在版本分支中的使用:保持版本分支號(hào)與標(biāo)簽有直接的關(guān)系,也就是標(biāo)簽附著在分支號(hào)上。的關(guān)系,也就是標(biāo)簽附著在分支號(hào)上。3)3)保持某些文件的不改動(dòng):保持某些文件的不改動(dòng):只要對(duì)幾個(gè)文件執(zhí)行了只要對(duì)幾個(gè)文件執(zhí)行了cvs update r cvs update r 命令,如:命令,如:cvs update r cvs update r 1.28 ax.c1.28 ax.c則版本則版本1.281.28就會(huì)成為附著性標(biāo)簽,以后執(zhí)行就會(huì)成為附著性標(biāo)簽,以后執(zhí)行cvs cvs update update 命令時(shí)這個(gè)文件不會(huì)更
47、新,直到解除附著性為止。命令時(shí)這個(gè)文件不會(huì)更新,直到解除附著性為止。另外,還有另外,還有1 1)中的命令情況相同。)中的命令情況相同。4 4)解除附著性標(biāo)簽:)解除附著性標(biāo)簽:Du_cloudlinux test$ cvs update A test.cDu_cloudlinux test$ cvs update A test.c該命令解除附著性標(biāo)簽,將該命令解除附著性標(biāo)簽,將checkoutcheckout主干的最新版本并放本地。主干的最新版本并放本地。1.6.3 1.6.3 如何獲得某個(gè)特定的版本如何獲得某個(gè)特定的版本 根據(jù)版本號(hào)碼或版本標(biāo)簽獲得根據(jù)版本號(hào)碼或版本標(biāo)簽獲得 Du_cloud
48、linux test$ cvs update r 1.1 test.c Du_cloudlinux test$ cvs update r 1.1 test.c 獲得某一版本標(biāo)簽的整個(gè)軟件的源代碼:獲得某一版本標(biāo)簽的整個(gè)軟件的源代碼: Du_cloudlinux test$ cvs checkout r baseline_1 test Du_cloudlinux test$ cvs checkout r baseline_1 test或者跳轉(zhuǎn)到某個(gè)版本標(biāo)簽的版本(已經(jīng)有工作拷貝的情況下)或者跳轉(zhuǎn)到某個(gè)版本標(biāo)簽的版本(已經(jīng)有工作拷貝的情況下)Du_cloudlinux test$ cvs upda
49、te r baseline_1Du_cloudlinux test$ cvs update r baseline_1 根據(jù)時(shí)間獲得特定版本(更新到不晚于根據(jù)時(shí)間獲得特定版本(更新到不晚于datedate的最新版本)的最新版本) Du_cloudlinux test$ cvs update D “2002-05-08” Du_cloudlinux test$ cvs update D “2002-05-08” Du_cloudlinux test$ cvs update D “2002-05-08 Du_cloudlinux test$ cvs update D “2002-05-08 23:5
50、9:59”23:59:59”Du_cloudlinux test$ cvs update D “2002-05-09”Du_cloudlinux test$ cvs update D “2002-05-09”Du_cloudlinux test$ cvs update D “2002-05-08 23:59:59 Du_cloudlinux test$ cvs update D “2002-05-08 23:59:59 GMT”GMT”(讓用戶使用(讓用戶使用GMTGMT時(shí)間)時(shí)間)如果要取回舊版本修改,而不是基于最新版本,修改后提交形成最如果要取回舊版本修改,而不是基于最新版本,修改后提交形
51、成最新版本,方法有三:新版本,方法有三:1 1)逐個(gè)文件處理:)逐個(gè)文件處理:Du_cloudlinux test$ cvs update p D “2003-05-18 Du_cloudlinux test$ cvs update p D “2003-05-18 test.c test.ctest.c test.c方法二:一次性處理所有文件方法二:一次性處理所有文件Du_cloudlinux test$ cvs update ADu_cloudlinux test$ cvs update ADu_cloudlinux test$ cvs export D “2003-05-18” testD
52、u_cloudlinux test$ cvs export D “2003-05-18” testDu_cloudlinux test$ cp r test /home/du_cloudDu_cloudlinux test$ cp r test /home/du_cloud* *將將test.ctest.c的的baseline_1baseline_1標(biāo)簽移動(dòng)從舊版本標(biāo)簽移動(dòng)從舊版本1.51.5到新版本到新版本1.61.6上:上:cvs tag r 1.6 F baseline_1 test.ccvs tag r 1.6 F baseline_1 test.c1.6.4 1.6.4 版本分支版本
53、分支Du_cloudlinux test$ cvs co d test_brh r base_1 testDu_cloudlinux test$ cvs co d test_brh r base_1 testDu_cloudlinux test_brh$ cvs tag b base_1_brhDu_cloudlinux test_brh$ cvs tag b base_1_brhDu_cloudlinux test_brh$ cvs up r base_1_brh(Du_cloudlinux test_brh$ cvs up r base_1_brh(可以在分支中修改可以在分支中修改程序如:
54、程序如:test.ctest.c)Du_cloudlinux test_brh$ cvs ci m “fixed bug no 111” Du_cloudlinux test_brh$ cvs ci m “fixed bug no 111” test.c(test.c(提交到分支上)提交到分支上)Du_cloudlinux test$ cvs up j base_1_brh(Du_cloudlinux test$ cvs up j base_1_brh(分支版本合并到主干版分支版本合并到主干版本中)本中)Du_cloudlinux test$ cvs ci m “merged from bra
55、nch:base_1_brh”Du_cloudlinux test$ cvs ci m “merged from branch:base_1_brh”CvsCvs輸出(輸出(export)-export)-發(fā)布代碼發(fā)布代碼( (去出沒(méi)有去出沒(méi)有CVSCVS痕跡的代碼)痕跡的代碼)cvs export r rel_1cvs export r rel_1(主干上(主干上tagtag號(hào))號(hào)) d test_release1 test d test_release1 testcvs export r brh_tag_brh(cvs export r brh_tag_brh(分支名稱分支名稱) d sh
56、anghai_release test) d shanghai_release testDu_cloudlinux test$ tar cvf test_release1.tar test_release1Du_cloudlinux test$ tar cvf test_release1.tar test_release1Du_cloudlinux test$ gzip test_release1.tarDu_cloudlinux test$ gzip test_release1.tar1.6.5 cvs1.6.5 cvs與二進(jìn)制文件與二進(jìn)制文件重要的二進(jìn)制文件也需要進(jìn)行版本管理。如:重要的二
57、進(jìn)制文件也需要進(jìn)行版本管理。如:webweb應(yīng)用的大量圖片、控件、應(yīng)用的大量圖片、控件、動(dòng)態(tài)連接庫(kù)、動(dòng)態(tài)連接庫(kù)、unixunix不同操作系統(tǒng)下的編譯器、函數(shù)庫(kù)等等。不同操作系統(tǒng)下的編譯器、函數(shù)庫(kù)等等。CVSCVS在處理文本類型的文件,包括各種源代碼文件、在處理文本類型的文件,包括各種源代碼文件、HTMLHTML、XMLXML文件等。文件等。CVSCVS對(duì)文本類型的文件進(jìn)行版本管理時(shí),會(huì)對(duì)文件做一些秘密的處理,在對(duì)文本類型的文件進(jìn)行版本管理時(shí),會(huì)對(duì)文件做一些秘密的處理,在客戶端和客戶端和UNIXUNIX倉(cāng)庫(kù)之間,倉(cāng)庫(kù)之間,CVSCVS會(huì)自動(dòng)進(jìn)行回車、換行替換和關(guān)鍵字?jǐn)U展處會(huì)自動(dòng)進(jìn)行回車、換行替換
58、和關(guān)鍵字?jǐn)U展處理。理。CVSCVS對(duì)二進(jìn)制文件管理的不好,和對(duì)二進(jìn)制文件管理的不好,和ClearCaseClearCase相比,相比,ClearCaseClearCase具有文件類型,具有文件類型,可以進(jìn)行二進(jìn)制文件的比較,但是可以進(jìn)行二進(jìn)制文件的比較,但是ClearCaseClearCase也要盡量避免二進(jìn)制文件的分也要盡量避免二進(jìn)制文件的分支和合并。支和合并。CVSCVS無(wú)法進(jìn)行二進(jìn)制文件的合并和分支,不過(guò)在實(shí)際應(yīng)用中二進(jìn)無(wú)法進(jìn)行二進(jìn)制文件的合并和分支,不過(guò)在實(shí)際應(yīng)用中二進(jìn)制文件的合并和分支是沒(méi)意義的。制文件的合并和分支是沒(méi)意義的。CVSCVS對(duì)二進(jìn)制文件的管理和保存:對(duì)二進(jìn)制文件的管理和
59、保存: 1 1)在)在CVSCVS系統(tǒng)中保存二進(jìn)制文件,應(yīng)該使用系統(tǒng)中保存二進(jìn)制文件,應(yīng)該使用“-kb”“-kb”選項(xiàng)來(lái)禁止選項(xiàng)來(lái)禁止CVSCVS對(duì)文件對(duì)文件進(jìn)行回車、換行替換和關(guān)鍵字?jǐn)U展的加工。這個(gè)選項(xiàng)只需要在進(jìn)行回車、換行替換和關(guān)鍵字?jǐn)U展的加工。這個(gè)選項(xiàng)只需要在cvs add cvs add 命命令中使用,本選項(xiàng)是一個(gè)附著性選項(xiàng)(如果沒(méi)有附著性每次執(zhí)行令中使用,本選項(xiàng)是一個(gè)附著性選項(xiàng)(如果沒(méi)有附著性每次執(zhí)行cvscvs命令時(shí)命令時(shí)都需要這個(gè)選項(xiàng))。都需要這個(gè)選項(xiàng))。 如:如:cvs add kb binfilecvs add kb binfile cvs commit m “added b
60、infile” binfile cvs commit m “added binfile” binfile 注意:二進(jìn)制文件是原封不動(dòng)的保存在倉(cāng)庫(kù)中,不能按照增量方式保存兩注意:二進(jìn)制文件是原封不動(dòng)的保存在倉(cāng)庫(kù)中,不能按照增量方式保存兩個(gè)版本的差異,而是累加。個(gè)版本的差異,而是累加。 2 2)恢復(fù)二進(jìn)制版本,如果忘記使用)恢復(fù)二進(jìn)制版本,如果忘記使用“-kb”“-kb”選項(xiàng),添加了二進(jìn)制文件并提選項(xiàng),添加了二進(jìn)制文件并提交了倉(cāng)庫(kù),庫(kù)在交了倉(cāng)庫(kù),庫(kù)在UNIX/LinuxUNIX/Linux平臺(tái)上可以通過(guò)以下命令恢復(fù):平臺(tái)上可以通過(guò)以下命令恢復(fù): cvs admin kb binfile cvs a
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高中化學(xué)新教材同步 必修第一冊(cè) 第3章 第2節(jié) 實(shí)驗(yàn)活動(dòng)2 鐵及其化合物的性質(zhì)
- 【四川卷】四川省德陽(yáng)市高中2022級(jí)(2025屆)高三質(zhì)量監(jiān)測(cè)考試(二)(德陽(yáng)二診)(2.21-2.23)英語(yǔ)試卷答案
- 傾廢航行數(shù)據(jù)記錄儀戰(zhàn)略市場(chǎng)規(guī)劃報(bào)告
- 鎳精礦戰(zhàn)略市場(chǎng)規(guī)劃報(bào)告
- 信鴿教練合同范本
- 加盟 轉(zhuǎn)讓合同范本
- 值守合同范本
- 中國(guó)學(xué)生發(fā)展核心素養(yǎng)心得體會(huì)
- 臺(tái)車出售合同范本
- 水利工程師水力學(xué)試題(附參考答案)
- 2025年湖北省技能高考(建筑技術(shù)類)《建筑工程測(cè)量》模擬練習(xí)試題庫(kù)(含答案)
- 2023年中國(guó)綜合社會(huì)調(diào)查調(diào)查手冊(cè)
- 2024-2027年中國(guó)網(wǎng)絡(luò)安全評(píng)估行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略研究報(bào)告
- 失智老年人照護(hù)X證書(shū)制度試點(diǎn)工作養(yǎng)老護(hù)理職業(yè)和失智老人照護(hù)員工種的發(fā)展講解
- 2025年湖南食品藥品職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年安徽職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 新種子法律法規(guī)培訓(xùn)講解
- 2025年?yáng)|營(yíng)科技職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 2025-2030年中國(guó)民用通信天線行業(yè)發(fā)展趨勢(shì)規(guī)劃研究報(bào)告
- 2025年計(jì)算機(jī)二級(jí)考試題庫(kù)350題含答案(WPS)
- 浙江省金華市婺城區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末數(shù)學(xué)試卷(含答案)
評(píng)論
0/150
提交評(píng)論