Merge "Accept --base option for GET /changes/<id>/edit:message endpoint"
This commit is contained in:
@@ -2023,6 +2023,9 @@ returned.
|
|||||||
|
|
||||||
Retrieves commit message from change edit.
|
Retrieves commit message from change edit.
|
||||||
|
|
||||||
|
If the `base` parameter is set to true, the returned message is from the
|
||||||
|
revision that the edit is based on.
|
||||||
|
|
||||||
.Request
|
.Request
|
||||||
----
|
----
|
||||||
GET /changes/myProject~master~I8473b95934b5732ac55d26311a706c9c2bde9940/edit:message HTTP/1.0
|
GET /changes/myProject~master~I8473b95934b5732ac55d26311a706c9c2bde9940/edit:message HTTP/1.0
|
||||||
|
|||||||
@@ -64,6 +64,9 @@ import org.apache.commons.codec.binary.StringUtils;
|
|||||||
import org.eclipse.jgit.lib.ObjectId;
|
import org.eclipse.jgit.lib.ObjectId;
|
||||||
import org.eclipse.jgit.lib.PersonIdent;
|
import org.eclipse.jgit.lib.PersonIdent;
|
||||||
import org.eclipse.jgit.lib.RefUpdate;
|
import org.eclipse.jgit.lib.RefUpdate;
|
||||||
|
import org.eclipse.jgit.lib.Repository;
|
||||||
|
import org.eclipse.jgit.revwalk.RevCommit;
|
||||||
|
import org.eclipse.jgit.revwalk.RevWalk;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.AfterClass;
|
import org.junit.AfterClass;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -362,13 +365,13 @@ public class ChangeEditIT extends AbstractDaemonTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateMessageRest() throws Exception {
|
public void updateMessageRest() throws Exception {
|
||||||
adminRestSession.get(urlEditMessage()).assertNotFound();
|
adminRestSession.get(urlEditMessage(false)).assertNotFound();
|
||||||
EditMessage.Input in = new EditMessage.Input();
|
EditMessage.Input in = new EditMessage.Input();
|
||||||
in.message = String.format("New commit message\n\n" +
|
in.message = String.format("New commit message\n\n" +
|
||||||
CONTENT_NEW2_STR + "\n\nChange-Id: %s\n",
|
CONTENT_NEW2_STR + "\n\nChange-Id: %s\n",
|
||||||
change.getKey());
|
change.getKey());
|
||||||
adminRestSession.put(urlEditMessage(), in).assertNoContent();
|
adminRestSession.put(urlEditMessage(false), in).assertNoContent();
|
||||||
RestResponse r = adminRestSession.getJsonAccept(urlEditMessage());
|
RestResponse r = adminRestSession.getJsonAccept(urlEditMessage(false));
|
||||||
r.assertOK();
|
r.assertOK();
|
||||||
assertThat(readContentFromJson(r)).isEqualTo(in.message);
|
assertThat(readContentFromJson(r)).isEqualTo(in.message);
|
||||||
Optional<ChangeEdit> edit = editUtil.byChange(change);
|
Optional<ChangeEdit> edit = editUtil.byChange(change);
|
||||||
@@ -376,10 +379,19 @@ public class ChangeEditIT extends AbstractDaemonTest {
|
|||||||
.isEqualTo(in.message);
|
.isEqualTo(in.message);
|
||||||
in.message = String.format("New commit message2\n\nChange-Id: %s\n",
|
in.message = String.format("New commit message2\n\nChange-Id: %s\n",
|
||||||
change.getKey());
|
change.getKey());
|
||||||
adminRestSession.put(urlEditMessage(), in).assertNoContent();
|
adminRestSession.put(urlEditMessage(false), in).assertNoContent();
|
||||||
edit = editUtil.byChange(change);
|
edit = editUtil.byChange(change);
|
||||||
assertThat(edit.get().getEditCommit().getFullMessage())
|
assertThat(edit.get().getEditCommit().getFullMessage())
|
||||||
.isEqualTo(in.message);
|
.isEqualTo(in.message);
|
||||||
|
|
||||||
|
r = adminRestSession.getJsonAccept(urlEditMessage(true));
|
||||||
|
try (Repository repo = repoManager.openRepository(project);
|
||||||
|
RevWalk rw = new RevWalk(repo)) {
|
||||||
|
RevCommit commit = rw.parseCommit(
|
||||||
|
ObjectId.fromString(ps.getRevision().get()));
|
||||||
|
assertThat(readContentFromJson(r)).isEqualTo(commit.getFullMessage());
|
||||||
|
}
|
||||||
|
|
||||||
editUtil.publish(edit.get());
|
editUtil.publish(edit.get());
|
||||||
assertChangeMessages(change,
|
assertChangeMessages(change,
|
||||||
ImmutableList.of("Uploaded patch set 1.",
|
ImmutableList.of("Uploaded patch set 1.",
|
||||||
@@ -809,10 +821,11 @@ public class ChangeEditIT extends AbstractDaemonTest {
|
|||||||
+ "/edit/";
|
+ "/edit/";
|
||||||
}
|
}
|
||||||
|
|
||||||
private String urlEditMessage() {
|
private String urlEditMessage(boolean base) {
|
||||||
return "/changes/"
|
return "/changes/"
|
||||||
+ change.getChangeId()
|
+ change.getChangeId()
|
||||||
+ "/edit:message";
|
+ "/edit:message"
|
||||||
|
+ (base ? "?base" : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
private String urlEditFile() {
|
private String urlEditFile() {
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ import com.google.gerrit.server.edit.ChangeEditJson;
|
|||||||
import com.google.gerrit.server.edit.ChangeEditModifier;
|
import com.google.gerrit.server.edit.ChangeEditModifier;
|
||||||
import com.google.gerrit.server.edit.ChangeEditUtil;
|
import com.google.gerrit.server.edit.ChangeEditUtil;
|
||||||
import com.google.gerrit.server.edit.UnchangedCommitMessageException;
|
import com.google.gerrit.server.edit.UnchangedCommitMessageException;
|
||||||
|
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||||
import com.google.gerrit.server.patch.PatchListNotAvailableException;
|
import com.google.gerrit.server.patch.PatchListNotAvailableException;
|
||||||
import com.google.gerrit.server.project.InvalidChangeOperationException;
|
import com.google.gerrit.server.project.InvalidChangeOperationException;
|
||||||
import com.google.gwtorm.server.OrmException;
|
import com.google.gwtorm.server.OrmException;
|
||||||
@@ -57,6 +58,9 @@ import com.google.inject.Singleton;
|
|||||||
import com.google.inject.assistedinject.Assisted;
|
import com.google.inject.assistedinject.Assisted;
|
||||||
|
|
||||||
import org.eclipse.jgit.lib.ObjectId;
|
import org.eclipse.jgit.lib.ObjectId;
|
||||||
|
import org.eclipse.jgit.lib.Repository;
|
||||||
|
import org.eclipse.jgit.revwalk.RevCommit;
|
||||||
|
import org.eclipse.jgit.revwalk.RevWalk;
|
||||||
import org.kohsuke.args4j.Option;
|
import org.kohsuke.args4j.Option;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -553,12 +557,19 @@ public class ChangeEdits implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Singleton
|
|
||||||
public static class GetMessage implements RestReadView<ChangeResource> {
|
public static class GetMessage implements RestReadView<ChangeResource> {
|
||||||
|
private final GitRepositoryManager repoManager;
|
||||||
private final ChangeEditUtil editUtil;
|
private final ChangeEditUtil editUtil;
|
||||||
|
|
||||||
|
@Option(name = "--base", aliases = {"-b"},
|
||||||
|
usage = "whether to load the message on the base revision instead"
|
||||||
|
+ " of the change edit")
|
||||||
|
private boolean base;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
GetMessage(ChangeEditUtil editUtil) {
|
GetMessage(GitRepositoryManager repoManager,
|
||||||
|
ChangeEditUtil editUtil) {
|
||||||
|
this.repoManager = repoManager;
|
||||||
this.editUtil = editUtil;
|
this.editUtil = editUtil;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -566,8 +577,19 @@ public class ChangeEdits implements
|
|||||||
public BinaryResult apply(ChangeResource rsrc) throws AuthException,
|
public BinaryResult apply(ChangeResource rsrc) throws AuthException,
|
||||||
IOException, ResourceNotFoundException, OrmException {
|
IOException, ResourceNotFoundException, OrmException {
|
||||||
Optional<ChangeEdit> edit = editUtil.byChange(rsrc.getChange());
|
Optional<ChangeEdit> edit = editUtil.byChange(rsrc.getChange());
|
||||||
|
String msg;
|
||||||
if (edit.isPresent()) {
|
if (edit.isPresent()) {
|
||||||
String msg = edit.get().getEditCommit().getFullMessage();
|
if (base) {
|
||||||
|
try (Repository repo = repoManager.openRepository(rsrc.getProject());
|
||||||
|
RevWalk rw = new RevWalk(repo)) {
|
||||||
|
RevCommit commit = rw.parseCommit(ObjectId.fromString(
|
||||||
|
edit.get().getBasePatchSet().getRevision().get()));
|
||||||
|
msg = commit.getFullMessage();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
msg = edit.get().getEditCommit().getFullMessage();
|
||||||
|
}
|
||||||
|
|
||||||
return BinaryResult.create(msg)
|
return BinaryResult.create(msg)
|
||||||
.setContentType(FileContentUtil.TEXT_X_GERRIT_COMMIT_MESSAGE)
|
.setContentType(FileContentUtil.TEXT_X_GERRIT_COMMIT_MESSAGE)
|
||||||
.base64();
|
.base64();
|
||||||
|
|||||||
Reference in New Issue
Block a user