@@ -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