-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello again, On 17/04/12 14:30, Jakub Narebski wrote: > On Mon, 16 Apr 2012, José María Escartín Esteban wrote: >> On 14/04/12 19:19, Jakub Narebski wrote: >>> On Thu, 5 Apr 2012, Jakub Narebski wrote: >>>> On Thu, 5 Apr 2012, José María Escartín Esteban wrote: > >>>> There might be problem if you configured your web server to serve >>>> gitweb using it as a handler for subdirectory, so the script name >>>> does not need to appear in URL, e.g. >>>> >>>> http://localhost/cgi-bin/gitweb >>>> >>>> which would require the following base element >>>> >>>> <base href="http://localhost/cgi-bin/gitweb/" /> >>> >>> [...] >>> >> >> Yes, that was precisely the problem. > > Note that you won't have problem with `http://localhost` as base url > (without any directory), or in more realistic case using virtual host > rather than virtual directory. The problem is that without '/' the path > part of $base_url is stripped of last element. > > Just for completeness. > Right. > [...] >> This addition to the man page would of course have been useful, since it >> took me a while to detect that the problem was a missing slash in the >> base url. However, it would not have solved completely my problem, and >> for me the best has been to add the line of code you proposed in the >> previous email. > > So how about the proposed updated addition at the end of this email? > I think now it's more clear and explicit, and more useful for users not familiar with Perl, so better. Thank you! >> I am running a Debian testing (wheezy) server, so the distro gitweb files >> are: >> >> /etc/apache2/conf.d/gitweb /etc/gitweb.conf /usr/share/gitweb/gitweb.cgi >> /usr/share/gitweb/index.cgi -> /usr/share/gitweb/gitweb.cgi >> /usr/share/gitweb/static/* >> >> I am using two sets of git repositories, and each of the sets works >> through a particular gitolite user: >> >> user home ---------------------- git /srv/project mygit >> /srv/mygit >> >> I wanted that different groups of people were able to browse the >> 'project' repos (in fact it is a mirror from the main project server) >> from http://server.example.com/project/ , and the 'mygit' repos from >> http://server.example.com/mygit/ . And I wanted to keep urls as short and >> easy as possible, and to avoid proliferation of configs as much as >> possible. > > I think that is this "two sets" that created configuration with a problem. > >> The setup I came up with was to link >> >> /srv/www/project -> /usr/share/gitweb /srv/www/mygit -> >> /usr/share/gitweb >> >> and to use the following configuration files: >> >> ######### /etc/apache2/conf.d/gitweb ################## <Directory >> /srv/www/project> SetEnv GITWEB_PROJECTROOT /srv/git/ SetEnv >> GITWEB_CONFIG /etc/gitweb.conf > [...] >> ####################################################### >> >> ######### /etc/gitweb.conf ############################ $projectroot = >> $ENV{'GITWEB_PROJECTROOT'}."repositories"; $git_temp = "/tmp"; >> $projects_list = $ENV{'GITWEB_PROJECTROOT'}."projects.list"; @diff_opts = >> (); $feature{'pathinfo'}{'default'} = [1]; >> $feature{'highlight'}{'default'} = [1]; $projects_list_description_width >> = 50; ####################################################### > > A question: why not have > > SetEnv GITWEB_PROJECTROOT /srv/git > > and use > > $projectroot = "$ENV{'GITWEB_PROJECTROOT'}/repositories"; $projects_list = > "$ENV{'GITWEB_PROJECTROOT'}/projects.list"; > Aren't both configurations equivalent? (just moving a slash to one side or the other of the definitions) > > BTW. what is this $git_temp? Is it modified gitweb, because core one > doesn't need to use temporary directory for anything nowadays? > That option is enabled by default in all the Debian shipped /etc/gitweb.conf. It was like this the first time I installed the package from the Debian repos, and it is still like this in the last version of the package in the repos, gitweb_1.7.10-1_all.deb. I didn't know it was any sort of modified gitweb, the script is in git_1.7.10-1_all.deb (yes, they make a separate package for gitweb but the script is in the git one), and the only differences to the v1.7.10 upstream source seem to be installation variables/flags. > A tip: you can use GITWEB_CONFIG_COMMON for the common part of > configuration and separate GITWEB_CONFIG for per-instance configuration. > Though I am not sure if it would help in your case. It requires modern > gitweb. though. > I will check that, thanks again. Greetings, E. >> Probably there are better ways to implement this, but at least this seems >> to work, once I have added >> >> $base_url .= '/' unless ($base_url =~ m!/$!); >> >> to /etc/gitweb.conf . > > -- >8 ---------- >8 -- Subject: [PATCH] gitweb.conf(5): When to set > $base_url > > Add a paragraph to description of $base_url variable in gitweb.conf(5) > manpage explaining when and why one might need to set it, and how. > > Based-on-report-by: José María Escartín Esteban <ripero84@xxxxxxxxx> > Signed-off-by: Jakub Narębski <jnareb@xxxxxxxxx> --- > Documentation/gitweb.conf.txt | 24 ++++++++++++++++++++++++ > Documentation/gitweb.txt | 4 ++++ 2 files changed, 28 > insertions(+), 0 deletions(-) > > diff --git a/Documentation/gitweb.conf.txt b/Documentation/gitweb.conf.txt > index 7aba497..4716a0f 100644 --- a/Documentation/gitweb.conf.txt +++ > b/Documentation/gitweb.conf.txt @@ -559,6 +559,30 @@ $base_url:: PATH_INFO. > 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 > override it anyway. ++ +You would need to set this variable when using > path_info-based URLs +while using gitweb as a directory handler (which > means that full path +to browse repositories looks like > `http://git.example.com/gitweb` +rather than looking like > `http://git.example.com/gitweb/gitweb.cgi`). +You can find yourself in this > situation (gitweb as directory handler) +when configuring gitweb to use > FastCGI interface as shown in +"Webserver configuration" section on > linkgit:gitweb[1] manpage. ++ +If static files are served from 'static' > subdirectory of directory +the gitweb script is handler for, with default > URLs of static files +(e.g. `$logo` is `static/git-logo.png`), then you > would need to ensure +that `$base_url` ends with slash to denote that it is > directory, to +work correctly: ++ > +---------------------------------------------------------------------- > +$base_url .= '/' unless ($base_url =~ m!/$!); > +---------------------------------------------------------------------- ++ > +For example if gitweb URL is `http://git.example.com/gitweb`, and +static > files are available in `http://git.example.com/gitweb/static/` +then > `$base_url` must end up to be `http://git.example.com/gitweb/` +(with > trailing slash) for e.g. `static/git-logo.png` relative link +to refer to > `http://git.example.com/gitweb/static/git-logo.png`. > > > CONFIGURING GITWEB FEATURES diff --git a/Documentation/gitweb.txt > b/Documentation/gitweb.txt index b394ecc..c3db66a 100644 --- > a/Documentation/gitweb.txt +++ b/Documentation/gitweb.txt @@ -473,6 +473,10 > @@ With that configuration the full path to browse repositories would be: > > http://server/gitweb > > +Note that for this configuration `$base_url` must be set as described +in > linkgit:gitweb.conf[5] for gitweb to correctly serve static files +with > path_info links. + As PSGI using plackup ~~~~~~~~~~~~~~~~~~~~~ Gitweb can > run as PSGI app (via emulation with *CGI::Emulate::PSGI*(3pm)). -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iEYEARECAAYFAk+WT9YACgkQY+7weQMem3xchQCcCxsIOs7GOcluIb++KKweK76Y TRcAnjauwtudLCc2qTwJd5D8FxwI34mC =MbaI -----END PGP SIGNATURE----- -- 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