From 792ab0631c85098fbf92e727b77158fb9dae5219 Mon Sep 17 00:00:00 2001 From: Bob Van Landuyt Date: Fri, 23 Feb 2018 18:30:37 +0100 Subject: Allow a user to select `allow maintainer to push` When a project is not private, and the source branch not protected the user can now select the option to allow maintainers to push to this branch --- .../components/mr_widget_maintainer_edit.vue | 19 +++++ .../vue_merge_request_widget/dependencies.js | 1 + .../vue_merge_request_widget/mr_widget_options.js | 7 +- .../stores/mr_widget_store.js | 1 + app/assets/stylesheets/pages/merge_requests.scss | 3 +- .../merge_requests/application_controller.rb | 1 + app/helpers/merge_requests_helper.rb | 13 ++++ app/models/merge_request.rb | 18 +++++ app/serializers/merge_request_widget_entity.rb | 1 + app/services/merge_requests/base_service.rb | 8 ++ app/services/merge_requests/build_service.rb | 1 + app/views/shared/issuable/_form.html.haml | 2 + .../shared/issuable/form/_contribution.html.haml | 19 +++++ .../unreleased/bvl-allow-maintainer-to-push.yml | 5 ++ .../user_allows_a_maintainer_to_push_spec.rb | 85 ++++++++++++++++++++++ .../api/schemas/entities/merge_request_basic.json | 3 +- .../api/schemas/entities/merge_request_widget.json | 1 + .../components/mr_widget_maintainer_edit_spec.js | 23 ++++++ .../vue_mr_widget/mr_widget_options_spec.js | 1 + .../gitlab/import_export/safe_model_attributes.yml | 1 + spec/models/merge_request_spec.rb | 78 ++++++++++++++++++++ .../services/merge_requests/update_service_spec.rb | 37 ++++++++++ 22 files changed, 324 insertions(+), 4 deletions(-) create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/mr_widget_maintainer_edit.vue create mode 100644 app/views/shared/issuable/form/_contribution.html.haml create mode 100644 changelogs/unreleased/bvl-allow-maintainer-to-push.yml create mode 100644 spec/features/merge_request/user_allows_a_maintainer_to_push_spec.rb create mode 100644 spec/javascripts/vue_mr_widget/components/mr_widget_maintainer_edit_spec.js diff --git a/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_maintainer_edit.vue b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_maintainer_edit.vue new file mode 100644 index 00000000000..7a69cce695e --- /dev/null +++ b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_maintainer_edit.vue @@ -0,0 +1,19 @@ + + diff --git a/app/assets/javascripts/vue_merge_request_widget/dependencies.js b/app/assets/javascripts/vue_merge_request_widget/dependencies.js index edb3baa39e4..a1bc28873df 100644 --- a/app/assets/javascripts/vue_merge_request_widget/dependencies.js +++ b/app/assets/javascripts/vue_merge_request_widget/dependencies.js @@ -15,6 +15,7 @@ export { default as WidgetHeader } from './components/mr_widget_header.vue'; export { default as WidgetMergeHelp } from './components/mr_widget_merge_help.vue'; export { default as WidgetPipeline } from './components/mr_widget_pipeline.vue'; export { default as WidgetDeployment } from './components/mr_widget_deployment'; +export { default as WidgetMaintainerEdit } from './components/mr_widget_maintainer_edit.vue'; export { default as WidgetRelatedLinks } from './components/mr_widget_related_links.vue'; export { default as MergedState } from './components/states/mr_widget_merged.vue'; export { default as FailedToMerge } from './components/states/mr_widget_failed_to_merge.vue'; diff --git a/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.js b/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.js index 797f0f6ec0f..df3eb86f35c 100644 --- a/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.js +++ b/app/assets/javascripts/vue_merge_request_widget/mr_widget_options.js @@ -6,6 +6,7 @@ import { WidgetMergeHelp, WidgetPipeline, WidgetDeployment, + WidgetMaintainerEdit, WidgetRelatedLinks, MergedState, ClosedState, @@ -211,6 +212,7 @@ export default { 'mr-widget-merge-help': WidgetMergeHelp, 'mr-widget-pipeline': WidgetPipeline, 'mr-widget-deployment': WidgetDeployment, + 'mr-widget-maintainer-edit': WidgetMaintainerEdit, 'mr-widget-related-links': WidgetRelatedLinks, 'mr-widget-merged': MergedState, 'mr-widget-closed': ClosedState, @@ -251,11 +253,12 @@ export default { :is="componentName" :mr="mr" :service="service" /> + + :related-links="mr.relatedLinks" />