diff options
author | Valery Sizov <valery@gitlab.com> | 2015-07-23 11:31:29 +0000 |
---|---|---|
committer | Valery Sizov <valery@gitlab.com> | 2015-07-23 11:31:29 +0000 |
commit | 5dd4dea93baa6386ed860a50125dce3ca3890f16 (patch) | |
tree | a4380d4df828ab46baec0726f8c5ab5a57712028 /app | |
parent | 8a539e58c8f56881094edd435170147d99e1e438 (diff) | |
parent | 0484ae7e6a7f0e6301089cdf7ce3e8a17e9079b8 (diff) | |
download | gitlab-ce-5dd4dea93baa6386ed860a50125dce3ca3890f16.tar.gz |
Merge branch 'remove-source-branch' into 'master'
Fix bug causing "Remove source-branch" option not to work for merge requests from the same project.
Fixes #2049.
See merge request !1025
Diffstat (limited to 'app')
-rw-r--r-- | app/models/merge_request.rb | 4 | ||||
-rw-r--r-- | app/services/files/base_service.rb | 2 | ||||
-rw-r--r-- | app/services/merge_requests/auto_merge_service.rb | 10 |
3 files changed, 14 insertions, 2 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 53b3fc10ccb..1ef76d16700 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -235,6 +235,10 @@ class MergeRequest < ActiveRecord::Base execute(self, commit_message) end + def remove_source_branch? + self.should_remove_source_branch && !self.source_project.root_ref?(self.source_branch) && !self.for_fork? + end + def open? opened? || reopened? end diff --git a/app/services/files/base_service.rb b/app/services/files/base_service.rb index f587ee266da..646784f2d9d 100644 --- a/app/services/files/base_service.rb +++ b/app/services/files/base_service.rb @@ -39,7 +39,7 @@ module Files def after_commit(sha, branch) commit = repository.commit(sha) - full_ref = 'refs/heads/' + branch + full_ref = "#{Gitlab::Git::BRANCH_REF_PREFIX}#{branch}" old_sha = commit.parent_id || Gitlab::Git::BLANK_SHA GitPushService.new.execute(project, current_user, old_sha, sha, full_ref) end diff --git a/app/services/merge_requests/auto_merge_service.rb b/app/services/merge_requests/auto_merge_service.rb index df793fc997d..db824d452d0 100644 --- a/app/services/merge_requests/auto_merge_service.rb +++ b/app/services/merge_requests/auto_merge_service.rb @@ -37,6 +37,14 @@ module MergeRequests # Merge local branches using rugged instead of satellites if sha = commit after_commit(sha, merge_request.target_branch) + + if merge_request.remove_source_branch? + DeleteBranchService.new(merge_request.source_project, current_user).execute(merge_request.source_branch) + end + + true + else + false end end end @@ -55,7 +63,7 @@ module MergeRequests def after_commit(sha, branch) commit = repository.commit(sha) - full_ref = 'refs/heads/' + branch + full_ref = "#{Gitlab::Git::BRANCH_REF_PREFIX}#{branch}" old_sha = commit.parent_id || Gitlab::Git::BLANK_SHA GitPushService.new.execute(project, current_user, old_sha, sha, full_ref) end |