Partilhar via


Scripts no cliente de linha de comando para Team Foundation Server o cruzamento-plataforma

Você gostaria de automatizar as tarefas, como fazer check-in e check-out no código-fonte?Você pode usar a autenticação externa ou interna para obter o trabalho feito.Primeiro, vamos examinar esses dois modos de automação.Ou você pode ir diretamente para pros and cons.

Automação externa

A automação externa configura outro processo para chamar repetidamente a ferramenta de linha de comando tf com argumentos totalmente contextuais cada vez.Você não precisa de qualquer sintaxe especial para ativar esse modo.Você pode usar um dos processos externos para implementar esse método:

  • Um shell do Unix, como sh, ksh, bash ou csh

  • Perl ou outra linguagem de programação usada em scripts

  • O Apache Ant ou outra ferramenta orientada para compilação

  • Alguma outra ferramenta que pode iniciar os argumentos de alimentação e programa de tf

Automação interna

A automação interna configura a ferramenta da linha de comando tf para levar o processo de automação e interpretar um arquivo de comando que é passado como um argumento.Você pode chamar a automação interna fornecendo o símbolo @ seguido imediatamente de um caminho local a um arquivo de comando.Todos os argumentos adicionais que você forneça nesta linha de comando estão disponíveis para comandos no arquivo de comando como argumentos posicionais.

ObservaçãoObservação

Para processar a entrada padrão como seu arquivo de comando, forneça o símbolo @ sem o nome do arquivo depois dele (tf@).O fluxo de entrada é interpretado como texto de acordo com a codificação padrão e o conjunto de caracteres da plataforma.

O seguinte arquivo de comando obtém a versão especificada de um arquivo e imprime informações de histórico detalhadas sobre essa versão.

# This line is ignored because it is a comment.
get "-version:%2" -force "%1"
history -format:detailed "-version:%2" "%1"

O arquivo de comando, chamado /home/john/get-and-history.tfc, espera dois argumentos posicionais, o que pode executá-lo como exemplo a seguir mostra:

tf @/home/john/get-and-history.tfc README.doc C5087

O primeiro argumento, README.doc, é substituído por %1 quando cada linha é interpretada.C5087 é substituído para %2.

ObservaçãoObservação

No arquivo de comando, ambos os argumentos posicionais são rodeados por aspas duplas porque seus valores substituídos podem conter espaços (por exemplo, um nome de arquivo ou uma especificação de versão de data).

O formato do arquivo de comando pode ser descrito pela Forma de Backus-Naur Estendida (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 pode ser qualquer comando tf válido, como get, workfold e workspace.

  • tf option pode ser qualquer opção tf válida, como -login, -profile e -format.

  • tf free argument pode ser qualquer cadeia de caracteres destinada como um argumento livre para tf, como um caminho do servidor e um caminho local.

  • positional argument é um espaço reservado para texto que é substituído nos argumentos externos de linha de comando tf.O número é um inteiro positivo que corresponde ao índice do argumento da linha de comando que você deseja substituir, como “%1 " e “%2".%1 refere-se ao primeiro argumento.Você pode usar argumentos posicionais como opções ou liberar argumentos e em qualquer ordem após o comando.

ObservaçãoObservação

Use marcas de aspas duplas para colocar as opções e os argumentos que contêm espaços.Por exemplo, use “-version:LRelease 2.1” para um especificador de rótulo, “$/Inventory/Client Project/main.c” para um argumento livre e “%1 " para um argumento posicional que pode conter espaços.Somente aspas duplas denotam limites de opção em arquivos de comando.Aspas simples são interpretadas literalmente.Para especificar aspas duplas literal em sua linha de ação, você deve usar duas aspas duplas juntas ("").As regras de aspas nos arquivos de comando podem diferir das regras que seu shell usa, pois ele não processa as linhas no arquivo de comando.

Prós e contras dos dois métodos

Assim, qual método você deverá usar — automação interna ou externa?Vamos dar uma olhada nos prós e contras de cada método:

Automação externa

Automação interna

Prós

  • É mais flexível porque não pode executar somente comandos tf, mas outros comandos.

  • É simples.Se você estiver familiarizado com o processo externo ou linguagem, você invoca a ferramenta de linha de comando tf da mesma forma que qualquer outro processo de linha de comando.

  • É fácil depurar.Se alguns comandos não executam como você espera, você não tem que mudar os comandos na linha de comando para diagnosticar problemas.

  • É mais rápido do que o método externo.Como a máquina virtual Java é carregada apenas uma vez e a ferramenta de linha de comando pode reutilizar suas conexões para o servidor, você pode executar vários comandos em um arquivo de comando de forma mais rápida do que se você executar cada comando separadamente.

Contras

  • É mais lento do que a automação interna.Para cada comando executado, a CPU deve passar um tempo iniciando o a máquina virtual de Java e preparando para executar o cliente.

  • O processo externo deve detectar erros.Se o processo externo não testar o código de saída de cada execução, o processo pode perder um erro.

  • Pode ser mais pesado para programar.O processo externo deve fornecer as opções relevantes cada vez que executa a ferramenta de linha de comando tf, e os argumentos podem exigir citações ou saídas especiais.

É menos flexível do que a automação externa.Aqui está porque:

  • Você pode especificar somente comandos tf no arquivo de comando, portanto você pode precisar escrever vários arquivos de comando e executar cada um de eles se deseja realizar outras tarefas entre comandos tf .

  • A execução para na primeira condição de erro que você encontrar.Você não pode forçar a ferramenta para ignorar ou ignorar qualquer condição de erro.

  • Você pode achar que tratar a saída de erro ou normal é mais complicada.Um processo executando a ferramenta com automação interna não poderá determinar qual linha no arquivo de comando produziu qual parte do resultado normal.

Consulte também

Outros recursos

Command-line Reference (Team Explorer Everywhere)