Я хотел бы видеть все заблокированные файлы. до сих пор я только нашел, чтобы использовать tf.exe статус и искать что-нибудь с помощью!! потому что они не сообщаются как "блокировка, редактирование", так как они находятся в пользовательском интерфейсе. Есть идеи? спасибо.
Найти все заблокированные файлы в TFS
Ответ 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
- Открыть файл
- Перейти к источнику управления
- Тогда рабочие пространства
- Введите свои учетные данные
- Проверить удаленные рабочие области.
- Удалить все нежелательные рабочие области
Это просто:)