git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] gitweb: optionally read config from GITWEB_CONFIG

From
Jeff King <peff@peff.net>
Date
Aug 2, 2006, 19:23 UTC
Message-ID
<20060802192333.GA30861@coredump.intra.peff.net>

Configuration will first be taken from variables inside the gitweb.cgi script, which in turn come from the Makefile. Afterwards, the contents of GITWEB_CONFIG are read, overriding the builtin defaults.

This should eliminate the need for editing the gitweb script at all. Users should edit the Makefile and/or add a config file.

Signed-off-by: Jeff King <peff@peff.net>
---
This is on top of next.

This patch seemed to get a favorable response, so I cleaned it up and actually tested it. The main changes are reordering a few of the setup statements so that changes introduced in the config file are respected as suggested by Matthias (and a few by me). It would be good if other gitweb people could check it over and/or try it with their config to make sure I didn't miss anything.

 Makefile           |    2 ++
 gitweb/gitweb.perl |   19 ++++++++++++-------
 2 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/Makefile b/Makefile
index 2562a2c..170d082 100644
--- a/Makefile
+++ b/Makefile
@@ -127,6 +127,7 @@ GIT_PYTHON_DIR = $(prefix)/share/git-cor
 # DESTDIR=
 
 # default configuration for gitweb
+GITWEB_CONFIG = gitweb_config.perl
 GITWEB_SITENAME =
 GITWEB_PROJECTROOT = /pub/git
 GITWEB_LIST =
@@ -629,6 +630,7 @@ gitweb/gitweb.cgi: gitweb/gitweb.perl
 	sed -e '1s|#!.*perl|#!$(PERL_PATH_SQ)|' \
 	    -e 's|@@GIT_VERSION@@|$(GIT_VERSION)|g' \
 	    -e 's|@@GIT_BINDIR@@|$(bindir)|g' \
+	    -e 's|@@GITWEB_CONFIG@@|$(GITWEB_CONFIG)|g' \
 	    -e 's|@@GITWEB_SITENAME@@|$(GITWEB_SITENAME)|g' \
 	    -e 's|@@GITWEB_PROJECTROOT@@|$(GITWEB_PROJECTROOT)|g' \
 	    -e 's|@@GITWEB_LIST@@|$(GITWEB_LIST)|g' \
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 1db1414..d5b2de8 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -31,14 +31,8 @@ # absolute fs-path which will be prepend
 #our $projectroot = "/pub/scm";
 our $projectroot = "@@GITWEB_PROJECTROOT@@";
 
-# version of the core git binary
-our $git_version = qx($GIT --version) =~ m/git version (.*)$/ ? $1 : "unknown";
-
 # location for temporary files needed for diffs
 our $git_temp = "/tmp/gitweb";
-if (! -d $git_temp) {
-	mkdir($git_temp, 0700) || die_error("Couldn't mkdir $git_temp");
-}
 
 # target of the home link on top of all pages
 our $home_link = $my_uri;
@@ -56,7 +50,7 @@ # URI of GIT logo
 our $logo = "@@GITWEB_LOGO@@";
 
 # source of projects list
-our $projects_list = "@@GITWEB_LIST@@" || "$projectroot";
+our $projects_list = "@@GITWEB_LIST@@";
 
 # default blob_plain mimetype and default charset for text/plain blob
 our $default_blob_plain_mimetype = 'text/plain';
@@ -66,6 +60,17 @@ # file to use for guessing MIME types be
 # (relative to the current git repository)
 our $mimetypes_file = undef;
 
+our $GITWEB_CONFIG = "@@GITWEB_CONFIG@@";
+require $GITWEB_CONFIG if -e $GITWEB_CONFIG;
+
+# version of the core git binary
+our $git_version = qx($GIT --version) =~ m/git version (.*)$/ ? $1 : "unknown";
+
+$projects_list ||= $projectroot;
+if (! -d $git_temp) {
+	mkdir($git_temp, 0700) || die_error("Couldn't mkdir $git_temp");
+}
+
 # input validation and dispatch
 our $action = $cgi->param('a');
 if (defined $action) {
-- 
1.4.2.rc2.g59706-dirty
Next: Matthias Lederhofer
Message 1 of 16 in “gitweb: optionally read config from GITWEB_CONFIG”
  1. gitweb: optionally read config from GITWEB_CONFIGJeff King, Aug 2, 2006
  2. gitweb: use single quotes for values replaced by the MakefileMatthias Lederhofer, Aug 2, 2006
  3. Junio C HamanoAug 2, 2006
  4. Matthias LederhoferAug 2, 2006
  5. Jeff KingAug 2, 2006
  6. Jakub NarebskiAug 2, 2006
  7. Matthias LederhoferAug 2, 2006
  8. Jakub NarebskiAug 2, 2006
  9. Jeff KingAug 2, 2006
  10. Junio C HamanoAug 2, 2006
  11. gitweb: require $ENV{'GITWEB_CONFIG'}Matthias Lederhofer, Aug 2, 2006
  12. Jeff KingAug 2, 2006
  13. Junio C HamanoAug 2, 2006
  14. Jeff KingAug 2, 2006
  15. Luben TuikovAug 2, 2006
  16. Jeff KingAug 2, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.