diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/models/merge_request.rb | 4 | ||||
-rw-r--r-- | app/services/files/base_service.rb | 8 | ||||
-rw-r--r-- | app/services/files/create_dir_service.rb | 4 | ||||
-rw-r--r-- | app/services/files/create_service.rb | 4 | ||||
-rw-r--r-- | app/services/files/update_service.rb | 4 | ||||
-rw-r--r-- | app/services/merge_requests/build_service.rb | 8 | ||||
-rw-r--r-- | app/views/projects/merge_requests/widget/open/_size_limit_reached.html.haml | 2 |
7 files changed, 26 insertions, 8 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 62163e74000..5ff85ad7a1d 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -284,6 +284,10 @@ class MergeRequest < ActiveRecord::Base end end + def valid? + !(target_project.above_size_limit? || target_project.blank? || source_branch.blank?) + end + def branch_merge_base_sha branch_merge_base_commit.try(:sha) end diff --git a/app/services/files/base_service.rb b/app/services/files/base_service.rb index ea94818713b..ed3360fee44 100644 --- a/app/services/files/base_service.rb +++ b/app/services/files/base_service.rb @@ -34,6 +34,14 @@ module Files error(ex.message) end + def repository_size_limit + Gitlab::CurrentSettings.current_application_settings.repository_size_limit + end + + def size_limit_error_message + "Your changes could not be committed, because the repository's size (#{project.repository_size}MB) has exceeded its size limit of #{repository_size_limit}MB by #{project.size_to_remove}MB" + end + private def different_branch? diff --git a/app/services/files/create_dir_service.rb b/app/services/files/create_dir_service.rb index 6107254a34e..e22aa233824 100644 --- a/app/services/files/create_dir_service.rb +++ b/app/services/files/create_dir_service.rb @@ -9,6 +9,10 @@ module Files def validate super + if project.above_size_limit? + raise_error(size_limit_error_message) + end + unless @file_path =~ Gitlab::Regex.file_path_regex raise_error( 'Your changes could not be committed, because the file path ' + diff --git a/app/services/files/create_service.rb b/app/services/files/create_service.rb index 8eaf6db8012..16ac511763e 100644 --- a/app/services/files/create_service.rb +++ b/app/services/files/create_service.rb @@ -9,6 +9,10 @@ module Files def validate super + if project.above_size_limit? + raise_error(size_limit_error_message) + end + if @file_path =~ Gitlab::Regex.directory_traversal_regex raise_error( 'Your changes could not be committed, because the file name ' + diff --git a/app/services/files/update_service.rb b/app/services/files/update_service.rb index 4fc3b640799..347fc6e0913 100644 --- a/app/services/files/update_service.rb +++ b/app/services/files/update_service.rb @@ -16,6 +16,10 @@ module Files def validate super + if project.above_size_limit? + raise_error(size_limit_error_message) + end + if file_has_changed? raise FileChangedError.new("You are attempting to update a file that has changed since you started editing it.") end diff --git a/app/services/merge_requests/build_service.rb b/app/services/merge_requests/build_service.rb index 43e7cd505eb..3666e23f9fa 100644 --- a/app/services/merge_requests/build_service.rb +++ b/app/services/merge_requests/build_service.rb @@ -29,7 +29,7 @@ module MergeRequests merge_request.errors.add(:base, message) unless message.nil? end - return build_failed(merge_request) if invalid?(merge_request) + return build_failed(merge_request) unless merge_request.valid? compare = CompareService.new.execute( merge_request.source_project, @@ -101,12 +101,6 @@ module MergeRequests merge_request end - def invalid?(merge_request) - merge_request.target_project.above_size_limit? || - merge_request.target_project.blank? || - merge_request.source_branch.blank? - end - def build_failed(merge_request) merge_request.compare_commits = [] merge_request.can_be_created = false diff --git a/app/views/projects/merge_requests/widget/open/_size_limit_reached.html.haml b/app/views/projects/merge_requests/widget/open/_size_limit_reached.html.haml index 6aa2a9393de..9b4bffc6ebf 100644 --- a/app/views/projects/merge_requests/widget/open/_size_limit_reached.html.haml +++ b/app/views/projects/merge_requests/widget/open/_size_limit_reached.html.haml @@ -1,6 +1,6 @@ %h4.size-limit-reached = icon("exclamation-triangle") - This repository has reached it's size limit + This repository has reached its size limit %p Please contact your GitLab administrator for more information |