【转摘】TFS上分支和标签的用法

引用路径:http://blog.csdn.net/cxzhq2002/article/details/8518250

什么时候用分支:  例如为某个客户定制的专用版本,和主干的特性有很大差别.不具通用性的需求.

大的版本修改,例如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)。

分支和合并需要遵循下列原则:

  1. 每个分支都必须具有一个定义的策略,此策略与如何将代码集成到相应分支中有关。例如,在上图的分支结构中,可以指定一个团队成员来拥有和管理 MAIN 分支。该成员负责执行初始分支操作、将更改从 DEVELOPMENT 分支反向集成到 MAIN 分支,以及将更改从 MAIN 分支正向集成到 DEVELOPMENT 分支。当 MAIN 分支也从其他分支集成更改时,正向集成非常重要。
  2. MAIN 分支必须包含已通过集成测试的代码,以便始终准备进行发布。
  3. 由于团队成员会定期签入更改,因此 DEVELOPMENT(或工作)分支将不断演变。
  4. 标签是分支中的文件在某个特定时间的快照。

    有关更多信息,请参见使用标签获取文件快照

利用 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,并发任务,人员放假回家的情况,大团队作业的情况确实不好。

原文地址:https://www.cnblogs.com/bwlluck/p/8463728.html

时间: 2024-08-29 20:35:36

【转摘】TFS上分支和标签的用法的相关文章

git分支、标签管理与别名

笔记内容:git分支.标签管理与别名笔记日期:2018-01-15 22.9 分支管理 22.10 远程分支管理 22.11 标签管理 22.12 git别名 22.9 分支管理 分支管理是git比较重要的一个概念,平时用的也比较多.我们先来在本地的仓库里操作一下分支: [[email protected] ~]# cd /data/gitroot/ [[email protected] /data/gitroot]# git branch # 查看当前仓库的分支,*表示当前的分支是哪一个 *

git命令之git tag 给当前分支打标签

git命令之git tag 给当前分支打标签 标签可以针对某一时间点的版本做标记,常用于版本发布. 列出标签 $ git tag # 在控制台打印出当前仓库的所有标签 $ git tag -l 'v0.1.*' # 搜索符合模式的标签 打标签 git标签分为两种类型:轻量标签和附注标签.轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象.建议使用附注标签. # 创建轻量标签 $ git tag v0.1.2-light # 创建附注标签 $ git tag -a v0.1.2 -m

灵动标签的用法 ecms通过执行sql获取需要的记录

1引言 你点击了桌面上的Chrome图标,一个浏览器窗口出现了,输入网址就可以在Internet世界愉快玩耍.这一切是怎么实现的呢?Chromium这个多进程的程序是如何启动各个进程的呢?浏览器主进程(界面进程)启动了哪些线程?如何启动的呢?这些问题一直萦绕在心头,一起来看看源代码吧.本文主要针对Chromium for Mac的源代码,其它操作系统大同小异. 2背景知识 浏览器作为一个应用程序,是以进程的形式运行在操作系统上的.首先,Chromium是一个多进程的应用程序,我们需要了解Chro

浅谈struts2标签中的2个很常用的标签的用法(radio和select)

1.如图所示我们需要在前台的页面通过radio和select将对应的数据库中的数据显示到选项当中,这也是我们做项目中经常需要做的,动态的显示,而不是静态的显示. 首先我们需要在页面中导入struts2的标签库<%@ taglib prefix="s" uri="/struts-tags"%>,一般的我们不用struts2写一个radio代码如下: <input type="RADIO" name="sex"

WordPress基础知识:条件判断标签及用法大全

在 WordPress 主题和插件开发中,条件判断标签(Conditional Tags)是非常重要的,通过条件判断标签,我们可以判断各种情况,从而使用对应的代码等.例如在顶部导航条中有一个"首页"选项,在首页的时候需要设置 成高亮,我们可以在头部导航模板文件(header.php)中使用条件判断标签 is_home() 来判断当前页面是不是首页,然后再输出高亮的 class. 这类的条件判断标签一般会返回一个布尔值,这样我们就可以使用 if 语句判断不同的页面不同的情况而分别使用不同

第五节:表单标签的用法——value绑定和修饰符

1.表单标签的用法--value绑定和修饰符 value绑定的写法:v-bind:value 或者简写 :value 修饰符: lazy , Number , trim . 用法如:  v-model.lazy 2.使用表单的时候需要注意 v-bind:true-value和v-bind:false-value 的两个属性只是用在checkbox上 checkbox和radio需要设置初始值的时候,要在v-model绑定的值上直接设置,不要用html标签属性selected. 3.例子详解 <!

HTML中META标签一些用法

你的个人网站做得再精彩,在如此庞大的网络空间,被人发现实属不易.那么如何推广个人网站,人们一般会这样做: ● 在搜索引擎中登录自己的个人网站 ● 在知名网站加入你个人网站的链接 ● 在论坛中发帖子宣传你的个人网站 很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性! META标签分两大部分:HTTP标题信息(HTTP-EQUIV)和页面描述信息(NAME). HTTP-EQUIV类似于HTTP的头部协议,它回应给浏览器一些有用的信息,以

好程序员web前端分享html中meta标签及用法详解

好程序员web前端分享html中meta标签及用法详解,这篇文章给大家介绍了html中meta标签及用法详解,感兴趣的朋友一起看看,Html中meta标签一.meta标签 含义 <meta> 元素 可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. <meta> 标签位于文档的头部,不包含任何内容. <meta> 标签的属性定义了与文档相关联的名称/值对.二.meta 中常用属性 charset? (字符集) 说明:规

JSTL中&amp;#60;c:set&amp;#62;标签的用法

<c:set>标签有两种不同的属性设置:var和target. var“版本”用于设置作用域属性,target“版本”用于设置bean属性或Map值. 这两个版本都有两种形式:有标签体和没有标签体.有标签体的只是放入值的另一种途径. ★ var“版本” 1. <c:set var="userLevel" scope="session" value="Cowboy"/>     2.      3. <c:set va