Подтвердить что ты не робот

Найти все заблокированные файлы в TFS

Я хотел бы видеть все заблокированные файлы. до сих пор я только нашел, чтобы использовать tf.exe статус и искать что-нибудь с помощью!! потому что они не сообщаются как "блокировка, редактирование", так как они находятся в пользовательском интерфейсе. Есть идеи? спасибо.

4b9b3361

Ответ 1

Если у вас установлен электроинструменты, это однострочный:

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

Если вы предпочитаете графические интерфейсы для скриптов, попробуйте TFS Sidekicks.

Ответ 2

Если вы пытаетесь использовать TFS Sidekicks и не можете понять, как это сделать, это можно найти в разделе "Инструменты", Team Foundation Sidekicks, Status Sidekick. Вам нужно будет расширить это окно, но затем вы сможете искать блокировки для имени пользователя.

Ответ 3

Я не думаю, что это возможно, используя tf.exe или даже tfpt.exe(Командная строка Power Tool). Вам нужно будет просмотреть ожидающие изменения для изменений, которые являются блокировками. Вы можете сделать это в powershell с помощью Power Tool commandlets или вы можете сделать это, используя следующий бит .NET-кода, который использует TFS API:

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

    }
  }
}

Ответ 4

из командной строки

>powershell

Тогда из powershell do:

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

Ответ 5

Я нашел вариант GUI.

  • Запустить Visual Studio
  • Открыть файл
  • Перейти к источнику управления
  • Тогда рабочие пространства
  • Введите свои учетные данные
  • Проверить удаленные рабочие области.
  • Удалить все нежелательные рабочие области

Это просто:)