On 01/03/2010 08:07 AM, Jakub Narebski wrote: > From: John 'Warthog9' Hawley <warthog9@xxxxxxxxxx> > > This adds a "git" link for each project in the project list page, > should a common $gitlinkurl_base be defined and not empty. The full > URL of each link is composed of $gitlinkurl_base and project name. > It is intended for git:// links, and in fact GITWEB_BASE_URL build > variable is used as its default value only if it starts with git:// > > This does make the assumption that the git repositories share a common > path. Nothing to date is known to actually make use of introduced > link. > > Created "git" link follows rel=vcs-* microformat specification: > http://kitenet.net/~joey/rfc/rel-vcs/ > > Signed-off-by: John 'Warthog9' Hawley <warthog9@xxxxxxxxxx> > Signed-off-by: Jakub Narebski <jnareb@xxxxxxxxx> > --- > I think it might be good idea... but for the fact "Nothing to date is > known to actually make use of introduced link". What's its intended > use? > > Differences to original version by John 'Warthog9' Hawley (J.H.): > * It doesn't cause syntax error ;-) > * Escaping of attribute value is left to CGI.pm (avoid double escaping) > * $gitlinkurl got renamed to $gitlinkurl_base, now includes git:// > prefix, and defaults to GITWEB_BASE_URL if it begins with git:// > * Added description of $gitlinkurl_base to gitweb/README > * Uses rel=vcs-* microformat by Joey Hess > > I assume that nobody sane would define $gitlinkurl_base to "0"; > the code assumes that is enough to check that $gitlinkurl_base > is true-ish. > > gitweb/README | 4 ++++ > gitweb/gitweb.perl | 8 ++++++++ > 2 files changed, 12 insertions(+), 0 deletions(-) > > diff --git a/gitweb/README b/gitweb/README > index 608b0f8..36fb059 100644 > --- a/gitweb/README > +++ b/gitweb/README > @@ -71,6 +71,7 @@ You can specify the following configuration variables when building GIT: > * GITWEB_BASE_URL > Git base URLs used for URL to where fetch project from, i.e. full > URL is "$git_base_url/$project". Shown on projects summary page. > + If it begins with "git://" it is also used for $gitlinkurl_base, see below. > Repository URL for project can be also configured per repository; this > takes precedence over URLs composed from base URL and a project name. > Note that you can setup multiple base URLs (for example one for > @@ -204,6 +205,9 @@ not include variables usually directly set during build): > access, and one for http:// "dumb" protocol access). Note that per > repository configuration in 'cloneurl' file, or as values of gitweb.url > project config. > + * $gitlinkurl_base > + Git base URL used (if it is defined and not empty) for "git" link in > + projects list, for each project. Full URL is "$gitlinkurl_base/$project". > * $default_blob_plain_mimetype > Default mimetype for blob_plain (raw) view, if mimetype checking > doesn't result in some other type; by default 'text/plain'. > diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl > index b9bd865..efb6471 100755 > --- a/gitweb/gitweb.perl > +++ b/gitweb/gitweb.perl > @@ -224,6 +224,10 @@ our %avatar_size = ( > # If it is true, exit if gitweb version and git binary version don't match > our $git_versions_must_match = 0; > > +# If this variable is set and not empty, add an extra link called "git" > +# for each project in project list. Full URL is "$gitlinkurl_base/$project". > +our $gitlinkurl_base = ("++GITWEB_BASE_URL++" =~ m!^(git://.*)$!) ? $1 : ''; > + > # Used to set the maximum load that we will still respond to gitweb queries. > # If server load exceed this value then return "503 server busy" error. > # If gitweb cannot determined server load, it is taken to be 0. > @@ -4472,6 +4476,10 @@ sub git_project_list_body { > $cgi->a({-href => href(project=>$pr->{'path'}, action=>"log")}, "log") . " | " . > $cgi->a({-href => href(project=>$pr->{'path'}, action=>"tree")}, "tree") . > ($pr->{'forks'} ? " | " . $cgi->a({-href => href(project=>$pr->{'path'}, action=>"forks")}, "forks") : '') . > + ($gitlinkurl_base ? > + " | " . $cgi->a({-href=>"$gitlinkurl_base/$pr->{'path'}", > + -rel=>"vcs-git"}, "git") > + : '') . > "</td>\n" . > "</tr>\n"; > } Ok I've been debating this as I've been going through the patches, I've got small modifications on top of your patches Jakub for 1 and 2, haven't pushed them yet but they are relatively trivial. The changes to the first patch sets things up for additional load checkers to be added later on. The second changes the error message to use/abuse die_error() vs. doing it's own thing (though I still think this should be on by default). Patch 4 I don't have anything to add or change at this point. This patch has me pondering and I'm unsure of what I'd suggest, mainly because of the addition of the smart http support meaning that git:// and http:// are legitimate and useful links for supporting full git transactions. I may withdraw the patch entirely since the link on kernel.org has been around for years, and I'm unsure if anything actually uses it (though I can see it being useful still). If it stays I think there's got to be a way to specifically mark a url as being the one to link to vs. defaulting to git:// (or allow for a marking to override the git://) and I need to ponder that. I have given some initial thought to converting the $output options I'm currently using to a print <FH> that Jakub is suggesting & exploring. I think all told it's going to be a similarly sized patch, since all output still has to get adjusted (including the things that directly output but don't print). I'm unsure if there's a real advantage to either way, other than design preference. My patch (forcing the output to get passed around) moves towards more of a modal style design separating data & layout vs. it's combined nature now, well it's a step in that direction anyway. - John 'Warthog9' Hawley -- 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