CVS 入門
入門第一步:設環境、初始化
首先,在~/.cshrc 中加入
setenv CVSROOT $HOME/cvsroot
然後進行初始化:
source ~/.cshrc cvs init
執行完之後,在 $HOME 下就會出現一個 cvsroot 目錄,其中有一個 CVSROOT 目錄,該目錄中有一大堆檔案,要想知道每個檔案具體是幹什麼的就只有慢慢學了!
程式匯入(import)
假定我們要維護的程式在目錄 myproj 下,在匯入前,首先將 mypoj 下所有的垃圾檔案(包括目標檔案、備份檔案以及可執行檔案,等等)刪除掉。然後執行下列命令:
cvs import -m "initial version" myproj jrandom start
該命令將程式匯入到($CVSROOT)中,如果要導到另一倉庫,可以指定路徑
cvs -d [倉庫路徑] import
匯出工作複製(checkout)
當 myproj 被匯入 CVS 中以後,就不應再在原檔案上進行修改了,因為原來的檔案並不在版本控制序列之中。正確的做法是在一個“工作複製”(working copy)上進行修改,故應執行如下命令:
mv myproj myproj-old (或 rm -r -f myproj) cvs checkout myproj
這樣就得到了一個工作複製,它與原目錄的結構和內容幾乎完全相同,只是在每一個子目錄下多了一個CVS目錄。
版本同步(update)
該命令的形式為:
cvs update
其作用是使工作複製的版本與倉庫中的最新版本同步,將別人的修改以補丁(patch)的形式合併進自己的複製中,其作用主要體現於協同開發。此外,更新時可能出現衝突,此時就需要兩個人進行協商解決。
倉庫版本升級(commit)
命令格式為:
cvs commit -m "change message" [filename]
其中“-m”選項是必須的,如果沒有加的話,系統會自動開啟一個編輯器讓你輸入修改資訊。
顯示資訊常用命令
常用的有:
cvs diff -c (比較當前工作複製與最高版本的區別) cvs status (顯示當前工作複製的狀態) cvs log (檢視修改歷史)
回到前面的版本(從 1.4 回到 1.2)
1. 慢速方法
(1). 檢視當前最高版本檔案的內容 cvs -Q update -p [filename] (2). 檢視1.2是否是所需版本 cvs -Q update -p -r 1.2 [filename] (3). 若已確認, 則 cvs -Q update -p -r 1.2 [filename] > [filename] (4). 更新倉庫 cvs commit -m "reverted to 1.2 code" [filename]
這樣就產生了版本1.5,但其內容與1.2完全相同。這也就是說,版本號是在不斷升高的,但其內容可以回到過去。
2. 快速方法
cvs update -j 1.4 -j 1.2 [filename]
注:這裡介紹的兩種方法都是處理單個檔案的,對於多個檔案的處理稍後再補上。
新增檔案
分兩步
cvs add [newfiles] cvs commit -m "add newfiles" [newfiles]
刪除檔案
分三步
rm [filenames] (刪除工作複製中的檔案) cvs remove [filenames] cvs commit -m "remone files" [filenames]
新增目錄
只需一步,無需“commit”
mkdir subdir (該命令不算一步) cvs add subdir
刪除目錄
1. 首先要刪除目錄中所有的檔案
cd subdir rm file1 file2 ... cvs remove file1 file2 ... cvs commit -m "rm all files in subdir" file1 file2 ...
2. 然後再在上一級目錄執行
cvs update -P
該命令是刪除當前目錄下所有的空目錄。實際上,空目錄只是從工作複製中消失,而倉庫中還有一個空目錄。
檔案重新命名
其基本思想是:刪除舊檔案,新增新檔案。具體過程為:
mv oldname newname cvs remove oldname cvs add newname cvs commit -m "mv oldname newname" oldname newname
目錄重新命名
其基本思想是:建一個新目錄,將舊目錄中的檔案移到新目錄中,再分別在新舊目錄中進行新增和刪除操作,最後是刪除空目錄。具體過程為:
mkdir newdir cvs add newdir mv olddir/* newdir cd olddir cvs rm file1 file2 ... cd ../newdir cvs add file1 file2 ... cd .. cvs commit -m "rename dir" cvs update -P
CVS 配置檔案
有時我們經常用到一些選項,每次都輸入比較麻煩,解決的辦法是在家目錄下建立一個配置檔案:.cvsrc,其內容如下:
diff -c update -P
建立了此檔案之後
cvs diff 就相當於 cvs diff -c
此處,“ diff ”若簡寫為“ di ”則配置檔案中的繫結無效。
命令簡寫
CVS的命令都比較長,所以它提供了簡寫方式。只要在 shell 命令列中輸入:
cvs --help-synonyms
就可以得到如下命令簡寫列表:
CVS command synonyms are: add ad new admin adm rcs annotate ann checkout co get commit ci com diff di dif export exp ex history hi his import im imp log lo login logon lgn rannotate rann ra rdiff patch pa release re rel remove rm delete rlog rl rtag rt rfreeze status st stat tag ta freeze update up upd version ve ver
幾個常用 Shell 命令
由上面的介紹可知,在 CVS 中增減檔案或目錄是一件麻煩事,為了簡化該過程,我(姓王名亮)特意寫了如下幾個常用 Shell 命令以惠世人,敬請積極試用,發現問題請及時告知。但事先宣告的是:由於用本命令所造成的損失,鄙人概不負責!:-)
1. /usr/local/bin/cvs-add
命令格式: cvs-add [file list] [directory list] 功能: 在 CVS 新增目錄和檔案
其原始碼如下:
#!/bin/tcsh -f #add files or diretories in CVS set ffdd=`echo $*` foreach fd ($ffdd) if(-d $fd) then # rm the diretories in directory $fd set CVSdir=`find $fd -type d -name "CVS"` rm -r -f $CVSdir # find the files and directories in directory $fd set ff=`find $fd -type f` set dd=`find $fd -type d` # add directories cvs add $dd # add files cvs add $ff cvs commit -m "add files in directory '$fd'" else cvs add $fd cvs commit -m "add file '$fd'" $fd endif end
2. /usr/local/bin/cvs-rm
命令格式: cvs-rm [file list] [directory list] 功能: 在 CVS 刪除目錄和檔案(同時刪除倉庫和工作複製中的目錄和檔案)
其原始碼如下:
#!/bin/tcsh -f #remove files or diretories in CVS set ffdd=`echo $*` echo "你真的要刪除 $* 嗎?(y/n)" set flag = $< if($flag == 'y') then echo "你真的不後悔嗎?(y/n)" set flag2 = $< if($flag2 == 'y') then foreach fd ($ffdd) if(-d $fd) then echo "rm $fd from CVS" # find the files and directories in directory $fd set ff=`find $fd -type f` # find the files in $fd (not include the files in CVS) foreach f ($ff) echo $f >>ffftmp end set fff=`cat ffftmp | sed -e '/CVS/d'` rm ffftmp -f # remove the file from CVS permanently if ($%fff > 0) then rm $fff -f cvs remove $fff cvs commit -m "rm files in directory '$fd'" $fff endif # rm directories set Root=`cat $fd/CVS/Root ` set Repository=`cat $fd/CVS/Repository` rm -r -f $fd echo "rm $Root/$Repository" rm -r -f $Root/$Repository else rm -f $fd cvs remove $fd cvs commit -m "rm file '$fd'" $fd endif end echo "唉!你現在後悔也晚了!:-) " endif endif
3. /usr/local/bin/cvs-rmCVS
命令格式: cvs-rmCVS [directory list] 功能: 刪除指定目錄及其子目錄中的 CVS 目錄。
其原始碼如下:
#!/bin/tcsh -f set ffdd=`echo $*` foreach fd ($ffdd) if(-d $fd) then # rm the diretories CVS in directory $fd set CVSdir=`find $fd -type d -name "CVS"` rm -r -f $CVSdir endif end[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8570952/viewspace-912153/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- jbuilder和cvsUI
- jbuilder中配置cvsUI
- CVS 簡介(轉)
- CVS教學(轉)
- cvs深入淺出
- 入門入門入門 MySQL命名行MySql
- 版本控制之道-使用CVS
- CVS使用簡介(轉)
- linux cvs部署薦Linux
- 如何入CTF的“門”?——所謂入門就是入門
- 何入CTF的“門”?——所謂入門就是入門
- cvs客戶端大全(轉)客戶端
- CVS使用經驗談 (轉)
- 版本控制工具SVN和CVS
- linux下配置cvs(轉)Linux
- scala 從入門到入門+
- makefile從入門到入門
- ACM入門之新手入門ACM
- 什麼是SVN? 什麼是CVS? SVN跟CVS又有什麼關係呢?
- 【小入門】react極簡入門React
- gRPC(二)入門:Protobuf入門RPC
- 如何使用CVS進行版本控制
- 在redhat 下安裝 CVS(轉)Redhat
- 《Flutter 入門經典》之“Flutter 入門 ”Flutter
- 新手入門,webpack入門詳細教程Web
- Android入門教程 | RecyclerView使用入門AndroidView
- linux新手入門――shell入門(轉)Linux
- CVS安裝及設定步驟
- MyBatis從入門到精通(一):MyBatis入門MyBatis
- SqlSugar ORM 入門到精通【一】入門篇SqlSugarORM
- Storm入門指南第二章 入門ORM
- VUE入門Vue
- MyBatis 入門MyBatis
- CSS 入門CSS
- JavaScript 入門JavaScript
- Nginx 入門Nginx
- RabbitMQ入門MQ
- GitHub入門Github