Udostępnij za pośrednictwem


Skrypty w międzyplatformowym kliencie wiersza polecenia dla programu 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.Lub możesz pominąć bezpośrednio na plusy i minusy.

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)