2012-06-13 116 views
7

我有一個名爲「Framework」的解決方案,它是用於我的業務邏輯和數據事務的C#程序集。TFS分支推薦

我有4個應用程序使用Framework,1個網站,1個控制檯應用程序和3個其他類型的應用程序。

$/TeamProject 
    /Framework 
     /Dev 
     /Main 
     /Release 
    /WebApp 
     /Dev 
     /Main 
     /Release 
    /WCFApp 
     /Dev 
     /Main 
     /Release 

我把所有這些放在一個Team Project中,每個程序集/應用程序在它自己的文件夾下。

我想爲每個共享框架程序集的應用程序使用分支功能,但我不知道什麼是與框架一起分支應用程序的最佳方式?

有什麼建議嗎?

我知道分支和合並是如何工作的,但所有的例子都只能證明分支1文件夾中包含的所有東西。

+0

所示我的源代碼控制文件怎麼看目前這樣 –

回答

7

在代表你的源代碼控制目錄中選擇圖片的光,我會做出以下假設:

 
$/TeamProject 
    /Framework 
    /Console 
    /Web 
    /etc. 

你需要做的第一件事就是在$/TeamProject創建一個名爲Main文件夾(這將是你的主要 - 又名樹幹 - 分支)並將所有頂級文件夾移入其中。

然後我們有:

 
$/TeamProject 
    /Main 
    /Framework 
    /Console 
    /Web 
    /etc. 

現在你需要Main轉換爲一個分支,可以在Main文件夾中右擊做到這一點,選擇「轉換爲分支」。 TFS現在將允許您將$/TeamProject/Main分支到$/TeamProject/ConsoleV2(例如)並處理控制檯V2的功能。如果需要,您可以修改控制檯應用程序和框架。完成此項工作後,您可以將更改反向集成(合併)回Main

請記住繼續執行從Main的前向集成合並(合併)到您的功能分支並解決任何衝突以保持代碼庫同步。

通過採用這種方法,您可以在一次原子檢查中修改任何產品的任何部分,例如,您可以在您的Framework上更改API,併爲方法添加一個新的強制參數,您可以將其更改爲所有的應用程序在同一時間,當你合併到Main一切都會更新。

+0

我知道這個評價,這個問題是,如果我想Brach我的控制檯應用程序以及框架我必須支持一切...這是通常的方法嗎?看起來有點過於致命 –

+0

從Source Repository中分支的地方不會改變它創建的分支的大小。我們使用這種方法來分支我們的應用程序的版本無關的幾個不同部分,以便我們可以同時更新相關部分。你可以忽略你不工作的文件夾。 – DaveShaw

+0

我已經在我的團隊項目中添加了一個「視覺」代碼,目前我的源代碼是如何構建的 –

-2

如果您想要爲個別項目合併分支&,實現TFS下的唯一方法是爲解決方案中的每個項目創建一個單獨的TFS項目。希望這是有道理的。一旦你這樣做了,那麼你可以將每個項目的代碼分支到你的工作目錄中。

不久前,我們將代碼從VSS遷移到TFS。那時候,我們不得不決定把所有的代碼放到1個TFS項目中,或者把它們分開。所以,我們有一個網站,一個商業圖書館(這是由網站&使用的其他應用程序),一個數據層。我們爲圖書館,網站和數據層項目創建了一個單獨的TFS項目。每個項目都有一箇中繼分支。每個需要最新的人都會從主幹中分支出他們自己的副本併合併到那裏。

希望有所幫助。

+0

你是如何合併每個組裝成1支? –

+0

這是事情。每個開發人員都必須保留一個本地解決方案文件。因此,如果我需要網站,圖書館和數據訪問庫,我會從TFS將這些分支機構轉移到我的解決方案中,而不會檢查解決方案。 – Skadoosh

+0

看看這些:http://stackoverflow.com/questions/400517/tfs-structure-multiple-projects-or-single-project和http://stackoverflow.com/questions/867628/merging-and-branching -shared-code-between-projects-in-tfs – Skadoosh

2

我的理解是你的主要問題是「什麼是分支我的應用程序依賴於框架的最佳分支結構?」如果你總是一起構建和版本/釋放它們,那麼將它們一起分支爲DaveShaw descibes會更簡單並且更便宜;但是,如果他們每個人都是由不同的團隊開發的,有不同的發佈時間表,有不同的版本等等,比你想在他們每個人下創建一個MAIN分支。在這種情況下,還應該清楚誰擁有對Framework的更改。通常是一個好主意,可以將簽入訪問權限僅限於那些需要共享項目(如Framework)的用戶。

如果後一種情況是正確的,那麼我認爲你當前的圖形很好地處理它,但我會做出一個改變;保持您的發佈與MAIN分支在層次結構中處於同一級別,以便相對路徑在進行引用時保持不變;這將簡化您的工作空間的映射:

$/TeamProject 
    /Framework 
     /Dev 
     /Main 
     /Release1 
     /Release2 
     /Release3 
     ... 
    /WebApp 
     /Dev 
     /Main 
     /Release 
      /Release1 
      /Release2 
      /Release3 
      ... 
    /WCFApp 
    ...