Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/models/merge_request.rb4
-rw-r--r--app/services/files/base_service.rb8
-rw-r--r--app/services/files/create_dir_service.rb4
-rw-r--r--app/services/files/create_service.rb4
-rw-r--r--app/services/files/update_service.rb4
-rw-r--r--app/services/merge_requests/build_service.rb8
-rw-r--r--app/views/projects/merge_requests/widget/open/_size_limit_reached.html.haml2
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