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

From: Jakub Narebski <[email-masked]>
Date: Fri, 6 Feb 2009 11:49:14 +0100

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: <[email-masked]>"),
by using zero-width negative look-ahead assertion to _not_
match '@' after.

Suggested-by: Johannes Schindelin <[email-masked]>
Suggested-by: Rafael Garcia-Suarez <[email-masked]>
Signed-off-by: Jakub Narebski <[email-masked]>
---
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