blob: ca35d6ab388d77e79e01209c298bbfbeb7319c21 [file] [log] [blame]
= invalid committer
For every pushed commit Gerrit verifies that the e-mail address of
the committer matches one of the registered e-mail addresses of the
pushing user. If this is not the case pushing the commit fails with
the error message "invalid committer". This policy can be
bypassed by having the access right
link:access-control.html#category_forge_committer['Forge Committer'].
This error may happen for two reasons:
. incorrect configuration of the e-mail address on client or server
side
. missing privileges to push commits that were committed by other
users
== Incorrect configuration of the e-mail address on client or server side
If pushing to Gerrit fails with the error message "invalid committer"
and you committed the change for which the push fails,
then either you have not successfully registered this e-mail address
for your Gerrit account or the committer information of the pushed
commit is incorrect.
=== Configuration of e-mail address in Gerrit
Check in Gerrit under 'Settings -> Identities' which e-mail addresses
you've configured for your Gerrit account. If no e-mail address is
registered go to 'Settings -> Contact Information' and register a new
e-mail address there. Make sure you confirm your e-mail address by
clicking on the link in the e-mail verification mail sent by Gerrit.
=== Incorrect committer information
For every commit Git maintains the user who did the commit, the so
called committer. Git computes the committer out of the Git
configuration parameters 'user.name' and 'user.email'.
----
$ git config -l
...
user.name=John Doe
user.email=john.doe@example.com
...
----
A commit done with the above Git configuration would have
"John Doe <john.doe@example.com>" as committer.
To see the committer information for existing commits do
"git log --format=full":
----
$ git log --format=full
commit cbe31bdba7d14963eb42f7e1e0eef1fe58698c05
Author: John Doe <john.doe@example.com>
Commit: John Doe <john.doe@example.com>
my commit
----
Check in Git that the committer information of the commit that should
be pushed is correct. As explained above you can do this by
'git log --format=full'. The committer should have the same e-mail
address that you've configured for your Gerrit account. If the
committer information is incorrect set the Git configuration
parameters 'user.name' and 'user.email' to the correct values (you
might want to set this globally by including the option '--global'):
----
$ git config user.name "John Doe"
$
$ git config user.email john.doe@example.com
$
----
Now you should rewrite the commits for which the committer
information is wrong. If only the last commit is affected you can do
this by doing a 'commit --amend'. If you need to update the committer
information for several commits it gets more complicated. In this
case you have to do an interactive git rebase for the affected
commits. While doing the interactive rebase you have to ensure that
the commits are rewritten (e.g. by choosing 'reword' for all these
commits and then confirming all the commit messages). Just picking
all the changes will not work as in this case the committer is not
rewritten. For further details about git rebase please check the
link:http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html[Git documentation,role=external,window=_blank].
== Missing privileges to push commits that were committed by other users
If pushing to Gerrit fails with the error message "invalid committer"
and somebody else committed the change for which the
push fails, then you have no permissions to forge the committer
identity. In this case you may contact the project owner to request
the link:access-control.html#category_forge_committer['Forge Committer']
access right or ask the maintainer to commit this change on the author's
behalf.
GERRIT
------
Part of link:error-messages.html[Gerrit Error Messages]
SEARCHBOX
---------