2012-06-20 20 views

risposta

4

Se avete gli strumenti di potere TFS installato è possibile utilizzare il comando " tfpt searchcs "da un prompt dei comandi di Visual Studio. Questo ti permetterà di cercare tutti i set di modifiche registrati da un particolare utente e anche impostare una data di inizio e di fine insieme ad altri filtri. Questo potrebbe soddisfare le tue esigenze

4

Penso che non sia possibile eseguire il drill down dei file di ciascun changeset di un utente in un dato intervallo di tempo utilizzando le funzionalità di reporting standard di TFS.

Di seguito utilizza il TFS-SDK & dovrebbe realizzare il compito:

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Linq; 
using Microsoft.TeamFoundation.Client; 
using Microsoft.TeamFoundation.VersionControl.Client; 

namespace GetCheckedInFiles 
{ 
    class Program 
    { 
     static void Main() 
     { 
      TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfsURI")); 

      var versionControl = teamProjectCollection.GetService<VersionControlServer>(); 

      //enforcing 3 days as "past few days": 
      var deltaInDays = new TimeSpan(3, 0, 0, 0); 
      DateTime date = DateTime.Now - deltaInDays; 

      VersionSpec versionFrom = GetDateVSpec(date); 
      VersionSpec versionTo = GetDateVSpec(DateTime.Now); 

      IEnumerable results = versionControl.QueryHistory("$/", VersionSpec.Latest, 0, RecursionType.Full, "User" , versionFrom, versionTo, int.MaxValue, true, true); 
      List<Changeset> changesets = results.Cast<Changeset>().ToList(); 

      if (0 < changesets.Count) 
      { 
       foreach (Changeset changeset in changesets) 
       { 
        Change[] changes = changeset.Changes; 
        Console.WriteLine("Files contained in "+changeset.ChangesetId+" at "+changeset.CreationDate+" with comment "+changeset.Comment); 

        foreach (Change change in changes) 
        { 
         string serverItem = change.Item.ServerItem; 
         Console.WriteLine(serverItem + " "+change.ChangeType); 
        } 
        Console.WriteLine(); 
       } 
      } 

     } 

     private static VersionSpec GetDateVSpec(DateTime date) 
     { 
      string dateSpec = string.Format("D{0:yyy}-{0:MM}-{0:dd}T{0:HH}:{0:mm}", date); 
      return VersionSpec.ParseSingleSpec(dateSpec, ""); 
     } 
    } 
} 

Il GetDateVSpec è stato copiato da this post di Robaticus

Problemi correlati