Listar files modificados en TFS pero orderados por la cantidad de cambios aplicados

¿Hay alguna manera de enumerar todos los files que han cambiado en un proyecto, pero orderados por la cantidad de cambios realizados en cada file?

Quiero hacer una revisión del código, pero solo de una selección de los files más activos.

Puede intentar utilizar Excel como una herramienta de informes TFS como en esta publicación de blog:

http://www.woodwardweb.com/vsts/getting_started.html

PD. Encontré ese enlace en esta pregunta .

Busqué de diferentes maneras y finalmente encontré que la mejor manera es usar la API TFS
aquí está el código:

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using Microsoft.TeamFoundation.Client; using Microsoft.TeamFoundation.VersionControl.Client; namespace VControl { class Program { class SourceElement { public string filename; public int numberOfModification; } static void Main(string[] args) { TfsTeamProjectCollection projectCollection = new TfsTeamProjectCollection(new Uri("http://server:8080/tfs/ProjectCollection/"), new System.Net.NetworkCnetworkingential("username", "password")); projectCollection.EnsureAuthenticated(); Workspace workspace = null; Boolean createdWorkspace = false; String newFolder = String.Empty; VersionControlServer versionControl = projectCollection.GetService<VersionControlServer>(); var teamProjects = new List<TeamProject>(versionControl.GetAllTeamProjects(false)); String workspaceName = String.Format("{0}-{1}", Environment.MachineName, "TestWorkspace"); try { workspace = versionControl.GetWorkspace(workspaceName, versionControl.AuthorizedUser); } catch (WorkspaceNotFoundException) { workspace = versionControl.CreateWorkspace(workspaceName, versionControl.AuthorizedUser); createdWorkspace = true; } var serverFolder = String.Format("$/{0}", teamProjects[0].Name) + "/solutionFolder/"; var localFolder = Path.Combine(Path.GetTempPath(), "localFolder") + "/solutionFolder/"; var workingFolder = new WorkingFolder(serverFolder, localFolder); // Create a workspace mapping. workspace.CreateMapping(workingFolder); if (!workspace.HasReadPermission) { throw new SecurityException( String.Format("{0} does not have read permission for {1}", versionControl.AuthorizedUser, serverFolder)); } // Get the files from the repository. workspace.Get(); string[] directories = Directory.GetDirectories(workspace.Folders[0].LocalItem); FileStream outputFile = new FileStream("result.txt", FileMode.Create); StreamWriter writer = new StreamWriter(outputFile); List<SourceElement> fileLiset = new List<SourceElement>(); foreach (string dir in directories) { foreach (string file in Directory.GetFiles(dir)) { string filenamae = System.IO.Path.GetFileName(file); Item source = versionControl.GetItem(file); System.Collections.IEnumerable history = versionControl.QueryHistory(file, VersionSpec.Latest, 0, RecursionType.Full, null, null, null, 300, true, true, false, false); int numberOfModification = 0; foreach (var item in history) numberOfModification++; SourceElement fileElement = new SourceElement(); fileElement.filename = filenamae; fileElement.numberOfModification = numberOfModification; fileLiset.Add(fileElement); } } var sortedList = fileLiset.OrderBy(x=> x.numberOfModification); // Loop through keys. foreach (var key in sortedList) { writer.WriteLine("{0}: {1}", key.filename, key.numberOfModification); } writer.Close(); } } }