Nom

svn diff — 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

  • Affiche 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 à un fichier.

  • Affiche 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.

  • Affiche 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[@VREV] --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).

Noms alternatifs

di

Modifie

Rien.

Accède au dépôt

Pour obtenir les différences relatives à toutes les révisions, sauf BASE dans la copie de travail.

Options

--change (-c) ARG
--changelist ARG
--depth ARG
--diff-cmd CMD
--extensions (-x) "ARGS"
--force
--new ARG
--no-diff-deleted
--notice-ancestry
--old ARG
--revision (-r) ARG
--summarize
--xml

Exemples

Compare BASE et la copie de travail (c'est l'usage le plus fréquent de svn diff):

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

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

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

Compare 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)
…

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

Compare 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
          

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

Utilisez 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
> This is a 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"&gt;http://svn.red-bean.com/repos/test/sandwich.txt&lt;/chemin&gt;
<path
   props="none"
   kind="file"
   item="deleted"&gt;http://svn.red-bean.com/repos/test/burrito.txt&lt;/chemin&gt;
<path
   props="none"
   kind="dir"
   item="added"&gt;http://svn.red-bean.com/repos/test/snacks&lt;/chemin&gt;
</chemins>
</diff>