Condividi tramite


Script nel client della riga di comando di più piattaforme per Team Foundation Server

Si desidera automatizzare attività quali l'archiviazione e l'estrazione del codice sorgente? È possibile utilizzare l'automazione esterna o interna per eseguire il lavoro. Innanzitutto, rivediamo queste due modalità di automazione. In alternativa, è possibile passare direttamente a pros and cons.

Automazione esterna

L'automazione esterna configura un altro processo per richiamare più volte lo strumento della riga di comando tf con gli argomenti completamente contestuali. Non è necessaria alcuna sintassi speciale di attivare questa modalità. Per implementare questo metodo, è possibile utilizzare uno dei seguenti processi esterni:

  • Una shell di Unix, come sh, ksh, bash o csh

  • Perl o un altro linguaggio di programmazione utilizzato per gli script

  • Apache Ant o un altro strumento orientato alla compilazione

  • Qualsiasi altro strumento che consente di avviare il programma tf e di fornire argomenti

Automazione esterna

L'automazione interna configura lo strumento da riga di comando tf per determinare il processo di automazione e interpretare un file di comandi passato come argomento. È possibile richiamare l'automazione interna fornendo il simbolo @ seguito immediatamente da un percorso locale a un file di comando. Tutti gli altri argomenti forniti in questa riga di comando sono disponibili ai comandi nel file di comando come argomenti posizionali.

Nota

Per elaborare un input standard come file di comando, immettere il simbolo @ senza farlo seguire dal nome file (tf@). Il flusso di input viene interpretato come testo in base alla codifica predefinita e al set di caratteri della piattaforma.

Il file di comando seguente ottiene la versione specificata di un file e stampa informazioni cronologiche dettagliate su tale versione.

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

Il file di comando, denominato /home/john/get-and-history.tfc, prevede due argomenti posizionali, pertanto è possibile eseguirlo come illustrato di seguito:

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

Il primo argomento, README.doc, sostituisce %1 quando ogni riga viene interpretata. C5087 viene sostituito con %2.

Nota

Nel file di comando entrambi gli argomenti posizionali sono racchiusi tra virgolette doppie in quanto i valori sostituiti possono contenere spazi (ad esempio, un nome file o una specifica della versione della data).

Il formato del file di comando può essere descritto dal formato esteso EBNF (Extended Backus-Naur Form):

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 può essere qualsiasi comando tf valido, come get, workfold e workspace.

  • tf option può essere qualsiasi opzione tf valida, come -login, -profile e -format.

  • tf free argument può essere qualsiasi stringa che serve come argomento libero per tf, ad esempio un percorso server e un percorso locale.

  • positional argument è un segnaposto per il testo sostituito dagli argomenti della riga di comando esterno tf. Il numero è un intero positivo che corrisponde all'indice dell'argomento della riga di comando che si desidera sostituire, ad esempio "%1" e "%2". %1 fa riferimento al primo argomento. È possibile utilizzare argomenti posizionali come opzioni o argomenti liberi e in qualsiasi ordine dopo il comando.

Nota

Utilizzare le virgolette doppie per racchiudere le opzioni e gli argomenti contenenti spazi. Ad esempio, utilizzare “-version:LRelease 2.1” per un identificatore dell'etichetta, “$/Inventory/Client Project/main.c” per un argomento libero e "%1 " per un argomento posizionale che può contenere spazi. Solo le virgolette doppie denotano i limiti dell'opzione nei file di comandi. Le virgolette singole vengono interpretate letteralmente. Per specificare le virgolette doppie letterali nella riga azione, è necessario utilizzare due virgolette doppie (""). Le virgolette delle regole nei file di comando può differire dalle regole che utilizza la shell perché la shell non analizza le righe nel file di comando.

Vantaggi e svantaggi dei due metodi

Quale metodo si deve quindi utilizzare, l'automazione esterna o interna? Esaminiamo i vantaggi e gli svantaggi di ogni metodo:

Automazione esterna

Automazione esterna

Vantaggi

  • È più flessibile perché può eseguire non solo i comandi tf, ma anche altri.

  • È semplice. Se si ha familiarità con il processo o il linguaggio esterno, si richiama lo strumento da riga di comando tf come qualsiasi altro processo da riga di comando.

  • È facile eseguire il debug. Se alcuni comandi non funzionano come previsto, non è necessario modificarli nella riga di comando per eseguire la diagnosi dei problemi.

  • È più veloce del metodo esterno. Poiché la macchina virtuale Java viene caricata una sola volta e lo strumento da riga di comando può riutilizzare le sue connessioni, è possibile eseguire più comandi in un file di comando più rapidamente rispetto all'esecuzione separata di ogni comando.

Cons

  • È più lento dell'automazione interna. Per ogni comando eseguito, la CPU deve impiegare del tempo avviando la macchina virtuale Java e preparando l'esecuzione del client.

  • Il processo esterno deve rilevare gli errori. Se il processo esterno non verifica il codice di uscita di ogni esecuzione, è possibile che un errore non venga identificato dal processo.

  • Può essere più complesso da pianificare. Il processo esterno deve fornire tutte le opzioni pertinenti ogni volta che viene eseguito lo strumento da riga di comando tf e gli argomenti possono richiedere l'uso speciale di virgolette e di caratteri di escape.

È meno flessibile rispetto all'automazione esterna. Di seguito viene illustrato perché:

  • È possibile specificare solo i comandi tf nel file di comando, pertanto potrebbe essere necessario scrivere ed eseguire più file di comando se si desidera eseguire altre attività tra un comando tf e l'altro.

  • L'esecuzione si arresta alla prima condizione di errore rilevata. Non è possibile imporre lo strumento per ignorare o ignorare alcuna condizione di errore.

  • È possibile che si occupa del normale o l'output di errore è più complesso. Un processo che esegue lo strumento con automazione interna potrebbe non essere in grado di determinare la riga nel file di comando che ha prodotto la porzione dell'output normale.

Vedere anche

Altre risorse

Command-line Reference (Team Explorer Everywhere)