Add cherry-pick information to change message Currently, cherry-pick information is not included in change message when cherry-pick results in a new patchset on an already existing change. Add this information to make the change message consistent with the case when cherry-pick results in a new change. Release-Notes: Add cherry-pick information to change message when cherry-pick results in a new patchset Change-Id: Ie220882ced039c5bcf0040a6b9c39bc406c8a4d9 (cherry picked from commit 0f99fe66addf82cdafc5b5f249e621eb31dfb150)
diff --git a/java/com/google/gerrit/server/restapi/change/CherryPickChange.java b/java/com/google/gerrit/server/restapi/change/CherryPickChange.java index 4da8410..338a1f5 100644 --- a/java/com/google/gerrit/server/restapi/change/CherryPickChange.java +++ b/java/com/google/gerrit/server/restapi/change/CherryPickChange.java
@@ -402,6 +402,7 @@ destChange.notes(), cherryPickCommit, sourceChange, + sourceCommit, newTopic, input, workInProgress); @@ -435,6 +436,7 @@ ChangeNotes destNotes, CodeReviewCommit cherryPickCommit, @Nullable Change sourceChange, + @Nullable ObjectId sourceCommit, String topic, CherryPickInput input, @Nullable Boolean workInProgress) @@ -442,7 +444,10 @@ Change destChange = destNotes.getChange(); PatchSet.Id psId = ChangeUtil.nextPatchSetId(git, destChange.currentPatchSetId()); PatchSetInserter inserter = patchSetInserterFactory.create(destNotes, psId, cherryPickCommit); - inserter.setMessage("Uploaded patch set " + inserter.getPatchSetId().get() + "."); + BranchNameKey sourceBranch = sourceChange == null ? null : sourceChange.getDest(); + inserter.setMessage( + messageForDestinationChange( + inserter.getPatchSetId(), sourceBranch, sourceCommit, cherryPickCommit)); inserter.setTopic(topic); if (workInProgress != null) { inserter.setWorkInProgress(workInProgress);
diff --git a/javatests/com/google/gerrit/acceptance/api/project/CommitIT.java b/javatests/com/google/gerrit/acceptance/api/project/CommitIT.java index 84a4a40..41d50a6 100644 --- a/javatests/com/google/gerrit/acceptance/api/project/CommitIT.java +++ b/javatests/com/google/gerrit/acceptance/api/project/CommitIT.java
@@ -372,7 +372,9 @@ Iterator<ChangeMessageInfo> messageIterator = cherryPickResult.messages.iterator(); assertThat(messageIterator.next().message).isEqualTo("Uploaded patch set 1."); - assertThat(messageIterator.next().message).isEqualTo("Uploaded patch set 2."); + String expectedMessage = + String.format("Patch Set 2: Cherry Picked from commit %s.", commitToCherryPick); + assertThat(messageIterator.next().message).isEqualTo(expectedMessage); // Cherry-pick of is not set, because the source change was not provided. assertThat(cherryPickResult.cherryPickOfChange).isNull(); assertThat(cherryPickResult.cherryPickOfPatchSet).isNull(); @@ -422,8 +424,11 @@ Iterator<ChangeMessageInfo> messageIterator = cherryPickResult.messages.iterator(); assertThat(messageIterator.next().message).isEqualTo("Uploaded patch set 1."); - assertThat(messageIterator.next().message).isEqualTo("Uploaded patch set 2."); - assertThat(messageIterator.next().message).isEqualTo("Uploaded patch set 3."); + assertThat(messageIterator.next().message) + .isEqualTo("Patch Set 2: Cherry Picked from branch master."); + String expectedMessage = + String.format("Patch Set 3: Cherry Picked from commit %s.", commitToCherryPick.getName()); + assertThat(messageIterator.next().message).isEqualTo(expectedMessage); // Cherry-pick was reset to empty value. assertThat(cherryPickResult._number).isEqualTo(existingDestChange._number); assertThat(cherryPickResult.cherryPickOfChange).isNull();
diff --git a/javatests/com/google/gerrit/acceptance/api/revision/RevisionIT.java b/javatests/com/google/gerrit/acceptance/api/revision/RevisionIT.java index 4a5c3dd..d07f24d 100644 --- a/javatests/com/google/gerrit/acceptance/api/revision/RevisionIT.java +++ b/javatests/com/google/gerrit/acceptance/api/revision/RevisionIT.java
@@ -589,7 +589,7 @@ assertThat(cherryInfo._number).isEqualTo(change.get()._number); assertThat(cherryInfo.cherryPickOfPatchSet).isEqualTo(1); assertThat(cherryIt.next().message).isEqualTo("Uploaded patch set 1."); - assertThat(cherryIt.next().message).isEqualTo("Uploaded patch set 2."); + assertThat(cherryIt.next().message).isEqualTo("Patch Set 2: Cherry Picked from branch master."); } @Test @@ -625,7 +625,7 @@ assertThat(cherryInfo.messages).hasSize(2); Iterator<ChangeMessageInfo> cherryIt = cherryInfo.messages.iterator(); assertThat(cherryIt.next().message).isEqualTo("Uploaded patch set 1."); - assertThat(cherryIt.next().message).isEqualTo("Uploaded patch set 2."); + assertThat(cherryIt.next().message).isEqualTo("Patch Set 2: Cherry Picked from branch master."); // Parent of change 2 should now be the change that was merged, i.e. // change 2 is rebased onto the head of the master branch.