summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/merge_requests_controller.rb1
-rw-r--r--app/models/merge_request.rb3
-rw-r--r--app/views/merge_requests/show.html.haml12
-rw-r--r--lib/gitlab/merge.rb8
4 files changed, 18 insertions, 6 deletions
diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb
index 7a803e2db65..c4bbc747dc7 100644
--- a/app/controllers/merge_requests_controller.rb
+++ b/app/controllers/merge_requests_controller.rb
@@ -109,6 +109,7 @@ class MergeRequestsController < ApplicationController
def automerge
return access_denied! unless can?(current_user, :accept_mr, @project)
if @merge_request.open? && @merge_request.can_be_merged?
+ @merge_request.should_remove_source_branch = params[:should_remove_source_branch]
@merge_request.automerge!(current_user)
@status = true
else
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index ded12601417..fed761a6d5b 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -14,7 +14,8 @@ class MergeRequest < ActiveRecord::Base
serialize :st_diffs
attr_protected :author, :author_id, :project, :project_id
- attr_accessor :author_id_of_changes
+ attr_accessor :author_id_of_changes,
+ :should_remove_source_branch
validates_presence_of :project_id
validates_presence_of :assignee_id
diff --git a/app/views/merge_requests/show.html.haml b/app/views/merge_requests/show.html.haml
index 8793280702c..9a804ee29e9 100644
--- a/app/views/merge_requests/show.html.haml
+++ b/app/views/merge_requests/show.html.haml
@@ -62,9 +62,13 @@
.automerge_widget.can_be_merged{:style => "display:none"}
.alert.alert-success
%span
- = link_to "Accept Merge Request", automerge_project_merge_request_path(@project, @merge_request), :class => "btn small info accept_merge_request", :remote => true
- &nbsp;
- 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
+ = form_for [:automerge, @project, @merge_request], :remote => true, :method => :get do |f|
+ 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
+ %br
+ = check_box_tag :should_remove_source_branch
+ = label_tag :should_remove_source_branch, "Remove source-branch"
+
+ = f.submit "Accept Merge Request", :class => "btn small info accept_merge_request"
.automerge_widget.cannot_be_merged{:style => "display:none"}
.alert.alert-info
@@ -108,7 +112,7 @@
current_state: "#{@merge_request.human_state}"
});
- $(".accept_merge_request").live("ajax:beforeSend", function() {
+ $(".edit_merge_request").live("ajax:beforeSend", function() {
$(this).replaceWith('#{image_tag "ajax_loader.gif"}');
})
})
diff --git a/lib/gitlab/merge.rb b/lib/gitlab/merge.rb
index 695e41e528d..74ad70b5012 100644
--- a/lib/gitlab/merge.rb
+++ b/lib/gitlab/merge.rb
@@ -37,7 +37,7 @@ module Gitlab
unless project.satellite.exists?
raise "You should run: rake gitlab:app:enable_automerge"
end
-
+
project.satellite.clear
Dir.chdir(project.satellite.path) do
@@ -48,6 +48,12 @@ module Gitlab
merge_repo.git.sh "git config user.email \"#{user.email}\""
merge_repo.git.sh "git checkout -b #{merge_request.target_branch} origin/#{merge_request.target_branch}"
output = merge_repo.git.pull({}, "--no-ff", "origin", merge_request.source_branch)
+
+ #remove source-branch
+ if merge_request.should_remove_source_branch
+ merge_repo.git.sh "git push origin :#{merge_request.source_branch}"
+ end
+
yield(merge_repo, output)
end
end