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