From 63f23e3b82eec150f3b310fd7a7f615feebf8a5d Mon Sep 17 00:00:00 2001 From: Gal Paikin Date: Wed, 13 Nov 2019 16:19:51 -0800 Subject: [PATCH] Expose query submission ID to the user As a follow-up for RevertSubmission (b81f56c469), the users could wish to know the changes of a certain submission if they are considering to revert the entire submission, or if the submission was already reverted and they wish to find it quickly. Also, it is important for the frontend to know which changes belong to a certain submission, so that they can suggest a better commit message to the user when the user wants to revert a submission. Change-Id: I337f7f8aeea2bc4146ed7e642f41c8710a153634 --- Documentation/user-search.txt | 5 +++++ .../server/query/change/ChangeQueryBuilder.java | 9 +++++++++ .../query/change/AbstractQueryChangesTest.java | 13 +++++++++++++ .../elements/core/gr-search-bar/gr-search-bar.js | 1 + 4 files changed, 28 insertions(+) diff --git a/Documentation/user-search.txt b/Documentation/user-search.txt index 55a9ab7a66..bde9508420 100644 --- a/Documentation/user-search.txt +++ b/Documentation/user-search.txt @@ -140,6 +140,11 @@ revertof:'ID':: + Changes that revert the change specified by the numeric 'ID'. +[[submissionid]] +submissionid:'ID':: ++ +Changes that have the specified submission 'ID'. + [[reviewerin]] reviewerin:'GROUP':: + diff --git a/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java b/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java index 5d4edc931e..c86bd9467b 100644 --- a/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java +++ b/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java @@ -1245,6 +1245,15 @@ public class ChangeQueryBuilder extends QueryBuilder submissionId(String value) throws QueryParseException { + if (args.getSchema().hasField(ChangeField.SUBMISSIONID)) { + return new SubmissionIdPredicate(value); + } + throw new QueryParseException( + "'submissionid' operator is not supported by change index version"); + } + @Override protected Predicate defaultField(String query) throws QueryParseException { if (query.startsWith("refs/")) { diff --git a/javatests/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java b/javatests/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java index 2c5fcc41ae..231340d65d 100644 --- a/javatests/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java +++ b/javatests/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java @@ -2502,6 +2502,19 @@ public abstract class AbstractQueryChangesTest extends GerritServerTests { assertQueryByIds("revertof:" + changeToRevert._number, Change.id(changeThatReverts._number)); } + @Test + public void submissionId() throws Exception { + TestRepository repo = createProject("repo"); + Change change = insert(repo, newChange(repo)); + // create irrelevant change + insert(repo, newChange(repo)); + gApi.changes().id(change.getChangeId()).current().review(ReviewInput.approve()); + gApi.changes().id(change.getChangeId()).current().submit(); + String submissionId = gApi.changes().id(change.getChangeId()).get().submissionId; + + assertQueryByIds("submissionid:" + submissionId, change.getId()); + } + /** Change builder for helping in tests for dashboard sections. */ protected class DashboardChangeState { private final Account.Id ownerId; diff --git a/polygerrit-ui/app/elements/core/gr-search-bar/gr-search-bar.js b/polygerrit-ui/app/elements/core/gr-search-bar/gr-search-bar.js index 6c7b0fd16d..0e4436b20b 100644 --- a/polygerrit-ui/app/elements/core/gr-search-bar/gr-search-bar.js +++ b/polygerrit-ui/app/elements/core/gr-search-bar/gr-search-bar.js @@ -90,6 +90,7 @@ 'status:merged', 'status:open', 'status:reviewed', + 'submissionid:', 'topic:', 'tr:', ];