CVS
介紹
CVS
代表協作版本系統,這是一個將一組文件放在層次目錄樹中以保持同步的系統。人們可以從
CVS
服務器上更新他們的本地層次樹副本,并將修改的結果或新文件發回;或者刪除舊文件。
CVS
基于客戶端
/
服務器的行為使得其可容納多用戶,構成網絡也很方便。這一特性使得
CVS
成為位于不同地點的人同時處理數據文件
(
特別是程序的源代碼
)
時的首選。
?
服務器
1
。初始化
cvs
服務器環境
#
cvs –d /tmp/source init
命令在
/usr/local/sourc
下建立了
cvsroot
目錄,里面是初始化的
cvs
服務器配置文件。
2
。把
cvs
服務器放到
xinetd
中
#
vi /etc/xinetd.d/cvspserver
建立服務文件并添加內容
server cvspserver
{
???????? flags????????? = REUSE
???????? socket_type?????? = stream
???????? wait???????????????????? = no
???????? user??????????????????? = root
???????? protocol???????????? = tcp
???????? server???????????????? = /usr/bin/cvs
???????? server_args?????? = -f –allow-root=/tmp/source pserver
???????? disable?????????????? = no
}
其中
server_args
一個參數指定了源代碼路徑
,
一個指定了服務器使用密碼認證方式
.
然后確保
/etc/services
文件中有以下兩行
cvspserver 2401/tcp
cvspserver 2401/udp
最后重啟
xinetd
服務。
?
測試
假設
cvs
服務器在
192.168.0.192
上,系統上有一個用戶
cvs
。登陸另一臺
linux
機器,執行下列命令可以完成測試。
$export CVSROOT
=
:pserver:cvs@192.168.0.192:2401/tmp/source
$cvs login
輸入密碼,沒有錯誤提示表示登陸成功。
$cvs logout
登出
?
用戶認證
cvs
服務器有一套自己的用戶認證機制,此方法使用了系統上用戶直接作為
cvs
服務器用戶,采用
linux
組、用戶權限實現這樣的功能。
例如,在
linux
系統上有兩個開發組
a
、
b
,分別有用戶
a
-
user1
,
a
-
user2
,
b
-
user1
,
b
-
user2
。
模塊
a
-
source
,希望
a
組成員都可以讀寫,
b
組沒有任何權限,使用以下命令:
#
chown –R a-user1 a-source
#
chgrp –R a a-source
#
chmod –R 770 a-source
如果希望
a
-
source
,只有
a
-
user1
可以寫,同組其他用戶可以讀,
b
組沒有任何權限,把
chmod
命令改成
-
R 750
即可。
?
?
說明
cvs
中默認一個用戶
checkout
代碼時候,會在當前模塊下生成一個鎖文件,如果這個用戶對當前模塊沒有寫權限,讀是不可能的。配合上面的權限設置,必須改以下
cvs
服務器配置。改成不在當前模塊目錄下生長鎖文件,把鎖文件集中到一個所有用戶都有讀寫權限的目錄。修改配置文件
CVSROOT/config
#
Put CVS lock files in this directory rather than directly in the repository.
#
LockDir=/var/lock/cvs
把
LockDir
設上就可以了。
?
系統建立多個源代碼庫
1
。使用一個不同路徑
2
。
/etc/xinetd.d
目錄下建立一個新的任務配置文件,如
cvspserver1
,文件中第一行
server
名稱一定要區分。如改為
server cvspserver1
,
server_args
做相應變動。還要在
/etc/services
文件中,加入新的服務器端口,如
cvspserver1 2402/tcp
。重啟
xinetd
即可。
?
CVS
的使用流程
1
。登入
(login)
,只需做一次。需要密碼認證,除非是允許匿名登入,否則都要輸入
CVS Server
管理者配給您的密碼。
2
。取出
(checkout)
整份專案
(
類似檔案下載
)
。此時,您的硬碟中會有一份專案的原始碼目錄,我們稱之為工作目錄。
3
。依您的程式意圖,修改某一支程式。
4
。查詢程式的在庫狀態
(status)
。
(3
、
4
這二個動作可互調或合并操作
)
5
。視在庫狀態,比對二者的差異
(diff)
,調整修改的程式
(
是否和他人修改的部份發生沖突,若無沖突,那就十分單純,可在修改完之後,直接存入
(commit/ci)
檔案庫
(repository)
中
)
6
。若有沖突,在
mailling list
中,和他人討論,取得協調。
7
。將修改好的檔案
commit
存入
CVS
檔案柜
(
俗稱
checkin
,類似檔案上傳
)
,請務必在程式碼注解中,詳述您的意圖。
8
。透過
mailling list
說明您的想法,和大家討論。
9
。每經過一段時日,應查詢在庫狀態,并更新您的工作目錄
(update)
。
posted on 2007-03-08 08:33
???MengChuChen 閱讀(392)
評論(0) 編輯 收藏 所屬分類:
VSS