Tự động vô hiệu hóa Windows 7 khỏi lập chỉ mục siêu dữ liệu .svn


26

Có một vấn đề được biết đến với kho SVN và dịch vụ lập chỉ mục windows chống lại các tệp siêu dữ liệu .svn. Ở đây để biết thêm chi tiết.

Làm thế nào chúng ta có thể thiết lập nó để tự động không có vấn đề gì với các kho lưu trữ lật đổ được lập chỉ mục bởi các cửa sổ (Vista / Win7). (Chúng tôi không muốn phải tự làm gì đó mỗi lần chúng tôi thêm thư mục repo.)

Một ý tưởng là thiết lập Windows để tự động không lập chỉ mục các thư mục có tên ".svn", tuy nhiên tôi không thể tìm ra cách nào để làm điều này.

Tôi biết bạn có thể vô hiệu hóa một số tiện ích mở rộng nhất định, nhưng điều đó dường như không hoạt động vì các tệp siêu dữ liệu svn nằm trong một thư mục.

Lưu ý:


Các kho lưu trữ của SVN không chứa các tệp .svn, các bản sao làm việc của SVN. Có lẽ đó là về các vấn đề sao chép đang hoạt động
Sander Rijken

Câu trả lời:


11

Tôi đã có cùng một vấn đề và tìm thấy một giải pháp. Tất cả mã của tôi được lưu trữ trong một thư mục duy nhất:

F: \ dự án \

Trong thư mục đó là các cây mã và các tệp dự án liên quan có tổng dung lượng trên 2GB. Tôi liên tục cần tìm kiếm cây và cửa sổ này Lập chỉ mục thực sự là một công cụ cực kỳ hữu ích để thực hiện tìm kiếm nhanh, vì vậy tắt nó không phải là một lựa chọn. Tôi muốn loại trừ các thư mục SVN vì chúng làm lộn xộn kết quả tìm kiếm của tôi, (2) kéo không cần thiết trên hệ thống của tôi, (3) SVN, Win7 và MS Security Essentials dường như không hoạt động tốt khi thực hiện các hoạt động SVN lớn.

Trước khi bạn thử giải pháp, hãy tạo lại vấn đề:

  1. Trong Windows Explorer, điều hướng đến gốc dự án được lập chỉ mục của bạn (F: \ dự án \ trên máy của tôi).
  2. Sử dụng thanh Tìm kiếm ở góc trên bên phải của cửa sổ Explorer, tìm kiếm "svn" (trích dẫn w / o)
  3. Bạn sẽ thấy hàng nghìn tỷ tệp và thư mục SVN vô dụng như ".svn" và "svn-base" hiển thị trong kết quả.

Dung dịch:

  1. Truy cập http://code.msdn.microsoft.com/windowssearch/
  2. Tải xuống CrawlScopeCommandLine.zip
  3. Trích xuất đến một nơi nào đó trên máy của bạn và biên dịch dự án
  4. Mở cửa sổ Console với quyền quản trị (Ctrl + Shift + Nhấp chuột trái vào mục "Dấu nhắc lệnh" trong menu Bắt đầu).
  5. Điều hướng đến bất cứ nơi nào bạn biên soạn dự án trên.
  6. Thực thi csmcmd.exe với / add_rule param (sử dụng /? Trước tiên cho cú pháp).
  7. Trong trường hợp của tôi, tôi đã nhập lệnh sau: csmcmd.exe /add_rule file:///F:\projects\*\.svn\* /USER /EXCLUDE

Tôi đã tìm ra điều này bằng cách trước tiên chạy lệnh : csmcmd.exe /enumerate_rules, để liệt kê tất cả những cái hiện có. Đã có một số quy tắc với ký tự đại diện (*) được sử dụng bởi Windows, vì vậy đó là bằng chứng cho thấy điều này là có thể.

Bây giờ lặp lại các bước để tái tạo vấn đề và bạn sẽ không còn thấy sự lộn xộn của SVN trong kết quả tìm kiếm của bạn. Thỉnh thoảng hãy cho máy tính cập nhật các chỉ mục - việc này chỉ mất chưa đầy 5 phút trên hệ thống của tôi. Đôi khi, khởi động lại dịch vụ Tìm kiếm, khởi động xây dựng lại / reindex hoặc khởi động lại giúp di chuyển mọi thứ.

Cập nhật : Một số dự án SVN của tôi sử dụng ".svn" và một số sử dụng "_svn", vì vậy tôi đã thêm hai quy tắc này vào mỗi ổ đĩa:

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


bất kỳ cập nhật về hiệu quả của điều này?
Ngày Jonathan

Làm việc cho tôi! Giải thích tốt, Giscard!
Christopher Oezbek

Tôi đã sử dụng phương pháp này được một năm và nó đã hoạt động hoàn hảo đối với tôi.
Giscard Biamby

1
Liên kết đã chết, nhưng đây là một ứng dụng mẫu có trong MS SDK, cũng như có sẵn riêng. Nguồn ở đây: msdn.microsoft.com/en-us/l Library / windows / desktop / Khăn - không chắc chắn nếu Microsoft vẫn lưu trữ nhị phân. Tôi đã sử dụng tệp `. \ Csmcmd / add_rule": /// c: * \ .git * "/ DEFAULT / EXCLUDE` để loại trừ repos git của tôi.
Ryan Pavlik

5

AFAIK, dịch vụ Lập chỉ mục Windows trên Windows 7 chỉ xem trong thư mục Người dùng là mặc định (sửa tôi nếu tôi sai). Nếu bạn có kho SVN trong thư mục cá nhân của mình, bạn có thể:

a) Đưa kho SVN của bạn đi nơi khác

b) Bằng cách loại trừ các thư mục từ chỉ mục. Ở đây bạn sẽ tìm thấy làm thế nào để loại trừ một thư mục.


7
Tôi muốn lập chỉ mục kho lưu trữ của mình, không phải là tệp siêu dữ liệu svn.
James Van Boxtel

4

Cách khắc phục rõ ràng là thay đổi Subversion để đặt cờ "không lập chỉ mục" này bất cứ khi nào nó tạo thư mục .svn. Vấn đề là tính năng này sẽ không còn cần thiết khi được giới thiệu.

Vấn đề đã biết rất có thể sẽ biến mất trong các phiên bản Subversion hiện đang được phát triển (phiên bản 1.7). Sẽ có ít hoạt động tập tin bên trong thư mục .svn và cũng chỉ có 1 thư mục .svn cho mỗi bản sao làm việc.

Điều này làm giảm khả năng xảy ra sự cố và cũng giúp vô hiệu hóa việc lập chỉ mục dễ dàng hơn nhiều, vì chỉ có một thư mục .svn duy nhất.


2

Phương pháp vũ phu

  1. tìm kiếm tất cả thư mục .svn
  2. chọn tất cả (ctrl + a)
  3. thuộc tính nhấp chuột phải
  4. nhấp vào "trước ..."
  5. bỏ chọn "Lập chỉ mục thư mục này để tìm kiếm nhanh hơn"
  6. áp dụng thay đổi

Chính sách nhóm WDS có một tùy chọn cho Prevent Indexing Certain Paths, nhưng nó không được liệt kê có sẵn cho Windows Vista theo biểu đồ tính năng.

Được hỗ trợ trên: Windows XP, Windows Server 2003 với Windows Search 3.01 hoặc bất kỳ phiên bản Microsoft Windows nào có Windows Search 4.0 trở lên.


1
Tôi đã nhận thức được cách giải quyết này, tuy nhiên nó không tự động. Mục tiêu là để có các thư mục mới được tạo tự động có hành vi này.
James Van Boxtel

1

Nếu câu trả lời của Darren Halls là cách tiếp cận "Brute Force", thì câu trả lời của tôi phải là cách tiếp cận "Brute Force and lơ". :)

Đây là điều gần đây đã làm tôi khó chịu khi chúng tôi sử dụng SVN để quản lý tài liệu và dự án, điều đó có nghĩa là bộ chỉ mục Windows rất hữu ích khi có thể tìm kiếm các tài liệu tối nghĩa, nhưng việc bắt tất cả các tệp lưu trữ svn chỉ là vô ích.

Đây là giải pháp (khá xấu xí) của tôi trong tệp bó 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"

Dòng đầu tiên và cuối cùng là có vì ATTRIB từ chối áp dụng + Tôi chuyển sang thư mục ẩn, ít nhất là nó đã làm cho tôi. Bạn sẽ cần sao chép tệp này vào một tệp như "svnNoIndex.bat" và chạy nó trong thư mục thanh toán SVN của bạn, với một kho lưu trữ lớn có thể mất một thời gian ...

Tôi hiện đang thử nghiệm điều này trong Vista với gói dịch vụ mới nhất, tôi hy vọng nó sẽ hoạt động trên Windows 7. Tôi không biết liệu chỉ mục có cần được xây dựng lại để tính đến các tệp hiện được đánh dấu là không được lập chỉ mục bởi làm điều này, nhưng dù sao tôi cũng cần phải xây dựng lại công việc của mình vì vậy đó là những gì tôi đang làm vì chỉ vài ngày trong khi chỉ mục xây dựng lại.

Để thực hiện "tự động" này, bạn có thể thêm tệp bó dưới dạng hook sau cập nhật được chạy sau khi cập nhật ... với điều kiện là nó lộn xộn, nhưng nó có thể hoạt động.


1

Về cơ bản, bạn có thể yêu cầu Windows Search bỏ qua các thư mục .svn bằng cách điều chỉnh sổ đăng ký.

[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 khớp với các thư mục có tên ".svn" ở bất kỳ đâu trên hệ thống tệp của bạn. (Số sau quy tắc mặc định phải là duy nhất - tức là nếu bạn đã có quy tắc mặc định 11, hãy chọn số khác).


Tôi nhận thấy rằng DefaultRules chứa một từ khóa ItemCount. Không chắc chắn là cần thiết, nhưng tôi đã tăng giá trị này để tính cho quy tắc bổ sung.
gapple
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.