【问题标题】:Cloning Mercurial Repositories from C#?从 C# 克隆 Mercurial 存储库?
【发布时间】:2012-02-05 04:25:13
【问题描述】:

我正在编写一个应用程序,它允许用户安排从任意数量的来源(SVN/Mercurial/等)下载/打包文件的重复任务。

我已经设法实现了除了 Mercurial 之外的所有东西。由于我希望我的应用程序能够处理所有事情,因此我希望避免将整个 Mercurial 目录与我的应用程序一起分发,或者更糟的是,要求用户安装它。

我找不到任何类型的 API,所以我想知道最好的方法是什么。是否有一个独立的可执行文件可以包含在我的项目中,并在我的应用程序发出“hg clone”命令时使用?

【问题讨论】:

  • 相关问题:Using Mercurial (HG) programmatically from C#/.NET(虽然较旧)。
  • 谢谢,虽然我已经偶然发现并没有发现它有什么帮助。我确实检查了mercurialnet.codeplex.com,但它没有安装帮助,所以我不知道我是否还需要在应用程序中包含 mercurial .exe,或者那里发生了什么。
  • 它有源代码,所以希望一旦 CodePlex 的 Mercurial 集成再次开始工作,它会帮助你。再次查看Features 页面时,Note: Requires Mercurial to be installed, library does not come with Mercurial executables and does not function on its own! 可能不足以满足您的需求。
  • 啊,我错过了,谢谢你指出这一点。是的,主要问题是我不能要求安装 Mercurial,因为这违背了目的。暂时我可能不得不考虑其他一些替代方案。
  • Mercurial.net 需要安装 mercurial 客户端,或者至少与您的应用程序捆绑在一起,它只会使执行 hg.exe 和处理结果变得容易(免责声明:我是 Mercurial.exe 的作者。净)

标签: c# .net-4.0 mercurial clone checkout


【解决方案1】:

看看这个页面 - MercurialApi

推荐的 API 实际上是命令行,它从你不应该使用内部 API 的原因开始。

但是,如果您真的想的话,它确实有很多关于如何使用内部 API 的信息。

您需要找到某种方法从 C# 调用 Python。我在考虑做这样的事情时发现一个叫做IronPython

另外,如果您要使用 Mercurial 的内部 API,我很确定您的程序必须是开源的,但您需要查看 自己进去。

【讨论】:

    【解决方案2】:

    与 Mercurial 交互的最佳方式是通过 command server

    基本上,命令服务器类似于命令行,但避免了 Mercurial 实例化开销。有Java(JavaHg)和Python实现(PythonHgLib),C#版本我觉得还没有,但实现起来应该不会太复杂,通信协议设计的很简单。

    否则,建议使用命令行。

    【讨论】: