Changing the sharing of a project
http://minyongcheng.iteye.com/blog/1749191
選中項(xiàng)目右鍵-Properties-CVS-Change Sharing-去掉鉤選框-選中顯示的cvs地址OK即可
====== http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Ftasks%2Ftasks-117b.htmChanging the sharing of a project
If a project is shared with a CVS repository location, you can change the sharing information so it is shared with a different repository location. The new location must map to the same repository but can have a different connection method and/or user name.
To change the sharing of a project:
Team programming with CVS
CVS Repositories
Creating a CVS repository location
Changing the properties of a CVS Repository Location
CVS
CVS Repositories view
?
?
===================
http://www.cnblogs.com/aijava/archive/2009/08/28/2191846.html
http://www.cnblogs.com/aijava/archive/2009/08/28/2191845.html
http://www.cnblogs.com/aijava/archive/2009/08/28/2191847.html
//原文地址:http://hi.baidu.com/xublog/blog/item/8265f309c5d35bc93ac76334.html
5.5 特殊情況及其處理
這里將給出一些您每天或在軟件開發(fā)周期中可能會碰到的常見情況,以及如何使用Eclipse來處理這些情況的建議。某些情況的解決可能需要使用CVS,但通常只使用Eclipse就可以處理它們。
5.5.1 對項(xiàng)目資源進(jìn)行重命名、移動和刪除
●?????? 避免重命名CVS控制之下的項(xiàng)目。如果您這樣做了,那么所做的命名修改只在該項(xiàng)目所處的工作空間中有效。保留在CVS中的仍是該項(xiàng)目的初始名。如果必須修 改項(xiàng)目的名稱,那么您最好先使用Team | Disconnect…操作來解除該項(xiàng)目與CVS的關(guān)聯(lián)關(guān)系,然后再對該項(xiàng)目重命名。事實(shí)上,重命名后的項(xiàng)目會被看作是新項(xiàng)目。在將重命名后的項(xiàng)目重新連 接到CVS時(shí),您必須像定義任何新項(xiàng)目一樣將該重命名后的項(xiàng)目定義到CVS中。
●?????? 對文件夾的重命名操作會導(dǎo)致CVS中出現(xiàn)一個(gè)新文件夾。幸運(yùn)的是,原文件夾中的內(nèi)容會被移動到新文件夾中。如果您啟用了CVS首選項(xiàng)Prune empty directories,那么在從CVS檢出資源后,該舊文件夾將不會出現(xiàn)在您的工作空間中。
●?????? 如果您將工作空間中的某資源刪除了,那么在向CVS提交了更改后,保存在CVS中的該資源也會被刪除。要記住的是文件夾決不會在CVS中刪除。CVS首選 項(xiàng)Prune empty directories使得這些文件夾隱藏在視圖中。默認(rèn)情況下,CVS首選項(xiàng)Prune empty directories是被啟用的。
●?????? 因?yàn)樾薷目赡軙婕岸鄠€(gè)項(xiàng)目,所以在進(jìn)行全局修改前,您需要確保工作空間中的所有項(xiàng)目是資源庫中的最新版本。Java類的重構(gòu)是一個(gè)可能導(dǎo)致工作空間被廣泛修改的操作。項(xiàng)目間的資源移動也可能產(chǎn)生這種影響。
●?????? 在CVS透視圖中,項(xiàng)目之間資源移動的結(jié)果是:所要移動的資源添加到目標(biāo)項(xiàng)目中,而源項(xiàng)目中的該資源會被刪除。移動到目標(biāo)項(xiàng)目中的資源必須被添加到版本控制中。而資源重命名的效果與此相同。
●?????? 在文件被修改后,如果您要執(zhí)行諸如同步等CVS操作,那么我們建議您在項(xiàng)目層次上進(jìn)行同步(即使您的更改可能僅涉及一個(gè)單獨(dú)文件)。例如,如果您對一個(gè)文 件進(jìn)行了重命名這一CVS的刪除和添加操作,那么在文件層次上的同步將只會檢測添加操作而不檢測刪除操作。而項(xiàng)目層次上的同步則會對添加和刪除操作都進(jìn)行 檢測。
●?????? 在所進(jìn)行的修改涉及整個(gè)應(yīng)用程序的情況下,您應(yīng)該將這次修改通知給自己所在的小組,以避免不必要的沖突。此時(shí),一旦條件滿足,您就應(yīng)該提交修改。沖突的解決可能是冗長乏味而又難以解決的。
5.5.2 取消修改:使用替換和比較操作
有時(shí),我們都希望事情能夠重新開始。在人的一生中, 這可能不容易。但是對于Eclipse和CVS來說,這要簡單得多。根據(jù)您的需要,您有多種選擇。在先前的幾章中,您看到了如何使用快捷菜單操作 Replace With和Compare With用工作空間中的本地歷史記錄來替換和比較資源。通過使用CVS,您對資源的替換和比較操作就有了額外的選擇。如果您尚未最終完成某個(gè)修改,而且之 后一段時(shí)間里根本就沒有繼續(xù)這次修改。這種情況下,Compare With操作可能會非常有用,它會使您記起上次停止修改的地方。在使用上述Replace With和Compare With操作時(shí),您是用來自HEAD流(或者其他分支/版本、某一個(gè)具體版本)的最新資源來替換或比較當(dāng)前資源的。
5.5.3 通過建立分支來進(jìn)行版本維護(hù)和新版本開發(fā)
在小組已經(jīng)交付了您的應(yīng)用程序并準(zhǔn)備開始下一個(gè)版本的開發(fā)工作時(shí),您可能喜歡所有的后續(xù)開發(fā)能在下一版本所指派的特定分支處開始,同時(shí)還要允許先前版本的服務(wù)。這里所給出的就是在Eclipse中可用的一種方法。
●?????? 在包含了最近已完成版本的分支(或HEAD)中,請選擇所有的項(xiàng)目。然后在所選項(xiàng)目上使用Branch…快捷菜單,并輸入該新版本的新分支名。這樣,所選 擇的全部項(xiàng)目以及這些項(xiàng)目的內(nèi)容將用下一個(gè)版本分支名來標(biāo)記。在CVS Repositories視圖中,這些項(xiàng)目會被列在那個(gè)分支名之下。在從那個(gè)分支處將這些項(xiàng)目檢出到您的工作空間之后,接下來的操作是基于該新版本分支 的。
●?????? 您可重復(fù)上述過程以創(chuàng)建一個(gè)單獨(dú)的維護(hù)分支。該維護(hù)分支獨(dú)立于上面所創(chuàng)建的新版本分支。
●?????? 為了能以維護(hù)分支為基礎(chǔ),在工作空間中對新版本分支進(jìn)行合適的前向修改,您可以通過使用Compare With | Another Branch or Version…操作來確定這兩個(gè)分支之間的差別。在Compare視圖中,您可以手動合并從維護(hù)分支到新版本分支的更改。
?
?
5.6 其他功能
在這一節(jié)中,我們將介紹幾個(gè)非常有用的Eclipse功能。這些功能有助于您提高CVS和Eclipse的使用效率。
5.6.1 編輯器中的快速差別功能對CVS的支持
在本書第2章“Eclipse入門”中,您知道編輯 器所支持的快速差別功能可對文件的添加和修改操作加上注釋。如果您在Workbench | Editor | Quick Diff首選項(xiàng)頁面中啟用了Latest CVS Revision選項(xiàng),那么快速差別功能所添加的文件注釋是在參考CVS中該文件最新版本的基礎(chǔ)之上添加的。在將更改提交到CVS或用CVS中該文件的某 一版本來替換該文件時(shí),快速差別功能所添加的注釋會被刪除。
5.6.2 補(bǔ)丁程序:快速而又簡單地共享更改
補(bǔ)丁程序(patch)是一個(gè)包含了某一資源的資源庫實(shí)例和該資源的工作空間實(shí)例之間差別的文件。補(bǔ)丁程序可表示出一個(gè)單獨(dú)文件(或完整項(xiàng)目)中的差別。補(bǔ)丁程序允許您共享尚未提交到CVS的更改。有很多原因使得補(bǔ)丁程序非常有用。
●?????? 由于您沒有向CVS提交資源的權(quán)限,所以您需要將該補(bǔ)丁程序發(fā)送給具有資源提交權(quán)限的人,然后再由他向CVS提交資源。
●?????? 您需要為所遇到的問題準(zhǔn)備一個(gè)應(yīng)急修改或臨時(shí)工作空間。
●?????? 在將重要的更改提交到CVS之前,您可能想讓別人對您的更改進(jìn)行校驗(yàn)。在這種情況下,您可以將補(bǔ)丁程序發(fā)送給校驗(yàn)人以讓他們進(jìn)行測試。
通過使用快捷菜單Team | Create Patch…,我們就可以創(chuàng)建補(bǔ)丁文件。該操作會調(diào)用Create Patch向?qū)碇笇?dǎo)您完成補(bǔ)丁文件的創(chuàng)建。若要應(yīng)用某補(bǔ)丁程序,則使用快捷菜單Team | Apply Patch…。該操作會調(diào)用Apply Patch向?qū)Аclipse聯(lián)機(jī)文檔Workbench User Guide的Working with patches 一節(jié)中有關(guān)上述兩個(gè)操作的描述非常精彩。
5.6.3 項(xiàng)目集:加快新工作空間
小組支持為工作空間中的項(xiàng)目(一個(gè)或多個(gè))提供了版 本控制信息的封裝功能。該封裝功能被稱為項(xiàng)目集。項(xiàng)目集的目的是從執(zhí)行任務(wù)所需的資源庫中把需要的全部項(xiàng)目都預(yù)先準(zhǔn)備到一個(gè)工作空間中。在應(yīng)用程序構(gòu)建過 程中可能要用到存在相互依賴關(guān)系的多個(gè)項(xiàng)目。下述操作可能是單調(diào)乏味而又容易產(chǎn)生錯(cuò)誤的:決定所需項(xiàng)目,然后再將這些所需的正確項(xiàng)目從資源庫中手動添加到 工作空間中。項(xiàng)目集是Eclipse的一個(gè)功能單元。資源庫提供程序可對是否支持該功能進(jìn)行選擇(很多資源庫提供程序都會選擇是)。CVS對項(xiàng)目集提供了 支持。一個(gè)項(xiàng)目集所封裝的項(xiàng)目可能是由不同資源庫管理的。
項(xiàng)目集信息包含在一個(gè)文件中。若要?jiǎng)?chuàng)建該項(xiàng)目集信息 文件,則在菜單欄上選擇File | Export | Team Project Set選項(xiàng)。若要使用該項(xiàng)目集信息文件,則在菜單欄上選擇File | Import | Team Project Set選項(xiàng)。通過使用Export向?qū)?#xff0c;我們可以對項(xiàng)目集中所包含的項(xiàng)目進(jìn)行定義。出于通用的考慮,最終的項(xiàng)目集信息文件可被發(fā)送給別人以在CVS中進(jìn)行 導(dǎo)入或維護(hù)。對于所開發(fā)的應(yīng)用程序來說,您可以為其開發(fā)生命周期關(guān)鍵節(jié)點(diǎn)處的快照維護(hù)多個(gè)項(xiàng)目集文件。
在導(dǎo)入過程中,項(xiàng)目集文件中定義的所有項(xiàng)目都被從 CVS中自動檢出到您的工作空間中。在導(dǎo)入過程中,一種可能比較穩(wěn)健的做法是禁用自動構(gòu)建首選項(xiàng)設(shè)置(Workbench首選項(xiàng)頁面中的Build Automatically設(shè)置)。通過禁用Build Automatically設(shè)置,我們就可以在導(dǎo)入過程中避免編譯和構(gòu)建操作,進(jìn)而加快資源的導(dǎo)入。但在導(dǎo)入操作完成后,請記住要重新啟用該首選項(xiàng)。
5.6.4 斷開項(xiàng)目與CVS的連接或?yàn)轫?xiàng)目重分派一個(gè)CVS資源庫
通過使用Team | Disconnect…操作,您可以斷開項(xiàng)目與CVS的連接。在選擇了快捷菜單Team | Disconnect…后會出現(xiàn)一個(gè)對話框。該對話框會對您進(jìn)行詢問,以讓您對是否保存該項(xiàng)目的CVS元數(shù)據(jù)作出決定。如果選擇了保留該項(xiàng)目的CVS元數(shù) 據(jù),那么通過使用Team | Share Project…操作,我們就可以將該項(xiàng)目與同一CVS資源庫進(jìn)行重新連接。如果您刪除了該CVS元數(shù)據(jù),那么可以將該項(xiàng)目共享給其他資源庫。
作為選擇,如想將項(xiàng)目重新分派給另外一個(gè)CVS資源庫,那么您可以先為該項(xiàng)目打開CVS資源庫頁面,然后再選擇Change Sharing…按鈕。該操作與使用Disconnect…以及Share Project…操作在邏輯上等價(jià)。
?
?
?
5.4.9 處理同一文件的并發(fā)更新
首先,我們討論一下一個(gè)被建議用來進(jìn)行修改操作的協(xié) 議。當(dāng)在工作空間中使用資源時(shí),您的操作是獨(dú)立于CVS資源庫的。因?yàn)榘l(fā)生在資源庫中的更改可能是在您不知道的情況下發(fā)生的,所以非常重要的一點(diǎn)是,如果 還未檢查資源庫中是否有更新取代了您的更改,那么您一定不要提交任何更改。Team | Update…操作會用資源庫中那些取代了您的更改的任何更改來更新項(xiàng)目的本地副本。對于文本文件(包括Java類)來說,Team | Update…操作會自動對任何更改進(jìn)行合并(從資源庫到工作空間),即使這些更改可能造成沖突。在遇到?jīng)_突時(shí),合并操作會用特定的CVS標(biāo)記文本來標(biāo)識 文件中的沖突,以幫助您識別出沖突行。標(biāo)記文本并不是與任何類型的文件都兼容,例如它可能導(dǎo)致編譯錯(cuò)誤。
Update… 操作是一個(gè)非常強(qiáng)大的操作,我們在練習(xí)時(shí)一定要小心。在下面這個(gè)例子中,Pat和Lynn更新了一個(gè)簡單的文本文件。無需知道它,它們都對以“B”和 “C”開始的行進(jìn)行了更新。標(biāo)記文本會對沖突的那些行以及引入了沖突的版本號(1.2)進(jìn)行了標(biāo)識。對于一個(gè)帶有眾多沖突的復(fù)雜Java文件來說,您可能 很難解決其中的沖突。
A is for apple
<<<<<<< sample.txt
B is for bird???????????? (updated by pat )
C is for crow???????????? (updated by pat )
=======
B is for bobcat?????????? (updated by lynn )
C is for cow???????????? (updated by lynn )
>>>>>>> 1.2
D is for dog
E is for excellent
F is for farm
G is for goat...
Team | Synchronize with Repository…操作也支持更新,但是該操作不會自動進(jìn)行更新。在執(zhí)行該操作后會顯示Synchronize視圖,并會列出工作空間副本和資源庫最 新資源之間那些不一致的資源。在Synchronize視圖中,您可以對這些差別進(jìn)行檢查,并決定所要采取的操作。由于Team | Synchronize with Repository…操作可使您擁有更多的控制權(quán),所以我們建議您使用該操作來代替Update…操作。
下面總結(jié)一下文件并發(fā)更新的基本規(guī)則:在對工作空間 中的文件進(jìn)行修改之前,您必須用資源庫中的所有更改來更新工作空間中的資源。為了安全起見,此時(shí)請使用Team | Synchronize with Repository…操作。在Synchronize視圖中,您可執(zhí)行更新操作,還可提交更改,并可協(xié)調(diào)沖突。
5.4.10 使用CVS的Watch/Edit支持以避免對同一文件的并行更新
CVS 的Watch/Edit支持是Eclipse本身就提供的。如果您同意使用CVS的Watch/Edit支持,那么在提交資源時(shí),您和小組其他成員之間就 可以避免沖突。在啟用了CVS的Watch/Edit支持之后,您的項(xiàng)目小組可以更好地理解在所有具體項(xiàng)目中,當(dāng)前誰正更新文件。相反,前面所討論的 CVS Annotate視圖為您所顯示的是先前的更改以及誰做的更改。CVS的Watch/Edit支持是在項(xiàng)目層次上被啟用的。如果在Team | CVS >Watch/Edit的首選項(xiàng)設(shè)置頁面中選中了Configure projects to use Watch/Edit on checkout復(fù)選框,那么在項(xiàng)目被檢出時(shí),Watch/Edit支持將被自動激活。您也可以通過設(shè)置項(xiàng)目的CVS屬性在受CVS管理的現(xiàn)有項(xiàng)目上啟用 Watch/Edit支持。在CVS的Watch/Edit支持被啟用時(shí),該項(xiàng)目中的文件處于只讀狀態(tài)。此時(shí),如果您在編輯器中打開了某文件后又試圖對該 文件進(jìn)行修改,那么CVS服務(wù)器會被詢問。在編輯文件時(shí),如果其他人也正在編輯該文件,那么就會出現(xiàn)一個(gè)對話框以通知您小組中其他成員也正在編輯該文件 (見圖5-9)。這時(shí),您可以繼續(xù)對該文件進(jìn)行編輯,但是在您提交該文件時(shí)需要進(jìn)行沖突管理。在文件被修改時(shí),檢查標(biāo)記修飾符 會被添加到該文件上。
圖5-9 顯示其他人正在編輯同一文件的對話框
在項(xiàng)目、文件夾以及文件上執(zhí)行Team | Show Editors操作后會打開CVS Editors視圖。CVS Editors視圖中列出的是所有正在被其他人更新的資源(見圖5-10)。無論是否處于Watch/Edit的控制之下,您在任何項(xiàng)目及項(xiàng)目資源上都可 以使用Team | Show Editors操作。但是Team | Show Editors操作只會對啟用了Watch/Edit支持的項(xiàng)目資源進(jìn)行標(biāo)識。
圖5-10 列出了哪個(gè)用戶正在更新文件夾中文件的CVS Editors視圖
您可以使用Team | Edit操作來顯式地通知CVS服務(wù)器,讓CVS服務(wù)器知道您想對文件進(jìn)行更新。您還可以使用Team | Unedit操作來通知CVS服務(wù)器,讓CVS服務(wù)器知道您不想再編輯該文件。這樣,您所做的任何更改都會被從CVS資源庫中檢出。表5-3給出了有關(guān)這 些操作的信息。在向CVS提交了更改之后,Watch/Edit列表中的資源會被隱式刪除掉。
Watch/Edit是一個(gè)非常有用的工具。但是該 工具的使用需要遵循一些規(guī)則,并要注意一些考慮事項(xiàng)。首先,如果要使Watch/Edit功能高效,那么小組中的每個(gè)成員都必須在存在潛在沖突的項(xiàng)目中啟 動Watch/Edit功能。其次,您必須連接到CVS服務(wù)器上。如果您沒有和CVS服務(wù)器相連,并且想更新一個(gè)文件,那么您將不得不顯式地將該文件的只 讀狀態(tài)(從該文件的屬性頁面中可獲得該屬性)取消掉。當(dāng)然,該支持現(xiàn)在是折中的。這是因?yàn)?#xff0c;沒有任何人知道該更新,而且在提交過程中存在潛在的沖突。如果 您刪除了一個(gè)項(xiàng)目并且該項(xiàng)目資源的Watch/Edit首選項(xiàng)設(shè)置沒有被啟用,那么CVS服務(wù)器將不會被通知,并且CVS服務(wù)器會繼續(xù)向外報(bào)告您正在對這 些資源進(jìn)行編輯。如果您的小組計(jì)劃使用Watch/Edit支持,那么明智的做法是小組中所有人都啟用被標(biāo)注為Configure projects to use Watch/Edit on checkout的CVS Watch/Edit首選項(xiàng)設(shè)置。
5.4.11 恢復(fù)被刪除的文件
有時(shí)候,在文件被刪除并且更改被提交給CVS后,您 可能需要恢復(fù)所刪除的文件。幸運(yùn)的是,CVS不會將所刪除的文件從該文件所在的資源庫中移除。您可以使用Team | Restore from Repository操作來恢復(fù)所刪除的文件。如果被刪除的文件在資源庫中存在,那么您將看到一個(gè)對話框。在該對話框中,您可以選擇所要恢復(fù)的文件的具體 修訂版(見圖5-11)。而文件的最新修訂版則是一個(gè)對所刪除文件的引用。這是因?yàn)槲募h除是一個(gè)CVS修訂操作。
圖5-11 顯示可恢復(fù)的被刪除文件的Restore from Repository對話框
當(dāng)一個(gè)文件被恢復(fù)到工作空間中的時(shí)候,該文件被看作是一個(gè)新文件。在提交該文件之前或提交該文件時(shí),必須將該新文件添加到版本控制中。
5.4.12 其他CVS用戶界面元素
1. Checkout向?qū)?/h4>
在New wizard對話框中獲得的是CVS向?qū)е械臋z出項(xiàng)目。通常,您會使用CVS Repositories視圖來檢出項(xiàng)目。但是,有些CVS資源庫是不允許被瀏覽的。在這種情況下,檢出向?qū)Э赡芫捅容^有用。但是在這種情況下,您必須預(yù)先知道該項(xiàng)目的名稱。
2. CVS備忘單
若要打開Cheat Sheet Selection對話框,則選擇Help | Cheat Sheets…命令。對于CVS任務(wù)來說,備忘單用來為分支和合并操作提供幫助。
?
總結(jié)
以上是生活随笔為你收集整理的Changing the sharing of a project的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CVS服务器迁移记
- 下一篇: 剖析Linux系统启动过程