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.

Name

svn log — Übergabe-Protokollnachrichten anzeigen.

Aufruf

svn log [PATH]

svn log URL[@REV] [PATH...]

Beschreibung

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.

Optionen

Beispiele

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 COPY-FROM-PATH:COPY-FROM-REV) ausgegeben.

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] 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).