【问题标题】:Apply a diff from one branch as a patch to another in Visual Studio TFS在 Visual Studio TFS 中将一个分支的差异作为补丁应用到另一个分支
【发布时间】:2012-05-23 17:35:13
【问题描述】:

我们有一个项目,我们一直在分支中为 6.1 版做一些工作。在 6.1 分支(变更集 1800)中所做的更改之一是错误修复,有人认为它足够紧急,值得为我们的 6.0 生产版本提供补丁。

现在,在变更集 1800 之前和之后都对相关文件进行了更改。他们想要的只是将补丁应用到 6.0。

根据http://linux.die.net/man/1/patch,似乎最好的办法是通过比较变更集 1800 和 1799,创建一个差异文件,然后将该差异文件应用为补丁 到 6.0。我什至不知道在 TFS 中从哪里开始这样做。

作为一个后备计划,我总是可以手动检查变更集 1800 中的差异并将它们复制到最新版本的生产中进行修补,但如果可能的话,我想正确地执行此操作。

除此之外: 我知道,通过仅应用差异,您会冒这样的风险,即 1799>1800 差异中涉及的某些代码依赖于仅在当前生产版本和变更集 1799 之间建立的代码,但可以通过快速构建轻松验证并在应用差异补丁后测试生产。我们对此并不担心。

【问题讨论】:

  • 我只需要查看差异并将更改复制粘贴到手工签出的生产副本中,因为他们很着急,但我很想知道如何使用不过,将来会内置 TFS 命令。我知道某处有一个用于高级 TFS 东西的命令行实用程序,但我从来没有用过它。

标签: version-control tfs diff patch


【解决方案1】:

好的,我不确定我是否完全理解,但这里是:

TFS 中的变更集不存储文件的绝对内容,而是存储差异(添加、删除、更改的行)。

如果您想报告从 6.1 版到 6.0 版的错误修复,并且此修复包含在变更集 1800 中(仅此修复),那么只需将给定的变更集合并到 6.0 版即可。在变更集 1800 之前所做的所有更改都不会在 6.0 中合并,只会合并您在此变更集中所做的更改。

当您进行合并时,您有两种选择:

  1. 合并从源分支到目标分支的所有更改
  2. 将选定的变更集从源合并到目标。

使用第二个并指定变更集 1800 就可以了。

一些图片:

选择的变更集将被合并。

【讨论】:

  • 当我进入 Merge > Selected Changesets > 然后选择“1800”时,它会尝试合并直到并包括 1800 的所有内容。您是否验证过还有另一种方法可以使用此功能仅合并 1799 年和 1800 年之间所做的更改?
  • 如果我正确理解了这个问题,那么 6.0 分支上没有不属于 6.1 的东西吗?如果是这样,从 6.0 到 6.1 实际变更集合并之前的完整合并可能会有所帮助。 而且只有 TFS 2010 的变更集才包含差异。在此之前,如您所说,进行这样的合并可能非常棘手。
  • 我更新了我的答案,我不知道你在哪里找到它。不是我给的截图方法,只是选择的那一种,我向你保证。
  • 好吧,我会接受它,因为你没有说任何不正确的东西,但我的问题一定没有很好地表达我的问题。 6.0 和 6.1 是共同主干的两个分支。一旦 6.1 更改合并回主干,就无法将来自 6.1 的单个更改集推出回 6.0。
  • 请编辑您的问题并解释这些分支之间的关系。如果您的分支不相关,请从 TF.exe 命令进行毫无根据的合并,请参阅此页面:msdn.microsoft.com/en-us/library/bb668976.aspx
猜你喜欢
  • 1970-01-01
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-22
  • 1970-01-01
相关资源
最近更新 更多