如果你想完全控制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
程序的路徑,其中會傳遞附加參數。當然,這可能是您的腳本,與上面顯示的類似。我想更準確地指出這兩個環境變量之間的差異,但我缺乏這樣做的個人經驗。