2012-01-08 13 views
7

Sto scrivendo un'applicazione che consentirà agli utenti di pianificare attività ripetitive che scaricano/impacchettano file da qualsiasi numero di fonti (SVN/Mercurial/etc).Clonazione di depositi mercuriali da C#?

Sono riuscito a implementare tutto tranne Mercurial. Poiché desidero che la mia applicazione gestisca tutto, vorrei evitare di dover distribuire l'intera directory Mercurial con la mia applicazione, o peggio, richiedendo all'utente di installarla.

Non sono stato in grado di trovare alcun tipo di API per questo, quindi mi chiedo quale sia l'approccio migliore. Esiste un eseguibile standalone che potrei includere nel mio progetto e lo uso quando la mia applicazione emette un comando "hg clone"?

+0

Domanda correlata: [Uso di Mercurial (HG) a livello di codice da C# /. NET] (http://stackoverflow.com/questions/2885958/using-mercurial-hg-programmatically-from-c-net) (anche se precedente) . –

+0

Grazie, anche se mi sono già imbattuto in quello e non l'ho trovato molto utile. Ho controllato http://mercurialnet.codeplex.com ma non ha aiuto per l'installazione, quindi non posso dire se ho ancora bisogno di includere .exe mercurial con l'applicazione, o che cosa sta succedendo lì. –

+0

Ha il codice sorgente, quindi speriamo che una volta che l'integrazione di Mercurial di CodePlex riprenda a funzionare, ti aiuterà. Alla seconda occhiata alla pagina [Caratteristiche] (http://mercurialnet.codeplex.com/wikipage?title=Features&referringTitle=Home), 'Nota: Richiede l'installazione di Mercurial, la libreria non viene fornita con gli eseguibili di Mercurial e non funziona su proprio! 'quindi potrebbe non essere sufficiente per le vostre esigenze. –

risposta

4

Dai un'occhiata a questa pagina - MercurialApi.

L'API consigliata è in realtà la riga di comando e inizia con i motivi per cui non si dovrebbe utilizzare l'API interna.

Tuttavia, ci sono molte informazioni su come utilizzare l'API interna se lo si desidera.

Dovresti trovare un modo per chiamare Python da C#. Uno che ho trovato cercando di fare qualcosa di simile è stato chiamato IronPython.

Inoltre, sono abbastanza sicuro che il tuo programma dovrebbe essere open source se dovessi usare l'API interna di Mercurial ma avresti bisogno di guardare a te stesso .

2

Il modo migliore per interfacciarsi con Mercurial è tramite lo command server.

Fondamentalmente il server di comando è simile alla riga di comando, ma evita l'overhead di istanziazione Mercurial. Esiste un'implementazione Java (JavaHg) e Python (PythonHgLib), una versione C# non esiste ancora, ma penso che non dovrebbe essere troppo complessa da implementare, il protocollo di comunicazione è progettato per essere semplice.

In caso contrario, richiamare la riga di comando è l'approccio consigliato.

Problemi correlati