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,6 +714,19 @@ p.time { | ||
714 | text-align:center; | 714 | text-align:center; |
715 | float:left; | 715 | float:left; |
716 | margin-right:20px; | 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 | .arrow{ | 732 | .arrow{ |
@@ -864,15 +877,36 @@ li.note { | @@ -864,15 +877,36 @@ li.note { | ||
864 | background: #DFF0D8; | 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 | .how_to_merge_link { | 910 | .how_to_merge_link { |
877 | @extend .primary; | 911 | @extend .primary; |
878 | } | 912 | } |
app/assets/stylesheets/gitlab_bootstrap.scss
@@ -127,6 +127,18 @@ table { | @@ -127,6 +127,18 @@ table { | ||
127 | @extend .btn-primary; | 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 | &.danger, | 142 | &.danger, |
131 | &.btn-danger { | 143 | &.btn-danger { |
132 | color:#fff; | 144 | color:#fff; |
app/controllers/merge_requests_controller.rb
@@ -109,6 +109,7 @@ class MergeRequestsController < ApplicationController | @@ -109,6 +109,7 @@ class MergeRequestsController < ApplicationController | ||
109 | def automerge | 109 | def automerge |
110 | return access_denied! unless can?(current_user, :accept_mr, @project) | 110 | return access_denied! unless can?(current_user, :accept_mr, @project) |
111 | if @merge_request.open? && @merge_request.can_be_merged? | 111 | if @merge_request.open? && @merge_request.can_be_merged? |
112 | + @merge_request.should_remove_source_branch = params[:should_remove_source_branch] | ||
112 | @merge_request.automerge!(current_user) | 113 | @merge_request.automerge!(current_user) |
113 | @status = true | 114 | @status = true |
114 | else | 115 | else |
app/models/merge_request.rb
@@ -14,7 +14,8 @@ class MergeRequest < ActiveRecord::Base | @@ -14,7 +14,8 @@ class MergeRequest < ActiveRecord::Base | ||
14 | serialize :st_diffs | 14 | serialize :st_diffs |
15 | 15 | ||
16 | attr_protected :author, :author_id, :project, :project_id | 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 | validates_presence_of :project_id | 20 | validates_presence_of :project_id |
20 | validates_presence_of :assignee_id | 21 | validates_presence_of :assignee_id |
@@ -188,7 +189,7 @@ class MergeRequest < ActiveRecord::Base | @@ -188,7 +189,7 @@ class MergeRequest < ActiveRecord::Base | ||
188 | self.merge!(current_user.id) | 189 | self.merge!(current_user.id) |
189 | true | 190 | true |
190 | end | 191 | end |
191 | - rescue | 192 | + rescue |
192 | self.mark_as_unmergable | 193 | self.mark_as_unmergable |
193 | false | 194 | false |
194 | end | 195 | end |
app/models/project/repository_trait.rb
@@ -114,5 +114,9 @@ module Project::RepositoryTrait | @@ -114,5 +114,9 @@ module Project::RepositoryTrait | ||
114 | def root_ref | 114 | def root_ref |
115 | default_branch || "master" | 115 | default_branch || "master" |
116 | end | 116 | end |
117 | + | ||
118 | + def root_ref? branch | ||
119 | + root_ref == branch | ||
120 | + end | ||
117 | end | 121 | end |
118 | end | 122 | end |
app/views/merge_requests/show.html.haml
@@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
8 | %span.right | 8 | %span.right |
9 | - if can?(current_user, :modify_merge_request, @merge_request) | 9 | - if can?(current_user, :modify_merge_request, @merge_request) |
10 | - if @merge_request.open? | 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 | = link_to edit_project_merge_request_path(@project, @merge_request), :class => "btn small padded" do | 12 | = link_to edit_project_merge_request_path(@project, @merge_request), :class => "btn small padded" do |
13 | %i.icon-edit | 13 | %i.icon-edit |
14 | Edit | 14 | Edit |
@@ -62,9 +62,21 @@ | @@ -62,9 +62,21 @@ | ||
62 | .automerge_widget.can_be_merged{:style => "display:none"} | 62 | .automerge_widget.can_be_merged{:style => "display:none"} |
63 | .alert.alert-success | 63 | .alert.alert-success |
64 | %span | 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 | .automerge_widget.cannot_be_merged{:style => "display:none"} | 81 | .automerge_widget.cannot_be_merged{:style => "display:none"} |
70 | .alert.alert-info | 82 | .alert.alert-info |
@@ -108,7 +120,7 @@ | @@ -108,7 +120,7 @@ | ||
108 | current_state: "#{@merge_request.human_state}" | 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 | $(this).replaceWith('#{image_tag "ajax_loader.gif"}'); | 124 | $(this).replaceWith('#{image_tag "ajax_loader.gif"}'); |
113 | }) | 125 | }) |
114 | }) | 126 | }) |
lib/gitlab/merge.rb
@@ -37,7 +37,7 @@ module Gitlab | @@ -37,7 +37,7 @@ module Gitlab | ||
37 | unless project.satellite.exists? | 37 | unless project.satellite.exists? |
38 | raise "You should run: rake gitlab:app:enable_automerge" | 38 | raise "You should run: rake gitlab:app:enable_automerge" |
39 | end | 39 | end |
40 | - | 40 | + |
41 | project.satellite.clear | 41 | project.satellite.clear |
42 | 42 | ||
43 | Dir.chdir(project.satellite.path) do | 43 | Dir.chdir(project.satellite.path) do |
@@ -48,6 +48,12 @@ module Gitlab | @@ -48,6 +48,12 @@ module Gitlab | ||
48 | merge_repo.git.sh "git config user.email \"#{user.email}\"" | 48 | merge_repo.git.sh "git config user.email \"#{user.email}\"" |
49 | merge_repo.git.sh "git checkout -b #{merge_request.target_branch} origin/#{merge_request.target_branch}" | 49 | merge_repo.git.sh "git checkout -b #{merge_request.target_branch} origin/#{merge_request.target_branch}" |
50 | output = merge_repo.git.pull({}, "--no-ff", "origin", merge_request.source_branch) | 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 | yield(merge_repo, output) | 57 | yield(merge_repo, output) |
52 | end | 58 | end |
53 | end | 59 | end |