您的位置:軟件測試 > 開源軟件測試 > 開源配置管理工具 > cvs
用CVS來管理自己的程序
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/2/17 16:10:58 ] 推薦標(biāo)簽:

  
  3.4 保存修改到CVS中
  
  現(xiàn)在,我們開始艱苦卓越的編程工作。經(jīng)過數(shù)十分鐘、數(shù)小時(shí)乃至數(shù)天的工作,我們對原有的代碼做了較大的修改,現(xiàn)在要告一段落了。我們將修改的內(nèi)容提交給CVS,于是,我們需要執(zhí)行命令
     cvs commit -m "Made some useful changes on some files"
  這時(shí),我們將會看到CVS給出一些提示信息,它掃描并比較此目錄下的現(xiàn)有文件和它在源碼庫中保存的原有文件,做了修改的文件將被更新,并且有了新的版本號:1.2。-m參數(shù)如同前面所說,是為了不想它啟動一個(gè)文本編輯器來讓自己輸入。如果我們僅是修改了其中一兩個(gè)文件,我們可以在上面的命令的后附上文件名,這樣CVS只會比較、更新指定的文件。注意的是,和自己做備份不同,CVS只是保存了不同版本之間的差異,并沒有完整的保存各個(gè)版本。現(xiàn)在,你是不是覺得CVS有點(diǎn)用處了。
  
  3.5 添加文件到項(xiàng)目中
  
  有,我們開始考慮給我們的網(wǎng)絡(luò)螞蟻加上從ftp站點(diǎn)下載文件的功能,于是,我們需要在原有的項(xiàng)目里添加兩個(gè)文件:ftp.c和ftp.h。首先,我們在工作目錄下建立并編輯、修改、生成了這兩個(gè)文件,然后我們使用命令add命令來添加。
     cvs add ftp.c ftp.h
  此時(shí),文件并沒有真正的被添加,只是相當(dāng)于"注冊"了一下,要使這個(gè)過程生效,我們?nèi)匀恍枰褂胏ommit命令:
     cvs commit ftp.c ftp.h -m "Add two files: ftp.c and ftp.h"
  此時(shí),CVS將把這兩個(gè)文件添加到項(xiàng)目中去,他們的版本均為初始的1.1。
  
  3.6 從項(xiàng)目中刪除文件
  
  除了添加以外,我們有的時(shí)候可能需要刪除某個(gè)文件,例如我們發(fā)現(xiàn)文件netants.h其實(shí)沒有什么用。于是,我們執(zhí)行下面幾個(gè)命令來完成刪除工作:
     rm netants.h
     cvs remove netants.h
     cvs commit netants.h -m "Delete a file."
  要注意的是,CVS只是刪除了當(dāng)前版本的netants.h,它以前的版本依然存在,除非它恰好僅有1.1版本。
  
  3.7 設(shè)定特定版本號
  
  經(jīng)過一段時(shí)間的工作,程序已經(jīng)初具規(guī)模,形成了較穩(wěn)定的版本。這個(gè)時(shí)候,netants.c可能已經(jīng)是5.4版本,而http.c可能是3.5版本,而我們希望將當(dāng)前的代碼作一個(gè)版本發(fā)布。此時(shí),我們需要使用的是tag命令。這個(gè)命令賦予指定的一個(gè)或多個(gè)文件一個(gè)給定的文本形式的版本號。版本號必須以字母開始,可以包含數(shù)字、下劃線和連接符號(-)。我們想給當(dāng)前項(xiàng)目的所有文件賦予相同的版本號時(shí),可以不指定文件或路徑參數(shù),CVS默認(rèn)選擇當(dāng)前目錄下所有在CVS中注冊的文件(循環(huán)進(jìn)子目錄)。下面既是一個(gè)例子:
  鍵入命令:cvs tag release0-1
  提示信息:
        cvs tag: Tagging .
        T Makefile
        T ftp.c
        T ftp.h
        T http.c
        T http.h
        T netants.c
  這樣當(dāng)前版本的所有文件都有了一個(gè)叫做release0-1的版本代號。當(dāng)我們需要這個(gè)版本的時(shí)候,我們使用 -r (版本代號) 參數(shù)來得到指定的版本。例如命令:
     cvs checkout -r release0-1 netants
  將在當(dāng)前目錄下建立netants目錄,并導(dǎo)出所有版本代號為release0-1的文件。
  
  3.8 更新當(dāng)前工作目錄中的文件
  這里使用的命令為update,它將比較指定的在CVS源碼庫中的文件和當(dāng)前目錄下的文件,如果CVS源碼庫中有更高版本的源文件,則更新當(dāng)前目錄下的文件。這個(gè)功能主要是多人協(xié)作開發(fā)項(xiàng)目時(shí)使用的,讓你及時(shí)分享同伴的工作成果。但它另外一個(gè)重要的用途,同樣適用于單人開發(fā)的項(xiàng)目。這個(gè)用途需要使用-j參數(shù),我們看下面的例子:
     cvs update -j 1.5 -j 1.3 netants.c
  這個(gè)命令的功能是,在當(dāng)前目錄的netants.c文件中,忽略從版本1.3到版本1.5所作的修改。毫無疑問,對程序員來說,這是一個(gè)非常重要的功能。因?yàn)樵谀硞(gè)階段我們對程序所作的修改在現(xiàn)在可能會被視為是無效乃至錯(cuò)誤的,這個(gè)功能很好的解決了這個(gè)問題。   在更新的過程中,CVS執(zhí)行一個(gè)自動合并的過程。例如我們的工作目錄中的netants.c文件版本是2.1,并且我們已經(jīng)對此文件作了一番修改,而CVS源碼庫中的是版本2.2,此時(shí)我們執(zhí)行update命令時(shí),CVS并不是簡單的將版本2.2覆蓋版本2.1,而是試圖將自版本2.1到版本2.2的修改添加到當(dāng)前目錄中的文件中去,如果它和我們剛剛所作的修改有沖突,則CVS會以字符串"<<<<<"和">>>>>"表示由沖突發(fā)生,期待用戶去修改。CVS拒絕接受包含有上述特定字符串的文件。下面即是一個(gè)沖突的例子: netants.c: 版本號 2.2,保存在CVS中 …… getPartFile( ); showFinished(); return(A); } ……
  
  netants: 版本號2.1 經(jīng)過我們的修改 …… getPartFile( ); return(B); } …… 我們執(zhí)行命令cvs update netants.c后,將會包含如下內(nèi)容的新的netants.c:
  
  …… getPartFile( ); showFinished(); <<<<<<< netants.c return(B); ========== return(A); >>>>>>> 2.2 } ……   除非我們做出修改并刪去"<<<<<<<"、"======="和">>>>>>>",否則在執(zhí)行cvs commit的時(shí)候,netants.c 將不會更新原有的2.2版本。
  
  4.CVS的其他功能
  CVS當(dāng)然遠(yuǎn)不止上面所說的這些內(nèi)容,這些僅是CVS的基本功能,CVS還有許多重要的功能,如上面所說的網(wǎng)絡(luò)工作方式、支持二進(jìn)制文件等。下面我們對這些功能作簡單的說明。

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