【发布时间】:2014-05-03 11:55:52
【问题描述】:
我在 TFS 中创建了一个实用程序来枚举从源分支到目标分支的更改和冲突。我想为源分支选择包含VersionSpec。但是,当我提供如下所示的默认 VersionSpec 时,我没有得到预期的结果。我已经使用 GUI 进行了合并,它显示了 19 个零冲突的更改。但在 TFS API 中,它告诉我,如果我使用 VersionSpec,则没有任何变化,如图所示。
VersionSpec spec = VersionSpec.ParseSingleSpec("T", null)
mergeStatus = workspace.Merge(ServerSourcePath, ServerTargetPath, spec, null, LockLevel.None, RecursionType.Full, MergeOptions.None);
//mergeStatus.noActionNeeded returns TRUE
//OK now try another method
spec = VersionSpec.Latest
mergeStatus = workspace.Merge(ServerSourcePath, ServerTargetPath, spec, null, LockLevel.None, RecursionType.Full, MergeOptions.None);
//mergeStatus.noActionNeeded returns TRUE again
//But if I try using null instead of a VersionSpec....
mergeStatus = workspace.Merge(ServerSourcePath, ServerTargetPath, null, null, LockLevel.None, RecursionType.Full, MergeOptions.None);
//mergeStatus.noActionNeeded returns FALSE, and I am able to see all 19 changes
那么为什么 null 在这里可以正常工作,而其他两种方法却不行呢?虽然我确实打算在这种情况下使用 null,但另一种方法缺乏可靠性让我怀疑我不能相信任何VersionSpec 的结果,例如LabelVersionSpec。我相信在使用LabelVersionSpec 进行测试时,我可能已经看到了一些可疑的结果,所以我需要了解是否有我需要解释的差异的原因。
【问题讨论】:
标签: version-control tfs tfs-sdk