summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2011-04-20 17:41:09 -0700
committerShawn O. Pearce <sop@google.com>2011-04-20 17:41:09 -0700
commited2d1b16cedb5d26cbdad7abed32abc8398671e6 (patch)
tree4444e708256eb8c537de5ebdc495d97414f14630
parentf17c2d92219014d4c9e72c92a474e001e3e6e9da (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.java30
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()) {