引用路徑:http://blog.csdn.net/cxzhq2002/article/details/8518250程序員
何時用分支: 例如爲某個客戶定製的專用版本,和主幹的特性有很大差異.不具通用性的需求.安全
大的版本修改,例如2.0 到3.0 加了不少特性,但2.0 還有維護.改bug併發
分支的優勢: 清晰,容易操做,程序員只要get latest/checkin latest就能夠了ide
標籤的優勢: 靈活單元測試
標籤的缺點: 若是要對某個label的版本進行hotfix, 操做起來比較麻煩, 要先get specific version by label, 而後修改代碼,checkin以後會產生一個新的changeset, 而後在一個workspace裏面get labelversion,而後get changset, 從新label一個version.來發布hotfix. 發佈以後還要把以前latest的代碼copy一份,從新check in latest測試
========================================網站
有策略地進行分支ui
源代碼是開發工做中的一項重要資產。但如何在多個開發人員同時處理文件更新時有效管理和演化源文件成爲了一個難題。可使用版本控制系統在共享儲存庫中存儲源代碼、隔離並行開發工做、集成代碼更改以及恢復之前的文件版本。版本控制中的一個關鍵元素是分支,利用分支可進行同步開發。若是有策略地進行分支,則可保持軟件的多個版本的順序和一致性。spa
Team Foundation 提供一個靈活可靠的版本控制系統。您可使用 Team Foundation 版本控制管理開發源代碼、文檔、工做項和由團隊處理的其餘關鍵信息的過程當中的多個版本。有關 Visual Studio Team Foundation Server 中的版本控制的更多信息,請參見使用版本控制。.net
在使用版本控制系統時,您必須考慮如何設置分支結構。能夠經過鏡像源代碼文件來建立一個分支。而後,能夠在不影響源的狀況下更改該分支。例如,以下圖的分支結構所示,MAIN 分支包含已經過集成測試的已完成功能,而 DEVELOPMENT 分支包含團隊正在構建的代碼。當 DEVELOPMENT 分支中的新功能完成並可經過集成測試時,您能夠將代碼從 DEVELOPMENT 分支提高到 MAIN 分支中。此過程稱爲「反向集成」。反之,若是您將代碼從 MAIN 分支合併到 DEVELOPMENT 分支中,則此過程稱爲「正向集成」。

有關如何建立和合並代碼分支的更多信息,請參見 CodePlex 網站上的如下頁面:Team Foundation Server Branching Guide 2.0(Team Foundation Server 分支指南 2.0)。
分支和合並須要遵循下列原則:
-
每一個分支都必須具備一個定義的策略,此策略與如何將代碼集成到相應分支中有關。例如,在上圖的分支結構中,能夠指定一個團隊成員來擁有和管理 MAIN 分支。該成員負責執行初始分支操做、將更改從 DEVELOPMENT 分支反向集成到 MAIN 分支,以及將更改從 MAIN 分支正向集成到 DEVELOPMENT 分支。當 MAIN 分支也從其餘分支集成更改時,正向集成很是重要。
-
MAIN 分支必須包含已經過集成測試的代碼,以便始終準備進行發佈。
-
因爲團隊成員會按期簽入更改,所以 DEVELOPMENT(或工做)分支將不斷演變。
-
標籤是分支中的文件在某個特定時間的快照。
有關更多信息,請參見使用標籤獲取文件快照。
利用 Team Foundation Build,能夠從分支的幾種生成類型中進行選擇:手動、連續、封閉、滾動和計劃。建議 MAIN 分支具備封閉簽入生成類型。這意味着,DEVELOPMENT 分支必須先經過 MAIN 分支的全部要求,而後您才能提交反向集成。DEVELOPMENT 分支應運行連續生成類型,由於團隊必須儘快瞭解影響 DEVELOPMENT 分支的新簽入的發生時間。
以下圖所示,反向集成和正向集成應至少在用戶情景完成時進行。雖然每一個團隊對於完成的定義可能不一樣,但完成用戶情景一般意味着完成了功能和對應的單元測試。只能在單元測試驗證 DEVELOPMENT 分支的穩定性後反向集成到 MAIN 分支中。

若是您具備多個工做(即 DEVELOPMENT)分支,則當任意分支集成到 MAIN 分支時應馬上正向集成到全部工做分支。由於 MAIN 分支保持穩定,因此正向集成是安全的。工做分支中可能會發生某些衝突或失敗,這是由於沒法保障工做分支是穩定的。
應儘快解決全部衝突,這很是重要。經過對 MAIN 分支使用封閉簽入,可使反向集成變得簡單得多,由於質量要求可幫助避免 MAIN 分支中發生衝突或錯誤。有關更多信息,請參見簽入到由封閉簽入生成過程控制的文件夾。
團隊應能在任意衝刺 (sprint) 末尾發佈代碼。經過使用 Team Foundation Server,能夠標記一個分支以在某個特定時間點爲代碼拍攝快照。以下圖所示,能夠爲發佈標記 MAIN 分支。這樣,您能夠將分支返回到此時間點時的狀態。

由於必須在發佈時實現更新,因此爲發佈建立分支可幫助團隊繼續獨立處理下一個衝刺 (sprint),而不會與未來的發佈產生衝突。下圖顯示了一個分支,該分支包含更新代碼,隨後在第二個衝刺 (sprint) 末尾進行發佈後,該分支反向集成到 MAIN 分支。

在爲發佈建立分支時,應從 MAIN 分支(該分支最穩定)建立分支。若是您從工做分支對發佈進行分支,則會致使集成問題,由於沒法保證工做分支的穩定性。
http://msdn.microsoft.com/zh-cn/library/ee782536.aspx
==================
標籤是邏輯上的
分支是物理上的
標籤歷史版本比較、在修改時,中間作應急發佈不方便,多任務併發,多團隊合做有問題,客戶端一個版本。
分支可在任意時刻在主線上發佈、修復應急bug、專用版不影響主線,客戶端多個版本,容易混亂。
標籤和分支的做用:大版本區分。
標籤在出現hotfix,併發任務,人員放假回家的狀況,大團隊做業的狀況確實很差。