2011-06-30 79 views
1

是否存在處理TFS工作分支中的外部依賴關係的「最佳實踐」?我的意思是,我們在TFS中有一個包含常見第三方庫的項目(在這種情況下,我專門處理log4net),我們根據需要將其分支到其他項目中。現在我們正在對一個單獨的工作分支進行重大改變,這需要更新的組件版本。它看起來基本上是這樣的:TFS 2010:如何處理工作分支上的外部「分支」依賴關係

$/ThirdParty 
    /bin 
    /log4net 

$/Product 
    /Main 
    /thirdparty 
     /lognet  <-- $/ThirdParty/bin/log4net 
    /Working1  <-- $/Product/Main 
    /thirdparty 
     /log4net  <-- $/Product/Main/lognet <-- $/ThirdParty/bin/log4net 

部分工作需要根據.NET 4客戶端配置文件重新構建log4net並引入新版本。通常,當我們升級第三方組件時,它會在相應的文件夾中檢入$/Thirdparty,然後各個項目可以自由合併最新的二進制文件,或者不合適,因爲他們認爲合適。

至於我能確定,爲了從$/ThirdParty/bin/log4net獲得最新的變更我需要合併到這$/Product/Main檢查合併到TFS,將此分支合併到$/Product/Working1。這正是我想要避免的,因爲我不想破壞主分支。

所以,我想兩個問題:

  1. 有沒有辦法讓這個合併,而無需任何檢查到主分支工作?

  2. 是否有更好的整體策略來處理這些類型的依賴關係,同時仍然保持它們在TFS中? (我知道TFS對於二進制文件不是「意味着」的,但我們喜歡它,因爲我們從中獲得了簡單的多版本和歷史跟蹤)。

回答

2

對1的回答:
是的。您可以執行從ThirdParty到Working1的無基本合併。下面是MSDN頁面:
http://msdn.microsoft.com/en-us/library/bb668976.aspx

至於2: 如果你的項目主要可以使用2+不同版本的第三方二進制的,那麼我建議儲存第三方二進制文件的不同版本在$ /第三方區域,並且沒有第三方區域和主區域中的文件之間的直接鏈接。

+0

最終,工作分支中的版本凹凸也會在主布譜中產生,而不是立即產生。如果我直接在Working1中進行無基礎合併,那麼此更改集想要在稍後再合併到Main中嗎?而我們在TFS中保存二進制文件的原因是爲了讓所有項目都保持在同一版本的某些庫上(特別是像log4net這樣的強名稱)。由於我們的核心庫引用它,其他所有內容都必須使用相同的版本,否則我們必須執行運行時程序集綁定重定向。 (這次SNK發生了變化,即使這樣也行不通。) –

+0

是的。在向Working1進行無基本合併之後,可以將Working1合併到Main或從ThirdParty合併到main中(或者兩者兼而有之,並且TFS應該知道二進制文件是相同的)。我們強迫我們發佈的所有應用程序使用相同版本的第三方dll,而且我還沒有處理強名稱的第三方dll,所以我會記住你的方式,因爲我的下一個第三方dll會強名。 –

0

爲什麼不完全消除ThirdParty項目?只需將第三方庫的所有版本保留在文件共享上,並根據需要在每個項目的樹中檢查相應的版本。