SVNリポジトリ検索[終了]


155

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


6
リポジトリの履歴を検索する必要がありますか?それとも頭だけ?
swilliams 2008年

4
FishEyeの無料バージョンがあります-www.atlassian.com/starter
David d C e Freitas

1
@DavidFreitasには現在無料のオプションはありません
bahrep '10 / 07/13

FishEyeの$ 10バージョンがあります:www.atlassian.com/software/starter/overview、@ bahrep。オフになると、すべて慈善団体に寄付されます。
David d C e Freitas 2013年

1
新しいsvn log --searchオプションがあり、単純なリポジトリ履歴検索を探している人にとって便利かもしれません。
bahrep 2013

回答:


69

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

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

ウィンドウズ:

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

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

egrep -r _code_ .

3
完全には明らかではないかもしれませんが、これらのコマンドは、ファイルだけでなく、svnサーバーにアクセスするすべての方法に適用されます(例:svn:とsvn + ssh:も機能)
Alex Marshall

2
//、それらそれぞれの実用的な例を提供していただけませんか?
Nathan Basanese

1
OPは、ファイル名だけでなく、ファイル全体を検索したいと考えていました。ファイルシステム検索の例はあまり役に立ちません。
2017年


12

2020年1月の更新

VisualSVN Server 4.2は、Webインターフェイスでのファイルとフォルダーの検索をサポートしています。デモサーバーのリポジトリの 1つで新機能を試してみてください。

バージョン4.2のリリースノートを参照して、メインのダウンロードページからVisualSVN Server 4.2.0をダウンロードしてください

ここに画像の説明を入力してください


古い答え

Subversion 1.8--searchsvn logから、commandでオプションを使用できるようになりました。このコマンドはリポジトリ内で全文検索を実行しないことに注意してください。次のデータのみが考慮されます。

  • リビジョンの作者(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.

1
この方法は高速に機能しますが、ファイルの存在を検索するために使用しないでください。この検索オプションは、各リビジョンで明示的に変更されたパスのリストを解析するだけなので、特定のファイルが存在するフォルダーコピー(トランクから作成された新しいブランチ)を作成できますが、この方法ではリストされません。
Pieter-Jan Busschaert

@ Pieter-JanBusschaertあなたのコメントはsvn log --searchコマンドの使用についてです。新しいWebuiベースの検索に関する最新の回答をご覧ください。この制限はありません。
バーレップ


9
  1. git-svnそのリポジトリのミラーを作成します。
  2. 追加または削除された文字列をgit:内で検索git log -S'my line of code'するgitk

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


8

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

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

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


4
私の場合、httpプロトコルとして使用する必要があったことに注意してください(svn list -R http://repo/svn/etc)。
Charles Wood

OPはファイル名ではなくファイル全体を検索したかったため、反対票が投じられました。svn listコマンドは、リポジトリのファイル名のみをダンプします。
1

4

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


これはやや有望に見えますが、インストールはそれほど簡単ではなく、Trac + VisualSVN Serverで動作するかどうかを確認できません。
キットは

4

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

www.atlassian.com/starter


もう違います?ページに無料のオプションが表示されません。
bahrep 2013年

@bahrep、私は答えを更新しました、あなたがそれについて考えるならば、それは事実上「無料」である慈善に行く今$ 10です。
David d C e Freitas 2013年

3

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

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

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

PS。これを適切に行う方法を私に示す人への大規模な賛成投票!


3
だけを使用してくださいgit-svn。Gitには、コミット履歴内のコードの組み込み検索があります。ただし、使用するには、コミット履歴全体をダウンロードする必要がありますgit-svn
Vi。

2

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

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


1

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

大声で考えてください。


1
オーバーヘッドが大きくなるため、これはおそらく良いアイデアではありません。また、SVNサーバーは通常のWebページではありませんが、webdavを通じて公開されるsvnリポジトリです。
torkildr



0

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

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

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