2011-07-18 11 views

Respuesta

1

Claro, puede usar la API TFS para hacer esto muy fácilmente.

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

Usted puede leer esta entrada del blog sobre cómo conectarse a la API de programación TFS http://geekswithblogs.net/TarunArora/archive/2011/06/18/tfs-2010-sdk-connecting-to-tfs-2010-programmaticallyndashpart-1.aspx

6

Usando módulo de PowerShell del TFS PowerToy:

Desde cualquier carpeta en su espacio de trabajo que le interesa:

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

Esto hará que la historia de la carpeta actual y todas las subcarpetas y, a continuación, filtrar para listas de elementos de trabajo vacíos.

+0

ver la respuesta [aquí] (http://stackoverflow.com/questions/1050689/how -do-i-set-up-tfs-powershell-snapin) si (como yo) no sabes cómo hacer funcionar el complemento powershell. – DeanOC

0

no sé acerca Richard's Answer pero la respuesta aceptada tomó casi 2 minutos para correr a partir de la raíz de mi proyecto de equipo colección. Esto funciona en 10 segundos si está buscando un usuario específico, 47 segundos si no lo está.

service.QueryHistory("$/TeamProject/", VersionSpec.Latest,0, RecursionType.Full,userName,null,null, Int32.MaxValue,true,false) 
    .Cast<Changeset>() 
    .Where(cs=>cs.AssociatedWorkItems.Length==0) 

si no están buscando para un usuario específico apenas se fija a null userName

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

Cuestiones relacionadas