2011-02-04 6 views
8

Jestem w trakcie tworzenia skryptu do wykonywania dużej liczby ruchów w mojej instancji TFS. Mam polecenia cmdlet tfs dostępne z narzędziami Power Tools 2010 TFS, ale dokumentacja pomocy dla nich jest bardzo rzadka. W szczególności Add-TfsPendingChange nie obsługuje zmiany nazwy, co zmusza mnie do używania "tf.exe rename".Powershell i TFS: tf.exe w porównaniu z aplikacjami narzędziowymi TFS cmdlets?

Po pierwsze: czy w jakiś sposób ominąłem dokumentację dla poleceń cmdlet? Próbowałem uzyskać pomoc dotyczącą poleceń, ale nie obsługują one flag -exetails lub -example. Czy coś jest bardziej dostępne?

Po drugie: z jakiego powodu muszę preferować jakiekolwiek cmdlety w stosunku do zwykłego tf.exe? Czy przy wykonywaniu podobnych funkcji istnieją korzyści inne niż przepuszczanie obiektów przez rurę?

Odpowiedz

6

Polecenia cmdlet TF to minimalistyczna oferta w tym momencie i obejmuje dostarczoną dokumentację. Ogólnie użyłbym cmdletów TF, gdzie obsługują to, co próbuję zrobić - szczególnie jeśli masz jakieś pytania. Przetwarzanie danych wyjściowych cmdletów zapytań jest znacznie łatwiejsze, ponieważ udostępniają one bogate obiekty zamiast strumienia tekstowego, który trzeba przeanalizować, używając czegoś takiego jak tf status . /r.

Należy również pamiętać, że w systemie Windows x64, polecenia cmdlet działają tylko w 32-bitowym hoście PowerShell.

+1

Nicea wezwanie na rzecz konsoli x86. Znalazłem plik dll-Help.xml, ale przeczytanie go za pomocą get-help jest o wiele przyjemniejsze. Dzięki! – bwerks

+0

Wow, najwyraźniej polecenia cmdlet są całkowicie niezdolne do wykrywania/obsługi zmian scalania. Powrót do tf.exe Idę, wydaje się. – bwerks

+0

W przyszłości rozważ użycie publicznych zestawów modułów TFS z poziomu PowerShell (patrz przykładowy kod w mojej odpowiedzi). – weir

6

Polecenia cmdlet tf nie są dokładnie bezużyteczne, ale ... zdecydowaliśmy się nie używać ich w naszym środowisku kompilacji, nawet jeśli oznacza to przetwarzanie tekstu.

Oprócz rzeczy x64, istnieje wiele missing commands (dzięki @Keith) i brakujące parametry, a najważniejsze, nie działają w sesjach zdalnych!

3

Trzecią opcją jest użycie publicznych zestawów TFS z poziomu PowerShell. Po wykonaniu tej czynności można uzyskać dostęp do wszystkich funkcji klienta TFS i nadal korzystać z poleceń cmdlet TFS. To, czy wybierzesz to podejście w stosunku do tf.exe, czy innych plików wykonywalnych wiersza poleceń TFS, zależy od preferowanego środowiska skryptowego.

Oto polecenie PowerShell odwołać TFS 2013 zgromadzeń publicznych (dla TFS 2012 lub 2010 tylko zmienić Version=12.0.0.0 do Version=11.0.0.0 lub Version=10.0.0.0).

'Microsoft.TeamFoundation.Client', 'Microsoft.TeamFoundation.Common', 'Microsoft.TeamFoundation.VersionControl.Client' | 
    ForEach-Object { 
     Add-Type -AssemblyName "$_, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
    } 

Dla przykładu zmiany nazwy, można następnie:

  1. Użyj Get-TfsWorkspace cmdlet do instancji Microsoft.TeamFoundation.VersionControl.Client.Workspace obiekt.
  2. Wywołanie metod obiektu Workspace obiektu.

coś takiego:

$workspace = Get-Workspace 
$workspace.PendRename($oldItemPath, $newItemPath) 
$pendingChange = $workspace.GetPendingChanges($oldItemPath) 
$workspace.Checkin($pendingChange, $comment) 
Powiązane problemy