Der Kommandozeilen-Client von Subversion: svn

Um den Kommandozeilen-Client zu benutzen, geben Sie das Folgende ein: svn, den Unterbefehl, den Sie verwenden wollen [53] und etwaige Optionen oder die Objekte, auf denen Sie die Operation anwenden wollen – der Unterbefehl und die Optionen müssen nicht in einer bestimmten Reihenfolge angegeben werden. Beispielsweise sind alle folgenden Eingaben gültig, um svn status aufzurufen:

$ svn -v status
$ svn status -v 
$ svn status -v myfile

Jede Menge weiterer Beispiele zur Verwendung der meisten Client-Befehle finden Sie in Kapitel 2, Grundlegende Benutzung, Befehle zur Bearbeitung von Eigenschaften in „Eigenschaften“.

svn-Optionen

Obwohl Subversion verschiedene Optionen für seine Unterbefehle hat, existieren alle Optionen in einem einzigen Namensraum – dass heißt, dass alle Optionen dasselbe bedeuten, egal mit welchem Unterbefehl sie angegeben werden. Beispielsweise bedeutet --verbose (-v) stets ausführliche Ausgabe, unabhängig vom Unterbefehl, dem diese Option mitgegeben wird.

Der Kommandozeilen-Client svn bricht normalerweise sofort mit einer Fehlermeldung ab, falls Sie ihm eine Option mitgeben, die nicht auf den angegebenen Unterbefehl anwendbar ist. Seit Subversion 1.5 jedoch werden viele Optionen, die auf alle – oder fast alle – Unterbefehle anwendbar sind, von allen Unterbefehlen akzeptiert, auch wenn sie für einige keine Auswirkungen haben. In den Anwendungshinweisen des Kommandozeilen-Clients werden diese Optionen als globale Optionen zusammengefasst. Dies wurde zur Unterstützung derjenigen gemacht, die Skripte schreiben, die den Kommandozeilen-Client umhüllen. Die globalen Optionen sind die folgenden:

--config-dir DIR

Weist Subversion an, Konfigurationsinformationen aus dem angegebenen Verzeichnis zu lesen, statt aus dem Standardverzeichnis (.subversion im Heimatverzeichnis des Benutzers).

--no-auth-cache

Verhindert die Zwischenspeicherung von Authentisierungsinformationen (z.B. Benutzername und Passwort) in den Laufzeitkonfigurationsverzeichnissen von Subversion.

--non-interactive

Unterbindet sämtliche Nachfragen. Beispiele für solche Nachfragen sind Aufforderungen zur Eingabe von Zugangsdaten und Entscheidungen zur Konfliktauflösung. Dies ist nützlich, falls Sie Subversion innerhalb eines automatisierten Skriptes aufrufen und somit ein Abbruch mit Fehlermeldung angebrachter ist als eine Nachfrage.

--password PASSWD

Gibt das Passwort zur Authentisierung gegenüber einem Subversion-Server an. Falls es nicht mitgegeben wird oder falsch ist, fragt Subversion bei Bedarf nach.

--username NAME

Gibt den Benutzernamen zur Authentisierung gegenüber einem Subversion-Server an. Falls er nicht mitgegeben wird oder falsch ist, fragt Subversion bei Bedarf nach.

Der Rest der Optionen ist nur auf eine Teilmenge der Unterbefehle anwendbar und wird auch nur von einer Teilmenge der Unterbefehle akzeptiert. Diese sind:

--accept ACTION

Gibt eine Aktion zur automatischen Konfliktauflösung an. Mögliche Aktionen sind postpone, base, mine-full, theirs-full, edit und launch.

--auto-props

Ermöglicht Auto-Props, wobei die Anweisung enable-auto-props in der Datei config nichtig gemacht wird.

--change (-c) ARG

Wird verwendet, um sich auf eine bestimmte Änderung (also Revision) zu beziehen. Diese Option ist syntaktisch schöner als -r ARG-1:ARG.

--changelist ARG

Weist Subversion an, nur auf Elementen der Änderungsliste ARG zu arbeiten. Sie können diese Option mehrfach angeben, um Mengen aus Änderungslisten anzugeben.

--cl ARG

Ein Alias für die Option --changelist.

--depth ARG

Weist Subversion an, den Bereich einer Operation auf eine bestimmte Tiefe des Baums zu beschränken. ARG kann einen der Werte empty, files, immediates oder infinity annehmen.

--diff-cmd CMD

Dient der Angabe eines externen Programms zur Anzeige von Unterschieden zwischen Dateien. Wird svn diff ohne diese Option aufgerufen, verwendet es den eingebauten diff-Algorithmus von Subversion, der standardmäßig eine Ausgabe im unified-diff-Format erzeugt. Wenn Sie ein externes Programm verwenden wollen, benutzen Sie --diff-cmd. Sie können mit der Option --extensions Optionen an das externe Programm übergeben (mehr dazu später in diesem Kapitel).

--diff3-cmd CMD

Gibt ein externes Programm zum Zusammenführen von Dateien an.

--dry-run

Simuliert alle Stufen einer Befehlsausführung, nimmt jedoch keine Änderungen vor – weder auf der Platte noch im Projektarchiv.

--editor-cmd CMD

Gibt ein externes Programm zum Editieren einer Protokollnachricht oder eines Eigenschafts-Wertes an. Zum Angeben eines Standardeditors siehe den Abschnitt editor-cmd in „Config“.

--encoding ENC

Teilt Subversion mit, dass Ihre Protokollnachricht mit dem angegebenen Zeichensatz kodiert ist. Standard ist die sprachabhängige Locale Ihres Betriebssystems; Sie sollten die Kodierung angeben, wenn sie vom Standard abweicht.

--extensions (-x) ARGS

Gibt ein Argument oder mehrere Argumente an, die Subversion an ein externes diff-Programm weitergeben soll. Diese Option ist nur gültig, wenn sie den svn diff oder svn merge Befehlen mit der Option --diff-cmd mitgegeben wird. Falls Sie mehrere Argumente übergeben möchten, müssen alle in Anführungszeichen eingeschlossen werden (z.B. svn diff --diff-cmd /usr/bin/diff -x "-b -E").

--file (-F) FILENAME

Verwendet den Inhalt der benannten Datei für den angegebenen Befehl; verschiedene Unterbefehle interpretieren den Inhalt auf unterschiedliche Weise. Beispielsweise verwendet svn commit den Inhalt als Protokollnachricht, während svn propset ihn als Eigenschafts-Wert interpretiert.

--force

Erzwingt die Ausführung eines bestimmten Befehls oder einer Operation. Normalerweise hindert Sie Subversion daran, bestimmte Operationen auszuführen, doch können Sie Subversion mit dieser Option mitteilen ich weiß, was ich tue und bin mir aller möglichen Konsequenzen bewusst, also lass mich 'ran. Diese Option ist das programmtechnische Äquivalent dazu, bei eingeschaltetem Strom an den Leitungen herumzudoktern – wenn Sie nicht wissen, was Sie tun, bekommen Sie einen gehörigen Schlag.

--force-log

Erzwingt, dass ein zweifelhafter Parameter, der an die Optionen --message (-m) oder --file (-F) übergeben wird, als gültig akzeptiert wird. Standardmäßig erzeugt Subversion eine Fehlermeldung, falls Parameter für diese Optionen den Eindruck erwecken, sie seien stattdessen Ziele des Unterbefehls. Wenn Sie beispielsweise den Pfad einer versionierten Datei der Option --file (-F) übergeben, nimmt Subversion an, dass Sie einen Fehler gemacht haben, der Pfad als Zieldatei für die Operation gedacht war und Sie einfach vergessen haben, eine andere – unversionierte – Datei als Quelle Ihrer Protokollnachricht anzugeben. Um Ihre Absicht zu bestätigen und die Fehlermeldungen zu verhindern, übergeben Sie die Option --force-log an Unterbefehle, die Protokollnachrichten akzeptieren.

--help (-h oder -?)

Wird diese Option mit einem oder mehreren Unterbefehlen verwendet, zeigt es den eingebauten Hilfetext für jeden Unterbefehl an. Wird sie alleine verwendet, wird der allgemeine Hilfetext des Clients angezeigt.

--ignore-ancestry

Teilt Subversion mit, beim Ermitteln von Unterschieden die Abstammung zu ignorieren (allein der Inhalt von Pfaden wird berücksichtigt).

--ignore-externals

Teilt Subversion mit, Externals-Definitionen und die von ihnen verwalteten externen Arbeitskopien zu ignorieren.

--incremental

Erzeugt Ausgaben in einem Format, dass zum Verketten geeignet ist.

--keep-changelists

Teilt Subversion mit, Änderungslisten nach der Übergabe nicht zu löschen.

--keep-local

Erhält die lokale Kopie einer Datei oder eines Verzeichnisses (verwendet in Verbindung mit dem Befehl svn delete).

--limit (-l) NUM

Zeigt nur die ersten NUM Protokollnachrichten an.

--message (-m) MESSAGE

Zeigt an, dass Sie eine Protokollnachricht oder einen Sperrkommentar auf der Kommandozeile nach dieser Option angeben. Zum Beispiel:

$ svn commit -m "Sie schaffen es nicht bis Sonntag."
--new ARG

Verwendet ARG als das neuere Ziel (in Verbindung mit svn diff).

--no-auto-props

Verhindert Auto-Props, wobei die Anweisung enable-auto-props in der Datei config aufgehoben wird.

--no-diff-deleted

Verhindert, dass Subversion Unterschiede gelöschter Dateien anzeigt. Das Standardverhalten für gelöschte Dateien ist, dass svn diff die gleichen Unterschiede anzeigt, die Sie sähen, wenn Sie die Datei behalten aber ihren Inhalt gelöscht hätten.

--no-ignore

Zeigt Dateien in der Statusliste, die normalerweise nicht angezeigt würden, da deren Name auf ein Muster passt, dass in der Konfigurationsoption global-ignores oder der Eigenschaft svn:ignore angegeben ist. Siehe „Config“ und „Ignorieren unversionierter Objekte“ für weitergehende Informationen.

--no-unlock

Teilt Subversion mit, Dateien nicht automatisch zu entsperren (das Standardverhalten nach der Übergabe ist es, alle Dateien, die übergeben wurden, zu entsperren). Siehe „Sperren“ für weitergehende Informationen.

--non-recursive (-N)

Abgeraten. Verhindert, dass ein Unterbefehl rekursiv auf Unterverzeichnisse angewendet wird. Die meisten Unterbefehle verhalten sich standardmäßig rekursiv, doch einige Unterbefehle – gewöhnlich diejenigen, die möglicherweise Ihre lokalen Änderungen entfernen oder rückgängig machen – arbeiten nicht rekursiv.

--notice-ancestry

Berücksichtigt beim Ermitteln von Unterschieden die Abstammung.

--old ARG

Verwendet ARG als das ältere Ziel (in Verbindung mit svn diff).

--parents

Erzeugt und fügt im Rahmen einer Operation nicht existierende oder unversionierte Elternverzeichnisse der Arbeitskopie oder dem Projektarchiv hinzu. Das ist nützlich, um automatisch mehrere Unterverzeichnisse zu erzeugen, wo aktuell keine existieren. Wenn es auf einen URL angewendet wird, werden alle Verzeichnisse bei einer einzigen Übergabe erzeugt.

--quiet (-q)

Fordert den Client auf, nur die wichtigsten Informationen beim Ausführen einer Operation auszugeben.

--record-only

Markiert Revisionen als zusammengeführt (zur Verwendung mit --revision).

--recursive (-R)

Veranlasst einen Unterbefehl, rekursiv Unterverzeichnisse zu durchlaufen. Die meisten Unterbefehle machen das standardmäßig.

--reintegrate

Bei Verwendung mit dem Unterbefehl svn merge werden alle Änderungen des Quell-URL mit der Arbeitskopie zusammengeführt. Für Details siehe „Einen Zweig synchron halten“.

--relocate FROM TO [PATH...]

Bei Verwendung mit dem Unterbefehl svn switch wird der Ort des Projektarchivs geändert, auf den sich Ihre Arbeitskopie bezieht. Das ist dann nützlich, wenn sich der Ort Ihres Projektarchivs ändert und Sie eine bestehende Arbeitskopie haben, die Sie weiterverwenden möchten. Für ein Beispiel siehe svn switch.

--remove ARG

Entfernt ARG aus einer Änderungsliste.

--revision (-r) REV

Zeigt an, dass Sie eine Revision (oder ein Revisionsintervall) für eine bestimmte Operation angeben. Sie können der Option dazu Revisionsnummern, Schlüsselworte oder Daten (innerhalb von geschweiften Klammern) als Argument übergeben. Wenn Sie ein Revisionsintervall angeben möchten, können Sie zwei durch einen Doppelpunkt getrennte Revisionen übergeben. Zum Beispiel:

$ svn log -r 1729
$ svn log -r 1729:HEAD
$ svn log -r 1729:1744
$ svn log -r {2001-12-04}:{2002-02-17}
$ svn log -r 1729:{2002-02-17}

Für weitere Informationen siehe „Revisions-Schlüsselworte“.

--revprop

Wirkt auf eine Revisions-Eigenschaft anstatt auf eine datei- oder verzeichnisspezifische Eigenschaft. Diese Option erfordert die Angabe einer Revision mit der Option --revision (-r).

--set-depth ARG

Setzt die Wirktiefe eines Verzeichnisses in der Arbeitskopie auf einen der Werte empty, files, immediates oder infinity.

--show-revs ARG

Verwendet, um svn mergeinfo mitzuteilen, dass merged (zusammengeführte) oder eligible (in Frage kommende) Revisionen angezeigt werden sollen.

--show-updates (-u)

Teilt dem Client mit, Informationen über die Dateien anzuzeigen, die in Ihrer Arbeitskopie nicht mehr dem neuesten Stand entsprechen. Hierdurch wird keine Ihrer Dateien aktualisiert – es wird nur angezeigt, welche Dateien aktualisiert würden, wenn Sie anschließend svn update verwendeten.

--stop-on-copy

Veranlasst einen Subversion-Unterbefehl, der die Geschichte einer versionierten Ressource durchläuft, mit der Sammlung der Daten aufzuhören, sobald eine Kopie – dass heißt, ein Ort in der Versionsgeschichte, der von einem anderen Ort des Projektarchivs kopiert wurde – angetroffen wird.

--strict

Veranlasst Subversion, eine strenge Semantik anzuwenden, ein ziemlich ungenaues Konzept, es sei denn, es betrifft bestimmte Unterbefehle (und zwar svn propget).

--targets FILENAME

Teilt Subversion mit, die Liste der Dateien auf die eine Operation angewendet werden soll aus der angegebenen Datei zu entnehmen, anstatt sie von der Kommandozeile zu lesen.

--use-merge-history (-g)

Zusätzliche Informationen aus der Geschichte der Zusammenführungen wird verwendet oder angezeigt.

--verbose (-v)

Fordert den Client auf, beim Ausführen eines Unterbefehls soviel Information auszugeben, wie er kann. Das kann dazu führen, dass Subversion zusätzliche Felder, detaillierte Informationen zu jeder Datei oder zusätzliche Informationen über seine Tätigkeiten ausgibt.

--version

Gibt die Versionsinformation des Clients aus. Diese Information umfasst nicht nur die Versionsnummer des Clients sondern auch eine Auflistung aller vom Client unterstützten Module für den Zugriff auf ein Subversion-Projektarchiv. Mit --quiet (-q) wird nur die Versionsnummer in Kurzform ausgegeben.

--with-all-revprops

In Verbindung mit der Option --xml von svn log werden alle Revisions-Eigenschaften abgerufen und in der Protokollausgabe angezeigt.

--with-revprop ARG

In Verbindung mit einem Befehl, der in das Projektarchiv schreibt, wird die Revisions-Eigenschaft, bei Verwendung des Formats NAME=VALUE, NAME auf den Wert VALUE gesetzt. In Verbindung mit svn log im --xml-Modus wird der Wert von ARG in der Protokollausgabe angezeigt.

--xml

Die Ausgabe erfolgt im XML-Format.

svn-Unterbefehle

Hier sind die verschiedenen Unterbefehle für das Programm svn. Der Kürze halber lassen wir die globalen Optionen (beschrieben in „svn-Optionen“) bei den folgenden Beschreibungen der Unterbefehle aus.



[53] Nun, Sie brauchen keinen Unterbefehl, um die Option --version zu verwenden, doch dazu gleich mehr.