r1 と r2 の 2 つのリビジョンがあります。r1 は、異なるファイルに異なる行を追加しました (そして他の変更も行いました)。r2 は、いくつかのファイルから r1 によって導入された行の一部を削除しました。r2 が r1 によって導入された行を削除したファイルのリストを取得する方法はありますか?
3 に答える
1
はい。
svn diff
2 つのリビジョン間の統一された差分を提供します。--summarize
フラグを使用すると、ファイル名だけが一覧表示されます。
そのため、リビジョンとsvn diff -rR1:R2 --summarize
の間で影響を受けるすべてのファイルのリストが表示されます。R1
R2
これらのファイルのそれぞれについて、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
于 2013-11-20T12:16:47.537 に答える
0
使ってみましたsvn diff
か?
于 2013-11-20T12:13:24.710 に答える