From 5a45c0cafe6d73f6026bd0ea525da2f9765b112d Mon Sep 17 00:00:00 2001 From: Namhyung Kim Date: Wed, 4 Jul 2012 11:47:24 +0900 Subject: gitweb: Cleanup git_print_log() When we see a signed-off-by line (and its friends), we set $signoff to true, but then we process the next line after we are done without giving control to the rest of the loop. And when the line we saw is not a signed-off-by line, we reset $signoff to false before running the remainder of the loop. Hence, the check for $signoff that attempts to remove an extra empty line between two signed-off-by line was not doing anything useful. Rename $empty to a more explicit name $skip_blank_line to tell us to skip a blank line when we see one, set it after we see and emit a blank line (to avoid showing more than one empty lines in a raw) or after we handle a signed-off-by line (to avoid empty lines after such a line), to fix this bug, and get rid of the $signoff variable that is not useful. Signed-off-by: Namhyung Kim Signed-off-by: Junio C Hamano --- gitweb/gitweb.perl | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) (limited to 'gitweb') diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index a8b5fad26..e4a26cbe0 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -4460,30 +4460,23 @@ sub git_print_log { } # print log - my $signoff = 0; - my $empty = 0; + my $skip_blank_line = 0; foreach my $line (@$log) { if ($line =~ m/^ *(signed[ \-]off[ \-]by[ :]|acked[ \-]by[ :]|cc[ :])/i) { - $signoff = 1; - $empty = 0; if (! $opts{'-remove_signoff'}) { print "" . esc_html($line) . "
\n"; - next; - } else { - # remove signoff lines - next; + $skip_blank_line = 1; } - } else { - $signoff = 0; + next; } # print only one empty line # do not print empty line after signoff if ($line eq "") { - next if ($empty || $signoff); - $empty = 1; + next if ($skip_blank_line); + $skip_blank_line = 1; } else { - $empty = 0; + $skip_blank_line = 0; } print format_log_line_html($line) . "
\n"; @@ -4491,7 +4484,7 @@ sub git_print_log { if ($opts{'-final_empty_line'}) { # end with single empty line - print "
\n" unless $empty; + print "
\n" unless $skip_blank_line; } } -- cgit v1.2.1 From 3d1110aa72e4427e82e70563f734c74cd08fe98e Mon Sep 17 00:00:00 2001 From: Namhyung Kim Date: Wed, 4 Jul 2012 11:47:25 +0900 Subject: gitweb: Handle other types of tag in git_print_log There are many types of tags used in S-o-b area [1]. Update the regex to handle them properly. It requires the tag should be started by a capital letter and ended by '-by: ' or '-By: '. The only exception is 'Cc: '. [1] http://lwn.net/Articles/503829/ Signed-off-by: Namhyung Kim Signed-off-by: Junio C Hamano --- gitweb/gitweb.perl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gitweb') diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index e4a26cbe0..0f8b6e2f2 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -4462,7 +4462,7 @@ sub git_print_log { # print log my $skip_blank_line = 0; foreach my $line (@$log) { - if ($line =~ m/^ *(signed[ \-]off[ \-]by[ :]|acked[ \-]by[ :]|cc[ :])/i) { + if ($line =~ m/^\s*([A-Z][-A-Za-z]*-[Bb]y|C[Cc]): /) { if (! $opts{'-remove_signoff'}) { print "" . esc_html($line) . "
\n"; $skip_blank_line = 1; -- cgit v1.2.1 From 66c857e1aec14e5049dbef659369f140ef220ae4 Mon Sep 17 00:00:00 2001 From: Namhyung Kim Date: Wed, 4 Jul 2012 11:47:26 +0900 Subject: gitweb: Add support to Link: tag The tip tree is the one of major subsystem tree in the Linux kernel project. On the tip tree, the Link: (or similar Buglink:) tag is used for tracking the original discussion or context. Since it's ususally in the S-o-b area, it'd be better using same style with others. Also as it tends to contain a message-id sent from git send-email, a part of the line would set a wrong hyperlink like [1]. Fix it by not using format_log_line_html(). [1] git.kernel.org/?p=linux/kernel/git/tip/tip.git;a=commit;h=08942f6d5d992e9486b07653fd87ea8182a22fa0 Signed-off-by: Namhyung Kim Signed-off-by: Junio C Hamano --- gitweb/gitweb.perl | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'gitweb') diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 0f8b6e2f2..045ba0c5a 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -4470,6 +4470,16 @@ sub git_print_log { next; } + if ($line =~ m,\s*([a-z]*link): (https?://\S+),i) { + if (! $opts{'-remove_signoff'}) { + print "" . esc_html($1) . ": " . + "" . esc_html($2) . "" . + "
\n"; + $skip_blank_line = 1; + } + next; + } + # print only one empty line # do not print empty line after signoff if ($line eq "") { -- cgit v1.2.1