該文章來自于網(wǎng)絡(luò):
1. 檢出源代碼操作(cvs checkout)
*
將項目工作庫目錄取到個人工作庫:cvs checkout dirname
*
將項目工作庫中某個文件取到本地個人工作庫:cvs checkout filename
2. 將文件同步到最新的版本(cvs update)
開發(fā)人員每天開始工作前,請將項目工作庫中的最新版本代碼文件取到個人工作庫中,養(yǎng)成"先同步,后修改"的習(xí)慣;
更新單個文件:cvs update file_name
更新目錄:cvs update (不指定文件名,cvs將同步所有子目錄下的文件)
注意:第一次導(dǎo)出文件以后,就不是通過cvs checkout來同步文件了,而是要進(jìn)入剛才cvs checkout project_name導(dǎo)出的project_name目錄下進(jìn)行具體文件的版本同步(添加,修改,刪除)操作。
3. 文件提交(cvs commit)
確認(rèn)文件修改寫入CVS庫:cvs commit -m "注釋內(nèi)容" file_name;
建議每次文件提交都只修改一個文件,以避免多個文件以同樣注釋commit到CVS庫里了;每次確認(rèn)提交時,請認(rèn)真填寫修改注釋,以幫助其他開發(fā)人員了解修改的原因;
4. 添加(cvs add)
添加某個目錄操作:cvs add dir_name
添加某個文件操作:cvs add new_file;
然后確認(rèn)添加文件并注釋
cvs commit -m "write some comments here"
對于圖片,Word文檔等非純文本的項目,需要使用cvs add -kb選項按2進(jìn)制文件方式導(dǎo)入,否則有可能出現(xiàn)文件被破壞的情況;
cvs add -kb readme.doc
5. 刪除文件(cvs rm)
將某個文件物理刪除操作:cvs remove -f file_name
確認(rèn)刪除文件并注釋cvs commit -m "why delete file"
查看修改歷史(cvs log)
查看日志操作命令:
cvs log file_name
cvs log dirname
操作歷史命令:cvs history file_name
查看版本操作:cvs status -v filename
查看當(dāng)前文件不同版本的區(qū)別:
cvs diff file_name
cvs diff -c file_name 查看對照的輸出
6. 更名
cvs里沒有cvs move或cvs rename兩個命令;
可先移動老命名文件:cvs remove old_file_name;
然后再增加新命名文件實現(xiàn)更名操作:cvs add new_file_name;
例:將文件tt.c改名為test.c,具體操作如下
mv tt.c test.c
cvs remove -f tt.c
cvs commit -m "remove for rename" tt.c
cvs add test.c
7. 導(dǎo)出不帶CVS目錄的源代碼文件
每個開發(fā)目錄下,CVS都創(chuàng)建了一個CVS/目錄。里面有文件用于記錄當(dāng)前目錄和CVS庫之間的對應(yīng)信息。項目發(fā)布的時候一般不希望把文件目錄還帶著含有 CVS信息的CVS目錄導(dǎo)出,這個一次性的導(dǎo)出過程使用cvs export命令,不過export只能針對一個TAG或者日期導(dǎo)出;
cvs export -r release1 project_name;
cvs export -D 20021023 project_name
cvs export -D now project_name
8. 基線標(biāo)識
多個文件各自版本號不一樣,項目到一定階段,可以給所有文件統(tǒng)一指定一個階段里程碑版本號,方便以后按照這個階段里程碑版本號導(dǎo)出項目,同時也是項目的多個分支開發(fā)的基礎(chǔ);
確認(rèn)版本基線cvs tag release_1_0
開始一個新的版本基線;
cvs commit -r 2 標(biāo)記所有文件開始進(jìn)入2.0的開發(fā)
cvs update -j release_1_0_patch_1
CVS 代表協(xié)作版本系統(tǒng);這是一個將一組文件放在層次目錄樹中以保持同步的系統(tǒng)。人們可以從 CVS 服務(wù)器上更新他們的本地層次樹副本,并將修改的結(jié)果或新文件發(fā)回;或者刪除舊文件。
CVS 基于客戶端/服務(wù)器的行為使得其可容納多用戶,構(gòu)成網(wǎng)絡(luò)也很方便。這一特性使得 CVS 成為位于不同地點的人同時處理數(shù)據(jù)文件(特別是程序的源代碼)時的首選。
所有重要的免費(fèi)軟件項目都使用 CVS 作為其程序員之間的中心點,以便能夠綜合各程序員的改進(jìn)和更改。這些項目包括: Gnome, KDE, The GIMP, Wine, 等等。
所以,理所當(dāng)然的,MandrakeSoft 也使用 CVS 作為其自身的開發(fā)管理平臺。
下面是我自己在配置CVS服務(wù)器和客戶端的一點步驟總結(jié),希望能幫你節(jié)省時間,一步到位^-^
配置服務(wù)器的全部步驟如下:
1:我用的是linux redhat9.0
2:建立了cvs用戶組
groupadd cvs
3.建立cvs組的cvsroot用戶和所屬的目錄
useradd -g cvs -G cvs -d/home/cvsroot cvsroot
4:為cvsroot用戶添加密碼
passwd cvsroot
5:改變/home/cvsroot的目錄屬性
chmod 775 /home/cvsroot
6:初始化cvs源碼庫,此操作生成目錄/home/cvsroot/CVSROOT,其下為一些初始化文件
cvs -d/home/cvsroot init
7:創(chuàng)建可以登陸cvs服務(wù)的用戶及密碼,需要創(chuàng)建文件passwd
vi /home/cvsroot/CVSROOT/passwd
文件內(nèi)容如下:
steven:xxxxx:cvsroot
8.xxxxxx為密碼,由以下文件生成: vi /home/cvsroot/passwdgen.pl 文件內(nèi)容:
#!/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";
9.如果需要密碼為:some,則敲入: passwdgen.pl "some" 回車即可得到加密密碼,用其替換passwd文件中的xxxxxx
10.加入cvs服務(wù)(我的redhath9缺省就有cvs服務(wù),所以不用加)
vi /etc/services
cvspserver 2401/tcp #pserver cvs service
cvspserver 2401/udp #pserver cvs service
11.cvs 服務(wù)由inted來喚起,因此需要改動inetd提供的服務(wù),我的redhat使用的是inetd 方式則在文件/etc/inetd.conf中加入如下的內(nèi)容:cvspserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver
我的redhat9使用的是xinetd方式,所以在xinetd.d目錄下添加需要啟動的服務(wù):
cd /etc/xinetd.d
vi cvspserver
文件內(nèi)容:
service cvspserver
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/home/cvsroot pserver
log_on_failure += USERID
}
12.重新啟動inetd或者xinetd:
/etc/rc.d/init.d/xinetd restart
13.檢查cvspserver服務(wù)是否已經(jīng)啟動
netstat -l |grep cvspserver
結(jié)果如下:
tcp 0 0 *:cvspserver *:* LISTEN
以上結(jié)果全部通過,但是在我的客戶機(jī)(redhat9)上執(zhí)行
cvs -d :pserver:steven@192.168.211.72:/home/cvsroot login
輸入密碼后,返回connection confuse信息
補(bǔ):
cvs -d :pserver:steven@192.168.211.72:/home/cvsroot login
輸入密碼后,沒有收到任何消息,即表示成功
^_^ no news is a good news!!
在客戶端,設(shè)置環(huán)境變量如下:
export CVS_RSH=ssh
export CVSROOT=:pserver:username@ip:/home/cvsroot
你可以
echo $CVS_RSH
ssh
echo $CVSROOT
:pserver:username@ip:/home/cvsroot
這樣你在客戶端就可以直接輸入 cvs login登陸了
其它操作都可以直接cvs command 了