Câu hỏi Tìm kiếm trong kho SVN cho tên tệp


Chúng tôi có một kho lưu trữ số lượng lớn cho mã chứa hàng nghìn thư mục và thư mục con, tôi muốn tìm kiếm theo người gửi lại này với tên tệp hoặc với một số từ.

Root folder
    a\
    b\
    c\
    d\
    e\
    f\ab\
    f\ab\cd.txt

Tôi muốn tìm cd.txt nhưng không biết nó ở đâu trong SVN Repository, cho rằng tôi muốn thực hiện tìm kiếm trên thư mục gốc của SVN nơi tôi sẽ đặt tên tập tin cd.txt và chạy lệnh, sẽ kiểm tra mỗi thư mục và sẽ hiển thị kết quả chi tiết tập tin ....

Hy vọng yêu cầu là rõ ràng. Bạn có thể giúp tôi về điều này không.


76
2018-04-01 10:16


gốc


có thể trùng lặp Tìm kiếm lịch sử subversion (toàn văn) - bahrep
Tôi không nghĩ rằng nó là một bản sao. Đó là về tìm kiếm lịch sử. Đây là về việc tìm kiếm một tập tin. - Troy Daniels
Tôi đã hy vọng có một lệnh phía máy khách mà bạn có thể nhập vào đó sẽ thực hiện phía máy chủ tìm kiếm. Repo SVN này tôi đang làm việc với thời gian phản hồi khủng khiếp và tốc độ truyền tải qua VPN. Than ôi, điều đó dường như không thể. - Patrick M


Các câu trả lời:


Nếu tập tin nằm trong bản sao làm việc của bạn, thì nếu bạn đang sử dụng svn 1.5:

svn list --depth infinity | grep <filename>

hoặc phiên bản cũ hơn của svn:

find . -name <filename> -not -path '*.svn*'

Nếu bạn cần tìm tệp trong lịch sử (đã xóa hoặc di chuyển):

svn log -v | less

và tìm kiếm nó với:

\<filename><return>

55
2018-04-01 10:30



Danh sách svn - infth infinity hoạt động tốt, trong cửa sổ tất nhiên bạn sẽ không có grep theo mặc định, tôi chỉ đổ nó vào một tập tin văn bản và tìm kiếm thông qua đó với một trình soạn thảo văn bản: - Mandrake
Trong Windows PowerShell, bạn có thể sử dụng ... | select-string <filename> như một sự thay thế cho grep. - Marnix Klooster
Trong dòng lệnh cửa sổ thông thường ... | find "<filename>" cũng sẽ hoạt động như một sự thay thế cho grep. CHÚ THÍCH: "Được yêu cầu xung quanh tên tệp. - Raystorm
Nếu tập tin trong bản sao làm việc của tôi, tôi không cần svn để tìm nó. Bạn nên thêm cách tìm kiếm repo như câu trả lời của Anton và Marios. Có lẽ đó là hiển nhiên đối với bạn nhưng đó là câu trả lời của họ đã biến ligt trên cho tôi đơn giản cũ. - Lieven Keersmaekers
Bạn có thể svn co --depth empty REPOURL RepoDir, cd RepoDir và svn list --depth infinity và sau đó nhận tất cả các đường dẫn tệp từ máy chủ SVN (có thể tạo ra hàng triệu dòng nếu bạn có hàng triệu dòng). - Ivan Akcheurov


Các công trình sau đây cho tôi (svn phiên bản 1.4.6)

svn list -R <URL> | grep "<file_pattern>"

53
2017-09-20 12:08



Tuyệt quá. Điều này làm việc cho Rùa. Trong cửa sổ: svn list -R myurl >> results.txt - 40-Love
Hoạt động thực sự tốt. Cũng dễ nhớ hơn nhiều so với "-R" so với "- infth infinity". - MPV


Với quyền truy cập vào repo chính nó sử dụng (tức là trên sytem tập tin máy chủ svn của bạn)

svnlook tree [path_to_repo] | grep [file_name]  

hoặc để tìm kiếm tất cả các repos (nếu bạn có thiết lập repo mulitple).

for i in \`ls [path_to_repos_dir]`; do echo $i; svnlook tree [path_to_repos_dir]/$i | grep -i [file_or_folder_name]; done 

tùy chọn - đường dẫn đầy đủ sẽ cung cấp đường dẫn đầy đủ trong repo tới tệp (nếu tìm thấy)

thí dụ:

for i in `ls /u01/svn-1.6.17/repos`; do echo $i; svnlook tree --full-paths /u01/svn- 1.6.17/repos/$i | grep -i somefile.txt; done

chuyển hướng đầu ra đến một tập tin nếu bản sao tĩnh là cần thiết.
giả định sử dụng hệ điều hành nix.


15
2017-09-02 13:35



1 để sử dụng "svnlook tree --full-paths <path_to_repo> | grep <filename>". Đây là cách nhanh nhất mà tôi đã tìm thấy khi thực hiện tìm kiếm tệp trong repo lật đổ. - Nick Grealy
tìm kiếm cực nhanh, rất hữu ích. - Dustin Cook


svn list --depth infinity <your-repo-here> để có danh sách các tệp trong repo, và sau đó svn cat để lấy nội dung. Bạn có thể thêm --xml chìa khóa để list lệnh để làm cho việc phân tích cú pháp đơn giản hơn một chút.


12
2018-04-01 10:24



Nhớ sử dụng grep nếu bạn muốn xem 1 tệp, đặc biệt nếu bạn có hàng nghìn tệp trong kho lưu trữ như OP. Ngoài ra, có một --incremental chế độ nếu bạn cần kết nối đầu ra với đầu ra XML sau / trước đó. - trysis


Gần đây tôi đã xuất bản tiện ích để liệt kê kho lưu trữ, nhanh hơn nhiều so với phương pháp "svn ls --depth infinity". Đây là điểm chuẩn. Nó chỉ gọi một hàm có sẵn trong API nội bộ Subversion, nhưng bây giờ có thể truy cập thông qua một dòng lệnh.

Vì vậy, bạn có thể chạy

$ svn-crawler <URL> | grep "<file_pattern>"

5
2018-03-18 13:55





Nếu bạn đang sử dụng TortoiseSVN, bạn có thể thử NẾU bạn sẵn sàng xem Dự án theo Dự án - làm việc cho tôi:

  1. Tạo một dự án trống dưới URL cấp cao nhất của kho lưu trữ của bạn, gọi nó là BLANK
  2. Nhấp vào URL Repo ở ô bên trái
  3. Ở khung bên phải, chọn dự án BLANK của bạn và dự án mong muốn của bạn - nói thân cây
  4. Nhấp chuột phải để bật lên trình đơn trình duyệt và chọn 'So sánh các URL', tùy thuộc vào kích thước của repo của bạn có thể mất một phút để tải. Nhưng về cơ bản bạn có được toàn bộ danh sách dự án của mình trong danh sách 'sẵn sàng tìm kiếm'.
  5. Nhập tên tệp của bạn hoặc chuỗi khác trong bộ lọc tìm kiếm

4
2017-11-15 21:54





Nếu kho lưu trữ từ xa của bạn không lớn, thì một phương pháp dễ dàng là: Bạn có thể thực hiện "thanh toán" để nhận kho lưu trữ cục bộ. Nếu bạn đang ở trong cửa sổ máy bạn sử dụng "Tìm kiếm" hoặc Linux sử dụng máy "Tìm" lệnh.


-1
2018-03-02 07:10