我需要以编程方式跟踪的变更:确定在哪个分支中的变更当前所在。
更新:比方说,我们得到了一个项目的三个分支:开发,测试和发布。每当我们已经准备好去住了一些变更,我们首先将它们合并到测试,然后尽快测试完成后释放。我需要知道一个给定的变更就设在这个工作流程(仅在开发或开发+合并在测试或开发+在测试+合并合并在Release)。
它已经可以做到这一点使用Visual Studio的“跟踪”的界面,但我需要做的编程在它获得更多的自定义设置。我已经能够得到所有的变更使用代码provided here具体的工作项目,但我还没有找到一种方法来确定在哪个分支存在的变更。
我只是做了一个工具,它做同样的事情。你需要电话是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);
}
如果合并变量不包含你正在寻找的分支,那么它并没有被合并。