【问题标题】:TFS - How to promote code to prod branch without mergingTFS - 如何在不合并的情况下将代码提升到 prod 分支
【发布时间】:2022-01-14 01:22:06
【问题描述】:

我们有 3 个 TFS 分支——dev、test 和 prod。 只要我们经常检查并获取最新信息,TFS 就可以很好地作为源代码控制。然后合并很小,我们可以立即解决任何问题。我们知道,如果我们不每天都这样做,那么合并我们的代码将会很痛苦。

但是当我们准备好推广到其他分支之一时,代码已经发生了巨大的变化。我们不想在目标分支中保留任何代码,我们确实想要源版本的精确副本,而不是合并。

我们确实喜欢拥有 3 个分支,以便为每次部署/推广中的完整更改集保留更改集。

我在 TFS 中没有看到一种方法来执行这个非常常见的功能。我一直在使用两种解决方法:

  1. 如果只有一个用户从一个分支合并到下一个分支,TFS 确实会复制所有更改。但如果用户与上一个尝试促销的用户不同,则它不起作用,然后 TFS 将合并代码。
  2. 我已经检查了目标分支的本地副本的整个解决方案。然后将源分支文件夹的文件系统副本复制到目标分支文件夹中。然后签入解决方案。

有正确的方法吗?

【问题讨论】:

  • 为什么你们的分支机构之间存在巨大差异? Dev 应该是 QA+,QA 应该是 Prod+... 你永远不应该从 Dev->QA->Prod 中得到冲突。如果你这样做,你的工作流程就会被打破。

标签: tfs


【解决方案1】:

正确的合并方式是:-

  1. 设置一个包含两个分支的共享工作区(如果您还没有分支)
  2. 获取最新的Target分支代码
  3. 获取最新的Source分支代码
  4. 使用最新版本和对特定版本的所有更改从您的 Source 合并到您的 Target
  5. 将您的更改提交到源
  6. 要在遇到冲突时覆盖目标,以确保明确覆盖目标,请在冲突窗口中选择选择源版本

【讨论】:

  • 当我按照上述答案中的步骤操作时,我有机会在冲突窗口中合并冲突,仅针对一个文件。我也得到了许多我不想要的自动解决的冲突。自动合并的一个示例是源分支类中的 3 个新属性没有进入目标分支。我没有将更改提交到源代码,因为我知道它缺少一些新代码。有没有办法配置 TFS 以允许选择在冲突窗口中合并每个冲突?
  • 我看到分支和合并的原因有很多,我将在开发和测试准备发布到生产环境的稳定分支时使用这些原因。我还需要一种安全的方式来获取准备好发布的代码并将其作为副本而不是合并来提升,遵循向下合并、向上复制的原则。如果 TFS 不提供复制选项,那么我将继续使用解决方法。
【解决方案2】:

我知道这篇文章已经晚了,但是

我在这种情况下的解决方案

产品 -> 开发 -> 测试

(父)->(子)->(孙)

当测试准备好升级时,我会执行以下操作。

  1. 删除产品(这可以通过回滚撤消,但签入)
  2. Branch Test -> Prod(使用与旧删除版本相同的位置名称),因此您的新分支结构将是 Dev -> Test -> Prod
  3. Reparent Prod(新分支)为“无”
  4. 将 Dev 复制到 Prod
  5. 删除测试
  6. 分支开发 -> 测试

当您查看新的分支层次结构时,它看起来与您开始时相同,但 prod 中的代码将与 Test 相同。

【讨论】:

  • 请注意待处理的结帐和工作区将保持不变。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-20
  • 2022-01-13
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多