##// END OF EJS Templates
do not annotate text files which exceed the size limit for viewing (#9484)...
Toshi MARUYAMA -
r7608:4ae7f82f3ae1
parent child
Show More
@@ -172,7 +172,16 class RepositoriesController < ApplicationController
172 (show_error_not_found; return) unless @entry
172 (show_error_not_found; return) unless @entry
173
173
174 @annotate = @repository.scm.annotate(@path, @rev)
174 @annotate = @repository.scm.annotate(@path, @rev)
175 (render_error l(:error_scm_annotate); return) if @annotate.nil? || @annotate.empty?
175 if @annotate.nil? || @annotate.empty?
176 (render_error l(:error_scm_annotate); return)
177 end
178 ann_buf_size = 0
179 @annotate.lines.each do |buf|
180 ann_buf_size += buf.size
181 end
182 if ann_buf_size > Setting.file_max_size_displayed.to_i.kilobyte
183 (render_error l(:error_scm_annotate_big_text_file); return)
184 end
176 @changeset = @repository.find_changeset_by_name(@rev)
185 @changeset = @repository.find_changeset_by_name(@rev)
177 end
186 end
178
187
@@ -180,6 +180,7 en-GB:
180 error_scm_not_found: "The entry or revision was not found in the repository."
180 error_scm_not_found: "The entry or revision was not found in the repository."
181 error_scm_command_failed: "An error occurred when trying to access the repository: %{value}"
181 error_scm_command_failed: "An error occurred when trying to access the repository: %{value}"
182 error_scm_annotate: "The entry does not exist or cannot be annotated."
182 error_scm_annotate: "The entry does not exist or cannot be annotated."
183 error_scm_annotate_big_text_file: "The entry cannot be annotated, as it exceeds the maximum text file size."
183 error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
184 error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
184 error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.'
185 error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.'
185 error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").'
186 error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").'
@@ -176,6 +176,7 en:
176 error_scm_not_found: "The entry or revision was not found in the repository."
176 error_scm_not_found: "The entry or revision was not found in the repository."
177 error_scm_command_failed: "An error occurred when trying to access the repository: %{value}"
177 error_scm_command_failed: "An error occurred when trying to access the repository: %{value}"
178 error_scm_annotate: "The entry does not exist or cannot be annotated."
178 error_scm_annotate: "The entry does not exist or cannot be annotated."
179 error_scm_annotate_big_text_file: "The entry cannot be annotated, as it exceeds the maximum text file size."
179 error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
180 error_issue_not_found_in_project: 'The issue was not found or does not belong to this project'
180 error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.'
181 error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.'
181 error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").'
182 error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").'
@@ -245,6 +245,7 es:
245 error_can_t_load_default_data: "No se ha podido cargar la configuración por defecto: %{value}"
245 error_can_t_load_default_data: "No se ha podido cargar la configuración por defecto: %{value}"
246 error_issue_not_found_in_project: 'La petición no se encuentra o no está asociada a este proyecto'
246 error_issue_not_found_in_project: 'La petición no se encuentra o no está asociada a este proyecto'
247 error_scm_annotate: "No existe la entrada o no ha podido ser anotada"
247 error_scm_annotate: "No existe la entrada o no ha podido ser anotada"
248 error_scm_annotate_big_text_file: "La entrada no puede anotarse, al superar el tamaño máximo para ficheros de texto."
248 error_scm_command_failed: "Se produjo un error al acceder al repositorio: %{value}"
249 error_scm_command_failed: "Se produjo un error al acceder al repositorio: %{value}"
249 error_scm_not_found: "La entrada y/o la revisión no existe en el repositorio."
250 error_scm_not_found: "La entrada y/o la revisión no existe en el repositorio."
250 field_account: Cuenta
251 field_account: Cuenta
@@ -354,6 +354,19 class RepositoriesGitControllerTest < ActionController::TestCase
354 :content => /cannot be annotated/
354 :content => /cannot be annotated/
355 end
355 end
356
356
357 def test_annotate_error_when_too_big
358 with_settings :file_max_size_displayed => 1 do
359 get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :rev => 'deff712f'
360 assert_response 500
361 assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ },
362 :content => /exceeds the maximum text file size/
363
364 get :annotate, :id => PRJ_ID, :path => ['README'], :rev => '7234cb2'
365 assert_response :success
366 assert_template 'annotate'
367 end
368 end
369
357 def test_annotate_latin_1
370 def test_annotate_latin_1
358 if @ruby19_non_utf8_pass
371 if @ruby19_non_utf8_pass
359 puts_ruby19_non_utf8_pass()
372 puts_ruby19_non_utf8_pass()
General Comments 0
You need to be logged in to leave comments. Login now