【发布时间】:2014-07-03 13:16:28
【问题描述】:
我们的分支机构在 TFS 2012 上遇到了棘手的情况,现在我们不确定我们的行动会产生什么结果。
有问题的分支结构如下:
/B----2-------
/
A -------1-----------
\
\C---3--
伪图大致在时间上是正确的——首先分支 B 是从 A 分支出来的,然后创建了分支 C。数字是有问题的变更集(实际上我们的问题涉及每个分支上的多个变更集,但我已经简化了图表)。
我们希望将变更集 3 从 C 合并到分支 B。Visual Studio 警告我们将执行无根据的合并(显然,因为分支 B 和 C 是兄弟而不是父子)。警告是这样的:
我们继续合并。然后在某个时候,一位开发人员发现我们忘记从分支 A 更新我们的分支 B,并且我们需要从分支 B 中的变更集 1 进行更改。但问题是变更集 1 有一些代码行,这些代码行后来在变更集中进行了修改我们合并的 3 个(分支 C)。
现在的问题是,当我们将变更集 1 从 A 合并到 B 之后,分支 B 会发生什么我们已经完成了从 C 到 B 的变更集 3 的毫无根据的合并?
即使在我们进行了毫无根据的合并之后,当 TFS 发现变更集 1 的冲突代码行时,它是否会足够聪明地保留来自最新变更集 3 的更改?
附:我们将从这个错误中吸取教训,并在未来尽量避免毫无根据的合并......
【问题讨论】:
-
TFS 不会在您执行合并时自动提交合并 - 您总是有机会在签入之前查看更改。因此,最简单的方法是回答“当我尝试合并时会发生什么”对我来说,问题是实际执行合并,看看会发生什么。
标签: tfs branching-and-merging baseless-merge