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

Re: [PATCH/RFC] gitweb: Preserve $base_url if it was set

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Nov 29, 2010, 00:19 UTC
Message-ID
<20101129001908.GA26358@burratino>
In-Reply-To
<201011282305.39975.jnareb@gmail.com>
Jakub Narebski wrote:
> If $base_url was defined, then do not redefine it in evaluate_uri().
How about $my_uri and $my_url?

What happens if $ENV{PATH_INFO} or $cgi->url(...) changes between requests? This is partly my ignorance: perhaps FastCGI et al guarantee that such configuration changes can't happen within a single process?

Maintaining backward compatibility while avoiding this last concern seems hard. Since gitweb_config can contain something like

	$my_uri =~ s/foo/bar/;

one would want to populate $my_uri in advance. Meanwhile, if the default for $my_uri could change between requests, we would want to be able to detect the case when $my_uri is not set. But what if gitweb_config contains

	$my_uri = "something";

where "something" happens to match the default value for $my_uri in the first request?

It is tempting to change the documentation now and worry about code changes later. Something like this?

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
diff --git a/gitweb/README b/gitweb/README
index 6646fda..a9421e0 100644
--- a/gitweb/README
+++ b/gitweb/README
@@ -177,13 +177,15 @@ not include variables usually directly set during build):
  * $my_url, $my_uri
    Full URL and absolute URL of gitweb script;
    in earlier versions of gitweb you might have need to set those
-   variables, now there should be no need to do it.
+   variables, now there should be no need to do it.  See
+   $per_request_config if you need to set them still.
  * $base_url
    Base URL for relative URLs in pages generated by gitweb,
    (e.g. $logo, $favicon, @stylesheets if they are relative URLs),
    needed and used only for URLs with nonempty PATH_INFO via
    <base href="$base_url">.  Usually gitweb sets its value correctly,
    and there is no need to set this variable, e.g. to $my_uri or "/".
+   See $per_request_config if you need to set it anyway.
  * $home_link
    Target of the home link on top of all pages (the first part of view
    "breadcrumbs").  By default set to absolute URI of a page ($my_uri).
@@ -252,7 +254,10 @@ not include variables usually directly set during build):
      sub { $ENV{GL_USER} = $cgi->remote_user || "gitweb"; }
    Otherwise it is treated as boolean value: if true gitweb would process
    config file once per request, if false it would process config file only
-   once.  The default is true.
+   once.  Note: $my_url, $my_uri, and $base_url are overwritten with
+   their default values before every request, so if you want to change
+   them, be sure to set this variable to true or a code reference effecting
+   the desired changes.  The default is true.
 
 Projects list file format
 ~~~~~~~~~~~~~~~~~~~~~~~~~
Previous: Jakub NarebskiNext: Jakub Narebski
Message 13 of 15 in “Re: gitweb: false base href sent when integrated via reverse proxy and path_info is active”
  1. Jonathan NiederNov 28, 2010
  2. Giuseppe BilottaNov 28, 2010
  3. Jakub NarebskiNov 28, 2010
  4. Jonathan NiederNov 28, 2010
  5. Jakub NarebskiNov 30, 2010
  6. Junio C HamanoDec 1, 2010
  7. Daniel ReicheltNov 28, 2010
  8. Jakub NarebskiNov 28, 2010
  9. Daniel ReicheltNov 28, 2010
  10. Jonathan NiederNov 28, 2010
  11. Daniel ReicheltNov 28, 2010
  12. Jakub NarebskiNov 28, 2010
  13. Jonathan NiederNov 29, 2010
  14. Jakub NarebskiNov 29, 2010
  15. Junio C HamanoNov 29, 2010

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.