在跨平台命令行客户端中编写脚本(对于 Team Foundation Server)
是否自动化任务,如签入和签出源代码?您可以使用外部或内部自动获取所做的工作。首先,让我们检查这两种自动化模式。或者,您可以直接跳到 pros and cons。
外部自动化
外部自动化将其他进程配置为每次都利用完全上下文参数重复调用 tf 命令行工具。您不需要任何特殊语法便可启动此模式。您可以使用以下外部进程之一实现此方法:
UNIX 外壳程序,例如 sh、ksh、bash 或 csh
用于编写脚本的 Perl 或其他编程语言
Apache 蚂蚁或另一个生成面向工具
开始 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,需要两个位置实参,因此,可以运行它使用以下示例所示:
tf @/home/john/get-and-history.tfc README.doc C5087
在解释每行时,将 %1 替换为第一个参数 (README.doc) 。C5087 用 %2 进行替换。
说明 |
---|
在命令文件中,两个位置参数周围通过双引号引起来,因为它们的替换值可能包含空格(例如,文件名或日期版本规范)。 |
命令文件的格式可由扩展 Backus-Naur 形式 (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 可以是任何有效的 tf 命令,如 get、workfold 和 workspace。
tf option 可以是任意有效的 tf 选项,如 -login、-profile 和 -format。
tf free argument 可以是旨在为 tf 的可用参数的含意字符串,如服务器路径和本地路径。
positional argument 是从外部 tf 命令行参数替换的文本的占位符。该数字为对应于要替换的命令行参数索引的正整数,如“%1”和“%2”。%1 引用第一个参数。您可以使用位置参数作为选项或自由参数并按命令之后的任何顺序。
说明 |
---|
使用双引号包围包含了空格的选项和参数。例如,对于标签说明符,使用 “-version:LRelease 2.1”,对于自由参数,使用 “$/Inventory/Client Project/main.c”,对于可能包含空格的位置参数,使用“%1”。仅双引号表示命令文件中的可选边界。按原意解释单引号。若要在活动线中指定文本双引号,您必须同时使用两个双引号 (" ")。命令文件中的引用规则可能不同于您的 shell 所使用的规则,因为 shell 并不分析命令文件中的行。 |
两种方法的优缺点
因此方法应外部的使用方法或内部自动化?让我们来看看每个方法的优缺点:
外部自动化 |
内部自动化 |
|
优点 |
|
|
Cons |
|
它没有外部自动化灵活。原因:
|