Diese Dokumentation wurde zur Beschreibung der Serie 1.7.x von Apache™ Subversion® erstellt. Falls Sie eine unterschiedliche Version von Subversion einsetzen, sei Ihnen dringend angeraten, bei http://www.svnbook.com/ vorbeizuschauen und stattdessen die zu Ihrer Version von Subversion passende Version dieser Dokumentation heranzzuiehen.
svn log — Übergabe-Protokollnachrichten anzeigen.
Zeigt Protokollnachrichten aus dem Projektarchiv an.
Falls keine Argumente angegeben werden, zeigt svn
log die Protokollnachrichten aller Dateien und
Verzeichnisse innerhalb (und inklusive) des aktuellen
Arbeitsverzeichnisses Ihrer Arbeitskopie an. Sie können
das Ergebnis verfeinern, indem Sie einen Pfad, eine oder
mehrere Revisionen oder eine beliebige Kombination davon
angeben. Der Standardbereich für Revisionen eines lokalen
Pfades ist BASE:1
.
Falls Sie nur einen URL angeben, werden
Protokollnachrichten für alles ausgegeben, was unter
diesem URL liegt. Falls Sie nach dem URL Pfade angeben,
werden nur Nachrichten für diese Pfade unterhalb des URLs
ausgegeben. Der Standardbereich für Revisionen eines URLs
ist HEAD:1
.
Mit --verbose
(-v
)
gibt svn log alle betroffenen Pfade
zusätzlich zu jeder Protokollnachricht aus. Mit
--quiet
(-q
) gibt
svn log den eigentlichen Rumpf der
Protokollnachricht nicht aus; das ist kompatibel mit
--verbose
(-v
).
Jede Protokollnachricht wird nur einmal ausgegeben,
auch falls ausdrücklich mehr als einer der betroffenen
Pfade für diese Revision angefordert wurde. Die
Protokolle folgen standardmäßig der Kopier-Historie.
Verwenden Sie --stop-on-copy
, um dieses
Verhalten abzustellen, was nützlich bei der Ermittlung von
Verzweigungspunkten sein kann.
Sie können die Protokollnachrichten aller Pfade sehen, die
sich in Ihrer Arbeitskopie geändert haben, indem Sie ganz
oben svn log
aufrufen:
$ svn log ------------------------------------------------------------------------ r20 | harry | 2003-01-17 22:56:19 -0600 (Fr, 17. Jan 2003) | 1 Zeile Tweak. ------------------------------------------------------------------------ r17 | sally | 2003-01-16 23:21:19 -0600 (Do, 16. Jan 2003) | 2 Zeilen …
Untersuchen aller Protokollnachrichten für eine bestimmte Datei in Ihrer Arbeitskopie:
$ svn log foo.c ------------------------------------------------------------------------ r32 | sally | 2003-01-13 00:43:13 -0600 (Mo, 13. Jan 2003) | 1 Zeile Added defines. ------------------------------------------------------------------------ r28 | sally | 2003-01-07 21:48:33 -0600 (Di, 07. Jan 2003) | 3 Zeilen …
Sollten Sie keine Arbeitskopie verfügbar haben, können Sie die Protokolle auch über einen URL abrufen:
$ svn log http://svn.red-bean.com/repos/test/foo.c ------------------------------------------------------------------------ r32 | sally | 2003-01-13 00:43:13 -0600 (Mo, 13. Jan 2003) | 1 Zeile Added defines. ------------------------------------------------------------------------ r28 | sally | 2003-01-07 21:48:33 -0600 (Di, 07. Jan 2003) | 3 Zeilen …
Wollen Sie mehrere getrennte Pfade unterhalb des
gleichen URLs möchten, können Sie die Syntax URL
[PATH...]
verwenden:
$ svn log http://svn.red-bean.com/repos/test/ foo.c bar.c ------------------------------------------------------------------------ r32 | sally | 2003-01-13 00:43:13 -0600 (Mo, 13. Jan 2003) | 1 Zeile Added defines. ------------------------------------------------------------------------ r31 | harry | 2003-01-10 12:25:08 -0600 (Fr, 10. Jan 2003) | 1 Zeile Added new file bar.c ------------------------------------------------------------------------ r28 | sally | 2003-01-07 21:48:33 -0600 (Di, 07. Jan 2003) | 3 Zeilen …
Die Option --verbose
(-v
) veranlasst
svn log, Informationen über die in
jeder angezeigten Revision geänderten Pfade hinzuzufügen.
Diese Pfade, einer pro Ausgabezeile, werden mit einer
Aktionskennung markiert, die darüber Aufschluss gibt, um
welche Art von Änderung an dem Pfad es sich handelt.
$ svn log -v http://svn.red-bean.com/repos/test/ foo.c bar.c ------------------------------------------------------------------------ r32 | sally | 2003-01-13 00:43:13 -0600 (Mo, 13. Jan 2003) | 1 Zeile Geänderte Pfade: M /foo.c Added defines. ------------------------------------------------------------------------ r31 | harry | 2003-01-10 12:25:08 -0600 (Fr, 10. Jan 2003) | 1 Zeile Geänderte Pfade: A /bar.c Added new file bar.c ------------------------------------------------------------------------ r28 | sally | 2003-01-07 21:48:33 -0600 (Di, 07. Jan 2003) | 3 Zeilen …
svn log verwendet nur eine handvoll Aktionskennungen, die denjenigen des Befehls svn update ähneln:
A
Das Objekt wurde hinzugefügt.
D
Das Objekt wurde gelöscht.
M
Die Eigenschaften oder der textuelle Inhalt des Objektes wurden geändert.
R
Das Objekt wurde am selben Ort durch ein anderes ersetzt.
Zusätzlich zu den Aktionskennungen, die den geänderten
Pfaden vorangestellt werden, vermerkt
svn log mit der Option
--verbose
(-v
) ob ein
Pfad als Ergebnis einer Kopieroperation hinzugefügt oder
ersetzt wurde. Dabei wird nach solchen Pfaden
(von
ausgegeben.COPY-FROM-PATH
:COPY-FROM-REV
)
Falls Sie die Ausgaben mehrerer Aufrufe des Befehls
verketten möchten, empfiehlt sich die Verwendung der
Option --incremental
. svn
log gibt normalerweise zu Beginn einer
Protokollnachricht, nach jeder weiteren sowie nach der
letzten eine gestrichelte Linie aus. Falls Sie
svn log über einen Bereich von zwei
Revisionen aufgerufen hätten, würden Sie folgendes
bekommen:
$ svn log -r 14:15 ------------------------------------------------------------------------ r14 | … ------------------------------------------------------------------------ r15 | … ------------------------------------------------------------------------
Falls Sie jedoch zwei nicht aufeinanderfolgende Protokollnachrichten in einer Datei sammeln möchten, könnten Sie folgendes aufrufen:
$ svn log -r 14 > mylog $ svn log -r 19 >> mylog $ svn log -r 27 >> mylog $ cat mylog ------------------------------------------------------------------------ r14 | … ------------------------------------------------------------------------ ------------------------------------------------------------------------ r19 | … ------------------------------------------------------------------------ ------------------------------------------------------------------------ r27 | … ------------------------------------------------------------------------
Sie können das störende doppelte Auftreten der
gestrichelten Linien in der Ausgabe durch die Verwendung
der Option --incremental
verhindern:
$ svn log --incremental -r 14 > mylog $ svn log --incremental -r 19 >> mylog $ svn log --incremental -r 27 >> mylog $ cat mylog ------------------------------------------------------------------------ r14 | … ------------------------------------------------------------------------ r19 | … ------------------------------------------------------------------------ r27 | …
Die Option --incremental
bietet bei
Verwendung der Option --xml
eine ähnliche
Ausgabekontrolle:
$ svn log --xml --incremental -r 1 sandwich.txt <logentry revision="1"> <author>harry</author> <date>2008-06-03T06:35:53.048870Z</date> <msg>Initial Import.</msg> </logentry>
Tipp | |
---|---|
Manchmal kann es passieren, dass beim Aufruf von svn log für einen bestimmten Pfad und eine bestimmte Revision keine Protokollinformationen ausgegeben werden wie etwa hier: $ svn log -r 20 http://svn.red-bean.com/untouched.txt ------------------------------------------------------------------------ Das bedeutet nur, dass der Pfad in dieser Revision nicht geändert wurde. Um Protokollinformationen für diese Revision zu erhalten, sollten Sie den Befehl entweder für die Wurzel des Projektarchivs aufrufen oder einen Pfad angeben, von dem Sie wissen, dass er in dieser Revision geändert wurde: $ svn log -r 20 touched.txt ------------------------------------------------------------------------ r20 | sally | 2003-01-17 22:56:19 -0600 (Fr, 17. Jan 2003) | 1 Zeile Made a change. ------------------------------------------------------------------------ |
Beginnend mit Subversion 1.7, können Anwender sich
einen besonderen Ausgabemodus zunutze machen, der die
Informationen von svn log damit
kombiniert, was Sie sehen würden, wenn Sie svn
diff für jede Revision auf dieselben Ziele
anwenden würden. Rufen Sie einfach svn
log mit der Option --diff
auf, um diesen Ausgabemodus zu erhalten.
$ svn log -r 20 touched.txt --diff ------------------------------------------------------------------------ r20 | sally | 2003-01-17 22:56:19 -0600 (Fr, 17. Jan 2003) | 1 Zeile Made a change. Index: touched.txt =================================================================== --- touched.txt (revision 19) +++ touched.txt (revision 20) @@ -1 +1,2 @@ This is the file 'touched.txt'. +We add such exciting text to files around here! ------------------------------------------------------------------------ $
Wie bei svn diff können Sie auch
hier viele der verschiedenen Optionen angeben, die
kontrollieren, wie die Unterschiede ermittelt werden,
darunter --depth
, --diff-cmd
und --extensions
(-x
).