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

[PATCHv2] gitweb: Better regexp for SHA-1 committag match

From
Jakub Narebski <jnareb@gmail.com>
Date
Feb 6, 2009, 10:49 UTC
Message-ID
<200902061149.16210.jnareb@gmail.com>
In-Reply-To
<b77c1dce0902060231u358587d5o940eb322fde52a68@mail.gmail.com>

Make SHA-1 regexp to be turned into hyperlink (SHA-1 committag) to match word boundary at beginning and end. This way we limit false matches, for example 0x74a5cd01 which is hex decimal (for example memory address) but not SHA-1.

Also make sure that it is not Message-ID, which fragment just looks like SHA-1 (e.g. "Message-ID: <46A0F335@example.com>"), by using zero-width negative look-ahead assertion to _not_ match '@' after.

Suggested-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Suggested-by: Rafael Garcia-Suarez <rgarciasuarez@gmail.com>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
v2: Added protection against matching Message-IDs fragments.
 gitweb/gitweb.perl |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index f27dbb6..5dcc108 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -1364,7 +1364,7 @@ sub format_log_line_html {
 	my $line = shift;
 
 	$line = esc_html($line, -nbsp=>1);
-	if ($line =~ m/([0-9a-fA-F]{8,40})/) {
+	if ($line =~ m/\b([0-9a-fA-F]{8,40})\b(!?\@)/) {
 		my $hash_text = $1;
 		my $link =
 			$cgi->a({-href => href(action=>"object", hash=>$hash_text),
-- 
1.6.1
Previous: Rafael Garcia-SuarezNext: Johannes Schindelin
Message 9 of 22 in “webgit highlightes mem adresses as git versions”
  1. Toralf FörsterFeb 2, 2009
  2. Jakub NarebskiFeb 2, 2009
  3. Toralf FörsterFeb 3, 2009
  4. Johannes SchindelinFeb 3, 2009
  5. gitweb: Better regexp for SHA-1 committag matchJakub Narebski, Feb 6, 2009
  6. Rafael Garcia-SuarezFeb 6, 2009
  7. Jakub NarebskiFeb 6, 2009
  8. Rafael Garcia-SuarezFeb 6, 2009
  9. [PATCHv2] gitweb: Better regexp for SHA-1 committag matchJakub Narebski, Feb 6, 2009
  10. Johannes SchindelinFeb 6, 2009
  11. Jay SoffianFeb 6, 2009
  12. Jakub NarebskiFeb 6, 2009
  13. Junio C HamanoFeb 7, 2009
  14. Jakub NarebskiFeb 7, 2009
  15. Junio C HamanoFeb 7, 2009
  16. Jakub NarebskiFeb 7, 2009
  17. demerphqFeb 7, 2009
  18. Jakub NarebskiFeb 7, 2009
  19. Jakub NarebskiFeb 7, 2009
  20. demerphqFeb 7, 2009
  21. Jakub NarebskiFeb 7, 2009
  22. demerphqFeb 7, 2009

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.