Erstellen von Skripts auf dem plattformübergreifenden Befehlszeilenclient für Team Foundation Server

Möchten Sie gerne Aufgaben automatisieren, beispielsweise das Einchecken und Auschecken von Quellcode? Zu diesem Zweck können Sie entweder die externe oder die interne Automatisierung verwenden. Zunächst untersuchen wir diese beiden Automatisierungsmodi. Oder, können Sie direkt zu Vor- und Nachteile fortfahren.

Externe Automatisierung

Die externe Automatisierung konfiguriert einen anderen Prozess, der jedes Mal wieder das tf-Befehlszeilentool mit vollständig kontextbezogenen Argumenten aufruft. Zum Aktivieren dieses Modus ist keine spezielle Syntax erforderlich. Sie können einen der folgenden externen Prozesse verwenden, um diese Methode zu implementieren:

  • Eine Unix-Shell, beispielsweise sh, ksh, bash oder csh

  • Perl oder eine andere Programmiersprache, die für die Skripterstellung verwendet wird

  • Apache Ant oder ein anderes buildorientiertes Tool

  • Jedes andere Tool, das das tf-Programm starten und Argumente bereitstellen kann

Interne Automatisierung

Bei der internen Automatisierung wird das tf-Befehlszeilentool so konfiguriert, dass es den Automatisierungsprozess steuert und eine Befehlsdatei interpretiert, die als Argument übergeben wird. Sie können die interne Automatisierung aufrufen, indem Sie für eine Befehlsdatei das @-Zeichen unmittelbar gefolgt von einem lokalen Pfad angeben. Alle zusätzlichen Argumente, die Sie in dieser Befehlszeile bereitstellen, sind für die Befehle in der Befehlsdatei als Positionsargumente verfügbar.

Hinweis

Um die Standardeingabe als die Befehlsdatei zu verarbeiten, geben Sie das @-Zeichen ohne einen darauf folgenden Dateinamen an (tf@).Der Eingabestream wird entsprechend der Standardcodierung und dem Zeichensatz der Plattform als Text interpretiert.

Die folgenden Befehlsdatei ruft die angegebene Version einer Datei ab und gibt ausführliche Versionsinformationen zu dieser Version aus.

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

Die Befehlsdatei mit dem Namen /home/john/get-and-history.tfc erwartet zwei Positionsargumente, sodass Sie sie wie im folgenden Beispiel gezeigt ausführen können:

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

Das erste Argument, README.doc, ersetzt %1, wenn die einzelnen Zeilen interpretiert werden. %2 wird durch C5087 ersetzt.

Hinweis

In der Befehlsdatei werden beide Positionsargumente in doppelte Anführungszeichen eingeschlossen, da die dafür eingesetzten Werte möglicherweise Leerzeichen enthalten (beispielsweise ein Dateiname oder eine Datumsversionsspezifikation).

Das Format der Befehlsdatei kann durch die erweiterte Backus-Naur Form (EBNF) beschrieben werden:

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 kann jeder gültige tf-Befehl sein, beispielsweise get, workfold oder workspace.

  • tf option kann jede gültige tf-Option sein, beispielsweise -login, -profile oder -format.

  • tf free argument kann jede Zeichenfolge sein, die nicht als freies Argument für tf vorgesehen ist, beispielsweise ein Serverpfad oder ein lokaler Pfad.

  • positional argument ist ein Platzhalter für Text, der über die äußeren tf-Befehlszeilenargumente ersetzt wird. Die Zahl ist eine positive ganze Zahl, die dem Index des zu ersetzenden Befehlszeilenarguments entspricht, beispielsweise "%1" oder "%2". %1 verweist auf das erste Argument. Sie können Positionsargumente als Optionen oder freie Argumente in beliebiger Reihenfolge nach dem Befehl verwenden.

Hinweis

Setzen Sie Optionen und Argumente, die Leerzeichen enthalten, in doppelte Anführungszeichen.Verwenden Sie beispielsweise “-version:LRelease 2.1” für einen Bezeichnungsspezifizierer, “$/Inventory/Client Project/main.c” für ein freies Argument und "%1" für ein Positionsargument, das möglicherweise Leerzeichen enthält.In den Befehlsdateien werden Optionsgrenzen nur durch doppelte Anführungszeichen angegeben.Einzelne Anführungszeichen werden als solche interpretiert.Um ein echtes doppeltes Anführungszeichen in der Aktionszeile anzugeben, müssen Sie zwei doppelte Anführungszeichen nacheinander verwenden ("").Die Regeln für die Verwendung von Anführungszeichen in Befehlsdateien unterscheiden sich möglicherweise von den Regeln, die die Shell verwendet, da die Shell die Zeilen in der Befehlsdatei nicht analysiert.

Vor- und Nachteile der beiden Methoden

Welche Methode sollten Sie also verwenden – die externe oder die interne Automatisierung? Dies sind die Vor- und Nachteile der beiden Methoden:

Externe Automatisierung

Interne Automatisierung

Vorteile

  • Sie bietet mehr Flexibilität, da sie nicht nur tf-Befehle, sondern auch andere Befehle ausführen kann.

  • Es ist eine einfache Methode. Wenn Sie sich mit dem externen Prozess oder der Sprache auskennen, können Sie das tf-Befehlszeilentool auf die gleiche Weise wie jeden anderen Befehlszeilenprozess aufrufen.

  • Das Debuggen ist einfach. Wenn einige Befehle nicht so ausgeführt werden, wie erwartet, müssen Sie die Befehle nicht an der Befehlszeile ändern, um die Probleme zu diagnostizieren.

  • Sie ist schneller als der externe Methode. Da die Java VM nur einmal geladen wird und das Befehlszeilentool die Verbindungen mit dem Server wiederverwenden kann, können Sie mehrere Befehle in einer Befehlsdatei schneller ausführen, als wenn Sie jeden Befehl separat ausführen.

Cons

  • Sie ist langsamer als die interne Automatisierung. Für jeden Befehl, der ausgeführt wird, benötigt die CPU Zeit, um die Java VM zu starten und das Ausführen des Clients vorzubereiten.

  • Der externe Prozess muss Fehler erkennen. Wenn der externe Prozess nicht den Exitcode jeder Ausführung testet, erfasst der Vorgang möglicherweise nicht alle Fehler.

  • Die Programmierung kann aufwändiger sein. Der externe Prozess muss bei jeder Ausführung des tf-Befehlszeilentools alle relevanten Optionen bereitstellen, und für die Argumente sind möglicherweise gesonderte Anführungszeichen oder Escapezeichen erforderlich.

Sie ist nicht so flexibel wie die externe Automatisierung. Dies sind die Gründe:

  • Sie können in der Befehlsdatei nur tf-Befehle angeben, daher müssen Sie möglicherweise mehrere Befehlsdateien schreiben und jede davon einzeln ausführen, wenn Sie zwischen tf-Befehlen andere Aufgaben ausführen möchten.

  • Die Ausführung hält beim ersten Fehlerzustand an, den Sie finden. Sie können nicht erzwingen, dass das Tool einen Fehlerzustand überspringt oder ignoriert.

  • Sie stellen möglicherweise fest, dass das Behandeln der normalen Ausgabe oder der Fehlerausgabe komplizierter ist. Ein Prozess, der das Tool mit interner Automatisierung ausführt, kann möglicherweise nicht feststellen, welche Zeile der Befehlsdatei eine bestimmte Zeile der normalen Ausgabe erzeugt.

Siehe auch

Weitere Ressourcen

Command-line Reference (Team Explorer Everywhere)