]> Lady’s Gitweb - Gitweb/blobdiff - gitweb.cgi
gitweb.cgi: Centralize printing of the page path
[Gitweb] / gitweb.cgi
index 8455d42b300a353400e08f8ad85994e1ec91727e60de2f2ef5d56f173ac4f2b5..f39cad1a3c08f4fe7bbfc1c19f2a84b6a538ade7a37b25c0f52649b46ac7332a 100755 (executable)
@@ -1199,6 +1199,20 @@ sub git_summary {
        git_footer_html();
 }
 
+sub git_print_page_path {
+       my $name = shift;
+       my $type = shift;
+
+       if (!defined $name) {
+               print "<div class=\"page_path\"><b>/</b></div>\n";
+       } elsif ($type =~ "blob") {
+               print "<div class=\"page_path\"><b>" .
+                       $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blob_plain;f=$file_name")}, esc_html($name)) . "</b><br/></div>\n";
+       } else {
+               print "<div class=\"page_path\"><b>" . esc_html($name) . "</b><br/></div>\n";
+       }
+}
+
 sub git_tag {
        my $head = git_read_head($project);
        git_header_html();
@@ -1281,9 +1295,11 @@ sub git_blame2 {
                $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commit;h=$hash_base"), -class => "title"}, esc_html($co{'title'})) .
                "</div>\n";
        git_print_page_path($file_name, $ftype);
-
+       my @rev_color = (qw(light dark));
+       my $num_colors = scalar(@rev_color);
+       my $current_color = 0;
+       my $last_rev;
        print "<div class=\"page_body\">\n";
-
        print "<table class=\"blame\">\n";
        print "<tr><th>Commit</th><th>Line</th><th>Data</th></tr>\n";
        while (my $line = <$fd>) {
@@ -1293,7 +1309,13 @@ sub git_blame2 {
                my $lineno = $blame_line{'lineno'};
                my $data = $blame_line{'data'};
 
-               print "<tr>\n";
+               if (!defined $last_rev) {
+                       $last_rev = $full_rev;
+               } elsif ($last_rev ne $full_rev) {
+                       $last_rev = $full_rev;
+                       $current_color = ++$current_color % $num_colors;
+               }
+               print "<tr class=\"$rev_color[$current_color]\">\n";
                print "<td class=\"sha1\">" .
                        $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commit;h=$full_rev;f=$file_name")}, esc_html($rev)) . "</td>\n";
                print "<td class=\"linenr\"><a id=\"l$lineno\" href=\"#l$lineno\" class=\"linenr\">" . esc_html($lineno) . "</a></td>\n";
@@ -1302,7 +1324,6 @@ sub git_blame2 {
        }
        print "</table>\n";
        print "</div>";
-
        close $fd or print "Reading blob failed\n";
        git_footer_html();
 }
@@ -1335,7 +1356,7 @@ sub git_blame {
                "<div>" .
                $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commit;h=$hash_base"), -class => "title"}, esc_html($co{'title'})) .
                "</div>\n";
-       print "<div class=\"page_path\"><b>" . esc_html($file_name) . "</b></div>\n";
+       git_print_page_path($file_name);
        print "<div class=\"page_body\">\n";
        print <<HTML;
 <table class="blame">
@@ -1673,9 +1694,7 @@ sub git_blob {
                      "<br/><br/></div>\n" .
                      "<div class=\"title\">$hash</div>\n";
        }
-       if (defined $file_name) {
-               print "<div class=\"page_path\"><b>" . esc_html($file_name) . "</b></div>\n";
-       }
+       git_print_page_path($file_name, "blob");
        print "<div class=\"page_body\">\n";
        my $nr;
        while (my $line = <$fd>) {
@@ -1740,10 +1759,8 @@ sub git_tree {
        }
        if (defined $file_name) {
                $base = esc_html("$file_name/");
-               print "<div class=\"page_path\"><b>/" . esc_html($file_name) . "</b></div>\n";
-       } else {
-               print "<div class=\"page_path\"><b>/</b></div>\n";
        }
+       git_print_page_path($file_name);
        print "<div class=\"page_body\">\n";
        print "<table cellspacing=\"0\">\n";
        my $alternate = 0;
@@ -2207,9 +2224,7 @@ sub git_blobdiff {
                      "<br/><br/></div>\n" .
                      "<div class=\"title\">$hash vs $hash_parent</div>\n";
        }
-       if (defined $file_name) {
-               print "<div class=\"page_path\"><b>/" . esc_html($file_name) . "</b></div>\n";
-       }
+       git_print_page_path($file_name, "blob");
        print "<div class=\"page_body\">\n" .
              "<div class=\"diff_info\">blob:" .
              $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blob;h=$hash_parent;hb=$hash_base;f=$file_name")}, $hash_parent) .
@@ -2383,6 +2398,7 @@ sub git_history {
        if (!defined $hash_base) {
                $hash_base = git_read_head($project);
        }
+       my $ftype;
        my %co = git_read_commit($hash_base);
        if (!%co) {
                die_error(undef, "Unknown commit object.");
@@ -2401,18 +2417,13 @@ sub git_history {
        print "<div>\n" .
              $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=commit;h=$hash_base"), -class => "title"}, esc_html($co{'title'})) . "\n" .
              "</div>\n";
+       if (!defined $hash && defined $file_name) {
+               $hash = git_get_hash_by_path($hash_base, $file_name);
+       }
        if (defined $hash) {
-               my $ftype = git_get_type($hash);
-
-               if ($ftype =~ "blob") {
-                   print "<div class=\"page_path\"><b>/" .
-                       $cgi->a({-href => "$my_uri?" . esc_param("p=$project;a=blob_plain;f=$file_name")}, esc_html($file_name)) . "</b><br/></div>\n";
-               } else {
-                   print "<div class=\"page_path\"><b>/" . esc_html($file_name) . "</b><br/></div>\n";
-               }
-       } else {
-               print "<div class=\"page_path\"><b>/" . esc_html($file_name) . "</b><br/></div>\n";
+               $ftype = git_get_type($hash);
        }
+       git_print_page_path($file_name, $ftype);
 
        open my $fd, "-|",
                "$GIT rev-list --full-history $hash_base -- \'$file_name\'";
This page took 0.285435 seconds and 4 git commands to generate.