2009-06-25 17 views
18

Chciałbym zobaczyć wszystkie pliki, które są zablokowane. do tej pory znalazłem tylko używać statusu tf.exe i szukać czegokolwiek z "!" ponieważ nie są zgłaszane jako "zablokuj, edytuj", ponieważ są w interfejsie użytkownika. Jakieś pomysły? dzięki.Znajdź wszystkie zablokowane pliki w TFS

+0

wielkie pytanie, nie wiem jak to zrobić, chociaż ... :) –

Odpowiedz

18

Jeśli zainstalowano power tools, jest to jedna wkładka:

tfstatus . -r -user * | % { $_.pendingchanges } | ? { $_.islock } | select -unique serveritem 

Jeśli preferujesz GUI do skryptów, spróbuj TFS Sidekicks.

+0

To wygląda świetnie. Właśnie zainstalowałem narzędzia elektryczne w innym dniu, ale nie wiedziałem, że ma on polecenia Power Shell. Czy wiesz, gdzie mogę znaleźć dokumentację na temat tych facetów? Ponadto, jak skonfigurować, aby powershell mógł znaleźć biblioteki DLL? – TheSean

+0

W pliku pomocy powinna znajdować się dokumentacja. Również w ramach powershell za pomocą polecenia "help". Przystawka i aliasy zostaną załadowane automatycznie po uruchomieniu łącza "Powiel konsoli" w menu Start. Lub możesz skopiować ustawienia z katalogu instalacyjnego do swojego $ profilu. Przeczytaj mój blog, aby poznać szczegóły: http://richardberg.net/blog –

+0

Nie mogłem wymyślić, jak to zrobić w TFS Sidekicks. Chyba spróbuję elektronarzędzi. –

4

Nie sądzę, że jest to możliwe, używając tf.exe lub nawet tfpt.exe (The Power Tool command line). Będziesz musiał przejrzeć oczekujące zestawy zmian dla zmian, które są blokadami. Można to zrobić w PowerShell pomocą Power Tool commandlets czy można to zrobić za pomocą poniższego fragmentu kodu .NET, które sprawuje API TFS:

using Microsoft.TeamFoundation.Client; 
using Microsoft.TeamFoundation.VersionControl.Client; 

namespace TfsApiExample 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     GetLockedFiles("http://tfsserver:8080","$/TeamProject"); 
    } 

    private static void GetLockedFiles(string serverUrl, string serverPath) 
    { 
     TeamFoundationServer tfs = new TeamFoundationServer(serverUrl); 
     VersionControlServer vcServer = (VersionControlServer)tfs.GetService(typeof(VersionControlServer)); 

     // Search for pending sets for all users in all 
     // workspaces under the passed path. 
     PendingSet[] pendingSets = vcServer.QueryPendingSets(
      new string[] { serverPath }, 
      RecursionType.Full, 
      null, 
      null); 

     Console.WriteLine(
      "Found {0} pending sets under {1}. Searching for Locks...", 
      pendingSets.Length, 
      serverPath); 

     foreach (PendingSet changeset in pendingSets) 
     { 
     foreach(PendingChange change in changeset.PendingChanges) 
     { 
      if (change.IsLock) 
      { 
      // We have a lock, display details about it. 
      Console.WriteLine(
       "{0} : Locked for {1} by {2}", 
       change.ServerItem, 
       change.LockLevelName, 
       changeset.OwnerName); 
      } 
     } 
     } 

    } 
    } 
} 
-5

Znalazłem opcję GUI.

  1. Uruchom Visual Studio
  2. Otwórz plik
  3. idź do źródła sterowania
  4. Następnie obszarach roboczych
  5. Wprowadź poświadczenia
  6. wyboru Pokaż odległe obszary robocze
  7. Usuń wszystkie niechciane obszary robocze

To proste :)

+1

-1 Jak to pokazuje wszystkie zablokowane pliki od wszystkich użytkowników? – base2

6

Jeśli próbujesz użyć TFS Sidekicks i nie możesz dowiedzieć się, jak to jest w Narzędziach, Team Foundation Sidekicks, Status Sidekick. Będziesz musiał rozwinąć to okno, ale będziesz mógł wyszukiwać blokady dla nazwy użytkownika.

+0

Dwie najlepsze odpowiedzi są bardzo pomocne, ale może to być interesujące. –

2

z wiersza poleceń

>powershell 

Następnie z PowerShell zrobić:

PS > tf info * -recursive | &{ 
begin{ 
    [email protected]{} 
    $prefix = "loc" 
} 
process{ 
    if ($_ -match "Local information"){ 
    if ($out.Count -gt 0) { 
    [pscustomobject]$out 
    [email protected]{} 
    $prefix = "loc" 
    } 
    } ElseIf ($_ -match "Server information"){ 
    $prefix = "svr" 
    } else { 
    $parts = $_.Split(':') 
    if ($parts.Length -eq 2){ 
    $out.Add($prefix + $parts[0].Trim(), $parts[1].Trim()) 
    } 
    } 
} 
end{ 
    if ($out.Count -gt 0) { 
    [pscustomobject]$out 
    } 
} 
} | where {!($_.svrLock -eq 'none')} 
Powiązane problemy