【问题标题】:TFS: Merge discard changeset appears as merge candidate when merging in reverse directionTFS:合并丢弃变更集在反向合并时显示为合并候选者
【发布时间】: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


【解决方案1】:

奇怪的情况,当我昨天尝试单个文件时,我无法重现您的问题。当我今天通过添加新文件夹尝试新测试时,第一次尝试时无法重现您的问题,但是当我尝试新的合并时,我可以重现您的问题。显然,我们不是唯一遇到此问题的人,请查看TFS Merge: Cannot discard a changeset,您可以针对此随机问题提交反馈至http://connect.microsoft.com/VisualStudio

顺便说一句,有时,结合 /baseless /discard 会强制考虑合并文件,然后被丢弃开关丢弃。

【讨论】:

    【解决方案2】:

    根据MSDN上“/discard”的描述:

    /丢弃 不执行合并操作,但将合并历史更新为 跟踪合并发生。这会丢弃变更集 用于特定的合并。

    即使没有发生合并,分支的历史记录仍会更新。你可以查看你的分支的历史,里面应该有一个changeset 1001。

    【讨论】:

      猜你喜欢
      • 2012-05-08
      • 2016-09-04
      • 1970-01-01
      • 2016-09-28
      • 1970-01-01
      • 2018-06-19
      • 2015-12-18
      • 2016-03-15
      • 1970-01-01
      相关资源
      最近更新 更多