如何使用Mercurial保存用戶名和密碼?


Answers

有三種方法可以執行此操作:使用.hgrc文件,使用ssh或使用密鑰環擴展


1. INSECURE方式 - 更新你的〜/ .hgrc文件

適用於我的格式(在我的〜/ .hgrc文件中)是這樣的

[ui]
username=Chris McCauley <chris.mccauley@mydomain.com>

[auth]
repo.prefix = https://server/repo_path
repo.username = username
repo.password = password


您可以根據需要配置任意數量的回購,只需添加更多的前綴,用戶名,密碼三元組即可。

這只適用於Mercurial 1.3,顯然你的用戶名和密碼是純文本的 - 不好。


2.安全的方式 - 使用SSH以AVOID使用密碼

Mercurial完全支持SSH,因此我們可以利用SSH無需密碼即可登錄到服務器 - 您可以通過一次性配置來提供自行生成的證書。 這是迄今為止最安全的方式來做你想做的事。


你可以在這裡找到更多配置無密碼登錄的信息


3.鑰匙環擴展

如果你想要一個安全的選項,但不熟悉SSH,為什麼不嘗試這個?

從文檔...

該擴展會在第一次從給定的遠程存儲庫中拉出/推送時提示輸入HTTP密碼(就像默認情況下那樣),但會在密碼數據庫中保存密碼(由用戶名和遠程存儲庫url組合鍵)。 在下一次運行時,它將檢查.hg / hgrc中的用戶名,然後在密碼數據庫中查找合適的密碼,並在找到時使用這些憑據。

這裡有更詳細的信息

Question

我在一個個人項目中使用了Mercurial,每次我想將某些東西推送到服務器時,我一直在輸入用戶名和密碼。

我嘗試將以下內容添加到我的主目錄中的.hgrc文件,但它似乎完全被忽略。

[ui]
username = MY_USER_NAME
password = MY_PASSWORD

如何以正確的方式做到這一點?




一個簡單的方法是將用戶名和密碼添加到項目的.hg/hgrc文件中的推送網址中:

[paths]
default = http://username:password@mydomain.com/myproject

(請注意,通過這種方式,您可以以純​​文本形式存儲密碼)

如果您正在同一個域下的多個項目中工作,則可能需要在~/.hgrc文件中添加一個重寫規則,以避免在所有項目中重複該規則:

[rewrite]
http.//mydomain.com = http://username:password@mydomain.com

同樣,由於密碼以純文本形式存儲,我通常只存儲我的用戶名。

如果你在Gnome下工作,我會解釋如何在這裡整合Mercurial和Gnome Keyring:

http://aloiroberto.wordpress.com/2009/09/16/mercurial-gnome-keyring-integration/




雖然它可能會或可能不適用於您的情況,但我發現使用Putty的Pageant生成公鑰/私鑰很有用。

如果您還在使用bitbucket(.org),它應該能夠為您的用戶帳戶提供公鑰,然後自動保護到達存儲庫的命令。

如果重新啟動時沒有為您啟動Pageant,則可以將Pageant的快捷方式添加到Windows的“開始”菜單中,並且該快捷方式可能需要使用私有(.ppk)文件的位置填充“屬性” 。

有了這個Mercurial和您的本地存儲庫需要設置為使用SSH格式推/拉。

以下是關於Atlassian用於Windows或Mac / Linux的站點的一些詳細說明。

你不必接受我的話,毫無疑問,有其他方法可以做到這一點。 這裡描述的這些步驟可能更適合您:

  1. 從Start - > PuTTY-> PuttyGen啟動PuttyGen
  2. 生成一個新密鑰並將其保存為.ppk文件,而不需要密碼
  3. 使用膩子登錄到您要連接的服務器
  4. 將PuttyGen中的公鑰文本附加到〜/ .ssh / authorized_keys的文本中
  5. 從開始 - >修補程序到開始 - >啟動,創建一個到.ppk文件的快捷方式
  6. 從啟動菜單中選擇.ppk快捷方式(這將在每次啟動時自動發生)
  7. 查看系統托盤中的選美圖標? 右鍵單擊它並選擇“新會話”
  8. 在“主機名稱”字段中輸入用戶名@主機名
  9. 您現在將自動登錄。



使用MacPorts在Mac OSX上安裝mercurial_keyring:

sudo port install py-keyring
sudo port install py-mercurial_keyring

將以下內容添加到〜/ .hgrc中:

# Add your username if you haven't already done so.
[ui]
username = email@address.com

[extensions]
mercurial_keyring =