Desactivar automáticamente Windows 7 de la indexación de metadatos .svn

26

Existe un problema conocido con los repositorios SVN y el servicio de indexación de Windows que lucha por archivos de metadatos .svn. Aquí para más detalles.

¿Cómo podemos configurarlo para que automáticamente no haya problemas al tener repositorios de subversión indexados por Windows (Vista / Win7)? (No queremos tener que hacer algo manualmente cada vez que agreguemos el directorio repo).

Una idea es configurar Windows para que no indexe automáticamente las carpetas llamadas ".svn", sin embargo, no puedo encontrar una manera de hacerlo.

Sé que puede deshabilitar ciertas extensiones, pero eso no parece funcionar ya que los archivos de metadatos svn están en una carpeta.

Nota la

James Van Boxtel
fuente
Los repositorios SVN no contienen archivos .svn, las copias de trabajo SVN sí. Probablemente se trata de problemas de copia de trabajo
Sander Rijken

Respuestas:

11

Estaba teniendo el mismo problema y encontré una solución. Todo mi código se almacena en una sola carpeta:

F: \ proyectos \

Debajo de esa carpeta hay árboles de código y archivos de proyecto relacionados que suman más de 2 GB. Necesito constantemente buscar en este árbol y la indexación de Windows ha sido una herramienta extremadamente útil para realizar búsquedas rápidas, por lo que desactivarla no era una opción. Quiero excluir las carpetas SVN porque saturan mis resultados de búsqueda, (2) arrastre innecesario en mi sistema, (3) SVN, Win7 y MS Security Essentials parecen no funcionar bien cuando se realizan grandes operaciones SVN.

Antes de probar la solución, reproduzca el problema:

  1. En el Explorador de Windows, navegue hasta la raíz de su proyecto indexado (F: \ projects \ en mi máquina).
  2. Usando la barra de búsqueda en la esquina superior derecha de la ventana del Explorador, busque "svn" (sin comillas)
  3. Debería ver un trillón de archivos y carpetas SVN inútiles como ".svn" y "svn-base" que aparecen en los resultados.

Solución:

  1. Visite http://code.msdn.microsoft.com/windowssearch/
  2. Descargar CrawlScopeCommandLine.zip
  3. Extraiga en algún lugar de su máquina y compile el proyecto.
  4. Abra una ventana de consola con derechos administrativos (Ctrl + Shift + clic izquierdo en el elemento "Símbolo del sistema" en el menú Inicio).
  5. Navegue a donde haya compilado el proyecto anterior.
  6. Ejecute csmcmd.exe con el parámetro / add_rule (use /? First para la sintaxis).
  7. En mi caso ingresé el siguiente comando: csmcmd.exe /add_rule file:///F:\projects\*\.svn\* /USER /EXCLUDE

Descubrí esto ejecutando primero el comando:, csmcmd.exe /enumerate_rulespara enumerar todos los existentes. Ya había algunas reglas con el uso de comodines asterix (*) por parte de Windows, por lo que era una prueba de que esto era posible.

Ahora repita los pasos para reproducir el problema, y ​​ya no debería ver el desorden SVN en los resultados de búsqueda. Déle a la computadora algún tiempo para actualizar los índices; esto tardó menos de 5 minutos en mi sistema. A veces, reiniciar el servicio de búsqueda, iniciar una reconstrucción / reindexar o un reinicio ayuda a avanzar.

Actualización : Algunos de mis proyectos SVN usan ".svn", y algunos usan "_svn", por lo que he agregado estas dos reglas a cada unidad:

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

Giscard Biamby
fuente
alguna actualización sobre la eficacia de esto?
Jonathan Day
¡Funciona para mi! Buena explicación, Giscard!
Christopher Oezbek
He usado este método durante un año y me ha funcionado perfectamente.
Giscard Biamby
1
Link está inactivo, pero esta es una aplicación de muestra incluida con los SDK de MS, así como disponible por separado. La fuente está aquí: msdn.microsoft.com/en-us/library/windows/desktop/… - no estoy seguro de si Microsoft todavía aloja un binario. Usé el archivo '. \ Csmcmd / add_rule ": /// c: * \ .git *" / DEFAULT / EXCLUDE` para excluir mis repositorios git.
Ryan Pavlik
5

AFAIK, el servicio de indexación de Windows en Windows 7 solo se ve dentro de la carpeta Usuarios por defecto (corrígeme si me equivoco). Si tiene sus repositorios SVN dentro de su carpeta personal, puede:

a) Poner sus repositorios SVN en otro lugar

b) Al excluir esas carpetas del índice. Aquí encontrará cómo excluir una carpeta.

RiendoHombre
fuente
77
Quiero tener mis repositorios indexados, solo que no los archivos de metadatos svn.
James Van Boxtel
4

La solución obvia sería cambiar Subversion para establecer este indicador de "no indexar" siempre que cree un directorio .svn. El problema es que esta característica ya no será necesaria cuando se introduzca.

El problema conocido probablemente desaparecerá en las versiones de Subversion que se están desarrollando actualmente (versión 1.7). Habrá muchas menos operaciones de archivo dentro del directorio .svn, y también solo 1 directorio .svn por copia de trabajo.

Esto hace que sea menos probable que ocurra el problema, y ​​también hace que sea mucho más fácil deshabilitar la indexación, porque solo hay una carpeta .svn.

Sander Rijken
fuente
2

Método de fuerza bruta

  1. hacer una búsqueda para todo el directorio .svn
  2. seleccionar todo (ctrl + a)
  3. propiedades del clic derecho del mouse
  4. haga clic en "avanzar ..."
  5. desmarque "Indexar esta carpeta para una búsqueda más rápida"
  6. aplicar el cambio

La Política de grupo de WDS tiene una opción para Prevent Indexing Certain Paths, pero no está disponible para Windows Vista de acuerdo con el cuadro de características.

Compatible con: Windows XP, Windows Server 2003 con Windows Search 3.01, o cualquier versión de Microsoft Windows con Windows Search 4.0 o posterior.

Darren Hall
fuente
1
Era consciente de esta solución, sin embargo, no es automática. El objetivo es que las nuevas carpetas que se crean tengan este comportamiento automáticamente.
James Van Boxtel
1

Si la respuesta de Darren Halls es el enfoque de "Fuerza Bruta", entonces mi respuesta tiene que ser el enfoque de "Fuerza Bruta e Ignorancia". :)

Esto es algo que me ha molestado recientemente, ya que usamos SVN para la gestión de documentos y proyectos, lo que puede significar que el indexador de Windows es muy útil cuando se trata de poder buscar documentos oscuros, pero capturar todos los archivos de almacenamiento svn es simplemente inútil.

Esta es mi solución (bastante fea) en un archivo por lotes de 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"

La primera y la última línea están allí porque ATTRIB se niega a aplicar el cambio + I a una carpeta oculta, al menos lo hizo por mí. Tendrá que copiar esto en un archivo como "svnNoIndex.bat" y ejecutarlo en su directorio de pago SVN, con un repositorio grande que podría tomar algún tiempo ...

Actualmente estoy probando esto en Vista con el último Service Pack, espero que funcione en Windows 7. No sé si el índice necesita ser reconstruido para tener en cuenta los archivos que ahora están marcados como no indexados por haciendo esto, pero necesito reconstruir el mío de todos modos, así que eso es lo que estoy haciendo, ya que solo son unos días mientras se reconstruye el índice.

Para hacer esto "automático", puede agregar el archivo por lotes como un enlace posterior a la actualización que se ejecuta después de una actualización ... dado que es desordenado, pero podría funcionar.

Mokubai
fuente
1

Básicamente, puede indicarle a Windows Search que ignore las carpetas .svn ajustando el registro.

[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

La URL coincide con las carpetas llamadas ".svn" en cualquier parte de su sistema de archivos. (El número después de las reglas predeterminadas debe ser único, es decir, si ya tiene una regla predeterminada 11, elija otro número).

Grynn
fuente
Noté que DefaultRules contiene una palabra clave ItemCount. No estoy seguro de que sea necesario, pero aumenté este valor para tener en cuenta la regla adicional.
gapple