diff options
author | Athar Hameed <athar@gitlab.com> | 2018-06-08 12:28:43 +0000 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2018-06-08 12:28:43 +0000 |
commit | c22e51e8c1372e844aa3c4447ebea371d77d0c89 (patch) | |
tree | 4538509a53d1b1108e953147230fc7fb54553481 | |
parent | f068479e637c52b839c3474a87c2d01e82ba0829 (diff) | |
download | gitlab-ce-c22e51e8c1372e844aa3c4447ebea371d77d0c89.tar.gz |
Resolve "Automatically created MR uses wrong target branch (when branching from Tag)"
3 files changed, 16 insertions, 4 deletions
diff --git a/app/services/merge_requests/create_from_issue_service.rb b/app/services/merge_requests/create_from_issue_service.rb index cf687b71d16..3407b312700 100644 --- a/app/services/merge_requests/create_from_issue_service.rb +++ b/app/services/merge_requests/create_from_issue_service.rb @@ -41,7 +41,9 @@ module MergeRequests end def ref - @ref || project.default_branch || 'master' + return @ref if project.repository.branch_exists?(@ref) + + project.default_branch || 'master' end def merge_request diff --git a/changelogs/unreleased/45400-automatically-created-mr-uses-wrong-target-branch-when-branching-from-tag.yml b/changelogs/unreleased/45400-automatically-created-mr-uses-wrong-target-branch-when-branching-from-tag.yml new file mode 100644 index 00000000000..5aba62435ed --- /dev/null +++ b/changelogs/unreleased/45400-automatically-created-mr-uses-wrong-target-branch-when-branching-from-tag.yml @@ -0,0 +1,5 @@ +--- +title: Set MR target branch to default branch if target branch is not valid +merge_request: 19067 +author: +type: fixed diff --git a/spec/services/merge_requests/create_from_issue_service_spec.rb b/spec/services/merge_requests/create_from_issue_service_spec.rb index 38d84cf0ceb..b1882df732d 100644 --- a/spec/services/merge_requests/create_from_issue_service_spec.rb +++ b/spec/services/merge_requests/create_from_issue_service_spec.rb @@ -125,9 +125,14 @@ describe MergeRequests::CreateFromIssueService do end context 'when ref branch does not exist' do - it 'does not create a merge request' do - expect { described_class.new(project, user, issue_iid: issue.iid, ref: 'nobr').execute } - .not_to change { project.merge_requests.count } + subject { described_class.new(project, user, issue_iid: issue.iid, ref: 'no-such-branch').execute } + + it 'creates a merge request' do + expect { subject }.to change(project.merge_requests, :count).by(1) + end + + it 'sets the merge request target branch to the project default branch' do + expect(subject[:merge_request].target_branch).to eq(project.default_branch) end end end |