2008-10-01 20 views
30

Tôi đang sử dụng VisualSVN Server để lưu trữ một repo SVN, và đối với một số công việc tự động hóa, tôi muốn có thể nhận các phiên bản cụ thể qua lớp http.Bắt bản sửa đổi cụ thể qua http với VisualSVN Server

Tôi có thể lấy phiên bản HEAD chỉ qua một yêu cầu http đến máy chủ (httpd?) - nhưng có khả năng xác định bản sửa đổi, có lẽ là chuỗi truy vấn không? Tôi dường như không thể tìm thấy nó ...

Tôi không muốn thực hiện thanh toán trừ khi tôi có thể trợ giúp vì có rất nhiều tệp trong thư mục cụ thể và tôi không muốn tất cả - chỉ một hoặc hai.

Trả lời

83

Tốt hơn bao giờ hết; ? https://entire/Path/To/Folder/file/?p=REV

p = Rev quy định cụ thể việc sửa đổi

+2

Điều này làm việc cho tôi với giao diện web máy chủ VisualSVN . Cảm ơn! – dnewcome

+2

Điều này cũng làm việc cho tôi. Cảm ơn. – ianstigator

+12

Câu trả lời này xứng đáng được chấp nhận! – gregorej

4

Subversion không công khai tài liệu Uris mà nó sử dụng nội bộ để truy cập thông tin đó. (Và nơi tài liệu được ghi lại, rõ ràng điều này có thể thay đổi trong các phiên bản sau)

Để truy cập thông tin này trên web, bạn có thể sử dụng trình xem web (Ví dụ: websvn, viewvc).

Nếu bạn muốn truy cập nó từ chương trình của riêng bạn, bạn cũng có thể sử dụng một khách hàng ràng buộc như SharpSvn.

using (SvnClient client = new SvnClient()) 
using (FileStream fs = File.Create("c:\\temp\\file.txt")) 
{ 
    // Perform svn cat http://svn.collab.net/svn/repos/trunk/COMMITTERS -r 23456 
    //     > file.txt 

    SvnCatArgs a = new SvnCatArgs(); 
    a.Revision = 23456; 
    client.Cat(new Uri("http://svn.collab.net/svn/repos/trunk/COMMITTERS"), a, fs); 
} 

[Cập nhật 2008-12-31: Một trong số ít các phiên bản tiếp theo của Subversion sẽ bắt đầu ghi lại các url nào bạn có thể sử dụng để lấy phiên bản cũ.]

+0

Thú vị - rất, rất thú vị. Tôi sẽ cho nó một cái xoáy. –

+0

Lưu ý rằng các phiên bản Subversion mới hơn giờ đây có cú pháp url công khai để truy xuất các bản sửa đổi cũ. Bạn có thể chỉ định @revision với? P = revision và a -r rev sử dụng? R = rev. (Và tất nhiên những giá trị này có thể được kết hợp) –

6

Dunno nếu bạn đã tìm thấy câu trả lời cho câu hỏi này, nhưng trong máy chủ svn thường xuyên trên apache bạn có thể tới một phiên bản đặc biệt với:

http://host/svn-name/!svn/bc/REVISION_NUMBER/path/to/file.ext 
  • chủ & REVISION_NUMBER là hiển nhiên
  • /path/to/file.ext liên quan đến repo root

Tôi chưa bao giờ sử dụng visualsvn để số dặm của bạn có thể thay đổi.

+0

Thú vị; Tôi sẽ xem xét –

+1

VisualSVN không sử dụng định dạng đó. Xem câu trả lời của @ chhenni ở trên. –

+0

Điều này có vẻ như những gì tôi đã sau - làm thế nào để làm điều đó mà không có một cái gì đó như visualsvn. Tôi không chắc chắn tôi làm theo phần '! Svn/bc /'. Làm thế nào bạn sẽ lấy một bản sửa đổi cụ thể từ một đường dẫn như thế này: http: // svn.apache.org/repos/asf/httpd/site/trunk/content/index.mdtext' –

Các vấn đề liên quan