2015-08-17 11 views
6

Quando apro il mio Visual Studio e ottenere una soluzione dal nostro TFS ho seguente messaggio nella finestra di output:Come ottenere un conteggio degli articoli nel mio spazio di lavoro locale TFS?

TF401190: L'area di lavoro locale [MACHINE_NAME; USER_NAME] ha 158412 elementi in esso, che supera la limite consigliato di 100000 articoli . Per migliorare le prestazioni, ridurre il numero di elementi nello spazio di lavoro o convertire lo spazio di lavoro in un'area di lavoro del server.

Questo non è un errore, ma un avvertimento e posso lavorare OK, anche se sento che c'è un vero successo nelle prestazioni durante il mio lavoro.

Per risolvere ciò, vorrei da un lato "nascondere" singoli rami/cartelle che non uso. D'altra parte non voglio mascherare molto e in generale voglio sapere se ci sono alcune cartelle che contengono molti file inutili.

Domanda: Esiste un comando TFS Console/PowerShell o qualcosa per recuperare un conteggio degli elementi nello spazio di lavoro locale TFS che può essere eseguito dal computer client di Visual Studio? Qualcosa come l'app Treesize, ma per TFS?

Ho cercato su Google un po ', ma non ho trovato nulla di veramente utile. I found this on MSDN che conferma il motivo per cui sto ricevendo il messaggio, ma non fornisce alcuna soluzione. Here è un ragazzo che ha provato a fare qualcosa, ma il progetto non è mai arrivato a codeplex afaik.

Il nostro team utilizza VS2013 Update 5/TFS 2013 Update 5

vostro aiuto è apprezzato.

+0

Perché non utilizzare solo Treesize nell'area di lavoro locale? Ad esempio C: \ TFS \ MySuperLargeTeamProject) È anche possibile utilizzare mapping non ricorsivi con un trailing/* (https://msdn.microsoft.com/en-us/library/ms181378(v=vs.120).aspx) – rerwinX

+1

Bene, un controllo locale di Treesize mostrerebbe e conterebbe anche tutti i file non gestiti come build, impostazioni di resharper, $ tf artefatti ecc ... sai cosa intendo? – KarmaEDV

risposta

5

È possibile farlo ad es. con TFS API:

var uri = new Uri("https://tfs.mydomain.com/tfs/myteamprojectcollection") 
var tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(uri); 
var vcs = tpc.GetService<VersionControlServer>(); 

var itemSet = vcs.GetItems("$/MyServerPath",RecursionType.Full); 

Console.WriteLine(itemSet.Items.Length); 

Si può semplicemente mettere in una console app, o se si cambia la sintassi, può essere chiamato anche come script PowerShell.

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client") 
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.VersionControl.Client") 

$url = "https://tfs.mydomain.com/tfs/myteamprojectcollection"; 
$tfs = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($url) 
$vcs = $tfs.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer]) 
$set = $vcs.GetItems("$/MyServerPath", [Microsoft.TeamFoundation.VersionControl.Client.RecursionType]::Full) 

Write-Host $set.Items.Length 
+0

Grazie mille! Vorrei poter dare più di 1 upvote! – KarmaEDV

Problemi correlati