diff options
author | Gerrit Pape <pape@smarden.org> | 2008-03-26 18:11:19 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-03-27 13:55:10 -0700 |
commit | 17a8b25005bb09b03bee7ddac5412c7d29675eef (patch) | |
tree | bba6a061f9066f80d04502261bb8ee95e478ddd3 | |
parent | 1768905b51601d5d080168059acd24d13b888a2d (diff) | |
download | git-17a8b25005bb09b03bee7ddac5412c7d29675eef.tar.gz |
gitweb: fallback to system-wide config file if default config does not exist
From a distribution point of view, configuration files for applications
should reside in /etc/. On the other hand it's convenient for multiple
instances of gitweb (e.g. virtual web servers on a single machine) to have
a per-instance configuration file, just as gitweb currently supports
through the file gitweb_config.perl next to the cgi.
To support both at runtime, this commit introduces GITWEB_CONFIG_SYSTEM as
a system-wide configuration file which will be used as a fallback if the
config file sprecified throug GITWEB_CONFIG does not exist.
See also
http://bugs.debian.org/450592
Signed-off-by: Gerrit Pape <pape@smarden.org>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | gitweb/INSTALL | 6 | ||||
-rw-r--r-- | gitweb/README | 9 | ||||
-rwxr-xr-x | gitweb/gitweb.perl | 7 |
4 files changed, 20 insertions, 3 deletions
@@ -189,6 +189,7 @@ ETC_GITCONFIG = $(sysconfdir)/gitconfig # default configuration for gitweb GITWEB_CONFIG = gitweb_config.perl +GITWEB_CONFIG_SYSTEM = /etc/gitweb.conf GITWEB_HOME_LINK_STR = projects GITWEB_SITENAME = GITWEB_PROJECTROOT = /pub/git diff --git a/gitweb/INSTALL b/gitweb/INSTALL index 9cd5b0a2b1..743f2d4442 100644 --- a/gitweb/INSTALL +++ b/gitweb/INSTALL @@ -95,7 +95,11 @@ for gitweb (in gitweb/README). by default it is file named gitweb_config.perl in the same place as gitweb.cgi script. You can control default place for config file using GITWEB_CONFIG build configuration variable, and you can set it - using GITWEB_CONFIG environmental variable. + using GITWEB_CONFIG environmental variable. If this file does not + exist, gitweb looks for a system-wide configuration file, normally + /etc/gitweb.conf. You can change the default using the + GITWEB_CONFIG_SYSTEM build configuration variable, and override it + through GITWEB_CONFIG_SYSTEM environmental variable. - Gitweb config file is [fragment] of perl code. You can set variables using "our $variable = value"; text from "#" character until the end diff --git a/gitweb/README b/gitweb/README index 2163071047..8dfe335f73 100644 --- a/gitweb/README +++ b/gitweb/README @@ -100,13 +100,20 @@ You can specify the following configuration variables when building GIT: is set when gitweb.cgi is executed, then the file specified in the environment variable will be loaded instead of the file specified when gitweb.cgi was created. [Default: gitweb_config.perl] + * GITWEB_CONFIG_SYSTEM + This Perl file will be loaded using 'do' as a fallback if GITWEB_CONFIG + does not exist. If the environment variable GITWEB_CONFIG_SYSTEM is set + when gitweb.cgi is executed, then the file specified in the environment + variable will be loaded instead of the file specified when gitweb.cgi was + created. [Default: /etc/gitweb.conf] Runtime gitweb configuration ---------------------------- You can adjust gitweb behaviour using the file specified in `GITWEB_CONFIG` -(defaults to 'gitweb_config.perl' in the same directory as the CGI). +(defaults to 'gitweb_config.perl' in the same directory as the CGI), and +as a fallback `GITWEB_CONFIG_SYSTEM` (defaults to /etc/gitweb.conf). The most notable thing that is not configurable at compile time are the optional features, stored in the '%features' variable. diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index ec73cb1256..f73cfca539 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -369,7 +369,12 @@ sub filter_snapshot_fmts { } our $GITWEB_CONFIG = $ENV{'GITWEB_CONFIG'} || "++GITWEB_CONFIG++"; -do $GITWEB_CONFIG if -e $GITWEB_CONFIG; +if (-e $GITWEB_CONFIG) { + do $GITWEB_CONFIG; +} else { + our $GITWEB_CONFIG_SYSTEM = $ENV{'GITWEB_CONFIG_SYSTEM'} || "++GITWEB_CONFIG_SYSTEM++"; + do $GITWEB_CONFIG_SYSTEM if -e $GITWEB_CONFIG_SYSTEM; +} # version of the core git binary our $git_version = qx($GIT --version) =~ m/git version (.*)$/ ? $1 : "unknown"; |