您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源配置管理工具 > cvs
Linux與Windows CVS服務(wù)器配置與使用
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2014/3/26 17:01:40 ] 推薦標(biāo)簽:CVS 服務(wù)器 版本管理

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ā)或其它文檔的版本管理與控制。

上一頁1234下一頁
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd