如何干一个git push来检查一个人是否具有对远程的写权限?

Dav*_*vid 12 git user-permissions

有没有办法干运行git push以了解用户是否有权实际创建新的远程分支?我希望能够验证一堆repos的权限,其中用户将在实际创建之前尝试创建新分支,以便在实际执行之前我可以干完全执行.

jub*_*0bs 14

肖恩皮尔斯 了以下关于git push --dry-run:

A --dry-run不会发送客户端从客户端到服务器使用的命令,因此服务器无法告诉客户端是否接受它们.整个--dry-run事情只是客户端.

(我的重点)

所以,如果有办法检查一个人是否具有对远程的写权限,git push --dry-run绝对不是它.

  • 只是一个评论,以防其他人像我一样被上述内容稍微误导。git push --dry-run 除了实际发送更新之外,它会执行所有操作,特别是,它会检查远程是否有本地没有的更改(正如我刚刚通过实验证实的那样)。因此,说它只是客户端操作有点误导 - 它确实访问远程,但不会尝试更新它。 (7认同)

Dav*_*vid 7

作为我所做的测试的答案,我认为它在我的场景中不起作用。我正在从另一个分支创建一个分支,无需进一步更改

git clone ....
git checkout master
git branch -f test master
git push --dry-run origin test
Run Code Online (Sandbox Code Playgroud)

即使我在此服务器/存储库组合上的推送权限为零,它也通过了

To ssh://<server>/repo
 * [new branch]      test -> test
Run Code Online (Sandbox Code Playgroud)

在没有空运行的情况下推动会出现我预期的错误情况

git push origin test
Total 0 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 1, done    
To ssh://<server>/repo
 ! [remote rejected] test -> test (can not create new references)
error: failed to push some refs to 'ssh://<server>/repo'
Run Code Online (Sandbox Code Playgroud)