]> Lady’s Gitweb - Gitweb/blobdiff - gitweb.perl
gitweb: Correct typo: '==' instead of 'eq' in git_difftree_body
[Gitweb] / gitweb.perl
index 67f3d91d66699cfe71b11e939da31c2dd2f1f60fae025229f9b2bad70d909182..ec50a81cfee5926cdc3291977d1634e7549669a1cd8c0e9df0c99a70abb7b435 100755 (executable)
@@ -48,6 +48,8 @@ our $home_text = "++GITWEB_HOMETEXT++";
 our $stylesheet = "++GITWEB_CSS++";
 # URI of GIT logo
 our $logo = "++GITWEB_LOGO++";
+# URI of GIT favicon, assumed to be image/png type
+our $favicon = "++GITWEB_FAVICON++";
 
 # source of projects list
 our $projects_list = "++GITWEB_LIST++";
@@ -1027,9 +1029,9 @@ sub parse_difftree_raw_line {
                }
        }
        # 'c512b523472485aef4fff9e57b229d9d243c967f'
-       #elsif ($line =~ m/^([0-9a-fA-F]{40})$/) {
-       #       $res{'commit'} = $1;
-       #}
+       elsif ($line =~ m/^([0-9a-fA-F]{40})$/) {
+               $res{'commit'} = $1;
+       }
 
        return wantarray ? %res : \%res;
 }
@@ -1222,6 +1224,9 @@ EOF
                       'href="%s" type="application/rss+xml"/>'."\n",
                       esc_param($project), href(action=>"rss"));
        }
+       if (defined $favicon) {
+               print qq(<link rel="shortcut icon" href="$favicon" type="image/png"/>\n);
+       }
 
        print "</head>\n" .
              "<body>\n" .
@@ -1475,6 +1480,62 @@ sub git_print_simplified_log {
                -remove_title => $remove_title);
 }
 
+# print tree entry (row of git_tree), but without encompassing <tr> element
+sub git_print_tree_entry {
+       my ($t, $basedir, $hash_base, $have_blame) = @_;
+
+       my %base_key = ();
+       $base_key{hash_base} = $hash_base if defined $hash_base;
+
+       print "<td class=\"mode\">" . mode_str($t->{'mode'}) . "</td>\n";
+       if ($t->{'type'} eq "blob") {
+               print "<td class=\"list\">" .
+                     $cgi->a({-href => href(action=>"blob", hash=>$t->{'hash'},
+                                            file_name=>"$basedir$t->{'name'}", %base_key),
+                             -class => "list"}, esc_html($t->{'name'})) .
+                     "</td>\n" .
+                     "<td class=\"link\">" .
+                     $cgi->a({-href => href(action=>"blob", hash=>$t->{'hash'},
+                                            file_name=>"$basedir$t->{'name'}", %base_key)},
+                             "blob");
+               if ($have_blame) {
+                       print " | " .
+                               $cgi->a({-href => href(action=>"blame", hash=>$t->{'hash'},
+                                                      file_name=>"$basedir$t->{'name'}", %base_key)},
+                                       "blame");
+               }
+               if (defined $hash_base) {
+                       print " | " .
+                             $cgi->a({-href => href(action=>"history", hash_base=>$hash_base,
+                                                    hash=>$t->{'hash'}, file_name=>"$basedir$t->{'name'}")},
+                                     "history");
+               }
+               print " | " .
+                     $cgi->a({-href => href(action=>"blob_plain",
+                                            hash=>$t->{'hash'}, file_name=>"$basedir$t->{'name'}")},
+                             "raw") .
+                     "</td>\n";
+
+       } elsif ($t->{'type'} eq "tree") {
+               print "<td class=\"list\">" .
+                     $cgi->a({-href => href(action=>"tree", hash=>$t->{'hash'},
+                                            file_name=>"$basedir$t->{'name'}", %base_key)},
+                             esc_html($t->{'name'})) .
+                     "</td>\n" .
+                     "<td class=\"link\">" .
+                     $cgi->a({-href => href(action=>"tree", hash=>$t->{'hash'},
+                                            file_name=>"$basedir$t->{'name'}", %base_key)},
+                             "tree");
+               if (defined $hash_base) {
+                       print " | " .
+                             $cgi->a({-href => href(action=>"history", hash_base=>$hash_base,
+                                                    file_name=>"$basedir$t->{'name'}")},
+                                     "history");
+               }
+               print "</td>\n";
+       }
+}
+
 ## ......................................................................
 ## functions printing large fragments of HTML
 
@@ -1531,7 +1592,7 @@ sub git_difftree_body {
                              $cgi->a({-href => href(action=>"blob", hash=>$diff{'to_id'},
                                                     hash_base=>$hash, file_name=>$diff{'file'})},
                                      "blob");
-                       if ($action == "commitdiff") {
+                       if ($action eq 'commitdiff') {
                                # link to patch
                                $patchno++;
                                print " | " .
@@ -1552,7 +1613,7 @@ sub git_difftree_body {
                                                     hash_base=>$parent, file_name=>$diff{'file'})},
                                      "blob") .
                              " | ";
-                       if ($action == "commitdiff") {
+                       if ($action eq 'commitdiff') {
                                # link to patch
                                $patchno++;
                                print " | " .
@@ -1598,7 +1659,7 @@ sub git_difftree_body {
                                                     hash_base=>$hash, file_name=>$diff{'file'})},
                                      "blob");
                        if ($diff{'to_id'} ne $diff{'from_id'}) { # modified
-                               if ($action == "commitdiff") {
+                               if ($action eq 'commitdiff') {
                                        # link to patch
                                        $patchno++;
                                        print " | " .
@@ -1640,7 +1701,7 @@ sub git_difftree_body {
                                                     hash=>$diff{'to_id'}, file_name=>$diff{'to_file'})},
                                      "blob");
                        if ($diff{'to_id'} ne $diff{'from_id'}) {
-                               if ($action == "commitdiff") {
+                               if ($action eq 'commitdiff') {
                                        # link to patch
                                        $patchno++;
                                        print " | " .
@@ -2195,7 +2256,8 @@ sub git_blame2 {
        my $fd;
        my $ftype;
 
-       if (!gitweb_check_feature('blame')) {
+       my ($have_blame) = gitweb_check_feature('blame');
+       if (!$have_blame) {
                die_error('403 Permission denied', "Permission denied");
        }
        die_error('404 Not Found', "File name not defined") if (!$file_name);
@@ -2264,7 +2326,8 @@ HTML
 sub git_blame {
        my $fd;
 
-       if (!gitweb_check_feature('blame')) {
+       my ($have_blame) = gitweb_check_feature('blame');
+       if (!$have_blame) {
                die_error('403 Permission denied', "Permission denied");
        }
        die_error('404 Not Found', "File name not defined") if (!$file_name);
@@ -2438,7 +2501,7 @@ sub git_blob {
                        die_error(undef, "No file name defined");
                }
        }
-       my $have_blame = gitweb_check_feature('blame');
+       my ($have_blame) = gitweb_check_feature('blame');
        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);
@@ -2513,14 +2576,13 @@ sub git_tree {
        my $refs = git_get_references();
        my $ref = format_ref_marker($refs, $hash_base);
        git_header_html();
-       my %base_key = ();
        my $base = "";
-       my $have_blame = gitweb_check_feature('blame');
+       my ($have_blame) = gitweb_check_feature('blame');
        if (defined $hash_base && (my %co = parse_commit($hash_base))) {
-               $base_key{hash_base} = $hash_base;
                git_print_page_nav('tree','', $hash_base);
                git_print_header_div('commit', esc_html($co{'title'}) . $ref, $hash_base);
        } else {
+               undef $hash_base;
                print "<div class=\"page_nav\">\n";
                print "<br/><br/></div>\n";
                print "<div class=\"title\">$hash</div>\n";
@@ -2542,48 +2604,8 @@ sub git_tree {
                }
                $alternate ^= 1;
 
-               print "<td class=\"mode\">" . mode_str($t{'mode'}) . "</td>\n";
-               if ($t{'type'} eq "blob") {
-                       print "<td class=\"list\">" .
-                             $cgi->a({-href => href(action=>"blob", hash=>$t{'hash'},
-                                                    file_name=>"$base$t{'name'}", %base_key),
-                                     -class => "list"}, esc_html($t{'name'})) .
-                             "</td>\n" .
-                             "<td class=\"link\">" .
-                             $cgi->a({-href => href(action=>"blob", hash=>$t{'hash'},
-                                                    file_name=>"$base$t{'name'}", %base_key)},
-                                     "blob");
-                       if ($have_blame) {
-                               print " | " .
-                                       $cgi->a({-href => href(action=>"blame", hash=>$t{'hash'},
-                                                              file_name=>"$base$t{'name'}", %base_key)},
-                                               "blame");
-                       }
-                       print " | " .
-                             $cgi->a({-href => href(action=>"history", hash_base=>$hash_base,
-                                                    hash=>$t{'hash'}, file_name=>"$base$t{'name'}")},
-                                     "history") .
-                             " | " .
-                             $cgi->a({-href => href(action=>"blob_plain",
-                                                    hash=>$t{'hash'}, file_name=>"$base$t{'name'}")},
-                                     "raw") .
-                             "</td>\n";
-               } elsif ($t{'type'} eq "tree") {
-                       print "<td class=\"list\">" .
-                             $cgi->a({-href => href(action=>"tree", hash=>$t{'hash'},
-                                                    file_name=>"$base$t{'name'}", %base_key)},
-                                     esc_html($t{'name'})) .
-                             "</td>\n" .
-                             "<td class=\"link\">" .
-                             $cgi->a({-href => href(action=>"tree", hash=>$t{'hash'},
-                                                    file_name=>"$base$t{'name'}", %base_key)},
-                                     "tree") .
-                             " | " .
-                             $cgi->a({-href => href(action=>"history", hash_base=>$hash_base,
-                                                    file_name=>"$base$t{'name'}")},
-                                     "history") .
-                             "</td>\n";
-               }
+               git_print_tree_entry(\%t, $base, $hash_base, $have_blame);
+
                print "</tr>\n";
        }
        print "</table>\n" .
@@ -2764,7 +2786,7 @@ sub git_commit {
                      "<td class=\"link\">" .
                      $cgi->a({-href => href(action=>"commit", hash=>$par)}, "commit") .
                      " | " .
-                     $cgi->a({-href => href(action=>"commitdiff", hash=>$hash, hash_parent=>$par)}, "commitdiff") .
+                     $cgi->a({-href => href(action=>"commitdiff", hash=>$hash, hash_parent=>$par)}, "diff") .
                      "</td>" .
                      "</tr>\n";
        }
This page took 0.318246 seconds and 4 git commands to generate.