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:', ];