diff options
author | Changcheng Xiao <xchangcheng@google.com> | 2019-02-14 18:03:28 +0100 |
---|---|---|
committer | David Ostrovsky <david@ostrovsky.org> | 2020-02-04 22:36:07 +0100 |
commit | 47d74d21738ccf45b2071b1fd1c7862386b47a4e (patch) | |
tree | 572028b66c6a6c34b77030a6a1c9f5c2588d1dd9 | |
parent | dd780721ab1c8bebbbb528050192d8d9b179b0b0 (diff) |
PatchSetInserter: allow to set "sendEmail" bit
With this new "sendEmail" bit, we will have more control
for whether emails are going to be sent out after a new
patch set is added. This is useful for avoiding duplicate
emails, e.g merge (already have an email to notify a change
is merged, no need to have another email to say a new patch
set is uploaded).
Change-Id: I43c5d7c6560316d5a6034dc8e711f7e87b7af932
3 files changed, 16 insertions, 2 deletions
diff --git a/java/com/google/gerrit/server/change/PatchSetInserter.java b/java/com/google/gerrit/server/change/PatchSetInserter.java index 24c4237ae3..fc2167f08a 100644 --- a/java/com/google/gerrit/server/change/PatchSetInserter.java +++ b/java/com/google/gerrit/server/change/PatchSetInserter.java @@ -102,6 +102,7 @@ public class PatchSetInserter implements BatchUpdateOp { private ListMultimap<RecipientType, Account.Id> accountsToNotify = ImmutableListMultimap.of(); private boolean allowClosed; private boolean copyApprovals = true; + private boolean sendEmail = true; // Fields set during some phase of BatchUpdate.Op. private Change change; @@ -197,6 +198,11 @@ public class PatchSetInserter implements BatchUpdateOp { return this; } + public PatchSetInserter setSendEmail(boolean sendEmail) { + this.sendEmail = sendEmail; + return this; + } + public Change getChange() { checkState(change != null, "getChange() only valid after executing update"); return change; @@ -282,7 +288,7 @@ public class PatchSetInserter implements BatchUpdateOp { @Override public void postUpdate(Context ctx) throws OrmException { - if (notify != NotifyHandling.NONE || !accountsToNotify.isEmpty()) { + if (sendEmail && (notify != NotifyHandling.NONE || !accountsToNotify.isEmpty())) { try { ReplacePatchSetSender cm = replacePatchSetFactory.create(ctx.getProject(), change.getId()); cm.setFrom(ctx.getAccountId()); diff --git a/java/com/google/gerrit/server/change/RebaseChangeOp.java b/java/com/google/gerrit/server/change/RebaseChangeOp.java index 1f216f0a71..f48ea57d5d 100644 --- a/java/com/google/gerrit/server/change/RebaseChangeOp.java +++ b/java/com/google/gerrit/server/change/RebaseChangeOp.java @@ -72,6 +72,7 @@ public class RebaseChangeOp implements BatchUpdateOp { private boolean copyApprovals = true; private boolean detailedCommitMessage; private boolean postMessage = true; + private boolean sendEmail = true; private boolean matchAuthorToCommitterDate = false; private RevCommit rebasedCommit; @@ -141,6 +142,11 @@ public class RebaseChangeOp implements BatchUpdateOp { return this; } + public RebaseChangeOp setSendEmail(boolean sendEmail) { + this.sendEmail = sendEmail; + return this; + } + public RebaseChangeOp setMatchAuthorToCommitterDate(boolean matchAuthorToCommitterDate) { this.matchAuthorToCommitterDate = matchAuthorToCommitterDate; return this; @@ -189,7 +195,8 @@ public class RebaseChangeOp implements BatchUpdateOp { .setFireRevisionCreated(fireRevisionCreated) .setCopyApprovals(copyApprovals) .setCheckAddPatchSetPermission(checkAddPatchSetPermission) - .setValidate(validate); + .setValidate(validate) + .setSendEmail(sendEmail); if (postMessage) { patchSetInserter.setMessage( "Patch Set " diff --git a/java/com/google/gerrit/server/submit/RebaseSubmitStrategy.java b/java/com/google/gerrit/server/submit/RebaseSubmitStrategy.java index 1ec7ca853a..d59ce68c15 100644 --- a/java/com/google/gerrit/server/submit/RebaseSubmitStrategy.java +++ b/java/com/google/gerrit/server/submit/RebaseSubmitStrategy.java @@ -187,6 +187,7 @@ public class RebaseSubmitStrategy extends SubmitStrategy { // Do not post message after inserting new patchset because there // will be one about change being merged already. .setPostMessage(false) + .setSendEmail(false) .setMatchAuthorToCommitterDate( args.project.is(BooleanProjectConfig.MATCH_AUTHOR_TO_COMMITTER_DATE)); try { |