淺談Netbeans CVS服務(wù)器架設(shè)方法
在團(tuán)隊(duì)開發(fā)的過(guò)程當(dāng)中,代碼的版本管理非常重要,有效的代碼版本管理可以提高團(tuán)隊(duì)開發(fā)的效率,還可以進(jìn)行代碼的備份和恢復(fù),是團(tuán)隊(duì)開發(fā)必備的一個(gè)環(huán)節(jié)。CVS是代碼版本管理的一種實(shí)現(xiàn),也是非常流行的一種代碼管理框架。Netbeans里面提供了非常強(qiáng)大和友好的CVS支持,但是在使用Netbeans CVS支持前,我們必須首先完成Netbeans CVS服務(wù)器的假設(shè)及CVS代碼庫(kù),在這里提供一些經(jīng)驗(yàn):
1、Netbeans CVS服務(wù)器架設(shè)。在這里,我提供的是在windows環(huán)境下CVS服務(wù)器架設(shè)的例子。安裝cvsnt 2.5(windows下的CVS服務(wù)器),下載地址:http://www.cvsnt.org,為了方便管理,可以安裝wincvs(wincvs是一個(gè)在windows環(huán)境下管理cvs服務(wù)器的客戶端工具)。
2、安裝完畢后,就可以開始配置cvsnt:打開cvsnt control panel,在初始窗口確保CVSNT和CVSNT LOCK兩個(gè)服務(wù)已經(jīng)打開,點(diǎn)擊Repository Configuration,點(diǎn)擊add添加一個(gè)庫(kù),這個(gè)庫(kù)就是我們所需管理的代碼庫(kù)(事先在Netbeans里創(chuàng)建一個(gè)工程,并把這個(gè)工程的文件夾拷貝到另一個(gè)路徑中),在location中選擇路徑,點(diǎn)確定,就可以添加一個(gè)庫(kù)了,在添加庫(kù)的過(guò)程中,CVSNT會(huì)自動(dòng)地生成一些目錄和文件,使得這個(gè)工程可以在CVS服務(wù)器中使用。接下來(lái),在server setting中根據(jù)選擇使用cvs服務(wù)器的用戶,點(diǎn)確定,cvsnt就配置成功了。
3、使用wincvs管理Netbeans CVS服務(wù)器:在這里,使用的是wincvs 2.1,下載地址:http://sourceforge.net/projects/cvsgui/,安裝完wincvs后,點(diǎn)擊View->Browse Location->change...,改變wincvs管理員的工作目錄,然后點(diǎn)擊Remote->Create a repository,添加一個(gè)cvs資源庫(kù),在CVSROOT右邊點(diǎn)擊按鈕,protocol選擇pserver,Repository填入在第2步中添加的那個(gè)庫(kù)的名稱,并輸入cvs服務(wù)器地址,端口(2401),用戶名(可以不輸入密碼),點(diǎn)確定,如果連接成功的話,說(shuō)明cvs服務(wù)器可用。至于更多wincvs管理的方法,在這里就不贅述了,網(wǎng)上有很多這樣的文章。
4、配置windows防火墻,在控制面板->windows防火墻->例外中添加端口2401,使2401端口可用。如果還有其他防火墻軟件,如瑞星等,也應(yīng)該配置,使2401端口可用。這一點(diǎn)是很重要的,無(wú)論你的CVS服務(wù)器配置的多好,只要2401端口沒有打開,一樣不能訪問(wèn)。
5、在Netbeans中使用CVS支持。假設(shè)我們?cè)贑VS服務(wù)器中有一個(gè)路徑為/repository的CVS資源庫(kù),資源庫(kù)下有一個(gè)HISys的項(xiàng)目。首先,開發(fā)團(tuán)隊(duì)的每一個(gè)成員都必須先簽出(也就是下載)這一項(xiàng)目:我使用的是Netbeans 6.0 beta2,點(diǎn)擊Versioning - CVS - checkout(5.5里是CVS - 簽出):
CVS ROOT指得是CVS資源庫(kù)的地址,例如::pserver:Administrator@125.216.227.115:2401/repository,其中pserver是CVS服務(wù)器使用的協(xié)議,Administrator是可以登錄到CVS資源庫(kù)的用戶名,125.216.227.115是CVS服務(wù)器的IP地址,2401是CVS服務(wù)器使用的端口,/repository是資源庫(kù)的路徑(在CVSNT里定義)??梢灾苯虞斎隒VS Root,也可以點(diǎn)擊Edit按鈕可視化地輸入CVS Root:
點(diǎn)擊下一步:
點(diǎn)擊Module旁邊的Browse按鈕,就可以看到CVS資源庫(kù)里面所有的項(xiàng)目:
選擇要簽出的項(xiàng)目,點(diǎn)擊Finish,就可以把整個(gè)項(xiàng)目從CVS服務(wù)器中簽出到本地了:
在使用CVS進(jìn)行版本控制時(shí)必須注意一點(diǎn),在我們向CVS服務(wù)器提交代碼修改前,必須先更新代碼,如果提交前不更新代碼的話,可能會(huì)造成沖突,因?yàn)槠渌拈_發(fā)人員可能也會(huì)對(duì)同一個(gè)代碼文件進(jìn)行修改并提交到CVS服務(wù)器上,這樣版本就會(huì)發(fā)生沖突。當(dāng)然,即使發(fā)生沖突,也不要緊,因?yàn)镹etbeans的CVS支持里提供了有效的沖突解決方案,用戶可以選擇正確的版本,也可以將本地代碼回滾到本地歷史記錄或覆蓋成CVS服務(wù)器上的某一個(gè)版本。
右鍵點(diǎn)擊項(xiàng)目,選擇CVS,可以看到整個(gè)CVS的菜單欄:
Update表示從CVS服務(wù)器中的代碼更新下來(lái),Commit表示將本地的代碼提交到CVS服務(wù)器中。當(dāng)我們對(duì)從CVS服務(wù)器中簽出的代碼進(jìn)行修改后,那一個(gè)被修改的的源文件在project視圖當(dāng)中會(huì)顯示為藍(lán)色,表示這個(gè)源代碼文件修改過(guò),但未提交:
點(diǎn)擊代碼的右鍵 - CVS,仍然可以看到上圖所示的菜單欄,我們可以點(diǎn)擊Diff比較本地版本和CVS服務(wù)器版本:
可以看到,在Diff窗口里,左邊是CVS服務(wù)器上的版本,右邊是本地版本(如果服務(wù)器中有多個(gè)版本,還可以在上面那個(gè)窗口選擇),中間綠色的那一帶是本地版本與CVS服務(wù)器版本的差異,從比較中就可以清楚地看到那些代碼,在哪個(gè)地方進(jìn)行了修改。
如果更新或提交資源時(shí)發(fā)生沖突,可以點(diǎn)擊Resolve conflit來(lái)解決沖突,在解決一個(gè)文件發(fā)生沖突時(shí),Netbeans會(huì)在源文件中加入CVS上的版本信息,并用<<<<<<<----來(lái)標(biāo)識(shí),這樣,源文件就發(fā)生了編譯錯(cuò)誤,采用Resolve conflit來(lái)解決沖突時(shí),Netbeans會(huì)提示你選擇是保留CVS版本,還是本地版本,是將本地版本覆蓋CVS服務(wù)器上的版本,還是CVS上的版本覆蓋本地版本,還是把兩個(gè)合并起來(lái)。
Netbeans的CVS服務(wù)器支持還有很多強(qiáng)大的功能,這里只是給出一些基本的介紹,更多的支持,大家在團(tuán)隊(duì)開發(fā)中會(huì)體會(huì)的到。
【編輯推薦】