Dieser Text befindet sich gegenwärtig in Bearbeitung, unterliegt ständigen Änderungen und kann dadurch nicht stets akkurat irgendeine freigegebene Version der Software Apache™ Subversion® beschreiben. Das Speichern dieser Seite als Lesezeichen oder andere auf diese Seite zu verweisen, ist keine so gute Idee. Besuchen Sie http://www.svnbook.com/, um stabile Versionen dieses Buchs zu erhalten.
svnmucc — Eine oder mehrere URL-basierte AKTIONen am Subversion-Projektarchiv vornehmen und das Ergebnis als eine (einzelne) neue Revision übertragen.
svnmucc
AKTION...
svnmucc ist ein Programm zum Ändern von
durch Subversion versionierter Daten, ohne dabei eine
Arbeitskopie zu verwenden. Es erlaubt die Ausführung von
Operationen direkt auf den Projektarchiv-URLs der Dateien und
Verzeichnisse, die der Anwender ändern möchte. Jeder Aufruf
von svnmucc versucht, eine oder mehrere
AKTION
en, wobei die Ergebnisse
dieser kombinierten ACTION
en atomar
als eine einzelne neue Revision übertragen werden.
svnmucc unterstützt die folgenden Aktionen (und damit zusammenhängende Argumente), die auf der Kommandozeile in geordneten Aneinanderreihungen kombiniert werden können:
REV
SRC-URL
DST-URL
Kopiere die Datei oder das Verzeichnis an der Stelle
SRC-URL
in Revision
REV
nach
DST-URL
.
URL
Erstelle ein neues Verzeichnis unter
URL
. Das Elternverzeichnis
von URL
muss bereits
existieren (oder durch eine frühere Aktion von
svnmucc erstellt worden sein), da
dieser Befehl es nicht erlaubt, automatisch fehlende
Zwischenverzeichnisse anzulegen.
SRC-URL
DST-URL
Verschiebe die Datei oder das Verzeichnis von
SRC-URL
nach
DST-URL
.
URL
Lösche die Datei oder das Verzeichnis bei
URL
.
SRC-FILE
URL
Hinzufügen einer neuen Datei – oder Ändern
einer existierenden – an der Stelle
URL
, wobei der Inhalt der
lokalen Datei SRC-FILE
als
Inhalt der Erstellten oder geänderten Datei verwendet
wird. Als Sonderfall kann
SRC-FILE
-
sein, was svnmucc dazu veranlasst,
von der Standardeingabe als aus einer lokalen Datei im
Dateisystem zu lesen.
NAME
VALUE
URL
Setzt den Wert der Eigenschaft
NAME
beim Zielobjekt
URL
auf VALUE
.
NAME
FILE
URL
Setzt den Wert der Eigenschaft
NAME
beim Zielobjekt
URL
auf den Inhalt der Datei
FILE
.
NAME
URL
Löscht die Eigenschaft NAME
vom Zielobjekt URL
.
Die in der Kommandozeile von svnmucc angegebenen Optionen sind global für alle Aktionen, die durch diese Kommandozeile ausgelöst werden. Im Folgenden eine Liste der von diesem Werkzeug unterstützten Optionen:
--config-dir
DIR
Konfigurationsinformationen aus dem angegebenen
Verzeichnis lesen, anstatt aus dem standardmäßigen Ort
(.subversion
im Heimatverzeichnis
des Anwenders.
--config-option
CONFSPEC
Setzt für die Dauer des Kommandos den Wert einer
Laufzeit-Konfigurationsoption.
CONFSPEC
ist eine
Zeichenkette, die von der Konfigurationsoption den
Namensraum, Namen und Wert angibt, den Sie zuweisen
möchten, im Format
DATEI
:ABSCHNITT
:OPTION
=[WERT
].
In dieser Syntax bedeuten
DATEI
und
ABSCHNITT
jeweils die
Laufzeit-Konfigurationsdatei (entweder
config
oder
servers
) und der Abschnitt darin, der
die Option beinhaltet, dessen Wert Sie ändern möchten.
OPTION
ist natürlich die
Option selbst und WERT
der
Wert (falls vorhanden), den Sie der Option zuweisen
möchten. Um beispielsweise vorübergehend die Verwendung
der Kompression im HTTP-Protokoll zu
unterbinden, verwenden Sie
--config-option=config:global:http-compression=no
.
Sie können diese Option mehrfach verwenden, um
gleichzeitig mehrere Optionswerte zu ändern.
--extra-args
(-X
)
ARGFILE
Zusätzliche Kommandozeilenargumente aus der Datei
ARGFILE
lesen, wobei ein
Argument pro Zeile angegeben ist. Als Sonderfall kann
ARGFILE
-
sein, um anzugeben, das zusätzliche
Argumente von der Standardeingabe zu lesen sind.
--file
(-F
)
MSGFILE
Den Inhalt der Datei
MSGFILE
als
Protokollnachricht für die Übertragung
verwenden.
--help
(-h
,
-?
)
Zeige den Programmaufruf, danach beenden.
--message
(-m
)
MSG
MSG
als
Protokollnachricht für die Übertragung
verwenden.
--no-auth-cache
Das Zwischenspeichern von Authentisierungsinformationen (etwa Anwendernamen und Passwort) in den Laufzeitkonfigurationsverzeichnissen von Subversion verhindern.
--non-interactive
Sämtliche interaktiven Rückfragen (etwa nach Zugangsdaten) unterbinden.
--revision
(-r
)
REV
Revision REV
als
Baseline-Revision für alle Änderungen durch die Aktionen
von svnmucc machen. Dies ist eine
wichtige Option, deren Verwendung sich Anwender
angewöhnen sollten, sobald sie existierende versionierte
Objekte ändern, um zu verhindern, dass ungewollt
zeitgleiche Änderungen von Kollegen rückgängig gemacht
werden.
--root-url
(-U
)
ROOT-URL
ROOT-URL
als Basis-URL
verwenden, zu denen alle anderen URL-Ziele relativ sind.
Dieser URL muss nicht der Wurzel-URL des Projektarchivs
sein (wie er etwa von svn info
angezeigt wird). Es kann irgend ein URL sein, den die
verschiedenen bei den
svnmucc-Aktionen angegebenen Ziele
gemein haben.
--password
(-p
)
PASSWD
PASSWD
als Passwort bei
der Authentisierung gegenüber einem Subversion-Server
verwenden. Wird es nicht angegeben oder ist es nicht
korrekt, wird Subversion gegebenenfalls
nachfragen.
--username
NAME
USERNAME
als
Anwendernamen bei der Authentisierung gegenüber einem
Subversion-Server verwenden. Wird er nicht angegeben
oder ist es nicht korrekt, wird Subversion
gegebenenfalls nachfragen.
--version
Die Versionsinformation des Programms anzeigen und beenden.
--with-revprop
NAME
=VALUE
Den Wert der Revisionseigenschaft
NAME
bei der übertragenen
Revision auf VALUE
setzen.
Um den Inhalt einer Datei (sicher) ohne eine Arbeitskopie zu ändern, verwenden Sie svn cat, um den aktuellen Inhalt der Datei anzufordern und svnmucc put, um den geänderten Inhalt davon zu übertragen.
$ # Ein paar Hilfsvariablen setzen. $ export FILEURL=http://svn.example.com/projects/sandbox/README $ export BASEREV=`svn info ${FILEURL} | \ grep '^Last Changed Rev' | cut -d ' ' -f 2` $ # Eine Kopie des aktuellen Inhalts holen. $ svn cat ${FILEURL}@${BASEREV} > /tmp/README.tmpfile $ # Bearbeiten der (kopierten) Datei. $ vi /tmp/README.tmpfile $ # Den neuen Inhalt unserer Datei übertragen. $ svnmucc -r ${BASEREV} put README.tmpfile ${FILEURL} \ -m "Tweak the README file." r24 committed by harry at 2013-01-21T16:21:23.100133Z # Aufräumen. $ rm /tmp/README.tmpfile
Einen ähnlichen Ansatz zum Ändern der Eigenschaft einer Datei oder eines Verzeichnisses verfolgen. Verwenden Sie einfach svn propget und svnmucc propsetf statt svn cat bzw. svnmucc put.
$ # Ein paar Hilfsvariablen setzen. $ export PROJURL=http://svn.example.com/projects/sandbox $ export BASEREV=`svn info ${PROJURL} | \ grep '^Last Changed Rev' | cut -d ' ' -f 2` $ # Eine Kopie des Werts der Verzeichniseigenschaft "license" holen. $ svn -r ${BASEREV} propget license ${PROJURL} > /tmp/prop.tmpfile $ # Die Eigenschaft ändern. $ vi /tmp/prop.tmpfile $ # Den neuen Wert der Eigenschaft übertragen. $ svnmucc -r ${BASEREV} propsetf prop.tmpfile ${PROJURL} \ -m "Tweak the project directory 'license' property." r25 committed by harry at 2013-01-21T16:24:11.375936Z # Aufräumen. $ rm /tmp/prop.tmpfile
Lassen Sie uns nun ein paar Beispiele mit Mehrfachoperationen ansehen.
Um eine „wanderndes Tag“ zu implementieren, bei dem ein einzelner Tag-Name zur Bezeichnung verschiedener Momentaufnahmen einer Code-Basis wiederverwendet wird (z.B., die letzte, aktuelle stabile Version), verwenden Sie svnmucc rm und svnmucc cp:
$ svnmucc -U http://svn.example.com/projects/doohickey \ rm tags/latest-stable \ cp HEAD trunk tags/latest-stable \ -m "Das 'latest-stable' Tag weiterschieben." r134 committed by harry at 2013-01-12T11:02:16.142536Z $
Im vorigen Beispiel haben wir listigerweise die Verwendung
der Option --root-url (-U)
vorgestellt.
Verwenden Sie diese Option, um einen Basis-URL anzugeben, zu
dem alle anderen URLs der Operanden relativ sind (und ersparen
Sie sich dadurch etwas Schreibarbeit).
Das Folgende zeigt ein Beispiel, wie svnmucc verwendet wird, um in einer einzelnen Revision Ihrem Projekt ein neues Tag hinzuzufügen, die eine frisch erzeugte Beschreibungsdatei beinhaltet, und ein Verzeichnis entfernt, das etwa nicht in eine Lieferung gehört.
$ echo "Dies ist Release 1.2.0." | \ svnmucc -U http://svn.example.com/projects/doohickey \ -m "Release 1.2.0 mit Tag versehen." \ -- \ cp HEAD trunk tags/1.2.0 \ rm tags/1.2.0/developer-notes \ put - tags/1.2.0/README.tag r164 committed by cmpilato at 2013-01-22T05:26:15.563327Z $ svn log -c 164 -v http://svn.example.com/projects/doohickey ------------------------------------------------------------------------ r164 | cmpilato | 2013-01-22 00:26:15 -0500 (Tue, 22 Jan 2013) | 1 line Geänderte Pfade: A /tags/1.2.0 (from /trunk:163) A /tags/1.2.0/README.tag D /tags/1.2.0/developer-notes Release 1.2.0 mit Tag versehen. $
Das vorangegangene Beispiel zeigt nicht nur, wie mehrere
unterschiedliche Dinge mit einem einzelnen Aufruf von
svnmucc bewerkstelligt werden können,
sondern auch, wie die Standardeingabe als Quelle für den
Inhalt einer neuen Datei dienen kann. Beachten Sie das
Vorhandensein von --
, um anzuzeigen, dass
keine weiteren Optionen auf der Kommandozeile folgen. Das wird
benötigt, damit das nackte -
der Aktion
svnmucc put nicht als fehlerhafter
Optionsindikator interpretiert wird.