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.
svn diff (di) — 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]
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
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
.
Afficher 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[@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
(-r
) 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).
--change
(-c
)ARG
--changelist
(--cl
)ARG
--depth
ARG
--diff-cmd
CMD
--extensions
(-x
)ARG
--force
--git
--ignore-properties
--internal-diff
--new
ARG
--no-diff-added
--no-diff-deleted
--notice-ancestry
--old
ARG
--patch-compatible
--properties-only
--revision
(-r
)REV
--show-copies-as-adds
--summarize
--xml
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>