乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      版本控制相關(guān)資源( Pragmatic Version Control Sources )

       ekylin 2006-08-07

      版本控制相關(guān)資源( Pragmatic Version Control Sources )

      1、cvs相關(guān)

      在Eclipse 2.0中使用版本控制系統(tǒng)CVS

      董向輝 (xianghui.dong@mail.ia.ac.cn)
      2002 年 7 月

      2002年6月28日,Eclipse 2.0正式版已經(jīng)正式完成,這將是Java開發(fā)工具歷史上的一個(gè)重要事件,Eclipse開始步入成熟階段。本文借此機(jī)會(huì)介紹在Eclipse中使用版本控制系統(tǒng)CVS的一些經(jīng)驗(yàn)和技巧。首先介紹為什么Eclipse要使用CVS來(lái)作為自己的版本控制系統(tǒng)而放棄了有著很好口碑的Visual Age Java的ENVY,然后簡(jiǎn)要講述CVS系統(tǒng)的背景及NT平臺(tái)下CVS服務(wù)器的安裝和設(shè)置。接下來(lái),針對(duì)Eclipse,詳細(xì)講解了使用CVS進(jìn)行團(tuán)隊(duì)開發(fā)時(shí)的開發(fā)流程以及在Eclipse中具體使用的重要操作方法。

      背景

      在Visual Age Java之后,IBM推出了新一代的開放源碼軟件開發(fā)平臺(tái)Eclipse,在此基礎(chǔ)上打造其核心產(chǎn)品WebSphere家族。而對(duì)于大部分個(gè)人開發(fā)者而言,Eclipse作為一個(gè)嶄新的Java集成開發(fā)環(huán)境提供了一個(gè)非常具有吸引力的選擇,已經(jīng)得到了越來(lái)越多開發(fā)者的關(guān)注和喜愛。

      項(xiàng)目的版本控制對(duì)于團(tuán)隊(duì)開發(fā)是極端重要的,對(duì)于個(gè)人開發(fā)者也是項(xiàng)目復(fù)雜化時(shí)不可缺少的工具。

      在Visual Age Java中,由于Visual Age Java特有的項(xiàng)目數(shù)據(jù)存儲(chǔ)方式――所有的相關(guān)文件都存在一個(gè)二進(jìn)制文件中,可以做到直接內(nèi)置的版本控制,這一系統(tǒng)也就是著名的ENVY,它在Visual Age Java的使用者中有著非常好的口碑。

      而在Eclipse中,情況有了變化。ENVY把項(xiàng)目數(shù)據(jù)存儲(chǔ)在二進(jìn)制文件中,也即所謂基于Repository的存儲(chǔ),而幾乎所有其他集成開發(fā)環(huán)境的項(xiàng)目數(shù)據(jù)存儲(chǔ)方式都是基于文件的,項(xiàng)目的所有相關(guān)文件直接作為物理文件存儲(chǔ)在硬盤上。兩種方式各有利弊,有許多剛接觸Visual Age Java的用戶很不習(xí)慣ENVY,認(rèn)為看不見文件使得自己失去了直接感,反過(guò)來(lái)也有Visual Age Java的忠實(shí)用戶極力支持和贊揚(yáng)ENVY。(不過(guò)作者認(rèn)為,在Visual Age Java中開發(fā)者至少可以幾乎完全不用花心思在文件路徑問(wèn)題上,這個(gè)問(wèn)題一般總是會(huì)耗費(fèi)新手甚至老手的大量時(shí)間和精力。)在Eclipse中最終使用了基于文件的存儲(chǔ)方式,這樣增強(qiáng)了透明性和互操作性,但是要達(dá)到Visual Age Java以前做到的項(xiàng)目管理和源代碼控制就必須采用不同的方式。

      Eclipse的內(nèi)置版本支持

      Eclipse本身內(nèi)置了一定程度的版本支持,也就是所謂的Local History。在Eclipse中編輯的文件每次存盤都會(huì)留下記錄,可以隨時(shí)與歷史記錄比較,恢復(fù)到某一個(gè)時(shí)刻的狀態(tài)。在資源視圖(Resource Perspective)或者Java視圖(Java Perspective)中的文件上點(diǎn)右鍵,選擇Compare With,Local History,就會(huì)得到如下的畫面,可以很清晰看到各個(gè)版本的區(qū)別。

      圖1:Eclipse中的內(nèi)置版本支持:Local History。
      圖1:Eclipse中的內(nèi)置版本支持:Local History。

      如果需要,則可以通過(guò)Replace With,Local History來(lái)恢復(fù)到任一個(gè)以前的版本。當(dāng)然,這樣版本的歷史是有限制的,可以在Eclipse的Preference中設(shè)置。在Preference―>Workbench->Local History中,可以設(shè)置保持最多保持幾天的文件,每一文件的版本數(shù)目,歷史文件的大小限制。

      但是,這樣的版本系統(tǒng)只實(shí)現(xiàn)了最基本的版本功能,如果想把文件某一個(gè)狀態(tài)標(biāo)記為一個(gè)版本,加上注釋(僅僅從Local History中的保存時(shí)間很難看出每一個(gè)版本的特點(diǎn),也難以找到重要的關(guān)鍵版本),或者想把某個(gè)目錄乃至整個(gè)項(xiàng)目版本化,Eclipse內(nèi)置的Local History都是無(wú)能為力的。

      好在Eclipse基于開放的思想,采用了業(yè)界標(biāo)準(zhǔn)的版本控制系統(tǒng)CVS,這樣不僅很好地實(shí)現(xiàn)了版本控制的功能,對(duì)于已經(jīng)熟悉CVS的開發(fā)者來(lái)說(shuō)也更容易使用,更重要的是,可以為團(tuán)隊(duì)開發(fā)提供更加靈活和開放的選擇:項(xiàng)目的數(shù)據(jù)可以存儲(chǔ)在一個(gè)CVS服務(wù)器內(nèi),不同的開發(fā)者甚至可以采用不同的開發(fā)工具,只要這些工具都支持CVS。也許這時(shí)我們可以理解為什么Eclipse放棄了Visual Age Java的業(yè)已很成功的ENVY系統(tǒng),這一點(diǎn)很好地體現(xiàn)了Eclipse的開放性和對(duì)其他軟件的良好互操作性。

      CVS

      CVS是Concurrent Versions System(并發(fā)版本系統(tǒng))的縮寫,基于Unix體系中成熟的SCCS(Source Code Control System)和RCS(Revision Control System)開發(fā),是一個(gè)開放源碼的項(xiàng)目,目前已是版本控制系統(tǒng)的主流軟件。一個(gè)很常見的使用CVS的場(chǎng)合,就是開放源碼項(xiàng)目。由于開放源碼項(xiàng)目的開發(fā)者的分布性,對(duì)于版本管理的要求更加嚴(yán)格,而目前大部分的開放源碼項(xiàng)目幾乎都是采用CVS來(lái)管理源代碼,CVS的標(biāo)準(zhǔn)性和強(qiáng)大可見一斑。

      CVS采用客戶機(jī)/服務(wù)器體系,代碼以及各種版本存儲(chǔ)在中心服務(wù)器內(nèi),每一個(gè)個(gè)體開發(fā)者開發(fā)時(shí)都首先從服務(wù)器上獲得一份自己的拷貝,在此基礎(chǔ)上進(jìn)行開發(fā),以避免直接影響服務(wù)器上的數(shù)據(jù)。開發(fā)者可以隨時(shí)把自己的新代碼提交給服務(wù)器,并通過(guò)更新獲得代碼的最新狀態(tài),保持與其他開發(fā)者的一致。

      CVS對(duì)于網(wǎng)絡(luò)是透明的,開發(fā)者可以使用客戶端軟件(幾乎所有的平臺(tái)上都有相應(yīng)的客戶端軟件)在任何時(shí)候,任何地點(diǎn)通過(guò)網(wǎng)絡(luò)來(lái)獲取最新的代碼。

      對(duì)于Eclipse的開發(fā)者而言,Eclipse本身內(nèi)置了CVS支持,不需要使用其他客戶端軟件,只要建立一個(gè)CVS服務(wù)器,就可以使用這一強(qiáng)大的版本控制系統(tǒng)了。

      CVS起源于Unix/Linux平臺(tái),關(guān)于Unix/Linux平臺(tái)下的安裝使用的介紹文章很多,這里就不再重復(fù),讀者如果需要在Unix/Linux平臺(tái)下建立CVS服務(wù)器,可以參考本文附錄的相關(guān)資源。

      在Windows平臺(tái)上也有CVS的一個(gè)實(shí)現(xiàn)――CVSNT,CVSNT的安裝有一定困難,這里我們做一個(gè)簡(jiǎn)單介紹。 CVSNT的安裝

      首先到CVSNT的主頁(yè)http://www.下載最新版本,目前是CVSNT 1.11.1.3 (Build 57f)。

      CVSNT的安裝有一些注意事項(xiàng),請(qǐng)讀者盡量按照下面所說(shuō)的步驟來(lái)進(jìn)行安裝,描述主要針對(duì)Windows 2000。如果讀者在安裝過(guò)程中還有問(wèn)題,可以參考本文附錄的資源中關(guān)于CVSNT的安裝技巧的文章或郵件列表。

      1. CVSNT可以安裝在Windows NT4 服務(wù)器或工作站SP6, Windows 2000服務(wù)器或?qū)I(yè)版,Windows XP專業(yè)版上。
      2. 以管理員賬號(hào)登陸,首先修改環(huán)境變量。直接執(zhí)行安裝程序,很有可能在最后會(huì)出現(xiàn)無(wú)法創(chuàng)建路徑變量的錯(cuò)誤,為此我們首先修改環(huán)境變量,設(shè)定路徑。假設(shè)我們要把CVSNT安裝到D:appcvsnt目錄下(與CVSNT相關(guān)的內(nèi)容最好安裝到NTFS分區(qū)上,也盡量不要使用含有空格的目錄名或者文件名,雖然CVSNT已經(jīng)盡量支持包含空格的目錄名和文件名,但仍有可能出現(xiàn)問(wèn)題),那么打開控制面板,系統(tǒng)屬性,高級(jí),環(huán)境變量,系統(tǒng)變量中的Path,添加上D:appcvsnt并保存設(shè)置。
      3. 接下來(lái)可以執(zhí)行安裝程序,修改安裝目錄,一步步完成安裝。
      4. 從開始菜單的程序組中啟動(dòng)CVSNT配置程序Configure Server。這時(shí)應(yīng)該看到服務(wù)器還沒(méi)有運(yùn)行(CVSNT作為系統(tǒng)服務(wù)運(yùn)行),如果已經(jīng)運(yùn)行了,先把它停下來(lái)。
      5. 選擇第二個(gè)選項(xiàng)卡Repositories,首先勾上Repositories prefix(數(shù)據(jù)庫(kù)路徑前綴)的選項(xiàng)。CVSNT中只有一個(gè)數(shù)據(jù)庫(kù)路徑前綴,在這同一個(gè)前綴下,可以有多個(gè)數(shù)據(jù)庫(kù)。相應(yīng)的,所有的數(shù)據(jù)庫(kù)都位于數(shù)據(jù)庫(kù)路徑前綴對(duì)應(yīng)的目錄之下。這里我們假設(shè)數(shù)據(jù)庫(kù)都存儲(chǔ)在E:workcvsrepo下,點(diǎn)擊省略號(hào)按鈕來(lái)選擇E:workcvsrepo作為數(shù)據(jù)庫(kù)路徑前綴。
      6. 點(diǎn)擊下面的Add按鈕添加數(shù)據(jù)庫(kù)根,可以有多個(gè)。比如我們將/work作為我們的工作項(xiàng)目的存儲(chǔ)根。注意添加時(shí)系統(tǒng)自動(dòng)把已設(shè)定的E:workcvsrepo作為了路徑前綴。
      7. 選擇第三個(gè)選項(xiàng)卡Advanced,勾上全部選項(xiàng),包括Use local users instead of domain。設(shè)置臨時(shí)目錄,假設(shè)為E:workcvstemp。注意要保證臨時(shí)目錄的安全設(shè)置(右鍵點(diǎn)擊目錄屬性,共享,權(quán)限)給所有賬號(hào)以完全控制權(quán)限,包括SYSTEM賬號(hào)。并且,絕對(duì)不能把臨時(shí)目錄設(shè)在諸如C:WINNTTEMP或者C:Documents and Settings下的任何地方,因?yàn)檫@些地方對(duì)于用戶的訪問(wèn)是有限制的。
      8. 點(diǎn)擊應(yīng)用以保存設(shè)置,這一點(diǎn)相當(dāng)重要。
      9. 現(xiàn)在可以回到第一個(gè)選項(xiàng)卡,點(diǎn)擊Start按鈕,服務(wù)應(yīng)該正常啟動(dòng)運(yùn)行了。如果有問(wèn)題,可以打開一個(gè)命令行窗口,輸入path命令來(lái)檢查路徑是否已經(jīng)設(shè)置正確,也許需要重新啟動(dòng)來(lái)使設(shè)置生效。
      10. 打開一個(gè)命令行窗口,輸入如下命令,用你的實(shí)際計(jì)算機(jī)名和用戶名替代尖括號(hào)內(nèi)的內(nèi)容,注意對(duì)于NT Server,不能用localhost作為計(jì)算機(jī)名,必須使用實(shí)際計(jì)算機(jī)名:
        set cvsroot=:ntserver:<計(jì)算機(jī)名>:/work
        這一命令通過(guò)設(shè)定cvsroot這一環(huán)境變量,設(shè)定/work為目前的cvs數(shù)據(jù)庫(kù)根。這里使用ntserver模式,這一模式比較適合服務(wù)器就在本地的情形。它要求局域網(wǎng)或者域內(nèi)所有機(jī)器的用戶賬號(hào)相同,客戶端使用Windows NT,Windows 2000或者Windows XP。pserver模式是缺省的,除非關(guān)掉2401端口,下面我們的Eclipse就是使用pserver模式。
        cvs passwd -a <你的NT用戶名>
        這一命令設(shè)定CVS中的用戶名和密碼,輸入后將提示你輸入密碼。
        注意如果需要CVS 服務(wù)器同時(shí)以ntserver和pserver模式運(yùn)行,那么密碼最好不要和系統(tǒng)中用戶的真實(shí)密碼相同以保證安全。
        這里的用戶必須是服務(wù)器上的真實(shí)用戶,不過(guò)可以給真實(shí)用戶設(shè)定一個(gè)不同的使用名alias。使用命令:
        cvs passwd -a -r <你的NT用戶名>
        必須注意,這些名字里最好不要使用任何空格。如果必須的話,可以用雙引號(hào)括起來(lái)。
      11. 到此為止,CVS服務(wù)器已經(jīng)初步設(shè)置完成,可以使用了。缺省情況下,服務(wù)器將作為NT服務(wù)自動(dòng)運(yùn)行。讀者既可以使用命令行的CVS命令,也可以使用各種CVS客戶端來(lái)連接CVS服務(wù)器,執(zhí)行CVS操作。不過(guò),下面我們主要介紹在Eclipse中通過(guò)內(nèi)置的CVS支持來(lái)使用CVS系統(tǒng)。

      在Eclipse中使用CVS系統(tǒng)

      前面已經(jīng)提到,CVS的數(shù)據(jù)存放在服務(wù)器的數(shù)據(jù)庫(kù)中。為了支持Concurrent這一并發(fā)特點(diǎn),CVS使用了一個(gè)分枝(Branch)模型,以保證不同開發(fā)者的相對(duì)獨(dú)立,但是又高度集成。分枝可以看成一個(gè)開發(fā)團(tuán)隊(duì)共享的工作區(qū)(Workspace),在CVS數(shù)據(jù)庫(kù)中,有一個(gè)特殊的分枝稱為HEAD,代表主要工作流。

      開發(fā)者可以提交(Commit)自己的工作,并通過(guò)更新(Update)與其他人的最新修改保持同步。提交是把自己的修改提交給數(shù)據(jù)庫(kù),稱為輸出(Outgoing),更新則是得到其他人的修改,稱為輸入(Incoming)。每次提交之前,都應(yīng)該先更新,以保持與最新狀態(tài)同步。

      因此,在Eclipse中使用CVS進(jìn)行團(tuán)隊(duì)開發(fā),理想的開發(fā)流程應(yīng)該是這樣的(具體操作方法隨后介紹):

      圖2:團(tuán)隊(duì)開發(fā)流程
      圖2:團(tuán)隊(duì)開發(fā)流程

      1. 從最新狀態(tài)開始。開始工作前,要保證所有資源與最新的分枝狀態(tài)一致。對(duì)于從頭開始的新項(xiàng)目,首先要連接服務(wù)器,設(shè)定存儲(chǔ)那些資源文件。對(duì)于在服務(wù)器數(shù)據(jù)庫(kù)中已經(jīng)有記錄的項(xiàng)目,首先要通過(guò)更新來(lái)保證資源狀態(tài)最新。如果本地的工作沒(méi)有需要特別保存的,可以直接把數(shù)據(jù)庫(kù)中的最新版本Check Out As Project,或者Replace With,Latest from Repository。
      2. 進(jìn)行本地工作,保存修改。
      3. 同步。當(dāng)做好提交工作的準(zhǔn)備后,要和服務(wù)器數(shù)據(jù)庫(kù)同步。
        1. 首先應(yīng)該更新(Update),檢查所有的Incoming改變,輸入到本地,看是否會(huì)影響自己的工作,是否會(huì)造成沖突,破壞完整性等等。
        2. 檢查完更新后,可以確認(rèn)自己的工作和最新的Branch內(nèi)容是一致的,就可以提交(Commit)自己的修改了,標(biāo)上適當(dāng)?shù)淖⑨尅?

      下面介紹這一開發(fā)流程所用到的主要操作。

      對(duì)于一個(gè)新的項(xiàng)目而言,首先需要做的就是設(shè)置Eclipse來(lái)連接CVS服務(wù)器。首次連接將與服務(wù)器同步(Synchronize)。

      首先在Eclipse的資源視圖(Resource Perspective)或者Java視圖(Java Perspective)中的項(xiàng)目上點(diǎn)右鍵,選擇Team,Share Project,將出現(xiàn)提示窗口,選擇是使用已知的CVS數(shù)據(jù)庫(kù)位置還是新建數(shù)據(jù)庫(kù)位置。對(duì)于第一次連接CVS服務(wù)器的情況,將需要首先定義連接所需的服務(wù)器參數(shù)和路徑,用戶名,密碼等等。這些參數(shù)將得到保存,以后如果需要重新連接,就可以直接使用已知的CVS數(shù)據(jù)庫(kù)設(shè)置。

      這里我們選擇新建一個(gè)數(shù)據(jù)庫(kù)位置,進(jìn)入下一個(gè)輸入畫面。

      這里的主機(jī)名(Host)可以輸入localhost(在Windows NT 4下不可以這樣輸入),因?yàn)槲覀兊腃VS服務(wù)器就在本機(jī)上。

      接下來(lái)輸入/work,設(shè)定我們的項(xiàng)目數(shù)據(jù)存放在這一數(shù)據(jù)庫(kù)根路徑下。

      然后輸入用戶名和密碼。

      連接類型選擇pserver,端口是缺省的不用改動(dòng)。當(dāng)然,如果你修改過(guò)CVS服務(wù)器使用的端口,這里就要保持一致。

      圖3:在Eclipse中設(shè)置使用CVS系統(tǒng)
      圖3:在Eclipse中設(shè)置使用CVS系統(tǒng)

      接下來(lái)可以直接點(diǎn)擊Finish完成設(shè)置。如果點(diǎn)擊下一步,可以繼續(xù)定義在CVS中是否使用與項(xiàng)目名不同的名字作為模塊名,缺省是使用相同的名字。

      現(xiàn)在我們完成了項(xiàng)目與CVS服務(wù)器的連接,項(xiàng)目已經(jīng)和CVS服務(wù)器同步了。

      但是這并不意味著CVS已經(jīng)開始記錄版本信息。因?yàn)樵谝粋€(gè)項(xiàng)目中可能有相當(dāng)一部分資源文件不適合存儲(chǔ)到數(shù)據(jù)庫(kù)中記錄版本信息,比如編輯器生成的臨時(shí)文件,編譯生成的.class文件,或者某些編譯過(guò)程生成的二進(jìn)制文件等等。因此,Eclipse并不自動(dòng)把所有文件存儲(chǔ)到數(shù)據(jù)庫(kù)中,需要開發(fā)者手工指定把那些文件存儲(chǔ)到數(shù)據(jù)庫(kù)中,也就是加入版本控制add to version control。對(duì)于單個(gè)文件的指定,可以隨時(shí)在資源視圖(Resource Perspective)或者Java視圖(Java Perspective)中的文件上使用右鍵,選擇Team,Add to Version Control。如果需要存儲(chǔ)整個(gè)項(xiàng)目或者同時(shí)指定多個(gè)文件,則要使用同步(Synchronize)視圖。

      注意項(xiàng)目與CVS服務(wù)器連接完成并同步后,在Eclipse右下角的Tasks和Console的位置新出現(xiàn)了一個(gè)Synchronize窗口,下方狀態(tài)欄也顯示了這次同步的狀態(tài)信息。雙擊Synchronize窗口的標(biāo)題欄使之最大化,我們可以看到窗口上半部分列出了所有尚未指定加入數(shù)據(jù)庫(kù)的資源和文件。在這里我們可以同時(shí)選擇多個(gè)文件,甚至選擇整個(gè)項(xiàng)目,使用右鍵,選擇Team,Add to Version Control,就可以把多個(gè)文件或者整個(gè)項(xiàng)目加入到數(shù)據(jù)庫(kù)中,開始記錄其版本信息。

      我們可以看到,這時(shí)的同步視圖上標(biāo)明了處于Outgoing模式。同步(Synchronize)視圖有Incoming模式和Outgoing模式,對(duì)應(yīng)于提交(Commit)和更新(Update)操作,表示目前修改是來(lái)自本地還是來(lái)自服務(wù)器。當(dāng)然,視圖也可以同時(shí)顯示Incoming和Outgoing方向的變化。當(dāng)有變化時(shí),在下半部分的比較窗口可以顯示不同版本之間的差異和變化。進(jìn)一步地,可以通過(guò)工具條上的合并(Merge)操作來(lái)消除對(duì)同一文件不同修改所帶來(lái)的沖突。

      在此之后,當(dāng)完成對(duì)文件或者項(xiàng)目的修改,需要確認(rèn)修改,把最新的狀態(tài)存儲(chǔ)到數(shù)據(jù)庫(kù)中去,就需要執(zhí)行提交(commit)操作。類似的,我們可以在資源視圖(Resource Perspective)或者Java視圖(Java Perspective)中的文件上使用右鍵,選擇Team,Commit;或者在同步(Synchronize)視圖中同時(shí)提交多個(gè)文件乃至整個(gè)項(xiàng)目。注意,每次提交時(shí)都會(huì)提示輸入注釋,這是很重要的,作為每一個(gè)狀態(tài)的說(shuō)明和提示。

      當(dāng)我們需要把文件或者項(xiàng)目的不同版本進(jìn)行比較或者替換時(shí),可以在資源視圖(Resource Perspective)或者Java視圖(Java Perspective)中的文件上使用右鍵,選擇Team,Compare With或者Team,Replace With來(lái)完成。進(jìn)行比較時(shí)將打開一個(gè)比較編輯器,很好地表示不同版本之間的差異,和Local History類似。

      如果要了解CVS數(shù)據(jù)庫(kù)的內(nèi)容情況,可以使用CVS數(shù)據(jù)庫(kù)瀏覽視圖(CVS Repository Exploring Perspective)。我們可以點(diǎn)擊Eclipse左上角的開啟視圖(Open Perspective)按鈕,增加這一視圖到左邊的視圖瀏覽欄里。前面已經(jīng)提到,HEAD代表CVS數(shù)據(jù)庫(kù)里的主流內(nèi)容。展開Versions,可以看到以往的版本。另外,在右下角有數(shù)據(jù)庫(kù)的歷史記錄標(biāo)明每次修改的相關(guān)信息。

      如果需要導(dǎo)出某一版本,就要用到Check Out操作。在某一版本上右鍵選擇Check Out As Project,這將把這一版本導(dǎo)出為同名的項(xiàng)目,從而可以覆蓋已有的狀態(tài),或者選擇Check Out對(duì)話框來(lái)導(dǎo)出為其他項(xiàng)目。

      圖4:CVS數(shù)據(jù)庫(kù)瀏覽視圖
      圖4:CVS數(shù)據(jù)庫(kù)瀏覽視圖

      關(guān)于更詳細(xì)的CVS使用方法和技巧,可以參考Eclipse的幫助中相關(guān)內(nèi)容。

      關(guān)于作者:

      董向輝,1998年畢業(yè)于清華大學(xué),隨后進(jìn)入中科院自動(dòng)化所人工智能實(shí)驗(yàn)室直接攻博。科研興趣主要在演化計(jì)算和系統(tǒng)復(fù)雜性問(wèn)題,技術(shù)方面,從接觸Java開始,便一直保持著對(duì)Java的興趣并作為主要編程語(yǔ)言。同時(shí)注意關(guān)心新出現(xiàn)的有前景的相關(guān)技術(shù),聚焦點(diǎn)先后包括軟件工程,XML,J2ME等等。電子郵件地址:xianghui.dong@mail.ia.ac.cn。

      相關(guān)資源:

      關(guān)于CVS:
      http://www.,CVS官方網(wǎng)站,可以從這里下載最新版本的CVS(Unix/Linux平臺(tái)版本)以及相關(guān)的文檔和資料,例如Per Cederqvist的Version Management with CVS 這本官方手冊(cè)。
      http://laser./cvstutorials.html,一個(gè)中文的CVS簡(jiǎn)單教程。
      http://www.,CVSNT,在Windows NT上的CVS服務(wù)器,在此基礎(chǔ)上也有返回Unix/Linux平臺(tái)的版本。目前最新版本是CVSNT 1.11.1.3 (Build 57f)。
      http://www./mailman/listinfo/cvsnt,關(guān)于CVSNT的使用問(wèn)題的郵件列表。
      http://w1.858./~u85831169/InstallCVSNT.html,關(guān)于CVSNT安裝的一些技巧和知識(shí),感謝作者慷慨的準(zhǔn)許,本文參考了其中部分內(nèi)容。
      http:///cvsnt,另一個(gè)CVSNT安裝問(wèn)題的幫助和常見問(wèn)題回答。
      http://www.,Windows平臺(tái)下的圖形化CVS客戶端軟件。

      關(guān)于Eclipse:
      http://www.,Eclipse官方網(wǎng)站,可以從這里下載最新版本2.0。
      http://www-900.ibm.com/developerWorks/cn/java/l-ide/part2/index.shtml,VAJ之后是什么?,介紹從Visual Age Java到Eclipse,WSWB等等的來(lái)龍去脈以及各自的特點(diǎn)。
      http://dev./viewcvs/index.cgi/~checkout~/platform-vcm-home/docs/online/cvs_features2.0/cvs-faq.html,在Eclipse中使用CVS的常見問(wèn)題回答。更詳細(xì)的具體操作介紹,可以參考Eclipse軟件所附帶的幫助。


      http://www-900.ibm.com/developerWorks/cn/java/l-cvs/index.shtml

       

       

       

      安裝和使用CVS
      日期:2005年6月22日 作者:非常下載 人氣:

      簡(jiǎn)介
      CVS 是 Concurrent Version System(并行版本系統(tǒng))的縮寫,用于版本管理.如果大家曾經(jīng)參與過(guò)多人協(xié)作開發(fā)的項(xiàng)目,大家肯定有這樣的痛苦經(jīng)歷:由于多個(gè)人同時(shí)修改同一個(gè)文件, 自己辛辛苦苦修改的程序被別人徹底刪除了.另外,如果你的軟件/程序已經(jīng)發(fā)布了三個(gè)版本, 而這時(shí)候用戶需要你修改第二個(gè)版本的東西,也許你會(huì)因?yàn)橹槐A袅俗钚掳姹径纯蘖魈?。還有就是你對(duì)程序做了一些修改,但是修改很少,你只想給遠(yuǎn)方的同事發(fā)一個(gè)兩個(gè)版本之間的差別文件,這樣可以免于郵箱不夠大,網(wǎng)速太慢之類的問(wèn)題.為了解決類似這樣的問(wèn)題,以及諸如生成補(bǔ)丁文件,歷史版本修改等,一幫黑客(褒義)在原先 Unix 體系里很成熟的 SCCS 和 RCS 的基礎(chǔ)上,開發(fā)了 CVS。(SCCS:Source Code Control System,RCS:Revision Control System)。
      CVS 的基本工作思路是這樣的:在一臺(tái)服務(wù)器上建立一個(gè)倉(cāng)庫(kù),倉(cāng)庫(kù)里可以存放許多不同項(xiàng)目的源程序。由倉(cāng)庫(kù)管理員統(tǒng)一管理這些源程序.這樣,就好象只有一個(gè)人在修改文件一樣.避免了沖突.每個(gè)用戶在使用倉(cāng)庫(kù)之前,首先要把倉(cāng)庫(kù)里的項(xiàng)目文件下載到本地。用戶做的任何修改首先都是在本地進(jìn)行,然后用 cvs 命令進(jìn)行提交,由 cvs 倉(cāng)庫(kù)管理員統(tǒng)一 修改.這樣就可以做到跟蹤文件變化,沖突控制等等.
      由于 CVS 是典型的 C/S 結(jié)構(gòu)的軟件,因此它也分成服務(wù)器端和客戶端兩部分。不過(guò)大多數(shù)CVS 軟件都把它們合二為一了。我們這里就分別從服務(wù)器和客戶端的角度討論cvs的使用。

      Cvs服務(wù)器安裝

      首先確保系統(tǒng)安裝有cvs:
      [root@mail xinetd.d]# rpm -qa|grep cvs
      cvs-1.11.1p1-3
      如果命令輸出類似于上面的輸出則說(shuō)明系統(tǒng)已經(jīng)安裝有cvs,否則就需要從安裝光盤中安裝cvs的rpm包。

      一 創(chuàng)建CVS屬主用戶:
      # useradd -d /cvsroot cvs
      # chmod 771 /cv sroot

      二、建立CVS倉(cāng)庫(kù)(初始化cvs)

      # su cvs
      $ cvs -d /cvsroot init
      $exit
      #

      四、啟動(dòng)cvs服務(wù)器

      在/etc/xinetd.d/目錄下創(chuàng)建文件cvspserver,內(nèi)容如下:
      # default: on
      # description: The cvs server sessions;

      service cvspserver
      {
      socket_type = stream
      wait = no
      user = root
      server = /usr/bin/cvs
      server_args = -f --allow-root=/cvsroot pserver
      log_on_failure += USERID
      only_from = 192.168.0.0/24
      }
      其中only_from是用來(lái)限制訪問(wèn)的,可以根據(jù)實(shí)際情況不要或者修改。
      修改該文件權(quán)限:
      # chmod 644 cvspserver
      然后重新啟動(dòng)xinetd:
      # /etc/rc.d/init.d/xined restart
      然后察看cvs服務(wù)器是否已經(jīng)運(yùn)行:
      [root@mail xinetd.d]# netstat -lnp|grep 2401
      tcp 0 0 0.0.0.0:2401 0.0.0.0:* LISTEN 7866/xinetd
      則說(shuō)明cvs服務(wù)器已經(jīng)運(yùn)行。

      五、創(chuàng)建用來(lái)訪問(wèn)cvs的用戶

      前面創(chuàng)建的cvs用戶是cvs倉(cāng)庫(kù)管理用戶,而為了讓用戶訪問(wèn)則還需要一個(gè)訪問(wèn)用戶:
      # useradd cvspub
      # usemod -G cvs cvspub
      這里添加了一個(gè)用戶cvspub,并且將該用戶添加到cvs組中。

      六、管理cvs服務(wù)器

      管理 cvs 服務(wù)器.服務(wù)器可以用了,現(xiàn)在大家最關(guān)心的就是如何管理服務(wù)器,比如,我想讓一些人有讀和/或?qū)?CVS 倉(cāng)庫(kù)的權(quán)限,但是不想給它系統(tǒng)權(quán)限怎么辦呢?不難,cvs初始化結(jié)束以后,在管理員用戶(這里是cvs用戶)的主目錄里有一個(gè) CVSROOT 目錄,這個(gè)目錄里有三個(gè)配置文件:passwd, readers, writers。我們可以通過(guò)設(shè)置這三個(gè)文件來(lái)配置 CVS 服務(wù)器,下面分別介紹這幾個(gè)文件的作用:
      passwd:cvs 用戶的用戶列表文件,它的格式很象 shadow 文件:
      {cvs 用戶名}:[加密的口令]:[等效系統(tǒng)用戶名]
      如果你希望一個(gè)用戶只是 cvs 用戶,而不是系統(tǒng)用戶,那么你就要設(shè)置這個(gè)文件,剛剛安裝完之后這個(gè)文件可能不存在,你需要以cvs管理員身份(su cvs)用戶手工創(chuàng)建,當(dāng)然要按照上面格式;
      第二個(gè)字段是該用戶的加密口令,就是用 crypt (3) 加密的,你可以自己寫一個(gè)程序來(lái)做加密,也可以用兩個(gè)偷懶的方法:先創(chuàng)建一個(gè)系統(tǒng)用戶,名字和 cvs 用戶一樣,口令就是準(zhǔn)備給它的 cvs 用戶口令,創(chuàng)建完之后從 /etc/shadow 把該用戶第二個(gè)字段拷貝過(guò)來(lái),然后 再把這個(gè)用戶刪除.這個(gè)方法對(duì)付數(shù)量少的用戶比較方便,人一多就不合適了,而且還有沖突條件(race condition)的安全隱患,還要 root 權(quán)限,實(shí)在不怎么樣,不過(guò)權(quán)益之計(jì)而已;另外一個(gè)方法就是利用apche的htpasswd命令創(chuàng)建passwd用戶,添加用戶只需要htpasswd passwd username即可添加用戶到passwd文件中,不過(guò)需要在文件中對(duì)應(yīng)行的最后添加一個(gè)":"冒號(hào)和對(duì)應(yīng)的等效系統(tǒng)用戶名;最好的就是自己編寫一個(gè)程序了來(lái)生成這個(gè)passwd文件了。
      第三個(gè)字段就是等效系統(tǒng)用戶名,實(shí)際上就是賦與一個(gè) cvs 用戶一個(gè)等效的系統(tǒng)用戶的權(quán)限,看下面的例子你就明白它的功能了。
      readers:有 cvs 讀權(quán)限的用戶列表文件,就是一個(gè)一維列表。在這個(gè)文件中的用戶對(duì) cvs
      只有讀權(quán)限。
      writers:有 cvs 寫權(quán)限的用戶的列表文件,和 readers 一樣,是一個(gè)一維列表。在這個(gè)文件中的用戶對(duì) cvs 有寫權(quán)限。
      上面三個(gè)文件在缺省安裝的時(shí)候可能都不存在,需要我們自己創(chuàng)建,好吧,現(xiàn)在還是讓我們用一個(gè)例子來(lái)教學(xué)吧.假設(shè)我們有下面幾個(gè)用戶需要使用 cvs:
      cvsuser1, cvsuser2, henry, betty, anonymous
      其中 laser 和 gumpwu 是系統(tǒng)用戶,而henry, betty, anonymous 我們都不想給系統(tǒng)用戶權(quán)限,并且 betty 和 anonymous 都是只讀用戶,而且 anonymous 更是連口令都沒(méi)有。
      然后編輯 cvs 管理員家目錄里 CVSROOT/passwd 文件,加入下面幾行:

      laser:$xxefajfka;faffa33:cvspub
      gumpwu:$ajfaal;323r0ofeeanv:cvspub
      henry:$fajkdpaieje:cvspub
      betty:fjkal;ffjieinfn/:cvspub
      anonymous::cvspub
      注意:上面的第二個(gè)字段(分隔符為 :)是密文口令,你要用程序或者用我的土辦法生成。
      編輯 readers 文件,加入下面幾行:
      anonymous
      betty
      編輯 writer 文件,加入下面幾行:
      laser
      gumpwu
      henry
      這樣就 ok 了,你再用幾個(gè)用戶分別登陸測(cè)試,就會(huì)發(fā)現(xiàn)一切都 ok 了。這里面的原理和說(shuō)明我想就不多說(shuō)了,其實(shí)很簡(jiǎn)單,和系統(tǒng)管理用戶的概念是一樣的。

      七、建立新的CVS項(xiàng)目

      一般我們都已經(jīng)有一個(gè)或多個(gè)項(xiàng)目了,這樣我們可以用下面步驟生成一個(gè)新的CVS項(xiàng)目。
      將一個(gè)工程文件置于CVs中進(jìn)行版本控制,在CVS 術(shù)語(yǔ)中稱作導(dǎo)入(import)。從名字上就可以看出,在導(dǎo)入前需要為此作些準(zhǔn)備工作。
      輸入操作的基本要求是有個(gè)"干凈"的目錄結(jié)構(gòu)。"干凈"的意思是不需要版本控制的文件都被移走了(如編譯生成的文件,備份文件等等)。如果工程已經(jīng)開始一段時(shí)間了,這就顯得很重要。在目錄中也許有些是不打算將其置于版本控制下的文件,但是又想將他們放在這里,這種情況下,你要在輸入之前將它們移走,然后再移回來(lái)。
      注意的是CVS 認(rèn)為空目錄是不存在的。如果想增加一個(gè)既不包含文件又不包含子目錄的目錄,需要在其下創(chuàng)建一個(gè)啞文件。建議你創(chuàng)建一個(gè)名為 README.txt 的文件,其內(nèi)容為對(duì)目錄的簡(jiǎn)要說(shuō)明。
      進(jìn)入到已有項(xiàng)目的目錄,比如叫 cvstest:
      $cd cvstest
      運(yùn)行命令將項(xiàng)目文件導(dǎo)入到cvs倉(cāng)庫(kù)中:
      $cvs import -m "this is a cvstest project" cvstest v_0_0_1 start
      說(shuō)明:import 是cvs的命令之一,表示向cvs倉(cāng)庫(kù)輸入項(xiàng)目文件.
      -m參數(shù)后面的字串是描述文本,對(duì)項(xiàng)目進(jìn)行描述,如果不加 -m 參數(shù),那么cvs會(huì)自動(dòng)運(yùn)行一個(gè)編輯器(一般是vi,但是可以通過(guò)修改環(huán)境變量EDITOR來(lái)改成你喜歡用的編輯器)讓你輸入信息,cvstest 是項(xiàng)目名稱(實(shí)際上是倉(cāng)庫(kù)名,在CVS服務(wù)器上會(huì)存儲(chǔ)在以這個(gè)名字命名的倉(cāng)庫(kù)里)
      v_0_0_1是這個(gè)分支的總標(biāo)記.沒(méi)啥用(或曰不常用)
      start 是每次 import 標(biāo)識(shí)文件的輸入層次的標(biāo)記,沒(méi)啥用。
      這樣我們就建立了一個(gè)CVS倉(cāng)庫(kù)了,然后,我們可以把這個(gè)測(cè)試項(xiàng)目的文件刪除,試驗(yàn)如何從倉(cāng)庫(kù)獲取文件這會(huì)在后面的客戶端文章進(jìn)行說(shuō)明。

      在Win2k上安裝和使用CVS
      1.準(zhǔn)備有關(guān)軟件:
      從 www. 下載服務(wù)器 cvs-1.10.8NT.exe.zip
      從 www.wincvs.org 下載客戶端 WinCvs11b16.zip
      用winzip把cvs-1.10.8NT.exe.zip解壓到d:cvs。
      解壓并安裝wincvs.
      2.把路徑 d:cvs 加到path環(huán)境變量中。
      具體方法:點(diǎn)選"我的電腦",單擊右鍵,選屬性,點(diǎn)環(huán)境變量按鈕。
      3.建立CVS存儲(chǔ)目錄。
      打開一個(gè)dos窗口,鍵入"cvs -d :local:d:cvsroot init",然后你會(huì)發(fā)現(xiàn)d:cvs下面多了一個(gè)root子目錄。
      4.注冊(cè)CVS服務(wù)
      在dos窗口中,鍵入"ntservice -i d:cvsroot",屏幕顯示"CVS NT Service Installed successfully",打開控制面板中的服務(wù),你會(huì)發(fā)現(xiàn)多了一個(gè)"CVS NT Service"服務(wù)
      用"net start cvs"啟動(dòng)cvs服務(wù)。 用"net stop cvs"關(guān)閉cvs服務(wù)。
      5.設(shè)置密碼
      新建一個(gè)空白的passwd文件,放到d:cvsrootcvsroot目錄下。用pwgen.exe生成密碼。把用戶名和密碼寫到passwd文件,例如:test:OuIgxgsUZH48g
      6.使用wincvs
      選Admin->Perferences,設(shè)CVSROOT為":pserver:test@server:d:cvsroot",server為作為服務(wù)器的計(jì)算機(jī)的名稱。test為用戶名。
      7.登陸
      選Admin->login,輸入密碼登陸。
      8.導(dǎo)入模塊
      假設(shè)要管理的代碼已經(jīng)存在于c:source目錄,選彈出菜單上的import module,選擇目錄c:source,輸入模塊名"test",wincvs就會(huì)把該目錄導(dǎo)入到模塊test中。
      9.導(dǎo)出模塊
      選Create->checkout module,輸入模塊名和相應(yīng)的目錄就可以了。
      10。修改文件
      選中要修改的文件,點(diǎn)修改鈕(筆圖標(biāo))。然后修改文件,最后選彈出菜單上的commit selection,修改就被提交了。

      CVS NT服務(wù)器安裝指南
      下載地址:http://www.
      運(yùn)行 cvsnt_1.11.1.2.exe
      點(diǎn)兩次“Next”跳過(guò)“Welcome”界面開始安裝
      點(diǎn)“Yes”接受License
      點(diǎn)“Next”用默認(rèn)的Typical安裝
      選“Yes”并點(diǎn)“Finish”,重新啟動(dòng)

      到桌面,在“我的電腦”按右鍵,點(diǎn)“屬性”
      點(diǎn)“高級(jí)”,點(diǎn)“環(huán)境變量”
      選擇“系統(tǒng)變量”中的Path,點(diǎn)“編輯”
      在變量值后加“;C:Program FilesCVS for NT”(引號(hào)不要加入)
      點(diǎn)“確定”
      再“確定”

      進(jìn)入控制面板,雙擊“CVS for NT”
      點(diǎn)“Install”安裝CVSNT服務(wù)
      Install按鈕會(huì)變無(wú)效,Uninstall變有效
      點(diǎn)“Add”,輸入“d:cvsroot”,點(diǎn)“OK”
      會(huì)提問(wèn)是否創(chuàng)建目錄,回答“是”
      點(diǎn)“Start”啟動(dòng)CVSNT服務(wù)

      在d:cvsrootCVSROOT目錄下創(chuàng)建一個(gè)文件名為passwd的文件(沒(méi)有擴(kuò)展名)
      (怎么創(chuàng)建沒(méi)有擴(kuò)展名的文件:
      點(diǎn)資源管理器菜單“工具”->“文件夾選項(xiàng)”
      點(diǎn)“文件類型”
      找到并選中“TXT 文本文檔”,點(diǎn)“高級(jí)”
      選中“始終顯示擴(kuò)展名”,點(diǎn)“確定”,然后“關(guān)閉”)

      在d:cvsrootCVSRTOO下新建文本文件
      編輯該文件,把下面三行
      user1:user1encryptedpassword (加密密碼是用CVSNT帶的工具“Generate Passwords”生成的,安裝后菜單里有)
      user2:user2encryptedpassword
      user3:user3encryptedpassword
      加入,保存退出,然后把該文件改名為passwd(把擴(kuò)展名去掉)

      加3個(gè)windows用戶
      user1密碼同上面設(shè)的
      user2密碼同上面設(shè)的
      user3密碼同上面設(shè)的


      安裝wincvs(下載地址:http://www.)后運(yùn)行wincvs

      點(diǎn)“Admin”->Preferences
      CVSROOT 改為 user1@myservername:d:cvsroot
      Authentication 選擇 "passwd" file on the cvs server
      Use vesion 選擇 cvs 1.10 (Standard)

      然后“Admin”->“Login”,成功的返回碼為0
      然后可以Import一個(gè)module

      然后可以checkout這個(gè)module,如果checkout到同一個(gè)目錄,要把原來(lái)的目錄改名或刪除
      點(diǎn)Create->Checkout module
      module name 填 mymodulename
      Local folder如 d:user1
      在Globals頁(yè)里面把 Checkout read-only 不選中
      其它的不管,點(diǎn)“確定”即可

      checkout之前如果沒(méi)有l(wèi)ogin,必須先login一次,除非工作目錄,否則不需要重新login

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多