git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] More flexible URL patterns for gitweb

From
DTDamien Tournoud <damien@tournoud.net>
Date
Apr 11, 2010, 00:40 UTC
Message-ID
<1270946429-5366-1-git-send-email-damien@tournoud.net>

@git_base_url_list hardcodes URLs in the form "$git_base_url/$project", which makes impossible to generate proper URLs for SSH access scenarios.

This patch implements a more flexible replacement scheme, using a simple placeholder for the project path, and fixes the associated documentation.

Signed-off-by: Damien Tournoud <damien@tournoud.net>
---
 gitweb/README      |   13 ++++++-------
 gitweb/gitweb.perl |    2 +-
 2 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/gitweb/README b/gitweb/README
index ad6a04c..f16729c 100644
--- a/gitweb/README
+++ b/gitweb/README
@@ -197,13 +197,12 @@ not include variables usually directly set during build):
    full description is available as 'title' attribute (usually shown on
    mouseover).  By default set to 25, which might be too small if you
    use long project descriptions.
- * @git_base_url_list
-   List of git base URLs used for URL to where fetch project from, shown
-   in project summary page.  Full URL is "$git_base_url/$project".
-   You can setup multiple base URLs (for example one for  git:// protocol
-   access, and one for http:// "dumb" protocol access).  Note that per
-   repository configuration in 'cloneurl' file, or as values of gitweb.url
-   project config.
+ * @git_base_url_patterns
+   List of git base URLs patterns used to build the URLs displayed in the
+   project summary page. Examples include "git://git.example.com/%project",
+   "http://git.example.com/%project" and "git@git.example.com:%project".
+   Note that per repository configuration in a 'cloneurl' file, or configuration
+   values of gitweb.url in the project config take precedence over this.
  * $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 c356e95..0fc5957 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -4904,7 +4904,7 @@ sub git_summary {
 	# or make project git URL from git base URL and project name
 	my $url_tag = "URL";
 	my @url_list = git_get_project_url_list($project);
-	@url_list = map { "$_/$project" } @git_base_url_list unless @url_list;
+	@url_list = map { my $url = $_; $url =~ s/%project/$project/g; $url } @git_base_url_list unless @url_list;
 	foreach my $git_url (@url_list) {
 		next unless $git_url;
 		print "<tr class=\"metadata_url\"><td>$url_tag</td><td>$git_url</td></tr>\n";
-- 
1.6.5.7
Next: Jakub Narebski
Message 1 of 4 in “More flexible URL patterns for gitweb”
  1. More flexible URL patterns for gitwebDamien Tournoud, Apr 11, 2010
  2. Jakub NarebskiApr 11, 2010
  3. Damien TournoudApr 11, 2010
  4. Jakub NarebskiApr 11, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.