26

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

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

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

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

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

6 ответов6

11

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

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

5

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

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

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

4

Очевидным решением будет изменение Subversion для установки этого флага «не индексировать» всякий раз, когда он создает каталог .svn. Проблема в том, что эта функция больше не будет нужна, когда она будет представлена.

Известная проблема, скорее всего, исчезнет в разрабатываемых в настоящее время версиях Subversion (версия 1.7). В каталоге .svn будет намного меньше файловых операций, а также только 1 каталог .svn на рабочую копию.

Это снижает вероятность возникновения проблемы, а также значительно упрощает отключение индексирования, поскольку существует только одна папка .svn.

2

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

  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 или более поздней версии.

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, выберите другое число).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .