提交 5dd4dea9 编写于 作者: V Valery Sizov

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
...@@ -11,6 +11,7 @@ v 7.14.0 (unreleased) ...@@ -11,6 +11,7 @@ v 7.14.0 (unreleased)
- Expire Rails cache entries after two weeks to prevent endless Redis growth - Expire Rails cache entries after two weeks to prevent endless Redis growth
- Add support for destroying project milestones (Stan Hu) - Add support for destroying project milestones (Stan Hu)
- Add fetch command to the MR page. - Add fetch command to the MR page.
- Fix bug causing "Remove source-branch" option not to work for merge requests from the same project.
v 7.13.1 v 7.13.1
- Revert issue caching - Revert issue caching
......
...@@ -235,6 +235,10 @@ class MergeRequest < ActiveRecord::Base ...@@ -235,6 +235,10 @@ class MergeRequest < ActiveRecord::Base
execute(self, commit_message) execute(self, commit_message)
end end
def remove_source_branch?
self.should_remove_source_branch && !self.source_project.root_ref?(self.source_branch) && !self.for_fork?
end
def open? def open?
opened? || reopened? opened? || reopened?
end end
......
...@@ -39,7 +39,7 @@ module Files ...@@ -39,7 +39,7 @@ module Files
def after_commit(sha, branch) def after_commit(sha, branch)
commit = repository.commit(sha) 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 old_sha = commit.parent_id || Gitlab::Git::BLANK_SHA
GitPushService.new.execute(project, current_user, old_sha, sha, full_ref) GitPushService.new.execute(project, current_user, old_sha, sha, full_ref)
end end
......
...@@ -37,6 +37,14 @@ module MergeRequests ...@@ -37,6 +37,14 @@ module MergeRequests
# Merge local branches using rugged instead of satellites # Merge local branches using rugged instead of satellites
if sha = commit if sha = commit
after_commit(sha, merge_request.target_branch) 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 end
end end
...@@ -55,7 +63,7 @@ module MergeRequests ...@@ -55,7 +63,7 @@ module MergeRequests
def after_commit(sha, branch) def after_commit(sha, branch)
commit = repository.commit(sha) 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 old_sha = commit.parent_id || Gitlab::Git::BLANK_SHA
GitPushService.new.execute(project, current_user, old_sha, sha, full_ref) GitPushService.new.execute(project, current_user, old_sha, sha, full_ref)
end end
......
...@@ -33,7 +33,7 @@ module Gitlab ...@@ -33,7 +33,7 @@ module Gitlab
merge_repo.git.push(default_options, :origin, merge_request.target_branch) merge_repo.git.push(default_options, :origin, merge_request.target_branch)
# remove source branch # remove source branch
if merge_request.should_remove_source_branch && !project.root_ref?(merge_request.source_branch) && !merge_request.for_fork? if merge_request.remove_source_branch?
# will raise CommandFailed when push fails # will raise CommandFailed when push fails
merge_repo.git.push(default_options, :origin, ":#{merge_request.source_branch}") merge_repo.git.push(default_options, :origin, ":#{merge_request.source_branch}")
end end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册