1. 程式人生 > >Eclipse中CVS介面功能描述 --特殊情況及其處理(一)

Eclipse中CVS介面功能描述 --特殊情況及其處理(一)

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檢視中,您可以手動合併從維護分支到新版本分支的更改。