2015-07-21 19 views
6

Próbuję zaimplementować wtyczkę do Team Foundation Server 2010, która będzie tworzyć raporty o użytkownikach w projekcie zespołowym. Koncepcyjnie, wszystko, czego potrzebuję, aby poprawnie zaimplementować tę wtyczkę, to dostęp do tych samych danych, które otrzymujesz, gdy używasz funkcji "Adnotuj" w Visual Studio: Muszę być w stanie powiedzieć, kto był ostatnią osobą, która stworzyła dane linia kodu.Programowo uzyskaj dane dotyczące winy TFS (opis)

Przeszukałem Internet w poszukiwaniu dokumentacji lub próbek kodu, ale wszystko, co mogę znaleźć, to sugestie takie jak using the TFS command-line tools lub pozornie niekompletne code samples.

nie przeszkadza mi robić dużo podnoszenie ciężkich w kodzie klienta, ale nie wydaje się być oczywistym sposobem na uzyskanie użytecznych danych Autorstwo temat treści kodu w Changeset, ani z zwrot merge details.

Odpowiedz

3

Tymczasem znalazłem roztwór roboczy, który wykonuje Team Foundation Power Tools proces i analizuje jego produkcja:

private readonly Regex m_Regex = new Regex(@"^(?<changeset>\d+)(?<codeLine>.*)", RegexOptions.Compiled | RegexOptions.Multiline); 

public List<Changeset> GetAnnotations(string filepath, string codeText) 
    { 
     var versionControlServer = CreateVersionControlServer(); 

     return m_Regex.Matches(ExecutePowerTools(filepath)) 
      .Cast<Match>() 
      .Where(m => m.Groups["codeLine"].Value.Contains(codeText)) 
      .Select(v => versionControlServer.GetChangeset(int.Parse(v.Groups["changeset"].Value), false, false)) 
      .ToList(); 
    } 

    private static VersionControlServer CreateVersionControlServer() 
    { 
     var projectCollection = new TfsTeamProjectCollection(new Uri(@"TFS URL")); 
     var versionControlServer = projectCollection.GetService<VersionControlServer>(); 
     return versionControlServer; 
    } 

    private static string ExecutePowerTools(string filepath) 
    { 
     using (var process = Process.Start(TfptLocation, string.Format("annotate /noprompt {0}", filepath))) 
     { 
      process.WaitForExit(); 
      return process.StandardOutput.ReadToEnd(); 
     } 
    } 
+1

Właśnie zaimplementowałem to i nie mówi ci właściciel każdej linii, tylko zestaw zmian i kod ... – im1dermike

+0

@ im1dermike, masz rację. To było wystarczająco dobre dla mojego przypadku użycia. –

0

miałem bardzo podobny wymóg, aby uzyskać szczegóły dotyczące konkretnego atrybutu w pliku np który dodał, kiedy, powiązane elementy pracy itp .; Niniejszy projekt GitHub jest o realizację, aby uzyskać wymagane informacje i wymagane minimalne zmiany pracą

SonarQube SCM TFVC plugin

To wymaga analizy mają być wykonane z komputerów z systemem Windows z Team Foundation Server Address zainstalowanej (do pobrania dla TFS 2013) Model.

Powiązane problemy