2012-01-31 40 views
3

是否有任何提供登錄憑證(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

回答

4

請參閱我的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