SVN リポジトリと windows インデックスサービスが .svn メタデータファイルを巡って争うという既知の問題があります。詳細はこちらをご覧ください
Windows (Vista/Win7) でサブバージョンのリポジトリが自動的にインデックス化されても問題がないように設定するにはどうしたらいいでしょうか?(レポディレクトリを追加するたびに手動で何かをする必要はありません)
1つのアイデアは、Windowsが自動的に”.svn “という名前のフォルダをインデックスしないように設定することですが、私はこれを行う方法を見つけることができません
特定の拡張子を無効にできることは知っていますが、svnのメタデータファイルはフォルダ内にあるので、それはうまくいかないようです
Note: The
26 James Van Boxtel 2009-12-10
私も同じ問題を抱えていて、解決策を見つけました。私のコードはすべて一つのフォルダの下に保存されています
F:\projects\
このフォルダの下には、コードのツリーと関連するプロジェクトファイルがあり、合計で 2GB を超えています。私は常にこのツリーを検索する必要があり、Windows Indexing は高速検索を行うための非常に便利なツールであるため、これをオフにすることはオプションではありませんでした。SVNフォルダを除外したいのは、検索結果を乱雑にしてしまう、(2)システムに不要なドラッグがかかる、(3)SVN、Win7、MS Security Essentialsは、大規模なSVN操作をするときにうまく動作しないようだからです
解決策を試す前に、問題を再現してみてください
- Windows Explorerで、インデックス化されたプロジェクトのルート(F:\projects on my machine)に移動します
- エクスプローラーのウィンドウの右上にある検索バーを使って、「svn」(引用符なし)を検索します
- SVNファイルや「.svn」や「svn-base」のような無用なSVNファイルやフォルダが何兆個も結果に表示されているのが分かるはずです
Solution:
- http://code.msdn.microsoft.com/windowssearch/ をご覧ください
- Download CrawlScopeCommandLine.zip
- マシン上のどこかに展開し、プロジェクトをコンパイルします
- 管理者権限でコンソールウィンドウを開きます(スタートメニューの「コマンドプロンプト」項目をCtrl+Shift+左クリック)
- 上記のプロジェクトをコンパイルした場所に移動します
- csmcmd.exe を /add_rule パラメーターを指定して実行してください (構文は最初に /?を使用してください)
- 私の場合は以下のコマンドを入力しました。
csmcmd.exe /add_rule file:///F:\projects\*\.svn\* /USER /EXCLUDE
私は最初にコマンドを実行することでこれを理解しました。csmcmd.exe /enumerate_rules
を実行して、既存のものをすべてリストアップしました。Windowsではすでにアスタリスク (*) ワイルドカードが使われているルールがあったので、これが可能であることを証明してくれました
問題を再現するための手順を繰り返すと、検索結果に SVN が乱雑に表示されなくなるはずです。コンピュータにインデックスを更新する時間を与えてください — 私のシステムでは5分もかかりませんでした。検索サービスを再起動したり、再構築/インデックスを起動したり、再起動したりすることで、問題が解決することもあります
更新:私のSVNプロジェクトの中には「.svn」を使用しているものと、「_svn」を使用しているものがあるので、この2つのルールをすべてのドライブに追加しました
csmcmd.exe /add_rule file:///F:\*\.svn\* /DEFAULT /EXCLUDE
csmcmd.exe /add_rule file:///F:\*\_svn\* /DEFAULT /EXCLUDE
11 Giscard Biamby 2010-12-18
AFAIKでは、Windows 7のWindows Indexingサービスは、デフォルトではUsersフォルダの中を探すだけです(間違っていたら訂正してください)。SVN リポジトリを個人フォルダ内に持っているのであれば、それが可能です
a) SVN リポジトリを別の場所に置く
b) インデックスからそれらのフォルダを除外することによって。ここでは、フォルダを除外する方法を紹介します
5 LaughingMan 2009-12-10
明らかな修正点は、Subversion が .svn ディレクトリを作成するときに、この “don’t index” フラグを設定するように Subversion を変更することでしょう。問題は、この機能が導入されたときにはもう必要ないということです
この既知の問題は、現在開発中の Subversion バージョン (バージョン 1.7) で解消される可能性が高いです。.svn ディレクトリ内でのファイル操作が大幅に減り、作業コピーごとに 1 つの .svn ディレクトリだけになります
これにより、問題が発生する可能性が低くなり、また、.svn フォルダが一つあるだけなので、インデックスを無効にするのがはるかに簡単になります
4 Sander Rijken 2009-12-28
- すべての.svnディレクトリを検索してください
- すべてを選択 (ctrl+a)
- プロパティを右クリックします
- click “advance…”
- このフォルダをインデックス化して高速検索する」のチェックを外します
- かえる
WDS グループ ポリシー には Prevent Indexing Certain Paths
のオプションがありますが、機能表によると Windows Vista で利用できるとは記載されていません
サポートされています。Windows XP、Windows Server 2003、Windows Search 3.01、またはWindows Search 4.0以降のMicrosoft Windowsのいずれかのバージョンでサポートされています
2 Darren Hall 2009-12-10
ダレン・ホールズの答えが “Brute Force “アプローチなら、私の答えは “Brute Force and Ignorance “アプローチでなければなりません。)
これは、ドキュメントやプロジェクト管理にSVNを使用しているため、最近私を悩ませていることで、Windowsのインデクサは、不明瞭なドキュメントを検索することができるようになると非常に便利ですが、すべてのSVNストレージファイルをキャッチしても役に立たないということです
これは、Windowsのバッチファイルでの私の(むしろ醜い)解決策です
ATTRIB /S /D -H ".svn"
ATTRIB /S /D +I ".svn"
ATTRIB /S /D +I "all-wcprops"
ATTRIB /S /D +I "entries"
ATTRIB /S /D +I "tmp"
ATTRIB /S /D +I "props"
ATTRIB /S /D +I "text-base"
ATTRIB /S /D +I "prop-base"
ATTRIB /S /D +I "*.svn-base"
ATTRIB /S /D +H ".svn"
最初と最後の行は、ATTRIB が隠しフォルダへの +I スイッチの適用を拒否するためです。これを “svnNoIndex.bat” のようなファイルにコピーして、SVN のチェックアウトディレクトリで実行する必要があります
現在Vistaで最新のサービスパックを使ってテストしていますが、Windows 7でも動作することを期待しています。これを行うことでインデックスがインデックスされていないとマークされたファイルを考慮してインデックスを再構築する必要があるかどうかはわかりませんが、私はとにかく私のものを再構築する必要があるので、インデックスが再構築される間、それはわずか数日なので、それは私がやっていることです
これを「自動」にするためには、バッチファイルを更新後に実行される更新後フックとして追加することができます
1 Mokubai 2010-07-27
レジストリを微調整することで、基本的にWindows検索が.svnフォルダを無視するように指示することができます
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search\CrawlScopeManager\Windows\SystemIndex\DefaultRules\11]
"URL"="file:///*\\.svn\\*"
"Include"=dword:00000000
"Suppress"=dword:00000000
"Default"=dword:00000001
"Policy"=dword:00000000
URL は、ファイルシステム上の “.svn” という名前のフォルダにマッチします。(デフォルトルールの後の数字は一意でなければなりません – つまり、すでにデフォルトルール11がある場合は、別の数字を選択してください)
1 Grynn 2011-12-02