【转】TFS上分支和标签的用法
什么時候用分支:??例如為某個客戶定制的專用版本,和主干的特性有很大差別.不具通用性的需求.
?????????????????????? 大的版本修改,例如2.0 到3.0 加了很多特性,但2.0 還有維護.改bug
?
什么時候用標簽:?小版本的發布, 如2.1.1到2.1.2.
?
?
?
分支的優點: 清晰,容易操作,程序員只要get latest/checkin?latest就可以了
?
分支的缺點: 合并比較麻煩,?解決方法是要么是定期同步或者干脆不同步.
?
?
?
標簽的優點: 靈活
標簽的缺點: 如果要對某個label的版本進行hotfix, 操作起來比較麻煩, 要先get specific version by label, 然后修改代碼,checkin之后會產生一個新的changeset, 然后在一個workspace里面get labelversion,然后get changset, 重新label一個version.來發布hotfix. 發布之后還要把之前latest的代碼copy一份,重新check in latest
?
========================================
有策略地進行分支
源代碼是開發工作中的一項重要資產。但如何在多個開發人員同時處理文件更新時有效管理和演化源文件成為了一個難題。可以使用版本控制系統在共享儲存庫中存儲源代碼、隔離并行開發工作、集成代碼更改以及恢復以前的文件版本。版本控制中的一個關鍵元素是分支,利用分支可進行同步開發。如果有策略地進行分支,則可保持軟件的多個版本的順序和一致性。
Team Foundation 提供一個靈活可靠的版本控制系統。您可以使用 Team Foundation 版本控制管理開發源代碼、文檔、工作項和由團隊處理的其他關鍵信息的過程中的多個版本。有關 Visual Studio Team Foundation Server 中的版本控制的更多信息,請參見使用版本控制。
在通過多個項目發布同時引入了多個更改時,團隊如何管理代碼?
在使用版本控制系統時,您必須考慮如何設置分支結構。可以通過鏡像源代碼文件來創建一個分支。然后,可以在不影響源的情況下更改該分支。例如,如下圖的分支結構所示,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 分支中發生沖突或錯誤。有關更多信息,請參見簽入到由封閉簽入生成過程控制的文件夾。
團隊如何管理實現不同用戶情景的源?
如下圖所示,可以定期將更改簽入工作分支以完成用戶情景。可以在同一分支中同時實現多個用戶情景,但僅當所有進行中的工作都已完成時才能反向集成到 MAIN 分支。建議您按照類似大小對用戶情景進行分組,因為您不希望大用戶情景阻止多個小用戶情景的集成。可以將兩組用戶情景拆分為兩個分支。
?
團隊應在何時添加分支?
以下情況下應創建分支:
-
在必須按與現有分支不同的時間表/周期發布代碼時。
-
在代碼需要不同的分支策略時。如果創建具有新策略的新分支,則可以為項目增添策略價值。
-
在向客戶發布功能且團隊打算進行不影響計劃的發布周期的更改時。
不應對每個用戶情景創建分支,因為這會產生較高的集成成本。雖然通過? 可方便地進行分支,但在分支很多時,管理分支的開銷可能會很大。
從版本控制的角度,團隊如何管理發布?
團隊應能在任意沖刺 (sprint) 末尾發布代碼。通過使用 Team Foundation Server,可以標記一個分支以在某個特定時間點為代碼拍攝快照。如下圖所示,可以為發布標記 MAIN 分支。這樣,您可以將分支返回到此時間點時的狀態。
?
因為必須在發布時實現更新,所以為發布創建分支可幫助團隊繼續獨立處理下一個沖刺 (sprint),而不會與將來的發布產生沖突。下圖顯示了一個分支,該分支包含更新代碼,隨后在第二個沖刺 (sprint) 末尾進行發布后,該分支反向集成到 MAIN 分支。
?
在為發布創建分支時,應從 MAIN 分支(該分支最穩定)創建分支。如果您從工作分支對發布進行分支,則會導致集成問題,因為無法保證工作分支的穩定性。
http://msdn.microsoft.com/zh-cn/library/ee782536.aspx
?
http://msdn.microsoft.com/zh-cn/magazine/gg598921.aspx
?
?
==================
標簽是邏輯上的
分支是物理上的
標簽歷史版本比較、在修改時,中間做應急發布不方便,多任務并發,多團隊合作有問題,客戶端一個版本。
分支可在任意時刻在主線上發布、修復應急bug、專用版不影響主線,客戶端多個版本,容易混亂。
標簽和分支的作用:大版本區分。
標簽在出現hotfix,并發任務,人員放假回家的情況,大團隊作業的情況確實不好。
?
總結
以上是生活随笔為你收集整理的【转】TFS上分支和标签的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一步步编写操作系统3 部署工作环境 3
- 下一篇: 【转】SharePoint 2010 用