从 C# 克隆 Mercurial 存储库?

Posted

技术标签:

【中文标题】从 C# 克隆 Mercurial 存储库?【英文标题】:Cloning Mercurial Repositories from C#? 【发布时间】: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 的作者。净) 【参考方案1】:

看看这个页面 - MercurialApi。

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

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

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

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

【讨论】:

【参考方案2】:

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

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

否则,建议使用命令行。

【讨论】:

以上是关于从 C# 克隆 Mercurial 存储库?的主要内容,如果未能解决你的问题,请参考以下文章

Mercurial:两个Windows开发人员,我的PC上的中央存储库。我应该在中央存储库中工作还是从中克隆?

无法通过 http 克隆 mercurial (hg) 存储库

如何在 Mercurial 中克隆存储库的子文件夹?

如何从 Mercurial 克隆中删除工作副本?

创建新的 mercurial 存储库克隆 SINCE 修订版

将存储库克隆到本地文件系统上的文件夹的 Mercurial hg 克隆语法是啥