我有一个GUI应用程序,它使用pythongit库来执行更新。当用户使用SSH密钥对存储库进行身份验证时,更新可以顺利进行,但是当使用用户名/密码身份验证时,则会在启动应用程序的终端上显示提示(让用户打开GUI界面)它冻结了)。
有没有办法确定回购正在使用SSH或密码验证,然后可能先手动提示输入用户名/密码并将其传递给fetch
电话?
以下是基本功能:
def repo_pull(self, git_path):
try:
repo = Repo(git_path)
except InvalidGitRepositoryError as igre:
raise ValueError('Get the project as a Git repository (no archives)')
commits_ahead = repo.iter_commits('origin/master..master')
if sum(1 for c in commits_ahead) > 0:
raise ValueError("Can't pull from git; local repository has unpushed commits!")
origin = repo.remote()
try:
origin.fetch()
except GitCommandError as gce:
,,,
答案 0 :(得分:1)
我找到了一种方法来查看是否使用HTTPS或SSH访问远程
def _determine_authentication(self, repo):
config_reader = repo.config_reader()
config_reader.read()
url = config_reader.get_value('remote "origin"', 'url')
return 'pwd' if url.startswith('http') else 'ssh'