Windows 7'yi İndeksleme.


26

SVN depoları ve .svn meta veri dosyaları ile mücadele eden Windows dizin oluşturma hizmeti ile ilgili bilinen bir sorun var. Daha fazla ayrıntı için burada.

Bunu nasıl ayarlayabiliriz ki otomatik olarak pencereler tarafından indekslenen yıkılma havuzlarına sahip herhangi bir problem yaşanmaz (Vista / Win7). (Her repo dizini eklediğimizde bir şeyi el ile yapmak zorunda değiliz.)

Bir fikir, Windows'u ".svn" adlı klasörleri otomatik olarak endekslemeyecek şekilde ayarlamaktır, ancak bunu yapmanın bir yolunu bulamıyorum.

Belirli uzantıları devre dışı bırakabileceğinizi biliyorum, ancak svn meta veri dosyaları bir klasörde olduğundan bu işe yaramadı.

Not:


SVN depoları .svn dosyaları içermez, SVN çalışma kopyaları yapar. Muhtemelen kopya kopyalama çalışmalarıyla ilgili
Sander Rijken

Yanıtlar:


11

Aynı problemi yaşıyordum ve bir çözüm buldum. Tüm kodum tek bir klasörde saklanıyor:

F: \ projeler \

Bu klasörün altında toplam 2 GB'tan büyük kod ağaçları ve ilgili proje dosyaları bulunur. Sürekli olarak bu ağacı ve pencereleri aramaya ihtiyacım var Dizin oluşturma aslında hızlı arama yapmak için oldukça kullanışlı bir araç oldu, bu yüzden onu kapatmak bir seçenek değildi. SVN klasörlerini hariç tutmak istiyorum çünkü arama sonuçlarımı karıştırıyorlar, (2) sistemimde gereksiz yere sürükleme, (3) SVN, Win7 ve MS Security Essentials, büyük SVN işlemleri yaparken iyi çalışmıyor gibi görünüyor.

Çözümü denemeden önce sorunu yeniden oluşturun:

  1. Windows Gezgini'nde, dizine alınmış proje kökünüze gidin (makinemde F: \ projects \).
  2. Explorer penceresinin sağ üst köşesindeki Arama çubuğunu kullanarak, "svn" kelimesini aratın (tırnak işaretleri olmadan)
  3. Sonuçlarda ortaya çıkan trilyonlarca yararsız SVN dosyası ve ".svn" ve "svn-base" gibi klasörleri görmelisiniz.

Çözüm:

  1. Http://code.msdn.microsoft.com/windowssearch/ adresini ziyaret edin.
  2. İndir CrawlScopeCommandLine.zip
  3. Makinenizdeki bir yere çıkartın ve projeyi derleyin
  4. Yönetici haklarına sahip bir Konsol penceresi açın (Ctrl + Shift + Başlat menüsündeki "Komut İstemi" öğesine sol tıklayın).
  5. Yukarıdaki projeyi nerede derleyeceğinize gidin.
  6. Csmcmd.exe dosyasını / add_rule param ile yürütün (sözdizimi için önce /? Kullanın).
  7. Benim durumumda şu komutu girdim: csmcmd.exe /add_rule file:///F:\projects\*\.svn\* /USER /EXCLUDE

Bunu ilk önce komutu çalıştırarak anladım:, csmcmd.exe /enumerate_rulesmevcut olanları listelemek için. Asteriks (*) joker karakterinin Windows tarafından kullanılmasına ilişkin bazı kurallar zaten vardı, bu yüzden bunun mümkün olduğunu ispatladı.

Şimdi, sorunu yeniden oluşturma adımlarını tekrarlayın ve artık SVN karmaşasını arama sonuçlarınızda görmemelisiniz. Dizinleri güncellemek için bilgisayara bir süre verin - bu benim sistemimde 5 dakikadan az sürdü. Bazen Arama hizmetini yeniden başlatmak, bir yeniden inşa / reindex başlatmak veya yeniden başlatmak, işleri ilerletmek için yardımcı olur.

Güncelleme : Bazı SVN projelerim ".svn" ve bazıları "_svn" kullanıyor, bu yüzden her iki sürücüye de bu iki kuralı ekledim:

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


Bunun etkinliği hakkında herhangi bir güncelleme var mı?
Jonathan Day

Benim için çalışıyor! İyi açıklama, Giscard!
Christopher Oezbek

Bu yöntemi bir yıldan beri kullandım ve kusursuz bir şekilde benim için çalıştı.
Giscard Biamby

1
Link öldü, ancak bu MS SDK'lara dahil edilen ve ayrı olarak sunulan bir örnek uygulama. Kaynak burada: msdn.microsoft.com/en-us/library/windows/desktop/… - Microsoft'un hala bir ikili dosya barındırdığından emin değil. Git repolarımı dışlamak için `. \ Csmcmd / add_rule" file: /// c: * \ .git * "/ DEFAULT / EXCLUDE` kullandım.
Ryan Pavlik

5

AFAIK, Windows 7'deki Windows Dizin Oluşturma hizmeti yalnızca varsayılan olarak Kullanıcılar klasörüne bakar (yanılıyorsam düzelt). Kişisel klasörünüzde SVN havuzlarınız varsa, şunları yapabilirsiniz:

a) SVN depolarınızı başka bir yere koymak

b) Bu klasörleri dizinden hariç tutarak. Burada bir klasörü nasıl dışlayacağınızı bulacaksınız.


7
Depolarımı svn meta-data dosyalarını değil, endeksli yapmak istiyorum.
James Van Boxtel,

4

Açık bir düzeltme Subversion'u, bu "dizini gösterme" bayrağını bir .svn dizini oluşturduğu zaman ayarlamak üzere değiştirmek olacaktır. Sorun şu ki, bu özellik tanıtıldığında artık gerekli olmayacak.

Bilinen sorun büyük olasılıkla şu anda geliştirilmekte olan Subversion sürümlerinde ortadan kalkacaktır (sürüm 1.7). .Svn dizini içinde çok daha az dosya işlemi ve çalışma kopyası başına sadece 1 .svn dizini olacaktır.

Bu, sorunun ortaya çıkma olasılığını azaltır ve ayrıca endekslemeyi devre dışı bırakmayı da kolaylaştırır, çünkü yalnızca bir .svn klasörü vardır.


2

Kaba kuvvet yöntemi

  1. Tüm .svn dizini için bir arama yapmak
  2. tümünü seç (ctrl + a)
  3. sağ fare tıklaması özellikleri
  4. "ilerlet" i tıklayın
  5. "Bu klasörü daha hızlı arama için dizine ekle" seçeneğinin işaretini kaldırın.
  6. değişikliği uygula

WDS Grup İlkesi için bir seçenek var Prevent Indexing Certain Paths, ancak özellik tablosuna göre Windows Vista için mevcut değil.

Desteklenenler: Windows XP, Windows Search 3.01 ile Windows Server 2003 veya Windows Search 4.0 veya sonraki bir sürümü olan Microsoft Windows.


1
Bu geçici çözümün farkındaydım, ancak otomatik değil. Amaç, otomatik olarak oluşturulan yeni klasörlere sahip olmaktır.
James Van Boxtel

1

Eğer Darren Halls'ın cevabı "Brute Force" yaklaşımı ise, benim cevabım "Brute Force ve Cehalet" yaklaşımı olmalı. :)

Bu, yakın zamanda beni rahatsız eden bir şeydir, SVN'yi belge ve proje yönetimi için kullandığımızdan, bu da Windows indeksleyicinin karanlık belgeleri araştıracağında çok yararlı olduğu anlamına gelebileceği anlamına gelir;

Bu bir windows toplu iş dosyasındaki (oldukça çirkin) çözümüm:

 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"

İlk ve son satırlar orada çünkü ATTRIB + I anahtarını gizli bir klasöre uygulamayı reddetti, en azından benim için yaptı. Bunu "svnNoIndex.bat" gibi bir dosyaya kopyalamanız ve SVN ödeme dizininizde çalıştırmanız gerekecek, biraz zaman alabilir ...

Şu anda en son hizmet paketiyle Vista'da test ediyorum, Windows 7'de çalışmasını bekliyorum. Dizin tarafından şu anda dizine eklenmemiş olarak işaretlenmiş dosyaları hesaba katmak için dizinin yeniden oluşturulması gerekip gerekmediğini bilmiyorum bunu yapıyorum, ama yine de benimkileri yeniden inşa etmem gerekiyor, bu yüzden endeks yeniden oluşturulurken sadece birkaç gün olduğu gibi yapıyorum.

Bunu "otomatik" hale getirmek için toplu iş dosyasını bir güncellemeden sonra çalıştırılan bir güncelleme sonrası kancası olarak ekleyebilirsiniz ... verilmiş olması zor, ancak işe yarayabilir.


1

Windows Search'e, kayıt defterini düzenleyerek .svn klasörlerini yoksaymasını söyleyebilirsiniz.

[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

URL, dosya sisteminizin herhangi bir yerinde ".svn" adlı klasörlerle eşleşir. (Varsayılan kurallardan sonraki sayı benzersiz olmalıdır - yani, zaten varsayılan bir kural 11 varsa, başka bir numara seçin).


DefaultRules'ın bir ItemCount dword içerdiğini fark ettim. Gerekli olduğundan emin değilim, ancak ek kuralı hesaplamak için bu değeri artırdım.
gapple
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.