Merge branch 'jn/gitweb-per-request-config'
* jn/gitweb-per-request-config: gitweb: document $per_request_config better gitweb: selectable configurations that change with each request
This commit is contained in:
commit
e6234122b8
@ -177,13 +177,15 @@ not include variables usually directly set during build):
|
|||||||
* $my_url, $my_uri
|
* $my_url, $my_uri
|
||||||
Full URL and absolute URL of gitweb script;
|
Full URL and absolute URL of gitweb script;
|
||||||
in earlier versions of gitweb you might have need to set those
|
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
|
||||||
Base URL for relative URLs in pages generated by gitweb,
|
Base URL for relative URLs in pages generated by gitweb,
|
||||||
(e.g. $logo, $favicon, @stylesheets if they are relative URLs),
|
(e.g. $logo, $favicon, @stylesheets if they are relative URLs),
|
||||||
needed and used only for URLs with nonempty PATH_INFO via
|
needed and used only for URLs with nonempty PATH_INFO via
|
||||||
<base href="$base_url">. Usually gitweb sets its value correctly,
|
<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 "/".
|
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
|
* $home_link
|
||||||
Target of the home link on top of all pages (the first part of view
|
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).
|
"breadcrumbs"). By default set to absolute URI of a page ($my_uri).
|
||||||
@ -246,6 +248,16 @@ not include variables usually directly set during build):
|
|||||||
http://www.andre-simon.de due to assumptions about parameters and output).
|
http://www.andre-simon.de due to assumptions about parameters and output).
|
||||||
Useful if highlight is not installed on your webserver's PATH.
|
Useful if highlight is not installed on your webserver's PATH.
|
||||||
[Default: highlight]
|
[Default: highlight]
|
||||||
|
* $per_request_config
|
||||||
|
If set to code reference, it would be run once per each request. You can
|
||||||
|
set parts of configuration that change per session, e.g. by setting it to
|
||||||
|
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. 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
|
Projects list file format
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -611,6 +611,14 @@ sub filter_snapshot_fmts {
|
|||||||
!$known_snapshot_formats{$_}{'disabled'}} @fmts;
|
!$known_snapshot_formats{$_}{'disabled'}} @fmts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# If it is set to code reference, it is code that it is to be run once per
|
||||||
|
# request, allowing updating configurations that change with each request,
|
||||||
|
# while running other code in config file only once.
|
||||||
|
#
|
||||||
|
# Otherwise, if it is false then gitweb would process config file only once;
|
||||||
|
# if it is true then gitweb config would be run for each request.
|
||||||
|
our $per_request_config = 1;
|
||||||
|
|
||||||
our ($GITWEB_CONFIG, $GITWEB_CONFIG_SYSTEM);
|
our ($GITWEB_CONFIG, $GITWEB_CONFIG_SYSTEM);
|
||||||
sub evaluate_gitweb_config {
|
sub evaluate_gitweb_config {
|
||||||
our $GITWEB_CONFIG = $ENV{'GITWEB_CONFIG'} || "++GITWEB_CONFIG++";
|
our $GITWEB_CONFIG = $ENV{'GITWEB_CONFIG'} || "++GITWEB_CONFIG++";
|
||||||
@ -1081,12 +1089,22 @@ sub reset_timer {
|
|||||||
our $number_of_git_cmds = 0;
|
our $number_of_git_cmds = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
our $first_request = 1;
|
||||||
sub run_request {
|
sub run_request {
|
||||||
reset_timer();
|
reset_timer();
|
||||||
|
|
||||||
evaluate_uri();
|
evaluate_uri();
|
||||||
evaluate_gitweb_config();
|
if ($first_request) {
|
||||||
evaluate_git_version();
|
evaluate_gitweb_config();
|
||||||
|
evaluate_git_version();
|
||||||
|
}
|
||||||
|
if ($per_request_config) {
|
||||||
|
if (ref($per_request_config) eq 'CODE') {
|
||||||
|
$per_request_config->();
|
||||||
|
} elsif (!$first_request) {
|
||||||
|
evaluate_gitweb_config();
|
||||||
|
}
|
||||||
|
}
|
||||||
check_loadavg();
|
check_loadavg();
|
||||||
|
|
||||||
# $projectroot and $projects_list might be set in gitweb config file
|
# $projectroot and $projects_list might be set in gitweb config file
|
||||||
@ -1140,6 +1158,7 @@ sub evaluate_argv {
|
|||||||
sub run {
|
sub run {
|
||||||
evaluate_argv();
|
evaluate_argv();
|
||||||
|
|
||||||
|
$first_request = 1;
|
||||||
$pre_listen_hook->()
|
$pre_listen_hook->()
|
||||||
if $pre_listen_hook;
|
if $pre_listen_hook;
|
||||||
|
|
||||||
@ -1152,6 +1171,7 @@ sub run {
|
|||||||
|
|
||||||
$post_dispatch_hook->()
|
$post_dispatch_hook->()
|
||||||
if $post_dispatch_hook;
|
if $post_dispatch_hook;
|
||||||
|
$first_request = 0;
|
||||||
|
|
||||||
last REQUEST if ($is_last_request->());
|
last REQUEST if ($is_last_request->());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user