Automatisches Deaktivieren von Windows 7 für die Indizierung von SVN-Metadaten

7846
James Van Boxtel

Es gibt ein bekanntes Problem mit SVN-Repositorys und dem Windows-Indexierungsdienst, der sich um .svn-Metadatendateien kümmert. Hier für mehr Details.

Wie können wir das so einrichten, dass automatisch keine Probleme auftreten, wenn Subversion-Repositorys von Windows (Vista / Win7) indiziert werden. (Wir möchten nicht jedes Mal etwas manuell tun, wenn wir das Repo-Verzeichnis hinzufügen.)

Eine Idee ist, Windows so einzurichten, dass Ordner mit dem Namen ".svn" nicht automatisch indiziert werden. Ich finde jedoch keinen Weg, 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

26
SVN-Repositorys enthalten keine SVN-Dateien, SVN-Arbeitskopien. Es geht wahrscheinlich um Probleme mit der Arbeitskopie Sander Rijken vor 14 Jahren 0

6 Antworten auf die Frage

11
Giscard Biamby

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

F: \ projekte \

Unter diesem Ordner befinden sich Codebäume und zugehörige Projektdateien, die sich auf mehr als 2 GB belaufen. Ich muss ständig in diesem Baum und in Windows suchen. Die Indexierung war wirklich ein äußerst nützliches Werkzeug für die schnelle Suche. Daher war das Deaktivieren der Option keine Option. Ich möchte die SVN-Ordner ausschließen, weil sie meine Suchergebnisse durcheinanderbringen. (2) unnötiges Ziehen auf meinem System. (3) SVN, Win7 und MS Security Essentials scheinen bei großen SVN-Vorgängen nicht gut zu funktionieren.

Bevor Sie die Lösung ausprobieren, reproduzieren Sie das Problem:

  1. Navigieren Sie in Windows Explorer zu Ihrem indizierten Projektstammverzeichnis (F: \ projects \ auf meinem Computer).
  2. Suchen Sie mithilfe der Suchleiste in der rechten oberen Ecke des Explorer-Fensters nach "svn" (ohne Anführungszeichen).
  3. Sie sollten eine Billion nutzlose 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 einen Ort auf Ihrem Computer und kompilieren Sie das Projekt
  4. Öffnen Sie ein Konsolenfenster mit Administratorrechten (Strg + Umschalttaste + Klicken Sie mit der linken Maustaste auf den Eintrag "Eingabeaufforderung" im Startmenü).
  5. Navigieren Sie dorthin, wo 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

Ich habe das herausgefunden, indem ich zuerst den Befehl: ausgeführt habe csmcmd.exe /enumerate_rules, um alle vorhandenen aufzulisten. Es gab bereits einige Regeln, in denen Asterix (*) - Platzhalter von Windows verwendet wurden. Dies war der Beweis, dass dies möglich war.

Wiederholen Sie nun die Schritte, um das Problem zu reproduzieren, und Sie sollten das SVN-Durcheinander in Ihren Suchergebnissen nicht mehr sehen. Geben Sie dem Computer die Zeit, um die Indizes zu aktualisieren - dies hat auf meinem System weniger als 5 Minuten gedauert. Starten Sie den Suchdienst manchmal neu, starten Sie eine Neuerstellung / Neuindexierung oder einen Neustart, um die Dinge voranzutreiben.

Update : Einige meiner SVN-Projekte verwenden ".svn" und einige verwenden "_svn". Daher habe ich jedem Laufwerk diese beiden Regeln hinzugefügt:

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

irgendein Update auf der Wirksamkeit dieses? Jonathan Day vor 13 Jahren 0
Funktioniert bei mir! Gute Erklärung, Giscard! Christopher Oezbek vor 13 Jahren 0
Ich habe diese Methode nun seit einem Jahr angewendet und sie hat für mich einwandfrei funktioniert. Giscard Biamby vor 12 Jahren 0
Der Link ist nicht aktiv, aber dies ist eine Beispiel-App, die in MS SDKs enthalten ist und separat erhältlich ist. Quelle ist hier: https://msdn.microsoft.com/de-de/library/windows/desktop/dd940334(v=vs.85).aspx - nicht sicher, ob Microsoft immer noch eine Binärdatei hostet. Ich habe `. \ Csmcmd / add_rule" file: /// c: \ * \ .git \ * "/ DEFAULT / EXCLUDE" verwendet, um meine Git-Repos auszuschließen. Ryan Pavlik vor 9 Jahren 1
5
LaughingMan

AFAIK, der Windows-Indizierungsdienst unter Windows 7 sucht standardmäßig nur im Ordner Benutzer (korrigieren Sie mich, wenn ich falsch liege). Wenn sich Ihre SVN-Repositorys in Ihrem persönlichen Ordner befinden, können Sie:

a) Platzieren Sie Ihre SVN-Repositorys an anderer Stelle

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

Ich möchte, dass meine Repositorys indiziert werden, nicht jedoch die svn-Metadatendateien. James Van Boxtel vor 14 Jahren 7
4
Sander Rijken

Die naheliegendste Lösung wäre, Subversion so zu ändern, dass dieses Flag nicht indiziert 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 gerade entwickelten Subversion-Versionen (Version 1.7) verschwinden. Innerhalb des .svn-Verzeichnisses gibt es weit weniger Dateivorgänge und auch nur 1 .svn-Verzeichnis pro Arbeitskopie.

Dies macht es weniger wahrscheinlich, dass das Problem auftritt, und es ist auch viel einfacher, die Indizierung zu deaktivieren, da es nur einen einzigen .svn-Ordner gibt.

2
Darren Hall

Brute-Force-Methode

  1. Suchen Sie nach allen .svn-Verzeichnissen
  2. Alles auswählen (Strg + a)
  3. Eigenschaften der rechten Maustaste
  4. Klicken Sie auf "Weiter ...".
  5. Deaktivieren Sie das Kontrollkästchen "Diesen Ordner für eine schnellere Suche indizieren"
  6. Übernehmen Sie die Änderung

Für WDS-Gruppenrichtlinien gibt es eine Option für Prevent Indexing Certain PathsWindows Vista, die jedoch gemäß der Funktionsübersicht nicht für Windows Vista verfügbar ist.

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.

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 vor 14 Jahren 1
1
Mokubai

Wenn Darren Halls die Antwort auf "Brute Force" lautet, muss meine Antwort "Brute Force and Ignorance" sein. :)

Dies ist etwas, was mich kürzlich geärgert hat, da wir SVN für das Dokumenten- und Projektmanagement verwenden. Dies kann bedeuten, dass der Windows-Indexierer sehr nützlich ist, wenn nach obskuren Dokumenten gesucht werden soll. Das Abfangen aller SVN-Speicherdateien ist jedoch sinnlos.

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 die letzte Zeile sind da, weil ATTRIB sich weigert, den Schalter + I 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 würde erwarten, 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 gekennzeichnet sind Ich mache das trotzdem, aber ich muss meine sowieso neu aufbauen, also mache ich es, da es nur ein paar Tage ist, während sich der Index neu aufbaut.

Um dies "automatisch" zu machen, können Sie die Batchdatei als Post-Update-Hook hinzufügen, der nach einem Update ausgeführt wird ... vorausgesetzt, es ist unordentlich, kann jedoch funktionieren.

1
Grynn

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 den Ordnern ".svn" überall in Ihrem Dateisystem überein. (Die Anzahl nach den Standardregeln sollte eindeutig sein - dh, wenn Sie bereits eine Standardregel 11 haben, wählen Sie eine andere Nummer).

Ich habe festgestellt, dass DefaultRules ein ItemCount-Dword enthält. Ich bin nicht sicher, ob es notwendig ist, aber ich habe diesen Wert erhöht, um die zusätzliche Regel zu berücksichtigen. gapple vor 12 Jahren 0