Signed-off-by: Giuseppe Bilotta <giuseppe.bilo...@gmail.com>
---
 gitweb/gitweb.perl | 47 +++++++++++++++++++++++++++++++++--------------
 1 file changed, 33 insertions(+), 14 deletions(-)

diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 6cb51f7..9ac28aa 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -804,6 +804,8 @@ our %actions = (
        "summary" => \&git_summary,
        "tag" => \&git_tag,
        "tags" => \&git_tags,
+       "tags_rss" => \&git_tags_rss,
+       "tags_atom" => \&git_tags_atom,
        "tree" => \&git_tree,
        "snapshot" => \&git_snapshot,
        "object" => \&git_object,
@@ -2518,7 +2520,7 @@ sub get_feed_info {
        return unless (defined $project);
        # some views should link to OPML, or to generic project feed,
        # or don't have specific feed yet (so they should use generic)
-       return if (!$action || $action =~ /^(?:tags|heads|forks|tag|search)$/x);
+       return if (!$action || $action =~ /^(?:heads|forks|search)$/x);
 
        my $branch;
        # branches refs uses 'refs/heads/' prefix (fullname) to differentiate
@@ -2528,8 +2530,10 @@ sub get_feed_info {
                $branch = $1;
        }
        # find log type for feed description (title)
-       my $type = 'log';
-       if (defined $file_name) {
+       my $type = "log";
+       if ($action eq 'tag' || $action eq 'tags') {
+               $type = "tags";
+       } elsif (defined $file_name) {
                $type  = "history of $file_name";
                $type .= "/" if ($action eq 'tree');
                $type .= " on '$branch'" if (defined $branch);
@@ -3907,6 +3911,7 @@ sub print_feed_meta {
                        $href_params{'-title'} = 'log';
                }
 
+               my $tag_view = $href_params{-title} eq 'tags';
                foreach my $format (qw(RSS Atom)) {
                        my $type = lc($format);
                        my %link_attr = (
@@ -3916,7 +3921,7 @@ sub print_feed_meta {
                        );
 
                        $href_params{'extra_options'} = undef;
-                       $href_params{'action'} = $type;
+                       $href_params{'action'} = ($tag_view ? 'tags_' : '') . 
$type;
                        $link_attr{'-href'} = href(%href_params);
                        print "<link ".
                              "rel=\"$link_attr{'-rel'}\" ".
@@ -3925,15 +3930,17 @@ sub print_feed_meta {
                              "type=\"$link_attr{'-type'}\" ".
                              "/>\n";
 
-                       $href_params{'extra_options'} = '--no-merges';
-                       $link_attr{'-href'} = href(%href_params);
-                       $link_attr{'-title'} .= ' (no merges)';
-                       print "<link ".
-                             "rel=\"$link_attr{'-rel'}\" ".
-                             "title=\"$link_attr{'-title'}\" ".
-                             "href=\"$link_attr{'-href'}\" ".
-                             "type=\"$link_attr{'-type'}\" ".
-                             "/>\n";
+                       unless ($tag_view) {
+                               $href_params{'extra_options'} = '--no-merges';
+                               $link_attr{'-href'} = href(%href_params);
+                               $link_attr{'-title'} .= ' (no merges)';
+                               print "<link ".
+                                     "rel=\"$link_attr{'-rel'}\" ".
+                                     "title=\"$link_attr{'-title'}\" ".
+                                     "href=\"$link_attr{'-href'}\" ".
+                                     "type=\"$link_attr{'-type'}\" ".
+                                     "/>\n";
+                       }
                }
 
        } else {
@@ -4115,8 +4122,9 @@ sub git_footer_html {
                }
                $href_params{'-title'} ||= 'log';
 
+               my $tag_view = $href_params{-title} eq 'tags';
                foreach my $format (qw(RSS Atom)) {
-                       $href_params{'action'} = lc($format);
+                       $href_params{'action'} = ($tag_view ? 'tags_' : '') . 
lc($format);
                        print $cgi->a({-href => href(%href_params),
                                      -title => "$href_params{'-title'} $format 
feed",
                                      -class => $feed_class}, $format)."\n";
@@ -8280,10 +8288,18 @@ sub git_rss {
        git_feed('rss');
 }
 
+sub git_tags_rss {
+       git_feed('rss', 'tags')
+}
+
 sub git_atom {
        git_feed('atom');
 }
 
+sub git_tags_atom {
+       git_feed('atom', 'tags')
+}
+
 sub git_opml {
        my @list = git_get_projects_list($project_filter, $strict_export);
        if (!@list) {
@@ -8328,6 +8344,9 @@ XML
                my $rss  = href('project' => $proj{'path'}, 'action' => 'rss', 
-full => 1);
                my $html = href('project' => $proj{'path'}, 'action' => 
'summary', -full => 1);
                print "<outline type=\"rss\" text=\"$path\" title=\"$path\" 
xmlUrl=\"$rss\" htmlUrl=\"$html\"/>\n";
+               # and now the tags rss feed
+               $rss  = href('project' => $proj{'path'}, 'action' => 
'tags_rss', -full => 1);
+               print "<outline type=\"rss\" text=\"$path tags\" title=\"$path 
tags\" xmlUrl=\"$rss\" htmlUrl=\"$html\"/>\n";
        }
        print <<XML;
 </outline>
-- 
1.7.12.1.577.gff9625d

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to