不是很安全,因此一般是作為匿名只讀CVS訪問的方式。從安全考慮,通過系統(tǒng)本地帳號(hào)認(rèn)證并通過SSH傳輸是比較好的辦法,通過在客戶機(jī)的/etc/profile里設(shè)置一下內(nèi)容:
CVSROOT=:ext:$USER@cvs.server.address#port:/path/to/cvsroot CVS_RSH=ssh; export CVSROOT CVS_RSH
所有客戶機(jī)所有本地用戶都可以映射到CVS服務(wù)器相應(yīng)同名帳號(hào)了。
比如:
CVS服務(wù)器是192.168.0.3,上面CVSROOT路徑是/home/cvsroot,另外一臺(tái)開發(fā)客戶機(jī)是192.168.0.4,如果tom在2臺(tái)機(jī)器上都有同名的帳號(hào),那么從192.168.0.4上設(shè)置了:
export CVSROOT=:ext:tom@192.168.0.3:/home/cvsroot
export CVS_RSH=ssh
tom可以直接在192.168.0.4上對192.168.0.3的cvsroot進(jìn)行訪問了(如果有權(quán)限的話)
cvs checkout project_name
cd project_name
cvs update
...
cvs commit
如果CVS所在服務(wù)器的SSH端口不在缺省的22,或者和客戶端與CVS服務(wù)器端SSH缺省端口不一致,有時(shí)候設(shè)置了:
:ext:$USER@test.server.address#port:/path/to/cvsroot
仍然不行,比如有以下錯(cuò)誤信息:
ssh: test.server.address#port: Name or service not known
cvs [checkout aborted]: end of file from server (consult above messages if any)
解決的方法是做一個(gè)腳本指定端口轉(zhuǎn)向(不能使用alias,會(huì)出找不到文件錯(cuò)誤):
創(chuàng)建一個(gè)/usr/bin/ssh_cvs文件:
#!/usr/bin/sh
/path/to/ssh -p 34567 "$@"
然后:chmod +x /usr/bin/ssh_cvs
并CVS_RSH=ssh_cvs; export CVS_RSH
注意:port是指相應(yīng)服務(wù)器SSH的端口,不是cvs pserver的端口
CVSWEB:提高文件瀏覽效率
=======================
CVSWEB是CVS的WEB界面,可以大大提高程序員定位修改的效率:
使用的樣例可以看:http://www.freebsd.org/cgi/cvsweb.cgi
CVSWEB的下載:CVSWEB從初的版本已經(jīng)演化出很多功能界面更豐富的版本,這個(gè)是我個(gè)人感覺安裝設(shè)置比較方便的:
http://www.spaghetti-code.de/software/linux/cvsweb/
下載解包:
tar zxf cvsweb.tgz
把配置文件cvsweb.conf放到安全的地方(比如和apache的配置放在同一個(gè)目錄下),
修改:cvsweb.cgi讓CGI找到配置文件:
$config = $ENV{'CVSWEB_CONFIG'} || '/path/to/apache/conf/cvsweb.conf';
轉(zhuǎn)到/path/to/apache/conf下并修改cvsweb.conf:
修改CVSROOT路徑設(shè)置:
%CVSROOT = (
'Development' => '/path/to/cvsroot', #<==修改指向本地的CVSROOT
);
缺省不顯示已經(jīng)刪除的文檔:
"hideattic" => "1",#<==缺省不顯示已經(jīng)刪除的文檔
在配置文件cvsweb.conf中還可以定制頁頭的描述信息,你可以修改$long_intro成你需要的文字
CVSWEB可不能隨便開放給所有用戶,因此需要使用WEB用戶認(rèn)證:
先生成 passwd:
/path/to/apache/bin/htpasswd -c cvsweb.passwd user
修改httpd.conf: 增加
<Directory "/path/to/apache/cgi-bin/cvsweb/">
AuthName "CVS Authorization"
AuthType Basic
AuthUserFile /path/to/cvsweb.passwd
require valid-user
</Directory>
CVS TAGS: who? when?
====================
將 $Id$ 加在程序文件開頭的注釋里是一個(gè)很好的習(xí)慣,cvs能夠自動(dòng)解釋更新其中的內(nèi)容成: file_name version time user_name 的格式,比如:cvs_card.txt, v 1.1 2002/04/05 04:24:12 chedong Exp,可以這些信息了解文件的后修改人和修改時(shí)間