问题背景:
我正在使用 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分钟生成每个单独文件的变更集 ID 列表。
我可以改进这个吗?如果是这样怎么办?
花费这么长时间的问题是代码中的“True”:
var ChangesetList = tfsDevItem.VersionControlServer.QueryHistory(tfsDevItem.ServerItem, VersionSpec.Latest, 0, RecursionType.None, null, versionFrom, versionTo, Int32.MaxValue,true
, 错误的);
您只需要变更集编号,因此在此处传递“false”。
该参数负责填充 a 的“Changes”属性变更集 http://msdn.microsoft.com/de-de/library/microsoft.teamfoundation.versioncontrol.client.changeset.aspx. Those Changes http://msdn.microsoft.com/de-de/library/microsoft.teamfoundation.versioncontrol.client.change.aspx持有 MergeSources 和 ChangeType 等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)