SVNリポジトリのファイルから行を削除したユーザーを見つける方法は?


11

私は非常に大規模なプロジェクト(10000以上のバージョン)で作業しており、他のユーザーの誰がファイルの行を削除したかを知る必要がある場合があります。それを行う方法はありますか?svn blameリビジョン番号を使用して、そのリビジョンに行が存在するかどうかを確認し、どのリビジョンで行がなくなったかを確認し、だれがそのリビジョンをコミットしたかを確認できますが、その手順はその大きなプロジェクトでは不十分です。

それを行うためのよりスマートな方法はありますか?

回答:


5

これは自動的に必要なことを行いますが、上記のようにバイナリ検索を使用しないため、それほど高速ではありません。

svn log FILE | egrep '^r[0-9]' | sed -e 's/ .*//' | while read rev; do echo $rev ; svn cat FILE -"$rev" | grep "case STRING" && break  ; done 

5

私はファイルの履歴を確認し、その行が存在するリビジョンをすばやく見つけて見つけ、HEADとそのリビジョンの間に責任があります。

ファイルが最初から100のリビジョンを通過している場合、リビジョンをバイナリ検索してその行を探す場合、10を超える異なるリビジョンを調べる必要はありません。


私は意見を見ていない、それはすべて私への良いアドバイスのように見えます:P
Phoshi

1
これは私のアプローチと同じです。10のリビジョンを確認するよりも簡単な/速いものが欲しいです。
Ivan Petrushev 2010

... 10のリビジョンです。あなたが上記の質問を投稿したときまでに、あなたは今までに完了することができました。これがあなたがやり直さなければならないことでない限り、その場合は私のコメントを無視してください。
ta.speot.is

2
ええ、1回のショットには最適ですが、定期的に頻繁に使用できるものが必要です。
Ivan Petrushev 2010

2

svn log --diff列0が「-」の削除を識別します。"r"のGrepもあり、リビジョンを確認できます。

% svn log --diff src/fozbo.cpp -r22222:HEAD | grep -e '^r' -e '^-.*xyzzy'
r22222 | jruser | 2016-07-19 20:16:07 -0400 (Tue, 19 Jul 2016) | 1 line
-   else if ( password== "xyzzy") {

またsvn log --search、コミットメッセージのみが検索されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.