Redirect the user to the reverted change.
When the user reverts a change through the
use of the "Revert"-button, the user will get
redirected to the new change.
Change-Id: I6f3f616f67b8d53904968b17cdb96e6778b69475
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetComplexDisclosurePanel.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetComplexDisclosurePanel.java
index 003a731..fbf0531 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetComplexDisclosurePanel.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetComplexDisclosurePanel.java
@@ -21,6 +21,7 @@
import com.google.gerrit.client.ui.AccountDashboardLink;
import com.google.gerrit.client.ui.ComplexDisclosurePanel;
import com.google.gerrit.client.ui.ListenableAccountDiffPreference;
+import com.google.gerrit.common.PageLinks;
import com.google.gerrit.common.data.ChangeDetail;
import com.google.gerrit.common.data.GitwebLink;
import com.google.gerrit.common.data.PatchSetDetail;
@@ -436,7 +437,7 @@
@Override
public void onClick(final ClickEvent event) {
b.setEnabled(false);
- new CommentedChangeActionDialog(patchSet.getId(), createCommentedCallback(b),
+ new CommentedChangeActionDialog(patchSet.getId(), createCommentedCallback(b, true),
Util.C.revertChangeTitle(), Util.C.headingRevertMessage(),
Util.C.buttonRevertChangeSend(), Util.C.buttonRevertChangeCancel(),
Gerrit.RESOURCES.css().revertChangeDialog(), Gerrit.RESOURCES.css().revertMessage(),
@@ -456,7 +457,7 @@
@Override
public void onClick(final ClickEvent event) {
b.setEnabled(false);
- new CommentedChangeActionDialog(patchSet.getId(), createCommentedCallback(b),
+ new CommentedChangeActionDialog(patchSet.getId(), createCommentedCallback(b, false),
Util.C.abandonChangeTitle(), Util.C.headingAbandonMessage(),
Util.C.buttonAbandonChangeSend(), Util.C.buttonAbandonChangeCancel(),
Gerrit.RESOURCES.css().abandonChangeDialog(), Gerrit.RESOURCES.css().abandonMessage()) {
@@ -475,7 +476,7 @@
@Override
public void onClick(final ClickEvent event) {
b.setEnabled(false);
- new CommentedChangeActionDialog(patchSet.getId(), createCommentedCallback(b),
+ new CommentedChangeActionDialog(patchSet.getId(), createCommentedCallback(b, false),
Util.C.restoreChangeTitle(), Util.C.headingRestoreMessage(),
Util.C.buttonRestoreChangeSend(), Util.C.buttonRestoreChangeCancel(),
Gerrit.RESOURCES.css().abandonChangeDialog(), Gerrit.RESOURCES.css().abandonMessage()) {
@@ -633,10 +634,14 @@
}
}
- private AsyncCallback<ChangeDetail> createCommentedCallback(final Button b) {
+ private AsyncCallback<ChangeDetail> createCommentedCallback(final Button b, final boolean redirect) {
return new AsyncCallback<ChangeDetail>() {
public void onSuccess(ChangeDetail result) {
- changeScreen.update(result);
+ if (redirect) {
+ Gerrit.display(PageLinks.toChange(result.getChange().getId()));
+ } else {
+ changeScreen.update(result);
+ }
}
public void onFailure(Throwable caught) {
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/RevertChange.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/RevertChange.java
index 3dfa0e3..5e007fa 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/RevertChange.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/RevertChange.java
@@ -105,10 +105,10 @@
throw new NoSuchChangeException(changeId);
}
- ChangeUtil.revert(patchSetId, currentUser, message, db,
+ Change.Id revertedChangeId = ChangeUtil.revert(patchSetId, currentUser, message, db,
revertedSenderFactory, hooks, gitManager, patchSetInfoFactory,
replication, myIdent);
- return changeDetailFactory.create(changeId).call();
+ return changeDetailFactory.create(revertedChangeId).call();
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java
index 36ac938..89f5ab2 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java
@@ -256,7 +256,7 @@
hooks.doChangeAbandonedHook(updatedChange, user.getAccount(), message);
}
- public static void revert(final PatchSet.Id patchSetId,
+ public static Change.Id revert(final PatchSet.Id patchSetId,
final IdentifiedUser user, final String message, final ReviewDb db,
final RevertedSender.Factory revertedSenderFactory,
final ChangeHookRunner hooks, GitRepositoryManager gitManager,
@@ -352,6 +352,8 @@
cm.send();
hooks.doPatchsetCreatedHook(change, ps);
+
+ return change.getId();
} finally {
revWalk.release();
git.close();