CVS使用
下面我們講一下CVS的使用和管理。
在使用CVS之前,必須要指定CVS的根路徑,不像RCS是工作在工作目錄下的RCS目錄下。指定CVS路徑的方法有兩種,一種是使用cvs-d 選項(xiàng)指定,如:
cvs -d /home/kerberos/cvsroot 指定/home/kerberos/cvsroot為CVS倉(cāng)庫(kù)的路徑。
另外一種是使用CVSROOT環(huán)境變量指定(bash下):
export CVSROOT=/home/kerberos/cvsroot
無(wú)論何種方式,每當(dāng)重新開(kāi)啟一次終端會(huì)話,CVS倉(cāng)庫(kù)的路徑都要重新設(shè)置,你可以把以上的后者加入到其實(shí)目錄下的.bashrc文件中,這樣開(kāi)啟一次終端會(huì)話后,不需要重新設(shè)置了(對(duì)于其他的環(huán)境變量的設(shè)置也是如此)。如果你的CVSROOT環(huán)境變量已經(jīng)存在,可以使用cvs -d 選項(xiàng)來(lái)指定不同于CVSROOT所指定的CVS倉(cāng)庫(kù)。然后初始化CVS倉(cāng)庫(kù),建立CVS維護(hù)所需要的一些文件和信息,CVS把這些信息存放在CVS倉(cāng)庫(kù)主目錄的CVSROOT目錄下。這些文件,除了modules ,其他文件都沒(méi)有手動(dòng)修改的必要,modules 文件定義了CVS的導(dǎo)出模塊在CVS倉(cāng)庫(kù)中的位置,這一點(diǎn)在從CVS倉(cāng)庫(kù)中導(dǎo)出一個(gè)深層目錄時(shí)是非常方便的。
cvs init
初始化之后,我們使用cvs import來(lái)把需要進(jìn)行版本維護(hù)的開(kāi)發(fā)項(xiàng)目的目錄結(jié)構(gòu)導(dǎo)入到CVS倉(cāng)庫(kù)中,如下:
建立好項(xiàng)目的目錄結(jié)構(gòu)以后,當(dāng)前的testprj目錄的結(jié)構(gòu)是這樣的:
[kerberos@power zhyf]$ tree testprj
testprj
|-- admin
|-- doc
|-- include
|-- libs
`-- src
|-- include
`-- main
7 directories, 0 files
cvs import有三個(gè)參數(shù):第一個(gè)是這個(gè)目錄樹(shù)在CVS倉(cāng)庫(kù)中的模塊名稱,第二個(gè)是發(fā)布者的一個(gè)標(biāo)志,第三個(gè)是這個(gè)項(xiàng)目的版本標(biāo)記(tag)。下面,我們把testprj導(dǎo)入到CVS倉(cāng)庫(kù)中,使用testprj 模塊名稱。
[kerberos@power testprj]$cvs import testprj KERBEROS INITVER
執(zhí)行命令以后,CVS會(huì)調(diào)用CVSEDITOR指定的編輯器來(lái)讓你輸入日志,如果CVSEDITOR沒(méi)有定義,缺省調(diào)用vi,可以使用export命令指定你自己喜歡使用的編輯器。輸入日志以后,CVS把當(dāng)前的目錄結(jié)構(gòu)導(dǎo)入CVS倉(cāng)庫(kù)中,并且使用testprj這個(gè)模塊名稱,在導(dǎo)出文件時(shí),可以使用
cvs co testprj 來(lái)導(dǎo)出。
"/tmp/cvscVxZnW" 5L, 242C written
cvs import: Importing /home/zhyf/cvsroot/testprj/admin
cvs import: Importing /home/zhyf/cvsroot/testprj/libs
cvs import: Importing /home/zhyf/cvsroot/testprj/src
cvs import: Importing /home/zhyf/cvsroot/testprj/src/include
cvs import: Importing /home/zhyf/cvsroot/testprj/src/main
cvs import: Importing /home/zhyf/cvsroot/testprj/doc
cvs import: Importing /home/zhyf/cvsroot/testprj/include
No conflicts created by this import
看一下cvsroot目錄中的結(jié)構(gòu)是不是和testprj 的相同:
../cvsroot
|-- CVSROOT
| |-- checkoutlist
| |-- checkoutlist,v
| ........................... CVS的倉(cāng)庫(kù)信息,省略..
| ...........................
`-- testprj
|-- admin
|-- doc
|-- include
|-- libs
`-- src
|-- include
`-- main
這里testprj 模塊的結(jié)構(gòu)和我們自己的testprj的目錄結(jié)構(gòu)是一樣的。
這樣,當(dāng)需要再次使用這些源代碼時(shí),可以簡(jiǎn)單的使用cvs co模塊名來(lái)導(dǎo)出目錄樹(shù)和文件了。導(dǎo)出任意具有寫權(quán)限的目錄下:
[kerberos@power testprj]$ cd ..
[kerberos@power zhyf]$ rm -rf testprj 刪除testprj目錄
[kerberos@power zhyf]$ cvs co testprj 重新導(dǎo)出
cvs checkout: Updating testprj
cvs checkout: Updating testprj/admin
cvs checkout: Updating testprj/doc
cvs checkout: Updating testprj/include
cvs checkout: Updating testprj/libs
cvs checkout: Updating testprj/src
cvs checkout: Updating testprj/src/include
cvs checkout: Updating testprj/src/main
[kerberos@power zhyf]$ tree testprj
testprj
|-- CVS
| |-- Entries
| |-- Repository
| `-- Root
|-- admin
| `-- CVS
| |-- Entries
| |-- Repository
| `-- Root
|-- doc
| `-- CVS
| |-- Entries
| |-- Repository
| `-- Root
|-- include
| `-- CVS
| |-- Entries
| |-- Repository
| `-- Root
|-- libs
| `-- CVS
| |-- Entries
| |-- Repository
| `-- Root
`-- src
|-- CVS
| |-- Entries
| |-- Repository
| `-- Root
|-- include
| `-- CVS
| |-- Entries
| |-- Repository
| `-- Root
`-- main
`-- CVS
|-- Entries
|-- Repository
`-- Root