SVNリポジトリでコードスニペットを検索できる優れたソフトウェアはありますか?「FishEye」を見つけましたが、コストは1,200で、予算をはるかに超えています。
14 に答える
ファイル名のみを検索する場合は、次を使用します。
svn list -R file:///subversion/repository | grep filename
ウィンドウズ:
svn list -R file:///subversion/repository | findstr filename
それ以外の場合は、チェックアウトしてファイル システム検索を実行します。
egrep -r _code_ .
sourceforge.net/projects/svn-searchがあります。
http://svnquery.tigris.orgで入手可能な SvnQuery と呼ばれる SVN ホームから直接 Windows アプリケーションもあります。
git-svn
そのリポジトリのミラーを作成します。- git: 内で追加または削除された文字列を検索します
git log -S'my line of code'
。gitk
利点は、サーバーとネットワーク接続に負荷をかけることなく、ローカルで多くの検索を実行できることです。
この例では、リポジトリの完全なコンテンツをファイルにパイプします。これにより、エディター内でファイル名をすばやく検索できます。
svn list -R svn://svn > filelist.txt
これは、リポジトリが比較的静的で、SVN サーバーからすべてを繰り返しロードすることなく迅速に検索したい場合に便利です。
注意点として、FishEye(および他の多くのアトラシアン製品)には10ドルのスターターエディションがあり、FishEyeの場合は5つのリポジトリと最大10人のコミッターにアクセスできます。この場合、お金はチャリティーに寄付されます。
私はTRACが好きです - このプラグインはあなたのタスクに役立つかもしれません: http://trac-hacks.org/wiki/RepoSearchPlugin
非常に遅い (そして大雑把に実装されている) が、svn log と svn cat の組み合わせは、単一のファイルまたは小さなリポジトリの履歴を検索する場合に機能します。
svn log filetosearch |
grep '^r' |
cut -f1 -d' ' |
xargs -i bash -c "echo '{}'; svn cat filetosearch -'{}'"
ファイルが変更された各リビジョン番号とファイルを出力します。各リビジョンを別のファイルに常に cat してから、変更を grep することができます。
PS。これを適切に行う方法を教えてくれる人には大賛成です!
本当に絶望的な場合は、レポのダンプ (「svnadmin ダンプ」を参照) を実行してから、grep を実行してください。見栄えはよくありませんが、検索結果をざっと見て、ファイルとリビジョンを示すメタデータを見つけ、それを調べて見栄えを良くすることができます。
確かに良い解決策ではありませんが、無料です:) SVNには、過去のチェックイン(または過去のログファイル、AFAIKでさえ)を検索する機能はありません。
krugle と koders がありますが、どちらも高価です。どちらにも Eclipse 用の ide プラグインがあります。
多くの SVN リポジトリは「単純な」HTTP サイトであるため、SVN ルートを指すことができる既製の「Web クロール」検索アプリを検討することを検討すると、基本的な機能が提供されます。それを更新するのはおそらくちょっとしたトリックになるでしょう。おそらく、ハッカーのSVNチェックがインデックスをくすぐり、変更を破棄または再インデックス化することができます。
大声で考えているだけです。
// 編集: ツールは別の回答で既に言及されているため、Kuryaki にすべてのクレジットを与えます。
リポジトリをスキャンしてインデックスを作成し、その後特定の種類のクエリに応答できる Java ベースのコマンド ライン ツールであるSupoSEを見つけました。このツールはまだ評価中ですが、有望に見えます。ソース コード ファイルと一般的なオフィス フォーマットを含むすべてのリビジョンの完全なインデックスを作成することは、言及する価値があります。