web-dev-qa-db-ja.com

.svnメタデータのインデックス作成からWindows7を自動的に無効にする

SVNリポジトリとWindowsインデックスサービスが.svnメタデータファイルをめぐって争うという既知の問題があります。 詳細はこちら

Windows(Vista/Win7)によってインデックス付けされたSubversionリポジトリで問題が発生しないように自動的に設定するにはどうすればよいですか? (リポジトリディレクトリを追加するたびに手動で何かをする必要はありません。)

1つのアイデアは、「。svn」という名前のフォルダーに自動的にインデックスを付けないようにWindowsをセットアップすることですが、これを行う方法が見つかりません。

特定の拡張機能を無効にできることは知っていますが、svnメタデータファイルがフォルダーにあるため、機能しないようです。

注:

26

私は同じ問題を抱えていて、解決策を見つけました。私のコードはすべて1つのフォルダーに保存されます。

F:\ projects \

そのフォルダの下には、合計2GBを超えるコードと関連プロジェクトファイルのツリーがあります。私は常にこのツリーとウィンドウを検索する必要があります。インデックス作成は実際には高速検索を行うための非常に便利なツールであるため、オフにすることはできませんでした。 SVNフォルダーを除外したいのは、検索結果が乱雑になる、(2)システム上で不要なドラッグが発生する、(3)SVN、Win7、およびMS Security Essentialsが、大規模なSVN操作を実行するとうまく機能しないように見えるためです。

解決策を試す前に、問題を再現してください:

  1. Windowsエクスプローラーで、インデックス付けされたプロジェクトルート(私のマシンではF:\ projects \)に移動します。
  2. エクスプローラーウィンドウの右上隅にある検索バーを使用して、「svn」を検索します(引用符なし)
  3. 結果には、「。svn」や「svn-base」など、1兆個の役に立たないSVNファイルとフォルダーが表示されます。

解決策:

  1. 訪問 http://code.msdn.Microsoft.com/windowssearch/
  2. CrawlScopeCommandLine.Zipをダウンロードする
  3. マシンのどこかに抽出し、プロジェクトをコンパイルします
  4. 管理者権限でコンソールウィンドウを開きます([スタート]メニューの[コマンドプロンプト]項目をCtrl + Shift +左クリック)。
  5. 上記のプロジェクトをコンパイルした場所に移動します。
  6. / add_rule paramを指定してcsmcmd.exeを実行します(構文には最初に/?を使用します)。
  7. 私の場合、次のコマンドを入力しました:csmcmd.exe /add_rule file:///F:\projects\*\.svn\* /USER /EXCLUDE

私は最初にコマンドを実行することによってこれを理解しました:csmcmd.exe /enumerate_rules、既存のものをすべて一覧表示します。 Windowsでアステリックス(*)ワイルドカードが使用されているルールがすでにいくつかあったため、これが可能であることが証明されました。

ここで手順を繰り返して問題を再現すると、検索結果にSVNが乱雑に表示されなくなります。コンピューターにインデックスを更新する時間を与えます。これは私のシステムでは5分もかかりませんでした。検索サービスを再起動したり、再構築/インデックスの再作成を開始したり、再起動したりすると、問題が解決する場合があります。

Update:一部のSVNプロジェクトは「.svn」を使用し、一部は「_svn」を使用するため、すべてのドライブに次の2つのルールを追加しました。

csmcmd.exe /add_rule file:///F:\*\.svn\* /DEFAULT /EXCLUDEcsmcmd.exe /add_rule file:///F:\*\_svn\* /DEFAULT /EXCLUDE

11
Giscard Biamby

AFAIK、Windows7のWindowsIndexingサービスは、デフォルトでユーザーフォルダー内のみを検索します(間違っている場合は修正してください)。個人用フォルダー内にSVNリポジトリーがある場合は、次のことができます。

a)SVNリポジトリを別の場所に配置する

b)それらのフォルダをインデックスから除外する。 ここ フォルダを除外する方法がわかります。

5
LaughingMan

明らかな修正は、Subversionを変更して、.svnディレクトリを作成するたびにこの「インデックスを作成しない」フラグを設定することです。問題は、この機能が導入されたときに不要になることです。

既知の問題は、現在開発中のSubversionバージョン(バージョン1.7)で解消される可能性があります。 .svnディレクトリ内のファイル操作ははるかに少なくなり、作業コピーごとに1つの.svnディレクトリもあります。

これにより、問題が発生する可能性が低くなり、.svnフォルダーが1つしかないため、インデックス作成を無効にするのがはるかに簡単になります。

4
Sander Rijken

ブルートフォース方式

  1. すべての.svnディレクトリを検索します
  2. すべて選択(ctrl + a)
  3. マウスの右クリックプロパティ
  4. 「進む...」をクリックします
  5. 「検索を高速化するためにこのフォルダにインデックスを付ける」のチェックを外します
  6. 変更を適用する

WDSグループポリシーPrevent Indexing Certain Pathsのオプションがありますが、機能チャートによると、WindowsVistaで使用できるようにリストされていません。

サポート対象:Windows XP、Windows Search3.01を搭載したWindowsServer 2003、またはWindows Search4.0以降を搭載した任意のバージョンのMicrosoftWindows。

2
Darren Hall

ダレンホールの答えが「ブルートフォース」アプローチである場合、私の答えは「ブルートフォースアンドイグノランス」アプローチでなければなりません。 :)

これは、ドキュメントとプロジェクトの管理に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

レジストリを微調整することで、基本的にWindowsSearchに.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