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 gibt svn log alle betroffenen Pfade zusätzlich zu jeder Protokollnachricht aus. Mit --quiet gibt svn log den eigentlichen Rumpf der Protokollnachricht nicht aus (das ist kompatibel mit --verbose).

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 Kopiergeschichte. Verwenden Sie --stop-on-copy, um dieses Verhalten abzustellen, was nützlich bei der Ermittlung von Verzweigungspunkten sein kann.

Alternativnamen

Keine

Änderungen

Nichts

Projektarchiv-Zugriff

Ja

Optionen

--change (-c) ARG
--incremental
--limit (-l) NUM
--quiet (-q)
--revision (-r) REV
--stop-on-copy
--targets FILENAME
--use-merge-history (-g)
--verbose (-v)
--with-all-revprops
--with-revprop ARG
--xml

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 (Fri, 17 Jan 2003) | 1 line

Tweak.
------------------------------------------------------------------------
r17 | sally | 2003-01-16 23:21:19 -0600 (Thu, 16 Jan 2003) | 2 lines
…

Untersuchen aller Protokollnachrichten für eine bestimmte Datei in Ihrer Arbeitskopie:

$ svn log foo.c
------------------------------------------------------------------------
r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 line

Added defines.
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines
…

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 (Mon, 13 Jan 2003) | 1 line

Added defines.
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines
…

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 (Mon, 13 Jan 2003) | 1 line

Added defines.
------------------------------------------------------------------------
r31 | harry | 2003-01-10 12:25:08 -0600 (Fri, 10 Jan 2003) | 1 line

Added new file bar.c
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines
…

Die Option --verbose 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 (Mon, 13 Jan 2003) | 1 line
Changed paths:
   M /foo.c

Added defines.
------------------------------------------------------------------------
r31 | harry | 2003-01-10 12:25:08 -0600 (Fri, 10 Jan 2003) | 1 line
Changed paths:
   A /bar.c

Added new file bar.c
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines
…

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 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 (Fri, 17 Jan 2003) | 1 line

Made a change.
------------------------------------------------------------------------