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