Поделиться через


Создание скриптов в межплатформенном клиенте командной строки для 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 двойные кавычки ("") совместно.Правила заключения в кавычки внутри командных файлов могут отличаться от правил, используемых в вашей оболочке, потому что ваша оболочка не выполняет синтаксический анализ строк в командном файле.

Преимущества и недостатки обоих методов

Так какой же метод вы должны использовать — внешнюю или внутреннюю автоматизацию?Давайте посмотрит на преимущества и недостатки каждого метода:

Внешняя автоматизация

Внутренняя автоматизация

Преимущества

  • Он более гибкие, поскольку может запускать не только команды tf, но и другие команды.

  • Это просто.Если вы знакомы с внешним процессом или языком, можно вызвать средство командной строки tf так же, как и любой другой процесс командной строки.

  • Это Легко отладить.Если некоторые команды не выполняются так, как ожидается, не требуется менять команды в командной строки для диагностики проблем.

  • Это быстрее внешнего метода.Поскольку виртуальная машина Java загружается только один раз, а инструмент командной строки может повторно использовать подключения к серверу можно выполнять несколько команд в командном файле быстрее, чем при запуске каждой команды по отдельности.

Cons

  • Это медленнее, чем внутренняя автоматизация.Для каждой выполняемой команды ЦП должен потратить время на запуск виртуальной машины Java и подготовку запуска клиента.

  • Внешний процесс должен обнаруживать ошибки.Если внешний процесс не проверяет код выхода каждого выполнения, процесс может пропустить ошибку.

  • Это может быть обременительнее запрограммировать.Внешний процесс должен предоставлять все нужные параметры каждый раз, когда он запускает программу командной строки tf, и эти аргументы могут требовать специальных кавычек или escape-символов.

Он менее гибок, чем внешняя автоматизация.Вот почему:

  • Можно определить только команды tf в файле команд, поэтому может быть нужно написать несколько файлов команд и выполнить каждый из них при необходимости выполнить другие задачи между командами tf.

  • Выполнение останавливается на первой встреченной ошибке.Невозможно принудительно заставить средство пропустить или игнорировать любое условие ошибки.

  • Можно оказаться, что работа с обычным или ошибочным выводом сложнее.Процесс, который запускает средство с внутренней автоматизацией, может быть неспособным определить строку в командном файле, которая создала конкретную часть нормального результата.

См. также

Другие ресурсы

Command-line Reference (Team Explorer Everywhere)