Diese Dokumentation wurde zur Beschreibung der Serie 1.7.x von Apache™ Subversion® erstellt. Falls Sie eine unterschiedliche Version von Subversion einsetzen, sei Ihnen dringend angeraten, bei http://www.svnbook.com/ vorbeizuschauen und stattdessen die zu Ihrer Version von Subversion passende Version dieser Dokumentation heranzzuiehen.
svn diff (di) — 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
TARGETs in
REV zwischen zwei
Revisionen. Alle TARGETs
können entweder nur Pfade in der Arbeitskopie oder nur
URLs sein. Falls
TARGETs Pfade in der
Arbeitskopie sind, ist der Standardwert von
N BASE
und M die Arbeitskopie;
falls TARGETs
URLs 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
PATHs 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 (-r) 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 (-r) nicht
angegeben wird) darin, die Unterschiede zwischen der
Basisversion und der Arbeitskopie von
TARGET auszugeben. Wird in
diesem Fall jedoch die Option --revision
(-r) 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).
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 --extensions
(-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>