从 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) 存储库