我想查看所有被锁定的文件。到目前为止,我只发现使用 tf.exe 状态并查找带有“!”的任何内容 因为它们不像在 UI 中那样被报告为“锁定,编辑”。有任何想法吗?谢谢。
问问题
16333 次
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 选项。
- 启动 Visual Studio
- 打开文件
- 转到源代码控制
- 然后工作区
- 输入您的凭据
- 检查显示远程工作区
- 删除所有不需要的工作区
就这么简单:)
于 2012-01-28T01:05:11.217 回答