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 diff (di) — Afficher les différences entre deux révisions ou chemins.

Synopsis

diff [-c M | -r N[:M]] [CIBLE[@REV]...]

diff [-r N[:M]] --old=VCIBLE[@VREV] [--new=NCIBLE[@NREV]] [CHEMIN...]

diff VURL[@VREV] NURL[@NREV]

Description

Afficher les différences entre deux chemins. Vous pouvez utiliser svn diff selon différentes formes :

  • Tapez juste svn diff pour afficher les modifications faites localement à une copie de travail.

  • Afficher les modifications faites à CIBLE entre deux révisions telles qu'elles apparaissent lors de la révision REV. Les CIBLEs peuvent faire référence à des chemins de la copie de travail ou à des URL. Si les CIBLEs font référence à des chemins de la copie de travail, alors N vaut par défaut BASE et M à la copie de travail ; si les CIBLEs font référence à des URL, alors N doit être spécifié et M vaut par défaut HEAD. L'option -c M est équivalente à -r N:M avec N = M-1. L'utilisation de -c -M correspond à l'inverse : -r M:N avec N = M-1.

  • Afficher les différences entre VCIBLE vue en VREV et NCIBLE vue en NREV. Les CHEMINs, s'ils sont spécifiés, sont relatifs à VCIBLE et NCIBLE et restreignent l'affichage des différences à ces chemins. VCIBLE et NCIBLE peuvent faire référence à des chemins de la copie de travail ou des URL[@REV]. NCIBLE vaut par défaut VCIBLE si elle n'est pas spécifiée. -r N entraine que VREV vaut par défaut N ; -r N:M entraine que VREV vaut par défaut N et NREV vaut par défaut M.

svn diff VURL[@VREV] NURL[@NREV] est un raccourci pour svn diff --old=VURL[@OVREV] --new=NURL[@NREV].

svn diff -r N:M URL est un raccourci pour svn diff -r N:M --old=URL --new=URL.

svn diff [-r N[:M]] URL1[@N] URL2[@M] est un raccourci pour svn diff [-r N[:M]] --old=URL1 --new=URL2.

Si CIBLE est une URL, alors les révisions N et M peuvent être passées via l'option --revision ou en utilisant la notation « @ » décrite précédemment.

Si CIBLE est un chemin de la copie de travail, le comportement par défaut (sans option --revision) est d'afficher les différences entre les versions « de base » et la copie de travail de CIBLE. Si l'option --revision est spécifiée dans cette forme, cela correspond à :

--revision N:M

Le serveur compare CIBLE@N et CIBLE@M.

--revision N

Le client compare CIBLE@N à la copie de travail.

Si la syntaxe alternative est utilisée, le serveur compare URL1 et URL2 aux révisions N et M, respectivement. Si l'une ou l'autre des révisions N et M n'est pas spécifiée, la valeur HEAD est prise par défaut.

Par défaut, svn diff ignore l'héritage des fichiers et ne fait que comparer le contenu des fichiers spécifiés. Si vous utilisez l'option --notice-ancestry, l'héritage des chemins en question sera pris en compte lors de la comparaison des révisions (c-à-d. que si vous lancez svn diff sur deux fichiers dont le contenu est identique mais qui ont des héritages différents, l'affichage correspond à un fichier supprimé puis ajouté de nouveau).

Options

Exemples

Comparer BASE et la copie de travail (c'est l'utilisation la plus fréquente de svn diff) :

$ svn diff COMMITTERS
Index: COMMITTERS
===================================================================
--- COMMITTERS	(révision 4404)
+++ COMMITTERS	(copie de travail)

Regarder ce qui a changé dans le fichier COMMITTERS depuis la révision 9115 :

$ svn diff -c 9115 COMMITTERS
Index: COMMITTERS
===================================================================
--- COMMITTERS	(révision 3900)
+++ COMMITTERS	(copie de travail)

Regarder ce qui change dans la copie de travail par rapport aux anciennes révisions :

$ svn diff -r 3900 COMMITTERS
Index: COMMITTERS
===================================================================
--- COMMITTERS	(révision 3900)
+++ COMMITTERS	(copie de travail)

Comparer la révision 3000 à la révision 3500 en utilisant la syntaxe « @ » :

$ svn diff http://svn.collab.net/repos/svn/trunk/COMMITTERS@3000 \
           http://svn.collab.net/repos/svn/trunk/COMMITTERS@3500
Index: COMMITTERS
===================================================================
--- COMMITTERS	(révision 3000)
+++ COMMITTERS	(révision 3500)
…

Comparer la révision 3000 à la révision 3500 en utilisant la notation pour les intervalles (on ne passe qu'une seule fois l'URL dans ce cas) :

$ svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk/COMMITTERS
Index: COMMITTERS
===================================================================
--- COMMITTERS	(révision 3000)
+++ COMMITTERS	(révision 3500)

Comparer la révision 3000 à la révision 3500 de tous les fichiers dans trunk en utilisant la notation pour les intervalles :

$ svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk

Comparer la révision 3000 à la révision 3500 de seulement trois fichiers dans trunk en utilisant la notation pour les intervalles :

$ svn diff -r 3000:3500 --old http://svn.collab.net/repos/svn/trunk \
       COMMITTERS README HACKING

Si vous avez une copie de travail, vous pouvez obtenir ces différences sans taper de longues URL :

$ svn diff -r 3000:3500 COMMITTERS
Index: COMMITTERS
===================================================================
--- COMMITTERS	(révision 3000)
+++ COMMITTERS	(révision 3500)

Utiliser l'option --diff-cmd CMD -x pour passer directement des paramètres au programme diff externe :

$ svn diff --diff-cmd /usr/bin/diff -x "-i -b" COMMITTERS
Index: COMMITTERS
===================================================================
0a1,2
> Ceci est un test
>

Pour finir, vous pouvez utiliser l'option --xml avec l'option --summarize pour afficher un document XML décrivant les modifications apportées entre les révisions, mais pas le contenu des différences en tant que tel :

$ svn diff --summarize --xml http://svn.red-bean.com/repos/test@r2 \
           http://svn.red-bean.com/repos/test
<?xml version="1.0"?>
<diff>
<paths>
<path
   props="none"
   kind="file"
   item="modified">http://svn.red-bean.com/repos/test/sandwich.txt</path>
<path
   props="none"
   kind="file"
   item="deleted">http://svn.red-bean.com/repos/test/burrito.txt</path>
<path
   props="none"
   kind="dir"
   item="added">http://svn.red-bean.com/repos/test/snacks</path>
</paths>
</diff>