If named boolean option -path_info is passed to href() subroutine, use its value, instead of querying 'pathinfo' feature to check whether to generate path_info URL (if generating path_info link is possible at all). href(-replay=>1, -path_info=>0) is meant to be used to generate a key for caching gitweb output; alternate solution would be to use freeze() from Storable (core module) on %input_params hash (or its reference), e.g.: $key = freeze \%input_params; or other serialization technique. While at it document extra options/flags to href(). Signed-off-by: Jakub Narebski <jnareb@xxxxxxxxx> --- Actually after discussion with J.H. http://thread.gmane.org/gmane.comp.version-control.git/136913/focus=137061 I have changed my mind and now I think that good human-readable key for output caching is href(-replay=>1, -full=>1, -path_info=>0); The reason behind -path_info=>0 is that we want to have the same cache entry (the same cache file) regardless of whether we use path_info URL, or non-path_info URL. The reason behind -full_path=>1 (from what I understand from J.H. argument) is that you can have two gitweb deployments sharing the same cache root, but in which the same project name can point to different projects (different $projectsroot). gitweb/gitweb.perl | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 2f6a8e1..cd5073c 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -1004,6 +1004,10 @@ exit; ## ====================================================================== ## action links +# possible values of extra options +# -full => 0|1 - use absolute/full URL ($my_uri/$my_url as base) +# -replay => 1 - start from a current view (replay with modifications) +# -path_info => 0|1 - don't use/use path_info URL (if possible) sub href { my %params = @_; # default is to use -absolute url() i.e. $my_uri @@ -1020,7 +1024,8 @@ sub href { } my $use_pathinfo = gitweb_check_feature('pathinfo'); - if ($use_pathinfo and defined $params{'project'}) { + if (defined $params{'project'} && + (exists $params{-path_info} ? $params{-path_info} : $use_pathinfo)) { # try to put as many parameters as possible in PATH_INFO: # - project name # - action -- 1.6.6.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html