Jakub Narebski <jnareb@xxxxxxxxx> writes: > Since 930cf7dd7cc6b87d173f182230763e1f1913d319 'blob' action knows the > file type; if the file type is not "text/*" or one of common network > image formats/mimetypes (gif, png, jpeg) then the action "blob" > defaulted to "blob_plain". This caused the problem if mimetypes file > was not well suited for web, for example returning "application/x-sh" > for "*.sh" shell scripts, instead of "text/plain" (or other "text/*"). > > Now "blob" action defaults to "blob_plain" ('raw' view) only if file > is of type which is neither "text/*" nor "image/{gif,png,jpeg}" > AND it is binary file. Otherwise it assumes that it can be displayed > either in <img> tag ("image/*" mimetype), or can be displayed line by > line (otherwise). Ok, the intent sounds sane. Let's see if the implementation is also sane. > diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl > index eac7e16..b833327 100755 > --- a/gitweb/gitweb.perl > +++ b/gitweb/gitweb.perl > @@ -4302,7 +4302,7 @@ sub git_blob { > open my $fd, "-|", git_cmd(), "cat-file", "blob", $hash > or die_error(undef, "Couldn't cat $file_name, $hash"); > my $mimetype = blob_mimetype($fd, $file_name); > - if ($mimetype !~ m!^(?:text/|image/(?:gif|png|jpeg)$)!) { > + if ($mimetype !~ m!^(?:text/|image/(?:gif|png|jpeg)$)! && -B $fd) { > close $fd; > return git_blob_plain($mimetype); > } "If not text or image and binary go blob_plain" -- Ok. > @@ -4343,16 +4343,7 @@ sub git_blob { > } > git_print_page_path($file_name, "blob", $hash_base); > print "<div class=\"page_body\">\n"; > + if ($mimetype =~ m!^image/!) { > print qq!<img type="$mimetype"!; > if ($file_name) { > print qq! alt="$file_name" title="$file_name"!; > @@ -4361,7 +4352,16 @@ sub git_blob { > href(action=>"blob_plain", hash=>$hash, > hash_base=>$hash_base, file_name=>$file_name) . > qq!" />\n!; > + } else { > + my $nr; > + while (my $line = <$fd>) { > + chomp $line; > + $nr++; > + $line = untabify($line); > + printf "<div class=\"pre\"><a id=\"l%i\" href=\"#l%i\" class=\"linenr\">%4i</a> %s</div>\n", > + $nr, $nr, $nr, esc_html($line, -nbsp=>1); > + } > + } els "If image, do image, but otherwise show line-by-line" -- Ok. There is a "Huh?" on the last line, though. > P.S. BTW is there some plumbing for scripts to help with > gitattributes, for example showing all gitattributes (or status of > selected attributes) for given path? $ git grep gitattributes Documentation | grep -i display - 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