Eclipse中CVS介面功能描述 (三)
5.4.9 處理同一檔案的併發更新
首先,我們討論一下一個被建議用來進行修改操作的協 議。當在工作空間中使用資源時,您的操作是獨立於CVS資源庫的。因為發生在資源庫中的更改可能是在您不知道的情況下發生的,所以非常重要的一點是,如果 還未檢查資源庫中是否有更新取代了您的更改,那麼您一定不要提交任何更改。Team | Update…操作會用資源庫中那些取代了您的更改的任何更改來更新專案的本地副本。對於文字檔案(包括Java類)來說,Team | Update…操作會自動對任何更改進行合併(從資源庫到工作空間),即使這些更改可能造成衝突。在遇到衝突時,合併操作會用特定的CVS標記文字來標識 檔案中的衝突,以幫助您識別出衝突行。標記文字並不是與任何型別的檔案都相容,例如它可能導致編譯錯誤。
Update… 操作是一個非常強大的操作,我們在練習時一定要小心。在下面這個例子中,Pat和Lynn更新了一個簡單的文字檔案。無需知道它,它們都對以“B”和 “C”開始的行進行了更新。標記文字會對衝突的那些行以及引入了衝突的版本號(1.2)進行了標識。對於一個帶有眾多衝突的複雜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…操作也支援更新,但是該操作不會自動進行更新。在執行該操作後會顯示Synchronize檢視,並會列出工作空間副本和資源庫最 新資源之間那些不一致的資源。在Synchronize檢視中,您可以對這些差別進行檢查,並決定所要採取的操作。由於Team | Synchronize with Repository…操作可使您擁有更多的控制權,所以我們建議您使用該操作來代替Update…操作。
下面總結一下檔案併發更新的基本規則:在對工作空間 中的檔案進行修改之前,您必須用資源庫中的所有更改來更新工作空間中的資源。為了安全起見,此時請使用Team | Synchronize with Repository…操作。在Synchronize檢視中,您可執行更新操作,還可提交更改,並可協調衝突。
5.4.10 使用CVS的Watch/Edit支援以避免對同一檔案的並行更新
CVS 的Watch/Edit支援是Eclipse本身就提供的。如果您同意使用CVS的Watch/Edit支援,那麼在提交資源時,您和小組其他成員之間就 可以避免衝突。在啟用了CVS的Watch/Edit支援之後,您的專案小組可以更好地理解在所有具體專案中,當前誰正更新檔案。相反,前面所討論的 CVS Annotate檢視為您所顯示的是先前的更改以及誰做的更改。CVS的Watch/Edit支援是在專案層次上被啟用的。如果在Team | CVS >Watch/Edit的首選項設定頁面中選中了Configure projects to use Watch/Edit on checkout複選框,那麼在專案被檢出時,Watch/Edit支援將被自動啟用。您也可以通過設定專案的CVS屬性在受CVS管理的現有專案上啟用 Watch/Edit支援。在CVS的Watch/Edit支援被啟用時,該專案中的檔案處於只讀狀態。此時,如果您在編輯器中打開了某檔案後又試圖對該 檔案進行修改,那麼CVS伺服器會被詢問。在編輯檔案時,如果其他人也正在編輯該檔案,那麼就會出現一個對話方塊以通知您小組中其他成員也正在編輯該檔案 (見圖5-9)。這時,您可以繼續對該檔案進行編輯,但是在您提交該檔案時需要進行衝突管理。在檔案被修改時,檢查標記修飾符 會被新增到該檔案上。
圖5-9 顯示其他人正在編輯同一檔案的對話方塊
在專案、資料夾以及檔案上執行Team | Show Editors操作後會開啟CVS Editors檢視。CVS Editors檢視中列出的是所有正在被其他人更新的資源(見圖5-10)。無論是否處於Watch/Edit的控制之下,您在任何專案及專案資源上都可 以使用Team | Show Editors操作。但是Team | Show Editors操作只會對啟用了Watch/Edit支援的專案資源進行標識。
圖5-10 列出了哪個使用者正在更新資料夾中檔案的CVS Editors檢視
您可以使用Team | Edit操作來顯式地通知CVS伺服器,讓CVS伺服器知道您想對檔案進行更新。您還可以使用Team | Unedit操作來通知CVS伺服器,讓CVS伺服器知道您不想再編輯該檔案。這樣,您所做的任何更改都會被從CVS資源庫中檢出。表5-3給出了有關這 些操作的資訊。在向CVS提交了更改之後,Watch/Edit列表中的資源會被隱式刪除掉。
Watch/Edit是一個非常有用的工具。但是該 工具的使用需要遵循一些規則,並要注意一些考慮事項。首先,如果要使Watch/Edit功能高效,那麼小組中的每個成員都必須在存在潛在衝突的專案中啟 動Watch/Edit功能。其次,您必須連線到CVS伺服器上。如果您沒有和CVS伺服器相連,並且想更新一個檔案,那麼您將不得不顯式地將該檔案的只 讀狀態(從該檔案的屬性頁面中可獲得該屬性)取消掉。當然,該支援現在是折中的。這是因為,沒有任何人知道該更新,而且在提交過程中存在潛在的衝突。如果 您刪除了一個專案並且該專案資源的Watch/Edit首選項設定沒有被啟用,那麼CVS伺服器將不會被通知,並且CVS伺服器會繼續向外報告您正在對這 些資源進行編輯。如果您的小組計劃使用Watch/Edit支援,那麼明智的做法是小組中所有人都啟用被標註為Configure projects to use Watch/Edit on checkout的CVS Watch/Edit首選項設定。
5.4.11 恢復被刪除的檔案
有時候,在檔案被刪除並且更改被提交給CVS後,您 可能需要恢復所刪除的檔案。幸運的是,CVS不會將所刪除的檔案從該檔案所在的資源庫中移除。您可以使用Team | Restore from Repository操作來恢復所刪除的檔案。如果被刪除的檔案在資源庫中存在,那麼您將看到一個對話方塊。在該對話方塊中,您可以選擇所要恢復的檔案的具體 修訂版(見圖5-11)。而檔案的最新修訂版則是一個對所刪除檔案的引用。這是因為檔案刪除是一個CVS修訂操作。
圖5-11 顯示可恢復的被刪除檔案的Restore from Repository對話方塊
當一個檔案被恢復到工作空間中的時候,該檔案被看作是一個新檔案。在提交該檔案之前或提交該檔案時,必須將該新檔案新增到版本控制中。
5.4.12 其他CVS使用者介面元素
1. Checkout嚮導
在New wizard對話方塊中獲得的是CVS嚮導中的檢出專案。通常,您會使用CVS Repositories檢視來檢出專案。但是,有些CVS資源庫是不允許被瀏覽的。在這種情況下,檢出嚮導可能就比較有用。但是在這種情況下,您必須預先知道該專案的名稱。
2. CVS備忘單
若要開啟Cheat Sheet Selection對話方塊,則選擇Help | Cheat Sheets…命令。對於CVS任務來說,備忘單用來為分支和合並操作提供幫助。