Автоматическое отключение Windows 7 от индексации метаданных .svn

7471
James Van Boxtel

Существует известная проблема с SVN-репозиториями и службой индексации окон, борющимися за файлы метаданных .svn. Здесь для более подробной информации.

Как мы можем настроить его так, чтобы автоматически не возникало проблем с индексированием хранилищ Subversion в Windows (Vista / Win7). (Мы не хотим делать что-то вручную каждый раз, когда добавляем каталог репо.)

Одна идея состоит в том, чтобы настроить Windows, чтобы автоматически не индексировать папки с именем «.svn», однако я не могу найти способ сделать это.

Я знаю, что вы можете отключить некоторые расширения, но это не работает, так как файлы метаданных svn находятся в папке.

Обратите внимание

26
Репозитории SVN не содержат файлов .svn, а рабочие копии SVN. Это, вероятно, из-за проблем с копированием Sander Rijken 14 лет назад 0

6 ответов на вопрос

11
Giscard Biamby

У меня была такая же проблема, и я нашел решение. Весь мой код хранится в одной папке:

F: \ Projects \

В этой папке находятся деревья кода и связанные файлы проекта, которые занимают более 2 ГБ. Мне постоянно нужно искать в этом дереве и окнах. Индексирование на самом деле было чрезвычайно полезным инструментом для быстрого поиска, поэтому отключить его было невозможно. Я хочу исключить папки SVN, потому что они загромождают мои результаты поиска, (2) ненужное перетаскивание в моей системе, (3) SVN, Win7 и MS Security Essentials, кажется, не работают хорошо при выполнении больших операций SVN.

Прежде чем попробовать решение, воспроизведите проблему:

  1. В проводнике Windows перейдите к индексируемому корневому каталогу проекта (F: \ projects \ на моем компьютере).
  2. Используя панель поиска в правом верхнем углу окна проводника, выполните поиск по запросу «svn» (без кавычек).
  3. Вы должны увидеть триллион бесполезных файлов и папок SVN, таких как ".svn" и "svn-base", которые появятся в результатах.

Решение:

  1. Посетите http://code.msdn.microsoft.com/windowssearch/
  2. Скачать CrawlScopeCommandLine.zip
  3. Распакуйте в какое-нибудь место на вашем компьютере и скомпилируйте проект
  4. Откройте окно консоли с правами администратора (Ctrl + Shift + щелчок левой кнопкой мыши на элементе «Командная строка» в меню «Пуск»).
  5. Перейдите туда, куда вы скомпилировали вышеуказанный проект.
  6. Запустите csmcmd.exe с параметром / add_rule (сначала используйте синтаксис /?).
  7. В моем случае я ввел следующую команду: csmcmd.exe /add_rule file:///F:\projects\*\.svn\* /USER /EXCLUDE

Я понял это, сначала запустив команду:, csmcmd.exe /enumerate_rulesчтобы получить список всех существующих. Уже было несколько правил использования подстановочного знака asterix (*) в Windows, так что это было доказательством того, что это возможно.

Теперь повторите шаги, чтобы воспроизвести проблему, и вы больше не должны видеть беспорядок SVN в ваших результатах поиска. Дайте компьютеру время для обновления индексов - на моей системе это заняло менее 5 минут. Иногда перезапуск службы поиска, запуск перестройки / переиндексации или перезагрузка помогают двигаться дальше.

Обновление : некоторые из моих проектов SVN используют ".svn", а некоторые используют "_svn", поэтому я добавил эти два правила для каждого диска:

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

Любое обновление об эффективности этого? Jonathan Day 13 лет назад 0
Работает для меня! Хорошее объяснение, Жискар! Christopher Oezbek 13 лет назад 0
Я использовал этот метод в течение года, и он работал безупречно для меня. Giscard Biamby 12 лет назад 0
Ссылка не работает, но это пример приложения, включенного в MS SDK, а также доступного отдельно. Источник находится здесь: https://msdn.microsoft.com/en-us/library/windows/desktop/dd940334(v=vs.85).aspx - не уверен, что Microsoft по-прежнему размещает двоичный файл. Я использовал `. \ Csmcmd / add_rule" file: /// c: \ * \ .git \ * "/ DEFAULT / EXCLUDE`, чтобы исключить мои репозитории git. Ryan Pavlik 9 лет назад 1
5
LaughingMan

AFAIK, служба индексирования Windows в Windows 7 по умолчанию выглядит только в папке «Пользователи» (поправьте меня, если я ошибаюсь). Если у вас есть SVN-репозитории в вашей личной папке, вы можете:

а) Размещение ваших репозиториев SVN в другом месте

б) Исключив эти папки из индекса. Здесь вы найдете, как исключить папку.

Я хочу, чтобы мои репозитории были проиндексированы, но не файлы метаданных SVN. James Van Boxtel 14 лет назад 7
4
Sander Rijken

The obvious fix would be to change Subversion to set this "don't index" flag whenever it creates a .svn directory. The problem is that this feature will be no longer needed when it's introduced.

The known problem will most likely go away in the Subversion versions that's currently being developed (version 1.7). There will be far less file operations inside the .svn directory, and also just 1 .svn directory per working copy.

This makes it less likely that the problem will occur, and also makes it far easier to disable indexing, because there's just a single .svn folder.

2
Darren Hall

Метод грубой силы

  1. сделать поиск по всему каталогу .svn
  2. выбрать все (ctrl + a)
  3. свойства щелчка правой кнопкой мыши
  4. нажмите «продвинуть ...»
  5. снимите флажок «Индексировать эту папку для быстрого поиска»
  6. применить изменения

В групповой политике WDS есть опция для Prevent Indexing Certain Paths, но она не указана в списке доступных для Windows Vista в соответствии с функциональной схемой.

Поддерживается: Windows XP, Windows Server 2003 с Windows Search 3.01 или любой версией Microsoft Windows с Windows Search 4.0 или более поздней версии.

Я знал об этом обходном пути, однако он не является автоматическим. Цель состоит в том, чтобы новые папки, которые создаются автоматически, имели такое поведение. James Van Boxtel 14 лет назад 1
1
Mokubai

Если ответ Даррена Холла - это метод "грубой силы", то мой ответ должен быть подходом "грубой силы и невежества". :)

Это то, что меня недавно раздражало, поскольку мы используем 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
Grynn

По сути, вы можете указать 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. Не уверен, что это необходимо, но я увеличил это значение, чтобы учесть дополнительное правило. gapple 12 лет назад 0