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..09d3b0fc3 100644 --- a/app/views/repositories/changes.html.erb +++ b/app/views/repositories/changes.html.erb @@ -14,7 +14,15 @@ :locals => {:project => @project, :path => @path, :revisions => @changesets, :entry => @entry }) unless @changesets.empty? %> <% content_for :header_tags do %> -<%= stylesheet_link_tag "scm" %> + <%= stylesheet_link_tag "scm" %> + <%= auto_discovery_link_tag( + :atom, + params.merge( + {:format => 'atom', :key => User.current.rss_key})) %> +<% end %> + +<% other_formats_links do |f| %> + <%= f.link_to 'Atom', :url => params.merge({:key => User.current.rss_key}) %> <% end %> <% html_title(l(:label_change_plural)) -%> diff --git a/config/routes.rb b/config/routes.rb index e5b25f904..21163e84a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -156,7 +156,7 @@ Rails.application.routes.draw do end end end - + match 'wiki/index', :controller => 'wiki', :action => 'index', :via => :get resources :wiki, :except => [:index, :create], :as => 'wiki_page' do member do @@ -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'