in src/main/java/com/googlesource/gerrit/plugins/automerger/DownstreamCreator.java [303:341]
public void createMergesAndHandleConflicts(MultipleDownstreamMergeInput mdsMergeInput)
throws RestApiException, ConfigInvalidException, InvalidQueryParameterException,
StorageException {
try (ManualRequestContext ctx = oneOffRequestContext.openAs(config.getContextUserId())) {
ReviewInput reviewInput = new ReviewInput();
Map<String, Short> labels = new HashMap<>();
try {
createDownstreamMerges(mdsMergeInput);
reviewInput.message =
"Automerging change "
+ mdsMergeInput.changeNumber
+ " to "
+ Joiner.on(", ").join(mdsMergeInput.dsBranchMap.keySet())
+ " succeeded!";
reviewInput.notify = NotifyHandling.NONE;
} catch (FailedMergeException e) {
reviewInput.message = e.getDisplayString();
reviewInput.notify = NotifyHandling.ALL;
reviewInput.tag = MERGE_CONFLICT_TAG;
// Vote minAutomergeVote if we hit a conflict.
if (!config.minAutomergeVoteDisabled()) {
labels.put(config.getAutomergeLabel(), config.getMinAutomergeVote());
}
}
reviewInput.labels = labels;
// Make the vote on the original change
ChangeInfo originalChange =
getOriginalChange(mdsMergeInput.changeNumber, mdsMergeInput.currentRevision);
// if this fails, i.e. -2 is restricted, catch it and still post message without a vote.
try {
gApi.changes().id(originalChange._number).revision(CURRENT).review(reviewInput);
} catch (AuthException e) {
reviewInput.labels = null;
gApi.changes().id(originalChange._number).revision(CURRENT).review(reviewInput);
}
}
}