我正在构建一个(有点受限)的Git客户端。要设置存储库,请输入远程存储库的URL。我想检查用户是否具有对该存储库的读写访问权限。如果没有,我会出现一个身份验证对话框。
我使用git ls-remote <url>
检查'读取'访问权限。
是否有类似的方法来检查'写'访问,而不首先克隆回购? (我知道我可以git clone <url>
然后git push --dry-run
)
答案 0 :(得分:35)
如果git repo在github中,请打开仓库中的任何文件,然后点击“编辑”, github将显示如下内容:
您正在编辑您没有写入权限的项目中的文件。我们已经创建了一个这个项目的分支,您可以提交您提议的更改 至。提交对此文件的更改会将其写入新分支 你的前叉,所以你可以发送一个pull request.enter代码
答案 1 :(得分:7)
使用最新的 GitHub API,您可以使用以下命令(您需要 permissions on a particular repo)检查 USERNAME(您的或其他用户)的 authenticate using your personal access token,例如:
curl -u your_username:your_access_token \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/octocat/hello-world/collaborators/USERNAME/permission
响应将显示 USERNAME 对该存储库的权限。否则会报:
<块引用>"message": "未找到"
请注意,您应该具有对相关存储库的推送访问权限,否则它将失败
{
"message": "Must have push access to view collaborator permission.",
"documentation_url": "https://docs.github.com/rest/reference/repos#get-repository-permissions-for-a-user"
}
答案 2 :(得分:2)
您可以在不进行克隆的情况下执行git push git+ssh://host.org/path/to/repo some_ref
。但请参阅上面的评论