diff options
author | Shawn O. Pearce <sop@google.com> | 2011-04-20 17:41:09 -0700 |
---|---|---|
committer | Shawn O. Pearce <sop@google.com> | 2011-04-20 17:41:09 -0700 |
commit | ed2d1b16cedb5d26cbdad7abed32abc8398671e6 (patch) | |
tree | 4444e708256eb8c537de5ebdc495d97414f14630 | |
parent | f17c2d92219014d4c9e72c92a474e001e3e6e9da (diff) |
Display a more verbose "you are not author/committer" message
Make this all too common error messages easier to
understand, debug, and fix.
Issue: 909
Change-Id: Ie8c322b4fe42a1d3ff06e4dcc6f143f322383611
Signed-off-by: Shawn O. Pearce <sop@google.com>
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java index cf11c9bd89..3d543b05d6 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java @@ -1563,7 +1563,8 @@ public class ReceiveCommits implements PreReceiveHook, PostReceiveHook { // if (!currentUser.getEmailAddresses().contains(author.getEmailAddress()) && !ctl.canForgeAuthor()) { - reject(cmd, "you are not author " + author.getEmailAddress()); + sendInvalidEmailError(c, "author", author); + reject(cmd, "invalid author"); return false; } @@ -1571,7 +1572,8 @@ public class ReceiveCommits implements PreReceiveHook, PostReceiveHook { // if (!currentUser.getEmailAddresses().contains(committer.getEmailAddress()) && !ctl.canForgeCommitter()) { - reject(cmd, "you are not committer " + committer.getEmailAddress()); + sendInvalidEmailError(c, "committer", committer); + reject(cmd, "invalid committer"); return false; } @@ -1622,6 +1624,30 @@ public class ReceiveCommits implements PreReceiveHook, PostReceiveHook { return true; } + private void sendInvalidEmailError(RevCommit c, String type, PersonIdent who) { + StringBuilder sb = new StringBuilder(); + sb.append("\n"); + sb.append("ERROR: In commit " + c.name() + "\n"); + sb.append("ERROR: " + type + " email address " + who.getEmailAddress() + "\n"); + sb.append("ERROR: does not match your user account.\n"); + sb.append("ERROR:\n"); + if (currentUser.getEmailAddresses().isEmpty()) { + sb.append("ERROR: You have not registered any email addresses.\n"); + } else { + sb.append("ERROR: The following addresses are currently registered:\n"); + for (String address : currentUser.getEmailAddresses()) { + sb.append("ERROR: " + address + "\n"); + } + } + sb.append("ERROR:\n"); + if (canonicalWebUrl != null) { + sb.append("ERROR: To register an email address, please visit:\n"); + sb.append("ERROR: " + canonicalWebUrl + "#" + PageLinks.SETTINGS_CONTACT + "\n"); + } + sb.append("\n"); + getReceivePack().sendMessage(sb.toString()); + } + private void warnMalformedMessage(RevCommit c) { ObjectReader reader = rp.getRevWalk().getObjectReader(); if (65 < c.getShortMessage().length()) { |