Merge "Fix updating changes that fail to merge" into stable-2.8
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
index aa334f3..cf8a16b 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
@@ -27,6 +27,7 @@
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.ListMultimap;
+import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.google.common.util.concurrent.CheckedFuture;
import com.google.gerrit.common.ChangeHooks;
@@ -144,6 +145,7 @@
private final ListMultimap<SubmitType, CodeReviewCommit> toMerge;
private final List<CodeReviewCommit> potentiallyStillSubmittable;
private final Map<Change.Id, CodeReviewCommit> commits;
+ private final List<Change> toUpdate;
private ReviewDb db;
private Repository repo;
private RevWalk rw;
@@ -202,6 +204,7 @@
toMerge = ArrayListMultimap.create();
potentiallyStillSubmittable = new ArrayList<CodeReviewCommit>();
commits = new HashMap<Change.Id, CodeReviewCommit>();
+ toUpdate = Lists.newArrayList();
}
private void setDestProject() throws MergeException {
@@ -269,6 +272,8 @@
toMerge.putAll(toMergeNextTurn);
}
+ updateChangeStatus(toUpdate);
+
for (final CodeReviewCommit commit : potentiallyStillSubmittableOnNextRun) {
final Capable capable = isSubmitStillPossible(commit);
if (capable != Capable.OK) {
@@ -447,6 +452,7 @@
if (chg.currentPatchSetId() == null) {
commits.put(changeId, CodeReviewCommit
.error(CommitMergeStatus.NO_PATCH_SET));
+ toUpdate.add(chg);
continue;
}
@@ -460,6 +466,7 @@
|| ps.getRevision().get() == null) {
commits.put(changeId, CodeReviewCommit
.error(CommitMergeStatus.NO_PATCH_SET));
+ toUpdate.add(chg);
continue;
}
@@ -470,6 +477,7 @@
} catch (IllegalArgumentException iae) {
commits.put(changeId, CodeReviewCommit
.error(CommitMergeStatus.NO_PATCH_SET));
+ toUpdate.add(chg);
continue;
}
@@ -485,6 +493,7 @@
//
commits.put(changeId, CodeReviewCommit
.error(CommitMergeStatus.REVISION_GONE));
+ toUpdate.add(chg);
continue;
}
@@ -495,6 +504,7 @@
log.error("Invalid commit " + id.name() + " on " + chg.getKey(), e);
commits.put(changeId, CodeReviewCommit
.error(CommitMergeStatus.REVISION_GONE));
+ toUpdate.add(chg);
continue;
}
@@ -503,6 +513,7 @@
mergeValidators.validatePreMerge(repo, commit, destProject, destBranch, ps.getId());
} catch (MergeValidationException mve) {
commits.put(changeId, CodeReviewCommit.error(mve.getStatus()));
+ toUpdate.add(chg);
continue;
}
@@ -535,6 +546,7 @@
if (submitType == null) {
commits.put(changeId,
CodeReviewCommit.error(CommitMergeStatus.NO_SUBMIT_TYPE));
+ toUpdate.add(chg);
continue;
}