Add ability to disable Merge Request URL on push
This commit is contained in:
parent
d68c23a00e
commit
68e3fa0e58
9 changed files with 73 additions and 1 deletions
|
@ -316,6 +316,7 @@ class ProjectsController < Projects::ApplicationController
|
|||
:namespace_id,
|
||||
:only_allow_merge_if_all_discussions_are_resolved,
|
||||
:only_allow_merge_if_pipeline_succeeds,
|
||||
:printing_merge_request_link_enabled,
|
||||
:path,
|
||||
:public_builds,
|
||||
:request_access_enabled,
|
||||
|
|
|
@ -7,6 +7,8 @@ module MergeRequests
|
|||
end
|
||||
|
||||
def execute(changes)
|
||||
return [] unless project.printing_merge_request_link_enabled
|
||||
|
||||
branches = get_branches(changes)
|
||||
merge_requests_map = opened_merge_requests_from_source_branches(branches)
|
||||
branches.map do |branch|
|
||||
|
|
|
@ -13,3 +13,7 @@
|
|||
= form.label :only_allow_merge_if_all_discussions_are_resolved do
|
||||
= form.check_box :only_allow_merge_if_all_discussions_are_resolved
|
||||
%strong Only allow merge requests to be merged if all discussions are resolved
|
||||
.checkbox
|
||||
= form.label :printing_merge_request_link_enabled do
|
||||
= form.check_box :printing_merge_request_link_enabled
|
||||
%strong Show link to create/view merge request when pushing from the command line
|
||||
|
|
4
changelogs/unreleased/21451-allow-disable-mr-link.yml
Normal file
4
changelogs/unreleased/21451-allow-disable-mr-link.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Add ability to disable Merge Request URL on push
|
||||
merge_request: 9663
|
||||
author: Alex Sanford
|
|
@ -0,0 +1,18 @@
|
|||
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
|
||||
# for more information on how to write migrations for GitLab.
|
||||
|
||||
class AddPrintingMergeRequestLinkEnabledToProject < ActiveRecord::Migration
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
disable_ddl_transaction!
|
||||
|
||||
# Set this constant to true if this migration requires downtime.
|
||||
DOWNTIME = false
|
||||
|
||||
def up
|
||||
add_column_with_default(:projects, :printing_merge_request_link_enabled, :boolean, default: true)
|
||||
end
|
||||
|
||||
def down
|
||||
remove_column(:projects, :printing_merge_request_link_enabled)
|
||||
end
|
||||
end
|
|
@ -1003,6 +1003,7 @@ ActiveRecord::Schema.define(version: 20170315174634) do
|
|||
t.boolean "lfs_enabled"
|
||||
t.text "description_html"
|
||||
t.boolean "only_allow_merge_if_all_discussions_are_resolved"
|
||||
t.boolean "printing_merge_request_link_enabled", default: true, null: false
|
||||
end
|
||||
|
||||
add_index "projects", ["ci_id"], name: "index_projects_on_ci_id", using: :btree
|
||||
|
|
|
@ -62,4 +62,27 @@ feature 'Project settings > Merge Requests', feature: true, js: true do
|
|||
expect(page).to have_content('Only allow merge requests to be merged if all discussions are resolved')
|
||||
end
|
||||
end
|
||||
|
||||
describe 'Checkbox to enable merge request link' do
|
||||
before do
|
||||
visit edit_project_path(project)
|
||||
end
|
||||
|
||||
scenario 'is initially checked' do
|
||||
checkbox = find_field('project_printing_merge_request_link_enabled')
|
||||
expect(checkbox).to be_checked
|
||||
end
|
||||
|
||||
scenario 'when unchecked sets :printing_merge_request_link_enabled to false' do
|
||||
uncheck('project_printing_merge_request_link_enabled')
|
||||
click_on('Save')
|
||||
|
||||
# Wait for save to complete and page to reload
|
||||
checkbox = find_field('project_printing_merge_request_link_enabled')
|
||||
expect(checkbox).not_to be_checked
|
||||
|
||||
project.reload
|
||||
expect(project.printing_merge_request_link_enabled).to be(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -397,16 +397,25 @@ describe API::Internal, api: true do
|
|||
|
||||
before do
|
||||
project.team << [user, :developer]
|
||||
get api("/internal/merge_request_urls?project=#{repo_name}&changes=#{changes}"), secret_token: secret_token
|
||||
end
|
||||
|
||||
it 'returns link to create new merge request' do
|
||||
get api("/internal/merge_request_urls?project=#{repo_name}&changes=#{changes}"), secret_token: secret_token
|
||||
|
||||
expect(json_response).to match [{
|
||||
"branch_name" => "new_branch",
|
||||
"url" => "http://#{Gitlab.config.gitlab.host}/#{project.namespace.name}/#{project.path}/merge_requests/new?merge_request%5Bsource_branch%5D=new_branch",
|
||||
"new_merge_request" => true
|
||||
}]
|
||||
end
|
||||
|
||||
it 'returns empty array if printing_merge_request_link_enabled is false' do
|
||||
project.update!(printing_merge_request_link_enabled: false)
|
||||
|
||||
get api("/internal/merge_request_urls?project=#{repo_name}&changes=#{changes}"), secret_token: secret_token
|
||||
|
||||
expect(json_response).to eq([])
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST /notify_post_receive' do
|
||||
|
|
|
@ -130,5 +130,15 @@ describe MergeRequests::GetUrlsService do
|
|||
}])
|
||||
end
|
||||
end
|
||||
|
||||
context 'when printing_merge_request_link_enabled is false' do
|
||||
it 'returns empty array' do
|
||||
project.update!(printing_merge_request_link_enabled: false)
|
||||
|
||||
result = service.execute(existing_branch_changes)
|
||||
|
||||
expect(result).to eq([])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue