如何查找未链接到工作项的TFS更改集

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查找未链接到工作项的TFS更改集相关的知识,希望对你有一定的参考价值。

有没有办法通过查询或以编程方式识别所有未链接到工作项的TFS变更集?

答案

当然,您可以使用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

另一答案

使用TFS PowerToy的PowerShell模块:

从您感兴趣的工作区中的任何文件夹:

Get-TfsItemHistory . -Recurse | Where-Object { $_.WorkItems.Length -eq 0 }

这将获取当前文件夹和所有子文件夹的历史记录,然后筛选空的工作项列表。

另一答案

我不知道Richard's Answer,但接受的答案花了将近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即可

http://share.linqpad.net/6sumno.linq

以上是关于如何查找未链接到工作项的TFS更改集的主要内容,如果未能解决你的问题,请参考以下文章

如何检查TFS服务器上是否有新的更改?

如何在两个 TFS 标签之间查找变更集(用于发行说明/变更日志)

TFS Build 报告未显示原始分支的评论

如何在 TFS 中恢复回滚的更改集?

如何从 TFS 获取子工作项的激活日期和关闭日期

如何通过代码获取 TFS 工作项验证错误消息?