From 739f704b79712326df68fd902f822607cf48f546 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Thu, 6 Sep 2018 17:24:00 +0900 Subject: [PATCH 1/9] Bazel: fix error_prone_warnings_toolchain rule An incorrect target name causes the build to fail with: no such target '@bazel_tools//tools/jdk:platformclasspath8.jar' Removing the '8' suffix fixes it. Change-Id: I915239a5e1ce6403d7b6760d895aa085f00a1b83 --- tools/BUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/BUILD b/tools/BUILD index 379ea6cb10..2571e759ad 100644 --- a/tools/BUILD +++ b/tools/BUILD @@ -44,7 +44,7 @@ default_java_toolchain( default_java_toolchain( name = "error_prone_warnings_toolchain", - bootclasspath = ["@bazel_tools//tools/jdk:platformclasspath8.jar"], + bootclasspath = ["@bazel_tools//tools/jdk:platformclasspath.jar"], package_configuration = [ ":error_prone", ], From 1e7d62cdcc8d461cc098999acdf96b7f2ee20ba9 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Thu, 6 Sep 2018 17:33:26 +0900 Subject: [PATCH 2/9] ChangeBundle: Fix operator precedence warning raised by ErrorProne Add grouping parentheses to make the operator precedence explicit. See http://errorprone.info/bugpattern/OperatorPrecedence Change-Id: Iaf80a165e640f19bcb95b579cd3aba45ad9b20ba --- .../java/com/google/gerrit/server/notedb/ChangeBundle.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeBundle.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeBundle.java index d5b1b3da1c..acfbbacf4b 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeBundle.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeBundle.java @@ -442,7 +442,7 @@ public class ChangeBundle { excludeOrigSubj = true; String aTopic = trimOrNull(a.getTopic()); excludeTopic = - Objects.equals(aTopic, b.getTopic()) || "".equals(aTopic) && b.getTopic() == null; + Objects.equals(aTopic, b.getTopic()) || ("".equals(aTopic) && b.getTopic() == null); aUpdated = bundleA.getLatestTimestamp(); } else if (bundleA.source == NOTE_DB && bundleB.source == REVIEW_DB) { excludeCreatedOn = @@ -454,7 +454,7 @@ public class ChangeBundle { excludeOrigSubj = true; String bTopic = trimOrNull(b.getTopic()); excludeTopic = - Objects.equals(bTopic, a.getTopic()) || a.getTopic() == null && "".equals(bTopic); + Objects.equals(bTopic, a.getTopic()) || (a.getTopic() == null && "".equals(bTopic)); bUpdated = bundleB.getLatestTimestamp(); } @@ -748,7 +748,8 @@ public class ChangeBundle { excludePostSubmit = a.getValue() == 0 && b.isPostSubmit(); } else if (bundleA.source == NOTE_DB && bundleB.source == REVIEW_DB) { excludeGranted = - tb.before(psb.getCreatedOn()) && ta.equals(psa.getCreatedOn()) || tb.compareTo(ta) < 0; + (tb.before(psb.getCreatedOn()) && ta.equals(psa.getCreatedOn())) + || (tb.compareTo(ta) < 0); excludePostSubmit = b.getValue() == 0 && a.isPostSubmit(); } From 8cf9a823ea8ef741792372d0862eac1ae018929e Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Thu, 6 Sep 2018 17:36:36 +0900 Subject: [PATCH 3/9] ListProjects: Fix operator precedence warning raised by ErrorProne Add grouping parenthesis to make the operator precedence explicit. See http://errorprone.info/bugpattern/OperatorPrecedence Change-Id: I8a0853f8fac05218e77e1a94ebff989380246d37 --- .../java/com/google/gerrit/server/project/ListProjects.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/ListProjects.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/ListProjects.java index 8c906ca6af..eeabac8b09 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/ListProjects.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/ListProjects.java @@ -524,9 +524,9 @@ public class ListProjects implements RestReadView { try (Repository git = repoManager.openRepository(projectName)) { for (int i = 0; i < showBranch.size(); i++) { Ref ref = git.findRef(showBranch.get(i)); - if (ref != null + if ((ref != null && ref.getObjectId() != null - && (projectControl.controlForRef(ref.getLeaf().getName()).isVisible()) + && (projectControl.controlForRef(ref.getLeaf().getName()).isVisible())) || (all && projectControl.isOwner())) { result[i] = ref; } From 429687d2ad47bc7093a45b6c62b8f29275a1eb48 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Thu, 6 Sep 2018 17:38:13 +0900 Subject: [PATCH 4/9] ListMailFilter: Fix operator precedence warning raised by ErrorProne Add grouping parenthesis to make the operator precedence explicit. See http://errorprone.info/bugpattern/OperatorPrecedence Change-Id: Ica10d3e1494e9109883ef0c327015e423e91dd31 --- .../java/com/google/gerrit/server/mail/ListMailFilter.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/ListMailFilter.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/ListMailFilter.java index 21347cb956..2e7c8284a9 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/ListMailFilter.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/ListMailFilter.java @@ -54,7 +54,8 @@ public class ListMailFilter implements MailFilter { } boolean match = mailPattern.matcher(message.from().email).find(); - if (mode == ListFilterMode.WHITELIST && !match || mode == ListFilterMode.BLACKLIST && match) { + if ((mode == ListFilterMode.WHITELIST && !match) + || (mode == ListFilterMode.BLACKLIST && match)) { log.info("Mail message from " + message.from() + " rejected by list filter"); return false; } From 818264876a368118ded6d34ea52481afa13a0b47 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Thu, 6 Sep 2018 17:49:16 +0900 Subject: [PATCH 5/9] AbstractSubmit: Remove redundant assertion about null IOException The call to assertThat(e).isNull() causes ErrorProne to raise a warning that there is a missing call to fail(), because it thinks that the exception is expected. Instead of asserting on the IOException, rethrow it as the cause of a new ValidationException. Change-Id: I7dd681196f8d63eb6f2a0063b55aa94d0ec1d71f --- .../google/gerrit/acceptance/rest/change/AbstractSubmit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java index 94fa99b007..7d55c66aa4 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/AbstractSubmit.java @@ -760,7 +760,7 @@ public abstract class AbstractSubmit extends AbstractDaemonTest { try (RevWalk rw = args.newRevWalk()) { rw.parseBody(rw.parseCommit(args.getCommands().get("refs/heads/master").getNewId())); } catch (IOException e) { - assertThat(e).isNull(); + throw new ValidationException("Unexpected exception", e); } projectsCalled.add(args.getProject().get()); if (projectsCalled.size() == 2) { From 1ed12c156bfbcee2f997bcce4984dd39a7c85764 Mon Sep 17 00:00:00 2001 From: Sven Selberg Date: Thu, 28 Jun 2018 10:29:44 +0200 Subject: [PATCH 6/9] Assume correct relative or absolute URL from Weblink provider I you have a change URL like: http://localhost:8080/c/test-project/+/688 Stepping back to parts "../../" will get you: http://localhost:8080/c/ Wich is _not_ the base url. Do not try to guess how URL is constructed but trust WebLink providers to provide an absolute or a relative URL. Provide correct relative url from Gitweb. Bug: Issue 5316 Change-Id: I7f404d470a8fe0f32ef94bb2c7b4c6a9ba68a2b8 (cherry picked from commit 69ab4a8569a690da7d6fc0c57e0a74c2d97ef6c0) --- .../gerrit/server/config/GitwebConfig.java | 17 +++++++++++++++-- .../change/gr-commit-info/gr-commit-info.js | 4 ---- .../gr-commit-info/gr-commit-info_test.html | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/GitwebConfig.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/GitwebConfig.java index 6c0f7696b7..91eaf3c7d3 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/config/GitwebConfig.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/GitwebConfig.java @@ -35,6 +35,8 @@ import com.google.gerrit.extensions.webui.TagWebLink; import com.google.inject.AbstractModule; import com.google.inject.Inject; import com.google.inject.Singleton; +import java.net.MalformedURLException; +import java.net.URL; import org.eclipse.jgit.lib.Config; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -179,7 +181,11 @@ public class GitwebConfig { private final GitwebType type; @Inject - GitwebConfig(GitwebCgiConfig cgiConfig, @GerritServerConfig Config cfg) { + GitwebConfig( + GitwebCgiConfig cgiConfig, + @GerritServerConfig Config cfg, + @Nullable @CanonicalWebUrl String gerritUrl) + throws MalformedURLException { if (isDisabled(cfg)) { type = null; url = null; @@ -192,7 +198,14 @@ public class GitwebConfig { // Use an externally managed gitweb instance, and not an internal one. url = cfgUrl; } else { - url = firstNonNull(cfgUrl, "gitweb"); + String baseGerritUrl; + if (gerritUrl != null) { + URL u = new URL(gerritUrl); + baseGerritUrl = u.getPath(); + } else { + baseGerritUrl = "/"; + } + url = firstNonNull(cfgUrl, baseGerritUrl + "gitweb"); } } } diff --git a/polygerrit-ui/app/elements/change/gr-commit-info/gr-commit-info.js b/polygerrit-ui/app/elements/change/gr-commit-info/gr-commit-info.js index 5aa8601dbb..6ccf7466f2 100644 --- a/polygerrit-ui/app/elements/change/gr-commit-info/gr-commit-info.js +++ b/polygerrit-ui/app/elements/change/gr-commit-info/gr-commit-info.js @@ -81,10 +81,6 @@ return; } - if (!/^https?\:\/\//.test(webLink)) { - webLink = '../../' + webLink; - } - return webLink; }, diff --git a/polygerrit-ui/app/elements/change/gr-commit-info/gr-commit-info_test.html b/polygerrit-ui/app/elements/change/gr-commit-info/gr-commit-info_test.html index c8faff5d64..10a51f619c 100644 --- a/polygerrit-ui/app/elements/change/gr-commit-info/gr-commit-info_test.html +++ b/polygerrit-ui/app/elements/change/gr-commit-info/gr-commit-info_test.html @@ -56,7 +56,7 @@ limitations under the License. assert.isOk(element._computeShowWebLink(element.change, element.commitInfo, element.serverConfig)); assert.equal(element._computeWebLink(element.change, element.commitInfo, - element.serverConfig), '../../link-url'); + element.serverConfig), 'link-url'); }); test('does not relativize web links that begin with scheme', function() { From 45fe4d8d95960f2aa8cfbd911ae9bf6a1b5a6906 Mon Sep 17 00:00:00 2001 From: Marco Miller Date: Thu, 6 Sep 2018 10:22:33 -0400 Subject: [PATCH 7/9] ElasticVersionTest: Align tested versions w/ ElasticContainer last ones Change-Id: Iafc734d5f3a7e5f4ce9508f93525fe8348dd3b30 --- .../com/google/gerrit/elasticsearch/ElasticVersionTest.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java b/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java index ec4add42ea..b598a0adf0 100644 --- a/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java +++ b/gerrit-elasticsearch/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java @@ -29,14 +29,13 @@ public class ElasticVersionTest { assertThat(ElasticVersion.forVersion("2.4.6")).isEqualTo(ElasticVersion.V2_4); assertThat(ElasticVersion.forVersion("5.6.0")).isEqualTo(ElasticVersion.V5_6); - assertThat(ElasticVersion.forVersion("5.6.9")).isEqualTo(ElasticVersion.V5_6); - assertThat(ElasticVersion.forVersion("5.6.10")).isEqualTo(ElasticVersion.V5_6); + assertThat(ElasticVersion.forVersion("5.6.11")).isEqualTo(ElasticVersion.V5_6); assertThat(ElasticVersion.forVersion("6.2.0")).isEqualTo(ElasticVersion.V6_2); assertThat(ElasticVersion.forVersion("6.2.4")).isEqualTo(ElasticVersion.V6_2); assertThat(ElasticVersion.forVersion("6.3.0")).isEqualTo(ElasticVersion.V6_3); - assertThat(ElasticVersion.forVersion("6.3.1")).isEqualTo(ElasticVersion.V6_3); + assertThat(ElasticVersion.forVersion("6.3.2")).isEqualTo(ElasticVersion.V6_3); assertThat(ElasticVersion.forVersion("6.4.0")).isEqualTo(ElasticVersion.V6_4); assertThat(ElasticVersion.forVersion("6.4.1")).isEqualTo(ElasticVersion.V6_4); From 4fb14914ed26073f27adc5586d4e759146f61cd2 Mon Sep 17 00:00:00 2001 From: Hector Oswaldo Caballero Date: Tue, 16 Jan 2018 11:06:54 -0500 Subject: [PATCH 8/9] [project.config] Allow to add commentLink entries Change-Id: I2fd01cb6775a905d7e602d5415102b274bd98fd3 --- .../gerrit/server/git/ProjectConfig.java | 23 ++++++++++++++++++- .../gerrit/server/git/ProjectConfigTest.java | 14 +++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java index bae7ed7cea..12a62f9c1b 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ProjectConfig.java @@ -394,6 +394,10 @@ public class ProjectConfig extends VersionedMetaData implements ValidationError. return commentLinkSections; } + public void addCommentLinkSection(CommentLinkInfoImpl commentLink) { + commentLinkSections.add(commentLink); + } + public ConfiguredMimeTypes getMimeTypes() { return mimeTypes; } @@ -916,7 +920,6 @@ public class ProjectConfig extends VersionedMetaData implements ValidationError. rc.getString(COMMENTLINK, name, KEY_MATCH), name, e.getMessage()))); } } - commentLinkSections = ImmutableList.copyOf(commentLinkSections); } private void loadSubscribeSections(Config rc) throws ConfigInvalidException { @@ -1079,6 +1082,7 @@ public class ProjectConfig extends VersionedMetaData implements ValidationError. savePluginSections(rc, keepGroups); groupList.retainUUIDs(keepGroups); saveLabelSections(rc); + saveCommentLinkSections(rc); saveSubscribeSections(rc); saveConfig(PROJECT_CONFIG, rc); @@ -1349,6 +1353,23 @@ public class ProjectConfig extends VersionedMetaData implements ValidationError. } } + private void saveCommentLinkSections(Config rc) { + if (commentLinkSections != null) { + for (CommentLinkInfoImpl cm : commentLinkSections) { + rc.setString(COMMENTLINK, cm.name, KEY_MATCH, cm.match); + if (!Strings.isNullOrEmpty(cm.html)) { + rc.setString(COMMENTLINK, cm.name, KEY_HTML, cm.html); + } + if (!Strings.isNullOrEmpty(cm.link)) { + rc.setString(COMMENTLINK, cm.name, KEY_LINK, cm.link); + } + if (cm.enabled != null && !cm.enabled) { + rc.setBoolean(COMMENTLINK, cm.name, KEY_ENABLED, cm.enabled); + } + } + } + } + private static void setBooleanConfigKey( Config rc, String name, String key, boolean value, boolean defaultValue) { if (value == defaultValue) { diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/git/ProjectConfigTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/git/ProjectConfigTest.java index 2519a7fb9b..ad9a1ce0e8 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/git/ProjectConfigTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/git/ProjectConfigTest.java @@ -29,6 +29,7 @@ import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.RefNames; import com.google.gerrit.server.config.PluginConfig; import com.google.gerrit.server.extensions.events.GitReferenceUpdated; +import com.google.gerrit.server.project.CommentLinkInfoImpl; import java.io.IOException; import java.util.Arrays; import java.util.Collections; @@ -476,6 +477,19 @@ public class ProjectConfigTest extends LocalDiskRepositoryTestCase { + "\n"); } + @Test + public void addCommentLink() throws Exception { + RevCommit rev = util.commit().create(); + update(rev); + + ProjectConfig cfg = read(rev); + CommentLinkInfoImpl cm = new CommentLinkInfoImpl("Test", "abc.*", null, "link", true); + cfg.addCommentLinkSection(cm); + rev = commit(cfg); + assertThat(text(rev, "project.config")) + .isEqualTo("[commentlink \"Test\"]\n\tmatch = abc.*\n\thtml = link\n"); + } + private ProjectConfig read(RevCommit rev) throws IOException, ConfigInvalidException { ProjectConfig cfg = new ProjectConfig(new Project.NameKey("test")); cfg.load(db, rev); From 3ae510cda3ef2a8d02ad462b4b0814d00b3dc8c5 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Thu, 6 Sep 2018 14:02:06 +0900 Subject: [PATCH 9/9] Set version to 2.14.12 Change-Id: Ia7925987947465f38be5b5ca4ef7ead970226d57 --- gerrit-acceptance-framework/pom.xml | 2 +- gerrit-extension-api/pom.xml | 2 +- gerrit-plugin-api/pom.xml | 2 +- gerrit-plugin-gwtui/pom.xml | 2 +- gerrit-war/pom.xml | 2 +- version.bzl | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gerrit-acceptance-framework/pom.xml b/gerrit-acceptance-framework/pom.xml index 55f7ee6ebd..ecab4455c4 100644 --- a/gerrit-acceptance-framework/pom.xml +++ b/gerrit-acceptance-framework/pom.xml @@ -2,7 +2,7 @@ 4.0.0 com.google.gerrit gerrit-acceptance-framework - 2.14.12-SNAPSHOT + 2.14.12 jar Gerrit Code Review - Acceptance Test Framework Framework for Gerrit's acceptance tests diff --git a/gerrit-extension-api/pom.xml b/gerrit-extension-api/pom.xml index e6361bf4e3..dfac8192c2 100644 --- a/gerrit-extension-api/pom.xml +++ b/gerrit-extension-api/pom.xml @@ -2,7 +2,7 @@ 4.0.0 com.google.gerrit gerrit-extension-api - 2.14.12-SNAPSHOT + 2.14.12 jar Gerrit Code Review - Extension API API for Gerrit Extensions diff --git a/gerrit-plugin-api/pom.xml b/gerrit-plugin-api/pom.xml index e2b1d993ce..33bba1e3c0 100644 --- a/gerrit-plugin-api/pom.xml +++ b/gerrit-plugin-api/pom.xml @@ -2,7 +2,7 @@ 4.0.0 com.google.gerrit gerrit-plugin-api - 2.14.12-SNAPSHOT + 2.14.12 jar Gerrit Code Review - Plugin API API for Gerrit Plugins diff --git a/gerrit-plugin-gwtui/pom.xml b/gerrit-plugin-gwtui/pom.xml index af2d76be10..227be2a57b 100644 --- a/gerrit-plugin-gwtui/pom.xml +++ b/gerrit-plugin-gwtui/pom.xml @@ -2,7 +2,7 @@ 4.0.0 com.google.gerrit gerrit-plugin-gwtui - 2.14.12-SNAPSHOT + 2.14.12 jar Gerrit Code Review - Plugin GWT UI Common Classes for Gerrit GWT UI Plugins diff --git a/gerrit-war/pom.xml b/gerrit-war/pom.xml index 6f14747e26..eac54f46dc 100644 --- a/gerrit-war/pom.xml +++ b/gerrit-war/pom.xml @@ -2,7 +2,7 @@ 4.0.0 com.google.gerrit gerrit-war - 2.14.12-SNAPSHOT + 2.14.12 war Gerrit Code Review - WAR Gerrit WAR diff --git a/version.bzl b/version.bzl index 52ac2f2afd..e9f3f86b01 100644 --- a/version.bzl +++ b/version.bzl @@ -2,4 +2,4 @@ # Used by :api_install and :api_deploy targets # when talking to the destination repository. # -GERRIT_VERSION = "2.14.12-SNAPSHOT" +GERRIT_VERSION = "2.14.12"