diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 0c6070b80..3b0ab036b 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -32,10 +32,12 @@ class RepositoriesController < ApplicationController before_action :find_project_repository, :except => [:new, :create, :edit, :update, :destroy, :committers] before_action :find_changeset, :only => [:revision, :add_related_issue, :remove_related_issue] before_action :authorize - accept_rss_auth :revisions + accept_rss_auth :revisions, :changes rescue_from Redmine::Scm::Adapters::CommandFailed, :with => :show_error_command_failed + include RepositoriesHelper + def new @repository.is_default = @project.repository.nil? end @@ -102,8 +104,18 @@ class RepositoriesController < ApplicationController @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry @changesets = @repository.latest_changesets(@path, @rev, Setting.repository_log_display_limit.to_i) - @properties = @repository.properties(@path, @rev) @changeset = @repository.find_changeset_by_name(@rev) + + respond_to do |format| + format.html do + @properties = @repository.properties(@path, @rev) + end + format.atom do + repo_text = @repository.identifier.presence || 'root' + rev_text = @changeset.nil? ? @rev : format_revision(@changeset) + render_feed(@changesets, :title => "#{@project.name}: #{repo_text} @ #{rev_text} - #{l(:label_change_plural)}") + end + end end def revisions diff --git a/app/views/repositories/changes.html.erb b/app/views/repositories/changes.html.erb index cd5a95585..255a4af9e 100644 --- a/app/views/repositories/changes.html.erb +++ b/app/views/repositories/changes.html.erb @@ -15,6 +15,14 @@ <% content_for :header_tags do %> <%= stylesheet_link_tag "scm" %> + <%= auto_discovery_link_tag( + :atom, + :params => request.query_parameters.merge(:key => User.current.rss_key), + :format => 'atom') %> +<% end %> + +<% other_formats_links do |f| %> + <%= f.link_to_with_query_parameters 'Atom', :key => User.current.rss_key %> <% end %> <% html_title(l(:label_change_plural)) -%> diff --git a/config/routes.rb b/config/routes.rb index e5b25f904..b0dd8ed09 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -245,6 +245,7 @@ Rails.application.routes.draw do post 'projects/:id/repository/:repository_id/revisions/:rev/issues', :to => 'repositories#add_related_issue' delete 'projects/:id/repository/:repository_id/revisions/:rev/issues/:issue_id', :to => 'repositories#remove_related_issue' get 'projects/:id/repository/:repository_id/revisions', :to => 'repositories#revisions' + get 'projects/:id/repository/:repository_id/changes', :to => 'repositories#changes' %w(browse show entry raw annotate diff).each do |action| get "projects/:id/repository/:repository_id/revisions/:rev/#{action}(/*path)", :controller => 'repositories', @@ -257,6 +258,7 @@ Rails.application.routes.draw do get 'projects/:id/repository/graph', :to => 'repositories#graph' get 'projects/:id/repository/revisions', :to => 'repositories#revisions' + get 'projects/:id/repository/changes', :to => 'repositories#changes' get 'projects/:id/repository/revisions/:rev', :to => 'repositories#revision' get 'projects/:id/repository/revision', :to => 'repositories#revision' post 'projects/:id/repository/revisions/:rev/issues', :to => 'repositories#add_related_issue'