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

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

  1. ②将SVN迁移到GitLab-多分支多标签迁移

    之前我们介绍了<①将SVN迁移到GitLab-单分支迁移>,文中研究了svn迁移到git单分支的操作过程,本文针对实际开发过程中svn使用到的trunk.branches.tags情况进行 ...

  2. Git基本概念,流程,分支,标签及常用命令

    Git基本概念,流程,分支,标签及常用命令 Git一张图 Git基本概念 仓库(Repository) 分支(Branch) Git工作流程 Git分支管理(branch) 列出分支 删除分支 分支合 ...

  3. git使用---安装,提交,回退,修改,分支,标签等

    下面是对git的各种使用及命令的基础使用,来自廖雪峰老师的git教程,这个收录下,作为git的使用总结. github上面地址为:https://github.com/Zhangguoliu/lear ...

  4. VS2012如何更新下载TFS上面的代码到本地

    现在的代码基本上全都放在TFS上面,如何同步TFS上面的code呢? 1. Open "Team Explorer - Home" 2. Click "Source Co ...

  5. 运行vs时打开一个浏览器窗口,而不是在原有窗口上打开一个标签

    1.运行vs时打开一个浏览器窗口,而不是在原有窗口上打开一个标签,结束调试时窗口又关闭了,特别麻烦. 在用swagger调试接口时,好不容易输入了测试数据,然而窗口关闭了,再次调试又得重新输入. 解决 ...

  6. Git 的分支和标签规则

    Git 的分支和标签规则 分支使用 x.x 命名,不加 V. 标签使用 v1.x.x-xxx 方式命名.(v 为小写) 分支和标签名不可重复.

  7. 在excel图表上添加数据标签

    在excel图表上添加数据标签 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://zhidao.baidu.com/question/47838665 方法与步骤 在E ...

  8. git下载线上分支到本地分支

    首先执行 'git branch -r' 查看线上的所有分支 例如像要拷贝线上分支 'origin/online' 到本地本地分支 'online',则执行 'git checkout -b onli ...

  9. git冲突解决、线上分支合并、luffy项目后台登陆注册页面分析引入

    今日内容概要 git冲突解决 线上分支合并 登陆注册页面(引入) 手机号是否存在接口 腾讯云短信申请 内容详细 1.git冲突解决 1.1 多人在同一分支开发,出现冲突 # 先将前端项目也做上传到 g ...

随机推荐

  1. Wpf鼠标点击坐标转为屏幕坐标/后台重新设置在Canvas和Grid上的位置

    Point getP = PointToScreen(Mouse.GetPosition(this)); DockPanel.SetValue(Canvas.LeftProperty, 1.0); D ...

  2. subclipse解决JavaHL不可用的问题

    最近在配置eclipse的svn插件,发现在部分机器上无法启用javaHL,很是奇怪,尤其是在windows环境下,网上搜索到的解决方案太复杂,居然还有说要安装slikSVN的,其实windows只需 ...

  3. AWS的redhat7中安装jdk8

    下载jdk8 wget https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/ ...

  4. git合并分支上的commit为一条commit到master

    标签: git 缘由? 有一次被人问到怎么把一个分支的所有commit按一个commit合并到主分支上,当时一脸蒙B,平时开发都是直接merge,很少考虑到这种问题,于是特意搜索了相关资料. 场景 其 ...

  5. 赶集网mysql开发36条军规

    写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过. (一)核心军规 (1)不在数据库做运算    cpu计算务必移至业务层: (2)控制单表数据量    i ...

  6. (生产)better-scroll - 下拉刷新

    Options 参数 startX: 0 开始的X轴位置 startY: 0 开始的Y轴位置 scrollY: true 滚动方向为 Y 轴 scrollX: 'true' 滚动方向为 X 轴 cli ...

  7. TeeChart for .NET常用属性总结

    本文总结了图表控件Teechart for .NET常用的一些属性,对图表开发人员来说是一个很好的参考. 原文链接:http://blog.csdn.net/u010270772/article/de ...

  8. oracle 递归查询(来源于网络)

    比如 a   b a   c   a   e b   b1 b   b2 c   c1 e   e1 e   e3 d   d1 指定parent=a,选出 a   b a   c   a   e b ...

  9. Eclipse Push出现rejected - non-fast-forward错误

    在 Push到服务器时有时会出现 rejected - non-fast-forward 错误,这是由于pull的代码而远端发生改变,此时再提交之前你需要将远端的改变合并到本地上 参考:https:/ ...

  10. 思科双出口+策略路由+NAT

    使用策略路由,从教育网出去的,在教育网接口进行nat转换 访问教育网资源平时走教育网,故障走电信 访问internat走电信线路,故障走教育网 服务器静态绑定教育网ip,不管电信.联通.教育网都走教育 ...