【发布时间】:2016-02-02 21:19:30
【问题描述】:
我有一个关于 TFS 2013 中分支之间合并的问题,特别是关于合并丢弃的问题,我无法在其他线程中找到答案。
场景:我们有两个分支,我们称它们为 $North 和 $South - 强调它们不应被视为源和目标(即可以双向合并)。 $South 是从 $North 分支出来的。
我签入变更集 nr。 1000 到 $North,变更集预计会作为合并候选出现:
> tf merge /candidate $North $South /recursive
Changeset User Date Comment
1000 Bob ... Updating build script
然后我做一个合并丢弃,因为这个变更集与合并到另一个分支无关,实际上它不是应用程序代码,而是特定于分支的配置:
> tf merge /discard /version:C1000~C1000 $North $South /recursive
Resolved file1 as KeepYours
...
我签入 merge discard 导致变更集 nr。 1001. 现在变更集 1000 已从合并候选列表中消失:
> tf merge /candidate $North $South /recursive
There are no changes to merge.
但是,现在我反方向检查合并候选:
> tf merge /candidate $South $North /recursive
Changeset User Date Comment
1001* Bob ... Merge discard on changeset 1000
我什至尝试再次回滚合并丢弃,因为我宁愿将更改作为合并候选者从 $North 更改为 $South 而不是另一个方向,但结果只是另一个合并候选者:
> tf merge /candidate $South $North /recursive
Changeset User Date Comment
1002* Bob ... Rollback on merge discard on changeset 1000
1001* Bob ... Merge discard on changeset 1000
有谁知道是否有可能完全丢弃变更集,并且丢弃本身也不会作为另一个方向的合并候选者出现?
(虽然我不知道我的初始变更集的内容是否相关,但我可以补充一点,我的实际变更集 1000 是 $North 中的更改,其中包括删除 @987654335 中也存在的文件夹@,还有一个文件夹添加。)
【问题讨论】:
-
你使用的是什么版本的 tfs?在 TFS 2015 上尝试过,分支项目并处理双向合并,但无法重现您的问题。无论是 $North 到 $South,还是 $South 到 $North,都没有要合并的变化。
-
对不起,我忘了提。这是 TFS 2013。
-
我做了一个新的测试,与上面描述的过程相同,但使用了最简单的根变更集(单个文件添加)。我仍然可以在 TFS 2013 上重现该行为,尽管合并丢弃变更集在候选列表中没有出现带有星号(部分合并)。
-
我还测试了对从
$South到$North的合并丢弃变更集(1001)进行另一个合并丢弃,这实际上从@987654338 的合并候选列表中摆脱了合并丢弃变更集@ 到$North- 它不会再次出现在反向合并候选列表中。所以问题几乎解决了,但不幸的是,这不适用于我真正的变更集,这是一个文件夹删除和文件夹添加 - 并在合并丢弃后用星号标记为部分合并。
标签: tfs merge branching-and-merging