2011-02-19 24 views
10

Có cách nào để tải xuống một cách đơn giản một tệp từ một kho lưu trữ Mercurial từ xa, trong Java không? Tôi đã yêu cầu một số very similar question regarding git; bây giờ tôi hy vọng tôi có thể làm một cái gì đó tương tự với mercurial là tốt.Lấy một tập tin từ kho chứa thủy ngân từ xa

  1. Tôi thích giải pháp sử dụng ít băng thông nhất có thể, tốt nhất là chỉ tải xuống một tệp đó. Tôi không cần phải duyệt kho, tôi đã có đường dẫn của tệp.
  2. Tôi không quan tâm đến lịch sử của tệp, tôi chỉ muốn phiên bản mới nhất của tệp.
  3. Một giải pháp chỉ in tệp đến đầu ra cũng rất tuyệt, tất nhiên - nó không thực sự phải lưu tệp vào đĩa, tôi có thể tự làm điều đó.
  4. Tôi thích giải pháp không phụ thuộc vào các ứng dụng khác (ví dụ: cài đặt ứng dụng khách trên máy). Một thư viện Java có chứa một bản thân khách hàng thực hiện chính nó sẽ là tối ưu. Tuy nhiên, tôi sẽ vui vẻ gọi hg nếu không có cách nào khác.

Từ những gì tôi hiểu về cách Mercurial hoạt động - cho phép làm việc chỉ chống lại kho lưu trữ địa phương - điều này có thể chứng minh là có vấn đề; nhưng như tôi đã có thể làm điều này với Git SCM tương tự tôi hy vọng có một giải pháp cho Mercurial là tốt.

Trả lời

10

mercurial wire protocol không có lệnh đọc một tệp từ một kho lưu trữ từ xa. Đó là lý do tại sao máy khách dòng lệnh hg cũng không thể thực hiện điều này. Ý tưởng là bạn nên luôn tạo một bản sao cục bộ cho những thứ như vậy.

Tuy nhiên, các giao diện web khác nhau cho mercurial thường có cách để lấy nội dung tệp. Ví dụ, đối với các kho bitbucket URL trông như thế này:

http://bitbucket.org/<user>/<project>/raw/<revision>/<filename> 

Đối với giao diện hg serve web, URL trông như thế này:

http://<host>:<port>/raw-file/<revision>/<filename> 
+3

Ngoài ra, nếu bạn cần truy cập vào repo riêng trên bitbucket, họ có api: http://confluence.atlassian.com/display/BITBUCKET/Using+the+ Bitbucket + REST + APIs – dave

+2

Đối với giao diện web 'hg server', bạn không cần biết bản sửa đổi. Bạn có thể sử dụng 'mẹo' thay vì số sửa đổi. – Benjamin

2

Các Bitbucket REST API là công cụ mà bạn muốn cho việc này.

https://api.bitbucket/1.0/repositories/{USER}/{REPO-NAME}/raw/tip/{PATH/TO/FILE}

Ví dụ từ họ docs:

Thay vì nhận được các tập tin định dạng JSON, bạn có thể lấy nguyên file:

$ curl thời gian https://api.bitbucket.org/1.0/repositories/jespern/django-piston/raw/tip/piston/utils.py nhập khẩu từ django .http nhập khẩu HttpResponseNotAllowed, HttpResponseForbidden, HttpResponse, HttpResponseBadRequest từ django.core ....

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