summaryrefslogtreecommitdiff
path: root/app/controllers/projects/settings/repository_controller.rb
diff options
context:
space:
mode:
authorJames Edwards-Jones <jedwardsjones@gitlab.com>2017-03-17 19:55:15 +0000
committerJames Edwards-Jones <jedwardsjones@gitlab.com>2017-03-31 19:37:15 +0100
commitf51eac1df967856299467f65ac6fb81e2d610ff5 (patch)
treedb8fa2a5d9c71d70acb83b246b8145336d6d9ad2 /app/controllers/projects/settings/repository_controller.rb
parent91ed8ed687ee9edbda0098475e66ad41f886d7a5 (diff)
downloadgitlab-ce-f51eac1df967856299467f65ac6fb81e2d610ff5.tar.gz
Settings::RepositoryController includes protected tags in JS
Diffstat (limited to 'app/controllers/projects/settings/repository_controller.rb')
-rw-r--r--app/controllers/projects/settings/repository_controller.rb30
1 files changed, 23 insertions, 7 deletions
diff --git a/app/controllers/projects/settings/repository_controller.rb b/app/controllers/projects/settings/repository_controller.rb
index b6ce4abca45..5160ee5e1e4 100644
--- a/app/controllers/projects/settings/repository_controller.rb
+++ b/app/controllers/projects/settings/repository_controller.rb
@@ -7,22 +7,23 @@ module Projects
@deploy_keys = DeployKeysPresenter
.new(@project, current_user: current_user)
- define_protected_branches
+ define_protected_refs
end
private
- def define_protected_branches
- load_protected_branches
+ def define_protected_refs
+ @protected_branches = @project.protected_branches.order(:name).page(params[:page])
+ @protected_tags = @project.protected_tags.order(:name).page(params[:page])
@protected_branch = @project.protected_branches.new
+ @protected_tag = @project.protected_tags.new
load_gon_index
end
- def load_protected_branches
- @protected_branches = @project.protected_branches.order(:name).page(params[:page])
- end
def access_levels_options
+ #TODO: consider protected tags
+ #TODO: Refactor ProtectedBranch::PushAccessLevel so it doesn't mention branches
{
push_access_levels: {
roles: ProtectedBranch::PushAccessLevel.human_access_levels.map do |id, text|
@@ -37,13 +38,28 @@ module Projects
}
end
+ #TODO: Move to Protections::TagMatcher.new(project).unprotected
+ def unprotected_tags
+ exact_protected_tag_names = @project.protected_tags.reject(&:wildcard?).map(&:name)
+ tag_names = @project.repository.tags.map(&:name)
+ non_open_tag_names = Set.new(exact_protected_tag_names).intersection(Set.new(tag_names))
+ @project.repository.tags.reject { |tag| non_open_tag_names.include? tag.name }
+ end
+
+ def unprotected_tags_hash
+ tags = unprotected_tags.map { |tag| { text: tag.name, id: tag.name, title: tag.name } }
+ { open_tags: tags }
+ end
+
def open_branches
branches = @project.open_branches.map { |br| { text: br.name, id: br.name, title: br.name } }
{ open_branches: branches }
end
def load_gon_index
- gon.push(open_branches.merge(access_levels_options))
+ gon.push(open_branches)
+ gon.push(unprotected_tags_hash)
+ gon.push(access_levels_options)
end
end
end