OSDN Git Service

ability to remove source branch after merge
authorZevs <vsv2711@gmail.com>
Sun, 3 Jun 2012 18:29:20 +0000 (21:29 +0300)
committerZevs <vsv2711@gmail.com>
Mon, 4 Jun 2012 21:11:07 +0000 (00:11 +0300)
app/controllers/merge_requests_controller.rb
app/models/merge_request.rb
app/views/merge_requests/show.html.haml
lib/gitlab/merge.rb

index 7a803e2..c4bbc74 100644 (file)
@@ -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
index ded1260..fed761a 100644 (file)
@@ -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
index 8793280..9a804ee 100644 (file)
   .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
       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"}');
     })
   })
index 695e41e..74ad70b 100644 (file)
@@ -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