summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChangcheng Xiao <xchangcheng@google.com>2019-02-14 18:03:28 +0100
committerDavid Ostrovsky <david@ostrovsky.org>2020-02-04 22:36:07 +0100
commit47d74d21738ccf45b2071b1fd1c7862386b47a4e (patch)
tree572028b66c6a6c34b77030a6a1c9f5c2588d1dd9
parentdd780721ab1c8bebbbb528050192d8d9b179b0b0 (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
-rw-r--r--java/com/google/gerrit/server/change/PatchSetInserter.java8
-rw-r--r--java/com/google/gerrit/server/change/RebaseChangeOp.java9
-rw-r--r--java/com/google/gerrit/server/submit/RebaseSubmitStrategy.java1
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 {