Chris@0: Index: app/views/settings/_general.rhtml Chris@0: =================================================================== Chris@0: --- app/views/settings/_general.rhtml (revision 2094) Chris@0: +++ app/views/settings/_general.rhtml (working copy) Chris@0: @@ -48,6 +48,9 @@ Chris@0:

Chris@0: <%= text_field_tag 'settings[feeds_limit]', Setting.feeds_limit, :size => 6 %>

Chris@0: Chris@0: +

Chris@0: +<%= text_field_tag 'settings[diff_max_lines_displayed]', Setting.diff_max_lines_displayed, :size => 6 %>

Chris@0: + Chris@0:

Chris@0: <%= check_box_tag 'settings[gravatar_enabled]', 1, Setting.gravatar_enabled? %><%= hidden_field_tag 'settings[gravatar_enabled]', 0 %>

Chris@0: Chris@0: Index: app/views/common/_diff.rhtml Chris@0: =================================================================== Chris@0: --- app/views/common/_diff.rhtml (revision 2111) Chris@0: +++ app/views/common/_diff.rhtml (working copy) Chris@0: @@ -1,4 +1,5 @@ Chris@0: -<% Redmine::UnifiedDiff.new(diff, :type => diff_type).each do |table_file| -%> Chris@0: +<% diff = Redmine::UnifiedDiff.new(diff, :type => diff_type, :max_lines => Setting.diff_max_lines_displayed.to_i) -%> Chris@0: +<% diff.each do |table_file| -%> Chris@0:
Chris@0: <% if diff_type == 'sbs' -%> Chris@0: Chris@0: @@ -62,3 +63,5 @@ Chris@0: Chris@0: Chris@0: <% end -%> Chris@0: + Chris@0: +<%= l(:text_diff_truncated) if diff.truncated? %> Chris@0: Index: lang/lt.yml Chris@0: =================================================================== Chris@0: --- config/settings.yml (revision 2094) Chris@0: +++ config/settings.yml (working copy) Chris@0: @@ -61,6 +61,9 @@ Chris@0: feeds_limit: Chris@0: format: int Chris@0: default: 15 Chris@0: +diff_max_lines_displayed: Chris@0: + format: int Chris@0: + default: 1500 Chris@0: enabled_scm: Chris@0: serialized: true Chris@0: default: Chris@0: Index: lib/redmine/unified_diff.rb Chris@0: =================================================================== Chris@0: --- lib/redmine/unified_diff.rb (revision 2110) Chris@0: +++ lib/redmine/unified_diff.rb (working copy) Chris@0: @@ -19,8 +19,11 @@ Chris@0: # Class used to parse unified diffs Chris@0: class UnifiedDiff < Array Chris@0: def initialize(diff, options={}) Chris@0: + options.assert_valid_keys(:type, :max_lines) Chris@0: diff_type = options[:type] || 'inline' Chris@0: Chris@0: + lines = 0 Chris@0: + @truncated = false Chris@0: diff_table = DiffTable.new(diff_type) Chris@0: diff.each do |line| Chris@0: if line =~ /^(---|\+\+\+) (.*)$/ Chris@0: @@ -28,10 +31,17 @@ Chris@0: diff_table = DiffTable.new(diff_type) Chris@0: end Chris@0: diff_table.add_line line Chris@0: + lines += 1 Chris@0: + if options[:max_lines] && lines > options[:max_lines] Chris@0: + @truncated = true Chris@0: + break Chris@0: + end Chris@0: end Chris@0: self << diff_table unless diff_table.empty? Chris@0: self Chris@0: end Chris@0: + Chris@0: + def truncated?; @truncated; end Chris@0: end Chris@0: Chris@0: # Class that represents a file diff