Mercurial命令行“;空气污染指数;推荐人?

Mercurial命令行“;空气污染指数;推荐人?,mercurial,Mercurial,我正在使用Mercurial GUI客户端,它通过命令行(据我所知,是首选的高级API)与hg.exe交互 但是,我很难确定每个命令的可能输出。我可以通过模拟情况看到几个输出,但我想知道是否有每个命令可能输出的完整参考 例如,对于命令hg fetch,一些可能的输出是: pulling from https://User@server.com/Repo searching for changes no changes found 如果没有变化,或: abort: outstanding unc

我正在使用Mercurial GUI客户端,它通过命令行(据我所知,是首选的高级API)与
hg.exe
交互

但是,我很难确定每个命令的可能输出。我可以通过模拟情况看到几个输出,但我想知道是否有每个命令可能输出的完整参考

例如,对于命令
hg fetch
,一些可能的输出是:

pulling from https://User@server.com/Repo
searching for changes
no changes found
如果没有变化,或:

abort: outstanding uncommitted changes
或其他几条消息中的一条,视情况而定

我想构建我的程序,以尽可能多地处理这些案例,但我很难提前知道它们都是什么


命令行是否有文档化的参考?我还没能在谷歌上找到一个。

查看翻译字符串文件。然后你就会知道你已经处理了每一条消息,并且能够看到其中的哪些部分有所不同

另外,fetch只是一个方便的pull/update/merge包装器。如果您以编程方式调用mercurial,您可能希望在运行它时将这三个非常不同的概念分开,以便知道哪个部分失败了。在上面的示例中,是“更新”失败,因此“拉”会成功,而“更新失败”会允许您向用户提供更好的消息


(fetch是一个讨厌的东西,这也是默认情况下禁用它的部分原因)

这就是您想要的:?

Mercurial 1.9带来了一个稳定的(从某种意义上说API没有太大变化)和低开销(不需要为每个命令运行hg进程)。通信是通过管道完成的。

检查字符串文件是一个好主意,尽管这并不是确定每个命令可能的响应的简单方法。该文件中大约有200个字符串;我不认为我可以正确地识别每一个上下文(或多个上下文)。关于你的
fetch
长篇大论:我意识到这可能不是纯DVC的最好例子,但我发现在实践中,我经常希望将这三个动作一起完成,这使它变得很方便。但是,嘿,这就是配置文件的用途,对吗?是的,当由人类运行时,“fetch”更合适,但如果您要自动化任何东西,这是一个非常可疑的选择。:)不幸的是,mercurial的退出代码(在wiki中有文档记录)也没有太大的帮助。总的来说,如果某件事情发生在stderr,那么它就不起作用了,如果一切都是为了Stdou,那么你就成功了。这并不是我想要的,尽管这是使用Mercurial的有用资源。我一直在开发一个与
hg.exe
交互的程序,通过向它发送命令,然后解析输出,我想要一些非常具体的命令结果文档,就像编程API文档一样。用户文档对可能发生的情况不是很具体,尤其是几乎没有关于错误的信息。