确定当前变更集的分支

时间:2013-06-05 15:40:43

标签: tfs tfs2012 tfs-sdk

我需要以编程方式跟踪变更集:确定变更集当前所在的分支。

更新 假设我们为一个项目设立了三个分支:开发,测试和发布。每当我们准备好使用一些变更集时,我们首先将它们合并到Test,然后在测试完成后立即发布。我需要知道给定变更集在此工作流程中的位置(仅在Dev OR 在Dev +中合并在Test OR 在Dev +中合并在Test + merged中)在发布)。

enter image description here

已经可以使用Visual Studio“跟踪”界面执行此操作,但我需要以编程方式执行此操作以获得更多自定义。我已经能够使用代码provided here获取特定工作项的所有变更集,但我还没有找到一种方法来确定当前变更集的分支。

1 个答案:

答案 0 :(得分:2)

我刚刚制作了一个完全相同的工具。您需要的电话是TrackMerges。好消息是你可以在一个电话中检查多个分支。这是一段代码:

var tfsCollection = new TfsTeamProjectCollection(new Uri(server), new NetworkCredential(username, password, userDomain));
tfsCollection.EnsureAuthenticated();
VersionControlServer versionControlServer = tfsCollection.GetService<VersionControlServer>();

ExtendedMerge[] merges = versionControlServer.TrackMerges(
                                  new[] {changesetIdYouAreChecking}, 
                                  new ItemIdentifier("$/Proj/Dev"), 
                                  new [] {new ItemIdentifier("$/Proj/Test"), new ItemIdentifier("$/Proj/Release")}, 
                                  null);

foreach (ExtendedMerge extendedMerge in merges)
{
    Console.WriteLine("Branch --> " + extendedMerge.TargetItem.Item);
    Console.WriteLine("Changeset --> " + extendedMerge.TargetChangeset.ChangesetId);
}

如果merges变量不包含您要查找的分支,则表示尚未合并。