2012-01-08 39 views
7

Tôi đang viết một ứng dụng cho phép người dùng lên lịch lặp lại các tác vụ tải xuống/đóng gói các tệp từ bất kỳ số nguồn nào (SVN/Mercurial/etc).Nhân bản kho lưu trữ Mercurial từ C#?

Tôi đã quản lý để triển khai mọi thứ trừ Mercurial. Vì tôi muốn ứng dụng của mình xử lý mọi thứ, tôi muốn tránh phải phân phối toàn bộ thư mục Mercurial với ứng dụng của tôi, hoặc tệ hơn, yêu cầu người dùng phải cài đặt nó.

Tôi không thể tìm thấy bất kỳ loại API nào cho nó, vì vậy tôi tự hỏi phương pháp tốt nhất sẽ là gì. Có một thực thi độc lập tôi có thể bao gồm với dự án của tôi và sử dụng nó khi ứng dụng của tôi đưa ra lệnh "hg clone" không?

+0

Câu hỏi liên quan: [Sử dụng Mercurial (HG) lập trình từ C# /. NET] (http://stackoverflow.com/questions/2885958/using-mercurial-hg-programmatically-from-c-net) (mặc dù cũ hơn) . –

+0

Cảm ơn, mặc dù tôi đã tình cờ gặp phải điều đó và không thấy nó hữu ích. Tôi đã kiểm tra http://mercurialnet.codeplex.com nhưng nó không có sự giúp đỡ cài đặt, vì vậy tôi không thể nói nếu tôi vẫn cần phải bao gồm exe mercurial với ứng dụng, hoặc những gì đang xảy ra ở đó. –

+0

Nó có mã nguồn, vì vậy hy vọng khi tích hợp Mercurial của CodePlex bắt đầu hoạt động trở lại, nó sẽ giúp bạn. Khi xem lại trang [Tính năng] (http://mercurialnet.codeplex.com/wikipage?title=Features&referringTitle=Home), 'Lưu ý: Yêu cầu Mercurial được cài đặt, thư viện không đi kèm với các tệp thi hành Mercurial và không hoạt động trên riêng của nó! 'vì vậy nó có thể không đủ cho nhu cầu của bạn. –

Trả lời

4

Hãy xem trang này - MercurialApi.

API được đề xuất thực sự là dòng lệnh và bắt đầu bằng lý do tại sao bạn không nên sử dụng API nội bộ.

Tuy nhiên, nó có rất nhiều thông tin về cách sử dụng API nội bộ nếu bạn thực sự muốn.

Bạn cần tìm một số cách để gọi Python từ C#. Một cái mà tôi tìm thấy khi nhìn vào một cái gì đó như thế này được gọi là IronPython.

Ngoài ra, tôi khá chắc chắn rằng chương trình của bạn sẽ phải là nguồn mở nếu bạn sử dụng API nội bộ của Mercurial nhưng bạn cần phải tự mình xem .

2

Cách tốt nhất để giao tiếp với Mercurial là thông qua command server.

Về cơ bản, máy chủ lệnh tương tự như dòng lệnh, nhưng tránh chi phí khởi tạo Mercurial. Có một Java (JavaHg) và một triển khai Python (PythonHgLib), một phiên bản C# của nó chưa tồn tại nhưng tôi nghĩ nó không quá phức tạp để thực hiện, giao thức truyền thông được thiết kế đơn giản.

Nếu không, hãy gọi dòng lệnh là phương pháp được đề xuất.

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