svn diff — 二つのパスやリビジョン間の差分を表示します。
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]
二つのパス間の差分を表示します。svn diffには、以下の使い方があります。
作業コピーの手元の変更を表示するには、ただ svn diff' としてください。
REV
の二つのリビジョン間に現れる、TARGET
にされた変更を表示します。TARGET
はすべて作業コピーのパスか、すべて URL
です。TARGET
が作業コピーのパスの場合、N
のデフォルト値は BASE
で、M
のデフォルトは作業コピーです。URL
の場合、N
は指定せねばならず、M
のデフォルト値は HEAD
です。「-c M」 オプションは、N = M-1
の状態の 「-r N:M」 と等価です。「-c -M」 は逆 (N = M-1
の状態の 「-r M:N」) になります。
OLDREV
にある OLD-TGT
と、NEWREV
にある NEW-TGT
の差分を表示します。PATH
を与えた場合、OLD-TGT
と NEW-TGT
は PATH
からの相対パスとなり、差分の出力もそこからに制限されます。OLD-TGT
と NEW-TGT
は、作業コピーのパスか URL[@REV]
になります。指定しないと、NEW-TGT
のデフォルトは OLD-TGT
です。「-r N」 とすると OLDREV のデフォルトは N になり、-r N:M とすると OLDREV
のデフォルトは N
で、NEWREV
のデフォルトは M
になります。
svn diff --old=OLD-URL[@OLDREV] --new=NEW-URL[@NEWREV] の省略表現
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) ARG --change (-c) ARG --old ARG --new ARG --non-recursive (-N) --diff-cmd CMD --extensions (-x) "ARGS" --no-diff-deleted --notice-ancestry --summarize --force --username USER --password PASS --no-auth-cache --non-interactive --config-dir DIR
BASE
リビジョンと作業コピーを比較します (svn diff のもっとも使われる使用法です)。
$ svn diff COMMITTERS Index: COMMITTERS =================================================================== --- COMMITTERS (リビジョン 4404) +++ COMMITTERS (作業コピー)
COMMITTERS
ファイルのリビジョン 9115 との変更を表示します。
$ svn diff -c 9115 COMMITTERS Index: COMMITTERS =================================================================== --- COMMITTERS (リビジョン 3900) +++ COMMITTERS (作業コピー)
作業コピーの変更を、以前のリビジョンと比較する方法にはこのようにします。
$ svn diff -r 3900 COMMITTERS Index: COMMITTERS =================================================================== --- COMMITTERS (リビジョン 3900) +++ COMMITTERS (作業コピー)
リビジョン 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 (リビジョン 3000) +++ COMMITTERS (リビジョン 3500) …
リビジョン 3000 とリビジョン 3500 を範囲指定で比較 (この場合は一つの URL のみを渡す) します。
$ svn diff -r 3000:3500 http://svn.collab.net/repos/svn/trunk/COMMITTERS Index: COMMITTERS =================================================================== --- COMMITTERS (リビジョン 3000) +++ COMMITTERS (リビジョン 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 (リビジョン 3000) +++ COMMITTERS (リビジョン 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 >