diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-05-23 14:25:55 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-05-23 14:25:55 +0300 |
commit | 695fd3cf2c7e01d06e9c335cae208089a4c6bfbd (patch) | |
tree | da03740535eb2c9d05262f5c760bba4b1346e06a /app | |
parent | 8ae2d2152b197931725a3f4b9aa3697f37988c20 (diff) | |
download | gitlab-ce-695fd3cf2c7e01d06e9c335cae208089a4c6bfbd.tar.gz |
Move protected branches to Project settings
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/projects/branches_controller.rb | 4 | ||||
-rw-r--r-- | app/controllers/projects/protected_branches_controller.rb | 4 | ||||
-rw-r--r-- | app/helpers/tab_helper.rb | 2 | ||||
-rw-r--r-- | app/models/repository.rb | 21 | ||||
-rw-r--r-- | app/views/layouts/nav/_project.html.haml | 2 | ||||
-rw-r--r-- | app/views/projects/_settings_nav.html.haml | 4 | ||||
-rw-r--r-- | app/views/projects/branches/_branch.html.haml | 10 | ||||
-rw-r--r-- | app/views/projects/branches/_filter.html.haml | 27 | ||||
-rw-r--r-- | app/views/projects/branches/index.html.haml | 39 | ||||
-rw-r--r-- | app/views/projects/branches/recent.html.haml | 8 | ||||
-rw-r--r-- | app/views/projects/commits/_head.html.haml | 4 | ||||
-rw-r--r-- | app/views/projects/protected_branches/index.html.haml | 96 |
12 files changed, 108 insertions, 113 deletions
diff --git a/app/controllers/projects/branches_controller.rb b/app/controllers/projects/branches_controller.rb index 00811f17adb..8c70ae45f06 100644 --- a/app/controllers/projects/branches_controller.rb +++ b/app/controllers/projects/branches_controller.rb @@ -7,7 +7,9 @@ class Projects::BranchesController < Projects::ApplicationController before_filter :authorize_push!, only: [:create, :destroy] def index - @branches = Kaminari.paginate_array(@repository.branches).page(params[:page]).per(30) + @sort = params[:sort] || 'name' + @branches = @repository.branches_sorted_by(@sort) + @branches = Kaminari.paginate_array(@branches).page(params[:page]).per(30) end def recent diff --git a/app/controllers/projects/protected_branches_controller.rb b/app/controllers/projects/protected_branches_controller.rb index cfc1bd99a20..e39e97af8dd 100644 --- a/app/controllers/projects/protected_branches_controller.rb +++ b/app/controllers/projects/protected_branches_controller.rb @@ -1,9 +1,9 @@ class Projects::ProtectedBranchesController < Projects::ApplicationController # Authorize - before_filter :authorize_read_project! before_filter :require_non_empty_project + before_filter :authorize_admin_project! - before_filter :authorize_admin_project!, only: [:destroy, :create] + layout "project_settings" def index @branches = @project.protected_branches.to_a diff --git a/app/helpers/tab_helper.rb b/app/helpers/tab_helper.rb index bd373c5f3cf..610175f8447 100644 --- a/app/helpers/tab_helper.rb +++ b/app/helpers/tab_helper.rb @@ -75,7 +75,7 @@ module TabHelper def project_tab_class return "active" if current_page?(controller: "/projects", action: :edit, id: @project) - if ['services', 'hooks', 'deploy_keys', 'team_members'].include? controller.controller_name + if ['services', 'hooks', 'deploy_keys', 'team_members', 'protected_branches'].include? controller.controller_name "active" end end diff --git a/app/models/repository.rb b/app/models/repository.rb index eadc34127c2..b7239236aea 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -55,12 +55,6 @@ class Repository tags.find { |tag| tag.name == name } end - def recent_branches(limit = 20) - branches.sort do |a, b| - commit(b.target).committed_date <=> commit(a.target).committed_date - end[0..limit] - end - def add_branch(branch_name, ref) Rails.cache.delete(cache_key(:branch_names)) @@ -220,4 +214,19 @@ class Repository def clean_old_archives Gitlab::Popen.popen(%W(find #{Gitlab.config.gitlab.repository_downloads_path} -mmin +120 -delete)) end + + def branches_sorted_by(value) + case value + when 'recently_updated' + branches.sort do |a, b| + commit(b.target).committed_date <=> commit(a.target).committed_date + end + when 'last_updated' + branches.sort do |a, b| + commit(a.target).committed_date <=> commit(b.target).committed_date + end + else + branches + end + end end diff --git a/app/views/layouts/nav/_project.html.haml b/app/views/layouts/nav/_project.html.haml index 1f70cf17987..d7d330e2a61 100644 --- a/app/views/layouts/nav/_project.html.haml +++ b/app/views/layouts/nav/_project.html.haml @@ -8,7 +8,7 @@ = link_to 'Files', project_tree_path(@project, @ref || @repository.root_ref) - if project_nav_tab? :commits - = nav_link(controller: %w(commit commits compare repositories protected_branches tags branches)) do + = nav_link(controller: %w(commit commits compare repositories tags branches)) do = link_to "Commits", project_commits_path(@project, @ref || @repository.root_ref) - if project_nav_tab? :network diff --git a/app/views/projects/_settings_nav.html.haml b/app/views/projects/_settings_nav.html.haml index 4c7b088ae9a..9b73f06a5be 100644 --- a/app/views/projects/_settings_nav.html.haml +++ b/app/views/projects/_settings_nav.html.haml @@ -19,3 +19,7 @@ = link_to project_services_path(@project) do %i.icon-cogs Services + = nav_link(controller: :protected_branches) do + = link_to project_protected_branches_path(@project) do + %i.icon-lock + Protected branches diff --git a/app/views/projects/branches/_branch.html.haml b/app/views/projects/branches/_branch.html.haml index 87f4dd88c27..a5f382c9a5c 100644 --- a/app/views/projects/branches/_branch.html.haml +++ b/app/views/projects/branches/_branch.html.haml @@ -8,6 +8,7 @@ - if @project.protected_branch? branch.name %span.label.label-success %i.icon-lock + protected .pull-right - if can?(current_user, :download_code, @project) = render 'projects/repositories/download_archive', ref: branch.name, btn_class: 'btn-grouped btn-group-small' @@ -21,13 +22,8 @@ %i.icon-trash - if commit - %p - = link_to project_commit_path(@project, commit.id), class: 'commit_short_id' do - = commit.short_id - = image_tag avatar_icon(commit.author_email), class: "avatar s16", alt: '' - %span.light - = gfm escape_once(truncate(commit.title, length: 40)) - #{time_ago_with_tooltip(commit.committed_date)} + %ul.list-unstyled + = render 'projects/commits/inline_commit', commit: commit, project: @project - else %p Cant find HEAD commit for this branch diff --git a/app/views/projects/branches/_filter.html.haml b/app/views/projects/branches/_filter.html.haml deleted file mode 100644 index 7e1478292e0..00000000000 --- a/app/views/projects/branches/_filter.html.haml +++ /dev/null @@ -1,27 +0,0 @@ -%ul.nav.nav-pills.nav-stacked - = nav_link(path: 'branches#recent') do - = link_to recent_project_branches_path(@project) do - Recent - .pull-right - = @repository.recent_branches.count - - = nav_link(path: 'protected_branches#index') do - = link_to project_protected_branches_path(@project) do - Protected - %i.icon-lock - .pull-right - = @project.protected_branches.count - - = nav_link(path: 'branches#index') do - = link_to project_branches_path(@project) do - All branches - .pull-right - = @repository.branch_names.count - - -%hr -- if can? current_user, :push_code, @project - = link_to new_project_branch_path(@project), class: 'btn btn-create' do - %i.icon-add-sign - New branch - diff --git a/app/views/projects/branches/index.html.haml b/app/views/projects/branches/index.html.haml index bee04eb013e..8bc4a8f7e98 100644 --- a/app/views/projects/branches/index.html.haml +++ b/app/views/projects/branches/index.html.haml @@ -1,10 +1,31 @@ = render "projects/commits/head" -.row - .col-md-3 - = render "filter" - .col-md-9 - - unless @branches.empty? - %ul.bordered-list.top-list.all-branches - - @branches.each do |branch| - = render "projects/branches/branch", branch: branch - = paginate @branches, theme: 'gitlab' +%h3.page-title + Branches + .pull-right + - if can? current_user, :push_code, @project + = link_to new_project_branch_path(@project), class: 'btn btn-create' do + %i.icon-add-sign + New branch + + .dropdown.inline + %a.dropdown-toggle.btn{href: '#', "data-toggle" => "dropdown"} + %span.light sort: + - if @sort.present? + = @sort.humanize + - else + Name + %b.caret + %ul.dropdown-menu + %li + = link_to project_branches_path(sort: nil) do + Name + = link_to project_branches_path(sort: 'recently_updated') do + Recently updated + = link_to project_branches_path(sort: 'last_updated') do + Last updated +%hr +- unless @branches.empty? + %ul.bordered-list.top-list.all-branches + - @branches.each do |branch| + = render "projects/branches/branch", branch: branch + = paginate @branches, theme: 'gitlab' diff --git a/app/views/projects/branches/recent.html.haml b/app/views/projects/branches/recent.html.haml deleted file mode 100644 index 37d7919121e..00000000000 --- a/app/views/projects/branches/recent.html.haml +++ /dev/null @@ -1,8 +0,0 @@ -= render "projects/commits/head" -.row - .col-md-3 - = render "filter" - .col-md-9 - %ul.bordered-list.top-list - - @branches.each do |branch| - = render "projects/branches/branch", branch: branch diff --git a/app/views/projects/commits/_head.html.haml b/app/views/projects/commits/_head.html.haml index 81e33743911..0facfc4b5f1 100644 --- a/app/views/projects/commits/_head.html.haml +++ b/app/views/projects/commits/_head.html.haml @@ -7,9 +7,9 @@ = link_to 'Compare', project_compare_index_path(@project, from: @repository.root_ref, to: @ref || @repository.root_ref) = nav_link(html_options: {class: branches_tab_class}) do - = link_to recent_project_branches_path(@project) do + = link_to project_branches_path(@project) do Branches - %span.badge= @repository.branches.length + %span.badge= @repository.branches.size = nav_link(controller: :tags) do = link_to project_tags_path(@project) do diff --git a/app/views/projects/protected_branches/index.html.haml b/app/views/projects/protected_branches/index.html.haml index e9f67b671bf..e51bf1d3a8c 100644 --- a/app/views/projects/protected_branches/index.html.haml +++ b/app/views/projects/protected_branches/index.html.haml @@ -1,52 +1,50 @@ -= render "projects/commits/head" -.row - .col-md-3 - = render "projects/branches/filter" - .col-md-9 - .bs-callout.bs-callout-info - %p Protected branches designed to - %ul - %li prevent push for all except #{link_to "masters", help_permissions_path, class: "vlink"}. - %li prevent branch from force push - %li prevent branch from removal - %p This ability allows to keep stable branches secured and force code review before merge to protected branches - %p Read more about project permissions #{link_to "here", help_permissions_path, class: "underlined-link"} +%h3.page-title Protected branches +%p.light This ability allows to keep stable branches secured and force code review before merge to protected branches +%hr - - if can? current_user, :admin_project, @project - = form_for [@project, @protected_branch], html: { class: 'form-horizontal' } do |f| - -if @protected_branch.errors.any? - .alert.alert-danger - %ul - - @protected_branch.errors.full_messages.each do |msg| - %li= msg +.bs-callout.bs-callout-info + %p Protected branches designed to + %ul + %li prevent push for all except #{link_to "masters", help_permissions_path, class: "vlink"}. + %li prevent branch from force push + %li prevent branch from removal + %p Read more about project permissions #{link_to "here", help_permissions_path, class: "underlined-link"} - .form-group - = f.label :name, "Branch", class: 'control-label' - .col-sm-10 - = f.select(:name, @project.open_branches.map { |br| [br.name, br.name] } , {include_blank: "Select branch"}, {class: "select2"}) - .form-actions - = f.submit 'Protect', class: "btn-create btn" - - unless @branches.empty? - %h5 Already Protected: - %ul.bordered-list.protected-branches-list - - @branches.each do |branch| - %li - %h4 - = link_to project_commits_path(@project, branch.name) do - %strong= branch.name - - if @project.root_ref?(branch.name) - %span.label.label-info default - %span.label.label-success - %i.icon-lock - .pull-right - - if can? current_user, :admin_project, @project - = link_to 'Unprotect', [@project, branch], data: { confirm: 'Branch will be writable for developers. Are you sure?' }, method: :delete, class: "btn btn-remove btn-small" +- if can? current_user, :admin_project, @project + = form_for [@project, @protected_branch], html: { class: 'form-horizontal' } do |f| + -if @protected_branch.errors.any? + .alert.alert-danger + %ul + - @protected_branch.errors.full_messages.each do |msg| + %li= msg - - if commit = branch.commit - = link_to project_commit_path(@project, commit.id), class: 'commit_short_id' do - = commit.short_id - %span.light - = gfm escape_once(truncate(commit.title, length: 40)) - #{time_ago_with_tooltip(commit.committed_date)} - - else - (branch was removed from repository) + .form-group + = f.label :name, "Branch", class: 'control-label' + .col-sm-10 + = f.select(:name, @project.open_branches.map { |br| [br.name, br.name] } , {include_blank: "Select branch"}, {class: "select2"}) + .form-actions + = f.submit 'Protect', class: "btn-create btn" +- unless @branches.empty? + %h5 Already Protected: + %ul.bordered-list.protected-branches-list + - @branches.each do |branch| + %li + %h4 + = link_to project_commits_path(@project, branch.name) do + %strong= branch.name + - if @project.root_ref?(branch.name) + %span.label.label-info default + %span.label.label-success + %i.icon-lock + .pull-right + - if can? current_user, :admin_project, @project + = link_to 'Unprotect', [@project, branch], data: { confirm: 'Branch will be writable for developers. Are you sure?' }, method: :delete, class: "btn btn-remove btn-small" + + - if commit = branch.commit + = link_to project_commit_path(@project, commit.id), class: 'commit_short_id' do + = commit.short_id + %span.light + = gfm escape_once(truncate(commit.title, length: 40)) + #{time_ago_with_tooltip(commit.committed_date)} + - else + (branch was removed from repository) |