1

r1 と r2 の 2 つのリビジョンがあります。r1 は、異なるファイルに異なる行を追加しました (そして他の変更も行いました)。r2 は、いくつかのファイルから r1 によって導入された行の一部を削除しました。r2 が r1 によって導入された行を削除したファイルのリストを取得する方法はありますか?

4

3 に答える 3

1

はい。

svn diff2 つのリビジョン間の統一された差分を提供します。--summarizeフラグを使用すると、ファイル名だけが一覧表示されます。

そのため、リビジョンとsvn diff -rR1:R2 --summarizeの間で影響を受けるすべてのファイルのリストが表示されます。R1R2

これらのファイルのそれぞれについて、grep を使用して、削除された行(つまり、文字"^-"で始まる行) のリストを取得できます。-

全体的なコマンドは次のようになります。

R1="your first revision value"
R2="your second revision value"
for i in $(svn diff -r${R1}:${R2} --summarize | cut -c9-)
do
   echo "Listing lines deleted between revisions ${R1} and ${R2} in file:${i}"
   echo "===================================================================="
   svn diff -r${R1}:${R2} ${i} | grep -in "^-"
   echo "===================================================================="
done

このcutコマンドは、の出力から先頭のステータス フラグとスペースを削除するために使用されますsvn -diff --summarize。一方、grep コマンドは、リビジョン間で削除済みとしてマークされた行を検索します。grepの-n引数は、影響を受ける変更の行番号を diff に出力するように指示します。これは元のファイルの行番号と同じではありませんが、同じ近傍にあります。

于 2013-11-20T12:21:20.043 に答える
0

ファイルのリストを変更したい場合は、フラグで使用svn logしたい--verbose

svn マニュアル

例えば:

svn log -v http://myrepo/files
于 2013-11-20T12:16:47.537 に答える
0

使ってみましたsvn diffか?

于 2013-11-20T12:13:24.710 に答える