web-dev-qa-db-ja.com

SVNリポジトリ検索

SVNリポジトリでコードスニペットを検索できる優れたソフトウェアはありますか? 「FishEye」を見つけましたが、費用は1,200で、予算を大きく超えています。

154
John

ファイル名のみを検索する場合は、次を使用します。

svn list -R file:///Subversion/repository | grep filename

Windows:

svn list -R file:///Subversion/repository | findstr filename

それ以外の場合は、チェックアウトしてファイルシステム検索を実行します。

egrep -r _code_ .
67
phil_w

sourceforge.net/projects/svn-search があります。

http://svnquery.tigris.org で利用可能なSvnQueryと呼ばれるSVNホームから直接Windowsアプリケーションもあります

37
Elmar Weber

Subversion 1.8では、--searchコマンドでsvn logオプションを使用できます 。このコマンドは、リポジトリ内で全文検索を実行せず、次のデータのみを考慮することに注意してください。

  • リビジョンの作成者(svn:authorバージョン管理されていないプロパティ)、
  • 日付(svn:dateバージョン管理されていないプロパティ)、
  • ログメッセージテキスト(svn:logバージョン管理されていないプロパティ)、
  • 変更されたパスのリスト(つまり、特定のリビジョンの影響を受けるパス)。

これらの新しい検索オプションに関するヘルプページは次のとおりです。

 If the --search option is used, log messages are displayed only if the
 provided search pattern matches any of the author, date, log message
 text (unless --quiet is used), or, if the --verbose option is also
 provided, a changed path.
 The search pattern may include "glob syntax" wildcards:
     ?      matches any single character
     *      matches a sequence of arbitrary characters
     [abc]  matches any of the characters listed inside the brackets
 If multiple --search options are provided, a log message is shown if
 it matches any of the provided search patterns. If the --search-and
 option is used, that option's argument is combined with the pattern
 from the previous --search or --search-and option, and a log message
 is shown only if it matches the combined search pattern.
 If --limit is used in combination with --search, --limit restricts the
 number of log messages searched, rather than restricting the output
 to a particular number of matching log messages.
11
bahrep
10
Ben Noland
  1. そのリポジトリのgit-svnミラーを作成します。
  2. Git内で追加または削除された文字列を検索:git log -S'my line of code'またはgitkで同じ

利点は、サーバーおよびネットワーク接続をロードせずに、ローカルで多くの検索を実行できることです。

9
Vi.

この例では、リポジトリの完全なコンテンツをファイルにパイプし、エディター内でファイル名をすばやく検索できます。

svn list -R svn://svn > filelist.txt

これは、リポジトリが比較的静的であり、SVNサーバーからすべてを繰り返しロードすることなく迅速な検索を実行する場合に役立ちます。

8
Contango

私はTRACが好きです-このプラグインはあなたのタスクに役立つかもしれません: http://trac-hacks.org/wiki/RepoSearchPlugin

4
Kai

FishEye (および他の多くのアトラシアン製品)には、$ 10 Starter Editionがあります。 FishEyeには5つのリポジトリがあり、最大10人のコミッターがアクセスできます。この場合、お金は慈善団体に寄付されます。

www.atlassian.com/starter

4

痛々しいほど遅い(そして大雑把に実装されている)が、単一のファイルや小さなリポジトリの履歴を検索している場合、svn logとsvn catの組み合わせは機能する:

svn log filetosearch |
    grep '^r' |
    cut -f1 -d' ' |
    xargs -i bash -c "echo '{}'; svn cat filetosearch -'{}'" 

ファイルが変更された各リビジョン番号とファイルを出力します。各リビジョンを別のファイルに常にcatしてから、変更をgrepすることができます。

PS。これを適切に行う方法を教えてくれる人に大賛成です!

3
Ken

本当に必死なら、レポのダンプを行い( "svnadmin dump"を見てください)、それからgrepします。見栄えはよくありませんが、検索結果を見て、ファイルとリビジョンを示すメタデータを見つけてから、より良い外観を確認することができます。

確かに良い解決策ではありませんが、無料です:) SVNには、過去のチェックイン(または過去のログファイルでさえも)を検索する機能はありません。

2
rmeador

このツールを使い始めました

http://www.supose.org/wiki/supose

視覚的なUIがなくても正常に動作しますが、高速で、ある程度維持されます

1
Kuryaki

SVNリポジトリの多くは「単純な」HTTPサイトであるため、SVNルートを指すことができ、基本的な機能を提供する市販の「ウェブクロール」検索アプリを検討することを検討してください。それを更新するのはおそらくちょっとしたトリックになるでしょう。おそらく、ハッカーのSVNチェックによって、インデックスをくすぐることができ、変更を破棄したり、インデックスを変更したりできます。

大声で考えてください。

1
Will Hartung

クルーグルとコーダーがありますが、どちらも高価です。どちらにもEclipse用のideプラグインがあります。

1

//編集:ツールは別の回答で既に言及されているので、すべてのクレジットをKuryakiに与えます。

ちょうど見つかった SupoSE これは、リポジトリをスキャンしてインデックスを作成するJavaベースのコマンドラインツールであり、その後、特定の種類のクエリに答えることができます。まだツールを評価していますが、有望に見えます。ソースコードファイルや一般的なオフィスフォーマットを含むすべてのリビジョンの完全なインデックスを作成することに言及する価値があります。

0
jek