Disabilita automaticamente Windows 7 dall'indicizzazione dei metadati .svn


26

Esiste un problema noto con i repository SVN e il servizio di indicizzazione di Windows che combatte su file di metadati .svn. Qui per maggiori dettagli.

Come possiamo impostarlo in modo che non ci siano automaticamente problemi con repository di sovversione indicizzati da Windows (Vista / Win7). (Non vogliamo fare qualcosa manualmente ogni volta che aggiungiamo la directory repo.)

Un'idea è quella di configurare Windows in modo che non indicizzi automaticamente le cartelle denominate ".svn", tuttavia non riesco a trovare un modo per farlo.

So che puoi disabilitare alcune estensioni, ma questo non sembra funzionare poiché i file dei metadati svn sono in una cartella.

Notare la


I repository SVN non contengono file .svn, invece le copie funzionanti SVN. Probabilmente si tratta di problemi di copia funzionante
Sander Rijken, il

Risposte:


11

Stavo avendo lo stesso problema e ho trovato una soluzione. Tutto il mio codice è archiviato in una singola cartella:

F: \ projects \

Sotto quella cartella sono presenti alberi di codice e file di progetto correlati per un totale di oltre 2 GB. Ho costantemente bisogno di cercare in questo albero e Windows L'indicizzazione è stata in realtà uno strumento estremamente utile per fare ricerche veloci, quindi disattivarlo non era un'opzione. Voglio escludere le cartelle SVN perché ingombrano i miei risultati di ricerca, (2) trascinamento inutile sul mio sistema, (3) SVN, Win7 e MS Security Essentials sembrano non funzionare bene quando si eseguono operazioni SVN di grandi dimensioni.

Prima di provare la soluzione, riprodurre il problema:

  1. In Esplora risorse, vai alla radice del tuo progetto indicizzato (F: \ progetti \ sul mio computer).
  2. Utilizzando la barra di ricerca nell'angolo in alto a destra della finestra di Explorer, cerca "svn" (senza virgolette)
  3. Dovresti vedere trilioni di file e cartelle SVN inutili come ".svn" e "svn-base" che appaiono nei risultati.

Soluzione:

  1. Visita http://code.msdn.microsoft.com/windowssearch/
  2. Scarica CrawlScopeCommandLine.zip
  3. Estrai in qualche posto sul tuo computer e compila il progetto
  4. Apri una finestra della Console con diritti amministrativi (Ctrl + Maiusc + Clic sinistro sulla voce "Prompt dei comandi" nel menu Start).
  5. Passare a dove hai compilato il progetto sopra.
  6. Eseguire csmcmd.exe con il parametro / add_rule (utilizzare /? Prima per la sintassi).
  7. Nel mio caso ho inserito il seguente comando: csmcmd.exe /add_rule file:///F:\projects\*\.svn\* /USER /EXCLUDE

L'ho capito eseguendo prima il comando:, csmcmd.exe /enumerate_rulesper elencare tutti quelli esistenti. Esistevano già alcune regole con il carattere jolly asterix (*) utilizzato da Windows, quindi era la prova che ciò era possibile.

Ora ripeti i passaggi per riprodurre il problema e non dovresti più vedere il disordine SVN nei risultati di ricerca. Concedi al computer un po 'di tempo per aggiornare gli indici - ci sono voluti meno di 5 minuti sul mio sistema. A volte il riavvio del servizio di ricerca, l'avvio di una ricostruzione / reindicizzazione o un riavvio aiutano a spostare le cose.

Aggiornamento : alcuni dei miei progetti SVN usano ".svn" e alcuni usano "_svn", quindi ho aggiunto queste due regole a ogni unità:

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


qualche aggiornamento sull'efficacia di questo?
Jonathan Day

Per me va bene! Buona spiegazione, Giscard!
Christopher Oezbek,

Ho usato questo metodo per un anno e ha funzionato perfettamente per me.
Giscard Biamby,

1
Il collegamento è interrotto, ma questa è un'app di esempio inclusa con gli SDK di MS e disponibile separatamente. La fonte è qui: msdn.microsoft.com/en-us/library/windows/desktop/… - non sono sicuro che Microsoft abbia ancora un binario. Ho usato il file ". \ Csmcmd / add_rule": /// c: * \ .git * "/ DEFAULT / EXCLUDE` per escludere i miei repository git.
Ryan Pavlik,

5

AFAIK, il servizio di indicizzazione di Windows su Windows 7 guarda solo nella cartella Users come predefinita (correggimi se sbaglio). Se hai i tuoi repository SVN nella tua cartella personale, puoi:

a) Mettere i repository SVN altrove

b) Escludendo tali cartelle dall'indice. Qui troverai come escludere una cartella.


7
Voglio che i miei repository siano indicizzati, non solo i file metadati svn.
James Van Boxtel,

4

La soluzione ovvia sarebbe cambiare Subversion per impostare questo flag "non indicizzare" ogni volta che crea una directory .svn. Il problema è che questa funzione non sarà più necessaria quando verrà introdotta.

Molto probabilmente il problema noto scomparirà nelle versioni di Subversion attualmente in fase di sviluppo (versione 1.7). Ci saranno molte meno operazioni sui file all'interno della directory .svn, e anche solo 1 .svn directory per copia funzionante.

Ciò rende meno probabile che si verifichi il problema e rende molto più semplice disabilitare l'indicizzazione, poiché esiste una sola cartella .svn.


2

Metodo della forza bruta

  1. cerca tutte le directory .svn
  2. seleziona tutto (ctrl + a)
  3. proprietà del tasto destro del mouse
  4. fai clic su "anticipo ..."
  5. deseleziona "Indicizza questa cartella per una ricerca più rapida"
  6. applicare la modifica

Criteri di gruppo WDS ha un'opzione per Prevent Indexing Certain Paths, ma non è elencato disponibile per Windows Vista secondo il grafico delle funzionalità.

Supportato su: Windows XP, Windows Server 2003 con Windows Search 3.01 o qualsiasi versione di Microsoft Windows con Windows Search 4.0 o successivo.


1
Ero a conoscenza di questa soluzione alternativa, tuttavia non è automatica. L'obiettivo è avere nuove cartelle create automaticamente con questo comportamento.
James Van Boxtel,

1

Se la risposta di Darren Halls è l'approccio "Forza bruta", allora la mia risposta deve essere l'approccio "Forza bruta e ignoranza". :)

Questo è qualcosa che mi ha infastidito di recente quando usiamo SVN per la gestione di documenti e progetti, il che può significare che l'indicizzatore di Windows è molto utile quando si tratta di cercare documenti oscuri, ma catturare tutti i file di archiviazione svn è solo inutile.

Questa è la mia (piuttosto brutta) soluzione in un file batch di 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 prima e l'ultima riga ci sono perché ATTRIB rifiuta di applicare il passaggio + I a una cartella nascosta, almeno per me. Dovrai copiarlo in un file come "svnNoIndex.bat" ed eseguirlo nella directory di checkout SVN, con un repository di grandi dimensioni potrebbe richiedere del tempo ...

Attualmente sto testando questo in Vista con l'ultimo service pack, mi aspetto che funzioni su Windows 7. Non so se l'indice debba essere ricostruito per tenere conto dei file che ora sono contrassegnati come non indicizzati da facendo questo, ma devo ricostruire il mio comunque, quindi è quello che sto facendo, poiché sono solo pochi giorni che l'indice si ricostruisce.

Per rendere questo "automatico" è possibile aggiungere il file batch come hook post-aggiornamento che viene eseguito dopo un aggiornamento ... a condizione che sia disordinato, ma potrebbe funzionare.


1

Puoi essenzialmente dire a Ricerca di Windows di ignorare le cartelle .svn modificando il 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

L'URL corrisponde alle cartelle denominate ".svn" in qualsiasi punto del file system. (Il numero dopo le regole predefinite dovrebbe essere univoco, ovvero se hai già una regola predefinita 11, scegli un altro numero).


Ho notato che DefaultRules contiene una dword ItemCount. Non sono sicuro che sia necessario, ma ho aumentato questo valore per tenere conto della regola aggiuntiva.
gapple,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.