Subject: Re: Gitweb: Show git clone url on projects list

From: "J.H." <[email-masked]>
Date: Mon, 11 Oct 2010 14:27:07 -0700

Sorry for the late response, was traveling on the 7th.  Comments inline.

> There were multiple attempts to add such link to core gitweb (i.e. the
> one present in git 1.7.3), but were not merged in due to runing
> aground the following problems:
> 
> 1. There might be more than one link for one git repository.  One can
>    provide git://, http:// and ssh:// URLs.  Which one to chose?
> 
>    This issue might be solved by either using first one on the list,
>    or filtering and showing link(s) to anonymous unauthenticated ones,
>    i.e. _git_ link (if git:// URL exists) and perhaps _http_ link (if
>    http:// URL exists).

If you are running a uniform enough site, http://git.kernel.org,
http://git.fedorahosted.org/git/, etc it's easy enough to deal with.
This only becomes an issue if/when you allow more generic trees to
exist, and aren't expecting a uniform git link.

> 2. More important issue is that besides @git_base_url_list the URL or
>    URLs for a repository can come from various other places: from
>    'cloneurl' text file and from `gitweb.url' configuration variable.
>    It it was taken into account (even to check that such configuration
>    does not exist) it would badly affect performance of generating
>    projects list page.
> 
>    The git.kernel.org gitweb doesn't have this problem because it uses
>    @git_base_url_list (I think unconditionally); also it supports
>    output caching, so eventual performance hit is migitated.

We actually don't, at least currently, use @git_base_url_list.  Right
now there's a configuration variable to set a uniform server / base url,
and then use project path to append to that.  git:// in this case is
hard coded, though with http being smart now there is no reason why that
should be that way (no one has asked for the change &/or submitted a
patch to me to alter that behavior).

The caching helps, though since I'm not actually using @git_base_url the
caching isn't of significant impact, since I only need to know the path
vs. poking in the repo directly.  (that said caching still buys me a lot
of performance overall).

Assuming you are using my caching version of gitweb setting $gitlinkurl
in your config file to be the base (before the path) of your link, it
should work.  Should get that even if caching is disabled, though YMMV I
don't do a lot of testing with the cache turned off, and I haven't
written a test case for that yet.

- John 'Warthog9' Hawley