Merge "Prevent new patchset notification emails for trivial rebase"
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPickChange.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPickChange.java
index 9606397..6a78eb5 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPickChange.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPickChange.java
@@ -228,6 +228,7 @@
.setMessage("Uploaded patch set " + newPatchSetId.get() + ".")
.setDraft(current.isDraft())
.setUploader(identifiedUser.getAccountId())
+ .setSendMail(false)
.insert();
return change.getId();
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/RebaseChange.java b/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/RebaseChange.java
index 9890f53..9bb67ea 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/RebaseChange.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/RebaseChange.java
@@ -138,7 +138,7 @@
rebase(git, rw, inserter, patchSetId, change,
uploader, baseCommit, mergeUtilFactory.create(
changeControl.getProjectControl().getProjectState(), true),
- committerIdent, true, true, ValidatePolicy.GERRIT);
+ committerIdent, true, ValidatePolicy.GERRIT);
} catch (MergeConflictException e) {
throw new IOException(e.getMessage());
} finally {
@@ -265,7 +265,6 @@
* @param baseCommit the commit that should be the new base
* @param mergeUtil merge utilities for the destination project
* @param committerIdent the committer's identity
- * @param sendMail if a mail notification should be sent for the new patch set
* @param runHooks if hooks should be run for the new patch set
* @param validate if commit validation should be run for the new patch set
* @return the new patch set which is based on the given base commit
@@ -279,7 +278,7 @@
final ObjectInserter inserter, final PatchSet.Id patchSetId,
final Change change, final IdentifiedUser uploader, final RevCommit baseCommit,
final MergeUtil mergeUtil, PersonIdent committerIdent,
- boolean sendMail, boolean runHooks, ValidatePolicy validate)
+ boolean runHooks, ValidatePolicy validate)
throws NoSuchChangeException,
OrmException, IOException, InvalidChangeOperationException,
MergeConflictException {
@@ -303,7 +302,7 @@
.setValidatePolicy(validate)
.setDraft(originalPatchSet.isDraft())
.setUploader(uploader.getAccountId())
- .setSendMail(sendMail)
+ .setSendMail(false)
.setRunHooks(runHooks);
final PatchSet.Id newPatchSetId = patchSetInserter.getPatchSetId();
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 5959b1d..cc2330b 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
@@ -1985,14 +1985,12 @@
return Futures.makeChecked(future, INSERT_EXCEPTION);
}
- private ChangeMessage newChangeMessage(ReviewDb db) throws OrmException {
+ private ChangeMessage newChangeMessage(ReviewDb db, ChangeKind changeKind)
+ throws OrmException {
msg =
new ChangeMessage(new ChangeMessage.Key(change.getId(), ChangeUtil
.messageUUID(db)), currentUser.getAccountId(), newPatchSet.getCreatedOn(),
newPatchSet.getId());
- RevCommit priorCommit = revisions.inverse().get(priorPatchSet);
- ChangeKind changeKind = changeKindCache.getChangeKind(
- projectControl.getProjectState(), repo, priorCommit, newCommit);
String message = "Uploaded patch set " + newPatchSet.getPatchSetId();
switch (changeKind) {
case TRIVIAL_REBASE:
@@ -2032,6 +2030,7 @@
recipients.remove(me);
db.changes().beginTransaction(change.getId());
+ ChangeKind changeKind = ChangeKind.REWORK;
try {
change = db.changes().get(change.getId());
if (change == null || change.getStatus().isClosed()) {
@@ -2057,7 +2056,11 @@
changeCtl, approvals);
recipients.add(oldRecipients);
- cmUtil.addChangeMessage(db, update, newChangeMessage(db));
+ RevCommit priorCommit = revisions.inverse().get(priorPatchSet);
+ changeKind = changeKindCache.getChangeKind(
+ projectControl.getProjectState(), repo, priorCommit, newCommit);
+
+ cmUtil.addChangeMessage(db, update, newChangeMessage(db, changeKind));
if (mergedIntoRef == null) {
// Change should be new, so it can go through review again.
@@ -2119,32 +2122,34 @@
cmd.execute(rp);
}
CheckedFuture<?, IOException> f = indexer.indexAsync(change.getId());
- workQueue.getDefaultQueue()
- .submit(requestScopePropagator.wrap(new Runnable() {
- @Override
- public void run() {
- try {
- ReplacePatchSetSender cm =
- replacePatchSetFactory.create(change);
- cm.setFrom(me);
- cm.setPatchSet(newPatchSet, info);
- cm.setChangeMessage(msg);
- cm.addReviewers(recipients.getReviewers());
- cm.addExtraCC(recipients.getCcOnly());
- cm.send();
- } catch (Exception e) {
- log.error("Cannot send email for new patch set " + newPatchSet.getId(), e);
+ if (changeKind != ChangeKind.TRIVIAL_REBASE) {
+ workQueue.getDefaultQueue()
+ .submit(requestScopePropagator.wrap(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ ReplacePatchSetSender cm =
+ replacePatchSetFactory.create(change);
+ cm.setFrom(me);
+ cm.setPatchSet(newPatchSet, info);
+ cm.setChangeMessage(msg);
+ cm.addReviewers(recipients.getReviewers());
+ cm.addExtraCC(recipients.getCcOnly());
+ cm.send();
+ } catch (Exception e) {
+ log.error("Cannot send email for new patch set " + newPatchSet.getId(), e);
+ }
+ if (mergedIntoRef != null) {
+ sendMergedEmail(ReplaceRequest.this);
+ }
}
- if (mergedIntoRef != null) {
- sendMergedEmail(ReplaceRequest.this);
- }
- }
- @Override
- public String toString() {
- return "send-email newpatchset";
- }
- }));
+ @Override
+ public String toString() {
+ return "send-email newpatchset";
+ }
+ }));
+ }
f.checkedGet();
gitRefUpdated.fire(project.getNameKey(), newPatchSet.getRefName(),
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseIfNecessary.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseIfNecessary.java
index 482dae3..e681648 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseIfNecessary.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/RebaseIfNecessary.java
@@ -91,7 +91,7 @@
rebaseChange.rebase(args.repo, args.rw, args.inserter,
n.getPatchsetId(), n.change(), uploader,
mergeTip.getCurrentTip(), args.mergeUtil,
- args.serverIdent.get(), false, false, ValidatePolicy.NONE);
+ args.serverIdent.get(), false, ValidatePolicy.NONE);
List<PatchSetApproval> approvals = Lists.newArrayList();
for (PatchSetApproval a : args.approvalsUtil.byPatchSet(args.db,