2009-06-25 49 views
18

所有鎖定的文件,我想看到的是被鎖定的所有文件。到目前爲止,我只發現使用tf.exe狀態並用'!'查找任何內容。因爲它們不會像UI中那樣被報告爲「鎖定,編輯」。有任何想法嗎?謝謝。查找TFS

+0

大的問題,不知道該怎麼做雖然這... :) – 2009-06-25 03:02:54

回答

18

如果您已經安裝了power tools,這是一個班輪:

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

如果你喜歡GUI,在劇本,嘗試TFS Sidekicks

+0

這看起來不錯。我剛安裝了電動工具,但我不知道它有電源shell命令行程序。你知道我在哪裏可以找到這些傢伙的文檔嗎?另外,如何設置它,使PowerShell可以找到DLL? – TheSean 2009-06-26 11:49:32

+0

幫助文件中應包含文檔。另外在PowerShell中通過'help'命令。如果在開始菜單上運行「powershell控制檯」鏈接,管理單元和別名將自動加載。或者,您可以將安裝目錄中的設置複製到您的$配置文件中。閱讀我的博客的詳細信息:http://richardberg.net/blog – 2009-06-26 13:14:07

+0

無法弄清楚如何在TFS Sidekicks中做到這一點。猜猜我會嘗試電動工具。 – 2010-10-27 23:40:11

4

我不認爲這是可能的使用tf.exe甚至tfpt.exe (The Power Tool command line)。您需要查看掛起的變更集以瞭解鎖定的變更。你可以使用Power Tool commandlets在PowerShell中做到這一點,或者你可以使用的.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); 
      } 
     } 
     } 

    } 
    } 
} 
-5

我發現一個GUI選項。

  1. 啓動Visual Studio
  2. 打開文件
  3. 轉至源控制
  4. 然後工作區
  5. 輸入憑據
  6. 檢查顯示遠程工作空間
  7. 刪除所有不必要的工作空間

這個簡單的:)

6

如果你要使用TFS插袋,並不能弄清楚它是如何,是在工具,團隊基礎插袋,狀態搭檔。您需要展開該窗口,但是您將能夠搜索用戶名的鎖定。

2

從命令提示符

>powershell 

然後從PowerShell中做到:

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