Udostępnij za pośrednictwem


Skrypty w różnych platformach klienta wiersza polecenia dla Team Foundation Server

Czy chcesz automatyzować zadania, takie jak ewidencjonowanie i wyewidencjonowywanie kodu źródłowego?Aby wykonać zadania można użyć zewnętrznej lub wewnętrznej automatyzacji.Najpierw przyjrzyjmy się tym dwóm trybom automatyzacji.Można też przejść bezpośrednio do pros and cons.

Zewnętrzna automatyzacja

Zewnętrzna automatyzacja konfiguruje inny proces, aby wywołać narzędzie wiersza polecenia tf wielokrotnie z w pełni kontekstowymi argumentami za każdym razem.Aby włączyć ten tryb, nie jest potrzebna specjalna składnia.Do zaimplementowania tej metody można użyć jednego z następujących procesów zewnętrznych:

  • Powłoka systemu Unix, taka jak sh, ksh, bash lub csh.

  • Perl lub inny język programowania stosowany dla skryptów

  • Apache Ant lub inne narzędzia o charakterze kompilacyjnym

  • Każde inne narzędzie, które może uruchomić program tf i podać argumenty

Wewnętrzna automatyzacja

Wewnętrzna automatyzacja konfiguruje narzędzie wiersza polecenia tf do sterowania procesem automatyzacji i interpretowania pliku poleceń przekazywanego jako argument.Można wywołać wewnętrzną automatyzację, podając bezpośrednio po symbolu @ ścieżkę lokalną do pliku polecenia.Wszelkie dodatkowe argumenty, które podasz w tym wierszu polecenia, będą dostępne dla poleceń w pliku poleceń jako argumenty pozycyjne.

[!UWAGA]

W celu przetwarzania standardowych danych wejściowych jako plik polecenia, należy podać symbol @ bez następujące po niej nazwy pliku (tf@).Strumień wejściowy jest interpretowany jako tekst zgodnie z domyślnym kodowaniem i zestawem znaków platformy.

Następujący plik polecenia pobiera określoną wersję pliku i drukuje szczegółowe historyczne informacje dotyczące tej wersji.

# This line is ignored because it is a comment.
get "-version:%2" -force "%1"
history -format:detailed "-version:%2" "%1"

Plik poleceń, którego nazwą jest /home/john/get-and-history.tfc , oczekuje dwóch argumentów pozycyjnych, więc można go uruchomić, podobnie jak w poniższym przykładzie:

tf @/home/john/get-and-history.tfc README.doc C5087

Pierwszy argument README.doc zastępuje %1 podczas interpretacji każdego wiersza.C5087 jest podstawiany za %2.

[!UWAGA]

W pliku poleceń oba argumenty pozycyjne są ujęte w podwójny cudzysłów, ponieważ ich wartości podstawione mogą zawierać spacje (na przykład nazwa pliku lub specyfikacji wersji daty).

Format pliku polecenia, który można opisać za pomocą formularza EBNF:

command file ::= { line } ;
line ::= comment line | blank line | action line , EOL ;
comment-line ::= "#" | "rem" , { ? any non-EOL character ? } ;
blank line ::= { ? any whitespace character ? };
action line ::= tf command , [ { white space , tf option } ] , [ { white space , tf free argument } ] ;
tf command ::= ? any tf command ?
tf option ::= ? any tf option ? | positional argument ;
tf free argument::= ? any tf free argument ? | positional argument ;
positional argument::= "%" , non-zero digit , [ { digit } ] ;
EOL ::= ? your platform's EOL character or sequence ?
white space ::= { ? any non-EOL whitespace character ? }
digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
non-zero digit ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
  • tf command może być dowolnym prawidłowym poleceniem tf, takim jak get, workfold oraz workspace.

  • tf option może być każdą prawidłową opcją tf, taką jak -login, -profile oraz -format.

  • tf free argument może być dowolnym ciągiem, który w założeniu ma być wolnym argumentem dla tf, na przykład ścieżką serwerową i lokalną.

  • positional argument to symbol zastępczy tekstu, który jest podstawiany z argumentów zewnętrznego tf wiersza poleceń.Liczba to dodatnia liczba całkowita odpowiadająca indeksowi argumentu wiersza polecenia, który chcesz podstawić. Na przykład: "%1" i "%2".%1 odwołuje się do pierwszego argumentu.Argumentów pozycyjnych można użyć jako opcji lub wolnych argumentów w dowolnej kolejności po poleceniu.

[!UWAGA]

Należy ująć opcje i argumenty, które zawierają spacje w podwójny cudzysłów.Na przykład użyj opcji “-version:LRelease 2.1” dla specyfikatora etykiety, opcji “$/Inventory/Client Project/main.c” dla argumentu wolnego, i opcji "%1" dla argumentu pozycyjnego, który może zawierać spacje.Jedynie cudzysłowy określają limit opcji w plikach poleceń.Pojedyncze cudzysłowy są interpretowane dosłownie.Aby określić cudzysłów literału w wierszu akcji, należy użyć dwóch znaków cudzysłowu razem ("").Zasady cytowania wewnątrz plików poleceń mogą różnić się od reguł, których używa powłoka, ponieważ powłoka nie analizuje wierszy w pliku poleceń.

Zalety i wady tych dwóch metod:

Z której więc metody należy skorzystać — automatyzacji zewnętrznej czy wewnętrznej?Spójrzmy na zalety i wady każdej metody:

Zewnętrzna automatyzacja

Wewnętrzna automatyzacja

Zalety

  • Jest bardziej elastyczna, ponieważ może uruchamiać nie tylko polecenia narzędzia tf, ale też inne polecenia.

  • To proste.Jeśli znasz zewnętrzny proces lub język, wywołujesz narzędzie wiersza polecenia tf tak samo, jak każdy inny proces wiersza polecenia.

  • Jest łatwe do debugowania.Jeśli niektóre polecenia nie działają w oczekiwany sposób, nie trzeba zmieniać poleceń w wierszu polecenia do diagnozowania problemów.

  • Jest szybsze niż metoda zewnętrzna.Ponieważ wirtualna maszyna Java jest ładowana tylko raz i narzędzie wiersza polecenia można ponowne wykorzystywać jej połączenie z serwerem, można wykonywać wiele poleceń w pliku polecenia szybciej niż przy uruchamianiu każdego polecenia oddzielnie.

Wady

  • Jest wolniejsza niż wewnętrzna automatyzacja.Dla każdego uruchamianego polecenia procesor CPU musi poświęcić czas na uruchomienie wirtualnej maszyny Java i przygotowanie do uruchomienia klienta.

  • Proces zewnętrzny musi wykryć błędy.Jeśli proces zewnętrzny nie testuje kodu zakończenia każdego wykonywania, proces może przeoczyć błąd.

  • Może być bardziej skomplikowane do programowania.Proces zewnętrzny musi dostarczyć wszystkich odpowiednich opcji za każdym razem, gdy zostanie uruchomione narzędzie wiersza polecenia tf i argumenty mogą wymagać specjalnego cytowania lub wychodzenia.

Jest mniej elastyczne niż zewnętrzna automatyzacja.Oto dlaczego:

  • Można określić tylko polecenia tf w pliku polecenia, co może wymagać zapisania wielu plików poleceń i uruchomienia każdego z nich, aby wykonywać inne zadania poleceń tf.

  • Wykonanie zatrzymuje się na pierwszym napotkanym warunku błędu.Nie można wymusić na narzędziu pominięcie lub zignorowanie pojawienia się błędu.

  • Może się okazać, że radzenie sobie z danymi wyjściowymi normalnych lub błędu jest bardziej skomplikowane.Proces, który uruchamia narzędzie z wewnętrzną automatyzacją, może nie być w stanie ustalić, które wiersze w pliku poleceń wygenerowały poszczególne części normalnej produkcji.

Zobacz też

Inne zasoby

Command-line Reference (Team Explorer Everywhere)