TFS API-缓慢的foreach变更集迭代

本文关键字:迭代 foreach API- 缓慢 TFS | 更新日期: 2023-09-27 17:58:46

问题背景:

我正在使用TFS api查询TFS服务器上的大范围(1-600+)文件。

我从每个文件中收集它的所有ChangesetId,然后将其收集在一个列表中。

代码:

这是我正在使用的代码。它可以正确地生成QueryHistory方法中指定参数的所有项的IEnumerable更改集列表。

        VersionSpec versionFrom = VersionSpec.ParseSingleSpec("C1", null);
        VersionSpec versionTo = VersionSpec.Latest;
        var changesetList = tfsDevItem.VersionControlServer.QueryHistory(tfsDevItem.ServerItem, VersionSpec.Latest, 0, RecursionType.None, null, versionFrom, versionTo, Int32.MaxValue, true, false);
        item.VersionList = new List<int>();
        //*****Very slow iteration*****
        foreach (Changeset ChangesetId in changesetList)
        {
            item.VersionList.Add(ChangesetId.ChangesetId);
        }

问题:

当循环遍历foreach的chagesetList中的每个变更集时,所花费的时间非常长。例如,115个文件需要1分钟才能生成每个文件的changesetID列表。

我可以改进吗?如果是,怎么办?

TFS API-缓慢的foreach变更集迭代

花费这么长时间的问题是代码中的"True":

var changesetList=tfsDevItem.VersionControlServer.QueryHistory(tfsDevItems.ServerItem,VersionSpec.Restest,0,RecursionType.None,null,versionFrom,versionTo,Int32.MaxValue,true,false);

您只需要变更集编号,所以在那里传递"false"。

该参数可用于填充变更集的"Changes"属性。这些变更包含MergeSources和ChangeType等等。