Merge branch 'stable-3.3-2021-07' into stable-3.3
* stable-3.3-2021-07:
Set version to 3.3.7-SNAPSHOT
Set version to 3.3.6
Update Gitiles plugin
IncludedIn: filter out non-visible branches
Point gitiles submodule to gitiles security fix repo
Change-Id: I332bbb5657b53f6857b7cc2237797b29fc8ee04e
diff --git a/.gitmodules b/.gitmodules
index 6f493f0..e5eef1e 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -24,7 +24,7 @@
[submodule "plugins/gitiles"]
path = plugins/gitiles
- url = ../plugins/gitiles-security-fixes
+ url = ../plugins/gitiles
branch = .
[submodule "plugins/hooks"]
diff --git a/Documentation/user-search.txt b/Documentation/user-search.txt
index 0c1ec2d..0cf605b 100644
--- a/Documentation/user-search.txt
+++ b/Documentation/user-search.txt
@@ -555,14 +555,17 @@
author:'AUTHOR'::
+
Changes where 'AUTHOR' is the author of the current patch set. 'AUTHOR' may be
-the author's exact email address, or part of the name or email address.
+the author's exact email address, or part of the name or email address. The
+special case of `author:self` will find changes authored by the caller.
[[committer]]
committer:'COMMITTER'::
+
Changes where 'COMMITTER' is the committer of the current patch set.
'COMMITTER' may be the committer's exact email address, or part of the name or
-email address.
+email address. The special case of `committer:self` will find changes committed
+by the caller.
+
[[submittable]]
submittable:'SUBMIT_STATUS'::
diff --git a/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java b/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java
index 2021b2b..04e6d49 100644
--- a/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java
+++ b/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java
@@ -1417,6 +1417,12 @@
private Predicate<ChangeData> getAuthorOrCommitterFullTextPredicate(
String who, Function<String, Predicate<ChangeData>> fullPredicateFunc)
throws QueryParseException {
+ if (isSelf(who)) {
+ IdentifiedUser me = args.getIdentifiedUser();
+ List<Predicate<ChangeData>> predicates =
+ me.getEmailAddresses().stream().map(fullPredicateFunc).collect(toList());
+ return Predicate.or(predicates);
+ }
Set<String> parts = SchemaUtil.getNameParts(who);
if (parts.isEmpty()) {
throw error("invalid value");
diff --git a/javatests/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java b/javatests/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java
index 02f514a..297977c 100644
--- a/javatests/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java
+++ b/javatests/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java
@@ -617,9 +617,14 @@
PersonIdent johnDoe = new PersonIdent("John Doe", "john.doe@example.com");
PersonIdent john = new PersonIdent("John", "john@example.com");
PersonIdent doeSmith = new PersonIdent("Doe Smith", "doe_smith@example.com");
+ Account ua = user.asIdentifiedUser().getAccount();
+ PersonIdent myself = new PersonIdent("I Am", ua.preferredEmail());
+ PersonIdent selfName = new PersonIdent("My Self", "my.self@example.com");
+
Change change1 = createChange(repo, johnDoe);
Change change2 = createChange(repo, john);
Change change3 = createChange(repo, doeSmith);
+ Change change4 = createChange(repo, selfName);
// Only email address.
assertQuery(searchOperator + "john.doe@example.com", change1);
@@ -635,6 +640,18 @@
assertQuery(searchOperator + "\"John <john.doe@example.com>\"");
assertQuery(searchOperator + "\"Doe John <john@example.com>\"");
assertQuery(searchOperator + "\"Doe John <doe_smith@example.com>\"");
+
+ // Partial name
+ assertQuery(searchOperator + "ohn");
+ assertQuery(searchOperator + "smith", change3);
+
+ // The string 'self' in the name should not be matched
+ assertQuery(searchOperator + "self");
+
+ // ':self' matches a change created with the current user's email address
+ Change change5 = createChange(repo, myself);
+ assertQuery(searchOperator + "me", change5);
+ assertQuery(searchOperator + "self", change5);
}
private void byAuthorOrCommitterFullText(String searchOperator) throws Exception {
diff --git a/plugins/gitiles b/plugins/gitiles
index 709df89..25580c3 160000
--- a/plugins/gitiles
+++ b/plugins/gitiles
@@ -1 +1 @@
-Subproject commit 709df89717a08f5d8b8728076d608f30894a11bc
+Subproject commit 25580c3e60a58265b74ac5022b1dbde0e9ef008e