2015-07-04 102 views
1

我正在嘗試將gitpython與IDE集成,但我遇到了一些推送問題。Gitpython ssh密碼

remote_repo = self.repo.remotes[remote] 
remote_repo.push(self.repo.active_branch.name) 

當我運行此命令,或者只是

混帳推 - 陶瓷產地主

的提示,詢問我的SSH密碼。

Enter passphrase for key '/home/user/.ssh/id_rsa': 

我的問題是:

  • 該系統會提示用戶或沒有這個密碼
  • 如果需要密碼,我需要一個跨平臺的解決方案

我怎樣才能解決方法它並提供一個界面來識別是否需要密碼,並且如果能夠提供它的話?

回答

1

如果你想完全控制SSH連接的方式,並且你使用的是git 2.3或更新版本,你可以使用GIT_SSH_COMMAND環境變量集來實例化git。它指向一個名爲的腳本,代替了ssh的。因此,您可以確定是否需要密碼,並啓動其他GUI以獲取所需的輸入。

在代碼中,它會是這個樣子:

remote_repo = self.repo.remotes[remote] 

# here is where you could choose an executable based on the platform. 
# Shell scripts might just not work plainly on windows. 
ssh_executable = os.path.join(rw_dir, 'my_ssh_executable.sh') 
# This permanently changes all future calls to git to have the given environment variables set 
# You can pass additional information in your own environment variables as well. 
self.repo.git.update_environment(GIT_SSH_COMMAND=ssh_executable) 

# now all calls to git which require SSH interaction call your executable 
remote_repo.push(self.repo.active_branch.name) 

請注意,這隻適用於通過SSH訪問資源。例如,如果協議是HTTPS,則可能會提供密碼提示。

在git 2.3之前,您可以使用GIT_SSH環境變量。它的工作方式不同,因爲它只包含ssh程序的路徑,其中會傳遞附加參數。當然,這可能是您的腳本,與上面顯示的類似。我想更準確地指出這兩個環境變量之間的差異,但我缺乏這樣做的個人經驗。