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


26

Існує відома проблема зі сховищами SVN та службою індексації Windows, що бореться за файли метаданих .svn. Ось детальніше.

Як ми можемо це налаштувати, щоб автоматично не виникало проблем із субверсійними сховищами, індексованими Windows (Vista / Win7). (Не хочеться вручну робити щось щоразу, коли ми додаємо каталог репо.)

Одна ідея - налаштувати Windows так, щоб він автоматично не індексував папки з назвою ".svn", проте я не можу знайти спосіб це зробити.

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

Примітка


SVN-сховища не містять файлів .svn, а робочі копії SVN. Ймовірно, йдеться про проблеми з робочою копією
Сандер Рійкен

Відповіді:


11

У мене була та сама проблема, і я знайшов рішення. Весь мій код зберігається в одній папці:

F: \ проекти \

Під цією папкою знаходяться дерева коду та пов’язані з ними файли проектів, що мають більше 2 Гб. Мені постійно потрібно шукати це дерево та Windows. Індексація насправді була надзвичайно корисним інструментом для швидкого пошуку, тому відключити його не було можливим. Я хочу виключити папки SVN, оскільки вони захаращують мої результати пошуку, (2) непотрібне перетягування моєї системи, (3) SVN, Win7 та MS Security Essentials, здається, не працюють добре при великих операціях SVN.

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

  1. У Windows Explorer перейдіть до індексованого кореня проекту (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


будь-яке оновлення щодо ефективності цього?
День Джонатана

Для мене працює! Гарне пояснення, Жискаре!
Крістофер Оезбек

Я використовую цей метод вже рік, і він працює бездоганно на мене.
Giscard Biamby

1
Посилання мертве, але це зразок програми, що входить до MS SDK, а також доступний окремо. Джерело тут: msdn.microsoft.com/en-us/library/windows/desktop/… - не впевнений, чи Microsoft все ще розміщує двійковий файл. Я використовував файл `. \ Csmcmd / add_rule": /// c: * \ .git * "/ DEFAULT / EXCLUDE`, щоб виключити мої репозиції з git.
Райан Павлик

5

AFAIK, Служба індексації Windows у Windows 7 за замовчуванням виглядає лише в папці "Користувачі" (виправте мене, якщо я помиляюся). Якщо у вас є ваші сховища SVN в особистій папці, ви можете:

a) Переміщення ваших сховищ SVN в інше місце

б) Виключаючи ці папки з індексу. Тут ви знайдете, як виключити папку.


7
Я хочу, щоб мої сховища були індексовані, тільки не файли метаданих 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
Мені було відомо про це рішення, однак воно не є автоматичним. Метою є створення нових папок, які автоматично створюються з такою поведінкою.
Джеймс Ван Бокстель

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, щоб він ігнорував папки .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. Не впевнений, що це потрібно, але я збільшив це значення, щоб врахувати додаткове правило.
розрив
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.