Desativar automaticamente o Windows 7 da indexação de metadados .svn


26

Há um problema conhecido nos repositórios SVN e no serviço de indexação do Windows, que combate os arquivos de metadados .svn. Aqui para mais detalhes.

Como podemos configurá-lo para que não haja problemas automaticamente em ter repositórios de subversão indexados pelo Windows (Vista / Win7). (Não queremos ter que fazer algo manualmente toda vez que adicionarmos o diretório repo.)

Uma idéia é configurar o Windows para não indexar automaticamente as pastas denominadas ".svn", mas não consigo encontrar uma maneira de fazer isso.

Eu sei que você pode desativar certas extensões, mas isso não parece funcionar, pois os arquivos de metadados svn estão em uma pasta.

Note o


Os repositórios SVN não contêm arquivos .svn, as cópias de trabalho SVN. É, provavelmente, sobre como trabalhar problemas de cópia
Sander Rijken

Respostas:


11

Eu estava tendo o mesmo problema e encontrei uma solução. Todo o meu código é armazenado em uma única pasta:

F: \ projetos \

Sob essa pasta, há árvores de código e arquivos de projetos relacionados com mais de 2 GB. Eu preciso constantemente pesquisar nessa árvore e o Windows A indexação na verdade tem sido uma ferramenta extremamente útil para fazer pesquisas rápidas, portanto, desativá-lo não era uma opção. Desejo excluir as pastas SVN porque elas atrapalham meus resultados de pesquisa, (2) arrastamento desnecessário no meu sistema, (3) SVN, Win7 e MS Security Essentials parecem não funcionar bem ao realizar grandes operações SVN.

Antes de tentar a solução, reproduza o problema:

  1. No Windows Explorer, navegue até a raiz do projeto indexado (F: \ projects \ na minha máquina).
  2. Usando a barra de pesquisa no canto superior direito da janela do Explorer, procure por "svn" (sem aspas)
  3. Você deve ver um trilhão de arquivos e pastas SVN inúteis como ".svn" e "svn-base" aparecendo nos resultados.

Solução:

  1. Visite http://code.msdn.microsoft.com/windowssearch/
  2. Faça o download do CrawlScopeCommandLine.zip
  3. Extraia para algum lugar da sua máquina e compile o projeto
  4. Abra uma janela do console com direitos administrativos (Ctrl + Shift + clique com o botão esquerdo no item "Prompt de Comando" no menu Iniciar).
  5. Navegue para onde você compilou o projeto acima.
  6. Execute o csmcmd.exe com o parâmetro / add_rule (use /? First para sintaxe).
  7. No meu caso, digitei o seguinte comando: csmcmd.exe /add_rule file:///F:\projects\*\.svn\* /USER /EXCLUDE

Eu descobri isso executando primeiro o comando:, csmcmd.exe /enumerate_rulespara listar todos os existentes. Já havia algumas regras com o curinga asterix (*) sendo usado pelo Windows, portanto, era uma prova disso.

Agora repita as etapas para reproduzir o problema e você não deverá mais ver a desordem do SVN nos resultados da pesquisa. Dê ao computador algum tempo para atualizar os índices - isso levou menos de 5 minutos no meu sistema. Às vezes, reiniciar o serviço de Pesquisa, iniciar uma reconstrução / reindexação ou uma reinicialização ajuda a mover as coisas.

Atualização : alguns dos meus projetos SVN usam ".svn" e outros usam "_svn", por isso adicionamos essas duas regras a cada unidade:

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


alguma atualização sobre a eficácia disso?
Jonathan Dia

Funciona para mim! Boa explicação, Giscard!
Christopher Oezbek 5/09/11

Eu uso esse método há um ano e ele funcionou perfeitamente para mim.
Giscard Biamby

1
O link está inoperante, mas este é um aplicativo de exemplo incluído nos MS SDKs, além de estar disponível separadamente. A fonte está aqui: msdn.microsoft.com/en-us/library/windows/desktop/… - não tenho certeza se a Microsoft ainda hospeda um binário. Eu usei o arquivo `. \ Csmcmd / add_rule": /// c: * \ .git * "/ DEFAULT / EXCLUDE` para excluir meus repositórios de git.
Ryan Pavlik

5

AFAIK, serviço de indexação do Windows no Windows 7, apenas aparece na pasta Usuários como padrão (corrija-me se estiver errado). Se você tiver seus repositórios SVN em sua pasta pessoal, poderá:

a) Colocando seus repositórios SVN em outro lugar

b) Excluindo essas pastas do índice. Aqui você encontrará como excluir uma pasta.


7
Eu quero ter meus repositórios indexados, mas não os arquivos de metadados svn.
James Van Boxtel

4

A correção óbvia seria alterar o Subversion para definir este sinalizador "não indexar" sempre que criar um diretório .svn. O problema é que esse recurso não será mais necessário quando for introduzido.

O problema conhecido provavelmente desaparecerá nas versões do Subversion atualmente em desenvolvimento (versão 1.7). Haverá muito menos operações de arquivo dentro do diretório .svn e também apenas 1 diretório .svn por cópia de trabalho.

Isso torna menos provável que o problema ocorra e também facilita muito a desativação da indexação, porque há apenas uma única pasta .svn.


2

Método da força bruta

  1. faça uma pesquisa por todo o diretório .svn
  2. selecionar tudo (ctrl + a)
  3. propriedades do clique direito do mouse
  4. clique em "avançar ..."
  5. desmarque a opção "Indexar esta pasta para uma pesquisa mais rápida"
  6. aplique a mudança

A Diretiva de Grupo WDS tem uma opção para Prevent Indexing Certain Paths, mas não está listada disponível para Windows Vista, de acordo com o gráfico de recursos.

Compatível com: Windows XP, Windows Server 2003 com Windows Search 3.01 ou qualquer versão do Microsoft Windows com Windows Search 4.0 ou posterior.


1
Eu estava ciente dessa solução alternativa, no entanto, não é automática. O objetivo é fazer com que novas pastas criadas automaticamente tenham esse comportamento.
James Van Boxtel

1

Se a resposta de Darren Halls é a abordagem "Força Bruta", minha resposta deve ser a abordagem "Força Bruta e Ignorância". :)

Isso é algo que recentemente me incomodou ao usar o SVN para gerenciamento de documentos e projetos, o que pode significar que o indexador do Windows é muito útil quando se trata de procurar documentos obscuros, mas a captura de todos os arquivos de armazenamento svn é inútil.

Esta é a minha solução (bastante feia) em um arquivo em lotes do 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"

A primeira e a última linha estão lá porque o ATTRIB se recusa a aplicar a opção + I em uma pasta oculta, pelo menos para mim. Você precisará copiar isso para um arquivo como "svnNoIndex.bat" e executá-lo no diretório de verificação SVN, com um repositório grande que pode levar algum tempo ...

Atualmente, estou testando isso no Vista com o service pack mais recente. Espero que funcione no Windows 7. Não sei se o índice precisa ser reconstruído para levar em conta os arquivos que agora estão marcados como não indexados por fazendo isso, mas preciso reconstruir o meu de qualquer maneira, e é isso que estou fazendo, pois são apenas alguns dias enquanto o índice é reconstruído.

Para tornar isso "automático", você pode adicionar o arquivo em lotes como um gancho pós-atualização que é executado após uma atualização ... desde que seja confuso, mas pode funcionar.


1

Você pode essencialmente dizer ao Windows Search para ignorar pastas .svn, aprimorando o 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

O URL corresponde às pastas denominadas ".svn" em qualquer lugar do seu sistema de arquivos. (O número após as regras padrão deve ser único - ou seja, se você já possui uma regra padrão 11, escolha outro número).


Notei que o DefaultRules contém uma dword ItemCount. Não tenho certeza se é necessário, mas aumentei esse valor para contabilizar a regra adicional.
gapple
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.