Automatycznie wyłącz system Windows 7 od indeksowania metadanych .svn

26

Znany jest problem z repozytoriami SVN i usługą indeksowania systemu Windows walczącymi o pliki metadanych .svn. Tutaj po więcej szczegółów.

Jak możemy to skonfigurować, aby automatycznie nie było problemów z indeksowaniem repozytoriów subversion przez Windows (Vista / Win7). (Nie chcemy ręcznie robić czegoś za każdym razem, gdy dodajemy katalog repo).

Jednym z pomysłów jest skonfigurowanie systemu Windows do automatycznego nieindeksowania folderów o nazwie „.svn”, jednak nie mogę znaleźć sposobu, aby to zrobić.

Wiem, że możesz wyłączyć niektóre rozszerzenia, ale wydaje się, że to nie działa, ponieważ pliki metadanych svn znajdują się w folderze.

Zanotuj

James Van Boxtel
źródło
Repozytoria SVN nie zawierają plików .svn, tak jak kopie robocze SVN. Prawdopodobnie chodzi o problemy z kopiami roboczymi
Sander Rijken,

Odpowiedzi:

11

Miałem ten sam problem i znalazłem rozwiązanie. Cały mój kod jest przechowywany w jednym folderze:

F: \ projekty \

W tym folderze znajdują się drzewa kodu i powiązane pliki projektów o łącznej wielkości ponad 2 GB. Ciągle muszę przeszukiwać to drzewo i okna. Indeksowanie było w rzeczywistości niezwykle przydatnym narzędziem do szybkiego wyszukiwania, więc wyłączenie go nie było opcją. Chcę wykluczyć foldery SVN, ponieważ zaśmiecają moje wyniki wyszukiwania, (2) niepotrzebne przeciąganie w moim systemie, (3) SVN, Win7 i MS Security Essentials wydają się nie działać dobrze podczas wykonywania dużych operacji SVN.

Przed wypróbowaniem rozwiązania odtwórz problem:

  1. W Eksploratorze Windows przejdź do zindeksowanego katalogu głównego projektu (F: \ projects \ na moim komputerze).
  2. Używając paska wyszukiwania w prawym górnym rogu okna Eksploratora, wyszukaj „svn” (bez cudzysłowów)
  3. Powinieneś zobaczyć trylion bezużytecznych plików i folderów SVN, takich jak „.svn” i „svn-base”.

Rozwiązanie:

  1. Odwiedź http://code.msdn.microsoft.com/windowssearch/
  2. Pobierz CrawlScopeCommandLine.zip
  3. Wypakuj w jakieś miejsce na swoim komputerze i skompiluj projekt
  4. Otwórz okno konsoli z uprawnieniami administracyjnymi (Ctrl + Shift + kliknij lewym przyciskiem myszy pozycję „Wiersz polecenia” w menu Start).
  5. Przejdź do miejsca, w którym skompilowałeś powyższy projekt.
  6. Uruchom csmcmd.exe z parametrem / add_rule (użyj składni /?
  7. W moim przypadku wprowadziłem następujące polecenie: csmcmd.exe /add_rule file:///F:\projects\*\.svn\* /USER /EXCLUDE

Zrozumiałem to, uruchamiając najpierw polecenie:, csmcmd.exe /enumerate_rulesaby wyświetlić listę wszystkich istniejących. Były już pewne reguły z użyciem symboli wieloznacznych asterix (*) w systemie Windows, więc był to dowód na to, że było to możliwe.

Teraz powtórz kroki, aby odtworzyć problem, i nie powinno już być bałaganu SVN w wynikach wyszukiwania. Daj komputerowi na aktualizację indeksów - zajęło mi to mniej niż 5 minut w moim systemie. Czasami ponowne uruchomienie usługi wyszukiwania, rozpoczęcie przebudowy / ponownegoindeksowania lub ponownego uruchomienia pomaga w dalszym postępie.

Aktualizacja : Niektóre z moich projektów SVN używają „.svn”, a niektóre „_svn”, więc dodałem te dwie reguły do ​​każdego dysku:

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

Giscard Biamby
źródło
jakieś aktualizacje dotyczące skuteczności tego?
Jonathan Day
Pracuje dla mnie! Dobre wyjaśnienie, Giscard!
Christopher Oezbek,
Stosuję tę metodę od roku i zadziałała dla mnie bezbłędnie.
Giscard Biamby
1
Link nie działa, ale jest to przykładowa aplikacja dołączona do MS SDK, a także dostępna osobno. Źródło jest tutaj: msdn.microsoft.com/en-us/library/windows/desktop/… - nie jestem pewien, czy Microsoft nadal hostuje plik binarny. Użyłem pliku `. \ Csmcmd / add_rule": /// c: * \ .git * "/ DEFAULT / EXCLUDE`, aby wykluczyć moje repozytorium git.
Ryan Pavlik
5

AFAIK, usługa indeksowania systemu Windows w systemie Windows 7 wygląda domyślnie tylko w folderze Użytkownicy (popraw mnie, jeśli się mylę). Jeśli masz repozytoria SVN w folderze osobistym, możesz:

a) Umieszczenie repozytoriów SVN w innym miejscu

b) Wyłączając te foldery z indeksu. Tutaj dowiesz się, jak wykluczyć folder.

LaughingMan
źródło
7
Chcę indeksować moje repozytoria, a nie pliki metadanych svn.
James Van Boxtel
4

Oczywistą poprawką byłaby zmiana Subversion, aby ustawiała tę flagę „nie indeksuj” za każdym razem, gdy tworzy katalog .svn. Problem polega na tym, że ta funkcja nie będzie już potrzebna, gdy zostanie wprowadzona.

Znany problem najprawdopodobniej zniknie w aktualnie tworzonych wersjach Subversion (wersja 1.7). W katalogu .svn będzie znacznie mniej operacji na plikach, a także tylko 1 katalog .svn na kopię roboczą.

To zmniejsza prawdopodobieństwo wystąpienia problemu, a także znacznie ułatwia wyłączenie indeksowania, ponieważ istnieje tylko jeden folder .svn.

Sander Rijken
źródło
2

Metoda brutalnej siły

  1. przeszukaj cały katalog .svn
  2. zaznacz wszystko (ctrl + a)
  3. właściwości kliknięcia prawym przyciskiem myszy
  4. kliknij „z góry ...”
  5. odznacz „Indeksuj ten folder, by szybciej wyszukiwać”
  6. zastosuj zmianę

Zasady grupy WDS mają opcję Prevent Indexing Certain Paths, ale nie są dostępne na liście dla Windows Vista zgodnie z tabelą funkcji.

Obsługiwane w: Windows XP, Windows Server 2003 z Windows Search 3.01 lub dowolnej wersji Microsoft Windows z Windows Search 4.0 lub nowszym.

Darren Hall
źródło
1
Byłem świadomy tego obejścia, jednak nie jest to automatyczne. Celem jest, aby nowe foldery tworzone automatycznie miały takie zachowanie.
James Van Boxtel
1

Jeśli odpowiedzią Darrena Hallsa jest podejście „Brute Force”, to moja odpowiedź musi brzmieć „Brute Force and Ignorance”. :)

Jest to coś, co ostatnio mnie zirytowało, gdy używamy SVN do zarządzania dokumentami i projektami, co może oznaczać, że indeksator Windows jest bardzo przydatny, jeśli chodzi o wyszukiwanie nieznanych dokumentów, ale przechwytywanie wszystkich plików pamięci SVN jest po prostu bezużyteczne.

To jest moje (raczej brzydkie) rozwiązanie w pliku wsadowym 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"

Pierwszy i ostatni wiersz są dostępne, ponieważ ATTRIB odmawia zastosowania przełącznika + I do ukrytego folderu, przynajmniej tak zrobiłem. Musisz skopiować to do pliku takiego jak „svnNoIndex.bat” i uruchomić go w katalogu kasy SVN, z dużym repozytorium może zająć trochę czasu ...

Obecnie testuję to w systemie Vista z najnowszym dodatkiem Service Pack, spodziewam się, że będzie działać w systemie Windows 7. Nie wiem, czy indeks musi zostać przebudowany w celu uwzględnienia plików, które są teraz oznaczone jako nieindeksowane przez Robię to, ale i tak muszę go odbudować, więc to właśnie robię, ponieważ trwa to tylko kilka dni, gdy indeks się odbudowuje.

Aby uczynić to „automatycznym”, możesz dodać plik wsadowy jako hak po aktualizacji, który uruchamia się po aktualizacji ... jeśli jest nieuporządkowany, ale może działać.

Mokubai
źródło
1

Możesz zasadniczo powiedzieć Windows Search, aby zignorował foldery .svn, dostosowując rejestr.

[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

Adres URL pasuje do folderów o nazwie „.svn” w dowolnym miejscu w systemie plików. (Liczba po domyślnych regułach powinna być unikalna - tzn. Jeśli masz już domyślną regułę 11, wybierz inną liczbę).

Grynn
źródło
Zauważyłem, że DefaultRules zawiera pozycję ItemCount. Nie jestem pewien, czy jest to konieczne, ale zwiększyłem tę wartość, aby uwzględnić dodatkową regułę.
przerwa