@@ -142,19 +142,29 class RepositoriesController < ApplicationController | |||
|
142 | 142 | end |
|
143 | 143 | |
|
144 | 144 | def diff |
|
145 | @diff_type = params[:type] || User.current.pref[:diff_type] || 'inline' | |
|
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) | |
|
145 | if params[:format] == 'diff' | |
|
156 | 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 | 168 | end |
|
159 | 169 | rescue Redmine::Scm::Adapters::CommandFailed => e |
|
160 | 170 | show_error_command_failed(e.message) |
@@ -84,6 +84,11 | |||
|
84 | 84 | <% end -%> |
|
85 | 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 | 92 | <% html_title(with_leading_slash(@path), 'Diff') -%> |
|
88 | 93 | |
|
89 | 94 | <% content_for :header_tags do %> |
General Comments 0
You need to be logged in to leave comments.
Login now