##// END OF EJS Templates
SCM browser: ability to download raw unified diffs....
Jean-Philippe Lang -
r1500:b78b62df8d1f
parent child
Show More
@@ -142,19 +142,29 class RepositoriesController < ApplicationController
142 end
142 end
143
143
144 def diff
144 def diff
145 @diff_type = params[:type] || User.current.pref[:diff_type] || 'inline'
145 if params[:format] == 'diff'
146 @diff_type = 'inline' unless %w(inline sbs).include?(@diff_type)
147
148 # Save diff type as user preference
149 if User.current.logged? && @diff_type != User.current.pref[:diff_type]
150 User.current.pref[:diff_type] = @diff_type
151 User.current.preference.save
152 end
153
154 @cache_key = "repositories/diff/#{@repository.id}/" + Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}")
155 unless read_fragment(@cache_key)
156 @diff = @repository.diff(@path, @rev, @rev_to)
146 @diff = @repository.diff(@path, @rev, @rev_to)
157 show_error_not_found unless @diff
147 show_error_not_found and return unless @diff
148 filename = "changeset_r#{@rev}"
149 filename << "_r#{@rev_to}" if @rev_to
150 send_data @diff.join, :filename => "#{filename}.diff",
151 :type => 'text/x-patch',
152 :disposition => 'attachment'
153 else
154 @diff_type = params[:type] || User.current.pref[:diff_type] || 'inline'
155 @diff_type = 'inline' unless %w(inline sbs).include?(@diff_type)
156
157 # Save diff type as user preference
158 if User.current.logged? && @diff_type != User.current.pref[:diff_type]
159 User.current.pref[:diff_type] = @diff_type
160 User.current.preference.save
161 end
162
163 @cache_key = "repositories/diff/#{@repository.id}/" + Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}")
164 unless read_fragment(@cache_key)
165 @diff = @repository.diff(@path, @rev, @rev_to)
166 show_error_not_found unless @diff
167 end
158 end
168 end
159 rescue Redmine::Scm::Adapters::CommandFailed => e
169 rescue Redmine::Scm::Adapters::CommandFailed => e
160 show_error_command_failed(e.message)
170 show_error_command_failed(e.message)
@@ -84,6 +84,11
84 <% end -%>
84 <% end -%>
85 <% end -%>
85 <% end -%>
86
86
87 <p class="other-formats">
88 <%= l(:label_export_to) %>
89 <span><%= link_to 'Unified diff', params.merge(:format => 'diff') %></span>
90 </p>
91
87 <% html_title(with_leading_slash(@path), 'Diff') -%>
92 <% html_title(with_leading_slash(@path), 'Diff') -%>
88
93
89 <% content_for :header_tags do %>
94 <% content_for :header_tags do %>
General Comments 0
You need to be logged in to leave comments. Login now