Team Foundation Server のプラットフォーム間のコマンド ライン クライアントでのスクリプト
ソース コードのチェックインとチェックアウトなどのタスクを自動化しますか?それには外部または内部オートメーションを使用できます。まずオートメーションの 2 つのモードを確認しましょう。または、「pros and cons」に直接進んでもかまいません。
外部オートメーション
外部オートメーションは、別のプロセスが毎回完全なコンテキスト引数を使用して tf のコマンド ライン ツールを繰り返し呼び出すように構成します。このモードを有効にするために特殊な構文は必要ありません。このメソッドを実装するには、次の外部プロセスのいずれかを使用できます。
sh、ksh、bash、csh などの UNIX シェル
Perl またはスクリプトに使用される別のプログラミング言語
Apache Ant または別のビルド指向のツール
tf プログラムを起動して引数を指定できるその他のツール
内部オートメーション
内部オートメーションは、tf コマンド ライン ツールがオートメーションのプロセスを駆動して、引数として渡されるコマンド ファイルを解釈するように構成します。内部オートメーションは、コマンド ファイルへのローカル パスの直前に @ シンボルを配置することにより、呼び出すことができます。このコマンド ラインで指定する追加の引数は、コマンド ファイルのコマンドで位置指定引数として使用できます。
[!メモ]
コマンド ファイルとして標準入力を処理するには、後ろにファイル名を付けずに @ シンボルを指定します (tf@)。入力ストリームは、プラットフォームの既定のエンコーディングと文字セットに従ってテキストとして解釈されます。
次のコマンド ファイルはファイルの指定のバージョンを取得し、そのバージョンに関する詳細な履歴情報を出力します。
# This line is ignored because it is a comment.
get "-version:%2" -force "%1"
history -format:detailed "-version:%2" "%1"
/home/john/get-and-history.tfc というコマンド ファイルは 2 つの位置指定引数を必要とするため、次の例のように実行できます。
tf @/home/john/get-and-history.tfc README.doc C5087
各行が解釈されると最初の引数である README.doc が %1 を置換します。C5087 は %2 を置換します。
[!メモ]
コマンド ファイルでは、代入された値に空白が含まれる可能性があるため (ファイル名や日付のバージョン仕様など)、位置指定引数は両方とも二重引用符で囲まれます。
コマンド ファイル形式は、拡張 Backus-Naur Form (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 には、get、workfold、workspace などの有効な任意の tf コマンドを指定できます。
tf option には、-login、-profile、-format などの有効な任意の tf オプションを指定できます。
tf free argument には、サーバー パスやローカル パスなどの tf に対する自由引数として使用される任意の文字列を指定できます。
positional argument は、外側の tf のコマンド ライン引数から置換するテキストのプレースホルダーです。数値は、置き換える "%1" や "%2" のようなコマンド ライン引数のインデックスに対応する正の整数です。%1 は、最初の引数を示します。位置指定引数はオプションまたは自由引数として、コマンドの後に任意の順序で使用できます。
[!メモ]
空白を含むオプションと引数は、二重引用符を使用して囲みます。たとえば、ラベル指定子については “-version:LRelease 2.1” を、自由引数には “$/Inventory/Client Project/main.c” を、そして空間を含む可能性のある位置指定引数には '%1" を使用します。コマンド ファイル内のオプションの境界を示すのは、二重引用符のみです。単一引用符は、リテラルとして解釈されます。アクション行でリテラルの二重引用符を指定するには、2 つの二重引用符を一緒に使用する必要があります ("")。シェルはコマンド ファイル内の行を解析しないため、コマンド ファイル内の引用符の規則は、シェルで使用する規則とは異なる場合があります。
2 つのメソッドの長所と短所
では、外部オートメーションと内部オートメーションのどちらのメソッドを使用しますか?各メソッドの利点と欠点を見てみましょう。
外部オートメーション |
内部オートメーション |
|
利点 |
|
|
Cons |
|
外部オートメーションと比べて柔軟性に欠けます。その理由を次に示します。
|