4

我需要以编程方式跟踪变更集:确定变更集当前位于哪个分支。

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

在此处输入图像描述

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

4

1 回答 1

3

我刚刚做了一个工具,它做同样的事情。您需要的电话是 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 变量不包含您要查找的分支,那么它还没有被合并。

于 2016-04-14T18:08:40.730 回答