Name
svn diff — Display the differences between two paths.
Synopsis
diff [-r N[:M]] [TARGET[@REV]...]
diff [-r N[:M]] --old OLD-TGT[@OLDREV] [--new NEW-TGT[@NEWREV]] [PATH...]
diff OLD-URL[@OLDREV] NEW-URL[@NEWREV]
Description
Display the differences between two paths. The three
different ways you can use
svn diff
are:
svn diff [-r N[:M]] [--old OLD-TGT] [--new
NEW-TGT] [PATH...]
displays the differences
between
OLD-TGT
and
NEW-TGT
. If
PATH
s are given, they are
treated as relative to
OLD-TGT
and
NEW-TGT
and the output is
restricted to differences in only those paths.
OLD-TGT
and
NEW-TGT
may be working copy
paths or
URL
[@
REV
]
.
OLD-TGT
defaults to the current
working directory and
NEW-TGT
defaults to
OLD-TGT
.
N
defaults to
BASE
or, if
OLD-TGT
is a URL, to
HEAD
.
M
defaults to the current working version or, if
NEW-TGT
is a URL, to
HEAD
.
svn diff -r N
sets the revision of
OLD-TGT
to
N
,
svn diff -r
N:M
also sets the revision of
NEW-TGT
to
M
.
svn diff -r N:M URL
is shorthand
for
svn diff -r N:M --old=URL
--new=URL
.
svn diff [-r N[:M]] URL1[@N]
URL2[@M]
is shorthand for
svn diff [-r
N[:M]] --old=URL1 --new=URL2
.
If
TARGET
is a URL, then
revs N and M can be given either via the
--revision
or by using
“@” notation as described earlier.
If
TARGET
is a working copy
path, then the --revision
switch
means:
-
--revision N:M
-
The server compares
TARGET
@
N
and
TARGET
@
M
.
-
--revision N
-
The client compares
TARGET
@
N
against working copy.
-
(no
--revision
)
-
The client compares base and working copies of
TARGET
.
If the alternate syntax is used, the server compares
URL1
and
URL2
at revisions
N
and
M
respectively. If either
N
or
M
are omitted, a value of
HEAD
is assumed.
By default,
svn diff
ignores the
ancestry of files and merely compares the contents of the
two files being compared. If you use
--notice-ancestry
, the ancestry of the
paths in question will be taken into consideration when
comparing revisions (that is, if you run
svn
diff
on two files with identical contents but
different ancestry you will see the entire contents of the
file as having been removed and added again).
Accesses Repository
For obtaining differences against anything but
BASE
revision in your working copy
Switches
--revision (-r) REV
--old OLD-TARGET
--new NEW-TARGET
--extensions (-x) "ARGS"
--non-recursive (-N)
--diff-cmd CMD
--notice-ancestry
--username USER
--password PASS
--no-auth-cache
--non-interactive
--no-diff-deleted
--config-dir DIR
Examples
Compare BASE
and your working copy
(one of the most popular uses of
svn
diff
):
$ svn diff COMMITTERS
Index: COMMITTERS
===================================================================
--- COMMITTERS (revision 4404)
+++ COMMITTERS (working copy)
See how your working copy's modifications compare
against an older revision:
$ svn diff -r 3900 COMMITTERS
Index: COMMITTERS
===================================================================
--- COMMITTERS (revision 3900)
+++ COMMITTERS (working copy)
Compare revision 3000 to revision 3500 using “@”
syntax:
$ svn diff https://svn.collab.net/repos/svn/trunk/COMMITTERS@3000 https://svn.collab.net/repos/svn/trunk/COMMITTERS@3500
Index: COMMITTERS
===================================================================
--- COMMITTERS (revision 3000)
+++ COMMITTERS (revision 3500)
…
Compare revision 3000 to revision 3500 using range
notation (you only pass the one URL in this
case):
$ svn diff -r 3000:3500 https://svn.collab.net/repos/svn/trunk/COMMITTERS
Index: COMMITTERS
===================================================================
--- COMMITTERS (revision 3000)
+++ COMMITTERS (revision 3500)
Compare revision 3000 to revision 3500 of all files in
trunk
using range notation:
$ svn diff -r 3000:3500 https://svn.collab.net/repos/svn/trunk
Compare revision 3000 to revision 3500 of only three
files in trunk
using range
notation:
$ svn diff -r 3000:3500 --old https://svn.collab.net/repos/svn/trunk COMMITTERS README HACKING
If you have a working copy, you can obtain the
differences without typing in the long URLs:
$ svn diff -r 3000:3500 COMMITTERS
Index: COMMITTERS
===================================================================
--- COMMITTERS (revision 3000)
+++ COMMITTERS (revision 3500)
Use --diff-cmd
CMD
-x
to
pass arguments directly to the external diff
program
$ svn diff --diff-cmd /usr/bin/diff -x "-i -b" COMMITTERS
Index: COMMITTERS
===================================================================
0a1,2
> This is a test
>