svn diff — Anzeige der Unterschiede zwischen zwei Revisionen oder Pfaden.
diff [-c M | -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]
Anzeige der Unterschiede zwischen zwei Pfaden. Sie können svn diff wie folgt verwenden:
Verwenden Sie nur svn diff, um lokale Änderungen in einer Arbeitskopie anzuzeigen.
Anzeige der Änderungen an
TARGET
s in
REV
zwischen zwei
Revisionen. Alle TARGET
s
können entweder nur Pfade in der Arbeitskopie oder nur
URL
s sein. Falls
TARGET
s Pfade in der
Arbeitskopie sind, ist der Standardwert von
N
BASE
und M
die Arbeitskopie;
falls TARGET
s
URL
s sind, muss
N
angegeben werden, und der
Standardwert von M
ist
HEAD
. Die Option -c
M
ist äquivalent zu -r
N:M
, wobei N = M-1
. Die
Verwendung von -c -M
bewirkt den
umgekehrten Fall: -r M:N
, wobei
N = M-1
.
Anzeige der Unterschiede zwischen
OLD-TGT
in
OLDREV
und
NEW-TGT
in
NEWREV
. Sind
PATH
s angegeben, sind sie
relativ zu OLD-TGT
und
NEW-TGT
, und die Ausgabe
wird auf Unterschiede für diese Pfade beschränkt.
OLD-TGT
und
NEW-TGT
können Pfade in der
Arbeitskopie sein oder
URL[@REV]
. Der
Standardwert von NEW-TGT
ist OLD-TGT
, falls nicht
angegeben. -r N
setzt den
Standardwert von OLDREV
auf
N
; -r N:M
setzt
den Standardwert von OLDREV
auf N
und
NEWREV
auf
M
.
svn diff OLD-URL[@OLDREV]
NEW-URL[@NEWREV]
ist die Kurzform für
svn diff --old=OLD-URL[@OLDREV]
--new=NEW-URL[@NEWREV].
svn diff -r N:M URL
ist die
Kurzform für svn diff -r N:M --old=URL
--new=URL
.
svn diff [-r N[:M]] URL1[@N]
URL2[@M]
ist die Kurzform für svn
diff [-r N[:M]] --old=URL1 --new=URL2
.
Falls TARGET
ein URL ist,
können die Revisionen N
und
M
entweder mir der Option
--revision
oder in der Notation
„@“ angegeben werden, wie vorher
beschrieben.
Falls es sich bei TARGET
um
einen Pfad in der Arbeitskopie handelt, besteht das
Standardverhalten (sofern die Option
--revision
nicht angegeben wird) darin,
die Unterschiede zwischen der Basisversion und der
Arbeitskopie von TARGET
auszugeben. Wird in diesem Fall jedoch die Option
--revision
angegeben, bedeutet das:
--revision N:M
Der Server vergleicht
TARGET@N
und
TARGET@M
.
--revision N
Der Client vergleicht
TARGET@N
mit der Arbeitskopie.
Wird die alternative Syntax verwendet, vergleicht der
Server URL1
und
URL2
in Revision
N
bzw.
M
. Wird entweder
N
oder
M
ausgelassen, wird der Wert
HEAD
angenommen.
Standardmäßig ignoriert svn diff
die Herkunft von Dateien und vergleicht lediglich den
Inhalt der beiden Dateien. Falls Sie
--notice-ancestry
verwenden, wird die
Herkunft der Pfade beim Vergleich der Revisionen
berücksichtigt (d.h., falls Sie svn
diff auf zwei Dateien gleichen Inhalts jedoch
unterschiedlicher Herkunft anwenden, wird es dargestellt,
als sei der gesamte Inhalt entfernt und wieder hinzugefügt
worden).
Beim Ermitteln von Unterschieden zu allem, was nicht
die BASE
-Revision in Ihrer Arbeitskopie
ist
--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
Vergleich von BASE
und Ihrer
Arbeitskopie (eine der beliebtesten Anwendungen von
svn diff):
$ svn diff COMMITTERS Index: COMMITTERS =================================================================== --- COMMITTERS (Revision 4404) +++ COMMITTERS (Arbeitskopie) …
Betrachten der Änderungen in der Datei
COMMITTERS
, Revision 9115:
$ svn diff -c 9115 COMMITTERS Index: COMMITTERS =================================================================== --- COMMITTERS (Revision 3900) +++ COMMITTERS (Arbeitskopie) …
Die Änderungen in der Arbeitskopie mit einer älteren Revision vergleichen:
$ svn diff -r 3900 COMMITTERS Index: COMMITTERS =================================================================== --- COMMITTERS (Revision 3900) +++ COMMITTERS (Arbeitskopie) …
Vergleich von Revision 3000 mit Revision 3500 unter Verwendung der „@“-Syntax:
$ svn diff http://svn.collab.net/repos/svn/trunk/COMMITTERS@3000 \ http://svn.collab.net/repos/svn/trunk/COMMITTERS@3500 Index: COMMITTERS =================================================================== --- COMMITTERS (Revision 3000) +++ COMMITTERS (Revision 3500) …
Vergleich von Revision 3000 mit Revision 3500 unter Verwendung der Bereichsschreibweise (in diesem Fall wird nur ein URL angegeben):
$ svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk/COMMITTERS Index: COMMITTERS =================================================================== --- COMMITTERS (Revision 3000) +++ COMMITTERS (Revision 3500) …
Vergleich der Revision 3000 mit Revision 3500 aller
Dateien in trunk
unter Verwendung der
Bereichsschreibweise:
$ svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk
Vergleich der Revision 3000 mit Revision 3500 von nur
drei Dateien in trunk
unter
Verwendung der Bereichsschreibweise:
$ svn diff -r 3000:3500 --old http://svn.collab.net/repos/svn/trunk \ COMMITTERS README HACKING
Falls Sie eine Arbeitskopie haben, können Sie die Unterschiede ermitteln, ohne die langen URLs einzugeben:
$ svn diff -r 3000:3500 COMMITTERS Index: COMMITTERS =================================================================== --- COMMITTERS (revision 3000) +++ COMMITTERS (revision 3500) …
Verwendung von --diff-cmd
CMD
-x
, um
Argumente direkt an das externe diff-Programm zu
übergeben:
$ svn diff --diff-cmd /usr/bin/diff -x "-i -b" COMMITTERS Index: COMMITTERS =================================================================== 0a1,2 > This is a test >
Schließlich können Sie die Option
--xml
zusammen mit der Option
--summarize
verwenden, um die Änderungen
zwischen den Revisionen, nicht jedoch den Inhalt des
eigentlichen Diffs, in XML anzusehen:
$ 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>