2012-01-08 11 views
7

Estoy escribiendo una aplicación que permitirá a los usuarios programar tareas repetitivas que descargan/empaquetan archivos de cualquier cantidad de fuentes (SVN/Mercurial/etc).¿Clonación de repositorios mercuriales de C#?

He logrado implementar todo excepto Mercurial. Como quiero que mi aplicación maneje todo, me gustaría evitar tener que distribuir todo el directorio de Mercurial con mi aplicación o, lo que es peor, requerir que el usuario lo tenga instalado.

No he podido encontrar ningún tipo de API, así que me pregunto cuál sería el mejor enfoque. ¿Existe algún ejecutable independiente que pueda incluir en mi proyecto y lo uso cuando mi aplicación emite un comando "hg clone"?

+0

Pregunta relacionada: [Uso de Mercurial (HG) programáticamente desde C# /. NET] (http://stackoverflow.com/questions/2885958/using-mercurial-hg-programmatically-from-c-net) (aunque sea anterior) . –

+0

Gracias, aunque ya me encontré con eso y no me pareció tan útil. Revisé http://mercurialnet.codeplex.com pero no tiene ayuda de instalación, por lo que no puedo decir si todavía necesito incluir mercurial .exe con la aplicación, o qué está pasando allí. –

+0

Tiene código fuente, así que con suerte una vez que la integración Mercurial de CodePlex comience a funcionar nuevamente, te ayudará. Después de un segundo vistazo a la página [Características] (http://mercurialnet.codeplex.com/wikipage?title=Features&referringTitle=Home), 'Nota: requiere la instalación de Mercurial, la biblioteca no viene con ejecutables Mercurial y no funciona en ¡propio! 'por lo que puede no ser suficiente para sus necesidades. –

Respuesta

4

Echa un vistazo a esta página - MercurialApi.

La API recomendada es en realidad la línea de comandos y comienza con las razones por las que no debe usar la API interna.

Sin embargo, tiene mucha información sobre cómo usar la API interna si realmente lo desea.

Tendría que encontrar la manera de llamar a Python desde C#. Uno que encontré al buscar hacer algo como esto se llamó IronPython.

Además, estoy bastante seguro de que su programa debería ser de código abierto si tuviera que usar la API interna de Mercurial, pero tendría que buscar en eso usted mismo.

2

La mejor manera de interactuar con Mercurial es a través del command server.

Básicamente, el servidor de comandos es similar a la línea de comandos, pero evita la sobrecarga de creación de instancias de Mercurial. Existe una implementación Java (JavaHg) y Python (PythonHgLib), una versión C# de la misma no existe, pero creo que no debería ser demasiado compleja de implementar, el protocolo de comunicación está diseñado para ser simple.

De lo contrario, invocar la línea de comando es el enfoque recomendado.