Désactiver automatiquement Windows 7 de l'indexation des métadonnées .svn


26

Il existe un problème connu avec les référentiels SVN et le service d'indexation Windows qui se disputent les fichiers de métadonnées .svn. Ici pour plus de détails.

Comment pouvons-nous le configurer pour qu'il n'y ait automatiquement aucun problème à avoir des référentiels de subversion indexés par Windows (Vista / Win7). (Nous ne voulons pas avoir à faire quelque chose manuellement chaque fois que nous ajoutons un répertoire repo.)

Une idée est de configurer Windows pour ne pas indexer automatiquement les dossiers nommés ".svn", mais je ne trouve pas de moyen de le faire.

Je sais que vous pouvez désactiver certaines extensions, mais cela ne semble pas fonctionner puisque les fichiers de métadonnées svn sont dans un dossier.

Noter la


Les dépôts SVN ne contiennent pas de fichiers .svn, contrairement aux copies de travail SVN. Il s'agit probablement de problèmes de copie de travail
Sander Rijken

Réponses:


11

J'avais le même problème et j'ai trouvé une solution. Tout mon code est stocké dans un seul dossier:

F: \ projets \

Sous ce dossier se trouvent des arborescences de code et des fichiers de projet associés totalisant plus de 2 Go. J'ai constamment besoin de rechercher dans cet arbre et dans Windows. L'indexation a en fait été un outil extrêmement utile pour effectuer des recherches rapides, donc la désactiver n'était pas une option. Je souhaite exclure les dossiers SVN car ils encombrent mes résultats de recherche, (2) un glissement inutile sur mon système, (3) SVN, Win7 et MS Security Essentials semblent ne pas fonctionner correctement lors de grandes opérations SVN.

Avant d'essayer la solution, reproduisez le problème:

  1. Dans l'Explorateur Windows, accédez à la racine de votre projet indexé (F: \ projects \ sur ma machine).
  2. À l'aide de la barre de recherche dans le coin supérieur droit de la fenêtre de l'Explorateur, recherchez «svn» (sans guillemets)
  3. Vous devriez voir un billion de fichiers et dossiers SVN inutiles comme ".svn" et "svn-base" apparaître dans les résultats.

Solution:

  1. Visitez http://code.msdn.microsoft.com/windowssearch/
  2. Télécharger CrawlScopeCommandLine.zip
  3. Extraire à un certain endroit sur votre machine et compiler le projet
  4. Ouvrez une fenêtre de console avec des droits administratifs (Ctrl + Maj + clic gauche sur l'élément "Invite de commandes" dans le menu Démarrer).
  5. Accédez à l'endroit où vous avez compilé le projet ci-dessus.
  6. Exécutez csmcmd.exe avec le paramètre / add_rule (utilisez /? D'abord pour la syntaxe).
  7. Dans mon cas, j'ai entré la commande suivante: csmcmd.exe /add_rule file:///F:\projects\*\.svn\* /USER /EXCLUDE

J'ai compris cela en exécutant d'abord la commande:, csmcmd.exe /enumerate_rulespour répertorier tous les existants. Il y avait déjà quelques règles avec les caractères génériques astérisque (*) utilisés par Windows, donc c'était la preuve que c'était possible.

Répétez maintenant les étapes pour reproduire le problème et vous ne devriez plus voir l'encombrement SVN dans vos résultats de recherche. Donnez à l'ordinateur un certain temps pour mettre à jour les index - cela a pris moins de 5 minutes sur mon système. Parfois, redémarrer le service de recherche, lancer une reconstruction / réindexation ou un redémarrage aide à faire avancer les choses.

Mise à jour : Certains de mes projets SVN utilisent ".svn", et certains utilisent "_svn", j'ai donc ajouté ces deux règles à chaque lecteur:

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


une mise à jour sur l'efficacité de cela?
Jonathan Day

Travaille pour moi! Bonne explication, Giscard!
Christopher Oezbek

J'utilise cette méthode depuis un an maintenant et elle a parfaitement fonctionné pour moi.
Giscard Biamby

1
Le lien est mort, mais il s'agit d'un exemple d'application inclus avec les SDK MS, ainsi que disponible séparément. La source est ici: msdn.microsoft.com/en-us/library/windows/desktop/… - je ne sais pas si Microsoft héberge toujours un binaire. J'ai utilisé le fichier `. \ Csmcmd / add_rule": /// c: * \ .git * "/ DEFAULT / EXCLUDE` pour exclure mon dépôt git.
Ryan Pavlik

5

AFAIK, le service d'indexation Windows sur Windows 7 ne regarde que dans le dossier Utilisateurs par défaut (corrigez-moi si je me trompe). Si vous avez vos référentiels SVN dans votre dossier personnel, vous pouvez:

a) Mettre vos dépôts SVN ailleurs

b) En excluant ces dossiers de l'index. Ici , vous trouverez comment exclure un dossier.


7
Je veux que mes référentiels soient indexés, mais pas les fichiers de métadonnées svn.
James Van Boxtel

4

La solution évidente serait de changer Subversion pour définir cet indicateur "ne pas indexer" chaque fois qu'il crée un répertoire .svn. Le problème est que cette fonctionnalité ne sera plus nécessaire lors de son introduction.

Le problème connu disparaîtra très probablement dans les versions Subversion en cours de développement (version 1.7). Il y aura beaucoup moins d'opérations sur les fichiers à l'intérieur du répertoire .svn, et aussi seulement 1 répertoire .svn par copie de travail.

Cela rend moins probable que le problème se produise et facilite également la désactivation de l'indexation, car il n'y a qu'un seul dossier .svn.


2

Méthode de la force brute

  1. faire une recherche pour tout le répertoire .svn
  2. sélectionner tout (ctrl + a)
  3. propriétés du clic droit de la souris
  4. cliquez sur "avancer ..."
  5. décochez la case "Indexer ce dossier pour une recherche plus rapide"
  6. appliquer le changement

La stratégie de groupe WDS a une option pour Prevent Indexing Certain Paths, mais elle n'est pas répertoriée disponible pour Windows Vista selon le tableau des fonctionnalités.

Pris en charge sur: Windows XP, Windows Server 2003 avec Windows Search 3.01 ou toute version de Microsoft Windows avec Windows Search 4.0 ou version ultérieure.


1
J'étais au courant de cette solution de contournement, mais ce n'est pas automatique. L'objectif est que les nouveaux dossiers créés automatiquement aient ce comportement.
James Van Boxtel

1

Si la réponse de Darren Halls est l'approche "Brute Force", alors ma réponse doit être l'approche "Brute Force and Ignorance". :)

C'est quelque chose qui m'a récemment ennuyé car nous utilisons SVN pour la gestion de documents et de projets, ce qui peut signifier que l'indexeur Windows est très utile pour rechercher des documents obscurs, mais qu'il attrape tous les fichiers de stockage svn est tout simplement inutile.

C'est ma solution (plutôt laide) dans un fichier batch 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 première et la dernière ligne sont là car ATTRIB refuse d'appliquer le commutateur + I à un dossier caché, du moins il l'a fait pour moi. Vous devrez le copier dans un fichier comme "svnNoIndex.bat" et l'exécuter dans votre répertoire de paiement SVN, avec un grand référentiel, cela pourrait prendre un certain temps ...

Je teste actuellement ceci sous Vista avec le dernier service pack, je m'attendrais à ce qu'il fonctionne sur Windows 7. Je ne sais pas si l'index doit être reconstruit pour tenir compte des fichiers qui sont maintenant marqués comme non indexés par ce faisant, mais j'ai besoin de reconstruire le mien de toute façon, c'est ce que je fais car il n'y a que quelques jours pendant la reconstruction de l'index.

Afin de rendre cela "automatique", vous pouvez ajouter le fichier de commandes en tant que hook post-mise à jour qui s'exécute après une mise à jour ... à condition qu'il soit désordonné, mais cela pourrait fonctionner.


1

Vous pouvez essentiellement dire à Windows Search d'ignorer les dossiers .svn en modifiant le registre.

[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 correspond aux dossiers nommés ".svn" n'importe où sur votre système de fichiers. (Le nombre après les règles par défaut doit être unique - c'est-à-dire que si vous avez déjà une règle par défaut 11, choisissez un autre nombre).


J'ai remarqué que DefaultRules contient un dword ItemCount. Pas sûr que ce soit nécessaire, mais j'ai augmenté cette valeur pour tenir compte de la règle supplémentaire.
gapple
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.