2011-04-19 123 views
3

我在TFS中有一個團隊項目,每天提交任務。我想獨立完成每項任務,然後在測試後將其合併到主線中。TFS分支與合併策略

目前有一個主分區和DEV分支,它是主要的一個孩子。在DEV分支中進行更改,然後在準備就緒時將其合併到MAIN中。這是通過「櫻桃選擇」合併完成的。我一直在閱讀各地櫻桃選擇合併是不好的,你應該儘可能避免它們。

我有麻煩我的包裹周圍分支和TFS合併頭,想知道是否有人對如何實現在TFS這一目標的任何建議,而無需做櫻桃挑合併。

任何幫助表示讚賞。

如果我離開了任何關鍵信息,請發表評論,我會編輯自己的帖子。

回答

3

我認爲這Codeplex上的文件將是一個很大的幫助:

http://tfsbranchingguideiii.codeplex.com/

下載有幾個PDF文件,規定了不同的方案和戰略,並給予了Q值在不同的方法&一個。

您的場景的關鍵將是合併所有更改,直到從Dev到Main的指定版本。每次將代碼簽入Dev後,運行所有測試(開發人員將獲得最新的Dev代碼,然後在簽入前運行所有測試)。理想情況下,如果在開發簽入後,Dev分支中的構建成功,則合併到Main中將是一個好主意。經常從Dev合併到Main,並在每次簽入後在Main中運行所有測試。

因此,即使開發商的某些片段獨立工作,一旦檢查到的Dev分支,他們基本上是說:「這個代碼是準備進行整合。」當從Dev開始合併到Main時,你不再處理特​​定的作品 - 你合併了整個辣醬玉米餅餡。如果開發人員需要源代碼控制進行半成品代碼,他們應該使用TFS擱架並等待Dev完成,直到完成。

+0

目前,我們在DEV中檢入日常更改。一旦變化準備好投入生產,它就會被合併到MAIN中。我面臨的問題是,有時在新的更改之前簽入的更改尚未準備好投入生產。這可以防止我合併到最新版本,並迫使我進行櫻桃選擇合併,因此我只能選擇準備發佈的更改。 – thiag0 2011-04-19 17:37:41

+0

然後選項包括:1)不檢入代碼,直到它準備好生產並針對同一生產版本的所有更改爲止;或者2)更改分支策略,以便擁有兩個「正在進行中」的分支 - 一個用於第一個版本,第二個版本的版本 - 它們不會合併到主幹中,直到他們準備投入生產。後者聽起來像是最適合你的情況的方法。 – Shawn 2011-04-20 00:07:52

+0

在這種情況下,我可以看到兩種解決方案,因爲它需要每週發佈一次。方法1可以通過使用shelveset來存儲tfs服務器上未準備好的更改來完成。方法2可以通過創建一個分支來完成,這些分支很可能會在下一個版本之前完成,另一個分支需要更長的時間才能完成。由於創建分支的成本,我認爲你的第一個建議會更好。謝謝! – thiag0 2011-04-20 02:34:59

2

您可能會發現定音鼓軟件的MergeMagician工具有趣。這是一個支持TFS(也是Subversion)的分支管理和自動化合並解決方案。您在分支之間創建發佈/訂閱關係,然後服務器自動進行合併。

MM可用於實現Shawn提到的TFS分支指南中討論的所有模式。

僅供參考,它是一個商業工具。我不知道有哪些開源工具可以完成像TFS一樣的工作。

瞧瞧吧http://www.timpanisoftware.com。主頁上有一個很好的概覽視頻。