svn diff — 二つのパスの間の相違点を表示します。
svn diff [-r N[:M]] [TARGET[@REV]...]
svn diff [-r N[:M]] --old OLD-TGT[@OLDREV] [--new NEW-TGT[@NEWREV]] [PATH...]
svn diff OLD-URL[@OLDREV] NEW-URL[@NEWREV]
ふたつのパスの間の違いを表示します。 svn diffには 三つの使い方があります:
svn diff [-r N[:M]] [--old OLD-TGT] [--new
NEW-TGT] [PATH...] は
OLD-TGT
と
NEW-TGT
の間の違いを表示します。
もしPATH
があればOLD-TGT
や
NEW-TGT
に相対的なものとして扱われ、出力される
相違点はそのようなパスのみに限定されます。
OLD-TGT
と
NEW-TGT
は作業コピーパスであるか
URL
[@
REV
]
であるかです。
OLD-TGT
のデフォルトは
現在の作業コピーで、
NEW-TGT
のデフォルトは
OLD-TGT
になります。
N
のデフォルトは
BASE
ですが、もし
OLD-TGT
が URL であれば
HEAD
になります。
M
のデフォルトは現在の作業バージョン
ですが、もし NEW-TGT
が URL であれば
HEAD
になります。
svn diff -r Nは
OLD-TGT
のリビジョンを
N
に設定します。
svn diff -r N:M も
NEW-TGT
のリビジョンを
M
に設定します。
svn diff -r N:M URL は svn diff -r N:M --old=URL --new=URLの略記法です。
svn diff [-r N[:M]] URL1[@N] URL2[@M] は svn diff [-r N[:M]] --old=URL1 --new=URL2の略記法です。
TARGET
が URL なら N と M のリビジョンは
--revision
を経由したものであるか既に述べたように
「@」記法で指定されたものになります。
TARGET
が作業コピーパスであれば
--revision
スイッチの意味は:
--revision N:M
サーバは
TARGET
@N
と
TARGET
@M
を比較します。
--revision N
クライアントは
TARGET
@N
と作業コピーを比較します。
--revision
)クライアントは
TARGET
のベースリビジョンと作業コピーを
比較します。
別の構文を使うとサーバはそれぞれリビジョン
N
と
M
にある
URL1
と
URL2
を比較します。もしNかMが省略されれば
HEAD
の値が使われます。
デフォルトではsvn diffはファイルの系統を無視し、
単に比較対象になっている二つのファイルの内容を比較するだけです。
--notice-ancestry
を使うとリビジョンを比較する際に、
問題になっているパスの系統が考慮されます(つまり、同じ内容を持っては
いるが異なる系統を持つ二つのファイルに対してsvn
diffを実行すると、ファイル全体が一度削除され、
もう一度すべてが追加された形の結果を得ることになります)。
--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
BASE
リビジョンと作業コピーを比較します。(svn diff
の一番よくある使い方):
$ svn diff COMMITTERS Index: COMMITTERS =================================================================== --- COMMITTERS (revision 4404) +++ COMMITTERS (working copy)
作業コピーの変更を以前のリビジョンと比較する方法:
$ svn diff -r 3900 COMMITTERS Index: COMMITTERS =================================================================== --- COMMITTERS (revision 3900) +++ COMMITTERS (working copy)
リビジョン3000とリビジョン3500を「@」構文を使って比較:
$ 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) …
リビジョン3000とリビジョン3500を範囲指定で比較( この場合は一つのURLのみを渡せばいい):
$ svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk/COMMITTERS Index: COMMITTERS =================================================================== --- COMMITTERS (revision 3000) +++ COMMITTERS (revision 3500)
範囲指定によって trunk
にある全てのファイルの
リビジョン 3000 と リビジョン 3500 を比較する:
$ svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk
範囲指定によって trunk
にある三つのファイルに
ついてのみリビジョン 3000 と リビジョン 3500 を比較する:
$ svn diff -r 3000:3500 --old http://svn.collab.net/repos/svn/trunk COMMITTERS README HACKING
作業コピーがある場合、長い URL指定することなしに 相違点を取得することができます:
$ svn diff -r 3000:3500 COMMITTERS Index: COMMITTERS =================================================================== --- COMMITTERS (revision 3000) +++ COMMITTERS (revision 3500)
--diff-cmd
CMD
-x
を使って
外部 diff プログラムに直接引数を渡します
$ svn diff --diff-cmd /usr/bin/diff -x "-i -b" COMMITTERS Index: COMMITTERS =================================================================== 0a1,2 > This is a test >