如何使用hg pull提供登录凭证?

问题描述:

是否有任何提供登录凭证(Mercurial用户名和密码)与hg pull命令?或者无论如何通过提供用户名和密码与特定用户开始会话?我想使用Java代码和命令行API自动执行mercurial pull过程。如何使用hg pull提供登录凭证?

我知道有一种方式来构建相应的存储库URL,例如,http://user:[email protected]/MercurialRepo,但这不适合我的情况。

+0

您要使用哪种协议? HTTP,SSH,...? – 2012-01-31 13:18:25

+0

使用ssh(和keys)应该解决的问题 – Thilo 2012-01-31 13:19:41

请参阅我的guide about remote repositories。您的选择取决于您使用的协议 - 它看起来像您使用来自您提供的示例URL的HTTP。在这种情况下,你可以使用

  • use the auth section:这是安全的,只要你保护你的Mercurial配置文件。原生Mercurial解决方案,因此适用于所有平台。

  • keyring extension:这可能是更安全的,由于您的操作系统auth部分可以加密形式在磁盘上存储的密码。该扩展可在所有平台上运行,但您需要自行安装和配置它 - 它是TortoiseHg的一部分,但不是Mercurial本身。

  • 在URL中嵌入密码:这很容易,但很不安全,您已经拒绝了这一点。

最后,既然您提到了Java,那么让我来指您JavaHg。这是一个用于与Mercurial交互的Java库。它没有对拉和克隆(还)的用户名和密码的特殊支持,所以我建议现在使用auth部分。

+0

谢谢Martin。这对我真的很有帮助。但是,如果存储库托管在SSH上,并且我想通过Java代码访问它,该怎么办?当然,我将不得不从Java中的命令行实用程序运行HG命令,但正如您可能知道的那样,它会提示我输入SSH用户的密码。现在如何处理这个问题,因为没有办法提供密码和存储库URL? – sra 2012-02-07 11:37:48

+0

@sra:我不确定。也许你可以在Mercurial中将'ui.ssh'设置为你自己的程序。该程序将不得不建立到远程主机的SSH连接。我建议看看MercurialEclipse如何做到这一点。我们最终必须为JavaHg做同样的事情,但我们还没有得到这么多。 – 2012-02-07 12:01:23

+0

感谢Martin的快速回复。其实我正在用Java开发一个应用程序,它将读取所有的Mercurial Commits或者History。现在为此,我剩下的只有一个选择,那就是命令行API HG。由于某些合法性问题,我无法使用JavaHg。所以,从命令行选项,我坚持在这一点上。通过HTTP,您可以选择创建存储库URL来容纳用户名和密码,它一直以完美的方式工作。 – sra 2012-02-07 13:02:32