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


26

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

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

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

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

注:


SVNリポジトリには.svnファイルは含まれませんが、SVN作業コピーには含まれます。それはおそらく作業コピーの問題についてです
サンダーライケン09

回答:


11

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

F:\ projects \

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

解決策を試す前に、問題を再現します。

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

溶液:

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

最初に次のコマンドを実行して、これを見つけました: csmcmd.exe /enumerate_rules、既存のすべてをリストします。Windowsで使用されているアスタリスク(*)ワイルドカードを使用したルールが既にいくつかあるため、これが可能であったことを証明しました。

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

更新:私のSVNプロジェクトには「.svn」を使用するものと、「_ svn」を使用するものがあるため、これらの2つのルールをすべてのドライブに追加しました。

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


これの有効性に関する最新情報はありますか?
ジョナサンデイ

私のために働く!良い説明、ギスカード!
クリストファーオズベク

私はこの方法を1年間使用しましたが、私にとっては完璧に機能しました。
ギスカルビアンビー

1
リンクは機能していませんが、これはMS SDKに含まれているサンプルアプリであり、個別に利用できます。ソースはこちら:msdn.microsoft.com/en-us/library/windows/desktop/…-Microsoftがまだバイナリをホストしているかどうかはわかりません。`。\ csmcmd / add_rule" file:/// c:* \ .git * "/ DEFAULT / EXCLUDE`を使用して、gitリポジトリを除外しました。
ライアンパブリク

5

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

a)SVNリポジトリを別の場所に置く

b)これらのフォルダーをインデックスから除外する。ここでは、フォルダーを除外する方法を説明します。


7
リポジトリにインデックスを付けたいのですが、svnメタデータファイルだけではありません。
ジェームス・ヴァン・ボクテル

4

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

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

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


2

ブルートフォース法

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

WDSグループポリシーにはのオプションがありますがPrevent Indexing Certain Paths、機能チャートによると、Windows Vistaで利用可能なリストはありません。

サポート対象:Windows XP、Windows Search 3.01を搭載したWindows Server 2003、またはWindows Search 4.0以降を搭載したMicrosoft Windowsの任意のバージョン。


1
この回避策は知っていましたが、自動ではありません。目標は、自動的に作成される新しいフォルダーにこの動作を持たせることです。
ジェームス・ヴァン・ボクステル

1

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

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

レジストリを調整することにより、基本的にWindows Searchに.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がある場合は、別の番号を選択します)。


DefaultRulesにはItemCount dwordが含まれていることに気付きました。必要かどうかはわかりませんが、追加のルールを説明するためにこの値を増やしました。
ガップル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.