Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Find TFS Changesets Not Linked to Work Items

Tags:

tfs

tfs-sdk

Is there a way, either via a query or programmatically, to identify all TFS Changesets that are NOT linked to a Work Item?

like image 327
Ed Chaparro Avatar asked Jul 18 '11 14:07

Ed Chaparro


2 Answers

Using the TFS PowerToy's PowerShell module:

From whatever folder in your workspace you're interested in:

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

This will get the history for the current folder and all subfolders, and then filter for empty workitem lists.

like image 121
Richard Avatar answered Oct 05 '22 01:10

Richard


Sure, you can use the TFS API to do this very easily.

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));
        }
    }
}

You can read this blog post on how to connect to TFS API Programmatically http://geekswithblogs.net/TarunArora/archive/2011/06/18/tfs-2010-sdk-connecting-to-tfs-2010-programmaticallyndashpart-1.aspx

like image 25
Tarun Arora Avatar answered Oct 05 '22 01:10

Tarun Arora