cvs操作手冊專業(yè)知識講座_第1頁
cvs操作手冊專業(yè)知識講座_第2頁
cvs操作手冊專業(yè)知識講座_第3頁
cvs操作手冊專業(yè)知識講座_第4頁
cvs操作手冊專業(yè)知識講座_第5頁
已閱讀5頁,還剩128頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

AKA講座CVS協(xié)同開發(fā)工具主講人:楊錦方jinfang@yahoo.comhttp://www.AKA.Org.cn1(c)2023,楊錦方,版權所有。第1頁CVS教程楊錦方jinfang@2023年4月2(c)2023,楊錦方,版權所有。第2頁版權申明?2023,楊錦方,版權所有。你能夠遵循GNUFreeDocumentationLicense拷貝、分發(fā)和修改本文檔,不過所有拷貝、分發(fā)和修改版本都必須包括以上版權申明。3(c)2023,楊錦方,版權所有。第3頁CVS是什么?ConcurrentVersionsSystem,強大復雜當代版本控制系統(tǒng),計算機輔助軟件工程關鍵工具。開放源代碼組織使用標準版本控制系統(tǒng),全球中小型軟件公司中廣為使用。風靡全球Linux操作系統(tǒng)就是在大型分布式CVS系統(tǒng)上開發(fā)成功。4(c)2023,楊錦方,版權所有。第4頁為何要使用CVS軟件工程利器--保護軟件資源小組開發(fā)必備工具幫助發(fā)覺極為隱秘bug具有高價值5(c)2023,楊錦方,版權所有。第5頁軟件工程利器-保護軟件資源保存源代碼所有歷史、保存編譯、運行環(huán)境、系統(tǒng)數(shù)據(jù)、測試系統(tǒng)、軟件文檔所有版本。幫助開發(fā)者管理所有版本,極大提升效率,節(jié)省成本。6(c)2023,楊錦方,版權所有。第6頁小組開發(fā)必備工具小組分工開發(fā)時有效隔離各開發(fā)者工作,各分支完成后進行合并,消除干擾。高效多分支并行開發(fā)提供多種途徑幫助小組組員之間版本同步、開發(fā)通信,輔助處理代碼沖突,大大提升協(xié)作效率。7(c)2023,楊錦方,版權所有。第7頁幫助發(fā)覺極為隱秘bug有bug在被引入之后很長時間之內(nèi)潛伏,出現(xiàn)之后很難找出是什么原因引發(fā)bug。版本管理統(tǒng)計著所有版次變動。通過對不一樣版本比較,開發(fā)者能較方便地找出是哪一次變動引發(fā)bug。8(c)2023,楊錦方,版權所有。第8頁具有高價值全球最著名軟件工程軟件提供商RationalSoftwareClearCase是CVS替代產(chǎn)品,比CVS稍有增強ClearCase非常昂貴,客戶端$3000/license,尚有昂貴培訓、支持盡管昂貴,ClearCase仍是Rational公司最暢銷軟件之一9(c)2023,楊錦方,版權所有。第9頁第一課:CVS入門之旅登錄CVS服務器登出源代碼查看并修改源代碼查看差異清除登出代碼10(c)2023,楊錦方,版權所有。第10頁登錄CVS服務器cvs-d:pserver:cvsuser@7:/src/masterlogin

password:cvsuser11(c)2023,楊錦方,版權所有。第11頁登出源代碼cvs-d:pserver:cvsuser@7:/src/mastercheckouthelloCVS

cvscheckout:updatinghelloCVS

UhelloCVS/makefile

UhelloCVS/helloCVS.c

UhelloCVS/helloCVS.h12(c)2023,楊錦方,版權所有。第12頁查看并修改源代碼進入源代碼目錄cdhelloCVS查看helloCVS.c#include<stdio.h>

intmain(intargc,char*argv[])

{

return0;

}編輯helloCVS.c,在第四行后插入一行printf(“hello,CVS!”);13(c)2023,楊錦方,版權所有。第13頁登入(checkin)修改cvscommithelloCVS.ccvs將啟動缺省文本編輯器,要求輸入注釋,然后輸出:

CheckinginhelloCVS.c;

/src/master/project/helloCVS/helloCVS,v<--helloCVS.c

newrevision:1.2;previousrevision:1.1

done14(c)2023,楊錦方,版權所有。第14頁查看差異cvsdiff-r1.1helloCVS.c

index:helloCVS.c

==================================

RCSfile:/src/master/project/helloCVS/helloCVS.c,v

retrievingrevision1.1

retrievingrevision1.2

diff-r1.1-r1.2

4a5

>printf("hello,CVS!\n");15(c)2023,楊錦方,版權所有。第15頁清除代碼cvsrelease-dhelloCVS

Youhave[0]alteredfilesinthisrepository.

Areyousureyouwanttorelease(anddelete)directory`acct':16(c)2023,楊錦方,版權所有。第16頁作業(yè)一:入門練習從開放源代碼CVS服務器......登出流行bug-tracking軟件gnats所有源代碼,以匿名方式登入17(c)2023,楊錦方,版權所有。第17頁第二課:CVS倉庫什么是CVS倉庫CVS倉庫client/server構造倉庫內(nèi)容-文獻版本構造樹新倉庫對服務器要求創(chuàng)建新倉庫18(c)2023,楊錦方,版權所有。第18頁CVS倉庫倉庫備份倉庫移動倉庫指定共享網(wǎng)絡倉庫在windows上使用CVSclient19(c)2023,楊錦方,版權所有。第19頁什么是CVS倉庫CVS系統(tǒng)用于保存源代碼等軟件資源內(nèi)部數(shù)據(jù)庫。與顧客工作拷貝獨立。顧客一切修改登入后都保存在其中。顧客能夠從中登出任何一種歷史版本進行修改。20(c)2023,楊錦方,版權所有。第20頁CVS倉庫client/server構造管理員建立、維護server。保存著CVS倉庫、CVS配備文獻。能夠從它所在網(wǎng)絡中任何一種終端訪問。顧客使用client與server交互操作。運行平臺無須與server相同。有嚴格授權機制。21(c)2023,楊錦方,版權所有。第21頁倉庫內(nèi)容-文獻版本構造樹即版本實體,是貯存在CVS倉庫中不一樣版本組成構造樹。版本之間有派生關系,CVS只存放不一樣版本之間改動,節(jié)省大量空間。每個文獻有自己版本實體。不一樣文獻版本實體不一定相同。1.01.11.2REL_1_01.1bug_fixfoo.c22(c)2023,楊錦方,版權所有。第22頁新倉庫對服務器要求選擇服務器和硬盤用于寄存新倉庫CVS對CPU和內(nèi)存要求極低硬盤空間要求大約是最后代碼大小3倍假如需要網(wǎng)絡CVS訪問,服務器必須能夠從其他網(wǎng)絡終端訪問到23(c)2023,楊錦方,版權所有。第23頁創(chuàng)建新倉庫cvsinit如下命令用于在/src/master目錄下創(chuàng)建空新倉庫cvs-d/src/masterinitcvsinit永遠不會覆蓋任何現(xiàn)存文獻,在已經(jīng)存在倉庫上運行它不會造成任何后果24(c)2023,楊錦方,版權所有。第24頁倉庫備份猶如備份一組目錄、文獻同樣簡單易行與備份一般文獻不一樣是,備份操作前后及過程中CVS不能運行,可采取下列之一備份過程中不使用CVS嚴禁登錄CVS服務器,或關閉CVS服務器讓備份程序鎖住CVS在每個倉庫目錄下創(chuàng)建‘#cvs.rfl’鎖文獻25(c)2023,楊錦方,版權所有。第25頁倉庫移動與備份倉庫類似,需要嚴禁CVS使用其他與移動一組目錄、文獻類似主要問題是顧客工作目錄指向本來倉庫,需要更新確認所有修改都已經(jīng)登入倉庫創(chuàng)建新工作目錄,重新設定$CVSROOT值,登出一份新工作拷貝刪除原有所有工作目錄26(c)2023,楊錦方,版權所有。第26頁倉庫指定使用client時需要指定倉庫。倉庫能夠是本地,也能夠是網(wǎng)絡上。指定倉庫能夠設定環(huán)境變量或者在命令行參數(shù)中指定。27(c)2023,楊錦方,版權所有。第27頁本地倉庫指定命令行:

cvs-d/src/master...設置環(huán)境變量:UNIXcsh:setenvCVSROOT/src/masterUNIXsh/bash:exportCVSROOT=/src/masterwindows:setCVSROOT=\src\master28(c)2023,楊錦方,版權所有。第28頁網(wǎng)絡倉庫指定命令行:

cvs-d:pserver:cvsuser@7:/src/master...設置環(huán)境變量:UNIXcsh:setenvCVSROOT:pserver:cvsuser@7:/src/masterUNIXsh/bash:exportCVSROOT=:pserver:cvsuser@7:/src/masterwindows:setCVSROOT=:pserver:cvsuser@7:/src/master29(c)2023,楊錦方,版權所有。第29頁共享網(wǎng)絡倉庫在Windows上開發(fā)時,在Unix/Linux上安裝CVSserver,在Windows上運行client。開發(fā)者無論身在何處,都能夠登出源代碼,進行開發(fā)。數(shù)千名Linux開發(fā)者正是采取這種方式進行分布式開發(fā)。30(c)2023,楊錦方,版權所有。第30頁在windows上使用CVS客戶端在客戶端上需要先登錄:cvs-d:pserver:user@:/src/masterlogin顧客將被提醒輸入口令,輸入unix口令即可。然后,再進行其他CVS操作,例如登出:cvs-d:pserver:user@:/src/mastercheckouthelloCVS31(c)2023,楊錦方,版權所有。第31頁作業(yè)二:創(chuàng)建倉庫32(c)2023,楊錦方,版權所有。第32頁從本地和網(wǎng)絡訪問倉庫在服務器上自己$HOME目錄下,登出新建倉庫中源代碼在一臺windows客戶機上,登出新建倉庫中源代碼33(c)2023,楊錦方,版權所有。第33頁第三課:啟動一種新項目將外部項目引入CVS創(chuàng)建全新項目在項目中添加新目錄和文獻CVS模塊定義模塊步驟34(c)2023,楊錦方,版權所有。第34頁將外部項目引入CVS進入外部項目所在第一級目錄,用cvsimport命令將該項目引入CVS。cvsimportacctmy_comREL_1_0把該目錄下所有子目錄和文獻放到$CVSROOT/acct,并以REL_1_0為版本號,以my_com為開發(fā)商名。35(c)2023,楊錦方,版權所有。第35頁創(chuàng)建全新項目假如沒有任何源文獻,創(chuàng)建一種目錄,并加入cvs中。然后在該目錄下創(chuàng)建文獻。mkdiracct-創(chuàng)建目錄cdsrc;touchacctd.ctransc.cusradmin.c-創(chuàng)建三個文獻cvsimportacctmy_comSTART36(c)2023,楊錦方,版權所有。第36頁在項目中添加新目錄和文獻在項目工作目錄下創(chuàng)建此目錄或文件,用cvsadd通知CVS準備加入文件。如:cvsaddlog.c

CVSadd:schedulingfile`log.c'foraddition

CVSadd:use’cvscommit'toaddthesefilespermanently37(c)2023,楊錦方,版權所有。第37頁執(zhí)行添加操作然后,用cvscommit執(zhí)行添加操作,如:cvscommit-m“newlyadded”log.c

RCSfile:/src/master/project/acct/log.c,v

done

checkinginlog.c;

/src/master/project/log.c,v<--acctd.c

initialrevision:1.1

done38(c)2023,楊錦方,版權所有。第38頁CVS模塊CVS支持在邏輯上把一組目錄、文獻組成一種項目,用一種模塊來定義它。模塊能夠包括子模塊。模塊概念大大方便了項目管理,開發(fā)管理者能夠?qū)錉顦嬙祉椖拷M織對應到模塊構造樹。39(c)2023,楊錦方,版權所有。第39頁定義模塊步驟第一步,登出modules文獻

cvscheckoutCVSROOT/modules

Ucvsroot/modules40(c)2023,楊錦方,版權所有。第40頁模塊定義第二步,在‘modules’文獻中加入模塊定義。其格式如下:

module-name[options]dir[files...]module-name:顧客命名模塊名dir:模塊在CVS倉庫中相對于$CVSROOT途徑如下定義將在/src/master/project/acct目錄下建立一種名為acct模塊。

‘a(chǎn)cct project/acct’41(c)2023,楊錦方,版權所有。第41頁登入模塊定義第三步,登入模塊定義cvscommitmodules

checkinginmodules;

/src/master/cvsroot/modules,v<--modules

newrevision:1.1;done

CVScommit:rebuildingadministrativefiledatabase42(c)2023,楊錦方,版權所有。第42頁作業(yè)三:創(chuàng)建新項目在43(c)2023,楊錦方,版權所有。第43頁第四課:版本什么是版本版本編號版本標簽標簽設定與查看CVS標識何處文獻指定標志何版文獻里程碑版本設定44(c)2023,楊錦方,版權所有。第44頁版本版本分支與合并為何需要版本分支版本分支與版本號創(chuàng)建版本分支訪問版本分支版本分支合并45(c)2023,楊錦方,版權所有。第45頁什么是版本根據(jù)韋氏詞典定義,原型變型稱作版(version)。通過修改版稱作版本(revision)。文獻或者目錄通過修改形成新版本。46(c)2023,楊錦方,版權所有。第46頁版本編號為方便版本識別和管理,要對版本編號版本編號分為系統(tǒng)編號和顧客編號系統(tǒng)編號是CVS自動給版本編號碼。CVS自動管理系統(tǒng)編號。單分支版本演化以1.0->1.1->1.2-...方式次序進行。顧客編號是顧客為了自己控制版本號碼,或者統(tǒng)一版本號碼,而對某一版本指定編號。47(c)2023,楊錦方,版權所有。第47頁版本編號值系統(tǒng)編號。向項目添加新文獻時,其版本號第一位同本目錄最高版本第一位,第二位是1如一種目錄下三個文獻版本號分別為1.5,2.8,4.11,則新文獻版本號為4.1。顧客編號。例如下述命令將所有源文獻統(tǒng)一為5.0版本。cvscommit-r5.0指定版本號必須大于所有目前版本號。48(c)2023,楊錦方,版權所有。第48頁版本標簽版本標簽是符號化版本號碼,它直觀、易于記憶和管理。版本標簽大量用于主要里程碑式版本標識。例如alpha初始調(diào)試版、beta調(diào)試版、release公布版等。在開發(fā)過程中設定里程碑是軟件工程管理主要伎倆。版本標簽是主要工具。49(c)2023,楊錦方,版權所有。第49頁版本標簽設定用tag命令給文獻目前工作版本一種標簽如下命令將文獻acctd.c目前工作版本指定為REL_0_4版cvstagREL_0_4acctd.c

Tacctd.c注意,很少有人會單獨給一種文獻指定一種版本標簽50(c)2023,楊錦方,版權所有。第50頁版本標簽查看cvsstatus-vacctd.c

==================================file:acctd.cstatus:up-to-date

.......

existingtags:

REL_0_4(revision:1.1)51(c)2023,楊錦方,版權所有。第51頁里程碑版本標簽設定在項目通過一定標準測試之后,能夠設定特定里程碑版本標簽。如下命令標識目前對應倉庫中版本為alpha1.0cvstagALPHA_1_0

CVStag:tagging.

Tacctd.c

Tlog.c

Ttransc.c

Tusradmin.c

52(c)2023,楊錦方,版權所有。第52頁CVS標識何處文獻指定標識目錄中文獻注意,cvstag操作發(fā)生在倉庫中被登出版本,而不是在目前工作目錄中工作版本。能夠使用如下命令,讓cvs在二者發(fā)生不一致時告警。cvstag-cREL_1_0

cvstag:Makefileislocallymodified

cvs[tagaborted]:correcttheaboveerrorsfirst!53(c)2023,楊錦方,版權所有。第53頁指定標識何版文獻按照日期或者版本號來標識cvsrtag-Ddate選項標識在該日期之前近來版本。-Rtag標識具有tag版本標簽文獻-F只與上述兩個選項配合使用,讓CVS在找不到匹配版本時,不是忽視某文獻而是使用該文獻在倉庫中最新版本。54(c)2023,楊錦方,版權所有。第54頁rtag標簽例子cvsrtag-D20010410BETA_2_1acct以上命令將acct模塊中所有文獻在截至2023年4月10日最新版本標識為BETA_2_1。55(c)2023,楊錦方,版權所有。第55頁什么是版本分支版本分支是顧客在一種主要版本序列上導出一種輔助版本序列分支版本與主版本序列并存,能夠進行并行開發(fā)假如需要,分支版本能夠合并到主版本中56(c)2023,楊錦方,版權所有。第56頁一般情況下,文獻版本號線性增加。在多分支情況下,文獻版本號組成一種版本樹:版本分支與版本號1.11.21.31.4分支1.2.41.11.21.31.41.5分支1.2.2分支.2.2.157(c)2023,楊錦方,版權所有。第57頁為何要用版本分支?構想1.0公布版已經(jīng)上市,1.5版正在開發(fā)。突然客戶抱怨1.0發(fā)行版中一種致命錯誤。開發(fā)小組登出1.0發(fā)行版找出這個bug,并且找到了修補措施。1.5開發(fā)版正在調(diào)試,短時間內(nèi)主線不也許公布修正這個bug1.5公布版。怎么辦?在1.0發(fā)行版基礎上分出1.0fix版,修補bug,公布1.0補丁版。并合并到1.5開發(fā)版。58(c)2023,楊錦方,版權所有。第58頁為何需要版本分支又如,公司需要開發(fā)5個不一樣UNIX平臺上產(chǎn)品。這5個產(chǎn)品共同部分已經(jīng)完成,余下產(chǎn)品特性在各平臺有所差異。可分出5個版本分支,獨立并行開發(fā)。59(c)2023,楊錦方,版權所有。第59頁為何需要版本分支又如,公司產(chǎn)品需要對6個大客戶進行定制,他們需求各有不一樣。能夠在產(chǎn)品公布版上分出6個版本分支,獨立并行開發(fā)。60(c)2023,楊錦方,版權所有。第60頁版本分支與合并工作流程登出一種版本創(chuàng)建一種分支分支版本與主分支版本并行開發(fā)版本分支中變化不會影響主版本合并主版本與分支版本61(c)2023,楊錦方,版權所有。第61頁創(chuàng)建一種分支登出一種版本后,用cvstag創(chuàng)建分支。如:cvsco-rREL_1_0acctcvstag-bREL_1_0_PATCHES

CVStag:tagging.

Tacctd.c

Tlog.c

Ttransc.c

Tusradmin.c

目前,這個分支中所有文獻與1.0發(fā)行版完全相同。注意:分支創(chuàng)建在倉庫中,不影響目前工作版本。62(c)2023,楊錦方,版權所有。第62頁直接創(chuàng)建分支使用cvsrtag命令,不參照任何版本拷貝,直接創(chuàng)建分支。cvsrtag-b-rREL_1_0REL_1_0_PATCHacct在acct模塊1.0發(fā)行版上創(chuàng)建分支。參數(shù)-rREL_1_0批示CVS將分支基于REL_1_0版本,而非目前最新版本。注意,在創(chuàng)建版本分支之后,并不能立即訪問使用版本分支,由于版本分支創(chuàng)建在CVS倉庫中,而非目前工作目錄。63(c)2023,楊錦方,版權所有。第63頁訪問版本分支創(chuàng)建一種新目錄,從倉庫中登出版本分支mkdirsrccvsco-rREL_1_0_PATCHESacct

CVScheckout:updatingacct

Uacct/acctd.c

Uacct/log.c

Uacct/transc.c

Uacct/usradmin.c64(c)2023,楊錦方,版權所有。第64頁訪問版本分支或者,從目前工作版本切換到分支版本,并且將目前工作版本中所作所有修改合并到分支版本:cvsupdate-rREL_2_0_PATCHacct,或者等價地:cdacct;cvsupdate-rREL_2_0_PATCH65(c)2023,楊錦方,版權所有。第65頁查看目前分支使用cvsstatus命令查看目前工作在哪個版本分支,看stickytag狀態(tài):cvsstatus-vacctd.c

=====================================file:acctd.cstatus:up-to-date

......

stickytag:REL_1_0_PATCHES(branch:.2)

stickydate:(none)

stickyoptions:(none)

......66(c)2023,楊錦方,版權所有。第66頁合并一種完整分支使用cvsupdate-jbranch合并分支將從分支基部到分支最新版本所作所有修改合并到工作版本中。例如:本來工作版本都被保存在以.#開頭文獻中,不會丟失。分支R1-PATCH1.11.21.31.41.567(c)2023,楊錦方,版權所有。第67頁合并分支例子假設目前工作版本是在主分支上,登出版本樹主分支上最新版本1.4cvscoacct把1.2到之間變動合并到工作拷貝中cvsupdate-jR1PATCH

CVSupdate:updating.

......

mergingdifferencesbetween1.4andintoacctd.c68(c)2023,楊錦方,版權所有。第68頁合并處理只要兩個新版本修改不沖突,合并版本就包括二者修改在不一樣位置添加,合并成果二者都被添加在不一樣位置刪除,合并成果中二者都被刪除在不一樣位置更改,合并成果將包括二者改動當兩種修改發(fā)生沖突,即二者修改了原版本中同一代碼時,合并成果將顯示這些沖突69(c)2023,楊錦方,版權所有。第69頁合并沖突例子版本1.4#include<stdio.h>voidmain(){parse();if(nerr==0)gencode();elsefprintf(stderr,“nocodegenerated\n”);exit(nerr==0?0:1);}版本1.6#include<stdio.h>intmain(intargc,char*argv[]){ parse();if(argc!=1){fprintf(stderr,“noargsexpected.\n”);exit(1);}if(nerr==0)gencode();elsefprintf(stderr,“nocodegenerated\n”);exit(!!nerr);}在1.4版基礎上目前修改版本#include<stdlib.h>#include<stdio.h>voidmain(){init_scanner();parse();if(nerr==0)gencode();elsefprintf(stderr,“nocodegenerated\n”);exit(nerr==0?EXIT_SUCCESS:EXIT_FAILURE);}70(c)2023,楊錦方,版權所有。第70頁合并后沖突顯示#include<stdlib.h>#include<stdio.h>intmain(intargc,char*argv[]){init_scanner();parse();if(argc!=1){fprintf(stderr,“noargsexpected.\n”);exit(1);}

if(nerr==0)gencode();elsefprintf(stderr,“nocodegenerated\n”);<<<<<<<driver.cexit(nerr==0?EXIT_SUCCESS:EXIT_FAILURE);=======exit(!!nerr);>>>>>>>1.6}71(c)2023,楊錦方,版權所有。第71頁第五課:添加、刪除、重命名添加文獻、目錄登出源代碼在登出源代碼目錄下創(chuàng)建這個文獻/目錄cvsaddfilename通知CVS準備添加cvscommitfilename執(zhí)行添加操作要添加多種文獻/目錄,只需羅列在命令之后,如:cvsaddfile1file2file372(c)2023,楊錦方,版權所有。第72頁刪除文獻刪除前應確認所有對文獻修改都已經(jīng)登入CVS倉庫。文獻刪除后,顧客仍然能夠從CVS倉庫中登出老版本。73(c)2023,楊錦方,版權所有。第73頁刪除文獻法一從工作目錄中刪除文獻,如:rmlog.c通知cvs準備刪除該文獻cvsremovelog.c

cvsremove:scheduling`log.c'forremoval

cvsremove:use'cvscommit'toremovethisfilepermanently從cvs倉庫中刪除文獻cvsci-m“removedfromproject”log.c74(c)2023,楊錦方,版權所有。第74頁刪除文獻法二讓CVS刪除工作目錄下文獻拷貝,并準備從倉庫中刪除cvsremove-flog.c

cvsremove:scheduling`log.c'forremoval

cvsremove:use'cvscommit'toremovethisfilepermanently從倉庫中刪除文獻cvsci-m“removedfromproject”log.c75(c)2023,楊錦方,版權所有。第75頁刪除目錄與文獻相同,目錄被刪除后,仍然能夠訪問到該目錄老版本。要刪除一種目錄,需要先刪除目錄中所有文獻,使該目錄成為一種空目錄。然后,運行cvsupdate-P讓CVS從倉庫中清除空目錄。cvsremove-f*.tclcvsci-m“removetestdir”cvsupdate-P76(c)2023,楊錦方,版權所有。第76頁訪問被刪除文獻、目錄從cvs倉庫中登出舊版本,例如1.1版。cvsupdate-r1.1log.c假如忘掉了文獻版本號,雖然這個文獻已不存在于目前工作目錄之中,仍能夠用log查看其歷史cvsloglog.c假如連文獻名都忘掉了,能夠用cvslog-R來查看所有文獻,包括曾被刪除文獻。77(c)2023,楊錦方,版權所有。第77頁移動、重命名文獻法一將工作目錄中舊文獻重命名為新文獻。mvoldnew通知cvs刪除舊文獻cvsremoveold通知cvs添加新文獻cvsaddnew從cvs倉庫中刪除舊文獻、添加新文獻cvsci-m“nameoldtonew”oldnew78(c)2023,楊錦方,版權所有。第78頁法一優(yōu)劣長處:簡單、不易犯錯缺陷:假如想查看完全歷史統(tǒng)計,必須記住兩個文獻名。79(c)2023,楊錦方,版權所有。第79頁移動、重命名文獻法二到cvs倉庫目錄下cd$CVSROOT/dir將舊文獻歷史紀錄更改為新文獻mvold,vnew,v80(c)2023,楊錦方,版權所有。第80頁法二優(yōu)劣好處:變化歷史紀錄不受影響版本號不受影響害處舊版本不能容易從倉庫中登出文獻何時更名沒有統(tǒng)計如重命名時有他人訪問這個歷史紀錄文獻,將造成不可預知后果。要確保沒有其他人運行CVS命令。81(c)2023,楊錦方,版權所有。第81頁第六課:查看歷史統(tǒng)計日記信息查看歷史統(tǒng)計顧客自定義日記使用annotate命令82(c)2023,楊錦方,版權所有。第82頁日記信息每次登入一種文獻時候,必須寫日記信息,不然CVS回絕登入。每個版本都有日記信息。顧客能夠訪問日記信息所有歷史統(tǒng)計。83(c)2023,楊錦方,版權所有。第83頁查看歷史統(tǒng)計查看日記信息使用cvslog命令。例如:查看acctd.c文獻所有日記:cvslogacctd.c查看acctd.c文獻1.2版日記:cvslog-r1.2acctd.c84(c)2023,楊錦方,版權所有。第84頁歷史統(tǒng)計例子cvslog-r1.2acctd.c

RCSfile:/src/master/project/acct/acctd.c,v

workingfile:acctd.c

......

revision1.2

date:2023/04/0814:50:53;author:jyang;state:exp;lines:+7-1

addmainfunction

=========================================85(c)2023,楊錦方,版權所有。第85頁顧客自定義日記顧客能夠讓CVS以多種方式統(tǒng)計種種動作。這一功能是通過在不一樣時候執(zhí)行腳本程序完成。腳本程序需要顧客自己編程完成。腳本程序能夠向日記文獻添加一條消息,向一組開發(fā)者發(fā)送電子郵件,向新聞組公布信息。86(c)2023,楊錦方,版權所有。第86頁顧客自定義日記統(tǒng)計登入動作,使用loginfo配備文獻分別統(tǒng)計登入、登出、輸出和版本標簽,在modules配備文獻中使用-i,-o,-e,-t選項更直接通知其他顧客辦法是cvswatchadd命令。87(c)2023,楊錦方,版權所有。第87頁顧客自定義日記taginfo配備文獻用于定義當有人執(zhí)行tag或者rtag命令時候要執(zhí)行程序。文獻格式為正規(guī)體現(xiàn)式后跟命令,傳給命令參數(shù)依次是標署名、動作、倉庫、文獻版本(假如有話)。88(c)2023,楊錦方,版權所有。第88頁顧客自定義日記例子taginfo文獻定義當有人運行tag或rtag時執(zhí)行命令。例如,在taginfo文獻中寫入:

ALL/src/master/CVSROOT/loggit

loggit腳本程序包括如下代碼:

#!/bin/sh

echo“$@”>>/home/jyang/src/acct/taglog89(c)2023,楊錦方,版權所有。第89頁使用annotate命令annotate命令可用于查看文獻每一行最后一次修改時間、修改者、添加/修改時文獻版本號。這個命令不報告哪些行被刪除或者替代行,這些內(nèi)容能夠用cvsdiff來看。90(c)2023,楊錦方,版權所有。第90頁annotate命令例子$cvsannotateacctd.cAnnotationsforacctd.c********************1.1(admin27-mar-99):#include<stdio.h>1.2(jyang28-mar-99):intmain(void){}在這個例子中,acctd.c目前包括兩行代碼,第一行由admin在3月27日登入,第二行由jyang在3月28日登入。91(c)2023,楊錦方,版權所有。第91頁第七課:處理二進制文獻CVS對文獻加工二進制文獻問題如何保存二進制文獻恢復辦法讓CVS識別二進制文獻cvswrappers配備文獻92(c)2023,楊錦方,版權所有。第92頁CVS對文獻加工CVS倉庫中使用UNIX文獻格式。假如客戶端是windows,CVS將進行回車換行與回車之間轉換。CVS要在文獻中搜尋關鍵字序列,并進行替代擴展。93(c)2023,楊錦方,版權所有。第93頁二進制文獻問題主要二進制文獻也需要進行版本管理,例如編譯器、運行環(huán)境、web圖片等。二進制文獻必須原封不動保存在CVS倉庫中。上片所述兩項轉換必須嚴禁。CVS無法完成二進制文獻版本比較,假如有,能夠使用外部工具。CVS無法完成二進制文獻版本合并。為此,應當避免版本分支。94(c)2023,楊錦方,版權所有。第94頁如何保存二進制文獻使用-kb選項來嚴禁CVS對文獻進行加工。如下命令將二進制文獻binfile加入倉庫:cvsadd-kbbinfilecvscommitbinfile95(c)2023,楊錦方,版權所有。第95頁恢復辦法假如意外忘掉使用-kb選項登入了一種二進制文獻,能夠使用如下辦法恢復。假如這個文獻是binfile。UNIXcvsadmin-kbbinfile,恢復倉庫中文獻cvsupdate-Abinfile,更新目前工作文獻WINDOWS,拷貝完好文獻到目前目錄,執(zhí)行cvsadmin-kbbinfilecvscommitbinfile96(c)2023,楊錦方,版權所有。第96頁讓CVS識別二進制文獻CVS能夠根據(jù)文獻名來識別哪些文獻是二進制文獻。例如.exe文獻。CVS無法根據(jù)文獻內(nèi)容識別二進制文獻。由cvswrappers配備文獻定義如何根據(jù)文獻名區(qū)分看待不一樣文獻。97(c)2023,楊錦方,版權所有。第97頁cvswrappers配備CVS允許顧客根據(jù)文獻名控制文獻處理配備。在cvswrappers文獻中定義。文獻格式如下:wildcard [optionval][optionval]...option能夠是-m更新方式val:MERGE/COPY-k關鍵詞擴展val:b/o/kkv/c例子:*.exe-k‘b’*.doc-m‘COPY’98(c)2023,楊錦方,版權所有。第98頁第九課:CVS與小組開發(fā)小組開發(fā)需要CVS協(xié)作中沖突文獻狀態(tài)沖突多人同步運行CVS協(xié)作中同步更新、合并文獻99(c)2023,楊錦方,版權所有。第99頁CVS與小組開發(fā)協(xié)作中通信監(jiān)視誰在修改文獻CVS通知查看誰在編輯文獻查看誰在監(jiān)視文獻編輯被監(jiān)視文獻100(c)2023,楊錦方,版權所有。第100頁CVS與小組開發(fā)協(xié)作中若干決策是否要鎖定登出選擇最合適登出約束方案何時登入101(c)2023,楊錦方,版權所有。第101頁小組開發(fā)需要CVS較大軟件項目都需要小組協(xié)作開發(fā)小組協(xié)作中同步、沖突處理、通信假如沒有輔助工具,團體效率將大打折扣CVS提供協(xié)作同步、沖突輔助處理、通信功能,大大提升團體效率。102(c)2023,楊錦方,版權所有。第102頁文獻狀態(tài)文獻被登出后,根據(jù)自己對文獻操作和其他人對文獻操作不一樣,文獻也許處于一系列不一樣狀態(tài)。cvsstatus命令報告文獻狀態(tài)。Up-to-date,與倉庫中最新版本一致Locallymodified,已修改但未登入倉庫Locallyadded,已用add加入但未登入倉庫Locallyremoved,已用remove刪除但未登入倉庫103(c)2023,楊錦方,版權所有。第103頁文獻狀態(tài)Needscheckout,有人修改,但你未登出Needspatch,與上面相同但CVS只發(fā)送補丁Needsmerge,他人登入新版本,你也做了修改Filehadconflictsonmerge,與上面相同,但上一種update命令產(chǎn)生過沖突Unknown(?),CVS對本文獻一無所知104(c)2023,楊錦方,版權所有。第104頁查看文獻狀態(tài)CVSstatus命令用于查看文獻狀態(tài)。命令報告workingrevision和repositoryrevision。前者是目前所登出版本,后者是目前倉庫中最新版本。105(c)2023,楊錦方,版權所有。第105頁查看文獻狀態(tài)如:cvsstatus-vlog.c

===============================================File:log.cStatus:Up-to-date

Workingrevision:1.1MonApr0910:49:302023

Repositoryrevision:1.2

src\master\project\acct\Attic\log.c,v

StickyTag:1.1

StickyDate:(none)

StickyOptions:(none)

ExistingTags:

R1_PATCH(revision:)

REL_1_0(revision:1.1)106(c)2023,楊錦方,版權所有。第106頁更新、合并文獻cvsupdate,這一命令取出cvs倉庫中最新版本合并到目前工作版本中。顧客對文獻改動永遠不會由于使用update命令而丟失。假如沒有更新版本,該命令無任何效果。假如該文獻已被修改,CVS將把所有改動合并到工作拷貝中。如:cvsupdateacctd.c107(c)2023,楊錦方,版權所有。第107頁多人同步運行cvs多人同步運行cvs時,只有一人能成功,其他人會得到類似如下消息:[10:23:50]waitingforzhaoxg’slockin/master/src/cvsroot/foocvs將每30秒再試,直到成功或被中斷。這是由于cvs要用鎖保護內(nèi)部數(shù)據(jù)。108(c)2023,楊錦方,版權所有。第108頁CVS異常鎖定假如CVS被鎖定不正常時間看看是誰在運行什么cvs命令,并讓他中斷。典型情況是有人在運行CVS命令后,正在寫log信息。如無人運行,到$CVSROOT/CVSROOT中,刪除以“#cvs.lock”,“#cvs.rfl”,“#cvs.wfl”為名字開始文獻。109(c)2023,楊錦方,版權所有。第109頁監(jiān)視誰在修改文獻為了更加好協(xié)調(diào)開發(fā)工作,開發(fā)者或管理者也許想懂得誰在對文獻進行操作。CVS提供監(jiān)視功能:cvswatchon[-lR]files...迫使顧客運行cvsedit后才能修改files。不要用操作系統(tǒng)命令來變更CVS文獻讀寫屬性假如參數(shù)files包括目錄名,CVS將監(jiān)視其中所有文獻。后來加到其中文獻也將被監(jiān)視。110(c)2023,楊錦方,版權所有。第110頁關閉監(jiān)視功能cvswatchoff[-lR]files登出時不生成只讀文獻,CVS不提醒使用cvsedit和cvsunedit命令。111(c)2023,楊錦方,版權所有。第111頁命令選項-l選項使命令只限于本目錄,不包括子目錄。-R選項覆蓋~/.cvsrc文獻中-l選項,使命令包括所有子目錄。112(c)2023,楊錦方,版權所有。第112頁祈求CVS通知CVS能通知顧客發(fā)生在文獻上多種操作cvswatchadd[-aaction][-lR]files...當有人操作文獻時,CVS查表決定通知哪些顧客。此命令將目前顧客加入文獻對應表中。-a選項取值:

edit/unedit/commit/all/none:對應cvsedit/unedit/commit等命令。113(c)2023,楊錦方,版權所有。第113頁取消通知祈求cvswatchremove[-aaction][-lR]files114(c)2023,楊錦方,版權所有。第114頁CVS通知操作假如有任何通知要求,cvs將調(diào)用配備文獻中notify文獻。它遵循配備文獻通用格式:由若干行

reg-exprcommand對組成。Command應包括%s變量,表達被通知顧客名。如:ALLmail%s-s“CVSnotification”使顧客得到電子郵件通知。CVS不通知本人115(c)2023,楊錦方,版權所有。第115頁將通知發(fā)往他處假如不配備,通知只發(fā)到CVS服務器所在機器上。假如想讓CVS發(fā)到其他地址,管理員需要在$CVSROOT下創(chuàng)建users文獻,其中每行是一種“user:value”對。如:

xiaozhao:xzhao@

xiaowang:xwang@

dali:dli@116(c)2023,楊錦方,版權所有。第116頁將登入通知他人顧客能夠配備CVS,讓CVS在自己登入時候?qū)⑦@個操作通知他人。modules文獻中-i選項定義源代碼被登入時被調(diào)用程序loginfo文獻用于控制cvscommit日記信息發(fā)送到何處117(c)2023,楊錦方,版權所有。第117頁通知配備modules文獻如下配備讓模塊acct每一次登入都觸發(fā)/usr/bin/inform.pl程序,參數(shù)為倉庫中被影響目錄途徑acct-i/usr/bin/inform.pl%sproject/acctloginfo配備見附錄118(c)2023,楊錦方,版權所有。第118頁編輯被監(jiān)視文獻被監(jiān)視文獻在登出時成為只讀文獻,無法直接編輯。要編輯這個文獻,用cvseditcvsedit[options]files...把文獻變成可讀寫,并通知那些祈求得到通知顧客使用與cvswatchadd相同參數(shù)本命令為監(jiān)視文獻顧客建立一種臨時監(jiān)視器,執(zhí)行unedit或者commit命令后,監(jiān)視器將被取消。119(c)2023,楊錦方,版權所有。第119頁放棄修改要放棄對文獻修改,使用cvsuneditcvsunedit[-lR]files放棄本文獻所作修改,回到修改前版本,把文獻變回為只讀狀態(tài)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論