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“.
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.
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.