19

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

4

5 回答 5

20

如果您安装了电动工具,它是一个单线:

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

如果您更喜欢 GUI 而不是脚本,请尝试TFS Sidekicks

于 2009-06-25T15:19:33.293 回答
6

如果您尝试使用 TFS Sidekicks,但不知道如何使用,则它位于 Tools、Team Foundation Sidekicks、Status Sidekick 下。您将需要展开该窗口,但随后您将能够搜索用户名的锁。

于 2012-08-20T15:52:36.983 回答
4

我认为使用tf.exe甚至tfpt.exe (The Power Tool command line)是不可能的。您需要查看挂起的变更集以查找锁定的变更。您可以使用Power Tool 命令行开关在 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);
          }
        }
      }

    }
  }
}
于 2009-06-25T09:16:39.453 回答
3

从您的命令提示符

>powershell

然后从 powershell 执行:

PS > tf info * -recursive | &{
 begin{
  $out=@{}
  $prefix = "loc"
 }
 process{
  if ($_ -match "Local information"){
   if ($out.Count -gt 0) {
    [pscustomobject]$out
    $out=@{}
    $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')}
于 2015-04-29T22:03:04.957 回答
-6

我找到了一个 GUI 选项。

  1. 启动 Visual Studio
  2. 打开文件
  3. 转到源代码控制
  4. 然后工作区
  5. 输入您的凭据
  6. 检查显示远程工作区
  7. 删除所有不需要的工作区

就这么简单:)

于 2012-01-28T01:05:11.217 回答