2012-09-17 64 views
2

我最近閱讀了關於擱置,並認爲這是一個非常有用的概念。所以,當下一次在我的應用程序中遇到一個bug時,我擱置了我正在做的大量工作,修復了bug(對類進行了大約30/40的更改並進行了一些重構),並檢查了固定碼。如何快速有效地取消我在VS2010中的代碼?可能嗎?

我現在想取消擱置我正在處理的代碼,但保留我所做的更改。問題是,我對服務器上的文件進行了大量更改,這些更改尚未完成。

我能在這裏做什麼?看起來好像要花幾個小時/天才能再次合併一切。我知道Eclipse有一個很棒的功能,您可以在其中比較兩個文件,並且每次更改都決定您是在服務器上還是在本地版本中使用該版本。類似於我可以選擇擱置版本或本地版本的東西將是完美的。

有沒有什麼能讓我的生活更輕鬆,或者我註定要通過shelveset,在每個衝突文件中查看服務器版本,查看本地版本,將本地版本的各個部分複製到一個記事本文件,將它們複製到服務器版本等等等等。這似乎是一個可怕的混亂。

任何人都可以幫我嗎?

+0

也許這將幫助:http://blog.stevehorn.cc/2007/11/team-foundation-server-unshelve.html –

回答

6

您應該而不是被要求只選擇服務器版本或本地版本。您應該能夠使用像您慣用的3路合併工具來解決衝突。

這聽起來像你按照這裏推薦的做法:

  • 如果你有一些文件,讓我們說這是在2.0版本最新,並且開始編輯它,你就會有一個掛起的更改文件。
  • 當您擱置該文件(撤消掛起的更改)時,您將返回到版本2,並且沒有待處理的更改。
  • 如果編輯的文件,並檢查它,服務器將在一個新的版本(讓我們說這是第3版)
  • 如果你再到取消擱置現有擱置,您的更改將再次對2版,這意味着當你改變對一個版本,這不是最新的掛起:

    Source Control Explorer

可以理解的,這意味着你有一個衝突。當您執行獲取最新或簽入時,您將有能力解決這些衝突。這些應該在Visual Studio底部的視圖中顯示:

Resolution Options

正如你注意到,也有采取Server版本,並保持本地版本的選項。但是,您也應該有機會AutoMerge(如果可能自動更新,即您沒有在服務器和本地文件中已更改的文件的區域)和Merge Changes In Merge Tool( 。這將打開一個3路合併工具)

如果您選擇合併更改在合併工具,您將獲得內置3路合併工具:

3-Way Merge Tool

如果你不不喜歡內置的3路合併工具(我不喜歡2010年包含的一個,VS 2012包括更好的經驗),你可以N塞在Visual Studio中選擇任意3路合併工具:

Configure Merge Tool

如果要合併在合併工具的選擇是完全缺乏,它可能是TFS認爲你在二進制文件的工作。在TFS中,當文件被標記爲二進制文件(更準確地說,當「文件合併」設置爲「已禁用」時),則不會選擇自動合成這些文件,或者將它們合併到合併工具中。這是一種優化措施,可避免在衝突期間下載大量二進制文件的額外副本,並避免將它們塞進合併引擎中。

您可以通過打開團隊資源管理器來配置「不可合併」的文件類型,右鍵單擊您的Project Collection並選擇Team Project Collection Settings> Source Control File Types ...確保您的文件類型同被列爲「可合併」,在該對話框的工作:

File Types Dialog

+0

到最後,添加第三方3路比較工具幫助非常大。絕對不是一個簡單的過程,因爲它可以/應該是,但這個答覆是非常有幫助的。當擱置/擱置時,你需要遵循一個非常明確的流程! –

0

我想你可以檢查你的代碼,然後加載你的擱置。如果需要,請撤消更改並再次簽入。

TFS和VS2010中的合併也可以按行進行。如果存在合併衝突,它會告訴你這麼做。而且Sourcecontrol的一個很好的特性就是你總是可以前後移動。

+0

我已經檢查了我的代碼,並進行了更改,並嘗試卸載擱置。它會導致在我已經在本地和擱置版本中進行編輯的文件中發生大量衝突 - 並且只允許您選擇要保留的文件之一(當我真的想保留這兩組更改時)。 –

2

點擊Get Specific Version...在您的項目之前,你unshelve。在新窗口中,將類型從Latest Version更改爲其他選項之一(以您的情況爲準,最可能的更改集或日期)。您的目標是在擱置更改時選擇機器上的變更集。

enter image description here

一旦檢查出的版本相同selved集,你可以沒有錯誤取消擱置。然後執行Get Latest並解決當時發生的任何衝突。

相關問題