Создание скриптов в межплатформенном клиенте командной строки для Team Foundation Server
Хотите автоматизировать задачи, такие как возврат и извлечение исходного кода?Можно использовать внутреннюю или внешнюю автоматизацию для выполнения задание.Сначала рассмотрим эти 2 режима автоматизации.Или же можно переходить непосредственно к разделу pros and cons.
Внешняя автоматизация
Внешняя автоматизация настраивает другой процесс для повторного вызова инструмента командной строки tf с полностью контекстуальными аргументами в каждом случае.Чтобы включить этот режим специального синтаксиса не требуется.Чтобы реализовать этот метод, можно использовать одну из следующих внешних процессов.
Оболочка Unix, например sh, ksh, bash или csh
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, ожидает два позиционных аргумента, поэтому можно выполнять его, как показано в следующем примере:
tf @/home/john/get-and-history.tfc README.doc C5087
Первый аргумент, README.doc, подставляется вместо %1 при интерпретации каждой строки.C5087 заменяется на %2.
Примечание |
---|
В командном файле оба позиционных аргумента заключены в двойные кавычки, поскольку их замененные значения могут содержать пробелы (например, имя файла или спецификация версии даты). |
Формат командного файла может быть описан расширенной формой Бэкуса-Наура (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" для позиционного аргумента, который может содержать пробелы.Только двойные кавычки обозначают границы параметра в командных файлах.Одиночные кавычки интерпретируются буквально.Чтобы указать буквально двойные кавычки в строке действия, необходимо использовать 2 двойные кавычки ("") совместно.Правила заключения в кавычки внутри командных файлов могут отличаться от правил, используемых в вашей оболочке, потому что ваша оболочка не выполняет синтаксический анализ строк в командном файле. |
Преимущества и недостатки обоих методов
Так какой же метод вы должны использовать — внешнюю или внутреннюю автоматизацию?Давайте посмотрит на преимущества и недостатки каждого метода:
Внешняя автоматизация |
Внутренняя автоматизация |
|
Преимущества |
|
|
Cons |
|
Он менее гибок, чем внешняя автоматизация.Вот почему:
|