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