[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