Nom

svn log — Afficher les entrées du journal de propagation.

Synopsis

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

Description

Affiche les entrées du journal de propagation du dépôt. Si aucun argument n'est fourni, svn log affiche les entrées du journal de propagation pour tous les fichiers et répertoires dans (et y compris) le répertoire courant de la copie de travail. Vous pouvez affiner votre requête en spécifiant un chemin, une ou plusieurs révisions, ou une combinaison des deux. L'intervalle de révisions par défaut pour un chemin local est BASE:1.

Si vous spécifiez une URL simple, la commande affiche les entrées du journal pour tout ce que contient l'URL. Si vous ajoutez des chemins après l'URL, seules les entrées relatives aux chemins spécifiés seront affichées. L'intervalle de révisions par défaut pour une URL est HEAD:1.

Avec l'option --verbose, svn log affiche également tous les chemins modifiés pour chaque entrée du journal. Avec l'option --quiet, svn log n'affiche pas le corps de l'entrée du journal (cette option est compatible avec l'option --verbose).

Chaque entrée du journal est affichée seulement une fois, même si, parmi les chemins explicitement demandés, plus d'un a été modifié pour cette révision. Les entrées du journal suivent l'historique de la copie de travail par défaut. Utilisez l'option --stop-on-copy pour désactiver ce comportement, ce qui peut être utile pour déterminer à quel moment une branche a été créée.

Noms alternatifs

Aucun.

Modifie

Rien.

Accède au dépôt

Oui.

Options

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

Exemples

Vous pouvez visualiser les entrées du journal pour tous les chemins qui ont été modifiés dans la copie de travail en lançant la commande svn log depuis le répertoire racine :

$ svn log
------------------------------------------------------------------------
r20 | harry | 2003-01-17 22:56:19 -0600 (ven. 17 jan 2003) | 1 ligne

Peaufinage.
------------------------------------------------------------------------
r17 | sally | 2003-01-16 23:21:19 -0600 (jeu. 16 jan 2003) | 2 lignes
…

Examine toutes les entrées du journal pour un fichier particulier de la copie de travail :

$ svn log machin.c
------------------------------------------------------------------------
r32 | sally | 2003-01-13 00:43:13 -0600 (lun. 13 jan 2003) | 1 ligne

Ajouté des définitions.
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 -0600 (mar. 07 jan 2003) | 3 lignes
…

Si vous n'avez pas de copie de travail sous la main, vous pouvez examiner les entrées du dépôt :

$ svn log http://svn.red-bean.com/repos/test/machin.c
------------------------------------------------------------------------
r32 | sally | 2003-01-13 00:43:13 -0600 (lun. 13 jan 2003) | 1 ligne

Ajouté des définitions.
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 -0600 (mar. 07 jan 2003) | 3 lignes
…

Si vous voulez spécifier plusieurs chemins distincts sous la même URL, vous pouvez utiliser la syntaxe URL [CHEMIN...] :

$ svn log http://svn.red-bean.com/repos/test/ machin.c bidule.c
------------------------------------------------------------------------
r32 | sally | 2003-01-13 00:43:13 -0600 (lun. 13 jan 2003) | 1 ligne

Ajouté des définitions.
------------------------------------------------------------------------
r31 | harry | 2003-01-10 12:25:08 -0600 (ven. 10 jan 2003) | 1 ligne

Ajouté le nouveau fichier bidule.c
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 -0600 (mar. 07 jan 2003) | 3 lignes
…

L'option --verbose demande à svn log d'inclure les informations relatives aux chemins modifiés pour chaque révision affichée. Ces chemins sont affichés, un chemin par ligne, avec le code d'action qui indique quel changement a été effectué sur le chemin.

$ svn log -v http://svn.red-bean.com/repos/test/ machin.c bidule.c
------------------------------------------------------------------------
r32 | sally | 2003-01-13 00:43:13 -0600 (lun. 13 jan 2003) | 1 ligne
Chemins modifiés :
   M /machin.c

Ajouté des définitions.
------------------------------------------------------------------------
r31 | harry | 2003-01-10 12:25:08 -0600 (ven. 10 jan 2003) | 1 ligne
Chemins modifiés :
   A /bidule.c

Ajouté le nouveau fichier bidule.c
------------------------------------------------------------------------
r28 | sally | 2003-01-07 21:48:33 -0600 (mar. 07 jan 2003) | 3 lignes
…

svn log n'utilise qu'une poignée de codes d'action, les mêmes que ceux utilisés par la commande svn update :

A

L'élément a été ajouté.

D

L'élément a été supprimé (Deleted en anglais).

M

Les propriétés ou le contenu de l'élément ont été modifiés.

R

L'élément a été remplacé par un autre au même endroit.

En plus des codes d'action qui précèdent les chemins modifiés, svn log avec l'option --verbose indique si le chemin a été ajouté ou remplacé par le fait d'une opération de copie. Il le signale en affichant (de COPIE-DE-CHEMIN:COPIE-DE-REV) après le chemin.

Quand vous concaténez la sortie de plusieurs commandes svn log, il peut être judicieux d'utiliser l'option --incremental. svn log affiche normalement une ligne de tirets avant chaque entrée de journal, après chaque entrée conséquente et après la derniere entrée du journal. Si vous lancez svn log sur un intervalle de deux révisions, vous obtenez la sortie suivante :

$ svn log -r 14:15
------------------------------------------------------------------------
r14 | …

------------------------------------------------------------------------
r15 | …

------------------------------------------------------------------------

Cependant, si vous voulez rassembler, dans un fichier, deux entrées du journal qui ne se suivent pas, vous lancerez des commandes comme ceci :

$ svn log -r 14 > mon-journal
$ svn log -r 19 >> mon-journal
$ svn log -r 27 >> mon-journal
$ cat mon-journal
------------------------------------------------------------------------
r14 | …

------------------------------------------------------------------------
------------------------------------------------------------------------
r19 | …

------------------------------------------------------------------------
------------------------------------------------------------------------
r27 | …

------------------------------------------------------------------------

Vous pouvez éviter l'inconvénient des doubles lignes de tirets dans votre fichier en utilisant l'option --incremental :

$ svn log --incremental -r 14 > mon-journal
$ svn log --incremental -r 19 >> mon-journal
$ svn log --incremental -r 27 >> mon-journal
$ cat mon-journal
------------------------------------------------------------------------
r14 | …

------------------------------------------------------------------------
r19 | …

------------------------------------------------------------------------
r27 | …

L'option --incremental fournit le même type de fonctionnalité quand elle est utilisée avec l'option --xml :

$ svn log --xml --incremental -r 1 lisezmoi.txt
<logentry
   revision="1">
<author>harry</author>
<date>2008-06-03T06:35:53.048870Z</date>
<msg>Initial Import.</msg>
</logentry>
[Astuce] Astuce

Quelquefois, quand vous lancez la commande svn log sur un chemin spécifique et une révision spécifique, vous ne voyez aucune entrée de journal, comme dans le cas suivant :

$ svn log -r 20 http://svn.red-bean.com/pas-modifié.txt
------------------------------------------------------------------------

Cela signifie simplement que le chemin n'a pas été modifié lors de la révision spécifiée. Pour obtenir l'entrée de journal correspondante à cette révision, soit lancez l'opération de log sur l'URL racine du dépôt, soit sur un chemin dont vous savez qu'il a été modifié lors de cette révision :

$ svn log -r 20 modifié.txt
------------------------------------------------------------------------
r20 | sally | 2003-01-17 22:56:19 -0600 (ven. 17 jan 2003) | 1 ligne

Effectué un changement.
------------------------------------------------------------------------