有没有办法通过查询或以编程方式识别所有未链接到工作项的 TFS 变更集?
3288 次
3 回答
7
使用 TFS PowerToy 的 PowerShell 模块:
从您感兴趣的工作区中的任何文件夹中:
Get-TfsItemHistory . -Recurse | Where-Object { $_.WorkItems.Length -eq 0 }
这将获取当前文件夹和所有子文件夹的历史记录,然后过滤空工作项列表。
于 2011-07-18T15:49:56.283 回答
1
我不知道理查德的答案,但接受的答案从我的团队项目集合的根开始运行了将近 2 分钟。如果您正在寻找特定用户,这将在 10 秒内运行,如果您不是,则在 47 秒内运行。
service.QueryHistory("$/TeamProject/", VersionSpec.Latest,0, RecursionType.Full,userName,null,null, Int32.MaxValue,true,false)
.Cast<Changeset>()
.Where(cs=>cs.AssociatedWorkItems.Length==0)
如果您不是在寻找特定用户,则只需设置userName
为 null
于 2014-09-15T18:56:30.633 回答
1
当然,您可以使用 TFS API 轻松完成此操作。
public static void GetAllChangesetsWithNoWorkItems()
{
var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfs2010/tfs/default"));
var service = tfs.GetService<VersionControlServer>();
var histories = service.GetBranchHistory(new ItemSpec[] { new ItemSpec(@"$/ProjectName/MAIN/BUILD", RecursionType.OneLevel) }, VersionSpec.Latest);
foreach (BranchHistoryTreeItem history in histories[0])
{
var change = service.GetChangeset(history.Relative.BranchToItem.ChangesetId, true, true);
if(change.WorkItems.ToList().Count == 0)
{
Debug.Write(String.Format("Work Item Missing for Changeset {0}", change.ChangesetId));
}
}
}
您可以阅读这篇关于如何以编程方式连接到 TFS API 的博客文章http://geekswithblogs.net/TarunArora/archive/2011/06/18/tfs-2010-sdk-connecting-to-tfs-2010-programmaticallyndashpart-1。 aspx
于 2011-07-18T16:22:59.893 回答