Tìm kiếm Kho lưu trữ SVN [đã đóng]


155

Có phần mềm tốt nào cho phép tôi tìm kiếm thông qua kho lưu trữ SVN của tôi để tìm các đoạn mã không? Tôi đã tìm thấy 'FishEye' nhưng chi phí là 1.200 và nằm ngoài ngân sách của tôi.


6
Bạn có cần tìm kiếm trong lịch sử của repo? Hay chỉ là cái đầu?
swilliams

4
Có phiên bản miễn phí của FishEye - www.atlassian.com/starter
David d C e Freitas

1
@DavidFreitas hiện không có tùy chọn miễn phí
bahrep

Có một phiên bản $ 10 của FishEye: www.atlassian.com/software/starter/overview , @bahrep. Sau khi tắt, tất cả tiến hành từ thiện.
David d C e Freitas

1
svn log --searchtùy chọn mới , có thể hữu ích cho ai đó đang tìm kiếm lịch sử kho lưu trữ đơn giản.
bahrep

Câu trả lời:


68

Nếu bạn chỉ tìm kiếm tên tệp, hãy sử dụng:

svn list -R file:///subversion/repository | grep filename

Các cửa sổ:

svn list -R file:///subversion/repository | findstr filename

Nếu không, hãy kiểm tra và thực hiện tìm kiếm hệ thống tập tin:

egrep -r _code_ .

3
Nó có thể không hoàn toàn rõ ràng, nhưng các lệnh này áp dụng cho bất kỳ phương pháp truy cập máy chủ svn nào, không chỉ tệp: (ví dụ: svn: và svn + ssh: cũng hoạt động)
Alex Marshall

2
//, Bạn có phiền khi cung cấp một ví dụ hoạt động cho từng người không?
Nathan Basan

1
OP muốn tìm kiếm thông qua các tập tin, không chỉ tên tập tin. ví dụ tìm kiếm hệ thống tập tin không rất hữu ích.
erict


12

Cập nhật tháng 1 năm 2020

VisualSVN Server 4.2 hỗ trợ tìm tệp và thư mục trong giao diện web. Hãy thử tính năng mới trên một trong các kho lưu trữ của máy chủ demo !

Xem Ghi chú phát hành phiên bản 4.2 và tải xuống VisualSVN Server 4.2.0 từ trang tải xuống chính .

nhập mô tả hình ảnh ở đây


Câu trả lời cũ

Bắt đầu với Subversion 1.8, bạn có thể sử dụng --searchtùy chọn với svn loglệnh . Lưu ý rằng lệnh không thực hiện tìm kiếm toàn văn bản trong kho lưu trữ, nó chỉ xem xét các dữ liệu sau:

  • tác giả sửa đổi ( svn:authortài sản không đảo ngược),
  • ngày ( svn:datetài sản không đảo ngược),
  • nhật ký tin nhắn văn bản ( svn:logtài sản không đảo ngược),
  • danh sách các đường dẫn thay đổi (tức là các đường dẫn bị ảnh hưởng bởi sửa đổi cụ thể).

Đây là trang trợ giúp về các tùy chọn tìm kiếm mới này:

 If the --search option is used, log messages are displayed only if the
 provided search pattern matches any of the author, date, log message
 text (unless --quiet is used), or, if the --verbose option is also
 provided, a changed path.
 The search pattern may include "glob syntax" wildcards:
     ?      matches any single character
     *      matches a sequence of arbitrary characters
     [abc]  matches any of the characters listed inside the brackets
 If multiple --search options are provided, a log message is shown if
 it matches any of the provided search patterns. If the --search-and
 option is used, that option's argument is combined with the pattern
 from the previous --search or --search-and option, and a log message
 is shown only if it matches the combined search pattern.
 If --limit is used in combination with --search, --limit restricts the
 number of log messages searched, rather than restricting the output
 to a particular number of matching log messages.

1
Phương pháp này hoạt động nhanh, nhưng không nên được sử dụng để tìm kiếm sự hiện diện của các tệp. Vì tùy chọn tìm kiếm này chỉ phân tích danh sách các đường dẫn được thay đổi rõ ràng trong mỗi lần sửa đổi, bạn có thể tạo các bản sao thư mục (nhánh mới được tạo từ thân cây) nơi có một tệp nhất định, nhưng nó sẽ không được liệt kê theo phương pháp này.
Pieter-Jan Busschaert

@ Pieter-JanBusschaert nhận xét của bạn là về việc sử dụng lệnh svn log --search. Xem câu trả lời cập nhật về tìm kiếm dựa trên webui mới. Nó không có giới hạn này.
bahrep


9
  1. Tạo git-svngương của kho lưu trữ đó.
  2. Tìm kiếm các chuỗi được thêm hoặc xóa trong git: git log -S'my line of code'hoặc tương tự tronggitk

Ưu điểm là bạn có thể thực hiện nhiều tìm kiếm cục bộ mà không cần tải máy chủ và kết nối mạng.


8

Ví dụ này chuyển nội dung đầy đủ của kho lưu trữ vào một tệp, sau đó bạn có thể nhanh chóng tìm kiếm tên tệp trong trình chỉnh sửa:

svn list -R svn://svn > filelist.txt

Điều này hữu ích nếu kho lưu trữ tương đối tĩnh và bạn muốn thực hiện tìm kiếm nhanh mà không phải tải liên tục mọi thứ từ máy chủ SVN.


4
Tôi nên lưu ý rằng trong trường hợp của tôi, nó là cần thiết để sử dụng httpnhư giao thức ( svn list -R http://repo/svn/etc).
Charles Wood

bị hạ cấp, vì OP muốn tìm kiếm thông qua các tệp chứ không phải tên tệp. Lệnh danh sách svn chỉ loại bỏ tên tệp của kho lưu trữ.
erict


4

Chỉ cần lưu ý, FishEye (và rất nhiều sản phẩm Atlassian khác) có Phiên bản Starter 10 đô la, trong trường hợp FishEye cung cấp cho bạn 5 kho lưu trữ và quyền truy cập cho tối đa 10 ủy viên. Tiền đi từ thiện trong trường hợp này.

www.atlassian.com/starter


Không còn nữa? Tôi không thấy các tùy chọn miễn phí trên trang.
bahrep

@bahrep, tôi đã cập nhật câu trả lời, bây giờ là 10 đô la, hoạt động từ thiện có hiệu quả "miễn phí" nếu bạn nghĩ về nó.
David d C e Freitas

3

Rất chậm (và được triển khai thô sơ) nhưng sự kết hợp của nhật ký svn và mèo svn hoạt động nếu bạn đang tìm kiếm lịch sử của các tệp đơn hoặc kho lưu trữ nhỏ:

svn log filetosearch |
    grep '^r' |
    cut -f1 -d' ' |
    xargs -i bash -c "echo '{}'; svn cat filetosearch -'{}'" 

sẽ xuất ra mỗi số sửa đổi trong đó tập tin thay đổi và tập tin. Bạn luôn có thể chuyển từng bản sửa đổi thành một tệp khác nhau và sau đó grep để thay đổi.

Tái bút Upvote lớn cho bất cứ ai chỉ cho tôi làm thế nào để làm điều này đúng!


3
Chỉ cần sử dụng git-svn. Git đã tích hợp tìm kiếm mã trong lịch sử cam kết. Nhưng bạn sẽ cần phải tải xuống toàn bộ lịch sử cam kết để sử dụng git-svn.
Vi.

2

Nếu bạn thực sự tuyệt vọng, hãy thực hiện một bãi chứa repo (xem "svnadmin dump") và sau đó grep qua nó. Nó không đẹp, nhưng bạn có thể nhìn xung quanh các kết quả tìm kiếm để tìm siêu dữ liệu chỉ ra tệp và sửa đổi, sau đó kiểm tra xem nó có tốt hơn không.

Không phải là một giải pháp tốt, để chắc chắn, nhưng nó là miễn phí :) SVN không cung cấp tính năng nào để tìm kiếm các đăng ký trong quá khứ (hoặc thậm chí các tệp nhật ký trong quá khứ, AFAIK).


1

Rất nhiều repos SVN là các trang web HTTP "đơn giản", vì vậy bạn có thể xem xét việc xem xét một số ứng dụng tìm kiếm "thu thập dữ liệu web" ngoài kệ mà bạn có thể trỏ vào root SVN và nó sẽ cung cấp cho bạn chức năng cơ bản. Cập nhật nó có thể sẽ là một mẹo nhỏ, có lẽ một số tin tặc kiểm tra SVN có thể đánh dấu chỉ mục để loại bỏ hoặc reindex thay đổi khi bạn đi.

Chỉ cần suy nghĩ thành tiếng.


1
Đây có lẽ không phải là một ý tưởng tốt, vì chi phí liên quan sẽ rất lớn. Ngoài ra, các máy chủ SVN thường không phải là các trang web thông thường, nhưng một repo svn được hiển thị thông qua webdav.
torkildr

1

Có krugle và koders nhưng cả hai đều đắt tiền. Cả hai đều có plugin ide cho nhật thực.


2
Krugle cơ bản thì sao?
Bard

1

Tôi bắt đầu sử dụng công cụ này

http://www.supose.org/wiki/supose

Nó hoạt động tốt chỉ thiếu giao diện người dùng trực quan, nhưng nhanh và có phần được duy trì


1
Ngày nay (tháng 8 năm 2012) dự án dường như đã bị đình trệ ...
anol

Vào tháng 12 năm 2012, họ đã phát hành một cái gì đó mới (0.7.1)
sendmoreinfo

2
dường như đã biến mất
fbstj

0

// Chỉnh sửa: Công cụ đã được đề cập trong câu trả lời khác, vì vậy hãy cung cấp tất cả tín dụng cho Kuryaki.

Chỉ cần tìm SupoSE , một công cụ dòng lệnh dựa trên java để quét một kho lưu trữ để tạo một chỉ mục và sau đó có thể trả lời một số loại truy vấn nhất định. Chúng tôi vẫn đang đánh giá công cụ nhưng có vẻ đầy hứa hẹn. Điều đáng nói là nó tạo ra một chỉ mục đầy đủ của tất cả các phiên bản bao gồm các tệp mã nguồn và các định dạng văn phòng phổ biến.

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.