This text is a work in progress—highly subject to change—and may not accurately describe any released version of the Apache™ Subversion® software. Bookmarking or otherwise referring others to this page is probably not such a smart idea. Please visit http://www.svnbook.com/ for stable versions of this book.

Nom

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

Synopsis

svn log [CHEMIN]

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

Description

Afficher 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 sont 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.

Options

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
…

Examiner 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 sandwich.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.
------------------------------------------------------------------------

À partir de Subversion 1.7, les utilisateurs disposent d'un mode d'affichage spécial qui combine les informations de svn log et de ce qu'affiche svn diff pour la même cible à chaque révision. Tapez simplement svn log avec l'option --diff pour activer ce mode d'affichage.

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

Effectué un changement.

Index: modifié.txt
===================================================================
--- modifié.txt	(revision 19)
+++ modifié.txt	(revision 20)
@@ -1 +1,2 @@
Ceci est le fichier 'modifié.txt'.
+Nous ajoutons du texte très intéressant à cet endroit !
------------------------------------------------------------------------
$

Comme pour svn diff, vous pouvez utiliser toutes les options relatives aux différences, y compris --depth, --diff-cmd et --extensions (-x).

À partir de Subversion 1.8, les utilisateurs peuvent filtrer la sortie de svn log avec les options --search et --search-and. Avec ces options, l'entrée de journal n'est affichée que si l'auteur de la révision, la date, le texte du message ou la liste des chemins modifiés correspondent au motif de recherche. La recherche sur les chemins modifiés requiert l'option --verbose, sinon svn log n'affiche pas les chemins modifiés et ceux-ci ne peuvent donc pas être filtrés.

Le motif de recherche (aussi appelé glob ou motif de filtrage du shell) peut contenir des caractères normaux et les caractères spéciaux suivants :

?

correspond à n'importe quel caractère unique ;

*

correspond à n'importe quelle chaîne de caractères, y compris la chaîne vide ;

[ABC]

correspond à n'importe quel caractère qui figure à l'intérieur des crochets.

Si vous utilisez plusieurs paramètres --search, vous obtenez les entrées qui correspondent à au moins un motif de recherche. Par exemple :

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

Ajouté un pense-bête.
------------------------------------------------------------------------
r1564 | harry | 2011-10-09 22:35:30 -0600 (dim. 09 oct 2011) | 1 ligne

Fusionné r1560 vers la branche 1.0.x.
------------------------------------------------------------------------
$
        

Si vous utilisez l'option --search avec --search-and, vous obtenez les entrées qui correspondent à la combinaison des motifs de recherche des deux options. Par exemple :

$ svn log --verbose --search sally --search-and /truc/machin 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 /truc/machin/src.c

Correction de coquilles.
------------------------------------------------------------------------
r1530 | sally | 2011-07-13 07:24:11 -0600 (Wed, 13 Jul 2011) | 1 line
Changed paths:
M /truc/machin
M /truc/build

Modification de quelques propriétés svn:ignore.
------------------------------------------------------------------------
$
[Astuce] Astuce

Les options --search et --search-and n'effectuent pas en tant que telles des recherches. Elles ne font que filtrer la sortie de svn log pour n'afficher que les entrées qui correspondent au motif de recherche. En conséquence, si vous utilisez l'option --limit, celle-ci restreint le nombre de messages de propagation cherchés et non pas l'affichage des messages qui correspondent au nombre fixé par la limite.