我无法在我的git远程存储库中推送带注释的标记。所有访问权限都在gerrit中提供。例如。 [参考文献/ *]
我正在使用以下命令
创建标记git tag -a v1.0 -m 'Base Version' 712d77e
当我尝试使用以下命令推送时
git push origin v1.0
或
git push origin --tags
我收到以下错误。
Counting objects: 1, done.
Writing objects: 100% (1/1), 157 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 1, done
To ssh://...
! [remote rejected] v1.0 -> v1.0 (prohibited by Gerrit)
error: failed to push some refs to 'ssh://...'
请告诉我如何在存储库中推送标签。
...谢谢
答案 0 :(得分:19)
如果不允许推送,这是Gerrit返回的一般错误消息,例如因为推送用户没有足够的权限。
特别是出现此错误:
如果您将代码审核提交推送到您没有上传权限的分支(访问权限推送refs/for/refs/heads/*
)
如果您在refs/heads/*
如果您在refs/tags/*
如果您在refs/tags/*
如果您推送没有访问权限的轻量级代码,请参阅参考名称refs/tags/*
如果您将标记与其他人一起作为标记符,并且您没有Forge Committer访问权限的参考名称refs/tags/*
如果您推送到状态为只读的项目
对于新用户,他们经常会意外地尝试绕过代码审查。然后推送失败并返回Gerrit禁止的错误消息,因为该项目不允许绕过代码审查。绕过代码审核是通过直接推送到refs/heads/*
(例如refs/heads/master
)而不是推送到refs/for/*
(例如refs/for/master
)来完成的。
更多说明:我对gerrit 2.7的新安装有同样的问题,搜索并发现了这个stackoverflow问题,但我的情况是这个描述的第5号(轻量级标签),所以我为refs / tags /添加了Create Reference权限*,问题解决了。
答案 1 :(得分:3)
您需要为[refs / tags / *]添加以下项目的权限:
有关详细信息,请参阅Gerrit access controls
答案 2 :(得分:2)
这一行给你一个提示:
! [remote rejected] v1.0 -> v1.0 (prohibited by Gerrit)
Gerrit禁止推送,因为您的用户不在具有"Push Annotated Tag"权限的群组中。
答案 3 :(得分:1)
创建注释并检查gerrit。 您必须在允许创建带注释的
的正确组中如果你创建了简单的标签,gerrit可能会拒绝那些refs,但它可能会再次依赖于gerrit配置。
创建带注释的标签:
git tag -a -m "Some message"
推送所有标签:
git push --tags
检查标签是在远程创建的:
git ls-remote --tags
答案 4 :(得分:0)