On Tue, 3 Feb 2009, Johannes Schindelin wrote: > On Tue, 3 Feb 2009, Toralf Förster wrote: >> At Monday 02 February 2009 23:54:20 Jakub Narebski wrote : >>> Toralf Förster <toralf.foerster@xxxxxx> writes: >>>> As seen here >>>> http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.27.y.git;a=commit;h=8ca2918f99b5861359de1805f27b08023c82abd2 the strings [<c043d0f3>] >>>> and firends shouldn't be recognized as git hashes, isn't it ? >>> >>> Gitweb, not webgit. And gitweb considers ([0-9a-fA-F]{8,40}) i.e. >>> from 8 to 40 hexadecimal characters to be (shortened) SHA-1. It >>> simply cannot afford checking if such object exists when displaying >>> commit message (for example in 'log' view). >> >> Ah - ok, what's about expecting spaces around such SHA-1 keys ? > > Won't fly: there was a recommendation at some point that you should refer > to commits in such a form: > > 2819075(Merge branch 'maint-1.6.0' into maint) > > However, gitweb being written in Perl, I think a lookbehind like (?<!0x), > i.e. that a 0x in front of the hexadecimal characters means it is no > SHA-1. > > Even better would be using word boundaries, I guess, but all that fails > when you have a hexdump in the commit message. Here you have it: anchoring SHA-1 regexp to word boundary. It would help eliminate _some_ of false matches. -- >8 -- Subject: [PATCH] gitweb: Better regexp for SHA-1 committag match Make SHA-1 regexp to be turned into hyperlink (the SHA-1 committag) to match word boundary at the beginning and the end. This way we reduce number of false matches, for example we now don't match 0x74a5cd01 which is hex decimal (for example memory address), but is not SHA-1. Suggested-by: Johannes Schindelin <Johannes.Schindelin@xxxxxx> Signed-off-by: Jakub Narebski <jnareb@xxxxxxxxx> --- gitweb/gitweb.perl | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index f27dbb6..bec1af6 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 -- 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