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.

Name

svn log — Übergabe-Protokollnachrichten anzeigen.

Übersicht

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

Beginnend mit Subversion 1.8, können Anwender die Ausgabe von svn log mit den Optionen --search und --search-and filtern. Wenn diese Optionen verwendet werden, wird eine Protokollnachricht nur dann angezeigt, falls der Autor, das Datum, der Protokolltext oder die Liste der geänderten Pfade einer Revision zum Suchmuster passt. Das Suchen nach geänderten Pfaden erfordert die Option --verbose, da sonst svn log die geänderten Pfade nicht anzeigt, so dass sie nicht gefiltert werden können.

Das Suchmuster (auch Glob- oder Shell-Platzhalter-Muster genannt) kann normale Zeichen und die folgenden Platzhalter enthalten:

?

Passt auf ein einzelnes Zeichen.

*

Passt auf eine Folge beliebiger Zeichen.

[ABC]

Passt auf irgendeines der Zeichen in den eckigen Klammern.

Mehrere --search-Parameter zeigen Protokollnachrichten an, die einem Muster mindestens einer Option entsprechen. Zum Beispiel:

$ svn log --search sally --search harry https://svn.red-bean.com/repos/test
------------------------------------------------------------------------
r1701 | sally | 2011-10-12 22:35:30 -0600 (Wed, 12 Oct 2011) | 1 line

Add a reminder.
------------------------------------------------------------------------
r1564 | harry | 2011-10-09 22:35:30 -0600 (Sun, 09 Oct 2011) | 1 line

Merge r1560 to the 1.0.x branch.
------------------------------------------------------------------------
$
        

Die gemeinsame Verwendung der Optionen --search und --search-and zeigen Protokollnachrichten an, die der Kombination der Muster beider Optionen entsprechen. Zum Beispiel:

$ svn log --verbose --search sally --search-and /foo/bar https://svn.red-bean.com/repos/test
------------------------------------------------------------------------
r1555 | sally | 2011-07-15 22:33:14 -0600 (Fri, 15 Jul 2011) | 1 line
Changed paths:
M /foo/bar/src.c

Typofix.
------------------------------------------------------------------------
r1530 | sally | 2011-07-13 07:24:11 -0600 (Wed, 13 Jul 2011) | 1 line
Changed paths:
M /foo/bar
M /foo/build

Fix up some svn:ignore properties.
------------------------------------------------------------------------
$
[Tipp] Tipp

Die Optionen --search und --search-and bewirken nicht tatsächlich eine Suche. Sie filtern nur die Ausgabe von svn log, um nur diejenigen Protokollnachrichten anzuzeigen, die zum angegebenen Muster passen. Deshalb wird bei Verwendung von --limit die Anzahl durchsuchter Protokollnachrichten beschränkt anstatt die Ausgabe auf eine bestimmte Anzahl passender Protokollnachrichten zu begrenzen.