【问题标题】:Want to check if repository exists and if it's public (gitpython)想要检查存储库是否存在以及它是否是公共的(gitpython)
【发布时间】:2019-03-25 23:24:42
【问题描述】:

使用 Python 和 GitPython,以及来自不同用户的 git 存储库列表,我需要检查存储库是否存在以及它是否是公共的。

考虑到这一点并考虑到 GitHub,如果它要求提供用户名和密码,我知道该存储库超出了我的标准。因此,我可以忽略它。

import git

class User():
    def __init__(self, a, b, c):
        self.name = a
        self.git_user = b
        self.git_repos = c

user = User('John', 'john1234', 'fake_one')

try:
    git.Repo.clone_from(f'https://github.com/{user.git_user}/' + \
        f'{user.git_repos}.git', f'temp/{user.name}/')
except git.exc.GitError:
    print(f'ERROR! {user.name}: {user.git_user}/{user.git_repos} does not exist')

此代码有效,到目前为止,当存储库未作为公共存储库时,我使用任何用户名和相应的密码(包括空密码)输入。有没有办法忽略(通过发送空字符串)或捕获(一些例外?)用户名/密码的东西?

请注意,如果我可以检查(公共)存储库的存在,我可以使用此信息来防止不适当的“克隆”...

【问题讨论】:

    标签: python github gitpython


    【解决方案1】:

    我已经弄明白了,感谢 Lacho Tomov 在这个问题上的回答:Git push requires username and password

    具有所需行为的代码是:

    import git
    
    class User():
        def __init__(self, a, b, c):
            self.name = a
            self.git_user = b
            self.git_repos = c
    
    user = User('John', 'john1234', 'fake_one')
    
    try:
        git.Repo.clone_from(f'https://null:null@github.com/{user.git_user}/' + \
            f'{user.git_repos}.git', f'temp/{user.name}/')
    except git.exc.GitError:
        print(f'ERROR! {user.name}: {user.git_user}/{user.git_repos} does not exist')
    

    请注意,https://null:null@github.com/{user.git_user}/ 中的 null 可能是其他字符串(但不是空的)。

    如果有人有更pythonic/正确的方式来做这件事,请随意更新这个答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 2015-01-20
      • 2015-04-29
      • 1970-01-01
      • 2022-11-20
      • 2011-09-08
      • 1970-01-01
      相关资源
      最近更新 更多