为了账号安全,请及时绑定邮箱和手机立即绑定

想检查存储库是否存在以及它是否是公共的(gitpython)

想检查存储库是否存在以及它是否是公共的(gitpython)

料青山看我应如是 2021-12-16 16:27:24
使用 Python 和 GitPython,以及来自不同用户的 git 存储库列表,我需要检查存储库是否存在以及它是否是公共的。考虑到这一点并考虑 GitHub,如果它要求输入用户名和密码,我知道该存储库超出了我的标准。因此,我可以忽略它。import gitclass User():    def __init__(self, a, b, c):        self.name = a        self.git_user = b        self.git_repos = cuser = 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')此代码有效,到目前为止,当未找到存储库为公共存储库时,我使用任何用户名和相应密码(包括空密码)输入。有没有办法忽略(通过发送空字符串)或捕获(某些例外?)用户名/密码的东西?请注意,如果我可以检查(公共)存储库是否存在,我可以使用此信息来防止不适当的“克隆”...
查看完整描述

1 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

我已经弄清楚了,感谢 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')

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


如果有人有更pythonic/正确的方法来执行此操作,请随时更新此答案。


查看完整回答
反对 回复 2021-12-16
  • 1 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信