Automatische Deaktivierung der Indizierung von .svn-Metadaten in Windows 7

26

Es gibt ein bekanntes Problem mit SVN-Repositorys und dem Windows-Indexdienst, bei dem es um SVN-Metadatendateien geht. Hier finden Sie weitere Details.

Wie können wir es einrichten, damit es automatisch keine Probleme gibt, wenn Subversion-Repositorys von Windows indiziert werden (Vista / Win7)? (Wir möchten nicht jedes Mal, wenn wir ein Repo-Verzeichnis hinzufügen, etwas manuell tun müssen.)

Eine Idee ist, Windows so einzurichten, dass Ordner mit dem Namen ".svn" nicht automatisch indiziert werden. Ich kann jedoch keine Möglichkeit finden, dies zu tun.

Ich weiß, dass Sie bestimmte Erweiterungen deaktivieren können, aber das scheint nicht zu funktionieren, da sich die SVN-Metadatendateien in einem Ordner befinden.

Beachten Sie das

James Van Boxtel
quelle
SVN-Repositorys enthalten keine .svn-Dateien, SVN-Arbeitskopien jedoch. Es geht wahrscheinlich um Probleme mit Arbeitskopien
Sander Rijken

Antworten:

11

Ich hatte das gleiche Problem und fand eine Lösung. Mein gesamter Code wird in einem einzigen Ordner gespeichert:

F: \ projects \

In diesem Ordner befinden sich Codebäume und zugehörige Projektdateien mit einer Gesamtgröße von über 2 GB. Ich muss ständig in diesem Baum suchen, und Windows-Indizierung war ein äußerst nützliches Tool für schnelle Suchvorgänge. Daher war das Deaktivieren nicht möglich. Ich möchte die SVN-Ordner ausschließen, weil sie meine Suchergebnisse überladen, (2) mein System unnötig in Mitleidenschaft ziehen, (3) SVN, Win7 und MS Security Essentials scheinen bei umfangreichen SVN-Vorgängen nicht ordnungsgemäß zu funktionieren.

Reproduzieren Sie das Problem, bevor Sie die Lösung versuchen:

  1. Navigieren Sie im Windows Explorer zu Ihrem indizierten Projektstamm (F: \ projects \ auf meinem Computer).
  2. Suchen Sie in der Suchleiste in der oberen rechten Ecke des Explorer-Fensters nach "svn" (ohne Anführungszeichen).
  3. Sie sollten eine Billion nutzloser SVN-Dateien und -Ordner wie ".svn" und "svn-base" in den Ergebnissen sehen.

Lösung:

  1. Besuchen Sie http://code.msdn.microsoft.com/windowssearch/
  2. Laden Sie CrawlScopeCommandLine.zip herunter
  3. Extrahieren Sie an eine beliebige Stelle auf Ihrem Computer und kompilieren Sie das Projekt
  4. Öffnen Sie ein Konsolenfenster mit Administratorrechten (Strg + Umschalt + Linksklick auf das Element "Eingabeaufforderung" im Startmenü).
  5. Navigieren Sie zu dem Ort, an dem Sie das obige Projekt kompiliert haben.
  6. Führen Sie die Datei csmcmd.exe mit dem Parameter / add_rule aus (verwenden Sie /? Zuerst für die Syntax).
  7. In meinem Fall habe ich folgenden Befehl eingegeben: csmcmd.exe /add_rule file:///F:\projects\*\.svn\* /USER /EXCLUDE

Das habe ich herausgefunden, indem ich zuerst den Befehl: ausgeführt habe csmcmd.exe /enumerate_rules, um alle vorhandenen aufzulisten. Es gab bereits einige Regeln für die Verwendung von Asterix (*) - Platzhaltern durch Windows, sodass bewiesen wurde, dass dies möglich war.

Wiederholen Sie nun die Schritte, um das Problem zu reproduzieren. In den Suchergebnissen sollte kein SVN-Durcheinander mehr zu sehen sein. Warten Sie, bis der Computer die Indizes aktualisiert hat. Auf meinem System dauerte dies weniger als 5 Minuten. Manchmal kann es hilfreich sein, den Suchdienst neu zu starten, einen Neuaufbau / Neuindex zu starten oder einen Neustart durchzuführen.

Update : Einige meiner SVN-Projekte verwenden ".svn" und andere "_svn". Deshalb habe ich jedem Laufwerk die folgenden zwei Regeln hinzugefügt:

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

Giscard Biamby
quelle
Gibt es ein Update zur Wirksamkeit?
Jonathan Day
Funktioniert bei mir! Gute Erklärung, Giscard!
Christopher Oezbek
Ich verwende diese Methode seit einem Jahr und sie hat bei mir einwandfrei funktioniert.
Giscard Biamby
1
Link ist tot, aber dies ist eine Beispiel-App, die in MS SDKs enthalten ist und auch separat erhältlich ist. Quelle ist hier: msdn.microsoft.com/en-us/library/windows/desktop/… - nicht sicher, ob Microsoft noch eine Binärdatei hostet. Ich habe `. \ Csmcmd / add_rule" file: /// c: * \ .git * "/ DEFAULT / EXCLUDE` verwendet, um meine Git-Repos auszuschließen.
Ryan Pavlik
5

AFAIK, Windows-Indexdienst unter Windows 7 sieht standardmäßig nur im Ordner Benutzer aus (korrigieren Sie mich, wenn ich mich irre). Wenn Sie Ihre SVN-Repositorys in Ihrem persönlichen Ordner haben, können Sie:

a) Platzieren Sie Ihre SVN-Repositorys an einem anderen Ort

b) Indem Sie diese Ordner aus dem Index ausschließen. Hier erfahren Sie, wie Sie einen Ordner ausschließen.

LaughingMan
quelle
7
Ich möchte, dass meine Repositorys indiziert werden, nur nicht die SVN-Metadatendateien.
James Van Boxtel
4

Die offensichtliche Lösung wäre, Subversion so zu ändern, dass dieses Flag "Nicht indizieren" gesetzt wird, wenn ein .svn-Verzeichnis erstellt wird. Das Problem ist, dass diese Funktion bei der Einführung nicht mehr benötigt wird.

Das bekannte Problem wird höchstwahrscheinlich in den derzeit entwickelten Subversion-Versionen (Version 1.7) behoben. Es gibt weitaus weniger Dateivorgänge im .svn-Verzeichnis und nur 1 .svn-Verzeichnis pro Arbeitskopie.

Dies verringert die Wahrscheinlichkeit, dass das Problem auftritt, und erleichtert das Deaktivieren der Indizierung erheblich, da nur ein einziger .svn-Ordner vorhanden ist.

Sander Rijken
quelle
2

Brute-Force-Methode

  1. Suche nach allen .svn Verzeichnissen
  2. Alles auswählen (Strg + A)
  3. rechte Maustaste Eigenschaften
  4. Klicken Sie auf "Weiter ..."
  5. Deaktivieren Sie das Kontrollkästchen "Diesen Ordner indizieren, um die Suche zu beschleunigen".
  6. Übernehmen Sie die Änderung

Die WDS-Gruppenrichtlinie verfügt über eine Option für Prevent Indexing Certain Paths, ist jedoch für Windows Vista gemäß der Funktionsübersicht nicht verfügbar.

Unterstützt unter: Windows XP, Windows Server 2003 mit Windows Search 3.01 oder einer beliebigen Version von Microsoft Windows mit Windows Search 4.0 oder höher.

Darren Hall
quelle
1
Mir war diese Problemumgehung bekannt, sie ist jedoch nicht automatisch. Das Ziel ist, dass neue Ordner, die automatisch erstellt werden, dieses Verhalten aufweisen.
James Van Boxtel
1

Wenn die Antwort von Darren Halls der Ansatz "Brute Force" ist, muss meine Antwort der Ansatz "Brute Force and Ignorance" sein. :)

Das hat mich kürzlich geärgert, da wir SVN für das Dokumenten- und Projektmanagement verwenden. Dies kann bedeuten, dass der Windows-Indexer sehr nützlich ist, wenn es darum geht, nach undurchsichtigen Dokumenten zu suchen, aber das Abfangen aller SVN-Speicherdateien ist einfach nutzlos.

Dies ist meine (ziemlich hässliche) Lösung in einer Windows-Batchdatei:

 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"

Die erste und letzte Zeile gibt es, weil ATTRIB sich weigert, den + I-Schalter auf einen versteckten Ordner anzuwenden, zumindest für mich. Sie müssen dies in eine Datei wie "svnNoIndex.bat" kopieren und in Ihrem SVN-Checkout-Verzeichnis ausführen. Bei einem großen Repository kann es einige Zeit dauern ...

Ich teste dies derzeit unter Vista mit dem neuesten Service Pack. Ich erwarte, dass es unter Windows 7 funktioniert. Ich weiß nicht, ob der Index neu erstellt werden muss, um die Dateien zu berücksichtigen, die jetzt als nicht indiziert von markiert sind Das mache ich, aber ich muss meins trotzdem neu bauen, also mache ich das, weil es nur ein paar Tage sind, während der Index neu aufgebaut wird.

Um dies "automatisch" zu machen, können Sie die Batch-Datei als Post-Update-Hook hinzufügen, der nach einem Update ausgeführt wird ... vorausgesetzt, es ist chaotisch, aber es funktioniert möglicherweise.

Mokubai
quelle
1

Sie können Windows Search im Wesentlichen anweisen, SVN-Ordner zu ignorieren, indem Sie die Registrierung optimieren.

[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

Die URL stimmt mit Ordnern mit dem Namen ".svn" überall in Ihrem Dateisystem überein. (Die Nummer nach den Standardregeln sollte eindeutig sein. Wenn Sie also bereits eine Standardregel 11 haben, wählen Sie eine andere Nummer.)

Grynn
quelle
Mir ist aufgefallen, dass DefaultRules ein ItemCount-Dword enthält. Ich bin mir nicht sicher, ob dies notwendig ist, habe diesen Wert jedoch erhöht, um die zusätzliche Regel zu berücksichtigen.
Gapple