Partager via


Script dans le Client de ligne de commande interplateforme pour Team Foundation Server

Voulez-vous automatiser des tâches, telles que la vérification et l'extraction du code source ? Vous pouvez utiliser l'automation externe ou interne pour accomplir les tâches. D'abord, examinons ces deux modes d'automation. Ou, vous pouvez passer directement au pour et contre.

Automatisation externe

L'automatisation externe configure un autre processus pour appeler l'outil de ligne de commande tf à plusieurs reprises avec les arguments entièrement contextuels chaque fois. Vous n'avez besoin d'aucune syntaxe spéciale pour activer ce mode. Vous pouvez utiliser l'un des processus externes suivants pour appliquer cette méthode :

  • Shell Unix, tel que sh, ksh, bash ou csh

  • Perl ou un autre langage de programmation qui est utilisé pour le script

  • Apache Ant ou un autre outil orienté build

  • Un autre outil qui peut démarrer le programme tf et fournir les arguments

Automatisation interne

L'automatisation interne configure l'outil en ligne de commande tf pour piloter le processus d'automatisation et interpréter un fichier de commandes passé comme argument. Vous pouvez appeler l'automation interne en fournissant le symbole @ suivi immédiatement d'un chemin d'accès local à un fichier de commandes. Tous les arguments supplémentaires que vous fournissez dans cette ligne de commande sont disponibles pour les commandes dans le fichier de commandes sous forme d'arguments de position.

Notes

Pour traiter l'entrée standard comme votre fichier de commandes, fournissez le symbole @ sans nom de fichier après.Le flux d'entrée est interprété comme du texte selon l'encodage par défaut et le jeu de caractères de votre plateforme.

Le fichier de commande suivant obtient la version spécifiée d'un fichier et imprime les données historiques détaillées à propos de cette version.

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

Le fichier de commandes, nommé /home/john/get-and-history.tfc, attend deux arguments de position, vous pouvez l'exécuter comme indiqué dans l'exemple suivant :

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

Le premier argument, README.doc, est remplacé pour %1 lorsque chaque ligne est interprétée. %2 est remplacé par C5087.

Notes

Dans le fichier de commandes, les deux arguments de position sont placés entre guillemets doubles car leurs valeurs substituées peuvent contenir des espaces (par exemple, un nom de fichier ou une spécification de version de date).

Le format du fichier de commandes peut être décrit par la forme Backus-Naur (EBNF) étendue :

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 peut être n'importe quelle commande valide tf, telle que get, workfold et workspace.

  • tf option peut être n'importe quelle option valide tf, telle que -login, -profile et -format.

  • tf free argument peut être une chaîne qui est conçue comme un argument libre pour tf, tel qu'un chemin d'accès au serveur et un chemin d'accès local.

  • positional argument est un espace réservé pour le texte qui est remplacé à partir d'arguments de ligne de commande externe tf . Le nombre est un entier positif qui correspond à l'index de l'argument de ligne de commande que vous souhaitez remplacer, par exemple « %1 » et « %2 ». %1 fait référence au premier argument. Vous pouvez utiliser des arguments de position comme options ou arguments libres et dans n'importe quel ordre après la commande.

Notes

Utilisez des guillemets doubles pour délimiter les options et les arguments qui contiennent des espaces.Par exemple, utilisez “-version:LRelease 2.1” pour un spécificateur d'étiquette, “$/Inventory/Client Project/main.c” pour un argument libre et « %1 » pour un argument de position qui peut contenir des espaces.Seules les guillemets doubles dénotent des limites d'option dans les fichiers de commandes.Les guillemets simples sont interprétées littéralement.Pour spécifier un guillemet double littéral dans votre ligne d'action, vous devez utiliser deux guillemets doubles ensemble ("").Les règles de mise entre guillemets dans les fichiers de commandes peuvent différer des règles que le shell utilise, car il n'analyse pas les lignes du fichier de commandes.

Avantages et inconvénients des deux méthodes

Quelle méthode devez-vous utilisez (automation interne ou externe ?) Examinons les avantages et les inconvénients de chaque méthode :

Automatisation externe

Automatisation interne

Avantages

  • Il est plus flexible car il peut exécuter non seulement les commandes tf mais également d'autres commandes.

  • Il est simple. Si vous êtes familier avec le processus ou le langage externe, vous appelez l'outil en ligne de commande tf de la même manière que tout autre processus basé sur la ligne de commande.

  • Il est facile à déboguer. Si certaines commandes ne fonctionnent pas comme prévu, vous ne devez pas modifier les commandes de la ligne de commande pour diagnostiquer les problèmes.

  • Il est plus rapide que la méthode externe. Comme la machine virtuelle Java est chargée une seule fois et que l'outil en ligne de commande peut réutiliser ses connexions au serveur, vous pouvez exécuter plusieurs commandes dans un fichier de commandes plus rapidement que si vous deviez exécuter chaque commande séparément.

Cons

  • Il est plus lent que l'automatisation interne. Pour chaque commande que vous exécutez, le processeur doit passer du temps à démarrer la machine virtuelle Java et à préparer l'exécution du client.

  • Le processus externe doit détecter des erreurs. Si le processus externe ne teste pas le code de sortie de chaque exécution, le processus peut ignorer une erreur.

  • Il peut être plus fastidieux à programmer. Le processus externe doit fournir toutes les options appropriées chaque fois qu'il exécute l'outil de ligne de commande tf et les arguments peuvent nécessiter des guillemets spéciales ou un caractère d'échappement.

Il est moins flexible que l'automatisation externe. Voici pourquoi :

  • Vous pouvez spécifier uniquement les commandes tf dans le fichier de commandes, vous devrez donc peut-être écrire plusieurs fichiers de commandes et exécuter chacun d'eux si vous souhaitez effectuer d'autres tâches entre les commandes tf .

  • L'exécution s'arrête à la première condition d'erreur que vous rencontrez. Vous ne pouvez pas forcer l'outil à passer ou à ignorer une condition d'erreur.

  • Vous pouvez trouver que le traitement avec la sortie normale ou d'erreur est plus complexe. Un processus qui exécute l'outil à l'aide de l'automation interne ne sera peut-être pas en mesure de déterminer quelle ligne du fichier de commandes a produit quelle partie de la sortie normale.

Voir aussi

Autres ressources

Command-line Reference (Team Explorer Everywhere)