svn diff — Afficher les différences entre deux révisions ou chemins.
diff [-c M | -r N[:M]] [CIBLE[@REV]...]
diff [-r N[:M]] --old=VCIBLE[@VREV] [--new=NCIBLE[@NREV]] [CHEMIN...]
diff VURL[@VREV] NURL[@NREV]
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).
Pour obtenir les différences relatives à toutes les
révisions, sauf BASE dans la copie de
travail.
--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
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">http://svn.red-bean.com/repos/test/sandwich.txt</chemin>
<path
props="none"
kind="file"
item="deleted">http://svn.red-bean.com/repos/test/burrito.txt</chemin>
<path
props="none"
kind="dir"
item="added">http://svn.red-bean.com/repos/test/snacks</chemin>
</chemins>
</diff>