From 869182cab0867d582e469f329a6f58d13f877683 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 9 Oct 2019 00:06:06 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../projects/protected_branches_controller.rb | 12 ++++++++---- app/controllers/projects_controller.rb | 1 + app/models/concerns/checksummable.rb | 11 +++++++++++ app/models/lfs_object.rb | 3 ++- app/models/protected_branch.rb | 5 +++++ app/models/upload.rb | 7 ++----- app/services/projects/create_from_template_service.rb | 9 +++------ app/services/projects/create_service.rb | 6 +++++- .../shared/_branches_list.html.haml | 19 +++++++++++++------ .../shared/_create_protected_branch.html.haml | 19 ++++++++----------- .../shared/_protected_branch.html.haml | 2 ++ 11 files changed, 60 insertions(+), 34 deletions(-) create mode 100644 app/models/concerns/checksummable.rb (limited to 'app') diff --git a/app/controllers/projects/protected_branches_controller.rb b/app/controllers/projects/protected_branches_controller.rb index c5454883060..d4f7d0bc521 100644 --- a/app/controllers/projects/protected_branches_controller.rb +++ b/app/controllers/projects/protected_branches_controller.rb @@ -19,9 +19,13 @@ class Projects::ProtectedBranchesController < Projects::ProtectedRefsController [:merge_access_levels, :push_access_levels] end - def protected_ref_params - params.require(:protected_branch).permit(:name, - merge_access_levels_attributes: access_level_attributes, - push_access_levels_attributes: access_level_attributes) + def protected_ref_params(*attrs) + attrs = ([:name, + merge_access_levels_attributes: access_level_attributes, + push_access_levels_attributes: access_level_attributes] + attrs).uniq + + params.require(:protected_branch).permit(attrs) end end + +Projects::ProtectedBranchesController.prepend_if_ee('EE::Projects::ProtectedBranchesController') diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index b8beecf823c..abd19df9a3d 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -376,6 +376,7 @@ class ProjectsController < Projects::ApplicationController :tag_list, :visibility_level, :template_name, + :template_project_id, :merge_method, :initialize_with_readme, diff --git a/app/models/concerns/checksummable.rb b/app/models/concerns/checksummable.rb new file mode 100644 index 00000000000..1f76eb87aa5 --- /dev/null +++ b/app/models/concerns/checksummable.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module Checksummable + extend ActiveSupport::Concern + + class_methods do + def hexdigest(path) + Digest::SHA256.file(path).hexdigest + end + end +end diff --git a/app/models/lfs_object.rb b/app/models/lfs_object.rb index d31d6226559..535c3cf2ba1 100644 --- a/app/models/lfs_object.rb +++ b/app/models/lfs_object.rb @@ -2,6 +2,7 @@ class LfsObject < ApplicationRecord include AfterCommitQueue + include Checksummable include EachBatch include ObjectStorage::BackgroundMove @@ -46,7 +47,7 @@ class LfsObject < ApplicationRecord # rubocop: enable DestroyAll def self.calculate_oid(path) - Digest::SHA256.file(path).hexdigest + self.hexdigest(path) end end diff --git a/app/models/protected_branch.rb b/app/models/protected_branch.rb index 8769d3eb916..1857a59e01c 100644 --- a/app/models/protected_branch.rb +++ b/app/models/protected_branch.rb @@ -40,6 +40,11 @@ class ProtectedBranch < ApplicationRecord def self.protected_refs(project) project.protected_branches.select(:name) end + + def self.branch_requires_code_owner_approval?(project, branch_name) + # NOOP + # + end end ProtectedBranch.prepend_if_ee('EE::ProtectedBranch') diff --git a/app/models/upload.rb b/app/models/upload.rb index 384949ddb86..df8f9c56fa8 100644 --- a/app/models/upload.rb +++ b/app/models/upload.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true class Upload < ApplicationRecord + include Checksummable # Upper limit for foreground checksum processing CHECKSUM_THRESHOLD = 100.megabytes @@ -21,10 +22,6 @@ class Upload < ApplicationRecord # hooks are not executed and the file will not be deleted after_destroy :delete_file!, if: -> { uploader_class <= FileUploader } - def self.hexdigest(path) - Digest::SHA256.file(path).hexdigest - end - class << self ## # FastDestroyAll concerns @@ -55,7 +52,7 @@ class Upload < ApplicationRecord self.checksum = nil return unless needs_checksum? - self.checksum = Digest::SHA256.file(absolute_path).hexdigest + self.checksum = self.class.hexdigest(absolute_path) end # Initialize the associated Uploader class with current model diff --git a/app/services/projects/create_from_template_service.rb b/app/services/projects/create_from_template_service.rb index 91ece024e13..a207fd2c574 100644 --- a/app/services/projects/create_from_template_service.rb +++ b/app/services/projects/create_from_template_service.rb @@ -4,8 +4,11 @@ module Projects class CreateFromTemplateService < BaseService include Gitlab::Utils::StrongMemoize + attr_reader :template_name + def initialize(user, params) @current_user, @params = user, params.to_h.dup + @template_name = @params.delete(:template_name).presence end def execute @@ -21,12 +24,6 @@ module Projects file&.close end - def template_name - strong_memoize(:template_name) do - params.delete(:template_name).presence - end - end - private def validate_template! diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index 728eb039b54..ef06545b27d 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -13,7 +13,7 @@ module Projects end def execute - if @params[:template_name].present? + if create_from_template? return ::Projects::CreateFromTemplateService.new(current_user, params).execute end @@ -184,6 +184,10 @@ module Projects private + def create_from_template? + @params[:template_name].present? || @params[:template_project_id].present? + end + def import_schedule if @project.errors.empty? @project.import_state.schedule if @project.import? && !@project.bare_repository_import? diff --git a/app/views/projects/protected_branches/shared/_branches_list.html.haml b/app/views/projects/protected_branches/shared/_branches_list.html.haml index 1913d06a6f8..ff8dae08ad0 100644 --- a/app/views/projects/protected_branches/shared/_branches_list.html.haml +++ b/app/views/projects/protected_branches/shared/_branches_list.html.haml @@ -1,9 +1,9 @@ .protected-branches-list.js-protected-branches-list.qa-protected-branches-list - if @protected_branches.empty? .card-header.bg-white - Protected branch (#{@protected_branches_count}) + = s_("ProtectedBranch|Protected branch (%{protected_branches_count})") % { protected_branches_count: @protected_branches_count } %p.settings-message.text-center - There are currently no protected branches, protect a branch with the form above. + = s_("ProtectedBranch|There are currently no protected branches, protect a branch with the form above.") - else %table.table.table-bordered %colgroup @@ -15,10 +15,17 @@ %col %thead %tr - %th Protected branch (#{@protected_branches_count}) - %th Last commit - %th Allowed to merge - %th Allowed to push + %th + = s_("ProtectedBranch|Protected branch (%{protected_branches_count})") % { protected_branches_count: @protected_branches_count } + %th + = s_("ProtectedBranch|Last commit") + %th + = s_("ProtectedBranch|Allowed to merge") + %th + = s_("ProtectedBranch|Allowed to push") + + = render_if_exists 'projects/protected_branches/ee/code_owner_approval_table_head' + - if can_admin_project %th %tbody diff --git a/app/views/projects/protected_branches/shared/_create_protected_branch.html.haml b/app/views/projects/protected_branches/shared/_create_protected_branch.html.haml index bba4949277d..f84c7b39733 100644 --- a/app/views/projects/protected_branches/shared/_create_protected_branch.html.haml +++ b/app/views/projects/protected_branches/shared/_create_protected_branch.html.haml @@ -2,7 +2,7 @@ %input{ type: 'hidden', name: 'update_section', value: 'js-protected-branches-settings' } .card .card-header - Protect a branch + = s_("ProtectedBranch|Protect a branch") .card-body = form_errors(@protected_branch) .form-group.row @@ -11,22 +11,19 @@ .col-md-10 = render partial: "projects/protected_branches/shared/dropdown", locals: { f: f } .form-text.text-muted - = link_to 'Wildcards', help_page_path('user/project/protected_branches', anchor: 'wildcard-protected-branches') - such as - %code *-stable - or - %code production/* - are supported + - wildcards_url = help_page_url('user/project/protected_branches', anchor: 'wildcard-protected-branches') + - wildcards_link_start = ''.html_safe % { url: wildcards_url } + = (s_("ProtectedBranch|%{wildcards_link_start}Wildcards%{wildcards_link_end} such as %{code_tag_start}*-stable%{code_tag_end} or %{code_tag_start}production/*%{code_tag_end} are supported") % { wildcards_link_start: wildcards_link_start, wildcards_link_end: '', code_tag_start: '', code_tag_end: '' }).html_safe .form-group.row %label.col-md-2.text-right{ for: 'merge_access_levels_attributes' } - Allowed to merge: + = s_("ProtectedBranch|Allowed to merge:") .col-md-10 = yield :merge_access_levels .form-group.row %label.col-md-2.text-right{ for: 'push_access_levels_attributes' } - Allowed to push: + = s_("ProtectedBranch|Allowed to push:") .col-md-10 = yield :push_access_levels - + = render_if_exists 'projects/protected_branches/ee/code_owner_approval_form' .card-footer - = f.submit 'Protect', class: 'btn-success btn', disabled: true, data: { qa_selector: 'protect_button' } + = f.submit s_('ProtectedBranch|Protect'), class: 'btn-success btn', disabled: true, data: { qa_selector: 'protect_button' } diff --git a/app/views/projects/protected_branches/shared/_protected_branch.html.haml b/app/views/projects/protected_branches/shared/_protected_branch.html.haml index 81dcab1d1ab..2768e4ac5a5 100644 --- a/app/views/projects/protected_branches/shared/_protected_branch.html.haml +++ b/app/views/projects/protected_branches/shared/_protected_branch.html.haml @@ -19,6 +19,8 @@ = yield + = render_if_exists 'projects/protected_branches/ee/code_owner_approval_table', protected_branch: protected_branch + - if can_admin_project %td = link_to 'Unprotect', [@project.namespace.becomes(Namespace), @project, protected_branch, { update_section: 'js-protected-branches-settings' }], disabled: local_assigns[:disabled], data: { confirm: 'Branch will be writable for developers. Are you sure?' }, method: :delete, class: "btn btn-warning" -- cgit v1.2.3