top
Loading...
CVS介紹
高嘉良
CVS的工作模式:
首先CVS不是一個開發環境,它只實現開發過程中的源文件共享和同步問題。
一個最簡單的工作流程如下:
1 CVS CHECKOUT: 將源文件包同步到開發目錄下;
2 對其中的文件進行修改;
3 將修改COMMIT到源文件包中,實現一次版本的升級。

當然,CVS最重要的特性是能讓你了解開發過程中誰,何時對那些源文件進行了什么修

一下是一個CVS系統簡介

作者: 高嘉良 (Chia-liang Kao) <clkao@cirx.org>

* 什麼是 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}";
//////////////

將這個小程序設置為可執行: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,chedong@netease.com
icq: 31928674

北斗有巢氏 有巢氏北斗