2012-01-08 15 views
7

Piszę aplikację, która pozwoli użytkownikom zaplanować powtarzanie zadań, które pobierają/pakują pliki z dowolnej liczby źródeł (SVN/Mercurial/etc).Klonowanie repozytoriów rtęciowych z C#?

Udało mi się zrealizować wszystko z wyjątkiem Mercurial. Ponieważ chcę, aby moja aplikacja radziła sobie ze wszystkim, chciałbym uniknąć konieczności rozpowszechniania całego katalogu Mercurial za pomocą mojej aplikacji lub, co gorsza, wymagającego, aby użytkownik ją zainstalował.

Nie mogłem znaleźć dla niego żadnego API, więc zastanawiam się, jakie byłoby najlepsze podejście. Czy istnieje samodzielny plik wykonywalny, który mógłbym dołączyć do mojego projektu i używać go, gdy moja aplikacja wydaje komendę "hg clone"?

+0

Powiązane pytanie: [Używanie programu Mercurial (HG) programowo z C#/.NET] (http://stackoverflow.com/questions/2885958/using-mercurial-hg-programmatically-od-c-net) (aczkolwiek starsze) . –

+0

Dzięki, chociaż natknąłem się na to i nie uznałem tego za pomocne. Sprawdziłem http://mercurialnet.codeplex.com, ale nie ma żadnej pomocy instalacyjnej, więc nie mogę stwierdzić, czy nadal muszę dołączyć mercurial .exe z aplikacją lub co tam się dzieje. –

+0

Ma kod źródłowy, więc mam nadzieję, że gdy integracja Mercurial CodePlex zacznie znowu działać, pomoże ci. Po drugim przejrzeniu strony [Funkcje] (http://mercurialnet.codeplex.com/wikipage?title=Features&referringTitle=Home), 'Uwaga: wymaga zainstalowania Mercurial, biblioteka nie jest dostarczana z Mercurial i nie działa w własny! ", więc może nie być wystarczający dla twoich potrzeb. –

Odpowiedz

4

Spójrz na tę stronę - MercurialApi.

Zalecany interfejs API jest w rzeczywistości wierszem polecenia i zaczyna się od powodów, dla których nie powinieneś używać wewnętrznego interfejsu API.

Jest jednak wiele informacji o tym, jak korzystać z wewnętrznego interfejsu API, jeśli naprawdę tego chcesz.

Musisz znaleźć sposób na wywołanie Pythona z C#. Jedną z tych, które znalazłem, gdy szukałem czegoś takiego, nazwano IronPython.

Ponadto, jestem pewien, że twój program musiałby być open source, jeśli miałbyś używać wewnętrznego API Mercurial, ale musiałbyś najpierw przyjrzeć się temu samemu .

2

Najlepszym sposobem na połączenie z Mercurial jest command server.

Zasadniczo serwer komend jest podobny do wiersza poleceń, ale unika narzutów Mercurial na tworzenie instancji. Istnieje Java (JavaHg) i implementacja Pythona (PythonHgLib), jego wersja C# jeszcze nie istnieje, ale nie powinna być zbyt skomplikowana do implementacji, protokół komunikacyjny ma być prosty.

W przeciwnym razie zalecane jest wywołanie wiersza poleceń.