Chciałbym zobaczyć wszystkie pliki, które są zablokowane. do tej pory znalazłem tylko używać statusu tf.exe i szukać czegokolwiek z "!" ponieważ nie są zgłaszane jako "zablokuj, edytuj", ponieważ są w interfejsie użytkownika. Jakieś pomysły? dzięki.Znajdź wszystkie zablokowane pliki w TFS
Odpowiedz
Jeśli zainstalowano power tools, jest to jedna wkładka:
tfstatus . -r -user * | % { $_.pendingchanges } | ? { $_.islock } | select -unique serveritem
Jeśli preferujesz GUI do skryptów, spróbuj TFS Sidekicks.
To wygląda świetnie. Właśnie zainstalowałem narzędzia elektryczne w innym dniu, ale nie wiedziałem, że ma on polecenia Power Shell. Czy wiesz, gdzie mogę znaleźć dokumentację na temat tych facetów? Ponadto, jak skonfigurować, aby powershell mógł znaleźć biblioteki DLL? – TheSean
W pliku pomocy powinna znajdować się dokumentacja. Również w ramach powershell za pomocą polecenia "help". Przystawka i aliasy zostaną załadowane automatycznie po uruchomieniu łącza "Powiel konsoli" w menu Start. Lub możesz skopiować ustawienia z katalogu instalacyjnego do swojego $ profilu. Przeczytaj mój blog, aby poznać szczegóły: http://richardberg.net/blog –
Nie mogłem wymyślić, jak to zrobić w TFS Sidekicks. Chyba spróbuję elektronarzędzi. –
Nie sądzę, że jest to możliwe, używając tf.exe lub nawet tfpt.exe (The Power Tool command line). Będziesz musiał przejrzeć oczekujące zestawy zmian dla zmian, które są blokadami. Można to zrobić w PowerShell pomocą Power Tool commandlets czy można to zrobić za pomocą poniższego fragmentu kodu .NET, które sprawuje API TFS:
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);
}
}
}
}
}
}
Znalazłem opcję GUI.
- Uruchom Visual Studio
- Otwórz plik
- idź do źródła sterowania
- Następnie obszarach roboczych
- Wprowadź poświadczenia
- wyboru Pokaż odległe obszary robocze
- Usuń wszystkie niechciane obszary robocze
To proste :)
-1 Jak to pokazuje wszystkie zablokowane pliki od wszystkich użytkowników? – base2
Jeśli próbujesz użyć TFS Sidekicks i nie możesz dowiedzieć się, jak to jest w Narzędziach, Team Foundation Sidekicks, Status Sidekick. Będziesz musiał rozwinąć to okno, ale będziesz mógł wyszukiwać blokady dla nazwy użytkownika.
Dwie najlepsze odpowiedzi są bardzo pomocne, ale może to być interesujące. –
z wiersza poleceń
>powershell
Następnie z PowerShell zrobić:
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')}
wielkie pytanie, nie wiem jak to zrobić, chociaż ... :) –