- 論壇徽章:
- 0
|
cvs
索引:
權(quán)限設(shè)定
配置cvs口令服務(wù)器
初始化服務(wù)器
使用基礎(chǔ)
常用命令縮寫
標(biāo)簽的管理
版本分支
cvs輸出export
清除工作拷貝
日志管理
關(guān)鍵字?jǐn)U展
模塊配置
二進(jìn)制文件配置
觸發(fā)器文件
其他配置文件
1.權(quán)限設(shè)定
(1).設(shè)定規(guī)則
cvs用戶必須擁有對(duì)$CVSROOT/CVSROOT目錄及其中所有文件的讀權(quán)限。
cvs用戶必須擁有對(duì)$CVSROOT/CVSROOT目錄下history文件的寫權(quán)限。
cvs用戶如果希望擁有修改某個(gè)項(xiàng)目(模板)代碼等資料的權(quán)利,必須擁有對(duì)該目錄的寫權(quán)限。
cvs系統(tǒng)的權(quán)限控制依賴于操作系統(tǒng),可利用操作系統(tǒng)本身的權(quán)限設(shè)置來(lái)控制cvs的權(quán)限。
(2).口令文件
pserver認(rèn)證方式以明文在網(wǎng)絡(luò)上傳輸cvs密碼。使用口令文件允許cvs用戶使用與系統(tǒng)帳號(hào)密碼不同的密碼。
口令文件在服務(wù)器的$CVSROOT/CVSROOT/passwd文件。格式為:
cvsuser:[passwd][:sysuser]
口令passwd從/etc/passwd或/etc/shadow獲得。
口令文件的安全性很重要,應(yīng)該將該文件的讀寫權(quán)限僅限于root。
如:
anonymous:
ken:aWTrltv4Ae:pubcvs
(3).設(shè)定只讀用戶
在$CVSROOT/CVSROOT/readers文件里,每行記錄一個(gè)cvs用戶名。
(4).設(shè)定具有寫權(quán)限的用戶
在$CVSROOT/CVSROOT/writers文件里,每行記錄一個(gè)cvs用戶名。
同時(shí)在readers和writers里的用戶只擁有讀權(quán)限。
2.配置cvs口令服務(wù)器
(1).inet服務(wù)器
文件/etc/services:
cvspserver 2401/tcp
文件/etc/inet.conf:
cvspserver stream tcp nowait root /usr/local/bin/cvs cvs –f \
--allow-root=$CVSROOT pserver
(2).xinet服務(wù)器
編輯cvspserver文件:
service cvspserver
{
port = 2401
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=$CVSROOT pserver
}
(3).客戶端配置
設(shè)置環(huán)境變量CVSROOT:
CVSROOT=:pserver:username@hostname(ip):[port]path
如:
:pserver:cvsadm@10.10.16.177:2402/home/cvsroot
:pserver:cvsadm@10.10.16.177:/home/cvsroot
(4).客戶登錄/注銷cvs login
cvs logout
3.初始化服務(wù)器
如果設(shè)置了環(huán)境變量CVSROOT,則執(zhí)行:
cvs init
否則,執(zhí)行:
cvs –d path init
其中path等于$CVSROOT。
4.使用基礎(chǔ)
(1).創(chuàng)建新項(xiàng)目(模板)
進(jìn)入項(xiàng)目所在目錄:
cvs [ -d $CVSROOT] import [-m log] name VENDOR START
VENDOR表示開(kāi)發(fā)者的標(biāo)識(shí),START表示起始版本標(biāo)簽。
如:
cd eSWITCH
cvs import eSWITCH v s
(2).撿出工作拷貝cvs checkout [ -d dir ] module
局部選項(xiàng)-d表示將拷貝放到目錄dir下,而不是在一個(gè)與module名一樣的目錄下。
cvs使用文件的時(shí)間戳,所以保持服務(wù)器和客戶端的時(shí)鐘同步是很重要的。
(3).比較倉(cāng)庫(kù)和拷貝的區(qū)別cvs diff filename
cvs diff -c filename(使用對(duì)照方式)
(4).提交工作拷貝cvs commit [-m log] [filename]
當(dāng)一次提交多個(gè)文件時(shí),這些文件共享同一個(gè)日志信息。
(5).更新工作拷貝cvs update [ filename ]
(6).查看日志信息cvs log filename
(7).版本回退
方法一:取出舊版本,重新提交。如:
cvs update
cvs up –p –r1.2 test.c >test.c
cvs ci test.c
方法二:使用join(合并)選項(xiàng)。如:
cvs up –j 1.3 –j 1.2 test.c
cvs ci test.c
把1.3版本與1.2b版本之間的差異補(bǔ)到當(dāng)前1.3版本上,相當(dāng)于從1.3版本上將1.2到1.3之間的變化又減去了。
(8).添加目錄或文件
創(chuàng)建一個(gè)目錄或文件后,執(zhí)行:
cvs add newfile
對(duì)于文件,還要做提交:
cvs ci newfile
(9).刪除文件rm newfile
cvs remove newfile
或:
cvs remove –f newfile
最后,進(jìn)行提交:
cvs ci newfile
(10).刪除目錄
首先刪除該目錄下所有文件,然后使用update的-P選項(xiàng)刪除目錄:
cd newdir
cvs remove –f new.c
cd ...
cvs update –P
執(zhí)行cvs update時(shí),cvs并不會(huì)自動(dòng)取出在工作拷貝創(chuàng)建之后新添加到倉(cāng)庫(kù)的目錄。解決方法是使用update的-d選項(xiàng):
cvs update –d
(11).重命名文件
方法一,先從cvs中刪除舊文件,再添加新文件:
mv old new
cvs remove –f old
cvs ci old
cvs add new
cvs ci new
方法二,直接修改服務(wù)器上的文件,要確保沒(méi)有人訪問(wèn)這個(gè)文件,否則將引起不可預(yù)知的后果:
cd $CVSROOT/module
mv old,v new,v
(12).重命名目錄
方法一,創(chuàng)建新目錄,將舊目錄下的文件移到新目錄下,刪除舊文件,添加新目錄,添加新文件:
mkdir newdir
mv olddir/* newdir
cvs remove olddir/*
cvs ci
cvs add newdir
cvs ci newdir
方法二,直接再cvs服務(wù)器倉(cāng)庫(kù)中移動(dòng)目錄:
cd $CVSROOT/module
mv olddir newdir
5.常用命令縮寫
cvs checkout:cvs co;
cvs commit:cvs ci;
cvs update:cvs up;
cvs status:cvs st;
6.標(biāo)簽的管理
(1).創(chuàng)建標(biāo)簽cvs tag tagname
(2).標(biāo)簽命名
以字母開(kāi)頭,中間可以含字母、數(shù)字、下劃線、連字符。
(3).刪除標(biāo)簽cvs tag -d tagname
(4).重命名標(biāo)簽
先貼上新標(biāo)簽,再刪除舊標(biāo)簽:
cvs tag –r tag1 tag2
cvs tag –d tag1
(5).修改某個(gè)文件的標(biāo)簽指到別的版本cvs tag –r new-version –F tag1 filename
如:
cvs tag –r 1.6 –F tag1 test.c
(6).查看標(biāo)簽cvs status –v filename
(7).特定約束標(biāo)簽
按照日期貼標(biāo)簽:
cvs rtag –D date tagname module
按照已經(jīng)版本/標(biāo)簽貼標(biāo)簽:
cvs rtag –r revision/tag newtag module
(8).獲取某個(gè)特定版本cvs update –r revison/tag module
cvs update –D date module
(9).恢復(fù)到最新版本cvs update –A
7.版本分支
(1).分支版本號(hào)
在x.y版本上的分支編號(hào)依次是x.y.2、x.y.4、x.y.6等等。
(2).在工作拷貝中創(chuàng)建分支
取出某一版本的代碼:
cvs checkout –r tag module
創(chuàng)建:
cvs tag –b branch-tag module
(3).直接在倉(cāng)庫(kù)中創(chuàng)建分支cvs rtag –b –r tag branch-tag module
(4).訪問(wèn)版本分支
方法一、撿出:
cvs checkout –r branch-tag module
方法二、版本切換:
cvs update –r branch-tag
(5).將分支合并到主干
在主干目錄下,執(zhí)行:
cvs update –j branch-tag [ filename ]
每次合并都會(huì)把從分支基部到分支最新版本之間的全部修改都合并到主干中。
可以指定合并的版本范圍。如:
cvs up –j 1.1.1.1.6.1 –j rel-20021010-brach test.c
把分支rel-20021010-brach從1.1.1.1.6.1到最新版本之間的修改合并到主干上。
進(jìn)行多次反復(fù)合并的一個(gè)技巧是在每次合并之后,將分支再貼上標(biāo)簽,這樣,每次合并時(shí)的分支版本都有標(biāo)簽可以標(biāo)識(shí)。
(6).將主干合并到分支
在分支目錄下,執(zhí)行:
cvs update –j HEAD
其中HEAD是關(guān)鍵字,表示主干代碼樹(shù)的頭部,也就是全部最新的主干代碼版本。
8.cvs輸出export
取出一份沒(méi)有cvs痕跡的源代碼:
cvs exprot –r tag [ -d dir ] module
9.清除工作拷貝cvs release –d module
10.日志管理
(1).查看詳細(xì)修改記錄cvs annotate [ -r revision/tag | -D date ] [ filename ]
(2).查看歷史記錄cvs history
(3).修改日志信息cvs admin –m revsion: “messages” filename
對(duì)于共享日志,需要對(duì)每個(gè)文件單獨(dú)執(zhí)行上述操作。
11.關(guān)鍵字?jǐn)U展
cvs中的關(guān)鍵字用兩個(gè)“$”符號(hào),中間是一個(gè)rcs的特定關(guān)鍵字。常用列表如下:
$Revision$
自動(dòng)擴(kuò)展為版本號(hào)。
$Log$
累計(jì)日志信息。
每次更新都進(jìn)行累加,如果太長(zhǎng),可以手工刪除舊的注釋。
$Author$
擴(kuò)展為提交版本的用戶的用戶名。
$Date$
上一次提交的日期、時(shí)間。
$Id$
擴(kuò)展為文件名、版本號(hào)、日期、作者、狀態(tài),如果被鎖定,還有鎖定者的用戶名。
$Source$
擴(kuò)展為帶有完整路徑的源代碼文件名。
12.模塊配置
(1).定義模塊步驟
修改模塊文件需要先checkout:
cvs checkout CVSROOT/modules
修改完畢提交:
cvs ci CVSROOT/modules
(2).語(yǔ)法module-name [ options ] dir [ files …]
(3).使用舉例
由project/acctmgmt組成的模塊:
acctmgmt project/acctmgmt
有目錄下的三個(gè)文件組成的模塊:
acctmgmt prject/acctmgmt readme install license
不包含指定目錄下的子目錄doc:
acctmgmt !project/acctmgmt/doc project/acctmgmt
定義別名(有三個(gè)模塊組成):
acctmgmt –a init mm file
引用:
lk & linux_kernle
(4).模塊選項(xiàng)
-d name:讓工作拷貝的名字為參數(shù)值而不是模塊名;
-e prog:文件被輸出(exprot)時(shí)執(zhí)行的程序;
-i prog:提交模塊時(shí)執(zhí)行的程序;
-o prog:撿出模塊時(shí)執(zhí)行的程序;
-s status:給模塊定義一個(gè)狀態(tài);
13.二進(jìn)制文件配置
在cvs中保存二進(jìn)制文件,要使用“-kb”選項(xiàng)來(lái)禁止cvs對(duì)文件進(jìn)行加工。該選項(xiàng)只需要在cvs add時(shí)使用!-kb”是一個(gè)Sticky Option。
(1).cvswrappers
通過(guò)配置$CVSROOT/CVSROOT/cvswrappers文件,使cvs根據(jù)文件擴(kuò)展名來(lái)區(qū)別二進(jìn)制文件。
(2).修改方法
同modules的方式。
(3).語(yǔ)法wildcard [ option val ] [ option val ] …
(4).選項(xiàng)
-m MERGE|COPY:更新方式,MERGE表示更新時(shí)進(jìn)行版本間差異的合并,COPY表示直接拷貝,不進(jìn)行合并處理。
-k ‘b’|’o’|’kkv’:關(guān)鍵字?jǐn)U展,’b’表示二進(jìn)制;’o’表示“off”,不進(jìn)行關(guān)鍵字?jǐn)U展,但它仍進(jìn)行不同平臺(tái)之間的回車、換行轉(zhuǎn)換;’kkv’表示擴(kuò)展關(guān)鍵字的值。
(5).使用舉例*.gif –k ‘b’
*.jpg –k ‘b’
*.doc –k ‘b’
*.bmp –k ‘b’
*.mpp –k ‘b’
*.xls –k ‘b’
*.ppt –k ‘b’
14.觸發(fā)器文件
(1).commitinfo
定義每次提交發(fā)生時(shí)執(zhí)行的程序。被提交的文件名作為程序的參數(shù)。
(2).loginfo
定義在提交操作完成之前被觸發(fā)的程序,用戶提交時(shí)寫的日志信息傳送到程序的標(biāo)準(zhǔn)輸入。
(3).verifymsg
提交時(shí),日志信息送到定義的程序的標(biāo)準(zhǔn)輸入,程序返回0則進(jìn)行提交,返回非0則提交被終止。
(4).rcsinfo
定義日志文件的模板文件。
(5).taginfo
定義貼標(biāo)簽時(shí)執(zhí)行的操作,標(biāo)簽字符串、標(biāo)簽操作、倉(cāng)庫(kù)、文件版本作為參數(shù)傳遞給程序。
15.其他配置文件
(1).checkoutlist
指定自定義的配置文件,使其置于cvs的版本管理之下。
(2).cvsignore
指定被cvs忽略的文件類別。
缺省忽略的文件類型如下:
RCS SCCS CVS CVS.adm
RCSLOG cvslog.*
Tags TAGS
.make.state .nse_depinfo
*~ #* .#* ,* _$* *.$
*.old *.bak *.BAK *.orig *.rej *.del-*
*.a *.olb *.o *.obj *.so *.exe
*.Z *.elc *.ln
core
[/url]
本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):[url]http://blog.chinaunix.net/u1/33950/showart_450064.html |
|