Include the original reviewers of a change on its revert
Bug: Issue 4141 Change-Id: I719bb4aa51327c414018d9cacf3e21c417b36c74
This commit is contained in:
@@ -187,6 +187,19 @@ The `Submit` button is available if the change is submittable and
|
||||
the link:access-control.html#category_submit[Submit] access right is
|
||||
assigned.
|
||||
|
||||
** [[revert]]`Revert`:
|
||||
+
|
||||
Reverts the change via creating a new one.
|
||||
+
|
||||
The `Revert` button is available if the change has been submitted.
|
||||
+
|
||||
When the `Revert` button is pressed, a panel will appear to allow
|
||||
the user to enter a commit message for the reverting change.
|
||||
+
|
||||
Once a revert change is created, the original author and any reviewers
|
||||
of the original change are added as reviewers and a message is posted
|
||||
to the original change linking to the revert.
|
||||
|
||||
** [[abandon]]`Abandon`:
|
||||
+
|
||||
Abandons the change.
|
||||
|
||||
@@ -24,12 +24,14 @@ import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
|
||||
import com.google.gerrit.extensions.restapi.RestApiException;
|
||||
import com.google.gerrit.extensions.restapi.RestModifyView;
|
||||
import com.google.gerrit.extensions.webui.UiAction;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.Change.Status;
|
||||
import com.google.gerrit.reviewdb.client.ChangeMessage;
|
||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.ApprovalsUtil;
|
||||
import com.google.gerrit.server.ChangeMessagesUtil;
|
||||
import com.google.gerrit.server.ChangeUtil;
|
||||
import com.google.gerrit.server.CurrentUser;
|
||||
@@ -43,6 +45,7 @@ import com.google.gerrit.server.git.GitRepositoryManager;
|
||||
import com.google.gerrit.server.git.UpdateException;
|
||||
import com.google.gerrit.server.git.validators.CommitValidators;
|
||||
import com.google.gerrit.server.mail.RevertedSender;
|
||||
import com.google.gerrit.server.notedb.ReviewerStateInternal;
|
||||
import com.google.gerrit.server.project.ChangeControl;
|
||||
import com.google.gerrit.server.project.NoSuchChangeException;
|
||||
import com.google.gerrit.server.project.RefControl;
|
||||
@@ -66,6 +69,8 @@ import org.slf4j.LoggerFactory;
|
||||
import java.io.IOException;
|
||||
import java.sql.Timestamp;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@Singleton
|
||||
public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
||||
@@ -82,6 +87,7 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
||||
private final RevertedSender.Factory revertedSenderFactory;
|
||||
private final ChangeJson.Factory json;
|
||||
private final PersonIdent serverIdent;
|
||||
private final ApprovalsUtil approvalsUtil;
|
||||
|
||||
@Inject
|
||||
Revert(Provider<ReviewDb> db,
|
||||
@@ -93,7 +99,8 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
||||
PatchSetUtil psUtil,
|
||||
RevertedSender.Factory revertedSenderFactory,
|
||||
ChangeJson.Factory json,
|
||||
@GerritPersonIdent PersonIdent serverIdent) {
|
||||
@GerritPersonIdent PersonIdent serverIdent,
|
||||
ApprovalsUtil approvalsUtil) {
|
||||
this.db = db;
|
||||
this.repoManager = repoManager;
|
||||
this.changeInserterFactory = changeInserterFactory;
|
||||
@@ -104,6 +111,7 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
||||
this.revertedSenderFactory = revertedSenderFactory;
|
||||
this.json = json;
|
||||
this.serverIdent = serverIdent;
|
||||
this.approvalsUtil = approvalsUtil;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -182,6 +190,13 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
||||
.setTopic(changeToRevert.getTopic());
|
||||
ins.setMessage("Uploaded patch set 1.");
|
||||
|
||||
Set<Account.Id> reviewers = new HashSet<>();
|
||||
reviewers.add(changeToRevert.getOwner());
|
||||
reviewers.addAll(
|
||||
approvalsUtil.getReviewers(db.get(), ctl.getNotes()).all());
|
||||
reviewers.remove(user.getAccountId());
|
||||
ins.setReviewers(reviewers);
|
||||
|
||||
try (BatchUpdate bu = updateFactory.create(
|
||||
db.get(), project, user, now)) {
|
||||
bu.setRepository(git, revWalk, oi);
|
||||
|
||||
Reference in New Issue
Block a user