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 |
|
|
Wady |
|
Jest mniej elastyczne niż zewnętrzna automatyzacja.Oto dlaczego:
|