TFS分支,有什么优点

2023-12-20

我对 TFS 和源代码管理还很陌生。我无法理解分支的优势。因为我可以通过创建 2 个文件夹 main 和development 来做同样的事情,所以当我完成开发时。我可以使用任何 diff 工具将代码与主分支合并。

那么设立分支机构还有什么意义呢?我知道一定有巨大的优势,但我无法理解。


(更新:TFS 现在支持 git 进行版本控制,因此本答案的其余部分不再适用)

我会按功能搜索分支。

分支的主要优点是您可以处理某个功能而不会被其他人的工作打断。准备好后,您可以合并并查看许多功能是否可以很好地协同工作。这通常在功能开发时完成,但对于小功能,可以在功能完成后完成。

优点是您对实施某件事所做的事情有清晰的历史记录。如果没有分支,您将有大量提交与其他功能的提交混合在一起。如果 QA 未通过某个功能,您就需要完成工作,仅使用其他功能的提交来组合另一个版本。另一种选择是尝试修复您的功能,以便 QA 通过。这在周五下午可能无法实现。

功能切换是省略工作的另一种方式,但这会增加代码的复杂性,并且切换本身可能存在错误。这是令人非常厌倦的事情,看看它如何成为一个“可接受的”解决方法。

分支还用于跟踪多个版本的更改。由多个客户消费的产品可能会出现这样的情况:一组客户正在使用该产品的 1.0,而其他客户已经在使用该产品的 2.0。如果您同时支持两者,则应该通过指定给它们的分支来跟踪对它们的更改。前面的几点仍然适用于这些分支的开发。

话虽如此,出于多种原因,TFS 在按功能分支方面并不理想。最大的问题是它不支持三向合并——它只有所谓的无基础合并。根据跟踪历史记录的方式,TFS 无法向您显示功能分支与您尝试将其合并到的位置之间的共同祖先。这使您有可能解决很多冲突。一般来说,很多使用 TFS 的人都因为这个原因回避分支。

三向合并很棒,因为它们会向您展示共同祖先是什么、您的更改是什么以及另一个分支中的更改是什么。这将使您能够就如何解决冲突做出明智的决定。

如果您必须使用 TFS,我建议使用 git-tfs 以便能够利用 3 路合并和许多其他功能。其中包括:rerere、rebasing、断开连接的模型、本地历史、bisect 等等。

Rebase 非常有用,因为它允许您更改基于另一个起点的功能、省略提交、将提交压缩在一起、拆分提交等。准备好后,您可以将它们合并到集成或发布分支中,具体取决于工作流程你决定。

Mercurial 也是另一种可能更容易使用的工具,但从长远来看不会那么强大。

如果您有机会,我强烈建议您放弃使用 TFS 进行源代码控制,因为与现代 DVCS 相比存在很多限制。

如果您想有效地管理分支/合并,可以遵循以下一组很好的准则:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/ http://dymitruk.com/blog/2012/02/05/branch-per-feature/

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TFS分支,有什么优点 的相关文章

  • 如果文件已在服务器上,请避免使用 git-ftp 上传

    假设我有应用程序的本地副本 我将其推送到 github 然后使用 git ftp 将任何更改上传到我的服务器 我首先会使用 git ftp init u
  • OpenSSL SSL_connect:SSL_ERROR_SYSCALL VS2017 社区/TFS

    我无法将本地 git 与 Visual Studio 在线同步 这是我得到的错误 Git 因致命错误而失败 无法访问 https mysite visualstudio com DefaultCollection git MajorMain
  • 使用 VNext 构建后,TFS tbl_Content 开始快速增长

    直到一个月前我们一直在使用旧样式 XAML 构建 然后开始使用 vNext 构建 之后我注意到 TFS 数据库中的 tbl Content 表开始快速增长 例如 在过去 8 小时内 它增长了 10 GB 但我不明白为什么会这样做 有谁知道它
  • 交互式变基后,本地 Git 分支已偏离原始分支

    我有一个本地分行 CRM ayrshireminis 其中有一些我已推送到原点的提交 origin CRM ayrshireminis 这个分支是从创建的develop大约一周前的一个分支 其他合作者已经在该分支上完成了一周的工作 我想做的
  • 在没有 IIS 的计算机中打开设置为 IIS 目录的 Web 项目,指向嵌入式服务器

    我可以在TFS中打开一个Web项目 但是 在我的 QA 环境中 我必须将其更改为使用 IIS 在我的本地开发环境中 我没有IIS 无法安装它 新的公司规则拒绝我进行 QA 访问 并且我无法打开我的 Web 项目来在我的计算机中修复它 当我打
  • 在 Visual Studio 2013 中更改 TFS 源代码管理映射

    我有多个先前映射到托管 TFS 的解决方案 他们的本地映射也已定义 并且所有源代码都是本地最新的 此后我停止了 TFS 订阅并开始使用 Visualstudio com 作为我的 TFS 服务器 我进入其中一个解决方案 从解决方案中删除 v
  • 为什么版本控制系统缺乏 Visual Source Safe 的共享功能?您使用并认为哪些源代码控制值得尝试?

    我们正在寻找一种版本控制系统来改变我们当前的源安全系统 我们将它与 Visual Studio 一起使用 到目前为止 我们已经失败了 主要原因是我们看到的所有替代方案都不支持 VSS 的一项或多项功能 尤其是我们广泛使用的一项 文件共享 那
  • TFS 构建控制器:“无法加载文件或程序集“Microsoft.WindowsAzure.StorageClient,版本=1.7.0.0”

    如您所知 您的 TFS 预览版不支持 Azure SDK 1 8 因此我们使用本地 TFS 构建控制器来构建我们的项目 在 Azure 持续集成部署构建期间 我们收到此错误 Exception Message Could not load
  • 自定义 SSH 端口上的 Git

    我的 VPS 提供商建议我将 SSH 端口保留为他们默认分配的自定义端口号 不是 22 问题是 虽然我知道我可以在创建远程配置时提供端口号 但在进行 Git 克隆时似乎无法提供相同的操作 我在用gitolite https wiki arc
  • 将文件从一个 Team Foundation 项目移动到另一个 Team Foundation 项目

    我们的项目已经达到了需要将一些代码拆分到一个单独的团队基础项目中的地步 我们希望移动这些文件 以便它们保留其版本控制历史记录 我们暂时将文件复制回原始团队基础项目并重新添加它们 以便我们的日常构建和测试过程不会中断 由于我们能够修改构建和测
  • 自动包含在 Visual Studio 外部创建的新文件

    Problem 如果我将图像保存在项目文件夹结构中的某个位置 则在 Visual Studio 外部创建的图像不会自动包含到我的项目中 问题 有没有办法自动包含添加到项目中任何文件夹中的新文件 我还使用源代码管理 团队基础服务器 如果新文件
  • 使用BFG时可以指定多个文件吗?

    我正在尝试删除通配符无法覆盖的多种类型的文件 我尝试使用多个 delete files 但它不接受它 还尝试将文件全部放在 delete files 之后 但它也不接受它 有没有一种方法可以将它们全部放在一个命令中 如果没有 那么我必须运行
  • TFS - 删除本地文件后最新字段仍显示“是”

    在 TFS 源代码管理资源管理器中 即使我已删除所有本地文件 我的项目在最新字段中仍标记为 是 有没有办法重新评估该列 使其再次显示 未下载 如果您想从本地文件系统 例如使用 Windows 资源管理器 删除文件并将源代码管理资源管理器中的
  • 如何在 Perforce 树中查找未跟踪的文件? (svn状态的模拟)

    有人有脚本或别名来查找 Perforce 树中未跟踪 实际上 未添加 的文件吗 编辑 我更新了对此已接受的答案 因为看起来 P4V 在 2009 年 1 月的版本中添加了对此的支持 EDIT 请用p4 status现在 不再需要跳圈了 参见
  • 更改 TFS 构建代理的身份

    我们有一个运行集成测试的 TFS 构建代理 其中一些测试会调用 Internet 上的 Web 服务 我们的网络使用代理与互联网通信 由于构建代理在网络服务上的身份下运行 并且网络服务的设置未配置为使用代理 因此测试失败 我该如何执行以下操
  • 如何使用 C# API 移动 TFS 文件?

    我一直在谷歌上搜索如何使用 TFS API 通过 C 移动文件 我们的想法是有一个文件夹 开发人员可以在其中放置数据库升级脚本 构建过程会在该文件夹中创建一个构建脚本 并将该文件夹上的所有文件移动到具有我们刚刚创建的数据库构建版本的新文件夹
  • 如何使用 REST API 列出 TFS GIT 存储库中的所有文件

    全部 我正在尝试使用 REST API 获取 TFS GIT 中特定存储库中的所有文件的列表 我找到了下面的一个 但它只显示 scopePath buld xml 后面提到的特定文件名的内容 它只显示文件build xml的内容 但我试图仅
  • 在 Xcode 9 上切换分支

    我无法找到使用 Xcode 9 切换分支的菜单项 工作副本菜单似乎已经消失 有任何想法吗 Xcode 9 Xcode 8 Press 2 to open the new Source Control Navigator 右键单击master
  • 相当于 svnblame/gitblame 的clearcase?

    在 Rational Software 的 Clearcase 中 有一个cleartool子命令或其他命令行工具 相当于blameSVN 中的命令还是 git 中的命令 最接近的一个是cleartool annotate https ww
  • 使用 TFS REST API 获取迭代中的所有工作项

    我正在尝试获取有关当前冲刺中所有用户故事的一些信息 我可以轻松获取当前冲刺的路径 并且给定工作项的 ID 列表 我可以从其中获取所需的内容 但我不确定如何从迭代路径获取这些 ID 我见过使用 C 和查询的示例 但我使用的是 javascri

随机推荐

  • 将“RSA/ECB/PKCS7Padding”与 Bouncy Castle 一起使用

    我尝试使用 RSA ECB PKCS7Padding 进行加密 JCE 不支持它 所以我下载了Bouncy Castle 但Bouncy Castle似乎也不支持这种转换 以下代码 Security insertProviderAt new
  • 为什么一百万个双整型转换的执行时间与空循环相同?

    我正在编写一个具有大量 int double int 转换的高性能组件 因此我需要知道它们之间的执行时间 static double ToDouble int val gt double val static int ToInt doubl
  • 如何在Android项目的gradle中更改proguard映射文件名

    我有一个基于 gradle 的 android 项目 我想在为我的构建生成该文件名后更改它 如何做呢 upd 如何在 build gradle 中完成 由于我可以访问我的口味和其他硬性内容 因此我想根据口味 构建变体版本创建映射文件名 更简
  • ejabberd:从 mysql 数据库检索聊天历史记录

    我正在构建一个基于的聊天系统ejabberd http www ejabberd im 使用 iOS 客户端 以及XMPP框架 https github com robbiehanson XMPPFramework 我当前的聊天系统仅支持用
  • Robot Framework 中的静态变量

    机器人框架中是否有静态类型变量之类的东西 如果是这样我该如何调用它 或者是通过 python 文件来实现的解决方案 我试图解决的问题是 我希望设置一个变量一次 并让它记住设置的值 不幸的是 这个变量位于资源文件中 它与我的测试套件文件分开
  • 让 Scrapy 跟踪链接并收集数据

    我正在尝试在 Scrapy 中编写程序来打开链接并从此标签收集数据 p class attrgroup p 我已经设法让 Scrapy 收集给定 URL 的所有链接 但不跟踪它们 非常感谢任何帮助 你需要屈服Request http doc
  • 加载引导加载程序的第二阶段和/或将控制权转移给它时出现问题

    我的主引导记录代码 bit16 16bit by default org 0x7c00 jmp short start nop bsOEM db OS423 v 0 1 OEM String start cls mov ah 06h Fun
  • 为什么gensim.word2vec中两个词袋之间的相似度要这样计算?

    def n similarity self ws1 ws2 v1 self word for word in ws1 v2 self word for word in ws2 return dot matutils unitvec arra
  • 两个数据帧的差异

    我需要按行比较两个不同大小的数据帧并打印出不匹配的行 让我们采取以下两个 df1 DataFrame Buyer Carl Carl Carl Quantity 18 3 5 df2 DataFrame Buyer Carl Mark Ca
  • 解决 C# 和 C++/CLI 项目之间的循环项目依赖性?

    我们有一个包含多个项目的解决方案 在一种特殊情况下 我们有两个项目 1 一个完成大部分工作的 C 项目 2 一个 C CLI 项目 充当某些本机 C 代码的中间人 C 代码调用 C 包装器 一切顺利 但是 我们正在引入一些新功能 在 C 包
  • 如何动态添加和删除js文件

    我有一个网页index php 我想动态向该页面添加和删除JS文件 到目前为止我做到了 我原计划通过以下方式更改此脚本标记的 src function loadJsfiles filename var filePath include js
  • Vsix(Visual Studio 扩展)右键单击文件的完整路径

    我想检索右键单击文件的完整路径 在 Visual Studio 2017 的编辑器中 我已经实现了以下代码来在打开项目和 或解决方案时检索文件的路径 如果打开单个文件 此实现将不起作用 设想 公开VS 2017 导航到文件 gt 打开 gt
  • Visual Studio 2022 在 Windows 11 的外部显示器上显示模糊字体

    我的笔记本电脑连接到外部显示器 Dell 2412 升级到 vs2022 后 我注意到 Visual Studio 菜单字体变得模糊 它是可用的 但也是一个棘手的问题 我尝试清除透明字体并在 工具 gt 选项 中进行了一些字体调整 但这没有
  • Linux 上 Firefox 的 Canvas2D 性能较差

    在使用 Canvas2D 进行一些相当密集的渲染时 我遇到了一些特别难以调试的问题 我使用各种各样的东西 从globalCompositeOperation到多个屏幕外画布 其中一些drawImage介于两者之间的魔法 它在以下方面工作得非
  • 将 RDLC 输出作为电子邮件附件分发

    我们的 winforms 应用程序长期以来一直允许 打印 选项 该选项基本上使用 RDLC 客户要求我们添加一项功能 允许用户通过电子邮件发送 打印 输出 现在 我们知道 EMF 文件是作为当前打印过程的一种隐藏副产品创建的 在 TEMP
  • 如何使用 F# 3.0 类型提供程序生成 C# 友好、.Net 4.0 兼容类型

    我想使用 F 3 0 类型提供程序机制基于 弱 类型数据源生成 强 类型 在仅安装 Net 4 0 而未安装 Net 4 5 的环境中 必须可以从 C 客户端访问生成的类型 如果无法兼容 Net 4 0 我们就无法在当前的大型 ERP 项目
  • MongoDB Auth 无法在 Bitnami MEAN 堆栈图像上找到用户名

    尝试在 Amazon EC2 实例上运行 Web 应用程序 MEAN 但遇到以下问题 谁能帮我这个 node app js The Server has started on 9091 opt bitnami apps YelpCamp n
  • UI 自动化:访问 UIScrollView 内的 UIView

    有没有一种方法可以使用 JavaScript 和 UI 自动化测试来访问UIViews里面一个UIScrollView 自从UIScrollView并没有让我设置它是否具有可访问性 我想知道是否可以这样做 XIB 中的结构 我可以看到仪器日
  • 从 R 对象中提取信息并将其导入模型汇总表

    我正在尝试使用以下方法制作统计模型汇总表modelsummary包裹 我进行了 6 次回归 我对其中两个进行了联合假设检验 其中包括某些变量 具体来说 educ and exper 作为解释变量 我想将这些测试的 F 统计数据包含在表中 但
  • TFS分支,有什么优点

    我对 TFS 和源代码管理还很陌生 我无法理解分支的优势 因为我可以通过创建 2 个文件夹 main 和development 来做同样的事情 所以当我完成开发时 我可以使用任何 diff 工具将代码与主分支合并 那么设立分支机构还有什么意