Add revertOf to ChangeInfo and populate it when /revert is called

Change-Id: I10c16c667e4bbb61d35a6c7b6be917fc595ab3ec
This commit is contained in:
Patrick Hiesel
2017-07-13 14:18:38 +02:00
parent 0a6eb6a52b
commit 828f322d55
7 changed files with 19 additions and 0 deletions

View File

@@ -5729,6 +5729,8 @@ When present, change is marked as private.
When present, change is marked as Work In Progress.
|`has_review_started` |optional, not set if `false`|
When present, change has been marked Ready at some point in time.
|`revert_of` |optional|
The numeric Change-Id of the change that this change reverts.
|==================================
[[change-input]]

View File

@@ -617,6 +617,7 @@ public class ChangeIT extends AbstractDaemonTest {
assertThat(revertChange.messages).hasSize(1);
assertThat(revertChange.messages.iterator().next().message).isEqualTo("Uploaded patch set 1.");
assertThat(revertChange.revertOf).isEqualTo(gApi.changes().id(r.getChangeId()).get()._number);
}
@Test

View File

@@ -48,6 +48,7 @@ public class ChangeInfo {
public Boolean isPrivate;
public Boolean workInProgress;
public Boolean hasReviewStarted;
public Integer revertOf;
public int _number;

View File

@@ -129,6 +129,7 @@ public class ChangeInserter implements InsertChangeOp {
private boolean fireRevisionCreated;
private boolean sendMail;
private boolean updateRef;
private Change.Id revertOf;
// Fields set during the insertion process.
private ReceiveCommand cmd;
@@ -198,6 +199,7 @@ public class ChangeInserter implements InsertChangeOp {
change.setPrivate(isPrivate);
change.setWorkInProgress(workInProgress);
change.setReviewStarted(!workInProgress);
change.setRevertOf(revertOf);
return change;
}
@@ -319,6 +321,11 @@ public class ChangeInserter implements InsertChangeOp {
return this;
}
public ChangeInserter setRevertOf(Change.Id revertOf) {
this.revertOf = revertOf;
return this;
}
public void setPushCertificate(String cert) {
pushCert = cert;
}
@@ -390,6 +397,9 @@ public class ChangeInserter implements InsertChangeOp {
update.setPsDescription(patchSetDescription);
update.setPrivate(isPrivate);
update.setWorkInProgress(workInProgress);
if (revertOf != null) {
update.setRevertOf(revertOf.get());
}
boolean draft = status == Change.Status.DRAFT;
List<String> newGroups = groups;

View File

@@ -542,6 +542,7 @@ public class ChangeJson {
out.submitted = getSubmittedOn(cd);
out.plugins =
pluginDefinedAttributesFactory != null ? pluginDefinedAttributesFactory.create(cd) : null;
out.revertOf = cd.change().getRevertOf() != null ? cd.change().getRevertOf().get() : null;
if (out.labels != null && has(DETAILED_LABELS)) {
// If limited to specific patch sets but not the current patch set, don't

View File

@@ -218,6 +218,7 @@ public class Revert extends RetryingRestModifyView<ChangeResource, RevertInput,
Set<Account.Id> ccs = new HashSet<>(reviewerSet.byState(ReviewerStateInternal.CC));
ccs.remove(user.getAccountId());
ins.setExtraCC(ccs);
ins.setRevertOf(changeIdToRevert);
try (BatchUpdate bu = updateFactory.create(db.get(), project, user, now)) {
bu.setRepository(git, revWalk, oi);

View File

@@ -618,6 +618,9 @@ public class ChangeRebuilderImpl extends ChangeRebuilder {
update.setChangeId(change.getKey().get());
update.setBranch(change.getDest().get());
update.setSubject(change.getOriginalSubject());
if (change.getRevertOf() != null) {
update.setRevertOf(change.getRevertOf().get());
}
}
@Override