我需要以编程方式跟踪变更集:确定变更集当前所在的分支。
更新 假设我们为一个项目设立了三个分支:开发,测试和发布。每当我们准备好使用一些变更集时,我们首先将它们合并到Test,然后在测试完成后立即发布。我需要知道给定变更集在此工作流程中的位置(仅在Dev OR 在Dev +中合并在Test OR 在Dev +中合并在Test + merged中)在发布)。
已经可以使用Visual Studio“跟踪”界面执行此操作,但我需要以编程方式执行此操作以获得更多自定义。我已经能够使用代码provided here获取特定工作项的所有变更集,但我还没有找到一种方法来确定当前变更集的分支。
答案 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变量不包含您要查找的分支,则表示尚未合并。