Commit 73692f215a2bcca051fd2d951243e276e91b0978
Exists in
master
and in
4 other branches
Merge pull request #888 from gitlabhq/remove_sorce_branch_after_merge
ability to remove source branch after merge
Showing
7 changed files
with
85 additions
and
15 deletions
Show diff stats
app/assets/stylesheets/common.scss
| ... | ... | @@ -714,6 +714,19 @@ p.time { |
| 714 | 714 | text-align:center; |
| 715 | 715 | float:left; |
| 716 | 716 | margin-right:20px; |
| 717 | + | |
| 718 | + &.success { | |
| 719 | + background: #5BB75B; | |
| 720 | + color: white; | |
| 721 | + text-shadow: 0 1px #111; | |
| 722 | + border-color: #9A9; | |
| 723 | + } | |
| 724 | + &.error { | |
| 725 | + background: #DA4E49; | |
| 726 | + border-color: #BD362F; | |
| 727 | + color: white; | |
| 728 | + text-shadow: 0 1px #111; | |
| 729 | + } | |
| 717 | 730 | } |
| 718 | 731 | |
| 719 | 732 | .arrow{ |
| ... | ... | @@ -864,15 +877,36 @@ li.note { |
| 864 | 877 | background: #DFF0D8; |
| 865 | 878 | } |
| 866 | 879 | |
| 867 | - .accept_merge_request { | |
| 868 | - color: #fff; | |
| 869 | - text-shadow: 0 1px 1px #222; | |
| 870 | - background: #5bb75b;; | |
| 871 | - &:hover { | |
| 872 | - background-color: #51a351; | |
| 873 | - color: #fff; | |
| 880 | + | |
| 881 | + form { | |
| 882 | + margin-bottom:0; | |
| 883 | + .clearfix { | |
| 884 | + margin-bottom:0; | |
| 874 | 885 | } |
| 875 | 886 | } |
| 887 | + | |
| 888 | + .accept_group { | |
| 889 | + float:left; | |
| 890 | + border: 1px solid #ADA; | |
| 891 | + padding: 2px; | |
| 892 | + @include border-radius(5px); | |
| 893 | + border-radius: 5px; | |
| 894 | + background: #CEB; | |
| 895 | + | |
| 896 | + .accept_merge_request { | |
| 897 | + float:left; | |
| 898 | + } | |
| 899 | + .remove_branch_holder { | |
| 900 | + margin-left:20px; | |
| 901 | + margin-right:10px; | |
| 902 | + float:left; | |
| 903 | + } | |
| 904 | + label { | |
| 905 | + color:#444; | |
| 906 | + } | |
| 907 | + } | |
| 908 | + | |
| 909 | + | |
| 876 | 910 | .how_to_merge_link { |
| 877 | 911 | @extend .primary; |
| 878 | 912 | } | ... | ... |
app/assets/stylesheets/gitlab_bootstrap.scss
| ... | ... | @@ -127,6 +127,18 @@ table { |
| 127 | 127 | @extend .btn-primary; |
| 128 | 128 | } |
| 129 | 129 | |
| 130 | + &.success { | |
| 131 | + color: #fff; | |
| 132 | + text-shadow: 0 0 1px #111; | |
| 133 | + background: #5bb75b;; | |
| 134 | + font-weight: bold; | |
| 135 | + | |
| 136 | + &:hover { | |
| 137 | + background-color: #51a351; | |
| 138 | + color: #fff; | |
| 139 | + } | |
| 140 | + } | |
| 141 | + | |
| 130 | 142 | &.danger, |
| 131 | 143 | &.btn-danger { |
| 132 | 144 | color:#fff; | ... | ... |
app/controllers/merge_requests_controller.rb
| ... | ... | @@ -109,6 +109,7 @@ class MergeRequestsController < ApplicationController |
| 109 | 109 | def automerge |
| 110 | 110 | return access_denied! unless can?(current_user, :accept_mr, @project) |
| 111 | 111 | if @merge_request.open? && @merge_request.can_be_merged? |
| 112 | + @merge_request.should_remove_source_branch = params[:should_remove_source_branch] | |
| 112 | 113 | @merge_request.automerge!(current_user) |
| 113 | 114 | @status = true |
| 114 | 115 | else | ... | ... |
app/models/merge_request.rb
| ... | ... | @@ -14,7 +14,8 @@ class MergeRequest < ActiveRecord::Base |
| 14 | 14 | serialize :st_diffs |
| 15 | 15 | |
| 16 | 16 | attr_protected :author, :author_id, :project, :project_id |
| 17 | - attr_accessor :author_id_of_changes | |
| 17 | + attr_accessor :author_id_of_changes, | |
| 18 | + :should_remove_source_branch | |
| 18 | 19 | |
| 19 | 20 | validates_presence_of :project_id |
| 20 | 21 | validates_presence_of :assignee_id |
| ... | ... | @@ -188,7 +189,7 @@ class MergeRequest < ActiveRecord::Base |
| 188 | 189 | self.merge!(current_user.id) |
| 189 | 190 | true |
| 190 | 191 | end |
| 191 | - rescue | |
| 192 | + rescue | |
| 192 | 193 | self.mark_as_unmergable |
| 193 | 194 | false |
| 194 | 195 | end | ... | ... |
app/models/project/repository_trait.rb
app/views/merge_requests/show.html.haml
| ... | ... | @@ -8,7 +8,7 @@ |
| 8 | 8 | %span.right |
| 9 | 9 | - if can?(current_user, :modify_merge_request, @merge_request) |
| 10 | 10 | - if @merge_request.open? |
| 11 | - = link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "btn small padded", :title => "Close merge request" | |
| 11 | + = link_to 'Close', project_merge_request_path(@project, @merge_request, :merge_request => {:closed => true }, :status_only => true), :method => :put, :class => "btn small padded danger", :title => "Close merge request" | |
| 12 | 12 | = link_to edit_project_merge_request_path(@project, @merge_request), :class => "btn small padded" do |
| 13 | 13 | %i.icon-edit |
| 14 | 14 | Edit |
| ... | ... | @@ -62,9 +62,21 @@ |
| 62 | 62 | .automerge_widget.can_be_merged{:style => "display:none"} |
| 63 | 63 | .alert.alert-success |
| 64 | 64 | %span |
| 65 | - = link_to "Accept Merge Request", automerge_project_merge_request_path(@project, @merge_request), :class => "btn small info accept_merge_request", :remote => true | |
| 66 | - | |
| 67 | - You can accept this request automatically. If you still want to do it manually - #{link_to "click here", "#", :class => "how_to_merge_link vlink", :title => "How To Merge"} for instructions | |
| 65 | + = form_for [:automerge, @project, @merge_request], :remote => true, :method => :get do |f| | |
| 66 | + %p | |
| 67 | + You can accept this request automatically. | |
| 68 | + If you still want to do it manually - | |
| 69 | + %strong= link_to "click here", "#", :class => "how_to_merge_link vlink", :title => "How To Merge" | |
| 70 | + for instructions | |
| 71 | + .accept_group | |
| 72 | + = f.submit "Accept Merge Request", :class => "btn small success accept_merge_request" | |
| 73 | + - unless @project.root_ref? @merge_request.source_branch | |
| 74 | + .remove_branch_holder | |
| 75 | + = label_tag :should_remove_source_branch, :class => "checkbox" do | |
| 76 | + = check_box_tag :should_remove_source_branch | |
| 77 | + Remove source-branch | |
| 78 | + .clearfix | |
| 79 | + | |
| 68 | 80 | |
| 69 | 81 | .automerge_widget.cannot_be_merged{:style => "display:none"} |
| 70 | 82 | .alert.alert-info |
| ... | ... | @@ -108,7 +120,7 @@ |
| 108 | 120 | current_state: "#{@merge_request.human_state}" |
| 109 | 121 | }); |
| 110 | 122 | |
| 111 | - $(".accept_merge_request").live("ajax:beforeSend", function() { | |
| 123 | + $(".edit_merge_request").live("ajax:beforeSend", function() { | |
| 112 | 124 | $(this).replaceWith('#{image_tag "ajax_loader.gif"}'); |
| 113 | 125 | }) |
| 114 | 126 | }) | ... | ... |
lib/gitlab/merge.rb
| ... | ... | @@ -37,7 +37,7 @@ module Gitlab |
| 37 | 37 | unless project.satellite.exists? |
| 38 | 38 | raise "You should run: rake gitlab:app:enable_automerge" |
| 39 | 39 | end |
| 40 | - | |
| 40 | + | |
| 41 | 41 | project.satellite.clear |
| 42 | 42 | |
| 43 | 43 | Dir.chdir(project.satellite.path) do |
| ... | ... | @@ -48,6 +48,12 @@ module Gitlab |
| 48 | 48 | merge_repo.git.sh "git config user.email \"#{user.email}\"" |
| 49 | 49 | merge_repo.git.sh "git checkout -b #{merge_request.target_branch} origin/#{merge_request.target_branch}" |
| 50 | 50 | output = merge_repo.git.pull({}, "--no-ff", "origin", merge_request.source_branch) |
| 51 | + | |
| 52 | + #remove source-branch | |
| 53 | + if merge_request.should_remove_source_branch && !project.root_ref?(merge_request.source_branch) | |
| 54 | + merge_repo.git.sh "git push origin :#{merge_request.source_branch}" | |
| 55 | + end | |
| 56 | + | |
| 51 | 57 | yield(merge_repo, output) |
| 52 | 58 | end |
| 53 | 59 | end | ... | ... |