27

ソース管理システムとして SVN を使用していますが、メタデータの違いを無視してディレクトリを比較するにはどうすればよいでしょうか。svn diff実際のコンテンツのみを比較し、メタデータを無視するように指示する方法はありますか?

ファイルの内容に影響を与えないSVNプロパティなどのメタデータを意味します。ファイル X には、トランク T と比較してブランチ B に追加のプロパティがあると仮定します。残念ながら、ファイル X の実際の内容が同じであっても、「svn diff T B」に表示されます。

私はこのようなものを探します:

svn diff https://example.org/tags/v1 https://example.org/tags/v2 -x -ignore-metadata --summarize

更新: SVN ツールを使用する代わりに、ファイルシステムで直接 diff を実行することで、これを部分的に解決しました。以下の私自身の答えを参照してください...

4

10 に答える 10

25

svn diff 出力を「filterdiff --clean」に渡して、プロパティの変更を含む不要な行を削除できます。

于 2009-10-03T21:35:02.293 に答える
11

このオプションを使用する--summarizeと、プロパティの変更は最初の列ではなく2番目の列に表示されます。

つまり、

M  URL  -- indicates content change
 M URL  -- property change
MM URL  -- content and property change

grepするのは少し簡単です。完全な差分が必要な場合は、2段階のプロセスを使用できると思います。最初にsummaryを使用してコンテンツが変更されたファイルを検索し、次にそれらを差分します。

于 2009-02-05T08:29:36.633 に答える
7

svnヘルプドキュメントを検索中にこれを見つけました

svn diff --patch-compatible

走るのと同じだ

svn diff --show-copies-as-adds --ignore-properties
于 2013-09-24T14:42:18.983 に答える
6

JosephWatkinsからの素晴らしいヒント。

grep-junior-usersのコマンドは次のとおりです。

svn diff A B --summarize | grep '^. '

grepは、行の2番目の文字としてスペースを探します。

于 2009-02-19T15:56:46.660 に答える
3

svn 組み込みツールを使用してこれを行う方法はないようです。解決方法: 両方のツリーをエクスポートし、お気に入りの diff ツールを使用して、ファイルシステム上でそれらを直接比較します。それが何とかこれを成し遂げる唯一の方法です:/

于 2009-01-02T17:09:46.043 に答える
2

これらすべてを実行する単一のコマンドを次に示します。リビジョン 54833 と 57215 の間の現在のディレクトリにあるすべてのファイルのすべての (プロパティではない) 差分を見つけたいとします。次のコマンドで実行できます。

svn diff -r 54833:57215 --summarize | egrep -v '^ |^D|^A' | awk '{ print $2 }' | xargs svn diff -r 54833:57215

注意: 変更されたファイルのみを比較します。追加または削除されたファイルは比較しません。

于 2010-10-05T14:21:09.383 に答える
1

オンラインで見つけることができなかったので、これを行うためのスクリプトを書きました。

スクリプトは、スクリプトの先頭に入力された正規表現の配列に基づいてデータを削除します。現在、プロパティの変更を除外するように設定されていますが、一連の正規表現に一致する変更を削除できます。

svn diffスクリプトを設定した後、出力をスクリプトにパイプするだけです。常に同じフィルターを実行するため、パラメーターの代わりにフィルターをスクリプトに入れます。

GPLv2としてリリースしました。

clean_svn_diff.bash

于 2009-07-04T02:30:36.477 に答える
-1

よくわかりませんが、単純な 'svn diff | grep -iv "無視するもの"' が回避策になります。

于 2008-12-31T08:36:45.137 に答える
-6

svn diff で無視するファイルとディレクトリにsvn:ignoreプロパティを設定できます。

于 2008-12-31T08:59:24.983 に答える