Merge branch 'bvl-shared-views-for-protected-refs' into 'master'
Extract partials from the protected_branches & protected_tags views See merge request !12864
This commit is contained in:
commit
7324d86fa9
23 changed files with 258 additions and 213 deletions
|
@ -1,28 +1,4 @@
|
||||||
.panel.panel-default.protected-branches-list
|
- can_admin_project = can?(current_user, :admin_project, @project)
|
||||||
- if @protected_branches.empty?
|
|
||||||
.panel-heading
|
|
||||||
%h3.panel-title
|
|
||||||
Protected branch (#{@protected_branches.size})
|
|
||||||
%p.settings-message.text-center
|
|
||||||
There are currently no protected branches, protect a branch with the form above.
|
|
||||||
- else
|
|
||||||
- can_admin_project = can?(current_user, :admin_project, @project)
|
|
||||||
|
|
||||||
%table.table.table-bordered
|
= render layout: 'projects/protected_branches/shared/branches_list', locals: { can_admin_project: can_admin_project } do
|
||||||
%colgroup
|
= render partial: 'projects/protected_branches/protected_branch', collection: @protected_branches, locals: { can_admin_project: can_admin_project}
|
||||||
%col{ width: "25%" }
|
|
||||||
%col{ width: "30%" }
|
|
||||||
%col{ width: "25%" }
|
|
||||||
%col{ width: "20%" }
|
|
||||||
%thead
|
|
||||||
%tr
|
|
||||||
%th Protected branch (#{@protected_branches.size})
|
|
||||||
%th Last commit
|
|
||||||
%th Allowed to merge
|
|
||||||
%th Allowed to push
|
|
||||||
- if can_admin_project
|
|
||||||
%th
|
|
||||||
%tbody
|
|
||||||
= render partial: 'projects/protected_branches/protected_branch', collection: @protected_branches, locals: { can_admin_project: can_admin_project}
|
|
||||||
|
|
||||||
= paginate @protected_branches, theme: 'gitlab'
|
|
||||||
|
|
|
@ -1,41 +1,14 @@
|
||||||
= form_for [@project.namespace.becomes(Namespace), @project, @protected_branch] do |f|
|
- content_for :merge_access_levels do
|
||||||
.panel.panel-default
|
.merge_access_levels-container
|
||||||
.panel-heading
|
= dropdown_tag('Select',
|
||||||
%h3.panel-title
|
options: { toggle_class: 'js-allowed-to-merge wide',
|
||||||
Protect a branch
|
dropdown_class: 'dropdown-menu-selectable capitalize-header',
|
||||||
.panel-body
|
data: { field_name: 'protected_branch[merge_access_levels_attributes][0][access_level]', input_id: 'merge_access_levels_attributes' }})
|
||||||
.form-horizontal
|
- content_for :push_access_levels do
|
||||||
= form_errors(@protected_branch)
|
.push_access_levels-container
|
||||||
.form-group
|
= dropdown_tag('Select',
|
||||||
= f.label :name, class: 'col-md-2 text-right' do
|
options: { toggle_class: 'js-allowed-to-push wide',
|
||||||
Branch:
|
dropdown_class: 'dropdown-menu-selectable capitalize-header',
|
||||||
.col-md-10
|
data: { field_name: 'protected_branch[push_access_levels_attributes][0][access_level]', input_id: 'push_access_levels_attributes' }})
|
||||||
= render partial: "projects/protected_branches/dropdown", locals: { f: f }
|
|
||||||
.help-block
|
|
||||||
= link_to 'Wildcards', help_page_path('user/project/protected_branches', anchor: 'wildcard-protected-branches')
|
|
||||||
such as
|
|
||||||
%code *-stable
|
|
||||||
or
|
|
||||||
%code production/*
|
|
||||||
are supported
|
|
||||||
.form-group
|
|
||||||
%label.col-md-2.text-right{ for: 'merge_access_levels_attributes' }
|
|
||||||
Allowed to merge:
|
|
||||||
.col-md-10
|
|
||||||
.merge_access_levels-container
|
|
||||||
= dropdown_tag('Select',
|
|
||||||
options: { toggle_class: 'js-allowed-to-merge wide',
|
|
||||||
dropdown_class: 'dropdown-menu-selectable capitalize-header',
|
|
||||||
data: { field_name: 'protected_branch[merge_access_levels_attributes][0][access_level]', input_id: 'merge_access_levels_attributes' }})
|
|
||||||
.form-group
|
|
||||||
%label.col-md-2.text-right{ for: 'push_access_levels_attributes' }
|
|
||||||
Allowed to push:
|
|
||||||
.col-md-10
|
|
||||||
.push_access_levels-container
|
|
||||||
= dropdown_tag('Select',
|
|
||||||
options: { toggle_class: 'js-allowed-to-push wide',
|
|
||||||
dropdown_class: 'dropdown-menu-selectable capitalize-header',
|
|
||||||
data: { field_name: 'protected_branch[push_access_levels_attributes][0][access_level]', input_id: 'push_access_levels_attributes' }})
|
|
||||||
|
|
||||||
.panel-footer
|
= render 'projects/protected_branches/shared/create_protected_branch'
|
||||||
= f.submit 'Protect', class: 'btn-create btn', disabled: true
|
|
||||||
|
|
|
@ -1,26 +1,10 @@
|
||||||
- expanded = Rails.env.test?
|
|
||||||
- content_for :page_specific_javascripts do
|
- content_for :page_specific_javascripts do
|
||||||
= page_specific_javascript_bundle_tag('protected_branches')
|
= page_specific_javascript_bundle_tag('protected_branches')
|
||||||
|
|
||||||
%section.settings
|
- content_for :create_protected_branch do
|
||||||
.settings-header
|
= render 'projects/protected_branches/create_protected_branch'
|
||||||
%h4
|
|
||||||
Protected Branches
|
|
||||||
%button.btn.js-settings-toggle
|
|
||||||
= expanded ? 'Collapse' : 'Expand'
|
|
||||||
%p
|
|
||||||
Keep stable branches secure and force developers to use merge requests.
|
|
||||||
.settings-content.no-animate{ class: ('expanded' if expanded) }
|
|
||||||
%p
|
|
||||||
By default, protected branches are designed to:
|
|
||||||
%ul
|
|
||||||
%li prevent their creation, if not already created, from everybody except Masters
|
|
||||||
%li prevent pushes from everybody except Masters
|
|
||||||
%li prevent <strong>anyone</strong> from force pushing to the branch
|
|
||||||
%li prevent <strong>anyone</strong> from deleting the branch
|
|
||||||
%p Read more about #{link_to "protected branches", help_page_path("user/project/protected_branches"), class: "underlined-link"} and #{link_to "project permissions", help_page_path("user/permissions"), class: "underlined-link"}.
|
|
||||||
|
|
||||||
- if can? current_user, :admin_project, @project
|
- content_for :branches_list do
|
||||||
= render 'projects/protected_branches/create_protected_branch'
|
= render "projects/protected_branches/branches_list"
|
||||||
|
|
||||||
= render "projects/protected_branches/branches_list"
|
= render 'projects/protected_branches/shared/index'
|
||||||
|
|
|
@ -1,22 +1,2 @@
|
||||||
%tr.js-protected-branch-edit-form{ data: { url: project_protected_branch_path(@project, protected_branch) } }
|
= render layout: 'projects/protected_branches/shared/protected_branch', locals: { protected_branch: protected_branch } do
|
||||||
%td
|
|
||||||
%span.ref-name= protected_branch.name
|
|
||||||
|
|
||||||
- if @project.root_ref?(protected_branch.name)
|
|
||||||
%span.label.label-info.prepend-left-5 default
|
|
||||||
%td
|
|
||||||
- if protected_branch.wildcard?
|
|
||||||
- matching_branches = protected_branch.matching(repository.branches)
|
|
||||||
= link_to pluralize(matching_branches.count, "matching branch"), project_protected_branch_path(@project, protected_branch)
|
|
||||||
- else
|
|
||||||
- if commit = protected_branch.commit
|
|
||||||
= link_to(commit.short_id, project_commit_path(@project, commit.id), class: 'commit-sha')
|
|
||||||
= time_ago_with_tooltip(commit.committed_date)
|
|
||||||
- else
|
|
||||||
(branch was removed from repository)
|
|
||||||
|
|
||||||
= render partial: 'projects/protected_branches/update_protected_branch', locals: { protected_branch: protected_branch }
|
= render partial: 'projects/protected_branches/update_protected_branch', locals: { protected_branch: protected_branch }
|
||||||
|
|
||||||
- if can_admin_project
|
|
||||||
%td
|
|
||||||
= link_to 'Unprotect', [@project.namespace.becomes(Namespace), @project, protected_branch], data: { confirm: 'Branch will be writable for developers. Are you sure?' }, method: :delete, class: 'btn btn-warning'
|
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
.panel.panel-default.protected-branches-list
|
||||||
|
- if @protected_branches.empty?
|
||||||
|
.panel-heading
|
||||||
|
%h3.panel-title
|
||||||
|
Protected branch (#{@protected_branches.size})
|
||||||
|
%p.settings-message.text-center
|
||||||
|
There are currently no protected branches, protect a branch with the form above.
|
||||||
|
- else
|
||||||
|
%table.table.table-bordered
|
||||||
|
%colgroup
|
||||||
|
%col{ width: "20%" }
|
||||||
|
%col{ width: "20%" }
|
||||||
|
%col{ width: "20%" }
|
||||||
|
%col{ width: "20%" }
|
||||||
|
- if can_admin_project
|
||||||
|
%col
|
||||||
|
%thead
|
||||||
|
%tr
|
||||||
|
%th Protected branch (#{@protected_branches.size})
|
||||||
|
%th Last commit
|
||||||
|
%th Allowed to merge
|
||||||
|
%th Allowed to push
|
||||||
|
- if can_admin_project
|
||||||
|
%th
|
||||||
|
%tbody
|
||||||
|
= yield
|
||||||
|
|
||||||
|
= paginate @protected_branches, theme: 'gitlab'
|
|
@ -0,0 +1,33 @@
|
||||||
|
= form_for [@project.namespace.becomes(Namespace), @project, @protected_branch] do |f|
|
||||||
|
.panel.panel-default
|
||||||
|
.panel-heading
|
||||||
|
%h3.panel-title
|
||||||
|
Protect a branch
|
||||||
|
.panel-body
|
||||||
|
.form-horizontal
|
||||||
|
= form_errors(@protected_branch)
|
||||||
|
.form-group
|
||||||
|
= f.label :name, class: 'col-md-2 text-right' do
|
||||||
|
Branch:
|
||||||
|
.col-md-10
|
||||||
|
= render partial: "projects/protected_branches/shared/dropdown", locals: { f: f }
|
||||||
|
.help-block
|
||||||
|
= link_to 'Wildcards', help_page_path('user/project/protected_branches', anchor: 'wildcard-protected-branches')
|
||||||
|
such as
|
||||||
|
%code *-stable
|
||||||
|
or
|
||||||
|
%code production/*
|
||||||
|
are supported
|
||||||
|
.form-group
|
||||||
|
%label.col-md-2.text-right{ for: 'merge_access_levels_attributes' }
|
||||||
|
Allowed to merge:
|
||||||
|
.col-md-10
|
||||||
|
= yield :merge_access_levels
|
||||||
|
.form-group
|
||||||
|
%label.col-md-2.text-right{ for: 'push_access_levels_attributes' }
|
||||||
|
Allowed to push:
|
||||||
|
.col-md-10
|
||||||
|
= yield :push_access_levels
|
||||||
|
|
||||||
|
.panel-footer
|
||||||
|
= f.submit 'Protect', class: 'btn-create btn', disabled: true
|
|
@ -0,0 +1,24 @@
|
||||||
|
- expanded = Rails.env.test?
|
||||||
|
|
||||||
|
%section.settings
|
||||||
|
.settings-header
|
||||||
|
%h4
|
||||||
|
Protected Branches
|
||||||
|
%button.btn.js-settings-toggle
|
||||||
|
= expanded ? 'Collapse' : 'Expand'
|
||||||
|
%p
|
||||||
|
Keep stable branches secure and force developers to use merge requests.
|
||||||
|
.settings-content.no-animate{ class: ('expanded' if expanded) }
|
||||||
|
%p
|
||||||
|
By default, protected branches are designed to:
|
||||||
|
%ul
|
||||||
|
%li prevent their creation, if not already created, from everybody except Masters
|
||||||
|
%li prevent pushes from everybody except Masters
|
||||||
|
%li prevent <strong>anyone</strong> from force pushing to the branch
|
||||||
|
%li prevent <strong>anyone</strong> from deleting the branch
|
||||||
|
%p Read more about #{link_to "protected branches", help_page_path("user/project/protected_branches"), class: "underlined-link"} and #{link_to "project permissions", help_page_path("user/permissions"), class: "underlined-link"}.
|
||||||
|
|
||||||
|
- if can? current_user, :admin_project, @project
|
||||||
|
= content_for :create_protected_branch
|
||||||
|
|
||||||
|
= content_for :branches_list
|
|
@ -0,0 +1,24 @@
|
||||||
|
- can_admin_project = can?(current_user, :admin_project, @project)
|
||||||
|
|
||||||
|
%tr.js-protected-branch-edit-form{ data: { url: namespace_project_protected_branch_path(@project.namespace, @project, protected_branch) } }
|
||||||
|
%td
|
||||||
|
%span.ref-name= protected_branch.name
|
||||||
|
|
||||||
|
- if @project.root_ref?(protected_branch.name)
|
||||||
|
%span.label.label-info.prepend-left-5 default
|
||||||
|
%td
|
||||||
|
- if protected_branch.wildcard?
|
||||||
|
- matching_branches = protected_branch.matching(repository.branches)
|
||||||
|
= link_to pluralize(matching_branches.count, "matching branch"), namespace_project_protected_branch_path(@project.namespace, @project, protected_branch)
|
||||||
|
- else
|
||||||
|
- if commit = protected_branch.commit
|
||||||
|
= link_to(commit.short_id, namespace_project_commit_path(@project.namespace, @project, commit.id), class: 'commit-sha')
|
||||||
|
= time_ago_with_tooltip(commit.committed_date)
|
||||||
|
- else
|
||||||
|
(branch was removed from repository)
|
||||||
|
|
||||||
|
= yield
|
||||||
|
|
||||||
|
- if can_admin_project
|
||||||
|
%td
|
||||||
|
= link_to 'Unprotect', [@project.namespace.becomes(Namespace), @project, protected_branch], data: { confirm: 'Branch will be writable for developers. Are you sure?' }, method: :delete, class: 'btn btn-warning'
|
|
@ -19,7 +19,7 @@
|
||||||
%th Last commit
|
%th Last commit
|
||||||
%tbody
|
%tbody
|
||||||
- @matching_refs.each do |matching_branch|
|
- @matching_refs.each do |matching_branch|
|
||||||
= render partial: "matching_branch", object: matching_branch
|
= render partial: "projects/protected_branches/shared/matching_branch", object: matching_branch
|
||||||
- else
|
- else
|
||||||
%p.settings-message.text-center
|
%p.settings-message.text-center
|
||||||
Couldn't find any matching branches.
|
Couldn't find any matching branches.
|
||||||
|
|
|
@ -1,32 +1,8 @@
|
||||||
= form_for [@project.namespace.becomes(Namespace), @project, @protected_tag], html: { class: 'new-protected-tag js-new-protected-tag' } do |f|
|
- content_for :create_access_levels do
|
||||||
.panel.panel-default
|
.create_access_levels-container
|
||||||
.panel-heading
|
= dropdown_tag('Select',
|
||||||
%h3.panel-title
|
options: { toggle_class: 'js-allowed-to-create wide',
|
||||||
Protect a tag
|
dropdown_class: 'dropdown-menu-selectable',
|
||||||
.panel-body
|
data: { field_name: 'protected_tag[create_access_levels_attributes][0][access_level]', input_id: 'create_access_levels_attributes' }})
|
||||||
.form-horizontal
|
|
||||||
= form_errors(@protected_tag)
|
|
||||||
.form-group
|
|
||||||
= f.label :name, class: 'col-md-2 text-right' do
|
|
||||||
Tag:
|
|
||||||
.col-md-10.protected-tags-dropdown
|
|
||||||
= render partial: "projects/protected_tags/dropdown", locals: { f: f }
|
|
||||||
.help-block
|
|
||||||
= link_to 'Wildcards', help_page_path('user/project/protected_tags', anchor: 'wildcard-protected-tags')
|
|
||||||
such as
|
|
||||||
%code v*
|
|
||||||
or
|
|
||||||
%code *-release
|
|
||||||
are supported
|
|
||||||
.form-group
|
|
||||||
%label.col-md-2.text-right{ for: 'create_access_levels_attributes' }
|
|
||||||
Allowed to create:
|
|
||||||
.col-md-10
|
|
||||||
.create_access_levels-container
|
|
||||||
= dropdown_tag('Select',
|
|
||||||
options: { toggle_class: 'js-allowed-to-create wide',
|
|
||||||
dropdown_class: 'dropdown-menu-selectable',
|
|
||||||
data: { field_name: 'protected_tag[create_access_levels_attributes][0][access_level]', input_id: 'create_access_levels_attributes' }})
|
|
||||||
|
|
||||||
.panel-footer
|
= render 'projects/protected_tags/shared/create_protected_tag'
|
||||||
= f.submit 'Protect', class: 'btn-create btn', disabled: true
|
|
||||||
|
|
|
@ -1,26 +1,10 @@
|
||||||
- expanded = Rails.env.test?
|
|
||||||
- content_for :page_specific_javascripts do
|
- content_for :page_specific_javascripts do
|
||||||
= page_specific_javascript_bundle_tag('protected_tags')
|
= page_specific_javascript_bundle_tag('protected_tags')
|
||||||
|
|
||||||
%section.settings
|
- content_for :create_protected_tag do
|
||||||
.settings-header
|
= render 'projects/protected_tags/create_protected_tag'
|
||||||
%h4
|
|
||||||
Protected Tags
|
|
||||||
%button.btn.js-settings-toggle
|
|
||||||
= expanded ? 'Collapse' : 'Expand'
|
|
||||||
%p
|
|
||||||
Limit access to creating and updating tags.
|
|
||||||
.settings-content.no-animate{ class: ('expanded' if expanded) }
|
|
||||||
%p
|
|
||||||
By default, protected tags are designed to:
|
|
||||||
%ul
|
|
||||||
%li Prevent tag creation by everybody except Masters
|
|
||||||
%li Prevent <strong>anyone</strong> from updating the tag
|
|
||||||
%li Prevent <strong>anyone</strong> from deleting the tag
|
|
||||||
|
|
||||||
%p Read more about #{link_to "protected tags", help_page_path("user/project/protected_tags"), class: "underlined-link"}.
|
- content_for :tag_list do
|
||||||
|
= render "projects/protected_tags/tags_list"
|
||||||
|
|
||||||
- if can? current_user, :admin_project, @project
|
= render 'projects/protected_tags/shared/index'
|
||||||
= render 'projects/protected_tags/create_protected_tag'
|
|
||||||
|
|
||||||
= render "projects/protected_tags/tags_list"
|
|
||||||
|
|
|
@ -1,22 +1,2 @@
|
||||||
%tr.js-protected-tag-edit-form{ data: { url: project_protected_tag_path(@project, protected_tag) } }
|
= render layout: 'projects/protected_tags/shared/protected_tag', locals: { protected_tag: protected_tag } do
|
||||||
%td
|
|
||||||
%span.ref-name= protected_tag.name
|
|
||||||
|
|
||||||
- if @project.root_ref?(protected_tag.name)
|
|
||||||
%span.label.label-info.prepend-left-5 default
|
|
||||||
%td
|
|
||||||
- if protected_tag.wildcard?
|
|
||||||
- matching_tags = protected_tag.matching(repository.tags)
|
|
||||||
= link_to pluralize(matching_tags.count, "matching tag"), project_protected_tag_path(@project, protected_tag)
|
|
||||||
- else
|
|
||||||
- if commit = protected_tag.commit
|
|
||||||
= link_to(commit.short_id, project_commit_path(@project, commit.id), class: 'commit-sha')
|
|
||||||
= time_ago_with_tooltip(commit.committed_date)
|
|
||||||
- else
|
|
||||||
(tag was removed from repository)
|
|
||||||
|
|
||||||
= render partial: 'projects/protected_tags/update_protected_tag', locals: { protected_tag: protected_tag }
|
= render partial: 'projects/protected_tags/update_protected_tag', locals: { protected_tag: protected_tag }
|
||||||
|
|
||||||
- if can_admin_project
|
|
||||||
%td
|
|
||||||
= link_to 'Unprotect', [@project.namespace.becomes(Namespace), @project, protected_tag], data: { confirm: 'Tag will be writable for developers. Are you sure?' }, method: :delete, class: 'btn btn-warning'
|
|
||||||
|
|
|
@ -1,30 +1,4 @@
|
||||||
.panel.panel-default.protected-tags-list
|
- can_admin_project = can?(current_user, :admin_project, @project)
|
||||||
- if @protected_tags.empty?
|
|
||||||
.panel-heading
|
|
||||||
%h3.panel-title
|
|
||||||
Protected tag (#{@protected_tags.size})
|
|
||||||
%p.settings-message.text-center
|
|
||||||
There are currently no protected tags, protect a tag with the form above.
|
|
||||||
- else
|
|
||||||
- can_admin_project = can?(current_user, :admin_project, @project)
|
|
||||||
|
|
||||||
%table.table.table-bordered
|
= render layout: 'projects/protected_tags/shared/tags_list' do
|
||||||
%colgroup
|
= render partial: 'projects/protected_tags/protected_tag', collection: @protected_tags, locals: { can_admin_project: can_admin_project}
|
||||||
%col{ width: "25%" }
|
|
||||||
%col{ width: "25%" }
|
|
||||||
%col{ width: "50%" }
|
|
||||||
- if can_admin_project
|
|
||||||
%col
|
|
||||||
%thead
|
|
||||||
%tr
|
|
||||||
%th Protected tag (#{@protected_tags.size})
|
|
||||||
%th Last commit
|
|
||||||
%th Allowed to create
|
|
||||||
- if can_admin_project
|
|
||||||
%th
|
|
||||||
%tbody
|
|
||||||
%tr
|
|
||||||
%td.flash-container{ colspan: 4 }
|
|
||||||
= render partial: 'projects/protected_tags/protected_tag', collection: @protected_tags, locals: { can_admin_project: can_admin_project}
|
|
||||||
|
|
||||||
= paginate @protected_tags, theme: 'gitlab'
|
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
= form_for [@project.namespace.becomes(Namespace), @project, @protected_tag], html: { class: 'new-protected-tag js-new-protected-tag' } do |f|
|
||||||
|
.panel.panel-default
|
||||||
|
.panel-heading
|
||||||
|
%h3.panel-title
|
||||||
|
Protect a tag
|
||||||
|
.panel-body
|
||||||
|
.form-horizontal
|
||||||
|
= form_errors(@protected_tag)
|
||||||
|
.form-group
|
||||||
|
= f.label :name, class: 'col-md-2 text-right' do
|
||||||
|
Tag:
|
||||||
|
.col-md-10.protected-tags-dropdown
|
||||||
|
= render partial: "projects/protected_tags/shared/dropdown", locals: { f: f }
|
||||||
|
.help-block
|
||||||
|
= link_to 'Wildcards', help_page_path('user/project/protected_tags', anchor: 'wildcard-protected-tags')
|
||||||
|
such as
|
||||||
|
%code v*
|
||||||
|
or
|
||||||
|
%code *-release
|
||||||
|
are supported
|
||||||
|
.form-group
|
||||||
|
%label.col-md-2.text-right{ for: 'create_access_levels_attributes' }
|
||||||
|
Allowed to create:
|
||||||
|
.col-md-10
|
||||||
|
.create_access_levels-container
|
||||||
|
= yield :create_access_levels
|
||||||
|
|
||||||
|
.panel-footer
|
||||||
|
= f.submit 'Protect', class: 'btn-create btn', disabled: true
|
24
app/views/projects/protected_tags/shared/_index.html.haml
Normal file
24
app/views/projects/protected_tags/shared/_index.html.haml
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
- expanded = Rails.env.test?
|
||||||
|
|
||||||
|
%section.settings
|
||||||
|
.settings-header
|
||||||
|
%h4
|
||||||
|
Protected Tags
|
||||||
|
%button.btn.js-settings-toggle
|
||||||
|
= expanded ? 'Collapse' : 'Expand'
|
||||||
|
%p
|
||||||
|
Limit access to creating and updating tags.
|
||||||
|
.settings-content.no-animate{ class: ('expanded' if expanded) }
|
||||||
|
%p
|
||||||
|
By default, protected tags are designed to:
|
||||||
|
%ul
|
||||||
|
%li Prevent tag creation by everybody except Masters
|
||||||
|
%li Prevent <strong>anyone</strong> from updating the tag
|
||||||
|
%li Prevent <strong>anyone</strong> from deleting the tag
|
||||||
|
|
||||||
|
%p Read more about #{link_to "protected tags", help_page_path("user/project/protected_tags"), class: "underlined-link"}.
|
||||||
|
|
||||||
|
- if can? current_user, :admin_project, @project
|
||||||
|
= yield :create_protected_tag
|
||||||
|
|
||||||
|
= yield :tag_list
|
|
@ -0,0 +1,22 @@
|
||||||
|
%tr.js-protected-tag-edit-form{ data: { url: project_protected_tag_path(@project, protected_tag) } }
|
||||||
|
%td
|
||||||
|
%span.ref-name= protected_tag.name
|
||||||
|
|
||||||
|
- if @project.root_ref?(protected_tag.name)
|
||||||
|
%span.label.label-info.prepend-left-5 default
|
||||||
|
%td
|
||||||
|
- if protected_tag.wildcard?
|
||||||
|
- matching_tags = protected_tag.matching(repository.tags)
|
||||||
|
= link_to pluralize(matching_tags.count, "matching tag"), project_protected_tag_path(@project, protected_tag)
|
||||||
|
- else
|
||||||
|
- if commit = protected_tag.commit
|
||||||
|
= link_to(commit.short_id, project_commit_path(@project, commit.id), class: 'commit-sha')
|
||||||
|
= time_ago_with_tooltip(commit.committed_date)
|
||||||
|
- else
|
||||||
|
(tag was removed from repository)
|
||||||
|
|
||||||
|
= yield
|
||||||
|
|
||||||
|
- if can? current_user, :admin_project, @project
|
||||||
|
%td
|
||||||
|
= link_to 'Unprotect', [@project.namespace.becomes(Namespace), @project, protected_tag], data: { confirm: 'Tag will be writable for developers. Are you sure?' }, method: :delete, class: 'btn btn-warning'
|
|
@ -0,0 +1,30 @@
|
||||||
|
.panel.panel-default.protected-tags-list
|
||||||
|
- if @protected_tags.empty?
|
||||||
|
.panel-heading
|
||||||
|
%h3.panel-title
|
||||||
|
Protected tag (#{@protected_tags.size})
|
||||||
|
%p.settings-message.text-center
|
||||||
|
There are currently no protected tags, protect a tag with the form above.
|
||||||
|
- else
|
||||||
|
- can_admin_project = can?(current_user, :admin_project, @project)
|
||||||
|
|
||||||
|
%table.table.table-bordered
|
||||||
|
%colgroup
|
||||||
|
%col{ width: "25%" }
|
||||||
|
%col{ width: "25%" }
|
||||||
|
%col{ width: "50%" }
|
||||||
|
- if can_admin_project
|
||||||
|
%col
|
||||||
|
%thead
|
||||||
|
%tr
|
||||||
|
%th Protected tag (#{@protected_tags.size})
|
||||||
|
%th Last commit
|
||||||
|
%th Allowed to create
|
||||||
|
- if can_admin_project
|
||||||
|
%th
|
||||||
|
%tbody
|
||||||
|
%tr
|
||||||
|
%td.flash-container{ colspan: 4 }
|
||||||
|
= yield
|
||||||
|
|
||||||
|
= paginate @protected_tags, theme: 'gitlab'
|
|
@ -19,7 +19,7 @@
|
||||||
%th Last commit
|
%th Last commit
|
||||||
%tbody
|
%tbody
|
||||||
- @matching_refs.each do |matching_tag|
|
- @matching_refs.each do |matching_tag|
|
||||||
= render partial: "matching_tag", object: matching_tag
|
= render partial: "projects/protected_tags/shared/matching_tag", object: matching_tag
|
||||||
- else
|
- else
|
||||||
%p.settings-message.text-center
|
%p.settings-message.text-center
|
||||||
Couldn't find any matching tags.
|
Couldn't find any matching tags.
|
||||||
|
|
|
@ -6,6 +6,10 @@
|
||||||
= page_specific_javascript_bundle_tag('common_vue')
|
= page_specific_javascript_bundle_tag('common_vue')
|
||||||
= page_specific_javascript_bundle_tag('deploy_keys')
|
= page_specific_javascript_bundle_tag('deploy_keys')
|
||||||
|
|
||||||
|
-# Protected branches & tags use a lot of nested partials.
|
||||||
|
-# The shared parts of the views can be found in the `shared` directory.
|
||||||
|
-# Those are used throughout the actual views. These `shared` views are then
|
||||||
|
-# reused in EE.
|
||||||
= render "projects/protected_branches/index"
|
= render "projects/protected_branches/index"
|
||||||
= render "projects/protected_tags/index"
|
= render "projects/protected_tags/index"
|
||||||
= render @deploy_keys
|
= render @deploy_keys
|
||||||
|
|
Loading…
Reference in a new issue