Python git确定项目是否具有SSH或PWD身份验证

时间:2018-04-04 08:02:52

标签: python git authentication

我有一个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:
        ,,,

1 个答案:

答案 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'