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
CIBLE
s peuvent faire
référence à des chemins de la copie de travail ou à des
URL
. Si les
CIBLE
s 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
CIBLE
s
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
CHEMIN
s, 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>