在TFS中查找所有锁定的文件

时间:2009-06-25 02:33:07

标签: tfs tf-cli

我想看到所有被锁定的文件。到目前为止,我只发现使用tf.exe状态并查找“!”的任何内容因为它们不会在UI中报告为“锁定,编辑”。有任何想法吗?感谢。

4 个答案:

答案 0 :(得分:19)

如果你安装了power tools,那就是单行:

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

如果您更喜欢GUI到脚本,请尝试TFS Sidekicks

答案 1 :(得分:6)

如果您正在尝试使用TFS Sidekicks,并且无法弄清楚如何,那么它位于Tools,Team Foundation Sidekicks,Status Sidekick下。您将需要展开该窗口,但您将能够搜索用户名的锁。

答案 2 :(得分:4)

我认为使用tf.exe甚至tfpt.exe (The Power Tool command line)无法做到这一点。您需要查看挂起的更改集以查找锁定的更改。您可以使用Power Tool commandlets在powershell中执行此操作,或者您可以使用以下一些运行TFS API的.NET代码来执行此操作:

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

    }
  }
}

答案 3 :(得分:-5)

我找到了一个GUI选项。

  1. 启动Visual Studio
  2. 打开文件
  3. 转到源代码管理
  4. 然后工作区
  5. 输入您的凭据
  6. 检查show remote workspaces
  7. 删除所有不需要的工作区
  8. 那么简单:)