- 論壇徽章:
- 0
|
(by 王亮)
入門第一步:設環(huán)境、初始化
首先,在~/.cshrc 中加入
setenv CVSROOT $HOME/cvsroot
然后進行初始化:
source ~/.cshrc
cvs init
運行完之后,在 $HOME 下就會出現(xiàn)一個 cvsroot 目錄,其中有一個 CVSROOT 目錄,該目錄中有一大堆文件,要想知道每個文件具體是干什么的就只有慢慢學了!
程序?qū)?import)
假定我們要維護的程序在目錄 myproj 下,在導入前,首先將 mypoj 下所有的垃圾文件(包括目標文件、備份文件以及可執(zhí)行文件,等等)刪除掉。然后運行下列命令:
cvs import -m "initial version" myproj jrandom start
該命令將程序?qū)氲?$CVSROOT)中,如果要導到另一倉庫,可以指定路徑
cvs -d [倉庫路徑] import
導出工作拷貝(checkout)
當 myproj 被導入 CVS 中以后,就不應再在原文件上進行修改了,因為原來的文件并不在版本控制序列之中。正確的做法是在一個“工作拷貝”(working copy)上進行修改,故應運行如下命令:
mv myproj myproj-old (或 rm -r -f myproj)
cvs checkout myproj
這樣就得到了一個工作拷貝,它與原目錄的結(jié)構(gòu)和內(nèi)容幾乎完全相同,只是在每一個子目錄下多了一個CVS目錄。
版本同步(update)
該命令的形式為:
cvs update
其作用是使工作拷貝的版本與倉庫中的最新版本同步,將別人的修改以補丁(patch)的形式合并進自己的拷貝中,其作用主要體現(xiàn)于協(xié)同開發(fā)。此外,更新時可能出現(xiàn)沖突,此時就需要兩個人進行協(xié)商解決。
倉庫版本升級(commit)
命令格式為:
cvs commit -m "change message" [filename]
其中“-m”選項是必須的,如果沒有加的話,系統(tǒng)會自動打開一個編輯器讓你輸入修改信息。
顯示信息常用命令
常用的有:
cvs diff -c (比較當前工作拷貝與最高版本的區(qū)別)
cvs status (顯示當前工作拷貝的狀態(tài))
cvs log (查看修改歷史)
回到前面的版本(從 1.4 回到 1.2)
1. 慢速方法
(1). 查看當前最高版本文件的內(nèi)容
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]
這樣就產(chǎn)生了版本1.5,但其內(nèi)容與1.2完全相同。這也就是說,版本號是在不斷升高的,但其內(nèi)容可以回到過去。
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 配置文件
有時我們經(jīng)常用到一些選項,每次都輸入比較麻煩,解決的辦法是在家目錄下建立一個配置文件:.cvsrc,其內(nèi)容如下:
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 命令以惠世人,敬請積極試用,發(fā)現(xiàn)問題請及時告知。但事先聲明的是:由于用本命令所造成的損失,鄙人概不負責!:-)
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 = $>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 "唉!你現(xiàn)在后悔也晚了!:-) "
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
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u2/63021/showart_1852872.html |
|