cvs配置和使用

WinCVS的配置與使用方法

1、 WinCVS簡介:
WinCVS是CVS的一個客戶端軟件,它運行在Windows上,用來在 Windows上登錄CVS服務器,然後進行一些CVS相關的操作與管理。由於當前很多的企業內部都採用Linux/Unix做服務器,而用 Windows做客戶端,所以,WinCVS與CVS服務器配合使用將組成最強有力的版本控制與管理的系統之一。

2、 WinCVS的下載與安裝;
最新的WinCVS可以從http://sourceforge.net/project/showfiles.php?group_id=10072地址下載到,也可以在http://sourceforge.net/project 上下載到最新的或其它版本的WinCVS。
下載到相應的版本後根據嚮導進行安裝,已經要使用CVS的用戶,安裝這個WinCVS應該沒什麼問題吧!

3、 配置WinCVS:
a、 一般選項的設置,選擇Admin->Preferences…,出現如下界面:
第一、 Authentication:用來配置cvs服務器的認證方式,可以從下拉框中選擇其它的認證方式,不過一般只要選擇默認的pserver方式就可以,要注意的是必須與cvs服務器配置時所指定的認證方式一致;
第二、 Path:用來配置cvs在服務器上的主目錄路徑,也就是服務器上用進行cvs初始化的目錄,如:/home/cvsroot;
第三、 Host Address:用來配置cvs服務器所在服務器的地址,可以是IP地址,也可以是DNS名,如:10.104.1.204;
第四、 User name:用來配置要使用些WinCVS來登錄CVS服務器的用戶名,如:cvsyxwu,用戶的登錄必須由管理員把其添加cvs用戶組中;
第五、 CVSROOT:此項一般都不需要用戶進行修改,用戶在輸入上邊的幾個選項時,系統將自動根據用戶的輸入生成此項的相應內容。
b、 全局選項的設置,在上一個界面上選擇“Globals”:

此項的配置主要是要注意這幾選項:
第一,Checkout read-only不要選上,否則,checkout出來的源代碼將不允許用戶進行
修改,並且此選項默認是選中的;
第二,Prune (remove) empty directories也不要選上,否則,會自動刪除空目錄;
第三,對一般配置沒有特殊要求的,把Dirty files support、Supply control when adding
與TCP/IP compression選項選中;
4、 登錄服務器:
選擇Admin->login,將出現如下對話框要求用戶輸入登錄口令

輸入口令後,選擇“OK”按鈕,如果CVS服務器與WinCVS的配置都沒出錯的話,將在CVS的狀態欄中提示:
cvs -z9 -d :pserver:[email protected]:/home/cvsroot login
Logging in to :pserver:[email protected]:2401/home/cvsroot
***** CVS exited normally with code 0 *****
code 0表示正確的登錄;而如果出錯的話,將是code 1,那麼要根據錯誤的提示進行相應的修改。
5、 從CVS服務器上check out相應的模塊:
第一, 在workspace中的Modules選中要存放checkout模塊的目錄;
第二, 選擇Create->Checkout Modeles,將出現如下對話框:

其中,Module name and path on the server就是要存放checkout 內容的目錄,由用戶輸入;而Local folder to checkout to就是第一中用戶所選擇的目錄。
6、 修改之後把文件提交到CVS服務器
a)、只有一個用戶對文件進行修改的情況
用自己喜歡的編輯器對checkout出來的文件進行修改,修改之後的文件在沒有提交之前會是紅色的,如下圖example.h文件:
選中紅色的文件example.h後右擊選擇“Commit Selection”選項,如果沒有其它用戶也對其進行修改並已經提交到CVS服務器上,一切正常的話將把example.h文件提交到CVS服務器並把圖標恢復成原來的顏色。
b)、兩個或兩個以上的用戶對同一文件的不同部分進行修改的情況
這種情況就是如用戶A與用戶B都checkout了文件example.h,內容如下:
int callby (int count)
{
printf("ExcelStor!/n");
}
void main(int argv,char *argc)
{
//added by my cvs
printf("I am Cather/n");
}
int mainexample()
{
printf("OK/n");
}
然後用戶A修改成如下,並提交到CVS服務器(一般將正常提交):
int callby (int count)
{//add
printf("ExcelStor!/n");
}
void main(int argv,char *argc)
{
//added by my cvs
printf("I am Cather/n");
}
int mainexample()
{//add
printf("OK/n");
}
接着用戶B修改成如下:
int callby (int count)
{//add
printf("ExcelStor!/n");
}
void main(int argv,char *argc)
{
//modified
printf("I am Cather/n");
}
int mainexample()
{//add
printf("OK/n");
}
當用戶B選擇“Commit Selection”時將提示:
cvs server: Up-to-date check failed for `example.h'
cvs [server aborted]: correct above errors first!
此時表明已經有用戶對同一個文件example.h進行修改並提交到CVS服務器,這時
要先選擇“Update Selection”對本地example.h與CVS服務器上的example.h文件進行
同步與合併,不用選中出現的任何選項,直接選擇“OK”,這時將顯示如下:
cvs -z9 update example.h (in directory C:/my cvs/STW/src/)
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的修改已經合併成功,同時文件example.h的圖標也將變成紅色,合併後的文件是存放在用戶B的本地機上,爲了更新到CVS服務器還必須選中example.h並右擊選擇“Commit Selection”才能把用戶A與用戶B的修改合併後的結果提交到CVS服務器上。注:M表示此文件已經被修改過。
c)、兩個或兩個以上的用戶對同一個文件的相同部分進行修改的情況
這種情況就是如用戶A與用戶B都下載了文件example.h,內容如下:
void main(int argv,char *argc)
{
printf("I am Cather/n");
}
然後用戶A把文件修改成如下,並提交到CVS服務器(一般將正常提交):
void main(int argv,char *argc)
{
printf("I am Cather/n");
printf("I am Pat/n");
}
接着用戶B又把文件修改成如下:
void main(int argv,char *argc)
{
printf("I am Cather/n");
printf("I love you Cather/n");
}
如果用戶B這時選擇“Commit Selection”準備把修改結果提交到CVS服務器,此
時將顯示如下的錯誤提示:
cvs -z9 commit -m "update in 11:20" example.h (in directory C:/my cvs/STW/src/)
cvs server: Up-to-date check failed for `example.h'
cvs [server aborted]: correct above errors first!

***** CVS exited normally with code 1 *****
表明用戶B的修改與其它用戶的修改衝突,這時要先選擇“Update Selection”,將顯示如下提示:
cvs -z9 update example.h (in directory C:/my cvs/STW/src/)
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表示與其它用戶的修改有衝突,並且文件的圖標會加顯示一個“C”,如下所示:

雙擊example.h將顯示example.h的內容,如下:
void main(int argv,char *argc)
{
printf("I am Yanxi/n");
printf("I am Cather/n");
<<<<<<< example.h
printf("I love you Yanxi,too!/n"); //這部分爲你的修改
=======
printf("I love you Cather!/n"); //這部分爲其它用戶的修改
>>>>>>> 1.10
}
這時你應該與用戶A進行協商以決定最終要怎樣修改。比如,可以修改成:
void main(int argv,char *argc)
{
printf("I am Yanxi/n");
printf("I am Cather/n");
printf("I love you Yanxi,too!/n"); //這部分爲你的修改
printf("I love you Cather!/n"); //這部分爲其它用戶的修改
}
然後選擇“Commit Selection”進行提交,將顯示如下的提示信息:
cvs -z9 commit -m "update in 11:20" example.h (in directory C:/my cvs/STW/src/)
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與用戶的修改已經合併成功。

這樣,向CVS服務器提交文件所會遇到的問題也基本上就是這些,用戶要根據所遇到的實際問題進行修改。
7、 向CVS服務器添加新文件
在本地添加文件後,要提交到服務端。先選中文件,然後點擊“添加按鈕”,添加文件後,再在右鍵菜單中選擇提交命令“Commit Selection”即可。

如圖,選中文件example.h.bak,因爲example.h.bak當前不是CVS的文件,此時“添加按鈕”將由不可選狀態變成可選狀態,所以 Status中顯示爲“NonCvs file”,選擇“添加按鈕”之後example.h.bak圖標將變成紅色並增加了一個A字母,如下:

然後選中example.h.bak,右擊,選擇“Commit Selection”把文件example.h.bak提交到CVS服務器上而成爲CVS的一個文件。

發佈了32 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章