5.5 特殊情況及其處理
這里將給出一些您每天或在軟件開發周期中可能會碰到的常見情況,以及如何使用Eclipse來處理這些情況的建議。某些情況的解決可能需要使用CVS,但通常只使用Eclipse就可以處理它們。
5.5.1 對項目資源進行重命名、移動和刪除
●
避免重命名CVS控制之下的項目。如果您這樣做了,那么所做的命名修改只在該項目所處的工作空間中有效。保留在CVS中的仍是該項目的初始名。如果必須修
改項目的名稱,那么您最好先使用Team |
Disconnect…操作來解除該項目與CVS的關聯關系,然后再對該項目重命名。事實上,重命名后的項目會被看作是新項目。在將重命名后的項目重新連
接到CVS時,您必須像定義任何新項目一樣將該重命名后的項目定義到CVS中。
● 對文件夾的重命名操作會導致CVS中出現一個新文件夾。幸運的是,原文件夾中的內容會被移動到新文件夾中。如果您啟用了CVS首選項Prune empty directories,那么在從CVS檢出資源后,該舊文件夾將不會出現在您的工作空間中。
●
如果您將工作空間中的某資源刪除了,那么在向CVS提交了更改后,保存在CVS中的該資源也會被刪除。要記住的是文件夾決不會在CVS中刪除。CVS首選
項Prune empty directories使得這些文件夾隱藏在視圖中。默認情況下,CVS首選項Prune empty
directories是被啟用的。
● 因為修改可能會涉及多個項目,所以在進行全局修改前,您需要確保工作空間中的所有項目是資源庫中的最新版本。Java類的重構是一個可能導致工作空間被廣泛修改的操作。項目間的資源移動也可能產生這種影響。
● 在CVS透視圖中,項目之間資源移動的結果是:所要移動的資源添加到目標項目中,而源項目中的該資源會被刪除。移動到目標項目中的資源必須被添加到版本控制中。而資源重命名的效果與此相同。
●
在文件被修改后,如果您要執行諸如同步等CVS操作,那么我們建議您在項目層次上進行同步(即使您的更改可能僅涉及一個單獨文件)。例如,如果您對一個文
件進行了重命名這一CVS的刪除和添加操作,那么在文件層次上的同步將只會檢測添加操作而不檢測刪除操作。而項目層次上的同步則會對添加和刪除操作都進行
檢測。
● 在所進行的修改涉及整個應用程序的情況下,您應該將這次修改通知給自己所在的小組,以避免不必要的沖突。此時,一旦條件滿足,您就應該提交修改。沖突的解決可能是冗長乏味而又難以解決的。
5.5.2 取消修改:使用替換和比較操作
有時,我們都希望事情能夠重新開始。在人的一生中,
這可能不容易。但是對于Eclipse和CVS來說,這要簡單得多。根據您的需要,您有多種選擇。在先前的幾章中,您看到了如何使用快捷菜單操作
Replace With和Compare
With用工作空間中的本地歷史記錄來替換和比較資源。通過使用CVS,您對資源的替換和比較操作就有了額外的選擇。如果您尚未最終完成某個修改,而且之
后一段時間里根本就沒有繼續這次修改。這種情況下,Compare
With操作可能會非常有用,它會使您記起上次停止修改的地方。在使用上述Replace With和Compare
With操作時,您是用來自HEAD流(或者其他分支/版本、某一個具體版本)的最新資源來替換或比較當前資源的。
5.5.3 通過建立分支來進行版本維護和新版本開發
在小組已經交付了您的應用程序并準備開始下一個版本的開發工作時,您可能喜歡所有的后續開發能在下一版本所指派的特定分支處開始,同時還要允許先前版本的服務。這里所給出的就是在Eclipse中可用的一種方法。
●
在包含了最近已完成版本的分支(或HEAD)中,請選擇所有的項目。然后在所選項目上使用Branch…快捷菜單,并輸入該新版本的新分支名。這樣,所選
擇的全部項目以及這些項目的內容將用下一個版本分支名來標記。在CVS
Repositories視圖中,這些項目會被列在那個分支名之下。在從那個分支處將這些項目檢出到您的工作空間之后,接下來的操作是基于該新版本分支
的。
● 您可重復上述過程以創建一個單獨的維護分支。該維護分支獨立于上面所創建的新版本分支。
●
為了能以維護分支為基礎,在工作空間中對新版本分支進行合適的前向修改,您可以通過使用Compare With | Another Branch
or Version…操作來確定這兩個分支之間的差別。在Compare視圖中,您可以手動合并從維護分支到新版本分支的更改。