6、 修改之后把文件提交到CVS服務(wù)器
a)、只有一個(gè)用戶對(duì)文件進(jìn)行修改的情況
用自己喜歡的編輯器對(duì)checkout出來的文件進(jìn)行修改,修改之后的文件在沒有提交之前會(huì)是紅色的,如下圖example.h文件.
選中紅色的文件example.h后右擊選擇“Commit Selection”選項(xiàng),如果沒有其它用戶也對(duì)其進(jìn)行修改并已經(jīng)提交到CVS服務(wù)器上,一切正常的話將把example.h文件提交到CVS服務(wù)器并把圖標(biāo)恢復(fù)成原來的顏色。
b)、兩個(gè)或兩個(gè)以上的用戶對(duì)同一文件的不同部分進(jìn)行修改的情況
這種情況是如用戶A與用戶B都checkout了文件example.h,內(nèi)容如下:
int callby (int count)
{
printf("ExcelStor!
");
}
void main(int argv,char *argc)
{
//added by my cvs
printf("I am Cather
");
}
int mainexample()
{
printf("OK
");
}
然后用戶A修改成如下,并提交到CVS服務(wù)器(一般將正常提交):
int callby (int count)
{//add
printf("ExcelStor!
");
}
void main(int argv,char *argc)
{
//added by my cvs
printf("I am Cather
");
}
int mainexample()
{//add
printf("OK
");
}
接著用戶B修改成如下:
int callby (int count)
{//add
printf("ExcelStor!
");
}
void main(int argv,char *argc)
{
//modified
printf("I am Cather
");
}
int mainexample()
{//add
printf("OK
");
}
當(dāng)用戶B選擇“Commit Selection”時(shí)將提示:
cvs server: Up-to-date check failed for `example.h'
cvs [server aborted]: correct above errors first!
此時(shí)表明已經(jīng)有用戶對(duì)同一個(gè)文件example.h進(jìn)行修改并提交到CVS服務(wù)器,這時(shí)要先選擇“Update Selection”對(duì)本地example.h與CVS服務(wù)器上的example.h文件進(jìn)行同步與合并,不用選中出現(xiàn)的任何選項(xiàng),直接選擇“OK”,這時(shí)將顯示如下:
cvs -z9 update example.h (in directory C:my cvsSTWsrc)
RCS file: /home/cvsroot/STW/src/example.h,v
retrieving revision 1.5
retrieving revision 1.6
Merging differences between 1.5 and 1.6 into example.h
M example.h
***** CVS exited normally with code 0 *****
表明用戶B與用戶A的修改已經(jīng)合并成功,同時(shí)文件example.h的圖標(biāo)也將變成紅色,合并后的文件是存放在用戶B的本地機(jī)上,為了更新到CVS服務(wù)器還必須選中example.h并右擊選擇“Commit Selection”才能把用戶A與用戶B的修改合并后的結(jié)果提交到CVS服務(wù)器上。注:M表示此文件已經(jīng)被修改過。
c)、兩個(gè)或兩個(gè)以上的用戶對(duì)同一個(gè)文件的相同部分進(jìn)行修改的情況
這種情況是如用戶A與用戶B都下載了文件example.h,內(nèi)容如下:
void main(int argv,char *argc)
{
printf("I am Cather
");
}
然后用戶A把文件修改成如下,并提交到CVS服務(wù)器(一般將正常提交):
void main(int argv,char *argc)
{
printf("I am Cather
");
printf("I am Pat
");
}
接著用戶B又把文件修改成如下:
void main(int argv,char *argc)
{
printf("I am Cather
");
printf("I love you Cather
");
}
如果用戶B這時(shí)選擇“Commit Selection”準(zhǔn)備把修改結(jié)果提交到CVS服務(wù)器,此時(shí)將顯示如下的錯(cuò)誤提示:
cvs -z9 commit -m "update in 11:20" example.h (in directory C:my cvsSTWsrc)
cvs server: Up-to-date check failed for `example.h'
cvs [server aborted]: correct above errors first!
***** CVS exited normally with code 1 *****
表明用戶B的修改與其它用戶的修改沖突,這時(shí)要先選擇“Update Selection”,將顯示如下提示:
cvs -z9 update example.h (in directory C:my cvsSTWsrc)
RCS file: /home/cvsroot/STW/src/example.h,v
retrieving revision 1.9
retrieving revision 1.10
Merging differences between 1.9 and 1.10 into example.h
rcsmerge: warning: conflicts during merge
cvs server: conflicts found in example.h
C example.h
***** CVS exited normally with code 0 *****
example.h前面的C表示與其它用戶的修改有沖突,并且文件的圖標(biāo)會(huì)加顯示一個(gè)“C”,雙擊example.h將顯示example.h的內(nèi)容,如下:
void main(int argv,char *argc)
{
printf("I am Yanxi
");
printf("I am Cather
");
<<<<<<< example.h
printf("I love you Yanxi,too!
"); //這部分為你的修改
=======
printf("I love you Cather!
"); //這部分為其它用戶的修改
>>>>>>> 1.10
}
這時(shí)你應(yīng)該與用戶A進(jìn)行協(xié)商以決定終要怎樣修改。比如,可以修改成:
void main(int argv,char *argc)
{
printf("I am Yanxi
");
printf("I am Cather
");
printf("I love you Yanxi,too!
"); //這部分為你的修改
printf("I love you Cather!
"); //這部分為其它用戶的修改
}
然后選擇“Commit Selection”進(jìn)行提交,將顯示如下的提示信息:
cvs -z9 commit -m "update in 11:20" example.h (in directory C:my cvsSTWsrc)
Checking in example.h;
/home/cvsroot/STW/src/example.h,v <-- example.h
new revision: 1.11; previous revision: 1.10
done
***** CVS exited normally with code 0 *****
表明用戶A與用戶的修改已經(jīng)合并成功。這樣,向CVS服務(wù)器提交文件所會(huì)遇到的問題也基本上是這些,用戶要根據(jù)所遇到的實(shí)際問題進(jìn)行修改。
7、 向CVS服務(wù)器添加新文件
在本地添加文件后,要提交到服務(wù)端。先選中文件,然后點(diǎn)擊“添加按鈕”,添加文件后,再在右鍵菜單中選擇提交命令“Commit Selection”即可。選中文件example.h.bak,因?yàn)閑xample.h.bak當(dāng)前不是CVS的文件,此時(shí)“添加按鈕”將由不可選狀態(tài)變成可選狀態(tài),所以Status中顯示為“NonCvs file”,選擇“添加按鈕”之后example.h.bak圖標(biāo)將變成紅色并增加了一個(gè)A字母,如下:
然后選中example.h.bak,右擊,選擇“Commit Selection”把文件example.h.bak提交到CVS服務(wù)器上而成為CVS的一個(gè)文件。
8、 結(jié)束語
來到這里,你基本上已經(jīng)能為自己或公司配置一個(gè)實(shí)用的CVS服務(wù)器與WinCVS客戶端,配合使用CVS進(jìn)行系統(tǒng)開發(fā)或其它文檔的版本管理與控制。