TFS丢弃无法处理回滚更改集

时间:2011-09-17 14:23:26

标签: merge tfs2010 rollback tfs-sdk

我们的情况是在我们系统的主干中已经完成了工作,但随后我们将其用于下一个版本。我们创建了一个分支,其中的更改仍然在主干中,然后仅在主干中回滚更改。

但是我们留下的是,每当我们想要使用最近的工作来更新分支时,它会尝试合并我们不想要的回滚变更集。

我尝试过使用TFS命令提示符中的/ discard命令,但不断收到“没有合并更改”。以下是我的语法:

D:\Projects\Big Project\Trunk>tf merge /discard /version:C28350~C28350 /recursive "D:\Projects\Big Project\Trunk" "D:\Projects\Big Project\Branch"

我甚至尝试切换源和目的地无济于事:)

变更集显示在从主干到分支的潜在合并的候选变更集列表中。自初始分支以来,已经有一些签到工作分支,但没有分支到分支。

有没有人有使用discard命令的经验以及为什么它可能无法在这里工作?

感谢您的建议

2 个答案:

答案 0 :(得分:1)

通过tf rollback MSDN阅读选项/keepmergehistory正是针对这些情景的。 (请参阅帮助doco末尾的相关示例)。

您的方案不同,以下是我将遵循的步骤(省略命令提示符):

tf merge /version:C28350~C28350 /recursive "D:\Projects\Big Project\Trunk" "D:\Projects\Big Project\Branch"

tf checkin /recursive "D:\Projects\Big Project\Branch"

tf rollback /version:XXXX /recursive /keepmergehistory "D:\Projects\Big Project\Branch"

关于步骤的评论:

  1. 没有/discard选项

  2. 检查更改,即使您对此不感兴趣;请注意下一步中XXXX的变更集编号...

  3. 现在回滚该特定更改,并使用/keepmergehistory,以便TFS不会再次询问有关合并此更改的信息。

  4. 或者,您应该能够在主干中回滚回滚,然后使用此标志重新应用 - 但我不确定/keepmergehistory是否可以正常工作..这里是:(不确定我放了参数正确...)

    tf rollback /version:C28350 /toversion:C28349 /recursive "D:\Projects\Big Project\Trunk"
    
    tf rollback /version:XXXX /toversion:XXXX-1 /recursive /keepmergehistory "D:\Projects\Big Project\Trunk"
    

    希望这会有所帮助: - )

答案 1 :(得分:1)

这可以通过告诉TFS在执行合并时忽略历史记录来实现。换句话说,它可以使用无基础合并来完成:

  

D:\Projects\Big Project\Trunk>tf merge /discard /version:C28350~C28350 /recursive /baseless "D:\Projects\Big Project\Trunk" "D:\Projects\Big Project\Branch"