blob: d842cb7882907a072c7c29a0a2be5acf2df92ee9 [file] [log] [blame]
:linkattrs:
= invalid author
For every pushed commit Gerrit verifies that the e-mail address of
the author 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 author". This policy can be
bypassed by having the access right
link:access-control.html#category_forge_author['Forge Author'].
This error may happen for two reasons:
. incorrect configuration of the e-mail address on client or server side
. missing privileges to push commits of other authors
== Incorrect configuration of the e-mail address on client or server side
If pushing to Gerrit fails with the error message "invalid author"
and you are the author of the commit for which the push
fails, then either you have not successfully registered this e-mail
address for your Gerrit account or the author 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.
If you don't receive the e-mail verification mail it might be that it
was caught by your spam filter.
=== Incorrect author information
For every commit Git maintains the author. If not explicitly
specified Git computes the author on commit 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 author.
You can see the author information for existing commits in the
history.
----
$ git log
commit cbe31bdba7d14963eb42f7e1e0eef1fe58698c05
Author: John Doe <john.doe@example.com>
Date: Mon Dec 20 15:36:33 2010 +0100
my commit
----
Check in Git that the author information of the commit that should
be pushed is correct. The author should have the same e-mail address
that you've configured for your Gerrit account. If the author
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 update the author for those commits where the author
information is wrong. If only the last commit is affected you can do
this by amending the last commit and explicitly setting the author:
----
$ git commit --amend --author "John Doe <john.doe@example.com>"
----
If you need to update the author 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 choose 'edit' for those commits for which the
author should be rewritten. When the rebase stops at such a commit
you have to amend the commit, explicitly setting the author
before continuing the rebase.
Here is an example that shows how the interactive rebase is used to
update the author for the last 3 commits:
----
$ git rebase -i HEAD~3
edit 51f0d47 one commit
edit 7299690 another commit
edit 304ad96 one more commit
Stopped at 51f0d47... one commit
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
$ git commit --amend --author "John Doe <john.doe@example.com>"
[detached HEAD baea1e4] one commit
Author: John Doe <john.doe@example.com>
1 files changed, 4 insertions(+), 1 deletions(-)
$ git rebase --continue
...
----
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 of other users
If pushing to Gerrit fails with the error message "invalid author"
and somebody else is author of the commit for which the
push fails, then you have no permissions to forge the author
identity. In this case you may contact the project owner to request
the access right '+1 Forge Author Identity' in the 'Forge Identity'
category or ask the maintainer to commit this change on the author's
behalf.
GERRIT
------
Part of link:error-messages.html[Gerrit Error Messages]
SEARCHBOX
---------