Anhang D. TortoiseSVN automatisieren

Inhaltsverzeichnis

TortoiseSVN-Befehle
Tsvncmd-URL-Behandlung
TortoiseIDiff-Befehle
TortoiseUDiff-Befehle

Da alle Befehle von TortoiseSVN über Kommandozeilenparameter beeinflusst werden können, haben Sie die Möglichkeit, automatische Prozesse mit Batch-Skripten zu erstellen oder Dialoge aus anderen Programmen (z. B. Ihrem Lieblingseditor) heraus aufzurufen.

Wichtig

Beachten Sie, dass TortoiseSVN eine graphische Anwendung ist und dass diese Automatisierungsanleitung Ihnen erklärt, wie man die Dialoge von TortoiseSVN zur Abfrage von Benutzereingaben verwendet. Wenn Sie ein Skript schreiben wollen, das keine Eingaben erfordert, sollten Sie dafür das offizielle Subversion-Kommandozeilenprogramm verwenden.

TortoiseSVN-Befehle

Das TortoiseSVN-GUI-Programm heißt TortoiseProc.exe. Alle Befehle werden in der Form /command:abcd angegeben, wobei abcd der - erforderliche - Befehlsname ist. Die meisten Befehle benötigen zumindest einen Parameter, der in der Form /path:"some\path" übergeben wird. In der folgenden Tabelle bezieht sich der Befehl auf den Parameter /command:abcd und der Pfad auf den Parameter /path:"some\path".

Es gibt einen besonderen Befehl, der den Parameter /command:abcd nicht benötigt, sondern stattdessen den Projektmonitor startet, wenn nichts auf der Befehlszeile übergeben wird. Mit der Option /tray startet der Projektmonitor verborgen als Symbol im Windows-Benachrichtigungsbereich.

Da einige Befehle eine Liste von Zielpfaden akzeptieren (z. B. Übertragen mehrerer Dateien), kann der Parameter /path mehrere, durch * getrennte Pfade enthalten.

Sie können auch eine Datei angeben, die eine durch Zeilenumbrüche getrennte Liste von Pfaden enthält. Die Datei muss im UTF-16-Format ohne eine BOM sein. Um eine solche Datei anzugeben, verwenden Sie /pathfile anstelle von /path. Damit TortoiseSVN die Datei nach Beendigung des Befehls löscht, übergeben Sie den Parameter /deletepathfile. Wenn Sie /deletepathfile nicht angeben, müssen Sie die Datei anschließend selbst löschen.

Der Fortschrittsdialog, der für Übertragungen, Aktualisierungen und viele weitere Aktionen verwendet wird, bleibt normalerweise geöffnet, nachdem die Aktion beendet ist, bis der Anwender die Schaltfläche OK betätigt. Dieses Verhalten kann durch Auswahl der entsprechenden Option in den Einstellungen verändert werden. Die Verwendung dieser Einstellung wird den Dialog, unabhängig davon, ob der Befehl aus dem TortoiseSVN-Kontextmenü oder aus einer Batchdatei heraus aufgerufen wurde, schließen.

Um einen anderen Ort für die Konfigurationsdatei anzugeben, verwenden Sie den Parameter /configdir:"path\to\config\dir". Dies überschreibt alle Vorgaben, auch die aus der Registrierung.

Um den Fortschrittsdialog am Ende einer Aktion automatisch zu schließen, ohne die Standardeinstellung zu berücksichtigen, können Sie den Parameter /closeonend übergeben.

  • /closeonend:0 Den Dialog nicht automatisch schließen.

  • /closeonend:1 Schließen, wenn keine Fehler aufgetreten sind.

  • /closeonend:2 Schließen, wenn keine Fehler und Konflikte aufgetreten sind.

  • /closeonend:3 Schließen, wenn keine Fehler, Konflikte und Zusammenführungen aufgetreten sind.

. Um den Fortschrittsdialog für lokale Operationen zu schließen, wenn keine Fehler, Konflikte und Zusammenführungen aufgetreten sind, übergeben Sie den Parameter /closeforlocal.

Die untenstehende Tabelle listet alle Befehle, die mittels TortoiseProc.exe ausgeführt werden können. Wie oben beschrieben, müssen sie in der Form /command:abcd aufgerufen werden. In der Tabelle wird der Präfix /command weggelassen, um Platz zu sparen.

Tabelle D.1. Liste der Befehle und Parameter

BefehlBeschreibung
:aboutÖffnet den Über TortoiseSVN-Dialog. Dies ist das Standardverhalten, wenn kein Befehl angegeben wird.
:log

Öffnet den Log-Dialog. Die Option /path legt die Datei oder den Ordner fest, für den der Log-Dialog angezeigt werden soll. Weitere Optionen können mit <placeholder-1> definiert werden.</placeholder-1>

An svn date revision can be in one of the following formats:

  • {2006-02-17}

  • {15:30}

  • {15:30:00.200000}

  • {"2006-02-17 15:30"}

  • {"2006-02-17 15:30 +0230"}

  • {2006-02-17T15:30}

  • {2006-02-17T15:30Z}

  • {2006-02-17T15:30-04:00}

  • {20060217T1530}

  • {20060217T1530Z}

  • {20060217T1530-0500}

:checkoutÖffnet den Auschecken-Dialog. /path legt das Zielverzeichnis fest, /url definiert die URL, von der ausgecheckt werden soll. Wenn Sie den Schlüssel /blockpathadjustments angeben, wird die automatische Anpassung des Auscheckpfades blockiert. Der /revision:XXX gibt die auszucheckende Revision an.
:importÖffnet den Import-Dialog. Der /path gibt das Verzeichnis mit den zu importierenden Daten an. Sie können mit dem /logmsg eine Logmeldung übergeben oder, wenn Sie das nicht per Kommandozeile tun wollen, /logmsgfile:path verwenden, wobei path auf eine Datei zeigt, die die Logmeldung enthält.
:updateAktualisiert die Arbeitskopie in /path auf HEAD. Mit der Option /rev wird ein Dialog angezeigt, in dem vom Anwender die Zielrevision abgefragt wird. Um den Dialog zu vermeiden, geben Sie in /rev:1234 die Revisionsnummer an. Weitere Optionen sind /nonrecursive, /ignoreexternals und /includeexternals. Der /stickydepth sorgt dafür, dass die angegebene Tiefe bestehen bleibt und eine dünn besetzte Arbeitskopie angelegt wird. Mit /skipprechecks werden alle Prüfungen vor einer Aktualisierung übersprungen. Dadurch werden auch die Schaltfläche Zeige Log und das Kontextmenü für Vergleiche nach der Aktualisierung deaktiviert.
:commitÖffnet den Übertragen-Dialog. Der /path gibt das Zielverzeichnis oder die Liste der zu übertragenden Dateien an. Sie können mit Hilfe des Parameters /logmsg eine Logmeldung übergeben oder, wenn Sie das nicht per Kommandozeile tun wollen, /logmsgfile:path verwenden, wobei path auf eine Datei zeigt, die die Logmeldung enthält. Wenn Sie ein Fehlerverfolgungssystem nutzen, können Sie das Eingabefeld für die Fehler-ID mittels /bugid:"Hier liegt der Fehler" vorbelegen.
:addFügt die Datei(en) in /path der Versionskontrolle hinzu.
:revertMacht lokale Änderungen in der Arbeitskopie rückgängig. Der /path gibt die Objekte an.
:cleanupBereinigt die Arbeitskopie in /path nach unterbrochenen oder abgebrochenen Operationen und entsperrt sie. Außerdem muss /cleanup übergeben werden, um das Bereinigen tatsächlich durchzuführen. Mittels /noui sorgen Sie dafür, dass der Ergebnisdialog, der entweder eine Fehlermeldung oder den Erfolg des Bereinigens anzeigt, nicht angezeigt wird. /noprogressui deaktiviert darüber hinaus den Fortschrittsdialog. /nodlg den Dialog, in dem der Anwender wählen kann, was genau bereinigt werden soll. Die verfügbaren Optionen können mittels /cleanup zum Bereinigen, /breaklocks zum Aufbrechen aller Sperren, /revert zum Zurücknehmen nicht übertragener Änderungen, /delunversioned, /delignored, /refreshshell, /externals, /fixtimestamps und /vacuum übergeben werden.
:resolveMarkiert den Konflikt der in /path angegebenen Datei als gelöst. Bei Angabe von /noquestion wird der Konflikt ohne Rückfrage aufgelöst.
:repocreateErstellt ein Projektarchiv in /path
:switchÖffnet den Wechseln zu-Dialog. /path legt das Zielverzeichnis fest und /url definiert die URL, zu der gewechselt werden soll.
:exportExportiert die Arbeitskopie in /path in ein anderes Verzeichnis. Wenn /path auf ein nicht versioniertes Verzeichnis zeigt, wird ein Dialog angezeigt, der eine URL erfragt, die in das in /path angegebene Verzeichnis exportiert wird. Wenn Sie den Schlüssel /blockpathadjustments angeben, wird die automatische Anpassung des Exportpfades blockiert.
:dropexportExportiert die Arbeitskopie in /path in das in /droptarget angegebene Verzeichnis. Dieser Export verwendet nicht den Dialog, sondern wird direkt ausgeführt. Mit der Option /overwrite legen Sie fest, dass vorhandene Dateien ohne Rückfrage überschrieben werden. Die Option /autorename bedeutet, dass exportierte Dateien im Konfliktfall umbenannt werden, damit vorhandene Dateien nicht überschrieben werden. Option /extended hat die Parameter localchanges, mit dem nur lokal veränderte Objekte exportiert werden, und unversioned, mit dem zusätzlich alle nicht versionierten Objekte exportiert werden.
:dropvendorKopiert den Ordner in /path rekursiv in das in /droptarget angegebene Verzeichnis. Neue Dateien werden automatisch hinzugefügt. Fehlende Dateien werden in der Zielarbeitskopie entfernt, um sicherzustellen, dass Quelle und Ziel identisch sind. Geben Sie /noui an, um den Bestätigungsdialog zu überspringen, und /noprogressui, um auch die Anzeige des Fortschrittsdialogs zu deaktivieren.
:mergeÖffnet den Zusammenführen-Dialog. Der /path definiert den Zielordner. Zum Zusammenführen eines Revisionsbereichs stehen die folgenden Optionen zur Verfügung: /fromurl:URL, /revrange:string. Zum Zusammenführen zweier Bäume stehen folgende Optionen zur Verfügung: /fromurl:URL, /tourl:URL, /fromrev:xxx und /torev:xxx.
:mergeallÖffnet den Alle Zusammenführen-Dialog. Der /path bezeichnet das Zielverzeichnis.
:copyÖffnet den Verzweigen/Markieren-Dialog. Der /path gibt die Arbeitskopie an. Der /url ist die Ziel-URL. Wenn die URL mit einem ^ beginnt, wird sie relativ zur Wurzel des Projektes betrachtet. Sie können die Option Wechselt die Arbeitskopie zum neuen Zweig / zur neuen Marke gleich aktivieren, indem Sie den Parameter /switchaftercopy mit übergeben. Um die Option Zwischenordner erstellen zu aktivieren, können Sie den Parameter /makeparents mit übergeben. Sie können mit dem Parameter /logmsg eine Logmeldung übergeben oder, wenn Sie das nicht per Kommandozeile tun wollen, /logmsgfile:path verwenden, wobei path auf eine Datei zeigt, die die Logmeldung enthält.
:settingsÖffnet den Einstellungsdialog.
:removeEntfernt die Datei(en) in /path aus der Versionskontrolle.
:renameBenennt die Datei in /path um. Der neue Dateiname wird über einen Dialog abgefragt. Um die Frage nach dem Umbenennen ähnlicher Dateien in einem Schritt zu umgehen, übergeben Sie /noquestion.
:diffStartet das externe, in den TortoiseSVN-Einstellungen angegebene Vergleichsprogramm. Der /path spezifiziert die erste Datei. Bei Angabe von /path2 werden diese beiden Dateien verglichen. Ohne Angabe von /path2 wird die Datei in /path mit ihrer BASE-Revision verglichen. Wenn die Datei obendrein Eigenschaftsänderungen hat, wird das Vergleichsprogramm auch für jede geänderte Eigenschaft gestartet. Um das zu vermeiden, übergeben Sie den Parameter /ignoreprops. Um die Revisionsnummern vorzugeben, verwenden Sie /startrev:xxx und /endrev:xxx sowie für die optionale fixe Revision /pegrevision:xxx. Wenn /blame, aber nicht /path2 angegeben ist, wird der Vergleich durchgeführt, indem zunächst die Dateien in den gegebenen Revisionen annotiert werden. Der Parameter /line:xxx gibt die Zeile an, in die beim Anzeigen des Vergleichs gesprungen werden soll.
:shelveStellt die gewählten Pfade in einer neuen Ablage zurück. Parameter/shelfname:name legt den Namen der Ablage fest. Eine optionale Logmeldung kann mit /logmsg:message angegeben werden. Mit der Option /checkpoint werden die lokalen Änderungen beibehalten.
:unshelveWendet die Ablage mit dem Namen /shelfname:name auf den Pfad der Arbeitskopie an. Standardmäßig wird die neueste Version der Ablage verwendet, aber Sie können mit /version:X eine Version auswählen.
:showcompare

Abhängig von den URLs und den zu vergleichenden Revisionen wird entweder ein Standard-Diff (wenn die Option unified gesetzt ist), ein Dialog mit einer Liste der geänderten Dateien oder, wenn die URLs auf Dateien zeigen, das Vergleichsprogramm mit diesen Dateien angezeigt.

Die Optionen url1, url2, revision1 und revision2 müssen angegeben werden. Die Optionen pegrevision, ignoreancestry, blame und unified sind optional.

Falls die angegebene URL obendrein Eigenschaftsänderungen hat, wird das Vergleichsprogramm auch für jede geänderte Eigenschaft gestartet. Um das zu vermeiden, übergeben Sie den Parameter /ignoreprops.

Wenn ein Standard-Diff angefordert wird, kann eine optionale Quelltextformatierungs-Option angegeben werden, die die Zusammenführen-Info-Eigenschaften in einem benutzerfreundlicheren Format anzeigt.

:conflicteditorStartet den in der TortoiseSVN-Einstellungen angegebenen Konflikteditor mit der konfliktbehafteten Datei in /path.
:relocateZeigt den Umplatzieren-Dialog. Der /path bezeichnet die umzuplatzierende Arbeitskopie.
:helpÖffnet die Hilfedatei.
:repostatusÖffnet den Auf Änderungen prüfen-Dialog. /path legt die Arbeitskopie fest. Wenn /remote angegeben wird, kontaktiert der Dialog beim Start das Projektarchiv, als ob der Anwender auf Projektarchiv prüfen geklickt hätte.
:repobrowser

Startet den Projektarchivbetrachter in der URL der Arbeitskopie, die in /path angegeben ist, oder /path zeigt direkt auf eine URL.

Eine zusätzliche Option /rev:xxx kann verwendet werden, um die Revision anzugeben, die der Projektarchivbetrachter anzeigen soll. Wenn die/rev:xxx fehlt, wird als Standardwert HEAD verwendet.

Wenn /path auf eine URL zeigt, enthält /projectpropertiespath:path/to/wc den Pfadnamen, aus dem die Projekteigenschaften gelesen werden sollen.

Wenn /outfile:path\to\file angegeben ist, wird die gewählte URL und Revision in die angegebene Datei geschrieben, sobald der Projektarchivbetrachter geschlossen wird. Die erste Zeile darin enthält die URL, die zweite die Revision.

:ignoreFügt alle Objekte in /path zur Ignorierliste hinzu, das heißt, für alle Objekte wird die svn:ignore-Eigenschaft gesetzt.
:blame

Öffnet den Annotieren-Dialog mit der in /path angegebenen Datei.

Wenn die Optionen /startrev und /endrev angegeben sind, wird der Dialog zur Abfrage des Revisionsbereiches nicht angezeigt, sondern die angegebenen Revisionen verwendet.

Wenn die Option /line:nnn angegeben ist, wird TortoiseBlame die Datei in dieser Zeile positionieren.

Die Optionen /ignoreeol, /ignorespaces und /ignoreallspaces werden ebenfalls unterstützt.

:catSpeichert eine Datei von einer /path angegebenen Arbeitskopie oder URL an der in /savepath:path spezifizierten Stelle. Eine Revision kann in /revision:xxx angegeben werden, um eine Datei in einer bestimmten Revision zu holen.
:createpatchErstellt eine Patchdatei für den in /path angegebenen Pfad. Um den Dialog "Speichern unter" zu überspringen, können Sie den Pfad /savepath:path angeben, in dem die Patchdatei direkt gespeichert werden soll. Übergeben Sie /noview, um zu verhindern, dass der Standard-Diff-Betrachter die Patchdatei anzeigt. Wenn ein Standard-Diff angefordert wird, kann eine Option Quelltextformatierung angegeben werden, die die Zusammenführen-Info-Eigenschaften in einem benutzerfreundlicheren Format anzeigt.
:revisiongraph

Zeigt den Revisionsgraphen für den in /path angegebenen Pfad.

Um ein Bild des Revisionsgraphen für einen bestimmten Pfad zu erstellen, ohne den Graphen im Fenster anzuzeigen, übergeben Sie mittels /output:path den Pfad zur Ausgabedatei. Die Ausgabedatei muss eine Erweiterung mit einem Bildtypen haben, den der Revisionsgraph auch erstellen kann. Diese sind: .svg, .wmf, .png, .jpg, .bmp und .gif.

Da der Revisionsgraph viele Optionen hat, die sein Aussehen beeinflussen, können Sie diese auch verwenden, wenn Sie das Ausgabebild erzeugen. Übergeben Sie die Optionen mittels /options:XXXX, wobei XXXX ein Dezimalwert ist. Die beste Methode, um die nötigen Optionen zu ermitteln, besteht darin, den Revisionsgraphen auf die übliche Art zu starten, alle Ansichtsoptionen einzustellen und den Graphen zu schließen. Die Kommandozeilenparameter finden Sie dann in der Registrierung unter HKCU\Software\TortoiseSVN\RevisionGraphOptions.

:lockSperrt eine oder alle Dateien im in /path angegebenen Verzeichnis. Der Sperren-Dialog wird angezeigt, damit der Anwender einen Kommentar für die Sperre eingeben kann.
:unlockEntsperrt eine oder alle Dateien in einem in /pathangegebenen Verzeichnis.
:rebuildiconcacheRekonstruiert den Windows-Symbolspeicher. Verwenden Sie diese Funktion nur, wenn die Windows-Symbole beschädigt sind. Ein (nicht vermeidbarer) Seiteneffekt dieser Aktion ist, dass die Desktopsymbole neu arrangiert werden. /noquestion.
:properties

Zeigt den Eigenschaftsdialog für den in /path angegebenen Pfad.

Für versionierte Eigenschaften ist für diesen Befehl eine Arbeitskopie erforderlich.

Revisionseigenschaften können angezeigt/geändert werden, wenn /path eine URL und rev:xxx angegeben ist.

Um den Dialog direkt für eine bestimmte Eigenschaft zu öffnen, übergeben Sie den Namen der Eigenschaft in der Form /property:name.

:sync

Exportiert oder importiert die Einstellungen wie angegeben oder abhängig davon, ob die aktuellen oder die exportierten Einstellungen neuer sind.

Wenn mittels /path ein Pfad übergeben wird, wird dieser verwendet, um dort die Einstellungen zu lesen oder zu speichern.

Der Parameter /askforpath zeigt den Dialog 'Datei öffnen/speichern' an, in dem der Anwender den Export-/Import-Pfad auswählen kann.

Wenn weder die Option /load noch /save angegeben wird, bestimmt TortoiseSVN anhand des Dateidatums, ob die Einstellungen exportiert oder importiert werden sollen. Wenn die exportierte Datei neuer ist als die aktuellen Einstellungen, wird importiert, ansonsten exportiert.

Mit der Option /load werden die Einstellungen importiert.

Mit der Option /save werden die Einstellungen exportiert.

Der Parameter /local erzwingt, dass lokale Einstellungen, z. B. lokale Pfadnamen, im Export enthalten sind.


Beispiele (die auf einer Zeile eingegeben werden sollten):

TortoiseProc.exe /command:commit
                 /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt"
                 /logmsg:"test log message" /closeonend:0

TortoiseProc.exe /command:update /path:"c:\svn_wc\" /closeonend:0

TortoiseProc.exe /command:log /path:"c:\svn_wc\file1.txt"
                 /startrev:50 /endrev:60 /closeonend:0