|
技术资料 > PHP技术 > XML应用 : CVS介绍 |
CVS介绍 March 25,2004 |
高嘉良
CVS的工作模式:
首先CVS不是一个开发环境,它只实现开发过程中的源文件共享和同步问题。
一个最简单的工作流程如下:
1 CVS CHECKOUT: 将源文件包同步到开发目录下;
2 对其中的文件进行修改;
3 将修改COMMIT到源文件包中,实现一次版本的升级。
当然,CVS最重要的特性是能让你了解开发过程中谁,何时对那些源文件进行了什么修
改
一下是一个CVS系统简介
作者: 高嘉良 (Chia-liang Kao) <[email protected]>
* 什麼是 cvs?
cvs 是一個版本控制系統. 什麼是版本控制系統呢? 簡單的說, 他可以記錄程式碼修改
的過程, 有一個完整的 history.
闢如說, 當你在修改程式碼的時候, 不小心寫出了一個 bug, 但是你可能很久以後才發
現多出了這個 bug, 這個時候, cvs 就能很
有效的幫助你, 找出到底是在哪一次的修改中, 出現了這個 bug.或許你會說, 那我每
次都把程式碼存起來, tar 起來不就好了,
當然, 你是可以這麼做, 但是這太浪費空間了! cvs 在版本更改間, 只儲存他們的
diff 檔, 這樣可以很有效的省下很多空間.
再另一個場合裡頭, 更能顯示出 cvs 的好處 -- 多人一起發展軟體的時候. cvs 支援
remote access, user 並可以對他要修改的
檔案加上 edit 的 flag, 讓別人知道他要修改這個檔案了. 然而, 一個較大的發展團
隊, 一定還會需要一個 mailing list, 用來溝通.因為, cvs 只是一個管理 project
程式碼的工具, 他並不扮演溝通的角色.
* 名詞
repository: 意思是倉庫. 在 cvs 裡頭, 就是你真正存放版本歷史的地方. CVS把一份
由多个文件组成的软件按包存储,并记录每个文件的修改信息。
pserver : 這是 cvs 用來接受 remote 的 cvs command 用的用户认证服务。cvs 有兩
種模式, 一種是 local, 一種是 remote.
cvsroot : 當你使用 cvs 的時候, 必須設定 CVSROOT 這個環境變數, 或是用 -d 這個
選項來指定.
……………………
安装过程如下:
http://www.cyclic.com
DOWN源文件
$ ./configure
$ make
(run the regression tests if desired)
$ make install
(create a repository if you don't already have one)
设置CVSROOT环境变量:
bash:
CVSROOT=/src/master; export CVSROOT
csh:
setenv CVSROOT /src/master
/src/master为CVS存放软件包的根目录。
——————————————————————————————————--
启动远程访问认证的PSERVER服务。
su root
檢查 /etc/services 有沒有這兩行, 沒有請加入:
cvspserver 2401/tcp #CVS network server
cvspserver 2401/udp #CVS network server
再 /etc/inetd.conf 加入:
cvspserver stream tcp nowait root
/usr/bin/cvs cvs -b /usr/bin --allow-root /src/master pserver
mkdir /src/master
——————————————————————————————
给远程用户添加帐号
adduser anoncvs, 這是要給 anonymous cvs 用的. group 為 nogroup.
新加一個dev的group.
adduser 參與 dev 的帳號, 當然, 把他們的 group 設為 dev
CVS的用户帐号和UNIX及NT的用户帐号无关,CVS用户帐号都保存在$CVSROOT中的passwd
readers writers目录下
格式:
userid:encryptedpasswd:map Unix userid
一下是一个生成加密PASSWD的perl脚本:
/////////
#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext}n";
//////////////
将这个小程序设置为可执行:cryptout.pl:
ls -l ./cryptout.pl
-rwxr-xr-x 1 root root 265 Jun 14 20:41 /usr/local/bin/cryptout.pl
floss$ cryptout.pl "PASSWORD1"
sB3A79YDX5L4s
就生成了加密的密码"PASSWORD1"字符串
按照
userid:encryptedpasswd:map Unix userid格式加到PASSWD文件里。readers writers
都是userid的列表。
passwd文件样例:
anoncvs:sB3A79YDX5L4s:anoncvs
acvsreader:sB3A79YDX5L4s:che
cheche:sB3A79YDX5L4s:che
acvswriter:sB3A79YDX5L4s:che
readers文件样例:
acvsreader
anoncvs
writers文件样例:
cheche
acvswriter
CVS SERVER的安装应该是没有什么问题了, 我下一步主要是研究WINCVS的使用和如何实
现CVS的WEB访问。实现客户端非常方便的访问。
www.wincvs.org
che@OFFICE,[email protected]
icq: 31928674
|
|