Golang - 从令牌中获取 Git 用户名和 repo 列表

我想根据 oauth 令牌提取 git 存储库列表。我想为 github / gitlab & bitbucket 编写一个通用代码。

最有可能的是,首先我可能需要从令牌中提取用户名,然后我需要提取列表。就像 Github 文档所建议的那样。

https://docs.github.com/en/rest/reference/users#get-the-authenticated-user https://api.github.com/users/<username>/repos

但是,这只会帮助我使用 github。我已经研究过,https://pkg.go.dev/github.com/go-git/go-git/v5#Repository 因为它适用于所有 git 平台。但是,我找不到回购列表功能(基于 oauth 令牌)

最好的方法是什么?提前致谢 !


萧十郎
浏览 150回答 1
1回答

蛊毒传说

没有标准的统一方式来获取这些信息。当你使用 Git 时,你向它提供了它用来与服务器通信的身份验证凭据,而该服务器,无论是 GitHub、GitLab、Bitbucket、你自己的 Apache 实例还是其他,要么接受它,要么拒绝它。不要求凭证提供比这更多的功能。对于 GitHub,您可以使用 API 来获取该信息,前提是它是 OAuth 令牌或 PAT 并且它具有user范围。GitHub 有其他类型的令牌可用于无法用于 API 的克隆,当然任何缺少user范围的令牌都将不起作用。我应该指出,对于 GitHub 的令牌,用户名没有嵌入到令牌中(正如他们在博客上记录的那样),所以你确实必须使用 API。GitLab 也可能有一个您可以使用的 API,但不会有单一的方法来处理所有存储库,并且可能无法从令牌类型中确定要使用哪个域。例如,github.com 和 GitHub Enterprise Server(本地选项)将发布看起来相同的令牌,但当然这些令牌只能在发布它们的系统上工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go