From 4793fd48c57b2758e17cdc14b96d8e5dd2dcc57a Mon Sep 17 00:00:00 2001 From: Jonathan Nieder Date: Fri, 19 Jun 2015 18:06:01 -0700 Subject: [PATCH] Do not use system gitweb.cgi when gitweb URL set, cgi unset Until 1b2d47e7a2a0e37177c5c7a79caa509c22384e85 (Extract CGI configuration from GitWebConfig, 2015-06-12), setting [gitweb] url = url://of/my/gitweb/instance ; cgi not set was a way to request use of an externally managed gitweb instance instead of the internal GitwebServlet. That patch accidentally dropped support for that configuration, though it mostly worked if /usr/lib/cgi-bin/gitweb.cgi happened to be missing or non-executable. Noticed by running gitweb in such a configuration with /usr/lib/cgi-bin/gitweb.cgi present and executable. GitwebServlet failed to provision because I do not use LocalDiskRepositoryManager and gerrit.basepath was not set. Unexpected exception caught during GET localhost/ com.google.inject.ProvisionException: Unable to provision, see the following errors: 1) Error injecting constructor, java.lang.IllegalStateException: gerrit.basePath must be configured at com.google.gerrit.server.git.LocalDiskRepositoryManager.(LocalDiskRepositoryManager.java:146) at com.google.gerrit.server.git.LocalDiskRepositoryManager.class(LocalDiskRepositoryManager.java:69) while locating com.google.gerrit.server.git.LocalDiskRepositoryManager for parameter 0 at com.google.gerrit.httpd.gitweb.GitwebServlet.(GitwebServlet.java:111) at com.google.gerrit.httpd.gitweb.GitwebServlet.class(GitwebServlet.java:85) while locating com.google.gerrit.httpd.gitweb.GitwebServlet Change-Id: I6aeecd2d6230711eb45a85abbd0000f663f95d74 --- .../com/google/gerrit/server/config/GitwebCgiConfig.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/GitwebCgiConfig.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/GitwebCgiConfig.java index b7afa37c40..4a58f73996 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/config/GitwebCgiConfig.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/GitwebCgiConfig.java @@ -77,6 +77,12 @@ public class GitwebCgiConfig { resourcePaths = new String[] {absPath + "/static", absPath}; } + } else if (cfg.getString("gitweb", null, "url") != null) { + // Use an externally managed gitweb instance, and not an internal one. + // + cgi = null; + resourcePaths = new String[] {}; + } else if (isRegularFile(pkgCgi) && isExecutable(pkgCgi)) { // Use the OS packaged CGI. //