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

Re: [PATCH] gitweb: optionally read config from GITWEB_CONFIG

From
LTLuben Tuikov <ltuikov@yahoo.com>
Date
Aug 2, 2006, 20:51 UTC
Message-ID
<20060802205120.84032.qmail@web31808.mail.mud.yahoo.com>
In-Reply-To
<20060802192333.GA30861@coredump.intra.peff.net>
--- Jeff King <peff@peff.net> wrote:
Show 6 quoted lines
> 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.

I don't think users should even edit the Makefile. Makefiles are normally edited when the _build_ environment differs, not when the deployment environment differs.

For example, some of us use the same gitweb.cgi/perl/pl (or whatever the next completely unnecessary renaming would be) for deployment on several "sites" and repositories.

I cannot imagine anyone who actually _uses_ and maintains gitweb.cgi/perl/pl to edit the Makefile for their deployment, thus having to have a forked off branch(es) for each of their deployments (which the only diff editing the Makefile).

    Luben
Show 89 quoted lines
> 
> 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
> -
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
Previous: Jeff KingNext: Jeff King
Message 15 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.