libgit2 / libgit2/pygit2

Pygit2 cannot parse URLs with OAuth tokens.

未关闭
#554 8 条评论 1 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

主要语言
Python
星标
1.7k
派生
408
平均合并
2 天 57 分钟
30 天内合并 PR
7

描述

I'm trying to use pygit2 to clone a GitHub repo using OAuth tokens.
This actually works well from the command line, as explained on GitHub's blog here.

So, I do:

from pygit2 import clone_repository

oauth_token = 'somesuperlongtokengivenbygithub'
repo = clone_repository(
                'https://'+oauth_token+'@github.com/openwrt/luci', 
                '/tmp/repos', 
                bare=True
)

and I get back:

00:04:42 _pygit2.GitError: Unsupported URL protocol
Traceback (most recent call last):
  File "/home/ubuntu/.venv/etincelle/lib/python3.4/site-packages/rq/worker.py", line 558, in perform_job
    rv = job.perform()
  File "/home/ubuntu/.venv/etincelle/lib/python3.4/site-packages/rq/job.py", line 495, in perform
    self._result = self.func(*self.args, **self.kwargs)
  File "/home/ubuntu/repo/etincelle/routes.py", line 41, in clone_all_repos
    clone(repo, _app, token)
  File "/home/ubuntu/repo/etincelle/routes.py", line 25, in clone
    clone_repository(oauth_url, git_id_repo, bare=True)
  File "/home/ubuntu/.venv/etincelle/lib/python3.4/site-packages/pygit2/__init__.py", line 293, in clone_repository
    check_error(err)
  File "/home/ubuntu/.venv/etincelle/lib/python3.4/site-packages/pygit2/errors.py", line 64, in check_error
    raise GitError(message)
_pygit2.GitError: Unsupported URL protocol
Traceback (most recent call last):
  File "/home/ubuntu/.venv/etincelle/lib/python3.4/site-packages/rq/worker.py", line 558, in perform_job
    rv = job.perform()
  File "/home/ubuntu/.venv/etincelle/lib/python3.4/site-packages/rq/job.py", line 495, in perform
    self._result = self.func(*self.args, **self.kwargs)
  File "/home/ubuntu/repo/etincelle/routes.py", line 41, in clone_all_repos
    clone(repo, _app, token)
  File "/home/ubuntu/repo/etincelle/routes.py", line 25, in clone
    clone_repository(oauth_url, git_id_repo, bare=True)
  File "/home/ubuntu/.venv/etincelle/lib/python3.4/site-packages/pygit2/__init__.py", line 293, in clone_repository
    check_error(err)
  File "/home/ubuntu/.venv/etincelle/lib/python3.4/site-packages/pygit2/errors.py", line 64, in check_error
    raise GitError(message)
_pygit2.GitError: Unsupported URL protocol

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

从 pygit2/init.py 中所示的 clone_repository 调用开始,检查 URL 如何到达 errors.py 中的错误检查。复现 OAuth 令牌 URL 的情况,将其与 issue 中描述的命令行行为进行比较,并确定现有的 URL 或身份验证处理适用于此处的是什么。完成标准是 clone_repository 接受文档所述的 GitHub 令牌 URL,而不引发 Unsupported URL protocol。

由索引模型根据 Issue 内容生成。

评估

技术栈
git, python
领域
authentication, backend
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。