prohibited by Gerrit
====================

This is a general error message that is returned by Gerrit if a push
is not allowed, e.g. because the pushing user has no sufficient
privileges.

In particular this error occurs:

1. if you push a commit for code review to a branch for which you
   don't have upload permissions (access right
   link:access-control.html#category_push_review['Push'] on
   `refs/for/refs/heads/*`)
2. if you bypass code review without
   link:access-control.html#category_push_direct['Push'] access right
   on `refs/heads/*`
3. if you push an annotated tag without
   link:access-control.html#category_push_annotated['Push Annotated Tag']
   access right on 'refs/tags/*'
4. if you push a signed tag without
   link:access-control.html#category_push_signed['Push Signed Tag']
   access right on 'refs/tags/*'
5. if you push a lightweight tag without the access right link:access-control.html#category_create['Create
   Reference'] for the reference name 'refs/tags/*'
6. if you push a tag with somebody else as tagger and you don't have the
   link:access-control.html#category_forge_committer['Forge Committer']
   access right for the reference name 'refs/tags/*'
7. if you push to a project that is in state 'Read Only'

For new users it often happens that they accidentally try to bypass
code review. The push then fails with the error message 'prohibited
by Gerrit' because the project didn't allow to bypass code review.
Bypassing the code review is done by pushing directly to refs/heads/*
(e.g. refs/heads/master) instead of pushing to refs/for/* (e.g.
refs/for/master). Details about how to push commits for code review
are explained link:user-upload.html#push_create[here].


GERRIT
------
Part of link:error-messages.html[Gerrit Error Messages]
