如何试运行 git Push 来检查是否有远程写入权限?

问题描述 投票:0回答:3

有没有办法通过试运行

git push
来了解用户是否有权实际创建新的远程分支?我希望能够验证一堆存储库的权限是否一切正常,用户将在实际创建新分支之前尝试创建新分支,以便我可以在实际执行操作之前干运行完整执行。

git user-permissions
3个回答
44
投票

肖恩·皮尔斯写了以下关于

git push --dry-run
的内容:

A

--dry-run
不会从客户端发送客户端将使用的命令 到服务器,因此服务器无法告诉客户端是否接受它们 或不。整个
--dry-run
在远程是只读的:它检查远程是否有您本地没有的更改,但不会向远程发送任何更新。

(我的重点)

所以,如果有一种方法可以检查一个人是否有远程写入权限,那么

git push --dry-run

绝对不是。


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

git clone .... git checkout master git branch -f test master git push --dry-run origin test

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

To ssh://<server>/repo * [new branch] test -> test

在没有空运行的情况下推送会遇到我预期的错误情况

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'
    

0
投票

git push

 文档 @ 
https://git-scm.com/docs/git-push --dry-run 作为一个选项出现:

git push [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run ] ... (more flags)
通常意味着服务器照常处理命令,只是数据没有被修改,即没有任何改变。

它对于测试关键命令很有用,因为服务器记录的输出(几乎)等于“湿”运行的输出。

© www.soinside.com 2019 - 2024. All rights reserved.